Merge branch 'dev/11/fp3/security-aosp-rvc-release' into int/11/fp3

* dev/11/fp3/security-aosp-rvc-release:
  prevent overlays on the phone settings

Change-Id: If1e04c9f9529d2b6a6cba89ae706602903bb4bfc
diff --git a/Android.bp b/Android.bp
index 1887a8a..0f70629 100644
--- a/Android.bp
+++ b/Android.bp
@@ -24,6 +24,8 @@
         "ims-common",
         "libprotobuf-java-lite",
         "unsupportedappusage",
+        "telephony-ext",
+        "ims-ext-common",
     ],
 
     static_libs: [
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 4e923f3..e2691b8 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -24,7 +24,6 @@
 
     <original-package android:name="com.android.phone" />
 
-    <protected-broadcast android:name="android.telecom.action.TTY_PREFERRED_MODE_CHANGED" />
     <protected-broadcast android:name="android.telecom.action.CURRENT_TTY_MODE_CHANGED" />
     <protected-broadcast android:name="android.intent.action.SERVICE_STATE" />
     <protected-broadcast android:name="android.intent.action.RADIO_TECHNOLOGY" />
@@ -60,6 +59,7 @@
     <protected-broadcast android:name= "com.android.internal.telephony.CARRIER_SIGNAL_PCO_VALUE" />
     <protected-broadcast android:name= "com.android.internal.telephony.CARRIER_SIGNAL_RESET" />
     <protected-broadcast android:name= "com.android.internal.telephony.CARRIER_SIGNAL_DEFAULT_NETWORK_AVAILABLE" />
+    <protected-broadcast android:name= "com.android.internal.telephony.PROVISION" />
     <protected-broadcast android:name= "com.android.internal.telephony.ACTION_LINE1_NUMBER_ERROR_DETECTED" />
     <protected-broadcast android:name= "com.android.internal.provider.action.VOICEMAIL_SMS_RECEIVED" />
     <protected-broadcast android:name= "com.android.intent.isim_refresh" />
@@ -80,17 +80,30 @@
     <protected-broadcast android:name= "com.android.phone.vvm.omtp.sms.REQUEST_SENT" />
     <protected-broadcast android:name= "com.android.phone.vvm.ACTION_VISUAL_VOICEMAIL_SERVICE_EVENT" />
     <protected-broadcast android:name= "com.android.internal.telephony.CARRIER_VVM_PACKAGE_INSTALLED" />
+    <protected-broadcast android:name= "com.android.internal.telephony.CARRIER_VVM_PACKAGE_REMOVED" />
     <protected-broadcast android:name= "com.android.cellbroadcastreceiver.GET_LATEST_CB_AREA_INFO" />
     <protected-broadcast android:name= "com.android.internal.telephony.ACTION_CARRIER_CERTIFICATE_DOWNLOAD" />
     <protected-broadcast android:name= "com.android.internal.telephony.OPEN_DEFAULT_SMS_APP" />
     <protected-broadcast android:name= "android.telephony.action.SIM_CARD_STATE_CHANGED" />
     <protected-broadcast android:name= "android.telephony.action.SIM_APPLICATION_STATE_CHANGED" />
     <protected-broadcast android:name= "android.telephony.action.SIM_SLOT_STATUS_CHANGED" />
+    <protected-broadcast android:name= "codeaurora.intent.action.ACTION_MANAGED_ROAMING_IND" />
+    <protected-broadcast android:name= "com.android.internal.telephony.ACTION_MANAGED_ROAMING_IND" />
+    <protected-broadcast android:name= "org.codeaurora.intent.action.SUBSCRIPTION_INFO_RECORD_ADDED" />
+    <protected-broadcast android:name= "org.codeaurora.intent.action.PRIMARY_CARD_CHANGED_IN_SERVICE" />
+    <protected-broadcast android:name= "org.codeaurora.intent.action.ACTION_SET_PRIMARY_CARD_DONE" />
+    <protected-broadcast android:name= "codeaurora.intent.action.ACTION_LTE_CONFIGURE" />
+    <protected-broadcast android:name= "org.codeaurora.intent.action.ACTION_UICC_MANUAL_PROVISION_STATUS_CHANGED" />
+    <protected-broadcast android:name= "org.codeaurora.intent.action.ACTION_RADIO_CAPABILITY_UPDATED" />
+    <protected-broadcast android:name= "org.codeaurora.intent.action.ACTION_NETWORK_SPECIFIER_SET" />
+    <protected-broadcast android:name= "org.codeaurora.intent.action.ACTION_DDS_SWITCH_DONE" />
     <protected-broadcast android:name= "android.telephony.action.SUBSCRIPTION_CARRIER_IDENTITY_CHANGED" />
     <protected-broadcast android:name= "android.telephony.action.SUBSCRIPTION_SPECIFIC_CARRIER_IDENTITY_CHANGED" />
+    <protected-broadcast android:name= "android.telephony.action.TOGGLE_PROVISION" />
     <protected-broadcast android:name= "android.telephony.action.NETWORK_COUNTRY_CHANGED" />
     <protected-broadcast android:name= "android.telephony.action.PRIMARY_SUBSCRIPTION_LIST_CHANGED" />
     <protected-broadcast android:name= "android.telephony.action.MULTI_SIM_CONFIG_CHANGED" />
+    <protected-broadcast android:name= "org.codeaurora.telephony.VOWIFI_ENABLED" />
 
     <!-- For Vendor Debugging in Telephony -->
     <protected-broadcast android:name="android.telephony.action.ANOMALY_REPORTED" />
@@ -215,6 +228,10 @@
          from the background.  -->
     <uses-permission android:name="android.permission.START_ACTIVITIES_FROM_BACKGROUND" />
     <uses-permission android:name="android.permission.NETWORK_STATS_PROVIDER" />
+    <uses-permission android:name="android.permission.HANDLE_CAR_MODE_CHANGES"/>
+    <uses-permission android:name="android.permission.MANAGE_SUBSCRIPTION_PLANS"/>
+
+    <uses-permission android:name="com.qti.permission.BIND_QTI_IMS_SERVICE" />
 
     <!-- Needed to block unwanted malicious pop up overlays -->
     <uses-permission android:name="android.permission.HIDE_NON_SYSTEM_OVERLAY_WINDOWS"/>
@@ -334,6 +351,15 @@
             </intent-filter>
         </activity>
 
+        <activity android:name="CallForwardType"
+                android:label="@string/call_forward_option"
+                android:configChanges="orientation|screenSize|keyboardHidden"
+                android:theme="@style/DialerSettingsLight">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+            </intent-filter>
+        </activity>
+
         <!-- fdn setting -->
         <activity android:name="com.android.phone.settings.fdn.FdnSetting"
                 android:label="@string/fdn"
@@ -508,6 +534,16 @@
             </intent-filter>
         </activity>
 
+        <activity android:name="LimitedServiceActivity"
+            android:excludeFromRecents="true"
+            android:launchMode="singleTask"
+            android:taskAffinity=""
+            android:theme="@android:style/Theme.Translucent.NoTitleBar">
+            <intent-filter android:priority="1000">
+                <action android:name = "org.codeaurora.telephony.VOWIFI_ENABLED" />
+            </intent-filter>
+        </activity>
+
         <!-- Start SIP -->
         <service android:name="com.android.services.telephony.sip.SipConnectionService"
                  android:label="@string/sip_connection_service_label"
@@ -677,5 +713,7 @@
             android:multiprocess="false"
             android:singleUser="true"
             android:writePermission="android.permission.MODIFY_PHONE_STATE"/>
+
+        <uses-library android:name="ims-ext-common"/>
     </application>
 </manifest>
diff --git a/ecc/input/OWNERS b/ecc/input/OWNERS
new file mode 100644
index 0000000..d9ecbb7
--- /dev/null
+++ b/ecc/input/OWNERS
@@ -0,0 +1,5 @@
+set noparent
+
+djkrause@google.com
+satk@google.com
+somakala@google.com
\ No newline at end of file
diff --git a/ecc/output/OWNERS b/ecc/output/OWNERS
new file mode 100644
index 0000000..d9ecbb7
--- /dev/null
+++ b/ecc/output/OWNERS
@@ -0,0 +1,5 @@
+set noparent
+
+djkrause@google.com
+satk@google.com
+somakala@google.com
\ No newline at end of file
diff --git a/res/layout/frag_limited_service_alert_dialog.xml b/res/layout/frag_limited_service_alert_dialog.xml
new file mode 100644
index 0000000..81132aa
--- /dev/null
+++ b/res/layout/frag_limited_service_alert_dialog.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2020, 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 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.
+-->
+
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:paddingTop="24dp"
+    android:paddingStart="24dp"
+    android:paddingEnd="24dp"
+    android:paddingBottom="4dp"
+    android:orientation="vertical">
+
+  <TextView
+      android:id="@+id/message"
+      android:layout_width="match_parent"
+      android:layout_height="wrap_content"
+      android:layout_marginBottom="10dp"
+      android:text="@string/limited_service_alert_dialog_description"
+      android:textColor="?android:attr/textColorPrimary"
+      android:textSize="16sp"/>
+
+  <CheckBox
+      android:id="@+id/do_not_show"
+      android:layout_width="match_parent"
+      android:layout_height="wrap_content"
+      android:buttonTint="?android:attr/textColorPrimary"
+      android:focusable="true"
+      android:clickable="true"
+      android:text="@string/do_not_show_again"
+      android:textColor="?android:attr/textColorPrimary"
+      android:textSize="14sp"/>
+</LinearLayout>
diff --git a/res/layout/pref_dialog_editphonenumber.xml b/res/layout/pref_dialog_editphonenumber.xml
index 3bd52c0..0543288 100644
--- a/res/layout/pref_dialog_editphonenumber.xml
+++ b/res/layout/pref_dialog_editphonenumber.xml
@@ -14,43 +14,170 @@
      limitations under the License.
 -->
 
-<!-- Layout used as the dialog's content View for EditPhoneNumberPreference. -->
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="wrap_content"
-    android:layout_height="wrap_content"
-    android:orientation="vertical"
-    android:padding="?android:attr/dialogPreferredPadding">
-
-    <TextView android:id="@+id/message"
-        style="?android:attr/textAppearanceMedium"
+<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:scrollbars="vertical">
+    <!-- Layout used as the dialog's content View for EditPhoneNumberPreference. -->
+    <LinearLayout
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:textColor="?android:attr/textColorPrimary" />
-
-    <LinearLayout
-        android:id="@+id/number_field"
-        android:layout_width="match_parent"
-        android:layout_height="0dip"
-        android:layout_weight="1.0"
-        android:addStatesFromChildren="true"
-        android:gravity="center_vertical"
-        android:baselineAligned="false">
-
-        <!-- The EditText field in the dialog is now created programmatically.
-             We're replacing the field in this layout with a container to
-             attach the EditText field. -->
-        <LinearLayout android:id="@+id/edit_container"
-            android:layout_width="0dip"
-            android:layout_weight="1"
-            android:layout_height="wrap_content"/>
-
-        <ImageButton android:id="@+id/select_contact"
-            android:layout_width="wrap_content"
+        android:orientation="vertical"
+        android:padding="5dip">
+        <TextView android:id="@+id/message"
+            style="?android:attr/textAppearanceMedium"
+            android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:padding="10dip"
-            android:src="@drawable/ic_see_contacts_holo_dark"
-            android:contentDescription="@string/selectContact" />
+            android:textColor="?android:attr/textColorPrimary" />
 
+        <LinearLayout
+            android:id="@+id/number_field"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:addStatesFromChildren="true"
+            android:gravity="center_vertical"
+            android:baselineAligned="false">
+
+            <!-- The EditText field in the dialog is now created programmatically.
+                 We're replacing the field in this layout with a container to
+                 attach the EditText field. -->
+            <LinearLayout android:id="@+id/edit_container"
+                android:layout_width="0dip"
+                android:layout_weight="1"
+                android:layout_height="wrap_content"/>
+
+            <ImageButton android:id="@+id/select_contact"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:padding="10dip"
+                android:src="@drawable/ic_see_contacts_holo_dark"
+                android:contentDescription="@string/selectContact" />
+
+        </LinearLayout>
+        <!-- Start Time -->
+        <TextView android:id="@+id/time_start"
+            style="?android:attr/textAppearanceSmall"
+            android:visibility="gone"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:text="@string/time_start"
+            android:textColor="?android:attr/textColorPrimary"
+            android:paddingStart="5dip"/>
+
+        <LinearLayout
+            android:id="@+id/start_time_setting"
+            android:visibility="gone"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:addStatesFromChildren="true"
+            android:gravity="center_vertical"
+            android:baselineAligned="false"
+            android:paddingStart="5dip">
+            <Spinner
+                style="@style/cfut_value"
+                android:visibility="gone"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:id="@+id/time_start_hour_24"
+                android:prompt="@string/time_start_hour"
+                android:entries="@array/hour_24_items"/>
+            <Spinner
+                style="@style/cfut_value"
+                android:visibility="gone"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:id="@+id/time_start_hour_12"
+                android:prompt="@string/time_start_hour"
+                android:entries="@array/hour_12_items"/>
+            <Spinner
+                style="@style/cfut_value"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:id="@+id/time_start_minute"
+                android:prompt="@string/time_start_minute"
+                android:entries="@array/minute_items"/>
+            <Spinner
+                style="@style/cfut_value"
+                android:visibility="gone"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:id="@+id/time_start_formate"
+                android:prompt="@string/time_start_minute"
+                android:entries="@array/time_formate_items"/>
+        </LinearLayout>
+
+        <!-- End Time -->
+        <TextView android:id="@+id/time_end"
+            style="?android:attr/textAppearanceSmall"
+            android:visibility="gone"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:text="@string/time_end"
+            android:textColor="?android:attr/textColorPrimary"
+            android:paddingStart="5dip"/>
+
+        <LinearLayout
+            android:id="@+id/end_time_setting"
+            android:visibility="gone"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:addStatesFromChildren="true"
+            android:gravity="center_vertical"
+            android:baselineAligned="false"
+            android:paddingStart="5dip">
+            <Spinner
+                style="@style/cfut_value"
+                android:visibility="gone"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:id="@+id/time_end_hour_24"
+                android:prompt="@string/time_end_hour"
+                android:entries="@array/hour_24_items"/>
+            <Spinner
+                style="@style/cfut_value"
+                android:visibility="gone"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:id="@+id/time_end_hour_12"
+                android:prompt="@string/time_end_hour"
+                android:entries="@array/hour_12_items"/>
+            <Spinner
+                style="@style/cfut_value"
+                android:id="@+id/time_end_minute"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:prompt="@string/time_end_minute"
+                android:entries="@array/minute_items"/>
+            <Spinner
+                style="@style/cfut_value"
+                android:visibility="gone"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:id="@+id/time_end_formate"
+                android:prompt="@string/time_end_minute"
+                android:entries="@array/time_formate_items"/>
+        </LinearLayout>
+
+        <!-- Check box for all day option -->
+        <LinearLayout
+            android:id="@+id/all_day_setting"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:addStatesFromChildren="true"
+            android:gravity="center_vertical"
+            android:baselineAligned="false"
+            android:paddingStart="10dip"
+            android:paddingEnd="10dip">
+            <CheckBox
+                android:id="@+id/all_day"
+                android:visibility="gone"
+                android:paddingStart="10dip"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:textAppearance="?android:attr/textAppearanceSmall"
+                android:singleLine="true"
+                android:checked="true"
+                android:text="@string/all_day"/>
+        </LinearLayout>
     </LinearLayout>
-
-</LinearLayout>
+</ScrollView>
diff --git a/res/layout/radio_info.xml b/res/layout/radio_info.xml
index 40c2e53..71cd32a 100644
--- a/res/layout/radio_info.xml
+++ b/res/layout/radio_info.xml
@@ -122,6 +122,37 @@
             <TextView android:id="@+id/ul_kbps" style="@style/info_value" />
         </LinearLayout>
 
+
+        <!-- EN-DC Available -->
+        <LinearLayout style="@style/RadioInfo_entry_layout" android:orientation="horizontal">
+            <TextView android:id="@+id/endc_available_label" android:text="@string/radio_info_endc_available" style="@style/info_label" />
+            <TextView android:id="@+id/endc_available" style="@style/info_value" />
+        </LinearLayout>
+
+        <!-- DCNR Restricted -->
+        <LinearLayout style="@style/RadioInfo_entry_layout" android:orientation="horizontal">
+            <TextView android:id="@+id/dcnr_restricted_label" android:text="@string/radio_info_dcnr_restricted" style="@style/info_label" />
+            <TextView android:id="@+id/dcnr_restricted" style="@style/info_value" />
+        </LinearLayout>
+
+        <!-- NR Available -->
+        <LinearLayout style="@style/RadioInfo_entry_layout" android:orientation="horizontal">
+            <TextView android:id="@+id/nr_available_label" android:text="@string/radio_info_nr_available" style="@style/info_label" />
+            <TextView android:id="@+id/nr_available" style="@style/info_value" />
+        </LinearLayout>
+
+        <!-- NR State -->
+        <LinearLayout style="@style/RadioInfo_entry_layout" android:orientation="horizontal">
+            <TextView android:id="@+id/nr_state_label" android:text="@string/radio_info_nr_state" style="@style/info_label" />
+            <TextView android:id="@+id/nr_state" style="@style/info_value" />
+        </LinearLayout>
+
+        <!-- NR Frequency -->
+        <LinearLayout style="@style/RadioInfo_entry_layout" android:orientation="horizontal">
+            <TextView android:id="@+id/nr_frequency_label" android:text="@string/radio_info_nr_frequency" style="@style/info_label" />
+            <TextView android:id="@+id/nr_frequency" style="@style/info_value" />
+        </LinearLayout>
+
         <!-- Physical Channel Config -->
         <LinearLayout style="@style/RadioInfo_entry_layout">
             <TextView android:text="@string/radio_info_phy_chan_config" style="@style/info_label" />
diff --git a/res/layout/sim_ndp.xml b/res/layout/sim_ndp.xml
index 5f03d7b..e16f99a 100644
--- a/res/layout/sim_ndp.xml
+++ b/res/layout/sim_ndp.xml
@@ -35,6 +35,13 @@
                 android:layout_height="wrap_content"
                 android:text="@string/label_ndp"/>
 
+        <TextView
+                android:id="@+id/perso_phoneid_text"
+                android:textAppearance="?android:attr/textAppearanceMedium"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="@string/label_phoneid"/>
+
         <EditText android:id="@+id/pin_entry"
                 android:inputType="textPassword"
                 android:imeOptions="actionDone"
diff --git a/res/values-af/qtistrings.xml b/res/values-af/qtistrings.xml
new file mode 100755
index 0000000..8636d72
--- /dev/null
+++ b/res/values-af/qtistrings.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- IMS settings related strings -->
+    <!-- Title displayed IMS account settings in the sip settings category. [CHAR LIMIT=NONE] -->
+    <string name="ims_settings">"IMS-Einstellungen"</string>
+
+	<!-- Call auto reject settings -->
+    <string name="auto_reject_toggle_title">"Eingehende Anrufe automatisch ablehnen."</string>
+    <string name="auto_reject_toggle_summary">"Wenn auf DDS hohe Priorität und Datenanrufe vorhanden sind, lehnen Sie Anrufe auf nicht genutzten SIM-Karten automatisch ab"</string>
+</resources>
diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
index 5260467..600b497 100644
--- a/res/values-af/strings.xml
+++ b/res/values-af/strings.xml
@@ -898,6 +898,11 @@
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"Herlaai"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"Wissel DNS-kontrole"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"OEM-spesifieke inligting/instellings"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"EN-DC is beskikbaar:"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"DCNR is beperk:"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"NR is beskikbaar:"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"NR-status:"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR-frekwensie:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"Stel radiobandmodus"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Laai tans bandlys …"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Stel"</string>
diff --git a/res/values-am/qtistrings.xml b/res/values-am/qtistrings.xml
new file mode 100755
index 0000000..0bfe49b
--- /dev/null
+++ b/res/values-am/qtistrings.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- IMS settings related strings -->
+    <!-- Title displayed IMS account settings in the sip settings category. [CHAR LIMIT=NONE] -->
+    <string name="ims_settings">"የ IMS ቅንብሮች"</string>
+
+	<!-- Call auto reject settings -->
+    <string name="auto_reject_toggle_title">"ገቢ ጥሪዎችን በራስ-ሰር ውድቅ ያድርጉ።"</string>
+    <string name="auto_reject_toggle_summary">"በ DDS ላይ ከፍተኛ ቅድሚያ የሚሰጠው እና የውሂብ ጥሪዎች በሚኖሩበት ጊዜ ስራ በሌላቸው ሲም ካርዶች ላይ ጥሪዎችን በራስ-ሰር ውድቅ ያድርጉ"</string>
+</resources>
diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml
index d402b04..b9fbebc 100644
--- a/res/values-am/strings.xml
+++ b/res/values-am/strings.xml
@@ -560,7 +560,7 @@
     <string name="police_type_description" msgid="2819533883972081757">"ፖሊስ"</string>
     <string name="ambulance_type_description" msgid="6798237503553180461">"አምቡላንስ"</string>
     <string name="fire_type_description" msgid="6565200468934914930">"እሳት"</string>
-    <!-- format error in translation for description_concat_format (2014471565101724088) -->
+    <string name="description_concat_format" msgid="2014471565101724088">"%1$s, %2$s"</string>
     <string name="dialerKeyboardHintText" msgid="1115266533703764049">"ለመደወል የሰሌዳ ቁልፍ ተጠቀም"</string>
     <string name="onscreenHoldText" msgid="4025348842151665191">"ያዝ"</string>
     <string name="onscreenEndCallText" msgid="6138725377654842757">"መጨረሻ"</string>
@@ -898,6 +898,11 @@
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"አድስ"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"የDNS ፍተሻን ቀያይር"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"OEM-የተወሰነ መረጃ/ቅንብሮች"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"EN-DC ይገኛል፦"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"DCNR ተገድቧል፦"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"NR ይገኛል፦"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"NR ሁኔታ፦"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR ድግግሞሽ፦"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"የሬዲዮ ባንድ ሁነታን ያቀናጁ"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"የባንድ ዝርዝርን በመጫን ላይ…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"አዋቅር"</string>
diff --git a/res/values-ar/qtistrings.xml b/res/values-ar/qtistrings.xml
new file mode 100755
index 0000000..9821387
--- /dev/null
+++ b/res/values-ar/qtistrings.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- IMS settings related strings -->
+    <!-- Title displayed IMS account settings in the sip settings category. [CHAR LIMIT=NONE] -->
+    <string name="ims_settings">"إعدادات IMS"</string>
+
+	<!-- Call auto reject settings -->
+    <string name="auto_reject_toggle_title">"رفض المكالمات تلقائيا."</string>
+    <string name="auto_reject_toggle_summary">"عندما تكون هناك مكالمات ذات أولوية عالية والبيانات على DDS ، ارفض المكالمات على بطاقات SIM الخاملة تلقائيًا"</string>
+</resources>
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index 0a60c04..8f89ae9 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -471,7 +471,7 @@
     <string name="simContacts_emptyLoading" msgid="4989040293858675483">"‏جارٍ القراءة من شريحة SIM..."</string>
     <string name="simContacts_empty" msgid="1135632055473689521">"‏ليس هناك جهات اتصال على شريحة SIM."</string>
     <string name="simContacts_title" msgid="2714029230160136647">"حدد جهات اتصال لاستيرادها"</string>
-    <string name="simContacts_airplaneMode" msgid="4654884030631503808">"‏عليك إيقاف وضع الطائرة لاستيراد جهات الاتصال من شريحة SIM."</string>
+    <string name="simContacts_airplaneMode" msgid="4654884030631503808">"‏عليك إيقاف وضع الطيران لاستيراد جهات الاتصال من شريحة SIM."</string>
     <string name="enable_pin" msgid="967674051730845376">"‏تفعيل/إيقاف رمز PIN لبطاقة SIM"</string>
     <string name="change_pin" msgid="3657869530942905790">"‏تغيير رمز PIN لبطاقة SIM"</string>
     <string name="enter_pin_text" msgid="3182311451978663356">"‏رمز PIN لبطاقة SIM:"</string>
@@ -484,7 +484,7 @@
     <string name="disable_sim_pin" msgid="3112303905548613752">"‏محو رقم التعريف الشخصي لبطاقة SIM"</string>
     <string name="enable_sim_pin" msgid="445461050748318980">"‏تعيين رقم التعريف الشخصي لبطاقة SIM"</string>
     <string name="enable_in_progress" msgid="4135305985717272592">"جارٍ تعيين رقم التعريف الشخصي…"</string>
-    <string name="enable_pin_ok" msgid="2877428038280804256">"تم تعيين رقم التعريف الشخصي"</string>
+    <string name="enable_pin_ok" msgid="2877428038280804256">"تم ضبط رقم التعريف الشخصي"</string>
     <string name="disable_pin_ok" msgid="888505244389647754">"تم محو رقم التعريف الشخصي"</string>
     <string name="pin_failed" msgid="4527347792881939652">"رقم التعريف الشخصي غير صحيح"</string>
     <string name="pin_changed" msgid="7291153750090452808">"تم تحديث رقم التعريف الشخصي"</string>
@@ -522,9 +522,9 @@
     <string name="notification_voicemail_no_vm_number" msgid="3423686009815186750">"رقم البريد الصوتي غير معروف"</string>
     <string name="notification_network_selection_title" msgid="255595526707809121">"لا خدمة"</string>
     <string name="notification_network_selection_text" msgid="553288408722427659">"الشبكة المحدّدة (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) غير مُتاحة"</string>
-    <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"شغَّل شبكة الجوال، ثم أوقف تفعيل وضع الطائرة أو أوقف تفعيل وضع توفير شحن البطارية لإجراء مكالمة."</string>
-    <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"عليك إيقاف وضع الطائرة لإجراء مكالمة."</string>
-    <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"عليك إيقاف وضع الطائرة أو الاتصال بشبكة لاسلكية لإجراء مكالمة."</string>
+    <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"شغَّل شبكة الجوال، ثم أوقف تفعيل وضع الطيران أو أوقف تفعيل وضع توفير شحن البطارية لإجراء مكالمة."</string>
+    <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"عليك إيقاف وضع الطيران لإجراء مكالمة."</string>
+    <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"عليك إيقاف وضع الطيران أو الاتصال بشبكة لاسلكية لإجراء مكالمة."</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"ينبغي الخروج من وضع معاودة الاتصال بالطوارئ لإجراء مكالمة غير طارئة."</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"غير مسجل على الشبكة."</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"شبكة الجوال غير متاحة."</string>
@@ -552,7 +552,7 @@
     <string name="emergency_call_shortcut_hint" msgid="1290485125107779500">"انقر مجددًا للاتصال بالرقم <xliff:g id="EMERGENCY_NUMBER">%s</xliff:g>"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="1695305158151408629">"جارٍ تفعيل اللاسلكي..."</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="4329131876852608587">"لا تتوفر خدمة. جارٍ إعادة المحاولة…"</string>
-    <string name="radio_off_during_emergency_call" msgid="8011154134040481609">"لا يمكن دخول وضع الطائرة أثناء إجراء مكالمة طوارئ."</string>
+    <string name="radio_off_during_emergency_call" msgid="8011154134040481609">"لا يمكن دخول وضع الطيران أثناء إجراء مكالمة طوارئ."</string>
     <string name="dial_emergency_error" msgid="825822413209026039">"يتعذر الاتصال. لا يعد <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> رقم طوارئ."</string>
     <string name="dial_emergency_empty_error" msgid="2785803395047793634">"يتعذر الاتصال. يمكنك طلب رقم طوارئ."</string>
     <string name="dial_emergency_calling_not_available" msgid="6485846193794727823">"مكالمة الطوارئ غير متوفرة"</string>
@@ -657,7 +657,7 @@
     </plurals>
     <string name="voicemail_provider" msgid="4158806657253745294">"الخدمة"</string>
     <string name="voicemail_settings" msgid="4451045613238972776">"الإعداد"</string>
-    <string name="voicemail_number_not_set" msgid="8831561283386938155">"‏&lt;لم يتم التعيين&gt;"</string>
+    <string name="voicemail_number_not_set" msgid="8831561283386938155">"‏&lt;لم يتم الضبط&gt;"</string>
     <string name="other_settings" msgid="8895088007393598447">"اعدادات المكالمات الاخرى"</string>
     <string name="calling_via_template" msgid="1791323450703751750">"الاتصال عبر <xliff:g id="PROVIDER_NAME">%s</xliff:g>"</string>
     <string name="contactPhoto" msgid="7885089213135154834">"صورة جهة الاتصال"</string>
@@ -719,7 +719,7 @@
     <string name="mobile_data_activate_button" msgid="1139792516354374612">"إضافة بيانات"</string>
     <string name="mobile_data_activate_cancel_button" msgid="3530174817572005860">"إلغاء"</string>
     <string name="clh_card_title_call_ended_txt" msgid="5977978317527299698">"تم إنهاء الاتصال"</string>
-    <string name="clh_callFailed_powerOff_txt" msgid="8279934912560765361">"تفعيل وضع الطائرة"</string>
+    <string name="clh_callFailed_powerOff_txt" msgid="8279934912560765361">"تفعيل وضع الطيران"</string>
     <string name="clh_callFailed_simError_txt" msgid="5128538525762326413">"‏تعذر الوصول إلى شريحة SIM"</string>
     <string name="clh_incall_error_out_of_service_txt" msgid="2736010617446749869">"شبكة الجوّال غير متوفرة"</string>
     <string name="clh_callFailed_unassigned_number_txt" msgid="141967660286695682">"حدثت مشكلة في رقم الهاتف الذي تحاول الاتصال به. رمز الخطأ 1."</string>
@@ -772,7 +772,7 @@
     <string name="clh_callFailed_protocol_Error_unspecified_txt" msgid="9203320572562697755">"تعذر إكمال المكالمة. رمز الخطأ 111."</string>
     <string name="clh_callFailed_interworking_unspecified_txt" msgid="7969686413930847182">"تعذر إكمال المكالمة. رمز الخطأ 127."</string>
     <string name="labelCallBarring" msgid="4180377113052853173">"منع الاتصال"</string>
-    <string name="sum_call_barring_enabled" msgid="5184331188926370824">"تفعيل"</string>
+    <string name="sum_call_barring_enabled" msgid="5184331188926370824">"مفعّلة"</string>
     <string name="sum_call_barring_disabled" msgid="5699448000600153096">"متوقف"</string>
     <string name="call_barring_baoc" msgid="7400892586336429326">"كل المكالمات الصادرة"</string>
     <string name="call_barring_baoc_enabled" msgid="3131509193386668182">"هل تريد إيقاف حظر كل المكالمات الصادرة؟"</string>
@@ -910,6 +910,11 @@
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"إعادة التحميل"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"تبديل فحص نظام أسماء النطاقات"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"المعلومات/الإعدادات المتعلّقة بالمصنّع الأصلي للجهاز"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"‏EN-DC متوفر:"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"‏تم حظر DCNR:"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"‏NR متوفر:"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"‏حالة NR:"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"‏تردد NR:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"تحديد وضع النطاق اللاسلكي"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"جارٍ تحميل قائمة النطاقات…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"ضبط"</string>
diff --git a/res/values-as/strings.xml b/res/values-as/strings.xml
index 873030b..764eb5c 100644
--- a/res/values-as/strings.xml
+++ b/res/values-as/strings.xml
@@ -898,6 +898,11 @@
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"ৰিফ্ৰেশ্ব কৰক"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"DNS পৰীক্ষা ট’গল কৰক"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"OEM বিশেষক তথ্য/ছেটিংসমূহ"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"EN-DC উপলব্ধ:"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"DCNR প্ৰতিবন্ধিত:"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"NR উপলব্ধ:"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"NR স্থিতি:"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR ফ্ৰিকুৱেন্সী:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"ৰেডিঅ’ৰ বেণ্ড ম’ড ছেট কৰক"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"বেণ্ড সূচীখন ল’ড কৰি থকা হৈছে…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"ছেট কৰক"</string>
diff --git a/res/values-az/qtistrings.xml b/res/values-az/qtistrings.xml
new file mode 100755
index 0000000..ec553a2
--- /dev/null
+++ b/res/values-az/qtistrings.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- IMS settings related strings -->
+    <!-- Title displayed IMS account settings in the sip settings category. [CHAR LIMIT=NONE] -->
+    <string name="ims_settings">"IMS parametrləri"</string>
+
+	<!-- Call auto reject settings -->
+    <string name="auto_reject_toggle_title">"Zəngləri avtomatik olaraq rədd et."</string>
+    <string name="auto_reject_toggle_summary">"DDS-də yüksək prioritetli və məlumat zəngləri olduqda, boş SIM kartlardakı zəngləri avtomatik olaraq rədd edin"</string>
+</resources>
diff --git a/res/values-az/strings.xml b/res/values-az/strings.xml
index 86bb6bc..60829b2 100644
--- a/res/values-az/strings.xml
+++ b/res/values-az/strings.xml
@@ -898,6 +898,11 @@
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"Yeniləyin"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"DNS Yoxlanışına keçin"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"Orijinal Avadanlıq İstehsalçısının Məlumatı/Ayarlar"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"EN-DC Əlçatandır:"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"DCNR Məhdudlaşdırılıb:"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"NR Əlçatandır:"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"NR Statusu:"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR Tezliyi:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"Radio Diapazon Rejimini Quraşdırın"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Diapazon Siyahısı Yüklənir…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Ayarlayın"</string>
diff --git a/res/values-b+sr+Latn/qtistrings.xml b/res/values-b+sr+Latn/qtistrings.xml
new file mode 100755
index 0000000..6e97b0c
--- /dev/null
+++ b/res/values-b+sr+Latn/qtistrings.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- IMS settings related strings -->
+    <!-- Title displayed IMS account settings in the sip settings category. [CHAR LIMIT=NONE] -->
+    <string name="ims_settings">"IMS postavke"</string>
+
+	<!-- Call auto reject settings -->
+    <string name="auto_reject_toggle_title">"Automatski odbij pozive."</string>
+    <string name="auto_reject_toggle_summary">"Kada na DDS-u postoje visokoprioritetni i podatkovni pozivi, automatski odbijte pozive na neaktivnim SIM karticama"</string>
+</resources>
diff --git a/res/values-b+sr+Latn/strings.xml b/res/values-b+sr+Latn/strings.xml
index 3b7ab40..4c08fc5 100644
--- a/res/values-b+sr+Latn/strings.xml
+++ b/res/values-b+sr+Latn/strings.xml
@@ -74,7 +74,7 @@
     <string name="phone_accounts_configure_account_settings" msgid="6622119715253196586">"Konfigurisanje podešavanja naloga"</string>
     <string name="phone_accounts_all_calling_accounts" msgid="1609600743500618823">"Svi nalozi za pozivanje"</string>
     <string name="phone_accounts_all_calling_accounts_summary" msgid="2214134955430107240">"Izaberite koji nalozi mogu da obavljaju pozive"</string>
-    <string name="wifi_calling" msgid="3650509202851355742">"Pozivanje preko Wi-Fi-ja"</string>
+    <string name="wifi_calling" msgid="3650509202851355742">"Pozivanje preko WiFi-a"</string>
     <string name="connection_service_default_label" msgid="7332739049855715584">"Ugrađena usluga povezivanja"</string>
     <string name="voicemail" msgid="7697769412804195032">"Govorna pošta"</string>
     <string name="voicemail_settings_with_label" msgid="4228431668214894138">"Glasovna pošta (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
@@ -298,7 +298,7 @@
     <string name="sim_selection_required_pref" msgid="6985901872978341314">"Potrebno je da izaberete nešto"</string>
     <string name="sim_change_data_title" msgid="9142726786345906606">"Da promenimo SIM za podatke?"</string>
     <string name="sim_change_data_message" msgid="3567358694255933280">"Želite li da za mobilne podatke koristite <xliff:g id="NEW_SIM">%1$s</xliff:g> umesto <xliff:g id="OLD_SIM">%2$s</xliff:g>?"</string>
-    <string name="wifi_calling_settings_title" msgid="5800018845662016507">"Pozivanje preko Wi-Fi-ja"</string>
+    <string name="wifi_calling_settings_title" msgid="5800018845662016507">"Pozivanje preko WiFi-a"</string>
     <string name="video_calling_settings_title" msgid="342829454913266078">"Video pozivanje preko operatera"</string>
     <string name="gsm_umts_options" msgid="4968446771519376808">"Opcije za GSM/UMTS"</string>
     <string name="cdma_options" msgid="3669592472226145665">"CDMA opcije"</string>
@@ -542,7 +542,7 @@
     <string name="incall_error_supp_service_hangup" msgid="836524952243836735">"Uspostavljanje poziva nije uspelo."</string>
     <string name="incall_error_supp_service_hold" msgid="8535056414643540997">"Nije moguće stavljati pozive na čekanje."</string>
     <string name="incall_error_wfc_only_no_wireless_network" msgid="5860742792811400109">"Povežite se na bežičnu mrežu da biste uputili poziv."</string>
-    <string name="incall_error_promote_wfc" msgid="9164896813931363415">"Omogućite pozivanje preko Wi-Fi-ja da biste uputili poziv."</string>
+    <string name="incall_error_promote_wfc" msgid="9164896813931363415">"Omogućite pozivanje preko WiFi-a da biste uputili poziv."</string>
     <string name="emergency_information_hint" msgid="9208897544917793012">"Informacije za hitne slučajeve"</string>
     <string name="emergency_information_owner_hint" msgid="6256909888049185316">"Vlasnik"</string>
     <string name="emergency_information_confirm_hint" msgid="5109017615894918914">"Dodirnite ponovo da biste videli informacije"</string>
@@ -564,7 +564,7 @@
     <string name="dialerKeyboardHintText" msgid="1115266533703764049">"Koristite tastaturu za pozivanje"</string>
     <string name="onscreenHoldText" msgid="4025348842151665191">"Čekanje"</string>
     <string name="onscreenEndCallText" msgid="6138725377654842757">"Završi"</string>
-    <string name="onscreenShowDialpadText" msgid="658465753816164079">"Numerička tastatura"</string>
+    <string name="onscreenShowDialpadText" msgid="658465753816164079">"Brojčanik"</string>
     <string name="onscreenMuteText" msgid="5470306116733843621">"Isključi zvuk"</string>
     <string name="onscreenAddCallText" msgid="9075675082903611677">"Dodaj poziv"</string>
     <string name="onscreenMergeCallsText" msgid="3692389519611225407">"Objedini pozive"</string>
@@ -604,7 +604,7 @@
     <string name="ota_hfa_activation_title" msgid="3300556778212729671">"Aktiviranje..."</string>
     <string name="ota_hfa_activation_dialog_message" msgid="7921718445773342996">"Telefon aktivira uslugu mobilnog prenosa podataka.\n\nTo može da potraje i do 5 minuta."</string>
     <string name="ota_skip_activation_dialog_title" msgid="7666611236789203797">"Želite li da preskočite aktivaciju?"</string>
-    <string name="ota_skip_activation_dialog_message" msgid="6691722887019708713">"Ako preskočite aktivaciju, ne možete da upućujete pozive ili da se povezujete sa mrežama za mobilni prenos podataka (iako možete da se povežete sa Wi-Fi mrežama). Sve dok ne aktivirate svoj telefon, bićete upitani da to učinite svaki put kada ga uključite."</string>
+    <string name="ota_skip_activation_dialog_message" msgid="6691722887019708713">"Ako preskočite aktivaciju, ne možete da upućujete pozive ili da se povezujete sa mrežama za mobilni prenos podataka (iako možete da se povežete sa WiFi mrežama). Sve dok ne aktivirate svoj telefon, bićete upitani da to učinite svaki put kada ga uključite."</string>
     <string name="ota_skip_activation_dialog_skip_label" msgid="5908029466817825633">"Preskoči"</string>
     <string name="ota_activate" msgid="7939695753665438357">"Aktiviraj"</string>
     <string name="ota_title_activate_success" msgid="1272135024761004889">"Telefon je aktiviran."</string>
@@ -657,7 +657,7 @@
     <string name="not_voice_capable" msgid="2819996734252084253">"Audio pozivi nisu podržani"</string>
     <string name="description_dial_button" msgid="8614631902795087259">"biranje"</string>
     <string name="description_dialpad_button" msgid="7395114120463883623">"prikažite numeričku tastaturu"</string>
-    <string name="pane_title_emergency_dialpad" msgid="3627372514638694401">"Numerička tastatura za hitne pozive"</string>
+    <string name="pane_title_emergency_dialpad" msgid="3627372514638694401">"Brojčanik za hitne pozive"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="6610414098912832120">"Vizuelna govorna pošta"</string>
     <string name="voicemail_set_pin_dialog_title" msgid="7005128605986960003">"Podesite PIN"</string>
     <string name="voicemail_change_pin_dialog_title" msgid="4633077715231764435">"Promenite PIN"</string>
@@ -671,18 +671,18 @@
     <string name="sim_description_emergency_calls" msgid="5146872803938897296">"Samo za hitne pozive"</string>
     <string name="sim_description_default" msgid="7474671114363724971">"SIM kartica, otvor: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
     <string name="accessibility_settings_activity_title" msgid="7883415189273700298">"Pristupačnost"</string>
-    <string name="status_hint_label_incoming_wifi_call" msgid="2606052595898044071">"Wi-Fi poziv od"</string>
-    <string name="status_hint_label_wifi_call" msgid="942993035689809853">"Wi-Fi poziv"</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="2606052595898044071">"WiFi poziv od"</string>
+    <string name="status_hint_label_wifi_call" msgid="942993035689809853">"WiFi poziv"</string>
     <string name="emergency_action_launch_hint" msgid="2762016865340891314">"Dodirnite ponovo da biste otvorili"</string>
     <string name="message_decode_error" msgid="1061856591500290887">"Došlo je do greške pri dekodiranju poruke."</string>
     <string name="callFailed_cdma_activation" msgid="5392057031552253550">"SIM kartica je aktivirala uslugu i ažurirala funkcije rominga na telefonu."</string>
     <string name="callFailed_cdma_call_limit" msgid="1074219746093031412">"Ima previše aktivnih poziva. Završite ili objedinite postojeće pozive pre nego što uputite novi."</string>
     <string name="callFailed_imei_not_accepted" msgid="7257903653685147251">"Povezivanje nije uspelo, ubacite važeću SIM karticu."</string>
-    <string name="callFailed_wifi_lost" msgid="1788036730589163141">"Wi-Fi veza je prekinuta. Poziv je završen."</string>
+    <string name="callFailed_wifi_lost" msgid="1788036730589163141">"WiFi veza je prekinuta. Poziv je završen."</string>
     <string name="dialFailed_low_battery" msgid="6857904237423407056">"Ne možete da uputite poziv jer je baterija skoro prazna."</string>
     <string name="callFailed_low_battery" msgid="4056828320214416182">"Video poziv je prekinut jer je baterija skoro prazna."</string>
-    <string name="callFailed_emergency_call_over_wfc_not_available" msgid="5944309590693432042">"Hitni pozivi pomoću funkcije Pozivanje preko Wi-Fi-ja nisu dostupni na ovoj lokaciji."</string>
-    <string name="callFailed_wfc_service_not_available_in_this_location" msgid="3624536608369524988">"Pozivanje preko Wi-Fi-ja nije dostupno na ovoj lokaciji."</string>
+    <string name="callFailed_emergency_call_over_wfc_not_available" msgid="5944309590693432042">"Hitni pozivi pomoću funkcije Pozivanje preko WiFi-a nisu dostupni na ovoj lokaciji."</string>
+    <string name="callFailed_wfc_service_not_available_in_this_location" msgid="3624536608369524988">"Pozivanje preko WiFi-a nije dostupno na ovoj lokaciji."</string>
     <string name="change_pin_title" msgid="3564254326626797321">"Promenite PIN kôd govorne pošte"</string>
     <string name="change_pin_continue_label" msgid="5177011752453506371">"Nastavi"</string>
     <string name="change_pin_cancel_label" msgid="2301711566758827936">"Otkaži"</string>
@@ -827,7 +827,7 @@
     <string name="radio_info_data_connection_disable" msgid="6404751291511368706">"Onemogući vezu za prenos podataka"</string>
     <string name="volte_provisioned_switch_string" msgid="4812874990480336178">"Dodeljeno za VoLTE"</string>
     <string name="vt_provisioned_switch_string" msgid="8295542122512195979">"Video pozivi su dodeljeni"</string>
-    <string name="wfc_provisioned_switch_string" msgid="3835004640321078988">"Pozivanje preko Wi-Fi-ja je dodeljeno"</string>
+    <string name="wfc_provisioned_switch_string" msgid="3835004640321078988">"Pozivanje preko WiFi-a je dodeljeno"</string>
     <string name="eab_provisioned_switch_string" msgid="4449676720736033035">"Dodeljen je EAB/prisustvo"</string>
     <string name="cbrs_data_switch_string" msgid="6060356430838077653">"Podaci CBRS-a"</string>
     <string name="dsds_switch_string" msgid="7564769822086764796">"Omogući DSDS"</string>
@@ -845,7 +845,7 @@
     <string name="radio_info_ims_reg_status_not_registered" msgid="8045821447288876085">"Nije registrovano"</string>
     <string name="radio_info_ims_feature_status_available" msgid="6493200914756969292">"Dostupno"</string>
     <string name="radio_info_ims_feature_status_unavailable" msgid="8930391136839759778">"Nije dostupno"</string>
-    <string name="radio_info_ims_reg_status" msgid="25582845222446390">"Registracija IMS-a: <xliff:g id="STATUS">%1$s</xliff:g>\nGlas preko LTE-a: <xliff:g id="AVAILABILITY_0">%2$s</xliff:g>\nGlas preko Wi-Fi-ja: <xliff:g id="AVAILABILITY_1">%3$s</xliff:g>\nVideo poziv: <xliff:g id="AVAILABILITY_2">%4$s</xliff:g>\nUT interfejs: <xliff:g id="AVAILABILITY_3">%5$s</xliff:g>"</string>
+    <string name="radio_info_ims_reg_status" msgid="25582845222446390">"Registracija IMS-a: <xliff:g id="STATUS">%1$s</xliff:g>\nGlas preko LTE-a: <xliff:g id="AVAILABILITY_0">%2$s</xliff:g>\nGlas preko WiFi-a: <xliff:g id="AVAILABILITY_1">%3$s</xliff:g>\nVideo poziv: <xliff:g id="AVAILABILITY_2">%4$s</xliff:g>\nUT interfejs: <xliff:g id="AVAILABILITY_3">%5$s</xliff:g>"</string>
     <string name="radioInfo_service_in" msgid="45753418231446400">"Radi"</string>
     <string name="radioInfo_service_out" msgid="287972405416142312">"Ne radi"</string>
     <string name="radioInfo_service_emergency" msgid="4763879891415016848">"Samo hitni pozivi"</string>
@@ -901,6 +901,11 @@
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"Osveži"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"Uključi/isključi proveru DNS-a"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"Informacije/podešavanja specifična za proizvođača originalne opreme"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"EN-DC dostupno:"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"DCNR ograničeno:"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"NR dostupno:"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"NR stanje:"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR učestalost:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"Podesite režim radijskog opsega"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Učitava se lista opsega…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Podesi"</string>
diff --git a/res/values-be/qtistrings.xml b/res/values-be/qtistrings.xml
new file mode 100755
index 0000000..9896743
--- /dev/null
+++ b/res/values-be/qtistrings.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- IMS settings related strings -->
+    <!-- Title displayed IMS account settings in the sip settings category. [CHAR LIMIT=NONE] -->
+    <string name="ims_settings">"Налады IMS"</string>
+
+	<!-- Call auto reject settings -->
+    <string name="auto_reject_toggle_title">"Аўтаматычна адхіляць званкі."</string>
+    <string name="auto_reject_toggle_summary">"Калі на DDS ёсць званкі з высокім прыярытэтам і перадача дадзеных, аўтаматычна адхіляйце званкі на неактыўных SIM-картах"</string>
+</resources>
diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml
index 6952f90..e9ebdea 100644
--- a/res/values-be/strings.xml
+++ b/res/values-be/strings.xml
@@ -302,7 +302,7 @@
     <string name="video_calling_settings_title" msgid="342829454913266078">"Відэавыклікі праз аператара"</string>
     <string name="gsm_umts_options" msgid="4968446771519376808">"Параметры GSM/UMTS"</string>
     <string name="cdma_options" msgid="3669592472226145665">"Параметры CDMA"</string>
-    <string name="throttle_data_usage" msgid="1944145350660420711">"Выкарыстанне трафіку"</string>
+    <string name="throttle_data_usage" msgid="1944145350660420711">"Выкарыстанне трафіка"</string>
     <string name="throttle_current_usage" msgid="7483859109708658613">"Выкарыстанне даных у бягучы перыяд"</string>
     <string name="throttle_time_frame" msgid="1813452485948918791">"Перыяд выкарыстання дадзеных"</string>
     <string name="throttle_rate" msgid="7641913901133634905">"Палітыка хуткасці перадачы дадзеных"</string>
@@ -442,7 +442,7 @@
     <string name="sum_fdn_manage_list" msgid="3311397063233992907">"Кіраванне спісам тэлефонных нумароў"</string>
     <string name="voice_privacy" msgid="7346935172372181951">"Палiтыка прыватнасцi Voice"</string>
     <string name="voice_privacy_summary" msgid="3556460926168473346">"Уключыць пашыраны рэжым прыватнасці"</string>
-    <string name="tty_mode_option_title" msgid="3843817710032641703">"Рэжым тэлетайпа"</string>
+    <string name="tty_mode_option_title" msgid="3843817710032641703">"Рэжым TTY"</string>
     <string name="tty_mode_option_summary" msgid="4770510287236494371">"Задаць рэжым TTY"</string>
     <string name="auto_retry_mode_title" msgid="2985801935424422340">"Аўтаматычны паўтор"</string>
     <string name="auto_retry_mode_summary" msgid="2863919925349511402">"Уключыць рэжым аўтаматычнага паўтору"</string>
@@ -586,10 +586,10 @@
     <string name="rtt_mode_more_information" msgid="587500128658756318">"Функцыя RTT дапамагае абанентам з парушэннямі слыху і маўлення.&lt;br&gt; &lt;a href=<xliff:g id="URL">http://support.google.com/mobile?p=telephony_rtt</xliff:g>&gt;Даведацца больш&lt;/a&gt;\n       &lt;br&gt;&lt;br&gt; - RTT-выклікі захоўваюцца ў выглядзе расшыфроўкі паведамленняў\n       &lt;br&gt; - Функцыя RTT недаступная для відэавыклікаў"</string>
     <string name="no_rtt_when_roaming" msgid="5268008247378355389">"Заўвага. Функцыя RTT недаступная ў роўмінгу."</string>
   <string-array name="tty_mode_entries">
-    <item msgid="3238070884803849303">"Тэлетайп выключаны"</item>
-    <item msgid="1449091874731375214">"Поўнафункцыянальны тэлетайп"</item>
-    <item msgid="1044179293199519425">"Тэлетайп HCO"</item>
-    <item msgid="2131559553795606483">"Тэлетайп VCO"</item>
+    <item msgid="3238070884803849303">"TTY выключаны"</item>
+    <item msgid="1449091874731375214">"Поўнафункцыянальны TTY"</item>
+    <item msgid="1044179293199519425">"TTY з магчымасцю чуць суразмоўніка"</item>
+    <item msgid="2131559553795606483">"TTY з магчымасцю перадачы голасу"</item>
   </string-array>
     <string name="dtmf_tones_title" msgid="7874845461117175236">"Сігналы DTMF"</string>
     <string name="dtmf_tones_summary" msgid="2294822239899471201">"Задаць даўжыню тонаў DTMF"</string>
@@ -617,7 +617,7 @@
     <string name="ota_unsuccessful" msgid="8531037653803955754">"Ваш тэлефон не актываваны. \nМагчыма, вам спатрэбіцца знайсці вобласць з лепшым пакрыццём (каля акна ці на вуліцы). \n\nПаўтарыце спробу ці звярнiцеся ў цэнтр абслугоўвання кліентаў, каб атрымаць дадатковую інфармацыю."</string>
     <string name="ota_spc_failure" msgid="904092035241370080">"ПАМЫЛКІ ПЕРАВЫШЭННЯ SPC"</string>
     <string name="ota_call_end" msgid="8657746378290737034">"Назад"</string>
-    <string name="ota_try_again" msgid="6914781945599998550">"Паспрабаваць яшчэ раз"</string>
+    <string name="ota_try_again" msgid="6914781945599998550">"Паўтарыць спробу"</string>
     <string name="ota_next" msgid="2041016619313475914">"Далей"</string>
     <string name="ecm_exit_dialog" msgid="4200691880721429078">"EcmExitDialog"</string>
     <string name="phone_entered_ecm_text" msgid="8431238297843035842">"У рэжыме экстранных зваротных выклікаў"</string>
@@ -904,6 +904,11 @@
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"Абнавіць"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"Уключыць/выключыць праверку DNS"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"Інфармацыя/налады пастаўшчыка"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"Даступнасць EN-DC:"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"Абмежаванне DCNR:"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"Даступнасць NR:"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"Стан NR:"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"Частата NR:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"Задаць рэжым радыёдыяпазону"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Загружаецца спіс дыяпазонаў…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Задаць"</string>
diff --git a/res/values-bg/qtistrings.xml b/res/values-bg/qtistrings.xml
new file mode 100755
index 0000000..9896743
--- /dev/null
+++ b/res/values-bg/qtistrings.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- IMS settings related strings -->
+    <!-- Title displayed IMS account settings in the sip settings category. [CHAR LIMIT=NONE] -->
+    <string name="ims_settings">"Налады IMS"</string>
+
+	<!-- Call auto reject settings -->
+    <string name="auto_reject_toggle_title">"Аўтаматычна адхіляць званкі."</string>
+    <string name="auto_reject_toggle_summary">"Калі на DDS ёсць званкі з высокім прыярытэтам і перадача дадзеных, аўтаматычна адхіляйце званкі на неактыўных SIM-картах"</string>
+</resources>
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index 324ae82..d5a1a53 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -898,6 +898,11 @@
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"Опресняване"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"Превключване на проверката на DNS"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"Информация/настройки, специфични за ОЕМ"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"Налично EN-DC:"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"Ограничено DCNR:"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"Налично NR:"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"Състояние на NR:"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"Честота за NR:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"Задаване на режима за радиодиапазона"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Списъкът с диапазони се зарежда…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Задаване"</string>
diff --git a/res/values-bn/qtistrings.xml b/res/values-bn/qtistrings.xml
new file mode 100755
index 0000000..b8f1689
--- /dev/null
+++ b/res/values-bn/qtistrings.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- IMS settings related strings -->
+    <!-- Title displayed IMS account settings in the sip settings category. [CHAR LIMIT=NONE] -->
+    <string name="ims_settings">"আইএমএস সেটিংস"</string>
+
+	<!-- Call auto reject settings -->
+    <string name="auto_reject_toggle_title">"স্বয়ংক্রিয়ভাবে কল প্রত্যাখ্যান করুন."</string>
+    <string name="auto_reject_toggle_summary">"যখন ডিডিএসে উচ্চ অগ্রাধিকার এবং ডেটা কল থাকে, তখন স্বয়ংক্রিয়ভাবে নিষ্ক্রিয় সিম কার্ডগুলিতে কলগুলি প্রত্যাখ্যান করে"</string>
+</resources>
diff --git a/res/values-bn/strings.xml b/res/values-bn/strings.xml
index 0fb9e35..7410e96 100644
--- a/res/values-bn/strings.xml
+++ b/res/values-bn/strings.xml
@@ -898,6 +898,11 @@
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"রিফ্রেশ"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"DNS চেক টগল করুন"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"OEM-নির্দিষ্ট তথ্য/সেটিংস"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"EN-DC উপলভ্য:"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"DCNR সীমাবদ্ধ করা আছে:"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"NR উপলভ্য:"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"NR স্ট্যাটাস:"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR ফ্রিকোয়েন্সি:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"রেডিও ব্যান্ড মোড সেট করুন"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"ব্যান্ড তালিকা লোড হচ্ছে..."</string>
     <string name="band_mode_set" msgid="6657819412803771421">"সেট করুন"</string>
diff --git a/res/values-bs/qtistrings.xml b/res/values-bs/qtistrings.xml
new file mode 100755
index 0000000..9b670df
--- /dev/null
+++ b/res/values-bs/qtistrings.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- IMS settings related strings -->
+    <!-- Title displayed IMS account settings in the sip settings category. [CHAR LIMIT=NONE] -->
+    <string name="ims_settings">"Nastavitve IMS"</string>
+
+	<!-- Call auto reject settings -->
+    <string name="auto_reject_toggle_title">"Samodejno zavrni klice."</string>
+    <string name="auto_reject_toggle_summary">"Ko so na DDS visoko prioritetni in podatkovni klici, samodejno zavrnite klice na nedejavnih karticah SIM"</string>
+</resources>
diff --git a/res/values-bs/strings.xml b/res/values-bs/strings.xml
index 9ef1b14..2dd8b0c 100644
--- a/res/values-bs/strings.xml
+++ b/res/values-bs/strings.xml
@@ -296,7 +296,7 @@
     <string name="mobile_data_settings_summary" msgid="5012570152029118471">"Pristup prijenosu podataka mobilnom mrežom"</string>
     <string name="data_usage_disable_mobile" msgid="5669109209055988308">"Isključiti prijenos podataka na mobilnoj mreži?"</string>
     <string name="sim_selection_required_pref" msgid="6985901872978341314">"Potreban izbor"</string>
-    <string name="sim_change_data_title" msgid="9142726786345906606">"Promijeniti podatkovni SIM?"</string>
+    <string name="sim_change_data_title" msgid="9142726786345906606">"Promijeniti SIM za prijenos podataka?"</string>
     <string name="sim_change_data_message" msgid="3567358694255933280">"Koristiti SIM karticu <xliff:g id="NEW_SIM">%1$s</xliff:g> umjesto SIM kartice <xliff:g id="OLD_SIM">%2$s</xliff:g> za prijenos podataka na mobilnoj mreži?"</string>
     <string name="wifi_calling_settings_title" msgid="5800018845662016507">"Pozivanje putem WiFi-ja"</string>
     <string name="video_calling_settings_title" msgid="342829454913266078">"Operater video pozivanja"</string>
@@ -522,13 +522,13 @@
     <string name="notification_voicemail_no_vm_number" msgid="3423686009815186750">"Nepoznat broj govorne pošte"</string>
     <string name="notification_network_selection_title" msgid="255595526707809121">"Nema mreže"</string>
     <string name="notification_network_selection_text" msgid="553288408722427659">"Odabrana mreža (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) je nedostupna"</string>
-    <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"Uključite mobilnu mrežu, isključite Način rada u avionu ili isključite Uštedu baterije da uputite poziv."</string>
-    <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"Isključite način rada u avionu da uputite poziv."</string>
-    <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"Isključite način rada u avionu ili se povežite na bežičnu mrežu da uputite poziv."</string>
+    <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"Uključite mobilnu mrežu, isključite Način rada u avionu ili isključite Uštedu baterije da pozovete."</string>
+    <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"Isključite način rada u avionu da pozovete."</string>
+    <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"Isključite način rada u avionu ili se povežite na bežičnu mrežu da pozovete."</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Izađite iz načina rada za hitni povratni poziv da uputite poziv koji nije hitan."</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"Nije registrirano na mreži."</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"Mobilna mreža nije dostupna."</string>
-    <string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"Mobilna mreža nije dostupna. Povežite se na bežičnu mrežu da uputite poziv."</string>
+    <string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"Mobilna mreža nije dostupna. Povežite se na bežičnu mrežu da pozovete."</string>
     <string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"Da uputite poziv, upišite važeći broj."</string>
     <string name="incall_error_call_failed" msgid="393508653582682539">"Poziv nije uspio."</string>
     <string name="incall_error_cannot_add_call" msgid="5425764862628655443">"Trenutno nije moguće dodati poziv. Možete pokušati poslati poruku."</string>
@@ -541,8 +541,8 @@
     <string name="incall_error_supp_service_reject" msgid="3044363092441655912">"Nije moguće odbiti poziv."</string>
     <string name="incall_error_supp_service_hangup" msgid="836524952243836735">"Nije moguće uputiti poziv(e)."</string>
     <string name="incall_error_supp_service_hold" msgid="8535056414643540997">"Nije moguće staviti pozive na čekanje."</string>
-    <string name="incall_error_wfc_only_no_wireless_network" msgid="5860742792811400109">"Povežite se na bežičnu mrežu da uputite poziv."</string>
-    <string name="incall_error_promote_wfc" msgid="9164896813931363415">"Omogućite pozivanje putem WiFi-ja da uputite poziv."</string>
+    <string name="incall_error_wfc_only_no_wireless_network" msgid="5860742792811400109">"Povežite se na bežičnu mrežu da pozovete."</string>
+    <string name="incall_error_promote_wfc" msgid="9164896813931363415">"Omogućite pozivanje putem WiFi-ja da pozovete."</string>
     <string name="emergency_information_hint" msgid="9208897544917793012">"Informacije za hitne slučajeve"</string>
     <string name="emergency_information_owner_hint" msgid="6256909888049185316">"Vlasnik"</string>
     <string name="emergency_information_confirm_hint" msgid="5109017615894918914">"Dodirnite ponovo da pogledate informacije"</string>
@@ -664,7 +664,7 @@
     <string name="preference_category_ringtone" msgid="8787281191375434976">"Melodija zvona i vibracija"</string>
     <string name="pstn_connection_service_label" msgid="9200102709997537069">"Ugrađene SIM kartice"</string>
     <string name="enable_video_calling_title" msgid="7246600931634161830">"Uključi video pozive"</string>
-    <string name="enable_video_calling_dialog_msg" msgid="7141478720386203540">"Da uključite video pozive, omogućite Poboljšani 4G LTE način rada u postavkama mreže."</string>
+    <string name="enable_video_calling_dialog_msg" msgid="7141478720386203540">"Da uključite video pozive, omogućite poboljšani 4G LTE način rada u postavkama mreže."</string>
     <string name="enable_video_calling_dialog_settings" msgid="8697890611305307110">"Postavke mreže"</string>
     <string name="enable_video_calling_dialog_close" msgid="4298929725917045270">"Zatvori"</string>
     <string name="sim_label_emergency_calls" msgid="9078241989421522310">"Hitni pozivi"</string>
@@ -858,7 +858,7 @@
     <string name="radioInfo_data_disconnected" msgid="8085447971880814541">"Veza je prekinuta"</string>
     <string name="radioInfo_data_connecting" msgid="925092271092152472">"Povezivanje"</string>
     <string name="radioInfo_data_connected" msgid="7637335645634239508">"Povezano"</string>
-    <string name="radioInfo_data_suspended" msgid="8695262782642002785">"Suspendirano"</string>
+    <string name="radioInfo_data_suspended" msgid="8695262782642002785">"Obustavljeno"</string>
     <string name="radioInfo_unknown" msgid="5401423738500672850">"Nepoznato"</string>
     <string name="radioInfo_display_packets" msgid="6794302192441084157">"paketi"</string>
     <string name="radioInfo_display_bytes" msgid="7701006329222413797">"bajtova"</string>
@@ -867,7 +867,7 @@
     <string name="radioInfo_lac" msgid="3892986460272607013">"LAC"</string>
     <string name="radioInfo_cid" msgid="1423185536264406705">"CID"</string>
     <string name="radio_info_subid" msgid="6839966868621703203">"Trenutni pomoćni ID:"</string>
-    <string name="radio_info_dds" msgid="1122593144425697126">"Pomoćni ID za zadani podatkovni SIM:"</string>
+    <string name="radio_info_dds" msgid="1122593144425697126">"Pomoćni ID za zadani SIM za prijenos podataka:"</string>
     <string name="radio_info_dl_kbps" msgid="2382922659525318726">"DL propusnost (kbps):"</string>
     <string name="radio_info_ul_kbps" msgid="2102225400904799036">"UL propusnost (kbps):"</string>
     <string name="radio_info_signal_location_label" msgid="6188435197086550049">"Informacije o lokaciji ćelije (zastarjele):"</string>
@@ -901,6 +901,11 @@
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"Osvježi"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"Uključi/isključi provjeru DNS-a"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"OEM-specifične informacije/postavke"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"EN-DC dostupno:"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"DCNR ograničeno:"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"NR dostupno:"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"NR stanje:"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR učestalost:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"Postavite način radijskog opsega"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Učitavanje liste opsega…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Postavi"</string>
diff --git a/res/values-ca/qtistrings.xml b/res/values-ca/qtistrings.xml
new file mode 100755
index 0000000..032360b
--- /dev/null
+++ b/res/values-ca/qtistrings.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- IMS settings related strings -->
+    <!-- Title displayed IMS account settings in the sip settings category. [CHAR LIMIT=NONE] -->
+    <string name="ims_settings">"Configuració de l'IMS"</string>
+
+	<!-- Call auto reject settings -->
+    <string name="auto_reject_toggle_title">"Rebutja automàticament les trucades."</string>
+    <string name="auto_reject_toggle_summary">"Quan hi ha trucades de dades i alta prioritat a DDS, rebutgeu automàticament les trucades a les targetes SIM inactives"</string>
+</resources>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index 1f910eb..5d3f3dd 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -898,6 +898,11 @@
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"Actualitza"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"Activa o desactiva la comprovació de DNS"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"Informació/configuració específica d\'OEM"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"EN-DC disponible:"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"DCNR amb restriccions:"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"NR disponible:"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"Estat d\'NR:"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"Freqüència d\'NR:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"Configura el mode de banda de senyal mòbil"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"S\'està carregant la llista de bandes…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Defineix"</string>
diff --git a/res/values-cs/qtistrings.xml b/res/values-cs/qtistrings.xml
new file mode 100755
index 0000000..cf55d04
--- /dev/null
+++ b/res/values-cs/qtistrings.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- IMS settings related strings -->
+    <!-- Title displayed IMS account settings in the sip settings category. [CHAR LIMIT=NONE] -->
+    <string name="ims_settings">"Nastavení IMS"</string>
+
+	<!-- Call auto reject settings -->
+    <string name="auto_reject_toggle_title">"Automaticky odmítat hovory."</string>
+    <string name="auto_reject_toggle_summary">"Pokud jsou na DDS vysoké prioritní a datové hovory, automaticky odmítněte hovory na nečinných SIM kartách"</string>
+</resources>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index c5d45ef..31119ee 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -293,7 +293,7 @@
     <string name="keywords_carrier_settings_euicc" msgid="8540160967922063745">"operátor, esim, sim, euicc, přepnout operátora, přidat operátora"</string>
     <string name="carrier_settings_euicc_summary" msgid="2027941166597330117">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> – <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
     <string name="mobile_data_settings_title" msgid="7228249980933944101">"Mobilní data"</string>
-    <string name="mobile_data_settings_summary" msgid="5012570152029118471">"Přistupovat k datům přes mobilní síť"</string>
+    <string name="mobile_data_settings_summary" msgid="5012570152029118471">"Používat datové připojení přes mobilní síť"</string>
     <string name="data_usage_disable_mobile" msgid="5669109209055988308">"Vypnout mobilní data?"</string>
     <string name="sim_selection_required_pref" msgid="6985901872978341314">"Vyžadován výběr"</string>
     <string name="sim_change_data_title" msgid="9142726786345906606">"Změnit SIM kartu pro data?"</string>
@@ -904,6 +904,11 @@
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"Obnovit"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"Přepnout kontrolu DNS"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"Informace a nastavení specifické pro výrobce OEM"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"EN-DC k dispozici:"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"DCNR zakázáno:"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"NR k dispozici:"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"Stav NR:"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"Frekvence NR:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"Nastavit režim pásma bezdrátového modulu"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Načítání seznamu pásem…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Nastavit"</string>
diff --git a/res/values-da/qtistrings.xml b/res/values-da/qtistrings.xml
new file mode 100755
index 0000000..d5a8020
--- /dev/null
+++ b/res/values-da/qtistrings.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- IMS settings related strings -->
+    <!-- Title displayed IMS account settings in the sip settings category. [CHAR LIMIT=NONE] -->
+    <string name="ims_settings">"IMS ayarları"</string>
+
+	<!-- Call auto reject settings -->
+    <string name="auto_reject_toggle_title">"Aramaları otomatik olarak reddet."</string>
+    <string name="auto_reject_toggle_summary">"DDS'de yüksek öncelikli ve veri aramaları olduğunda, boştaki SIM kartlarda aramaları otomatik olarak reddedin"</string>
+</resources>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index da269e1..88283a3 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -898,6 +898,11 @@
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"Opdater"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"Skift DNS-kontrol"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"OEM-specifikke oplysninger/indstillinger"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"Tilgængelig for EN-DC:"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"Begrænset til DCNR"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"Tilgængelig for NR:"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"Status for NR:"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"Frekvens for NR:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"Konfigurer radiobåndstilstand"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Indlæser båndliste…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Angiv"</string>
@@ -907,4 +912,6 @@
     <string name="phone_info_label" product="default" msgid="1784175881556791433">"Telefonoplysninger"</string>
     <string name="carrier_provisioning" msgid="2668065041869578376">"Oplysninger om mobilselskab"</string>
     <string name="trigger_carrier_provisioning" msgid="1301829588620638234">"Aktivér mobilselskab"</string>
+    <string name="vibrating_for_outgoing_call_accepted_title">Vibrerende til udøvelse af opkald accepteret</string>
+    <string name="smart_divert_summary">CFNRC-indstillinger.</string>
 </resources>
diff --git a/res/values-de/qtistrings.xml b/res/values-de/qtistrings.xml
new file mode 100755
index 0000000..27c22ef
--- /dev/null
+++ b/res/values-de/qtistrings.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- IMS settings related strings -->
+    <!-- Title displayed IMS account settings in the sip settings category. [CHAR LIMIT=NONE] -->
+    <string name="ims_settings">"IMS-Einstellungen"</string>
+
+	<!-- Call auto reject settings -->
+    <string name="auto_reject_toggle_title">"Anrufe automatisch ablehnen."</string>
+    <string name="auto_reject_toggle_summary">"Wenn auf dem DDS ein Anruf mit hoher Priorität und Daten erfolgt, lehnen Sie den Anruf auf der inaktiven SIM-Karte automatisch ab"</string>
+</resources>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index 948c7cc..00dad70 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -310,7 +310,7 @@
     <string name="throttle_status_subtext" msgid="1110276415078236687">"<xliff:g id="USED_0">%1$s</xliff:g> (<xliff:g id="USED_1">%2$d</xliff:g> %%) des maximalen Zeitraums von <xliff:g id="USED_2">%3$s</xliff:g>.\nDer nächste Zeitraum beginnt in <xliff:g id="USED_3">%4$d</xliff:g> Tagen (<xliff:g id="USED_4">%5$s</xliff:g>)."</string>
     <string name="throttle_data_usage_subtext" msgid="3185429653996709840">"<xliff:g id="USED_0">%1$s</xliff:g> (<xliff:g id="USED_1">%2$d</xliff:g> ٪) des maximalen Zeitraums von <xliff:g id="USED_2">%3$s</xliff:g>"</string>
     <string name="throttle_data_rate_reduced_subtext" msgid="8369839346277847725">"Maximum von <xliff:g id="USED_0">%1$s</xliff:g> wurde überschritten.\nDatenrate wurde auf <xliff:g id="USED_1">%2$d</xliff:g> kbit/s reduziert."</string>
-    <string name="throttle_time_frame_subtext" msgid="6462089615392402127">"<xliff:g id="USED_0">%1$d</xliff:g> ٪ des Zyklus sind verstrichen. \nDer nächste Zeitraum beginnt in <xliff:g id="USED_1">%2$d</xliff:g> Tagen (<xliff:g id="USED_2">%3$s</xliff:g>)."</string>
+    <string name="throttle_time_frame_subtext" msgid="6462089615392402127">"(<xliff:g id="USED_0">%1$d</xliff:g> ٪)des Zyklus sind verstrichen. \nDer nächste Zeitraum beginnt in <xliff:g id="USED_1">%2$d</xliff:g> Tagen (<xliff:g id="USED_2">%3$s</xliff:g>)."</string>
     <string name="throttle_rate_subtext" msgid="7221971817325779535">"Datenrate wird auf <xliff:g id="USED">%1$d</xliff:g> kbit/s reduziert, wenn Datennutzungslimit überschritten wird."</string>
     <string name="throttle_help_subtext" msgid="2817114897095534807">"Weitere Informationen über die Richtlinien deines Mobilfunkanbieters zur Nutzung der Mobilfunknetzdaten"</string>
     <string name="cell_broadcast_sms" msgid="4053449797289031063">"Cell Broadcast SMS"</string>
@@ -898,6 +898,11 @@
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"Aktualisieren"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"DNS-Überprüfung ein-/ausschalten"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"OEM-spezifische Infos/Einstellungen"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"EN-DC verfügbar:"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"DCNR eingeschränkt:"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"NR verfügbar:"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"NR-Status:"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR-Frequenz:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"Frequenzbereichmodus festlegen"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Frequenzliste wird geladen…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Festlegen"</string>
@@ -907,4 +912,17 @@
     <string name="phone_info_label" product="default" msgid="1784175881556791433">"Über das Telefon"</string>
     <string name="carrier_provisioning" msgid="2668065041869578376">"Informationen zur Nutzerverwaltung durch den Anbieter"</string>
     <string name="trigger_carrier_provisioning" msgid="1301829588620638234">"Nutzerverwaltung durch den Anbieter auslösen"</string>
+    <!-- Smart Divert Settings -->
+    <!-- Title for the Smart Divert Feature displayed in Call Settings -->
+    <string name="smart_divert_title">Smart-Divert</string>
+    <!-- Summary for the Smart Divert Feature displayed in Call Settings -->
+    <string name="smart_divert_summary">CFNRc-Einstellungen</string>
+    <string name="labelCFVoice">Sprache</string>
+    <string name="call_forward_option">Anrufumleitungsoptionen</string>
+    <string name="vibrating_for_outgoing_call_accepted_title">Vibration für ausgehenden Anruf aktiviert</string>
+    <string name="vibrating_for_outgoing_call_accepted_summary">Aktivieren Sie den Vibrationsmodus für ausgehende Anrufe angenommen</string>
+    <!-- Instruction text to notify user that emergency calls may not be possible when voice is enabled over wifi. [CHAR LIMIT=NONE] -->
+    <string name="limited_service_alert_dialog_description"><b>Notruf über WiFi Calling</b>\nNotrufe können nicht über WiFi Calling abgesetzt werden.\n\nDas Endgerät wechselt bei einem Notruf automatisch auf ein vorhandenes Mobilfunknetz (2G/3G).\n\nNotrufe sind daher nur bei vorhandener Mobilfunkabdeckung möglich.</string>
+    <!-- Option to hide the popup dialog if it is not necessary for the user. [CHAR LIMIT=40] -->
+    <string name="do_not_show_again">Nicht mehr anzeigen</string>
 </resources>
diff --git a/res/values-el/qtistrings.xml b/res/values-el/qtistrings.xml
new file mode 100755
index 0000000..b98b139
--- /dev/null
+++ b/res/values-el/qtistrings.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- IMS settings related strings -->
+    <!-- Title displayed IMS account settings in the sip settings category. [CHAR LIMIT=NONE] -->
+    <string name="ims_settings">"Ρυθμίσεις IMS"</string>
+
+	<!-- Call auto reject settings -->
+    <string name="auto_reject_toggle_title">"Απόρριψη κλήσεων αυτόματα."</string>
+    <string name="auto_reject_toggle_summary">"Όταν υπάρχουν υψηλές προτεραιότητες και κλήσεις δεδομένων στο DDS, απορρίψτε αυτόματα κλήσεις σε αδρανείς κάρτες SIM"</string>
+</resources>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index 9b687c1..e7af2ec 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -898,6 +898,11 @@
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"Ανανέωση"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"Εναλλαγή ελέγχου DNS"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"Πληροφορίες/ρυθμίσεις για OEM"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"EN-DC διαθέσιμο:"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"DCNR με περιορισμό:"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"NR διαθέσιμο:"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"Κατάσταση NR:"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"Συχνότητα NR:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"Ρύθμιση λειτουργίας ζώνης συχνοτήτων πομπού"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Φόρτωση λίστας ζωνών…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Ορισμός"</string>
diff --git a/res/values-en-rAU/qtistrings.xml b/res/values-en-rAU/qtistrings.xml
new file mode 100755
index 0000000..b4e0275
--- /dev/null
+++ b/res/values-en-rAU/qtistrings.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- IMS settings related strings -->
+    <!-- Title displayed IMS account settings in the sip settings category. [CHAR LIMIT=NONE] -->
+    <string name="ims_settings">"IMS settings"</string>
+
+	<!-- Call auto reject settings -->
+    <string name="auto_reject_toggle_title">"Automatically reject calls."</string>
+    <string name="auto_reject_toggle_summary">"When there are high priority and data calls on DDS, automatically reject calls on idle SIM cards"</string>
+</resources>
diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml
index d48a09c..aacdc53 100644
--- a/res/values-en-rAU/strings.xml
+++ b/res/values-en-rAU/strings.xml
@@ -898,6 +898,11 @@
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"Refresh"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"Toggle DNS check"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"OEM-specific info/settings"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"EN-DC available:"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"DCNR restricted:"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"NR available:"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"NR status:"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR frequency:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"Set radio band mode"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Loading band list…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Set"</string>
diff --git a/res/values-en-rCA/strings.xml b/res/values-en-rCA/strings.xml
index 2505aa1..16b1df4 100644
--- a/res/values-en-rCA/strings.xml
+++ b/res/values-en-rCA/strings.xml
@@ -471,7 +471,7 @@
     <string name="simContacts_emptyLoading" msgid="4989040293858675483">"Reading from SIM card…"</string>
     <string name="simContacts_empty" msgid="1135632055473689521">"No contacts on your SIM card."</string>
     <string name="simContacts_title" msgid="2714029230160136647">"Select contacts to import"</string>
-    <string name="simContacts_airplaneMode" msgid="4654884030631503808">"Turn off aeroplane mode to import contacts from the SIM card."</string>
+    <string name="simContacts_airplaneMode" msgid="4654884030631503808">"Turn off Airplane mode to import contacts from the SIM card."</string>
     <string name="enable_pin" msgid="967674051730845376">"Enable/disable SIM PIN"</string>
     <string name="change_pin" msgid="3657869530942905790">"Change SIM PIN"</string>
     <string name="enter_pin_text" msgid="3182311451978663356">"SIM PIN:"</string>
@@ -523,8 +523,8 @@
     <string name="notification_network_selection_title" msgid="255595526707809121">"No service"</string>
     <string name="notification_network_selection_text" msgid="553288408722427659">"Selected network<xliff:g id="OPERATOR_NAME">%s</xliff:g> unavailable"</string>
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"Turn on mobile network, turn off airplane mode or turn off battery saver mode to make a call."</string>
-    <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"Turn off aeroplane mode to make a call."</string>
-    <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"Turn off aeroplane mode or connect to a wireless network to make a call."</string>
+    <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"Turn off Airplane mode to make a call."</string>
+    <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"Turn off Airplane mode or connect to a wireless network to make a call."</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Exit emergency callback mode to make a non-emergency call."</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"Not registered on network."</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"Mobile network not available."</string>
@@ -552,7 +552,7 @@
     <string name="emergency_call_shortcut_hint" msgid="1290485125107779500">"Tap again to call <xliff:g id="EMERGENCY_NUMBER">%s</xliff:g>"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="1695305158151408629">"Turning on radio…"</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="4329131876852608587">"No service. Trying again…"</string>
-    <string name="radio_off_during_emergency_call" msgid="8011154134040481609">"Cannot enter aeroplane mode during an emergency call."</string>
+    <string name="radio_off_during_emergency_call" msgid="8011154134040481609">"Cannot enter Airplane mode during an emergency call."</string>
     <string name="dial_emergency_error" msgid="825822413209026039">"Can\'t call. <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> is not an emergency number."</string>
     <string name="dial_emergency_empty_error" msgid="2785803395047793634">"Can\'t call. Dial an emergency number."</string>
     <string name="dial_emergency_calling_not_available" msgid="6485846193794727823">"Emergency calling not available"</string>
@@ -707,7 +707,7 @@
     <string name="mobile_data_activate_button" msgid="1139792516354374612">"ADD DATA"</string>
     <string name="mobile_data_activate_cancel_button" msgid="3530174817572005860">"CANCEL"</string>
     <string name="clh_card_title_call_ended_txt" msgid="5977978317527299698">"Call ended"</string>
-    <string name="clh_callFailed_powerOff_txt" msgid="8279934912560765361">"Aeroplane mode is on"</string>
+    <string name="clh_callFailed_powerOff_txt" msgid="8279934912560765361">"Airplane mode is on"</string>
     <string name="clh_callFailed_simError_txt" msgid="5128538525762326413">"Can\'t access SIM card"</string>
     <string name="clh_incall_error_out_of_service_txt" msgid="2736010617446749869">"Mobile network not available"</string>
     <string name="clh_callFailed_unassigned_number_txt" msgid="141967660286695682">"Issue with phone number you are trying to dial. Error code 1."</string>
@@ -898,6 +898,11 @@
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"Refresh"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"Toggle DNS check"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"OEM-specific info/settings"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"EN-DC available:"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"DCNR restricted:"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"NR available:"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"NR status:"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR frequency:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"Set radio band mode"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Loading band list…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Set"</string>
diff --git a/res/values-en-rGB/qtistrings.xml b/res/values-en-rGB/qtistrings.xml
new file mode 100755
index 0000000..b4e0275
--- /dev/null
+++ b/res/values-en-rGB/qtistrings.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- IMS settings related strings -->
+    <!-- Title displayed IMS account settings in the sip settings category. [CHAR LIMIT=NONE] -->
+    <string name="ims_settings">"IMS settings"</string>
+
+	<!-- Call auto reject settings -->
+    <string name="auto_reject_toggle_title">"Automatically reject calls."</string>
+    <string name="auto_reject_toggle_summary">"When there are high priority and data calls on DDS, automatically reject calls on idle SIM cards"</string>
+</resources>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index d48a09c..aacdc53 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -898,6 +898,11 @@
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"Refresh"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"Toggle DNS check"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"OEM-specific info/settings"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"EN-DC available:"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"DCNR restricted:"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"NR available:"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"NR status:"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR frequency:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"Set radio band mode"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Loading band list…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Set"</string>
diff --git a/res/values-en-rIN/qtistrings.xml b/res/values-en-rIN/qtistrings.xml
new file mode 100755
index 0000000..b4e0275
--- /dev/null
+++ b/res/values-en-rIN/qtistrings.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- IMS settings related strings -->
+    <!-- Title displayed IMS account settings in the sip settings category. [CHAR LIMIT=NONE] -->
+    <string name="ims_settings">"IMS settings"</string>
+
+	<!-- Call auto reject settings -->
+    <string name="auto_reject_toggle_title">"Automatically reject calls."</string>
+    <string name="auto_reject_toggle_summary">"When there are high priority and data calls on DDS, automatically reject calls on idle SIM cards"</string>
+</resources>
diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml
index d48a09c..aacdc53 100644
--- a/res/values-en-rIN/strings.xml
+++ b/res/values-en-rIN/strings.xml
@@ -898,6 +898,11 @@
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"Refresh"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"Toggle DNS check"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"OEM-specific info/settings"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"EN-DC available:"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"DCNR restricted:"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"NR available:"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"NR status:"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR frequency:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"Set radio band mode"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Loading band list…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Set"</string>
diff --git a/res/values-en-rXC/strings.xml b/res/values-en-rXC/strings.xml
index 250a26d..91835c5 100644
--- a/res/values-en-rXC/strings.xml
+++ b/res/values-en-rXC/strings.xml
@@ -898,6 +898,11 @@
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‎‎‏‎‏‏‎‏‏‎‎‎‎‎‏‏‎‏‎‎‎‏‎‎‎‏‎‎‏‎‎‏‎‏‎‏‎‎‎‎‎‏‎‎‎‎‏‎‏‎‎‏‎‏‎‎‎‎‎Refresh‎‏‎‎‏‎"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‎‏‏‎‎‏‏‎‏‎‏‏‎‎‎‏‏‎‎‎‎‏‏‎‎‎‎‏‏‏‏‎‎‏‏‏‏‏‏‎‏‏‏‎‏‎‏‏‏‏‎‏‏‎‏‎‏‎‏‎‏‏‎‎Toggle DNS Check‎‏‎‎‏‎"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‏‎‏‎‏‎‎‎‎‏‏‏‎‎‎‏‎‎‏‏‎‎‏‏‏‏‏‎‎‎‎‎‏‏‏‏‎‎‏‎‏‎‎‎‎‏‏‎‎‏‎‎‎‎‏‎‎‎‎‏‎‎‎‎‎OEM-specific Info/Settings‎‏‎‎‏‎"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‏‎‏‏‏‏‎‏‎‎‏‏‎‏‎‏‏‏‎‎‏‎‎‏‏‏‏‎‎‎‎‎‎‏‎‎‏‏‎‏‏‎‎‎‏‎‏‏‎‏‏‏‏‏‎‏‏‎‎‏‏‏‎‎‎EN-DC Available:‎‏‎‎‏‎"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‏‎‏‎‎‎‏‎‎‏‎‎‎‏‎‎‎‎‎‏‏‎‎‎‏‎‎‎‏‏‏‎‏‏‏‏‏‎‏‎‎‎‏‎‎‏‎‎‎‎‎‎‎‎‎‏‏‎‏‎‎‏‏‏‎DCNR Restricted:‎‏‎‎‏‎"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‎‏‏‎‎‏‎‎‏‎‏‎‏‏‎‎‏‎‎‎‏‎‎‎‎‎‎‎‏‎‏‏‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‏‏‎‎‏‎‏‎‏‏‎‎‏‏‎‏‎NR Available:‎‏‎‎‏‎"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‎‏‏‎‎‏‎‏‎‎‏‎‎‎‎‎‎‎‎‎‎‏‎‏‎‏‎‎‏‎‎‏‏‏‏‎‎‏‎‎‎‎‏‎‏‏‏‎‎‏‏‎‎‎‎‎‎‏‏‏‏‎‎‎NR State:‎‏‎‎‏‎"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‎‏‏‎‎‎‎‏‎‏‎‏‎‏‏‎‏‎‏‏‏‎‏‎‎‎‎‏‏‎‎‎‎‏‏‏‏‏‎‏‎‏‎‏‎‎‎‎‏‏‎‏‎‎‎‏‏‎‎‎‎‎‎‎NR Frequency:‎‏‎‎‏‎"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‏‎‏‏‎‏‏‏‏‎‎‎‎‎‎‎‎‎‎‎‎‏‏‏‏‎‏‎‏‎‏‎‏‏‎‏‎‎‏‎‎‏‎‏‏‏‏‎‏‎‎‏‎‎‏‎‏‎‎Set Radio Band Mode‎‏‎‎‏‎"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‎‎‏‎‏‏‎‎‎‎‏‎‏‏‏‎‏‏‎‎‎‎‎‏‏‎‏‎‎‏‏‎‎‏‎‎‏‎‎‏‏‏‏‏‎‎‏‏‎‏‏‏‎‏‏‏‎‏‏‏‏‏‎Loading Band List…‎‏‎‎‏‎"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‏‏‏‎‏‏‏‎‎‎‏‏‎‎‏‎‏‎‏‎‏‎‎‏‏‎‏‏‏‏‎‏‏‎‎‏‏‎‏‏‎‏‏‎‏‏‏‏‎‎‏‎‏‏‏‎‎‎‎‎‏‏‏‎‏‎Set‎‏‎‎‏‎"</string>
diff --git a/res/values-es-rUS/qtistrings.xml b/res/values-es-rUS/qtistrings.xml
new file mode 100755
index 0000000..d5a8020
--- /dev/null
+++ b/res/values-es-rUS/qtistrings.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- IMS settings related strings -->
+    <!-- Title displayed IMS account settings in the sip settings category. [CHAR LIMIT=NONE] -->
+    <string name="ims_settings">"IMS ayarları"</string>
+
+	<!-- Call auto reject settings -->
+    <string name="auto_reject_toggle_title">"Aramaları otomatik olarak reddet."</string>
+    <string name="auto_reject_toggle_summary">"DDS'de yüksek öncelikli ve veri aramaları olduğunda, boştaki SIM kartlarda aramaları otomatik olarak reddedin"</string>
+</resources>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index 43d15be..d2f0d94 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -898,6 +898,11 @@
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"Actualizar"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"Activar o desactivar la comprobación de DNS"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"Configuración/Datos específicos del OEM"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"EN-DC disponible:"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"DCNR restringida:"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"NR disponible:"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"Estado de NR:"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"Frecuencia de NR:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"Establecer modo de banda de radio"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Cargando lista de bandas…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Establecer"</string>
diff --git a/res/values-es/qtistrings.xml b/res/values-es/qtistrings.xml
new file mode 100755
index 0000000..213df15
--- /dev/null
+++ b/res/values-es/qtistrings.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- IMS settings related strings -->
+    <!-- Title displayed IMS account settings in the sip settings category. [CHAR LIMIT=NONE] -->
+    <string name="ims_settings">"Configuración de IMS"</string>
+
+	<!-- Call auto reject settings -->
+    <string name="auto_reject_toggle_title">"Rechazar llamadas automáticamente.."</string>
+    <string name="auto_reject_toggle_summary">"Cuando hay llamadas de datos y de alta prioridad en DDS, rechace automáticamente las llamadas en tarjetas SIM inactivas"</string>
+</resources>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index f8b36d4..cf34669 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -310,7 +310,7 @@
     <string name="throttle_status_subtext" msgid="1110276415078236687">"<xliff:g id="USED_0">%1$s</xliff:g> (<xliff:g id="USED_1">%2$d</xliff:g>٪) de periodo máximo de <xliff:g id="USED_2">%3$s</xliff:g>.\nPróx periodo en <xliff:g id="USED_3">%4$d</xliff:g> días (<xliff:g id="USED_4">%5$s</xliff:g>)"</string>
     <string name="throttle_data_usage_subtext" msgid="3185429653996709840">"<xliff:g id="USED_0">%1$s</xliff:g> (<xliff:g id="USED_1">%2$d</xliff:g>٪) de periodo máx de <xliff:g id="USED_2">%3$s</xliff:g>"</string>
     <string name="throttle_data_rate_reduced_subtext" msgid="8369839346277847725">"Máx de <xliff:g id="USED_0">%1$s</xliff:g> superado.\nFrec datos reducida a <xliff:g id="USED_1">%2$d</xliff:g> Kb/s"</string>
-    <string name="throttle_time_frame_subtext" msgid="6462089615392402127">"<xliff:g id="USED_0">%1$d</xliff:g>٪ del ciclo transcurrido.\nPróx periodo en <xliff:g id="USED_1">%2$d</xliff:g> días (<xliff:g id="USED_2">%3$s</xliff:g>)"</string>
+    <string name="throttle_time_frame_subtext" msgid="6462089615392402127">"(<xliff:g id="USED_0">%1$d</xliff:g>٪) del ciclo transcurrido.\nPróx periodo en <xliff:g id="USED_1">%2$d</xliff:g> días (<xliff:g id="USED_2">%3$s</xliff:g>)"</string>
     <string name="throttle_rate_subtext" msgid="7221971817325779535">"Frec datos se reduce a <xliff:g id="USED">%1$d</xliff:g> Kb/s si se supera límite uso datos"</string>
     <string name="throttle_help_subtext" msgid="2817114897095534807">"Más información sobre política de uso de datos móviles de tu operador"</string>
     <string name="cell_broadcast_sms" msgid="4053449797289031063">"SMS de difusión móvil"</string>
@@ -547,7 +547,7 @@
     <string name="emergency_information_owner_hint" msgid="6256909888049185316">"Propietario"</string>
     <string name="emergency_information_confirm_hint" msgid="5109017615894918914">"Tocar de nuevo para ver la información"</string>
     <string name="emergency_enable_radio_dialog_title" msgid="2667568200755388829">"Llamada de emergencia"</string>
-    <string name="single_emergency_number_title" msgid="8413371079579067196">"Llamada de emergencia"</string>
+    <string name="single_emergency_number_title" msgid="8413371079579067196">"Número de emergencia"</string>
     <string name="numerous_emergency_numbers_title" msgid="8972398932506755510">"Números de emergencia"</string>
     <string name="emergency_call_shortcut_hint" msgid="1290485125107779500">"Tocar de nuevo para llamar al <xliff:g id="EMERGENCY_NUMBER">%s</xliff:g>"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="1695305158151408629">"Activando señal móvil…"</string>
@@ -617,7 +617,7 @@
     <string name="ota_unsuccessful" msgid="8531037653803955754">"El teléfono no se ha activado. \nEs posible que tengas que situarte en una zona con más cobertura (cerca de una ventana o en el exterior). \n\nInténtalo de nuevo o ponte en contacto con el servicio de atención al cliente para consultar otras opciones."</string>
     <string name="ota_spc_failure" msgid="904092035241370080">"EXCESO DE ERRORES DE SPC"</string>
     <string name="ota_call_end" msgid="8657746378290737034">"Atrás"</string>
-    <string name="ota_try_again" msgid="6914781945599998550">"Volver a intentarlo"</string>
+    <string name="ota_try_again" msgid="6914781945599998550">"Reintentar"</string>
     <string name="ota_next" msgid="2041016619313475914">"Siguiente"</string>
     <string name="ecm_exit_dialog" msgid="4200691880721429078">"EcmExitDialog"</string>
     <string name="phone_entered_ecm_text" msgid="8431238297843035842">"Se ha activado el modo de devolución de llamada de emergencia."</string>
@@ -636,7 +636,7 @@
     <string name="progress_dialog_exiting_ecm" msgid="9159080081676927217">"Saliendo del modo de devolución de llamada de emergencia"</string>
     <string name="alert_dialog_yes" msgid="3532525979632841417">"Sí"</string>
     <string name="alert_dialog_no" msgid="1075632654085988420">"No"</string>
-    <string name="alert_dialog_dismiss" msgid="1336356286354517054">"Cerrar"</string>
+    <string name="alert_dialog_dismiss" msgid="1336356286354517054">"Descartar"</string>
     <string name="phone_in_ecm_call_notification_text_without_data_restriction_hint" msgid="3747860785153531225">"El teléfono está en modo de devolución de llamada de emergencia"</string>
     <string name="phone_in_ecm_notification_complete_time_without_data_restriction_hint" msgid="3690292264812050858">"Hasta las <xliff:g id="COMPLETETIME">%s</xliff:g>"</string>
     <plurals name="alert_dialog_exit_ecm_without_data_restriction_hint" formatted="false" msgid="6477733043040328640">
@@ -764,19 +764,19 @@
     <string name="sum_call_barring_disabled" msgid="5699448000600153096">"Desactivado"</string>
     <string name="call_barring_baoc" msgid="7400892586336429326">"Todas las realizadas"</string>
     <string name="call_barring_baoc_enabled" msgid="3131509193386668182">"¿Quieres desbloquear todas las llamadas realizadas?"</string>
-    <string name="call_barring_baoc_disabled" msgid="8534224684091141509">"¿Quieres bloquear todas las llamadas realizadas?"</string>
+    <string name="call_barring_baoc_disabled" msgid="8534224684091141509">"¿Bloquear todas las llamadas realizadas?"</string>
     <string name="call_barring_baoic" msgid="8668125428666851665">"Internacionales realizadas"</string>
     <string name="call_barring_baoic_enabled" msgid="1203758092657630123">"¿Quieres desbloquear las llamadas internacionales realizadas?"</string>
-    <string name="call_barring_baoic_disabled" msgid="5656889339002997449">"¿Quieres bloquear las llamadas internacionales realizadas?"</string>
+    <string name="call_barring_baoic_disabled" msgid="5656889339002997449">"¿Bloquear las llamadas internacionales realizadas?"</string>
     <string name="call_barring_baoicr" msgid="8566167764432343487">"Itinerancia de llamadas internacionales realizadas"</string>
     <string name="call_barring_baoicr_enabled" msgid="1615324165512798478">"¿Quieres desbloquear la itinerancia de las llamadas internacionales realizadas?"</string>
-    <string name="call_barring_baoicr_disabled" msgid="172010175248142831">"¿Quieres bloquear la itinerancia de las llamadas internacionales realizadas?"</string>
+    <string name="call_barring_baoicr_disabled" msgid="172010175248142831">"¿Bloquear la itinerancia de las llamadas internacionales realizadas?"</string>
     <string name="call_barring_baic" msgid="7941393541678658566">"Todas las entrantes"</string>
     <string name="call_barring_baic_enabled" msgid="4357332358020337470">"¿Quieres desbloquear todas las llamadas entrantes?"</string>
-    <string name="call_barring_baic_disabled" msgid="2355945245938240958">"¿Quieres bloquear todas las llamadas entrantes?"</string>
+    <string name="call_barring_baic_disabled" msgid="2355945245938240958">"¿Bloquear todas las llamadas entrantes?"</string>
     <string name="call_barring_baicr" msgid="8712249337313034226">"Itinerancia de llamadas internacionales entrantes"</string>
     <string name="call_barring_baicr_enabled" msgid="64774270234828175">"¿Quieres desbloquear la itinerancia de las llamadas internacionales entrantes?"</string>
-    <string name="call_barring_baicr_disabled" msgid="3488129262744027262">"¿Quieres bloquear la itinerancia de las llamadas internacionales entrantes?"</string>
+    <string name="call_barring_baicr_disabled" msgid="3488129262744027262">"¿Bloquear la itinerancia de las llamadas internacionales entrantes?"</string>
     <string name="call_barring_deactivate_all" msgid="7837931580047157328">"Desactivar todo"</string>
     <string name="call_barring_deactivate_all_description" msgid="4474119585042121604">"Desactivar todos los ajustes de bloqueo de llamadas"</string>
     <string name="call_barring_deactivate_success" msgid="3545644320298275337">"Se ha desactivado el bloqueo de llamadas"</string>
@@ -898,6 +898,11 @@
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"Actualizar"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"Activar o desactivar comprobación de DNS"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"Ajustes o información específica de OEM"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"EN-DC disponible:"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"DCNR restringido:"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"NR disponible:"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"Estado de NR:"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"Frecuencia de NR:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"Establecer modo de banda de señal móvil"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Cargando lista de bandas…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Seleccionar"</string>
@@ -907,4 +912,12 @@
     <string name="phone_info_label" product="default" msgid="1784175881556791433">"Información sobre el teléfono"</string>
     <string name="carrier_provisioning" msgid="2668065041869578376">"Información de servicios del operador"</string>
     <string name="trigger_carrier_provisioning" msgid="1301829588620638234">"Activar servicios del operador"</string>
+    <!-- Smart Divert Settings -->
+    <!-- Title for the Smart Divert Feature displayed in Call Settings -->
+    <string name="smart_divert_title">Smart-Divert</string>
+    <!-- Summary for the Smart Divert Feature displayed in Call Settings -->
+    <string name="smart_divert_summary">Configuración de CFNRc</string>
+    <string name="labelCFVoice">Voz</string>
+    <string name="call_forward_option">Opciones de desvío de llamadas</string>
+    <string name="vibrating_for_outgoing_call_accepted_title">Vibración para llamada saliente aceptada</string>
 </resources>
diff --git a/res/values-et/qtistrings.xml b/res/values-et/qtistrings.xml
new file mode 100755
index 0000000..72da646
--- /dev/null
+++ b/res/values-et/qtistrings.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- IMS settings related strings -->
+    <!-- Title displayed IMS account settings in the sip settings category. [CHAR LIMIT=NONE] -->
+    <string name="ims_settings">"IMS-i seaded"</string>
+
+	<!-- Call auto reject settings -->
+    <string name="auto_reject_toggle_title">"Keeldu kõnedest automaatselt."</string>
+    <string name="auto_reject_toggle_summary">"Keeldu automaatselt kasutamata SIM-kaartide kõnedest, kui DDS-is on kõrge prioriteediga ja andmekõned"</string>
+</resources>
diff --git a/res/values-et/strings.xml b/res/values-et/strings.xml
index 5d6a837..50e54e5 100644
--- a/res/values-et/strings.xml
+++ b/res/values-et/strings.xml
@@ -898,6 +898,11 @@
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"Värskendamine"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"DNS-i kontrolli sisse- või väljalülitamine"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"OEM-i teave/seaded"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"EN-DC saadaval:"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"DCNR piiratud:"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"NR saadaval:"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"NR-i olek:"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR-i sagedus:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"Raadio ribarežiimi määramine"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Ribaloendi laadimine …"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Määra"</string>
diff --git a/res/values-eu/qtistrings.xml b/res/values-eu/qtistrings.xml
new file mode 100755
index 0000000..890cac9
--- /dev/null
+++ b/res/values-eu/qtistrings.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- IMS settings related strings -->
+    <!-- Title displayed IMS account settings in the sip settings category. [CHAR LIMIT=NONE] -->
+    <string name="ims_settings">"IMS ezarpenak"</string>
+
+	<!-- Call auto reject settings -->
+    <string name="auto_reject_toggle_title">"Baztertu deiak automatikoki."</string>
+    <string name="auto_reject_toggle_summary">"Ahaztu automatikoki SIM txartel inaktiboetako deiak lehentasun handiko eta datu deiak daudenean DDSn"</string>
+</resources>
diff --git a/res/values-eu/strings.xml b/res/values-eu/strings.xml
index 044a71f..cd2b5f5 100644
--- a/res/values-eu/strings.xml
+++ b/res/values-eu/strings.xml
@@ -348,7 +348,7 @@
   <string-array name="list_language_entries">
     <item msgid="2347238508726934281">"Ingelesa"</item>
     <item msgid="5172468397620875174">"Frantsesa"</item>
-    <item msgid="3978110664146015398">"Espainiera"</item>
+    <item msgid="3978110664146015398">"Gaztelania"</item>
     <item msgid="2637764545851526369">"Japoniera"</item>
     <item msgid="6103816221834932751">"Koreera"</item>
     <item msgid="3127367370005168399">"Txinera"</item>
@@ -430,7 +430,7 @@
     <string name="manage_fdn_list" msgid="3341716430375195441">"Markatze finkoko zenbakien zerrenda"</string>
     <string name="fdn_list_with_label" msgid="1409655283510382556">"Markatze finkoko zenbakiak (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="fdn_activation" msgid="2178637004710435895">"Markatze finkoko zenbakiaren aktibazioa"</string>
-    <string name="fdn_enabled" msgid="7017355494808056447">"Markatze finkoko zenbakiak gaituta daude"</string>
+    <string name="fdn_enabled" msgid="7017355494808056447">"Markatze finkoko zenbakiak gaituta"</string>
     <string name="fdn_disabled" msgid="6696468878037736600">"Markatze finkoko zenbakiak desgaituta daude"</string>
     <string name="enable_fdn" msgid="4830555730418033723">"Gaitu markatze finkoko zenbakiak"</string>
     <string name="disable_fdn" msgid="3918794950264647541">"Desgaitu markatze finkoko zenbakia"</string>
@@ -542,7 +542,7 @@
     <string name="incall_error_supp_service_hangup" msgid="836524952243836735">"Ezin dira deiak bereizi."</string>
     <string name="incall_error_supp_service_hold" msgid="8535056414643540997">"Ezin dira zain utzi deiak."</string>
     <string name="incall_error_wfc_only_no_wireless_network" msgid="5860742792811400109">"Deia egiteko, konektatu haririk gabeko sare batera."</string>
-    <string name="incall_error_promote_wfc" msgid="9164896813931363415">"Deia egiteko, gaitu Wi-Fi bidezko deiak."</string>
+    <string name="incall_error_promote_wfc" msgid="9164896813931363415">"Deia egiteko, gaitu wifi bidezko deiak."</string>
     <string name="emergency_information_hint" msgid="9208897544917793012">"Larrialdietarako informazioa"</string>
     <string name="emergency_information_owner_hint" msgid="6256909888049185316">"Jabea"</string>
     <string name="emergency_information_confirm_hint" msgid="5109017615894918914">"Informazioa ikusteko, sakatu berriro"</string>
@@ -675,7 +675,7 @@
     <string name="callFailed_cdma_activation" msgid="5392057031552253550">"SIM txartel batek zerbitzua aktibatu du eta telefonoaren ibiltaritza-gaitasunak eguneratu ditu."</string>
     <string name="callFailed_cdma_call_limit" msgid="1074219746093031412">"Dei gehiegi daude aktibo. Amaitu edo bateratu abian diren deiak beste bat egin aurretik."</string>
     <string name="callFailed_imei_not_accepted" msgid="7257903653685147251">"Ezin da konektatu. Erabili balio duen SIM txartel bat."</string>
-    <string name="callFailed_wifi_lost" msgid="1788036730589163141">"Galdu egin da wifi bidezko konexioa. Amaitu da deia."</string>
+    <string name="callFailed_wifi_lost" msgid="1788036730589163141">"Galdu egin da wifi-konexioa. Amaitu da deia."</string>
     <string name="dialFailed_low_battery" msgid="6857904237423407056">"Ezin da egin deia, bateria gutxi gelditzen delako."</string>
     <string name="callFailed_low_battery" msgid="4056828320214416182">"Bideo-deia amaitu egin da bateria gutxi gelditzen delako."</string>
     <string name="callFailed_emergency_call_over_wfc_not_available" msgid="5944309590693432042">"Ez daude erabilgarri wifi bidezko larrialdi-deiak kokapen honetan."</string>
@@ -898,6 +898,11 @@
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"Freskatu"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"Aldatu DNS egiaztapenaren egoera"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"Jatorrizko fabrikatzailearen berariazko informazioa edota ezarpenak"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"EN-DC erabilgarri:"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"DCNR mugatuta:"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"NR erabilgarri:"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"NR estatua:"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR maiztasuna:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"Ezarri irrati-bandaren modua"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Banden zerrenda kargatzen…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Ezarri"</string>
diff --git a/res/values-fa/qtistrings.xml b/res/values-fa/qtistrings.xml
new file mode 100755
index 0000000..df6c0d6
--- /dev/null
+++ b/res/values-fa/qtistrings.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- IMS settings related strings -->
+    <!-- Title displayed IMS account settings in the sip settings category. [CHAR LIMIT=NONE] -->
+    <string name="ims_settings">"تنظیمات IMS"</string>
+
+	<!-- Call auto reject settings -->
+    <string name="auto_reject_toggle_title">"تماس ها را به طور خودکار رد کنید."</string>
+    <string name="auto_reject_toggle_summary">"در صورت وجود اولویت های بالا و تماس های داده ای بر روی DDS ، تماس های سیم کارت های بیکار را به طور خودکار رد کنید."</string>
+</resources>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index 6839a27..56ec019 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -440,7 +440,7 @@
     <string name="sum_fdn" msgid="6152246141642323582">"مدیریت شماره‌های شماره‌گیری ثابت"</string>
     <string name="sum_fdn_change_pin" msgid="3510994280557335727">"‏تغییر پین برای دسترسی FDN"</string>
     <string name="sum_fdn_manage_list" msgid="3311397063233992907">"مدیریت فهرست شماره تلفن"</string>
-    <string name="voice_privacy" msgid="7346935172372181951">"حریم خصوصی صوتی"</string>
+    <string name="voice_privacy" msgid="7346935172372181951">"حریم‌خصوصی صوتی"</string>
     <string name="voice_privacy_summary" msgid="3556460926168473346">"فعال کردن حالت رازداری پیشرفته"</string>
     <string name="tty_mode_option_title" msgid="3843817710032641703">"‏حالت TTY"</string>
     <string name="tty_mode_option_summary" msgid="4770510287236494371">"‏تنظیم حالت TTY"</string>
@@ -898,6 +898,11 @@
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"بازخوانی"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"‏تغییر وضعیت علامت DNS"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"‏تنظیمات/اطلاعات خاص OEM"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"‏EN-DC دردسترس است:"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"‏DCNR محدود شده است:"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"‏NR دردسترس است:"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"‏وضعیت NR:"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"‏فرکانس NR:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"تنظیم حالت باند رادیو"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"درحال بار کردن فهرست باند…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"تنظیم"</string>
diff --git a/res/values-fi/qtistrings.xml b/res/values-fi/qtistrings.xml
new file mode 100755
index 0000000..aa3b958
--- /dev/null
+++ b/res/values-fi/qtistrings.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- IMS settings related strings -->
+    <!-- Title displayed IMS account settings in the sip settings category. [CHAR LIMIT=NONE] -->
+    <string name="ims_settings">"IMS-asetukset"</string>
+
+	<!-- Call auto reject settings -->
+    <string name="auto_reject_toggle_title">"Hylkää puhelut automaattisesti."</string>
+    <string name="auto_reject_toggle_summary">"Hylkää automaattisesti käyttämättömien SIM-korttien puhelut, kun DDS: ssä on korkean prioriteetin ja datapuhelut"</string>
+</resources>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index 7d88687..91e2e87 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -648,7 +648,7 @@
     <string name="voicemail_number_not_set" msgid="8831561283386938155">"&lt;Ei asetettu&gt;"</string>
     <string name="other_settings" msgid="8895088007393598447">"Muut puheluasetukset"</string>
     <string name="calling_via_template" msgid="1791323450703751750">"Operaattorilla <xliff:g id="PROVIDER_NAME">%s</xliff:g>"</string>
-    <string name="contactPhoto" msgid="7885089213135154834">"yhteyshenkilön valokuva"</string>
+    <string name="contactPhoto" msgid="7885089213135154834">"yhteyshenkilön kuva"</string>
     <string name="goPrivate" msgid="4645108311382209551">"muuta yksityiseksi"</string>
     <string name="selectContact" msgid="1527612842599767382">"valitse yhteystieto"</string>
     <string name="not_voice_capable" msgid="2819996734252084253">"Äänipuheluita ei tueta"</string>
@@ -898,6 +898,11 @@
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"Päivitä"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"Ota DNS-tarkistus käyttöön tai poista se käytöstä"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"OEM-kohtaiset tiedot/asetukset"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"EN-DC saatavilla:"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"DCNR rajoitettu:"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"NR saatavilla:"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"NR:n tila:"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR:n taajuus:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"Radion taajuustilan valinta"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Ladataan taajuusluetteloa…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Aseta"</string>
diff --git a/res/values-fr-rCA/qtistrings.xml b/res/values-fr-rCA/qtistrings.xml
new file mode 100755
index 0000000..d5fc306
--- /dev/null
+++ b/res/values-fr-rCA/qtistrings.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- IMS settings related strings -->
+    <!-- Title displayed IMS account settings in the sip settings category. [CHAR LIMIT=NONE] -->
+    <string name="ims_settings">"Configurações IMS"</string>
+
+	<!-- Call auto reject settings -->
+    <string name="auto_reject_toggle_title">"Rejeitar chamadas automaticamente."</string>
+    <string name="auto_reject_toggle_summary">"Rejeitar automaticamente chamadas em cartões SIM ociosos quando houver alta prioridade e chamadas de dados no DDS"</string>
+</resources>
diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml
index 9ad819a..48d1b52 100644
--- a/res/values-fr-rCA/strings.xml
+++ b/res/values-fr-rCA/strings.xml
@@ -898,6 +898,11 @@
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"Actualiser"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"Basculer la vérification DNS"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"Informations/paramètres OEM"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"EN-DC disponible :"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"DCNR restreinte :"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"NR disponible :"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"État NR :"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"Fréquence NR :"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"Définir le mode de bande radio"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Chargement de la liste de bandes en cours…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Définir"</string>
@@ -907,4 +912,6 @@
     <string name="phone_info_label" product="default" msgid="1784175881556791433">"Informations sur le téléphone"</string>
     <string name="carrier_provisioning" msgid="2668065041869578376">"Données d\'approvisionnement du fournisseur de services"</string>
     <string name="trigger_carrier_provisioning" msgid="1301829588620638234">"Déclencher l\'approvisionnement du fournisseur de services"</string>
+    <string name="vibrating_for_outgoing_call_accepted_title">Vibrations pour appel sortant acceptées</string>
+    <string name="vibrating_for_outgoing_call_accepted_summary">Activer le mode vibreur pour les appels sortants acceptés</string>
 </resources>
diff --git a/res/values-fr/qtistrings.xml b/res/values-fr/qtistrings.xml
new file mode 100755
index 0000000..e14366a
--- /dev/null
+++ b/res/values-fr/qtistrings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- IMS settings related strings -->
+    <!-- Title displayed IMS account settings in the sip settings category. [CHAR LIMIT=NONE] -->
+    <string name="ims_settings">"Paramètres IMS"</string>
+    <!-- VT call quality settings. -->
+    <string name="ims_vt_call_quality_title">"Qualité des appels VT"</string>
+    <string name="ims_vt_call_quality_low">"Faible"</string>
+    <string name="ims_vt_call_quality_high">"Haute"</string>
+    <string name="ims_vt_call_quality_unknown">"Inconnue"</string>
+    <string name="ims_vt_call_quality_set_failed">"Échec de la définition de la qualité vidéo"</string>
+    <!-- Call Deflect settings -->
+    <string name="qti_ims_call_deflect_title">"Numéro de renvoi d'appel"</string>
+    <string name="qti_ims_number_not_set">"Pas encore défini"</string>
+    <!-- IMS to CS Retry setting title.  [CHAR LIMIT=30] -->
+    <string name="ims_to_cs_retry_title">"Réessayer CS"</string>
+    <!-- IMS to CS Retry setting summary.  [CHAR LIMIT=80] -->
+    <string name="ims_to_cs_retry_summary">"Réessayer automatiquement avec des communications vocales régulières (recommandé)"</string>
+	<!-- Call auto reject settings -->
+    <string name="auto_reject_toggle_title">"Rejetez les appels automatiquement."</string>
+    <string name="auto_reject_toggle_summary">"Rejetez automatiquement les appels sur les cartes SIM inactives lorsqu'il y a des appels de haute priorité et de données sur DDS"</string>
+</resources>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index e3baed7..d19dcb3 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -16,6 +16,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="ims_settings">"Paramètres IMS"</string>
     <string name="phoneAppLabel" product="tablet" msgid="1916019789885839910">"Données mobiles"</string>
     <string name="phoneAppLabel" product="default" msgid="130465039375347763">"Services téléphoniques"</string>
     <string name="emergencyDialerIconLabel" msgid="8668005772339436680">"Appels d\'urgence"</string>
@@ -36,7 +37,7 @@
     <string name="ok" msgid="7818974223666140165">"OK"</string>
     <string name="audio_mode_speaker" msgid="243689733219312360">"Haut-parleur"</string>
     <string name="audio_mode_earpiece" msgid="2823700267171134282">"Écouteur du combiné"</string>
-    <string name="audio_mode_wired_headset" msgid="5028010823105817443">"Écouteurs filaires"</string>
+    <string name="audio_mode_wired_headset" msgid="5028010823105817443">"Casque filaire"</string>
     <string name="audio_mode_bluetooth" msgid="25732183428018809">"Bluetooth"</string>
     <string name="wait_prompt_str" msgid="5136209532150094910">"Envoyer les tonalités suivantes ?\n"</string>
     <string name="pause_prompt_str" msgid="2308897950360272213">"Envoi des tonalités\n"</string>
@@ -898,6 +899,11 @@
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"Actualiser"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"Activer/Désactiver le contrôle DNS"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"Infos/paramètres OEM"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"Accès EN-DC disponible :"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"Limitation DCNR :"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"Accès NR disponible :"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"État NR :"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"Fréquence NR :"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"Définir le mode de bande radio"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Chargement de la liste de bandes…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Définir"</string>
@@ -907,4 +913,13 @@
     <string name="phone_info_label" product="default" msgid="1784175881556791433">"Informations sur le téléphone"</string>
     <string name="carrier_provisioning" msgid="2668065041869578376">"Informations de gestion des comptes opérateur"</string>
     <string name="trigger_carrier_provisioning" msgid="1301829588620638234">"Déclencher la gestion des comptes opérateur"</string>
+    <!-- Smart Divert Settings -->
+    <!-- Title for the Smart Divert Feature displayed in Call Settings -->
+    <string name="smart_divert_title">Smart-Divert</string>
+    <!-- Summary for the Smart Divert Feature displayed in Call Settings -->
+    <string name="smart_divert_summary">Paramètres du CFNRc</string>
+    <string name="labelCFVoice">Voix</string>
+    <string name="call_forward_option">"Options de renvoi d\'appel"</string>
+    <string name="vibrating_for_outgoing_call_accepted_title">Vibrations pour appel sortant acceptées</string>
+    <string name="vibrating_for_outgoing_call_accepted_summary">Activer le mode vibreur pour les appels sortants acceptés</string>
 </resources>
diff --git a/res/values-gl/qtistrings.xml b/res/values-gl/qtistrings.xml
new file mode 100755
index 0000000..900c35c
--- /dev/null
+++ b/res/values-gl/qtistrings.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- IMS settings related strings -->
+    <!-- Title displayed IMS account settings in the sip settings category. [CHAR LIMIT=NONE] -->
+    <string name="ims_settings">"Configuración de IMS"</string>
+
+	<!-- Call auto reject settings -->
+    <string name="auto_reject_toggle_title">"Rexeitar chamadas automaticamente."</string>
+    <string name="auto_reject_toggle_summary">"Rexeita automaticamente as chamadas en tarxetas SIM inactivas cando hai chamadas de alta prioridade e datos en DDS"</string>
+</resources>
diff --git a/res/values-gl/strings.xml b/res/values-gl/strings.xml
index 61321c8..3137f92 100644
--- a/res/values-gl/strings.xml
+++ b/res/values-gl/strings.xml
@@ -898,6 +898,11 @@
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"Actualizar"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"Alternar comprobación de DNS"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"Información ou configuración específica de OEM"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"EN-DC dispoñible:"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"DCNR con restricións:"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"NR dispoñible:"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"Estado de NR:"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"Frecuencia de NR:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"Definir modo de banda de radio"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Cargando lista de bandas…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Definir"</string>
diff --git a/res/values-gu/qtistrings.xml b/res/values-gu/qtistrings.xml
new file mode 100755
index 0000000..f12d23a
--- /dev/null
+++ b/res/values-gu/qtistrings.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- IMS settings related strings -->
+    <!-- Title displayed IMS account settings in the sip settings category. [CHAR LIMIT=NONE] -->
+    <string name="ims_settings">"આઇએમએસ સેટિંગ્સ"</string>
+
+	<!-- Call auto reject settings -->
+    <string name="auto_reject_toggle_title">"આપમેળે ક callsલ્સને અસ્વીકાર કરો."</string>
+    <string name="auto_reject_toggle_summary">"નિષ્ક્રિય સિમ કાર્ડ્સ પરના ક callsલ્સને જ્યારે ડીડીએસ પર ઉચ્ચ અગ્રતા અને ડેટા ક callsલ્સ હોય ત્યારે આપમેળે નકારી કા .ો"</string>
+</resources>
diff --git a/res/values-gu/strings.xml b/res/values-gu/strings.xml
index 78520c9..9c06bc2 100644
--- a/res/values-gu/strings.xml
+++ b/res/values-gu/strings.xml
@@ -173,8 +173,8 @@
     <string name="not_allowed" msgid="8541221928746104798">"તમારું SIM કાર્ડ આ નેટવર્કથી કનેક્શનને મંજૂરી આપતું નથી."</string>
     <string name="connect_later" msgid="1950138106010005425">"હમણાં આ નેટવર્કથી કનેક્ટ કરી શકાતું નથી. પછીથી ફરી પ્રયાસ કરો."</string>
     <string name="registration_done" msgid="5337407023566953292">"નેટવર્ક પર નોંધણી કરી."</string>
-    <string name="already_auto" msgid="8607068290733079336">"પહેલેથી જ આપમેળે પસંદગીમાં."</string>
-    <string name="select_automatically" msgid="779750291257872651">"નેટવર્ક આપમેળે પસંદ કરો"</string>
+    <string name="already_auto" msgid="8607068290733079336">"પહેલેથી જ ઑટોમૅટિક પસંદગીમાં."</string>
+    <string name="select_automatically" msgid="779750291257872651">"નેટવર્ક ઑટોમૅટિક રીતે પસંદ કરો"</string>
     <string name="manual_mode_disallowed_summary" msgid="3970048592179890197">"%1$s સાથે કનેક્ટ કરેલું હોય ત્યારે અનુપલબ્ધ"</string>
     <string name="network_select_title" msgid="4117305053881611988">"નેટવર્ક"</string>
     <string name="register_automatically" msgid="3907580547590554834">"સ્વયંચાલિત નોંધણી…"</string>
@@ -305,14 +305,14 @@
     <string name="throttle_data_usage" msgid="1944145350660420711">"ડેટા વપરાશ"</string>
     <string name="throttle_current_usage" msgid="7483859109708658613">"વર્તમાન અવધિમાં વપરાયેલ ડેટા"</string>
     <string name="throttle_time_frame" msgid="1813452485948918791">"ડેટા ઉપયોગ અવધિ"</string>
-    <string name="throttle_rate" msgid="7641913901133634905">"માહિતી રેટ નીતિ"</string>
+    <string name="throttle_rate" msgid="7641913901133634905">"માહિતી રેટ પૉલિસી"</string>
     <string name="throttle_help" msgid="2624535757028809735">"વધુ જાણો"</string>
     <string name="throttle_status_subtext" msgid="1110276415078236687">"<xliff:g id="USED_2">%3$s</xliff:g> માંથી <xliff:g id="USED_0">%1$s</xliff:g> (<xliff:g id="USED_1">%2$d</xliff:g>٪) અવધિ મહત્તમ\nઆગલી અવધિ <xliff:g id="USED_3">%4$d</xliff:g> દિવસમાં પ્રારંભ થાય છે (<xliff:g id="USED_4">%5$s</xliff:g>)"</string>
     <string name="throttle_data_usage_subtext" msgid="3185429653996709840">"<xliff:g id="USED_2">%3$s</xliff:g> માંથી <xliff:g id="USED_0">%1$s</xliff:g> (<xliff:g id="USED_1">%2$d</xliff:g>٪) અવધિ મહત્તમ"</string>
     <string name="throttle_data_rate_reduced_subtext" msgid="8369839346277847725">"<xliff:g id="USED_0">%1$s</xliff:g> મહત્તમ વટાવી દીધું\nડેટા રેટ <xliff:g id="USED_1">%2$d</xliff:g> Kb/s સુધી ઘટાડાશે"</string>
     <string name="throttle_time_frame_subtext" msgid="6462089615392402127">"<xliff:g id="USED_0">%1$d</xliff:g>٪ ચક્ર વીતાવ્યું\nઆગલી અવધિ <xliff:g id="USED_1">%2$d</xliff:g> દિવસમાં પ્રારંભ થાય છે (<xliff:g id="USED_2">%3$s</xliff:g>)"</string>
     <string name="throttle_rate_subtext" msgid="7221971817325779535">"જો ડેટા સીમા વટાવવામાં આવે તો ડેટા રેટ <xliff:g id="USED">%1$d</xliff:g> Kb/s સુધી ઘટાડવામાં આવે છે"</string>
-    <string name="throttle_help_subtext" msgid="2817114897095534807">"તમારા કેરિઅરની મોબાઇલ નેટવર્ક ડેટા ઉપયોગ નીતિ વિશે વધુ માહિતી"</string>
+    <string name="throttle_help_subtext" msgid="2817114897095534807">"તમારા કૅરિઅરની મોબાઇલ નેટવર્ક ડેટા ઉપયોગ પૉલિસી વિશે વધુ માહિતી"</string>
     <string name="cell_broadcast_sms" msgid="4053449797289031063">"સેલ બ્રોડકાસ્ટ SMS"</string>
     <string name="enable_disable_cell_bc_sms" msgid="4759958924031721350">"સેલ બ્રોડકાસ્ટ SMS"</string>
     <string name="cell_bc_sms_enable" msgid="2019708772024632073">"સેલ બ્રોડકાસ્ટ SMS સક્ષમ કરેલ છે"</string>
@@ -546,7 +546,7 @@
     <string name="emergency_information_hint" msgid="9208897544917793012">"ઇમર્જન્સીની માહિતી"</string>
     <string name="emergency_information_owner_hint" msgid="6256909888049185316">"માલિક"</string>
     <string name="emergency_information_confirm_hint" msgid="5109017615894918914">"માહિતી જોવા માટે ફરીથી ટૅપ કરો"</string>
-    <string name="emergency_enable_radio_dialog_title" msgid="2667568200755388829">"કટોકટીનો કૉલ"</string>
+    <string name="emergency_enable_radio_dialog_title" msgid="2667568200755388829">"ઇમર્જન્સી કૉલ"</string>
     <string name="single_emergency_number_title" msgid="8413371079579067196">"ઇમર્જન્સી નંબર"</string>
     <string name="numerous_emergency_numbers_title" msgid="8972398932506755510">"કટોકટીના નંબર"</string>
     <string name="emergency_call_shortcut_hint" msgid="1290485125107779500">"<xliff:g id="EMERGENCY_NUMBER">%s</xliff:g>ને ફરીથી કૉલ કરવા માટે ટૅપ કરો"</string>
@@ -898,6 +898,11 @@
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"રિફ્રેશ કરો"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"DNS તપાસ ટૉગલ કરો"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"OEM-વિશિષ્ટ માહિતી/સેટિંગ"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"EN-DC ઉપલબ્ધ:"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"DCNR પ્રતિબંધિત:"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"NR ઉપલબ્ધ:"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"NR સ્ટેટસ:"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR આવર્તન:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"રેડિયો બૅન્ડ મોડ સેટ કરો"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"બૅન્ડની સૂચિ લોડ કરી રહ્યું છે…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"સેટ કરો"</string>
diff --git a/res/values-hi/qtistrings.xml b/res/values-hi/qtistrings.xml
new file mode 100755
index 0000000..5dbe114
--- /dev/null
+++ b/res/values-hi/qtistrings.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- IMS settings related strings -->
+    <!-- Title displayed IMS account settings in the sip settings category. [CHAR LIMIT=NONE] -->
+    <string name="ims_settings">"आईएमएस सेटिंग्स"</string>
+
+	<!-- Call auto reject settings -->
+    <string name="auto_reject_toggle_title">"कॉल को स्वचालित रूप से अस्वीकार करें।."</string>
+    <string name="auto_reject_toggle_summary">"DDS पर उच्च प्राथमिकता और डेटा कॉल होने पर निष्क्रिय सिम कार्ड पर कॉल को स्वचालित रूप से अस्वीकार करें"</string>
+</resources>
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index 96aa5f0..c472d63 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -648,7 +648,7 @@
     <string name="voicemail_number_not_set" msgid="8831561283386938155">"&lt;सेट नहीं है&gt;"</string>
     <string name="other_settings" msgid="8895088007393598447">"अन्य कॉल सेटिंग"</string>
     <string name="calling_via_template" msgid="1791323450703751750">"कॉल <xliff:g id="PROVIDER_NAME">%s</xliff:g> से जा रही है"</string>
-    <string name="contactPhoto" msgid="7885089213135154834">"संपर्क का फ़ोटो"</string>
+    <string name="contactPhoto" msgid="7885089213135154834">"संपर्क की फ़ोटो"</string>
     <string name="goPrivate" msgid="4645108311382209551">"निजी हो जाएं"</string>
     <string name="selectContact" msgid="1527612842599767382">"संपर्क को चुनें"</string>
     <string name="not_voice_capable" msgid="2819996734252084253">"ध्वनि कॉल करना समर्थित नहीं है"</string>
@@ -898,6 +898,11 @@
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"रीफ़्रेश करें"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"डीएनएस जांच टॉगल करें"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"ओईएम-खास जानकारी/सेटिंग"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"EN-DC उपलब्ध है:"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"DCNR प्रतिबंधित है:"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"NR उपलब्ध है:"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"NR की स्थिति:"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR की फ़्रीक्वेंसी:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"\'रेडियो बैंड\' मोड सेट करें"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"बैंड सूची लोड की जा रही है…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"सेट करें"</string>
diff --git a/res/values-hr/qtistrings.xml b/res/values-hr/qtistrings.xml
new file mode 100755
index 0000000..4c17e65
--- /dev/null
+++ b/res/values-hr/qtistrings.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- IMS settings related strings -->
+    <!-- Title displayed IMS account settings in the sip settings category. [CHAR LIMIT=NONE] -->
+    <string name="ims_settings">"IMS postavke"</string>
+
+	<!-- Call auto reject settings -->
+    <string name="auto_reject_toggle_title">"Automatski odbij pozive."</string>
+    <string name="auto_reject_toggle_summary">"Automatski odbij pozive na neaktivnim SIM karticama kad su na DDS-u visokoprioritetni i podatkovni pozivi"</string>
+</resources>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index f38d1f6..6028212 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -901,6 +901,11 @@
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"Osvježi"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"Uključi/isključi provjeru DNS-a"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"Informacije/postavke koje se posebno odnose na OEM"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"Dostupno za EN-DC:"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"Ograničeno za DCNR:"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"Dostupno za NR:"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"Stanje NR-a:"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"Frekvencija NR-a:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"Postavi način radijske frekvencije"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Učitavanje popisa frekvencija…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Postavi"</string>
diff --git a/res/values-hu/qtistrings.xml b/res/values-hu/qtistrings.xml
new file mode 100755
index 0000000..68b6157
--- /dev/null
+++ b/res/values-hu/qtistrings.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- IMS settings related strings -->
+    <!-- Title displayed IMS account settings in the sip settings category. [CHAR LIMIT=NONE] -->
+    <string name="ims_settings">"IMS-beállítások"</string>
+
+	<!-- Call auto reject settings -->
+    <string name="auto_reject_toggle_title">"A hívások automatikus elutasítása."</string>
+    <string name="auto_reject_toggle_summary">"Automatikusan elutasítja a készenléti SIM-kártyákon érkező hívásokat, ha a DDS-en magas prioritású és adathívások vannak"</string>
+</resources>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index f69e5b1..75b1783 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -898,6 +898,11 @@
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"Frissítés"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"DNS-ellenőrzés váltása"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"OEM-specifikus adatok és beállítások:"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"EN-DC rendelkezésre áll:"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"DCNR korlátozva:"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"NR rendelkezésre áll:"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"NR-állapot:"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR-frekvencia:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"Rádióhullámsáv mód beállítása"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Sávlista betöltése…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Beállítás"</string>
diff --git a/res/values-hy/qtistrings.xml b/res/values-hy/qtistrings.xml
new file mode 100755
index 0000000..8dfde49
--- /dev/null
+++ b/res/values-hy/qtistrings.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- IMS settings related strings -->
+    <!-- Title displayed IMS account settings in the sip settings category. [CHAR LIMIT=NONE] -->
+    <string name="ims_settings">"IMS պարամետրերը"</string>
+
+	<!-- Call auto reject settings -->
+    <string name="auto_reject_toggle_title">"Ավտոմատ մերժել զանգերը:"</string>
+    <string name="auto_reject_toggle_summary">"Ավտոմատ մերժեք պարապ SIM քարտերի զանգերը, երբ DDS- ում կան գերակայություն և տվյալների զանգեր"</string>
+</resources>
diff --git a/res/values-hy/strings.xml b/res/values-hy/strings.xml
index 5aa70b3..789c4bc 100644
--- a/res/values-hy/strings.xml
+++ b/res/values-hy/strings.xml
@@ -898,6 +898,11 @@
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"Թարմացնել"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"Փոխարկել DNS ստուգումը"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"OEM-հատուկ տեղեկություններ/կարգավորումներ"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"EN-DC-ն հասանելի է՝"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"DCNR-ը սահմանափակված է՝"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"NR-ը հասանելի է՝"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"NR-ի կարգավիճակը՝"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR-ի հաճախականությունը՝"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"Կարգավորել հաճախությունների շերտի ռեժիմը"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Շերտերի ցուցակը բեռնվում է…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Կարգավորել"</string>
diff --git a/res/values-in/qtistrings.xml b/res/values-in/qtistrings.xml
new file mode 100755
index 0000000..c7db3a7
--- /dev/null
+++ b/res/values-in/qtistrings.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- IMS settings related strings -->
+    <!-- Title displayed IMS account settings in the sip settings category. [CHAR LIMIT=NONE] -->
+    <string name="ims_settings">"Pengaturan IMS"</string>
+
+	<!-- Call auto reject settings -->
+    <string name="auto_reject_toggle_title">"Tolak panggilan secara otomatis."</string>
+    <string name="auto_reject_toggle_summary">"Secara otomatis menolak panggilan pada kartu SIM idle ketika ada prioritas tinggi dan panggilan data pada DDS"</string>
+</resources>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index ea6bc02..b59c6bf 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -875,7 +875,7 @@
     <string name="radio_info_roaming_label" msgid="6636932886446857120">"Roaming:"</string>
     <string name="radio_info_imei_label" msgid="8947899706930120368">"IMEI"</string>
     <string name="radio_info_call_redirect_label" msgid="4526480903023362276">"Pengalihan Panggilan:"</string>
-    <string name="radio_info_ppp_resets_label" msgid="9131901102339077661">"Jumlah Setel Ulang PPP Sejak Boot:"</string>
+    <string name="radio_info_ppp_resets_label" msgid="9131901102339077661">"Jumlah Reset PPP Sejak Boot:"</string>
     <string name="radio_info_current_network_label" msgid="3052098695239642450">"Jaringan Saat Ini:"</string>
     <string name="radio_info_ppp_received_label" msgid="5753592451640644889">"Data Diterima:"</string>
     <string name="radio_info_gsm_service_label" msgid="6443348321714241328">"Layanan Suara:"</string>
@@ -898,6 +898,11 @@
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"Perbarui"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"Aktifkan Pemeriksaan DNS"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"Info spesifik OEM/Setelan"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"EN-DC Tersedia:"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"Dibatasi DCNR:"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"NR Tersedia:"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"Status NR:"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"Frekuensi NR:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"Setel Mode Band Radio"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Memuat Daftar Band…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Setel"</string>
diff --git a/res/values-is/qtistrings.xml b/res/values-is/qtistrings.xml
new file mode 100755
index 0000000..6c1906f
--- /dev/null
+++ b/res/values-is/qtistrings.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- IMS settings related strings -->
+    <!-- Title displayed IMS account settings in the sip settings category. [CHAR LIMIT=NONE] -->
+    <string name="ims_settings">"IMS stillingar"</string>
+
+	<!-- Call auto reject settings -->
+    <string name="auto_reject_toggle_title">"Hafna símtölum sjálfkrafa."</string>
+    <string name="auto_reject_toggle_summary">"Hafna sjálfkrafa símtölum á aðgerðalausum SIM-kortum þegar forgangsröð er fyrir hendi og gagnasímtöl í DDS"</string>
+</resources>
diff --git a/res/values-is/strings.xml b/res/values-is/strings.xml
index cc6bc3b..aae0de3 100644
--- a/res/values-is/strings.xml
+++ b/res/values-is/strings.xml
@@ -898,6 +898,11 @@
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"Endurnýja"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"Kveikja/slökkva á DNS-prófun"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"Upplýsingar/stillingar framleiðanda"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"EN-DC tiltækt:"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"DCNR takmarkað:"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"NR tiltækt:"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"NR staða:"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR tíðni:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"Velja útvarpstíðni"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Hleður lista yfir tíðnisvið…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Stilla"</string>
diff --git a/res/values-it/qtistrings.xml b/res/values-it/qtistrings.xml
new file mode 100755
index 0000000..531eb94
--- /dev/null
+++ b/res/values-it/qtistrings.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- IMS settings related strings -->
+    <!-- Title displayed IMS account settings in the sip settings category. [CHAR LIMIT=NONE] -->
+    <string name="ims_settings">"Impostazioni IMS"</string>
+
+	<!-- Call auto reject settings -->
+    <string name="auto_reject_toggle_title">"Rifiuta automaticamente le chiamate."</string>
+    <string name="auto_reject_toggle_summary">"Rifiuta automaticamente le chiamate su schede SIM inattive quando sono presenti chiamate dati e ad alta priorità su DDS"</string>
+</resources>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index c2dbb78..36e9af9 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -17,7 +17,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="phoneAppLabel" product="tablet" msgid="1916019789885839910">"Dati cellulare"</string>
-    <string name="phoneAppLabel" product="default" msgid="130465039375347763">"Phone Services"</string>
+    <string name="phoneAppLabel" product="default" msgid="130465039375347763">"Servizi mobili"</string>
     <string name="emergencyDialerIconLabel" msgid="8668005772339436680">"Chiamata di emergenza"</string>
     <string name="phoneIconLabel" msgid="3015941229249651419">"Telefono"</string>
     <string name="fdnListLabel" msgid="4119121875004244097">"Elenco numeri consentiti"</string>
@@ -310,7 +310,7 @@
     <string name="throttle_status_subtext" msgid="1110276415078236687">"<xliff:g id="USED_0">%1$s</xliff:g> (<xliff:g id="USED_1">%2$d</xliff:g>٪) del <xliff:g id="USED_2">%3$s</xliff:g> max periodo\nIl periodo succ. inizia tra <xliff:g id="USED_3">%4$d</xliff:g> gg (<xliff:g id="USED_4">%5$s</xliff:g>)"</string>
     <string name="throttle_data_usage_subtext" msgid="3185429653996709840">"<xliff:g id="USED_0">%1$s</xliff:g> (<xliff:g id="USED_1">%2$d</xliff:g>٪) del <xliff:g id="USED_2">%3$s</xliff:g> max periodo"</string>
     <string name="throttle_data_rate_reduced_subtext" msgid="8369839346277847725">"<xliff:g id="USED_0">%1$s</xliff:g> max superato\nVelocità dati ridotta a <xliff:g id="USED_1">%2$d</xliff:g> Kb/s"</string>
-    <string name="throttle_time_frame_subtext" msgid="6462089615392402127">"<xliff:g id="USED_0">%1$d</xliff:g>٪ del ciclo trascorso\nIl periodo succ. inizia tra <xliff:g id="USED_1">%2$d</xliff:g> gg (<xliff:g id="USED_2">%3$s</xliff:g>)"</string>
+    <string name="throttle_time_frame_subtext" msgid="6462089615392402127">"(<xliff:g id="USED_0">%1$d</xliff:g>٪) del ciclo trascorso\nIl periodo succ. inizia tra <xliff:g id="USED_1">%2$d</xliff:g> gg (<xliff:g id="USED_2">%3$s</xliff:g>)"</string>
     <string name="throttle_rate_subtext" msgid="7221971817325779535">"Velocità dati ridotta a <xliff:g id="USED">%1$d</xliff:g> Kb/s se limite utilizzo dati superato"</string>
     <string name="throttle_help_subtext" msgid="2817114897095534807">"Informazioni sulle norme di utilizzo dati della rete cellulare del gestore"</string>
     <string name="cell_broadcast_sms" msgid="4053449797289031063">"SMS cell broadcast"</string>
@@ -898,6 +898,11 @@
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"Aggiorna"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"Attiva o disattiva verifica DNS"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"Info/impostazioni specifiche OEM"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"EN-DC disponibile:"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"DCNR con limitazioni:"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"NR disponibile:"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"Stato NR:"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"Frequenza NR:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"Imposta modalità banda radio"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Caricamento elenco bande…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Imposta"</string>
@@ -907,4 +912,12 @@
     <string name="phone_info_label" product="default" msgid="1784175881556791433">"Info telefono"</string>
     <string name="carrier_provisioning" msgid="2668065041869578376">"Informazioni sul provisioning operatore"</string>
     <string name="trigger_carrier_provisioning" msgid="1301829588620638234">"Attiva provisioning operatore"</string>
+    <!-- Smart Divert Settings -->
+    <!-- Title for the Smart Divert Feature displayed in Call Settings -->
+    <string name="smart_divert_title">Smart-Divert</string>
+    <!-- Summary for the Smart Divert Feature displayed in Call Settings -->
+    <string name="smart_divert_summary">Impostazioni CFNRc</string>
+    <string name="labelCFVoice">Voce</string>
+    <string name="call_forward_option">Opzioni deviazione chiamate</string>
+    <string name="vibrating_for_outgoing_call_accepted_title">Vibrazione per chiamata in uscita accettata</string>
 </resources>
diff --git a/res/values-iw/qtistrings.xml b/res/values-iw/qtistrings.xml
new file mode 100755
index 0000000..2ac85f9
--- /dev/null
+++ b/res/values-iw/qtistrings.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- IMS settings related strings -->
+    <!-- Title displayed IMS account settings in the sip settings category. [CHAR LIMIT=NONE] -->
+    <string name="ims_settings">"הגדרות IMS"</string>
+
+	<!-- Call auto reject settings -->
+    <string name="auto_reject_toggle_title">"דחה שיחות באופן אוטומטי."</string>
+    <string name="auto_reject_toggle_summary">"נתונים ב- DDS דחה אוטומטית שיחות בכרטיסי סים סרק כאשר קיימות עדיפות גבוהה ושיחות"</string>
+</resources>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index a2a2f69..9da01de 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -606,7 +606,7 @@
     <string name="ota_skip_activation_dialog_title" msgid="7666611236789203797">"לדלג על ההפעלה?"</string>
     <string name="ota_skip_activation_dialog_message" msgid="6691722887019708713">"‏אם מדלגים על ההפעלה, אי אפשר להתקשר או להתחבר לרשתות נתונים לנייד (אך אפשר להתחבר לרשתות Wi-Fi). עד להפעלת הטלפון תופיע הודעה שמבקשת לבצע את ההפעלה בכל פעם שמדליקים את הטלפון."</string>
     <string name="ota_skip_activation_dialog_skip_label" msgid="5908029466817825633">"דילוג"</string>
-    <string name="ota_activate" msgid="7939695753665438357">"הפעל"</string>
+    <string name="ota_activate" msgid="7939695753665438357">"הפעלה"</string>
     <string name="ota_title_activate_success" msgid="1272135024761004889">"הטלפון מופעל."</string>
     <string name="ota_title_problem_with_activation" msgid="7019745985413368726">"בעיה בהפעלה"</string>
     <string name="ota_listen" msgid="2772252405488894280">"בצע את ההוראות הנאמרות עד שתשמע שההפעלה הושלמה."</string>
@@ -904,6 +904,11 @@
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"רענון"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"‏החלפת מצב של בדיקת DNS"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"‏מידע/הגדרות ספציפיים ל-OEM"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"‏תומך ב-EN-DC:"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"‏לא תומך ב-5G NR:"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"‏תומך ב-5G NR:"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"‏מצב 5G NR:"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"‏תדירות 5G NR:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"הגדרת מצב תדרים של רדיו"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"טוען רשימת תדרים…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"הגדרה"</string>
diff --git a/res/values-ja/qtistrings.xml b/res/values-ja/qtistrings.xml
new file mode 100755
index 0000000..d50c917
--- /dev/null
+++ b/res/values-ja/qtistrings.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- IMS settings related strings -->
+    <!-- Title displayed IMS account settings in the sip settings category. [CHAR LIMIT=NONE] -->
+    <string name="ims_settings">"IMS設定"</string>
+
+	<!-- Call auto reject settings -->
+    <string name="auto_reject_toggle_title">"通話を自動的に拒否します。"</string>
+    <string name="auto_reject_toggle_summary">"DDSに優先度の高いデータ呼び出しがある場合、アイドル状態のSIMカードでの呼び出しを自動的に拒否します"</string>
+</resources>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index e6e04d7..6bfe82e 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -898,6 +898,11 @@
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"更新"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"DNS チェックを切り替え"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"OEM 固有の情報 / 設定"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"EN-DC 利用可能:"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"DCNR 制限あり:"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"NR 利用可能:"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"NR ステータス:"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR 周波数:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"無線バンドモードの設定"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"バンドリストを読み込み中…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"設定"</string>
diff --git a/res/values-ka/qtistrings.xml b/res/values-ka/qtistrings.xml
new file mode 100755
index 0000000..7d322b6
--- /dev/null
+++ b/res/values-ka/qtistrings.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- IMS settings related strings -->
+    <!-- Title displayed IMS account settings in the sip settings category. [CHAR LIMIT=NONE] -->
+    <string name="ims_settings">"IMS პარამეტრები"</string>
+
+	<!-- Call auto reject settings -->
+    <string name="auto_reject_toggle_title">"ზარების ავტომატურად უარყოფა."</string>
+    <string name="auto_reject_toggle_summary">"ავტომატურად უარი თქვით უსაქმურ SIM ბარათებზე ზარებზე, როდესაც არსებობს DDS– ზე მაღალი პრიორიტეტული და მონაცემთა ზარები"</string>
+</resources>
diff --git a/res/values-ka/strings.xml b/res/values-ka/strings.xml
index e85ff0b..4d26062 100644
--- a/res/values-ka/strings.xml
+++ b/res/values-ka/strings.xml
@@ -898,6 +898,11 @@
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"განახლება"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"DNS შემოწმების გადართვა"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"ინფორმაცია/პარამეტრები სპეციალურად OEM-ისთვის"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"EN-DC ხელმისაწვდომია:"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"DCNR შეზღუდულია:"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"NR ხელმისაწვდომია:"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"NR-ის მდგომარეობა:"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR-ის სიხშირე:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"რადიოდიაპაზონის რეჟიმის დაყენება"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"მიმდინარეობს დიაპაზონთა სიის ჩატვირთვა…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"დაყენება"</string>
diff --git a/res/values-kk/qtistrings.xml b/res/values-kk/qtistrings.xml
new file mode 100755
index 0000000..f91d334
--- /dev/null
+++ b/res/values-kk/qtistrings.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- IMS settings related strings -->
+    <!-- Title displayed IMS account settings in the sip settings category. [CHAR LIMIT=NONE] -->
+    <string name="ims_settings">"IMS параметрлері"</string>
+
+	<!-- Call auto reject settings -->
+    <string name="auto_reject_toggle_title">"Қоңырауларды автоматты түрде қабылдамаңыз."</string>
+    <string name="auto_reject_toggle_summary">"Қатерлі SIM карталардағы қоңырауларды автоматты түрде автоматты түрде бас тарту және DDS-те деректер қоңыраулары болған кезде бас тарту"</string>
+</resources>
diff --git a/res/values-kk/strings.xml b/res/values-kk/strings.xml
index cfd4406..443c4d1 100644
--- a/res/values-kk/strings.xml
+++ b/res/values-kk/strings.xml
@@ -96,7 +96,7 @@
     <string name="sum_hide_caller_id" msgid="131100328602371933">"Шығыс қоңырауларда нөмірді жасыру"</string>
     <string name="sum_show_caller_id" msgid="3571854755324664591">"Шығыс қоңыраулар нөмірді көрсету"</string>
     <string name="sum_default_caller_id" msgid="1767070797135682959">"Шығыс қоңырауларында менің нөмірім көрсетілуі үшін бастапқы оператор параметрлерін қолдану"</string>
-    <string name="labelCW" msgid="8449327023861428622">"Күтудегі қоңырау"</string>
+    <string name="labelCW" msgid="8449327023861428622">"Қоңырауды ұстап тұру"</string>
     <string name="sum_cw_enabled" msgid="3977308526187139996">"Қоңырау кезінде маған келген қоңыраулар жайлы хабарлау"</string>
     <string name="sum_cw_disabled" msgid="3658094589461768637">"Қоңырау кезінде маған келген қоңыраулар жайлы хабарлау"</string>
     <string name="call_forwarding_settings" msgid="8937130467468257671">"Қоңырауды басқа нөмірге бағыттау параметрлері"</string>
@@ -898,6 +898,11 @@
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"Жаңарту"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"DNS тексерісін қосу/өшіру"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"Өндірушіге қатысты ақпарат/параметрлер"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"EN-DC қолжетімді:"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"DCNR шектеулі:"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"NR қолжетімді:"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"NR күйі:"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR жиілігі:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"Радиожолақ режимін орнату"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Жолақтар тізімі жүктелуде…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Орнату"</string>
diff --git a/res/values-km/qtistrings.xml b/res/values-km/qtistrings.xml
new file mode 100755
index 0000000..837e183
--- /dev/null
+++ b/res/values-km/qtistrings.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- IMS settings related strings -->
+    <!-- Title displayed IMS account settings in the sip settings category. [CHAR LIMIT=NONE] -->
+    <string name="ims_settings">"ការកំណត់អាយ។ អេស"</string>
+
+	<!-- Call auto reject settings -->
+    <string name="auto_reject_toggle_title">"បដិសេធការហៅដោយស្វ័យប្រវត្តិ។"</string>
+    <string name="auto_reject_toggle_summary">"បដិសេធការហៅទូរស័ព្ទស៊ីមកាតទំនេរដោយស្វ័យប្រវត្តិនៅពេលមានអាទិភាពខ្ពស់និងការហៅទិន្នន័យនៅលើឌីអេសអេស"</string>
+</resources>
diff --git a/res/values-km/strings.xml b/res/values-km/strings.xml
index 0ed3ce6..d8bd447 100644
--- a/res/values-km/strings.xml
+++ b/res/values-km/strings.xml
@@ -564,7 +564,7 @@
     <string name="dialerKeyboardHintText" msgid="1115266533703764049">"ប្រើ​​ក្ដារចុច​ដើម្បី​ចុច​លេខ"</string>
     <string name="onscreenHoldText" msgid="4025348842151665191">"ដាក់ឱ្យរង់ចាំ"</string>
     <string name="onscreenEndCallText" msgid="6138725377654842757">"បញ្ចប់"</string>
-    <string name="onscreenShowDialpadText" msgid="658465753816164079">"បន្ទះ​លេខ"</string>
+    <string name="onscreenShowDialpadText" msgid="658465753816164079">"ផ្ទាំងចុចលេខ"</string>
     <string name="onscreenMuteText" msgid="5470306116733843621">"ស្ងាត់"</string>
     <string name="onscreenAddCallText" msgid="9075675082903611677">"បន្ថែម​ការ​ហៅ"</string>
     <string name="onscreenMergeCallsText" msgid="3692389519611225407">"បញ្ចូល​ការ​ហៅ​រួម​​គ្នា"</string>
@@ -898,6 +898,11 @@
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"ផ្ទុកឡើងវិញ"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"បិទ/បើកការពិនិត្យ DNS"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"ការ​កំណត់/ព័ត៌មាន​ជាក់លាក់ OEM"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"មាន EN-DC៖"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"DCNR ត្រូវ​បាន​រឹតត្បិត៖"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"មាន NR៖"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"ស្ថានភាព NR៖"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"កម្រិត​ញឹកញាប់​នៃ NR៖"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"កំណត់​មុខងារ​កម្រិត​បញ្ជូន​វិទ្យុ"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"កំពុងដំណើរការបញ្ជីក្រុម…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"កំណត់"</string>
diff --git a/res/values-kn/qtistrings.xml b/res/values-kn/qtistrings.xml
new file mode 100755
index 0000000..87ee874
--- /dev/null
+++ b/res/values-kn/qtistrings.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- IMS settings related strings -->
+    <!-- Title displayed IMS account settings in the sip settings category. [CHAR LIMIT=NONE] -->
+    <string name="ims_settings">"IMS ಸೆಟ್ಟಿಂಗ್‌ಗಳು"</string>
+
+	<!-- Call auto reject settings -->
+    <string name="auto_reject_toggle_title">"ಕರೆಗಳನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ತಿರಸ್ಕರಿಸಿ."</string>
+    <string name="auto_reject_toggle_summary">"ಡಿಡಿಎಸ್‌ನಲ್ಲಿ ಹೆಚ್ಚಿನ ಆದ್ಯತೆ ಮತ್ತು ಡೇಟಾ ಕರೆಗಳು ಇದ್ದಾಗ ಐಡಲ್ ಸಿಮ್ ಕಾರ್ಡ್‌ಗಳಲ್ಲಿನ ಕರೆಗಳನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ತಿರಸ್ಕರಿಸಿ"</string>
+</resources>
diff --git a/res/values-kn/strings.xml b/res/values-kn/strings.xml
index f03fd0d..d2fd35f 100644
--- a/res/values-kn/strings.xml
+++ b/res/values-kn/strings.xml
@@ -898,6 +898,11 @@
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"ರಿಫ್ರೆಶ್ ಮಾಡಿ"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"DNS ಪರಿಶೀಲನೆ ಟಾಗಲ್ ಮಾಡಿ"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"OEM-ನಿರ್ದಿಷ್ಟ ಮಾಹಿತಿ/ಸೆಟ್ಟಿಂಗ್‌ಗಳು"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"EN-DC ಲಭ್ಯವಿದೆ:"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"ನಿರ್ಬಂಧಿತ DCNR:"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"NR ಲಭ್ಯವಿದೆ:"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"NR ಸ್ಥಿತಿ:"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR ಫ್ರೀಕ್ವೆನ್ಸಿ:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"ರೇಡಿಯೋ ಬ್ಯಾಂಡ್ ಮೋಡ್ ಹೊಂದಿಸಿ"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"ಬ್ಯಾಂಡ್ ಪಟ್ಟಿಯನ್ನು ಲೋಡ್ ಮಾಡಲಾಗುತ್ತಿದೆ…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"ಹೊಂದಿಸಿ"</string>
diff --git a/res/values-ko/qtistrings.xml b/res/values-ko/qtistrings.xml
new file mode 100755
index 0000000..23f216b
--- /dev/null
+++ b/res/values-ko/qtistrings.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- IMS settings related strings -->
+    <!-- Title displayed IMS account settings in the sip settings category. [CHAR LIMIT=NONE] -->
+    <string name="ims_settings">"IMS 설정"</string>
+
+	<!-- Call auto reject settings -->
+    <string name="auto_reject_toggle_title">"자동으로 통화를 거부합니다."</string>
+    <string name="auto_reject_toggle_summary">"DDS에 높은 우선 순위 및 데이터 호출이있는 경우 유휴 SIM 카드의 호출을 자동으로 거부합니다."</string>
+</resources>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index ba69d3b..462af54 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -898,6 +898,11 @@
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"새로고침"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"DNS 확인 전환"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"OEM별 정보/설정"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"EN-DC 사용 가능:"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"DCNR 제한됨:"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"NR 사용 가능:"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"NR 상태:"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR 빈도:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"무선 주파수 대역 모드 설정"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"대역 목록 로드 중…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"설정"</string>
diff --git a/res/values-ky/qtistrings.xml b/res/values-ky/qtistrings.xml
new file mode 100755
index 0000000..2d532dd
--- /dev/null
+++ b/res/values-ky/qtistrings.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- IMS settings related strings -->
+    <!-- Title displayed IMS account settings in the sip settings category. [CHAR LIMIT=NONE] -->
+    <string name="ims_settings">"IMS орнотуулары"</string>
+
+	<!-- Call auto reject settings -->
+    <string name="auto_reject_toggle_title">"Чалууларды автоматтык түрдө четке кагуу."</string>
+    <string name="auto_reject_toggle_summary">"Ишенимдүү SIM карталардагы чалууларды автоматтык түрдө четке кагуу жана DDS боюнча артыкчылыктуу артыкчылыктар болгондо"</string>
+</resources>
diff --git a/res/values-ky/strings.xml b/res/values-ky/strings.xml
index 17fe829..1b69d27 100644
--- a/res/values-ky/strings.xml
+++ b/res/values-ky/strings.xml
@@ -404,9 +404,9 @@
     <string name="network_lte" msgid="7206879277095094280">"LTE (сунушталат)"</string>
     <string name="network_4G" msgid="6800527815504223913">"4G (сунушталат)"</string>
     <string name="network_global" msgid="3289646154407617631">"Дүйнө жүзү"</string>
-    <string name="cdma_system_select_title" msgid="614165233552656431">"Тутум тандоо"</string>
+    <string name="cdma_system_select_title" msgid="614165233552656431">"Системаны тандоо"</string>
     <string name="cdma_system_select_summary" msgid="3840420390242060407">"CDMA роуминг тартибин алмаштыруу"</string>
-    <string name="cdma_system_select_dialogtitle" msgid="5524639510676501802">"Тутум тандоо"</string>
+    <string name="cdma_system_select_dialogtitle" msgid="5524639510676501802">"Системаны тандоо"</string>
   <string-array name="cdma_system_select_choices">
     <item msgid="462340042928284921">"Башкы бет гана"</item>
     <item msgid="6058010046783562674">"Автоматтык"</item>
@@ -464,9 +464,9 @@
     <string name="delete_fdn_contact" msgid="7027405651994507077">"Туруктуу терүү номерин жок кылуу"</string>
     <string name="deleting_fdn_contact" msgid="6872320570844460428">"Туруктуу терүү номери жок кылынууда…"</string>
     <string name="fdn_contact_deleted" msgid="1680714996763848838">"Туруктуу терүү номери өчүрүлдү."</string>
-    <string name="pin2_invalid" msgid="2313954262684494442">"БНТ жаңыртылган жок, анткени туура эмес PIN-код киргизилди."</string>
-    <string name="fdn_invalid_number" msgid="9067189814657840439">"Уруксат берилген номер жаңыртылган жок, себеби жазылган номердин саны <xliff:g id="FDN_NUMBER_LIMIT_LENGTH">%d</xliff:g> ашпашы керек."</string>
-    <string name="pin2_or_fdn_invalid" msgid="7542639487955868181">"БНТ жаңыртылган жок. PIN2 туура эмес, же телефон номуру жараксыз."</string>
+    <string name="pin2_invalid" msgid="2313954262684494442">"БНТ жаңырган жок, анткени туура эмес PIN-код киргизилди."</string>
+    <string name="fdn_invalid_number" msgid="9067189814657840439">"Уруксат берилген номер жаңырган жок, себеби жазылган номердин саны <xliff:g id="FDN_NUMBER_LIMIT_LENGTH">%d</xliff:g> ашпашы керек."</string>
+    <string name="pin2_or_fdn_invalid" msgid="7542639487955868181">"БНТ жаңырган жок. PIN2 туура эмес, же телефон номуру жараксыз."</string>
     <string name="fdn_failed" msgid="216592346853420250">"БНТ иши кыйрады."</string>
     <string name="simContacts_emptyLoading" msgid="4989040293858675483">"SIM-картадан окулууда…"</string>
     <string name="simContacts_empty" msgid="1135632055473689521">"SIM картаңызда байланыштар жок."</string>
@@ -898,6 +898,11 @@
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"Жаңылоо"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"DNS текшерүүнү которуштуруу"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"OEM\'ге тиешелүү Маалымат/Жөндөөлөр"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"EN-DC жеткиликтүү:"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"DCNR чектелген:"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"NR жеткиликтүү:"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"NR абалы:"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR жыштыгы:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"Радио жыштыгынын режимин коюу"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Жыштык режиминин тизмеси жүктөлүүдө…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Жөндөө"</string>
diff --git a/res/values-lo/qtistrings.xml b/res/values-lo/qtistrings.xml
new file mode 100755
index 0000000..0d7f252
--- /dev/null
+++ b/res/values-lo/qtistrings.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- IMS settings related strings -->
+    <!-- Title displayed IMS account settings in the sip settings category. [CHAR LIMIT=NONE] -->
+    <string name="ims_settings">"ການຕັ້ງຄ່າ IMS"</string>
+
+	<!-- Call auto reject settings -->
+    <string name="auto_reject_toggle_title">"ປະຕິເສດການໂທໂດຍອັດຕະໂນມັດ."</string>
+    <string name="auto_reject_toggle_summary">"ປະຕິເສດການໂທໃນຊິມບໍ່ເຮັດວຽກໂດຍອັດຕະໂນມັດເມື່ອມີບູລິມະສິດສູງແລະຂໍ້ມູນການໂທໃນ DDS"</string>
+</resources>
diff --git a/res/values-lo/strings.xml b/res/values-lo/strings.xml
index 0534a5f..08947eb 100644
--- a/res/values-lo/strings.xml
+++ b/res/values-lo/strings.xml
@@ -898,6 +898,11 @@
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"ໂຫຼດຂໍ້ມູນໃໝ່"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"ເປີດ/ປິດ ການກວດ DNS"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"ຂໍ້ມູນ/ການຕັ້ງຄ່າສະເພາະ OEM"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"ມີ EN-DC:"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"ຈຳກັດ DCNR ໄວ້ແລ້ວ:"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"ມີ NR:"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"ສະຖານະ NR:"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"ຄວາມຖີ່ NR:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"ຕັ້ງໂໝດແຖບຄວາມຖີ່ວິທະຍຸ"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"ກຳລັງດາວໂຫລດລາຍຊື່ແຖບຄວາມຖີ່..."</string>
     <string name="band_mode_set" msgid="6657819412803771421">"ກຳນົດ"</string>
diff --git a/res/values-lt/qtistrings.xml b/res/values-lt/qtistrings.xml
new file mode 100755
index 0000000..68606b0
--- /dev/null
+++ b/res/values-lt/qtistrings.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- IMS settings related strings -->
+    <!-- Title displayed IMS account settings in the sip settings category. [CHAR LIMIT=NONE] -->
+    <string name="ims_settings">"Ρυθμίσεις IMS"</string>
+
+	<!-- Call auto reject settings -->
+    <string name="auto_reject_toggle_title">"Απόρριψη κλήσεων αυτόματα."</string>
+    <string name="auto_reject_toggle_summary">"Απορρίπτει αυτόματα κλήσεις σε αδρανείς κάρτες SIM όταν υπάρχουν υψηλές προτεραιότητες και κλήσεις δεδομένων σε DDS"</string>
+</resources>
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index bc170a8..4760728 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -307,9 +307,7 @@
     <string name="throttle_time_frame" msgid="1813452485948918791">"Duomenų naudojimo laikotarpis"</string>
     <string name="throttle_rate" msgid="7641913901133634905">"Duomenų perdavimo spartos politika"</string>
     <string name="throttle_help" msgid="2624535757028809735">"Sužinokite daugiau"</string>
-    <!-- String.format failed for translation -->
-    <!-- no translation found for throttle_status_subtext (1110276415078236687) -->
-    <skip />
+    <string name="throttle_status_subtext" msgid="1110276415078236687">"<xliff:g id="USED_0">%1$s</xliff:g> (<xliff:g id="USED_1">%2$d</xliff:g>٪) iš <xliff:g id="USED_2">%3$s</xliff:g> laikotarpio maksimumo\nKitas laikotarpis prasidės po <xliff:g id="USED_3">%4$d</xliff:g> dienų (<xliff:g id="USED_4">%5$s</xliff:g>)"</string>
     <string name="throttle_data_usage_subtext" msgid="3185429653996709840">"<xliff:g id="USED_0">%1$s</xliff:g> (<xliff:g id="USED_1">%2$d</xliff:g>٪) iš <xliff:g id="USED_2">%3$s</xliff:g> laikotarpio maksimumo"</string>
     <string name="throttle_data_rate_reduced_subtext" msgid="8369839346277847725">"Viršytas <xliff:g id="USED_0">%1$s</xliff:g> maksimumas\nDuomenų perdavimo sparta sumažinta iki <xliff:g id="USED_1">%2$d</xliff:g> Kb / sek."</string>
     <string name="throttle_time_frame_subtext" msgid="6462089615392402127">"Praėjo <xliff:g id="USED_0">%1$d</xliff:g>٪ ciklo\nKitas laikotarpis prasidės po<xliff:g id="USED_1">%2$d</xliff:g> dienų (<xliff:g id="USED_2">%3$s</xliff:g>)"</string>
@@ -906,6 +904,11 @@
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"Atnaujinti"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"Kaitalioti DNS tikrinimą"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"OEM būdinga informacija / nustatymai"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"EN-DC (pasiekiama):"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"DCNR (apribota):"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"NR (pasiekiama):"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"NR būsena:"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR dažnis:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"Nustatyti radijo dažnių režimą"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Įkeliamas dažnių sąrašas…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Nustatyti"</string>
diff --git a/res/values-lv/qtistrings.xml b/res/values-lv/qtistrings.xml
new file mode 100755
index 0000000..ec5e496
--- /dev/null
+++ b/res/values-lv/qtistrings.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- IMS settings related strings -->
+    <!-- Title displayed IMS account settings in the sip settings category. [CHAR LIMIT=NONE] -->
+    <string name="ims_settings">"IMS iestatījumi"</string>
+
+	<!-- Call auto reject settings -->
+    <string name="auto_reject_toggle_title">"Automātiski noraidīt zvanus."</string>
+    <string name="auto_reject_toggle_summary">"Automātiski noraidīt zvanus uz dīkstāves SIM kartēm, ja DDS ir augstas prioritātes un datu zvani"</string>
+</resources>
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index eea7b3a..0ba2739 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -522,7 +522,7 @@
     <string name="notification_voicemail_no_vm_number" msgid="3423686009815186750">"Balss pasta numurs nav zināms."</string>
     <string name="notification_network_selection_title" msgid="255595526707809121">"Nav pakalpojuma"</string>
     <string name="notification_network_selection_text" msgid="553288408722427659">"Atlasītais tīkls (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) nav pieejams"</string>
-    <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"Lai veiktu zvanu, ieslēdziet mobilo tīklu, izslēdziet lidojuma režīmu vai izslēdziet akumulatora jaudas taupīšanas režīmu."</string>
+    <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"Lai veiktu zvanu, ieslēdziet mobilo tīklu, izslēdziet lidojuma režīmu vai izslēdziet akumulatora enerģijas taupīšanas režīmu."</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"Lai veiktu zvanu, izslēdziet lidojuma režīmu."</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"Lai veiktu zvanu, izslēdziet lidojuma režīmu vai izveidojiet savienojumu ar bezvadu tīklu."</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Lai veiktu parastu zvanu, izejiet no ārkārtas atzvana režīma."</string>
@@ -901,6 +901,11 @@
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"Atsvaidzināt"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"Pārslēgt DNS pārbaudi"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"OEM raksturīga informācija/iestatījumi"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"EN-DC pieejamība:"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"DCNR ierobežojums:"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"NR pieejamība:"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"NR statuss:"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR biežums:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"Radio frekvenču joslu režīma iestatīšana"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Notiek joslu saraksta ielāde…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Iestatīt"</string>
diff --git a/res/values-mcc262-mnc02/strings.xml b/res/values-mcc262-mnc02/strings.xml
index 862af23..8e40146 100644
--- a/res/values-mcc262-mnc02/strings.xml
+++ b/res/values-mcc262-mnc02/strings.xml
@@ -22,4 +22,7 @@
     <string name="wifi_calling_settings_title">Wi-Fi calling</string>
     <!-- Do not translate. Status hint label for a call being made over a wifi network. [CHAR LIMIT=25] -->
     <string name="status_hint_label_wifi_call">Wi-Fi call</string>
+    <!-- Status hint label for an incoming call over a wifi network which has not been accepted yet.
+         [CHAR LIMIT=25] -->
+    <string name="status_hint_label_incoming_wifi_call">Wi-Fi call from</string>
 </resources>
diff --git a/res/values-mk/qtistrings.xml b/res/values-mk/qtistrings.xml
new file mode 100755
index 0000000..7c00aaf
--- /dev/null
+++ b/res/values-mk/qtistrings.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- IMS settings related strings -->
+    <!-- Title displayed IMS account settings in the sip settings category. [CHAR LIMIT=NONE] -->
+    <string name="ims_settings">"IMS поставки"</string>
+
+	<!-- Call auto reject settings -->
+    <string name="auto_reject_toggle_title">"Одбијте ги повиците автоматски."</string>
+    <string name="auto_reject_toggle_summary">"Автоматски одбивајте повици на неактивни СИМ-картички кога има повисок приоритет и податочни повици на DDS"</string>
+</resources>
diff --git a/res/values-mk/strings.xml b/res/values-mk/strings.xml
index 9f8c46a..2d3d2d2 100644
--- a/res/values-mk/strings.xml
+++ b/res/values-mk/strings.xml
@@ -168,7 +168,7 @@
     <string name="label_available" msgid="1316084116670821258">"Достапни мрежи"</string>
     <string name="load_networks_progress" msgid="4051433047717401683">"Се пребарува..."</string>
     <string name="empty_networks_list" msgid="9216418268008582342">"Не се пронајдени мрежи."</string>
-    <string name="network_query_error" msgid="3862515805115145124">"Не можеше да се најдат мрежи. Обидете се повторно."</string>
+    <string name="network_query_error" msgid="3862515805115145124">"Не може да се најдат мрежи. Обидете се повторно."</string>
     <string name="register_on_network" msgid="4194770527833960423">"Регистрирање на <xliff:g id="NETWORK">%s</xliff:g>..."</string>
     <string name="not_allowed" msgid="8541221928746104798">"Вашата SIM картичка не дозволува поврзување со оваа мрежа."</string>
     <string name="connect_later" msgid="1950138106010005425">"Не може да се поврзе со оваа мрежа во моментов. Обидете се повторно подоцна."</string>
@@ -186,7 +186,7 @@
     <string name="network_disconnected" msgid="8844141106841160825">"Исклучено"</string>
     <string name="network_connected" msgid="2760235679963580224">"Поврзано"</string>
     <string name="network_connecting" msgid="160901383582774987">"Се поврзува…"</string>
-    <string name="network_could_not_connect" msgid="6547460848093727998">"Не можеше да се поврзе"</string>
+    <string name="network_could_not_connect" msgid="6547460848093727998">"Не може да се поврзе"</string>
   <string-array name="preferred_network_mode_choices">
     <item msgid="4531933377509551889">"Претпочитан: GSM/WCDMA"</item>
     <item msgid="5120532750027435355">"Само GSM"</item>
@@ -309,9 +309,9 @@
     <string name="throttle_help" msgid="2624535757028809735">"Дознај повеќе"</string>
     <string name="throttle_status_subtext" msgid="1110276415078236687">"<xliff:g id="USED_0">%1$s</xliff:g> (<xliff:g id="USED_1">%2$d</xliff:g> ٪) од максимум <xliff:g id="USED_2">%3$s</xliff:g> за периодот\nСледниот период започнува за <xliff:g id="USED_3">%4$d</xliff:g> дена (<xliff:g id="USED_4">%5$s</xliff:g>)"</string>
     <string name="throttle_data_usage_subtext" msgid="3185429653996709840">"<xliff:g id="USED_0">%1$s</xliff:g> (<xliff:g id="USED_1">%2$d</xliff:g>٪) од <xliff:g id="USED_2">%3$s</xliff:g> максимален период"</string>
-    <string name="throttle_data_rate_reduced_subtext" msgid="8369839346277847725">"<xliff:g id="USED_0">%1$s</xliff:g> максимум е надминат\nСтапката на податоци е намалена на <xliff:g id="USED_1">%2$d</xliff:g> кб/с"</string>
+    <string name="throttle_data_rate_reduced_subtext" msgid="8369839346277847725">"<xliff:g id="USED_0">%1$s</xliff:g> максимум е надминат\nСтапката на податоци е намалена на <xliff:g id="USED_1">%2$d</xliff:g> Kb/s"</string>
     <string name="throttle_time_frame_subtext" msgid="6462089615392402127">"<xliff:g id="USED_0">%1$d</xliff:g>٪ од циклусот помина\nНаредниот период започнува за <xliff:g id="USED_1">%2$d</xliff:g> дена (<xliff:g id="USED_2">%3$s</xliff:g>)"</string>
-    <string name="throttle_rate_subtext" msgid="7221971817325779535">"Преносот на податоци се сведува на <xliff:g id="USED">%1$d</xliff:g> кб/с ако се надмине границата на потрошен интернет"</string>
+    <string name="throttle_rate_subtext" msgid="7221971817325779535">"Преносот на податоци се сведува на <xliff:g id="USED">%1$d</xliff:g> Kb/s ако се надмине границата на потрошен интернет"</string>
     <string name="throttle_help_subtext" msgid="2817114897095534807">"Повеќе информации за политиката на користање податоци на мобилната мрежа на вашиот оператор"</string>
     <string name="cell_broadcast_sms" msgid="4053449797289031063">"SMS за емитување од мобилен"</string>
     <string name="enable_disable_cell_bc_sms" msgid="4759958924031721350">"SMS за емитување од мобилен"</string>
@@ -612,7 +612,7 @@
     <string name="ota_listen" msgid="2772252405488894280">"Следете ги гласовните упатства додека не слушнете дека активацијата е завршена."</string>
     <string name="ota_speaker" msgid="1086766980329820528">"Звучник"</string>
     <string name="ota_progress" msgid="8837259285255700132">"Телефонот се програмира…"</string>
-    <string name="ota_failure" msgid="5674217489921481576">"Телефонот не можеше да се програмира"</string>
+    <string name="ota_failure" msgid="5674217489921481576">"Телефонот не може да се програмира"</string>
     <string name="ota_successful" msgid="1106825981548107774">"Вашиот телефон е сега активиран. Може да поминат и до 15 минути за услугата да започне."</string>
     <string name="ota_unsuccessful" msgid="8531037653803955754">"Вашиот телефон не се активираше. \nМожеби ќе треба да најде област со подобра покриеност (во близина на прозорец или надвор). \n\nОбидете се повторно или јавете се во служба за услуги на клиенти за повеќе опции."</string>
     <string name="ota_spc_failure" msgid="904092035241370080">"ВИШОК SPC ГРЕШКИ"</string>
@@ -711,54 +711,54 @@
     <string name="clh_callFailed_simError_txt" msgid="5128538525762326413">"Не може да се пристапи до SIM-картичката"</string>
     <string name="clh_incall_error_out_of_service_txt" msgid="2736010617446749869">"Мобилната мрежа не е достапна"</string>
     <string name="clh_callFailed_unassigned_number_txt" msgid="141967660286695682">"Проблем со телефонскиот број што се обидувате да го бирате. Код за грешка: 1."</string>
-    <string name="clh_callFailed_no_route_to_destination_txt" msgid="4805015149822352308">"Повикот не можеше да се заврши. Код за грешка: 3."</string>
-    <string name="clh_callFailed_channel_unacceptable_txt" msgid="4062754579408613021">"Повикот не можеше да се заврши. Код за грешка: 6."</string>
-    <string name="clh_callFailed_operator_determined_barring_txt" msgid="4202077821465974286">"Повикот не можеше да се заврши. Код за грешка: 8."</string>
-    <string name="clh_callFailed_normal_call_clearing_txt" msgid="5677987959062976462">"Повикот не можеше да се заврши. Код за грешка: 16."</string>
+    <string name="clh_callFailed_no_route_to_destination_txt" msgid="4805015149822352308">"Повикот не може да се заврши. Код за грешка: 3."</string>
+    <string name="clh_callFailed_channel_unacceptable_txt" msgid="4062754579408613021">"Повикот не може да се заврши. Код за грешка: 6."</string>
+    <string name="clh_callFailed_operator_determined_barring_txt" msgid="4202077821465974286">"Повикот не може да се заврши. Код за грешка: 8."</string>
+    <string name="clh_callFailed_normal_call_clearing_txt" msgid="5677987959062976462">"Повикот не може да се заврши. Код за грешка: 16."</string>
     <string name="clh_callFailed_user_busy_txt" msgid="8886432858568086854">"Корисникот е зафатен"</string>
     <string name="clh_callFailed_no_user_responding_txt" msgid="341100226919865128">"Корисникот не одговара"</string>
-    <string name="clh_callFailed_user_alerting_txt" msgid="896082976264427969">"Повикот не можеше да се заврши. Код за грешка: 19."</string>
+    <string name="clh_callFailed_user_alerting_txt" msgid="896082976264427969">"Повикот не може да се заврши. Код за грешка: 19."</string>
     <string name="clh_callFailed_call_rejected_txt" msgid="3439435671153341709">"Повикот е одбиен"</string>
     <string name="clh_callFailed_number_changed_txt" msgid="2868476949771441667">"Бројот е променет"</string>
-    <string name="clh_callFailed_pre_emption_txt" msgid="8887998866342162724">"Повикот не можеше да се заврши. Код за грешка: 25."</string>
-    <string name="clh_callFailed_non_selected_user_clearing_txt" msgid="4804529874810197550">"Повикот не можеше да се заврши. Код за грешка: 26."</string>
-    <string name="clh_callFailed_destination_out_of_order_txt" msgid="1130697076352728824">"Повикот не можеше да се заврши. Код за грешка: 27."</string>
+    <string name="clh_callFailed_pre_emption_txt" msgid="8887998866342162724">"Повикот не може да се заврши. Код за грешка: 25."</string>
+    <string name="clh_callFailed_non_selected_user_clearing_txt" msgid="4804529874810197550">"Повикот не може да се заврши. Код за грешка: 26."</string>
+    <string name="clh_callFailed_destination_out_of_order_txt" msgid="1130697076352728824">"Повикот не може да се заврши. Код за грешка: 27."</string>
     <string name="clh_callFailed_invalid_number_format_txt" msgid="3171016382987224989">"Неважечки формат на број (нецелосен број)"</string>
-    <string name="clh_callFailed_facility_rejected_txt" msgid="1054386430010898993">"Повикот не можеше да се заврши. Код за грешка: 29."</string>
-    <string name="clh_callFailed_response_to_STATUS_ENQUIRY_txt" msgid="2763172551412307536">"Повикот не можеше да се заврши. Код за грешка: 30."</string>
-    <string name="clh_callFailed_normal_unspecified_txt" msgid="978119938935737419">"Повикот не можеше да се заврши. Код за грешка: 31."</string>
-    <string name="clh_callFailed_no_circuit_available_txt" msgid="1519684050419134605">"Повикот не можеше да се заврши. Код за грешка: 34."</string>
-    <string name="clh_callFailed_network_out_of_order_txt" msgid="8689826504394592289">"Повикот не можеше да се заврши. Код за грешка: 38."</string>
-    <string name="clh_callFailed_temporary_failure_txt" msgid="5065091554509067874">"Повикот не можеше да се заврши. Код за грешка: 41."</string>
-    <string name="clh_callFailed_switching_equipment_congestion_txt" msgid="8681599376741988769">"Повикот не можеше да се заврши. Код за грешка: 42."</string>
-    <string name="clh_callFailed_access_information_discarded_txt" msgid="2476199425130545428">"Повикот не можеше да се заврши. Код за грешка: 43."</string>
-    <string name="clh_callFailed_requested_circuit_txt" msgid="7497497808928490219">"Повикот не можеше да се заврши. Код за грешка: 44."</string>
-    <string name="clh_callFailed_resources_unavailable_unspecified_txt" msgid="144010529672928445">"Повикот не можеше да се заврши. Код за грешка: 47."</string>
-    <string name="clh_callFailed_quality_of_service_unavailable_txt" msgid="4650329342288289290">"Повикот не можеше да се заврши. Код за грешка: 49."</string>
-    <string name="clh_callFailed_requested_facility_not_subscribed_txt" msgid="9107977008516882170">"Повикот не можеше да се заврши. Код за грешка: 50."</string>
-    <string name="clh_callFailed_incoming_calls_barred_within_the_CUG_txt" msgid="501037491908315591">"Повикот не можеше да се заврши. Код за грешка: 55."</string>
-    <string name="clh_callFailed_bearer_capability_not_authorized_txt" msgid="4344366517528362620">"Повикот не можеше да се заврши. Код за грешка: 57."</string>
-    <string name="clh_callFailed_bearer_capability_not_presently_available_txt" msgid="1436957294571545381">"Повикот не можеше да се заврши. Код за грешка: 58."</string>
-    <string name="clh_callFailed_service_or_option_not_available_unspecified_txt" msgid="2149878874722675428">"Повикот не можеше да се заврши. Код за грешка: 63."</string>
-    <string name="clh_callFailed_bearer_service_not_implemented_txt" msgid="1074983013965612410">"Повикот не можеше да се заврши. Код за грешка: 65."</string>
-    <string name="clh_callFailed_ACM_equal_to_or_greater_than_ACMmax_txt" msgid="7889034195264205333">"Повикот не можеше да се заврши. Код за грешка: 68."</string>
-    <string name="clh_callFailed_requested_facility_not_implemented_txt" msgid="7996646684699167978">"Повикот не можеше да се заврши. Код за грешка: 69."</string>
-    <string name="clh_callFailed_only_restricted_digital_information_bearer_capability_is_available_txt" msgid="2358958110447385682">"Повикот не можеше да се заврши. Код за грешка: 70."</string>
-    <string name="clh_callFailed_service_or_option_not_implemented_unspecified_txt" msgid="3046428509531159481">"Повикот не можеше да се заврши. Код за грешка: 79."</string>
-    <string name="clh_callFailed_invalid_transaction_identifier_value_txt" msgid="1727401871777396619">"Повикот не можеше да се заврши. Код за грешка: 81."</string>
-    <string name="clh_callFailed_user_not_member_of_CUG_txt" msgid="442282135105229307">"Повикот не можеше да се заврши. Код за грешка: 87."</string>
-    <string name="clh_callFailed_incompatible_destination_txt" msgid="5900394706344969020">"Повикот не можеше да се заврши. Код за грешка: 88."</string>
-    <string name="clh_callFailed_invalid_transit_network_selection_txt" msgid="6274621838349037741">"Повикот не можеше да се заврши. Код за грешка: 91."</string>
-    <string name="clh_callFailed_semantically_incorrect_message_txt" msgid="7000705190197981937">"Повикот не можеше да се заврши. Код за грешка: 95."</string>
-    <string name="clh_callFailed_invalid_mandatory_information_txt" msgid="3609204152671052123">"Повикот не можеше да се заврши. Код за грешка: 96."</string>
-    <string name="clh_callFailed_message_type_non_existent_or_not_implemented_txt" msgid="1552110431052032814">"Повикот не можеше да се заврши. Код за грешка: 97."</string>
-    <string name="clh_callFailed_message_type_not_compatible_with_protocol_state_txt" msgid="7717048934226300032">"Повикот не можеше да се заврши. Код за грешка: 98."</string>
-    <string name="clh_callFailed_information_element_non_existent_or_not_implemented_txt" msgid="8931396541061612169">"Повикот не можеше да се заврши. Код за грешка: 99."</string>
-    <string name="clh_callFailed_conditional_IE_error_txt" msgid="4630685477888727741">"Повикот не можеше да се заврши. Код за грешка: 100."</string>
-    <string name="clh_callFailed_message_not_compatible_with_protocol_state_txt" msgid="3014075977395922947">"Повикот не можеше да се заврши. Код за грешка: 101."</string>
-    <string name="clh_callFailed_recovery_on_timer_expiry_txt" msgid="5637581978978731672">"Повикот не можеше да се заврши. Код за грешка: 102."</string>
-    <string name="clh_callFailed_protocol_Error_unspecified_txt" msgid="9203320572562697755">"Повикот не можеше да се заврши. Код за грешка: 111."</string>
-    <string name="clh_callFailed_interworking_unspecified_txt" msgid="7969686413930847182">"Повикот не можеше да се заврши. Код за грешка: 127."</string>
+    <string name="clh_callFailed_facility_rejected_txt" msgid="1054386430010898993">"Повикот не може да се заврши. Код за грешка: 29."</string>
+    <string name="clh_callFailed_response_to_STATUS_ENQUIRY_txt" msgid="2763172551412307536">"Повикот не може да се заврши. Код за грешка: 30."</string>
+    <string name="clh_callFailed_normal_unspecified_txt" msgid="978119938935737419">"Повикот не може да се заврши. Код за грешка: 31."</string>
+    <string name="clh_callFailed_no_circuit_available_txt" msgid="1519684050419134605">"Повикот не може да се заврши. Код за грешка: 34."</string>
+    <string name="clh_callFailed_network_out_of_order_txt" msgid="8689826504394592289">"Повикот не може да се заврши. Код за грешка: 38."</string>
+    <string name="clh_callFailed_temporary_failure_txt" msgid="5065091554509067874">"Повикот не може да се заврши. Код за грешка: 41."</string>
+    <string name="clh_callFailed_switching_equipment_congestion_txt" msgid="8681599376741988769">"Повикот не може да се заврши. Код за грешка: 42."</string>
+    <string name="clh_callFailed_access_information_discarded_txt" msgid="2476199425130545428">"Повикот не може да се заврши. Код за грешка: 43."</string>
+    <string name="clh_callFailed_requested_circuit_txt" msgid="7497497808928490219">"Повикот не може да се заврши. Код за грешка: 44."</string>
+    <string name="clh_callFailed_resources_unavailable_unspecified_txt" msgid="144010529672928445">"Повикот не може да се заврши. Код за грешка: 47."</string>
+    <string name="clh_callFailed_quality_of_service_unavailable_txt" msgid="4650329342288289290">"Повикот не може да се заврши. Код за грешка: 49."</string>
+    <string name="clh_callFailed_requested_facility_not_subscribed_txt" msgid="9107977008516882170">"Повикот не може да се заврши. Код за грешка: 50."</string>
+    <string name="clh_callFailed_incoming_calls_barred_within_the_CUG_txt" msgid="501037491908315591">"Повикот не може да се заврши. Код за грешка: 55."</string>
+    <string name="clh_callFailed_bearer_capability_not_authorized_txt" msgid="4344366517528362620">"Повикот не може да се заврши. Код за грешка: 57."</string>
+    <string name="clh_callFailed_bearer_capability_not_presently_available_txt" msgid="1436957294571545381">"Повикот не може да се заврши. Код за грешка: 58."</string>
+    <string name="clh_callFailed_service_or_option_not_available_unspecified_txt" msgid="2149878874722675428">"Повикот не може да се заврши. Код за грешка: 63."</string>
+    <string name="clh_callFailed_bearer_service_not_implemented_txt" msgid="1074983013965612410">"Повикот не може да се заврши. Код за грешка: 65."</string>
+    <string name="clh_callFailed_ACM_equal_to_or_greater_than_ACMmax_txt" msgid="7889034195264205333">"Повикот не може да се заврши. Код за грешка: 68."</string>
+    <string name="clh_callFailed_requested_facility_not_implemented_txt" msgid="7996646684699167978">"Повикот не може да се заврши. Код за грешка: 69."</string>
+    <string name="clh_callFailed_only_restricted_digital_information_bearer_capability_is_available_txt" msgid="2358958110447385682">"Повикот не може да се заврши. Код за грешка: 70."</string>
+    <string name="clh_callFailed_service_or_option_not_implemented_unspecified_txt" msgid="3046428509531159481">"Повикот не може да се заврши. Код за грешка: 79."</string>
+    <string name="clh_callFailed_invalid_transaction_identifier_value_txt" msgid="1727401871777396619">"Повикот не може да се заврши. Код за грешка: 81."</string>
+    <string name="clh_callFailed_user_not_member_of_CUG_txt" msgid="442282135105229307">"Повикот не може да се заврши. Код за грешка: 87."</string>
+    <string name="clh_callFailed_incompatible_destination_txt" msgid="5900394706344969020">"Повикот не може да се заврши. Код за грешка: 88."</string>
+    <string name="clh_callFailed_invalid_transit_network_selection_txt" msgid="6274621838349037741">"Повикот не може да се заврши. Код за грешка: 91."</string>
+    <string name="clh_callFailed_semantically_incorrect_message_txt" msgid="7000705190197981937">"Повикот не може да се заврши. Код за грешка: 95."</string>
+    <string name="clh_callFailed_invalid_mandatory_information_txt" msgid="3609204152671052123">"Повикот не може да се заврши. Код за грешка: 96."</string>
+    <string name="clh_callFailed_message_type_non_existent_or_not_implemented_txt" msgid="1552110431052032814">"Повикот не може да се заврши. Код за грешка: 97."</string>
+    <string name="clh_callFailed_message_type_not_compatible_with_protocol_state_txt" msgid="7717048934226300032">"Повикот не може да се заврши. Код за грешка: 98."</string>
+    <string name="clh_callFailed_information_element_non_existent_or_not_implemented_txt" msgid="8931396541061612169">"Повикот не може да се заврши. Код за грешка: 99."</string>
+    <string name="clh_callFailed_conditional_IE_error_txt" msgid="4630685477888727741">"Повикот не може да се заврши. Код за грешка: 100."</string>
+    <string name="clh_callFailed_message_not_compatible_with_protocol_state_txt" msgid="3014075977395922947">"Повикот не може да се заврши. Код за грешка: 101."</string>
+    <string name="clh_callFailed_recovery_on_timer_expiry_txt" msgid="5637581978978731672">"Повикот не може да се заврши. Код за грешка: 102."</string>
+    <string name="clh_callFailed_protocol_Error_unspecified_txt" msgid="9203320572562697755">"Повикот не може да се заврши. Код за грешка: 111."</string>
+    <string name="clh_callFailed_interworking_unspecified_txt" msgid="7969686413930847182">"Повикот не може да се заврши. Код за грешка: 127."</string>
     <string name="labelCallBarring" msgid="4180377113052853173">"Забрана на повик"</string>
     <string name="sum_call_barring_enabled" msgid="5184331188926370824">"Вклучено"</string>
     <string name="sum_call_barring_disabled" msgid="5699448000600153096">"Исклучено"</string>
@@ -865,8 +865,8 @@
     <string name="radioInfo_cid" msgid="1423185536264406705">"CID"</string>
     <string name="radio_info_subid" msgid="6839966868621703203">"Тековен SUBID:"</string>
     <string name="radio_info_dds" msgid="1122593144425697126">"SUBID на стандардната SIM за мобилен интернет:"</string>
-    <string name="radio_info_dl_kbps" msgid="2382922659525318726">"Брзина на пренос при преземање (кбит/с):"</string>
-    <string name="radio_info_ul_kbps" msgid="2102225400904799036">"Брзина на пренос при прикачување (кбит/с):"</string>
+    <string name="radio_info_dl_kbps" msgid="2382922659525318726">"Брзина на пренос при преземање (kbps):"</string>
+    <string name="radio_info_ul_kbps" msgid="2102225400904799036">"Брзина на пренос при прикачување (kbps):"</string>
     <string name="radio_info_signal_location_label" msgid="6188435197086550049">"Информации за локација на мобилен (неподдржано):"</string>
     <string name="radio_info_phy_chan_config" msgid="1277949603275436081">"Конфигурација на физички канал на LTE:"</string>
     <string name="radio_info_cell_info_refresh_rate" msgid="670511448975997340">"Стапка на освежување на информациите за мобилниот:"</string>
@@ -898,6 +898,11 @@
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"Освежи"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"Префрли на DNS-проверка"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"Информации/Поставки карактеристични за ОЕМ"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"Достапно за EN-DC:"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"Ограничено на DCNR:"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"Достапно за NR:"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"Состојба на NR:"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"Фреквенција на NR:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"Поставете режим на појас на радио"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Се вчитува список на појаси…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Постави"</string>
diff --git a/res/values-ml/qtistrings.xml b/res/values-ml/qtistrings.xml
new file mode 100755
index 0000000..c31e606
--- /dev/null
+++ b/res/values-ml/qtistrings.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- IMS settings related strings -->
+    <!-- Title displayed IMS account settings in the sip settings category. [CHAR LIMIT=NONE] -->
+    <string name="ims_settings">"IMS ക്രമീകരണങ്ങൾ"</string>
+
+	<!-- Call auto reject settings -->
+    <string name="auto_reject_toggle_title">"കോളുകൾ യാന്ത്രികമായി നിരസിക്കുക."</string>
+    <string name="auto_reject_toggle_summary">"ഡി‌ഡി‌എസിൽ ഉയർന്ന മുൻ‌ഗണനയും ഡാറ്റ കോളുകളും ഉള്ളപ്പോൾ നിഷ്‌ക്രിയ സിം കാർഡുകളിലെ കോളുകൾ യാന്ത്രികമായി നിരസിക്കുക"</string>
+</resources>
diff --git a/res/values-ml/strings.xml b/res/values-ml/strings.xml
index f947ee5..8ab18ac 100644
--- a/res/values-ml/strings.xml
+++ b/res/values-ml/strings.xml
@@ -522,7 +522,7 @@
     <string name="notification_voicemail_no_vm_number" msgid="3423686009815186750">"വോയ്‌സ്‌മെയിൽ നമ്പർ അജ്ഞാതമാണ്"</string>
     <string name="notification_network_selection_title" msgid="255595526707809121">"സേവനമില്ല"</string>
     <string name="notification_network_selection_text" msgid="553288408722427659">"തിരഞ്ഞെടുത്ത നെറ്റ്‌വർക്ക് (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) ലഭ്യമല്ല"</string>
-    <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"ഒരു കോൾ വിളിക്കാൻ മൊബൈൽ നെറ്റ്‌വർക്ക് ഓണാക്കുകയോ ഫ്ലൈറ്റ് മോഡ് അല്ലെങ്കിൽ ബാറ്ററി സേവർ മോഡ് ഓഫാക്കുകയോ ചെയ്യുക."</string>
+    <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"ഒരു കോൾ വിളിക്കാൻ മൊബൈൽ നെറ്റ്‌വർക്ക് ഓണാക്കുകയോ ഫ്ലൈറ്റ് മോഡ് അല്ലെങ്കിൽ ബാറ്ററി ലാഭിക്കൽ മോഡ് ഓഫാക്കുകയോ ചെയ്യുക."</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"ഒരു കോൾ വിളിക്കാൻ വിമാന മോഡ് ഓഫാക്കുക."</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"ഒരു കോൾ വിളിക്കാൻ വിമാന മോഡ് ഓഫാക്കുക അല്ലെങ്കിൽ വയർലെസ്സ് നെറ്റ്‌വർക്കിലേക്ക് കണക്റ്റുചെയ്യുക."</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"അടിയന്തിരമല്ലാത്ത കോൾ ചെയ്യാൻ അടിയന്തിര കോൾബാക്ക് മോഡിൽ നിന്ന് പുറത്തുകടക്കുക."</string>
@@ -898,6 +898,11 @@
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"പുതുക്കിയെടുക്കുക"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"DNS പരിശോധന മാറ്റുക"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"OEM-നിർദ്ദിഷ്‌ട വിവരം/ക്രമീകരണം"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"EN-DC ലഭ്യം:"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"DCNR നിയന്ത്രിച്ചിരിക്കുന്നു:"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"NR ലഭ്യം:"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"NR നില:"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR ഫ്രീക്വൻസി:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"റേഡിയോ ബാൻഡ് മോഡ് സജ്ജീകരിക്കുക"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"ബാൻഡ് ലിസ്‌റ്റ് ലോഡ് ചെയ്യുന്നു…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"സജ്ജീകരിക്കുക"</string>
diff --git a/res/values-mn/qtistrings.xml b/res/values-mn/qtistrings.xml
new file mode 100755
index 0000000..d852450
--- /dev/null
+++ b/res/values-mn/qtistrings.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- IMS settings related strings -->
+    <!-- Title displayed IMS account settings in the sip settings category. [CHAR LIMIT=NONE] -->
+    <string name="ims_settings">"IMS тохиргоо"</string>
+
+	<!-- Call auto reject settings -->
+    <string name="auto_reject_toggle_title">"Дуудлагаас автоматаар татгалзах."</string>
+    <string name="auto_reject_toggle_summary">"DDS дээр өндөр ач холбогдол өгч, дата дуудлага хийх үед сул байгаа SIM карт дээрх дуудлагаас автоматаар татгалзах"</string>
+</resources>
diff --git a/res/values-mn/strings.xml b/res/values-mn/strings.xml
index fca82d8..da6741b 100644
--- a/res/values-mn/strings.xml
+++ b/res/values-mn/strings.xml
@@ -31,7 +31,7 @@
     <string name="ussdRunning" msgid="1163586813106772717">"USSD код ажиллаж байна…"</string>
     <string name="mmiCancelled" msgid="5339191899200678272">"MMI код цуцлагдсан"</string>
     <string name="cancel" msgid="8984206397635155197">"Цуцлах"</string>
-    <string name="enter_input" msgid="6193628663039958990">"USSD зурвасын үсгийн тоо <xliff:g id="MIN_LEN">%1$d</xliff:g> болон <xliff:g id="MAX_LEN">%2$d</xliff:g> хооронд байх шаардлагатай. Дахин оролдоно уу."</string>
+    <string name="enter_input" msgid="6193628663039958990">"USSD мессежийн үсгийн тоо <xliff:g id="MIN_LEN">%1$d</xliff:g> болон <xliff:g id="MAX_LEN">%2$d</xliff:g> хооронд байх шаардлагатай. Дахин оролдоно уу."</string>
     <string name="manageConferenceLabel" msgid="8415044818156353233">"Хурлын дуудлага удирдах"</string>
     <string name="ok" msgid="7818974223666140165">"OK"</string>
     <string name="audio_mode_speaker" msgid="243689733219312360">"Чанга яригч"</string>
@@ -95,7 +95,7 @@
     <string name="sum_loading_settings" msgid="434063780286688775">"Тохиргоог ачаалж байна…"</string>
     <string name="sum_hide_caller_id" msgid="131100328602371933">"Залгасан дуудлагуудад дугаарыг нууцална"</string>
     <string name="sum_show_caller_id" msgid="3571854755324664591">"Залгасан дуудлагуудад дугаарыг харуулна"</string>
-    <string name="sum_default_caller_id" msgid="1767070797135682959">"Гарах дуудлагуудад миний дугаарыг харуулахдаа операторын үндсэн тохиргоог ашиглах"</string>
+    <string name="sum_default_caller_id" msgid="1767070797135682959">"Гарах дуудлагуудад миний дугаарыг харуулахдаа операторын өгөгдмөл тохиргоог ашиглах"</string>
     <string name="labelCW" msgid="8449327023861428622">"Дуудлага хүлээлгэх"</string>
     <string name="sum_cw_enabled" msgid="3977308526187139996">"Дуудлагын дундуур өөр дуудлага ирвэл надад мэдэгдэх"</string>
     <string name="sum_cw_disabled" msgid="3658094589461768637">"Дуудлагын дундуур өөр дуудлага ирвэл надад мэдэгдэх"</string>
@@ -163,7 +163,7 @@
     <string name="vm_change_pin_error_mismatch" msgid="5364847280026257331">"Хуучин PIN таарахгүй байна."</string>
     <string name="vm_change_pin_error_invalid" msgid="5230002671175580674">"Шинэ PIN-д буруу тэмдэгт агуулагдаж байна."</string>
     <string name="vm_change_pin_error_system_error" msgid="9116483527909681791">"PIN-г өөрчлөх боломжгүй"</string>
-    <string name="vvm_unsupported_message_format" msgid="4206402558577739713">"Дэмжигдээгүй зурвасын төрөл, сонсохын тулд <xliff:g id="NUMBER">%s</xliff:g> руу залгана уу."</string>
+    <string name="vvm_unsupported_message_format" msgid="4206402558577739713">"Дэмжигдээгүй мессежийн төрөл, сонсохын тулд <xliff:g id="NUMBER">%s</xliff:g> руу залгана уу."</string>
     <string name="network_settings_title" msgid="7560807107123171541">"Мобайл сүлжээ"</string>
     <string name="label_available" msgid="1316084116670821258">"Боломжтой сүлжээнүүд"</string>
     <string name="load_networks_progress" msgid="4051433047717401683">"Хайж байна..."</string>
@@ -283,9 +283,9 @@
     <string name="roaming_warning" msgid="7855681468067171971">"Таны төлбөр өндөр гарах магадлалтайг анхааруулж байна."</string>
     <string name="roaming_check_price_warning" msgid="8212484083990570215">"Үнийг нь өөрийн сүлжээний нийлүүлэгчээс шалгана уу."</string>
     <string name="roaming_alert_title" msgid="5689615818220960940">"Дата роуминг үйлчилгээг идэвхжүүлэх үү?"</string>
-    <string name="limited_sim_function_notification_title" msgid="612715399099846281">"Хязгаарлагдмал СИМ-н функц"</string>
+    <string name="limited_sim_function_notification_title" msgid="612715399099846281">"Хязгаарлагдмал SIM-н функц"</string>
     <string name="limited_sim_function_with_phone_num_notification_message" msgid="5928988883403677610">"<xliff:g id="PHONE_NUMBER">%2$s</xliff:g>-г ашиглах явцад <xliff:g id="CARRIER_NAME">%1$s</xliff:g>-н дуудлага болон дата үйлчилгээг блоклож болзошгүй."</string>
-    <string name="limited_sim_function_notification_message" msgid="5338638075496721160">"Өөр СИМ ашиглах явцад <xliff:g id="CARRIER_NAME">%1$s</xliff:g>-н дуудлага болон дата үйлчилгээг хориглож болзошгүй."</string>
+    <string name="limited_sim_function_notification_message" msgid="5338638075496721160">"Өөр SIM ашиглах явцад <xliff:g id="CARRIER_NAME">%1$s</xliff:g>-н дуудлага болон дата үйлчилгээг хориглож болзошгүй."</string>
     <string name="data_usage_title" msgid="8438592133893837464">"Аппын дата ашиглалт"</string>
     <string name="data_usage_template" msgid="6287906680674061783">"<xliff:g id="ID_1">%1$s</xliff:g> мобайл дата ашигласан <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="advanced_options_title" msgid="9208195294513520934">"Нарийвчилсан"</string>
@@ -471,7 +471,7 @@
     <string name="simContacts_emptyLoading" msgid="4989040293858675483">"SIM картаас уншиж байна…"</string>
     <string name="simContacts_empty" msgid="1135632055473689521">"Таны SIM картанд харилцагчид байхгүй байна."</string>
     <string name="simContacts_title" msgid="2714029230160136647">"Оруулах харилцагчдыг сонгоно уу"</string>
-    <string name="simContacts_airplaneMode" msgid="4654884030631503808">"Сим картнаас дугаар импортлохын тулд онгоцны горимыг унтраа"</string>
+    <string name="simContacts_airplaneMode" msgid="4654884030631503808">"SIM картнаас дугаар импортлохын тулд онгоцны горимыг унтраа"</string>
     <string name="enable_pin" msgid="967674051730845376">"SIM PIN Идэвхжүүлэх/идэвхгүйжүүлэх"</string>
     <string name="change_pin" msgid="3657869530942905790">"SIM PIN өөрчлөх"</string>
     <string name="enter_pin_text" msgid="3182311451978663356">"SIM PIN:"</string>
@@ -531,7 +531,7 @@
     <string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"Мобайл сүлжээнд холбогдох боломжгүй байна. Дуудлага хийхийн тулд утасгүй интернетэд холбогдоно уу."</string>
     <string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"Дуудлага хийхийн тулд хүчин төгөлдөр дугаар оруулна уу."</string>
     <string name="incall_error_call_failed" msgid="393508653582682539">"Дуудлага амжилтгүй болсон."</string>
-    <string name="incall_error_cannot_add_call" msgid="5425764862628655443">"Дуудлагыг энэ удаад нэмэх боломжгүй. Та зурвас илгээн холбоо тогтоохыг оролдох боломжтой."</string>
+    <string name="incall_error_cannot_add_call" msgid="5425764862628655443">"Дуудлагыг энэ удаад нэмэх боломжгүй. Та мессеж илгээн холбоо тогтоохыг оролдох боломжтой."</string>
     <string name="incall_error_supp_service_unknown" msgid="8751177117194592623">"Үйлчилгээг дэмждэггүй байна"</string>
     <string name="incall_error_supp_service_switch" msgid="5272822448189448479">"Дуудлагыг солих боломжгүй байна."</string>
     <string name="incall_error_supp_service_resume" msgid="1276861499306817035">"Дуудлагыг үргэлжлүүлэх боломжгүй."</string>
@@ -582,8 +582,8 @@
     <string name="hac_mode_title" msgid="4127986689621125468">"Сонсголын төхөөрөмж"</string>
     <string name="hac_mode_summary" msgid="7774989500136009881">"Сонсголын төхөөрөмж тааруулагчийг асаана уу"</string>
     <string name="rtt_mode_title" msgid="3075948111362818043">"Шууд мессежлэх (RTT) дуудлага"</string>
-    <string name="rtt_mode_summary" msgid="8631541375609989562">"Дуудлагын дотор зурвас бичихийг зөвшөөрөх"</string>
-    <string name="rtt_mode_more_information" msgid="587500128658756318">"RTT нь дүлий, хатуу чихтэй, хэл ярианы хөгжлийн бэрхшээлтэй, эсвэл хэн нэгний тусламжтай ярьдаг дуудлага хийгчдэд тусладаг.&lt;br&gt; &lt;a href=<xliff:g id="URL">http://support.google.com/mobile?p=telephony_rtt</xliff:g>&gt;Дэлгэрэнгүй үзэх&lt;/a&gt;\n       &lt;br&gt;&lt;br&gt; - RTT дуудлага нь зурвасын сийрүүлэг хэлбэрээр хадгалагдана\n       &lt;br&gt; - RTT нь видео дуудлага хийхэд боломжгүй"</string>
+    <string name="rtt_mode_summary" msgid="8631541375609989562">"Дуудлагын дотор мессеж бичихийг зөвшөөрөх"</string>
+    <string name="rtt_mode_more_information" msgid="587500128658756318">"RTT нь дүлий, хатуу чихтэй, хэл ярианы хөгжлийн бэрхшээлтэй, эсвэл хэн нэгний тусламжтай ярьдаг дуудлага хийгчдэд тусладаг.&lt;br&gt; &lt;a href=<xliff:g id="URL">http://support.google.com/mobile?p=telephony_rtt</xliff:g>&gt;Дэлгэрэнгүй үзэх&lt;/a&gt;\n       &lt;br&gt;&lt;br&gt; - RTT дуудлага нь мессежийн сийрүүлэг хэлбэрээр хадгалагдана\n       &lt;br&gt; - RTT нь видео дуудлага хийхэд боломжгүй"</string>
     <string name="no_rtt_when_roaming" msgid="5268008247378355389">"Санамж: RTT (Тухайн агшины текст) роуминг үйлчилгээний үед боломжгүй байна"</string>
   <string-array name="tty_mode_entries">
     <item msgid="3238070884803849303">"TTY Унтраасан"</item>
@@ -597,14 +597,14 @@
     <item msgid="2271798469250155310">"Энгийн"</item>
     <item msgid="6044210222666533564">"Урт"</item>
   </string-array>
-    <string name="network_info_message" msgid="7599413947016532355">"Сүлжээний зурвас"</string>
-    <string name="network_error_message" msgid="4271579424089326618">"Алдаатай зурвас"</string>
+    <string name="network_info_message" msgid="7599413947016532355">"Сүлжээний мессеж"</string>
+    <string name="network_error_message" msgid="4271579424089326618">"Алдаатай мессеж"</string>
     <string name="ota_title_activate" msgid="4049645324841263423">"Утсаа идэвхжүүлнэ үү"</string>
     <string name="ota_touch_activate" msgid="838764494319694754">"Таны утасны үйлчилгээ идэвхжүүлэхийн тулд тусгай дуудлага хийх шаардлагатай. \n\n“Идэвхжүүлэх” гэснийг дарсны дараа өгч байгаа зааврыг сонсон утсаа идэвхжүүлнэ үү."</string>
     <string name="ota_hfa_activation_title" msgid="3300556778212729671">"Идэвхжүүлж байна..."</string>
     <string name="ota_hfa_activation_dialog_message" msgid="7921718445773342996">"Утас таны мобайл дата үйлчилгээг идэвхжүүлж байна.\n\nҮүнд 5 хүртэл минут орж болно."</string>
     <string name="ota_skip_activation_dialog_title" msgid="7666611236789203797">"Идэвхжүүлэхийг алгасах уу?"</string>
-    <string name="ota_skip_activation_dialog_message" msgid="6691722887019708713">"Хэрэв та идэвхжүүлэхийг алгасвал дуудлага хийх буюу мобайль дата сүлжээнд холбогдох (хэдийгээр Wi-Fi сүлжээнд холбогдож болох ч) боломжгүй болно. Таныг утсаа идэвхжүүлэх хүртэл утсаа асаах бүрт идэвхжүүлэхийг хүсэх болно."</string>
+    <string name="ota_skip_activation_dialog_message" msgid="6691722887019708713">"Хэрэв та идэвхжүүлэхийг алгасвал дуудлага хийх буюу мобайль дата сүлжээнд холбогдох (хэдийгээр Wi-Fi сүлжээнд холбогдож болох ч) боломжгүй болно. Таныг утсаа идэвхжүүлэх хүртэл утсаа асаах бүрд идэвхжүүлэхийг хүсэх болно."</string>
     <string name="ota_skip_activation_dialog_skip_label" msgid="5908029466817825633">"Алгасах"</string>
     <string name="ota_activate" msgid="7939695753665438357">"Идэвхжүүлэх"</string>
     <string name="ota_title_activate_success" msgid="1272135024761004889">"Утсыг идэвхжүүллээ."</string>
@@ -671,7 +671,7 @@
     <string name="status_hint_label_incoming_wifi_call" msgid="2606052595898044071">"Wi-Fi дуудлага"</string>
     <string name="status_hint_label_wifi_call" msgid="942993035689809853">"Wi-Fi дуудлага"</string>
     <string name="emergency_action_launch_hint" msgid="2762016865340891314">"Нээхийн тулд дахин дарна уу"</string>
-    <string name="message_decode_error" msgid="1061856591500290887">"Зурвасын кодыг тайлах явцад алдаа гарсан."</string>
+    <string name="message_decode_error" msgid="1061856591500290887">"Мессежийн кодыг тайлах явцад алдаа гарсан."</string>
     <string name="callFailed_cdma_activation" msgid="5392057031552253550">"SIM карт таны үйлчилгээг идэвхжүүлж, утасны роаминг багтаамжийг шинэчиллээ."</string>
     <string name="callFailed_cdma_call_limit" msgid="1074219746093031412">"Хэт олон идэвхтэй дуудлага байна. Шинэ дуудлага хийхийн өмнө одоогийн дуудлагуудыг таслах буюу нэгтгэнэ үү."</string>
     <string name="callFailed_imei_not_accepted" msgid="7257903653685147251">"Холбох боломжгүй, хүчинтэй SIM карт оруулна уу."</string>
@@ -866,7 +866,7 @@
     <string name="radio_info_subid" msgid="6839966868621703203">"Одоогийн subId:"</string>
     <string name="radio_info_dds" msgid="1122593144425697126">"Өгөгдмөл дата SIM-н SubId:"</string>
     <string name="radio_info_dl_kbps" msgid="2382922659525318726">"DLзурвасын өргөн (kbps):"</string>
-    <string name="radio_info_ul_kbps" msgid="2102225400904799036">"UL Зурвасын өргөн (kbps):"</string>
+    <string name="radio_info_ul_kbps" msgid="2102225400904799036">"UL Мессежийн өргөн (kbps):"</string>
     <string name="radio_info_signal_location_label" msgid="6188435197086550049">"Үүрэн байршлын мэдээлэл (цуцалсан):"</string>
     <string name="radio_info_phy_chan_config" msgid="1277949603275436081">"LTE Сувгийн бодит тохиргоо:"</string>
     <string name="radio_info_cell_info_refresh_rate" msgid="670511448975997340">"Үүрэн мэдээлэл сэргээх тариф:"</string>
@@ -882,9 +882,9 @@
     <string name="radio_info_signal_strength_label" msgid="5545444702102543260">"Дохионы хүч:"</string>
     <string name="radio_info_call_status_label" msgid="7693575431923095487">"Дуут дуудлагын төлөв:"</string>
     <string name="radio_info_ppp_sent_label" msgid="6542208429356199695">"Дата илгээсэн:"</string>
-    <string name="radio_info_message_waiting_label" msgid="1886549432566952078">"Зурвасыг хүлээж байна:"</string>
+    <string name="radio_info_message_waiting_label" msgid="1886549432566952078">"Мессежийг хүлээж байна:"</string>
     <string name="radio_info_phone_number_label" msgid="2533852539562512203">"Утасны дугаар:"</string>
-    <string name="radio_info_band_mode_label" msgid="23480556225515290">"Радио зурвасыг сонгох"</string>
+    <string name="radio_info_band_mode_label" msgid="23480556225515290">"Радио мессежийг сонгох"</string>
     <string name="radio_info_voice_network_type_label" msgid="2395347336419593265">"Дуут сүлжээний төрөл:"</string>
     <string name="radio_info_data_network_type_label" msgid="8886597029237501929">"Дата сүлжээний төрөл:"</string>
     <string name="phone_index_label" msgid="6222406512768964268">"Утасны индекс сонгох"</string>
@@ -896,10 +896,15 @@
     <string name="radio_info_smsc_label" msgid="3749927072726033763">"SMSC:"</string>
     <string name="radio_info_smsc_update_label" msgid="5141996256097115753">"Шинэчлэх"</string>
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"Сэргээх"</string>
-    <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"DNS шалгалтыг унтраах/асаах"</string>
+    <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"DNS шалгалтыг асаах/унтраах"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"OEM-тодорхой Мэдээлэл/Тохиргоо"</string>
-    <string name="band_mode_title" msgid="7988822920724576842">"Радио зурвасын горимыг тохируулах"</string>
-    <string name="band_mode_loading" msgid="795923726636735967">"Зурвасын жагсаалтыг ачаалж байна…"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"EN-DC боломжтой:"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"DCNR хязгаарласан:"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"NR боломжтой:"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"NR төлөв:"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR давтамж:"</string>
+    <string name="band_mode_title" msgid="7988822920724576842">"Радио мессежийн горимыг тохируулах"</string>
+    <string name="band_mode_loading" msgid="795923726636735967">"Мессежийн жагсаалтыг ачаалж байна…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Тохируулах"</string>
     <string name="band_mode_failed" msgid="1707488541847192924">"Амжилтгүй"</string>
     <string name="band_mode_succeeded" msgid="2230018000534761063">"Амжилттай"</string>
diff --git a/res/values-mr/qtistrings.xml b/res/values-mr/qtistrings.xml
new file mode 100755
index 0000000..b3ab71b
--- /dev/null
+++ b/res/values-mr/qtistrings.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- IMS settings related strings -->
+    <!-- Title displayed IMS account settings in the sip settings category. [CHAR LIMIT=NONE] -->
+    <string name="ims_settings">"आयएमएस सेटिंग्ज"</string>
+
+	<!-- Call auto reject settings -->
+    <string name="auto_reject_toggle_title">"स्वयंचलितपणे कॉल नाकारा."</string>
+    <string name="auto_reject_toggle_summary">"जेव्हा डीडीएस वर उच्च प्राधान्य आणि डेटा कॉल असतात तेव्हा निष्क्रिय सिम कार्डवरील कॉल स्वयंचलितपणे नाकारा"</string>
+</resources>
diff --git a/res/values-mr/strings.xml b/res/values-mr/strings.xml
index 8cb48c4..4f5476f 100644
--- a/res/values-mr/strings.xml
+++ b/res/values-mr/strings.xml
@@ -16,7 +16,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="phoneAppLabel" product="tablet" msgid="1916019789885839910">"मोबाईल डेटा"</string>
+    <string name="phoneAppLabel" product="tablet" msgid="1916019789885839910">"मोबाइल डेटा"</string>
     <string name="phoneAppLabel" product="default" msgid="130465039375347763">"फोन सेवा"</string>
     <string name="emergencyDialerIconLabel" msgid="8668005772339436680">"आणीबाणी डायलर"</string>
     <string name="phoneIconLabel" msgid="3015941229249651419">"फोन"</string>
@@ -27,12 +27,12 @@
     <string name="onHold" msgid="6132725550015899006">"होल्ड वर"</string>
     <string name="carrier_mmi_msg_title" msgid="6050165242447507034">"<xliff:g id="MMICARRIER">%s</xliff:g> मेसेज"</string>
     <string name="default_carrier_mmi_msg_title" msgid="7754317179938537213">"वाहक मेसेज"</string>
-    <string name="mmiStarted" msgid="9212975136944568623">"MMI कोड प्रारंभ केला"</string>
+    <string name="mmiStarted" msgid="9212975136944568623">"MMI कोड सुरू केला"</string>
     <string name="ussdRunning" msgid="1163586813106772717">"USSD कोड सुरू…"</string>
     <string name="mmiCancelled" msgid="5339191899200678272">"MMI कोड रद्द केला"</string>
     <string name="cancel" msgid="8984206397635155197">"रद्द करा"</string>
     <string name="enter_input" msgid="6193628663039958990">"USSD मेसेज <xliff:g id="MIN_LEN">%1$d</xliff:g> आणि <xliff:g id="MAX_LEN">%2$d</xliff:g> वर्णांमधील असणे आवश्‍यक आहे. कृपया पुन्‍हा प्रयत्‍न करा."</string>
-    <string name="manageConferenceLabel" msgid="8415044818156353233">"कॉन्फरन्स कॉल व्यवस्थापित करा"</string>
+    <string name="manageConferenceLabel" msgid="8415044818156353233">"कॉंफरन्स कॉल व्यवस्थापित करा"</string>
     <string name="ok" msgid="7818974223666140165">"ठीक"</string>
     <string name="audio_mode_speaker" msgid="243689733219312360">"स्पीकर"</string>
     <string name="audio_mode_earpiece" msgid="2823700267171134282">"हँडसेट इअरपीस"</string>
@@ -55,7 +55,7 @@
     <string name="requesting_unlock" msgid="930512210309437741">"नेटवर्क अनलॉकची विनंती करत आहे..."</string>
     <string name="unlock_failed" msgid="7103543844840661366">"नेटवर्क अनलॉक विनंती अयशस्वी."</string>
     <string name="unlock_success" msgid="32681089371067565">"नेटवर्क अनलॉक यशस्वी."</string>
-    <string name="mobile_network_settings_not_available" msgid="8678168497517090039">"या वापरकर्त्यासाठी मोबाईल नेटवर्क सेटिंग्ज उपलब्ध नाहीत"</string>
+    <string name="mobile_network_settings_not_available" msgid="8678168497517090039">"या वापरकर्त्यासाठी मोबाइल नेटवर्क सेटिंग्ज उपलब्ध नाहीत"</string>
     <string name="labelGSMMore" msgid="7354182269461281543">"GSM कॉल सेटिंग्ज"</string>
     <string name="labelGsmMore_with_label" msgid="3206015314393246224">"GSM कॉल सेटिंग्ज (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCDMAMore" msgid="7937441382611224632">"CDMA कॉल सेटिंग्ज"</string>
@@ -104,23 +104,23 @@
     <string name="labelCF" msgid="3578719437928476078">"कॉल फॉरवर्डिंग"</string>
     <string name="labelCFU" msgid="8870170873036279706">"नेहमी फॉरवर्ड करा"</string>
     <string name="messageCFU" msgid="1361806450979589744">"नेहमी हा नंबर वापरा"</string>
-    <string name="sum_cfu_enabled_indicator" msgid="9030139213402432776">"सर्व कॉल अग्रेषित करत आहे"</string>
+    <string name="sum_cfu_enabled_indicator" msgid="9030139213402432776">"सर्व कॉल फॉरवर्ड करत आहे"</string>
     <string name="sum_cfu_enabled" msgid="5806923046528144526">"सर्व कॉल <xliff:g id="PHONENUMBER">{0}</xliff:g> वर फॉरवर्ड करत आहे"</string>
     <string name="sum_cfu_enabled_no_number" msgid="7287752761743377930">"नंबर अनुपलब्‍ध आहे"</string>
     <string name="sum_cfu_disabled" msgid="5010617134210809853">"बंद"</string>
     <string name="labelCFB" msgid="615265213360512768">"व्यस्त असताना"</string>
     <string name="messageCFB" msgid="1958017270393563388">"नंबर व्‍यस्‍त असताना"</string>
-    <string name="sum_cfb_enabled" msgid="332037613072049492">"<xliff:g id="PHONENUMBER">{0}</xliff:g> वर अग्रेषित करत आहे"</string>
+    <string name="sum_cfb_enabled" msgid="332037613072049492">"<xliff:g id="PHONENUMBER">{0}</xliff:g> वर फॉरवर्ड करत आहे"</string>
     <string name="sum_cfb_disabled" msgid="3589913334164866035">"बंद"</string>
     <string name="disable_cfb_forbidden" msgid="4831494744351633961">"तुमचा फोन व्‍यस्‍त असताना तुमचा ऑपरेटर कॉल अग्रेषण करणे अक्षम करण्‍यास समर्थन करीत नाही."</string>
     <string name="labelCFNRy" msgid="3403533792248457946">"उत्तर न दिल्यास"</string>
     <string name="messageCFNRy" msgid="7644434155765359009">"नंबर अनुत्तरित असताना"</string>
-    <string name="sum_cfnry_enabled" msgid="3000500837493854799">"<xliff:g id="PHONENUMBER">{0}</xliff:g> वर अग्रेषित करत आहे"</string>
+    <string name="sum_cfnry_enabled" msgid="3000500837493854799">"<xliff:g id="PHONENUMBER">{0}</xliff:g> वर फॉरवर्ड करत आहे"</string>
     <string name="sum_cfnry_disabled" msgid="1990563512406017880">"बंद"</string>
     <string name="disable_cfnry_forbidden" msgid="3174731413216550689">"तुमचा फोन उत्तर देत नसताना तुमचा ऑपरेटर कॉल अग्रेषण करणे अक्षम करण्‍यास समर्थन करीत नाही."</string>
     <string name="labelCFNRc" msgid="4163399350778066013">"आउट ऑफ रीच असताना"</string>
     <string name="messageCFNRc" msgid="6980340731313007250">"नंबर पोहचण्‍यायोग्‍य नसताना"</string>
-    <string name="sum_cfnrc_enabled" msgid="1799069234006073477">"<xliff:g id="PHONENUMBER">{0}</xliff:g> वर अग्रेषित करत आहे"</string>
+    <string name="sum_cfnrc_enabled" msgid="1799069234006073477">"<xliff:g id="PHONENUMBER">{0}</xliff:g> वर फॉरवर्ड करत आहे"</string>
     <string name="sum_cfnrc_disabled" msgid="739289696796917683">"बंद"</string>
     <string name="disable_cfnrc_forbidden" msgid="775348748084726890">"तुमचा फोन पोहचण्‍यायोग्‍य नसताना तुमचा वाहक कॉल अग्रेषण करणे अक्षम करण्‍यास समर्थन करीत नाही."</string>
     <string name="updating_title" msgid="6130548922615719689">"कॉल सेटिंग्ज"</string>
@@ -149,7 +149,7 @@
   </string-array>
     <string name="vm_changed" msgid="4739599044379692505">"व्हॉइसमेल नंबर बदलला."</string>
     <string name="vm_change_failed" msgid="7877733929455763566">"व्हॉइसमेल नंबर बदलू शकले नाही.\nही समस्‍या  कायम राहिल्‍यास आपल्‍या वाहकाशी संपर्क साधा."</string>
-    <string name="fw_change_failed" msgid="9179241823460192148">"अग्रेषित करण्‍याचा नंबर बदलू शकलो नाही.\n ही समस्‍या कायम राहिल्‍यास आपल्‍या वाहकाशी संपर्क साधा."</string>
+    <string name="fw_change_failed" msgid="9179241823460192148">"फॉरवर्ड करण्‍याचा नंबर बदलू शकलो नाही.\n ही समस्‍या कायम राहिल्‍यास आपल्‍या वाहकाशी संपर्क साधा."</string>
     <string name="fw_get_in_vm_failed" msgid="2432678237218183844">"वर्तमान अग्रेषण नंबर सेटिंग्‍ज पुनर्प्राप्त करू शकलो नाही आणि सेव्ह करू शकलो नाही.\nतरीही नवीन प्रदात्‍यावर स्‍विच करायचे?"</string>
     <string name="no_change" msgid="3737264882821031892">"कोणतेही बदल केले नाहीत."</string>
     <string name="sum_voicemail_choose_provider" msgid="6750824719081403773">"व्हॉइसमेल सेवा निवडा"</string>
@@ -307,10 +307,10 @@
     <string name="throttle_time_frame" msgid="1813452485948918791">"डेटा वापर कालावधी"</string>
     <string name="throttle_rate" msgid="7641913901133634905">"डेटा रेट धोरण"</string>
     <string name="throttle_help" msgid="2624535757028809735">"अधिक जाणून घ्या"</string>
-    <string name="throttle_status_subtext" msgid="1110276415078236687">"कमाल कालावधी <xliff:g id="USED_2">%3$s</xliff:g> पैकी <xliff:g id="USED_0">%1$s</xliff:g> (<xliff:g id="USED_1">%2$d</xliff:g>٪) \nपुढील  कालावधी <xliff:g id="USED_3">%4$d</xliff:g> दिवसात (<xliff:g id="USED_4">%5$s</xliff:g>) प्रारंभ होतो"</string>
+    <string name="throttle_status_subtext" msgid="1110276415078236687">"कमाल कालावधी <xliff:g id="USED_2">%3$s</xliff:g> पैकी <xliff:g id="USED_0">%1$s</xliff:g> (<xliff:g id="USED_1">%2$d</xliff:g>٪) \nपुढील  कालावधी <xliff:g id="USED_3">%4$d</xliff:g> दिवसात (<xliff:g id="USED_4">%5$s</xliff:g>) सुरू होतो"</string>
     <string name="throttle_data_usage_subtext" msgid="3185429653996709840">"कमाल कालावधी <xliff:g id="USED_2">%3$s</xliff:g> पैकी <xliff:g id="USED_0">%1$s</xliff:g> (<xliff:g id="USED_1">%2$d</xliff:g>٪)"</string>
     <string name="throttle_data_rate_reduced_subtext" msgid="8369839346277847725">"<xliff:g id="USED_0">%1$s</xliff:g> कमाल ओलांडले\nडेटा रेट <xliff:g id="USED_1">%2$d</xliff:g> Kb/s इतका कमी झाला"</string>
-    <string name="throttle_time_frame_subtext" msgid="6462089615392402127">"कालचक्राचा <xliff:g id="USED_0">%1$d</xliff:g>٪ काळ लोटला\nपुढील कालावधी <xliff:g id="USED_1">%2$d</xliff:g> दिवसांमध्‍ये (<xliff:g id="USED_2">%3$s</xliff:g>) प्रारंभ होतो"</string>
+    <string name="throttle_time_frame_subtext" msgid="6462089615392402127">"कालचक्राचा <xliff:g id="USED_0">%1$d</xliff:g>٪ काळ लोटला\nपुढील कालावधी <xliff:g id="USED_1">%2$d</xliff:g> दिवसांमध्‍ये (<xliff:g id="USED_2">%3$s</xliff:g>) सुरू होतो"</string>
     <string name="throttle_rate_subtext" msgid="7221971817325779535">"डेटा वापर मर्यादा ओलांडल्‍यास डेटा रेट <xliff:g id="USED">%1$d</xliff:g> Kb/s इतका कमी केला"</string>
     <string name="throttle_help_subtext" msgid="2817114897095534807">"आपल्‍या वाहकाच्‍या मोबाइल नेटवर्क डेटा वापर धोरणाविषयी अधिक माहिती"</string>
     <string name="cell_broadcast_sms" msgid="4053449797289031063">"सेल प्रसारण SMS"</string>
@@ -510,7 +510,7 @@
     <string name="voicemail_settings_number_label" msgid="1265118640154688162">"व्हॉइसमेल नंबर"</string>
     <string name="card_title_dialing" msgid="8742182654254431781">"डायल करत आहे"</string>
     <string name="card_title_redialing" msgid="18130232613559964">"रीडायल करत आहे"</string>
-    <string name="card_title_conf_call" msgid="901197309274457427">"कॉन्फरन्स कॉल"</string>
+    <string name="card_title_conf_call" msgid="901197309274457427">"कॉंफरन्स कॉल"</string>
     <string name="card_title_incoming_call" msgid="881424648458792430">"येणारे कॉल"</string>
     <string name="card_title_call_ended" msgid="650223980095026340">"कॉल संपला"</string>
     <string name="card_title_on_hold" msgid="9028319436626975207">"होल्ड वर"</string>
@@ -565,7 +565,7 @@
     <string name="onscreenHoldText" msgid="4025348842151665191">"होल्ड करा"</string>
     <string name="onscreenEndCallText" msgid="6138725377654842757">"शेवट"</string>
     <string name="onscreenShowDialpadText" msgid="658465753816164079">"डायलपॅड"</string>
-    <string name="onscreenMuteText" msgid="5470306116733843621">"नि:शब्द करा"</string>
+    <string name="onscreenMuteText" msgid="5470306116733843621">"म्यूट करा"</string>
     <string name="onscreenAddCallText" msgid="9075675082903611677">"कॉल जोडा"</string>
     <string name="onscreenMergeCallsText" msgid="3692389519611225407">"कॉल विलीन करा"</string>
     <string name="onscreenSwapCallsText" msgid="2682542150803377991">"अदलाबदल करा"</string>
@@ -868,7 +868,7 @@
     <string name="radio_info_dl_kbps" msgid="2382922659525318726">"DL बँडविड्थ (kbps):"</string>
     <string name="radio_info_ul_kbps" msgid="2102225400904799036">"UL बँडविड्थ (kbps):"</string>
     <string name="radio_info_signal_location_label" msgid="6188435197086550049">"सेल स्थान माहिती (कालबाह्य झाली):"</string>
-    <string name="radio_info_phy_chan_config" msgid="1277949603275436081">"LTE फिजिकल चॅनेल कॉंफिगरेशन:"</string>
+    <string name="radio_info_phy_chan_config" msgid="1277949603275436081">"LTE फिजिकल चॅनल कॉंफिगरेशन:"</string>
     <string name="radio_info_cell_info_refresh_rate" msgid="670511448975997340">"सेल माहिती रिफ्रेश रेट:"</string>
     <string name="radio_info_cellinfo_label" msgid="8199062974670377659">"सर्व सेल परिमाण माहिती:"</string>
     <string name="radio_info_gprs_service_label" msgid="6819204246355412952">"डेटा सर्व्हिस:"</string>
@@ -898,6 +898,11 @@
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"रिफ्रेश करा"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"DNS तपासणी टॉगल करा"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"OEM-विशिष्ट माहिती/सेटिंग्ज"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"EN-DC उपलब्ध:"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"DCNR प्रतिबंधित:"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"NR उपलब्ध:"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"NR स्थिती:"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR वारंवारता:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"रेडिओ बँड मोड सेट करा"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"बँड सूची लोड करत आहे…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"सेट करा"</string>
diff --git a/res/values-ms/qtistrings.xml b/res/values-ms/qtistrings.xml
new file mode 100755
index 0000000..c7db3a7
--- /dev/null
+++ b/res/values-ms/qtistrings.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- IMS settings related strings -->
+    <!-- Title displayed IMS account settings in the sip settings category. [CHAR LIMIT=NONE] -->
+    <string name="ims_settings">"Pengaturan IMS"</string>
+
+	<!-- Call auto reject settings -->
+    <string name="auto_reject_toggle_title">"Tolak panggilan secara otomatis."</string>
+    <string name="auto_reject_toggle_summary">"Secara otomatis menolak panggilan pada kartu SIM idle ketika ada prioritas tinggi dan panggilan data pada DDS"</string>
+</resources>
diff --git a/res/values-ms/strings.xml b/res/values-ms/strings.xml
index 6224356..145a6ab 100644
--- a/res/values-ms/strings.xml
+++ b/res/values-ms/strings.xml
@@ -898,6 +898,11 @@
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"Muat semula"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"Togol Semakan DNS"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"Maklumat/Tetapan khusus OEM"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"EN-DC Tersedia:"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"DCNR Terhad:"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"NR Tersedia:"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"Keadaan NR:"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"Frekuensi NR:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"Tetapkan Mod Jalur Radio"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Memuatkan Senarai Jalur…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Tetapkan"</string>
diff --git a/res/values-my/strings.xml b/res/values-my/strings.xml
index b622d73..98e6b53 100644
--- a/res/values-my/strings.xml
+++ b/res/values-my/strings.xml
@@ -274,8 +274,8 @@
     <string name="data_enable_summary" msgid="696860063456536557">"ဒေတာ သုံးစွဲမှု ခွင့်ပြုရန်"</string>
     <string name="dialog_alert_title" msgid="5260471806940268478">"သတိပြုရန်"</string>
     <string name="roaming" msgid="1576180772877858949">"ပြင်ပကွန်ရက်နှင့် ချိတ်ဆက်ခြင်း"</string>
-    <string name="roaming_enable" msgid="6853685214521494819">"ကွန်ရက်ပြင်ပဒေတာကို သုံးနေစဉ် ဒေတာဝန်ဆောင်မှုများကို ချိတ်ဆက်ပါ"</string>
-    <string name="roaming_disable" msgid="8856224638624592681">"ကွန်ရက်ပြင်ပဒေတာကို သုံးနေစဉ် ဒေတာဝန်ဆောင်မှုများကို ချိတ်ဆက်ပါ"</string>
+    <string name="roaming_enable" msgid="6853685214521494819">"ပြင်ပကွန်ရက်သုံးလျှင် ဒေတာဝန်ဆောင်မှုများကို ချိတ်ဆက်ပါ"</string>
+    <string name="roaming_disable" msgid="8856224638624592681">"ပြင်ပကွန်ရက်သုံးလျှင် ဒေတာဝန်ဆောင်မှုများကို ချိတ်ဆက်ပါ"</string>
     <string name="roaming_reenable_message" msgid="1951802463885727915">"ကွန်ရက်ပြင်ပဒေတာသုံးခြင်းကို ပိတ်ထားပါသည်။ ဖွင့်ရန် တို့ပါ။"</string>
     <string name="roaming_enabled_message" msgid="9022249120750897">"ပြင်ပကွန်ရက်နှင့် ချိတ်ဆက်သော အသုံးပြုခများ ကျသင့်နိုင်သည်။ ပြင်ဆင်ရန် တို့ပါ။"</string>
     <string name="roaming_notification_title" msgid="3590348480688047320">"မိုဘိုင်းဒေတာ ချိတ်ဆက်မှု မရှိတော့ပါ"</string>
@@ -290,7 +290,7 @@
     <string name="data_usage_template" msgid="6287906680674061783">"<xliff:g id="ID_2">%2$s</xliff:g> အထိ မိုဘိုင်းဒေတာ <xliff:g id="ID_1">%1$s</xliff:g> ကို အသုံးပြုထားပါသည်"</string>
     <string name="advanced_options_title" msgid="9208195294513520934">"အဆင့်မြင့်"</string>
     <string name="carrier_settings_euicc" msgid="1190237227261337749">"ဝန်ဆောင်မှုပေးသူ"</string>
-    <string name="keywords_carrier_settings_euicc" msgid="8540160967922063745">"ဖုန်းဝန်ဆောင်မှုပေးသူ၊ esim၊ ဆင်းမ်ကဒ်၊ euicc၊ ဖုန်းလိုင်းများ ပြောင်းရန်၊ ဖုန်းလိုင်း ထည့်ရန်"</string>
+    <string name="keywords_carrier_settings_euicc" msgid="8540160967922063745">"ဖုန်းကုမ္ပဏီ၊ esim၊ ဆင်းမ်ကဒ်၊ euicc၊ ဖုန်းလိုင်းများ ပြောင်းရန်၊ ဖုန်းလိုင်း ထည့်ရန်"</string>
     <string name="carrier_settings_euicc_summary" msgid="2027941166597330117">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> — <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
     <string name="mobile_data_settings_title" msgid="7228249980933944101">"မိုဘိုင်းဒေတာ"</string>
     <string name="mobile_data_settings_summary" msgid="5012570152029118471">"မိုဘိုင်းကွန်ရက်သုံးပြီး ဒေတာကို ဝင်သုံးခွင့်ပေးပါ"</string>
@@ -898,6 +898,11 @@
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"ပြန်စရန်"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"DNS စစ်ဆေးမှုခလုတ်ကို နှိပ်ပါ"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"ထုတ်လုပ်သူနှင့် သက်ဆိုင်သော အချက်အလက်/ဆက်တင်များ"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"EN-DC အသုံးပြုနိုင်သည် -"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"DCNR ကန့်သတ်ထားသည် -"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"NR အသုံးပြုနိုင်သည် -"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"NR အခြေအနေ -"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR ကြိမ်နှုန်း -"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"ရေဒီယိုလိုင်းမုဒ်အဖြစ် သတ်မှတ်ပါ"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"ရေဒီယိုလိုင်းစာရင်းကို ဖွင့်နေသည်…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"သတ်မှတ်ရန်"</string>
diff --git a/res/values-nb/qtistrings.xml b/res/values-nb/qtistrings.xml
new file mode 100755
index 0000000..c71ee8f
--- /dev/null
+++ b/res/values-nb/qtistrings.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- IMS settings related strings -->
+    <!-- Title displayed IMS account settings in the sip settings category. [CHAR LIMIT=NONE] -->
+    <string name="ims_settings">"IMS-innstillinger"</string>
+
+	<!-- Call auto reject settings -->
+    <string name="auto_reject_toggle_title">"Avvis anrop automatisk."</string>
+    <string name="auto_reject_toggle_summary">"Avvis automatisk samtaler på inaktiv SIM-kort når det er høy prioritet og datasamtaler på DDS"</string>
+</resources>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index 6629893..aa66631 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -898,6 +898,11 @@
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"Last inn på nytt"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"Slå av/på DNS-sjekk"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"Produsentspesfikk informasjon og innstillinger"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"EN-DC tilgjengelig:"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"DCNR begrenset:"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"NR tilgjengelig:"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"NR-tilstand:"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR-frekvens:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"Angi båndmodus for radio"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Laster inn båndlisten …"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Angi"</string>
diff --git a/res/values-ne/qtistrings.xml b/res/values-ne/qtistrings.xml
new file mode 100755
index 0000000..f494604
--- /dev/null
+++ b/res/values-ne/qtistrings.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- IMS settings related strings -->
+    <!-- Title displayed IMS account settings in the sip settings category. [CHAR LIMIT=NONE] -->
+    <string name="ims_settings">"IMS सेटिंग्स"</string>
+
+	<!-- Call auto reject settings -->
+    <string name="auto_reject_toggle_title">"कलहरू स्वचालित रूपमा अस्वीकार गर्नुहोस्।"</string>
+    <string name="auto_reject_toggle_summary">"स्वचालित रूपमा सिम कार्डमा कलहरू अस्वीकार गर्नुहोस् जब त्यहाँ उच्च प्राथमिकता र डेटा कल हुन्छ डीडीएसमा"</string>
+</resources>
diff --git a/res/values-ne/strings.xml b/res/values-ne/strings.xml
index 68f5ddc..8e629e0 100644
--- a/res/values-ne/strings.xml
+++ b/res/values-ne/strings.xml
@@ -18,7 +18,7 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="phoneAppLabel" product="tablet" msgid="1916019789885839910">"मोबाइल डेटा"</string>
     <string name="phoneAppLabel" product="default" msgid="130465039375347763">"फोन सेवाहरू"</string>
-    <string name="emergencyDialerIconLabel" msgid="8668005772339436680">"आपतकालीन डायल गर्ने"</string>
+    <string name="emergencyDialerIconLabel" msgid="8668005772339436680">"आपत्‌कालीन डायल गर्ने"</string>
     <string name="phoneIconLabel" msgid="3015941229249651419">"फोन"</string>
     <string name="fdnListLabel" msgid="4119121875004244097">"FDN सूची"</string>
     <string name="unknown" msgid="8279698889921830815">"अज्ञात"</string>
@@ -83,7 +83,7 @@
     <string name="smart_forwarding_settings_menu" msgid="8850429887958938540">"स्मार्ट तरिकाले फर्वार्ड गर्ने सुविधा"</string>
     <string name="smart_forwarding_settings_menu_summary" msgid="5096947726032885325">"एउटा नम्बर सम्पर्क क्षेत्रबाहिर भएका बेला कल सधैँ आफ्नो अर्को नम्बरमा फर्वार्ड गर्नुहोस्"</string>
     <string name="voicemail_notifications_preference_title" msgid="7829238858063382977">"सूचनाहरू"</string>
-    <string name="cell_broadcast_settings" msgid="8135324242541809924">"आपतकालीन प्रसारणहरू"</string>
+    <string name="cell_broadcast_settings" msgid="8135324242541809924">"आपत्‌कालीन प्रसारणहरू"</string>
     <string name="call_settings" msgid="3677282690157603818">"कल सेटिङहरू"</string>
     <string name="additional_gsm_call_settings" msgid="1561980168685658846">"अतिरिक्त सेटिङहरू"</string>
     <string name="additional_gsm_call_settings_with_label" msgid="7973920539979524908">"अतिरिक्त सेटिङ ( <xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g> )"</string>
@@ -318,9 +318,9 @@
     <string name="cell_bc_sms_enable" msgid="2019708772024632073">"सेल प्रसारण SMS सक्षम"</string>
     <string name="cell_bc_sms_disable" msgid="1214238639910875347">"सेल प्रसारण SMS अक्षम"</string>
     <string name="cb_sms_settings" msgid="6858093721831312036">"सेल प्रसारण SMS सेटिङहरू"</string>
-    <string name="enable_disable_emergency_broadcast" msgid="6325655044472196496">"आपतकालीन प्रसारण"</string>
-    <string name="emergency_broadcast_enable" msgid="5759610647771102442">"आपतकालीन प्रसारण सक्षम भयो"</string>
-    <string name="emergency_broadcast_disable" msgid="2844904734469323266">"आपतकालीन प्रसारण अक्षम भयो"</string>
+    <string name="enable_disable_emergency_broadcast" msgid="6325655044472196496">"आपत्‌कालीन प्रसारण"</string>
+    <string name="emergency_broadcast_enable" msgid="5759610647771102442">"आपत्‌कालीन प्रसारण सक्षम भयो"</string>
+    <string name="emergency_broadcast_disable" msgid="2844904734469323266">"आपत्‌कालीन प्रसारण अक्षम भयो"</string>
     <string name="enable_disable_administrative" msgid="7825925366822117961">"प्रशासकीय"</string>
     <string name="administrative_enable" msgid="5717963431079532028">"प्रशासनिक सक्षम"</string>
     <string name="administrative_disable" msgid="156796633660118691">"प्रशासनिक असक्षम"</string>
@@ -525,7 +525,7 @@
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"मोबाइल नेटवर्क सक्रिय पार्नुहोस्, कल गर्न हवाइजहाज मोड वा ब्याट्री सेवर मोड निष्क्रिय पार्नुहोस्।"</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"एक कल गर्न हवाइजहाज मोड बन्द गर्नुहोस्।"</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"एक कल गर्न हवाइजहाज मोड बन्द गर्नुहोस् वा एक ताररहितको सञ्जालमा जडान गर्नुहोस्।"</string>
-    <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"गैर-आपतकालीन कल गर्न आपतकालीन कलब्याक मोडबाट निस्कनुहोस्।"</string>
+    <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"गैर-आपत्‌कालीन कल गर्न आपत्‌कालीन कलब्याक मोडबाट निस्कनुहोस्।"</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"नेटवर्कमा दर्ता भएको छैन।"</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"मोबाइल नेटवर्क उपलब्ध छैन।"</string>
     <string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"मोबाइल नेटवर्क उपलब्ध छैन। कल गर्न तारविनाको नेटवर्कमा जडान गर्नुहोस्।"</string>
@@ -543,19 +543,19 @@
     <string name="incall_error_supp_service_hold" msgid="8535056414643540997">"कल सञ्चालन गर्न सकिँदैन।"</string>
     <string name="incall_error_wfc_only_no_wireless_network" msgid="5860742792811400109">"एक कल गर्न एक ताररहितको सञ्जालमा जडान गर्नुहोस्।"</string>
     <string name="incall_error_promote_wfc" msgid="9164896813931363415">"कल गर्नका लागि Wi-Fi कलिङ सक्षम गर्नुहोस्।"</string>
-    <string name="emergency_information_hint" msgid="9208897544917793012">"आपतकालीन जानकारी"</string>
+    <string name="emergency_information_hint" msgid="9208897544917793012">"आपत्‌कालीन जानकारी"</string>
     <string name="emergency_information_owner_hint" msgid="6256909888049185316">"मालिक"</string>
     <string name="emergency_information_confirm_hint" msgid="5109017615894918914">"जानकारी हेर्न पुनः ट्याप गर्नुहोस्"</string>
-    <string name="emergency_enable_radio_dialog_title" msgid="2667568200755388829">"आपतकालीन कल"</string>
-    <string name="single_emergency_number_title" msgid="8413371079579067196">"आपतकालीन नम्बर"</string>
-    <string name="numerous_emergency_numbers_title" msgid="8972398932506755510">"आपतकालीन नम्बरहरू"</string>
+    <string name="emergency_enable_radio_dialog_title" msgid="2667568200755388829">"आपत्‌कालीन कल"</string>
+    <string name="single_emergency_number_title" msgid="8413371079579067196">"आपत्‌कालीन नम्बर"</string>
+    <string name="numerous_emergency_numbers_title" msgid="8972398932506755510">"आपत्‌कालीन नम्बरहरू"</string>
     <string name="emergency_call_shortcut_hint" msgid="1290485125107779500">"<xliff:g id="EMERGENCY_NUMBER">%s</xliff:g> मा कल गर्न फेरि ट्याप गर्नुहोस्"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="1695305158151408629">"रेडियो खोल्दै..."</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="4329131876852608587">"कुनै सेवा छैन। फेरि प्रयास गर्दै ..."</string>
-    <string name="radio_off_during_emergency_call" msgid="8011154134040481609">"आपतकालीन कलको समयमा हवाइजहाज मोडमा प्रविष्ट गर्न सक्दैन।"</string>
-    <string name="dial_emergency_error" msgid="825822413209026039">"कल गर्न सकिँदैन। <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> आपतकालीन नम्बर होइन।"</string>
-    <string name="dial_emergency_empty_error" msgid="2785803395047793634">"कल गर्न सकिँदैन। आपतकालीन नम्बर डायल गर्नुहोस्।"</string>
-    <string name="dial_emergency_calling_not_available" msgid="6485846193794727823">"आपतकालीन कल सेवा उपलब्ध छैन"</string>
+    <string name="radio_off_during_emergency_call" msgid="8011154134040481609">"आपत्‌कालीन कलको समयमा हवाइजहाज मोडमा प्रविष्ट गर्न सक्दैन।"</string>
+    <string name="dial_emergency_error" msgid="825822413209026039">"कल गर्न सकिँदैन। <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> आपत्‌कालीन नम्बर होइन।"</string>
+    <string name="dial_emergency_empty_error" msgid="2785803395047793634">"कल गर्न सकिँदैन। आपत्‌कालीन नम्बर डायल गर्नुहोस्।"</string>
+    <string name="dial_emergency_calling_not_available" msgid="6485846193794727823">"आपत्‌कालीन कल सेवा उपलब्ध छैन"</string>
     <string name="pin_puk_system_user_only" msgid="1045147220686867922">"यन्त्रका मालिक मात्र PIN/PUK कोडहरू प्रविष्टि गर्न सक्नुहुन्छ।"</string>
     <string name="police_type_description" msgid="2819533883972081757">"प्रहरी"</string>
     <string name="ambulance_type_description" msgid="6798237503553180461">"एम्बुलेन्स सेवा"</string>
@@ -620,20 +620,20 @@
     <string name="ota_try_again" msgid="6914781945599998550">"फेरि प्रयास गर्नुहोस्"</string>
     <string name="ota_next" msgid="2041016619313475914">"अर्को"</string>
     <string name="ecm_exit_dialog" msgid="4200691880721429078">"EcmExitDialog"</string>
-    <string name="phone_entered_ecm_text" msgid="8431238297843035842">"आपतकालीन कलब्याक मोड प्रविष्टि गरियो"</string>
-    <string name="phone_in_ecm_notification_title" msgid="6825016389926367946">"आपतकालीन कलब्याक मोड"</string>
+    <string name="phone_entered_ecm_text" msgid="8431238297843035842">"आपत्‌कालीन कलब्याक मोड प्रविष्टि गरियो"</string>
+    <string name="phone_in_ecm_notification_title" msgid="6825016389926367946">"आपत्‌कालीन कलब्याक मोड"</string>
     <string name="phone_in_ecm_call_notification_text" msgid="653972232922670335">"डेटा जडान अक्षम भयो"</string>
     <string name="phone_in_ecm_notification_complete_time" msgid="7341624337163082759">"<xliff:g id="COMPLETETIME">%s</xliff:g> सम्म डेटा कनेक्ट भएको छैन"</string>
     <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="5425906903766466743">
-      <item quantity="other"> फोन आपतकालीन कलब्याक मोडमा <xliff:g id="COUNT_1">%s</xliff:g> मिनेटको लागि हुनेछ। यस मोडको अवस्थामा एक डेटा जडान प्रयोग गरेर कुनै पनि एपहरू प्रयोग गर्न सकिँदैन। के तपाईं अहिले निस्कन चाहनुहुन्छ?</item>
-      <item quantity="one"> फोन आपतकालीन कलब्याक मोडमा <xliff:g id="COUNT_0">%s</xliff:g> मिनेटको लागि हुनेछ। यस मोडको समयमा एक डेटा जडान प्रयोग गरेर कुनै पनि एपहरू प्रयोग गर्न सकिँदैन। के तपाईं अहिले निस्कन चाहनुहुन्छ?</item>
+      <item quantity="other"> फोन आपत्‌कालीन कलब्याक मोडमा <xliff:g id="COUNT_1">%s</xliff:g> मिनेटको लागि हुनेछ। यस मोडको अवस्थामा एक डेटा जडान प्रयोग गरेर कुनै पनि एपहरू प्रयोग गर्न सकिँदैन। के तपाईं अहिले निस्कन चाहनुहुन्छ?</item>
+      <item quantity="one"> फोन आपत्‌कालीन कलब्याक मोडमा <xliff:g id="COUNT_0">%s</xliff:g> मिनेटको लागि हुनेछ। यस मोडको समयमा एक डेटा जडान प्रयोग गरेर कुनै पनि एपहरू प्रयोग गर्न सकिँदैन। के तपाईं अहिले निस्कन चाहनुहुन्छ?</item>
     </plurals>
     <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="1152682528741457004">
-      <item quantity="other"> आपतकालीन कलब्याक मोडको समयमा चयनित कार्य उपलब्ध छैन। फोन यस मोडमा <xliff:g id="COUNT_1">%s</xliff:g> मिनेटको लागि हुनेछ। के तपाईं अहिले निस्कन चाहनुहुन्छ?</item>
-      <item quantity="one"> आपतकालीन कलब्याक मोडको समयमा चयनित कार्य उपलब्ध छैन। फोन यस मोडमा <xliff:g id="COUNT_0">%s</xliff:g> मिनेटको लागि हुनेछ। के तपाईं अहिले निस्कन चाहनुहुन्छ?</item>
+      <item quantity="other"> आपत्‌कालीन कलब्याक मोडको समयमा चयनित कार्य उपलब्ध छैन। फोन यस मोडमा <xliff:g id="COUNT_1">%s</xliff:g> मिनेटको लागि हुनेछ। के तपाईं अहिले निस्कन चाहनुहुन्छ?</item>
+      <item quantity="one"> आपत्‌कालीन कलब्याक मोडको समयमा चयनित कार्य उपलब्ध छैन। फोन यस मोडमा <xliff:g id="COUNT_0">%s</xliff:g> मिनेटको लागि हुनेछ। के तपाईं अहिले निस्कन चाहनुहुन्छ?</item>
     </plurals>
-    <string name="alert_dialog_in_ecm_call" msgid="1207545603149771978">"आपतकालीन कल हुँदा चयन भएको कार्य उपलब्ध हुँदैन।"</string>
-    <string name="progress_dialog_exiting_ecm" msgid="9159080081676927217">"आपतकालीन कलब्याक मोडबाट निस्कदै"</string>
+    <string name="alert_dialog_in_ecm_call" msgid="1207545603149771978">"आपत्‌कालीन कल हुँदा चयन भएको कार्य उपलब्ध हुँदैन।"</string>
+    <string name="progress_dialog_exiting_ecm" msgid="9159080081676927217">"आपत्‌कालीन कलब्याक मोडबाट निस्कदै"</string>
     <string name="alert_dialog_yes" msgid="3532525979632841417">"हो"</string>
     <string name="alert_dialog_no" msgid="1075632654085988420">"होइन"</string>
     <string name="alert_dialog_dismiss" msgid="1336356286354517054">"खारेज गर्नुहोस्"</string>
@@ -648,13 +648,13 @@
     <string name="voicemail_number_not_set" msgid="8831561283386938155">"सेट गरेको छैन"</string>
     <string name="other_settings" msgid="8895088007393598447">"अन्य कल सेटिङहरू"</string>
     <string name="calling_via_template" msgid="1791323450703751750">"<xliff:g id="PROVIDER_NAME">%s</xliff:g> को मार्फत कल गर्दै"</string>
-    <string name="contactPhoto" msgid="7885089213135154834">"सम्पर्क तस्बिर"</string>
+    <string name="contactPhoto" msgid="7885089213135154834">"सम्पर्क फोटो"</string>
     <string name="goPrivate" msgid="4645108311382209551">"निजी जानुहोस्"</string>
     <string name="selectContact" msgid="1527612842599767382">"सम्पर्क चयन गर्नुहोस्"</string>
     <string name="not_voice_capable" msgid="2819996734252084253">"भ्वाइस कल गर्ने समर्थित छैन"</string>
     <string name="description_dial_button" msgid="8614631902795087259">"डायल"</string>
     <string name="description_dialpad_button" msgid="7395114120463883623">"डायलप्याड देखाउनुहोस्"</string>
-    <string name="pane_title_emergency_dialpad" msgid="3627372514638694401">"आपतकालीन डायलप्याड"</string>
+    <string name="pane_title_emergency_dialpad" msgid="3627372514638694401">"आपत्‌कालीन डायलप्याड"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="6610414098912832120">"भिजुअल भ्वाइस मेल"</string>
     <string name="voicemail_set_pin_dialog_title" msgid="7005128605986960003">"PIN सेट गर्नुहोस्"</string>
     <string name="voicemail_change_pin_dialog_title" msgid="4633077715231764435">"PIN परिवर्तन गर्नुहोस्"</string>
@@ -678,7 +678,7 @@
     <string name="callFailed_wifi_lost" msgid="1788036730589163141">"Wi-Fi जडान विच्छेद भयो। कल समाप्त भयो।"</string>
     <string name="dialFailed_low_battery" msgid="6857904237423407056">"ब्याट्रीको चार्ज स्तर कम हुनाले तपाईं भिडियो कल गर्न सक्नुहुन्न।"</string>
     <string name="callFailed_low_battery" msgid="4056828320214416182">"ब्याट्रीको चार्ज स्तर कम हुनाले भिडियो कल बन्द भयो।"</string>
-    <string name="callFailed_emergency_call_over_wfc_not_available" msgid="5944309590693432042">"यो स्थानमा Wi-Fi कलिङमार्फत आपतकालीन कलहरू गर्ने सुविधा उपलब्ध छैन।"</string>
+    <string name="callFailed_emergency_call_over_wfc_not_available" msgid="5944309590693432042">"यो स्थानमा Wi-Fi कलिङमार्फत आपत्‌कालीन कलहरू गर्ने सुविधा उपलब्ध छैन।"</string>
     <string name="callFailed_wfc_service_not_available_in_this_location" msgid="3624536608369524988">"यो स्थानमा Wi-Fi कलिङ उपलब्ध छैन।"</string>
     <string name="change_pin_title" msgid="3564254326626797321">"भ्वाइस मेलको PIN परिवर्तन गर्नुहोस्"</string>
     <string name="change_pin_continue_label" msgid="5177011752453506371">"जारी राख्नुहोस्"</string>
@@ -845,7 +845,7 @@
     <string name="radio_info_ims_reg_status" msgid="25582845222446390">"IMS को दर्ता: <xliff:g id="STATUS">%1$s</xliff:g>\nभ्वाइस ओभर LTE: <xliff:g id="AVAILABILITY_0">%2$s</xliff:g>\nभ्वाइस ओभर WiFi: <xliff:g id="AVAILABILITY_1">%3$s</xliff:g>\nभिडियो कलिङ: <xliff:g id="AVAILABILITY_2">%4$s</xliff:g>\nUT को इन्टरफेस: <xliff:g id="AVAILABILITY_3">%5$s</xliff:g>"</string>
     <string name="radioInfo_service_in" msgid="45753418231446400">"सेवामा"</string>
     <string name="radioInfo_service_out" msgid="287972405416142312">"सेवा उपलब्ध छैन"</string>
-    <string name="radioInfo_service_emergency" msgid="4763879891415016848">"आपतकालीन कल मात्र"</string>
+    <string name="radioInfo_service_emergency" msgid="4763879891415016848">"आपत्‌कालीन कल मात्र"</string>
     <string name="radioInfo_service_off" msgid="3456583511226783064">"रेडियो निष्क्रिय छ"</string>
     <string name="radioInfo_roaming_in" msgid="3156335577793145965">"रोमिङ"</string>
     <string name="radioInfo_roaming_not" msgid="1904547918725478110">"रोमिङमा छैन"</string>
@@ -898,6 +898,11 @@
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"पुनः ताजा गर्नुहोस्"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"DNS को जाँचलाई टगल गर्नुहोस्"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"OEM-विशिष्ट जानकारी/सेटिङ"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"EN-DC उपलब्ध छ:"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"DCNR प्रतिबन्धित छ:"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"NR उपलब्ध छ:"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"NR को स्थिती:"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR फ्रिक्वेन्सी:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"रेडियोको ब्यान्डसम्बन्धी मोडलाई सेट गर्नुहोस्"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"ब्यान्डको सूची लोड गर्दै…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"सेट गर्नुहोस्"</string>
diff --git a/res/values-nl/qtistrings.xml b/res/values-nl/qtistrings.xml
new file mode 100755
index 0000000..f7fc482
--- /dev/null
+++ b/res/values-nl/qtistrings.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- IMS settings related strings -->
+    <!-- Title displayed IMS account settings in the sip settings category. [CHAR LIMIT=NONE] -->
+    <string name="ims_settings">"IMS-instellingen"</string>
+
+	<!-- Call auto reject settings -->
+    <string name="auto_reject_toggle_title">"Oproepen automatisch weigeren."</string>
+    <string name="auto_reject_toggle_summary">"Automatisch oproepen weigeren op inactieve simkaarten wanneer er hoge prioriteit en dataoproepen zijn op DDS"</string>
+</resources>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index 63a4cf7..a5e9e50 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -32,7 +32,7 @@
     <string name="mmiCancelled" msgid="5339191899200678272">"MMI-code geannuleerd"</string>
     <string name="cancel" msgid="8984206397635155197">"Annuleren"</string>
     <string name="enter_input" msgid="6193628663039958990">"USSD-bericht moet tussen <xliff:g id="MIN_LEN">%1$d</xliff:g> en <xliff:g id="MAX_LEN">%2$d</xliff:g> tekens lang zijn. Probeer het opnieuw."</string>
-    <string name="manageConferenceLabel" msgid="8415044818156353233">"Conferencecall beheren"</string>
+    <string name="manageConferenceLabel" msgid="8415044818156353233">"Telefonische vergadering beheren"</string>
     <string name="ok" msgid="7818974223666140165">"OK"</string>
     <string name="audio_mode_speaker" msgid="243689733219312360">"Luidspreker"</string>
     <string name="audio_mode_earpiece" msgid="2823700267171134282">"Oortelefoon van handset"</string>
@@ -58,6 +58,7 @@
     <string name="mobile_network_settings_not_available" msgid="8678168497517090039">"Instellingen voor mobiele netwerken zijn niet beschikbaar voor deze gebruiker"</string>
     <string name="labelGSMMore" msgid="7354182269461281543">"GSM-oproepinstellingen"</string>
     <string name="labelGsmMore_with_label" msgid="3206015314393246224">"GSM-oproepinstellingen (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+    <string name="labelCFVoice">Spraak</string>
     <string name="labelCDMAMore" msgid="7937441382611224632">"CDMA-oproepinstellingen"</string>
     <string name="labelCdmaMore_with_label" msgid="7759692829160238152">"CDMA-oproepinstellingen (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="apn_settings" msgid="1978652203074756623">"Namen toegangspunten"</string>
@@ -87,7 +88,7 @@
     <string name="call_settings" msgid="3677282690157603818">"Gespreksinstellingen"</string>
     <string name="additional_gsm_call_settings" msgid="1561980168685658846">"Aanvullende instellingen"</string>
     <string name="additional_gsm_call_settings_with_label" msgid="7973920539979524908">"Aanvullende instellingen (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
-    <string name="sum_gsm_call_settings" msgid="7964692601608878138">"Aanvullende oproepinstellingen voor alleen GSM"</string>
+    <string name="sum_gsm_call_settings" msgid="7964692601608878138">"Aanvullende oproepinstellingen"</string>
     <string name="additional_cdma_call_settings" msgid="2178016561980611304">"Aanvullende CDMA-oproepinstellingen"</string>
     <string name="sum_cdma_call_settings" msgid="3185825305136993636">"Aanvullende oproepinstellingen voor alleen CDMA"</string>
     <string name="labelNwService" msgid="6015891883487125120">"Instellingen voor netwerkservice"</string>
@@ -300,6 +301,7 @@
     <string name="sim_change_data_message" msgid="3567358694255933280">"<xliff:g id="NEW_SIM">%1$s</xliff:g> in plaats van <xliff:g id="OLD_SIM">%2$s</xliff:g> gebruiken voor mobiele data?"</string>
     <string name="wifi_calling_settings_title" msgid="5800018845662016507">"Bellen via wifi"</string>
     <string name="video_calling_settings_title" msgid="342829454913266078">"Provider videogesprekken"</string>
+    <string name="call_forward_option">Gesprek doorschakelen opties</string>
     <string name="gsm_umts_options" msgid="4968446771519376808">"GSM-/UMTS-opties"</string>
     <string name="cdma_options" msgid="3669592472226145665">"CDMA-opties"</string>
     <string name="throttle_data_usage" msgid="1944145350660420711">"Datagebruik"</string>
@@ -506,11 +508,11 @@
     <string name="pin2_attempts" msgid="5625178102026453023">\n"Je hebt nog <xliff:g id="NUMBER">%d</xliff:g> pogingen."</string>
     <string name="pin2_unblocked" msgid="4481107908727789303">"PIN2 niet langer geblokkeerd"</string>
     <string name="pin2_error_exception" msgid="8116103864600823641">"Netwerk- of simkaartfout"</string>
-    <string name="doneButton" msgid="7371209609238460207">"Gereed"</string>
+    <string name="doneButton" msgid="7371209609238460207">"Klaar"</string>
     <string name="voicemail_settings_number_label" msgid="1265118640154688162">"Voicemailnummer"</string>
     <string name="card_title_dialing" msgid="8742182654254431781">"Kiezen"</string>
     <string name="card_title_redialing" msgid="18130232613559964">"Opnieuw bellen"</string>
-    <string name="card_title_conf_call" msgid="901197309274457427">"Conferencecall"</string>
+    <string name="card_title_conf_call" msgid="901197309274457427">"Telefonische vergadering"</string>
     <string name="card_title_incoming_call" msgid="881424648458792430">"Inkomend gesprek"</string>
     <string name="card_title_call_ended" msgid="650223980095026340">"Gesprek beëindigd"</string>
     <string name="card_title_on_hold" msgid="9028319436626975207">"In de wacht"</string>
@@ -579,8 +581,8 @@
     <string name="importToFDNfromContacts" msgid="5068664870738407341">"Importeren uit contacten"</string>
     <string name="singleContactImportedMsg" msgid="3619804066300998934">"Contact geïmporteerd"</string>
     <string name="failedToImportSingleContactMsg" msgid="228095510489830266">"Kan contact niet importeren"</string>
-    <string name="hac_mode_title" msgid="4127986689621125468">"Gehoorapparaten"</string>
-    <string name="hac_mode_summary" msgid="7774989500136009881">"Compatibiliteit voor gehoorapparaat inschakelen"</string>
+    <string name="hac_mode_title" msgid="4127986689621125468">"Hoortoestellen"</string>
+    <string name="hac_mode_summary" msgid="7774989500136009881">"Compatibiliteit voor hoortoestel inschakelen"</string>
     <string name="rtt_mode_title" msgid="3075948111362818043">"Realtime tekstoproep (RTT)"</string>
     <string name="rtt_mode_summary" msgid="8631541375609989562">"Berichten in een audiogesprek toestaan"</string>
     <string name="rtt_mode_more_information" msgid="587500128658756318">"RTT helpt bellers die doof of slechthorend zijn, een spraakbeperking hebben of meer dan alleen een stem nodig hebben.&lt;br&gt; &lt;a href=<xliff:g id="URL">http://support.google.com/mobile?p=telephony_rtt</xliff:g>&gt;Meer informatie&lt;/a&gt;\n       &lt;br&gt;&lt;br&gt; - RTT-gesprekken worden opgeslagen als berichttranscript.\n       &lt;br&gt; - RTT is niet beschikbaar voor videogesprekken"</string>
@@ -602,9 +604,9 @@
     <string name="ota_title_activate" msgid="4049645324841263423">"Je telefoon activeren"</string>
     <string name="ota_touch_activate" msgid="838764494319694754">"Je moet een speciaal gesprek voeren om je telefoonservice te activeren. \n\nNadat je op \'Activeren\' hebt gedrukt, luister je naar de instructies om je telefoon te activeren."</string>
     <string name="ota_hfa_activation_title" msgid="3300556778212729671">"Activeren..."</string>
-    <string name="ota_hfa_activation_dialog_message" msgid="7921718445773342996">"De telefoon activeert je mobiele gegevensservice.\n\nDit kan tot vijf minuten duren."</string>
+    <string name="ota_hfa_activation_dialog_message" msgid="7921718445773342996">"De telefoon activeert je mobiele-dataservice.\n\nDit kan tot vijf minuten duren."</string>
     <string name="ota_skip_activation_dialog_title" msgid="7666611236789203797">"Activering overslaan?"</string>
-    <string name="ota_skip_activation_dialog_message" msgid="6691722887019708713">"Als je de activering overslaat, kun je niet bellen of verbinding maken met mobiele gegevensnetwerken (je kunt wel verbinding maken met wifi-netwerken). Tot je de telefoon activeert, wordt je gevraagd deze te activeren telkens wanneer je de telefoon inschakelt."</string>
+    <string name="ota_skip_activation_dialog_message" msgid="6691722887019708713">"Als je de activering overslaat, kun je niet bellen of verbinding maken met mobiele-datanetwerken (je kunt wel verbinding maken met wifi-netwerken). Tot je de telefoon activeert, wordt je gevraagd deze te activeren telkens wanneer je de telefoon inschakelt."</string>
     <string name="ota_skip_activation_dialog_skip_label" msgid="5908029466817825633">"Overslaan"</string>
     <string name="ota_activate" msgid="7939695753665438357">"Activeren"</string>
     <string name="ota_title_activate_success" msgid="1272135024761004889">"De telefoon is geactiveerd."</string>
@@ -898,6 +900,11 @@
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"Vernieuwen"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"DNS-controle in-/uitschakelen"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"OEM-specifieke gegevens/instellingen"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"EN-DC beschikbaar:"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"DCNR beperkt:"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"NR beschikbaar:"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"NR-status:"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR-frequentie:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"Modus voor radioband instellen"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Bandlijst laden…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Instellen"</string>
@@ -907,4 +914,11 @@
     <string name="phone_info_label" product="default" msgid="1784175881556791433">"Telefooninformatie"</string>
     <string name="carrier_provisioning" msgid="2668065041869578376">"Gegevens voor providerregistratie"</string>
     <string name="trigger_carrier_provisioning" msgid="1301829588620638234">"Providerregistratie activeren"</string>
+    <!-- Smart Divert Settings -->
+    <!-- Title for the Smart Divert Feature displayed in Call Settings -->
+    <string name="smart_divert_title">Smart-Divert</string>
+    <!-- Summary for the Smart Divert Feature displayed in Call Settings -->
+    <string name="smart_divert_summary">CFNRc-instellingen</string>
+    <string name="vibrating_for_outgoing_call_accepted_title">Trillen voor uitgaand telefoongesprek geaccepteerd</string>
+    <string name="vibrating_for_outgoing_call_accepted_summary">Activeer trilmodus voor uitgaand gesprek geaccepteerd</string>
 </resources>
diff --git a/res/values-no/qtistrings.xml b/res/values-no/qtistrings.xml
new file mode 100755
index 0000000..c71ee8f
--- /dev/null
+++ b/res/values-no/qtistrings.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- IMS settings related strings -->
+    <!-- Title displayed IMS account settings in the sip settings category. [CHAR LIMIT=NONE] -->
+    <string name="ims_settings">"IMS-innstillinger"</string>
+
+	<!-- Call auto reject settings -->
+    <string name="auto_reject_toggle_title">"Avvis anrop automatisk."</string>
+    <string name="auto_reject_toggle_summary">"Avvis automatisk samtaler på inaktiv SIM-kort når det er høy prioritet og datasamtaler på DDS"</string>
+</resources>
diff --git a/res/values-or/strings.xml b/res/values-or/strings.xml
index 152473a..42386df 100644
--- a/res/values-or/strings.xml
+++ b/res/values-or/strings.xml
@@ -29,8 +29,8 @@
     <string name="default_carrier_mmi_msg_title" msgid="7754317179938537213">"ବାହକ ମେସେଜ୍"</string>
     <string name="mmiStarted" msgid="9212975136944568623">"MMI କୋଡ୍‌କୁ ଆରମ୍ଭ କରାଯାଇଛି"</string>
     <string name="ussdRunning" msgid="1163586813106772717">"USSD କୋଡ୍ ରନ୍ କରୁଛି…"</string>
-    <string name="mmiCancelled" msgid="5339191899200678272">"MMI କୋଡ୍‌କୁ କ୍ୟାନ୍ସଲ୍ କରାଯାଇଛି"</string>
-    <string name="cancel" msgid="8984206397635155197">"କ୍ୟାନ୍ସଲ୍‍ କରନ୍ତୁ"</string>
+    <string name="mmiCancelled" msgid="5339191899200678272">"MMI କୋଡ୍‌କୁ ବାତିଲ୍ କରାଯାଇଛି"</string>
+    <string name="cancel" msgid="8984206397635155197">"ବାତିଲ୍‍ କରନ୍ତୁ"</string>
     <string name="enter_input" msgid="6193628663039958990">"USSD ମେସେଜ୍ ନିଶ୍ଚିତରୂପେ <xliff:g id="MIN_LEN">%1$d</xliff:g> ଓ <xliff:g id="MAX_LEN">%2$d</xliff:g>ଟି ଅକ୍ଷର ମଧ୍ୟରେ ରହିବ। ଦୟାକରି ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।"</string>
     <string name="manageConferenceLabel" msgid="8415044818156353233">"କନଫରେନ୍ସ କଲ୍‌କୁ ପରିଚାଳନା କରନ୍ତୁ"</string>
     <string name="ok" msgid="7818974223666140165">"ଠିକ୍ ଅଛି"</string>
@@ -682,7 +682,7 @@
     <string name="callFailed_wfc_service_not_available_in_this_location" msgid="3624536608369524988">"ଏହି ଲୋକେସନ୍‌ରେ ୱାଇ-ଫାଇ କଲିଂ ଉପଲବ୍ଧ ନାହିଁ।"</string>
     <string name="change_pin_title" msgid="3564254326626797321">"ଭଏସମେଲ୍ PINକୁ ବଦଳାନ୍ତୁ"</string>
     <string name="change_pin_continue_label" msgid="5177011752453506371">"ଜାରି ରଖନ୍ତୁ"</string>
-    <string name="change_pin_cancel_label" msgid="2301711566758827936">"କ୍ୟାନ୍ସଲ୍‍ କରନ୍ତୁ"</string>
+    <string name="change_pin_cancel_label" msgid="2301711566758827936">"ବାତିଲ୍‍ କରନ୍ତୁ"</string>
     <string name="change_pin_ok_label" msgid="6861082678817785330">"ଠିକ୍ ଅଛି"</string>
     <string name="change_pin_enter_old_pin_header" msgid="853151335217594829">"ଆପଣଙ୍କର ପୁରୁଣା PINକୁ ନିଶ୍ଚିତ କରନ୍ତୁ"</string>
     <string name="change_pin_enter_old_pin_hint" msgid="8801292976275169367">"ଜାରି ରଖିବା ପାଇଁ ଆପଣଙ୍କର ଭଏସମେଲ୍ PINକୁ ପ୍ରବେଶ କରନ୍ତୁ।"</string>
@@ -705,7 +705,7 @@
     <string name="mobile_data_activate_diag_title" msgid="5401741936224757312">"ଡାଟାକୁ ଯୋଡ଼ିବେ?"</string>
     <string name="mobile_data_activate_diag_message" msgid="3527260988020415441">"ଆପଣଙ୍କୁ <xliff:g id="PROVIDER_NAME">%s</xliff:g> ମାଧ୍ୟମରେ ଡାଟା ଯୋଡ଼ିବାକୁ ପଡ଼ିପାରେ"</string>
     <string name="mobile_data_activate_button" msgid="1139792516354374612">"ଡାଟା ଯୋଡ଼ନ୍ତୁ"</string>
-    <string name="mobile_data_activate_cancel_button" msgid="3530174817572005860">"କ୍ୟାନ୍ସଲ୍‍ କରନ୍ତୁ"</string>
+    <string name="mobile_data_activate_cancel_button" msgid="3530174817572005860">"ବାତିଲ୍‍ କରନ୍ତୁ"</string>
     <string name="clh_card_title_call_ended_txt" msgid="5977978317527299698">"କଲ୍ ସମାପ୍ତ ହୋ‌ଇଛି"</string>
     <string name="clh_callFailed_powerOff_txt" msgid="8279934912560765361">"ଏୟାରପ୍ଲେନ୍ ମୋଡ୍ ଅନ୍‌ ଅଛି"</string>
     <string name="clh_callFailed_simError_txt" msgid="5128538525762326413">"SIM କାର୍ଡକୁ ଆକ୍ସେସ୍ କରିହେଉନାହିଁ"</string>
@@ -898,6 +898,11 @@
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"ରିଫ୍ରେସ୍ କରନ୍ତୁ"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"DNS ଯାଞ୍ଚ ଟୋଗଲ୍ କରନ୍ତୁ"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"OEM-ନିର୍ଦ୍ଦିଷ୍ଟ ସୂଚନା/ସେଟିଂସ୍"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"EN-DC ଉପଲବ୍ଧ:"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"DCNR ପ୍ରତିବନ୍ଧିତ:"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"NR ଉପଲବ୍ଧ:"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"NR ସ୍ଥିତି:"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR ଫ୍ରିକ୍ୱେନ୍ସୀ:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"ରେଡିଓ ବ୍ୟାଣ୍ଡ ମୋଡ୍ ସେଟ୍ କରନ୍ତୁ"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"ବ୍ୟାଣ୍ଡ ତାଲିକା ଲୋଡ୍ କରାଯାଉଛି…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"ସେଟ୍ କରନ୍ତୁ"</string>
diff --git a/res/values-pa/qtistrings.xml b/res/values-pa/qtistrings.xml
new file mode 100755
index 0000000..2bf07d1
--- /dev/null
+++ b/res/values-pa/qtistrings.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- IMS settings related strings -->
+    <!-- Title displayed IMS account settings in the sip settings category. [CHAR LIMIT=NONE] -->
+    <string name="ims_settings">"IMS ਸੈਟਿੰਗਜ਼"</string>
+
+	<!-- Call auto reject settings -->
+    <string name="auto_reject_toggle_title">"ਕਾਲਾਂ ਆਪਣੇ ਆਪ ਰੱਦ ਕਰੋ."</string>
+    <string name="auto_reject_toggle_summary">"ਜਦੋਂ ਡੀ ਡੀ ਐਸ ਤੇ ਉੱਚ ਤਰਜੀਹ ਅਤੇ ਡਾਟਾ ਕਾਲਾਂ ਹੋਣ ਤਾਂ ਨਿਸ਼ਕਿਰਿਆ ਸਿਮ ਕਾਰਡਾਂ ਤੇ ਕਾਲਾਂ ਆਪਣੇ ਆਪ ਰੱਦ ਕਰੋ"</string>
+</resources>
diff --git a/res/values-pa/strings.xml b/res/values-pa/strings.xml
index 08d69b8..7e166eb 100644
--- a/res/values-pa/strings.xml
+++ b/res/values-pa/strings.xml
@@ -898,6 +898,11 @@
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"ਰਿਫ੍ਰੈਸ਼ ਕਰੋ"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"DNS ਜਾਂਚ ਟੌਗਲ ਕਰੋ"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"OEM-ਵਿਸ਼ੇਸ਼ ਜਾਣਕਾਰੀ/ਸੈਟਿੰਗਾਂ"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"EN-DC ਉਪਲਬਧ:"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"DCNR ਪ੍ਰਤਿਬੰਧਿਤ:"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"NR ਉਪਲਬਧ:"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"NR ਸਥਿਤੀ:"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR ਵਾਰਵਾਰਤਾ:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"ਰੇਡੀਓ ਬੈਂਡ ਮੋਡ ਸੈੱਟ ਕਰੋ"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"ਬੈਂਡ ਸੂਚੀ ਲੋਡ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"ਸੈੱਟ ਕਰੋ"</string>
diff --git a/res/values-pl/qtistrings.xml b/res/values-pl/qtistrings.xml
new file mode 100755
index 0000000..fe4eca3
--- /dev/null
+++ b/res/values-pl/qtistrings.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- IMS settings related strings -->
+    <!-- Title displayed IMS account settings in the sip settings category. [CHAR LIMIT=NONE] -->
+    <string name="ims_settings">"Ustawienia IMS"</string>
+
+	<!-- Call auto reject settings -->
+    <string name="auto_reject_toggle_title">"Automatyczne odrzucanie połączeń."</string>
+    <string name="auto_reject_toggle_summary">"Automatycznie odrzucaj połączenia na nieaktywnych kartach SIM, gdy DDS ma wysoki priorytet i połączenia danych"</string>
+</resources>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index 410887c..b0044e4 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -904,6 +904,11 @@
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"Odśwież"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"Przełącz sprawdzanie DNS"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"Informacje/ustawienia specyficzne dla producenta OEM"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"Dostępne EN-DC:"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"Ograniczenie DCNR:"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"Dostępne NR:"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"Stan NR:"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"Częstotliwość NR:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"Ustawianie trybu pasma radiowego"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Ładuję listę pasm…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Ustaw"</string>
diff --git a/res/values-pt-rBR/qtistrings.xml b/res/values-pt-rBR/qtistrings.xml
new file mode 100755
index 0000000..d5fc306
--- /dev/null
+++ b/res/values-pt-rBR/qtistrings.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- IMS settings related strings -->
+    <!-- Title displayed IMS account settings in the sip settings category. [CHAR LIMIT=NONE] -->
+    <string name="ims_settings">"Configurações IMS"</string>
+
+	<!-- Call auto reject settings -->
+    <string name="auto_reject_toggle_title">"Rejeitar chamadas automaticamente."</string>
+    <string name="auto_reject_toggle_summary">"Rejeitar automaticamente chamadas em cartões SIM ociosos quando houver alta prioridade e chamadas de dados no DDS"</string>
+</resources>
diff --git a/res/values-pt-rPT/qtistrings.xml b/res/values-pt-rPT/qtistrings.xml
new file mode 100755
index 0000000..d5fc306
--- /dev/null
+++ b/res/values-pt-rPT/qtistrings.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- IMS settings related strings -->
+    <!-- Title displayed IMS account settings in the sip settings category. [CHAR LIMIT=NONE] -->
+    <string name="ims_settings">"Configurações IMS"</string>
+
+	<!-- Call auto reject settings -->
+    <string name="auto_reject_toggle_title">"Rejeitar chamadas automaticamente."</string>
+    <string name="auto_reject_toggle_summary">"Rejeitar automaticamente chamadas em cartões SIM ociosos quando houver alta prioridade e chamadas de dados no DDS"</string>
+</resources>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index 3c33d08..8cbe585 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -95,10 +95,10 @@
     <string name="sum_loading_settings" msgid="434063780286688775">"A carregar as definições..."</string>
     <string name="sum_hide_caller_id" msgid="131100328602371933">"Ocultar o número em chamadas efectuadas"</string>
     <string name="sum_show_caller_id" msgid="3571854755324664591">"Número apresentado em chamadas efectuadas"</string>
-    <string name="sum_default_caller_id" msgid="1767070797135682959">"Utilizar as predefinições do operador para apresentar o meu número nas chamadas efectuadas"</string>
+    <string name="sum_default_caller_id" msgid="1767070797135682959">"Utilizar as predefinições do operador para apresentar o meu número nas chamadas efetuadas"</string>
     <string name="labelCW" msgid="8449327023861428622">"Chamada em espera"</string>
-    <string name="sum_cw_enabled" msgid="3977308526187139996">"Notificar-me de chamadas a receber durante uma chamada"</string>
-    <string name="sum_cw_disabled" msgid="3658094589461768637">"Notificar-me de chamadas a receber durante uma chamada"</string>
+    <string name="sum_cw_enabled" msgid="3977308526187139996">"Notificar-me de chamadas em espera durante uma chamada"</string>
+    <string name="sum_cw_disabled" msgid="3658094589461768637">"Notificar-me de chamadas em espera durante uma chamada"</string>
     <string name="call_forwarding_settings" msgid="8937130467468257671">"Definições do encaminhamento de chamadas"</string>
     <string name="call_forwarding_settings_with_label" msgid="2345432813399564272">"Definições de encaminhamento de chamadas (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCF" msgid="3578719437928476078">"Encaminhamento de chamadas"</string>
@@ -898,6 +898,11 @@
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"Atualizar"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"Ativar/desativar verificação de DNS"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"Informações/definições específicas de OEM"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"EN-DC disponível:"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"DCNR restrito:"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"NR disponível:"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"Estado NR:"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"Frequência NR:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"Definir modo de banda de rádio"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"A carregar lista de bandas…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Definir"</string>
diff --git a/res/values-pt/qtistrings.xml b/res/values-pt/qtistrings.xml
new file mode 100755
index 0000000..e0bb11a
--- /dev/null
+++ b/res/values-pt/qtistrings.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- IMS settings related strings -->
+    <!-- Title displayed IMS account settings in the sip settings category. [CHAR LIMIT=NONE] -->
+    <string name="ims_settings">"Configurações IMS"</string>
+
+	<!-- Call auto reject settings -->
+    <string name="auto_reject_toggle_title">"Rejeite chamadas automaticamente."</string>
+    <string name="auto_reject_toggle_summary">"Rejeitar automaticamente chamadas em cartões SIM ociosos quando houver alta prioridade e chamadas de dados no DDS"</string>
+</resources>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index 2aba7d2..3e4a0f1 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -508,7 +508,7 @@
     <string name="pin2_error_exception" msgid="8116103864600823641">"Erro de rede ou do chip"</string>
     <string name="doneButton" msgid="7371209609238460207">"Concluído"</string>
     <string name="voicemail_settings_number_label" msgid="1265118640154688162">"Número correio de voz"</string>
-    <string name="card_title_dialing" msgid="8742182654254431781">"Discando"</string>
+    <string name="card_title_dialing" msgid="8742182654254431781">"Chamando..."</string>
     <string name="card_title_redialing" msgid="18130232613559964">"Rediscando"</string>
     <string name="card_title_conf_call" msgid="901197309274457427">"Teleconferência"</string>
     <string name="card_title_incoming_call" msgid="881424648458792430">"Recebendo chamada"</string>
@@ -898,6 +898,11 @@
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"Atualizar"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"Ativar/desativar verificação do DNS"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"Informações/configurações específicas de OEM"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"EN-DC disponível:"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"DCNR restrita:"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"NR disponível:"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"Estado do NR:"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"Frequência do NR:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"Definir modo de banda de rádio"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Carregando a lista de bandas…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Definir"</string>
@@ -907,4 +912,6 @@
     <string name="phone_info_label" product="default" msgid="1784175881556791433">"Informações do telefone"</string>
     <string name="carrier_provisioning" msgid="2668065041869578376">"Informações de provisionamento da operadora"</string>
     <string name="trigger_carrier_provisioning" msgid="1301829588620638234">"Acionar provisionamento da operadora"</string>
+    <string name="vibrating_for_outgoing_call_accepted_title">Vibrando para a chamada de partida aceita</string>
+    <string name="smart_divert_summary">Configurações do CFNRC.</string>
 </resources>
diff --git a/res/values-ro/qtistrings.xml b/res/values-ro/qtistrings.xml
new file mode 100755
index 0000000..3c7ec0f
--- /dev/null
+++ b/res/values-ro/qtistrings.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- IMS settings related strings -->
+    <!-- Title displayed IMS account settings in the sip settings category. [CHAR LIMIT=NONE] -->
+    <string name="ims_settings">"Setări IMS"</string>
+
+	<!-- Call auto reject settings -->
+    <string name="auto_reject_toggle_title">"Respingeți automat apelurile."</string>
+    <string name="auto_reject_toggle_summary">"Respingeți automat apelurile de pe cartelele SIM inactive atunci când există apeluri cu prioritate ridicată și date pe DDS"</string>
+</resources>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index 358343b..35ee855 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -901,6 +901,11 @@
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"Actualizați"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"Activați/dezactivați verificarea DNS"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"Informații/Setări caracteristice OEM"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"Disponibilă EN-DC:"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"Restricționată DCNR:"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"Disponibilă NR:"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"Stare NR:"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"Frecvență NR:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"Setați Modul bandă radio"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Se încarcă lista de benzi…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Setați"</string>
diff --git a/res/values-ru/qtistrings.xml b/res/values-ru/qtistrings.xml
new file mode 100755
index 0000000..3ec0722
--- /dev/null
+++ b/res/values-ru/qtistrings.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- IMS settings related strings -->
+    <!-- Title displayed IMS account settings in the sip settings category. [CHAR LIMIT=NONE] -->
+    <string name="ims_settings">"Настройки IMS"</string>
+
+	<!-- Call auto reject settings -->
+    <string name="auto_reject_toggle_title">"Отклонять звонки автоматически."</string>
+    <string name="auto_reject_toggle_summary">"Автоматически отклонять вызовы на незанятых SIM-картах, когда есть высокий приоритет и вызовы данных на DDS"</string>
+</resources>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index 77ceeee..a7980bf 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -904,6 +904,11 @@
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"Обновить"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"Включить/отключить проверку DNS"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"Информация/настройки OEM"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"EN-DC доступно:"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"DCNR ограничено:"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"NR доступно:"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"Состояние NR:"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"Частота NR:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"Настроить режим сети"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Загрузка списка частот…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Сохранить"</string>
diff --git a/res/values-si/qtistrings.xml b/res/values-si/qtistrings.xml
new file mode 100755
index 0000000..7013e48
--- /dev/null
+++ b/res/values-si/qtistrings.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- IMS settings related strings -->
+    <!-- Title displayed IMS account settings in the sip settings category. [CHAR LIMIT=NONE] -->
+    <string name="ims_settings">"IMS සැකසුම්"</string>
+
+	<!-- Call auto reject settings -->
+    <string name="auto_reject_toggle_title">"ඇමතුම් ස්වයංක්‍රීයව ප්‍රතික්ෂේප කරන්න."</string>
+    <string name="auto_reject_toggle_summary">"ඩීඩීඑස් හි ඉහළ ප්‍රමුඛතාවයක් සහ දත්ත ඇමතුම් ඇති විට නිෂ්ක්‍රීය සිම් කාඩ්පත් වල ඇමතුම් ස්වයංක්‍රීයව ප්‍රතික්ෂේප කරන්න"</string>
+</resources>
diff --git a/res/values-si/strings.xml b/res/values-si/strings.xml
index b89b1d8..45850c8 100644
--- a/res/values-si/strings.xml
+++ b/res/values-si/strings.xml
@@ -898,6 +898,11 @@
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"නැවුම් කරන්න"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"DNS පරීක්ෂාව ටොගල කරන්න"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"OEM-විශේෂිත තොරතුරු/සැකසීම්"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"EN-DC ලබා ගත හැකි:"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"DCNR සීමා කළ:"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"NR ලබා ගත හැකි:"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"NR තත්ත්වය:"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR සංඛ්‍යාතය:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"රේඩියෝ කලාප ප්‍රකාරය සකසන්න"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"කලාප ලැයිස්තුව පූරණය කරමින්…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"සකසන්න"</string>
diff --git a/res/values-sk/qtistrings.xml b/res/values-sk/qtistrings.xml
new file mode 100755
index 0000000..0558a14
--- /dev/null
+++ b/res/values-sk/qtistrings.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- IMS settings related strings -->
+    <!-- Title displayed IMS account settings in the sip settings category. [CHAR LIMIT=NONE] -->
+    <string name="ims_settings">"IMS alarmları"</string>
+
+	<!-- Call auto reject settings -->
+    <string name="auto_reject_toggle_title">"Aramalari otomatik olarak azaltılır."</string>
+    <string name="auto_reject_toggle_summary">"DDS'nin özellikleri hepsi bir arada ve cihaz kurulacak, SIM kart kartı otomatik olarak takılacak"</string>
+</resources>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index e7daa0c..5436158 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -171,7 +171,7 @@
     <string name="network_query_error" msgid="3862515805115145124">"Nepodarilo sa nájsť siete. Skúste to znova."</string>
     <string name="register_on_network" msgid="4194770527833960423">"Prebieha registrácia v sieti <xliff:g id="NETWORK">%s</xliff:g>..."</string>
     <string name="not_allowed" msgid="8541221928746104798">"Vaša SIM karta nepovoľuje pripojenie k tejto sieti."</string>
-    <string name="connect_later" msgid="1950138106010005425">"V tejto chvíli sa nedá pripojiť k sieti. Skúste to znova neskôr."</string>
+    <string name="connect_later" msgid="1950138106010005425">"V tejto chvíli sa nedá pripojiť k sieti. Skúste to neskôr."</string>
     <string name="registration_done" msgid="5337407023566953292">"Prihlásenie k sieti prebehlo úspešne."</string>
     <string name="already_auto" msgid="8607068290733079336">"Už v automatickom výbere"</string>
     <string name="select_automatically" msgid="779750291257872651">"Vybrať sieť automaticky"</string>
@@ -904,6 +904,11 @@
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"Obnoviť"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"Prepnúť kontrolu DNS"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"Informácie alebo nastavenia špecifické pre výrobcu OEM"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"Dostupné EN-DC:"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"Obmedzené DCNR:"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"Dostupné NR:"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"Stav NR:"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"Frekvencia NR:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"Nastaviť režim rádiového pásma"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Načítava sa zoznam pásiem…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Nastaviť"</string>
diff --git a/res/values-sl/qtistrings.xml b/res/values-sl/qtistrings.xml
new file mode 100755
index 0000000..7b04bae
--- /dev/null
+++ b/res/values-sl/qtistrings.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- IMS settings related strings -->
+    <!-- Title displayed IMS account settings in the sip settings category. [CHAR LIMIT=NONE] -->
+    <string name="ims_settings">"Nastavitve IMS"</string>
+
+	<!-- Call auto reject settings -->
+    <string name="auto_reject_toggle_title">"Zavrni klice samodejno."</string>
+    <string name="auto_reject_toggle_summary">"Samodejno zavrnite klice na nedejavnih karticah SIM, kadar so na DDS visoko prioritetni in podatkovni klici"</string>
+</resources>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index 58a087d..40a54b3 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -904,6 +904,11 @@
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"Osveži"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"Preklop preverjanja DNS"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"Informacije/nastavitve za OEM"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"Razpoložljivo za EN-DC:"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"Omejeno za DCNR:"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"Razpoložljivo za NR:"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"Stanje NR:"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"Frekvenca NR:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"Nastavljanje načina radijskega območja"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Nalaganje seznama frekvenčnih pasov …"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Nastavi"</string>
diff --git a/res/values-sq/qtistrings.xml b/res/values-sq/qtistrings.xml
new file mode 100755
index 0000000..394f3f3
--- /dev/null
+++ b/res/values-sq/qtistrings.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- IMS settings related strings -->
+    <!-- Title displayed IMS account settings in the sip settings category. [CHAR LIMIT=NONE] -->
+    <string name="ims_settings">"Cilësimet e IMS"</string>
+
+	<!-- Call auto reject settings -->
+    <string name="auto_reject_toggle_title">"Refuzo thirrjet automatikisht."</string>
+    <string name="auto_reject_toggle_summary">"Refuzoni automatikisht thirrjet në kartat SIM të papunë kur ka përparësi të lartë dhe thirrje të dhënash në DDS"</string>
+</resources>
diff --git a/res/values-sq/strings.xml b/res/values-sq/strings.xml
index 888feac..9e37521 100644
--- a/res/values-sq/strings.xml
+++ b/res/values-sq/strings.xml
@@ -898,6 +898,11 @@
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"Rifresko"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"Ndrysho kontrollin e DNS-së"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"Informacion/cilësime specifike për OEM"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"Ofrohet EN-DC:"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"DCNR me kufizime:"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"Ofrohet NR:"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"Gjendja e NR-së:"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"Frekuenca e NR-së:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"Cakto modalitetin e brezit të radios"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Po ngarkon listën e brezave…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Cakto"</string>
diff --git a/res/values-sr/qtistrings.xml b/res/values-sr/qtistrings.xml
new file mode 100755
index 0000000..7b631a7
--- /dev/null
+++ b/res/values-sr/qtistrings.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- IMS settings related strings -->
+    <!-- Title displayed IMS account settings in the sip settings category. [CHAR LIMIT=NONE] -->
+    <string name="ims_settings">"ИМС подешавања"</string>
+
+	<!-- Call auto reject settings -->
+    <string name="auto_reject_toggle_title">"Аутоматски одбијте позиве."</string>
+    <string name="auto_reject_toggle_summary">"Аутоматски одбијајте позиве на неактивним СИМ картицама када на ДДС-у постоје високоприоритетни и дата позиви"</string>
+</resources>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index bf2c058..1501a88 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -74,7 +74,7 @@
     <string name="phone_accounts_configure_account_settings" msgid="6622119715253196586">"Конфигурисање подешавања налога"</string>
     <string name="phone_accounts_all_calling_accounts" msgid="1609600743500618823">"Сви налози за позивање"</string>
     <string name="phone_accounts_all_calling_accounts_summary" msgid="2214134955430107240">"Изаберите који налози могу да обављају позиве"</string>
-    <string name="wifi_calling" msgid="3650509202851355742">"Позивање преко Wi-Fi-ја"</string>
+    <string name="wifi_calling" msgid="3650509202851355742">"Позивање преко WiFi-а"</string>
     <string name="connection_service_default_label" msgid="7332739049855715584">"Уграђена услуга повезивања"</string>
     <string name="voicemail" msgid="7697769412804195032">"Говорна пошта"</string>
     <string name="voicemail_settings_with_label" msgid="4228431668214894138">"Гласовна пошта (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
@@ -298,7 +298,7 @@
     <string name="sim_selection_required_pref" msgid="6985901872978341314">"Потребно је да изаберете нешто"</string>
     <string name="sim_change_data_title" msgid="9142726786345906606">"Да променимо SIM за податке?"</string>
     <string name="sim_change_data_message" msgid="3567358694255933280">"Желите ли да за мобилне податке користите <xliff:g id="NEW_SIM">%1$s</xliff:g> уместо <xliff:g id="OLD_SIM">%2$s</xliff:g>?"</string>
-    <string name="wifi_calling_settings_title" msgid="5800018845662016507">"Позивање преко Wi-Fi-ја"</string>
+    <string name="wifi_calling_settings_title" msgid="5800018845662016507">"Позивање преко WiFi-а"</string>
     <string name="video_calling_settings_title" msgid="342829454913266078">"Видео позивање преко оператера"</string>
     <string name="gsm_umts_options" msgid="4968446771519376808">"Опције за GSM/UMTS"</string>
     <string name="cdma_options" msgid="3669592472226145665">"CDMA опције"</string>
@@ -542,7 +542,7 @@
     <string name="incall_error_supp_service_hangup" msgid="836524952243836735">"Успостављање позива није успело."</string>
     <string name="incall_error_supp_service_hold" msgid="8535056414643540997">"Није могуће стављати позиве на чекање."</string>
     <string name="incall_error_wfc_only_no_wireless_network" msgid="5860742792811400109">"Повежите се на бежичну мрежу да бисте упутили позив."</string>
-    <string name="incall_error_promote_wfc" msgid="9164896813931363415">"Омогућите позивање преко Wi-Fi-ја да бисте упутили позив."</string>
+    <string name="incall_error_promote_wfc" msgid="9164896813931363415">"Омогућите позивање преко WiFi-а да бисте упутили позив."</string>
     <string name="emergency_information_hint" msgid="9208897544917793012">"Информације за хитне случајеве"</string>
     <string name="emergency_information_owner_hint" msgid="6256909888049185316">"Власник"</string>
     <string name="emergency_information_confirm_hint" msgid="5109017615894918914">"Додирните поново да бисте видели информације"</string>
@@ -564,7 +564,7 @@
     <string name="dialerKeyboardHintText" msgid="1115266533703764049">"Користите тастатуру за позивање"</string>
     <string name="onscreenHoldText" msgid="4025348842151665191">"Чекање"</string>
     <string name="onscreenEndCallText" msgid="6138725377654842757">"Заврши"</string>
-    <string name="onscreenShowDialpadText" msgid="658465753816164079">"Нумеричка тастатура"</string>
+    <string name="onscreenShowDialpadText" msgid="658465753816164079">"Бројчаник"</string>
     <string name="onscreenMuteText" msgid="5470306116733843621">"Искључи звук"</string>
     <string name="onscreenAddCallText" msgid="9075675082903611677">"Додај позив"</string>
     <string name="onscreenMergeCallsText" msgid="3692389519611225407">"Обједини позиве"</string>
@@ -604,7 +604,7 @@
     <string name="ota_hfa_activation_title" msgid="3300556778212729671">"Активирање..."</string>
     <string name="ota_hfa_activation_dialog_message" msgid="7921718445773342996">"Телефон активира услугу мобилног преноса података.\n\nТо може да потраје и до 5 минута."</string>
     <string name="ota_skip_activation_dialog_title" msgid="7666611236789203797">"Желите ли да прескочите активацију?"</string>
-    <string name="ota_skip_activation_dialog_message" msgid="6691722887019708713">"Ако прескочите активацију, не можете да упућујете позиве или да се повезујете са мрежама за мобилни пренос података (иако можете да се повежете са Wi-Fi мрежама). Све док не активирате свој телефон, бићете упитани да то учините сваки пут када га укључите."</string>
+    <string name="ota_skip_activation_dialog_message" msgid="6691722887019708713">"Ако прескочите активацију, не можете да упућујете позиве или да се повезујете са мрежама за мобилни пренос података (иако можете да се повежете са WiFi мрежама). Све док не активирате свој телефон, бићете упитани да то учините сваки пут када га укључите."</string>
     <string name="ota_skip_activation_dialog_skip_label" msgid="5908029466817825633">"Прескочи"</string>
     <string name="ota_activate" msgid="7939695753665438357">"Активирај"</string>
     <string name="ota_title_activate_success" msgid="1272135024761004889">"Телефон је активиран."</string>
@@ -657,7 +657,7 @@
     <string name="not_voice_capable" msgid="2819996734252084253">"Аудио позиви нису подржани"</string>
     <string name="description_dial_button" msgid="8614631902795087259">"бирање"</string>
     <string name="description_dialpad_button" msgid="7395114120463883623">"прикажите нумеричку тастатуру"</string>
-    <string name="pane_title_emergency_dialpad" msgid="3627372514638694401">"Нумеричка тастатура за хитне позиве"</string>
+    <string name="pane_title_emergency_dialpad" msgid="3627372514638694401">"Бројчаник за хитне позиве"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="6610414098912832120">"Визуелна говорна пошта"</string>
     <string name="voicemail_set_pin_dialog_title" msgid="7005128605986960003">"Подесите PIN"</string>
     <string name="voicemail_change_pin_dialog_title" msgid="4633077715231764435">"Промените PIN"</string>
@@ -671,18 +671,18 @@
     <string name="sim_description_emergency_calls" msgid="5146872803938897296">"Само за хитне позиве"</string>
     <string name="sim_description_default" msgid="7474671114363724971">"SIM картица, отвор: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
     <string name="accessibility_settings_activity_title" msgid="7883415189273700298">"Приступачност"</string>
-    <string name="status_hint_label_incoming_wifi_call" msgid="2606052595898044071">"Wi-Fi позив од"</string>
-    <string name="status_hint_label_wifi_call" msgid="942993035689809853">"Wi-Fi позив"</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="2606052595898044071">"WiFi позив од"</string>
+    <string name="status_hint_label_wifi_call" msgid="942993035689809853">"WiFi позив"</string>
     <string name="emergency_action_launch_hint" msgid="2762016865340891314">"Додирните поново да бисте отворили"</string>
     <string name="message_decode_error" msgid="1061856591500290887">"Дошло је до грешке при декодирању поруке."</string>
     <string name="callFailed_cdma_activation" msgid="5392057031552253550">"SIM картица је активирала услугу и ажурирала функције роминга на телефону."</string>
     <string name="callFailed_cdma_call_limit" msgid="1074219746093031412">"Има превише активних позива. Завршите или обједините постојеће позиве пре него што упутите нови."</string>
     <string name="callFailed_imei_not_accepted" msgid="7257903653685147251">"Повезивање није успело, убаците важећу SIM картицу."</string>
-    <string name="callFailed_wifi_lost" msgid="1788036730589163141">"Wi-Fi веза је прекинута. Позив је завршен."</string>
+    <string name="callFailed_wifi_lost" msgid="1788036730589163141">"WiFi веза је прекинута. Позив је завршен."</string>
     <string name="dialFailed_low_battery" msgid="6857904237423407056">"Не можете да упутите позив јер је батерија скоро празна."</string>
     <string name="callFailed_low_battery" msgid="4056828320214416182">"Видео позив је прекинут јер је батерија скоро празна."</string>
-    <string name="callFailed_emergency_call_over_wfc_not_available" msgid="5944309590693432042">"Хитни позиви помоћу функције Позивање преко Wi-Fi-ја нису доступни на овој локацији."</string>
-    <string name="callFailed_wfc_service_not_available_in_this_location" msgid="3624536608369524988">"Позивање преко Wi-Fi-ја није доступно на овој локацији."</string>
+    <string name="callFailed_emergency_call_over_wfc_not_available" msgid="5944309590693432042">"Хитни позиви помоћу функције Позивање преко WiFi-а нису доступни на овој локацији."</string>
+    <string name="callFailed_wfc_service_not_available_in_this_location" msgid="3624536608369524988">"Позивање преко WiFi-а није доступно на овој локацији."</string>
     <string name="change_pin_title" msgid="3564254326626797321">"Промените PIN кôд говорне поште"</string>
     <string name="change_pin_continue_label" msgid="5177011752453506371">"Настави"</string>
     <string name="change_pin_cancel_label" msgid="2301711566758827936">"Откажи"</string>
@@ -827,7 +827,7 @@
     <string name="radio_info_data_connection_disable" msgid="6404751291511368706">"Онемогући везу за пренос података"</string>
     <string name="volte_provisioned_switch_string" msgid="4812874990480336178">"Додељено за VoLTE"</string>
     <string name="vt_provisioned_switch_string" msgid="8295542122512195979">"Видео позиви су додељени"</string>
-    <string name="wfc_provisioned_switch_string" msgid="3835004640321078988">"Позивање преко Wi-Fi-ја је додељено"</string>
+    <string name="wfc_provisioned_switch_string" msgid="3835004640321078988">"Позивање преко WiFi-а је додељено"</string>
     <string name="eab_provisioned_switch_string" msgid="4449676720736033035">"Додељен је EAB/присуство"</string>
     <string name="cbrs_data_switch_string" msgid="6060356430838077653">"Подаци CBRS-а"</string>
     <string name="dsds_switch_string" msgid="7564769822086764796">"Омогући DSDS"</string>
@@ -845,7 +845,7 @@
     <string name="radio_info_ims_reg_status_not_registered" msgid="8045821447288876085">"Није регистровано"</string>
     <string name="radio_info_ims_feature_status_available" msgid="6493200914756969292">"Доступно"</string>
     <string name="radio_info_ims_feature_status_unavailable" msgid="8930391136839759778">"Није доступно"</string>
-    <string name="radio_info_ims_reg_status" msgid="25582845222446390">"Регистрација IMS-а: <xliff:g id="STATUS">%1$s</xliff:g>\nГлас преко LTE-а: <xliff:g id="AVAILABILITY_0">%2$s</xliff:g>\nГлас преко Wi-Fi-ја: <xliff:g id="AVAILABILITY_1">%3$s</xliff:g>\nВидео позив: <xliff:g id="AVAILABILITY_2">%4$s</xliff:g>\nUT интерфејс: <xliff:g id="AVAILABILITY_3">%5$s</xliff:g>"</string>
+    <string name="radio_info_ims_reg_status" msgid="25582845222446390">"Регистрација IMS-а: <xliff:g id="STATUS">%1$s</xliff:g>\nГлас преко LTE-а: <xliff:g id="AVAILABILITY_0">%2$s</xliff:g>\nГлас преко WiFi-а: <xliff:g id="AVAILABILITY_1">%3$s</xliff:g>\nВидео позив: <xliff:g id="AVAILABILITY_2">%4$s</xliff:g>\nUT интерфејс: <xliff:g id="AVAILABILITY_3">%5$s</xliff:g>"</string>
     <string name="radioInfo_service_in" msgid="45753418231446400">"Ради"</string>
     <string name="radioInfo_service_out" msgid="287972405416142312">"Не ради"</string>
     <string name="radioInfo_service_emergency" msgid="4763879891415016848">"Само хитни позиви"</string>
@@ -901,6 +901,11 @@
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"Освежи"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"Укључи/искључи проверу DNS-а"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"Информације/подешавања специфична за произвођача оригиналне опреме"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"EN-DC доступно:"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"DCNR ограничено:"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"NR доступно:"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"NR стање:"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR учесталост:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"Подесите режим радијског опсега"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Учитава се листа опсега…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Подеси"</string>
diff --git a/res/values-sv/qtistrings.xml b/res/values-sv/qtistrings.xml
new file mode 100755
index 0000000..4037cf6
--- /dev/null
+++ b/res/values-sv/qtistrings.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- IMS settings related strings -->
+    <!-- Title displayed IMS account settings in the sip settings category. [CHAR LIMIT=NONE] -->
+    <string name="ims_settings">"IMS-inställningar"</string>
+
+	<!-- Call auto reject settings -->
+    <string name="auto_reject_toggle_title">"Avvisa samtal automatiskt."</string>
+    <string name="auto_reject_toggle_summary">"Avvisa automatiskt samtal på inaktiva SIM-kort när det finns högprioriterade och datasamtal på DDS"</string>
+</resources>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index 2a7b8b0..661b0fd 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -898,6 +898,11 @@
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"Uppdatera"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"Aktivera och inaktivera DNS-kontroll"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"OEM-specifik information/inställningar"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"EN-DC tillgänglig:"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"DCNR begränsad:"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"NR tillgänglig:"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"NR-status:"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR-frekvens:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"Konfigurera radiobandsläget"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Läser in bandlista …"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Ange"</string>
@@ -907,4 +912,6 @@
     <string name="phone_info_label" product="default" msgid="1784175881556791433">"Telefoninformation"</string>
     <string name="carrier_provisioning" msgid="2668065041869578376">"Information om operatörsadministration"</string>
     <string name="trigger_carrier_provisioning" msgid="1301829588620638234">"Aktivera operatörsadministration"</string>
+    <string name="vibrating_for_outgoing_call_accepted_title">Vibrerande för Outoing Call Accepted</string>
+    <string name="smart_divert_summary">CFNRC-inställningar</string>
 </resources>
diff --git a/res/values-sw/qtistrings.xml b/res/values-sw/qtistrings.xml
new file mode 100755
index 0000000..2332b61
--- /dev/null
+++ b/res/values-sw/qtistrings.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- IMS settings related strings -->
+    <!-- Title displayed IMS account settings in the sip settings category. [CHAR LIMIT=NONE] -->
+    <string name="ims_settings">"Mipangilio ya IMS"</string>
+
+	<!-- Call auto reject settings -->
+    <string name="auto_reject_toggle_title">"Kataa simu kiatomati."</string>
+    <string name="auto_reject_toggle_summary">"Kataa simu kiatomati kwenye SIM kadi bila kazi wakati kuna kipaumbele cha juu na simu kwenye DDS"</string>
+</resources>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index 7493201..b91d798 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -898,6 +898,11 @@
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"Onyesha upya"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"Geuza Ukaguzi wa DNS"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"Maelezo/Mipangilio Mahususi kwa Kampuni Inayotengeneza Vifaa (OEM)"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"EN-DC Inapatikana:"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"DCNR Imewekewa Vizuizi:"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"NR Inapatikana:"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"Hali ya NR:"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"Masafa ya NR:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"Weka Hali ya Bendi ya Redio"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Inapakia Orodha ya Bendi…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Weka"</string>
diff --git a/res/values-ta/qtistrings.xml b/res/values-ta/qtistrings.xml
new file mode 100755
index 0000000..1d32d59
--- /dev/null
+++ b/res/values-ta/qtistrings.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- IMS settings related strings -->
+    <!-- Title displayed IMS account settings in the sip settings category. [CHAR LIMIT=NONE] -->
+    <string name="ims_settings">"IMS அமைப்புகள்"</string>
+
+	<!-- Call auto reject settings -->
+    <string name="auto_reject_toggle_title">"அழைப்புகளை தானாக நிராகரிக்கவும்."</string>
+    <string name="auto_reject_toggle_summary">"டி.டி.எஸ்ஸில் அதிக முன்னுரிமை மற்றும் தரவு அழைப்புகள் இருக்கும்போது செயலற்ற சிம் கார்டுகளில் அழைப்புகளை தானாக நிராகரிக்கவும்"</string>
+</resources>
diff --git a/res/values-ta/strings.xml b/res/values-ta/strings.xml
index f73ff2a..9c40867 100644
--- a/res/values-ta/strings.xml
+++ b/res/values-ta/strings.xml
@@ -561,7 +561,7 @@
     <string name="ambulance_type_description" msgid="6798237503553180461">"ஆம்புலன்ஸ்"</string>
     <string name="fire_type_description" msgid="6565200468934914930">"தீயணைப்பு"</string>
     <string name="description_concat_format" msgid="2014471565101724088">"%1$s, %2$s"</string>
-    <string name="dialerKeyboardHintText" msgid="1115266533703764049">"டயல் செய்வதற்கு விசைப்பலகையைப் பயன்படுத்துக"</string>
+    <string name="dialerKeyboardHintText" msgid="1115266533703764049">"டயல் செய்வதற்கு கீபோர்டைப் பயன்படுத்துக"</string>
     <string name="onscreenHoldText" msgid="4025348842151665191">"காத்திரு"</string>
     <string name="onscreenEndCallText" msgid="6138725377654842757">"முடி"</string>
     <string name="onscreenShowDialpadText" msgid="658465753816164079">"டயல்பேடு"</string>
@@ -842,7 +842,7 @@
     <string name="radio_info_ims_reg_status_not_registered" msgid="8045821447288876085">"பதிவுசெய்யப்படவில்லை"</string>
     <string name="radio_info_ims_feature_status_available" msgid="6493200914756969292">"இருக்கிறது"</string>
     <string name="radio_info_ims_feature_status_unavailable" msgid="8930391136839759778">"கிடைக்கவில்லை"</string>
-    <string name="radio_info_ims_reg_status" msgid="25582845222446390">"IMS பதிவு: <xliff:g id="STATUS">%1$s</xliff:g>\nவாய்ஸ் ஓவர் LTE: <xliff:g id="AVAILABILITY_0">%2$s</xliff:g>\nவாய்ஸ் ஓவர் WiFi: <xliff:g id="AVAILABILITY_1">%3$s</xliff:g>\nவீடியோ அழைப்பு: <xliff:g id="AVAILABILITY_2">%4$s</xliff:g>\nUT இடைமுகம்: <xliff:g id="AVAILABILITY_3">%5$s</xliff:g>"</string>
+    <string name="radio_info_ims_reg_status" msgid="25582845222446390">"IMS பதிவு: <xliff:g id="STATUS">%1$s</xliff:g>\nவாய்ஸ் ஓவர் LTE: <xliff:g id="AVAILABILITY_0">%2$s</xliff:g>\nவாய்ஸ் ஓவர் வைஃபை: <xliff:g id="AVAILABILITY_1">%3$s</xliff:g>\nவீடியோ அழைப்பு: <xliff:g id="AVAILABILITY_2">%4$s</xliff:g>\nUT இடைமுகம்: <xliff:g id="AVAILABILITY_3">%5$s</xliff:g>"</string>
     <string name="radioInfo_service_in" msgid="45753418231446400">"சேவையில் உள்ளது"</string>
     <string name="radioInfo_service_out" msgid="287972405416142312">"சேவையில் இல்லை"</string>
     <string name="radioInfo_service_emergency" msgid="4763879891415016848">"அவசர அழைப்புகள் மட்டும்"</string>
@@ -898,6 +898,11 @@
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"புதுப்பி"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"DNS சரிபார்ப்பை நிலைமாற்று"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"OEM சார்ந்த தகவல்/அமைப்புகள்"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"EN-DC உள்ளது:"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"DCNR கட்டுப்படுத்தப்பட்டது:"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"NR உள்ளது:"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"NR நிலை:"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR அலைவரிசை:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"ரேடியோ பேண்டு பயன்முறையை அமை"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"பேண்டு பட்டியலை ஏற்றுகிறது…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"அமை"</string>
diff --git a/res/values-te/qtistrings.xml b/res/values-te/qtistrings.xml
new file mode 100755
index 0000000..d0b6ba9
--- /dev/null
+++ b/res/values-te/qtistrings.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- IMS settings related strings -->
+    <!-- Title displayed IMS account settings in the sip settings category. [CHAR LIMIT=NONE] -->
+    <string name="ims_settings">"IMS సెట్టింగులు"</string>
+
+	<!-- Call auto reject settings -->
+    <string name="auto_reject_toggle_title">"కాల్‌లను స్వయంచాలకంగా తిరస్కరించండి."</string>
+    <string name="auto_reject_toggle_summary">"DDS లో అధిక ప్రాధాన్యత మరియు డేటా కాల్‌లు ఉన్నప్పుడు నిష్క్రియ సిమ్ కార్డులపై కాల్‌లను స్వయంచాలకంగా తిరస్కరించండి"</string>
+</resources>
diff --git a/res/values-te/strings.xml b/res/values-te/strings.xml
index 069d7ed..1849581 100644
--- a/res/values-te/strings.xml
+++ b/res/values-te/strings.xml
@@ -274,8 +274,8 @@
     <string name="data_enable_summary" msgid="696860063456536557">"డేటా వినియోగాన్ని అనుమతించు"</string>
     <string name="dialog_alert_title" msgid="5260471806940268478">"హెచ్చరిక"</string>
     <string name="roaming" msgid="1576180772877858949">"రోమింగ్"</string>
-    <string name="roaming_enable" msgid="6853685214521494819">"రోమింగ్‌లో ఉన్నప్పుడు డేటా సేవలకు కనెక్ట్ చేయి"</string>
-    <string name="roaming_disable" msgid="8856224638624592681">"రోమింగ్‌లో ఉన్నప్పుడు డేటా సేవలకు కనెక్ట్ చేయి"</string>
+    <string name="roaming_enable" msgid="6853685214521494819">"రోమింగ్‌లో ఉన్నప్పుడు డేటా సర్వీసులకు కనెక్ట్ చేయండి"</string>
+    <string name="roaming_disable" msgid="8856224638624592681">"రోమింగ్‌లో ఉన్నప్పుడు డేటా సర్వీసులకు కనెక్ట్ చేయండి"</string>
     <string name="roaming_reenable_message" msgid="1951802463885727915">"డేటా రోమింగ్ ఆఫ్ చేయబడింది. ఆన్ చేయడానికి నొక్కండి."</string>
     <string name="roaming_enabled_message" msgid="9022249120750897">"రోమింగ్ ఛార్జీలు వర్తించవచ్చు. మార్చడానికి నొక్కండి."</string>
     <string name="roaming_notification_title" msgid="3590348480688047320">"మొబైల్ డేటా కనెక్షన్‌ని కోల్పోయారు"</string>
@@ -288,7 +288,7 @@
     <string name="limited_sim_function_notification_message" msgid="5338638075496721160">"వేరొక SIMను ఉపయోగిస్తున్నప్పుడు <xliff:g id="CARRIER_NAME">%1$s</xliff:g> కాల్‌లు మరియు డేటా సేవలు బ్లాక్ చేయబడవచ్చు."</string>
     <string name="data_usage_title" msgid="8438592133893837464">"యాప్ డేటా వినియోగం"</string>
     <string name="data_usage_template" msgid="6287906680674061783">"<xliff:g id="ID_2">%2$s</xliff:g> మధ్య కాలంలో <xliff:g id="ID_1">%1$s</xliff:g> మొబైల్ డేటా ఉపయోగించబడింది"</string>
-    <string name="advanced_options_title" msgid="9208195294513520934">"అధునాతనం"</string>
+    <string name="advanced_options_title" msgid="9208195294513520934">"అధునాతన సెట్టింగ్‌లు"</string>
     <string name="carrier_settings_euicc" msgid="1190237227261337749">"క్యారియర్"</string>
     <string name="keywords_carrier_settings_euicc" msgid="8540160967922063745">"క్యారియర్, ఇసిమ్, సిమ్, ఇయుక్, క్యారియర్‌లను మార్చు, క్యారియర్‌ను జోడించు"</string>
     <string name="carrier_settings_euicc_summary" msgid="2027941166597330117">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> — <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
@@ -625,8 +625,8 @@
     <string name="phone_in_ecm_call_notification_text" msgid="653972232922670335">"డేటా కనెక్షన్ నిలిపివేయబడింది"</string>
     <string name="phone_in_ecm_notification_complete_time" msgid="7341624337163082759">"<xliff:g id="COMPLETETIME">%s</xliff:g> వరకు డేటా కనెక్షన్ ఉండదు"</string>
     <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="5425906903766466743">
-      <item quantity="other">ఫోన్ <xliff:g id="COUNT_1">%s</xliff:g> నిమిషాల పాటు అత్యవసర కాల్‌బ్యాక్ మోడ్‌లో ఉంటుంది. ఈ మోడ్‌లో ఉన్నప్పుడు, డేటా కనెక్షన్‌ను ఉపయోగించే అనువర్తనాలు ఏవీ ఉపయోగించబడవు. మీరు ఇప్పుడు నిష్క్రమించాలనుకుంటున్నారా?</item>
-      <item quantity="one">ఫోన్ <xliff:g id="COUNT_0">%s</xliff:g> నిమిషం పాటు అత్యవసర కాల్‌బ్యాక్ మోడ్‌లో ఉంటుంది. ఈ మోడ్‌లో ఉన్నప్పుడు, డేటా కనెక్షన్‌ను ఉపయోగించే అనువర్తనాలు ఏవీ ఉపయోగించబడవు. మీరు ఇప్పుడు నిష్క్రమించాలనుకుంటున్నారా?</item>
+      <item quantity="other">ఫోన్ <xliff:g id="COUNT_1">%s</xliff:g> నిమిషాల పాటు అత్యవసర కాల్‌బ్యాక్ మోడ్‌లో ఉంటుంది. ఈ మోడ్‌లో ఉన్నప్పుడు, డేటా కనెక్షన్‌ను ఉపయోగించే యాప్‌లు ఏవీ ఉపయోగించబడవు. మీరు ఇప్పుడు నిష్క్రమించాలనుకుంటున్నారా?</item>
+      <item quantity="one">ఫోన్ <xliff:g id="COUNT_0">%s</xliff:g> నిమిషం పాటు అత్యవసర కాల్‌బ్యాక్ మోడ్‌లో ఉంటుంది. ఈ మోడ్‌లో ఉన్నప్పుడు, డేటా కనెక్షన్‌ను ఉపయోగించే యాప్‌లు ఏవీ ఉపయోగించబడవు. మీరు ఇప్పుడు నిష్క్రమించాలనుకుంటున్నారా?</item>
     </plurals>
     <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="1152682528741457004">
       <item quantity="other">అత్యవసర కాల్‌బ్యాక్ మోడ్‌లో ఉన్నప్పుడు, ఎంచుకున్న చర్య అందుబాటులో లేదు. ఫోన్ <xliff:g id="COUNT_1">%s</xliff:g> నిమిషాల పాటు ఈ మోడ్‌లో ఉంటుంది. మీరు ఇప్పుడు నిష్క్రమించాలనుకుంటున్నారా?</item>
@@ -898,6 +898,11 @@
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"రిఫ్రెష్ చేయి"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"DNS తనిఖీని టోగుల్ చేయండి"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"OEM-నిర్దిష్ట సమాచారం/సెట్టింగ్‌లు"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"EN-DC అందుబాటులో ఉంది:"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"DCNR నియంత్రించబడింది:"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"NR అందుబాటులో ఉంది:"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"NR స్టేటస్:"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR ఫ్రీక్వెన్సీ:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"రేడియో బ్యాండ్ మోడ్‌ను సెట్ చేయండి"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"బ్యాండ్ జాబితాను లోడ్ చేస్తోంది…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"సెట్ చేయి"</string>
diff --git a/res/values-th/qtistrings.xml b/res/values-th/qtistrings.xml
new file mode 100755
index 0000000..c81dd34
--- /dev/null
+++ b/res/values-th/qtistrings.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- IMS settings related strings -->
+    <!-- Title displayed IMS account settings in the sip settings category. [CHAR LIMIT=NONE] -->
+    <string name="ims_settings">"การตั้งค่า IMS"</string>
+
+	<!-- Call auto reject settings -->
+    <string name="auto_reject_toggle_title">"ปฏิเสธสายโดยอัตโนมัติ"</string>
+    <string name="auto_reject_toggle_summary">"ปฏิเสธสายโดยอัตโนมัติในซิมการ์ดที่ไม่ได้ใช้งานเมื่อมีลำดับความสำคัญสูงและการโทรข้อมูลบน DDS"</string>
+</resources>
\ No newline at end of file
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index 29fb43d..e527e89 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -898,6 +898,11 @@
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"รีเฟรช"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"สลับการตรวจสอบ DNS"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"ข้อมูล/การตั้งค่าเฉพาะตาม OEM"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"มี EN-DC:"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"DCNR ถูกจำกัด:"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"มี NR:"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"สถานะ NR:"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"ความถี่ NR:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"ตั้งค่าโหมดย่านความถี่วิทยุ"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"กำลังโหลดรายการย่านความถี่…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"ตั้งค่า"</string>
diff --git a/res/values-tl/qtistrings.xml b/res/values-tl/qtistrings.xml
new file mode 100755
index 0000000..a4ee7a1
--- /dev/null
+++ b/res/values-tl/qtistrings.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- IMS settings related strings -->
+    <!-- Title displayed IMS account settings in the sip settings category. [CHAR LIMIT=NONE] -->
+    <string name="ims_settings">"Mga setting ng IMS"</string>
+
+	<!-- Call auto reject settings -->
+    <string name="auto_reject_toggle_title">"Awtomatikong tanggihan ang mga tawag."</string>
+    <string name="auto_reject_toggle_summary">"Awtomatikong tanggihan ang mga tawag sa mga idle SIM card kapag may mataas na priyoridad at mga tawag sa data sa DDS"</string>
+</resources>
\ No newline at end of file
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
index fc117cf..83b4585 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -306,7 +306,7 @@
     <string name="throttle_current_usage" msgid="7483859109708658613">"Ginamit na data sa kasalukuyang panahon"</string>
     <string name="throttle_time_frame" msgid="1813452485948918791">"Panahon ng paggamit ng data"</string>
     <string name="throttle_rate" msgid="7641913901133634905">"Patakaran ng rate ng data"</string>
-    <string name="throttle_help" msgid="2624535757028809735">"Matuto nang higit pa"</string>
+    <string name="throttle_help" msgid="2624535757028809735">"Matuto pa"</string>
     <string name="throttle_status_subtext" msgid="1110276415078236687">"<xliff:g id="USED_0">%1$s</xliff:g> (<xliff:g id="USED_1">%2$d</xliff:g>٪) ng <xliff:g id="USED_2">%3$s</xliff:g> maximum na tagal ng panahon\nMagsisimula ang susunod na tagal ng panahon sa loob ng <xliff:g id="USED_3">%4$d</xliff:g> (na) araw (<xliff:g id="USED_4">%5$s</xliff:g>)"</string>
     <string name="throttle_data_usage_subtext" msgid="3185429653996709840">"<xliff:g id="USED_0">%1$s</xliff:g> (<xliff:g id="USED_1">%2$d</xliff:g>٪) ng <xliff:g id="USED_2">%3$s</xliff:g> maximum na period"</string>
     <string name="throttle_data_rate_reduced_subtext" msgid="8369839346277847725">"Ang <xliff:g id="USED_0">%1$s</xliff:g> na maximum ay lumagpas sa\nBinabaan ang rate ng data sa <xliff:g id="USED_1">%2$d</xliff:g> Kb/s"</string>
@@ -898,6 +898,11 @@
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"I-refresh"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"I-toggle ang DNS Check"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"Impormasyon/Mga Setting na partikular sa OEM"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"Available ang EN-DC:"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"Pinaghihigpitan ang DCNR:"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"Available ang NR:"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"Status ng NR:"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"Frequency ng NR:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"Itakda ang Band Mode ng Radyo"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Nilo-load ang Listahan ng Band…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Itakda"</string>
diff --git a/res/values-tr/qtistrings.xml b/res/values-tr/qtistrings.xml
new file mode 100755
index 0000000..d5a8020
--- /dev/null
+++ b/res/values-tr/qtistrings.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- IMS settings related strings -->
+    <!-- Title displayed IMS account settings in the sip settings category. [CHAR LIMIT=NONE] -->
+    <string name="ims_settings">"IMS ayarları"</string>
+
+	<!-- Call auto reject settings -->
+    <string name="auto_reject_toggle_title">"Aramaları otomatik olarak reddet."</string>
+    <string name="auto_reject_toggle_summary">"DDS'de yüksek öncelikli ve veri aramaları olduğunda, boştaki SIM kartlarda aramaları otomatik olarak reddedin"</string>
+</resources>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index 2d34fa1..3a9a099 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -546,7 +546,7 @@
     <string name="emergency_information_hint" msgid="9208897544917793012">"Acil durum bilgisi"</string>
     <string name="emergency_information_owner_hint" msgid="6256909888049185316">"Sahip"</string>
     <string name="emergency_information_confirm_hint" msgid="5109017615894918914">"Bilgileri görüntülemek için tekrar dokunun"</string>
-    <string name="emergency_enable_radio_dialog_title" msgid="2667568200755388829">"Acil durum çağrısı"</string>
+    <string name="emergency_enable_radio_dialog_title" msgid="2667568200755388829">"Acil durum araması"</string>
     <string name="single_emergency_number_title" msgid="8413371079579067196">"Acil durum numarası"</string>
     <string name="numerous_emergency_numbers_title" msgid="8972398932506755510">"Acil durum numaraları"</string>
     <string name="emergency_call_shortcut_hint" msgid="1290485125107779500">"<xliff:g id="EMERGENCY_NUMBER">%s</xliff:g> numaralı telefonu aramak için tekrar dokunun"</string>
@@ -898,6 +898,11 @@
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"Yenile"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"DNS Denetimini Aç/Kapat"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"OEM\'e Özgü Bilgiler/Ayarlar"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"EN-DC Kullanılabilir:"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"DCNR Kısıtlanmış:"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"NR Kullanılabilir:"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"NR Durumu:"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR Frekansı:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"Radyo Bant Modunu Ayarla"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Bant Listesi Yükleniyor…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Ayarla"</string>
diff --git a/res/values-uk/qtistrings.xml b/res/values-uk/qtistrings.xml
new file mode 100755
index 0000000..e65f5d5
--- /dev/null
+++ b/res/values-uk/qtistrings.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- IMS settings related strings -->
+    <!-- Title displayed IMS account settings in the sip settings category. [CHAR LIMIT=NONE] -->
+    <string name="ims_settings">"Налаштування IMS"</string>
+
+	<!-- Call auto reject settings -->
+    <string name="auto_reject_toggle_title">"Автоматично відхиляти дзвінки."</string>
+    <string name="auto_reject_toggle_summary">"Автоматично відхиляти дзвінки на неактивних SIM-картах, коли DDS має високий пріоритет та дзвінки даних"</string>
+</resources>
\ No newline at end of file
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index 7f5b8cb..5cdd5fb 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -904,6 +904,11 @@
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"Оновити"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"Увімк./вимк. перевірку DNS"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"Інформація/налаштування OEM"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"EN-DC доступно:"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"DCNR обмежено:"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"NR доступно:"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"Статус NR:"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"Частота NR:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"Установити режим радіодіапазону"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Завантаження списку діапазонів частот…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Установити"</string>
diff --git a/res/values-ur/qtistrings.xml b/res/values-ur/qtistrings.xml
new file mode 100755
index 0000000..315b75c
--- /dev/null
+++ b/res/values-ur/qtistrings.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- IMS settings related strings -->
+    <!-- Title displayed IMS account settings in the sip settings category. [CHAR LIMIT=NONE] -->
+    <string name="ims_settings">"IMS کی ترتیبات"</string>
+
+	<!-- Call auto reject settings -->
+    <string name="auto_reject_toggle_title">"کالز خودبخود مسترد کردیں۔"</string>
+    <string name="auto_reject_toggle_summary">"جب ڈی ڈی ایس پر اعلی ترجیح اور ڈیٹا کالز ہوں تو بیکار سم کارڈز پر کالز کو خودکار طور پر مسترد کریں"</string>
+</resources>
diff --git a/res/values-ur/strings.xml b/res/values-ur/strings.xml
index f28b4fa..4209b1e 100644
--- a/res/values-ur/strings.xml
+++ b/res/values-ur/strings.xml
@@ -159,7 +159,7 @@
     <string name="vm_change_pin_progress_message" msgid="626015184502739044">"براہ کرم انتظار کریں۔"</string>
     <string name="vm_change_pin_error_too_short" msgid="1789139338449945483">"‏نیا PIN بہت ہی مختصر ہے۔"</string>
     <string name="vm_change_pin_error_too_long" msgid="3634907034310018954">"‏نیا PIN بہت ہی طویل ہے۔"</string>
-    <string name="vm_change_pin_error_too_weak" msgid="8581892952627885719">"‏نیا PIN بہت ہی کمزور ہے۔ مضبوط پاسورڈ میں مسلسل ترتیب یا دہرے عدد نہیں ہونے چاہئیں۔"</string>
+    <string name="vm_change_pin_error_too_weak" msgid="8581892952627885719">"‏نیا PIN بہت ہی کمزور ہے۔ مضبوط پاس ورڈ میں مسلسل ترتیب یا دہرے عدد نہیں ہونے چاہئیں۔"</string>
     <string name="vm_change_pin_error_mismatch" msgid="5364847280026257331">"‏پرانا PIN مماثل نہیں ہے۔"</string>
     <string name="vm_change_pin_error_invalid" msgid="5230002671175580674">"‏نئے PIN میں غلط کریکٹرز شامل ہیں۔"</string>
     <string name="vm_change_pin_error_system_error" msgid="9116483527909681791">"‏PIN تبدیل کرنے سے قاصر"</string>
@@ -898,6 +898,11 @@
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"ریفریش کریں"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"‏DNS چیک ٹوگل کریں"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"‏OEM-کیلئے مخصوص معلومات/ترتیبات"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"‏EN-DC دستیاب ہے:"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"‏DCNR محدود کردہ:"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"‏NR دستیاب ہے:"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"‏NR ریاست:"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"‏NR فریکوئنسی:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"ریڈیو بینڈ موڈ سیٹ کریں"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"بینڈ کی فہرست لوڈ ہو رہی ہے…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"سیٹ کریں"</string>
diff --git a/res/values-uz/qtistrings.xml b/res/values-uz/qtistrings.xml
new file mode 100755
index 0000000..fd8634d
--- /dev/null
+++ b/res/values-uz/qtistrings.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- IMS settings related strings -->
+    <!-- Title displayed IMS account settings in the sip settings category. [CHAR LIMIT=NONE] -->
+    <string name="ims_settings">"IMS sozlamalari"</string>
+
+	<!-- Call auto reject settings -->
+    <string name="auto_reject_toggle_title">"Qo'ng'iroqlarni avtomatik ravishda rad etish."</string>
+    <string name="auto_reject_toggle_summary">"DDS-da ustuvorlik va ma'lumotlar qo'ng'iroqlari mavjud bo'lganda, bo'sh turgan SIM-kartalardagi qo'ng'iroqlarni avtomatik ravishda rad etish"</string>
+</resources>
diff --git a/res/values-uz/strings.xml b/res/values-uz/strings.xml
index 9358dd0..982bef7 100644
--- a/res/values-uz/strings.xml
+++ b/res/values-uz/strings.xml
@@ -28,7 +28,7 @@
     <string name="carrier_mmi_msg_title" msgid="6050165242447507034">"<xliff:g id="MMICARRIER">%s</xliff:g> orqali xabar"</string>
     <string name="default_carrier_mmi_msg_title" msgid="7754317179938537213">"Operatordan xabar"</string>
     <string name="mmiStarted" msgid="9212975136944568623">"MMI kodi ishga tushirildi"</string>
-    <string name="ussdRunning" msgid="1163586813106772717">"USSD so‘rov bajarilmoqda…"</string>
+    <string name="ussdRunning" msgid="1163586813106772717">"USSD kod yuborilmoqda…"</string>
     <string name="mmiCancelled" msgid="5339191899200678272">"MMI kodi bekor qilindi"</string>
     <string name="cancel" msgid="8984206397635155197">"Bekor qilish"</string>
     <string name="enter_input" msgid="6193628663039958990">"USSD xabari <xliff:g id="MIN_LEN">%1$d</xliff:g>dan <xliff:g id="MAX_LEN">%2$d</xliff:g>tagacha belgi bo‘lishi kerak. Yana urinib ko‘ring."</string>
@@ -447,7 +447,7 @@
     <string name="auto_retry_mode_title" msgid="2985801935424422340">"Avto-qayta urinish"</string>
     <string name="auto_retry_mode_summary" msgid="2863919925349511402">"Avto-qayta urinish rejimini yoqish"</string>
     <string name="tty_mode_not_allowed_video_call" msgid="6551976083652752815">"Video qo‘ng‘iroq davomida TTY rejimini o‘zgartirish taqiqlangan"</string>
-    <string name="menu_add" msgid="5616487894975773141">"Kontakt saqlash"</string>
+    <string name="menu_add" msgid="5616487894975773141">"Kontaktni saqlash"</string>
     <string name="menu_edit" msgid="3593856941552460706">"Kontaktni tahrirlash"</string>
     <string name="menu_delete" msgid="6326861853830546488">"Kontaktni o‘chirish"</string>
     <string name="menu_dial" msgid="4178537318419450012">"Kontaktga qo‘ng‘iroq qilish"</string>
@@ -522,7 +522,7 @@
     <string name="notification_voicemail_no_vm_number" msgid="3423686009815186750">"Ovozli pochta raqami noma’lum"</string>
     <string name="notification_network_selection_title" msgid="255595526707809121">"Xizmat mavjud emas"</string>
     <string name="notification_network_selection_text" msgid="553288408722427659">"Tanlangan tarmoq (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) mavjud emas"</string>
-    <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"Qo‘ng‘iroq qilish uchun mobil tarmoqni yoqing, parvoz yoki quvvat tejash rejimini o‘chirib qo‘ying."</string>
+    <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"Telefon qilish uchun mobil tarmoqni yoqing, parvoz yoki quvvat tejash rejimini oʻchiring."</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"Qo‘ng‘iroq qilish uchun parvoz rejimini o‘chiring"</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"Qo‘ng‘iroq qilish uchun parvoz rejimini o‘chiring yoki simsiz tarmoqqa ulaning."</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Odatiy qo‘ng‘iroq qilish uchun favqulodda qayta qo‘ng‘iroq rejimidan chiqing."</string>
@@ -898,6 +898,11 @@
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"Yangilash"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"DNS tekshiruvini yoqish/o‘chirish"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"OEM maxsus axboroti va sozlamalari"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"EN-DC ochiq:"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"DCNR cheklangan:"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"NR ochiq:"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"NR holati:"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR chastotasi:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"Tarmoq rejimini sozlash"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Chastotalar ro‘yxati yuklanmoqda…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Saqlash"</string>
diff --git a/res/values-vi/qtistrings.xml b/res/values-vi/qtistrings.xml
new file mode 100755
index 0000000..2b7cb16
--- /dev/null
+++ b/res/values-vi/qtistrings.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- IMS settings related strings -->
+    <!-- Title displayed IMS account settings in the sip settings category. [CHAR LIMIT=NONE] -->
+    <string name="ims_settings">"Cài đặt IMS"</string>
+
+	<!-- Call auto reject settings -->
+    <string name="auto_reject_toggle_title">"Tự động từ chối cuộc gọi."</string>
+    <string name="auto_reject_toggle_summary">"Tự động từ chối cuộc gọi trên thẻ SIM không hoạt động khi có các cuộc gọi dữ liệu và ưu tiên cao trên DDS"</string>
+</resources>
\ No newline at end of file
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index dfc0c11..d34d544 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -898,6 +898,11 @@
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"Làm mới"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"Bật/tắt chế độ kiểm tra DNS"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"Thông tin/Cài đặt dành riêng cho OEM"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"Hỗ trợ EN-DC:"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"Hạn chế DCNR:"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"Hỗ trợ NR:"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"Trạng thái NR:"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"Tần số NR:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"Đặt chế độ dải tần số"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Đang tải danh sách băng tần…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Đặt"</string>
diff --git a/res/values-zh-rCN/qtistrings.xml b/res/values-zh-rCN/qtistrings.xml
new file mode 100755
index 0000000..6b2c230
--- /dev/null
+++ b/res/values-zh-rCN/qtistrings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- IMS settings related strings -->
+    <!-- Title displayed IMS account settings in the sip settings category. [CHAR LIMIT=NONE] -->
+    <string name="ims_settings">"IMS 设置"</string>
+    <!-- VT call quality settings. -->
+    <string name="ims_vt_call_quality_title">"VT 通话质量"</string>
+    <string name="ims_vt_call_quality_low">"低"</string>
+    <string name="ims_vt_call_quality_high">"高"</string>
+    <string name="ims_vt_call_quality_unknown">"未知"</string>
+    <string name="ims_vt_call_quality_set_failed">"无法设置视频画质"</string>
+    <!-- Call Deflect settings -->
+    <string name="qti_ims_call_deflect_title">"呼叫转移号码"</string>
+    <string name="qti_ims_number_not_set">"未设置"</string>
+    <!-- IMS to CS Retry setting title.  [CHAR LIMIT=30] -->
+    <string name="ims_to_cs_retry_title">"CS 重试"</string>
+    <!-- IMS to CS Retry setting summary.  [CHAR LIMIT=80] -->
+    <string name="ims_to_cs_retry_summary">"自动重试常规语音通信(推荐)"</string>
+	<!-- Call auto reject settings -->
+    <string name="auto_reject_toggle_title">"自动拒绝来电."</string>
+    <string name="auto_reject_toggle_summary">"当DDS子上有高优先级数据呼叫时,自动拒绝空闲SIM卡上的来电"</string>
+</resources>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index 304230d..348b117 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -585,6 +585,8 @@
     <string name="rtt_mode_summary" msgid="8631541375609989562">"允许在语音通话中发送信息"</string>
     <string name="rtt_mode_more_information" msgid="587500128658756318">"RTT 可为以下类型的来电者提供协助:失聪者、听力障碍人士、语言障碍人士或需要语音以外服务的人。&lt;br&gt; &lt;a href=<xliff:g id="URL">http://support.google.com/mobile?p=telephony_rtt</xliff:g>&gt;了解详情&lt;/a&gt;\n       &lt;br&gt;&lt;br&gt; - 系统会以信息转录的方式存储 RTT 通话\n       &lt;br&gt; - 视频通话不支持 RTT"</string>
     <string name="no_rtt_when_roaming" msgid="5268008247378355389">"注意:漫游时无法使用 RTT 功能"</string>
+    <string name="vibrating_for_outgoing_call_accepted_title">"当拨出电话接通时震动设备"</string>
+    <string name="vibrating_for_outgoing_call_accepted_summary">"启用当拨出电话接通时震动设备"</string>
   <string-array name="tty_mode_entries">
     <item msgid="3238070884803849303">"TTY 关闭"</item>
     <item msgid="1449091874731375214">"TTY 完整"</item>
@@ -898,6 +900,11 @@
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"刷新"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"切换 DNS 检查"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"特定 OEM 的信息/设置"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"4G/5G 双连接可用:"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"5G 双连接受限:"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"5G 可用:"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"5G 状态:"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"5G 频率:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"设置无线装置频道模式"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"正在加载频道列表…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"设置"</string>
@@ -907,4 +914,40 @@
     <string name="phone_info_label" product="default" msgid="1784175881556791433">"手机信息"</string>
     <string name="carrier_provisioning" msgid="2668065041869578376">"运营商配置信息"</string>
     <string name="trigger_carrier_provisioning" msgid="1301829588620638234">"触发运营商配置"</string>
+    <string name="srvcc_video_message">"4G网络不可用,视频电话降级到2G/3G语音电话."</string>
+    <string name="srvcc_message">"4G网络不可用,4G语音电话降级到2G/3G语音电话."</string>
+    <string name="ut_not_support">UT补充业务不可用</string>
+    <string name="ct_ut_not_support_close_4glte">UT补充业务不可用,请在设置中关闭增强4G LTE选项</string>
+    <!-- Call forwarding settings screen, setting timer info for cfut case -->
+    <string name="set_time_period">设置时间区间</string>
+    <string name="all_day">" 全天"</string>
+    <string name="time_interval_char">: </string>
+    <string name="time_start">" 自 "</string>
+    <string name="time_start_hour">"起始小时"</string>
+    <string name="time_start_minute">"起始分钟"</string>
+    <string name="time_end">" 到 "</string>
+    <string name="time_next_day">" 第二天"</string>
+    <string name="time_end_hour">"结束小时"</string>
+    <string name="time_end_minute">"结束分钟"</string>
+    <string name="time_formate_am">"上午"</string>
+    <string name="time_formate_pm">"下午"</string>
+    <string name="labelCFType">"呼叫转移设置"</string>
+    <string name="labelCFVoice">"语音"</string>
+    <string name="labelCFVideo">"视频"</string>
+    <string name="call_forward_option">"呼叫转移选项"</string>
+
+    <string name="cf_setting_mobile_data_alert">请开启手机数据连接,并确保WLAN已关闭</string>
+    <string name="no_mobile_data">移动数据连接不可用</string>
+    <string name="cf_setting_mobile_data_alert_roaming">请开启数据漫游</string>
+    <string name="no_mobile_data_roaming">数据漫游不可用</string>
+    <!--alert user to switch DDS when user is making UT supplementary service on non-DDS sub -->
+    <string name="switch_dds_to_sub_alert">请将移动数据切到卡槽</string>
+    <string name="mobile_data_alert">副卡可能会产生数据流量</string>
+    <string name="mobile_data">移动数据</string>
+    <string name="sim_is_not_ready">SIM卡未就绪</string>
+    <string name="switch_dds_to_sub_alert_msg">请将移动数据切到卡</string>
+    <string name="labelCommonMore" msgid="5930842194056092107">"通话设置"</string>
+    <string name="labelCommonMore_with_label" msgid="2674012918829238902">"通话设置(<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+    <string name="sum_common_settings" msgid="284753265979035550">"其他通话设置"</string>
+    <string name="incall_error_outgoing_call_failed">"呼叫失败"</string>
 </resources>
diff --git a/res/values-zh-rHK/qtistrings.xml b/res/values-zh-rHK/qtistrings.xml
new file mode 100755
index 0000000..6b2c230
--- /dev/null
+++ b/res/values-zh-rHK/qtistrings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- IMS settings related strings -->
+    <!-- Title displayed IMS account settings in the sip settings category. [CHAR LIMIT=NONE] -->
+    <string name="ims_settings">"IMS 设置"</string>
+    <!-- VT call quality settings. -->
+    <string name="ims_vt_call_quality_title">"VT 通话质量"</string>
+    <string name="ims_vt_call_quality_low">"低"</string>
+    <string name="ims_vt_call_quality_high">"高"</string>
+    <string name="ims_vt_call_quality_unknown">"未知"</string>
+    <string name="ims_vt_call_quality_set_failed">"无法设置视频画质"</string>
+    <!-- Call Deflect settings -->
+    <string name="qti_ims_call_deflect_title">"呼叫转移号码"</string>
+    <string name="qti_ims_number_not_set">"未设置"</string>
+    <!-- IMS to CS Retry setting title.  [CHAR LIMIT=30] -->
+    <string name="ims_to_cs_retry_title">"CS 重试"</string>
+    <!-- IMS to CS Retry setting summary.  [CHAR LIMIT=80] -->
+    <string name="ims_to_cs_retry_summary">"自动重试常规语音通信(推荐)"</string>
+	<!-- Call auto reject settings -->
+    <string name="auto_reject_toggle_title">"自动拒绝来电."</string>
+    <string name="auto_reject_toggle_summary">"当DDS子上有高优先级数据呼叫时,自动拒绝空闲SIM卡上的来电"</string>
+</resources>
diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml
index 39a819e..d60fdcd 100644
--- a/res/values-zh-rHK/strings.xml
+++ b/res/values-zh-rHK/strings.xml
@@ -510,7 +510,7 @@
     <string name="voicemail_settings_number_label" msgid="1265118640154688162">"留言信箱號碼"</string>
     <string name="card_title_dialing" msgid="8742182654254431781">"撥號中"</string>
     <string name="card_title_redialing" msgid="18130232613559964">"重撥"</string>
-    <string name="card_title_conf_call" msgid="901197309274457427">"視訊會議"</string>
+    <string name="card_title_conf_call" msgid="901197309274457427">"視像會議"</string>
     <string name="card_title_incoming_call" msgid="881424648458792430">"來電"</string>
     <string name="card_title_call_ended" msgid="650223980095026340">"通話已結束"</string>
     <string name="card_title_on_hold" msgid="9028319436626975207">"保留通話"</string>
@@ -898,6 +898,11 @@
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"重新整理"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"切換 DNS 檢查"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"OEM 專用資訊/設定"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"EN-DC 可用:"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"DCNR 受限:"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"NR 可用:"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"NR 狀態:"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR 頻率:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"設定無線電頻段模式"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"正在載入頻段清單…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"設定"</string>
diff --git a/res/values-zh-rTW/qtistrings.xml b/res/values-zh-rTW/qtistrings.xml
new file mode 100755
index 0000000..0315688
--- /dev/null
+++ b/res/values-zh-rTW/qtistrings.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- IMS settings related strings -->
+    <!-- Title displayed IMS account settings in the sip settings category. [CHAR LIMIT=NONE] -->
+    <string name="ims_settings">"IMS 設定"</string>
+
+	<!-- Call auto reject settings -->
+    <string name="auto_reject_toggle_title">"自動拒絕來電."</string>
+    <string name="auto_reject_toggle_summary">"當DDS上有高優先及數據呼叫時,自動拒絕空閑SIM卡上的來電"</string>
+</resources>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index 4a51e36..585f332 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -22,7 +22,7 @@
     <string name="phoneIconLabel" msgid="3015941229249651419">"電話"</string>
     <string name="fdnListLabel" msgid="4119121875004244097">"固定撥號清單"</string>
     <string name="unknown" msgid="8279698889921830815">"不明"</string>
-    <string name="private_num" msgid="4487990167889159992">"私人號碼"</string>
+    <string name="private_num" msgid="4487990167889159992">"隱藏號碼"</string>
     <string name="payphone" msgid="7936735771836716941">"公用電話"</string>
     <string name="onHold" msgid="6132725550015899006">"通話保留"</string>
     <string name="carrier_mmi_msg_title" msgid="6050165242447507034">"「<xliff:g id="MMICARRIER">%s</xliff:g>」的訊息"</string>
@@ -898,6 +898,11 @@
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"重新整理"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"切換 DNS 檢查"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"原始設備製造商 (OEM) 專用資訊/設定"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"EN-DC 可供使用:"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"DCNR 受限:"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"NR 可供使用:"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"NR 狀態:"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR 頻率:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"設定無線電頻帶模式"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"正在載入頻帶清單…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"設定"</string>
diff --git a/res/values-zu/qtistrings.xml b/res/values-zu/qtistrings.xml
new file mode 100755
index 0000000..97830ef
--- /dev/null
+++ b/res/values-zu/qtistrings.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- IMS settings related strings -->
+    <!-- Title displayed IMS account settings in the sip settings category. [CHAR LIMIT=NONE] -->
+    <string name="ims_settings">"Amasethingi e-IMS"</string>
+
+	<!-- Call auto reject settings -->
+    <string name="auto_reject_toggle_title">"Yenqaba izingcingo ngokuzenzakalela."</string>
+    <string name="auto_reject_toggle_summary">"Yenqaba ngokuzenzakalela izingcingo kumakhadi we-SIM angenzi lutho uma kukhona okubaluleke kakhulu nezingcingo zedatha ku-DDS"</string>
+</resources>
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
index 77096f3..f5f5681 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -307,9 +307,7 @@
     <string name="throttle_time_frame" msgid="1813452485948918791">"Isikhathi sokusebenzisa idatha"</string>
     <string name="throttle_rate" msgid="7641913901133634905">"Inqubomgomo yokukala idatha"</string>
     <string name="throttle_help" msgid="2624535757028809735">"Funda kabanzi"</string>
-    <!-- String.format failed for translation -->
-    <!-- no translation found for throttle_status_subtext (1110276415078236687) -->
-    <skip />
+    <string name="throttle_status_subtext" msgid="1110276415078236687">"<xliff:g id="USED_0">%1$s</xliff:g> (<xliff:g id="USED_1">%2$d</xliff:g>٪) ye <xliff:g id="USED_2">%3$s</xliff:g> isikhathi esingeqiwe \nIsikhathi esilandelayo siqala ezinsukwini ezingu-<xliff:g id="USED_3">%4$d</xliff:g> (<xliff:g id="USED_4">%5$s</xliff:g>)"</string>
     <string name="throttle_data_usage_subtext" msgid="3185429653996709840">"<xliff:g id="USED_0">%1$s</xliff:g> (<xliff:g id="USED_1">%2$d</xliff:g>٪) ye- <xliff:g id="USED_2">%3$s</xliff:g> isikhathi esiphezulu"</string>
     <string name="throttle_data_rate_reduced_subtext" msgid="8369839346277847725">"<xliff:g id="USED_0">%1$s</xliff:g>okuphezulu kufinyelelwe\nIsilinganiso sedatha sehliselwe ku- <xliff:g id="USED_1">%2$d</xliff:g> ama-Kb"</string>
     <string name="throttle_time_frame_subtext" msgid="6462089615392402127">"<xliff:g id="USED_0">%1$d</xliff:g>٪ lesikhathi esiphelile\nIsikhathi esilandelayo siqala ezinsukwini <xliff:g id="USED_1">%2$d</xliff:g> ezingu <xliff:g id="USED_2">%3$s</xliff:g>)"</string>
@@ -900,6 +898,11 @@
     <string name="radio_info_smsc_refresh_label" msgid="8409923721451604560">"Vuselela"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="1394078554927787350">"Guqula ukuhlola i-DNS"</string>
     <string name="oem_radio_info_label" msgid="2914167475119997456">"Ulwazi oucacile kwe-OEM/Izilungiselelo"</string>
+    <string name="radio_info_endc_available" msgid="4410653375290113436">"I-EN-DC Iyatholakala:"</string>
+    <string name="radio_info_dcnr_restricted" msgid="2469125498066960807">"Okukhawulelwe kwe-DCNR:"</string>
+    <string name="radio_info_nr_available" msgid="1321318331361249997">"I-NR Iyatholakala:"</string>
+    <string name="radio_info_nr_state" msgid="1337571996788535356">"Isimo se-NR:"</string>
+    <string name="radio_info_nr_frequency" msgid="1201156032796584128">"Imvamisa ye-NR:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"Isetha imodi yebhendi yerediyo"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Ilayisha uhlu lwebhendi…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Setha"</string>
diff --git a/res/values/arrays.xml b/res/values/arrays.xml
index 8187ff3..06a655d 100644
--- a/res/values/arrays.xml
+++ b/res/values/arrays.xml
@@ -29,4 +29,67 @@
         <item>"9"</item>
     </string-array>
 
+    <!-- Array resource for call fowarding timer settings-->
+    <string-array name="hour_24_items" translatable="false">
+        <item>00</item>
+        <item>01</item>
+        <item>02</item>
+        <item>03</item>
+        <item>04</item>
+        <item>05</item>
+        <item>06</item>
+        <item>07</item>
+        <item>08</item>
+        <item>09</item>
+        <item>10</item>
+        <item>11</item>
+        <item>12</item>
+        <item>13</item>
+        <item>14</item>
+        <item>15</item>
+        <item>16</item>
+        <item>17</item>
+        <item>18</item>
+        <item>19</item>
+        <item>20</item>
+        <item>21</item>
+        <item>22</item>
+        <item>23</item>
+    </string-array>
+    <string-array name="hour_12_items" translatable="false">
+        <item>12</item>
+        <item>01</item>
+        <item>02</item>
+        <item>03</item>
+        <item>04</item>
+        <item>05</item>
+        <item>06</item>
+        <item>07</item>
+        <item>08</item>
+        <item>09</item>
+        <item>10</item>
+        <item>11</item>
+    </string-array>
+    <string-array name="minute_items" translatable="false">
+        <item>00</item> <item>01</item> <item>02</item> <item>03</item>
+        <item>04</item> <item>05</item> <item>06</item> <item>07</item>
+        <item>08</item> <item>09</item> <item>10</item> <item>11</item>
+        <item>12</item> <item>13</item> <item>14</item> <item>15</item>
+        <item>16</item> <item>17</item> <item>18</item> <item>19</item>
+        <item>20</item> <item>21</item> <item>22</item> <item>23</item>
+        <item>24</item> <item>25</item> <item>26</item> <item>27</item>
+        <item>28</item> <item>29</item> <item>30</item> <item>31</item>
+        <item>32</item> <item>33</item> <item>34</item> <item>35</item>
+        <item>36</item> <item>37</item> <item>38</item> <item>38</item>
+        <item>40</item> <item>41</item> <item>42</item> <item>43</item>
+        <item>44</item> <item>45</item> <item>46</item> <item>47</item>
+        <item>48</item> <item>49</item> <item>50</item> <item>51</item>
+        <item>52</item> <item>53</item> <item>54</item> <item>55</item>
+        <item>56</item> <item>57</item> <item>58</item> <item>59</item>
+    </string-array>
+    <string-array name="time_formate_items" >
+        <item>@string/time_formate_am</item>
+        <item>@string/time_formate_pm</item>
+    </string-array>
+    <!-- Array resource for call fowarding timer settings-->
 </resources>
diff --git a/res/values/config.xml b/res/values/config.xml
index 7e71068..ac6f6d1 100644
--- a/res/values/config.xml
+++ b/res/values/config.xml
@@ -218,7 +218,7 @@
     <bool name="config_pstn_phone_accounts_enabled">true</bool>
 
     <!-- Flag indicating whether the the emergency phone account should be emergency calls only -->
-    <bool name="config_emergency_account_emergency_calls_only">false</bool>
+    <bool name="config_emergency_account_emergency_calls_only">true</bool>
 
     <!-- Whether the emergency only account can make emergency calls -->
     <bool name="config_pstnCanPlaceEmergencyCalls">true</bool>
@@ -256,6 +256,10 @@
          When this is true, the Telephony stack is able to add additional audio to the outgoing
          audio stream which the remote party will be able to hear. -->
     <bool name="config_support_telephony_audio_device">false</bool>
+    <!-- To disable/enable CallForwardUnconditional Timer -->
+    <bool name="config_enable_cfu_time">false</bool>
+    <!-- To disable clir query when ut enable under CMCC -->
+    <bool name="config_disable_clir_over_ut">false</bool>
 
     <!-- Whether the device supports dialing emergency RTT calls when there's no SIM card installed
     -->
diff --git a/res/values/qtistrings.xml b/res/values/qtistrings.xml
new file mode 100755
index 0000000..cc8f634
--- /dev/null
+++ b/res/values/qtistrings.xml
@@ -0,0 +1,260 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (c) 2017 - 2018, 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 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.
+  ~
+  -->
+
+<!-- The xml contains Qti specific resource strings neede for any value added features. -->
+<resources>
+    <string name="ims_settings">IMS Settings</string>
+
+    <string name="call_barring">Call barring</string>
+    <!-- Icc depersonalization related strings -->
+    <!-- Label text for PIN entry widget on SIM Network Depersonalization panel -->
+    <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY">SIM network unlock PIN</string>
+    <!-- Label text for PIN entry widget on SIM Network Subset Depersonalization panel -->
+    <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY">SIM network subset unlock PIN</string>
+    <!-- Label text for PIN entry widget on SIM Corporate Depersonalization panel -->
+    <string name="PERSOSUBSTATE_SIM_CORPORATE_ENTRY">SIM corporate unlock PIN</string>
+    <!-- Label text for PIN entry widget on SIM Service Provider Depersonalization panel -->
+    <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY">SIM service provider unlock PIN</string>
+    <!-- Label text for PIN entry widget on SIM SIM Depersonalization panel -->
+    <string name="PERSOSUBSTATE_SIM_SIM_ENTRY">SIM unlock PIN</string>
+    <!-- Label text for PUK entry widget on Depersonalization panel -->
+    <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY">Enter PUK</string>
+    <!-- Label text for Subset PUK entry widget on Depersonalization panel -->
+    <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY">Enter PUK</string>
+    <!-- Label text for Corporate PUK entry widget on Depersonalization panel -->
+    <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY">Enter PUK</string>
+    <!-- Label text for SIM service provider PUK entry widget on Depersonalization panel -->
+    <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY">Enter PUK</string>
+    <!-- Label text for SIM PUK entry widget on Depersonalization panel -->
+    <string name="PERSOSUBSTATE_SIM_SIM_PUK_ENTRY">Enter PUK</string>
+    <!-- Label text for PIN entry widget on RUIM Network1 Depersonalization panel -->
+    <string name="PERSOSUBSTATE_RUIM_NETWORK1_ENTRY">RUIM network1 unlock PIN</string>
+    <!-- Label text for PIN entry widget on RUIM Network2 Depersonalization panel -->
+    <string name="PERSOSUBSTATE_RUIM_NETWORK2_ENTRY">RUIM network2 unlock PIN</string>
+    <!-- Label text for PIN entry widget on RUIM Hrpd Depersonalization panel -->
+    <string name="PERSOSUBSTATE_RUIM_HRPD_ENTRY">RUIM hrpd unlock PIN</string>
+    <!-- Label text for PIN entry widget on RUIM Corporate Depersonalization panel -->
+    <string name="PERSOSUBSTATE_RUIM_CORPORATE_ENTRY">RUIM corporate unlock PIN</string>
+    <!-- Label text for PIN entry widget on RUIM Service Provider Depersonalization panel -->
+    <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY">RUIM service provider unlock PIN</string>
+    <!-- Label text for PIN entry widget on RUIM RUIM Depersonalization panel -->
+    <string name="PERSOSUBSTATE_RUIM_RUIM_ENTRY">RUIM unlock PIN</string>
+    <!-- Label text for PUK entry widget on Depersonalization panel -->
+    <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY">Enter PUK</string>
+    <!-- Label text for PUK entry widget on Depersonalization panel -->
+    <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY">Enter PUK</string>
+    <!-- Label text for PUK entry widget on Depersonalization panel -->
+    <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY">Enter PUK</string>
+    <!-- Label text for PUK entry widget on Depersonalization panel -->
+    <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY">Enter PUK</string>
+    <!-- Label text for PUK entry widget on Depersonalization panel -->
+    <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY">Enter PUK</string>
+    <!-- Label text for PUK entry widget on Depersonalization panel -->
+    <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY">Enter PUK</string>
+
+    <!-- Label text for PIN entry widget on SIM SPN Depersonalization panel -->
+    <string name="PERSOSUBSTATE_SIM_SPN_ENTRY">SPN unlock PIN</string>
+    <!-- Label text for PIN entry widget on SIM SP EHPLMN Depersonalization panel -->
+    <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY">SP EHPLMN unlock PIN</string>
+    <!-- Label text for PIN entry widget on SIM ICCID Depersonalization panel -->
+    <string name="PERSOSUBSTATE_SIM_ICCID_ENTRY">ICCID unlock PIN</string>
+    <!-- Label text for PIN entry widget on SIM IMPI Depersonalization panel -->
+    <string name="PERSOSUBSTATE_SIM_IMPI_ENTRY">IMPI unlock PIN</string>
+    <!-- Label text for PIN entry widget on SIM NS_SP Depersonalization panel -->
+    <string name="PERSOSUBSTATE_SIM_NS_SP_ENTRY">NS_SP unlock PIN</string>
+
+    <!-- Status message displayed on SIM Network Depersonalization panel -->
+    <string name="PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS">Requesting SIM network unlock\u2026</string>
+    <!-- Status message displayed on SIM Network Subset Depersonalization panel -->
+    <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS">Requesting SIM network subset unlock
+\u2026</string>
+    <!-- Status message displayed on SIM Service Provider Depersonalization panel -->
+    <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS">Requesting SIM service provider un
+lock\u2026</string>
+    <!-- Status message displayed on SIM Corporate Depersonalization panel -->
+    <string name="PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS">Requesting SIM corporate unlock\u2026</string>
+    <!-- Status message displayed on PUK Depersonalization panel -->
+    <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS">Requesting PUK unlock\u2026</string>
+    <!-- Status message displayed on PUK Depersonalization panel -->
+    <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS">Requesting PUK unlock\u2026</string>
+    <!-- Status message displayed on Corporate PUK entry widget on Depersonalization panel -->
+    <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS">Requesting PUK unlock\u2026</string>
+    <!-- Status message displayed on SIM Service provider PUK entry widget on Depersonalization panel -->
+    <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS">Requesting PUK unlock\u2026</string>
+    <!-- Status message displayed on SIM PUK entry widget on Depersonalization panel -->
+    <string name="PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS">Requesting PUK unlock\u2026</string>
+    <!-- Status message displayed on SIM SIM Depersonalization panel -->
+    <string name="PERSOSUBSTATE_SIM_SIM_IN_PROGRESS">Requesting SIM unlock\u2026</string>
+    <!-- Status message displayed on RUIM Network1 Depersonalization panel -->
+    <string name="PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS">Requesting RUIM network1 unlock\u2026</string>
+    <!-- Status message displayed on RUIM Network2 Depersonalization panel -->
+    <string name="PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS">Requesting RUIM network2 unlock\u2026</string>
+    <!-- Status message displayed on RUIM Hrpd Depersonalization panel -->
+    <string name="PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS">Requesting RUIM hrpd unlock\u2026</string>
+    <!-- Status message displayed on RUIM Service Provider Depersonalization panel -->
+    <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS">Requesting RUIM service provider
+unlock\u2026</string>
+    <!-- Status message displayed on RUIM Corporate Depersonalization panel -->
+    <string name="PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS">Requesting RUIM corporate unlock\u2026</string>
+
+    <!-- Status message displayed on SIM SPN Depersonalization panel -->
+    <string name="PERSOSUBSTATE_SIM_SPN_IN_PROGRESS">Requesting SPN unlock\u2026</string>
+    <!-- Status message displayed on SIM SP EHPLMN Depersonalization panel -->
+    <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS">Requesting SP EHPLMN unlock\u2026</string>
+    <!-- Status message displayed on SIM ICCID Depersonalization panel -->
+    <string name="PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS">Requesting ICCID unlock\u2026</string>
+    <!-- Status message displayed on SIM IMPI Depersonalization panel -->
+    <string name="PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS">Requesting IMPI unlock\u2026</string>
+    <!-- Status message displayed on SIM NS_SP Depersonalization panel -->
+    <string name="PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS">Requesting NS_SP unlock\u2026</string>
+
+    <!-- Status message displayed on RUIM RUIM Depersonalization panel -->
+    <string name="PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS">Requesting RUIM unlock\u2026</string>
+    <!-- Status message displayed on PUK Depersonalization panel -->
+    <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS">Requesting PUK unlock\u2026</string>
+    <!-- Status message displayed on PUK Depersonalization panel -->
+    <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS">Requesting PUK unlock\u2026</string>
+    <!-- Status message displayed on PUK Depersonalization panel -->
+    <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS">Requesting PUK unlock\u2026</string>
+    <!-- Status message displayed on PUK Depersonalization panel -->
+    <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS">Requesting PUK unlock\u2026</string>
+    <!-- Status message displayed on PUK Depersonalization panel -->
+    <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS">Requesting PUK unlock\u2026</string>
+    <!-- Status message displayed on PUK Depersonalization panel -->
+    <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS">Requesting PUK unlock\u2026</string>
+    <!-- Error message displayed on SIM Network Depersonalization panel -->
+    <string name="PERSOSUBSTATE_SIM_NETWORK_ERROR">SIM Network unlock request unsuccessful.</string>
+    <!-- Error message displayed on SIM Network Subset Depersonalization panel -->
+    <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR">SIM Network Subset unlock request unsucces
+sful.</string>
+    <!-- Error message displayed on SIM Service Provider Depersonalization panel -->
+    <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR">SIM Service Provider unlock request unsu
+ccessful.</string>
+    <!-- Error message displayed on SIM Corporate Depersonalization panel -->
+    <string name="PERSOSUBSTATE_SIM_CORPORATE_ERROR">SIM Corporate unlock request unsuccessful.</string>
+    <!-- Error message displayed on SIM SIM Depersonalization panel -->
+    <string name="PERSOSUBSTATE_SIM_SIM_ERROR">SIM unlock request unsuccessful.</string>
+    <!-- Error message displayed on RUIM Network1 Depersonalization panel -->
+    <string name="PERSOSUBSTATE_RUIM_NETWORK1_ERROR">RUIM Network1 unlock request unsuccessful.</string>
+    <!-- Error message displayed on RUIM Network2 Depersonalization panel -->
+    <string name="PERSOSUBSTATE_RUIM_NETWORK2_ERROR">RUIM Network2 unlock request unsuccessful.</string>
+    <!-- Error message displayed on RUIM Hrpd Depersonalization panel -->
+    <string name="PERSOSUBSTATE_RUIM_HRPD_ERROR">RUIM Hrpd unlock request unsuccessful.</string>
+    <!-- Error message displayed on RUIM Corporate Depersonalization panel -->
+    <string name="PERSOSUBSTATE_RUIM_CORPORATE_ERROR">RUIM Corporate unlock request unsuccessful.</string>
+    <!-- Error message displayed on RUIM Service Provider Depersonalization panel -->
+    <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR">RUIM Service Provider unlock request un
+successful.</string>
+    <!-- Error message displayed on RUIM RUIM Depersonalization panel -->
+    <string name="PERSOSUBSTATE_RUIM_RUIM_ERROR">RUIM unlock request unsuccessful.</string>
+    <!-- Error message displayed on PUK Depersonalization panel -->
+    <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR">PUK unlock unsuccessful.</string>
+    <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR">PUK unlock unsuccessful.</string>
+    <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR">PUK unlock unsuccessful.</string>
+    <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR">PUK unlock unsuccessful.</string>
+    <string name="PERSOSUBSTATE_SIM_SIM_PUK_ERROR">PUK unlock unsuccessful.</string>
+    <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR">PUK unlock unsuccessful.</string>
+    <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR">PUK unlock unsuccessful.</string>
+    <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR">PUK unlock unsuccessful.</string>
+    <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR">PUK unlock unsuccessful.</string>
+    <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR">PUK unlock unsuccessful.</string>
+    <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR">PUK unlock unsuccessful.</string>
+
+    <!--  Error message displayed on SIM SPN Depersonalization panel -->
+    <string name="PERSOSUBSTATE_SIM_SPN_ERROR">SPN unlock request unsuccessful.</string>
+    <!--  Error message displayed on SIM SP EHPLMN Depersonalization panel -->
+    <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR">SP EHPLMN unlock request unsuccessful.</string>
+    <!--  Error message displayed on SIM ICCID Depersonalization panel -->
+    <string name="PERSOSUBSTATE_SIM_ICCID_ERROR">ICCID unlock request unsuccessful.</string>
+    <!--  Error message displayed on SIM IMPI Depersonalization panel -->
+    <string name="PERSOSUBSTATE_SIM_IMPI_ERROR">IMPI unlock request unsuccessful.</string>
+    <!--  Error message displayed on SIM NS_SP Depersonalization panel -->
+    <string name="PERSOSUBSTATE_SIM_NS_SP_ERROR">NS_SP unlock request unsuccessful.</string>
+
+    <!-- Success message displayed on SIM Network Depersonalization panel -->
+    <string name="PERSOSUBSTATE_SIM_NETWORK_SUCCESS">SIM Network unlock successful.</string>
+    <!-- Success message displayed on SIM Network Subset Depersonalization panel -->
+    <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS">SIM Network Subset unlock successful.</string>
+    <!-- Success message displayed on SIM Service Provider Depersonalization panel -->
+    <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS">SIM Service Provider unlock successful
+.</string>
+    <!-- Success message displayed on SIM Corporate Depersonalization panel -->
+    <string name="PERSOSUBSTATE_SIM_CORPORATE_SUCCESS">SIM Corporate unlock successful.</string>
+    <!-- Success message displayed on SIM SIM Depersonalization panel -->
+    <string name="PERSOSUBSTATE_SIM_SIM_SUCCESS">SIM unlock successful.</string>
+    <!-- Success message displayed on RUIM Network1 Depersonalization panel -->
+    <string name="PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS">RUIM Network1 unlock successful.</string>
+    <!-- Success message displayed on RUIM Network2 Depersonalization panel -->
+    <string name="PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS">RUIM Network2 unlock successful.</string>
+    <!-- Success message displayed on RUIM Hrpd Depersonalization panel -->
+    <string name="PERSOSUBSTATE_RUIM_HRPD_SUCCESS">RUIM Hrpd unlock successful.</string>
+    <!-- Success message displayed on RUIM Service Provider Depersonalization panel -->
+    <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS">RUIM Service Provider unlock successf
+ul.</string>
+    <!-- Success message displayed on RUIM Corporate Depersonalization panel -->
+    <string name="PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS">RUIM Corporate unlock successful.</string>
+    <!-- Success message displayed on RUIM RUIM Depersonalization panel -->
+    <string name="PERSOSUBSTATE_RUIM_RUIM_SUCCESS">RUIM unlock successful.</string>
+    <!-- Success message displayed on PUK Depersonalization panel -->
+    <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS">PUK unlock successful.</string>
+    <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS">PUK unlock successful.</string>
+    <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS">PUK unlock successful.</string>
+    <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS">PUK unlock successful.</string>
+    <string name="PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS">PUK unlock successful.</string>
+    <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS">PUK unlock successful.</string>
+    <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS">PUK unlock successful.</string>
+    <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS">PUK unlock successful.</string>
+    <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS">PUK unlock successful.</string>
+    <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS">PUK unlock successful.</string>
+    <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS">PUK unlock successful.</string>
+
+    <!-- Success message displayed on SIM SPN Depersonalization panel -->
+    <string name="PERSOSUBSTATE_SIM_SPN_SUCCESS">SPN unlock successful.</string>
+    <!-- Success message displayed on SIM SP EHPLMN Depersonalization panel -->
+    <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS">SP EHPLMN unlock successful.</string>
+    <!-- Success message displayed on SIM ICCID Depersonalization panel -->
+    <string name="PERSOSUBSTATE_SIM_ICCID_SUCCESS">ICCID unlock successful.</string>
+    <!-- Success message displayed on SIM IMPI Depersonalization panel -->
+    <string name="PERSOSUBSTATE_SIM_IMPI_SUCCESS">IMPI unlock successful.</string>
+    <!-- Success message displayed on SIM NS_SP Depersonalization panel -->
+    <string name="PERSOSUBSTATE_SIM_NS_SP_SUCCESS">NS_SP unlock successful.</string>
+
+    <string name="cf_setting_mobile_data_alert">Please turn on mobile data and make sure that WLAN is off</string>
+    <string name="cf_setting_mobile_data_roaming_alert">Please turn on data roaming</string>
+    <string name="no_mobile_data">Mobile data is not available</string>
+    <string name="mobile_data">Mobile data</string>
+    <string name="no_mobile_data_roaming">Data roaming is not available</string>
+
+    <!--alert user to switch DDS when user is making UT supplementary service on non-DDS sub -->
+    <string name="switch_dds_to_sub_alert">Please switch mobile data to SIM</string>
+    <string name="mobile_data_alert">Data traffic may be generated on secondary card</string>
+    <string name="sim_is_not_ready">SIM card is not ready</string>
+</resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 1e44c72..3bd3c8b 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -107,6 +107,8 @@
     <!-- network depersonalization -->
     <!-- Label text for PIN entry widget on SIM Network Depersonalization panel -->
     <string name="label_ndp">SIM network unlock PIN</string>
+    <!-- Label text for Operator displayName on SIM Network Depersonalization panel -->
+    <string name="label_phoneid">Perso Locked for</string>
     <!-- Button label on SIM Network Depersonalization panel -->
     <string name="sim_ndp_unlock_text">Unlock</string>
     <!-- Button label on SIM Network Depersonalization panel -->
@@ -114,9 +116,9 @@
     <!-- Status message displayed on SIM Network Depersonalization panel -->
     <string name="requesting_unlock">Requesting network unlock\u2026</string>
     <!-- Error message displayed on SIM Network Depersonalization panel -->
-    <string name="unlock_failed">Network unlock request unsuccessful.</string>
+    <string name="unlock_failed"> Network unlock request unsuccessful.</string>
     <!-- Success message displayed on SIM Network Depersonalization panel -->
-    <string name="unlock_success">Network unlock successful.</string>
+    <string name="unlock_success">SIM Network unlock successful.</string>
 
     <!-- settings strings -->
 
@@ -127,6 +129,9 @@
     <!-- GSM Call settings screen, setting option name with label indicating the SIM the settings
          are applied to. [CHAR LIMIT=40] -->
     <string name="labelGsmMore_with_label">GSM call settings (<xliff:g id="subscriptionlabel" example="T-Mobile">%s</xliff:g>)</string>
+    <string name="labelCFType">Call Forward Setting</string>
+    <string name="labelCFVoice">Voice</string>
+    <string name="labelCFVideo">Video</string>
     <!-- CDMA Call settings screen, setting option name -->
     <string name="labelCDMAMore">CDMA call settings</string>
     <!-- CDMA Call settings screen, setting option name with label indicating the SIM the settings
@@ -241,6 +246,22 @@
     <!-- Call forwarding settings screen, setting summary text when Always forward is disabled -->
     <string name="sum_cfu_disabled">Off</string>
 
+    <!-- Call forwarding settings screen, setting timer info for cfut case -->
+    <string name="set_time_period">Set time period</string>
+    <string name="all_day">All day</string>
+    <string name="time_interval_char">: </string>
+    <string name="time_start">From</string>
+    <string name="time_start_hour">time start hour</string>
+    <string name="time_start_minute">time start minute</string>
+    <string name="time_end">To</string>
+    <string name="time_next_day">next day</string>
+    <string name="time_end_hour">time end hour</string>
+    <string name="time_end_minute">time end minute</string>
+    <string name="time_formate_am">AM</string>
+    <string name="time_formate_pm">PM</string>
+    <string name="cf_setting_mobile_data_alert">Please turn on mobile data and make sure that WLAN is off</string>
+    <string name="cf_setting_mobile_data_roaming_alert">Please turn on data roaming</string>
+
     <!-- Call forwarding settings screen, setting option name -->
     <string name="labelCFB">When busy</string>
     <!-- Call forwarding dialog box, text field label -->
@@ -412,6 +433,11 @@
     <string name="network_connecting">Connecting...</string>
     <!-- Available networks screen, text when a network cannot be connected -->
     <string name="network_could_not_connect">Couldn’t connect</string>
+    <!-- In-call screen: call failure reason (call denied because call barring
+            is ON on MT side ) -->
+    <string name="callFailed_incoming_cb_enabled">Party has barred all Incoming calls.</string>
+    <!-- In-call screen: status label for an incoming call that is not answered and forwarded  -->
+    <string name="callUnanswered_forwarded">Call Unanswered and Forwarded</string>
 
     <!-- The preferred network modes in Mobile network settings -->
     <string-array name="preferred_network_mode_choices">
@@ -667,6 +693,7 @@
     <string name="ussd_dialog_sep" translatable="false">----------</string>
 
     <string name="gsm_umts_options">GSM/UMTS Options</string>
+    <string name="call_forward_option">CallForward Options</string>
     <string name="cdma_options">CDMA Options</string>
 
     <!-- Screen option on the mobile network settings to go into data usage settings -->
@@ -986,6 +1013,8 @@
     <string name="tty_mode_option_summary">Set TTY mode</string>
     <string name="auto_retry_mode_title">Auto-retry</string>
     <string name="auto_retry_mode_summary">Enable Auto-retry mode</string>
+    <string name="vibrating_for_outgoing_call_accepted_title">Vibrating for outgoing call accepted</string>
+    <string name="vibrating_for_outgoing_call_accepted_summary">Enable vibrating mode for outgoing call accepted</string>
     <!-- TTY Mode change is NOT allowed during a video call -->
     <string name="tty_mode_not_allowed_video_call">TTY Mode change is not allowed during a video call</string>
     <!-- FDN list screen: menu item label -->
@@ -1189,6 +1218,8 @@
     <!-- In-call screen: call failure message displayed in an error dialog -->
     <string name="incall_error_call_failed">Call failed.</string>
     <!-- In-call screen: call failure message displayed in an error dialog -->
+    <string name="incall_error_outgoing_call_failed">Outgoing call failed.</string>
+    <!-- In-call screen: call failure message displayed in an error dialog -->
     <string name="incall_error_cannot_add_call">Call cannot be added at this time.  You can try to reach out by sending a message.</string>
     <!-- In-call screen: message displayed in an error dialog -->
     <string name="incall_error_supp_service_unknown">Service not supported</string>
@@ -1597,6 +1628,11 @@
     <string name="callFailed_cdma_call_limit">
         There are too many active calls. Please end or merge existing calls before placing a new one.
     </string>
+     <!-- Smart Divert Settings -->
+     <!-- Title for the Smart Divert Feature displayed in Call Settings -->
+     <string name="smart_divert_title">Smart-Divert</string>
+     <!-- Summary for the Smart Divert Feature displayed in Call Settings -->
+     <string name="smart_divert_summary">CFNRc Settings</string>
 
     <!-- Call failure reason: If the network does not accept the emergency call request, e.g., because IMEI was used as identification and this capability is not supported -->
     <string name="callFailed_imei_not_accepted">
@@ -1914,6 +1950,12 @@
     <!-- Message displayed to the user to indicate that a held call has been released /
          disconnected. -->
     <string name="supp_service_held_call_released">Held call has been released.</string>
+    <string name="srvcc_video_message">"Video call is downgraded to 2G/3G voice call due to 4G network is not available."</string>
+    <string name="srvcc_message">"4G voice call is downgraded to 2G/3G voice call due to 4G network is not available."</string>
+    <string name="ut_not_support">UT is not available</string>
+    <string name="ct_ut_not_support_close_4glte">UT is not available, please turn off Enhanced 4G LTE Mode in Settings</string>
+    <string name="switch_dds_to_sub_alert_msg">Please switch mobile data to SIM</string>
+
     <!-- In-call screen: error message shown when the user attempts to place a call, but the device
          is currently in the process of being provisioned for service.  Provisioning is the process
          by which a device confirms which services are available to the user by contacting the
@@ -2131,6 +2173,16 @@
     <string name="radio_info_toggle_dns_check_label">Toggle DNS Check</string>
     <!-- Radio Info screen. Label for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="oem_radio_info_label">OEM-specific Info/Settings</string>
+    <!-- Radio Info screen. Label for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
+    <string name="radio_info_endc_available">EN-DC Available:</string>
+    <!-- Radio Info screen. Label for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
+    <string name="radio_info_dcnr_restricted">DCNR Restricted:</string>
+    <!-- Radio Info screen. Label for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
+    <string name="radio_info_nr_available">NR Available:</string>
+    <!-- Radio Info screen. Label for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
+    <string name="radio_info_nr_state">NR State:</string>
+    <!-- Radio Info screen. Label for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
+    <string name="radio_info_nr_frequency">NR Frequency:</string>
 
     <!-- Band Mode Selection -->
     <!-- Band mode screen.  Title of activity. -->
@@ -2154,4 +2206,14 @@
     <!-- Trigger Carrier Provisioning [CHAR LIMIT=NONE] -->
     <string name="trigger_carrier_provisioning">Trigger Carrier Provisioning</string>
 
+    <string name="labelCommonMore">Call settings</string>
+    <string name="labelCommonMore_with_label">Call settings (<xliff:g id="subscriptionlabel" example="T-Mobile">%s</xliff:g>)</string>
+    <string name="sum_common_call_settings">Additional call settings</string>
+    <string name="ut_unavailable_to_set_video_cf_toast">UT is unavailable to set call forwarding for video, please close this page and exit.</string>
+    <!-- Instruction text to notify user that emergency calls may not be possible when voice is enabled over wifi. [CHAR LIMIT=NONE] -->
+    <string name="limited_service_alert_dialog_description"><b>Emergency calls via WiFi Calling</b>\nEmergency calls are not possible via WiFi Calling.
+\n\nThe device switches automatically to a cellular network (2G/3G) to place an emergency call.
+\n\nEmergency calls are only possible in areas with cellular coverage.</string>
+    <!-- Option to hide the popup dialog if it is not necessary for the user. [CHAR LIMIT=40] -->
+    <string name="do_not_show_again">Do not show again</string>
 </resources>
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 8218a84..e924ba3 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -315,6 +315,13 @@
         <item name="android:listDivider">@null</item>
     </style>
 
+    <style name="cfut_value">
+        <item name="android:layout_width">80dip</item>
+        <item name="android:layout_height">wrap_content</item>
+        <item name="android:textAppearance">?android:attr/textAppearanceSmall</item>
+        <item name="android:singleLine">true</item>
+    </style>
+
     <style name="EmergencyInfoNameTextAppearance"
            parent="@android:style/TextAppearance.Material.Subhead">
         <item name="android:textColor">@color/primary_text_default_material_dark</item>
diff --git a/res/xml/call_feature_setting.xml b/res/xml/call_feature_setting.xml
index fe0ea43..57aff65 100644
--- a/res/xml/call_feature_setting.xml
+++ b/res/xml/call_feature_setting.xml
@@ -59,6 +59,12 @@
         android:persistent="false"
         android:summary="@string/auto_retry_mode_summary"/>
 
+    <SwitchPreference
+        android:key="button_vibrating_for_outgoing_call_accepted_key"
+        android:title="@string/vibrating_for_outgoing_call_accepted_title"
+        android:persistent="false"
+        android:summary="@string/vibrating_for_outgoing_call_accepted_summary"/>
+
     <PreferenceScreen
         android:key="button_gsm_more_expand_key"
         android:title="@string/labelGSMMore"
@@ -71,4 +77,15 @@
         android:summary="@string/sum_cdma_call_settings"
         android:persistent="false" />
 
+    <PreferenceScreen
+        android:key="button_common_more_expand_key"
+        android:title="@string/labelCommonMore"
+        android:summary="@string/sum_common_call_settings"
+        android:persistent="false" />
+
+    <PreferenceScreen
+        android:key="ims_settings_key"
+        android:title="@string/ims_settings"
+        android:persistent="false">
+    </PreferenceScreen>
 </PreferenceScreen>
diff --git a/res/xml/call_forward_type.xml b/res/xml/call_forward_type.xml
new file mode 100644
index 0000000..4128a7c
--- /dev/null
+++ b/res/xml/call_forward_type.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2015, 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 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.
+-->
+
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <Preference
+        android:key="button_cf_key_voice"
+        android:title="@string/labelCFVoice">
+    </Preference>
+
+    <Preference
+        android:key="button_cf_key_video"
+        android:title="@string/labelCFVideo">
+    </Preference>
+
+</PreferenceScreen>
diff --git a/res/xml/cdma_call_privacy.xml b/res/xml/cdma_call_privacy.xml
index 1aeeefe..fd6b1ae 100644
--- a/res/xml/cdma_call_privacy.xml
+++ b/res/xml/cdma_call_privacy.xml
@@ -2,6 +2,26 @@
 <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
                   android:title="@string/additional_cdma_call_settings">
 
+    <PreferenceScreen
+        android:key="button_cf_expand_key"
+        android:title="@string/labelCF"
+        android:persistent="false">
+    </PreferenceScreen>
+
+    <PreferenceScreen
+        android:key="button_cw_key"
+        android:title="@string/labelCW"
+        android:persistent="false">
+    </PreferenceScreen>
+
+    <com.android.phone.CallWaitingSwitchPreference
+        android:key="button_cw_ut_key"
+        android:title="@string/labelCW"
+        android:persistent="false"
+        android:summaryOn="@string/sum_cw_enabled"
+        android:summaryOff="@string/sum_cw_disabled"
+        android:enabled="false"/>
+
     <com.android.phone.CdmaVoicePrivacySwitchPreference
         android:key="button_voice_privacy_key"
         android:title="@string/voice_privacy"
diff --git a/res/xml/phone_account_settings.xml b/res/xml/phone_account_settings.xml
index a243a65..d72f558 100644
--- a/res/xml/phone_account_settings.xml
+++ b/res/xml/phone_account_settings.xml
@@ -32,6 +32,17 @@
                 android:targetClass="com.android.server.telecom.settings.EnableAccountPreferenceActivity" />
         </PreferenceScreen>
 
+        <PreferenceScreen
+          android:key="button_smart_divert"
+          android:title="@string/smart_divert_title"
+          android:summary="@string/smart_divert_summary"
+          android:persistent="false"
+          android:order="1500">
+          <intent android:action="android.intent.action.MAIN"
+             android:targetPackage="com.qti.xdivert"
+             android:targetClass="com.qti.xdivert.XDivertSetting" />
+        </PreferenceScreen>
+
     </PreferenceCategory>
 
     <PreferenceCategory
@@ -53,6 +64,12 @@
 
         </PreferenceScreen>
 
+        <SwitchPreference
+            android:key="button_vibrating_for_outgoing_call_accepted_key"
+            android:title="@string/vibrating_for_outgoing_call_accepted_title"
+            android:persistent="false"
+            android:summary="@string/vibrating_for_outgoing_call_accepted_summary"/>
+
     </PreferenceCategory>
 
     <PreferenceCategory
diff --git a/res/xml/telephony_injection.xml b/res/xml/telephony_injection.xml
index 2af425c..3237a98 100644
--- a/res/xml/telephony_injection.xml
+++ b/res/xml/telephony_injection.xml
@@ -21,13 +21,22 @@
      "/system/framework/" should be the target directory.
         e.g. "/system/framework/eg-telephony-common.jar"
 -->
-<injection package=""
-           jar="">
+<injection package="com.qualcomm.qti.internal.telephony.QtiTelephonyComponentFactory"
+           jar="/system/framework/qti-telephony-common.jar:/product/framework/qti-telephony-hidl-wrapper.jar:/product/framework/qti-telephony-utils.jar:/system/framework/qti-telephony-utils.jar">
     <components>
         <!-- Components use injected component factory,
             e.g. com.android.internal.telephony.ServiceStateTracker
         -->
         <!--<component>com.example.componentA</component>-->
         <!--<component>com.example.componentB</component>-->
+        <component>com.android.internal.telephony.ServiceStateTracker</component>
+        <component>com.android.internal.telephony.SubscriptionController</component>
+        <component>com.android.internal.telephony.SubscriptionInfoUpdater</component>
+        <component>com.android.internal.telephony.GsmCdmaPhone</component>
+        <component>com.android.internal.telephony.PhoneSwitcher</component>
+        <component>com.android.internal.telephony.IccPhoneBookInterfaceManager</component>
+        <component>com.android.internal.telephony.dataconnection.DcTracker</component>
+        <component>com.android.internal.telephony.RIL</component>
+        <component>com.android.internal.telephony.TelephonyComponentFactory</component>
     </components>
 </injection>
diff --git a/sip/res/values-ar/strings.xml b/sip/res/values-ar/strings.xml
index f60f726..4cc9450 100644
--- a/sip/res/values-ar/strings.xml
+++ b/sip/res/values-ar/strings.xml
@@ -61,9 +61,9 @@
     <string name="advanced_settings" msgid="2704644977548662872">"الإعدادات الاختيارية"</string>
     <string name="auth_username_title" msgid="9002505242616662698">"اسم المستخدِم للمصادقة"</string>
     <string name="auth_username_summary" msgid="6346313945275377230">"اسم المستخدِم المستخدَم للمصادقة"</string>
-    <string name="default_preference_summary_username" msgid="8788114717555599222">"‏&lt;لم يتم التعيين&gt;"</string>
-    <string name="default_preference_summary_password" msgid="3695366978153175549">"‏&lt;لم يتم التعيين&gt;"</string>
-    <string name="default_preference_summary_domain_address" msgid="443247296785732364">"‏&lt;لم يتم التعيين&gt;"</string>
+    <string name="default_preference_summary_username" msgid="8788114717555599222">"‏&lt;لم يتم الضبط&gt;"</string>
+    <string name="default_preference_summary_password" msgid="3695366978153175549">"‏&lt;لم يتم الضبط&gt;"</string>
+    <string name="default_preference_summary_domain_address" msgid="443247296785732364">"‏&lt;لم يتم الضبط&gt;"</string>
     <string name="display_name_summary" msgid="6749135030093260358">"‏&lt;مثل اسم المستخدم&gt;"</string>
     <string name="optional_summary" msgid="620379377865437488">"‏&lt;اختياري&gt;"</string>
     <string name="advanced_settings_show" msgid="2318728080037568529">"▷ المس لإظهار الكل"</string>
diff --git a/sip/res/values-b+sr+Latn/strings.xml b/sip/res/values-b+sr+Latn/strings.xml
index dadfa20..adb537b 100644
--- a/sip/res/values-b+sr+Latn/strings.xml
+++ b/sip/res/values-b+sr+Latn/strings.xml
@@ -22,7 +22,7 @@
     <string name="sip_receive_calls" msgid="3403644006618369349">"Primaj dolazne pozive"</string>
     <string name="sip_receive_calls_summary" msgid="5306603671778761443">"Više troši bateriju"</string>
     <string name="sip_call_options_title" msgid="5027066677561068192">"Koristite SIP pozivanje"</string>
-    <string name="sip_call_options_wifi_only_title" msgid="6663105297927456484">"Koristite SIP pozivanje (samo za Wi-Fi)"</string>
+    <string name="sip_call_options_wifi_only_title" msgid="6663105297927456484">"Koristite SIP pozivanje (samo za WiFi)"</string>
     <string name="sip_call_options_entry_1" msgid="4722647332760934261">"Za sve pozive kada je mreža za prenos podataka dostupna"</string>
     <string name="sip_call_options_entry_2" msgid="7338504256051655013">"Samo za SIP pozive"</string>
     <string name="sip_call_options_wifi_only_entry_1" msgid="922329055414010991">"Za sve pozive"</string>
@@ -41,7 +41,7 @@
     <string name="registration_status_still_trying" msgid="7178623685868766282">"I dalje pokušava..."</string>
     <string name="registration_status_not_receiving" msgid="3873074208531938401">"Ne primamo pozive."</string>
     <string name="registration_status_no_data" msgid="2987064560116584121">"Registracija naloga je zaustavljena zato što ne postoji internet veza."</string>
-    <string name="registration_status_no_wifi_data" msgid="685470618241482948">"Registracija naloga je zaustavljena zato što ne postoji Wi-Fi veza."</string>
+    <string name="registration_status_no_wifi_data" msgid="685470618241482948">"Registracija naloga je zaustavljena zato što ne postoji WiFi veza."</string>
     <string name="registration_status_not_running" msgid="6236403137652262659">"Registracija naloga nije uspela."</string>
     <string name="registration_status_done" msgid="6787397199273357721">"Primamo pozive."</string>
     <string name="registration_status_failed_try_later" msgid="7855389184910312091">"Registracija naloga nije uspela: <xliff:g id="REGISTRATION_ERROR_MESSAGE">%s</xliff:g>; pokušaćemo kasnije"</string>
@@ -72,7 +72,7 @@
     <string name="empty_alert" msgid="3693655518612836718">"Polje <xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> je obavezno i ne može da bude prazno."</string>
     <string name="not_a_valid_port" msgid="3664668836663491376">"Broj porta bi trebalo da bude između 1000 i 65.534."</string>
     <string name="no_internet_available" msgid="161720645084325479">"Da biste uputili SIP poziv, prvo proverite internet vezu."</string>
-    <string name="no_wifi_available" msgid="1179092018692306312">"Treba da budete povezani sa Wi-Fi mrežom da biste upućivali SIP pozive (koristite Podešavanja bežičnih veza i mreža)."</string>
+    <string name="no_wifi_available" msgid="1179092018692306312">"Treba da budete povezani sa WiFi mrežom da biste upućivali SIP pozive (koristite Podešavanja bežičnih veza i mreža)."</string>
     <string name="no_voip" msgid="3366395789297981738">"SIP pozivanje nije podržano"</string>
     <string name="sip_system_decide" msgid="197230378376326430">"Automatski"</string>
     <string name="sip_always_send_keepalive" msgid="4986533673960084769">"Uvek šalji"</string>
diff --git a/sip/res/values-eu/strings.xml b/sip/res/values-eu/strings.xml
index 0925002..5ad7d9c 100644
--- a/sip/res/values-eu/strings.xml
+++ b/sip/res/values-eu/strings.xml
@@ -41,7 +41,7 @@
     <string name="registration_status_still_trying" msgid="7178623685868766282">"Oraindik saiatzen…"</string>
     <string name="registration_status_not_receiving" msgid="3873074208531938401">"Ez da deirik jasotzen ari."</string>
     <string name="registration_status_no_data" msgid="2987064560116584121">"Kontua erregistratzeko prozesua gelditu da ez zaudelako konektatuta Internetera."</string>
-    <string name="registration_status_no_wifi_data" msgid="685470618241482948">"Kontua erregistratzeko prozesua gelditu da ez dagoelako wifi bidezko konexiorik."</string>
+    <string name="registration_status_no_wifi_data" msgid="685470618241482948">"Kontua erregistratzeko prozesua gelditu da ez dagoelako wifi-konexiorik."</string>
     <string name="registration_status_not_running" msgid="6236403137652262659">"Ez da kontua erregistratu."</string>
     <string name="registration_status_done" msgid="6787397199273357721">"Deiak jasotzen."</string>
     <string name="registration_status_failed_try_later" msgid="7855389184910312091">"Ez da kontua erregistratu: (<xliff:g id="REGISTRATION_ERROR_MESSAGE">%s</xliff:g>). Geroago saiatuko gara berriro."</string>
diff --git a/sip/res/values-fa/strings.xml b/sip/res/values-fa/strings.xml
index 6a0f0bf..e2843bc 100644
--- a/sip/res/values-fa/strings.xml
+++ b/sip/res/values-fa/strings.xml
@@ -59,8 +59,8 @@
     <string name="transport_title" msgid="1661659138226029178">"نوع حمل‌ونقل"</string>
     <string name="send_keepalive_title" msgid="5319788151608946049">"ارسال حفظ اتصال"</string>
     <string name="advanced_settings" msgid="2704644977548662872">"تنظیمات اختیاری"</string>
-    <string name="auth_username_title" msgid="9002505242616662698">"نام کاربری برای احراز هویت"</string>
-    <string name="auth_username_summary" msgid="6346313945275377230">"نام کاربری مورد استفاده برای احراز هویت"</string>
+    <string name="auth_username_title" msgid="9002505242616662698">"نام کاربری برای اصالت‌سنجی"</string>
+    <string name="auth_username_summary" msgid="6346313945275377230">"نام کاربری مورد استفاده برای اصالت‌سنجی"</string>
     <string name="default_preference_summary_username" msgid="8788114717555599222">"‏&lt;تنظیم نشده&gt;"</string>
     <string name="default_preference_summary_password" msgid="3695366978153175549">"‏&lt;تنظیم نشده&gt;"</string>
     <string name="default_preference_summary_domain_address" msgid="443247296785732364">"‏&lt;تنظیم نشده&gt;"</string>
diff --git a/sip/res/values-gl/strings.xml b/sip/res/values-gl/strings.xml
index 1a40bf3..a6c15d5 100644
--- a/sip/res/values-gl/strings.xml
+++ b/sip/res/values-gl/strings.xml
@@ -57,7 +57,7 @@
     <string name="proxy_address_title" msgid="4120361943254795287">"Enderezo proxy saínte"</string>
     <string name="port_title" msgid="1703586046264385110">"Número de porto"</string>
     <string name="transport_title" msgid="1661659138226029178">"Tipo de transporte"</string>
-    <string name="send_keepalive_title" msgid="5319788151608946049">"Enviar sinal conexión"</string>
+    <string name="send_keepalive_title" msgid="5319788151608946049">"Enviar sinal de conexión permanente"</string>
     <string name="advanced_settings" msgid="2704644977548662872">"Configuración opcional"</string>
     <string name="auth_username_title" msgid="9002505242616662698">"Nome de usuario da autenticación"</string>
     <string name="auth_username_summary" msgid="6346313945275377230">"Nome de usuario utilizado para a autenticación"</string>
diff --git a/sip/res/values-ky/strings.xml b/sip/res/values-ky/strings.xml
index 6916f24..ab37d84 100644
--- a/sip/res/values-ky/strings.xml
+++ b/sip/res/values-ky/strings.xml
@@ -29,8 +29,8 @@
     <string name="add_sip_account" msgid="5754758646745144384">"Аккаунт кошуу"</string>
     <string name="remove_sip_account" msgid="8272617403399636513">"Аккаунтту өчүрүү"</string>
     <string name="sip_account_list" msgid="2596262496233721769">"SIP аккаунттары"</string>
-    <string name="saving_account" msgid="3390358043846687266">"Каттоо эсеби сакталууда…"</string>
-    <string name="removing_account" msgid="1544132880414780408">"Каттоо эсеби жок кылынууда…"</string>
+    <string name="saving_account" msgid="3390358043846687266">"Аккаунт сакталууда…"</string>
+    <string name="removing_account" msgid="1544132880414780408">"Аккаунт жок кылынууда…"</string>
     <string name="sip_menu_save" msgid="4377112554203123060">"Сактоо"</string>
     <string name="sip_menu_discard" msgid="1883166691772895243">"Жокко чыгаруу"</string>
     <string name="alert_dialog_close" msgid="1734746505531110706">"Профилди жабуу"</string>
diff --git a/sip/res/values-mr/strings.xml b/sip/res/values-mr/strings.xml
index 252b3bf..60d9c88 100644
--- a/sip/res/values-mr/strings.xml
+++ b/sip/res/values-mr/strings.xml
@@ -45,13 +45,13 @@
     <string name="registration_status_not_running" msgid="6236403137652262659">"खाते नोंदणी अयशस्वी."</string>
     <string name="registration_status_done" msgid="6787397199273357721">"कॉल प्राप्त करत आहे."</string>
     <string name="registration_status_failed_try_later" msgid="7855389184910312091">"खाते नोंदणी अयशस्‍वी: (<xliff:g id="REGISTRATION_ERROR_MESSAGE">%s</xliff:g>); नंतर प्रयत्‍न करू"</string>
-    <string name="registration_status_invalid_credentials" msgid="8896714049938660777">"खाते नोंदणी अयशस्‍वी: चुकीचे वापरकर्तानाव किंवा संकेतशब्‍द."</string>
+    <string name="registration_status_invalid_credentials" msgid="8896714049938660777">"खाते नोंदणी अयशस्‍वी: चुकीचे वापरकर्ता नाव किंवा संकेतशब्‍द."</string>
     <string name="registration_status_server_unreachable" msgid="3832339558868965604">"खाते नोंदणी अयशस्वी: सर्व्हर नाव तपासा."</string>
     <string name="third_party_account_summary" msgid="5918779106950859167">"हे खाते सध्‍या <xliff:g id="ACCOUNT_OWNER">%s</xliff:g> अ‍ॅपद्वारे वापरात आहे."</string>
     <string name="sip_edit_title" msgid="7438891546610820307">"SIP खाते तपशील"</string>
     <string name="sip_edit_new_title" msgid="8394790068979636381">"SIP खाते तपशील"</string>
     <string name="domain_address_title" msgid="8238078615181248579">"सर्व्हर"</string>
-    <string name="username_title" msgid="298416796886107970">"वापरकर्तानाव"</string>
+    <string name="username_title" msgid="298416796886107970">"वापरकर्ता नाव"</string>
     <string name="password_title" msgid="8035579335591959021">"पासवर्ड"</string>
     <string name="display_name_title" msgid="3730105783656830160">"प्रदर्शन नाव"</string>
     <string name="proxy_address_title" msgid="4120361943254795287">"आउटबाउंड प्रॉक्सी पत्ता"</string>
@@ -60,7 +60,7 @@
     <string name="send_keepalive_title" msgid="5319788151608946049">"चैतन्‍यमय-ठेवा पाठवा"</string>
     <string name="advanced_settings" msgid="2704644977548662872">"पर्यायी सेटिंग्ज"</string>
     <string name="auth_username_title" msgid="9002505242616662698">"ऑथेंटिकेशन वापरकर्ता नाव"</string>
-    <string name="auth_username_summary" msgid="6346313945275377230">"प्रमाणीकरणासाठी वापरकर्तानाव वापरले"</string>
+    <string name="auth_username_summary" msgid="6346313945275377230">"प्रमाणीकरणासाठी वापरकर्ता नाव वापरले"</string>
     <string name="default_preference_summary_username" msgid="8788114717555599222">"&lt;सेट नाही&gt;"</string>
     <string name="default_preference_summary_password" msgid="3695366978153175549">"&lt;सेट नाही&gt;"</string>
     <string name="default_preference_summary_domain_address" msgid="443247296785732364">"&lt;सेट नाही&gt;"</string>
diff --git a/sip/res/values-ne/strings.xml b/sip/res/values-ne/strings.xml
index 3b33681..9fc1263 100644
--- a/sip/res/values-ne/strings.xml
+++ b/sip/res/values-ne/strings.xml
@@ -45,7 +45,7 @@
     <string name="registration_status_not_running" msgid="6236403137652262659">"खाता दर्ता गर्न विफल"</string>
     <string name="registration_status_done" msgid="6787397199273357721">"कलहरू प्राप्त गर्दै।"</string>
     <string name="registration_status_failed_try_later" msgid="7855389184910312091">"खाता दर्ता गर्न विफल: (<xliff:g id="REGISTRATION_ERROR_MESSAGE">%s</xliff:g>); पछि प्रयास गर्नुहोस्"</string>
-    <string name="registration_status_invalid_credentials" msgid="8896714049938660777">"खाता दर्ता प्रक्रिया असफल: गलत प्रयोगकर्ताको नाम वा पासवर्ड।"</string>
+    <string name="registration_status_invalid_credentials" msgid="8896714049938660777">"खाता दर्ता प्रक्रिया असफल: गलत युजरनेम वा पासवर्ड।"</string>
     <string name="registration_status_server_unreachable" msgid="3832339558868965604">"खाता दर्ता गर्न असफल: सर्भरको नाम जाँच गर्नुहोस्।"</string>
     <string name="third_party_account_summary" msgid="5918779106950859167">"<xliff:g id="ACCOUNT_OWNER">%s</xliff:g> अनुप्रयोगद्वारा यो खाता हाल प्रयोगमा छ।"</string>
     <string name="sip_edit_title" msgid="7438891546610820307">"SIP खाता विवरणहरू"</string>
diff --git a/sip/res/values-sq/strings.xml b/sip/res/values-sq/strings.xml
index 1b83380..5c50085 100644
--- a/sip/res/values-sq/strings.xml
+++ b/sip/res/values-sq/strings.xml
@@ -32,7 +32,7 @@
     <string name="saving_account" msgid="3390358043846687266">"Po ruan llogarinë…"</string>
     <string name="removing_account" msgid="1544132880414780408">"Po heq llogarinë…"</string>
     <string name="sip_menu_save" msgid="4377112554203123060">"Ruaj"</string>
-    <string name="sip_menu_discard" msgid="1883166691772895243">"Injoro"</string>
+    <string name="sip_menu_discard" msgid="1883166691772895243">"Hiq"</string>
     <string name="alert_dialog_close" msgid="1734746505531110706">"Mbyll profilin"</string>
     <string name="alert_dialog_ok" msgid="7806760618798687406">"Në rregull"</string>
     <string name="close_profile" msgid="3756064641769751774">"Mbyll"</string>
diff --git a/sip/res/values-sr/strings.xml b/sip/res/values-sr/strings.xml
index f877e1b..4c15528 100644
--- a/sip/res/values-sr/strings.xml
+++ b/sip/res/values-sr/strings.xml
@@ -22,7 +22,7 @@
     <string name="sip_receive_calls" msgid="3403644006618369349">"Примај долазне позиве"</string>
     <string name="sip_receive_calls_summary" msgid="5306603671778761443">"Више троши батерију"</string>
     <string name="sip_call_options_title" msgid="5027066677561068192">"Користите SIP позивање"</string>
-    <string name="sip_call_options_wifi_only_title" msgid="6663105297927456484">"Користите SIP позивање (само за Wi-Fi)"</string>
+    <string name="sip_call_options_wifi_only_title" msgid="6663105297927456484">"Користите SIP позивање (само за WiFi)"</string>
     <string name="sip_call_options_entry_1" msgid="4722647332760934261">"За све позиве када је мрежа за пренос података доступна"</string>
     <string name="sip_call_options_entry_2" msgid="7338504256051655013">"Само за SIP позиве"</string>
     <string name="sip_call_options_wifi_only_entry_1" msgid="922329055414010991">"За све позиве"</string>
@@ -41,7 +41,7 @@
     <string name="registration_status_still_trying" msgid="7178623685868766282">"И даље покушава..."</string>
     <string name="registration_status_not_receiving" msgid="3873074208531938401">"Не примамо позиве."</string>
     <string name="registration_status_no_data" msgid="2987064560116584121">"Регистрација налога је заустављена зато што не постоји интернет веза."</string>
-    <string name="registration_status_no_wifi_data" msgid="685470618241482948">"Регистрација налога је заустављена зато што не постоји Wi-Fi веза."</string>
+    <string name="registration_status_no_wifi_data" msgid="685470618241482948">"Регистрација налога је заустављена зато што не постоји WiFi веза."</string>
     <string name="registration_status_not_running" msgid="6236403137652262659">"Регистрација налога није успела."</string>
     <string name="registration_status_done" msgid="6787397199273357721">"Примамо позиве."</string>
     <string name="registration_status_failed_try_later" msgid="7855389184910312091">"Регистрација налога није успела: <xliff:g id="REGISTRATION_ERROR_MESSAGE">%s</xliff:g>; покушаћемо касније"</string>
@@ -72,7 +72,7 @@
     <string name="empty_alert" msgid="3693655518612836718">"Поље <xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> је обавезно и не може да буде празно."</string>
     <string name="not_a_valid_port" msgid="3664668836663491376">"Број порта би требало да буде између 1000 и 65.534."</string>
     <string name="no_internet_available" msgid="161720645084325479">"Да бисте упутили SIP позив, прво проверите интернет везу."</string>
-    <string name="no_wifi_available" msgid="1179092018692306312">"Треба да будете повезани са Wi-Fi мрежом да бисте упућивали SIP позиве (користите Подешавања бежичних веза и мрежа)."</string>
+    <string name="no_wifi_available" msgid="1179092018692306312">"Треба да будете повезани са WiFi мрежом да бисте упућивали SIP позиве (користите Подешавања бежичних веза и мрежа)."</string>
     <string name="no_voip" msgid="3366395789297981738">"SIP позивање није подржано"</string>
     <string name="sip_system_decide" msgid="197230378376326430">"Аутоматски"</string>
     <string name="sip_always_send_keepalive" msgid="4986533673960084769">"Увек шаљи"</string>
diff --git a/sip/res/values-ta/strings.xml b/sip/res/values-ta/strings.xml
index 0cb2b75..657d296 100644
--- a/sip/res/values-ta/strings.xml
+++ b/sip/res/values-ta/strings.xml
@@ -41,7 +41,7 @@
     <string name="registration_status_still_trying" msgid="7178623685868766282">"இன்னும் முயற்சிக்கிறது…"</string>
     <string name="registration_status_not_receiving" msgid="3873074208531938401">"அழைப்புகளைப் பெறவில்லை."</string>
     <string name="registration_status_no_data" msgid="2987064560116584121">"இணைய இணைப்பு இல்லாததால், கணக்குப் பதிவு நிறுத்தப்பட்டது."</string>
-    <string name="registration_status_no_wifi_data" msgid="685470618241482948">"Wi-Fi இணைப்பு இல்லாததால், கணக்குப் பதிவு நிறுத்தப்பட்டது."</string>
+    <string name="registration_status_no_wifi_data" msgid="685470618241482948">"வைஃபை இணைப்பு இல்லாததால், கணக்குப் பதிவு நிறுத்தப்பட்டது."</string>
     <string name="registration_status_not_running" msgid="6236403137652262659">"கணக்குப் பதிவு தோல்வி."</string>
     <string name="registration_status_done" msgid="6787397199273357721">"அழைப்புகளைப் பெறுதல்."</string>
     <string name="registration_status_failed_try_later" msgid="7855389184910312091">"கணக்குப் பதிவு தோல்வி: (<xliff:g id="REGISTRATION_ERROR_MESSAGE">%s</xliff:g>); பிறகு முயலவும்"</string>
diff --git a/src/com/android/phone/CallBarringEditPreference.java b/src/com/android/phone/CallBarringEditPreference.java
index b8e3250..757600e 100644
--- a/src/com/android/phone/CallBarringEditPreference.java
+++ b/src/com/android/phone/CallBarringEditPreference.java
@@ -26,6 +26,8 @@
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Message;
+import android.os.PersistableBundle;
+import android.telephony.CarrierConfigManager;
 import android.text.method.DigitsKeyListener;
 import android.text.method.PasswordTransformationMethod;
 import android.util.AttributeSet;
@@ -35,7 +37,6 @@
 import android.widget.TextView;
 import android.widget.Toast;
 
-import com.android.internal.telephony.CommandsInterface;
 import com.android.internal.telephony.CommandException;
 import com.android.internal.telephony.Phone;
 import com.android.internal.telephony.PhoneFactory;
@@ -109,7 +110,7 @@
         if (!skipReading) {
             // Query call barring status
             mPhone.getCallBarring(mFacility, "", mHandler.obtainMessage(
-                    MyHandler.MESSAGE_GET_CALL_BARRING), CommandsInterface.SERVICE_CLASS_VOICE);
+                    MyHandler.MESSAGE_GET_CALL_BARRING), getServiceClassForCallBarring(mPhone));
             if (mTcpListener != null) {
                 mTcpListener.onStarted(this, true);
             }
@@ -204,7 +205,7 @@
             // Send set call barring message to RIL layer.
             mPhone.setCallBarring(mFacility, !mIsActivated, password,
                     mHandler.obtainMessage(MyHandler.MESSAGE_SET_CALL_BARRING),
-                    CommandsInterface.SERVICE_CLASS_VOICE);
+                    getServiceClassForCallBarring(mPhone));
             if (mTcpListener != null) {
                 mTcpListener.onStarted(this, false);
             }
@@ -218,6 +219,18 @@
         }
     }
 
+    private static int getServiceClassForCallBarring(Phone phone) {
+        int serviceClass = CarrierConfigManager.SERVICE_CLASS_VOICE;
+        PersistableBundle carrierConfig = PhoneGlobals.getInstance()
+                .getCarrierConfigForSubId(phone.getSubId());
+        if (carrierConfig != null) {
+            serviceClass = carrierConfig.getInt(
+                    CarrierConfigManager.KEY_CALL_BARRING_DEFAULT_SERVICE_CLASS_INT,
+                    CarrierConfigManager.SERVICE_CLASS_VOICE);
+        }
+        return serviceClass;
+    }
+
     void updateSummaryText() {
         notifyChanged();
         notifyDependencyChange(shouldDisableDependents());
@@ -327,8 +340,7 @@
                     pref.mFacility,
                     "",
                     obtainMessage(MESSAGE_GET_CALL_BARRING, 0, MESSAGE_SET_CALL_BARRING,
-                            ar.exception),
-                    CommandsInterface.SERVICE_CLASS_VOICE);
+                            ar.exception), getServiceClassForCallBarring(pref.mPhone));
         }
     }
 }
diff --git a/src/com/android/phone/CallFeaturesSetting.java b/src/com/android/phone/CallFeaturesSetting.java
index 54acaad..859c447 100644
--- a/src/com/android/phone/CallFeaturesSetting.java
+++ b/src/com/android/phone/CallFeaturesSetting.java
@@ -28,6 +28,7 @@
 import android.content.pm.PackageManager;
 import android.content.pm.PackageManager.NameNotFoundException;
 import android.content.pm.ResolveInfo;
+import android.content.pm.ApplicationInfo;
 import android.content.res.Resources;
 import android.os.Bundle;
 import android.os.PersistableBundle;
@@ -54,13 +55,18 @@
 import com.android.ims.ImsManager;
 import com.android.internal.telephony.Phone;
 import com.android.internal.telephony.PhoneConstants;
+import com.android.internal.telephony.uicc.IccRecords;
+import com.android.internal.telephony.uicc.UiccController;
 import com.android.phone.settings.PhoneAccountSettingsFragment;
 import com.android.phone.settings.SuppServicesUiUtil;
 import com.android.phone.settings.VoicemailSettingsActivity;
 import com.android.phone.settings.fdn.FdnSetting;
 
+import java.util.ArrayList;
 import java.util.List;
 
+import org.codeaurora.ims.QtiCallConstants;
+
 /**
  * Top level "Call settings" UI; see res/xml/call_feature_setting.xml
  *
@@ -92,22 +98,80 @@
     private static final String BUTTON_RETRY_KEY       = "button_auto_retry_key";
     private static final String BUTTON_GSM_UMTS_OPTIONS = "button_gsm_more_expand_key";
     private static final String BUTTON_CDMA_OPTIONS = "button_cdma_more_expand_key";
+    //Hides radio technology, e.g. CDMA or GSM, details from the settings text.
+    //For example uses "Call Settings", instead of "Gsm Call Settings".
+    //PhoneType is used to display the correct settings when user clicks on the button.
+    private static final String BUTTON_COMMON_OPTIONS = "button_common_more_expand_key";
 
     private static final String PHONE_ACCOUNT_SETTINGS_KEY =
             "phone_account_settings_preference_screen";
 
     private static final String ENABLE_VIDEO_CALLING_KEY = "button_enable_video_calling";
     private static final String BUTTON_VP_KEY = "button_voice_privacy_key";
+    private static final String BUTTON_IMS_SETTINGS_KEY   = "ims_settings_key";
+    private static final String BUTTON_VIBRATING_KEY =
+            "button_vibrating_for_outgoing_call_accepted_key";
+
+    // TODO: Move these lists to a shared/common library.
+    private static final List<String> NUMERICS_BOUYGUES = createList("20820", "20821", "20888");
+    private static final List<String> NUMERICS_ORANGE =
+            createList("20801", "20802", "20891", "21403");
+    private static final List<String> NUMERICS_PROXIMUS = createList("20601");
+    private static final List<String> NUMERICS_SFR = createList("20829");
+    private static final List<String> NUMERICS_SKY_UK = createList("23457");
+    private static final List<String> NUMERICS_SWISSCOM = createList("22801");
+    private static final List<String> NUMERICS_TELE2 = createList("24007");
+    // TODO: 23591 and 23415 are Vodafone UK and appear in different lists. Check if that is
+    // intended.
+    private static final List<String> NUMERICS_VODAFONE_WITH_VOWIFI =
+            createList("26801", "20205", "20404", "26202", "26209", "23415");
+    private static final List<String> NUMERICS_VODAFONE_WITHOUT_VOWIFI =
+            createList("22210", "23591", "27201", "21401");
+
+    private static final List<String> DISABLE_IMS_NUMERICS =
+            joinLists(
+                    NUMERICS_BOUYGUES,
+                    NUMERICS_ORANGE,
+                    NUMERICS_SWISSCOM,
+                    NUMERICS_VODAFONE_WITH_VOWIFI,
+                    NUMERICS_VODAFONE_WITHOUT_VOWIFI);
+
+    private static final List<String> HIDE_VOWIFI_MENU_NUMERICS =
+            joinLists(
+                    NUMERICS_ORANGE,
+                    NUMERICS_SFR,
+                    NUMERICS_SKY_UK,
+                    NUMERICS_BOUYGUES,
+                    NUMERICS_TELE2,
+                    NUMERICS_PROXIMUS,
+                    NUMERICS_VODAFONE_WITHOUT_VOWIFI);
 
     private Phone mPhone;
     private ImsManager mImsMgr;
     private SubscriptionInfoHelper mSubscriptionInfoHelper;
     private TelecomManager mTelecomManager;
+    private UiccController mUiccController;
 
     private SwitchPreference mButtonAutoRetry;
     private PreferenceScreen mVoicemailSettingsScreen;
     private SwitchPreference mEnableVideoCalling;
     private Preference mButtonWifiCalling;
+    private PreferenceScreen mImsSettingsScreen;
+    private SwitchPreference mButtonVibratingForMoCallAccepted;
+
+    @SafeVarargs
+    private static <T> List<T> createList(T... items) {
+        return new ArrayList<>(List.of(items));
+    }
+
+    @SafeVarargs
+    private static <T> List<T> joinLists(List<T>... lists) {
+        List<T> result = new ArrayList<>();
+        for (List<T> list : lists) {
+            result.addAll(list);
+        }
+        return result;
+    }
 
     /*
      * Click Listeners, handle click based on objects attached to UI.
@@ -165,6 +229,11 @@
                     android.provider.Settings.Global.CALL_AUTO_RETRY,
                     mButtonAutoRetry.isChecked() ? 1 : 0);
             return true;
+        } else if (preference == mButtonVibratingForMoCallAccepted) {
+            Settings.Global.putInt(mPhone.getContext().getContentResolver(),
+                    android.provider.Settings.Global.VIBRATING_FOR_OUTGOING_CALL_ACCEPTED,
+                    mButtonVibratingForMoCallAccepted.isChecked() ? 1 : 0);
+            return true;
         } else if (preference == preferenceScreen.findPreference(
                 GsmUmtsCallOptions.CALL_FORWARDING_KEY)) {
             return doSsOverUtPrecautions(preference);
@@ -263,6 +332,7 @@
         mSubscriptionInfoHelper.setActionBarTitle(
                 getActionBar(), getResourcesForSubId(), R.string.call_settings_with_label);
         mTelecomManager = getSystemService(TelecomManager.class);
+        mUiccController = UiccController.getInstance();
     }
 
     private void updateImsManager(Phone phone) {
@@ -342,6 +412,7 @@
         TelephonyManager telephonyManager = getSystemService(TelephonyManager.class)
                 .createForSubscriptionId(mPhone.getSubId());
 
+        mButtonVibratingForMoCallAccepted = (SwitchPreference) findPreference(BUTTON_VIBRATING_KEY);
         // Note: The PhoneAccountSettingsActivity accessible via the
         // android.telecom.action.CHANGE_PHONE_ACCOUNTS intent is accessible directly from
         // the AOSP Dialer settings page on multi-sim devices.
@@ -351,6 +422,12 @@
         if (telephonyManager.isMultiSimEnabled()) {
             Preference phoneAccountSettingsPreference = findPreference(PHONE_ACCOUNT_SETTINGS_KEY);
             getPreferenceScreen().removePreference(phoneAccountSettingsPreference);
+            getPreferenceScreen().removePreference(mButtonVibratingForMoCallAccepted);
+        } else {
+            final int vibrating = Settings.Global.getInt(getContentResolver(),
+                    Settings.Global.VIBRATING_FOR_OUTGOING_CALL_ACCEPTED, 1);
+            mButtonVibratingForMoCallAccepted.setChecked(vibrating != 0);
+            mButtonVibratingForMoCallAccepted.setOnPreferenceChangeListener(this);
         }
 
         PreferenceScreen prefSet = getPreferenceScreen();
@@ -380,16 +457,35 @@
             mButtonAutoRetry = null;
         }
 
+        Preference commonOptions = prefSet.findPreference(BUTTON_COMMON_OPTIONS);
         Preference cdmaOptions = prefSet.findPreference(BUTTON_CDMA_OPTIONS);
         Preference gsmOptions = prefSet.findPreference(BUTTON_GSM_UMTS_OPTIONS);
         Preference fdnButton = prefSet.findPreference(BUTTON_FDN_KEY);
         fdnButton.setIntent(mSubscriptionInfoHelper.getIntent(FdnSetting.class));
+        Preference callingAccountsButton = prefSet.findPreference(PHONE_ACCOUNT_SETTINGS_KEY);
+        if (callingAccountsButton != null) {
+            prefSet.removePreference(callingAccountsButton);
+        }
         if (carrierConfig.getBoolean(CarrierConfigManager.KEY_WORLD_PHONE_BOOL)) {
-            cdmaOptions.setIntent(mSubscriptionInfoHelper.getIntent(CdmaCallOptions.class));
-            gsmOptions.setIntent(mSubscriptionInfoHelper.getIntent(GsmUmtsCallOptions.class));
+            if (carrierConfig.getBoolean("config_common_callsettings_support_bool")) {
+                prefSet.removePreference(cdmaOptions);
+                prefSet.removePreference(gsmOptions);
+                boolean isCdmaPhone = mPhone.getPhoneType() == PhoneConstants.PHONE_TYPE_CDMA;
+                commonOptions.setIntent(mSubscriptionInfoHelper.getIntent(
+                            isCdmaPhone ? CdmaCallOptions.class : GsmUmtsCallOptions.class));
+            } else {
+                prefSet.removePreference(commonOptions);
+                if (mPhone.getPhoneType() == PhoneConstants.PHONE_TYPE_CDMA) {
+                    cdmaOptions.setIntent(mSubscriptionInfoHelper.getIntent(CdmaCallOptions.class));
+                } else {
+                    prefSet.removePreference(cdmaOptions);
+                }
+                gsmOptions.setIntent(mSubscriptionInfoHelper.getIntent(GsmUmtsCallOptions.class));
+            }
         } else {
             prefSet.removePreference(cdmaOptions);
             prefSet.removePreference(gsmOptions);
+            prefSet.removePreference(commonOptions);
 
             int phoneType = mPhone.getPhoneType();
             if (carrierConfig.getBoolean(CarrierConfigManager.KEY_HIDE_CARRIER_NETWORK_SETTINGS_BOOL)) {
@@ -397,13 +493,74 @@
             } else {
                 if (phoneType == PhoneConstants.PHONE_TYPE_CDMA) {
                     prefSet.removePreference(fdnButton);
+                    addPreferencesFromResource(R.xml.cdma_call_privacy);
 
                     if (!carrierConfig.getBoolean(
                             CarrierConfigManager.KEY_VOICE_PRIVACY_DISABLE_UI_BOOL)) {
-                        addPreferencesFromResource(R.xml.cdma_call_privacy);
                         CdmaVoicePrivacySwitchPreference buttonVoicePrivacy =
                                 (CdmaVoicePrivacySwitchPreference) findPreference(BUTTON_VP_KEY);
                         buttonVoicePrivacy.setPhone(mPhone);
+                    } else {
+                        CdmaVoicePrivacySwitchPreference prefPri =
+                                (CdmaVoicePrivacySwitchPreference)prefSet.findPreference(
+                                "button_voice_privacy_key");
+                        if (prefPri != null) {
+                             prefSet.removePreference(prefPri);
+                        }
+                    }
+
+                    if (carrierConfig.getBoolean(
+                                CarrierConfigManager.KEY_CDMA_CW_CF_ENABLED_BOOL)
+                                && CdmaCallOptions.isCdmaCallWaitingActivityPresent(
+                                mPhone.getContext())) {
+                        Log.d(LOG_TAG, "Enabled CW CF");
+                        PreferenceScreen prefCW = (PreferenceScreen)
+                                prefSet.findPreference("button_cw_key");
+                        if (prefCW != null) {
+                            prefCW.setOnPreferenceClickListener(
+                                    new Preference.OnPreferenceClickListener() {
+                                        @Override
+                                        public boolean onPreferenceClick(Preference preference) {
+                                            Intent intent = new Intent(CdmaCallOptions.
+                                                    CALL_WAITING_INTENT);
+                                            intent.putExtra(
+                                                SubscriptionManager.EXTRA_SUBSCRIPTION_INDEX,
+                                                mPhone.getSubId());
+                                            startActivity(intent);
+                                            return true;
+                                        }
+                                    });
+                        }
+                        PreferenceScreen prefCF = (PreferenceScreen)
+                                prefSet.findPreference("button_cf_expand_key");
+                        if (prefCF != null) {
+                            prefCF.setOnPreferenceClickListener(
+                                    new Preference.OnPreferenceClickListener() {
+                                        @Override
+                                        public boolean onPreferenceClick(Preference preference) {
+                                             Intent intent = mPhone.isUtEnabled() ?
+                                                mSubscriptionInfoHelper.getIntent(CallForwardType.class)
+                                                : new Intent(CdmaCallOptions.CALL_FORWARD_INTENT);
+                                            intent.putExtra(
+                                                SubscriptionManager.EXTRA_SUBSCRIPTION_INDEX,
+                                                mPhone.getSubId());
+                                            startActivity(intent);
+                                            return true;
+                                        }
+                                    });
+                        }
+                    } else {
+                        Log.d(LOG_TAG, "Disabled CW CF");
+                        PreferenceScreen prefCW = (PreferenceScreen)
+                                prefSet.findPreference("button_cw_key");
+                        if (prefCW != null) {
+                            prefSet.removePreference(prefCW);
+                        }
+                        PreferenceScreen prefCF = (PreferenceScreen)
+                                prefSet.findPreference("button_cf_expand_key");
+                        if (prefCF != null) {
+                            prefSet.removePreference(prefCF);
+                        }
                     }
                 } else if (phoneType == PhoneConstants.PHONE_TYPE_GSM) {
                     if (mPhone.getIccCard() == null || !mPhone.getIccCard().getIccFdnAvailable()) {
@@ -441,6 +598,38 @@
                 .createForSubscriptionId(mPhone.getSubId());
         PersistableBundle carrierConfig =
                 PhoneGlobals.getInstance().getCarrierConfigForSubId(mPhone.getSubId());
+
+        mImsSettingsScreen = (PreferenceScreen) findPreference(BUTTON_IMS_SETTINGS_KEY);
+        if (isImsSettingsApkAvailable(mPhone.getContext())) {
+            ImsManager imsManager = ImsManager.getInstance(mPhone.getContext(),
+                    mPhone.getPhoneId());
+            try {
+                if ((imsManager.isVolteEnabledByPlatform() || imsManager.isVtEnabledByPlatform() ||
+                        imsManager.isWfcEnabledByPlatform()) &&
+                        imsManager.getImsServiceState() == ImsFeature.STATE_READY) {
+                    mImsSettingsScreen.setOnPreferenceClickListener(
+                            new Preference.OnPreferenceClickListener() {
+                         @Override
+                         public boolean onPreferenceClick(Preference preference) {
+                             Intent intent = new Intent("org.codeaurora.IMS_SETTINGS");
+                             intent.putExtra(QtiCallConstants.EXTRA_PHONE_ID, mPhone.getPhoneId());
+                             startActivity(intent);
+                             return true;
+                         }
+                    });
+                } else {
+                    prefSet.removePreference(mImsSettingsScreen);
+                }
+            } catch (ImsException ex) {
+                log("Exception when trying to get ImsServiceStatus: " + ex);
+                prefSet.removePreference(mImsSettingsScreen);
+            }
+        } else {
+            prefSet.removePreference(mImsSettingsScreen);
+        }
+        // Always remove IMS settings. They are not required on networks where FP3 supports IMS.
+        prefSet.removePreference(mImsSettingsScreen);
+
         boolean useWfcHomeModeForRoaming = carrierConfig.getBoolean(
                     CarrierConfigManager.KEY_USE_WFC_HOME_NETWORK_MODE_IN_ROAMING_NETWORK_BOOL,
                     false);
@@ -485,7 +674,7 @@
 
             int resId = com.android.internal.R.string.wifi_calling_off_summary;
             if (mImsMgr.isWfcEnabledByUser()) {
-                boolean isRoaming = telephonyManager.isNetworkRoaming();
+                boolean isRoaming = telephonyManager.isNetworkRoaming(mPhone.getSubId());
                 // Also check carrier config for roaming mode
                 int wfcMode = mImsMgr.getWfcMode(isRoaming && !useWfcHomeModeForRoaming);
                 switch (wfcMode) {
@@ -498,6 +687,9 @@
                     case ImsConfig.WfcModeFeatureValueConstants.WIFI_PREFERRED:
                         resId = com.android.internal.R.string.wfc_mode_wifi_preferred_summary;
                         break;
+                    case ImsConfig.WfcModeFeatureValueConstants.IMS_PREFERRED:
+                        resId = com.android.internal.R.string.wfc_mode_ims_preferred_summary;
+                        break;
                     default:
                         if (DBG) log("Unexpected WFC mode value: " + wfcMode);
                 }
@@ -509,6 +701,9 @@
             }
             prefSet.addPreference(mButtonWifiCalling);
         }
+        if (needRemoveVoWifiMenu(mPhone)) {
+            prefSet.removePreference(mButtonWifiCalling);
+        }
 
         try {
             if (mImsMgr.getImsServiceState() != ImsFeature.STATE_READY) {
@@ -524,6 +719,57 @@
         }
     }
 
+    private static String getCurrentOperatorNumeric(Phone phone) {
+        TelephonyManager telephonyManager = TelephonyManager.from(phone.getContext());
+        String simOperator = telephonyManager.getSimOperatorNumericForPhone(phone.getPhoneId());
+        if (simOperator != null && simOperator.length() >= 5) {
+            return simOperator.substring(0, 5);
+        }
+        return null;
+    }
+
+    private String getCurrentGid(Phone phone) {
+        final boolean hasSubscription =
+                SubscriptionManager.from(phone.getContext())
+                        .getActiveSubscriptionInfo(phone.getSubId()) != null;
+        if (mUiccController == null || !hasSubscription) {
+            return null;
+        }
+        final IccRecords iccRecods =
+                mUiccController.getIccRecords(
+                        SubscriptionManager.getPhoneId(phone.getSubId()),
+                        UiccController.APP_FAM_3GPP);
+        if (iccRecods == null) {
+            return null;
+        }
+        return iccRecods.getGid1();
+    }
+
+    private boolean needRemoveVoWifiMenu(Phone phone) {
+        // Gather numeric (MCC/MNC) and group id
+        final String numeric = getCurrentOperatorNumeric(phone);
+        final String gid = getCurrentGid(phone);
+        Log.i("needRemoveVoWifiMenu", "mccmnc = " + numeric + ", gid = " + gid);
+
+        // Various cases that are covered via MCC/MNC check
+        if (HIDE_VOWIFI_MENU_NUMERICS.contains(numeric)) {
+            return true;
+        }
+
+        // Special cases that require GID to match
+        // Tele2 Sverige AB
+        if ("24007".equals(numeric) && gid != null && gid.startsWith("0C")) {
+            return true;
+        }
+        // UK networks with overlapping MCC/MNCs, check GID as well
+        if (("23430".equals(numeric) || "23438".equals(numeric))
+                && gid != null
+                && gid.startsWith("28")) {
+            return true;
+        }
+        return false;
+    }
+
     /**
      * Hides the top level voicemail settings entry point if the default dialer contains a
      * particular manifest metadata key. This is required when the default dialer wants to display
@@ -603,4 +849,24 @@
             return getResources();
         }
     }
+
+    /**
+     * check whether ImsSettings apk exist in system, if yes, return true, else
+     * return false.
+     */
+    public static boolean isImsSettingsApkAvailable(Context context) {
+        // check whether the target handler exist in system
+        Intent intent = new Intent("org.codeaurora.IMS_SETTINGS");
+        PackageManager pm = context.getPackageManager();
+        List<ResolveInfo> list = pm.queryIntentActivities(intent, 0);
+        for (ResolveInfo resolveInfo : list) {
+            // check is it installed in system.img, exclude the application
+            // installed by user
+            if ((resolveInfo.activityInfo.applicationInfo.flags &
+                    ApplicationInfo.FLAG_SYSTEM) != 0) {
+                return true;
+            }
+        }
+        return false;
+    }
 }
diff --git a/src/com/android/phone/CallForwardEditPreference.java b/src/com/android/phone/CallForwardEditPreference.java
index e8cf0d1..fb5c1ca 100644
--- a/src/com/android/phone/CallForwardEditPreference.java
+++ b/src/com/android/phone/CallForwardEditPreference.java
@@ -2,6 +2,12 @@
 
 import static com.android.phone.TimeConsumingPreferenceActivity.EXCEPTION_ERROR;
 import static com.android.phone.TimeConsumingPreferenceActivity.RESPONSE_ERROR;
+import static com.android.phone.TimeConsumingPreferenceActivity.RADIO_OFF_ERROR;
+import static com.android.phone.TimeConsumingPreferenceActivity.FDN_CHECK_FAILURE;
+import static com.android.phone.TimeConsumingPreferenceActivity.STK_CC_SS_TO_DIAL_ERROR;
+import static com.android.phone.TimeConsumingPreferenceActivity.STK_CC_SS_TO_USSD_ERROR;
+import static com.android.phone.TimeConsumingPreferenceActivity.STK_CC_SS_TO_SS_ERROR;
+import static com.android.phone.TimeConsumingPreferenceActivity.STK_CC_SS_TO_DIAL_VIDEO_ERROR;
 
 import android.app.AlertDialog;
 import android.content.Context;
@@ -11,9 +17,12 @@
 import android.os.Handler;
 import android.os.Message;
 import android.os.PersistableBundle;
+import android.os.SystemProperties;
 import android.telephony.CarrierConfigManager;
-import android.telephony.PhoneNumberUtils;
+import android.telephony.ims.ImsReasonInfo;
 import android.telephony.TelephonyManager;
+import android.telephony.PhoneNumberUtils;
+import android.telephony.ServiceState;
 import android.text.BidiFormatter;
 import android.text.SpannableString;
 import android.text.TextDirectionHeuristics;
@@ -21,6 +30,13 @@
 import android.util.AttributeSet;
 import android.util.Log;
 import android.view.View;
+import android.widget.Toast;
+
+import org.codeaurora.ims.QtiImsException;
+import org.codeaurora.ims.QtiImsExtListenerBaseImpl;
+import org.codeaurora.ims.QtiImsExtConnector;
+import org.codeaurora.ims.QtiImsExtManager;
+import org.codeaurora.ims.utils.QtiImsExtUtils;
 
 import com.android.internal.telephony.CallForwardInfo;
 import com.android.internal.telephony.CommandException;
@@ -31,6 +47,7 @@
 
 public class CallForwardEditPreference extends EditPhoneNumberPreference {
     private static final String LOG_TAG = "CallForwardEditPreference";
+    private static final boolean DBG = (PhoneGlobals.DBG_LEVEL >= 2);
 
     private static final String SRC_TAGS[]       = {"{0}"};
     private CharSequence mSummaryOnTemplate;
@@ -59,15 +76,28 @@
     private int mAction;
     private HashMap<String, String> mCfInfo;
 
+    private boolean isTimerEnabled;
+    private boolean mAllowSetCallFwding = false;
+    private boolean mUtEnabled = false;
+    /*Variables which holds CFUT response data*/
+    private int mStartHour;
+    private int mStartMinute;
+    private int mEndHour;
+    private int mEndMinute;
+    private int mStatus;
+    private String mNumber;
+    private QtiImsExtConnector mQtiImsExtConnector;
+    private QtiImsExtManager mQtiImsExtManager;
+    private Context mContext;
+
     public CallForwardEditPreference(Context context, AttributeSet attrs) {
         super(context, attrs);
 
         mSummaryOnTemplate = this.getSummaryOn();
+        mContext = context;
 
         TypedArray a = context.obtainStyledAttributes(attrs,
                 R.styleable.CallForwardEditPreference, 0, R.style.EditPhoneNumberPreference);
-        mServiceClass = a.getInt(R.styleable.CallForwardEditPreference_serviceClass,
-                CommandsInterface.SERVICE_CLASS_VOICE);
         reason = a.getInt(R.styleable.CallForwardEditPreference_reason,
                 CommandsInterface.CF_REASON_UNCONDITIONAL);
         a.recycle();
@@ -80,10 +110,12 @@
     }
 
     void init(TimeConsumingPreferenceListener listener, Phone phone,
-            boolean replaceInvalidCFNumber, boolean callForwardByUssd) {
+            boolean replaceInvalidCFNumber, int serviceClass, boolean callForwardByUssd) {
         mPhone = phone;
         mTcpListener = listener;
         mReplaceInvalidCFNumber = replaceInvalidCFNumber;
+        mServiceClass = serviceClass;
+        mUtEnabled = mPhone.isUtEnabled();
         mCallForwardByUssd = callForwardByUssd;
         Log.d(LOG_TAG,
                 "init :mReplaceInvalidCFNumber " + mReplaceInvalidCFNumber + ", mCallForwardByUssd "
@@ -97,6 +129,80 @@
         }
     }
 
+    private void createQtiImsExtConnector(Context context) {
+        try {
+            mQtiImsExtConnector = new QtiImsExtConnector(context,
+                    new QtiImsExtConnector.IListener() {
+                        @Override
+                        public void onConnectionAvailable(QtiImsExtManager qtiImsExtManager) {
+                            Log.i(LOG_TAG, "QtiImsExtConnector onConnectionAvailable");
+                            mQtiImsExtManager = qtiImsExtManager;
+                            setTimeSettingVisibility(true);
+                            try {
+                                mQtiImsExtManager.getCallForwardUncondTimer(mPhone.getPhoneId(),
+                                        reason, mServiceClass, imsInterfaceListener);
+                            } catch (QtiImsException e){
+                                Log.d(LOG_TAG, "getCallForwardUncondTimer failed. " +
+                                        "Exception = " + e);
+                            }
+                        }
+                        @Override
+                        public void onConnectionUnavailable() {
+                            mQtiImsExtManager = null;
+                            //QtiImsExtManager is not available so set
+                            //isTimerEnabled to false so that no Timer related operations will hit
+                            //and remove spinner.
+                            isTimerEnabled = false;
+                            mTcpListener.onFinished(CallForwardEditPreference.this, false);
+                        }
+                    });
+        } catch (QtiImsException e) {
+            Log.e(LOG_TAG, "Unable to create QtiImsExtConnector");
+        }
+    }
+
+    public void deInit() {
+        if (mQtiImsExtConnector != null) {
+            mQtiImsExtConnector.disconnect();
+            mQtiImsExtConnector = null;
+            mQtiImsExtManager = null;
+            isTimerEnabled = false;
+        }
+    }
+
+    private boolean isUtUnavailableForVideoCallForward() {
+        return !mPhone.isUtEnabled() && (mServiceClass == CommandsInterface.SERVICE_CLASS_DATA_SYNC
+                + CommandsInterface.SERVICE_CLASS_PACKET);
+    }
+
+    public boolean isAutoRetryCfu() {
+        CarrierConfigManager cfgManager = (CarrierConfigManager)
+            mContext.getSystemService(Context.CARRIER_CONFIG_SERVICE);
+        boolean autoRetryCfu = false;
+        if (cfgManager != null) {
+            autoRetryCfu = cfgManager.getConfigForSubId(mPhone.getSubId())
+                .getBoolean("config_auto_retry_cfu_bool");
+        }
+        /**
+         * if UT is true at begginning and after query CFU fail with NW error 403 at
+         * Modem side,  Modem update UT to false at first and rasie error response
+         * to AP.
+         * At this condition, switch to query SS over cdma method UI.
+         */
+        return autoRetryCfu && mUtEnabled && !mPhone.isUtEnabled();
+    }
+
+    private boolean isTimerEnabled() {
+        //Timer is enabled only when UT services are enabled
+        CarrierConfigManager cfgManager = (CarrierConfigManager)
+                mContext.getSystemService(Context.CARRIER_CONFIG_SERVICE);
+        return (SystemProperties.getBoolean("persist.radio.ims.cmcc", false)
+                || (cfgManager != null) ?
+                cfgManager.getConfigForSubId(mPhone.getSubId())
+                    .getBoolean("config_enable_cfu_time") : false)
+                && mPhone.isUtEnabled();
+    }
+
     void restoreCallForwardInfo(CallForwardInfo cf) {
         handleCallForwardResult(cf);
         updateSummaryText();
@@ -120,6 +226,11 @@
         super.onDialogClosed(positiveResult);
 
         Log.d(LOG_TAG, "mButtonClicked=" + mButtonClicked + ", positiveResult=" + positiveResult);
+        if (isUtUnavailableForVideoCallForward()) {
+            Toast.makeText(mContext, R.string.ut_unavailable_to_set_video_cf_toast,
+                    Toast.LENGTH_SHORT).show();
+            return;
+        }
         // Ignore this event if the user clicked the cancel button, or if the dialog is dismissed
         // without any button being pressed (back button press or click event outside the dialog).
         if (this.mButtonClicked != DialogInterface.BUTTON_NEGATIVE) {
@@ -138,14 +249,34 @@
             final String number = getPhoneNumber();
 
             Log.d(LOG_TAG, "callForwardInfo=" + callForwardInfo);
+            final int editStartHour = isAllDayChecked()? 0 : getStartTimeHour();
+            final int editStartMinute = isAllDayChecked()? 0 : getStartTimeMinute();
+            final int editEndHour = isAllDayChecked()? 0 : getEndTimeHour();
+            final int editEndMinute = isAllDayChecked()? 0 : getEndTimeMinute();
 
+            boolean isCFSettingChanged = true;
             if (action == CommandsInterface.CF_ACTION_REGISTRATION
                     && callForwardInfo != null
                     && callForwardInfo.status == 1
                     && number.equals(callForwardInfo.number)) {
-                // no change, do nothing
-                Log.d(LOG_TAG, "no change, do nothing");
-            } else {
+                if (reason == CommandsInterface.CF_REASON_UNCONDITIONAL){
+                    // need to check if the time period for CFUT is changed
+                    if (isAllDayChecked()){
+                        isCFSettingChanged = isTimerValid();
+                    } else {
+                        isCFSettingChanged = mStartHour != editStartHour
+                                || mStartMinute != editStartMinute
+                                || mEndHour != editEndHour
+                                || mEndMinute != editEndMinute;
+                    }
+                } else {
+                    // no change, do nothing
+                    if (DBG) Log.d(LOG_TAG, "no change, do nothing");
+                    isCFSettingChanged = false;
+                }
+            }
+            if (DBG) Log.d(LOG_TAG, "isCFSettingChanged = " + isCFSettingChanged);
+            if (isCFSettingChanged) {
                 // set to network
                 Log.d(LOG_TAG, "reason=" + reason + ", action=" + action
                         + ", number=" + number);
@@ -153,7 +284,34 @@
                 // Display no forwarding number while we're waiting for
                 // confirmation
                 setSummaryOn("");
-                if (!mCallForwardByUssd) {
+
+                // the interface of Phone.setCallForwardingOption has error:
+                // should be action, reason...
+                if (reason == CommandsInterface.CF_REASON_UNCONDITIONAL
+                        && !isAllDayChecked() && isTimerEnabled
+                        && (action != CommandsInterface.CF_ACTION_DISABLE)) {
+
+                    Log.d(LOG_TAG, "setCallForwardingUncondTimerOption,"
+                                                +"starthour = " + editStartHour
+                                                + "startminute = " + editStartMinute
+                                                + "endhour = " + editEndHour
+                                                + "endminute = " + editEndMinute);
+                    try {
+                        mQtiImsExtManager.setCallForwardUncondTimer(mPhone.getPhoneId(),
+                                editStartHour,
+                                editStartMinute,
+                                editEndHour,
+                                editEndMinute,
+                                action,
+                                reason,
+                                mServiceClass,
+                                number,
+                                imsInterfaceListener);
+                    } catch (QtiImsException e) {
+                        Log.d(LOG_TAG, "setCallForwardUncondTimer exception!" +e);
+                    }
+                    mAllowSetCallFwding = true;
+                } else if (!mCallForwardByUssd) {
                     // the interface of Phone.setCallForwardingOption has error:
                     // should be action, reason...
                     mPhone.setCallForwardingOption(action,
@@ -181,7 +339,18 @@
         }
     }
 
-    private void handleCallForwardResult(CallForwardInfo cf) {
+    void handleCallForwardTimerResult() {
+        setToggled(mStatus == 1);
+        setPhoneNumber(mNumber);
+        /*Setting Timer*/
+        if (reason == CommandsInterface.CF_REASON_UNCONDITIONAL) {
+            setAllDayCheckBox(!(mStatus == 1 && isTimerValid()));
+            //set timer info even all be zero
+            setPhoneNumberWithTimePeriod(mNumber, mStartHour, mStartMinute, mEndHour, mEndMinute);
+        }
+    }
+
+    void handleCallForwardResult(CallForwardInfo cf) {
         callForwardInfo = cf;
         Log.d(LOG_TAG, "handleGetCFResponse done, callForwardInfo=" + callForwardInfo);
         // In some cases, the network can send call forwarding URIs for voicemail that violate the
@@ -194,6 +363,13 @@
             Log.i(LOG_TAG, "handleGetCFResponse: Overridding CF number");
         }
 
+        if (DBG) Log.d(LOG_TAG, "handleGetCFResponse done, callForwardInfo=" + callForwardInfo);
+        if (reason == CommandsInterface.CF_REASON_UNCONDITIONAL) {
+            mStartHour = 0;
+            mStartMinute = 0;
+            mEndHour = 0;
+            mEndMinute = 0;
+        }
         setToggled(callForwardInfo.status == 1);
         boolean displayVoicemailNumber = false;
         if (TextUtils.isEmpty(callForwardInfo.number)) {
@@ -217,11 +393,23 @@
      */
     void startCallForwardOptionsQuery() {
         if (!mCallForwardByUssd) {
-            mPhone.getCallForwardingOption(reason, mServiceClass,
-                    mHandler.obtainMessage(MyHandler.MESSAGE_GET_CF,
-                            // unused in this case
-                            CommandsInterface.CF_ACTION_DISABLE,
-                            MyHandler.MESSAGE_GET_CF, null));
+            if (isUtUnavailableForVideoCallForward()) {
+                Log.d(LOG_TAG, "Video CF query cannot be triggered due to UT is false now");
+                return;
+            }
+            isTimerEnabled = isTimerEnabled();
+            Log.d(LOG_TAG, "isTimerEnabled=" + isTimerEnabled);
+            if (reason == CommandsInterface.CF_REASON_UNCONDITIONAL && isTimerEnabled) {
+                createQtiImsExtConnector(mContext);
+                //Connect will get the QtiImsExtManager instance and query CFUT.
+                mQtiImsExtConnector.connect();
+            } else {
+                mPhone.getCallForwardingOption(reason, mServiceClass,
+                        mHandler.obtainMessage(MyHandler.MESSAGE_GET_CF,
+                        // unused in this case
+                        CommandsInterface.CF_ACTION_DISABLE,
+                        MyHandler.MESSAGE_GET_CF, null));
+            }
         } else {
             mHandler.sendMessage(mHandler.obtainMessage(mHandler.MESSAGE_GET_CF_USSD,
                     // unused in this case
@@ -233,8 +421,13 @@
     }
 
     private void updateSummaryText() {
+        if (DBG) Log.d(LOG_TAG, "updateSummaryText, complete fetching for reason " + reason);
         if (isToggled()) {
-            final String number = getRawPhoneNumber();
+            String number = getRawPhoneNumber();
+            if (reason == CommandsInterface.CF_REASON_UNCONDITIONAL
+                    && isTimerEnabled && isTimerValid()){
+                number = getRawPhoneNumberWithTime();
+            }
             if (number != null && number.length() > 0) {
                 // Wrap the number to preserve presentation in RTL languages.
                 String wrappedNumber = BidiFormatter.getInstance().unicodeWrap(
@@ -268,6 +461,90 @@
         return telephonyManager.getNetworkCountryIso().toUpperCase();
     }
 
+    private QtiImsExtListenerBaseImpl imsInterfaceListener =
+            new QtiImsExtListenerBaseImpl() {
+
+        @Override
+        public void onSetCallForwardUncondTimer(int phoneId, int status) {
+            if (DBG) Log.d(LOG_TAG, "onSetCallForwardTimer phoneId=" + phoneId +" status= "+status);
+
+            try {
+                mQtiImsExtManager.getCallForwardUncondTimer(phoneId,
+                        reason,
+                        mServiceClass,
+                        imsInterfaceListener);
+            } catch (QtiImsException e) {
+                if (DBG) Log.d(LOG_TAG, "setCallForwardUncondTimer exception! ");
+            }
+        }
+
+        @Override
+        public void onGetCallForwardUncondTimer(int phoneId, int startHour, int endHour,
+                int startMinute, int endMinute, int reason, int status, String number,
+                int service) {
+            Log.d(LOG_TAG,"onGetCallForwardUncondTimer phoneId=" + phoneId + " startHour= "
+                    + startHour + " endHour = " + endHour + "endMinute = " + endMinute
+                    + "status = " + status + "number = " + number + "service= " +service);
+            mStartHour = startHour;
+            mStartMinute = startMinute;
+            mEndHour = endHour;
+            mEndMinute = endMinute;
+            mStatus = status;
+            mNumber = number;
+
+            mHandler.sendMessage(mHandler.obtainMessage(mHandler.MESSAGE_GET_CFUT));
+        }
+
+        @Override
+        public void onUTReqFailed(int phoneId, int errCode, String errString) {
+            if (DBG) Log.d(LOG_TAG, "onUTReqFailed phoneId=" + phoneId + " errCode= "
+                    +errCode + "errString ="+ errString);
+            Message msg = mHandler.obtainMessage(mHandler.MESSAGE_GET_UT_FAILED);
+            msg.arg1 = errCode;
+            msg.sendToTarget();
+        }
+    };
+
+    private void handleUtReqFailed(int errCode) {
+        if (mAllowSetCallFwding) {
+            mTcpListener.onFinished(CallForwardEditPreference.this, false);
+            mAllowSetCallFwding = false;
+        } else {
+            mTcpListener.onFinished(CallForwardEditPreference.this, true);
+        }
+        int error = RESPONSE_ERROR;
+        if (errCode == ImsReasonInfo.CODE_FDN_BLOCKED) {
+            error = FDN_CHECK_FAILURE;
+        } else if (errCode == ImsReasonInfo.CODE_UT_SS_MODIFIED_TO_DIAL) {
+            error = STK_CC_SS_TO_DIAL_ERROR;
+        } else if (errCode == ImsReasonInfo.CODE_UT_SS_MODIFIED_TO_DIAL_VIDEO) {
+            error = STK_CC_SS_TO_DIAL_VIDEO_ERROR;
+        } else if(errCode == ImsReasonInfo.CODE_UT_SS_MODIFIED_TO_USSD) {
+            error = STK_CC_SS_TO_USSD_ERROR;
+        } else if (errCode == ImsReasonInfo.CODE_UT_SS_MODIFIED_TO_SS) {
+            error = STK_CC_SS_TO_SS_ERROR;
+        } else if (errCode == ImsReasonInfo.CODE_RADIO_OFF) {
+            error = RADIO_OFF_ERROR;
+        }
+        mTcpListener.onError(CallForwardEditPreference.this, error);
+    }
+
+    private void handleGetCFTimerResponse() {
+        if (mAllowSetCallFwding) {
+            mTcpListener.onFinished(CallForwardEditPreference.this, false);
+            mAllowSetCallFwding = false;
+        } else {
+            mTcpListener.onFinished(CallForwardEditPreference.this, true);
+        }
+        handleCallForwardTimerResult();
+        updateSummaryText();
+    }
+
+    //used to check if timer infor is valid
+    private boolean isTimerValid() {
+        return mStartHour != 0 || mStartMinute != 0 || mEndHour != 0 || mEndMinute != 0;
+    }
+
     // Message protocol:
     // what: get vs. set
     // arg1: action -- register vs. disable
@@ -277,6 +554,8 @@
         static final int MESSAGE_SET_CF = 1;
         static final int MESSAGE_GET_CF_USSD = 2;
         static final int MESSAGE_SET_CF_USSD = 3;
+        static final int MESSAGE_GET_CFUT = 4;
+        static final int MESSAGE_GET_UT_FAILED = 5;
 
         TelephonyManager.UssdResponseCallback mUssdCallback =
                 new TelephonyManager.UssdResponseCallback() {
@@ -319,6 +598,7 @@
 
         @Override
         public void handleMessage(Message msg) {
+            Log.i(LOG_TAG, "handleMessage : " + msg.what);
             switch (msg.what) {
                 case MESSAGE_GET_CF:
                     handleGetCFResponse(msg);
@@ -332,6 +612,12 @@
                 case MESSAGE_SET_CF_USSD:
                     prepareUssdCommand(msg, CarrierXmlParser.SsEntry.SSAction.UNKNOWN);
                     break;
+                case MESSAGE_GET_CFUT:
+                    handleGetCFTimerResponse();
+                    break;
+                case MESSAGE_GET_UT_FAILED:
+                    handleUtReqFailed(msg.arg1);
+                    break;
             }
         }
 
@@ -346,8 +632,12 @@
             if (ar.exception != null) {
                 Log.d(LOG_TAG, "handleGetCFResponse: ar.exception=" + ar.exception);
                 if (ar.exception instanceof CommandException) {
-                    mTcpListener.onException(CallForwardEditPreference.this,
-                            (CommandException) ar.exception);
+                    if (isAutoRetryCfu() && reason == CommandsInterface.CF_REASON_UNCONDITIONAL) {
+                         mUtEnabled = mPhone.isUtEnabled();
+                    } else {
+                        mTcpListener.onException(CallForwardEditPreference.this,
+                                (CommandException) ar.exception);
+                    }
                 } else {
                     // Most likely an ImsException and we can't handle it the same way as
                     // a CommandException. The best we can do is to handle the exception
diff --git a/src/com/android/phone/CallForwardType.java b/src/com/android/phone/CallForwardType.java
new file mode 100644
index 0000000..d5d407a
--- /dev/null
+++ b/src/com/android/phone/CallForwardType.java
@@ -0,0 +1,230 @@
+/* Copyright (c) 2015, 2017-2018, 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 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.
+ */
+
+package com.android.phone;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.os.Bundle;
+import android.preference.Preference;
+import android.preference.PreferenceActivity;
+import android.preference.PreferenceScreen;
+import android.telephony.CarrierConfigManager;
+import android.telephony.ims.ImsMmTelManager;
+import android.telephony.ims.feature.ImsFeature;
+import android.telephony.ims.feature.MmTelFeature;
+import android.telephony.SubscriptionManager;
+import android.util.Log;
+import android.view.MenuItem;
+
+import com.android.ims.FeatureConnector;
+import com.android.ims.ImsException;
+import com.android.ims.ImsManager;
+import com.android.internal.telephony.CommandsInterface;
+import com.android.internal.telephony.IccCardConstants;
+import com.android.internal.telephony.Phone;
+import com.android.internal.telephony.PhoneConstants;
+import com.android.internal.telephony.TelephonyIntents;
+import android.preference.Preference.OnPreferenceClickListener;
+
+public class CallForwardType extends PreferenceActivity {
+    private static final String LOG_TAG = "CallForwardType";
+    private final boolean DBG = (PhoneGlobals.DBG_LEVEL >= 2);
+
+    private static final String BUTTON_CF_KEY_VOICE = "button_cf_key_voice";
+    private static final String BUTTON_CF_KEY_VIDEO = "button_cf_key_video";
+
+    private Preference mVoicePreference;
+    private Preference mVideoPreference;
+    private Phone mPhone;
+    private SubscriptionInfoHelper mSubscriptionInfoHelper;
+    private boolean mIsUtCapable = false;
+    private boolean mIsVtCapable = false;
+    boolean mHideVtCfOption = false;
+    private FeatureConnector<ImsManager> mFeatureConnector;
+    private int mPhoneId;
+    private IntentFilter mIntentFilter;
+
+     private BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
+         @Override
+         public void onReceive(Context context, Intent intent) {
+             Log.d(LOG_TAG, "onReceive intent : " + intent);
+                 int phoneId = intent.getIntExtra(PhoneConstants.PHONE_KEY,
+                         SubscriptionManager.INVALID_PHONE_INDEX);
+             if (TelephonyIntents.ACTION_SIM_STATE_CHANGED.equals(intent.getAction())) {
+                 if (phoneId == mPhoneId &&
+                         IccCardConstants.INTENT_VALUE_ICC_ABSENT.equals(
+                             intent.getStringExtra(IccCardConstants.INTENT_KEY_ICC_STATE))) {
+                     Log.d(LOG_TAG, "onSimAbsent, exit");
+                     finish();
+                 }
+             }
+         }
+     };
+
+    private ImsMmTelManager.CapabilityCallback mCapabilityCallback =
+        new ImsMmTelManager.CapabilityCallback() {
+            @Override
+            public void onCapabilitiesStatusChanged(MmTelFeature.MmTelCapabilities capabilities) {
+                    boolean isUtCapable = capabilities.isCapable(
+                            MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_UT);
+                    boolean isVtCapable = capabilities.isCapable(
+                            MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VIDEO);
+                    if (isUtCapable ==  mIsUtCapable && isVtCapable == mIsVtCapable) {
+                        return;
+                    }
+                    mIsUtCapable = isUtCapable;
+                    mIsVtCapable = isVtCapable;
+                    showVideoOption(mIsUtCapable && mIsVtCapable && !mHideVtCfOption);
+            }
+    };
+
+    private void setListeners() throws ImsException {
+        ImsManager imsMgr = ImsManager.getInstance(mPhone.getContext(), mPhone.getPhoneId());
+        imsMgr.addCapabilitiesCallback(mCapabilityCallback);
+    }
+
+    private void removeListeners() {
+        ImsManager imsMgr = ImsManager.getInstance(mPhone.getContext(), mPhone.getPhoneId());
+        try {
+            imsMgr.removeCapabilitiesCallback(mCapabilityCallback);
+        } catch (ImsException e) {
+            Log.d(LOG_TAG, "unable to remove callback.");
+        }
+    }
+
+    private void showVideoOption(boolean show) {
+        if (!show){
+            Log.d(LOG_TAG, "remove video option");
+            getPreferenceScreen().removePreference(mVideoPreference);
+        } else {
+            Log.d(LOG_TAG, "enable video option");
+            getPreferenceScreen().addPreference(mVideoPreference);
+        }
+    }
+    @Override
+    protected void onCreate(Bundle icicle) {
+        super.onCreate(icicle);
+        Log.d(LOG_TAG, "onCreate..");
+        /*Loading CallForward Setting page*/
+        addPreferencesFromResource(R.xml.call_forward_type);
+        mSubscriptionInfoHelper = new SubscriptionInfoHelper(this, getIntent());
+        mPhone = mSubscriptionInfoHelper.getPhone();
+        mPhoneId = mPhone.getPhoneId();
+        mIsUtCapable = mPhone.isUtEnabled();
+        mIsVtCapable = mPhone.isVideoEnabled();
+        mFeatureConnector = new FeatureConnector(mPhone.getContext(), mPhone.getPhoneId(),
+                new FeatureConnector.Listener<ImsManager>() {
+                    @Override
+                    public ImsManager getFeatureManager() {
+                        return ImsManager.getInstance(mPhone.getContext(), mPhone.getPhoneId());
+                    }
+
+                    @Override
+                    public void connectionReady(ImsManager manager) throws ImsException {
+                        Log.d(LOG_TAG, "ImsManager: connection ready.");
+                        setListeners();
+                    }
+
+                    @Override
+                    public void connectionUnavailable() {
+                        Log.d(LOG_TAG, "ImsManager: connection unavailable.");
+                        removeListeners();
+                    }
+                }, LOG_TAG);
+
+        /*Voice Button*/
+        mVoicePreference = (Preference) findPreference(BUTTON_CF_KEY_VOICE);
+        mVoicePreference.setOnPreferenceClickListener(new OnPreferenceClickListener() {
+
+            /*onClicking Voice Button*/
+            public boolean onPreferenceClick(Preference pref) {
+                Intent intent = mSubscriptionInfoHelper.getIntent(GsmUmtsCallForwardOptions.class);
+                Log.d(LOG_TAG, "Voice button clicked!");
+                intent.putExtra(PhoneUtils.SERVICE_CLASS,
+                        CommandsInterface.SERVICE_CLASS_VOICE);
+                startActivity(intent);
+                return true;
+            }
+        });
+
+         /*Video Button*/
+         mVideoPreference = (Preference) findPreference(BUTTON_CF_KEY_VIDEO);
+         mVideoPreference.setOnPreferenceClickListener(new OnPreferenceClickListener() {
+
+             /*onClicking Video Button*/
+             public boolean onPreferenceClick(Preference pref) {
+                Intent intent = mSubscriptionInfoHelper.getIntent(GsmUmtsCallForwardOptions.class);
+                Log.d(LOG_TAG, "Video button clicked!");
+                intent.putExtra(PhoneUtils.SERVICE_CLASS,
+                       (CommandsInterface.SERVICE_CLASS_DATA_SYNC +
+                        CommandsInterface.SERVICE_CLASS_PACKET));
+                startActivity(intent);
+                return true;
+             }
+        });
+        mIntentFilter = new IntentFilter();
+        mIntentFilter.addAction(TelephonyIntents.ACTION_SIM_STATE_CHANGED);
+        CarrierConfigManager cfgManager = (CarrierConfigManager)
+                mPhone.getContext().getSystemService(Context.CARRIER_CONFIG_SERVICE);
+        if (cfgManager != null) {
+            mHideVtCfOption = cfgManager.getConfigForSubId(mPhone.getSubId())
+                .getBoolean("config_hide_vt_callforward_option");
+        }
+    }
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+        registerReceiver(mBroadcastReceiver, mIntentFilter);
+        mFeatureConnector.connect();
+
+        if (mHideVtCfOption || !(mPhone.isUtEnabled() && mPhone.isVideoEnabled())) {
+            Log.d(LOG_TAG, "VT or/and Ut Service is not enabled");
+            showVideoOption(false);
+        }
+    }
+
+    @Override
+    protected void onPause() {
+        super.onPause();
+        mFeatureConnector.disconnect();
+        unregisterReceiver(mBroadcastReceiver);
+    }
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        final int itemId = item.getItemId();
+        if (itemId == android.R.id.home) {
+            onBackPressed();
+            return true;
+        }
+        return super.onOptionsItemSelected(item);
+    }
+}
diff --git a/src/com/android/phone/CallWaitingSwitchPreference.java b/src/com/android/phone/CallWaitingSwitchPreference.java
index 41442fe..980ec47 100644
--- a/src/com/android/phone/CallWaitingSwitchPreference.java
+++ b/src/com/android/phone/CallWaitingSwitchPreference.java
@@ -1,5 +1,9 @@
 package com.android.phone;
 
+import com.android.internal.telephony.CommandException;
+import com.android.internal.telephony.Phone;
+import com.android.internal.telephony.PhoneConstants;
+
 import static com.android.phone.TimeConsumingPreferenceActivity.RESPONSE_ERROR;
 
 import android.content.Context;
@@ -7,6 +11,7 @@
 import android.os.Handler;
 import android.os.Message;
 import android.preference.SwitchPreference;
+import android.telephony.CarrierConfigManager;
 import android.util.AttributeSet;
 import android.util.Log;
 
@@ -20,6 +25,7 @@
     private final MyHandler mHandler = new MyHandler();
     private Phone mPhone;
     private TimeConsumingPreferenceListener mTcpListener;
+    private boolean mUtEnabled = false;
 
     public CallWaitingSwitchPreference(Context context, AttributeSet attrs, int defStyle) {
         super(context, attrs, defStyle);
@@ -37,6 +43,7 @@
             TimeConsumingPreferenceListener listener, boolean skipReading, Phone phone) {
         mPhone = phone;
         mTcpListener = listener;
+        mUtEnabled = mPhone.isUtEnabled();
 
         if (!skipReading) {
             mPhone.getCallWaiting(mHandler.obtainMessage(MyHandler.MESSAGE_GET_CALL_WAITING,
@@ -58,6 +65,18 @@
         }
     }
 
+    public boolean isAutoRetrySsoverCdma() {
+        CarrierConfigManager cfgManager = (CarrierConfigManager)
+            getContext().getSystemService(Context.CARRIER_CONFIG_SERVICE);
+        boolean autoRetryCfu = false;
+        if (cfgManager != null) {
+            autoRetryCfu = cfgManager.getConfigForSubId(mPhone.getSubId())
+                .getBoolean("config_auto_retry_cfu_bool");
+        }
+        boolean isCdma = mPhone.getPhoneType() == PhoneConstants.PHONE_TYPE_CDMA;
+        return autoRetryCfu && isCdma && mUtEnabled && !mPhone.isUtEnabled();
+    }
+
     private class MyHandler extends Handler {
         static final int MESSAGE_GET_CALL_WAITING = 0;
         static final int MESSAGE_SET_CALL_WAITING = 1;
@@ -90,7 +109,9 @@
                     Log.d(LOG_TAG, "handleGetCallWaitingResponse: CommandException=" +
                             ar.exception);
                 }
-                if (mTcpListener != null) {
+                if (isAutoRetrySsoverCdma()) {
+                    mUtEnabled = false;
+                } else if (mTcpListener != null) {
                     mTcpListener.onException(CallWaitingSwitchPreference.this,
                             (CommandException)ar.exception);
                 }
diff --git a/src/com/android/phone/CarrierConfigLoader.java b/src/com/android/phone/CarrierConfigLoader.java
index 866e481..5683b06 100644
--- a/src/com/android/phone/CarrierConfigLoader.java
+++ b/src/com/android/phone/CarrierConfigLoader.java
@@ -99,10 +99,16 @@
     private PersistableBundle[] mPersistentOverrideConfigs;
     // Carrier configs that are provided via the override test API, indexed by phone ID.
     private PersistableBundle[] mOverrideConfigs;
+    // Carrier configs to override code default when there is no SIM inserted
+    private PersistableBundle mNoSimConfig;
     // Service connection for binding to config app.
     private CarrierServiceConnection[] mServiceConnection;
+    // Service connection for binding to carrier config app for no SIM config.
+    private CarrierServiceConnection[] mServiceConnectionForNoSimConfig;
     // Whether we are bound to a service for each phone
     private boolean[] mServiceBound;
+    // Whether we are bound to a service for no SIM config
+    private boolean[] mServiceBoundForNoSimConfig;
     // Whether we have sent config change broadcast for each phone id.
     private boolean[] mHasSentConfigChange;
     // Whether the broadcast was sent from EVENT_SYSTEM_UNLOCKED, to track rebroadcasts
@@ -150,6 +156,16 @@
     private static final int EVENT_SUBSCRIPTION_INFO_UPDATED = 16;
     // Multi-SIM config changed.
     private static final int EVENT_MULTI_SIM_CONFIG_CHANGED = 17;
+    // Attempt to fetch from default app or read from XML for no SIM case.
+    private static final int EVENT_DO_FETCH_DEFAULT_FOR_NO_SIM_CONFIG = 18;
+    // No SIM config has been loaded from default app (or cache).
+    private static final int EVENT_FETCH_DEFAULT_FOR_NO_SIM_CONFIG_DONE = 19;
+    // Has connected to default app for no SIM config.
+    private static final int EVENT_CONNECTED_TO_DEFAULT_FOR_NO_SIM_CONFIG = 20;
+    // Bind timed out for the default app when trying to fetch no SIM config.
+    private static final int EVENT_BIND_DEFAULT_FOR_NO_SIM_CONFIG_TIMEOUT = 21;
+    // Fetching config timed out from the default app for no SIM config.
+    private static final int EVENT_FETCH_DEFAULT_FOR_NO_SIM_CONFIG_TIMEOUT = 22;
 
     private static final int BIND_TIMEOUT_MILLIS = 30000;
 
@@ -505,6 +521,118 @@
                 case EVENT_MULTI_SIM_CONFIG_CHANGED:
                     onMultiSimConfigChanged();
                     break;
+
+                case EVENT_DO_FETCH_DEFAULT_FOR_NO_SIM_CONFIG: {
+                    PersistableBundle config =
+                            restoreNoSimConfigFromXml(mPlatformCarrierConfigPackage);
+
+                    if (config != null) {
+                        logd("Loaded no SIM config from XML. package="
+                                + mPlatformCarrierConfigPackage);
+                        mNoSimConfig = config;
+                        sendMessage(
+                                obtainMessage(
+                                        EVENT_FETCH_DEFAULT_FOR_NO_SIM_CONFIG_DONE,
+                                            phoneId, -1));
+                    } else {
+                        // No cached config, so fetch it from the default app.
+                        if (bindToConfigPackage(
+                                mPlatformCarrierConfigPackage,
+                                phoneId,
+                                EVENT_CONNECTED_TO_DEFAULT_FOR_NO_SIM_CONFIG)) {
+                            sendMessageDelayed(
+                                    obtainMessage(
+                                            EVENT_BIND_DEFAULT_FOR_NO_SIM_CONFIG_TIMEOUT,
+                                                phoneId, -1), BIND_TIMEOUT_MILLIS);
+                        } else {
+                            broadcastConfigChangedIntent(phoneId, false);
+                            // TODO: We *must* call unbindService even if bindService returns false.
+                            // (And possibly if SecurityException was thrown.)
+                            loge("binding to default app to fetch no SIM config: "
+                                    + mPlatformCarrierConfigPackage + " fails");
+                        }
+                    }
+                    break;
+                }
+
+                case EVENT_FETCH_DEFAULT_FOR_NO_SIM_CONFIG_DONE: {
+                    broadcastConfigChangedIntent(phoneId, false);
+                    break;
+                }
+
+                case EVENT_BIND_DEFAULT_FOR_NO_SIM_CONFIG_TIMEOUT:
+                case EVENT_FETCH_DEFAULT_FOR_NO_SIM_CONFIG_TIMEOUT: {
+                    loge("Bind/fetch time out for no SIM config from "
+                            + mPlatformCarrierConfigPackage);
+                    removeMessages(EVENT_FETCH_DEFAULT_FOR_NO_SIM_CONFIG_TIMEOUT);
+                    // If we attempted to bind to the app, but the service connection is null due to
+                    // the race condition that clear config event happens before bind/fetch complete
+                    // then config was cleared while we were waiting and we should not continue.
+                    if (mServiceConnectionForNoSimConfig[phoneId] != null) {
+                        // If a ResponseReceiver callback is in the queue when this happens, we will
+                        // unbind twice and throw an exception.
+                        unbindIfBoundForNoSimConfig(mContext,
+                                mServiceConnectionForNoSimConfig[phoneId], phoneId);
+                    }
+                    broadcastConfigChangedIntent(phoneId, false);
+                    break;
+                }
+
+                case EVENT_CONNECTED_TO_DEFAULT_FOR_NO_SIM_CONFIG: {
+                    removeMessages(EVENT_BIND_DEFAULT_FOR_NO_SIM_CONFIG_TIMEOUT);
+                    final CarrierServiceConnection conn = (CarrierServiceConnection) msg.obj;
+                    // If new service connection has been created, unbind.
+                    if (mServiceConnectionForNoSimConfig[phoneId] != conn || conn.service == null) {
+                        unbindIfBoundForNoSimConfig(mContext, conn, phoneId);
+                        break;
+                    }
+
+                    // ResultReceiver callback will execute in this Handler's thread.
+                    final ResultReceiver resultReceiver =
+                            new ResultReceiver(this) {
+                                @Override
+                                public void onReceiveResult(int resultCode, Bundle resultData) {
+                                    unbindIfBoundForNoSimConfig(mContext, conn, phoneId);
+                                    // If new service connection has been created, this is stale.
+                                    if (mServiceConnectionForNoSimConfig[phoneId] != conn) {
+                                        loge("Received response for stale request.");
+                                        return;
+                                    }
+                                    removeMessages(EVENT_FETCH_DEFAULT_FOR_NO_SIM_CONFIG_TIMEOUT);
+                                    if (resultCode == RESULT_ERROR || resultData == null) {
+                                        // On error, abort config fetching.
+                                        loge("Failed to get no SIM carrier config");
+                                        return;
+                                    }
+                                    PersistableBundle config =
+                                            resultData.getParcelable(KEY_CONFIG_BUNDLE);
+                                    saveNoSimConfigToXml(mPlatformCarrierConfigPackage, config);
+                                    mNoSimConfig = config;
+                                    sendMessage(
+                                            obtainMessage(
+                                                    EVENT_FETCH_DEFAULT_FOR_NO_SIM_CONFIG_DONE,
+                                                        phoneId, -1));
+                                }
+                            };
+                    // Now fetch the config asynchronously from the ICarrierService.
+                    try {
+                        ICarrierService carrierService =
+                                ICarrierService.Stub.asInterface(conn.service);
+                        carrierService.getCarrierConfig(null, resultReceiver);
+                        logdWithLocalLog("Fetch no sim config from default app: "
+                                + mPlatformCarrierConfigPackage);
+                    } catch (RemoteException e) {
+                        loge("Failed to get no sim carrier config from default app: " +
+                                mPlatformCarrierConfigPackage + " err: " + e.toString());
+                        unbindIfBoundForNoSimConfig(mContext, conn, phoneId);
+                        break; // So we don't set a timeout.
+                    }
+                    sendMessageDelayed(
+                            obtainMessage(
+                                    EVENT_FETCH_DEFAULT_FOR_NO_SIM_CONFIG_TIMEOUT,
+                                        phoneId, -1), BIND_TIMEOUT_MILLIS);
+                    break;
+                }
             }
         }
     }
@@ -539,10 +667,13 @@
         mConfigFromCarrierApp = new PersistableBundle[numPhones];
         mPersistentOverrideConfigs = new PersistableBundle[numPhones];
         mOverrideConfigs = new PersistableBundle[numPhones];
+        mNoSimConfig = new PersistableBundle();
         mServiceConnection = new CarrierServiceConnection[numPhones];
         mServiceBound = new boolean[numPhones];
         mHasSentConfigChange = new boolean[numPhones];
         mFromSystemUnlocked = new boolean[numPhones];
+        mServiceConnectionForNoSimConfig = new CarrierServiceConnection[numPhones];
+        mServiceBoundForNoSimConfig = new boolean[numPhones];
         // Make this service available through ServiceManager.
         TelephonyFrameworkInitializer
                 .getTelephonyServiceManager().getCarrierConfigServiceRegisterer().register(this);
@@ -568,7 +699,7 @@
         }
     }
 
-    private void clearConfigForPhone(int phoneId, boolean sendBroadcast) {
+    private void clearConfigForPhone(int phoneId, boolean fetchNoSimConfig) {
         /* Ignore clear configuration request if device is being shutdown. */
         Phone phone = PhoneFactory.getPhone(phoneId);
         if (phone != null) {
@@ -582,7 +713,12 @@
         mServiceConnection[phoneId] = null;
         mHasSentConfigChange[phoneId] = false;
 
-        if (sendBroadcast) broadcastConfigChangedIntent(phoneId, false);
+        if (fetchNoSimConfig) {
+            // To fetch no SIM config
+            mHandler.sendMessage(
+                    mHandler.obtainMessage(
+                            EVENT_DO_FETCH_DEFAULT_FOR_NO_SIM_CONFIG, phoneId, -1));
+        }
     }
 
     private void notifySubscriptionInfoUpdater(int phoneId) {
@@ -623,24 +759,12 @@
         Intent intent = new Intent(CarrierConfigManager.ACTION_CARRIER_CONFIG_CHANGED);
         intent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT |
                 Intent.FLAG_RECEIVER_FOREGROUND);
+        // Include subId extra only if SIM records are loaded
         if (addSubIdExtra) {
-            int simApplicationState = TelephonyManager.SIM_STATE_UNKNOWN;
-            int[] subIds = SubscriptionManager.getSubId(phoneId);
-            if (!ArrayUtils.isEmpty(subIds)) {
-                TelephonyManager telMgr = TelephonyManager.from(mContext)
-                        .createForSubscriptionId(subIds[0]);
-                simApplicationState = telMgr.getSimApplicationState();
-            }
-            logd("Broadcast CARRIER_CONFIG_CHANGED for phone " + phoneId
-                    + " simApplicationState " + simApplicationState);
-            // Include subId/carrier id extra only if SIM records are loaded
-            if (simApplicationState != TelephonyManager.SIM_STATE_UNKNOWN
-                    && simApplicationState != TelephonyManager.SIM_STATE_NOT_READY) {
-                SubscriptionManager.putPhoneIdAndSubIdExtra(intent, phoneId);
-                intent.putExtra(TelephonyManager.EXTRA_SPECIFIC_CARRIER_ID,
-                        getSpecificCarrierIdForPhoneId(phoneId));
-                intent.putExtra(TelephonyManager.EXTRA_CARRIER_ID, getCarrierIdForPhoneId(phoneId));
-            }
+            SubscriptionManager.putPhoneIdAndSubIdExtra(intent, phoneId);
+            intent.putExtra(TelephonyManager.EXTRA_SPECIFIC_CARRIER_ID,
+                    getSpecificCarrierIdForPhoneId(phoneId));
+            intent.putExtra(TelephonyManager.EXTRA_CARRIER_ID, getCarrierIdForPhoneId(phoneId));
         }
         intent.putExtra(CarrierConfigManager.EXTRA_SLOT_INDEX, phoneId);
         intent.putExtra(CarrierConfigManager.EXTRA_REBROADCAST_ON_UNLOCK,
@@ -661,11 +785,21 @@
         logdWithLocalLog("Binding to " + pkgName + " for phone " + phoneId);
         Intent carrierService = new Intent(CarrierService.CARRIER_SERVICE_INTERFACE);
         carrierService.setPackage(pkgName);
-        mServiceConnection[phoneId] = new CarrierServiceConnection(phoneId, pkgName, eventId);
+        CarrierServiceConnection serviceConnection =  new CarrierServiceConnection(
+                phoneId, pkgName, eventId);
+        if (eventId == EVENT_CONNECTED_TO_DEFAULT_FOR_NO_SIM_CONFIG) {
+            mServiceConnectionForNoSimConfig[phoneId] = serviceConnection;
+        } else {
+            mServiceConnection[phoneId] = serviceConnection;
+        }
         try {
-            if (mContext.bindService(carrierService, mServiceConnection[phoneId],
+            if (mContext.bindService(carrierService, serviceConnection,
                     Context.BIND_AUTO_CREATE)) {
-                mServiceBound[phoneId] = true;
+                if (eventId == EVENT_CONNECTED_TO_DEFAULT_FOR_NO_SIM_CONFIG) {
+                    mServiceBoundForNoSimConfig[phoneId] = true;
+                } else {
+                    mServiceBound[phoneId] = true;
+                }
                 return true;
             } else {
                 return false;
@@ -681,6 +815,7 @@
         String imsi = "";
         String gid1 = "";
         String gid2 = "";
+        String iccid = "";
         String spn = TelephonyManager.from(mContext).getSimOperatorNameForPhone(phoneId);
         String simOperator = TelephonyManager.from(mContext).getSimOperatorNumericForPhone(phoneId);
         int carrierId = TelephonyManager.UNKNOWN_CARRIER_ID;
@@ -695,10 +830,11 @@
             imsi = phone.getSubscriberId();
             gid1 = phone.getGroupIdLevel1();
             gid2 = phone.getGroupIdLevel2();
+            iccid = phone.getIccSerialNumber();
             carrierId = phone.getCarrierId();
             specificCarrierId = phone.getSpecificCarrierId();
         }
-        return new CarrierIdentifier(mcc, mnc, spn, imsi, gid1, gid2, carrierId, specificCarrierId);
+        return new CarrierIdentifier(mcc, mnc, spn, imsi, gid1, gid2, iccid, carrierId, specificCarrierId);
     }
 
     /** Returns the package name of a priveleged carrier app, or null if there is none. */
@@ -767,26 +903,39 @@
      *
      * In case of errors or invalid input, no file will be written.
      *
-     * @param packageName the name of the package from which we fetched this bundle.
-     * @param extraString An extra string to be used in the XML file name.
-     * @param phoneId     the phone ID.
-     * @param carrierId   contains all carrier-identifying information.
-     * @param config      the bundle to be written. Null will be treated as an empty bundle.
+     * @param packageName   the name of the package from which we fetched this bundle.
+     * @param extraString   An extra string to be used in the XML file name.
+     * @param phoneId       the phone ID.
+     * @param carrierId     contains all carrier-identifying information.
+     * @param config        the bundle to be written. Null will be treated as an empty bundle.
+     * @param isNoSimConfig whether this is invoked for noSimConfig or not.
      */
     private void saveConfigToXml(String packageName, @NonNull String extraString, int phoneId,
-            CarrierIdentifier carrierId, PersistableBundle config) {
-        if (SubscriptionManager.getSimStateForSlotIndex(phoneId)
-                != TelephonyManager.SIM_STATE_LOADED) {
-            loge("Skip save config because SIM records are not loaded.");
+            CarrierIdentifier carrierId, PersistableBundle config, boolean isNoSimConfig) {
+        if (packageName == null) {
+            loge("Cannot save config with null packageName");
             return;
         }
 
-        final String iccid = getIccIdForPhoneId(phoneId);
-        final int cid = carrierId.getSpecificCarrierId();
-        if (packageName == null || iccid == null) {
-            loge("Cannot save config with null packageName or iccid.");
-            return;
+        String fileName;
+        if (isNoSimConfig) {
+            fileName = getFilenameForNoSimConfig(packageName);
+        } else {
+            if (SubscriptionManager.getSimStateForSlotIndex(phoneId)
+                    != TelephonyManager.SIM_STATE_LOADED) {
+                loge("Skip save config because SIM records are not loaded.");
+                return;
+            }
+
+            final String iccid = getIccIdForPhoneId(phoneId);
+            final int cid = carrierId.getSpecificCarrierId();
+            if (iccid == null) {
+                loge("Cannot save config with null iccid.");
+                return;
+            }
+            fileName = getFilenameForConfig(packageName, extraString, iccid, cid);
         }
+
         // b/32668103 Only save to file if config isn't empty.
         // In case of failure, not caching an empty bundle will
         // try loading config again on next power on or sim loaded.
@@ -807,9 +956,7 @@
 
         FileOutputStream outFile = null;
         try {
-            outFile = new FileOutputStream(
-                    new File(mContext.getFilesDir(),
-                            getFilenameForConfig(packageName, extraString, iccid, cid)));
+            outFile = new FileOutputStream(new File(mContext.getFilesDir(), fileName));
             config.putString(KEY_VERSION, version);
             config.writeToStream(outFile);
             outFile.flush();
@@ -819,6 +966,15 @@
         }
     }
 
+    private void saveConfigToXml(String packageName, @NonNull String extraString, int phoneId,
+            CarrierIdentifier carrierId, PersistableBundle config) {
+        saveConfigToXml(packageName, extraString, phoneId, carrierId, config, false);
+    }
+
+    private void saveNoSimConfigToXml(String packageName, PersistableBundle config) {
+        saveConfigToXml(packageName, "", -1, null, config, true);
+    }
+
     /**
      * Reads a bundle from an XML file.
      *
@@ -828,38 +984,48 @@
      * In case of errors, or if the saved config is from a different package version than the
      * current version, then null will be returned.
      *
-     * @param packageName the name of the package from which we fetched this bundle.
-     * @param extraString An extra string to be used in the XML file name.
-     * @param phoneId     the phone ID.
+     * @param packageName    the name of the package from which we fetched this bundle.
+     * @param extraString    An extra string to be used in the XML file name.
+     * @param phoneId        the phone ID.
+     * @param isNoSimConfig  whether this is invoked for noSimConfig or not.
      * @return the bundle from the XML file. Returns null if there is no saved config, the saved
      * version does not match, or reading config fails.
      */
     private PersistableBundle restoreConfigFromXml(String packageName, @NonNull String extraString,
-            int phoneId) {
+            int phoneId, boolean isNoSimConfig) {
+        if (packageName == null) {
+            loge("Cannot restore config with null packageName");
+        }
         final String version = getPackageVersion(packageName);
         if (version == null) {
             loge("Failed to get package version for: " + packageName);
             return null;
         }
-        if (SubscriptionManager.getSimStateForSlotIndex(phoneId)
-                != TelephonyManager.SIM_STATE_LOADED) {
-            loge("Skip restoring config because SIM records are not yet loaded.");
-            return null;
-        }
 
-        final String iccid = getIccIdForPhoneId(phoneId);
-        final int cid = getSpecificCarrierIdForPhoneId(phoneId);
-        if (packageName == null || iccid == null) {
-            loge("Cannot restore config with null packageName or iccid.");
-            return null;
+        String fileName;
+        if (isNoSimConfig) {
+            fileName = getFilenameForNoSimConfig(packageName);
+        } else {
+            if (SubscriptionManager.getSimStateForSlotIndex(phoneId)
+                    != TelephonyManager.SIM_STATE_LOADED) {
+                loge("Skip restore config because SIM records are not loaded.");
+                return null;
+            }
+
+            final String iccid = getIccIdForPhoneId(phoneId);
+            final int cid = getSpecificCarrierIdForPhoneId(phoneId);
+            if (iccid == null) {
+                loge("Cannot restore config with null iccid.");
+                return null;
+            }
+            fileName = getFilenameForConfig(packageName, extraString, iccid, cid);
         }
 
         PersistableBundle restoredBundle = null;
         File file = null;
         FileInputStream inFile = null;
         try {
-            file = new File(mContext.getFilesDir(),
-                    getFilenameForConfig(packageName, extraString, iccid, cid));
+            file = new File(mContext.getFilesDir(),fileName);
             inFile = new FileInputStream(file);
 
             restoredBundle = PersistableBundle.readFromStream(inFile);
@@ -883,6 +1049,15 @@
         return restoredBundle;
     }
 
+    private PersistableBundle restoreConfigFromXml(String packageName, @NonNull String extraString,
+            int phoneId) {
+        return restoreConfigFromXml(packageName, extraString, phoneId, false);
+    }
+
+    private PersistableBundle restoreNoSimConfigFromXml(String packageName) {
+        return restoreConfigFromXml(packageName, "", -1, true);
+    }
+
     /**
      * Clears cached carrier config.
      * This deletes all saved XML files associated with the given package name. If packageName is
@@ -912,7 +1087,8 @@
     }
 
     /** Builds a canonical file name for a config file. */
-    private String getFilenameForConfig(@NonNull String packageName, @NonNull String extraString,
+    private static String getFilenameForConfig(
+            @NonNull String packageName, @NonNull String extraString,
             @NonNull String iccid, int cid) {
         // the same carrier should have a single copy of XML file named after carrier id.
         // However, it's still possible that platform doesn't recognize the current sim carrier,
@@ -921,6 +1097,11 @@
         return "carrierconfig-" + packageName + extraString + "-" + iccid + "-" + cid + ".xml";
     }
 
+    /** Builds a canonical file name for no SIM config file. */
+    private String getFilenameForNoSimConfig(@NonNull String packageName) {
+        return "carrierconfig-" + packageName + "-" + "nosim" + ".xml";
+    }
+
     /** Return the current version code of a package, or null if the name is not found. */
     private String getPackageVersion(String packageName) {
         try {
@@ -995,6 +1176,10 @@
             if (config != null) {
                 retConfig.putAll(config);
             }
+        } else {
+            if (mNoSimConfig != null) {
+                retConfig.putAll(mNoSimConfig);
+            }
         }
         return retConfig;
     }
@@ -1104,6 +1289,14 @@
         }
     }
 
+    private void unbindIfBoundForNoSimConfig(Context context, CarrierServiceConnection conn,
+            int phoneId) {
+        if (mServiceBoundForNoSimConfig[phoneId]) {
+            mServiceBoundForNoSimConfig[phoneId] = false;
+            context.unbindService(conn);
+        }
+    }
+
     /**
      * If {@code args} contains {@link #DUMP_ARG_REQUESTING_PACKAGE} and a following package name,
      * we'll also call {@link IBinder#dump} on the default carrier service (if bound) and the
@@ -1144,6 +1337,7 @@
             printConfig(mOverrideConfigs[i], indentPW, "mOverrideConfigs");
         }
 
+        printConfig(mNoSimConfig, indentPW, "mNoSimConfig");
         indentPW.println("CarrierConfigLoadingLog=");
         mCarrierConfigLoadingLog.dump(fd, indentPW, args);
 
diff --git a/src/com/android/phone/CdmaCallOptions.java b/src/com/android/phone/CdmaCallOptions.java
index 8513664..454fc9d 100644
--- a/src/com/android/phone/CdmaCallOptions.java
+++ b/src/com/android/phone/CdmaCallOptions.java
@@ -16,22 +16,182 @@
 
 package com.android.phone;
 
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+import android.net.Uri;
+import android.os.AsyncResult;
 import android.os.Bundle;
 import android.os.PersistableBundle;
 import android.preference.Preference;
 import android.preference.PreferenceActivity;
 import android.preference.PreferenceScreen;
+import android.provider.Settings;
+import android.telecom.PhoneAccountHandle;
+import android.telecom.TelecomManager;
 import android.telephony.CarrierConfigManager;
+import android.telephony.ims.feature.ImsFeature;
+import android.telephony.SubscriptionManager;
+import android.telephony.TelephonyManager;
+import android.util.Log;
 import android.view.MenuItem;
 
+import com.android.ims.ImsException;
+import com.android.ims.ImsManager;
+import com.android.internal.telephony.CommandsInterface;
+import com.android.internal.telephony.Phone;
 import com.android.internal.telephony.PhoneConstants;
+import com.android.internal.telephony.SubscriptionController;
 
-public class CdmaCallOptions extends PreferenceActivity {
+import java.util.List;
+
+public class CdmaCallOptions extends TimeConsumingPreferenceActivity
+               implements DialogInterface.OnClickListener,
+               DialogInterface.OnCancelListener {
     private static final String LOG_TAG = "CdmaCallOptions";
     private final boolean DBG = (PhoneGlobals.DBG_LEVEL >= 2);
 
+    public static final int CALL_WAITING = 7;
     private static final String BUTTON_VP_KEY = "button_voice_privacy_key";
     private CdmaVoicePrivacySwitchPreference mButtonVoicePrivacy;
+    public static final String CALL_FORWARD_INTENT = "org.codeaurora.settings.CDMA_CALL_FORWARDING";
+    public static final String CALL_WAITING_INTENT = "org.codeaurora.settings.CDMA_CALL_WAITING";
+
+    private CallWaitingSwitchPreference mCWButton;
+    private PreferenceScreen mPrefCW;
+    private boolean mUtEnabled = false;
+    private boolean mCommon = false;
+    private Phone mPhone = null;
+    private boolean mCdmaCfCwEnabled = false;
+    private static final String BUTTON_CW_KEY = "button_cw_ut_key";
+
+    private static boolean isActivityPresent(Context context, String intentName) {
+        PackageManager pm = context.getPackageManager();
+        // check whether the target handler exist in system
+        Intent intent = new Intent(intentName);
+        List<ResolveInfo> list = pm.queryIntentActivities(intent, 0);
+        for (ResolveInfo resolveInfo : list){
+            if ((resolveInfo.activityInfo.applicationInfo.flags &
+                    ApplicationInfo.FLAG_SYSTEM) != 0) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    public static boolean isCdmaCallForwardingActivityPresent(Context context) {
+        return isActivityPresent(context, CALL_FORWARD_INTENT);
+    }
+
+    public static boolean isCdmaCallWaitingActivityPresent(Context context) {
+        return isActivityPresent(context, CALL_WAITING_INTENT);
+    }
+
+    //prompt dialog to notify user turn off Enhance 4G LTE switch
+    private boolean isPromptTurnOffEnhance4GLTE(Phone phone) {
+        if (phone == null || phone.getImsPhone() == null) {
+            return false;
+        }
+
+        ImsManager imsMgr = ImsManager.getInstance(this, phone.getPhoneId());
+        try {
+            if (imsMgr.getImsServiceState() != ImsFeature.STATE_READY) {
+                Log.d(LOG_TAG, "ImsServiceStatus is not ready!");
+                return false;
+            }
+        } catch (ImsException ex) {
+            Log.d(LOG_TAG, "Exception when trying to get ImsServiceStatus: " + ex);
+            return false;
+        }
+
+        return imsMgr.isEnhanced4gLteModeSettingEnabledByUser()
+            && imsMgr.isNonTtyOrTtyOnVolteEnabled()
+            && !phone.isUtEnabled()
+            && !phone.isVolteEnabled()
+            && !phone.isVideoEnabled();
+    }
+
+    /*
+     * Some operators ask to prompt user to switch DDS to sub which query CF/CW over UT
+     */
+    private  boolean maybePromptUserToSwitchDds() {
+        // check the active data sub.
+        int sub = mPhone.getSubId();
+        final SubscriptionManager subMgr = SubscriptionManager.from(this);
+        int slotId = subMgr.getSlotIndex(sub);
+        int defaultDataSub = subMgr.getDefaultDataSubscriptionId();
+        Log.d(LOG_TAG, "isUtEnabled = " + mPhone.isUtEnabled() + ", need to check DDS ");
+        if (mPhone != null && sub != defaultDataSub && !mPhone.isUtEnabled()) {
+            Log.d(LOG_TAG, "Show dds switch dialog if data sub is not on current sub");
+            showSwitchDdsDialog(slotId);
+            return true;
+        }
+        return false;
+    }
+
+    private void showSwitchDdsDialog(int slotId) {
+        String title = (String)this.getResources().getText(R.string.no_mobile_data);
+        int simId = slotId + 1;
+        String message = (String)this.getResources()
+            .getText(R.string.switch_dds_to_sub_alert_msg) + String.valueOf(simId);
+        AlertDialog.Builder builder = new AlertDialog.Builder(this);
+        builder.setTitle(title);
+        builder.setMessage(message);
+        builder.setIconAttribute(android.R.attr.alertDialogIcon);
+        builder.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
+            @Override
+            public void onClick(DialogInterface dialog, int which) {
+                Intent newIntent = new Intent(Settings.ACTION_NETWORK_OPERATOR_SETTINGS);
+                newIntent.putExtra(Settings.EXTRA_SUB_ID,mPhone.getSubId());
+                newIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+                startActivity(newIntent);
+                finish();
+            }
+        });
+        builder.setNegativeButton(android.R.string.cancel,
+                new DialogInterface.OnClickListener() {
+            @Override
+            public void onClick(DialogInterface dialog, int which) {
+                dialog.dismiss();
+                finish();
+            }
+        });
+        builder.create().show();
+    }
+
+    private void showAlertDialog(String title, String message) {
+        Dialog dialog = new AlertDialog.Builder(this)
+            .setTitle(title)
+            .setMessage(message)
+            .setIconAttribute(android.R.attr.alertDialogIcon)
+            .setPositiveButton(android.R.string.ok, this)
+            .setNegativeButton(android.R.string.cancel, this)
+            .setOnCancelListener(this)
+            .create();
+        dialog.show();
+    }
+
+    @Override
+    public void onClick(DialogInterface dialog, int id) {
+        if (id == DialogInterface.BUTTON_POSITIVE) {
+            Intent newIntent = new Intent("android.settings.SETTINGS");
+            newIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+            startActivity(newIntent);
+        }
+        finish();
+        return;
+    }
+
+    @Override
+    public void onCancel(DialogInterface dialog) {
+        finish();
+        return;
+    }
 
     @Override
     protected void onCreate(Bundle icicle) {
@@ -40,11 +200,6 @@
         addPreferencesFromResource(R.xml.cdma_call_privacy);
 
         SubscriptionInfoHelper subInfoHelper = new SubscriptionInfoHelper(this, getIntent());
-        subInfoHelper.setActionBarTitle(
-                getActionBar(), getResources(), R.string.labelCdmaMore_with_label);
-
-        mButtonVoicePrivacy = (CdmaVoicePrivacySwitchPreference) findPreference(BUTTON_VP_KEY);
-        mButtonVoicePrivacy.setPhone(subInfoHelper.getPhone());
         PersistableBundle carrierConfig;
         if (subInfoHelper.hasSubId()) {
             carrierConfig = PhoneGlobals.getInstance().getCarrierConfigForSubId(
@@ -52,11 +207,147 @@
         } else {
             carrierConfig = PhoneGlobals.getInstance().getCarrierConfig();
         }
-        if (subInfoHelper.getPhone().getPhoneType() != PhoneConstants.PHONE_TYPE_CDMA
-                || carrierConfig.getBoolean(CarrierConfigManager.KEY_VOICE_PRIVACY_DISABLE_UI_BOOL)) {
-            // disable the entire screen
-            getPreferenceScreen().setEnabled(false);
+        mCommon = carrierConfig.getBoolean("config_common_callsettings_support_bool");
+        subInfoHelper.setActionBarTitle(
+                getActionBar(), getResources(),
+                mCommon ? R.string.labelCommonMore_with_label : R.string.labelCdmaMore_with_label);
+
+        mButtonVoicePrivacy = (CdmaVoicePrivacySwitchPreference) findPreference(BUTTON_VP_KEY);
+        mPhone = subInfoHelper.getPhone();
+        mButtonVoicePrivacy.setPhone(mPhone);
+        Log.d(LOG_TAG, "sub id = " + subInfoHelper.getSubId() + " phone id = " +
+                mPhone.getPhoneId());
+
+        mCdmaCfCwEnabled = carrierConfig
+            .getBoolean(CarrierConfigManager.KEY_CDMA_CW_CF_ENABLED_BOOL);
+        PreferenceScreen prefScreen = getPreferenceScreen();
+        if (mPhone.getPhoneType() != PhoneConstants.PHONE_TYPE_CDMA ||
+                carrierConfig.getBoolean(CarrierConfigManager.KEY_VOICE_PRIVACY_DISABLE_UI_BOOL)) {
+            CdmaVoicePrivacySwitchPreference prefPri = (CdmaVoicePrivacySwitchPreference)
+                    prefScreen.findPreference("button_voice_privacy_key");
+            if (prefPri != null) {
+                prefPri.setEnabled(false);
+            }
         }
+
+        if(carrierConfig.getBoolean("check_mobile_data_for_cf") && maybePromptUserToSwitchDds()) {
+            return;
+        }
+        if(mPhone.getPhoneType() == PhoneConstants.PHONE_TYPE_CDMA
+                && isPromptTurnOffEnhance4GLTE(mPhone)
+                && carrierConfig.getBoolean(CarrierConfigManager.KEY_CDMA_CW_CF_ENABLED_BOOL)) {
+            String title = (String)this.getResources()
+                .getText(R.string.ut_not_support);
+            String msg = (String)this.getResources()
+                .getText(R.string.ct_ut_not_support_close_4glte);
+            showAlertDialog(title, msg);
+        }
+
+        mCWButton = (CallWaitingSwitchPreference) prefScreen.findPreference(BUTTON_CW_KEY);
+        if (mPhone.getPhoneType() != PhoneConstants.PHONE_TYPE_CDMA
+                || !carrierConfig.getBoolean(CarrierConfigManager.KEY_CDMA_CW_CF_ENABLED_BOOL)
+                || !isCdmaCallWaitingActivityPresent(this)) {
+            Log.d(LOG_TAG, "Disabled CW CF");
+            mPrefCW = (PreferenceScreen) prefScreen.findPreference("button_cw_key");
+            if (mCWButton != null) {
+                 prefScreen.removePreference(mCWButton);
+            }
+
+            if (mPrefCW != null) {
+                mPrefCW.setEnabled(false);
+            }
+            PreferenceScreen prefCF = (PreferenceScreen)
+                    prefScreen.findPreference("button_cf_expand_key");
+            if (prefCF != null) {
+                prefCF.setEnabled(false);
+            }
+        } else {
+            Log.d(LOG_TAG, "Enabled CW CF");
+            mPrefCW = (PreferenceScreen) prefScreen.findPreference("button_cw_key");
+
+            ImsManager imsMgr = ImsManager.getInstance(this, mPhone.getPhoneId());
+            Boolean isEnhanced4G = imsMgr.isEnhanced4gLteModeSettingEnabledByUser();
+            if (mPhone.isUtEnabled() && isEnhanced4G) {
+                mUtEnabled = mPhone.isUtEnabled();
+                prefScreen.removePreference(mPrefCW);
+                mCWButton.init(this, false, mPhone);
+            } else {
+                if (mCWButton != null) {
+                    prefScreen.removePreference(mCWButton);
+                }
+                if (mPrefCW != null) {
+                    mPrefCW.setOnPreferenceClickListener(
+                            new Preference.OnPreferenceClickListener() {
+                                @Override
+                                public boolean onPreferenceClick(Preference preference) {
+                                    Intent intent = new Intent(CALL_WAITING_INTENT);
+                                    intent.putExtra(
+                                        SubscriptionManager.EXTRA_SUBSCRIPTION_INDEX,
+                                        mPhone.getSubId());
+                                    startActivity(intent);
+                                    return true;
+                                }
+                            });
+                }
+            }
+            PreferenceScreen prefCF = (PreferenceScreen)
+                    prefScreen.findPreference("button_cf_expand_key");
+            if (prefCF != null) {
+                prefCF.setOnPreferenceClickListener(
+                        new Preference.OnPreferenceClickListener() {
+                            @Override
+                            public boolean onPreferenceClick(Preference preference) {
+                                Intent intent = mPhone.isUtEnabled() ?
+                                    subInfoHelper.getIntent(GsmUmtsCallForwardOptions.class)
+                                    : new Intent(CALL_FORWARD_INTENT);
+                                if (mPhone.isUtEnabled()) {
+                                    intent.putExtra(PhoneUtils.SERVICE_CLASS,
+                                        CommandsInterface.SERVICE_CLASS_VOICE);
+                                } else {
+                                    intent.putExtra(
+                                        SubscriptionManager.EXTRA_SUBSCRIPTION_INDEX,
+                                        mPhone.getSubId());
+                                }
+                                startActivity(intent);
+                                return true;
+                            }
+                        });
+            }
+        }
+    }
+
+    @Override
+    public void onFinished(Preference preference, boolean reading) {
+        if (mCdmaCfCwEnabled && mUtEnabled && mPhone != null && !mPhone.isUtEnabled()) {
+            if (isPromptTurnOffEnhance4GLTE(mPhone)) {
+                String title = (String)this.getResources()
+                    .getText(R.string.ut_not_support);
+                String msg = (String)this.getResources()
+                    .getText(R.string.ct_ut_not_support_close_4glte);
+                showAlertDialog(title, msg);
+            }
+            mUtEnabled = false;
+            if (mCWButton != null) {
+                PreferenceScreen prefScreen = getPreferenceScreen();
+                prefScreen.removePreference(mCWButton);
+                prefScreen.addPreference(mPrefCW);
+                if (mPrefCW != null) {
+                    mPrefCW.setOnPreferenceClickListener(
+                            new Preference.OnPreferenceClickListener() {
+                                @Override
+                                public boolean onPreferenceClick(Preference preference) {
+                                    Intent intent = new Intent(CALL_WAITING_INTENT);
+                                    intent.putExtra(
+                                        SubscriptionManager.EXTRA_SUBSCRIPTION_INDEX,
+                                        mPhone.getSubId());
+                                    startActivity(intent);
+                                    return true;
+                                }
+                            });
+                }
+            }
+        }
+        super.onFinished(preference, reading);
     }
 
     @Override
diff --git a/src/com/android/phone/EditPhoneNumberPreference.java b/src/com/android/phone/EditPhoneNumberPreference.java
index 74b8a45..e42473b 100644
--- a/src/com/android/phone/EditPhoneNumberPreference.java
+++ b/src/com/android/phone/EditPhoneNumberPreference.java
@@ -26,6 +26,7 @@
 import android.provider.ContactsContract.CommonDataKinds.Phone;
 import android.telephony.PhoneNumberUtils;
 import android.text.BidiFormatter;
+import android.text.format.DateFormat;
 import android.text.TextDirectionHeuristics;
 import android.text.TextUtils;
 import android.text.method.ArrowKeyMovementMethod;
@@ -33,12 +34,26 @@
 import android.util.AttributeSet;
 import android.view.View;
 import android.view.ViewGroup;
+import android.widget.AdapterView;
+import android.widget.ArrayAdapter;
+import android.widget.CheckBox;
+import android.widget.CompoundButton;
 import android.widget.EditText;
 import android.widget.ImageButton;
+import android.widget.Spinner;
 import android.widget.TextView;
+import android.widget.Toast;
+import android.util.Log;
+import java.util.Calendar;
+import java.util.Date;
 
-public class EditPhoneNumberPreference extends EditTextPreference {
+import com.android.internal.telephony.CommandsInterface;
 
+public class EditPhoneNumberPreference extends EditTextPreference
+        implements AdapterView.OnItemSelectedListener {
+
+    private String TAG = "EditPhoneNumberPreference";
+    private static final boolean DBG = (PhoneGlobals.DBG_LEVEL >= 2);
     //allowed modes for this preference.
     /** simple confirmation (OK / CANCEL) */
     private static final int CM_CONFIRM = 0;
@@ -59,6 +74,41 @@
     //UI layout
     private ImageButton mContactPickButton;
 
+    //UI for time settings
+    private Calendar mStartDate = Calendar.getInstance();
+    private Calendar mEndDate = Calendar.getInstance();
+    private TextView mTimeStartTextView;
+    private View mStartTimeSetting;
+    private Spinner mTimeStartHourSpinner;
+    private Spinner mTimeStartMinuteSpinner;
+    private TextView mTimeEndTextView;
+    private View mEndTimeSetting;
+    private Spinner mTimeEndHourSpinner;
+    private Spinner mTimeEndMinuteSpinner;
+    private CheckBox mTimePeriodAllDay;
+    private Spinner mTimeStartFormate;
+    private Spinner mTimeEndFormate;
+    private ArrayAdapter time24hour;
+    private ArrayAdapter time12hour;
+
+    //relevant (parsed) value of the mText
+    private boolean canShowTimerSetting = false;
+    private int mValidStartTimeHour = 22;
+    private int mValidStartTimeMinute = 0;
+    private int mValidEndTimeHour = 8;
+    private int mValidEndTimeMinute = 0;
+
+    private int mStartTimeHour = 22;
+    private int mStartTimeMinute = 0;
+    private int mStartTimeAPMP = 0;
+    private int mEndTimeHour = 8;
+    private int mEndTimeMinute = 0;
+    private int mEndTimeAMPM = 0;
+    private String mPhoneNumber;
+    private String mTimePeriodString;
+    private boolean mChecked;
+    private boolean mTimePeriodAllDayChecked = true;
+
     //Listeners
     /** Called when focus is changed between fields */
     private View.OnFocusChangeListener mDialogFocusChangeListener;
@@ -86,11 +136,6 @@
     // button that was clicked on dialog close.
     private int mButtonClicked;
 
-    //relevant (parsed) value of the mText
-    private String mPhoneNumber;
-    private boolean mChecked;
-
-
     /**
      * Interface for the dialog closed listener, related to
      * DialogPreference.onDialogClosed(), except we also pass in a buttonClicked
@@ -225,6 +270,9 @@
                 }
             });
         }
+        //set timer settings
+        initTimeSettingsView(view);
+
     }
 
     /**
@@ -326,7 +374,24 @@
         // A positive result is technically either button1 or button3.
         if ((mButtonClicked == DialogInterface.BUTTON_POSITIVE) ||
                 (mButtonClicked == DialogInterface.BUTTON_NEUTRAL)){
-            setPhoneNumber(getEditText().getText().toString());
+            EditText editText = getEditText();
+            String number = "";
+            if (editText != null) {
+                number = editText.getText().toString();
+            }
+            if (mPrefId == CommandsInterface.CF_REASON_UNCONDITIONAL){
+                if (isAllDayChecked() && mTimePeriodAllDayChecked){
+                    setPhoneNumber(number);
+                } else {
+                    setPhoneNumberWithTimePeriod(number, mStartTimeHour,
+                        mStartTimeMinute, mEndTimeHour, mEndTimeMinute);
+                    if (DBG) Log.d(TAG, "onDialogClosed, phonenumber = " + number
+                                    + "timePeriodString = " + mTimePeriodString);
+                }
+            } else {
+                setPhoneNumber(number);
+            }
+            if (DBG) dumpSpinnerSelectedTimePeriodInfo();
             super.onDialogClosed(positiveResult);
             setText(getStringValue());
         } else {
@@ -368,11 +433,35 @@
         return PhoneNumberUtils.stripSeparators(mPhoneNumber);
     }
 
+    public int getStartTimeHour() {
+        return mStartTimeHour;
+    }
+
+    public int getStartTimeMinute() {
+        return mStartTimeMinute;
+    }
+
+    public int getEndTimeHour() {
+        return mEndTimeHour;
+    }
+
+    public int getEndTimeMinute() {
+        return mEndTimeMinute;
+    }
+
+    public boolean isAllDayChecked() {
+        return mTimePeriodAllDay.isChecked();
+    }
+
     /** The phone number including any formatting characters */
     protected String getRawPhoneNumber() {
         return mPhoneNumber;
     }
 
+    protected String getRawPhoneNumberWithTime(){
+        return mPhoneNumber + mTimePeriodString;
+    }
+
     //set the phone number value.
     // return the current preference to allow for chaining preferences.
     public EditPhoneNumberPreference setPhoneNumber(String number) {
@@ -383,6 +472,88 @@
         return this;
     }
 
+    public void setAllDayCheckBox(boolean checked){
+        if (DBG) Log.d(TAG, "setAllDayCheckBox,"
+                +"mTimePeriodAllDayChecked" + checked);
+        mTimePeriodAllDayChecked = checked;
+    }
+
+    public void setTimeSettingVisibility(boolean enable) {
+        canShowTimerSetting = enable;
+    }
+
+    /*
+     *    set the phone number with time period info.
+     *1. save timer info from network
+     *2. call when timer info changed after timer edit finish
+     */
+    public EditPhoneNumberPreference setPhoneNumberWithTimePeriod(String number,
+                int starthour, int startminute, int endhour, int endminute) {
+        mPhoneNumber = number;
+        setText(getStringValue());
+        setTimePeriodInfo(starthour, startminute, endhour, endminute);
+        notifyChanged();
+
+        return this;
+    }
+
+    public void setTimePeriodInfo(int starthour, int startminute,
+            int endhour, int endminute) {
+        if (DBG) Log.d(TAG, "setTimePeriodInfo, starthour = " + starthour
+                    + "startminute = " + startminute
+                    + "endhour = " + endhour
+                    + "endminute = " + endminute);
+        mValidStartTimeHour = starthour;
+        mValidStartTimeMinute = startminute;
+        mValidEndTimeHour = endhour;
+        mValidEndTimeMinute = endminute;
+        if (mTimePeriodAllDayChecked){
+            mTimePeriodString = getContext().getResources().getString(R.string.all_day);
+        } else {
+            String fomatedStartTimeString = formateTime(mStartDate,
+                    mValidStartTimeHour, mValidStartTimeMinute);
+            String fomatedEndTimeString = formateTime(mEndDate,
+                    mValidEndTimeHour, mValidEndTimeMinute);
+            mTimePeriodString = getContext().getResources().getString(R.string.time_start)
+                    + fomatedStartTimeString
+                    + getContext().getResources().getString(R.string.time_end)
+                    + fomatedEndTimeString;
+            if (mValidEndTimeHour*60 + mValidEndTimeMinute
+                    < mValidStartTimeHour*60 + mValidStartTimeMinute){
+                mTimePeriodString = mTimePeriodString
+                + getContext().getResources().getString(R.string.time_next_day);
+            }
+        }
+    }
+
+    //set the phone number with time period info.
+    private String formateTime(Calendar mDate, int hour, int minute) {
+        String fomatedTimeString;
+        Calendar now = Calendar.getInstance();
+        java.text.DateFormat mDateFormat = DateFormat.getDateFormat(getContext());
+        mDate.set(now.get(Calendar.YEAR),
+                now.get(Calendar.MONTH),
+                now.get(Calendar.DAY_OF_MONTH),
+                hour,
+                minute,
+                0);
+        Date mDateTimeOnly = mDate.getTime();
+        fomatedTimeString = DateFormat.getTimeFormat(getContext()).format(mDateTimeOnly);
+        if (DBG) Log.d(TAG, "formatedTime =" + fomatedTimeString);
+        return fomatedTimeString;
+    }
+
+    //set the phone number with time period info.
+    public EditPhoneNumberPreference setPhoneNumberWithTimePeriod(String number,
+                String timeperiod) {
+        mPhoneNumber = number;
+        mTimePeriodString = timeperiod;
+        setText(getStringValue());
+        notifyChanged();
+
+        return this;
+    }
+
 
     /*
      * Other code relevant to preference framework
@@ -483,11 +654,19 @@
     protected void setValueFromString(String value) {
         String[] inValues = value.split(":", 2);
         setToggled(inValues[0].equals(VALUE_ON));
-        setPhoneNumber(inValues[1]);
+        if (inValues.length == 3){
+            setPhoneNumberWithTimePeriod(inValues[1], inValues[2]);
+        } else {
+            setPhoneNumber(inValues[1]);
+        }
     }
 
     //retrieve the state of this preference in the form of an encoded string
     protected String getStringValue() {
+        if (mPrefId == CommandsInterface.CF_REASON_UNCONDITIONAL){
+            return ((isToggled() ? VALUE_ON : VALUE_OFF) + VALUE_SEPARATOR + getPhoneNumber()
+                    + mTimePeriodString);
+        }
         return ((isToggled() ? VALUE_ON : VALUE_OFF) + VALUE_SEPARATOR + getPhoneNumber());
     }
 
@@ -499,4 +678,167 @@
     public void showPhoneNumberDialog() {
         showDialog(null);
     }
+
+    @Override
+    public void onNothingSelected(AdapterView<?> parent) {
+    }
+
+    @Override
+    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
+        String selectedItem = parent.getItemAtPosition(position).toString();
+        if (DBG) Log.d(TAG, "onItemSelected"
+                + ", selectedItem = " + selectedItem
+                + ", position = " + position
+                + ", parent" + parent);
+        setSelectionStartTimePreiod();
+        setSelectionEndTimePreiod();
+        if (DBG) dumpSpinnerSelectedTimePeriodInfo();
+    }
+
+    private void initTimeSettingsView(View view){
+        Log.d(TAG, "initTimeSettingsView, mPrefId = " + mPrefId);
+        //all day default for time period
+        mTimePeriodAllDay = (CheckBox) view.findViewById(R.id.all_day);
+        mTimePeriodAllDay.setChecked(mTimePeriodAllDayChecked);
+        mTimePeriodAllDay.setOnCheckedChangeListener(new CompoundButton
+                .OnCheckedChangeListener(){
+                    @Override
+                    public void onCheckedChanged(CompoundButton buttonView,
+                            boolean isChecked) {
+                        onAllDayChecked(isChecked);
+                    }
+                });
+        //set start time
+        mTimeStartTextView = (TextView) view.findViewById(R.id.time_start);
+        mStartTimeSetting = (View) view.findViewById(R.id.start_time_setting);
+        mTimeStartHourSpinner = (Spinner) view.findViewById(
+                is24Hour()? R.id.time_start_hour_24 : R.id.time_start_hour_12);
+        mTimeStartHourSpinner.setOnItemSelectedListener(this);
+        mTimeStartMinuteSpinner = (Spinner) view.findViewById(R.id.time_start_minute);
+        mTimeStartMinuteSpinner.setOnItemSelectedListener(this);
+
+        //set end time
+        mTimeEndTextView = (TextView) view.findViewById(R.id.time_end);
+        mEndTimeSetting = (View) view.findViewById(R.id.end_time_setting);
+        mTimeEndHourSpinner = (Spinner) view.findViewById(
+                is24Hour()? R.id.time_end_hour_24 : R.id.time_end_hour_12);
+        mTimeEndHourSpinner.setOnItemSelectedListener(this);
+        mTimeEndMinuteSpinner = (Spinner) view.findViewById(R.id.time_end_minute);
+        mTimeEndMinuteSpinner.setOnItemSelectedListener(this);
+
+        //set time formate: 12-hour or 24-hour
+        mTimeStartFormate = (Spinner) view.findViewById(R.id.time_start_formate);
+        mTimeStartFormate.setOnItemSelectedListener(this);
+        mTimeEndFormate = (Spinner) view.findViewById(R.id.time_end_formate);
+        mTimeEndFormate.setOnItemSelectedListener(this);
+
+        if ((mPrefId == CommandsInterface.CF_REASON_UNCONDITIONAL)
+                && canShowTimerSetting) {
+            Log.d(TAG, "show time setting for cfut");
+            mTimePeriodAllDay.setVisibility(View.VISIBLE);
+            mTimeStartTextView.setVisibility(View.VISIBLE);
+            mTimeEndTextView.setVisibility(View.VISIBLE);
+            mStartTimeSetting.setVisibility(View.VISIBLE);
+            mEndTimeSetting.setVisibility(View.VISIBLE);
+            mTimeStartHourSpinner.setVisibility(View.VISIBLE);
+            mTimeEndHourSpinner.setVisibility(View.VISIBLE);
+
+            mTimeStartMinuteSpinner.setSelection(mValidStartTimeMinute);
+            mTimeEndMinuteSpinner.setSelection(mValidEndTimeMinute);
+
+            if (is24Hour()){
+                mTimeStartHourSpinner.setSelection(mValidStartTimeHour);
+                mTimeEndHourSpinner.setSelection(mValidEndTimeHour);
+            } else {
+                mTimeStartFormate.setVisibility(View.VISIBLE);
+                mTimeEndFormate.setVisibility(View.VISIBLE);
+                showTimeWith12Formate(mValidStartTimeHour, mTimeStartHourSpinner, mTimeStartFormate);
+                showTimeWith12Formate(mValidEndTimeHour, mTimeEndHourSpinner, mTimeEndFormate);
+            }
+            onAllDayChecked(mTimePeriodAllDay.isChecked());
+        }
+    }
+
+    private void onAllDayChecked(boolean isChecked){
+        mTimeStartHourSpinner.setEnabled(!isChecked);
+        mTimeStartHourSpinner.setClickable(!isChecked);
+        mTimeStartMinuteSpinner.setEnabled(!isChecked);
+        mTimeStartMinuteSpinner.setClickable(!isChecked);
+        mTimeEndHourSpinner.setEnabled(!isChecked);
+        mTimeEndHourSpinner.setClickable(!isChecked);
+        mTimeEndMinuteSpinner.setEnabled(!isChecked);
+        mTimeEndMinuteSpinner.setClickable(!isChecked);
+        if (!is24Hour()){
+            mTimeStartFormate.setEnabled(!isChecked);
+            mTimeStartFormate.setClickable(!isChecked);
+            mTimeEndFormate.setEnabled(!isChecked);
+            mTimeEndFormate.setClickable(!isChecked);
+        }
+        mTimeStartTextView.setTextColor(isChecked? 0xFF888888 : 0xFF000000);
+        mTimeEndTextView.setTextColor(isChecked? 0xFF888888 : 0xFF000000);
+    }
+
+    /*Get value from the system settings*/
+    private boolean is24Hour() {
+        return DateFormat.is24HourFormat(getContext());
+    }
+
+    private void showTimeWith12Formate(int hour, Spinner hourSpinner, Spinner hourFormate){
+        if (hour < 12){
+            hourSpinner.setSelection(hour);
+            hourFormate.setSelection(0);
+        } else if (hour >= 12){
+            hourSpinner.setSelection(hour-12);
+            hourFormate.setSelection(1);
+        }
+    }
+
+    private void setSelectionStartTimePreiod( ){
+        mStartTimeMinute = (int) mTimeStartMinuteSpinner.getSelectedItemId();
+        if (DBG) Log.d(TAG, "setSelectionTimePreiod, mStartTimeMinute = "+mStartTimeMinute);
+        int starthourposion = (int) mTimeStartHourSpinner.getSelectedItemId();
+        if (DBG) Log.d(TAG, "setSelectionTimePreiod, starthourposion = "+starthourposion);
+        if (is24Hour()){
+            mStartTimeHour = starthourposion;
+        } else {
+            mStartTimeAPMP = (int) mTimeStartFormate.getSelectedItemId();
+            Log.d(TAG, "setSelectionTimePreiod, mStartTimeAPMP = " + mStartTimeAPMP);
+            if (mStartTimeAPMP == 0){
+                mStartTimeHour = starthourposion;
+            } else if (mStartTimeAPMP ==1){
+                mStartTimeHour = 12 + starthourposion;
+            }
+        }
+        Log.d(TAG, "setSelectionTimePreiod, mStartTimeHour = "
+                + mStartTimeHour + ", mStartTimeMinute = " + mStartTimeMinute);
+    }
+
+    private void setSelectionEndTimePreiod(){
+        mEndTimeMinute = (int) mTimeEndMinuteSpinner.getSelectedItemId();
+        if (DBG) Log.d(TAG, "setSelectionTimePreiod, mEndTimeMinute = "+mEndTimeMinute);
+        int endhourposion = (int) mTimeEndHourSpinner.getSelectedItemId();
+        if (DBG) Log.d(TAG, "setSelectionTimePreiod, endhourposion = "+ endhourposion);
+        if (is24Hour()){
+            mEndTimeHour = (int) mTimeEndHourSpinner.getSelectedItemId();
+        } else {
+            mEndTimeAMPM = (int) mTimeEndFormate.getSelectedItemId();
+            if (DBG) Log.d(TAG, "setSelectionTimePreiod, mEndTimeAMPM = " + mEndTimeAMPM);
+            if (mEndTimeAMPM == 0){
+                mEndTimeHour = endhourposion;
+            } else if (mEndTimeAMPM ==1){
+                mEndTimeHour = 12 + endhourposion;
+            }
+        }
+        if (DBG) Log.d(TAG, "setSelectionTimePreiod, mEndTimeHour = "
+                    + mEndTimeHour + ", mEndTimeMinute = " + mEndTimeMinute);
+    }
+
+    private void dumpSpinnerSelectedTimePeriodInfo(){
+        Log.d(TAG, "dumpSpinnerSelectedTimePeriodIfo: "
+            + "mStartTimeHour = " + mStartTimeHour
+            + ", mStartTimeMinute = " + mStartTimeMinute
+            + ", mEndTimeHour = " + mEndTimeHour
+            + ", mEndTimeMinute = " + mEndTimeMinute
+            + ", mTimePeriodString = " + mTimePeriodString);
+    }
 }
diff --git a/src/com/android/phone/EmergencyCallbackModeExitDialog.java b/src/com/android/phone/EmergencyCallbackModeExitDialog.java
index 591f435..f545b8a 100644
--- a/src/com/android/phone/EmergencyCallbackModeExitDialog.java
+++ b/src/com/android/phone/EmergencyCallbackModeExitDialog.java
@@ -16,6 +16,8 @@
 
 package com.android.phone;
 
+import static android.view.WindowManager.LayoutParams.SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS;
+
 import android.app.Activity;
 import android.app.AlertDialog;
 import android.app.Dialog;
@@ -38,6 +40,7 @@
 import android.telephony.TelephonyManager;
 import android.util.Log;
 
+import com.android.internal.telephony.EcbmHandler;
 import com.android.internal.telephony.Phone;
 import com.android.internal.telephony.TelephonyIntents;
 
@@ -70,12 +73,14 @@
     private static final int ECM_TIMER_RESET = 1;
     private Phone mPhone = null;
     private boolean mIsResumed = false;
+    private EcbmHandler mEcbmHandler;
 
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
-
+        getWindow().addPrivateFlags(SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS);
         mPhone = PhoneGlobals.getInstance().getPhoneInEcm();
+        mEcbmHandler = EcbmHandler.getInstance();
         // Check if phone is in Emergency Callback Mode. If not, exit.
         if (mPhone == null || !mPhone.isInEcm()) {
             Log.i(TAG, "ECMModeExitDialog launched - isInEcm: false" + " phone:" + mPhone);
@@ -93,7 +98,7 @@
         waitForConnectionCompleteThread.start();
 
         // Register ECM timer reset notfication
-        mPhone.registerForEcmTimerReset(mTimerResetHandler, ECM_TIMER_RESET, null);
+        mEcbmHandler.registerForEcmTimerReset(mTimerResetHandler, ECM_TIMER_RESET, null);
 
         // Register receiver for intent closing the dialog
         IntentFilter filter = new IntentFilter();
@@ -122,8 +127,8 @@
             // Receiver was never registered - silently ignore.
         }
         // Unregister ECM timer reset notification
-        if (mPhone != null) {
-            mPhone.unregisterForEcmTimerReset(mHandler);
+        if (mEcbmHandler != null) {
+            mEcbmHandler.unregisterForEcmTimerReset(mHandler);
         }
     }
 
@@ -240,7 +245,11 @@
                             new DialogInterface.OnClickListener() {
                                 public void onClick(DialogInterface dialog,int whichButton) {
                                     // User clicked Yes. Exit Emergency Callback Mode.
-                                    mPhone.exitEmergencyCallbackMode();
+                                    try {
+                                        mEcbmHandler.exitEmergencyCallbackMode();
+                                    } catch (Exception e) {
+                                        e.printStackTrace();
+                                    }
 
                                     // Show progress dialog
                                     showDialog(EXIT_ECM_PROGRESS_DIALOG);
diff --git a/src/com/android/phone/EmergencyCallbackModeService.java b/src/com/android/phone/EmergencyCallbackModeService.java
index 464db6f..edbd20f 100644
--- a/src/com/android/phone/EmergencyCallbackModeService.java
+++ b/src/com/android/phone/EmergencyCallbackModeService.java
@@ -35,6 +35,7 @@
 import android.telephony.TelephonyManager;
 import android.util.Log;
 
+import com.android.internal.telephony.EcbmHandler;
 import com.android.internal.telephony.Phone;
 import com.android.internal.telephony.PhoneConstants;
 import com.android.internal.telephony.TelephonyIntents;
@@ -59,6 +60,7 @@
     private long mTimeLeft = 0;
     private Phone mPhone = null;
     private boolean mInEmergencyCall = false;
+    private EcbmHandler mEcbmHandler;
 
     private static final int ECM_TIMER_RESET = 1;
 
@@ -74,7 +76,8 @@
 
     @Override
     public void onCreate() {
-         Phone phoneInEcm = PhoneGlobals.getInstance().getPhoneInEcm();
+        Phone phoneInEcm = PhoneGlobals.getInstance().getPhoneInEcm();
+        mEcbmHandler = EcbmHandler.getInstance();
         // Check if it is CDMA phone
         if (phoneInEcm == null || ((phoneInEcm.getPhoneType() != PhoneConstants.PHONE_TYPE_CDMA)
                 && (phoneInEcm.getImsPhone() == null))) {
@@ -93,7 +96,7 @@
 
         // Register ECM timer reset notfication
         mPhone = phoneInEcm;
-        mPhone.registerForEcmTimerReset(mHandler, ECM_TIMER_RESET, null);
+        mEcbmHandler.registerForEcmTimerReset(mHandler, ECM_TIMER_RESET, null);
 
         startTimerNotification();
     }
@@ -104,7 +107,7 @@
             // Unregister receiver
             unregisterReceiver(mEcmReceiver);
             // Unregister ECM timer reset notification
-            mPhone.unregisterForEcmTimerReset(mHandler);
+            mEcbmHandler.unregisterForEcmTimerReset(mHandler);
 
             // Cancel the notification and timer
             mNotificationManager.cancelAsUser(null, R.string.phone_in_ecm_notification_title,
diff --git a/src/com/android/phone/EmergencyDialer.java b/src/com/android/phone/EmergencyDialer.java
index 42bfb24..4ee2806 100644
--- a/src/com/android/phone/EmergencyDialer.java
+++ b/src/com/android/phone/EmergencyDialer.java
@@ -26,6 +26,7 @@
 import android.app.Dialog;
 import android.app.WallpaperColors;
 import android.app.WallpaperManager;
+import android.app.StatusBarManager;
 import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
@@ -174,6 +175,7 @@
     private boolean mDTMFToneEnabled;
 
     private EmergencyActionGroup mEmergencyActionGroup;
+    private StatusBarManager mStatusBarManager;
 
     private EmergencyInfoGroup mEmergencyInfoGroup;
 
@@ -283,6 +285,7 @@
         }
 
         setContentView(R.layout.emergency_dialer);
+        mStatusBarManager = (StatusBarManager) getSystemService(Context.STATUS_BAR_SERVICE);
 
         mDigits = (ResizingTextEditText) findViewById(R.id.digits);
         mDigits.setKeyListener(DialerKeyListener.getInstance());
@@ -635,6 +638,10 @@
     protected void onResume() {
         super.onResume();
 
+        if (null != mStatusBarManager) {
+            mStatusBarManager.disable(
+                     StatusBarManager.DISABLE_RECENT|StatusBarManager.DISABLE_HOME);
+        }
         // retrieve the DTMF tone play back setting.
         mDTMFToneEnabled = Settings.System.getInt(getContentResolver(),
                 Settings.System.DTMF_TONE_WHEN_DIALING, 1) == 1;
@@ -659,6 +666,9 @@
     @Override
     public void onPause() {
         super.onPause();
+        if (null != mStatusBarManager) {
+            mStatusBarManager.disable(StatusBarManager.DISABLE_NONE);
+        }
     }
 
     @Override
diff --git a/src/com/android/phone/GsmUmtsAdditionalCallOptions.java b/src/com/android/phone/GsmUmtsAdditionalCallOptions.java
index 6e28922..fc58d73 100644
--- a/src/com/android/phone/GsmUmtsAdditionalCallOptions.java
+++ b/src/com/android/phone/GsmUmtsAdditionalCallOptions.java
@@ -2,6 +2,8 @@
 
 import android.app.ActionBar;
 import android.app.Dialog;
+import android.content.Context;
+import android.content.Intent;
 import android.os.Bundle;
 import android.os.PersistableBundle;
 import android.preference.Preference;
@@ -105,7 +107,13 @@
         if (mPreferences.size() != 0) {
             if (icicle == null) {
                 if (DBG) Log.d(LOG_TAG, "start to init ");
-                doPreferenceInit(mInitIndex);
+                // doPreferenceInit(mInitIndex);
+                if (isUtEnabledToDisableClir()) {
+                    mCLIRButton.setSummary(R.string.sum_default_caller_id);
+                    mCWButton.init(this, false, mPhone);
+                } else {
+                    mCLIRButton.init(this, false, mPhone);
+                }
             } else {
                 if (DBG) Log.d(LOG_TAG, "restore stored states");
                 mInitIndex = mPreferences.size();
@@ -122,7 +130,12 @@
                         }
                         mCLIRButton.handleGetCLIRResult(clirArray);
                     } else {
-                        mCLIRButton.init(this, false, mPhone);
+                        if (isUtEnabledToDisableClir()) {
+                            mCLIRButton.setSummary(R.string.sum_default_caller_id);
+                            mCWButton.init(this, false, mPhone);
+                        } else {
+                            mCLIRButton.init(this, false, mPhone);
+                        }
                     }
                 }
             }
@@ -135,6 +148,16 @@
         }
     }
 
+    private boolean isUtEnabledToDisableClir() {
+        boolean skipClir = false;
+        CarrierConfigManager configManager = (CarrierConfigManager)
+            getSystemService(Context.CARRIER_CONFIG_SERVICE);
+        PersistableBundle pb = configManager.getConfigForSubId(mPhone.getSubId());
+        if (pb != null) {
+            skipClir = pb.getBoolean("config_disable_clir_over_ut");
+        }
+        return mPhone.isUtEnabled() && skipClir;
+    }
     @Override
     public void onResume() {
         super.onResume();
@@ -192,10 +215,7 @@
 
     @Override
     public void onFinished(Preference preference, boolean reading) {
-        if (mInitIndex < mPreferences.size()-1 && !isFinishing()) {
-            mInitIndex++;
-            doPreferenceInit(mInitIndex);
-        }
+        doNextPreferenceInit();
         super.onFinished(preference, reading);
     }
 
@@ -209,13 +229,25 @@
         return super.onOptionsItemSelected(item);
     }
 
+    private void doNextPreferenceInit() {
+        if (mInitIndex < mPreferences.size()-1 && !isFinishing()) {
+            mInitIndex++;
+            doPreferenceInit(mInitIndex);
+        }
+    }
+
     private void doPreferenceInit(int index) {
         if (mPreferences.size() > index) {
             Preference pref = mPreferences.get(index);
             if (pref instanceof CallWaitingSwitchPreference) {
                 ((CallWaitingSwitchPreference) pref).init(this, false, mPhone);
             } else if (pref instanceof CLIRListPreference) {
-                ((CLIRListPreference) pref).init(this, false, mPhone);
+                if (isUtEnabledToDisableClir()) {
+                  ((CLIRListPreference) pref).setSummary(R.string.sum_default_caller_id);
+                  doNextPreferenceInit();
+                } else {
+                  ((CLIRListPreference) pref).init(this, false, mPhone);
+                }
             }
         }
     }
diff --git a/src/com/android/phone/GsmUmtsCallBarringOptions.java b/src/com/android/phone/GsmUmtsCallBarringOptions.java
index 30e9b5c..d7b18a5 100644
--- a/src/com/android/phone/GsmUmtsCallBarringOptions.java
+++ b/src/com/android/phone/GsmUmtsCallBarringOptions.java
@@ -17,15 +17,25 @@
 package com.android.phone;
 
 import android.app.ActionBar;
+import android.app.AlertDialog;
 import android.app.Dialog;
+import android.content.BroadcastReceiver;
 import android.content.Context;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.net.ConnectivityManager;
+import android.net.NetworkInfo;
 import android.os.AsyncResult;
 import android.os.Bundle;
+import android.os.PersistableBundle;
+import android.os.SystemProperties;
 import android.os.Handler;
 import android.os.Message;
 import android.os.PersistableBundle;
 import android.preference.Preference;
 import android.preference.PreferenceScreen;
+import android.provider.Settings;
 import android.telephony.CarrierConfigManager;
 import android.telephony.SubscriptionManager;
 import android.telephony.TelephonyManager;
@@ -37,6 +47,9 @@
 import com.android.internal.telephony.CommandsInterface;
 import com.android.internal.telephony.GsmCdmaPhone;
 import com.android.internal.telephony.Phone;
+import com.android.internal.telephony.imsphone.ImsPhone;
+import com.android.internal.telephony.PhoneConstants;
+import com.android.internal.telephony.TelephonyIntents;
 import com.android.phone.settings.fdn.EditPinPreference;
 
 import java.util.ArrayList;
@@ -46,7 +59,8 @@
  * the dialogs to change the passward.
  */
 public class GsmUmtsCallBarringOptions extends TimeConsumingPreferenceActivity
-        implements EditPinPreference.OnPinEnteredListener {
+        implements EditPinPreference.OnPinEnteredListener,
+        DialogInterface.OnClickListener, DialogInterface.OnCancelListener {
     private static final String LOG_TAG = "GsmUmtsCallBarringOptions";
     private static final boolean DBG = (PhoneGlobals.DBG_LEVEL >= 2);
 
@@ -111,8 +125,12 @@
     private boolean mFirstResume;
     private Bundle mIcicle;
 
+    private BroadcastReceiver mReceiver = null;
+    private boolean mCheckData = false;
     private SubscriptionInfoHelper mSubscriptionInfoHelper;
+    private SubscriptionManager mSubscriptionManager;
     private Dialog mProgressDialog;
+    AlertDialog.Builder mBuilder = null;
 
     @Override
     public void onPinEntered(EditPinPreference preference, boolean positiveResult) {
@@ -412,18 +430,46 @@
         mPreferences.add(mButtonBAIC);
         mPreferences.add(mButtonBAICr);
 
+        boolean useDisableaAll = true;
+        boolean disableOutCallBarringOverIms = false;
+        boolean disableChangePasswordOverIms = false;
+
+        ImsPhone imsPhone = mPhone != null ? (ImsPhone) mPhone.getImsPhone() : null;
+        if (imsPhone != null && imsPhone.isUtEnabled()) {
+            useDisableaAll = false;
+            disableOutCallBarringOverIms = isDisableOutCallBarringOverIms();
+            disableChangePasswordOverIms = isDisableChangePasswordOverIms();
+        }
+
         // Find out if the sim card is ready.
         boolean isSimReady = TelephonyManager.from(this).getSimState(
                 SubscriptionManager.getSlotIndex(mPhone.getSubId()))
                         == TelephonyManager.SIM_STATE_READY;
 
-        // Deactivate all option and Change password option are unavailable
-        // when sim card is not ready.
-        if (isSimReady) {
+        // Change outgoing CB options are unavailable when sim card is not reay or when the carrier
+        // config is true.
+        if (isSimReady && !disableOutCallBarringOverIms) {
+            mButtonBAOC.setEnabled(true);
+            mButtonBAOIC.setEnabled(true);
+            mButtonBAOICxH.setEnabled(true);
+        } else {
+            mButtonBAOC.setEnabled(false);
+            mButtonBAOIC.setEnabled(false);
+            mButtonBAOICxH.setEnabled(false);
+        }
+
+        // Deactivate all option is unavailable when sim card is not ready or Ut is enabled.
+        if (isSimReady && useDisableaAll) {
             mButtonDisableAll.setEnabled(true);
-            mButtonChangePW.setEnabled(true);
         } else {
             mButtonDisableAll.setEnabled(false);
+        }
+
+        // Change password option is unavailable when sim card is not ready or when the password is
+        // not used.
+        if (isSimReady && !disableChangePasswordOverIms) {
+            mButtonChangePW.setEnabled(true);
+        } else {
             mButtonChangePW.setEnabled(false);
             mButtonChangePW.setSummary(R.string.call_barring_change_pwd_description_disabled);
         }
@@ -459,18 +505,47 @@
             displayPwChangeDialog(mIcicle.getInt(DIALOG_MESSAGE_KEY, mPwChangeDialogStrId), false);
             mButtonChangePW.setText(mIcicle.getString(DIALOG_PW_ENTRY_KEY));
         }
+
+        PersistableBundle pb = configManager.getConfigForSubId(mPhone.getSubId());
+        mCheckData = pb.getBoolean("check_mobile_data_for_cf");
     }
 
     @Override
     public void onResume() {
         super.onResume();
 
+        if (mCheckData) {
+            IntentFilter intentFilter = new IntentFilter();
+            intentFilter.addAction(TelephonyIntents.ACTION_ANY_DATA_CONNECTION_STATE_CHANGED);
+            mReceiver = new PhoneAppBroadcastReceiver();
+            registerReceiver(mReceiver, intentFilter);
+            final SubscriptionManager mSubscriptionManager = SubscriptionManager.from(this);
+            checkDataStatus();
+        } else {
+            initCallBarring();
+        }
+    }
+
+    @Override
+    public void onPause() {
+        super.onPause();
+        if (mReceiver != null) {
+            unregisterReceiver(mReceiver);
+        }
+    }
+
+    private void initCallBarring () {
         if (mFirstResume) {
             if (mIcicle == null || mIcicle.getBoolean(SAVED_BEFORE_LOAD_COMPLETED_KEY)) {
                 if (DBG) {
                     Log.d(LOG_TAG, "onResume: start to init ");
                 }
                 resetPwChangeState();
+                if (isDisableOutCallBarringOverIms() && mPhone.isUtEnabled()) {
+                    //if disable outgoing call barring over ims, ignore all outgoing query
+                    // and start query from incoming barring
+                    mInitIndex = 3;
+                }
                 mPreferences.get(mInitIndex).init(this, false, mPhone);
 
                 // Request removing BUSY_SAVING_DIALOG because reading is restarted.
@@ -537,4 +612,165 @@
             mProgressDialog = dialog;
         }
     }
+
+    private boolean isDisableOutCallBarringOverIms() {
+        CarrierConfigManager configManager = (CarrierConfigManager)getSystemService(
+                 Context.CARRIER_CONFIG_SERVICE);
+        PersistableBundle pb = configManager.getConfigForSubId(mPhone.getSubId());
+
+        return pb != null ? pb.getBoolean("config_disable_outgoing_callbarring_over_ims") : false;
+    }
+
+    private boolean isDisableChangePasswordOverIms() {
+        CarrierConfigManager configManager = (CarrierConfigManager)getSystemService(
+                 Context.CARRIER_CONFIG_SERVICE);
+        PersistableBundle pb = configManager.getConfigForSubId(mPhone.getSubId());
+
+        return pb != null ? pb.getBoolean("config_disable_change_password_over_ims") : false;
+    }
+    /**
+     * Receiver for intent broadcasts the Phone app cares about.
+     */
+    private class PhoneAppBroadcastReceiver extends BroadcastReceiver {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            String action = intent.getAction();
+            if (action.equals(TelephonyIntents.ACTION_ANY_DATA_CONNECTION_STATE_CHANGED)) {
+                String state = intent.getStringExtra(PhoneConstants.STATE_KEY);
+                final String apnType = intent.getStringExtra(PhoneConstants.DATA_APN_TYPE_KEY);
+                Log.d(LOG_TAG, "apntype is: " + apnType + " state is: " + state);
+                if (PhoneConstants.DataState.DISCONNECTED.name().equals(state) &&
+                        PhoneConstants.APN_TYPE_DEFAULT.equals(apnType)) {
+                    Log.d(LOG_TAG, "default data is disconnected.");
+                    checkDataStatus();
+                }
+            }
+        }
+    }
+
+    private void showAlertDialog(String title, String message) {
+        Dialog dialog = new AlertDialog.Builder(this)
+            .setTitle(title)
+            .setMessage(message)
+            .setIconAttribute(android.R.attr.alertDialogIcon)
+            .setPositiveButton(android.R.string.ok, this)
+            .setNegativeButton(android.R.string.cancel, this)
+            .setOnCancelListener(this)
+            .create();
+        dialog.show();
+    }
+
+    public void checkDataStatus() {
+        // check the active data sub.
+        int sub = mPhone.getSubId();
+        int defaultDataSub = mSubscriptionManager.getDefaultDataSubscriptionId();
+        int slotId = mSubscriptionManager.getSlotIndex(sub);
+        Log.d(LOG_TAG, "isUtEnabled = " + mPhone.isUtEnabled() +
+                ", checkMobileDataForCb = " + mCheckData + " defaultDataSub is : " +
+                defaultDataSub + " current sub is : " + sub);
+
+        if (sub != defaultDataSub) {
+            if (mPhone.isUtEnabled()) {
+                Log.d(LOG_TAG, "Show data in use indication if data sub is not on current sub");
+                showDataInuseToast();
+                initCallBarring();
+                return;
+            } else {
+                Log.d(LOG_TAG, "Show dds switch dialog if data sub is not on current sub");
+                showSwitchDdsDialog(slotId);
+                return;
+            }
+        }
+
+        if (mPhone.isUtEnabled() && mCheckData) {
+            int activeNetworkType = getActiveNetworkType();
+            boolean isDataRoaming = mPhone.getServiceState().getDataRoaming();
+            boolean isDataRoamingEnabled = mPhone.getDataRoamingEnabled();
+            boolean promptForDataRoaming = isDataRoaming && !isDataRoamingEnabled;
+            Log.d(LOG_TAG, "activeNetworkType = " + getActiveNetworkType() + ", sub = " + sub +
+                    ", defaultDataSub = " + defaultDataSub + ", isDataRoaming = " +
+                    isDataRoaming + ", isDataRoamingEnabled= " + isDataRoamingEnabled);
+            if ((activeNetworkType != ConnectivityManager.TYPE_MOBILE
+                        || sub != defaultDataSub)
+                    && !(activeNetworkType == ConnectivityManager.TYPE_NONE
+                        && promptForDataRoaming)) {
+                if (DBG) Log.d(LOG_TAG, "Show alert dialog if mobile network is disabled");
+                String title = (String)this.getResources().getText(R.string.no_mobile_data);
+                String message = (String)this.getResources()
+                    .getText(R.string.cf_setting_mobile_data_alert);
+                showAlertDialog(title, message);
+                return;
+            } else if (promptForDataRoaming) {
+                if (DBG) Log.d(LOG_TAG, "Show alert dialog if data roaming is disabled");
+                String title = (String)this.getResources()
+                    .getText(R.string.no_mobile_data_roaming);
+                String message = (String)this.getResources()
+                    .getText(R.string.cf_setting_mobile_data_roaming_alert);
+                showAlertDialog(title, message);
+                return;
+            }
+        }
+        initCallBarring();
+    }
+
+    private int getActiveNetworkType() {
+        ConnectivityManager cm = (ConnectivityManager) getSystemService(
+                Context.CONNECTIVITY_SERVICE);
+        if (cm != null) {
+            NetworkInfo ni = cm.getActiveNetworkInfo();
+            if ((ni == null) || !ni.isConnected()){
+                return ConnectivityManager.TYPE_NONE;
+            }
+            return ni.getType();
+        }
+        return ConnectivityManager.TYPE_NONE;
+    }
+
+    @Override
+    public void onClick(DialogInterface dialog, int id) {
+        if (id == DialogInterface.BUTTON_POSITIVE) {
+            Intent newIntent = new Intent("android.settings.SETTINGS");
+            newIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+            startActivity(newIntent);
+        }
+        finish();
+        return;
+    }
+
+    private void showDataInuseToast() {
+        String message = (String)this.getResources()
+            .getText(R.string.mobile_data_alert);
+        Toast.makeText(this, message, Toast.LENGTH_LONG).show();
+    }
+
+    private void showSwitchDdsDialog(int slotId) {
+        String title = (String)this.getResources().getText(R.string.no_mobile_data);
+        int simId = slotId + 1;
+        String message = (String)this.getResources()
+            .getText(R.string.switch_dds_to_sub_alert) + String.valueOf(simId);
+        if (mBuilder == null) {
+            mBuilder=new AlertDialog.Builder(this);
+            mBuilder.setTitle(title);
+            mBuilder.setMessage(message);
+            mBuilder.setIconAttribute(android.R.attr.alertDialogIcon);
+            mBuilder.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
+                @Override
+                public void onClick(DialogInterface dialog, int which) {
+                    Intent newIntent = new Intent(Settings.ACTION_NETWORK_OPERATOR_SETTINGS);
+                    newIntent.putExtra(Settings.EXTRA_SUB_ID,mPhone.getSubId());
+                    newIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+                    startActivity(newIntent);
+                }
+            });
+            mBuilder.setNegativeButton(android.R.string.cancel,
+                    new DialogInterface.OnClickListener() {
+                        @Override
+                        public void onClick(DialogInterface dialog, int which) {
+                            dialog.dismiss();
+                            finish();
+                        }
+            });
+            mBuilder.create().show();
+        }
+    }
 }
diff --git a/src/com/android/phone/GsmUmtsCallForwardOptions.java b/src/com/android/phone/GsmUmtsCallForwardOptions.java
old mode 100644
new mode 100755
index fda0ea5..4fda860
--- a/src/com/android/phone/GsmUmtsCallForwardOptions.java
+++ b/src/com/android/phone/GsmUmtsCallForwardOptions.java
@@ -1,15 +1,33 @@
 package com.android.phone;
 
 import android.app.ActionBar;
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.DialogInterface;
 import android.content.Intent;
+import android.content.IntentFilter;
 import android.database.Cursor;
+import android.net.ConnectivityManager;
+import android.net.NetworkInfo;
 import android.os.Bundle;
 import android.os.PersistableBundle;
+import android.os.SystemProperties;
 import android.preference.Preference;
 import android.preference.PreferenceScreen;
+import android.provider.Settings;
 import android.telephony.CarrierConfigManager;
+import android.telephony.ims.feature.ImsFeature;
+import android.telephony.SubscriptionManager;
+import android.telephony.TelephonyManager;
 import android.util.Log;
 import android.view.MenuItem;
+import android.widget.Toast;
+import com.android.ims.ImsException;
+import com.android.ims.ImsManager;
+import com.android.internal.telephony.PhoneConstants;
+import com.android.internal.telephony.TelephonyIntents;
 
 import com.android.internal.telephony.CallForwardInfo;
 import com.android.internal.telephony.CommandsInterface;
@@ -17,7 +35,8 @@
 
 import java.util.ArrayList;
 
-public class GsmUmtsCallForwardOptions extends TimeConsumingPreferenceActivity {
+public class GsmUmtsCallForwardOptions extends TimeConsumingPreferenceActivity
+    implements DialogInterface.OnClickListener, DialogInterface.OnCancelListener {
     private static final boolean DBG = (PhoneGlobals.DBG_LEVEL >= 2);
     private static final String LOG_TAG = "GsmUmtsCallForwardOptions";
 
@@ -25,6 +44,8 @@
         android.provider.ContactsContract.CommonDataKinds.Phone.NUMBER
     };
 
+    public static final String CALL_FORWARD_INTENT = "org.codeaurora.settings.CDMA_CALL_FORWARDING";
+
     private static final String BUTTON_CFU_KEY   = "button_cfu_key";
     private static final String BUTTON_CFB_KEY   = "button_cfb_key";
     private static final String BUTTON_CFNRY_KEY = "button_cfnry_key";
@@ -49,6 +70,12 @@
     private Phone mPhone;
     private SubscriptionInfoHelper mSubscriptionInfoHelper;
     private boolean mReplaceInvalidCFNumbers;
+    private int mServiceClass;
+    private BroadcastReceiver mReceiver = null;
+    private SubscriptionManager mSubscriptionManager;
+    private boolean mCheckData = false;
+    AlertDialog.Builder builder = null;
+    private CarrierConfigManager mCarrierConfig;
     private boolean mCallForwardByUssd;
 
     @Override
@@ -62,6 +89,13 @@
                 getActionBar(), getResources(), R.string.call_forwarding_settings_with_label);
         mPhone = mSubscriptionInfoHelper.getPhone();
 
+        mCarrierConfig = (CarrierConfigManager)
+                getSystemService(CARRIER_CONFIG_SERVICE);
+
+        if (mCarrierConfig != null) {
+            PersistableBundle pb = mCarrierConfig.getConfigForSubId(mPhone.getSubId());
+            mCheckData = pb.getBoolean("check_mobile_data_for_cf");
+        }
         PersistableBundle b = null;
         boolean supportCFB = true;
         boolean supportCFNRc = true;
@@ -117,6 +151,13 @@
         // TimeConsumingPreferenceActivity dialog can display as it
         // relies on onResume / onPause to maintain its foreground state.
 
+        /*Retrieve Call Forward ServiceClass*/
+        Intent intent = getIntent();
+        Log.d(LOG_TAG, "Intent is " + intent);
+        mServiceClass = intent.getIntExtra(PhoneUtils.SERVICE_CLASS,
+                CommandsInterface.SERVICE_CLASS_VOICE);
+        Log.d(LOG_TAG, "serviceClass: " + mServiceClass);
+
         mFirstResume = true;
         mIcicle = icicle;
 
@@ -136,15 +177,169 @@
         }
     }
 
+    /**
+     * Receiver for intent broadcasts the Phone app cares about.
+     */
+    private class PhoneAppBroadcastReceiver extends BroadcastReceiver {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            String action = intent.getAction();
+            if (action.equals(TelephonyIntents.ACTION_ANY_DATA_CONNECTION_STATE_CHANGED)) {
+                String state = intent.getStringExtra(PhoneConstants.STATE_KEY);
+                final String apnType = intent.getStringExtra(PhoneConstants.DATA_APN_TYPE_KEY);
+                Log.d(LOG_TAG, "apntype is: " + apnType + " state is: " + state);
+                if (PhoneConstants.DataState.DISCONNECTED.name().equals(state) &&
+                            PhoneConstants.APN_TYPE_DEFAULT.equals(apnType)) {
+                    Log.d(LOG_TAG, "default data is disconnected.");
+                    checkDataStatus();
+                }
+            }
+        }
+    }
+
+    public void checkDataStatus() {
+        // check the active data sub.
+        int sub = mPhone.getSubId();
+        int slotId = mSubscriptionManager.getSlotIndex(sub);
+        int defaultDataSub = mSubscriptionManager.getDefaultDataSubscriptionId();
+        Log.d(LOG_TAG, "isUtEnabled = " + mPhone.isUtEnabled() + ", checkData= " + mCheckData);
+        // Find out if the sim card is ready.
+        boolean isSimReady = TelephonyManager.from(this).getSimState(slotId)
+                == TelephonyManager.SIM_STATE_READY;
+        if (!isSimReady) {
+            Log.d(LOG_TAG, "SIM is not ready!");
+            String title = (String)this.getResources().getText(R.string.sim_is_not_ready);
+            String message = (String)this.getResources()
+                .getText(R.string.sim_is_not_ready);
+            showAlertDialog(title, message);
+            return;
+        }
+        if (mPhone != null) {
+            int activeNetworkType = getActiveNetworkType();
+            boolean isDataRoaming = mPhone.getServiceState().getDataRoaming();
+            boolean isDataRoamingEnabled = mPhone.getDataRoamingEnabled();
+            boolean promptForDataRoaming = isDataRoaming && !isDataRoamingEnabled;
+            Log.d(LOG_TAG, "activeNetworkType = " + getActiveNetworkType() + ", sub = " + sub +
+                    ", defaultDataSub = " + defaultDataSub + ", isDataRoaming = " +
+                    isDataRoaming + ", isDataRoamingEnabled= " + isDataRoamingEnabled);
+            if ((sub != defaultDataSub) && !mPhone.isUtEnabled()) {
+                Log.d(LOG_TAG, "Show dds switch dialog if data sub is not on current sub");
+                showSwitchDdsDialog(slotId);
+                return;
+            }
+
+            if (mPhone.isUtEnabled() && mCheckData) {
+                boolean isDataEnabled = TelephonyManager.from(this).getDataEnabled(sub);
+                Log.d(LOG_TAG, "isDataEnabled: " + isDataEnabled);
+                if ((!isDataEnabled || activeNetworkType != ConnectivityManager.TYPE_MOBILE)
+                        && !(activeNetworkType == ConnectivityManager.TYPE_NONE
+                        && promptForDataRoaming)) {
+                    Log.d(LOG_TAG,
+                            "Show alert dialog if data sub is not on current sub or WLAN is on");
+                    String title = (String)this.getResources().getText(R.string.no_mobile_data);
+                    String message = (String)this.getResources()
+                            .getText(R.string.cf_setting_mobile_data_alert);
+                    showAlertDialog(title, message);
+                    return;
+                }
+                if (promptForDataRoaming) {
+                       Log.d(LOG_TAG, "Show alert dialog if data roaming is disabled");
+                       String title = (String)this.getResources()
+                               .getText(R.string.no_mobile_data_roaming);
+                       String message = (String)this.getResources()
+                               .getText(R.string.cf_setting_mobile_data_roaming_alert);
+                       showAlertDialog(title, message);
+                       return;
+                }
+                if (sub != defaultDataSub) {
+                    Log.d(LOG_TAG, "Show data in use indication if data sub is not on current sub");
+                    showDataInuseToast();
+                }
+            }
+        }
+        initCallforwarding();
+    }
+
+    @Override
+    public void onClick(DialogInterface dialog, int id) {
+        if (id == DialogInterface.BUTTON_POSITIVE) {
+            Intent newIntent = new Intent("android.settings.SETTINGS");
+            newIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+            startActivity(newIntent);
+        }
+        finish();
+        return;
+    }
+
+    private int getActiveNetworkType() {
+        ConnectivityManager cm = (ConnectivityManager) getSystemService(
+                Context.CONNECTIVITY_SERVICE);
+        if (cm != null) {
+            NetworkInfo ni = cm.getActiveNetworkInfo();
+            if ((ni == null) || !ni.isConnected()){
+                return ConnectivityManager.TYPE_NONE;
+            }
+            return ni.getType();
+        }
+        return ConnectivityManager.TYPE_NONE;
+    }
+
+    //prompt dialog to notify user turn off Enhance 4G LTE switch
+    private boolean isPromptTurnOffEnhance4GLTE(Phone phone) {
+        if (phone == null || phone.getImsPhone() == null) {
+            return false;
+        }
+
+        ImsManager imsMgr = ImsManager.getInstance(this, phone.getPhoneId());
+        try {
+            if (imsMgr.getImsServiceState() != ImsFeature.STATE_READY) {
+                Log.d(LOG_TAG, "ImsServiceStatus is not ready!");
+                return false;
+            }
+        } catch (ImsException ex) {
+            Log.d(LOG_TAG, "Exception when trying to get ImsServiceStatus: " + ex);
+            return false;
+        }
+
+        return imsMgr.isEnhanced4gLteModeSettingEnabledByUser()
+            && imsMgr.isNonTtyOrTtyOnVolteEnabled()
+            && !phone.isUtEnabled()
+            && !phone.isVolteEnabled()
+            && !phone.isVideoEnabled();
+    }
+
     @Override
     public void onResume() {
         super.onResume();
+        if (mCarrierConfig.getConfigForSubId(mPhone.getSubId())
+                .getBoolean(CarrierConfigManager.KEY_CDMA_CW_CF_ENABLED_BOOL)
+                && isPromptTurnOffEnhance4GLTE(mPhone)) {
+            String title = (String)this.getResources()
+                .getText(R.string.ut_not_support);
+            String msg = (String)this.getResources()
+                .getText(R.string.ct_ut_not_support_close_4glte);
+            showAlertDialog(title, msg);
+            return;
+        }
 
+        if (mCheckData) {
+            IntentFilter intentFilter = new IntentFilter();
+            intentFilter.addAction(TelephonyIntents.ACTION_ANY_DATA_CONNECTION_STATE_CHANGED);
+            mReceiver = new PhoneAppBroadcastReceiver();
+            registerReceiver(mReceiver, intentFilter);
+            final SubscriptionManager mSubscriptionManager = SubscriptionManager.from(this);
+            checkDataStatus();
+        } else {
+            initCallforwarding();
+        }
+    }
+
+    private void initCallforwarding () {
         if (mFirstResume) {
             if (mIcicle == null) {
                 Log.d(LOG_TAG, "start to init ");
                 CallForwardEditPreference pref = mPreferences.get(mInitIndex);
-                pref.init(this, mPhone, mReplaceInvalidCFNumbers, mCallForwardByUssd);
+                pref.init(this, mPhone, mReplaceInvalidCFNumbers, mServiceClass, mCallForwardByUssd);
                 pref.startCallForwardOptionsQuery();
 
             } else {
@@ -157,7 +352,7 @@
                     CallForwardInfo cf = new CallForwardInfo();
                     cf.number = bundle.getString(KEY_NUMBER);
                     cf.status = bundle.getInt(KEY_STATUS);
-                    pref.init(this, mPhone, mReplaceInvalidCFNumbers, mCallForwardByUssd);
+                    pref.init(this, mPhone, mReplaceInvalidCFNumbers, mServiceClass, mCallForwardByUssd);
                     pref.restoreCallForwardInfo(cf);
                 }
             }
@@ -166,6 +361,54 @@
         }
     }
 
+    private void showDataInuseToast() {
+        String message = (String)this.getResources()
+                .getText(R.string.mobile_data_alert);
+        Toast.makeText(this, message, Toast.LENGTH_LONG).show();
+    }
+
+    private void showSwitchDdsDialog(int slotId) {
+        String title = (String)this.getResources().getText(R.string.no_mobile_data);
+        int simId = slotId + 1;
+        String message = (String)this.getResources()
+                .getText(R.string.switch_dds_to_sub_alert) + String.valueOf(simId);
+        if (builder == null) {
+            builder=new AlertDialog.Builder(this);
+            builder.setTitle(title);
+            builder.setMessage(message);
+            builder.setIconAttribute(android.R.attr.alertDialogIcon);
+            builder.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
+                @Override
+                public void onClick(DialogInterface dialog, int which) {
+                    Intent newIntent = new Intent(Settings.ACTION_NETWORK_OPERATOR_SETTINGS);
+                    newIntent.putExtra(Settings.EXTRA_SUB_ID,mPhone.getSubId());
+                    newIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+                    startActivity(newIntent);
+                }
+            });
+            builder.setNegativeButton(android.R.string.cancel,
+                new DialogInterface.OnClickListener() {
+                    @Override
+                    public void onClick(DialogInterface dialog, int which) {
+                        dialog.dismiss();
+                        finish();
+                    }
+            });
+            builder.create().show();
+        }
+    }
+
+    @Override
+    public void onPause() {
+        super.onPause();
+        if (mCheckData && mReceiver != null) {
+            unregisterReceiver(mReceiver);
+        }
+        for (CallForwardEditPreference pref : mPreferences) {
+            pref.deInit();
+        }
+    }
+
     @Override
     protected void onSaveInstanceState(Bundle outState) {
         super.onSaveInstanceState(outState);
@@ -185,10 +428,33 @@
     @Override
     public void onFinished(Preference preference, boolean reading) {
         if (mInitIndex < mPreferences.size()-1 && !isFinishing()) {
-            mInitIndex++;
-            CallForwardEditPreference pref = mPreferences.get(mInitIndex);
-            pref.init(this, mPhone, mReplaceInvalidCFNumbers, mCallForwardByUssd);
-            pref.startCallForwardOptionsQuery();
+            if (mInitIndex == 0 && mButtonCFU.isAutoRetryCfu()) {
+                Log.i(LOG_TAG, "auto retry case: ");
+                CarrierConfigManager carrierConfig = (CarrierConfigManager)
+                    getSystemService(CARRIER_CONFIG_SERVICE);
+                if(carrierConfig != null && mPhone != null
+                        && carrierConfig.getConfigForSubId(mPhone.getSubId())
+                            .getBoolean(CarrierConfigManager.KEY_CDMA_CW_CF_ENABLED_BOOL)) {
+                    if (isPromptTurnOffEnhance4GLTE(mPhone)) {
+                        String title = (String)this.getResources()
+                            .getText(R.string.ut_not_support);
+                        String msg = (String)this.getResources()
+                            .getText(R.string.ct_ut_not_support_close_4glte);
+                        showAlertDialog(title, msg);
+                    }else if (mPhone.getPhoneType() == PhoneConstants.PHONE_TYPE_CDMA ){
+                        Log.i(LOG_TAG, "auto retry and switch to cmda method UI.");
+                        Intent intent = new Intent(CALL_FORWARD_INTENT);
+                        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+                        startActivity(intent);
+                        finish();
+                    }
+                }
+            } else {
+                mInitIndex++;
+                CallForwardEditPreference pref = mPreferences.get(mInitIndex);
+                pref.init(this, mPhone, mReplaceInvalidCFNumbers, mServiceClass, mCallForwardByUssd);
+                pref.startCallForwardOptionsQuery();
+            }
         }
 
         super.onFinished(preference, reading);
@@ -242,4 +508,16 @@
         }
         return super.onOptionsItemSelected(item);
     }
+
+    private void showAlertDialog(String title, String message) {
+        Dialog dialog = new AlertDialog.Builder(this)
+                .setTitle(title)
+                .setMessage(message)
+                .setIconAttribute(android.R.attr.alertDialogIcon)
+                .setPositiveButton(android.R.string.ok, this)
+                .setNegativeButton(android.R.string.cancel, this)
+                .setOnCancelListener(this)
+                .create();
+        dialog.show();
+    }
 }
diff --git a/src/com/android/phone/GsmUmtsCallOptions.java b/src/com/android/phone/GsmUmtsCallOptions.java
index 51d1b66..495a69c 100644
--- a/src/com/android/phone/GsmUmtsCallOptions.java
+++ b/src/com/android/phone/GsmUmtsCallOptions.java
@@ -35,6 +35,7 @@
     public static final String CALL_BARRING_KEY = "call_barring_key";
     public static final String ADDITIONAL_GSM_SETTINGS_KEY = "additional_gsm_call_settings_key";
 
+    private boolean mCommon = false;
     @Override
     protected void onCreate(Bundle icicle) {
         super.onCreate(icicle);
@@ -42,10 +43,18 @@
         addPreferencesFromResource(R.xml.gsm_umts_call_options);
 
         SubscriptionInfoHelper subInfoHelper = new SubscriptionInfoHelper(this, getIntent());
+        PersistableBundle pb = null;
+        if (subInfoHelper.hasSubId()) {
+            pb = PhoneGlobals.getInstance().getCarrierConfigForSubId(subInfoHelper.getSubId());
+        } else {
+            pb = PhoneGlobals.getInstance().getCarrierConfig();
+        }
+        mCommon = pb != null && pb.getBoolean("config_common_callsettings_support_bool");
         subInfoHelper.setActionBarTitle(
-                getActionBar(), getResources(), R.string.labelGsmMore_with_label);
-        init(getPreferenceScreen(), subInfoHelper);
+                getActionBar(), getResources(),
+                mCommon ? R.string.labelCommonMore_with_label : R.string.labelGsmMore_with_label);
 
+        init(getPreferenceScreen(), subInfoHelper);
         if (subInfoHelper.getPhone().getPhoneType() != PhoneConstants.PHONE_TYPE_GSM) {
             //disable the entire screen
             getPreferenceScreen().setEnabled(false);
@@ -84,7 +93,7 @@
             if (b != null && b.getBoolean(
                     CarrierConfigManager.KEY_CALL_FORWARDING_VISIBILITY_BOOL)) {
                 callForwardingPref.setIntent(
-                        subInfoHelper.getIntent(GsmUmtsCallForwardOptions.class));
+                        subInfoHelper.getIntent(CallForwardType.class));
                 callForwardingPref.setEnabled(isAirplaneModeOff);
             } else {
                 prefScreen.removePreference(callForwardingPref);
diff --git a/src/com/android/phone/IccNetworkDepersonalizationPanel.java b/src/com/android/phone/IccNetworkDepersonalizationPanel.java
index a26225e..2b1c1d3 100644
--- a/src/com/android/phone/IccNetworkDepersonalizationPanel.java
+++ b/src/com/android/phone/IccNetworkDepersonalizationPanel.java
@@ -22,7 +22,11 @@
 import android.os.Handler;
 import android.os.Message;
 import android.os.PersistableBundle;
+import android.os.RemoteException;
+import android.os.ServiceManager;
 import android.telephony.CarrierConfigManager;
+import android.telephony.SubscriptionInfo;
+import android.telephony.SubscriptionManager;
 import android.telephony.TelephonyManager;
 import android.text.Editable;
 import android.text.Spannable;
@@ -38,8 +42,11 @@
 import android.widget.TextView;
 
 import com.android.internal.telephony.Phone;
+import com.android.internal.telephony.RIL;
 import com.android.internal.telephony.uicc.IccCardApplicationStatus.PersoSubState;
 
+import org.codeaurora.internal.IExtTelephony;
+import org.codeaurora.internal.IDepersoResCallback;
 /**
  * "SIM network unlock" PIN entry screen.
  *
@@ -63,11 +70,14 @@
     //events
     private static final int EVENT_ICC_NTWRK_DEPERSONALIZATION_RESULT = 100;
 
+    //this enum value should match with error value being propagated from vendor
+    private int ERROR = 1;
     private Phone mPhone;
     private int mPersoSubtype;
     private static IccNetworkDepersonalizationPanel [] sNdpPanel =
             new IccNetworkDepersonalizationPanel[
                     TelephonyManager.getDefault().getSupportedModemCount()];
+    private SubscriptionInfo sir;
 
     //UI elements
     private EditText     mPinEntry;
@@ -75,6 +85,7 @@
     private LinearLayout mStatusPanel;
     private TextView     mPersoSubtypeText;
     private PersoSubState mPersoSubState;
+    private TextView     mPhoneIdText;
     private TextView     mStatusText;
 
     private Button       mUnlockButton;
@@ -87,6 +98,9 @@
         SUCCESS
     }
 
+    private IExtTelephony mExtTelephony = IExtTelephony.Stub.
+            asInterface(ServiceManager.getService("qti.radio.extphone"));
+
     /**
      * Shows the network depersonalization dialog, but only if it is not already visible.
      */
@@ -137,36 +151,70 @@
     private Handler mHandler = new Handler() {
         public void handleMessage(Message msg) {
             if (msg.what == EVENT_ICC_NTWRK_DEPERSONALIZATION_RESULT) {
-                AsyncResult res = (AsyncResult) msg.obj;
-                if (res.exception != null) {
-                    if (DBG) log("network depersonalization request failure.");
-                    displayStatus(statusType.ERROR.name());
-                    postDelayed(new Runnable() {
-                        public void run() {
-                            hideAlert();
-                            mPinEntry.getText().clear();
-                            mPinEntry.requestFocus();
+                if (mPhone.getHalVersion().greaterOrEqual(RIL.RADIO_HAL_VERSION_1_5)) {
+                    AsyncResult res = (AsyncResult) msg.obj;
+                        if (res.exception != null) {
+                            if (DBG) log("network depersonalization request failure.");
+                            displayStatus(statusType.ERROR.name());
+                            postDelayed(new Runnable() {
+                                public void run() {
+                                    hideAlert();
+                                    mPinEntry.getText().clear();
+                                    mPinEntry.requestFocus();
+                                }
+                            }, 3000);
+                        } else {
+                            if (DBG) log("network depersonalization success.");
+                            displayStatus(statusType.SUCCESS.name());
+                            postDelayed(new Runnable() {
+                                public void run() {
+                                    dismiss();
+                                }
+                            }, 3000);
                         }
-                    }, 3000);
                 } else {
-                    if (DBG) log("network depersonalization success.");
-                    displayStatus(statusType.SUCCESS.name());
-                    postDelayed(new Runnable() {
-                        public void run() {
-                            dismiss();
-                        }
-                    }, 3000);
+                    //DepersoResult received ERROR/SUCCESS from vendor side
+                    if (msg.arg1 == ERROR) {
+                        if (DBG) log("network depersonalization request failure.");
+                        displayStatus(statusType.ERROR.name());
+                        postDelayed(new Runnable() {
+                            public void run() {
+                                hideAlert();
+                                mPinEntry.getText().clear();
+                                mPinEntry.requestFocus();
+                            }
+                        }, 3000);
+                    } else {
+                        if (DBG) log("network depersonalization success.");
+                        displayStatus(statusType.SUCCESS.name());
+                        postDelayed(new Runnable() {
+                            public void run() {
+                                dismiss();
+                            }
+                        }, 3000);
+                    }
                 }
             }
         }
     };
 
+    private final IDepersoResCallback mCallback = new IDepersoResCallback.Stub() {
+        public void onDepersoResult(int result, int phoneId) {
+           log("on deperso result received: " +result);
+           Message msg = mHandler.obtainMessage(EVENT_ICC_NTWRK_DEPERSONALIZATION_RESULT, result,
+                   phoneId);
+           msg.sendToTarget();
+        }
+    };
 
     //constructor
     public IccNetworkDepersonalizationPanel(Context context) {
         super(context);
         mPhone = PhoneGlobals.getPhone();
         mPersoSubtype = PersoSubState.PERSOSUBSTATE_SIM_NETWORK.ordinal();
+        sir = SubscriptionManager.from(context)
+                .getActiveSubscriptionInfoForSimSlotIndex(mPhone.getPhoneId());
+
     }
 
     //constructor
@@ -175,6 +223,8 @@
         super(context);
         mPhone = phone == null ? PhoneGlobals.getPhone() : phone;
         mPersoSubtype = subtype;
+        sir = SubscriptionManager.from(context)
+                .getActiveSubscriptionInfoForSimSlotIndex(mPhone.getPhoneId());
     }
 
     @Override
@@ -194,6 +244,7 @@
 
         mEntryPanel = (LinearLayout) findViewById(R.id.entry_panel);
         mPersoSubtypeText = (TextView) findViewById(R.id.perso_subtype_text);
+        mPhoneIdText = (TextView) findViewById(R.id.perso_phoneid_text);
         displayStatus(statusType.ENTRY.name());
 
         mUnlockButton = (Button) findViewById(R.id.ndp_unlock);
@@ -252,13 +303,24 @@
                 return;
             }
 
-            log("Requesting De-Personalization for subtype " + mPersoSubtype);
+            int persoState = mPersoSubState.getState();
+            log("Requesting De-Personalization for subtype " + mPersoSubtype
+                    + " subtype val " + persoState);
 
             try {
-                mPhone.getIccCard().supplySimDepersonalization(mPersoSubState,pin,
-                        Message.obtain(mHandler, EVENT_ICC_NTWRK_DEPERSONALIZATION_RESULT));
+                // If 1.5 or above HAL Version, then functionality uses IRadio.hal
+                // else follow legacy procedure
+                if(mPhone.getHalVersion().greaterOrEqual(RIL.RADIO_HAL_VERSION_1_5)) {
+                    mPhone.getIccCard().supplySimDepersonalization(mPersoSubState,pin,
+                           Message.obtain(mHandler, EVENT_ICC_NTWRK_DEPERSONALIZATION_RESULT));
+                } else {
+                    mExtTelephony.supplyIccDepersonalization(pin, Integer.toString(persoState),
+                             mCallback, mPhone.getPhoneId());
+                }
+            } catch (RemoteException ex) {
+                log("RemoteException @supplyIccDepersonalization" + ex);
             } catch (NullPointerException ex) {
-                log("NullPointerException @supplySimDepersonalization" + ex);
+                log("NullPointerException @supplyIccDepersonalization" + ex);
             }
             displayStatus(statusType.IN_PROGRESS.name());
         }
@@ -272,7 +334,6 @@
 
         label = getContext().getResources().getIdentifier(mPersoSubState.name()
                 + "_" + type, "string", "android");
-
         if (label == 0) {
             log ("Unable to get the PersoSubType string");
             return;
@@ -283,6 +344,14 @@
             return;
         }
 
+       CharSequence displayName = sir.getDisplayName();
+       log("Operator displayName is: " + displayName + "phoneId: " + mPhone.getPhoneId());
+
+        // Displaying Operator displayName  on UI
+        String phoneIdText = getContext().getString(R.string.label_phoneid)
+                + ": " + displayName;
+        mPhoneIdText.setText(phoneIdText);
+
         if (type == statusType.ENTRY.name()) {
             String displayText = getContext().getString(label);
             mPersoSubtypeText.setText(displayText);
diff --git a/src/com/android/phone/ImsUtil.java b/src/com/android/phone/ImsUtil.java
index 18fc534..e23a366 100644
--- a/src/com/android/phone/ImsUtil.java
+++ b/src/com/android/phone/ImsUtil.java
@@ -59,7 +59,7 @@
      * @return {@code true} if WFC is supported per Slot and has been enabled by the user.
      */
     public static boolean isWfcEnabled(Context context, int phoneId) {
-        ImsManager imsManager = ImsManager.getInstance(context, phoneId);
+        final ImsManager imsManager = ImsManager.getInstance(context, phoneId);
         boolean isEnabledByPlatform = imsManager.isWfcEnabledByPlatform();
         boolean isEnabledByUser = imsManager.isWfcEnabledByUser();
         if (DBG) Log.d(LOG_TAG, "isWfcEnabled :: isEnabledByPlatform=" + isEnabledByPlatform
@@ -82,7 +82,7 @@
      * enabled, this will return {@code false}.
      */
     public static boolean isWfcModeWifiOnly(Context context, int phoneId) {
-        ImsManager imsManager = ImsManager.getInstance(context, phoneId);
+        final ImsManager imsManager = ImsManager.getInstance(context, phoneId);
         boolean isWifiOnlyMode =
                 imsManager.getWfcMode() == ImsConfig.WfcModeFeatureValueConstants.WIFI_ONLY;
         if (DBG) Log.d(LOG_TAG, "isWfcModeWifiOnly :: isWifiOnlyMode" + isWifiOnlyMode
@@ -113,12 +113,18 @@
     public static boolean shouldPromoteWfc(Context context, int phoneId) {
         CarrierConfigManager cfgManager = (CarrierConfigManager) context
                 .getSystemService(Context.CARRIER_CONFIG_SERVICE);
-        if (cfgManager == null || !cfgManager.getConfigForSubId(getSubId(phoneId))
-                .getBoolean(CarrierConfigManager.KEY_CARRIER_PROMOTE_WFC_ON_CALL_FAIL_BOOL)) {
+
+        ImsManager imsManager = ImsManager.getInstance(context, phoneId);
+        if (!imsManager.isWfcEnabledByPlatform()) {
             return false;
         }
 
-        if (!getDefaultImsManagerInstance(context).isWfcProvisionedOnDevice()) {
+        if (!imsManager.isWfcProvisionedOnDevice()) {
+            return false;
+        }
+
+        if (cfgManager == null || !cfgManager.getConfigForSubId(getSubId(phoneId))
+                .getBoolean(CarrierConfigManager.KEY_CARRIER_PROMOTE_WFC_ON_CALL_FAIL_BOOL)) {
             return false;
         }
 
@@ -134,10 +140,6 @@
         return false;
     }
 
-    private static ImsManager getDefaultImsManagerInstance(Context context) {
-        return ImsManager.getInstance(context, SubscriptionManager.getDefaultVoicePhoneId());
-    }
-
     private static int getSubId(int phoneId) {
         final int[] subIds = SubscriptionManager.getSubId(phoneId);
         int subId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
diff --git a/src/com/android/phone/LimitedServiceActivity.java b/src/com/android/phone/LimitedServiceActivity.java
new file mode 100755
index 0000000..db23a77
--- /dev/null
+++ b/src/com/android/phone/LimitedServiceActivity.java
@@ -0,0 +1,182 @@
+/*
+ * Copyright (c) 2020, 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 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.
+ */
+
+package com.android.phone;
+
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.app.NotificationManager;
+import android.content.Context;
+import android.content.Intent;
+import android.content.SharedPreferences;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.preference.PreferenceManager;
+import android.support.annotation.NonNull;
+import android.telephony.ims.ImsMmTelManager;
+import android.telephony.TelephonyManager;
+import android.telephony.SubscriptionManager;
+import android.util.Log;
+import android.view.View;
+import android.widget.CheckBox;
+import androidx.fragment.app.DialogFragment;
+import androidx.fragment.app.FragmentActivity;
+import com.android.internal.telephony.CarrierServiceStateTracker;
+import com.android.internal.telephony.Phone;
+import com.android.internal.telephony.PhoneConstants;
+import com.android.internal.telephony.PhoneFactory;
+import com.android.internal.telephony.ServiceStateTracker;
+
+public class LimitedServiceActivity extends FragmentActivity {
+
+    private static final String LOG_TAG = "LimitedServiceActivity";
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        Log.d(LOG_TAG, "Started LimitedServiceActivity");
+        int phoneId = getIntent().getExtras().getInt(PhoneConstants.PHONE_KEY);
+        LimitedServiceAlertDialogFragment newFragment = LimitedServiceAlertDialogFragment.
+                newInstance(phoneId);
+        newFragment.show(getSupportFragmentManager(), null);
+    }
+
+    public static class LimitedServiceAlertDialogFragment extends DialogFragment {
+        private static final String TAG = "LimitedServiceAlertDialog";
+        private static final int EVENT_IMS_CAPABILITIES_CHANGED = 1;
+        private static final String KEY_PHONE_ID = "key_phone_id";
+        private Phone mPhone;
+        private int mPhoneId;
+        private TelephonyManager mTelephonyManager;
+        private Handler mHandler;
+        private String mType;
+
+        public static LimitedServiceAlertDialogFragment newInstance(int phoneId) {
+            LimitedServiceAlertDialogFragment frag = new LimitedServiceAlertDialogFragment();
+            Log.i(TAG, "LimitedServiceAlertDialog for phoneId:" + phoneId);
+            Bundle args = new Bundle();
+            args.putInt(KEY_PHONE_ID, phoneId);
+            frag.setArguments(args);
+            return frag;
+        }
+
+        @Override
+        public Dialog onCreateDialog(Bundle bundle) {
+            mPhoneId = getArguments().getInt(KEY_PHONE_ID);
+            mPhone = PhoneFactory.getPhone(mPhoneId);
+            mType = mPhone.getContext().getResources().getString(
+                com.android.internal.R.string.config_show_notification_emergency_dialog_type);
+            mTelephonyManager = getContext().getSystemService(TelephonyManager.class).
+                    createForSubscriptionId(mPhone.getSubId());
+            mHandler = new Handler() {
+                @Override
+                public void handleMessage(Message msg) {
+                    switch (msg.what) {
+                        case EVENT_IMS_CAPABILITIES_CHANGED:
+                            if (!mTelephonyManager.isWifiCallingAvailable()) {
+                                cleanUp();
+                            }
+                            break;
+                    }
+                }
+            };
+            mPhone.getServiceStateTracker().registerForImsCapabilityChanged(mHandler,
+                    EVENT_IMS_CAPABILITIES_CHANGED, null);
+            if (!SubscriptionManager.isValidPhoneId(mPhoneId)) return null;
+            super.onCreateDialog(bundle);
+            View dialogView = View.inflate(getActivity(),
+                    R.layout.frag_limited_service_alert_dialog, null);
+            CheckBox alertCheckBox = dialogView.findViewById(R.id.do_not_show);
+            SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(
+                    PhoneFactory.getPhone(mPhoneId).getContext());
+            Log.i(TAG, "onCreateDialog " + Phone.KEY_DO_NOT_SHOW_LIMITED_SERVICE_ALERT +
+                    PhoneFactory.getPhone(mPhoneId).getSubId()  + ":" + pref.getBoolean
+                    (Phone.KEY_DO_NOT_SHOW_LIMITED_SERVICE_ALERT + PhoneFactory.getPhone
+                    (mPhoneId).getSubId(), false));
+
+            AlertDialog alertDialog =
+                new AlertDialog.Builder(getActivity())
+                    .setView(dialogView)
+                    .setNegativeButton(
+                        android.R.string.cancel,
+                        (dialog, which) -> onNegativeButtonClicked())
+                    .setPositiveButton(
+                        android.R.string.ok,
+                        (dialog, which) -> onPositiveButtonClicked(pref, alertCheckBox.isChecked()))
+                    .create();
+            this.setCancelable(false);
+            return alertDialog;
+        }
+
+        private void onNegativeButtonClicked() {
+            Log.d(TAG, "onNegativeButtonClicked");
+            SubscriptionManager subscriptionManager = (SubscriptionManager) getContext().
+                    getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE);
+            int[] subIds = subscriptionManager.getSubscriptionIds(mPhoneId);
+            if (subIds != null && subIds.length > 0 && SubscriptionManager.
+                    isValidSubscriptionId(subIds[0])) {
+                ImsMmTelManager imsMmTelMgr = ImsMmTelManager.
+                        createForSubscriptionId(subIds[0]);
+                Log.i(TAG, "Disabling WFC setting");
+                if (!"vodafone".equals(mType)) {
+                    imsMmTelMgr.setVoWiFiSettingEnabled(false);
+                } else {
+                    Log.i(TAG, "Disallowing disabling WFC settings for Vodafone.");
+                }
+            }
+            cleanUp();
+        }
+
+        private void onPositiveButtonClicked(@NonNull SharedPreferences preferences,
+                boolean isChecked) {
+            SharedPreferences.Editor editor = preferences.edit();
+            editor.putBoolean(Phone.KEY_DO_NOT_SHOW_LIMITED_SERVICE_ALERT + PhoneFactory.
+                    getPhone(mPhoneId).getSubId(), isChecked);
+            editor.commit();
+            Log.i(TAG, "onPositiveButtonClicked isChecked:" + isChecked + " phoneId:" + mPhoneId
+                    + " do not show preference:" + preferences.getBoolean
+                    (Phone.KEY_DO_NOT_SHOW_LIMITED_SERVICE_ALERT +
+                    PhoneFactory.getPhone(mPhoneId).getSubId(), false));
+            if (isChecked && !"vodafone".equals(mType)) {
+                NotificationManager sNotificationManager = (NotificationManager) getContext().
+                        getSystemService(NOTIFICATION_SERVICE);
+                sNotificationManager.cancel(CarrierServiceStateTracker.EMERGENCY_NOTIFICATION_TAG,
+                        PhoneFactory.getPhone(mPhoneId).getSubId());
+            }
+            cleanUp();
+        }
+
+        private void cleanUp() {
+            mPhone.getServiceStateTracker().unregisterForImsCapabilityChanged(mHandler);
+            dismiss();
+            getActivity().finish();
+        }
+  }
+}
diff --git a/src/com/android/phone/NotificationMgr.java b/src/com/android/phone/NotificationMgr.java
index c2dece5..7c6537d 100644
--- a/src/com/android/phone/NotificationMgr.java
+++ b/src/com/android/phone/NotificationMgr.java
@@ -19,6 +19,7 @@
 import static android.Manifest.permission.READ_PHONE_STATE;
 
 import android.annotation.Nullable;
+import android.app.BroadcastOptions;
 import android.app.Notification;
 import android.app.NotificationManager;
 import android.app.PendingIntent;
@@ -34,6 +35,8 @@
 import android.os.Handler;
 import android.os.Message;
 import android.os.PersistableBundle;
+import android.os.RemoteException;
+import android.os.ServiceManager;
 import android.os.SystemClock;
 import android.os.SystemProperties;
 import android.os.UserHandle;
@@ -58,6 +61,7 @@
 
 import com.android.internal.telephony.Phone;
 import com.android.internal.telephony.PhoneFactory;
+import com.android.internal.telephony.SubscriptionController;
 import com.android.internal.telephony.TelephonyCapabilities;
 import com.android.internal.telephony.util.NotificationChannelController;
 import com.android.phone.settings.VoicemailSettingsActivity;
@@ -68,6 +72,8 @@
 import java.util.List;
 import java.util.Set;
 
+import org.codeaurora.internal.IExtTelephony;
+
 /**
  * NotificationManager-related utility code for the Phone app.
  *
@@ -87,6 +93,8 @@
     private static final String MWI_SHOULD_CHECK_VVM_CONFIGURATION_KEY_PREFIX =
             "mwi_should_check_vvm_configuration_state_";
 
+    private static final String EXTRA_SUB_ID = "sub_id";
+
     // notification types
     static final int MMI_NOTIFICATION = 1;
     static final int NETWORK_SELECTION_NOTIFICATION = 2;
@@ -106,6 +114,12 @@
 
     private static final String ACTION_MOBILE_NETWORK_LIST = "android.settings.MOBILE_NETWORK_LIST";
 
+    /**
+     * Grant recipients of new voicemail broadcasts a 10sec allowlist so they can start a background
+     * service to do VVM processing.
+     */
+    private final long VOICEMAIL_ALLOW_LIST_DURATION_MILLIS = 10000L;
+
     /** The singleton NotificationMgr instance. */
     private static NotificationMgr sInstance;
 
@@ -271,7 +285,7 @@
         Log.i(LOG_TAG, "updateMwi(): subId " + subId + " update to " + visible);
         mMwiVisible.put(subId, visible);
 
-        if (visible) {
+        if (visible && isUiccCardProvisioned(subId)) {
             if (phone == null) {
                 Log.w(LOG_TAG, "Found null phone for: " + subId);
                 return;
@@ -381,7 +395,7 @@
                         UserManager.DISALLOW_OUTGOING_CALLS, userHandle)
                         && !mUserManager.isManagedProfile(userHandle.getIdentifier())) {
                     if (!maybeSendVoicemailNotificationUsingDefaultDialer(phone, vmCount, vmNumber,
-                            pendingIntent, isSettingsIntent, userHandle, isRefresh)) {
+                            pendingIntent, isSettingsIntent, userHandle, isRefresh, subId)) {
                         notifyAsUser(
                                 Integer.toString(subId) /* tag */,
                                 VOICEMAIL_NOTIFICATION,
@@ -397,7 +411,7 @@
                         UserManager.DISALLOW_OUTGOING_CALLS, userHandle)
                         && !mUserManager.isManagedProfile(userHandle.getIdentifier())) {
                     if (!maybeSendVoicemailNotificationUsingDefaultDialer(phone, 0, null, null,
-                            false, userHandle, isRefresh)) {
+                            false, userHandle, isRefresh, subId)) {
                         cancelAsUser(
                                 Integer.toString(subId) /* tag */,
                                 VOICEMAIL_NOTIFICATION,
@@ -442,7 +456,7 @@
      */
     private boolean maybeSendVoicemailNotificationUsingDefaultDialer(Phone phone, Integer count,
             String number, PendingIntent pendingIntent, boolean isSettingsIntent,
-            UserHandle userHandle, boolean isRefresh) {
+            UserHandle userHandle, boolean isRefresh, int subId) {
 
         if (shouldManageNotificationThroughDefaultDialer(userHandle)) {
             Intent intent = getShowVoicemailIntentForDefaultDialer(userHandle);
@@ -451,6 +465,7 @@
             intent.putExtra(TelephonyManager.EXTRA_PHONE_ACCOUNT_HANDLE,
                     PhoneUtils.makePstnPhoneAccountHandle(phone));
             intent.putExtra(TelephonyManager.EXTRA_IS_REFRESH, isRefresh);
+            intent.putExtra(EXTRA_SUB_ID, subId);
             if (count != null) {
                 intent.putExtra(TelephonyManager.EXTRA_NOTIFICATION_COUNT, count);
             }
@@ -470,7 +485,10 @@
                             pendingIntent);
                 }
             }
-            mContext.sendBroadcastAsUser(intent, userHandle, READ_PHONE_STATE);
+
+            BroadcastOptions bopts = BroadcastOptions.makeBasic();
+            bopts.setTemporaryAppWhitelistDuration(VOICEMAIL_ALLOW_LIST_DURATION_MILLIS);
+            mContext.sendBroadcastAsUser(intent, userHandle, READ_PHONE_STATE, bopts.toBundle());
             return true;
         }
 
@@ -512,7 +530,7 @@
      */
     /* package */ void updateCfi(int subId, boolean visible, boolean isRefresh) {
         logi("updateCfi: subId= " + subId + ", visible=" + (visible ? "Y" : "N"));
-        if (visible) {
+        if (visible && isUiccCardProvisioned(subId)) {
             // If Unconditional Call Forwarding (forward all calls) for VOICE
             // is enabled, just show a notification.  We'll default to expanded
             // view for now, so the there is less confusion about the icon.  If
@@ -942,4 +960,24 @@
     private static long getTimeStamp() {
         return SystemClock.elapsedRealtime();
     }
+
+    private boolean isUiccCardProvisioned(int subId) {
+        final int PROVISIONED = 1;
+        final int INVALID_STATE = -1;
+        int provisionStatus = INVALID_STATE;
+        IExtTelephony mExtTelephony = IExtTelephony.Stub
+                .asInterface(ServiceManager.getService("qti.radio.extphone"));
+        int slotId = SubscriptionController.getInstance().getSlotIndex(subId);
+        try {
+            //get current provision state of the SIM.
+            provisionStatus = mExtTelephony.getCurrentUiccCardProvisioningStatus(slotId);
+        } catch (RemoteException ex) {
+            provisionStatus = INVALID_STATE;
+            if (DBG) log("Failed to get status for slotId: "+ slotId +" Exception: " + ex);
+        } catch (NullPointerException ex) {
+            provisionStatus = INVALID_STATE;
+            if (DBG) log("Failed to get status for slotId: "+ slotId +" Exception: " + ex);
+        }
+        return provisionStatus == PROVISIONED;
+   }
 }
diff --git a/src/com/android/phone/PhoneGlobals.java b/src/com/android/phone/PhoneGlobals.java
index 8f987b7..5386d7f 100644
--- a/src/com/android/phone/PhoneGlobals.java
+++ b/src/com/android/phone/PhoneGlobals.java
@@ -44,6 +44,7 @@
 import android.provider.Settings;
 import android.sysprop.TelephonyProperties;
 import android.telecom.TelecomManager;
+import android.telephony.AccessNetworkConstants;
 import android.telephony.AnomalyReporter;
 import android.telephony.CarrierConfigManager;
 import android.telephony.ServiceState;
@@ -120,6 +121,8 @@
     private static final int EVENT_RESTART_SIP = 14;
     private static final int EVENT_DATA_ROAMING_SETTINGS_CHANGED = 15;
     private static final int EVENT_MOBILE_DATA_SETTINGS_CHANGED = 16;
+    private static final int EVENT_CARRIER_CONFIG_CHANGED = 17;
+    private static final int EVENT_DATA_CONNECTION_ATTACHED = 18;
 
     // The MMI codes are also used by the InCallScreen.
     public static final int MMI_INITIATE = 51;
@@ -233,13 +236,12 @@
                         // Normal case: show the "SIM network unlock" PIN entry screen.
                         // The user won't be able to do anything else until
                         // they enter a valid SIM network PIN.
-                        Log.i(LOG_TAG, "show sim depersonal panel");
                         Phone phone = (Phone) ((AsyncResult) msg.obj).userObj;
                         int subType = (Integer)((AsyncResult)msg.obj).result;
+                        Log.i(LOG_TAG, "show sim depersonal panel");
                         IccNetworkDepersonalizationPanel.showDialog(phone, subType);
                     }
                     break;
-
                 case EVENT_DATA_ROAMING_DISCONNECTED:
                     notificationMgr.showDataRoamingNotification(msg.arg1, false);
                     break;
@@ -266,7 +268,9 @@
                     // process.
                     EventSimStateChangedBag bag = (EventSimStateChangedBag)msg.obj;
                     if (IccCardConstants.INTENT_VALUE_ICC_READY.equals(bag.mIccStatus)
-                            || IccCardConstants.INTENT_VALUE_ICC_LOADED.equals(bag.mIccStatus)) {
+                            || IccCardConstants.INTENT_VALUE_ICC_LOADED.equals(bag.mIccStatus)
+                            || IccCardConstants.INTENT_VALUE_ICC_NOT_READY.equals(bag.mIccStatus)
+                            || IccCardConstants.INTENT_VALUE_ICC_ABSENT.equals(bag.mIccStatus)) {
                         // when the right event is triggered and there
                         // are UI objects in the foreground, we close
                         // them to display the lock panel.
@@ -303,6 +307,27 @@
                 case EVENT_MOBILE_DATA_SETTINGS_CHANGED:
                     updateDataRoamingStatus();
                     break;
+                case EVENT_CARRIER_CONFIG_CHANGED:
+                    int subId = (Integer) msg.obj;
+                    // The voicemail number could be overridden by carrier config, so need to
+                    // refresh the message waiting (voicemail) indicator.
+                    refreshMwiIndicator(subId);
+                    break;
+                case EVENT_DATA_CONNECTION_ATTACHED:
+                    int subIdQ = (Integer)((AsyncResult)msg.obj).userObj;
+                    Phone phone = getPhone(subIdQ);
+                    if (phone != null) {
+                        DataConnectionReasons reasons = new DataConnectionReasons();
+                        boolean dataAllowed = phone.isDataAllowed(ApnSetting.TYPE_DEFAULT, reasons);
+                        if (!dataAllowed && dataIsNowRoaming(subIdQ)
+                                && subIdQ == mDefaultDataSubId) {
+                            if (VDBG) Log.v(LOG_TAG, "EVENT_DATA_CONNECTION_ATTACHED");
+                                updateDataRoamingStatus();
+                        }
+                    } else {
+                        Log.w(LOG_TAG, "phone object is null subId: " + subIdQ);
+                    }
+                    break;
             }
         }
     };
@@ -356,9 +381,6 @@
             startService(intent);
 
             mCM = CallManager.getInstance();
-            for (Phone phone : PhoneFactory.getPhones()) {
-                mCM.registerPhone(phone);
-            }
 
             // Create the NotificationMgr singleton, which is used to display
             // status bar icons and control other status bar behavior.
@@ -665,6 +687,9 @@
                 // re-register as it may be a new IccCard
                 int phoneId = intent.getIntExtra(PhoneConstants.PHONE_KEY,
                         SubscriptionManager.INVALID_PHONE_INDEX);
+                int subId = intent.getIntExtra(SubscriptionManager.EXTRA_SUBSCRIPTION_INDEX,
+                        SubscriptionManager.INVALID_SIM_SLOT_INDEX);
+                String simStatus = intent.getStringExtra(IccCardConstants.INTENT_KEY_ICC_STATE);
                 if (SubscriptionManager.isValidPhoneId(phoneId)) {
                     PhoneUtils.unregisterIccStatus(mHandler, phoneId);
                     PhoneUtils.registerIccStatus(mHandler, EVENT_SIM_NETWORK_LOCKED, phoneId);
@@ -672,6 +697,17 @@
                 String iccStatus = intent.getStringExtra(IccCardConstants.INTENT_KEY_ICC_STATE);
                 mHandler.sendMessage(mHandler.obtainMessage(EVENT_SIM_STATE_CHANGED,
                         new EventSimStateChangedBag(phoneId, iccStatus)));
+                Phone phone = PhoneFactory.getPhone(phoneId);
+                if (phone != null) {
+                    if (IccCardConstants.INTENT_VALUE_ICC_LOADED.equals(simStatus)) {
+                        phone.getServiceStateTracker().registerForDataConnectionAttached(
+                                AccessNetworkConstants.TRANSPORT_TYPE_WWAN, mHandler, EVENT_DATA_CONNECTION_ATTACHED, subId);
+                    } else if (IccCardConstants.INTENT_VALUE_ICC_ABSENT.equals(simStatus)
+                            || IccCardConstants.INTENT_VALUE_ICC_CARD_IO_ERROR.equals(simStatus)) {
+                        phone.getServiceStateTracker()
+                                .unregisterForDataConnectionAttached(AccessNetworkConstants.TRANSPORT_TYPE_WWAN, mHandler);
+                    }
+                }
             } else if (action.equals(TelephonyIntents.ACTION_RADIO_TECHNOLOGY_CHANGED)) {
                 String newPhone = intent.getStringExtra(PhoneConstants.PHONE_NAME_KEY);
                 Log.d(LOG_TAG, "Radio technology switched. Now " + newPhone + " is active.");
@@ -708,6 +744,12 @@
                 if (VDBG) Log.v(LOG_TAG, "carrier config changed.");
                 updateDataRoamingStatus();
                 updateLimitedSimFunctionForDualSim();
+                int subId = intent.getIntExtra(SubscriptionManager.EXTRA_SUBSCRIPTION_INDEX,
+                        SubscriptionManager.INVALID_SUBSCRIPTION_ID);
+                if (SubscriptionManager.isValidSubscriptionId(subId)) {
+                    mHandler.sendMessage(mHandler.obtainMessage(EVENT_CARRIER_CONFIG_CHANGED,
+                            new Integer(subId)));
+                }
             } else if (action.equals(TelephonyIntents.ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED)) {
                 // We also need to pay attention when default data subscription changes.
                 if (VDBG) Log.v(LOG_TAG, "default data sub changed.");
diff --git a/src/com/android/phone/PhoneInterfaceManager.java b/src/com/android/phone/PhoneInterfaceManager.java
index 0fd7ec0..1c3357a 100755
--- a/src/com/android/phone/PhoneInterfaceManager.java
+++ b/src/com/android/phone/PhoneInterfaceManager.java
@@ -18,6 +18,8 @@
 
 import static android.content.pm.PackageManager.PERMISSION_GRANTED;
 
+import static com.android.internal.telephony.PhoneConstants.PHONE_TYPE_CDMA;
+import static com.android.internal.telephony.PhoneConstants.PHONE_TYPE_GSM;
 import static com.android.internal.telephony.PhoneConstants.PHONE_TYPE_IMS;
 import static com.android.internal.telephony.PhoneConstants.SUBSCRIPTION_KEY;
 
@@ -130,6 +132,7 @@
 import com.android.internal.telephony.CommandException;
 import com.android.internal.telephony.CommandsInterface;
 import com.android.internal.telephony.DefaultPhoneNotifier;
+import com.android.internal.telephony.GsmCdmaPhone;
 import com.android.internal.telephony.HalVersion;
 import com.android.internal.telephony.IBooleanConsumer;
 import com.android.internal.telephony.IIntegerConsumer;
@@ -761,7 +764,9 @@
                     if (ar.exception == null && ar.result != null) {
                         request.result = ar.result;     // Integer
                     } else {
-                        request.result = null;
+                        // request.result must be set to something non-null
+                        // for the calling thread to unblock
+                        request.result = new int[]{-1};
                         if (ar.result == null) {
                             loge("getPreferredNetworkType: Empty response");
                         } else if (ar.exception instanceof CommandException) {
@@ -4265,8 +4270,8 @@
      */
     @Override
     public int getDataNetworkType(String callingPackage, String callingFeatureId) {
-        return getDataNetworkTypeForSubscriber(getDefaultSubscription(), callingPackage,
-                callingFeatureId);
+        return getDataNetworkTypeForSubscriber(mSubscriptionController.getDefaultDataSubId(),
+                callingPackage, callingFeatureId);
     }
 
     /**
@@ -5405,7 +5410,8 @@
                                 .setMinSdkVersionForFine(Build.VERSION_CODES.Q)
                                 .build());
         if (locationResult != LocationAccessPolicy.LocationPermissionResult.ALLOWED) {
-            SecurityException e = checkNetworkRequestForSanitizedLocationAccess(request, subId);
+            SecurityException e = checkNetworkRequestForSanitizedLocationAccess(
+                    request, subId, callingPackage);
             if (e != null) {
                 if (locationResult == LocationAccessPolicy.LocationPermissionResult.DENIED_HARD) {
                     throw e;
@@ -5428,8 +5434,8 @@
     }
 
     private SecurityException checkNetworkRequestForSanitizedLocationAccess(
-            NetworkScanRequest request, int subId) {
-        boolean hasCarrierPriv = getCarrierPrivilegeStatusForUid(subId, Binder.getCallingUid())
+            NetworkScanRequest request, int subId, String callingPackage) {
+        boolean hasCarrierPriv = checkCarrierPrivilegesForPackage(subId, callingPackage)
                 == TelephonyManager.CARRIER_PRIVILEGE_STATUS_HAS_ACCESS;
         boolean hasNetworkScanPermission =
                 mApp.checkCallingOrSelfPermission(android.Manifest.permission.NETWORK_SCAN)
@@ -5532,11 +5538,13 @@
 
         final long identity = Binder.clearCallingIdentity();
         try {
-            Settings.Global.putInt(mApp.getContentResolver(),
-                    Settings.Global.PREFERRED_NETWORK_MODE + subId, networkType);
-
             Boolean success = (Boolean) sendRequest(
                     CMD_SET_PREFERRED_NETWORK_TYPE, networkType, subId);
+
+            if (success) {
+                Settings.Global.putInt(mApp.getContentResolver(),
+                        Settings.Global.PREFERRED_NETWORK_MODE + subId, networkType);
+            }
             if (DBG) log("setPreferredNetworkType: " + (success ? "ok" : "fail"));
             return success;
         } finally {
@@ -5817,8 +5825,9 @@
 
     private int getCarrierPrivilegeStatusFromCarrierConfigRules(int privilegeFromSim, int uid,
             Phone phone) {
-        if (uid == Process.SYSTEM_UID || uid == Process.PHONE_UID) {
-            // Skip the check if it's one of these special uids
+        if (uid == Process.PHONE_UID) {
+            // Skip the check if it's the phone UID (system UID removed in b/184713596)
+            // TODO (b/184954344): Check for system/phone UID at call site instead of here
             return TelephonyManager.CARRIER_PRIVILEGE_STATUS_HAS_ACCESS;
         }
 
@@ -6326,6 +6335,14 @@
     @Override
     public int getRadioAccessFamily(int phoneId, String callingPackage) {
         Phone phone = PhoneFactory.getPhone(phoneId);
+        try {
+            TelephonyPermissions
+                    .enforeceCallingOrSelfReadPrivilegedPhoneStatePermissionOrCarrierPrivilege(
+                            mApp, phone.getSubId(), "getRadioAccessFamily");
+        } catch (SecurityException e) {
+            EventLog.writeEvent(0x534e4554, "150857259", -1, "Missing Permission");
+            throw e;
+        }
         int raf = RadioAccessFamily.RAF_UNKNOWN;
         if (phone == null) {
             return raf;
@@ -6468,8 +6485,7 @@
         final long identity = Binder.clearCallingIdentity();
         try {
             boolean isRttSupported = isRttSupported(subscriptionId);
-            boolean isUserRttSettingOn = Settings.Secure.getInt(
-                    mApp.getContentResolver(), Settings.Secure.RTT_CALLING_MODE, 0) != 0;
+            boolean isUserRttSettingOn = isUserRttSettingOn(subscriptionId);
             boolean shouldIgnoreUserRttSetting = mApp.getCarrierConfigForSubId(subscriptionId)
                     .getBoolean(CarrierConfigManager.KEY_IGNORE_RTT_MODE_SETTING_BOOL);
             return isRttSupported && (isUserRttSettingOn || shouldIgnoreUserRttSetting);
@@ -6478,6 +6494,21 @@
         }
     }
 
+    private boolean isUserRttSettingOn(int subscriptionId) {
+        int phoneId = SubscriptionManager.getPhoneId(subscriptionId);
+        if (!SubscriptionManager.isValidPhoneId(phoneId)) {
+            loge("phoneId " + phoneId + " is not valid.");
+            return false;
+        }
+        return Settings.Secure.getInt(
+                mApp.getContentResolver(),
+                Settings.Secure.RTT_CALLING_MODE + convertRttPhoneId(phoneId) , 0) != 0;
+    }
+
+    private static String convertRttPhoneId(int phoneId) {
+        return phoneId != 0 ? Integer.toString(phoneId) : "";
+    }
+
     @Deprecated
     @Override
     public String getDeviceId(String callingPackage) {
@@ -6631,6 +6662,13 @@
                     UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS)) {
                 setUserDataEnabled(subId, getDefaultDataEnabled());
                 setNetworkSelectionModeAutomatic(subId);
+                // Set preferred mobile network type to the best available
+
+                String defaultNetworkMode = TelephonyManager.getTelephonyProperty(
+                        mSubscriptionController.getPhoneId(subId),
+                        "ro.telephony.default_network", null);
+                int networkType = !TextUtils.isEmpty(defaultNetworkMode)
+                        ? Integer.parseInt(defaultNetworkMode) : Phone.PREFERRED_NT_MODE;
                 setPreferredNetworkType(subId, getDefaultNetworkType(subId));
                 setDataRoamingEnabled(subId, getDefaultDataRoamingEnabled(subId));
                 CarrierInfoManager.deleteAllCarrierKeysForImsiEncryption(mApp);
@@ -6811,6 +6849,13 @@
 
         final long identity = Binder.clearCallingIdentity();
         try {
+            // isActiveSubId requires READ_PHONE_STATE, which we already check for above
+            if (!mSubscriptionController.isActiveSubId(subId, callingPackage, callingFeatureId)) {
+                Rlog.d(LOG_TAG,
+                        "getServiceStateForSubscriber returning null for inactive subId=" + subId);
+                return null;
+            }
+
             final Phone phone = getPhone(subId);
             if (phone == null) {
                 return null;
@@ -7703,7 +7748,7 @@
     private boolean getDefaultDataRoamingEnabled(int subId) {
         final CarrierConfigManager configMgr = (CarrierConfigManager)
                 mApp.getSystemService(Context.CARRIER_CONFIG_SERVICE);
-        boolean isDataRoamingEnabled = TelephonyProperties.data_roaming().orElse(true);
+        boolean isDataRoamingEnabled = TelephonyProperties.data_roaming().orElse(false);
         isDataRoamingEnabled |= configMgr.getConfigForSubId(subId).getBoolean(
                 CarrierConfigManager.KEY_CARRIER_DEFAULT_DATA_ROAMING_ENABLED_BOOL);
         return isDataRoamingEnabled;
@@ -7866,6 +7911,31 @@
     }
 
     /**
+     * Start emergency callback mode for GsmCdmaPhone for testing.
+     */
+    @Override
+    public void startEmergencyCallbackMode() {
+        TelephonyPermissions.enforceShellOnly(Binder.getCallingUid(),
+                "startEmergencyCallbackMode");
+        enforceModifyPermission();
+        final long identity = Binder.clearCallingIdentity();
+        try {
+            for (Phone phone : PhoneFactory.getPhones()) {
+                Rlog.d(LOG_TAG, "startEmergencyCallbackMode phone type: " + phone.getPhoneType());
+                if (phone != null && ((phone.getPhoneType() == PHONE_TYPE_GSM)
+                        || (phone.getPhoneType() == PHONE_TYPE_CDMA))) {
+                    GsmCdmaPhone gsmCdmaPhone = (GsmCdmaPhone) phone;
+                    gsmCdmaPhone.obtainMessage(
+                            GsmCdmaPhone.EVENT_EMERGENCY_CALLBACK_MODE_ENTER).sendToTarget();
+                    Rlog.d(LOG_TAG, "startEmergencyCallbackMode: triggered");
+                }
+            }
+        } finally {
+            Binder.restoreCallingIdentity(identity);
+        }
+    }
+
+    /**
      * Update emergency number list for test mode.
      */
     @Override
@@ -8594,4 +8664,18 @@
     public boolean canConnectTo5GInDsdsMode() {
         return mApp.getResources().getBoolean(R.bool.config_5g_connection_in_dsds_mode);
     }
+
+    public void setTransmitPower(int key, int value) {
+        try {
+            Phone phone = PhoneFactory.getDefaultPhone();
+            if (phone == null) {
+                loge("[SW_SAR] error getting phone (null)");
+                return;
+            }
+            phone.getUnitTestMode();
+            phone.setTransmitPower(key, value);
+        } catch (IllegalStateException e) {
+            loge("[SW_SAR] error getting phone: " + e);
+        }
+    }
 }
diff --git a/src/com/android/phone/PhoneUtils.java b/src/com/android/phone/PhoneUtils.java
index c520063..b0778f8 100644
--- a/src/com/android/phone/PhoneUtils.java
+++ b/src/com/android/phone/PhoneUtils.java
@@ -22,6 +22,8 @@
 import android.content.ComponentName;
 import android.content.Context;
 import android.content.DialogInterface;
+import android.content.Intent;
+import android.content.res.Configuration;
 import android.content.res.Resources;
 import android.media.AudioAttributes;
 import android.media.AudioManager;
@@ -30,6 +32,9 @@
 import android.net.Uri;
 import android.os.Handler;
 import android.os.Message;
+import android.os.RemoteException;
+import android.os.ServiceManager;
+import android.os.SystemProperties;
 import android.os.PersistableBundle;
 import android.os.VibrationEffect;
 import android.os.Vibrator;
@@ -64,6 +69,8 @@
 import java.io.IOException;
 import java.util.List;
 
+import org.codeaurora.internal.IExtTelephony;
+
 /**
  * Misc utilities for the Phone app.
  */
@@ -96,6 +103,10 @@
      * the dialog theme correctly.
      */
     private static final int THEME = com.android.internal.R.style.Theme_DeviceDefault_Dialog_Alert;
+    /** Extra key to identify the service class voice or video */
+    public static final String SERVICE_CLASS = "service_class";
+
+    private static final int PRIMARY_STACK_MODEM_ID = 0;
 
     /** USSD information used to aggregate all USSD messages */
     private static StringBuilder sUssdMsg = new StringBuilder();
@@ -644,7 +655,6 @@
         return canceled;
     }
 
-
     //
     // Misc UI policy helper functions
     //
@@ -748,6 +758,11 @@
         return null;
     }
 
+    public static boolean isValidPhoneAccountHandle(PhoneAccountHandle phoneAccountHandle) {
+        return phoneAccountHandle != null && !TextUtils.isEmpty(phoneAccountHandle.getId())
+                && !phoneAccountHandle.getId().equals("null");
+    }
+
     /**
      * Determine if a given phone account corresponds to an active SIM
      *
@@ -828,4 +843,101 @@
             phone.setRadioPower(enabled);
         }
     }
+
+    private static IExtTelephony getIExtTelephony() {
+        return IExtTelephony.Stub.asInterface(ServiceManager.getService("qti.radio.extphone"));
+    }
+
+    public static boolean isLocalEmergencyNumber(String address) {
+        boolean result = false;
+        try {
+            result = getIExtTelephony().isLocalEmergencyNumber(address);
+        }catch (RemoteException ex) {
+            Log.e("TelephonyConnectionService", "Exception: " + ex);
+        } catch (NullPointerException ex) {
+            Log.e("TelephonyConnectionService", "Exception: " + ex);
+        }
+        return result;
+    }
+
+    public static boolean isPotentialLocalEmergencyNumber(String address) {
+        boolean result = false;
+        try {
+            result = getIExtTelephony().isPotentialLocalEmergencyNumber(address);
+        }catch (RemoteException ex) {
+            Log.e("TelephonyConnectionService", "Exception: " + ex);
+        } catch (NullPointerException ex) {
+            Log.e("TelephonyConnectionService", "Exception: " + ex);
+        }
+        return result;
+    }
+
+    public static boolean isEmergencyNumber(String address) {
+        boolean result = false;
+        try {
+            result = getIExtTelephony().isEmergencyNumber(address);
+        }catch (RemoteException ex) {
+            Log.e("TelephonyConnectionService", "Exception: " + ex);
+        } catch (NullPointerException ex) {
+            Log.e("TelephonyConnectionService", "Exception: " + ex);
+        }
+        return result;
+    }
+
+    public static boolean isDeviceInSingleStandBy() {
+        boolean result = false;
+        try {
+            result = getIExtTelephony().isDeviceInSingleStandby();
+        } catch (RemoteException ex) {
+            Log.e("TelephonyConnectionService", "Exception : " + ex);
+        } catch (NullPointerException ex) {
+            Log.e("TelephonyConnectionService", "Exception : " + ex);
+        }
+        return result;
+    }
+
+    public static int getPhoneIdForECall() {
+        int phoneId = 0;
+        try {
+            phoneId = getIExtTelephony().getPhoneIdForECall();
+        } catch (RemoteException ex) {
+            Log.e("TelephonyConnectionService", "Exceptions : " + ex);
+        } catch (NullPointerException ex) {
+            Log.e("TelephonyConnectionService", "Exception : " + ex);
+        }
+        return phoneId;
+    }
+
+    public static int getPrimaryStackPhoneId() {
+        String modemUuId = null;
+        int primayStackPhoneId = SubscriptionManager.INVALID_PHONE_INDEX;
+
+        for (Phone phone : PhoneFactory.getPhones()) {
+            if (phone == null) continue;
+
+            Log.d(LOG_TAG, "Logical Modem id: " + phone.getModemUuId()
+                    + " phoneId: " + phone.getPhoneId());
+            modemUuId = phone.getModemUuId();
+            if ((modemUuId == null) || (modemUuId.length() <= 0) ||
+                    modemUuId.isEmpty()) {
+                continue;
+            }
+            // Select the phone id based on modemUuid
+            // if modemUuid is 0 for any phone instance, primary stack is mapped
+            // to it so return the phone id as the primary stack phone id.
+            if (Integer.parseInt(modemUuId) == PRIMARY_STACK_MODEM_ID) {
+                primayStackPhoneId = phone.getPhoneId();
+                Log.d(LOG_TAG, "Primay Stack phone id: " + primayStackPhoneId + " selected");
+                break;
+            }
+        }
+
+        // If phone id is invalid return default phone id
+        if (primayStackPhoneId == SubscriptionManager.INVALID_PHONE_INDEX) {
+            Log.d(LOG_TAG, "Returning default phone id");
+            primayStackPhoneId = 0;
+        }
+
+        return primayStackPhoneId;
+    }
 }
diff --git a/src/com/android/phone/TelephonyShellCommand.java b/src/com/android/phone/TelephonyShellCommand.java
index 0348389..2255138 100644
--- a/src/com/android/phone/TelephonyShellCommand.java
+++ b/src/com/android/phone/TelephonyShellCommand.java
@@ -22,14 +22,16 @@
 import android.os.PersistableBundle;
 import android.os.Process;
 import android.os.RemoteException;
+import android.provider.BlockedNumberContract;
 import android.telephony.CarrierConfigManager;
-import android.telephony.SubscriptionInfo;
 import android.telephony.SubscriptionManager;
 import android.telephony.emergency.EmergencyNumber;
 import android.telephony.ims.feature.ImsFeature;
 import android.util.Log;
 
 import com.android.internal.telephony.ITelephony;
+import com.android.internal.telephony.Phone;
+import com.android.internal.telephony.PhoneFactory;
 import com.android.internal.telephony.emergency.EmergencyNumberTracker;
 import com.android.internal.telephony.util.TelephonyUtils;
 
@@ -55,7 +57,9 @@
 
     private static final String IMS_SUBCOMMAND = "ims";
     private static final String NUMBER_VERIFICATION_SUBCOMMAND = "numverify";
+    private static final String EMERGENCY_CALLBACK_MODE = "emergency-callback-mode";
     private static final String EMERGENCY_NUMBER_TEST_MODE = "emergency-number-test-mode";
+    private static final String END_BLOCK_SUPPRESSION = "end-block-suppression";
     private static final String CARRIER_CONFIG_SUBCOMMAND = "cc";
     private static final String DATA_TEST_MODE = "data";
     private static final String DATA_ENABLE = "enable";
@@ -82,6 +86,7 @@
 
     private SubscriptionManager mSubscriptionManager;
     private CarrierConfigManager mCarrierConfigManager;
+    private Context mContext;
 
     private enum CcType {
         BOOLEAN, DOUBLE, DOUBLE_ARRAY, INT, INT_ARRAY, LONG, LONG_ARRAY, STRING,
@@ -132,6 +137,7 @@
                 (CarrierConfigManager) context.getSystemService(Context.CARRIER_CONFIG_SERVICE);
         mSubscriptionManager = (SubscriptionManager)
                 context.getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE);
+        mContext = context;
     }
 
     @Override
@@ -146,6 +152,8 @@
             }
             case NUMBER_VERIFICATION_SUBCOMMAND:
                 return handleNumberVerificationCommand();
+            case EMERGENCY_CALLBACK_MODE:
+                return handleEmergencyCallbackModeCommand();
             case EMERGENCY_NUMBER_TEST_MODE:
                 return handleEmergencyNumberTestModeCommand();
             case CARRIER_CONFIG_SUBCOMMAND: {
@@ -153,6 +161,8 @@
             }
             case DATA_TEST_MODE:
                 return handleDataTestModeCommand();
+            case END_BLOCK_SUPPRESSION:
+                return handleEndBlockSuppressionCommand();
             default: {
                 return handleDefaultCommands(cmd);
             }
@@ -169,12 +179,15 @@
         pw.println("    IMS Commands.");
         pw.println("  emergency-number-test-mode");
         pw.println("    Emergency Number Test Mode Commands.");
+        pw.println("  end-block-suppression");
+        pw.println("    End Block Suppression command.");
         pw.println("  data");
         pw.println("    Data Test Mode Commands.");
         pw.println("  cc");
         pw.println("    Carrier Config Commands.");
         onHelpIms();
         onHelpEmergencyNumber();
+        onHelpEndBlockSupperssion();
         onHelpDataTestMode();
         onHelpCc();
     }
@@ -242,6 +255,13 @@
         pw.println("      -p: get the full emergency number list in the test mode.");
     }
 
+    private void onHelpEndBlockSupperssion() {
+        PrintWriter pw = getOutPrintWriter();
+        pw.println("End Block Suppression command:");
+        pw.println("  end-block-suppression: disable suppressing blocking by contact");
+        pw.println("                         with emergency services.");
+    }
+
     private void onHelpCc() {
         PrintWriter pw = getOutPrintWriter();
         pw.println("Carrier Config Commands:");
@@ -333,6 +353,19 @@
         return 0;
     }
 
+    private int handleEmergencyCallbackModeCommand() {
+        PrintWriter errPw = getErrPrintWriter();
+        try {
+            mInterface.startEmergencyCallbackMode();
+            Log.d(LOG_TAG, "handleEmergencyCallbackModeCommand: triggered");
+        } catch (RemoteException ex) {
+            Log.w(LOG_TAG, "emergency-callback-mode error: " + ex.getMessage());
+            errPw.println("Exception: " + ex.getMessage());
+            return -1;
+        }
+        return 0;
+    }
+
     private int handleEmergencyNumberTestModeCommand() {
         PrintWriter errPw = getErrPrintWriter();
         String opt = getNextOption();
@@ -723,17 +756,21 @@
         try {
             slotId = Integer.parseInt(slotString);
         } catch (NumberFormatException e) {
+            getErrPrintWriter().println(tag + slotString + " is not a valid number for SLOT_ID.");
+            return SubscriptionManager.INVALID_SUBSCRIPTION_ID;
+        }
+
+        if (!SubscriptionManager.isValidPhoneId(slotId)) {
             getErrPrintWriter().println(tag + slotString + " is not a valid SLOT_ID.");
             return SubscriptionManager.INVALID_SUBSCRIPTION_ID;
         }
 
-        SubscriptionInfo subInfo =
-                mSubscriptionManager.getActiveSubscriptionInfoForSimSlotIndex(slotId);
-        if (subInfo == null) {
+        Phone phone = PhoneFactory.getPhone(slotId);
+        if (phone == null) {
             getErrPrintWriter().println(tag + "No subscription found in slot " + slotId + ".");
             return SubscriptionManager.INVALID_SUBSCRIPTION_ID;
         }
-        return subInfo.getSubscriptionId();
+        return phone.getSubId();
     }
 
     private boolean checkShellUid() {
@@ -1169,4 +1206,15 @@
         }
         return bundle;
     }
+
+    private int handleEndBlockSuppressionCommand() {
+        if (!checkShellUid()) {
+            return -1;
+        }
+
+        if (BlockedNumberContract.SystemContract.getBlockSuppressionStatus(mContext).isSuppressed) {
+            BlockedNumberContract.SystemContract.endBlockSuppression(mContext);
+        }
+        return 0;
+    }
 }
diff --git a/src/com/android/phone/otasp/OtaspActivationService.java b/src/com/android/phone/otasp/OtaspActivationService.java
index 6ed2ea8..72bf249 100644
--- a/src/com/android/phone/otasp/OtaspActivationService.java
+++ b/src/com/android/phone/otasp/OtaspActivationService.java
@@ -31,6 +31,7 @@
 import com.android.internal.telephony.GsmCdmaConnection;
 import com.android.internal.telephony.Phone;
 import com.android.internal.telephony.PhoneConstants;
+import com.android.internal.telephony.ServiceStateTracker;
 import com.android.phone.PhoneGlobals;
 import com.android.phone.PhoneUtils;
 
@@ -77,6 +78,11 @@
     public void onCreate() {
         logd("otasp service onCreate");
         mPhone = PhoneGlobals.getPhone();
+        ServiceStateTracker sst = mPhone.getServiceStateTracker();
+        if (sst != null && sst.getOtasp() != TelephonyManager.OTASP_NEEDED) {
+            logd("OTASP is not needed.");
+            return;
+        }
         if ((sIccId == null) || !sIccId.equals(mPhone.getIccSerialNumber())) {
             // reset to allow activation retry on new sim
             sIccId = mPhone.getIccSerialNumber();
diff --git a/src/com/android/phone/settings/AccessibilitySettingsFragment.java b/src/com/android/phone/settings/AccessibilitySettingsFragment.java
index 37212cf..ad3f133 100644
--- a/src/com/android/phone/settings/AccessibilitySettingsFragment.java
+++ b/src/com/android/phone/settings/AccessibilitySettingsFragment.java
@@ -122,8 +122,12 @@
                     (TelephonyManager) mContext.getSystemService(Context.TELEPHONY_SERVICE);
             boolean isRoaming = tm.isNetworkRoaming(
                     SubscriptionManager.getDefaultVoiceSubscriptionId());
+            boolean alwaysAllowWhileRoaming = isCarrierAllowRttWhenRoaming(
+                    SubscriptionManager.getDefaultVoiceSubscriptionId());
 
-            boolean shouldDisableBecauseRoamingOffWfc = isRoaming && !isOnWfc();
+            boolean shouldDisableBecauseRoamingOffWfc =
+                    (isRoaming && !isOnWfc()) && !alwaysAllowWhileRoaming;
+
             if (shouldDisableBecauseRoamingOffWfc) {
                 mButtonRtt.setSummary(TextUtils.concat(getText(R.string.rtt_mode_summary), "\n",
                         getText(R.string.no_rtt_when_roaming)));
@@ -277,4 +281,13 @@
         return configManager.getConfig().getBoolean(
                 CarrierConfigManager.KEY_TTY_SUPPORTED_BOOL);
     }
+
+    /**
+     * Determines from carrier config whether to always allow RTT while roaming.
+     */
+    private boolean isCarrierAllowRttWhenRoaming(int subId) {
+        PersistableBundle b =
+                PhoneGlobals.getInstance().getCarrierConfigForSubId(subId);
+        return b.getBoolean(CarrierConfigManager.KEY_RTT_SUPPORTED_WHILE_ROAMING_BOOL);
+    }
 }
diff --git a/src/com/android/phone/settings/PhoneAccountSettingsFragment.java b/src/com/android/phone/settings/PhoneAccountSettingsFragment.java
index 3811a77..58bafa7 100644
--- a/src/com/android/phone/settings/PhoneAccountSettingsFragment.java
+++ b/src/com/android/phone/settings/PhoneAccountSettingsFragment.java
@@ -8,12 +8,15 @@
 import android.graphics.drawable.Icon;
 import android.net.sip.SipManager;
 import android.os.Bundle;
+import android.os.RemoteException;
+import android.os.ServiceManager;
 import android.os.UserManager;
 import android.preference.ListPreference;
 import android.preference.Preference;
 import android.preference.PreferenceCategory;
 import android.preference.PreferenceFragment;
 import android.preference.SwitchPreference;
+import android.provider.Settings;
 import android.telecom.PhoneAccount;
 import android.telecom.PhoneAccountHandle;
 import android.telecom.TelecomManager;
@@ -32,6 +35,8 @@
 import com.android.services.telephony.sip.SipPreferences;
 import com.android.services.telephony.sip.SipUtil;
 
+import org.codeaurora.internal.IExtTelephony;
+
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Comparator;
@@ -48,6 +53,8 @@
 
     private static final String ALL_CALLING_ACCOUNTS_KEY = "phone_accounts_all_calling_accounts";
 
+    private static final String BUTTON_SMART_DIVERT_KEY = "button_smart_divert";
+
     private static final String SIP_SETTINGS_CATEGORY_PREF_KEY =
             "phone_accounts_sip_settings_category_key";
     private static final String USE_SIP_PREF_KEY = "use_sip_calling_options_key";
@@ -62,6 +69,9 @@
     private static final String LEGACY_ACTION_CONFIGURE_PHONE_ACCOUNT =
             "android.telecom.action.CONNECTION_SERVICE_CONFIGURE";
 
+    private static final String BUTTON_VIBRATING_KEY =
+            "button_vibrating_for_outgoing_call_accepted_key";
+
     /**
      * Value to start ordering of phone accounts relative to other preferences. By setting this
      * value on the phone account listings, we ensure that anything that is ordered before
@@ -72,6 +82,8 @@
 
     private static final String LOG_TAG = PhoneAccountSettingsFragment.class.getSimpleName();
 
+    private boolean isXdivertAvailable = false;
+
     private TelecomManager mTelecomManager;
     private TelephonyManager mTelephonyManager;
     private SubscriptionManager mSubscriptionManager;
@@ -80,8 +92,10 @@
 
     private AccountSelectionPreference mDefaultOutgoingAccount;
     private Preference mAllCallingAccounts;
+    private Preference mSmartDivertPref;
 
     private PreferenceCategory mMakeAndReceiveCallsCategory;
+    private SwitchPreference mButtonVibratingForMoCallAccepted;
     private boolean mMakeAndReceiveCallsCategoryPresent;
 
     private ListPreference mUseSipCalling;
@@ -104,6 +118,20 @@
         mTelecomManager = getActivity().getSystemService(TelecomManager.class);
         mTelephonyManager = TelephonyManager.from(getActivity());
         mSubscriptionManager = SubscriptionManager.from(getActivity());
+
+        IExtTelephony extTelephony =
+                IExtTelephony.Stub.asInterface(ServiceManager.getService("qti.radio.extphone"));
+
+        try {
+            if (extTelephony != null) {
+                isXdivertAvailable = extTelephony.isVendorApkAvailable("com.qti.xdivert");
+            } else {
+                Log.d(LOG_TAG, "xdivert not available");
+            }
+        } catch (RemoteException e) {
+            e.printStackTrace();
+        }
+
     }
 
     @Override
@@ -146,9 +174,12 @@
         mDefaultOutgoingAccount = (AccountSelectionPreference)
                 getPreferenceScreen().findPreference(DEFAULT_OUTGOING_ACCOUNT_KEY);
         mAllCallingAccounts = getPreferenceScreen().findPreference(ALL_CALLING_ACCOUNTS_KEY);
+        mSmartDivertPref = getPreferenceScreen().findPreference(BUTTON_SMART_DIVERT_KEY);
 
         mMakeAndReceiveCallsCategory = (PreferenceCategory) getPreferenceScreen().findPreference(
                 MAKE_AND_RECEIVE_CALLS_CATEGORY_KEY);
+        mButtonVibratingForMoCallAccepted = (SwitchPreference)
+                mMakeAndReceiveCallsCategory.findPreference(BUTTON_VIBRATING_KEY);
         mMakeAndReceiveCallsCategoryPresent = false;
 
         updateAccounts();
@@ -176,6 +207,16 @@
             mUseSipCalling.setValueIndex(optionsValueIndex);
             mUseSipCalling.setSummary(mUseSipCalling.getEntry());
 
+            List<PhoneAccountHandle> allSims = getCallingAccounts(true, true);
+            if (needRemoveSIPCallingMenu(allSims)) {
+                Log.i(LOG_TAG, "removing SIP calling menu");
+                PreferenceCategory SIPSettings =
+                        (PreferenceCategory)
+                                getPreferenceScreen()
+                                        .findPreference(SIP_SETTINGS_CATEGORY_PREF_KEY);
+                SIPSettings.removePreference(mUseSipCalling);
+            }
+
             mSipReceiveCallsPreference = (SwitchPreference)
                     getPreferenceScreen().findPreference(SIP_RECEIVE_CALLS_PREF_KEY);
             mSipReceiveCallsPreference.setEnabled(SipUtil.isPhoneIdle(getActivity()));
@@ -221,6 +262,11 @@
                 }
             }).start();
             return true;
+        } else if (pref == mButtonVibratingForMoCallAccepted) {
+            Settings.Global.putInt(getActivity().getContentResolver(),
+                    android.provider.Settings.Global.VIBRATING_FOR_OUTGOING_CALL_ACCEPTED,
+                    mButtonVibratingForMoCallAccepted.isChecked() ? 0 : 1);
+            return true;
         }
         return false;
     }
@@ -433,8 +479,15 @@
                 } else {
                     mAccountList.removePreference(mAllCallingAccounts);
                 }
+                if (isXdivertAvailable) {
+                    if (mSmartDivertPref != null) {
+                        Log.d(LOG_TAG, "Add smart divert preference");
+                        mAccountList.addPreference(mSmartDivertPref);
+                    }
+                }
             } else {
                 getPreferenceScreen().removePreference(mAccountList);
+                mMakeAndReceiveCallsCategory.removePreference(mDefaultOutgoingAccount);
             }
         }
     }
@@ -521,6 +574,30 @@
         return userManager.isPrimaryUser();
     }
 
+    private boolean needRemoveSIPCallingMenu(List<PhoneAccountHandle> simAccounts) {
+        if (mTelephonyManager == null) {
+            return false;
+        }
+        boolean needRemoveSIP = false;
+        for (PhoneAccountHandle handle : simAccounts) {
+            PhoneAccount account = mTelecomManager.getPhoneAccount(handle);
+            if (account == null) {
+                continue;
+            }
+            String simOperator =
+                    mTelephonyManager.getSimOperatorNumeric(
+                            mTelephonyManager.getSubIdForPhoneAccount(account));
+            if (simOperator == null || simOperator.length() < 5) {
+                continue;
+            }
+            String numeric = simOperator.substring(0, 5);
+            if ("23415".equals(numeric)) {
+                needRemoveSIP = true;
+            }
+        }
+        return needRemoveSIP;
+    }
+
     private void updateMakeCallsOptions() {
         if (mMakeAndReceiveCallsCategory == null) {
             return;
@@ -536,6 +613,17 @@
                     getPreferenceScreen().findPreference(SMART_FORWARDING_CONFIGURATION_PREF_KEY));
         }
 
+        SwitchPreference vibratingButton = (SwitchPreference)
+                mMakeAndReceiveCallsCategory.findPreference(BUTTON_VIBRATING_KEY);
+        if (vibratingButton != null) {
+            mMakeAndReceiveCallsCategoryPresent = true;
+            final int vibrating = Settings.Global.getInt(
+                    getActivity().getContentResolver(),
+                    Settings.Global.VIBRATING_FOR_OUTGOING_CALL_ACCEPTED, 1);
+            vibratingButton.setChecked(vibrating != 0);
+            vibratingButton.setOnPreferenceChangeListener(this);
+        }
+
         if (!mMakeAndReceiveCallsCategoryPresent) {
             getPreferenceScreen().removePreference(mMakeAndReceiveCallsCategory);
         }
diff --git a/src/com/android/phone/settings/RadioInfo.java b/src/com/android/phone/settings/RadioInfo.java
index 31b7a9e..568adb8 100644
--- a/src/com/android/phone/settings/RadioInfo.java
+++ b/src/com/android/phone/settings/RadioInfo.java
@@ -40,6 +40,7 @@
 import android.os.Message;
 import android.os.SystemProperties;
 import android.provider.Settings;
+import android.telephony.AccessNetworkConstants;
 import android.telephony.CarrierConfigManager;
 import android.telephony.CellIdentityCdma;
 import android.telephony.CellIdentityGsm;
@@ -55,6 +56,8 @@
 import android.telephony.CellSignalStrengthGsm;
 import android.telephony.CellSignalStrengthLte;
 import android.telephony.CellSignalStrengthWcdma;
+import android.telephony.DataSpecificRegistrationInfo;
+import android.telephony.NetworkRegistrationInfo;
 import android.telephony.PhoneStateListener;
 import android.telephony.PhysicalChannelConfig;
 import android.telephony.PreciseCallState;
@@ -239,6 +242,11 @@
     private TextView mDnsCheckState;
     private TextView mDownlinkKbps;
     private TextView mUplinkKbps;
+    private TextView mEndcAvailable;
+    private TextView mDcnrRestricted;
+    private TextView mNrAvailable;
+    private TextView mNrState;
+    private TextView mNrFrequency;
     private EditText mSmsc;
     private Switch mRadioPowerOnSwitch;
     private Button mCellInfoRefreshRateButton;
@@ -356,6 +364,7 @@
             updateRadioPowerState();
             updateNetworkType();
             updateImsProvisionedState();
+            updateNrStats(serviceState);
         }
 
     }
@@ -500,9 +509,28 @@
         mPingHostnameV4 = (TextView) findViewById(R.id.pingHostnameV4);
         mPingHostnameV6 = (TextView) findViewById(R.id.pingHostnameV6);
         mHttpClientTest = (TextView) findViewById(R.id.httpClientTest);
-
+        mEndcAvailable = (TextView) findViewById(R.id.endc_available);
+        mDcnrRestricted = (TextView) findViewById(R.id.dcnr_restricted);
+        mNrAvailable = (TextView) findViewById(R.id.nr_available);
+        mNrState = (TextView) findViewById(R.id.nr_state);
+        mNrFrequency = (TextView) findViewById(R.id.nr_frequency);
         mPhyChanConfig = (TextView) findViewById(R.id.phy_chan_config);
 
+        // hide 5G stats on devices that don't support 5G
+        if ((mTelephonyManager.getSupportedRadioAccessFamily()
+                & TelephonyManager.NETWORK_TYPE_BITMASK_NR) == 0) {
+            ((TextView) findViewById(R.id.endc_available_label)).setVisibility(View.GONE);
+            mEndcAvailable.setVisibility(View.GONE);
+            ((TextView) findViewById(R.id.dcnr_restricted_label)).setVisibility(View.GONE);
+            mDcnrRestricted.setVisibility(View.GONE);
+            ((TextView) findViewById(R.id.nr_available_label)).setVisibility(View.GONE);
+            mNrAvailable.setVisibility(View.GONE);
+            ((TextView) findViewById(R.id.nr_state_label)).setVisibility(View.GONE);
+            mNrState.setVisibility(View.GONE);
+            ((TextView) findViewById(R.id.nr_frequency_label)).setVisibility(View.GONE);
+            mNrFrequency.setVisibility(View.GONE);
+        }
+
         mPreferredNetworkType = (Spinner) findViewById(R.id.preferredNetworkType);
         ArrayAdapter<String> mPreferredNetworkTypeAdapter = new ArrayAdapter<String>(this,
                 android.R.layout.simple_spinner_item, PREFERRED_NETWORK_LABELS);
@@ -624,6 +652,7 @@
         updateProperties();
         updateDnsCheckState();
         updateNetworkType();
+        updateNrStats(null);
 
         updateLocation(mCellLocationResult);
         updateCellInfo(mCellInfoResult);
@@ -1131,6 +1160,32 @@
         }
     }
 
+    private void updateNrStats(ServiceState serviceState) {
+        if ((mTelephonyManager.getSupportedRadioAccessFamily()
+                & TelephonyManager.NETWORK_TYPE_BITMASK_NR) == 0) {
+            return;
+        }
+
+        ServiceState ss = serviceState;
+        if (ss == null && mPhone != null) {
+            ss = mPhone.getServiceState();
+        }
+        if (ss != null) {
+            NetworkRegistrationInfo nri = ss.getNetworkRegistrationInfo(
+                    NetworkRegistrationInfo.DOMAIN_PS, AccessNetworkConstants.TRANSPORT_TYPE_WWAN);
+            if (nri != null) {
+                DataSpecificRegistrationInfo dsri = nri.getDataSpecificInfo();
+                if (dsri != null) {
+                    mEndcAvailable.setText(dsri.isEnDcAvailable ? "True" : "False");
+                    mDcnrRestricted.setText(dsri.isDcNrRestricted ? "True" : "False");
+                    mNrAvailable.setText(dsri.isNrAvailable ? "True" : "False");
+                }
+            }
+            mNrState.setText(NetworkRegistrationInfo.nrStateToString(ss.getNrState()));
+            mNrFrequency.setText(ServiceState.frequencyRangeToString(ss.getNrFrequencyRange()));
+        }
+    }
+
     private void updateProperties() {
         String s;
         Resources r = getResources();
diff --git a/src/com/android/phone/settings/fdn/EditFdnContactScreen.java b/src/com/android/phone/settings/fdn/EditFdnContactScreen.java
index 140cc74..8614648 100644
--- a/src/com/android/phone/settings/fdn/EditFdnContactScreen.java
+++ b/src/com/android/phone/settings/fdn/EditFdnContactScreen.java
@@ -97,8 +97,7 @@
     /** static intent to invoke phone number picker */
     private static final Intent CONTACT_IMPORT_INTENT;
     static {
-        CONTACT_IMPORT_INTENT = new Intent(Intent.ACTION_GET_CONTENT);
-        CONTACT_IMPORT_INTENT.setType(CommonDataKinds.Phone.CONTENT_ITEM_TYPE);
+        CONTACT_IMPORT_INTENT = new Intent(Intent.ACTION_PICK, CommonDataKinds.Phone.CONTENT_URI);
     }
     /** flag to track saving state */
     private boolean mDataBusy;
diff --git a/src/com/android/phone/vvm/CarrierVvmPackageInstalledReceiver.java b/src/com/android/phone/vvm/CarrierVvmPackageInstalledReceiver.java
index ec0d3f6..791a017 100644
--- a/src/com/android/phone/vvm/CarrierVvmPackageInstalledReceiver.java
+++ b/src/com/android/phone/vvm/CarrierVvmPackageInstalledReceiver.java
@@ -56,8 +56,13 @@
     private static final String ACTION_CARRIER_VVM_PACKAGE_INSTALLED =
             "com.android.internal.telephony.CARRIER_VVM_PACKAGE_INSTALLED";
 
+    private static final String ACTION_CARRIER_VVM_PACKAGE_REMOVED =
+            "com.android.internal.telephony.CARRIER_VVM_PACKAGE_REMOVED";
+
     public void register(Context context) {
-        IntentFilter intentFilter = new IntentFilter(Intent.ACTION_PACKAGE_ADDED);
+        IntentFilter intentFilter = new IntentFilter();
+        intentFilter.addAction(Intent.ACTION_PACKAGE_ADDED);
+        intentFilter.addAction(Intent.ACTION_PACKAGE_REMOVED);
         intentFilter.addDataScheme("package");
         context.registerReceiver(this, intentFilter);
     }
@@ -98,10 +103,19 @@
             }
 
             VvmLog.i(TAG, "sending broadcast to " + vvmPackage);
-            Intent broadcast = new Intent(ACTION_CARRIER_VVM_PACKAGE_INSTALLED);
-            broadcast.putExtra(Intent.EXTRA_PACKAGE_NAME, packageName);
-            broadcast.setPackage(vvmPackage);
-            context.sendBroadcast(broadcast);
+            if (Intent.ACTION_PACKAGE_ADDED.equals(intent.getAction())) {
+                Intent broadcast = new Intent(ACTION_CARRIER_VVM_PACKAGE_INSTALLED);
+                broadcast.putExtra(Intent.EXTRA_PACKAGE_NAME, packageName);
+                broadcast.setPackage(vvmPackage);
+                VvmLog.i(TAG, "sending install broadcast to " + vvmPackage);
+                context.sendBroadcast(broadcast);
+            } else if (Intent.ACTION_PACKAGE_REMOVED.equals(intent.getAction())) {
+                Intent uninstallbroadcast = new Intent(ACTION_CARRIER_VVM_PACKAGE_REMOVED);
+                uninstallbroadcast.putExtra(Intent.EXTRA_PACKAGE_NAME, packageName);
+                uninstallbroadcast.setPackage(vvmPackage);
+                VvmLog.i(TAG, "sending uninstall broadcast to " + vvmPackage);
+                context.sendBroadcast(uninstallbroadcast);
+            }
         }
     }
 
diff --git a/src/com/android/phone/vvm/VvmSimStateTracker.java b/src/com/android/phone/vvm/VvmSimStateTracker.java
index c648d9c..db57e5b 100644
--- a/src/com/android/phone/vvm/VvmSimStateTracker.java
+++ b/src/com/android/phone/vvm/VvmSimStateTracker.java
@@ -133,7 +133,8 @@
                 int subId = intent.getIntExtra(PhoneConstants.SUBSCRIPTION_KEY,
                         SubscriptionManager.INVALID_SUBSCRIPTION_ID);
 
-                if (!SubscriptionManager.isValidSubscriptionId(subId)) {
+                SubscriptionManager subscriptionManager = SubscriptionManager.from(context);
+                if (!subscriptionManager.isActiveSubId(subId)) {
                     VvmLog.i(TAG, "Received SIM change for invalid subscription id.");
                     checkRemovedSim(context);
                     return;
@@ -236,6 +237,10 @@
     }
 
     private void listenToAccount(Context context, PhoneAccountHandle phoneAccountHandle) {
+        if (sListeners.get(phoneAccountHandle) != null) {
+            VvmLog.i(TAG, "Listener is registered for " + phoneAccountHandle);
+            return;
+        }
         ServiceStateListener listener = new ServiceStateListener(context, phoneAccountHandle);
         listener.listen();
         sListeners.put(phoneAccountHandle, listener);
diff --git a/src/com/android/services/telephony/AnswerAndReleaseHandler.java b/src/com/android/services/telephony/AnswerAndReleaseHandler.java
new file mode 100644
index 0000000..f3e7498
--- /dev/null
+++ b/src/com/android/services/telephony/AnswerAndReleaseHandler.java
@@ -0,0 +1,238 @@
+/*
+ * Copyright (c) 2020, 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 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.
+ */
+
+package com.android.services.telephony;
+
+import android.os.Bundle;
+import android.telecom.Conference;
+import android.telecom.Connection;
+import android.telecom.StatusHints;
+import android.telecom.VideoProfile;
+
+import com.android.ims.internal.ConferenceParticipant;
+
+import java.util.Collection;
+import java.util.List;
+
+import java.util.concurrent.CopyOnWriteArrayList;
+
+public class AnswerAndReleaseHandler extends TelephonyConnection.TelephonyConnectionListener {
+
+    private List<Connection> mConnectionList = new CopyOnWriteArrayList<>();
+    private List<Conference> mConferenceList = new CopyOnWriteArrayList<>();
+    private int mVideoState;
+    private Connection mIncomingConnection = null;
+    private List<Listener> mListeners = new CopyOnWriteArrayList<>();
+
+    public AnswerAndReleaseHandler(Connection incomingConnection, int answerWithVideoState) {
+        mVideoState = answerWithVideoState;
+        mIncomingConnection = incomingConnection;
+    }
+
+    public interface Listener {
+        void onAnswered();
+    }
+
+    public static class ListenerBase implements Listener {
+        @Override
+        public void onAnswered() {}
+    }
+
+    public void addListener(Listener listener) {
+        synchronized (mListeners) {
+            mListeners.add(listener);
+        }
+    }
+
+    public void removeListener(Listener listener) {
+        synchronized (mListeners) {
+            mListeners.remove(listener);
+        }
+    }
+
+    private void notifyOnAnswered() {
+        synchronized (mListeners) {
+            for (Listener l : mListeners) {
+                l.onAnswered();
+            }
+        }
+    }
+
+    private final TelephonyConferenceBase.TelephonyConferenceListener mTelephonyConferenceListener =
+            new TelephonyConferenceBase.TelephonyConferenceListener() {
+        @Override
+        public void onDestroyed(Conference conference) {
+            removeConference(conference);
+            maybeAnswer();
+        }
+    };
+
+    public void checkAndAnswer(Collection<Connection> allConnections,
+            Collection<Conference> allConferences) {
+        for (Connection current : allConnections) {
+            // Connection list could contain other types like conference
+            // participant connections which need to be ignored
+            if (!(current instanceof TelephonyConnection)) {
+                continue;
+            }
+            int state = current.getState();
+            if (state == Connection.STATE_RINGING ||
+                    state == Connection.STATE_DISCONNECTED) {
+                continue;
+            }
+            boolean containsConnection = false;
+            synchronized(mConnectionList) {
+                containsConnection = mConnectionList.contains(current);
+            }
+            if (!containsConnection) {
+                addConnection(current);
+                TelephonyConnection conn = (TelephonyConnection) current;
+                conn.addTelephonyConnectionListener(this);
+                conn.onDisconnect();
+            }
+        }
+        for (Conference current : allConferences) {
+            if (!(current instanceof TelephonyConferenceBase)) {
+                continue;
+            }
+            if (current.getState() == Connection.STATE_DISCONNECTED) {
+                continue;
+            }
+            boolean containsConference = false;
+            synchronized(mConferenceList) {
+                containsConference = mConferenceList.contains(current);
+            }
+            if (!containsConference) {
+                addConference(current);
+                TelephonyConferenceBase conf = (TelephonyConferenceBase) current;
+                conf.addTelephonyConferenceListener(mTelephonyConferenceListener);
+                current.onDisconnect();
+            }
+        }
+        maybeAnswer();
+    }
+
+    private void maybeAnswer() {
+        boolean isConnectionListEmpty = false;
+        synchronized(mConnectionList) {
+            isConnectionListEmpty = mConnectionList.isEmpty();
+        }
+        boolean isConferenceListEmpty = false;
+        synchronized(mConferenceList) {
+            isConferenceListEmpty = mConferenceList.isEmpty();
+        }
+        if (isConnectionListEmpty && isConferenceListEmpty) {
+            if (mIncomingConnection.getState() == Connection.STATE_RINGING) {
+                mIncomingConnection.onAnswer(mVideoState);
+            }
+            notifyOnAnswered();
+        }
+    }
+
+    private void addConnection(Connection conn) {
+        synchronized(mConnectionList) {
+            mConnectionList.add(conn);
+        }
+    }
+
+    private void removeConnection(Connection conn) {
+        synchronized(mConnectionList) {
+            mConnectionList.remove(conn);
+        }
+    }
+
+    private void addConference(Conference conf) {
+        synchronized(mConferenceList) {
+            mConferenceList.add(conf);
+        }
+    }
+
+    private void removeConference(Conference conf) {
+        synchronized(mConferenceList) {
+            mConferenceList.remove(conf);
+        }
+    }
+
+    @Override
+    public void onOriginalConnectionConfigured(TelephonyConnection c) {}
+
+    @Override
+    public void onOriginalConnectionRetry(TelephonyConnection c, boolean isPermanentFailure) {}
+
+    @Override
+    public void onConferenceParticipantsChanged(Connection c,
+            List<ConferenceParticipant> participants) {}
+
+    @Override
+    public void onConferenceStarted() {}
+
+    @Override
+    public void onConferenceSupportedChanged(Connection c, boolean isConferenceSupported) {}
+
+    @Override
+    public void onConnectionCapabilitiesChanged(Connection c, int connectionCapabilities) {}
+
+    @Override
+    public void onConnectionEvent(Connection c, String event, Bundle extras) {}
+
+    @Override
+    public void onConnectionPropertiesChanged(Connection c, int connectionProperties) {}
+
+    @Override
+    public void onExtrasChanged(Connection c, Bundle extras) {}
+
+    @Override
+    public void onExtrasRemoved(Connection c, List<String> keys) {}
+
+    @Override
+    public void onStateChanged(android.telecom.Connection c, int state) {}
+
+    @Override
+    public void onStatusHintsChanged(Connection c, StatusHints statusHints) {}
+
+    @Override
+    public void onDestroyed(Connection c) {}
+
+    @Override
+    public void onDisconnected(android.telecom.Connection c,
+            android.telecom.DisconnectCause disconnectCause) {
+        removeConnection(c);
+        maybeAnswer();
+    }
+
+    @Override
+    public void onVideoProviderChanged(android.telecom.Connection c,
+            Connection.VideoProvider videoProvider) {}
+
+    @Override
+    public void onVideoStateChanged(android.telecom.Connection c, int videoState) {}
+
+    @Override
+    public void onRingbackRequested(Connection c, boolean ringback) {}
+}
diff --git a/src/com/android/services/telephony/CdmaConnection.java b/src/com/android/services/telephony/CdmaConnection.java
index 90e7663..2696941 100644
--- a/src/com/android/services/telephony/CdmaConnection.java
+++ b/src/com/android/services/telephony/CdmaConnection.java
@@ -26,6 +26,7 @@
 import com.android.internal.telephony.CallStateException;
 import com.android.internal.telephony.Connection;
 import com.android.internal.telephony.Phone;
+import com.android.phone.PhoneUtils;
 import com.android.internal.telephony.imsphone.ImsPhoneConnection;
 import com.android.phone.settings.SettingsConstants;
 
@@ -283,9 +284,8 @@
     }
 
     private boolean isEmergency() {
-        Phone phone = getPhone();
-        return phone != null && getAddress() != null && PhoneNumberUtils.isLocalEmergencyNumber(
-                phone.getContext(), getAddress().getSchemeSpecificPart());
+        return getAddress() != null && PhoneUtils.isLocalEmergencyNumber(
+                getAddress().getSchemeSpecificPart());
     }
 
     /**
diff --git a/src/com/android/services/telephony/ConferenceParticipantConnection.java b/src/com/android/services/telephony/ConferenceParticipantConnection.java
old mode 100644
new mode 100755
index b7ecd48..6526495
--- a/src/com/android/services/telephony/ConferenceParticipantConnection.java
+++ b/src/com/android/services/telephony/ConferenceParticipantConnection.java
@@ -59,7 +59,8 @@
     public ConferenceParticipantConnection(
             com.android.internal.telephony.Connection parentConnection,
             ConferenceParticipant participant,
-            boolean isRemotelyHosted) {
+            boolean isRemotelyHosted,
+            boolean isParticipantHost) {
 
         mParentConnection = parentConnection;
 
@@ -79,7 +80,8 @@
         mUserEntity = participant.getHandle();
         mEndpoint = participant.getEndpoint();
 
-        setCapabilitiesAndProperties(isRemotelyHosted);
+        setCapabilitiesAndProperties(isRemotelyHosted, isParticipantHost);
+        updateState(participant.getState());
     }
 
     /**
@@ -157,13 +159,18 @@
      * @param isRemotelyHosted {@code true} if this participant is part of a conference hosted
      *                         hosted on a remote device, {@code false} otherwise.
      */
-    private void setCapabilitiesAndProperties(boolean isRemotelyHosted) {
+    private void setCapabilitiesAndProperties(boolean isRemotelyHosted,
+            boolean isParticipantHost) {
         int capabilities = CAPABILITY_DISCONNECT_FROM_CONFERENCE;
         setConnectionCapabilities(capabilities);
 
         if (isRemotelyHosted) {
             setConnectionProperties(PROPERTY_REMOTELY_HOSTED);
         }
+
+        if (isParticipantHost) {
+            setConnectionProperties(PROPERTY_IS_PARTICIPANT_HOST);
+        }
     }
 
     /**
@@ -189,7 +196,11 @@
         // The SubscriptionInfo reports ISO country codes in lower case.  Convert to upper case,
         // since ultimately we use this ISO when formatting the CEP phone number, and the phone
         // number formatting library expects uppercase ISO country codes.
-        return subInfo.getCountryIso().toUpperCase();
+        final String country = subInfo.getCountryIso();
+        if (country == null) {
+            return null;
+        }
+        return country.toUpperCase();
     }
 
     /**
diff --git a/src/com/android/services/telephony/DisconnectCauseUtil.java b/src/com/android/services/telephony/DisconnectCauseUtil.java
index f243462..4ff7d58 100644
--- a/src/com/android/services/telephony/DisconnectCauseUtil.java
+++ b/src/com/android/services/telephony/DisconnectCauseUtil.java
@@ -31,8 +31,13 @@
 import com.android.phone.PhoneGlobals;
 import com.android.phone.common.R;
 
+import com.android.internal.telephony.gsm.SuppServiceNotification;
+
 public class DisconnectCauseUtil {
 
+    public static int mNotificationCode = 0xFF;
+    public static int mNotificationType = 0xFF;
+
    /**
     * Converts from a disconnect code in {@link android.telephony.DisconnectCause} into a more
     * generic {@link android.telecom.DisconnectCause} object, possibly populated with a localized
@@ -45,6 +50,13 @@
                 CallFailCause.NOT_VALID, null /* reason */);
     }
 
+    public static DisconnectCause toTelecomDisconnectCause(int telephonyDisconnectCause,
+            String reason, int type, int code, int phoneId) {
+        mNotificationCode = code;
+        mNotificationType = type;
+        return toTelecomDisconnectCause(telephonyDisconnectCause, reason, phoneId);
+    }
+
    /**
     * Converts from a disconnect code in {@link android.telephony.DisconnectCause} into a more
     * generic {@link android.telecom.DisconnectCause}.object, possibly populated with a localized
@@ -209,6 +221,48 @@
             case android.telephony.DisconnectCause.EXITED_ECM:
             case android.telephony.DisconnectCause.MMI:
             case android.telephony.DisconnectCause.IMS_MERGED_SUCCESSFULLY:
+            case android.telephony.DisconnectCause.NO_CIRCUIT_AVAIL:
+            case android.telephony.DisconnectCause.NO_ROUTE_TO_DESTINATION:
+            case android.telephony.DisconnectCause.OPERATOR_DETERMINED_BARRING:
+            case android.telephony.DisconnectCause.CALL_FAIL_NO_USER_RESPONDING:
+            case android.telephony.DisconnectCause.CALL_FAIL_NO_ANSWER_FROM_USER:
+            case android.telephony.DisconnectCause.CALL_FAIL_DESTINATION_OUT_OF_ORDER:
+            case android.telephony.DisconnectCause.BEARER_CAPABILITY_NOT_AUTHORIZED:
+            case android.telephony.DisconnectCause.CHANNEL_UNACCEPTABLE:
+            case android.telephony.DisconnectCause.CALL_REJECTED:
+            case android.telephony.DisconnectCause.NUMBER_CHANGED:
+            case android.telephony.DisconnectCause.PREEMPTION:
+            case android.telephony.DisconnectCause.FACILITY_REJECTED:
+            case android.telephony.DisconnectCause.RESP_TO_STATUS_ENQUIRY:
+            case android.telephony.DisconnectCause.NETWORK_OUT_OF_ORDER:
+            case android.telephony.DisconnectCause.TEMPORARY_FAILURE:
+            case android.telephony.DisconnectCause.SWITCHING_EQUIPMENT_CONGESTION:
+            case android.telephony.DisconnectCause.ACCESS_INFORMATION_DISCARDED:
+            case android.telephony.DisconnectCause.REQUESTED_CIRCUIT_OR_CHANNEL_NOT_AVAILABLE:
+            case android.telephony.DisconnectCause.RESOURCES_UNAVAILABLE_OR_UNSPECIFIED:
+            case android.telephony.DisconnectCause.QOS_UNAVAILABLE:
+            case android.telephony.DisconnectCause.REQUESTED_FACILITY_NOT_SUBSCRIBED:
+            case android.telephony.DisconnectCause.INCOMING_CALLS_BARRED_WITHIN_CUG:
+            case android.telephony.DisconnectCause.BEARER_CAPABILITY_UNAVAILABLE:
+            case android.telephony.DisconnectCause.SERVICE_OPTION_NOT_AVAILABLE:
+            case android.telephony.DisconnectCause.BEARER_SERVICE_NOT_IMPLEMENTED:
+            case android.telephony.DisconnectCause.REQUESTED_FACILITY_NOT_IMPLEMENTED:
+            case android.telephony.DisconnectCause.ONLY_DIGITAL_INFORMATION_BEARER_AVAILABLE:
+            case android.telephony.DisconnectCause.SERVICE_OR_OPTION_NOT_IMPLEMENTED:
+            case android.telephony.DisconnectCause.INVALID_TRANSACTION_IDENTIFIER:
+            case android.telephony.DisconnectCause.USER_NOT_MEMBER_OF_CUG:
+            case android.telephony.DisconnectCause.INCOMPATIBLE_DESTINATION:
+            case android.telephony.DisconnectCause.INVALID_TRANSIT_NW_SELECTION:
+            case android.telephony.DisconnectCause.SEMANTICALLY_INCORRECT_MESSAGE:
+            case android.telephony.DisconnectCause.INVALID_MANDATORY_INFORMATION:
+            case android.telephony.DisconnectCause.MESSAGE_TYPE_NON_IMPLEMENTED:
+            case android.telephony.DisconnectCause.MESSAGE_TYPE_NOT_COMPATIBLE_WITH_PROTOCOL_STATE:
+            case android.telephony.DisconnectCause.INFORMATION_ELEMENT_NON_EXISTENT:
+            case android.telephony.DisconnectCause.CONDITIONAL_IE_ERROR:
+            case android.telephony.DisconnectCause.MESSAGE_NOT_COMPATIBLE_WITH_PROTOCOL_STATE:
+            case android.telephony.DisconnectCause.RECOVERY_ON_TIMER_EXPIRED:
+            case android.telephony.DisconnectCause.PROTOCOL_ERROR_UNSPECIFIED:
+            case android.telephony.DisconnectCause.INTERWORKING_UNSPECIFIED:
                 return DisconnectCause.OTHER;
 
             case android.telephony.DisconnectCause.NOT_VALID:
@@ -581,9 +635,32 @@
 
         Integer resourceId = null;
         switch (telephonyDisconnectCause) {
-            case android.telephony.DisconnectCause.CALL_BARRED:
-                resourceId = R.string.callFailed_cb_enabled;
+            case android.telephony.DisconnectCause.INCOMING_MISSED: {
+                // If the network sends SVC Notification then this dialog will be displayed
+                // in case of B when the incoming call at B is not answered and gets forwarded
+                // to C
+                if (mNotificationType == SuppServiceNotification.NOTIFICATION_TYPE_CODE_2 &&
+                        mNotificationCode ==
+                        SuppServiceNotification.CODE_2_ADDITIONAL_CALL_FORWARDED) {
+                    resourceId = R.string.callUnanswered_forwarded;
+                }
                 break;
+            }
+
+            case android.telephony.DisconnectCause.CALL_BARRED:{
+                // When call is disconnected with this code then it can either be barring from
+                // MO side or MT side.
+                // In MT case, if network sends SVC Notification then this dialog will be
+                // displayed when A is calling B & incoming is barred on B.
+                if (mNotificationType == SuppServiceNotification.NOTIFICATION_TYPE_CODE_1 &&
+                        mNotificationCode ==
+                        SuppServiceNotification.CODE_1_INCOMING_CALLS_BARRED) {
+                    resourceId = R.string.callFailed_incoming_cb_enabled;
+                } else {
+                    resourceId = R.string.callFailed_cb_enabled;
+                }
+                break;
+            }
 
             case android.telephony.DisconnectCause.CDMA_ALREADY_ACTIVATED:
                 resourceId = R.string.callFailed_cdma_activation;
@@ -650,7 +727,7 @@
                 // failure in the telephony layer.
                 // TODO: Need UI spec for this failure case; for now just
                 // show a generic error.
-                resourceId = R.string.incall_error_call_failed;
+                resourceId = R.string.incall_error_outgoing_call_failed;
                 break;
 
             case android.telephony.DisconnectCause.POWER_OFF:
@@ -723,6 +800,201 @@
 
             case android.telephony.DisconnectCause.MAXIMUM_NUMBER_OF_CALLS_REACHED:
                 resourceId = R.string.callFailed_maximum_reached;
+            // Supplementary for Clear Code
+            case android.telephony.DisconnectCause.BUSY:
+                resourceId = R.string.callFailed_userBusy;
+                break;
+
+            case android.telephony.DisconnectCause.NO_CIRCUIT_AVAIL:
+                resourceId = R.string.callFailed_no_circuit_avail;
+                break;
+
+            case android.telephony.DisconnectCause.TEMPORARY_FAILURE:
+                resourceId = R.string.callFailed_tempopary_failure;
+                break;
+
+            case android.telephony.DisconnectCause.SWITCHING_EQUIPMENT_CONGESTION:
+                resourceId = R.string.callFailed_switching_equipment_congestion;
+                break;
+
+            case android.telephony.DisconnectCause.REQUESTED_CIRCUIT_OR_CHANNEL_NOT_AVAILABLE:
+                resourceId = R.string.callFailed_requested_circuit_or_channel_not_available;
+                break;
+
+            case android.telephony.DisconnectCause.QOS_UNAVAILABLE:
+                resourceId = R.string.callFailed_QOS_unavailable;
+                break;
+
+            case android.telephony.DisconnectCause.BEARER_CAPABILITY_UNAVAILABLE:
+                resourceId = R.string.callFailed_bearer_capability_unavailable;
+                break;
+
+            case android.telephony.DisconnectCause.LIMIT_EXCEEDED:
+                resourceId = R.string.callFailed_limitExceeded;
+
+            case android.telephony.DisconnectCause.INVALID_NUMBER:
+                resourceId = R.string.callFailed_invalid_number_format;
+                break;
+
+            case android.telephony.DisconnectCause.UNOBTAINABLE_NUMBER:
+                resourceId = R.string.callFailed_unobtainable_number;
+                break;
+
+            case android.telephony.DisconnectCause.NO_ROUTE_TO_DESTINATION:
+                resourceId = R.string.callFailed_no_route_to_destination;
+                break;
+
+            case android.telephony.DisconnectCause.CALL_FAIL_NO_USER_RESPONDING:
+                resourceId = R.string.callFailed_no_user_responding;
+                break;
+
+            case android.telephony.DisconnectCause.CALL_FAIL_NO_ANSWER_FROM_USER:
+                resourceId = R.string.callFailed_no_answer_from_user;
+                break;
+
+            case android.telephony.DisconnectCause.CALL_FAIL_DESTINATION_OUT_OF_ORDER:
+                resourceId = R.string.callFailed_destination_out_of_order;
+                break;
+
+            case android.telephony.DisconnectCause.BEARER_CAPABILITY_NOT_AUTHORIZED:
+                resourceId = R.string.callFailed_bearer_capability_not_authorized;
+                break;
+
+            case android.telephony.DisconnectCause.CHANNEL_UNACCEPTABLE:
+                resourceId = R.string.callFailed_channel_unacceptable;
+                break;
+
+            case android.telephony.DisconnectCause.OPERATOR_DETERMINED_BARRING:
+                resourceId = R.string.callFailed_operator_determined_barring;
+                break;
+
+            case android.telephony.DisconnectCause.CALL_REJECTED:
+                resourceId = R.string.callFailed_call_rejected;
+                break;
+
+            case android.telephony.DisconnectCause.NUMBER_CHANGED:
+                resourceId = R.string.callFailed_number_changed;
+                break;
+
+            case android.telephony.DisconnectCause.PREEMPTION:
+                resourceId = R.string.callFailed_preemption;
+                break;
+
+            case android.telephony.DisconnectCause.FACILITY_REJECTED:
+                resourceId = R.string.callFailed_facility_rejected;
+                break;
+
+            case android.telephony.DisconnectCause.RESP_TO_STATUS_ENQUIRY:
+                resourceId = R.string.callFailed_resp_to_status_enquiry;
+                break;
+
+            case android.telephony.DisconnectCause.NORMAL_UNSPECIFIED:
+                resourceId = R.string.callFailed_normal_unspecified;
+                break;
+
+            case android.telephony.DisconnectCause.NETWORK_OUT_OF_ORDER:
+                resourceId = R.string.callFailed_network_out_of_order;
+                break;
+
+            case android.telephony.DisconnectCause.ACCESS_INFORMATION_DISCARDED:
+                resourceId = R.string.callFailed_access_information_discarded;
+                break;
+
+            case android.telephony.DisconnectCause.RESOURCES_UNAVAILABLE_OR_UNSPECIFIED:
+                resourceId = R.string.callFailed_resources_unavailable_or_unspecified;
+                break;
+
+            case android.telephony.DisconnectCause.REQUESTED_FACILITY_NOT_SUBSCRIBED:
+                resourceId = R.string.callFailed_requested_facility_not_subscribed;
+                break;
+
+            case android.telephony.DisconnectCause.INCOMING_CALLS_BARRED_WITHIN_CUG:
+                resourceId = R.string.callFailed_incoming_calls_barred_within_CUG;
+                break;
+
+            case android.telephony.DisconnectCause.SERVICE_OPTION_NOT_AVAILABLE:
+                resourceId = R.string.callFailed_service_option_not_available;
+                break;
+
+            case android.telephony.DisconnectCause.BEARER_SERVICE_NOT_IMPLEMENTED:
+                resourceId = R.string.callFailed_bearer_service_not_implemented;
+                break;
+
+            case android.telephony.DisconnectCause.REQUESTED_FACILITY_NOT_IMPLEMENTED:
+                resourceId = R.string.callFailed_requested_facility_not_implemented;
+                break;
+
+            case android.telephony.DisconnectCause.ONLY_DIGITAL_INFORMATION_BEARER_AVAILABLE:
+                resourceId = R.string.callFailed_only_digital_information_bearer_available;
+                break;
+
+            case android.telephony.DisconnectCause.SERVICE_OR_OPTION_NOT_IMPLEMENTED:
+                resourceId = R.string.callFailed_service_or_option_not_implemented;
+                break;
+
+            case android.telephony.DisconnectCause.INVALID_TRANSACTION_IDENTIFIER:
+                resourceId = R.string.callFailed_invalid_transaction_identifier;
+                break;
+
+            case android.telephony.DisconnectCause.USER_NOT_MEMBER_OF_CUG:
+                resourceId = R.string.callFailed_user_not_member_of_CUG;
+                break;
+
+            case android.telephony.DisconnectCause.INCOMPATIBLE_DESTINATION:
+                resourceId = R.string.callFailed_incompatible_destination;
+                break;
+
+            case android.telephony.DisconnectCause.INVALID_TRANSIT_NW_SELECTION:
+                resourceId = R.string.callFailed_invalid_transit_NW_selection;
+                break;
+
+            case android.telephony.DisconnectCause.SEMANTICALLY_INCORRECT_MESSAGE:
+                resourceId = R.string.callFailed_semantically_incorrect_message;
+                break;
+
+            case android.telephony.DisconnectCause.INVALID_MANDATORY_INFORMATION:
+                resourceId = R.string.callFailed_invalid_mandatory_information;
+                break;
+
+            case android.telephony.DisconnectCause.MESSAGE_TYPE_NON_IMPLEMENTED:
+                resourceId = R.string.callFailed_message_type_non_implemented;
+                break;
+
+            case android.telephony.DisconnectCause.MESSAGE_TYPE_NOT_COMPATIBLE_WITH_PROTOCOL_STATE:
+                resourceId = R.string.callFailed_message_type_not_compatible_with_protocol_state;
+                break;
+
+            case android.telephony.DisconnectCause.INFORMATION_ELEMENT_NON_EXISTENT:
+                resourceId = R.string.callFailed_information_element_non_existent;
+                break;
+
+            case android.telephony.DisconnectCause.CONDITIONAL_IE_ERROR:
+                resourceId = R.string.callFailed_conditional_IE_error;
+                break;
+
+            case android.telephony.DisconnectCause.MESSAGE_NOT_COMPATIBLE_WITH_PROTOCOL_STATE:
+                resourceId = R.string.callFailed_message_not_compatible_with_protocol_state;
+                break;
+
+            case android.telephony.DisconnectCause.RECOVERY_ON_TIMER_EXPIRED:
+                resourceId = R.string.callFailed_recovery_on_timer_expired;
+                break;
+
+            case android.telephony.DisconnectCause.PROTOCOL_ERROR_UNSPECIFIED:
+                resourceId = R.string.callFailed_protocol_error_unspecified;
+                break;
+
+            case android.telephony.DisconnectCause.INTERWORKING_UNSPECIFIED:
+                resourceId = R.string.callFailed_interworking_unspecified;
+                break;
+
+            case android.telephony.DisconnectCause.NORMAL:
+                resourceId = R.string.callFailed_normal;
+                break;
+
+            case android.telephony.DisconnectCause.NON_SELECTED_USER_CLEARING:
+                resourceId = R.string.callFailed_non_selected_user_clearing;
+                break;
 
             case android.telephony.DisconnectCause.OUTGOING_CANCELED:
                 // We don't want to show any dialog for the canceled case since the call was
@@ -858,6 +1130,13 @@
             case android.telephony.DisconnectCause.OUT_OF_SERVICE:
                 return ToneGenerator.TONE_CDMA_CALLDROP_LITE;
 
+            case android.telephony.DisconnectCause.NO_ROUTE_TO_DESTINATION:
+            case android.telephony.DisconnectCause.OPERATOR_DETERMINED_BARRING:
+            case android.telephony.DisconnectCause.CALL_FAIL_NO_USER_RESPONDING:
+            case android.telephony.DisconnectCause.NUMBER_CHANGED:
+            case android.telephony.DisconnectCause.CALL_FAIL_DESTINATION_OUT_OF_ORDER:
+            case android.telephony.DisconnectCause.BEARER_CAPABILITY_NOT_AUTHORIZED:
+            case android.telephony.DisconnectCause.USER_NOT_MEMBER_OF_CUG:
             case android.telephony.DisconnectCause.UNOBTAINABLE_NUMBER:
                 return ToneGenerator.TONE_SUP_ERROR;
 
diff --git a/src/com/android/services/telephony/ImsConference.java b/src/com/android/services/telephony/ImsConference.java
old mode 100644
new mode 100755
index 816348a..b0cbb6e
--- a/src/com/android/services/telephony/ImsConference.java
+++ b/src/com/android/services/telephony/ImsConference.java
@@ -16,6 +16,7 @@
 
 package com.android.services.telephony;
 
+import android.annotation.NonNull;
 import android.content.Context;
 import android.graphics.drawable.Icon;
 import android.net.Uri;
@@ -28,6 +29,10 @@
 import android.telecom.TelecomManager;
 import android.telecom.VideoProfile;
 import android.telephony.PhoneNumberUtils;
+import android.telephony.SubscriptionInfo;
+import android.telephony.SubscriptionManager;
+import android.telephony.TelephonyManager;
+import android.text.TextUtils;
 import android.util.Pair;
 
 import com.android.ims.internal.ConferenceParticipant;
@@ -88,6 +93,8 @@
             private int mMaximumConferenceSize = 5;
             private boolean mShouldLocalDisconnectEmptyConference = false;
             private boolean mIsHoldAllowed = false;
+            private boolean mIsMultiAnchorConferenceSupported = false;
+            private boolean mFilterOutConferenceHost = true;
 
             /**
              * Sets whether the maximum size of the conference is enforced.
@@ -133,13 +140,37 @@
             }
 
             /**
+             * Sets if the carrier associated with the conference supports multianchor.
+             * @param isMultiAnchorConferenceSupported {@code true} if the carrier associated with
+             * the conference supports multianchor.
+             * @return builder instance.
+             */
+            public Builder setIsMultiAnchorConferenceSupported(
+                    boolean isMultiAnchorConferenceSupported) {
+                mIsMultiAnchorConferenceSupported = isMultiAnchorConferenceSupported;
+                return this;
+            }
+
+            /**
+             * Sets whether the conference host should be filtered out.
+             * @param filterOutConferenceHost {@code true} if the conference host should be filtered
+             * out.
+             * @return builder instance.
+             */
+            public Builder setFilterOutConferenceHost(boolean filterOutConferenceHost) {
+                mFilterOutConferenceHost = filterOutConferenceHost;
+                return this;
+            }
+
+            /**
              * Build instance of {@link CarrierConfiguration}.
              * @return carrier config instance.
              */
             public ImsConference.CarrierConfiguration build() {
                 return new ImsConference.CarrierConfiguration(mIsMaximumConferenceSizeEnforced,
                         mMaximumConferenceSize, mShouldLocalDisconnectEmptyConference,
-                        mIsHoldAllowed);
+                        mIsHoldAllowed, mIsMultiAnchorConferenceSupported,
+                        mFilterOutConferenceHost);
             }
         }
 
@@ -151,13 +182,20 @@
 
         private boolean mIsHoldAllowed;
 
+        private boolean mIsMultiAnchorConferenceSupported;
+
+        private boolean mFilterOutConferenceHost;
+
         private CarrierConfiguration(boolean isMaximumConferenceSizeEnforced,
                 int maximumConferenceSize, boolean shouldLocalDisconnectEmptyConference,
-                boolean isHoldAllowed) {
+                boolean isHoldAllowed, boolean isMultiAnchorConferenceSupported,
+                boolean filterOutConferenceHost) {
             mIsMaximumConferenceSizeEnforced = isMaximumConferenceSizeEnforced;
             mMaximumConferenceSize = maximumConferenceSize;
             mShouldLocalDisconnectEmptyConference = shouldLocalDisconnectEmptyConference;
             mIsHoldAllowed = isHoldAllowed;
+            mIsMultiAnchorConferenceSupported = isMultiAnchorConferenceSupported;
+            mFilterOutConferenceHost = filterOutConferenceHost;
         }
 
         /**
@@ -194,6 +232,23 @@
         public boolean isHoldAllowed() {
             return mIsHoldAllowed;
         }
+
+        /**
+         * @return {@code true} if the carrier associated with the conference supports multianchor
+         * conference, {@code false} otherwise.
+         */
+        public boolean isMultiAnchorConferenceSupported() {
+            return mIsMultiAnchorConferenceSupported;
+        }
+
+        /**
+         * Determines whether the conference host should be filtered out.
+         * @return {@code true} if the conference host should be filtered out, {@code false}
+         * otherwise.
+         */
+        public boolean shouldFilterOutConferenceHost() {
+            return mFilterOutConferenceHost;
+        }
     }
 
     /**
@@ -268,7 +323,7 @@
 
                 @Override
                 public void onExtrasChanged(Connection c, Bundle extras) {
-                    Log.v(this, "onExtrasChanged: c=" + c + " Extras=" + extras);
+                    Log.v(this, "onExtrasChanged: c=" + c + " Extras=" + Rlog.pii(LOG_TAG, extras));
                     updateExtras(extras);
                 }
 
@@ -438,6 +493,7 @@
 
         mTelephonyConnectionService = telephonyConnectionService;
         setConferenceHost(conferenceHost);
+        setVideoProvider(conferenceHost, conferenceHost.getVideoProvider());
 
         int capabilities = Connection.CAPABILITY_MUTE |
                 Connection.CAPABILITY_CONFERENCE_HAS_NO_CHILDREN;
@@ -971,7 +1027,9 @@
                     if (!mConferenceParticipantConnections.containsKey(userEntity)) {
                         // Some carriers will also include the conference host in the CEP.  We will
                         // filter that out here.
-                        if (!isParticipantHost(mConferenceHostAddress, participant.getHandle())) {
+                        if ((!isParticipantHost(mConferenceHostAddress, participant.getHandle())
+                               || !mCarrierConfig.shouldFilterOutConferenceHost())) {
+                            Log.i(this, "Create participant connection, participant = %s", participant);
                             createConferenceParticipantConnection(parent, participant);
                             newParticipants.add(participant);
                             newParticipantsAdded = true;
@@ -1190,7 +1248,8 @@
         // active call.
         ConferenceParticipantConnection connection = new ConferenceParticipantConnection(
                 parent.getOriginalConnection(), participant,
-                !isConferenceHost() /* isRemotelyHosted */);
+                !isConferenceHost() /* isRemotelyHosted */,
+                isParticipantHost(mConferenceHostAddress, participant.getHandle()));
         if (participant.getConnectTime() == 0) {
             connection.setConnectTimeMillis(parent.getConnectTimeMillis());
             connection.setConnectionStartElapsedRealtimeMillis(
@@ -1258,58 +1317,79 @@
     }
 
     /**
+     * Extracts a phone number from a {@link Uri}.
+     * <p>
+     * Phone numbers can be represented either as a TEL URI or a SIP URI.
+     * For conference event packages, RFC3261 specifies how participants can be identified using a
+     * SIP URI.
+     * A valid SIP uri has the format: sip:user:password@host:port;uri-parameters?headers
+     * Per RFC3261, the "user" can be a telephone number.
+     * For example: sip:1650555121;phone-context=blah.com@host.com
+     * In this case, the phone number is in the user field of the URI, and the parameters can be
+     * ignored.
+     *
+     * A SIP URI can also specify a phone number in a format similar to:
+     * sip:+1-212-555-1212@something.com;user=phone
+     * In this case, the phone number is again in user field and the parameters can be ignored.
+     * We can get the user field in these instances by splitting the string on the @, ;, or :
+     * and looking at the first found item.
+     * @param handle The URI containing a SIP or TEL formatted phone number.
+     * @return extracted phone number.
+     */
+    private static @NonNull String extractPhoneNumber(@NonNull Uri handle) {
+        // Number is always in the scheme specific part, regardless of whether this is a TEL or SIP
+        // URI.
+        String number = handle.getSchemeSpecificPart();
+        // Get anything before the @ for the SIP case.
+        String[] numberParts = number.split("[@;:]");
+
+        if (numberParts.length == 0) {
+            Log.v(LOG_TAG, "extractPhoneNumber(N) : no number in handle");
+            return "";
+        }
+        return numberParts[0];
+    }
+
+    /**
      * Determines if the passed in participant handle is the same as the conference host's handle.
      * Starts with a simple equality check.  However, the handles from a conference event package
      * will be a SIP uri, so we need to pull that apart to look for the participant's phone number.
      *
-     * @param hostHandles The handle(s) of the connection hosting the conference.
+     * @param hostHandles The handle(s) of the connection hosting the conference, typically obtained
+     *                    from P-Associated-Uri entries.
      * @param handle The handle of the conference participant.
      * @return {@code true} if the host's handle matches the participant's handle, {@code false}
      *      otherwise.
      */
-    private boolean isParticipantHost(Uri[] hostHandles, Uri handle) {
+    @VisibleForTesting
+    public static boolean isParticipantHost(Uri[] hostHandles, Uri handle) {
         // If there is no host handle or no participant handle, bail early.
         if (hostHandles == null || hostHandles.length == 0 || handle == null) {
-            Log.v(this, "isParticipantHost(N) : host or participant uri null");
+            Log.v(LOG_TAG, "isParticipantHost(N) : host or participant uri null");
             return false;
         }
 
-        // Conference event package participants are identified using SIP URIs (see RFC3261).
-        // A valid SIP uri has the format: sip:user:password@host:port;uri-parameters?headers
-        // Per RFC3261, the "user" can be a telephone number.
-        // For example: sip:1650555121;phone-context=blah.com@host.com
-        // In this case, the phone number is in the user field of the URI, and the parameters can be
-        // ignored.
-        //
-        // A SIP URI can also specify a phone number in a format similar to:
-        // sip:+1-212-555-1212@something.com;user=phone
-        // In this case, the phone number is again in user field and the parameters can be ignored.
-        // We can get the user field in these instances by splitting the string on the @, ;, or :
-        // and looking at the first found item.
-
-        String number = handle.getSchemeSpecificPart();
-        String numberParts[] = number.split("[@;:]");
-
-        if (numberParts.length == 0) {
-            Log.v(this, "isParticipantHost(N) : no number in participant handle");
+        String number = extractPhoneNumber(handle);
+        // If we couldn't extract the participant's number, then we can't determine if it is the
+        // host or not.
+        if (TextUtils.isEmpty(number)) {
             return false;
         }
-        number = numberParts[0];
 
         for (Uri hostHandle : hostHandles) {
             if (hostHandle == null) {
                 continue;
             }
-            // The host number will be a tel: uri.  Per RFC3966, the part after tel: is the phone
-            // number.
-            String hostNumber = hostHandle.getSchemeSpecificPart();
+            // Similar to the CEP participant data, the host identity in the P-Associated-Uri could
+            // be a SIP URI or a TEL URI.
+            String hostNumber = extractPhoneNumber(hostHandle);
 
             // Use a loose comparison of the phone numbers.  This ensures that numbers that differ
             // by special characters are counted as equal.
             // E.g. +16505551212 would be the same as 16505551212
             boolean isHost = PhoneNumberUtils.compare(hostNumber, number);
 
-            Log.v(this, "isParticipantHost(%s) : host: %s, participant %s", (isHost ? "Y" : "N"),
+            Log.v(LOG_TAG, "isParticipantHost(%s) : host: %s, participant %s", (isHost ? "Y" : "N"),
                     Rlog.pii(LOG_TAG, hostNumber), Rlog.pii(LOG_TAG, number));
 
             if (isHost) {
@@ -1368,7 +1448,7 @@
                         c.getConnectionProperties() | Connection.PROPERTY_IS_DOWNGRADED_CONFERENCE);
                 c.updateState();
                 // Copy the connect time from the conferenceHost
-                c.setConnectTimeMillis(mConferenceHost.getConnectTimeMillis());
+                c.setConnectTimeMillis(originalConnection.getConnectTime());
                 c.setConnectionStartElapsedRealtimeMillis(
                         mConferenceHost.getConnectionStartElapsedRealtimeMillis());
                 mTelephonyConnectionService.addExistingConnection(phoneAccountHandle, c);
@@ -1450,8 +1530,19 @@
             Phone phone = mConferenceHost.getPhone();
             if (phone != null) {
                 Context context = phone.getContext();
+                String displaySubId = "";
+                if (TelephonyManager.getDefault().getActiveModemCount() > 1) {
+                    final int phoneId = mConferenceHost.getPhone().getPhoneId();
+                    SubscriptionInfo sub = SubscriptionManager.from(
+                            mConferenceHost.getPhone().getContext())
+                        .getActiveSubscriptionInfoForSimSlotIndex(phoneId);
+                    if (sub != null) {
+                        displaySubId = sub.getDisplayName().toString();
+                        displaySubId  = " " + displaySubId;
+                    }
+                }
                 StatusHints hints = new StatusHints(
-                        context.getString(R.string.status_hint_label_wifi_call),
+                        context.getString(R.string.status_hint_label_wifi_call) + displaySubId,
                         Icon.createWithResource(
                                 context, R.drawable.ic_signal_wifi_4_bar_24dp),
                         null /* extras */);
@@ -1552,6 +1643,14 @@
     }
 
     /**
+     * @return {@code true} if the carrier associated with the conference supports multianchor
+     * conference, {@code false} otherwise.
+     */
+    public boolean isMultiAnchorConferenceSupported() {
+        return mCarrierConfig.isMultiAnchorConferenceSupported();
+    }
+
+    /**
      * @return The number of participants in the conference.
      */
     public int getNumberOfParticipants() {
diff --git a/src/com/android/services/telephony/ImsConferenceController.java b/src/com/android/services/telephony/ImsConferenceController.java
index 6d3d4c2..498cb53 100644
--- a/src/com/android/services/telephony/ImsConferenceController.java
+++ b/src/com/android/services/telephony/ImsConferenceController.java
@@ -270,7 +270,8 @@
                 Log.d(this, "recalc - %s %s", conference.getState(), conference);
             }
 
-            if (!conference.isConferenceHost()) {
+            if (!conference.isConferenceHost() &&
+                    (!conference.isMultiAnchorConferenceSupported())) {
                 if (Log.VERBOSE) {
                     Log.v(this, "skipping conference (not hosted on this device): %s", conference);
                 }
@@ -403,6 +404,20 @@
         conferenceHostConnection.setVideoPauseSupported(connection.getVideoPauseSupported());
         conferenceHostConnection.setManageImsConferenceCallSupported(
                 connection.isManageImsConferenceCallSupported());
+        // WARNING: do not try to copy the video provider from connection to
+        // conferenceHostConnection here.  In connection.cloneConnection, part of the clone
+        // process is to set the original connection so it's already set:
+        // conferenceHostConnection.setVideoProvider(connection.getVideoProvider());
+        // There is a subtle concurrency issue here where at the time of merge, the
+        // TelephonyConnection potentially has the WRONG video provider set on it (compared to
+        // the ImsPhoneConnection (ie original connection) which has the correct one.
+        // If you follow the logic in ImsPhoneCallTracker#onCallMerged through, what happens is the
+        // new post-merge video provider is set on the ImsPhoneConnection.  That informs it's
+        // listeners (e.g. TelephonyConnection) via a handler.  We immediately change the multiparty
+        // start of the host connection and ImsPhoneCallTracker starts the setup we are
+        // performing here.  When cloning TelephonyConnection, we get the right VideoProvider
+        // because it is copied from the originalConnection, not using the potentially stale value
+        // in the TelephonyConnection.
 
         PhoneAccountHandle phoneAccountHandle = null;
 
@@ -460,12 +475,18 @@
                     CarrierConfigManager.KEY_ALLOW_HOLD_IN_IMS_CALL_BOOL);
             boolean shouldLocalDisconnectOnEmptyConference = bundle.getBoolean(
                     CarrierConfigManager.KEY_LOCAL_DISCONNECT_EMPTY_IMS_CONFERENCE_BOOL);
+            boolean isMultiAnchorConferenceSupported = bundle.getBoolean(
+                    CarrierConfigManager.KEY_CARRIER_SUPPORTS_MULTIANCHOR_CONFERENCE);
+            boolean filterOutConferenceHost = !cfgManager.getConfigForSubId(phone.getSubId())
+                    .getBoolean("disable_filter_out_conference_host");
 
             config.setIsMaximumConferenceSizeEnforced(isMaximumConferenceSizeEnforced)
                     .setMaximumConferenceSize(maximumConferenceSize)
                     .setIsHoldAllowed(isHoldAllowed)
                     .setShouldLocalDisconnectEmptyConference(
-                            shouldLocalDisconnectOnEmptyConference);
+                            shouldLocalDisconnectOnEmptyConference)
+                    .setIsMultiAnchorConferenceSupported(isMultiAnchorConferenceSupported)
+                    .setFilterOutConferenceHost(filterOutConferenceHost);
         }
         return config.build();
     }
diff --git a/src/com/android/services/telephony/PstnIncomingCallNotifier.java b/src/com/android/services/telephony/PstnIncomingCallNotifier.java
index 1c1725f..76898bd 100644
--- a/src/com/android/services/telephony/PstnIncomingCallNotifier.java
+++ b/src/com/android/services/telephony/PstnIncomingCallNotifier.java
@@ -282,7 +282,7 @@
             }
             if (((ImsPhoneConnection) connection).isIncomingCallAutoRejected()) {
                 extras.putString(TelecomManager.EXTRA_CALL_DISCONNECT_MESSAGE,
-                        "Call Dropped by lower layers");
+                        TelecomManager.CALL_AUTO_DISCONNECT_MESSAGE_STRING);
             }
         }
 
diff --git a/src/com/android/services/telephony/RadioOnStateListener.java b/src/com/android/services/telephony/RadioOnStateListener.java
index 93e1e3c..21c2394 100644
--- a/src/com/android/services/telephony/RadioOnStateListener.java
+++ b/src/com/android/services/telephony/RadioOnStateListener.java
@@ -314,6 +314,7 @@
     }
 
     private void registerForRadioOff() {
+        unregisterForServiceStateChanged();
         mPhone.mCi.registerForOffOrNotAvailable(mHandler, MSG_RADIO_OFF_OR_NOT_AVAILABLE, null);
     }
 
diff --git a/src/com/android/services/telephony/TelecomAccountRegistry.java b/src/com/android/services/telephony/TelecomAccountRegistry.java
index 3b8f4fd..bacdaea 100644
--- a/src/com/android/services/telephony/TelecomAccountRegistry.java
+++ b/src/com/android/services/telephony/TelecomAccountRegistry.java
@@ -35,6 +35,9 @@
 import android.os.HandlerThread;
 import android.os.Looper;
 import android.os.PersistableBundle;
+import android.os.RemoteException;
+import android.os.ServiceManager;
+import android.os.SystemProperties;
 import android.os.UserHandle;
 import android.provider.Settings;
 import android.provider.Telephony;
@@ -57,10 +60,13 @@
 import android.telephony.ims.stub.ImsRegistrationImplBase;
 import android.text.TextUtils;
 
+import com.android.ims.FeatureConnector;
 import com.android.ims.ImsManager;
 import com.android.internal.telephony.ExponentialBackoff;
 import com.android.internal.telephony.Phone;
+import com.android.internal.telephony.PhoneConstants;
 import com.android.internal.telephony.PhoneFactory;
+import com.android.internal.telephony.TelephonyProperties;
 import com.android.internal.telephony.SubscriptionController;
 import com.android.phone.PhoneGlobals;
 import com.android.phone.PhoneUtils;
@@ -68,11 +74,14 @@
 import com.android.telephony.Rlog;
 
 import java.util.Arrays;
+import java.util.Iterator;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Optional;
 import java.util.function.Predicate;
 
+import org.codeaurora.internal.IExtTelephony;
+
 /**
  * Owns all data we have registered with Telecom including handling dynamic addition and
  * removal of SIMs and SIP accounts.
@@ -106,10 +115,22 @@
      */
     private static final int LISTENER_STATE_REGISTERED = 3;
 
+    // Flag which decides whether SIM should power down due to APM,
+    private static final String APM_SIM_NOT_PWDN_PROPERTY = "persist.vendor.radio.apm_sim_not_pwdn";
+
+    private enum Count {
+        ZERO,
+        ONE,
+        TWO
+    }
+
+    private static final int PROVISIONED = 1;
+    private static final int INVALID_STATE = -1;
+    private static final int CARD_NOT_PRESENT = -2;
+
     final class AccountEntry implements PstnPhoneCapabilitiesNotifier.Listener {
         private final Phone mPhone;
         private PhoneAccount mAccount;
-        private final PstnIncomingCallNotifier mIncomingCallNotifier;
         private final PstnPhoneCapabilitiesNotifier mPhoneCapabilitiesNotifier;
         private boolean mIsEmergency;
         private boolean mIsRttCapable;
@@ -130,6 +151,7 @@
         private boolean mIsManageImsConferenceCallSupported;
         private boolean mIsUsingSimCallManager;
         private boolean mIsShowPreciseFailedCause;
+        private final FeatureConnector<ImsManager> mImsManagerConnector;
 
         AccountEntry(Phone phone, boolean isEmergency, boolean isDummy) {
             mPhone = phone;
@@ -139,9 +161,23 @@
             mAccount = registerPstnPhoneAccount(isEmergency, isDummy);
             Log.i(this, "Registered phoneAccount: %s with handle: %s",
                     mAccount, mAccount.getAccountHandle());
-            mIncomingCallNotifier = new PstnIncomingCallNotifier((Phone) mPhone);
             mPhoneCapabilitiesNotifier = new PstnPhoneCapabilitiesNotifier((Phone) mPhone,
                     this);
+            mImsManagerConnector = new FeatureConnector<>(mPhone.getContext(), mPhone.getPhoneId(),
+                    new FeatureConnector.Listener<ImsManager>() {
+                        @Override
+                        public ImsManager getFeatureManager() {
+                            return ImsManager.getInstance(mPhone.getContext(), mPhone.getPhoneId());
+                        }
+                        @Override
+                        public void connectionReady(ImsManager manager){
+                            registerImsRegistrationCallback();
+                        }
+                        @Override
+                        public void connectionUnavailable() {
+                            unregisterImsRegistrationCallback();
+                        }
+                    }, "TelecomAccountRegistry");
 
             if (mIsDummy || isEmergency) {
                 // For dummy and emergency entries, there is no sub ID that can be assigned, so do
@@ -186,21 +222,19 @@
                     updateAdhocConfCapability(false);
                 }
             };
-            registerImsRegistrationCallback();
+            mImsManagerConnector.connect();
         }
 
         void teardown() {
-            mIncomingCallNotifier.teardown();
             mPhoneCapabilitiesNotifier.teardown();
-            if (mMmTelManager != null) {
-                if (mMmtelCapabilityCallback != null) {
-                    mMmTelManager.unregisterMmTelCapabilityCallback(mMmtelCapabilityCallback);
-                }
-
-                if (mImsRegistrationCallback != null) {
-                    mMmTelManager.unregisterImsRegistrationCallback(mImsRegistrationCallback);
-                }
+            if (mMmTelManager != null && mMmtelCapabilityCallback != null) {
+                mMmTelManager.unregisterMmTelCapabilityCallback(mMmtelCapabilityCallback);
             }
+            mImsManagerConnector.disconnect();
+        }
+
+        private boolean isMatched(SubscriptionInfo subInfo) {
+            return mPhone.getSubId() == subInfo.getSubscriptionId();
         }
 
         private void registerMmTelCapabilityCallback() {
@@ -232,6 +266,7 @@
             try {
                 mMmTelManager.registerImsRegistrationCallback(mContext.getMainExecutor(),
                         mImsRegistrationCallback);
+                Log.v(this, "registerImsRegistrationCallback: registration success");
             } catch (ImsException e) {
                 Log.w(this, "registerImsRegistrationCallback: registration failed, no ImsService"
                         + " available. Exception: " + e.getMessage());
@@ -243,6 +278,13 @@
             }
         }
 
+        private void unregisterImsRegistrationCallback() {
+            if (mMmTelManager == null || mImsRegistrationCallback == null) {
+                return;
+            }
+            mMmTelManager.unregisterImsRegistrationCallback(mImsRegistrationCallback);
+        }
+
         /**
          * Trigger re-registration of this account.
          */
@@ -353,13 +395,6 @@
                 capabilities |= PhoneAccount.CAPABILITY_EMERGENCY_PREFERRED;
             }
 
-            if (isRttCurrentlySupported()) {
-                capabilities |= PhoneAccount.CAPABILITY_RTT;
-                mIsRttCapable = true;
-            } else {
-                mIsRttCapable = false;
-            }
-
             mIsVideoCapable = mPhone.isVideoEnabled();
             boolean isVideoEnabledByPlatform = ImsManager.getInstance(mPhone.getContext(),
                     mPhone.getPhoneId()).isVtEnabledByPlatform();
@@ -416,6 +451,13 @@
                 extras.putBoolean(PhoneAccount.EXTRA_PLAY_CALL_RECORDING_TONE, true);
             }
 
+            if (isRttCurrentlySupported()) {
+                capabilities |= PhoneAccount.CAPABILITY_RTT;
+                mIsRttCapable = true;
+            } else {
+                mIsRttCapable = false;
+            }
+
             extras.putBoolean(PhoneAccount.EXTRA_SUPPORTS_VIDEO_CALLING_FALLBACK,
                     mContext.getResources()
                             .getBoolean(R.bool.config_support_video_calling_fallback));
@@ -729,6 +771,15 @@
         }
 
         /**
+         * Determines from carrier config whether to always allow RTT while roaming.
+         */
+        private boolean isCarrierAllowRttWhenRoaming() {
+            PersistableBundle b =
+                    PhoneGlobals.getInstance().getCarrierConfigForSubId(mPhone.getSubId());
+            return b.getBoolean(CarrierConfigManager.KEY_RTT_SUPPORTED_WHILE_ROAMING_BOOL);
+        }
+
+        /**
          * Where a device supports instant lettering and call subjects, retrieves the necessary
          * PhoneAccount extras for those features.
          *
@@ -847,7 +898,8 @@
                 // Next check whether we're in or near a country that supports it
                 String country =
                         mPhone.getServiceStateTracker().getLocaleTracker()
-                                .getCurrentCountry().toLowerCase();
+                                .getLastKnownCountryIso().toLowerCase();
+
                 String[] supportedCountries = mContext.getResources().getStringArray(
                         R.array.config_simless_emergency_rtt_supported_countries);
                 if (supportedCountries == null || Arrays.stream(supportedCountries).noneMatch(
@@ -856,7 +908,7 @@
                             + " not supported in this country: " + country);
                     return false;
                 }
-                
+
                 return true;
             }
 
@@ -868,11 +920,15 @@
             boolean isRoaming = mTelephonyManager.isNetworkRoaming(mPhone.getSubId());
             boolean isOnWfc = mPhone.getImsRegistrationTech()
                     == ImsRegistrationImplBase.REGISTRATION_TECH_IWLAN;
+            boolean alwaysAllowWhileRoaming = isCarrierAllowRttWhenRoaming();
 
-            boolean shouldDisableBecauseRoamingOffWfc = isRoaming && !isOnWfc;
+            boolean shouldDisableBecauseRoamingOffWfc =
+                    (isRoaming && !isOnWfc) && !alwaysAllowWhileRoaming;
+
             Log.i(this, "isRttCurrentlySupported -- regular acct,"
                     + " hasVoiceAvailability: " + hasVoiceAvailability + "\n"
                     + " isRttSupported: " + isRttSupported + "\n"
+                    + " alwaysAllowWhileRoaming: " + alwaysAllowWhileRoaming + "\n"
                     + " isRoaming: " + isRoaming + "\n"
                     + " isOnWfc: " + isOnWfc + "\n");
 
@@ -967,6 +1023,10 @@
                     || mMmTelManager.isAvailable(ImsRegistrationImplBase.REGISTRATION_TECH_IWLAN,
                     MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VOICE);
         }
+
+        private boolean isSubAccount() {
+            return !(mIsDummy || mIsEmergency);
+        }
     }
 
     private OnSubscriptionsChangedListener mOnSubscriptionsChangedListener =
@@ -979,10 +1039,40 @@
             }
             mSubscriptionListenerState = LISTENER_STATE_REGISTERED;
 
-            // Any time the SubscriptionInfo changes rerun the setup
-            Log.i(this, "TelecomAccountRegistry: onSubscriptionsChanged - update accounts");
-            tearDownAccounts();
-            setupAccounts();
+            List<SubscriptionInfo> subList =
+                    mSubscriptionManager.getActiveSubscriptionInfoList();
+
+            boolean isTearingDownNeeded = subList == null;
+            if (!isTearingDownNeeded) {
+                int subAccountCnt = subList.size();
+                synchronized (mAccountsLock) {
+                    subAccountCnt = mAccounts.stream()
+                            .filter(entry -> entry.isSubAccount())
+                            .collect(java.util.stream.Collectors.toList()).size();
+                }
+                isTearingDownNeeded |= subAccountCnt != subList.size();
+                if (!isTearingDownNeeded) {
+                    // If SIM is disabled, need to check if needed to be tore down.
+                    for (SubscriptionInfo subInfo : subList) {
+                        isTearingDownNeeded |= !mSubscriptionManager.isActiveSubId(
+                                subInfo.getSubscriptionId())
+                                || !isSubProvisioned(subInfo)
+                                || !isAccountMatched(subInfo);
+                    }
+                }
+            }
+            if (isTearingDownNeeded) {
+                Log.i(this, "TelecomAccountRegistry: onSubscriptionsChanged - update accounts");
+                tearDownAccounts();
+                setupAccounts();
+            } else {
+                Log.i(this, "TelecomAccountRegistry: onSubscriptionsChanged - reregister accounts");
+                synchronized (mAccountsLock) {
+                    for (AccountEntry entry : mAccounts) {
+                        entry.reRegisterPstnPhoneAccount();
+                    }
+                }
+            }
         }
 
         @Override
@@ -1097,6 +1187,7 @@
             }
         }
     };
+    private PstnIncomingCallNotifier[] mPstnIncomingCallNotifiers;
 
     TelecomAccountRegistry(Context context) {
         mContext = context;
@@ -1111,6 +1202,8 @@
                 2, /* multiplier */
                 mHandlerThread.getLooper(),
                 mRegisterOnSubscriptionsChangedListenerRunnable);
+        mPstnIncomingCallNotifiers =
+                new PstnIncomingCallNotifier[mTelephonyManager.getPhoneCount()];
     }
 
     /**
@@ -1349,6 +1442,10 @@
         mContext.registerReceiver(mLocaleChangeReceiver, localeChangeFilter);
 
         registerContentObservers();
+        // register for Pstn incoming call notifiers
+        for (int i = 0; i < mTelephonyManager.getPhoneCount(); i++) {
+            mPstnIncomingCallNotifiers[i] = new PstnIncomingCallNotifier(PhoneFactory.getPhone(i));
+        }
     }
 
     private void registerContentObservers() {
@@ -1365,9 +1462,13 @@
             }
         };
 
-        Uri rttSettingUri = Settings.Secure.getUriFor(Settings.Secure.RTT_CALLING_MODE);
-        mContext.getContentResolver().registerContentObserver(
-                rttSettingUri, false, rttUiSettingObserver);
+        // register for all settings
+        for (int i = 0; i < mTelephonyManager.getPhoneCount(); i++) {
+            Uri rttSettingUri = Settings.Secure.getUriFor(
+                    Settings.Secure.RTT_CALLING_MODE + convertRttPhoneId(i));
+            mContext.getContentResolver().registerContentObserver(
+                    rttSettingUri, false, rttUiSettingObserver);
+        }
 
         // Listen to the changes to the user's Contacts Discovery Setting.
         ContentObserver contactDiscoveryObserver = new ContentObserver(
@@ -1387,6 +1488,10 @@
                 contactDiscUri, true /*notifyForDescendants*/, contactDiscoveryObserver);
     }
 
+    private static String convertRttPhoneId(int phoneId) {
+        return phoneId != 0 ? Integer.toString(phoneId) : "";
+    }
+
     /**
      * Determines if the list of {@link AccountEntry}(s) contains an {@link AccountEntry} with a
      * specified {@link PhoneAccountHandle}.
@@ -1433,22 +1538,68 @@
         // Go through SIM-based phones and register ourselves -- registering an existing account
         // will cause the existing entry to be replaced.
         Phone[] phones = PhoneFactory.getPhones();
-        Log.i(this, "setupAccounts: Found %d phones.  Attempting to register.", phones.length);
 
         final boolean phoneAccountsEnabled = mContext.getResources().getBoolean(
                 R.bool.config_pstn_phone_accounts_enabled);
+        int activeCount = 0;
+        int activeSubscriptionId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
+        boolean isAnyProvisionInfoPending = false;
 
         synchronized (mAccountsLock) {
             try {
                 if (phoneAccountsEnabled) {
+                    // states we are interested in from what
+                    // IExtTelephony.getCurrentUiccCardProvisioningStatus()can return
+
                     for (Phone phone : phones) {
+                        int provisionStatus = PROVISIONED;
                         int subscriptionId = phone.getSubId();
-                        Log.i(this, "setupAccounts: Phone with subscription id %d", subscriptionId);
+                        int slotId = phone.getPhoneId();
+                        boolean isAccountAdded = false;
+
+                        if (mTelephonyManager.getPhoneCount() > 1) {
+                            IExtTelephony mExtTelephony = IExtTelephony.Stub
+                                    .asInterface(ServiceManager.getService("qti.radio.extphone"));
+                            try {
+                                //get current provision state of the SIM.
+                                provisionStatus =
+                                        mExtTelephony.getCurrentUiccCardProvisioningStatus(slotId);
+                            } catch (RemoteException ex) {
+                                provisionStatus = INVALID_STATE;
+                                Log.w(this, "Failed to get status , slotId: "+ slotId +" Exception: "
+                                        + ex);
+                            } catch (NullPointerException ex) {
+                                provisionStatus = INVALID_STATE;
+                                Log.w(this, "Failed to get status , slotId: "+ slotId +" Exception: "
+                                        + ex);
+                            }
+                        }
+
+                        // In SSR case, UiccCard's would be disposed hence the provision state received as
+                        // CARD_NOT_PRESENT but valid subId present in SubscriptionInfo record.
+                        if (provisionStatus == INVALID_STATE || ((provisionStatus == CARD_NOT_PRESENT)
+                                && mSubscriptionManager.isActiveSubId(subscriptionId))) {
+                            isAnyProvisionInfoPending = true;
+                        }
+
+                        Log.i(this, "setupAccounts: Phone with subscription id: " + subscriptionId +
+                                " slotId: " + slotId + " provisionStatus: " + provisionStatus);
                         // setupAccounts can be called multiple times during service changes.
                         // Don't add an account if the Icc has not been set yet.
                         if (!SubscriptionManager.isValidSubscriptionId(subscriptionId)
                                 || phone.getFullIccSerialNumber() == null) {
                             Log.d(this, "setupAccounts: skipping invalid subid %d", subscriptionId);
+                            // If device configured in dsds mode, a SIM removed and if corresponding
+                            // phone is in ECM then add emergency account to that sub so that
+                            // incoming emergency call can be processed.
+                            Phone phoneInEcm = PhoneGlobals.getInstance().getPhoneInEcm();
+                            if ((mTelephonyManager.getPhoneCount() > 1)
+                                    && (phoneInEcm != null)
+                                    && phoneInEcm.getPhoneId() == phone.getPhoneId()) {
+                                mAccounts.add(new AccountEntry(phoneInEcm, true /* emergency */,
+                                        false /* isDummy */));
+                                isAccountAdded = true;
+                            }
                             continue;
                         }
                         // Don't add account if it's opportunistic subscription, which is considered
@@ -1461,8 +1612,27 @@
                             continue;
                         }
 
-                        mAccounts.add(new AccountEntry(phone, false /* emergency */,
-                                false /* isDummy */));
+                        if (subscriptionId >= 0  && (provisionStatus == PROVISIONED)
+                                && (mSubscriptionManager.isActiveSubId(subscriptionId))) {
+                            activeCount++;
+                            activeSubscriptionId = subscriptionId;
+                            mAccounts.add(new AccountEntry(phone, false /* emergency */,
+                                    false /* isDummy */));
+                            isAccountAdded = true;
+                        }
+                        // Speacial case where one sub sim locked other sub reporting emergency service
+                        // emergency call placed will initiate on primary sub i.e sub which is reporting
+                        // limited/emergency service, if phone switches when emergency call is
+                        // in progress, there will missing phone account which can notify phantom call
+                        // to upper layer add emergency if for a phone no account added and if phone
+                        // reporting emergency service and other subs oos or if phone has running call
+                        if (!isAccountAdded && ((phone.getServiceState().isEmergencyOnly()
+                                    && !isOtherPhoneInService(phone))
+                                    || (phone.getState() == PhoneConstants.State.OFFHOOK))) {
+                            Log.i(this, "Adding emergency account to phone id: "+phone.getPhoneId());
+                            mAccounts.add(new AccountEntry(phone, true /* emergency */,
+                                    false /* isDummy */));
+                        }
                     }
                 }
             } finally {
@@ -1471,9 +1641,9 @@
                 // numbers but a phone account is.
                 if (mAccounts.isEmpty()) {
                     Log.i(this, "setupAccounts: adding default");
-                    mAccounts.add(
-                            new AccountEntry(PhoneFactory.getDefaultPhone(), true /* emergency */,
-                                    false /* isDummy */));
+                    mAccounts.add(new AccountEntry(PhoneFactory.getPhone(
+                            PhoneUtils.getPrimaryStackPhoneId()), true /* emergency */,
+                            false /* isDummy */));
                 }
             }
 
@@ -1486,6 +1656,116 @@
 
         // Clean up any PhoneAccounts that are no longer relevant
         cleanupPhoneAccounts();
+
+        PhoneAccountHandle defaultPhoneAccount =
+                mTelecomManager.getUserSelectedOutgoingPhoneAccount();
+
+        if ((defaultPhoneAccount == null)
+                    && (mTelephonyManager.getActiveModemCount() > Count.ONE.ordinal())
+                    && (activeCount == Count.ONE.ordinal()) && !isAnyProvisionInfoPending
+                    && (areAllSimAccountsFound()) && (isRadioInValidState(phones))) {
+            PhoneAccountHandle phoneAccountHandle =
+                    subscriptionIdToPhoneAccountHandle(activeSubscriptionId);
+            if (phoneAccountHandle != null) {
+                mTelecomManager.setUserSelectedOutgoingPhoneAccount(phoneAccountHandle);
+            }
+        }
+
+    }
+
+    private boolean isSubProvisioned(SubscriptionInfo subInfo) {
+        IExtTelephony extTelephony = IExtTelephony.Stub
+                .asInterface(ServiceManager.getService("qti.radio.extphone"));
+        int provisionStatus = INVALID_STATE;
+        try {
+            //get current provision state of the SIM.
+            provisionStatus = extTelephony
+                    .getCurrentUiccCardProvisioningStatus(subInfo.getSimSlotIndex());
+        } catch (RemoteException ex) {
+            Log.w(this, "Failed to get status for slotId: "
+                    + subInfo.getSimSlotIndex() + " Exception: " + ex);
+        } catch (NullPointerException ex) {
+            Log.w(this, "Failed to get status for slotId: "
+                    + subInfo.getSimSlotIndex() + " Exception: " + ex);
+        }
+        return provisionStatus == PROVISIONED;
+    }
+
+    private boolean areAllSimAccountsFound() {
+        final Iterator<PhoneAccountHandle> phoneAccounts =
+                mTelecomManager.getCallCapablePhoneAccounts().listIterator();
+        while (phoneAccounts.hasNext()) {
+            final PhoneAccountHandle phoneAccountHandle = phoneAccounts.next();
+            final PhoneAccount phoneAccount = mTelecomManager.getPhoneAccount(phoneAccountHandle);
+            if (mTelephonyManager.getSubIdForPhoneAccount(phoneAccount) ==
+                    SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
+                return false;
+            }
+        }
+        return true;
+    }
+
+    private boolean isRadioInValidState(Phone[] phones) {
+        boolean isApmSimNotPwrDown = false;
+        try {
+            IExtTelephony extTelephony = IExtTelephony.Stub
+                 .asInterface(ServiceManager.getService("extphone"));
+            int propVal = extTelephony.getPropertyValueInt(APM_SIM_NOT_PWDN_PROPERTY, 0);
+            isApmSimNotPwrDown = (propVal == 1);
+            Log.d(this, "isRadioInValidState, propVal = " + propVal +
+                    " isApmSimNotPwrDown = " + isApmSimNotPwrDown);
+        } catch (RemoteException|NullPointerException ex) {
+            Log.w(this, "Failed to get property: + " + APM_SIM_NOT_PWDN_PROPERTY +
+                    " , Exception: " + ex);
+        }
+
+        int isAPMOn = Settings.Global.getInt(mContext.getContentResolver(),
+                Settings.Global.AIRPLANE_MODE_ON, 0);
+
+        // Do not update default Voice subId when SIM is pwdn due to APM
+        if ((isAPMOn == 1) && (!isApmSimNotPwrDown)) {
+            Log.d(this, "isRadioInValidState, isApmSimNotPwrDown = " + isApmSimNotPwrDown
+                    + ", isAPMOn:" + isAPMOn);
+            return false;
+        }
+
+        //Do not update default Voice subId when when device Shutdown is in progress
+        int  numPhones = mTelephonyManager.getActiveModemCount();
+        for (int i = 0; i < numPhones; i++) {
+            if (phones[i] != null && phones[i].isShuttingDown()) {
+                Log.d(this, " isRadioInValidState: device shutdown in progress ");
+                return false;
+            }
+        }
+        return true;
+    }
+
+    private PhoneAccountHandle subscriptionIdToPhoneAccountHandle(final int subId) {
+        final Iterator<PhoneAccountHandle> phoneAccounts =
+                mTelecomManager.getCallCapablePhoneAccounts().listIterator();
+        while (phoneAccounts.hasNext()) {
+            final PhoneAccountHandle phoneAccountHandle = phoneAccounts.next();
+            final PhoneAccount phoneAccount = mTelecomManager.getPhoneAccount(phoneAccountHandle);
+            if (subId == mTelephonyManager.getSubIdForPhoneAccount(phoneAccount)) {
+                return phoneAccountHandle;
+            }
+        }
+        return null;
+    }
+
+    private boolean isOtherPhoneInService(Phone currentPhone) {
+        TelephonyManager tm = TelephonyManager.getDefault();
+        int phoneCount = tm.getPhoneCount();
+        for (int phId = 0; phId < phoneCount; phId++) {
+            Phone phone = PhoneFactory.getPhone(phId);
+            if (currentPhone.getPhoneId() == phone.getPhoneId()) continue;
+            int ss = phone.getServiceState().getState();
+            Log.i(this, "Phone Id: %d Service State: %d",phone.getPhoneId(), ss);
+            if (ss == ServiceState.STATE_IN_SERVICE) {
+                return true;
+            }
+        }
+        return false;
     }
 
     private void tearDownAccounts() {
@@ -1497,6 +1777,17 @@
         }
     }
 
+    private boolean isAccountMatched(SubscriptionInfo info) {
+        synchronized (mAccountsLock) {
+            for (AccountEntry entry : mAccounts) {
+                if (entry.isMatched(info)) {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+
     /**
      * Handles changes to the carrier configuration which may impact a phone account.  There are
      * some extras defined in the {@link PhoneAccount} which are based on carrier config options.
diff --git a/src/com/android/services/telephony/TelephonyConference.java b/src/com/android/services/telephony/TelephonyConference.java
index 7e4693f..a4a7977 100644
--- a/src/com/android/services/telephony/TelephonyConference.java
+++ b/src/com/android/services/telephony/TelephonyConference.java
@@ -33,6 +33,7 @@
 public class TelephonyConference extends TelephonyConferenceBase implements Holdable {
 
     private boolean mIsHoldable;
+    private boolean mIsDisconnecting;
 
     public TelephonyConference(PhoneAccountHandle phoneAccount) {
         super(phoneAccount);
@@ -66,9 +67,14 @@
     private boolean disconnectCall(Connection connection) {
         Call call = getMultipartyCallForConnection(connection, "onDisconnect");
         if (call != null) {
+            if (mIsDisconnecting) {
+                Log.i(this, "disconnectCall already called once");
+                return false;
+            }
             Log.d(this, "Found multiparty call to hangup for conference.");
             try {
                 call.hangup();
+                mIsDisconnecting = true;
                 return true;
             } catch (CallStateException e) {
                 Log.e(this, e, "Exception thrown trying to hangup conference");
diff --git a/src/com/android/services/telephony/TelephonyConnection.java b/src/com/android/services/telephony/TelephonyConnection.java
old mode 100755
new mode 100644
index b4dd050..752f45a
--- a/src/com/android/services/telephony/TelephonyConnection.java
+++ b/src/com/android/services/telephony/TelephonyConnection.java
@@ -28,6 +28,7 @@
 import android.os.Looper;
 import android.os.Message;
 import android.os.PersistableBundle;
+import android.widget.Toast;
 import android.telecom.CallAudioState;
 import android.telecom.Conference;
 import android.telecom.Connection;
@@ -40,6 +41,8 @@
 import android.telephony.CarrierConfigManager;
 import android.telephony.DisconnectCause;
 import android.telephony.PhoneNumberUtils;
+import android.telephony.SubscriptionInfo;
+import android.telephony.SubscriptionManager;
 import android.telephony.ServiceState;
 import android.telephony.ServiceState.RilRadioTechnology;
 import android.telephony.SubscriptionManager;
@@ -48,6 +51,7 @@
 import android.telephony.ims.ImsStreamMediaProfile;
 import android.text.TextUtils;
 import android.util.Pair;
+import android.widget.Toast;
 
 import com.android.ims.ImsCall;
 import com.android.ims.ImsException;
@@ -72,6 +76,9 @@
 import com.android.phone.R;
 import com.android.telephony.Rlog;
 
+import org.codeaurora.ims.QtiCallConstants;
+import org.codeaurora.ims.utils.QtiImsExtUtils;
+
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
@@ -85,7 +92,8 @@
 /**
  * Base class for CDMA and GSM connections.
  */
-abstract class TelephonyConnection extends Connection implements Holdable {
+abstract class TelephonyConnection extends Connection implements Holdable,
+          TelephonyConnectionService.ConnectionRemovedListener {
     private static final String LOG_TAG = "TelephonyConnection";
 
     private static final int MSG_PRECISE_CALL_STATE_CHANGED = 1;
@@ -116,10 +124,15 @@
     private static final int MSG_ON_CONNECTION_EVENT = 19;
     private static final int MSG_REDIAL_CONNECTION_CHANGED = 20;
     private static final int MSG_REJECT = 21;
+    private static final int MSG_CONNECTION_REMOVED = 22;
 
     private List<Uri> mParticipants;
     private boolean mIsAdhocConferenceCall;
 
+    private boolean mIsEmergencyNumber = false;
+
+    private SuppServiceNotification mSsNotification = null;
+
     private final Handler mHandler = new Handler(Looper.getMainLooper()) {
         @Override
         public void handleMessage(Message msg) {
@@ -152,6 +165,24 @@
                             Log.d(TelephonyConnection.this,
                                     "SettingOriginalConnection " + mOriginalConnection.toString()
                                             + " with " + connection.toString());
+                            boolean isShowToast = false;
+                            Phone phone = getPhone();
+                            if (phone != null) {
+                                CarrierConfigManager cfgManager = (CarrierConfigManager) phone
+                                        .getContext().getSystemService(Context
+                                        .CARRIER_CONFIG_SERVICE);
+                                if (cfgManager != null) {
+                                    isShowToast = cfgManager.getConfigForSubId(phone.getSubId())
+                                            .getBoolean("config_show_srvcc_toast");
+                                }
+                            }
+                            if (isShowToast && !shouldTreatAsEmergencyCall()) {
+                                int srvccMessageRes = VideoProfile.isVideo(
+                                        mOriginalConnection.getVideoState()) ?
+                                        R.string.srvcc_video_message : R.string.srvcc_message;
+                                Toast.makeText(phone.getContext(),
+                                        srvccMessageRes, Toast.LENGTH_LONG).show();
+                            }
                             setOriginalConnection(connection);
                             mWasImsConnection = false;
                         }
@@ -192,8 +223,15 @@
                     Log.v(TelephonyConnection.this, "MSG_SUPP_SERVICE_NOTIFY on phoneId : "
                             + (phone != null ? Integer.toString(phone.getPhoneId())
                             : "null"));
-                    SuppServiceNotification mSsNotification = null;
+                    if (phone == null) {
+                        break;
+                    }
                     if (msg.obj != null && ((AsyncResult) msg.obj).result != null) {
+                        if (mOriginalConnection != null && ((SuppServiceNotification)((AsyncResult)
+                                msg.obj).result).history != null && !(mConnectionState ==
+                                Call.State.DIALING || mConnectionState == Call.State.ALERTING)) {
+                           return;
+                        }
                         mSsNotification =
                                 (SuppServiceNotification)((AsyncResult) msg.obj).result;
                         if (mOriginalConnection != null) {
@@ -280,6 +318,11 @@
                     int rejectReason = (int) msg.obj;
                     reject(rejectReason);
                     break;
+                case MSG_CONNECTION_REMOVED:
+                    Log.d(this, "MSG_CONNECTION_REMOVED");
+                    // Some connection has disconnected. Re fresh disable add call property.
+                    refreshDisableAddCall();
+                    break;
 
                 case MSG_SET_CALL_RADIO_TECH:
                     int vrat = (int) msg.obj;
@@ -340,11 +383,23 @@
      * @param code the {@link SuppServiceNotification#code}.
      */
     private void sendSuppServiceNotificationEvent(int type, int code) {
+       CharSequence notificationMessage = getSuppServiceMessage(type, code);
+       if (notificationMessage == null || notificationMessage.length() == 0) {
+           return;
+       }
+
+       if (TelephonyManager.getDefault().getPhoneCount() > 1) {
+           SubscriptionInfo sub = SubscriptionManager.from(getPhone().getContext())
+                   .getActiveSubscriptionInfoForSimSlotIndex(getPhone().getPhoneId());
+           if (sub != null && !TextUtils.isEmpty(sub.getDisplayName().toString())) {
+               notificationMessage = sub.getDisplayName().toString() + ":" + notificationMessage;
+           }
+        }
+
         Bundle extras = new Bundle();
         extras.putInt(TelephonyManager.EXTRA_NOTIFICATION_TYPE, type);
         extras.putInt(TelephonyManager.EXTRA_NOTIFICATION_CODE, code);
-        extras.putCharSequence(TelephonyManager.EXTRA_NOTIFICATION_MESSAGE,
-                getSuppServiceMessage(type, code));
+        extras.putCharSequence(TelephonyManager.EXTRA_NOTIFICATION_MESSAGE, notificationMessage);
         sendTelephonyConnectionEvent(TelephonyManager.EVENT_SUPPLEMENTARY_SERVICE_NOTIFICATION,
                 extras);
     }
@@ -1079,6 +1134,13 @@
         }
     }
 
+    @Override
+    public void onConnectionRemoved(TelephonyConnection conn) {
+        if (conn != this) {
+            mHandler.obtainMessage(MSG_CONNECTION_REMOVED).sendToTarget();
+        }
+    }
+
     public void performHold() {
         Log.v(this, "performHold");
         // TODO: Can dialing calls be put on hold as well since they take up the
@@ -1346,17 +1408,19 @@
         mOriginalConnectionExtras.clear();
         mOriginalConnection = originalConnection;
         mOriginalConnection.setTelecomCallId(getTelecomCallId());
-        getPhone().registerForPreciseCallStateChanged(
-                mHandler, MSG_PRECISE_CALL_STATE_CHANGED, null);
-        getPhone().registerForHandoverStateChanged(
-                mHandler, MSG_HANDOVER_STATE_CHANGED, null);
-        getPhone().registerForRedialConnectionChanged(
-                mHandler, MSG_REDIAL_CONNECTION_CHANGED, null);
-        getPhone().registerForRingbackTone(mHandler, MSG_RINGBACK_TONE, null);
-        getPhone().registerForSuppServiceNotification(mHandler, MSG_SUPP_SERVICE_NOTIFY, null);
-        getPhone().registerForOnHoldTone(mHandler, MSG_ON_HOLD_TONE, null);
-        getPhone().registerForInCallVoicePrivacyOn(mHandler, MSG_CDMA_VOICE_PRIVACY_ON, null);
-        getPhone().registerForInCallVoicePrivacyOff(mHandler, MSG_CDMA_VOICE_PRIVACY_OFF, null);
+        if (getPhone() != null) {
+            getPhone().registerForPreciseCallStateChanged(
+                    mHandler, MSG_PRECISE_CALL_STATE_CHANGED, null);
+            getPhone().registerForHandoverStateChanged(
+                    mHandler, MSG_HANDOVER_STATE_CHANGED, null);
+            getPhone().registerForRedialConnectionChanged(
+                    mHandler, MSG_REDIAL_CONNECTION_CHANGED, null);
+            getPhone().registerForRingbackTone(mHandler, MSG_RINGBACK_TONE, null);
+            getPhone().registerForSuppServiceNotification(mHandler, MSG_SUPP_SERVICE_NOTIFY, null);
+            getPhone().registerForOnHoldTone(mHandler, MSG_ON_HOLD_TONE, null);
+            getPhone().registerForInCallVoicePrivacyOn(mHandler, MSG_CDMA_VOICE_PRIVACY_ON, null);
+            getPhone().registerForInCallVoicePrivacyOff(mHandler, MSG_CDMA_VOICE_PRIVACY_OFF, null);
+        }
         mOriginalConnection.addPostDialListener(mPostDialListener);
         mOriginalConnection.addListener(mOriginalConnectionListener);
 
@@ -1385,13 +1449,25 @@
         // Propagate VERSTAT for IMS calls.
         setCallerNumberVerificationStatus(mOriginalConnection.getNumberVerificationStatus());
 
-        if (isImsConnection()) {
-            mWasImsConnection = true;
-        }
-        mIsMultiParty = mOriginalConnection.isMultiparty();
-
         Bundle extrasToPut = new Bundle();
         List<String> extrasToRemove = new ArrayList<>();
+
+        if (isImsConnection()) {
+            mWasImsConnection = true;
+        } else {
+            extrasToRemove.add(QtiImsExtUtils.QTI_IMS_PHONE_ID_EXTRA_KEY);
+            extrasToRemove.add(QtiImsExtUtils.EXTRA_TIR_OVERWRITE_ALLOWED);
+            extrasToRemove.add(QtiCallConstants.ORIENTATION_MODE_EXTRA_KEY);
+            extrasToRemove.add(QtiCallConstants.EXTRAS_CALL_PROGRESS_INFO_TYPE);
+            extrasToRemove.add(QtiCallConstants.EXTRAS_CALL_PROGRESS_REASON_CODE);
+            extrasToRemove.add(QtiCallConstants.EXTRAS_CALL_PROGRESS_REASON_TEXT);
+            extrasToRemove.add(QtiCallConstants.EXTRA_CRS_TYPE);
+            extrasToRemove.add(QtiCallConstants.EXTRA_ORIGINAL_CALL_TYPE);
+            extrasToRemove.add(QtiCallConstants.EXTRA_IS_PREPARATORY);
+        }
+
+        mIsMultiParty = mOriginalConnection.isMultiparty();
+
         if (mOriginalConnection.isActiveCallDisconnectedOnAnswer()) {
             extrasToPut.putBoolean(Connection.EXTRA_ANSWERING_DROPS_FG_CALL, true);
         } else {
@@ -1568,13 +1644,21 @@
         boolean wasVideoCall = false;
         boolean isVowifiEnabled = false;
         if (phone instanceof ImsPhone) {
-            ImsPhoneCall foregroundCall = ((ImsPhone) phone).getForegroundCall();
-            if (foregroundCall != null) {
-                ImsCall call = foregroundCall.getImsCall();
-                if (call != null) {
-                    isCurrentVideoCall = call.isVideoCall();
-                    wasVideoCall = call.wasVideoCall();
-                }
+            ImsPhone imsPhone = (ImsPhone) phone;
+            ImsCall call = null;
+            if (imsPhone.getForegroundCall() != null
+                    && imsPhone.getForegroundCall().getImsCall() != null) {
+                call = imsPhone.getForegroundCall().getImsCall();
+            } else if (imsPhone.getBackgroundCall() != null
+                    && imsPhone.getBackgroundCall().getImsCall() != null) {
+                call = imsPhone.getBackgroundCall().getImsCall();
+            } else if (imsPhone.getRingingCall() != null
+                    && imsPhone.getRingingCall().getImsCall() != null) {
+                call = imsPhone.getRingingCall().getImsCall();
+            }
+            if (call != null) {
+                isCurrentVideoCall = call.isVideoCall();
+                wasVideoCall = call.wasVideoCall();
             }
 
             isVowifiEnabled = ImsUtil.isWfcEnabled(phone.getContext(), phone.getPhoneId());
@@ -1849,6 +1933,10 @@
 
     protected void hangup(int telephonyDisconnectCode) {
         if (mOriginalConnection != null) {
+            if (mHangupDisconnectCause != DisconnectCause.NOT_VALID) {
+                Log.i(this, "hangup already called once");
+                return;
+            }
             mHangupDisconnectCause = telephonyDisconnectCode;
             try {
                 // Hanging up a ringing call requires that we invoke call.hangup() as opposed to
@@ -2042,7 +2130,7 @@
                     // Ensure extras are propagated to Telecom.
                     putTelephonyExtras(mOriginalConnectionExtras);
                     // If extras contain Conference support information,
-                    // then ensure capabilities are updated.
+                    // then ensure capabilities are updated and propagated to Telecom.
                     if (mOriginalConnectionExtras.containsKey(
                             ImsCallProfile.EXTRA_CONFERENCE_AVAIL)) {
                         updateConnectionCapabilities();
@@ -2143,24 +2231,37 @@
                         fireOnOriginalConnectionRetryDial(cause
                                 == android.telephony.DisconnectCause.EMERGENCY_PERM_FAILURE);
                     } else {
-                        int preciseDisconnectCause = CallFailCause.NOT_VALID;
-                        if (mShowPreciseFailedCause) {
-                            preciseDisconnectCause =
-                                    mOriginalConnection.getPreciseDisconnectCause();
+                        if (mSsNotification != null) {
+                            setTelephonyConnectionDisconnected(
+                                    DisconnectCauseUtil.toTelecomDisconnectCause(
+                                    mOriginalConnection.getDisconnectCause(),
+                                    mOriginalConnection.getVendorDisconnectCause(),
+                                    mSsNotification.notificationType,
+                                    mSsNotification.code,
+                                    getPhone().getPhoneId()));
+                            mSsNotification = null;
+                            DisconnectCauseUtil.mNotificationCode = 0xFF;
+                            DisconnectCauseUtil.mNotificationType = 0xFF;
+                        } else {
+                            int preciseDisconnectCause = CallFailCause.NOT_VALID;
+                            if (mShowPreciseFailedCause) {
+                                preciseDisconnectCause =
+                                        mOriginalConnection.getPreciseDisconnectCause();
+                            }
+                            int disconnectCause = mOriginalConnection.getDisconnectCause();
+                            if ((mHangupDisconnectCause != DisconnectCause.NOT_VALID)
+                                    && (mHangupDisconnectCause != disconnectCause)) {
+                                Log.i(LOG_TAG, "setDisconnected: override cause: " + disconnectCause
+                                        + " -> " + mHangupDisconnectCause);
+                                disconnectCause = mHangupDisconnectCause;
+                            }
+                            setTelephonyConnectionDisconnected(
+                                    DisconnectCauseUtil.toTelecomDisconnectCause(
+                                            disconnectCause,
+                                            preciseDisconnectCause,
+                                            mOriginalConnection.getVendorDisconnectCause(),
+                                            getPhone().getPhoneId()));
                         }
-                        int disconnectCause = mOriginalConnection.getDisconnectCause();
-                        if ((mHangupDisconnectCause != DisconnectCause.NOT_VALID)
-                                && (mHangupDisconnectCause != disconnectCause)) {
-                            Log.i(LOG_TAG, "setDisconnected: override cause: " + disconnectCause
-                                    + " -> " + mHangupDisconnectCause);
-                            disconnectCause = mHangupDisconnectCause;
-                        }
-                        setTelephonyConnectionDisconnected(
-                                DisconnectCauseUtil.toTelecomDisconnectCause(
-                                        disconnectCause,
-                                        preciseDisconnectCause,
-                                        mOriginalConnection.getVendorDisconnectCause(),
-                                        getPhone().getPhoneId()));
                         close();
                     }
                     break;
@@ -2195,7 +2296,6 @@
 
         if (mIsMultiParty != mOriginalConnection.isMultiparty()) {
             mIsMultiParty = mOriginalConnection.isMultiparty();
-
             if (mIsMultiParty) {
                 notifyConferenceStarted();
             }
@@ -2384,12 +2484,21 @@
                 (mOriginalConnectionCapabilities & Capability.SUPPORTS_VT_REMOTE_BIDIRECTIONAL)
                         == Capability.SUPPORTS_VT_REMOTE_BIDIRECTIONAL);
 
+        PersistableBundle pb = getCarrierConfig();
+        boolean vtTtySupported = false;
+        if(pb != null) {
+            vtTtySupported = pb.getBoolean(CarrierConfigManager.KEY_CARRIER_VT_TTY_SUPPORT_BOOL);
+        }
         boolean isLocalVideoSupported = (mOriginalConnectionCapabilities
                 & Capability.SUPPORTS_VT_LOCAL_BIDIRECTIONAL)
-                == Capability.SUPPORTS_VT_LOCAL_BIDIRECTIONAL && !mIsTtyEnabled;
+                == Capability.SUPPORTS_VT_LOCAL_BIDIRECTIONAL && (vtTtySupported || !mIsTtyEnabled);
         capabilities = changeBitmask(capabilities, CAPABILITY_SUPPORTS_VT_LOCAL_BIDIRECTIONAL,
                 isLocalVideoSupported);
 
+        capabilities = changeBitmask(capabilities, CAPABILITY_SUPPORTS_RTT_REMOTE,
+                (mOriginalConnectionCapabilities & Capability.SUPPORTS_RTT_REMOTE)
+                        == Capability.SUPPORTS_RTT_REMOTE);
+
         return capabilities;
     }
 
@@ -2611,10 +2720,20 @@
             int labelId = isValidRingingCall()
                     ? R.string.status_hint_label_incoming_wifi_call
                     : R.string.status_hint_label_wifi_call;
+            String displaySubId = "";
+            if (TelephonyManager.getDefault().getPhoneCount() > 1) {
+                final int phoneId = getPhone().getPhoneId();
+                SubscriptionInfo sub = SubscriptionManager.from(getPhone().getContext())
+                    .getActiveSubscriptionInfoForSimSlotIndex(phoneId);
+                if (sub != null) {
+                    displaySubId = sub.getDisplayName().toString();
+                    displaySubId  = " " + displaySubId;
+                }
+            }
 
             Context context = getPhone().getContext();
             setTelephonyStatusHints(new StatusHints(
-                    getResourceString(labelId),
+                    getResourceString(labelId) + displaySubId,
                     Icon.createWithResource(
                             context, R.drawable.ic_signal_wifi_4_bar_24dp),
                     null /* extras */));
diff --git a/src/com/android/services/telephony/TelephonyConnectionService.java b/src/com/android/services/telephony/TelephonyConnectionService.java
index 356407a..c803330 100644
--- a/src/com/android/services/telephony/TelephonyConnectionService.java
+++ b/src/com/android/services/telephony/TelephonyConnectionService.java
@@ -64,6 +64,7 @@
 import com.android.internal.telephony.imsphone.ImsPhoneConnection;
 import com.android.phone.MMIDialogActivity;
 import com.android.phone.PhoneUtils;
+import com.android.phone.PhoneGlobals;
 import com.android.phone.R;
 
 import java.lang.ref.WeakReference;
@@ -73,6 +74,7 @@
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.LinkedList;
+import java.util.concurrent.CopyOnWriteArrayList;
 import java.util.List;
 import java.util.Map;
 import java.util.Queue;
@@ -155,6 +157,7 @@
     private EmergencyTonePlayer mEmergencyTonePlayer;
     private HoldTracker mHoldTracker;
     private boolean mIsTtyEnabled;
+    private AnswerAndReleaseHandler mAnswerAndReleaseHandler = null;
 
     // Contains one TelephonyConnection that has placed a call and a memory of which Phones it has
     // already tried to connect with. There should be only one TelephonyConnection trying to place a
@@ -197,6 +200,15 @@
         int getPhoneId(int subId);
     }
 
+    private AnswerAndReleaseHandler.ListenerBase mAnswerAndReleaseListener =
+            new AnswerAndReleaseHandler.ListenerBase() {
+        @Override
+        public void onAnswered() {
+            mAnswerAndReleaseHandler.removeListener(this);
+            mAnswerAndReleaseHandler = null;
+        }
+    };
+
     private SubscriptionManagerProxy mSubscriptionManagerProxy = new SubscriptionManagerProxy() {
         @Override
         public int getDefaultVoicePhoneId() {
@@ -501,6 +513,17 @@
         }
     };
 
+    private List<ConnectionRemovedListener> mConnectionRemovedListeners =
+            new CopyOnWriteArrayList<>();
+
+    /**
+     * A listener to be invoked whenever a TelephonyConnection is removed
+     * from connection service.
+     */
+    public interface ConnectionRemovedListener {
+        public void onConnectionRemoved(TelephonyConnection conn);
+    }
+
     @Override
     public void onCreate() {
         super.onCreate();
@@ -600,6 +623,44 @@
     }
 
     @Override
+    protected void answer(String callId) {
+        answerVideo(callId, VideoProfile.STATE_AUDIO_ONLY);
+    }
+
+    @Override
+    protected void answerVideo(String callId, int videoState) {
+        if (mAnswerAndReleaseHandler != null) {
+            Log.i(this, "answerVideo: duplicate answer request.");
+            return;
+        }
+
+        Connection answerAndReleaseConnection = shallDisconnectOtherCalls();
+        boolean isAnswerAndReleaseConnection = answerAndReleaseConnection != null;
+        Log.i(this, "answerVideo: isAnswerAndReleaseConnection: " + isAnswerAndReleaseConnection);
+        if (!isAnswerAndReleaseConnection) {
+            super.answerVideo(callId, videoState);
+            return;
+        }
+
+        mAnswerAndReleaseHandler =
+                new AnswerAndReleaseHandler(answerAndReleaseConnection, videoState);
+        mAnswerAndReleaseHandler.addListener(mAnswerAndReleaseListener);
+        mAnswerAndReleaseHandler.checkAndAnswer(getAllConnections(), getAllConferences());
+    }
+
+    private Connection shallDisconnectOtherCalls() {
+        for (Connection current : getAllConnections()) {
+            if (current.getState() == Connection.STATE_RINGING &&
+                    current.getExtras() != null &&
+                    current.getExtras().getBoolean(
+                        Connection.EXTRA_ANSWERING_DROPS_FG_CALL, false)) {
+                return current;
+            }
+        }
+        return null;
+    }
+
+    @Override
     public @Nullable Conference onCreateIncomingConference(
             @Nullable PhoneAccountHandle connectionManagerPhoneAccount,
             @NonNull final ConnectionRequest request) {
@@ -671,6 +732,7 @@
             final ConnectionRequest request) {
         Log.i(this, "onCreateOutgoingConnection, request: " + request);
 
+        Bundle bundle = request.getExtras();
         Uri handle = request.getAddress();
         boolean isAdhocConference = request.isAdhocConferenceCall();
 
@@ -1055,7 +1117,8 @@
         if (state == ServiceState.STATE_OUT_OF_SERVICE) {
             int dataNetType = phone.getServiceState().getDataNetworkType();
             if (dataNetType == TelephonyManager.NETWORK_TYPE_LTE ||
-                    dataNetType == TelephonyManager.NETWORK_TYPE_LTE_CA) {
+                    dataNetType == TelephonyManager.NETWORK_TYPE_LTE_CA ||
+                    dataNetType == TelephonyManager.NETWORK_TYPE_NR) {
                 state = phone.getServiceState().getDataRegistrationState();
             }
         }
@@ -1119,9 +1182,18 @@
         final boolean isTtyModeEnabled = mDeviceState.isTtyModeEnabled(this);
         if (VideoProfile.isVideo(request.getVideoState()) && isTtyModeEnabled
                 && !isEmergencyNumber) {
-            return Connection.createFailedConnection(mDisconnectCauseFactory.toTelecomDisconnectCause(
-                    android.telephony.DisconnectCause.VIDEO_CALL_NOT_ALLOWED_WHILE_TTY_ENABLED,
-                    null, phone.getPhoneId()));
+            boolean vtTtySupported = false;
+            CarrierConfigManager cfgManager = (CarrierConfigManager)
+                    phone.getContext().getSystemService(Context.CARRIER_CONFIG_SERVICE);
+            if (cfgManager != null) {
+                vtTtySupported = cfgManager.getConfigForSubId(phone.getSubId())
+                        .getBoolean(CarrierConfigManager.KEY_CARRIER_VT_TTY_SUPPORT_BOOL);
+            }
+            if (!vtTtySupported) {
+                return Connection.createFailedConnection(mDisconnectCauseFactory.
+                        toTelecomDisconnectCause(android.telephony.DisconnectCause.
+                        VIDEO_CALL_NOT_ALLOWED_WHILE_TTY_ENABLED,null, phone.getPhoneId()));
+            }
         }
 
         // Check for additional limits on CDMA phones.
@@ -1175,9 +1247,17 @@
                     "Treat as an Emergency Call.");
             isEmergency = true;
         }
-        Phone phone = getPhoneForAccount(accountHandle, isEmergency,
-                /* Note: when not an emergency, handle can be null for unknown callers */
-                request.getAddress() == null ? null : request.getAddress().getSchemeSpecificPart());
+
+        Phone phone;
+        if (isEmergency) {
+            phone = PhoneGlobals.getInstance().getPhoneInEcm();
+        } else {
+            phone = getPhoneForAccount(accountHandle, isEmergency,
+                    /* Note: when not an emergency, handle can be null for unknown callers */
+                    request.getAddress() == null ? null :
+                            request.getAddress().getSchemeSpecificPart());
+        }
+
         if (phone == null) {
             return Connection.createFailedConnection(
                     mDisconnectCauseFactory.toTelecomDisconnectCause(
@@ -1185,15 +1265,23 @@
                             "Phone is null"));
         }
 
+        Bundle extras = request.getExtras();
+        String disconnectMessage = null;
+        if (extras.containsKey(TelecomManager.EXTRA_CALL_DISCONNECT_MESSAGE)) {
+            disconnectMessage = extras.getString(TelecomManager.EXTRA_CALL_DISCONNECT_MESSAGE);
+            Log.i(this, "onCreateIncomingConnection Disconnect message " + disconnectMessage);
+        }
+
         Call call = phone.getRingingCall();
-        if (!call.getState().isRinging()) {
+        if (!call.getState().isRinging()
+                || (disconnectMessage != null
+                && disconnectMessage.equals(TelecomManager.CALL_AUTO_DISCONNECT_MESSAGE_STRING))) {
             Log.i(this, "onCreateIncomingConnection, no ringing call");
             Connection connection = Connection.createFailedConnection(
                     mDisconnectCauseFactory.toTelecomDisconnectCause(
                             android.telephony.DisconnectCause.INCOMING_MISSED,
                             "Found no ringing call",
                             phone.getPhoneId()));
-            Bundle extras = request.getExtras();
 
             long time = extras.getLong(TelecomManager.EXTRA_CALL_CREATED_EPOCH_TIME_MILLIS);
             if (time != 0) {
@@ -1275,6 +1363,7 @@
         if (connection instanceof TelephonyConnection) {
             TelephonyConnection telephonyConnection = (TelephonyConnection) connection;
             maybeSendInternationalCallEvent(telephonyConnection);
+            maybeSendPhoneAccountUpdateEvent(telephonyConnection);
         }
     }
 
@@ -1370,14 +1459,19 @@
         // Use the registered emergency Phone if the PhoneAccountHandle is set to Telephony's
         // Emergency PhoneAccount
         PhoneAccountHandle accountHandle = request.getAccountHandle();
-        boolean isEmergency = false;
+        Phone phone = null;
         if (accountHandle != null && PhoneUtils.EMERGENCY_ACCOUNT_HANDLE_ID.equals(
                 accountHandle.getId())) {
             Log.i(this, "Emergency PhoneAccountHandle is being used for unknown call... " +
                     "Treat as an Emergency Call.");
-            isEmergency = true;
+            for (Phone phoneSelected : mPhoneFactoryProxy.getPhones()) {
+                if (phoneSelected.getState() == PhoneConstants.State.OFFHOOK) {
+                    phone = phoneSelected;
+                    break;
+                }
+            }
         }
-        Phone phone = getPhoneForAccount(accountHandle, isEmergency,
+        if (phone == null) phone = getPhoneForAccount(accountHandle, false,
                 /* Note: when not an emergency, handle can be null for unknown callers */
                 request.getAddress() == null ? null : request.getAddress().getSchemeSpecificPart());
         if (phone == null) {
@@ -1535,10 +1629,17 @@
         if (phone == null || TextUtils.isEmpty(number) || !phone.getServiceState().getRoaming()) {
             return false;
         }
+        boolean allowPrefixIms = true;
         String[] blockPrefixes = null;
         CarrierConfigManager cfgManager = (CarrierConfigManager)
                 phone.getContext().getSystemService(Context.CARRIER_CONFIG_SERVICE);
         if (cfgManager != null) {
+            allowPrefixIms = cfgManager.getConfigForSubId(phone.getSubId()).getBoolean(
+                    CarrierConfigManager.KEY_SUPPORT_IMS_CALL_FORWARDING_WHILE_ROAMING_BOOL,
+                    true);
+            if (allowPrefixIms && useImsForAudioOnlyCall(phone)) {
+                return false;
+            }
             blockPrefixes = cfgManager.getConfigForSubId(phone.getSubId()).getStringArray(
                     CarrierConfigManager.KEY_CALL_FORWARDING_BLOCKS_WHILE_ROAMING_STRING_ARRAY);
         }
@@ -1553,6 +1654,14 @@
         return false;
     }
 
+    private boolean useImsForAudioOnlyCall(Phone phone) {
+        Phone imsPhone = phone.getImsPhone();
+
+        return imsPhone != null
+                && (imsPhone.isVolteEnabled() || imsPhone.isWifiCallingEnabled())
+                && (imsPhone.getServiceState().getState() == ServiceState.STATE_IN_SERVICE);
+    }
+
     private boolean isRadioOn() {
         boolean result = false;
         for (Phone phone : mPhoneFactoryProxy.getPhones()) {
@@ -1655,6 +1764,8 @@
                 ? connection.getAddress().getSchemeSpecificPart()
                 : "";
 
+        updatePhoneAccount(connection, phone);
+
         com.android.internal.telephony.Connection originalConnection = null;
         try {
             if (phone != null) {
@@ -1835,6 +1946,7 @@
                     TelecomAccountRegistry.getInstance(this).isShowPreciseFailedCause(
                             phoneAccountHandle));
             returnConnection.setTelephonyConnectionService(this);
+            addConnectionRemovedListener(returnConnection);
         }
         return returnConnection;
     }
@@ -1869,10 +1981,20 @@
     private Phone getPhoneForAccount(PhoneAccountHandle accountHandle, boolean isEmergency,
                                      @Nullable String emergencyNumberAddress) {
         Phone chosenPhone = null;
+        if (isEmergency) {
+            return PhoneFactory.getPhone(PhoneUtils.getPhoneIdForECall());
+        }
         int subId = mPhoneUtilsProxy.getSubIdForPhoneAccountHandle(accountHandle);
         if (subId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
             int phoneId = mSubscriptionManagerProxy.getPhoneId(subId);
             chosenPhone = mPhoneFactoryProxy.getPhone(phoneId);
+        } else {
+            for (Phone phone : mPhoneFactoryProxy.getPhones()) {
+                Call call = phone.getRingingCall();
+                if (call.getState().isRinging()) {
+                    return phone;
+                }
+            }
         }
         // If this is an emergency call and the phone we originally planned to make this call
         // with is not in service or was invalid, try to find one that is in service, using the
@@ -2233,6 +2355,15 @@
         return true;
     }
 
+    @Override
+    public void removeConnection(Connection connection) {
+        super.removeConnection(connection);
+        if (connection instanceof TelephonyConnection) {
+            removeConnectionRemovedListener((TelephonyConnection)connection);
+            fireOnConnectionRemoved((TelephonyConnection)connection);
+        }
+    }
+
     TelephonyConnection.TelephonyConnectionListener getTelephonyConnectionListener() {
         return mTelephonyConnectionListener;
     }
@@ -2276,6 +2407,22 @@
         }
     }
 
+    private void addConnectionRemovedListener(ConnectionRemovedListener l) {
+        mConnectionRemovedListeners.add(l);
+    }
+
+    private void removeConnectionRemovedListener(ConnectionRemovedListener l) {
+        if (l != null) {
+            mConnectionRemovedListeners.remove(l);
+        }
+    }
+
+    private void fireOnConnectionRemoved(TelephonyConnection conn) {
+        for (ConnectionRemovedListener l : mConnectionRemovedListeners) {
+            l.onConnectionRemoved(conn);
+        }
+    }
+
     /**
      * Create a new CDMA connection. CDMA connections have additional limitations when creating
      * additional calls which are handled in this method.  Specifically, CDMA has a "FLASH" command
@@ -2335,6 +2482,14 @@
         }
     }
 
+    private void maybeSendPhoneAccountUpdateEvent(TelephonyConnection telephonyConnection) {
+        if (telephonyConnection == null || telephonyConnection.getPhone() == null) {
+            return;
+        }
+        updatePhoneAccount(telephonyConnection,
+                mPhoneFactoryProxy.getPhone(telephonyConnection.getPhone().getPhoneId()));
+    }
+
     private void handleTtyModeChange(boolean isTtyEnabled) {
         Log.i(this, "handleTtyModeChange; isTtyEnabled=%b", isTtyEnabled);
         mIsTtyEnabled = isTtyEnabled;
diff --git a/tests/src/com/android/services/telephony/ImsConferenceTest.java b/tests/src/com/android/services/telephony/ImsConferenceTest.java
index f13d709..7e6488d 100644
--- a/tests/src/com/android/services/telephony/ImsConferenceTest.java
+++ b/tests/src/com/android/services/telephony/ImsConferenceTest.java
@@ -16,6 +16,8 @@
 
 package com.android.services.telephony;
 
+import static junit.framework.Assert.assertTrue;
+
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
@@ -573,4 +575,40 @@
         assertEquals(0, imsConference.getNumberOfParticipants());
         verify(mConferenceHost.mMockCall).hangup();
     }
+
+    /**
+     * Verifies that an ImsConference can handle SIP and TEL URIs for both the P-Associated-Uri and
+     * conference event package identities.
+     */
+    @Test
+    public void testIsParticipantHost() {
+        // Simplest case, assume P-Associated-Uri is a tel URI and that the CEP participant is also
+        // a tel URI.
+        assertTrue(ImsConference.isParticipantHost(new Uri[] {
+                        Uri.parse("tel:+8616505551234")},
+                Uri.parse("tel:+8616505551234")));
+
+        // Assume P-Associated-Uri is a tel URI and the CEP participant is a sip URI.
+        assertTrue(ImsConference.isParticipantHost(new Uri[] {
+                        Uri.parse("tel:+8616505551234")},
+                Uri.parse("sip:+8616505551234@bj.ims.mnc011.mcc460.3gppnetwork.org")));
+
+        // Assume P-Associated-Uri is a sip URI and the CEP participant is a tel URI.
+        assertTrue(ImsConference.isParticipantHost(new Uri[] {
+                        Uri.parse("sip:+8616505551234@bj.ims.mnc011.mcc460.3gppnetwork.org")},
+                Uri.parse("tel:+8616505551234")));
+
+        // Assume both P-Associated-Uri and the CEP participant are SIP URIs.
+        assertTrue(ImsConference.isParticipantHost(new Uri[] {
+                        Uri.parse("sip:+8616505551234@bj.ims.mnc011.mcc460.3gppnetwork.org")},
+                Uri.parse("sip:+8616505551234@bj.ims.mnc011.mcc460.3gppnetwork.org")));
+
+        // Corner cases
+        assertFalse(ImsConference.isParticipantHost(new Uri[] {
+                        Uri.parse("tel:+8616505551234")}, Uri.fromParts("", "", "")));
+        assertFalse(ImsConference.isParticipantHost(new Uri[] {
+                        Uri.parse("tel:+8616505551234")}, null));
+        assertFalse(ImsConference.isParticipantHost(null, null));
+        assertFalse(ImsConference.isParticipantHost(new Uri[0], null));
+    }
 }