Merge "Use PasswordMetrics to remove duplicated code."
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 966e075..6082182 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -3069,6 +3069,18 @@
                        android:value="com.android.settings.datausage.DataUsageSummary"/>
         </activity-alias>
 
+        <activity android:name=".Settings$AppAndNotificationDashboardActivity"
+                  android:label="@string/app_and_notification_dashboard_title"
+                  android:icon="@drawable/ic_settings_applications">
+            <intent-filter android:priority="8">
+                <action android:name="com.android.settings.action.SETTINGS"/>
+            </intent-filter>
+            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
+                       android:value="com.android.settings.applications.AppAndNotificationDashboardFragment"/>
+            <meta-data android:name="com.android.settings.category"
+                       android:value="com.android.settings.category.ia.homepage"/>
+        </activity>
+
         <activity-alias android:name="BatteryDashboardAlias"
                         android:targetActivity="Settings$PowerUsageSummaryActivity">
             <intent-filter android:priority="7">
@@ -3315,6 +3327,94 @@
                        android:value="com.android.settings.category.ia.device" />
         </activity-alias>
 
+        <activity-alias android:name="ManageApplicationsDashboardAlias"
+                        android:targetActivity="Settings$ManageApplicationsActivity">
+            <intent-filter android:priority="200">
+                <action android:name="com.android.settings.action.SETTINGS" />
+            </intent-filter>
+            <meta-data android:name="com.android.settings.category"
+                       android:value="com.android.settings.category.ia.apps" />
+            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
+                       android:value="com.android.settings.applications.ManageApplications" />
+            <meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED"
+                       android:value="true" />
+        </activity-alias>
+
+        <activity-alias android:name="AppNotificationDashboardAlias"
+                        android:targetActivity="Settings$NotificationAppListActivity">
+            <intent-filter android:priority="150">
+                <action android:name="com.android.settings.action.SETTINGS"/>
+            </intent-filter>
+            <meta-data android:name="com.android.settings.category"
+                       android:value="com.android.settings.category.ia.apps"/>
+            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
+                       android:value="com.android.settings.applications.NotificationApps"/>
+        </activity-alias>
+
+        <activity-alias android:name="ConfigureNotificationDashboardAlias"
+                  android:targetActivity="Settings$ConfigureNotificationSettingsActivity">
+            <intent-filter android:priority="120">
+                <action android:name="com.android.settings.action.SETTINGS"/>
+            </intent-filter>
+            <meta-data android:name="com.android.settings.category"
+                       android:value="com.android.settings.category.ia.apps"/>
+            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
+                       android:value="com.android.settings.notification.ConfigureNotificationSettings" />
+            <meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED"
+                       android:value="true" />
+        </activity-alias>
+
+        <activity android:name=".Settings$UserAndAccountDashboardActivity"
+                  android:label="@string/account_dashboard_title"
+                  android:icon="@drawable/ic_settings_accounts">
+            <intent-filter android:priority="2">
+                <action android:name="com.android.settings.action.SETTINGS"/>
+            </intent-filter>
+            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
+                       android:value="com.android.settings.accounts.UserAndAccountDashboardFragment"/>
+            <meta-data android:name="com.android.settings.category"
+                       android:value="com.android.settings.category.ia.homepage"/>
+        </activity>
+
+        <activity-alias android:name="UserDashboardAlias"
+                        android:targetActivity="Settings$UserSettingsActivity">
+            <intent-filter android:priority="8">
+                <action android:name="com.android.settings.action.SETTINGS"/>
+            </intent-filter>
+            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
+                       android:value="com.android.settings.users.UserSettings" />
+            <meta-data android:name="com.android.settings.category"
+                       android:value="com.android.settings.category.ia.accounts" />
+        </activity-alias>
+
+        <activity-alias android:name="AppDefaultDashboardAlias"
+                        android:targetActivity="Settings$AdvancedAppsActivity"
+                        android:label="@string/app_default_dashboard_title"
+                        android:icon="@drawable/ic_settings_applications">
+            <intent-filter android:priority="130">
+                <action android:name="com.android.settings.action.SETTINGS"/>
+            </intent-filter>
+            <meta-data android:name="com.android.settings.category"
+                       android:value="com.android.settings.category.ia.apps"/>
+            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
+                       android:value="com.android.settings.applications.AdvancedAppSettings" />
+            <meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED"
+                       android:value="true" />
+        </activity-alias>
+
+        <activity-alias android:name="PaymentSettingsDashboardAlias"
+                        android:targetActivity="Settings$PaymentSettingsActivity">
+            <intent-filter android:priority="10">
+                <action android:name="com.android.settings.action.SETTINGS"/>
+            </intent-filter>
+            <meta-data android:name="com.android.settings.category"
+                       android:value="com.android.settings.category.ia.apps.default"/>
+            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
+                       android:value="com.android.settings.nfc.PaymentSettings"/>
+            <meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED"
+                       android:value="true"/>
+        </activity-alias>
+
         <!-- End of information architecture host activities -->
 
         <service
diff --git a/PREUPLOAD.cfg b/PREUPLOAD.cfg
new file mode 100644
index 0000000..653380c
--- /dev/null
+++ b/PREUPLOAD.cfg
@@ -0,0 +1,4 @@
+[Hook Scripts]
+checkstyle_hook = ../../../development/tools/checkstyle/checkstyle.py --sha ${PREUPLOAD_COMMIT}
+                  -fw src/com/android/settings/print/
+
diff --git a/res/color/white_disabled.xml b/res/color/white_disabled.xml
new file mode 100644
index 0000000..17008a8
--- /dev/null
+++ b/res/color/white_disabled.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2016 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:color="@android:color/white"
+        android:alpha="?android:attr/disabledAlpha" />
+</selector>
diff --git a/res/drawable/enrollment_fingerprint_isolated.xml b/res/drawable/enrollment_fingerprint_isolated.xml
index fc31ff8..de3965e 100644
--- a/res/drawable/enrollment_fingerprint_isolated.xml
+++ b/res/drawable/enrollment_fingerprint_isolated.xml
@@ -17,14 +17,14 @@
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:name="enrollment_fingerprint_isolated"
-    android:width="75dp"
-    android:viewportWidth="75"
+    android:width="88dp"
     android:height="88dp"
-    android:viewportHeight="88" >
+    android:viewportWidth="176"
+    android:viewportHeight="176" >
     <group
         android:name="fingerprint_ridges_2"
-        android:translateX="37.5835"
-        android:translateY="43.66685" >
+        android:translateX="88"
+        android:translateY="87.66685" >
         <group
             android:name="ridge_5" >
             <path
diff --git a/res/drawable/fingerprint_progress_ring.xml b/res/drawable/fingerprint_progress_ring.xml
deleted file mode 100644
index 44a69e9..0000000
--- a/res/drawable/fingerprint_progress_ring.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2015 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:id="@android:id/background">
-        <shape
-            android:innerRadius="?attr/fingerprint_ring_radius"
-            android:shape="ring"
-            android:thickness="@dimen/fingerprint_ring_thickness"
-            android:useLevel="false">
-            <solid android:color="@color/fingerprint_progress_ring_bg" />
-        </shape>
-    </item>
-    <item android:id="@android:id/progress">
-        <shape
-            android:innerRadius="?attr/fingerprint_ring_radius"
-            android:shape="ring"
-            android:thickness="@dimen/fingerprint_ring_thickness">
-            <gradient
-                android:startColor="@color/fingerprint_progress_ring"
-                android:endColor="@color/fingerprint_progress_ring"
-                android:angle="0"
-            />
-        </shape>
-    </item>
-</layer-list>
diff --git a/res/drawable/fp_illustration.xml b/res/drawable/fp_illustration.xml
new file mode 100644
index 0000000..17ab4d2
--- /dev/null
+++ b/res/drawable/fp_illustration.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2016 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <item
+        android:id="@+id/fingerprint_background"
+        android:drawable="@drawable/fp_illustration_enrollment" />
+
+    <item
+        android:id="@+id/fingerprint_animation"
+        android:drawable="@drawable/enrollment_fingerprint_isolated_animation" />
+
+</layer-list>
diff --git a/res/drawable/fp_illustration_enrollment.xml b/res/drawable/fp_illustration_enrollment.xml
index f9b7ed4..630c6bd 100644
--- a/res/drawable/fp_illustration_enrollment.xml
+++ b/res/drawable/fp_illustration_enrollment.xml
@@ -16,21 +16,25 @@
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
         android:width="88.0dp"
         android:height="88.0dp"
-        android:viewportWidth="88.0"
-        android:viewportHeight="88.0">
-    <path
-        android:fillColor="#FF000000"
-        android:pathData="M67.74,11.59c-0.41,0.0 -0.82,-0.1 -1.2,-0.31c-7.44,-4.06 -15.0,-6.04 -23.11,-6.04c-7.92,0.0 -14.67,1.85 -21.88,6.01c-1.2,0.69 -2.73,0.28 -3.42,-0.92s-0.28,-2.72 0.92,-3.41c7.9,-4.55 15.65,-6.68 24.37,-6.68c8.97,0.0 17.32,2.17 25.51,6.65c1.21,0.66 1.66,2.18 1.0,3.39C69.48,11.12 68.62,11.59 67.74,11.59z"/>
-    <path
-        android:fillColor="#FF000000"
-        android:pathData="M9.25,34.74c-0.48,0.0 -0.96,-0.14 -1.39,-0.42c-1.15,-0.77 -1.45,-2.32 -0.68,-3.47c4.09,-6.09 9.3,-10.89 15.49,-14.27c6.52,-3.55 13.91,-5.43 21.38,-5.43c7.44,0.0 14.8,1.86 21.3,5.39c6.17,3.35 11.38,8.12 15.47,14.16c0.77,1.14 0.47,2.7 -0.67,3.47c-1.14,0.77 -2.7,0.47 -3.47,-0.67c-3.64,-5.38 -8.25,-9.61 -13.71,-12.57c-5.77,-3.13 -12.31,-4.78 -18.92,-4.78c-6.63,0.0 -13.2,1.67 -18.98,4.82c-5.48,2.99 -10.1,7.25 -13.73,12.66C10.85,34.35 10.06,34.74 9.25,34.74z"/>
-    <path
-        android:fillColor="#FF000000"
-        android:pathData="M34.76,86.82c-0.67,0.0 -1.33,-0.27 -1.82,-0.79c-3.49,-3.72 -5.51,-6.25 -8.26,-11.45c-2.84,-5.35 -4.34,-11.88 -4.34,-18.86c0.0,-13.02 10.59,-23.61 23.61,-23.61c13.02,0.0 23.61,10.59 23.61,23.61c0.0,1.38 -1.12,2.5 -2.5,2.5s-2.5,-1.12 -2.5,-2.5c0.0,-10.26 -8.35,-18.61 -18.61,-18.61c-10.26,0.0 -18.61,8.35 -18.61,18.61c0.0,6.17 1.3,11.89 3.76,16.52c2.62,4.94 4.37,7.04 7.49,10.37c0.94,1.01 0.89,2.59 -0.11,3.53C35.99,86.6 35.38,86.82 34.76,86.82z"/>
-    <path
-        android:fillColor="#FF000000"
-        android:pathData="M64.28,78.84c-4.99,0.0 -9.35,-1.32 -12.98,-3.92c-6.17,-4.43 -9.86,-11.6 -9.86,-19.19c0.0,-1.38 1.12,-2.5 2.5,-2.5s2.5,1.12 2.5,2.5c0.0,5.98 2.91,11.64 7.77,15.13c2.8,2.01 6.09,2.98 10.06,2.98c0.97,0.0 2.57,-0.11 4.17,-0.4c1.36,-0.25 2.66,0.64 2.92,2.0c0.25,1.36 -0.64,2.66 -2.0,2.92C66.93,78.8 64.86,78.84 64.28,78.84z"/>
-    <path
-        android:fillColor="#FF000000"
-        android:pathData="M55.92,87.75c-0.23,0.0 -0.46,-0.03 -0.7,-0.1c-6.6,-1.91 -10.92,-4.49 -15.4,-9.2c-5.76,-6.06 -8.94,-14.13 -8.94,-22.72c0.0,-7.2 5.86,-13.05 13.05,-13.05c7.2,0.0 13.05,5.86 13.05,13.05c0.0,4.44 3.61,8.05 8.05,8.05s8.05,-3.61 8.05,-8.05c0.0,-16.08 -13.08,-29.16 -29.16,-29.16c-11.43,0.0 -21.86,6.73 -26.58,17.15c-1.57,3.48 -2.37,7.52 -2.37,12.01c0.0,3.36 0.28,8.62 2.71,15.49c0.46,1.3 -0.22,2.73 -1.52,3.19c-1.3,0.46 -2.73,-0.22 -3.19,-1.52c-2.02,-5.7 -3.0,-11.31 -3.0,-17.16c0.0,-5.21 0.95,-9.94 2.82,-14.07c5.52,-12.2 17.74,-20.09 31.13,-20.09c18.83,0.0 34.16,15.32 34.16,34.16c0.0,7.2 -5.86,13.05 -13.05,13.05S52.0,62.92 52.0,55.73c0.0,-4.44 -3.61,-8.05 -8.05,-8.05s-8.05,3.61 -8.05,8.05c0.0,7.3 2.69,14.15 7.56,19.28c3.86,4.06 7.43,6.18 13.17,7.84c1.33,0.38 2.09,1.77 1.71,3.1C58.01,87.04 57.01,87.75 55.92,87.75z"/>
+        android:viewportWidth="176.0"
+        android:viewportHeight="176.0">
+    <group
+        android:translateX="44"
+        android:translateY="44">
+        <path
+            android:fillColor="#FF000000"
+            android:pathData="M67.74,11.59c-0.41,0.0 -0.82,-0.1 -1.2,-0.31c-7.44,-4.06 -15.0,-6.04 -23.11,-6.04c-7.92,0.0 -14.67,1.85 -21.88,6.01c-1.2,0.69 -2.73,0.28 -3.42,-0.92s-0.28,-2.72 0.92,-3.41c7.9,-4.55 15.65,-6.68 24.37,-6.68c8.97,0.0 17.32,2.17 25.51,6.65c1.21,0.66 1.66,2.18 1.0,3.39C69.48,11.12 68.62,11.59 67.74,11.59z"/>
+        <path
+            android:fillColor="#FF000000"
+            android:pathData="M9.25,34.74c-0.48,0.0 -0.96,-0.14 -1.39,-0.42c-1.15,-0.77 -1.45,-2.32 -0.68,-3.47c4.09,-6.09 9.3,-10.89 15.49,-14.27c6.52,-3.55 13.91,-5.43 21.38,-5.43c7.44,0.0 14.8,1.86 21.3,5.39c6.17,3.35 11.38,8.12 15.47,14.16c0.77,1.14 0.47,2.7 -0.67,3.47c-1.14,0.77 -2.7,0.47 -3.47,-0.67c-3.64,-5.38 -8.25,-9.61 -13.71,-12.57c-5.77,-3.13 -12.31,-4.78 -18.92,-4.78c-6.63,0.0 -13.2,1.67 -18.98,4.82c-5.48,2.99 -10.1,7.25 -13.73,12.66C10.85,34.35 10.06,34.74 9.25,34.74z"/>
+        <path
+            android:fillColor="#FF000000"
+            android:pathData="M34.76,86.82c-0.67,0.0 -1.33,-0.27 -1.82,-0.79c-3.49,-3.72 -5.51,-6.25 -8.26,-11.45c-2.84,-5.35 -4.34,-11.88 -4.34,-18.86c0.0,-13.02 10.59,-23.61 23.61,-23.61c13.02,0.0 23.61,10.59 23.61,23.61c0.0,1.38 -1.12,2.5 -2.5,2.5s-2.5,-1.12 -2.5,-2.5c0.0,-10.26 -8.35,-18.61 -18.61,-18.61c-10.26,0.0 -18.61,8.35 -18.61,18.61c0.0,6.17 1.3,11.89 3.76,16.52c2.62,4.94 4.37,7.04 7.49,10.37c0.94,1.01 0.89,2.59 -0.11,3.53C35.99,86.6 35.38,86.82 34.76,86.82z"/>
+        <path
+            android:fillColor="#FF000000"
+            android:pathData="M64.28,78.84c-4.99,0.0 -9.35,-1.32 -12.98,-3.92c-6.17,-4.43 -9.86,-11.6 -9.86,-19.19c0.0,-1.38 1.12,-2.5 2.5,-2.5s2.5,1.12 2.5,2.5c0.0,5.98 2.91,11.64 7.77,15.13c2.8,2.01 6.09,2.98 10.06,2.98c0.97,0.0 2.57,-0.11 4.17,-0.4c1.36,-0.25 2.66,0.64 2.92,2.0c0.25,1.36 -0.64,2.66 -2.0,2.92C66.93,78.8 64.86,78.84 64.28,78.84z"/>
+        <path
+            android:fillColor="#FF000000"
+            android:pathData="M55.92,87.75c-0.23,0.0 -0.46,-0.03 -0.7,-0.1c-6.6,-1.91 -10.92,-4.49 -15.4,-9.2c-5.76,-6.06 -8.94,-14.13 -8.94,-22.72c0.0,-7.2 5.86,-13.05 13.05,-13.05c7.2,0.0 13.05,5.86 13.05,13.05c0.0,4.44 3.61,8.05 8.05,8.05s8.05,-3.61 8.05,-8.05c0.0,-16.08 -13.08,-29.16 -29.16,-29.16c-11.43,0.0 -21.86,6.73 -26.58,17.15c-1.57,3.48 -2.37,7.52 -2.37,12.01c0.0,3.36 0.28,8.62 2.71,15.49c0.46,1.3 -0.22,2.73 -1.52,3.19c-1.3,0.46 -2.73,-0.22 -3.19,-1.52c-2.02,-5.7 -3.0,-11.31 -3.0,-17.16c0.0,-5.21 0.95,-9.94 2.82,-14.07c5.52,-12.2 17.74,-20.09 31.13,-20.09c18.83,0.0 34.16,15.32 34.16,34.16c0.0,7.2 -5.86,13.05 -13.05,13.05S52.0,62.92 52.0,55.73c0.0,-4.44 -3.61,-8.05 -8.05,-8.05s-8.05,3.61 -8.05,8.05c0.0,7.3 2.69,14.15 7.56,19.28c3.86,4.06 7.43,6.18 13.17,7.84c1.33,0.38 2.09,1.77 1.71,3.1C58.01,87.04 57.01,87.75 55.92,87.75z"/>
+    </group>
 </vector>
diff --git a/res/drawable/ring_progress.xml b/res/drawable/ring_progress.xml
new file mode 100644
index 0000000..02fcd5b
--- /dev/null
+++ b/res/drawable/ring_progress.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:id="@android:id/background">
+        <shape
+            android:innerRadiusRatio="2.2"
+            android:shape="ring"
+            android:thickness="@dimen/ring_progress_bar_thickness"
+            android:useLevel="false"
+            android:tint="?android:colorControlNormal">
+            <solid android:color="@color/white_disabled" />
+        </shape>
+    </item>
+    <item android:id="@android:id/progress">
+        <rotate
+            android:fromDegrees="270"
+            android:pivotX="50%"
+            android:pivotY="50%"
+            android:toDegrees="270">
+            <shape
+                android:innerRadiusRatio="2.2"
+                android:shape="ring"
+                android:thickness="@dimen/ring_progress_bar_thickness"
+                android:tint="?android:attr/colorControlActivated">
+                <solid android:color="@android:color/white" />
+            </shape>
+        </rotate>
+    </item>
+</layer-list>
diff --git a/res/layout-land/fingerprint_enroll_enrolling.xml b/res/layout-land/fingerprint_enroll_enrolling.xml
index ba0f803..27af681 100644
--- a/res/layout-land/fingerprint_enroll_enrolling.xml
+++ b/res/layout-land/fingerprint_enroll_enrolling.xml
@@ -49,7 +49,7 @@
                 android:layout_height="wrap_content"
                 android:layout_marginStart="0dp"
                 android:layout_marginEnd="0dp"
-                android:src="@drawable/ic_lock" />
+                android:src="@drawable/ic_fingerprint_header" />
 
             <TextView
                 android:id="@+id/suw_layout_title"
@@ -97,8 +97,8 @@
             android:layout_height="match_parent">
 
             <include layout="@layout/fingerprint_enroll_enrolling_content"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
                 android:layout_gravity="center"/>
 
             <TextView
diff --git a/res/layout-land/fingerprint_enroll_find_sensor.xml b/res/layout-land/fingerprint_enroll_find_sensor.xml
index 0a3a33f..b64b27f 100644
--- a/res/layout-land/fingerprint_enroll_find_sensor.xml
+++ b/res/layout-land/fingerprint_enroll_find_sensor.xml
@@ -50,7 +50,7 @@
                     android:layout_height="wrap_content"
                     android:layout_marginStart="0dp"
                     android:layout_marginEnd="0dp"
-                    android:src="@drawable/ic_lock" />
+                    android:src="@drawable/ic_fingerprint_header" />
 
                 <TextView
                     android:id="@+id/suw_layout_title"
diff --git a/res/layout/battery_history_detail.xml b/res/layout/battery_history_detail.xml
index e254711..b782e39 100644
--- a/res/layout/battery_history_detail.xml
+++ b/res/layout/battery_history_detail.xml
@@ -14,54 +14,56 @@
      limitations under the License.
 -->
 
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<ScrollView
+    xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:settings="http://schemas.android.com/apk/res-auto"
     android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:paddingStart="?android:attr/listPreferredItemPaddingStart"
-    android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
-    android:orientation="vertical">
+    android:layout_height="match_parent">
 
     <LinearLayout
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:focusable="true"
+        android:paddingStart="?android:attr/listPreferredItemPaddingStart"
+        android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
         android:orientation="vertical">
-        <TextView
-            android:id="@+id/charge"
+
+        <LinearLayout
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:textAppearance="?android:attr/textAppearanceLarge"
-            android:textSize="36sp"
-            android:textColor="?android:attr/colorAccent" />
+            android:focusable="true"
+            android:orientation="vertical">
 
-        <TextView
-            android:id="@+id/estimation"
+            <TextView
+                android:id="@+id/charge"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:textAppearance="?android:attr/textAppearanceLarge"
+                android:textSize="36sp"
+                android:textColor="?android:attr/colorAccent"/>
+
+            <TextView
+                android:id="@+id/estimation"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:paddingBottom="8dp"
+                android:textAppearance="?android:attr/textAppearanceMedium"
+                android:textColor="?android:attr/textColorSecondary"/>
+
+            <com.android.settingslib.graph.UsageView
+                android:id="@+id/battery_usage"
+                android:layout_width="match_parent"
+                android:layout_height="141dp"
+                settings:sideLabels="@array/battery_labels"
+                android:colorAccent="?android:attr/colorAccent"
+                android:gravity="end"
+                settings:textColor="?android:attr/textColorSecondary"/>
+        </LinearLayout>
+
+        <View
             android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:paddingBottom="8dp"
-            android:textAppearance="?android:attr/textAppearanceMedium"
-            android:textColor="?android:attr/textColorSecondary" />
-
-        <com.android.settingslib.graph.UsageView
-            android:id="@+id/battery_usage"
-            android:layout_width="match_parent"
-            android:layout_height="141dp"
-            settings:sideLabels="@array/battery_labels"
-            android:colorAccent="?android:attr/colorAccent"
-            android:gravity="end"
-            settings:textColor="?android:attr/textColorSecondary" />
-    </LinearLayout>
-
-    <View
-        android:layout_width="match_parent"
-        android:layout_height="1dp"
-        android:layout_marginTop="2dp"
-        android:background="?android:attr/listDivider" />
-
-    <ScrollView
-        android:layout_width="match_parent"
-        android:layout_height="match_parent">
+            android:layout_height="1dp"
+            android:layout_marginTop="2dp"
+            android:background="?android:attr/listDivider"/>
 
         <LinearLayout
             android:layout_width="match_parent"
@@ -94,6 +96,6 @@
 
         </LinearLayout>
 
-    </ScrollView>
+    </LinearLayout>
 
-</LinearLayout>
+</ScrollView>
diff --git a/res/layout/fingerprint_enroll_enrolling_base.xml b/res/layout/fingerprint_enroll_enrolling_base.xml
index e9e3385..33a5acf 100644
--- a/res/layout/fingerprint_enroll_enrolling_base.xml
+++ b/res/layout/fingerprint_enroll_enrolling_base.xml
@@ -55,8 +55,9 @@
         </FrameLayout>
 
         <include layout="@layout/fingerprint_enroll_enrolling_content"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
+            android:layout_width="@dimen/fingerprint_progress_bar_max_size"
+            android:layout_height="0dp"
+            android:layout_weight="1"
             android:layout_gravity="center_horizontal"
             android:layout_marginTop="@dimen/fingerprint_enrolling_content_margin_top"/>
 
diff --git a/res/layout/fingerprint_enroll_enrolling_content.xml b/res/layout/fingerprint_enroll_enrolling_content.xml
index 42769d1..1622f3f 100644
--- a/res/layout/fingerprint_enroll_enrolling_content.xml
+++ b/res/layout/fingerprint_enroll_enrolling_content.xml
@@ -15,32 +15,11 @@
   ~ limitations under the License
   -->
 
-<RelativeLayout
+<com.android.settings.widget.RingProgressBar
     xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/fingerprint_progress_bar"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
-    android:layout_gravity="center_horizontal">
-
-    <ImageView
-        android:id="@+id/fingerprint_animator"
-        android:layout_width="@dimen/fingerprint_animation_size"
-        android:layout_height="@dimen/fingerprint_animation_size"
-        android:layout_centerInParent="true"
-        android:background="@drawable/fp_illustration_enrollment"
-        android:backgroundTint="@color/fingerprint_indicator_background_resting"
-        android:src="@drawable/enrollment_fingerprint_isolated_animation"/>
-
-    <ProgressBar
-        android:id="@+id/fingerprint_progress_bar"
-        android:layout_width="?attr/fingerprint_progress_bar_size"
-        android:layout_height="?attr/fingerprint_progress_bar_size"
-        android:layout_centerInParent="true"
-        style="?android:attr/progressBarStyleHorizontal"
-        android:max="10000"
-        android:mirrorForRtl="false"
-        android:progress="0"
-        android:indeterminate="false"
-        android:progressDrawable="@drawable/fingerprint_progress_ring"
-        android:rotation="-90"/>
-
-</RelativeLayout>
+    android:background="@drawable/fp_illustration"
+    android:minHeight="@dimen/fingerprint_progress_bar_min_size"
+    android:progress="0" />
diff --git a/res/layout/see_all.xml b/res/layout/see_all.xml
deleted file mode 100644
index 44b263c..0000000
--- a/res/layout/see_all.xml
+++ /dev/null
@@ -1,65 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2015 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<LinearLayout
-        xmlns:android="http://schemas.android.com/apk/res/android"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:background="?android:attr/selectableItemBackground"
-        android:gravity="center_vertical"
-        android:minHeight="@dimen/dashboard_tile_minimum_height"
-        android:clickable="true"
-        android:focusable="true">
-
-    <View
-            android:layout_width="@dimen/dashboard_tile_image_size"
-            android:layout_height="@dimen/dashboard_tile_image_size"
-            android:layout_marginStart="@dimen/dashboard_tile_image_margin_start"
-            android:layout_marginEnd="@dimen/dashboard_tile_image_margin_end"
-            android:visibility="invisible" />
-
-    <LinearLayout
-            android:layout_width="match_parent"
-            android:layout_height="match_parent"
-            android:orientation="vertical">
-
-        <LinearLayout
-            android:layout_width="match_parent"
-            android:layout_height="0dip"
-            android:orientation="vertical"
-            android:gravity="center_vertical"
-            android:layout_weight="1">
-
-            <RelativeLayout
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content">
-
-                <TextView android:id="@android:id/title"
-                          android:layout_width="wrap_content"
-                          android:layout_height="wrap_content"
-                          android:singleLine="true"
-                          android:textAppearance="@android:style/TextAppearance.Material.Widget.Button.Inverse"
-                          android:textColor="?android:attr/colorAccent"
-                          android:ellipsize="marquee"
-                          android:fadingEdge="horizontal" />
-
-            </RelativeLayout>
-
-        </LinearLayout>
-
-    </LinearLayout>
-
-</LinearLayout>
diff --git a/res/layout/support_tile.xml b/res/layout/support_tile.xml
index e5e49f4..e294868 100644
--- a/res/layout/support_tile.xml
+++ b/res/layout/support_tile.xml
@@ -34,7 +34,7 @@
         android:id="@+id/tile_title"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:singleLine="true"
+        android:maxLines="2"
         android:textAppearance="@style/TextAppearance.TileTitle"
         android:ellipsize="end"
         android:fadingEdge="horizontal"/>
diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
index 04fde5a..8c02775 100644
--- a/res/values-af/strings.xml
+++ b/res/values-af/strings.xml
@@ -2280,20 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Ontkoppel"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Weergawe <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Vergeet VPN"</string>
-    <!-- no translation found for vpn_replace_vpn_title (2963898301277610248) -->
-    <skip />
-    <!-- no translation found for vpn_set_vpn_title (4009987321156037267) -->
-    <skip />
-    <!-- no translation found for vpn_first_always_on_vpn_message (3025322109743675467) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_enable_message (2577928591361606641) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_disable_message (3011818750025879902) -->
-    <skip />
-    <!-- no translation found for vpn_replace_vpn_message (5611635724578812860) -->
-    <skip />
-    <!-- no translation found for vpn_turn_on (2363136869284273872) -->
-    <skip />
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Vervang bestaande VPN?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Stel altyd-aan VPN?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"As jy hierdie instelling aanskakel, sal jy nie \'n internetverbinding hê totdat die VPN suksesvol koppel nie"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Jou bestaande VPN sal vervang word en jy sal nie \'n internetverbinding hê totdat die VPN suksesvol koppel nie"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Jy is reeds aan \'n altyd-aan VPN gekoppel. As jy aan \'n ander een koppel, sal jou bestaande VPN vervang word en sal altyd-aan-modus afgeskakel word."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Jy is reeds aan \'n VPN gekoppel. As jy aan \'n ander een koppel, sal jou bestaande VPN vervang word."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Skakel aan"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> kan nie koppel nie"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Hierdie program steun nie altyd-aan VPN nie."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2536,8 +2529,12 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Netwerk en internet"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Gekoppelde toestelle"</string>
-    <!-- no translation found for system_dashboard_summary (6112602136713843779) -->
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Programme en kennisgewings"</string>
+    <!-- no translation found for account_dashboard_title (38701889336378742) -->
     <skip />
+    <!-- no translation found for app_default_dashboard_title (8176215295082796426) -->
+    <skip />
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Taal: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Instellings"</string>
     <string name="search_menu" msgid="6283419262313758339">"Soekinstellings"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Soekinstellings"</string>
@@ -3045,8 +3042,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Dinsdag 18:01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Dinsdag 18:02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Dinsdag 18:03"</string>
-    <string name="see_all" msgid="8883901630052886984">"Sien alles"</string>
-    <string name="see_less" msgid="1250265310929558370">"Sien minder"</string>
     <string name="disconnected" msgid="5787956818111197212">"Ontkoppel"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> van die data is gebruik"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml
index 3429035..e42f043 100644
--- a/res/values-am/strings.xml
+++ b/res/values-am/strings.xml
@@ -2280,20 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"ግንኙነት አቋርጥ"</string>
     <string name="vpn_version" msgid="1939804054179766249">"ሥሪት <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"VPNን እርሳ"</string>
-    <!-- no translation found for vpn_replace_vpn_title (2963898301277610248) -->
-    <skip />
-    <!-- no translation found for vpn_set_vpn_title (4009987321156037267) -->
-    <skip />
-    <!-- no translation found for vpn_first_always_on_vpn_message (3025322109743675467) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_enable_message (2577928591361606641) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_disable_message (3011818750025879902) -->
-    <skip />
-    <!-- no translation found for vpn_replace_vpn_message (5611635724578812860) -->
-    <skip />
-    <!-- no translation found for vpn_turn_on (2363136869284273872) -->
-    <skip />
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"አሁን ያለው VPN ይተካ?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"ሁልጊዜ-የበራ VPN ይቀናበር?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"ይህን ቅንብር በማብራት VPN በተሳካ ሁኔታ እስኪገናኝ ድረስ የበይነመረብ ግንኙነት አይኖረዎትም"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"የእርስዎ ነባር VPN ይተካል፣ እና VPN በተሳካ ሁኔታ እስኪገናኝ ድረስ የበይነመረብ ግንኙነት አይኖረዎትም"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"አስቀድመው ሁልጊዜ ከበራ VPN ጋር ተገናኝተዋል። ከተለየ ጋር ከተገናኙ ነባሩ የእርስዎ VPN  ይተካል፣ እና የሁልጊዜ-በርቷል ሁነታ ይጠፋል።"</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"አስቀድመው ከአንድ VPN ጋር ተገናኝተዋል። ከተለየ ጋር ከተገናኙ ነባሩ የእርስዎ VPN ይተካል።"</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"አብራ"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> መገናኘት አልቻለም"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"ይህ መተግበሪያ ሁልጊዜ-የሚበራ ቪፒኤን አይደግፍም።"</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2536,8 +2529,12 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"አውታረ መረብ እና በይነመረብ"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"የተገናኙ መሣሪያዎች"</string>
-    <!-- no translation found for system_dashboard_summary (6112602136713843779) -->
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"መተግበሪያዎች እና ማሳወቂያዎች"</string>
+    <!-- no translation found for account_dashboard_title (38701889336378742) -->
     <skip />
+    <!-- no translation found for app_default_dashboard_title (8176215295082796426) -->
+    <skip />
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"ቋንቋ፦ <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"ቅንብሮች"</string>
     <string name="search_menu" msgid="6283419262313758339">"የፍለጋ ቅንብሮች"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"የፍለጋ ቅንብሮች"</string>
@@ -3045,8 +3042,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"ማክሰኞ 6:10 ከሰዓት (አመሻሽ)"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"ማክሰኞ 6:02 ከሰዓት (አመሻሽ)"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"ማክሰኞ 6:03 ከሰዓት (አመሻሽ)"</string>
-    <string name="see_all" msgid="8883901630052886984">"ሁሉንም ይመልከቱ"</string>
-    <string name="see_less" msgid="1250265310929558370">"ያነሰ ይመልከቱ"</string>
     <string name="disconnected" msgid="5787956818111197212">"ግንኙነት ተቋርጧል"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> ከውሂብ ጥቅም ላይ ውሏል"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index b093f91..fdeafb1 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -2348,20 +2348,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"قطع الاتصال"</string>
     <string name="vpn_version" msgid="1939804054179766249">"الإصدار <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"نسيان الشبكة الظاهرية الخاصة"</string>
-    <!-- no translation found for vpn_replace_vpn_title (2963898301277610248) -->
-    <skip />
-    <!-- no translation found for vpn_set_vpn_title (4009987321156037267) -->
-    <skip />
-    <!-- no translation found for vpn_first_always_on_vpn_message (3025322109743675467) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_enable_message (2577928591361606641) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_disable_message (3011818750025879902) -->
-    <skip />
-    <!-- no translation found for vpn_replace_vpn_message (5611635724578812860) -->
-    <skip />
-    <!-- no translation found for vpn_turn_on (2363136869284273872) -->
-    <skip />
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"هل تريد استبدال الشبكة الظاهرية الخاصة الحالية؟"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"هل تريد تشغيل الشبكة الظاهرية الخاصة باستمرار؟"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"‏عند تشغيل هذا الإعداد، لن تتمكن من الاتصال بالإنترنت إلا بعد أن ينجح اتصال الشبكة الظاهرية الخاصة (VPN)"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"‏سيتم استبدال شبكتك الظاهرية الخاصة (VPN) الحالية ولن تتمكن من استخدام اتصال الإنترنت إلا بعد أن ينجح اتصال الشبكة الظاهرية الخاصة"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"‏أنت متصل حاليًا بشبكة ظاهرية خاصة (VPN) مضبوطة على وضع التشغيل الدائم. وإذا اتصلت بشبكة ظاهرية خاصة أخرى، فسيتم استبدال شبكتك الظاهرية الخاصة الحالية، كما سيتم إيقاف وضع التشغيل الدائم."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"‏أنت متصل حاليًا بشبكة ظاهرية خاصة (VPN). وإذا اتصلت بشبكة ظاهرية خاصة أخرى، فسيتم استبدال شبكتك الظاهرية الخاصة الحالية."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"تشغيل"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"يتعذر الاتصال بـ <xliff:g id="VPN_NAME">%1$s</xliff:g>"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"‏لا يتوافق هذا التطبيق مع التشغيل الدائم للشبكة الظاهرية الخاصة (VPN)."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2624,8 +2617,13 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"الشبكة والإنترنت"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"الأجهزة المرتبطة"</string>
-    <!-- no translation found for system_dashboard_summary (6112602136713843779) -->
+    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
     <skip />
+    <!-- no translation found for account_dashboard_title (38701889336378742) -->
+    <skip />
+    <!-- no translation found for app_default_dashboard_title (8176215295082796426) -->
+    <skip />
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"اللغة: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"الإعدادات"</string>
     <string name="search_menu" msgid="6283419262313758339">"إعدادات البحث"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"إعدادات البحث"</string>
@@ -3165,8 +3163,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"الثلاثاء ٦:٠١ م"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"الثلاثاء ٦:٠٢ م"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"الثلاثاء ٦:٠٣ م"</string>
-    <string name="see_all" msgid="8883901630052886984">"عرض الكل"</string>
-    <string name="see_less" msgid="1250265310929558370">"عرض عناصر أقل"</string>
     <string name="disconnected" msgid="5787956818111197212">"تم قطع الاتصال"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"تم استخدام <xliff:g id="AMOUNT">%1$s</xliff:g> من البيانات"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-az-rAZ/strings.xml b/res/values-az-rAZ/strings.xml
index dfe7313..a26195e 100644
--- a/res/values-az-rAZ/strings.xml
+++ b/res/values-az-rAZ/strings.xml
@@ -2280,20 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Bağlantını kəsin"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Versiya <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"VPN\'i unudun"</string>
-    <!-- no translation found for vpn_replace_vpn_title (2963898301277610248) -->
-    <skip />
-    <!-- no translation found for vpn_set_vpn_title (4009987321156037267) -->
-    <skip />
-    <!-- no translation found for vpn_first_always_on_vpn_message (3025322109743675467) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_enable_message (2577928591361606641) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_disable_message (3011818750025879902) -->
-    <skip />
-    <!-- no translation found for vpn_replace_vpn_message (5611635724578812860) -->
-    <skip />
-    <!-- no translation found for vpn_turn_on (2363136869284273872) -->
-    <skip />
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Mövcud VPN əvəz edilsin?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Hər zaman aktiv VPN quraşdırılsın?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Bu ayarı aktiv etməklə, uğurlu VPN bağlantısına kimi İnternet bağlantınız olmayacaq"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Mövcud VPN əvəz ediləcək və uğurlu VPN bağlantısına kimi İnternet bağlantınız olmayacaq"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Artıq hər zaman aktiv VPN\'ə qoşulmusunuz. Əgər başqa birinə qoşulsanız, mövcud VPN əvəz ediləcək və hər zaman aktiv rejimi deaktiv ediləcək."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Artıq VPN\'ə qoşulmusunuz. Əgər başqa birinə qoşulsanız, mövcud VPN əvəz ediləcək."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Aktiv edin"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> qoşula bilməz"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Bu tətbiq hər zaman aktiv olan VPN\'i dəstəkləmir."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2536,8 +2529,12 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Şəbəkə və İnternet"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Qoşulmuş cihazlar"</string>
-    <!-- no translation found for system_dashboard_summary (6112602136713843779) -->
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Tətbiq və bildirişlər"</string>
+    <!-- no translation found for account_dashboard_title (38701889336378742) -->
     <skip />
+    <!-- no translation found for app_default_dashboard_title (8176215295082796426) -->
+    <skip />
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Dil: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Ayarlar"</string>
     <string name="search_menu" msgid="6283419262313758339">"Axtarış ayarları"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Axtarış ayarları"</string>
@@ -3045,8 +3042,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Ç.a 6:01GƏ"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Ç.a 6:02GƏ"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Ç.a 6:03GƏ"</string>
-    <string name="see_all" msgid="8883901630052886984">"Hamısına baxın"</string>
-    <string name="see_less" msgid="1250265310929558370">"Baxışı kiçildin"</string>
     <string name="disconnected" msgid="5787956818111197212">"Bağlantı kəsilib"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> data istifadə edildi"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-b+sr+Latn/strings.xml b/res/values-b+sr+Latn/strings.xml
index 1e82129..39ce84b 100644
--- a/res/values-b+sr+Latn/strings.xml
+++ b/res/values-b+sr+Latn/strings.xml
@@ -2297,20 +2297,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Prekini vezu"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Verzija <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Zaboravi VPN"</string>
-    <!-- no translation found for vpn_replace_vpn_title (2963898301277610248) -->
-    <skip />
-    <!-- no translation found for vpn_set_vpn_title (4009987321156037267) -->
-    <skip />
-    <!-- no translation found for vpn_first_always_on_vpn_message (3025322109743675467) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_enable_message (2577928591361606641) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_disable_message (3011818750025879902) -->
-    <skip />
-    <!-- no translation found for vpn_replace_vpn_message (5611635724578812860) -->
-    <skip />
-    <!-- no translation found for vpn_turn_on (2363136869284273872) -->
-    <skip />
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Želite li da zamenite postojeći VPN?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Želite li da podesite uvek uključeni VPN?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Ako uključite ovo podešavanje, nećete imati internet vezu dok se VPN ne poveže"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Postojeći VPN će biti zamenjen i nećete imati internet vezu dok se VPN ne poveže"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Već ste povezani sa uvek uključenim VPN-om. Ako se povežete sa nekim drugim, postojeći VPN će biti zamenjen, a režim Uvek uključen će biti isključen."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Već ste povezani sa VPN-om. Ako se povežete sa nekim drugim, postojeći VPN će biti zamenjen."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Uključi"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"Povezivanje sa VPN-om <xliff:g id="VPN_NAME">%1$s</xliff:g> nije uspelo"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Ova aplikacija ne podržava stalno uključeni VPN."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2558,8 +2551,12 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Mreža i internet"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Povezani uređaji"</string>
-    <!-- no translation found for system_dashboard_summary (6112602136713843779) -->
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Aplikacije i obaveštenja"</string>
+    <!-- no translation found for account_dashboard_title (38701889336378742) -->
     <skip />
+    <!-- no translation found for app_default_dashboard_title (8176215295082796426) -->
+    <skip />
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Jezik: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Podešavanja"</string>
     <string name="search_menu" msgid="6283419262313758339">"Pretražite podešavanja"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Podešavanja pretrage"</string>
@@ -3075,8 +3072,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Uto 18:01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Uto 18:02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Uto 18:03"</string>
-    <string name="see_all" msgid="8883901630052886984">"Prikaži sve"</string>
-    <string name="see_less" msgid="1250265310929558370">"Prikaži manje"</string>
     <string name="disconnected" msgid="5787956818111197212">"Veza je prekinuta"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"Koristi se <xliff:g id="AMOUNT">%1$s</xliff:g> podataka"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-be-rBY/strings.xml b/res/values-be-rBY/strings.xml
index a3f3b37..f81a1f9 100644
--- a/res/values-be-rBY/strings.xml
+++ b/res/values-be-rBY/strings.xml
@@ -2314,20 +2314,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Адключыць"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Версія <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Забыць VPN"</string>
-    <!-- no translation found for vpn_replace_vpn_title (2963898301277610248) -->
-    <skip />
-    <!-- no translation found for vpn_set_vpn_title (4009987321156037267) -->
-    <skip />
-    <!-- no translation found for vpn_first_always_on_vpn_message (3025322109743675467) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_enable_message (2577928591361606641) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_disable_message (3011818750025879902) -->
-    <skip />
-    <!-- no translation found for vpn_replace_vpn_message (5611635724578812860) -->
-    <skip />
-    <!-- no translation found for vpn_turn_on (2363136869284273872) -->
-    <skip />
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Замяніць існуючую VPN?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Наладзіць заўсёды ўключаную VPN?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Калі вы ўключыце гэту наладу, у вас не будзе падключэння да інтэрнэту, пакуль VPN паспяхова не падключыцца"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Ваша існуючая VPN будзе заменена, і ў вас не будзе падключэння да інтэрнэту, пакуль VPN паспяхова не падключыцца"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Вы ўжо падключаны да заўсёды ўключанай VPN. Калі вы падключыцеся да іншай, ваша існуючая VPN будзе заменена, а рэжым \"заўсёды ўключана\" будзе адключаны."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Вы ўжо падключаны да VPN. Калі вы падключыцеся да іншай, ваша існуючая VPN будзе заменена."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Уключыць"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> не можа падключыцца"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Гэта праграма не падтрымлівае пастаянна ўключаную VPN."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2580,8 +2573,12 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Сетка і інтэрнэт"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Падключаныя прылады"</string>
-    <!-- no translation found for system_dashboard_summary (6112602136713843779) -->
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Праграмы і апавяшчэнні"</string>
+    <!-- no translation found for account_dashboard_title (38701889336378742) -->
     <skip />
+    <!-- no translation found for app_default_dashboard_title (8176215295082796426) -->
+    <skip />
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Мова: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Налады"</string>
     <string name="search_menu" msgid="6283419262313758339">"Налады пошуку"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Налады пошуку"</string>
@@ -3105,8 +3102,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Аўторак, 18:01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Аўторак, 18:02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Аўторак, 18:03"</string>
-    <string name="see_all" msgid="8883901630052886984">"Прагледзець усё"</string>
-    <string name="see_less" msgid="1250265310929558370">"Паказаць менш"</string>
     <string name="disconnected" msgid="5787956818111197212">"Адлучана"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> трафіку выкарыстана"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index f68cc1f..fcfdbd1 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -2280,20 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Прекратяване на връзката"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Версия <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Забравяне на вирт. частна мрежа (VPN)"</string>
-    <!-- no translation found for vpn_replace_vpn_title (2963898301277610248) -->
-    <skip />
-    <!-- no translation found for vpn_set_vpn_title (4009987321156037267) -->
-    <skip />
-    <!-- no translation found for vpn_first_always_on_vpn_message (3025322109743675467) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_enable_message (2577928591361606641) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_disable_message (3011818750025879902) -->
-    <skip />
-    <!-- no translation found for vpn_replace_vpn_message (5611635724578812860) -->
-    <skip />
-    <!-- no translation found for vpn_turn_on (2363136869284273872) -->
-    <skip />
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Да се замени ли съществуващата VPN?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Да се зададе ли винаги включена виртуална частна мрежа (VPN)?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Ако включите тази настройка, няма да имате достъп до интернет, докато не се установи успешна връзка с виртуалната частна мрежа (VPN)"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Съществуващата ви виртуална частна мрежа (VPN) ще бъде заменена и няма да имате достъп до интернет, докато не се установи успешна връзка с новата VPN"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Вече сте свързани с винаги включена виртуална частна мрежа (VPN). Ако установите връзка с друга VPN, съществуващата ще бъде заменена и режимът за винаги включена виртуална частна мрежа ще се деактивира."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Вече сте свързани с виртуална частна мрежа (VPN). Ако установите връзка с друга VPN, съществуващата ще бъде заменена."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Включване"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"Не може да се установи връзка с мрежата „<xliff:g id="VPN_NAME">%1$s</xliff:g>“"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Това приложение не поддържа винаги включени VPN."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2536,8 +2529,12 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Мрежа и интернет"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Свързани устройства"</string>
-    <!-- no translation found for system_dashboard_summary (6112602136713843779) -->
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Приложения и известия"</string>
+    <!-- no translation found for account_dashboard_title (38701889336378742) -->
     <skip />
+    <!-- no translation found for app_default_dashboard_title (8176215295082796426) -->
+    <skip />
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Език: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Настройки"</string>
     <string name="search_menu" msgid="6283419262313758339">"Търсете в настройките"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Настройки за търсене"</string>
@@ -3045,8 +3042,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"вт, 18:01 ч."</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"вт, 18:02 ч."</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"вт, 18:03 ч."</string>
-    <string name="see_all" msgid="8883901630052886984">"Преглед на всичко"</string>
-    <string name="see_less" msgid="1250265310929558370">"Преглед на по-малко"</string>
     <string name="disconnected" msgid="5787956818111197212">"Връзката е прекратена"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"Използвали сте <xliff:g id="AMOUNT">%1$s</xliff:g> от данните"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-bn-rBD/strings.xml b/res/values-bn-rBD/strings.xml
index 9b58e71..9bee460 100644
--- a/res/values-bn-rBD/strings.xml
+++ b/res/values-bn-rBD/strings.xml
@@ -2280,20 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"সংযোগ বিচ্ছিন্ন করুন"</string>
     <string name="vpn_version" msgid="1939804054179766249">"<xliff:g id="VERSION">%s</xliff:g> সংস্করণ"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"VPN সরিয়ে দিন"</string>
-    <!-- no translation found for vpn_replace_vpn_title (2963898301277610248) -->
-    <skip />
-    <!-- no translation found for vpn_set_vpn_title (4009987321156037267) -->
-    <skip />
-    <!-- no translation found for vpn_first_always_on_vpn_message (3025322109743675467) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_enable_message (2577928591361606641) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_disable_message (3011818750025879902) -->
-    <skip />
-    <!-- no translation found for vpn_replace_vpn_message (5611635724578812860) -->
-    <skip />
-    <!-- no translation found for vpn_turn_on (2363136869284273872) -->
-    <skip />
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"বিদ্যমান VPN প্রতিস্থাপন করতে চান?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"সর্বদা-চালু VPN সেট করতে চান?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"এই সেটিং চালু করলে, VPN সফলভাবে সংযুক্ত না হওয়া পর্যন্ত আপনার কাছে কোনো ইন্টারনেট সংযোগ থাকবে না"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"আপনার বিদ্যমান VPN প্রতিস্থাপন করা হবে এবং VPN সফলভাবে সংযুক্ত না হওয়া পর্যন্ত আপনার কাছে কোনো ইন্টারনেট সংযোগ থাকবে না"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"আপনি ইতিমধ্যেই একটি সর্বদা-চালু VPN এর সাথে সংযুক্ত রয়েছেন৷ আপনি যদি অন্য আরেকটিতে সংযোগ করেন তবে আপনার বিদ্যমান VPN প্রতিস্থাপন করা হবে এবং সর্বদা-চালু মোড বন্ধ হবে৷"</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"আপনি ইতিমধ্যেই একটি VPN এর সাথে সংযুক্ত রয়েছেন৷ যদি আপনি অন্য আরেকটিতে সংযুক্ত করে থাকেন তবে আপনার বিদ্যমান VPN প্রতিস্থাপন করা হবে৷"</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"চালু করুন"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> সংযোগ করতে পারেনি"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"এই অ্যাপ্লিকেশানটি সর্বদা-চালু VPN সমর্থন করে না৷"</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2536,8 +2529,12 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"নেটওয়ার্ক ও ইন্টারনেট"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"সংযুক্ত ডিভাইস"</string>
-    <!-- no translation found for system_dashboard_summary (6112602136713843779) -->
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"অ্যাপ্স &amp; বিজ্ঞপ্তিগুলি"</string>
+    <!-- no translation found for account_dashboard_title (38701889336378742) -->
     <skip />
+    <!-- no translation found for app_default_dashboard_title (8176215295082796426) -->
+    <skip />
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"ভাষা: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"সেটিংস"</string>
     <string name="search_menu" msgid="6283419262313758339">"অনুসন্ধান সেটিংস"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"অনুসন্ধান সেটিংস"</string>
@@ -3045,8 +3042,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"মঙ্গলবার সন্ধ্যা ৬.০১ এ"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"মঙ্গলবার সন্ধ্যা ৬.০২ এ"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"মঙ্গলবার সন্ধ্যা ৬.০৩ এ"</string>
-    <string name="see_all" msgid="8883901630052886984">"সবগুলি দেখুন"</string>
-    <string name="see_less" msgid="1250265310929558370">"কম দেখুন"</string>
     <string name="disconnected" msgid="5787956818111197212">"সংযোগ বিচ্ছিন্ন হয়েছে"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> ডেটা ব্যবহৃত হয়েছে"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-bs-rBA/strings.xml b/res/values-bs-rBA/strings.xml
index 82e1026..1c5fb01 100644
--- a/res/values-bs-rBA/strings.xml
+++ b/res/values-bs-rBA/strings.xml
@@ -2297,20 +2297,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Prekini vezu"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Verzija <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Zaboravi VPN"</string>
-    <!-- no translation found for vpn_replace_vpn_title (2963898301277610248) -->
-    <skip />
-    <!-- no translation found for vpn_set_vpn_title (4009987321156037267) -->
-    <skip />
-    <!-- no translation found for vpn_first_always_on_vpn_message (3025322109743675467) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_enable_message (2577928591361606641) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_disable_message (3011818750025879902) -->
-    <skip />
-    <!-- no translation found for vpn_replace_vpn_message (5611635724578812860) -->
-    <skip />
-    <!-- no translation found for vpn_turn_on (2363136869284273872) -->
-    <skip />
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Želite li zamijeniti postojeći VPN?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Želite li postaviti uvijek uključen VPN?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Ako uključite ovu postavku, nećete imati internetsku vezu dok se VPN ne poveže uspješno."</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Vaša postojeći VPN će biti zamijenjen i nećete imati internetsku vezu dok se VPN ne poveže uspješno."</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Već ste povezani na \"uvijek uključen\" VPN. Ako se povežete na drugu mrežu, vaša postojeća VPN će biti zamijenjena, a način rada \"uvijek uključeno\" će se isključiti."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Već ste povezani na VPN. Ako se povežete na drugu, postojeći VPN će biti zamijenjen."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Uključi"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> se ne može povezati"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Ova aplikacija ne podržava uvijek aktivni VPN."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2558,8 +2551,12 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Mreža i internet"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Povezani uređaji"</string>
-    <!-- no translation found for system_dashboard_summary (6112602136713843779) -->
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Aplikacije i obavještenja"</string>
+    <!-- no translation found for account_dashboard_title (38701889336378742) -->
     <skip />
+    <!-- no translation found for app_default_dashboard_title (8176215295082796426) -->
+    <skip />
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Jezik: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Postavke"</string>
     <string name="search_menu" msgid="6283419262313758339">"Postavke pretraživanja"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Postavke pretraživanja"</string>
@@ -3075,8 +3072,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Uto 18:01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Uto 18:02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Uto 18:03"</string>
-    <string name="see_all" msgid="8883901630052886984">"Prikaži sve"</string>
-    <string name="see_less" msgid="1250265310929558370">"Vidi manje"</string>
     <string name="disconnected" msgid="5787956818111197212">"Isključen"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> podataka u upotrebi"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index ef5473e..acb1e2c 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -2280,20 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Desconnecta"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Versió <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Oblida la VPN"</string>
-    <!-- no translation found for vpn_replace_vpn_title (2963898301277610248) -->
-    <skip />
-    <!-- no translation found for vpn_set_vpn_title (4009987321156037267) -->
-    <skip />
-    <!-- no translation found for vpn_first_always_on_vpn_message (3025322109743675467) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_enable_message (2577928591361606641) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_disable_message (3011818750025879902) -->
-    <skip />
-    <!-- no translation found for vpn_replace_vpn_message (5611635724578812860) -->
-    <skip />
-    <!-- no translation found for vpn_turn_on (2363136869284273872) -->
-    <skip />
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Vols substituir la VPN actual?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Vols definir la VPN sempre activa?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"En activar aquesta opció de configuració, no tindràs connexió a Internet fins que la VPN es connecti correctament"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"La VPN existent se substituirà i no tindràs connexió a Internet fins que la VPN es connecti correctament"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Ja estàs connectat a una VPN que està sempre activa. Si et connectes a una altra, se substituirà la VPN existent i el mode sempre actiu es desactivarà."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Ja t\'has connectat a una VPN. Si et connectes a una altra VPN, se substituirà l\'actual."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Activa"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"No es pot connectar amb <xliff:g id="VPN_NAME">%1$s</xliff:g>"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Aquesta aplicació no és compatible amb una VPN sempre activada."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2536,8 +2529,12 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Xarxa i Internet"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Dispositius connectats"</string>
-    <!-- no translation found for system_dashboard_summary (6112602136713843779) -->
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Aplicacions i notificacions"</string>
+    <!-- no translation found for account_dashboard_title (38701889336378742) -->
     <skip />
+    <!-- no translation found for app_default_dashboard_title (8176215295082796426) -->
+    <skip />
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Idioma: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Configuració"</string>
     <string name="search_menu" msgid="6283419262313758339">"Configuració de la cerca"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Configuració de la cerca"</string>
@@ -3045,8 +3042,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Dimarts a les 18:01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Dimarts a les 18:02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Dimarts a les 18:03"</string>
-    <string name="see_all" msgid="8883901630052886984">"Mostra-ho tot"</string>
-    <string name="see_less" msgid="1250265310929558370">"Mostra\'n menys"</string>
     <string name="disconnected" msgid="5787956818111197212">"Desconnectada"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> de dades utilitzades"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index 29f1248..0c8fcce 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -2314,20 +2314,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Odpojit"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Verze <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Zapomenout VPN"</string>
-    <!-- no translation found for vpn_replace_vpn_title (2963898301277610248) -->
-    <skip />
-    <!-- no translation found for vpn_set_vpn_title (4009987321156037267) -->
-    <skip />
-    <!-- no translation found for vpn_first_always_on_vpn_message (3025322109743675467) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_enable_message (2577928591361606641) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_disable_message (3011818750025879902) -->
-    <skip />
-    <!-- no translation found for vpn_replace_vpn_message (5611635724578812860) -->
-    <skip />
-    <!-- no translation found for vpn_turn_on (2363136869284273872) -->
-    <skip />
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Nahradit stávající síť VPN?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Nastavit trvalou síť VPN?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Pokud toto nastavení zapnete, do úspěšného připojení k VPN budete odpojeni od internetu"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Stávající síť VPN bude nahrazena a do jejího úspěšného připojení budete odpojeni od internetu."</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Již jste připojeni k trvalé síti VPN. Pokud se připojíte k jiné, stávající síť VPN bude nahrazena a trvalý režim vypnut."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Již jste připojeni k síti VPN. Pokud se připojíte k jiné, stávající síť VPN bude nahrazena."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Zapnout"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"Síť <xliff:g id="VPN_NAME">%1$s</xliff:g> se nedokáže připojit"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Tato aplikace nepodporuje trvalou síť VPN."</string>
     <string name="vpn_title" msgid="6317731879966640551">"Síť VPN"</string>
@@ -2580,8 +2573,12 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Síť a internet"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Připojená zařízení"</string>
-    <!-- no translation found for system_dashboard_summary (6112602136713843779) -->
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Aplikace a oznámení"</string>
+    <!-- no translation found for account_dashboard_title (38701889336378742) -->
     <skip />
+    <!-- no translation found for app_default_dashboard_title (8176215295082796426) -->
+    <skip />
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Jazyk: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Nastavení"</string>
     <string name="search_menu" msgid="6283419262313758339">"Nastavení vyhledávání"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Vyhledávání nastavení"</string>
@@ -3105,8 +3102,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Út 18:01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Út 18:02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Út 18:03"</string>
-    <string name="see_all" msgid="8883901630052886984">"Zobrazit vše"</string>
-    <string name="see_less" msgid="1250265310929558370">"Zobrazit méně"</string>
     <string name="disconnected" msgid="5787956818111197212">"Odpojeno"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"Využití dat: <xliff:g id="AMOUNT">%1$s</xliff:g>"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index d954292..a90323c 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -1341,7 +1341,7 @@
     <string name="legal_information" msgid="5769301644270604095">"Juridiske oplysninger"</string>
     <string name="contributors_title" msgid="5917703088825286504">"Bidragydere"</string>
     <string name="manual" msgid="3025943393642974445">"Brugervejledning"</string>
-    <string name="regulatory_labels" msgid="1293050314122427492">"Etiketter for regler"</string>
+    <string name="regulatory_labels" msgid="1293050314122427492">"Certificeringer"</string>
     <string name="safety_and_regulatory_info" msgid="5103161279848427185">"Brugervejledning i sikkerhed og regler"</string>
     <string name="copyright_title" msgid="865906688917260647">"Ophavsret"</string>
     <string name="license_title" msgid="1990487604356037871">"Licens"</string>
@@ -2280,20 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Afbryd"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Version <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Glem VPN"</string>
-    <!-- no translation found for vpn_replace_vpn_title (2963898301277610248) -->
-    <skip />
-    <!-- no translation found for vpn_set_vpn_title (4009987321156037267) -->
-    <skip />
-    <!-- no translation found for vpn_first_always_on_vpn_message (3025322109743675467) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_enable_message (2577928591361606641) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_disable_message (3011818750025879902) -->
-    <skip />
-    <!-- no translation found for vpn_replace_vpn_message (5611635724578812860) -->
-    <skip />
-    <!-- no translation found for vpn_turn_on (2363136869284273872) -->
-    <skip />
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Erstat det eksisterende VPN-netværk?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Skal VPN altid være slået til?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Hvis du aktiverer denne indstilling, vil du ikke have nogen internetforbindelse, før VPN-netværket etablerer forbindelse."</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Dit eksisterende VPN-netværk erstattes, og du vil ikke have nogen internetforbindelse, før VPN-netværket etablerer forbindelse."</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Du har allerede forbindelse til et VPN-netværk, der altid er slået til. Hvis du opretter forbindelse til et andet netværk, erstattes dit eksisterende VPN, og Altid slået til-tilstanden deaktiveres."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Du har allerede forbindelse til et VPN-netværk. Hvis du opretter forbindelse til et andet, erstattes dit eksisterende VPN."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Aktivér"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> kan ikke oprette forbindelse"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Denne app understøtter ikke VPN, der altid er aktiveret."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2536,15 +2529,19 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Netværk &amp; internet"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Tilsluttede enheder"</string>
-    <!-- no translation found for system_dashboard_summary (6112602136713843779) -->
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Apps og underretninger"</string>
+    <!-- no translation found for account_dashboard_title (38701889336378742) -->
     <skip />
+    <!-- no translation found for app_default_dashboard_title (8176215295082796426) -->
+    <skip />
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Sprog: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Indstillinger"</string>
     <string name="search_menu" msgid="6283419262313758339">"Søgeindstillinger"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Indstillinger for søgning"</string>
     <string name="search_recents_queries_label" msgid="2128811638532309069">"Seneste søgninger"</string>
     <string name="search_results_label" msgid="4163304782363526148">"Resultater"</string>
     <string name="keywords_wifi" msgid="1395786161993828719">"wifi, wi-fi, netværksforbindelse"</string>
-    <string name="keywords_more_default_sms_app" msgid="2265154063220360784">"sms-besked, sms, beskeder, chat"</string>
+    <string name="keywords_more_default_sms_app" msgid="2265154063220360784">"sms, sende sms-beskeder, beskeder, chat"</string>
     <string name="keywords_more_mobile_networks" msgid="1538131503712402851">"mobil, mobilselskab, trådløs, data, 4g, 3g, 2g, lte"</string>
     <string name="keywords_wifi_calling" msgid="1784064367330122679">"wifi, wi-fi, ring op, opkald"</string>
     <string name="keywords_home" msgid="3626170808219458848">"starter"</string>
@@ -3045,8 +3042,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Tir. 18:01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Tir. 18:02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Tir. 18:03"</string>
-    <string name="see_all" msgid="8883901630052886984">"Se alle"</string>
-    <string name="see_less" msgid="1250265310929558370">"Se mindre"</string>
     <string name="disconnected" msgid="5787956818111197212">"Afbrudt"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"Du har brugt <xliff:g id="AMOUNT">%1$s</xliff:g> data"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index ea1811e..6c09730 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -2280,20 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Verbindung trennen"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Version <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"VPN entfernen"</string>
-    <!-- no translation found for vpn_replace_vpn_title (2963898301277610248) -->
-    <skip />
-    <!-- no translation found for vpn_set_vpn_title (4009987321156037267) -->
-    <skip />
-    <!-- no translation found for vpn_first_always_on_vpn_message (3025322109743675467) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_enable_message (2577928591361606641) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_disable_message (3011818750025879902) -->
-    <skip />
-    <!-- no translation found for vpn_replace_vpn_message (5611635724578812860) -->
-    <skip />
-    <!-- no translation found for vpn_turn_on (2363136869284273872) -->
-    <skip />
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Aktuelles VPN ersetzen?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Durchgehend aktives VPN aktivieren?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Wenn du diese Einstellung aktivierst, wird die Internetverbindung erst dann hergestellt, wenn eine VPN-Verbindung besteht"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Dein aktuelles VPN wird ersetzt. Die Internetverbindung wird erst dann hergestellt, wenn eine VPN-Verbindung besteht"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Du bist schon mit einem durchgehend aktiven VPN verbunden. Wenn du eine Verbindung mit einem anderen VPN herstellst, wird dein aktuelles ersetzt und der Modus \"Durchgehend aktives VPN\" wird deaktiviert."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Du bist schon mit einem VPN verbunden. Wenn du eine Verbindung mit einem anderen VPN herstellst, wird dein aktuelles ersetzt."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Aktivieren"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"Verbindung zu <xliff:g id="VPN_NAME">%1$s</xliff:g> kann nicht hergestellt werden"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Bei dieser App wird Always-On-VPN nicht unterstützt."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2367,7 +2360,7 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="1659125858619760573">"Nicht eingerichtet – Arbeitsprofil"</string>
     <string name="user_admin" msgid="993402590002400782">"Administrator"</string>
     <string name="user_you" msgid="1639158809315025986">"Ich (<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="5148818000228994488">"Alias"</string>
+    <string name="user_nickname" msgid="5148818000228994488">"Spitzname"</string>
     <string name="user_add_user_type_title" msgid="2146438670792322349">"Hinzufügen"</string>
     <string name="user_add_max_count" msgid="5405885348463433157">"Du kannst bis zu <xliff:g id="USER_COUNT">%1$d</xliff:g> Nutzer hinzufügen."</string>
     <string name="user_add_user_item_summary" msgid="4702776187132008661">"Die Nutzer haben eigene Apps und Inhalte."</string>
@@ -2536,8 +2529,12 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Netzwerk &amp; Internet"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Verbundene Geräte"</string>
-    <!-- no translation found for system_dashboard_summary (6112602136713843779) -->
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Apps &amp; Benachrichtigungen"</string>
+    <!-- no translation found for account_dashboard_title (38701889336378742) -->
     <skip />
+    <!-- no translation found for app_default_dashboard_title (8176215295082796426) -->
+    <skip />
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Sprache: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Einstellungen"</string>
     <string name="search_menu" msgid="6283419262313758339">"Sucheinstellungen"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Sucheinstellungen"</string>
@@ -3047,8 +3044,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Di. 18:01 Uhr"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Di. 18:02 Uhr"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Di. 18:03 Uhr"</string>
-    <string name="see_all" msgid="8883901630052886984">"Alle anzeigen"</string>
-    <string name="see_less" msgid="1250265310929558370">"Weniger anzeigen"</string>
     <string name="disconnected" msgid="5787956818111197212">"Verbindung getrennt"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> genutzt"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index 6ed186a..8b0b17e 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -2280,20 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Αποσύνδεση"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Έκδοση <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Διαγραφή VPN"</string>
-    <!-- no translation found for vpn_replace_vpn_title (2963898301277610248) -->
-    <skip />
-    <!-- no translation found for vpn_set_vpn_title (4009987321156037267) -->
-    <skip />
-    <!-- no translation found for vpn_first_always_on_vpn_message (3025322109743675467) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_enable_message (2577928591361606641) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_disable_message (3011818750025879902) -->
-    <skip />
-    <!-- no translation found for vpn_replace_vpn_message (5611635724578812860) -->
-    <skip />
-    <!-- no translation found for vpn_turn_on (2363136869284273872) -->
-    <skip />
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Αντικατάσταση υπάρχοντος VPN;"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Ενεργοποίηση του μονίμως ενεργού VPN;"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Με την ενεργοποίηση αυτής της ρύθμισης, δεν θα έχετε σύνδεση στο διαδίκτυο μέχρι να συνδεθεί επιτυχώς το VPN"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Το υπάρχον VPN θα αντικατασταθεί και δεν θα έχετε σύνδεση στο διαδίκτυο μέχρι να συνδεθεί επιτυχώς το VPN"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Είστε ήδη συνδεδεμένοι σε ένα μονίμως ενεργό VPN. Εάν συνδεθείτε σε κάποιο άλλο, το υπάρχον VPN θα αντικατασταθεί και η λειτουργία μόνιμης ενεργοποίησης θα απενεργοποιηθεί."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Είστε ήδη συνδεδεμένοι σε κάποιο VPN. Εάν συνδεθείτε σε κάποιο άλλο, το υπάρχον VPN θα αντικατασταθεί."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Ενεργοποίηση"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"Αδυναμία σύνδεσης <xliff:g id="VPN_NAME">%1$s</xliff:g>"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Αυτή η εφαρμογή δεν υποστηρίζει μονίμως ενεργό VPN."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2536,8 +2529,12 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Δίκτυο και διαδίκτυο"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Συνδεδεμένες συσκευές"</string>
-    <!-- no translation found for system_dashboard_summary (6112602136713843779) -->
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Εφαρμογές και ειδοποιήσεις"</string>
+    <!-- no translation found for account_dashboard_title (38701889336378742) -->
     <skip />
+    <!-- no translation found for app_default_dashboard_title (8176215295082796426) -->
+    <skip />
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Γλώσσα: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Ρυθμίσεις"</string>
     <string name="search_menu" msgid="6283419262313758339">"Ρυθμίσεις αναζήτησης"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Ρυθμίσεις αναζήτησης"</string>
@@ -3045,8 +3042,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Τρίτη 6:01 μ.μ."</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Τρίτη 6:02 μ.μ."</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Τρίτη 6:03 μ.μ."</string>
-    <string name="see_all" msgid="8883901630052886984">"Εμφάνιση όλων"</string>
-    <string name="see_less" msgid="1250265310929558370">"Εμφάνιση λιγότερων"</string>
     <string name="disconnected" msgid="5787956818111197212">"Αποσυνδεδεμένο"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"Χρησιμοποιήθηκε το <xliff:g id="AMOUNT">%1$s</xliff:g> των δεδομένων"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml
index b95a6a1..5865af6 100644
--- a/res/values-en-rAU/strings.xml
+++ b/res/values-en-rAU/strings.xml
@@ -2280,20 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Disconnect"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Version <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Forget VPN"</string>
-    <!-- no translation found for vpn_replace_vpn_title (2963898301277610248) -->
-    <skip />
-    <!-- no translation found for vpn_set_vpn_title (4009987321156037267) -->
-    <skip />
-    <!-- no translation found for vpn_first_always_on_vpn_message (3025322109743675467) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_enable_message (2577928591361606641) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_disable_message (3011818750025879902) -->
-    <skip />
-    <!-- no translation found for vpn_replace_vpn_message (5611635724578812860) -->
-    <skip />
-    <!-- no translation found for vpn_turn_on (2363136869284273872) -->
-    <skip />
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Replace existing VPN?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Set always-on VPN?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"By turning on this setting, you won\'t have an Internet connection until the VPN successfully connects"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Your existing VPN will be replaced and you won\'t have an Internet connection until the VPN successfully connects"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"You\'re already connected to an always-on VPN. If you connect to a different one, your existing VPN will be replaced and always-on mode will turn off."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"You\'re already connected to a VPN. If you connect to a different one, your existing VPN will be replaced."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Turn on"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> can\'t connect"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"This app doesn\'t support always-on VPN."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2536,8 +2529,12 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Network &amp; Internet"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Connected devices"</string>
-    <!-- no translation found for system_dashboard_summary (6112602136713843779) -->
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Apps &amp; notifications"</string>
+    <!-- no translation found for account_dashboard_title (38701889336378742) -->
     <skip />
+    <!-- no translation found for app_default_dashboard_title (8176215295082796426) -->
+    <skip />
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Language: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Settings"</string>
     <string name="search_menu" msgid="6283419262313758339">"Search Settings"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Search settings"</string>
@@ -3045,8 +3042,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Tue 6:01 p.m."</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Tue 6:02 p.m."</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Tue 6:03 p.m."</string>
-    <string name="see_all" msgid="8883901630052886984">"See all"</string>
-    <string name="see_less" msgid="1250265310929558370">"See less"</string>
     <string name="disconnected" msgid="5787956818111197212">"Disconnected"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> of data used"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index ae1dad8..ba050f2 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -2280,20 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Disconnect"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Version <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Forget VPN"</string>
-    <!-- no translation found for vpn_replace_vpn_title (2963898301277610248) -->
-    <skip />
-    <!-- no translation found for vpn_set_vpn_title (4009987321156037267) -->
-    <skip />
-    <!-- no translation found for vpn_first_always_on_vpn_message (3025322109743675467) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_enable_message (2577928591361606641) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_disable_message (3011818750025879902) -->
-    <skip />
-    <!-- no translation found for vpn_replace_vpn_message (5611635724578812860) -->
-    <skip />
-    <!-- no translation found for vpn_turn_on (2363136869284273872) -->
-    <skip />
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Replace existing VPN?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Set always-on VPN?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"By turning on this setting, you won\'t have an Internet connection until the VPN successfully connects"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Your existing VPN will be replaced and you won\'t have an Internet connection until the VPN successfully connects"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"You\'re already connected to an always-on VPN. If you connect to a different one, your existing VPN will be replaced and always-on mode will turn off."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"You\'re already connected to a VPN. If you connect to a different one, your existing VPN will be replaced."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Turn on"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> can\'t connect"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"This app doesn\'t support always-on VPN."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2536,8 +2529,12 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Network &amp; Internet"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Connected devices"</string>
-    <!-- no translation found for system_dashboard_summary (6112602136713843779) -->
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Apps &amp; notifications"</string>
+    <!-- no translation found for account_dashboard_title (38701889336378742) -->
     <skip />
+    <!-- no translation found for app_default_dashboard_title (8176215295082796426) -->
+    <skip />
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Language: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Settings"</string>
     <string name="search_menu" msgid="6283419262313758339">"Search Settings"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Search settings"</string>
@@ -3045,8 +3042,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Tue 6:01 p.m."</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Tue 6:02 p.m."</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Tue 6:03 p.m."</string>
-    <string name="see_all" msgid="8883901630052886984">"See all"</string>
-    <string name="see_less" msgid="1250265310929558370">"See less"</string>
     <string name="disconnected" msgid="5787956818111197212">"Disconnected"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> of data used"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml
index ae1dad8..ba050f2 100644
--- a/res/values-en-rIN/strings.xml
+++ b/res/values-en-rIN/strings.xml
@@ -2280,20 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Disconnect"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Version <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Forget VPN"</string>
-    <!-- no translation found for vpn_replace_vpn_title (2963898301277610248) -->
-    <skip />
-    <!-- no translation found for vpn_set_vpn_title (4009987321156037267) -->
-    <skip />
-    <!-- no translation found for vpn_first_always_on_vpn_message (3025322109743675467) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_enable_message (2577928591361606641) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_disable_message (3011818750025879902) -->
-    <skip />
-    <!-- no translation found for vpn_replace_vpn_message (5611635724578812860) -->
-    <skip />
-    <!-- no translation found for vpn_turn_on (2363136869284273872) -->
-    <skip />
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Replace existing VPN?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Set always-on VPN?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"By turning on this setting, you won\'t have an Internet connection until the VPN successfully connects"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Your existing VPN will be replaced and you won\'t have an Internet connection until the VPN successfully connects"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"You\'re already connected to an always-on VPN. If you connect to a different one, your existing VPN will be replaced and always-on mode will turn off."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"You\'re already connected to a VPN. If you connect to a different one, your existing VPN will be replaced."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Turn on"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> can\'t connect"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"This app doesn\'t support always-on VPN."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2536,8 +2529,12 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Network &amp; Internet"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Connected devices"</string>
-    <!-- no translation found for system_dashboard_summary (6112602136713843779) -->
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Apps &amp; notifications"</string>
+    <!-- no translation found for account_dashboard_title (38701889336378742) -->
     <skip />
+    <!-- no translation found for app_default_dashboard_title (8176215295082796426) -->
+    <skip />
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Language: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Settings"</string>
     <string name="search_menu" msgid="6283419262313758339">"Search Settings"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Search settings"</string>
@@ -3045,8 +3042,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Tue 6:01 p.m."</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Tue 6:02 p.m."</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Tue 6:03 p.m."</string>
-    <string name="see_all" msgid="8883901630052886984">"See all"</string>
-    <string name="see_less" msgid="1250265310929558370">"See less"</string>
     <string name="disconnected" msgid="5787956818111197212">"Disconnected"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> of data used"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index 029f964..7bd045b 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -2280,20 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Desconectar"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Versión <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Borrar VPN"</string>
-    <!-- no translation found for vpn_replace_vpn_title (2963898301277610248) -->
-    <skip />
-    <!-- no translation found for vpn_set_vpn_title (4009987321156037267) -->
-    <skip />
-    <!-- no translation found for vpn_first_always_on_vpn_message (3025322109743675467) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_enable_message (2577928591361606641) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_disable_message (3011818750025879902) -->
-    <skip />
-    <!-- no translation found for vpn_replace_vpn_message (5611635724578812860) -->
-    <skip />
-    <!-- no translation found for vpn_turn_on (2363136869284273872) -->
-    <skip />
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"¿Reemplazar VPN existente?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"¿Configurar la VPN siempre activa?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Si activas esta configuración, no tendrás conexión a Internet hasta que la VPN se conecte correctamente"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Se reemplazará tu VPN actual y no tendrás conexión a Internet hasta que la VPN se conecte correctamente."</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Ya estás conectado a una VPN siempre activa. Si te conectas a otra, se reemplazará la VPN actual y se desactivará el modo siempre activo."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Ya estás conectado a una VPN. Si te conectas a otra, se reemplazará la VPN actual."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Activar"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"No se puede establecer conexión con <xliff:g id="VPN_NAME">%1$s</xliff:g>"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Esta app no admite VPN siempre activada."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2536,8 +2529,12 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Internet y red"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Dispositivos conectados"</string>
-    <!-- no translation found for system_dashboard_summary (6112602136713843779) -->
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Apps y notificaciones"</string>
+    <!-- no translation found for account_dashboard_title (38701889336378742) -->
     <skip />
+    <!-- no translation found for app_default_dashboard_title (8176215295082796426) -->
+    <skip />
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Idioma: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Configuración"</string>
     <string name="search_menu" msgid="6283419262313758339">"Configuración de búsqueda"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Configuración de búsqueda"</string>
@@ -3043,8 +3040,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Mar 6:01 p.m."</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Mar 6:02 p.m."</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Mar 6:03 p.m."</string>
-    <string name="see_all" msgid="8883901630052886984">"Ver todas"</string>
-    <string name="see_less" msgid="1250265310929558370">"Ver menos"</string>
     <string name="disconnected" msgid="5787956818111197212">"Desconectado"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> de datos usados"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index 38401e3..3faa174 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -2278,20 +2278,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Desconectar"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Versión <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Borrar VPN"</string>
-    <!-- no translation found for vpn_replace_vpn_title (2963898301277610248) -->
-    <skip />
-    <!-- no translation found for vpn_set_vpn_title (4009987321156037267) -->
-    <skip />
-    <!-- no translation found for vpn_first_always_on_vpn_message (3025322109743675467) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_enable_message (2577928591361606641) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_disable_message (3011818750025879902) -->
-    <skip />
-    <!-- no translation found for vpn_replace_vpn_message (5611635724578812860) -->
-    <skip />
-    <!-- no translation found for vpn_turn_on (2363136869284273872) -->
-    <skip />
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"¿Sustituir VPN actual?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"¿Configurar el modo de VPN siempre activada?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Si activas esta opción, no tendrás acceso a Internet hasta que se conecte la red VPN"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"La nueva red VPN sustituirá a la actual y no tendrás acceso a Internet hasta que dicha VPN se conecte"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Ya estás conectado a una red VPN siempre activada. Si te conectas a otra, esta sustituirá a la VPN actual y se desactivará el modo de VPN siempre activada."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Ya estás conectado a una red VPN. Si te conectas a otra, esta sustituirá a la VPN actual."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Activar"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"No se puede conectar a <xliff:g id="VPN_NAME">%1$s</xliff:g>"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Esta aplicación no admite una red VPN siempre activada."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2534,8 +2527,12 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Red e Internet"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Dispositivos conectados"</string>
-    <!-- no translation found for system_dashboard_summary (6112602136713843779) -->
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Aplicaciones y notificaciones"</string>
+    <!-- no translation found for account_dashboard_title (38701889336378742) -->
     <skip />
+    <!-- no translation found for app_default_dashboard_title (8176215295082796426) -->
+    <skip />
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Idioma: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Ajustes"</string>
     <string name="search_menu" msgid="6283419262313758339">"Ajustes de búsqueda"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Ajustes de búsqueda"</string>
@@ -3043,8 +3040,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Martes a las 18:01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Martes a las 18:02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Martes a las 18:03"</string>
-    <string name="see_all" msgid="8883901630052886984">"Ver todo"</string>
-    <string name="see_less" msgid="1250265310929558370">"Ver menos"</string>
     <string name="disconnected" msgid="5787956818111197212">"Desconectado"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> de datos usados"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-et-rEE/strings.xml b/res/values-et-rEE/strings.xml
index 658a6c7..1509e0c 100644
--- a/res/values-et-rEE/strings.xml
+++ b/res/values-et-rEE/strings.xml
@@ -2280,20 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Katkesta ühendus"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Versioon <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Unusta VPN"</string>
-    <!-- no translation found for vpn_replace_vpn_title (2963898301277610248) -->
-    <skip />
-    <!-- no translation found for vpn_set_vpn_title (4009987321156037267) -->
-    <skip />
-    <!-- no translation found for vpn_first_always_on_vpn_message (3025322109743675467) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_enable_message (2577928591361606641) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_disable_message (3011818750025879902) -->
-    <skip />
-    <!-- no translation found for vpn_replace_vpn_message (5611635724578812860) -->
-    <skip />
-    <!-- no translation found for vpn_turn_on (2363136869284273872) -->
-    <skip />
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Kas asendada olemasolev VPN?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Kas määrata alati sisselülitatud VPN?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Kui selle seade sisse lülitate, pole teil Interneti-ühendust, kuni VPN-iga ühenduse loomine õnnestub"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Teie olemasolev VPN asendatakse ja teil pole Interneti-ühendust, kuni VPN-iga ühenduse loomine õnnestub"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Teil juba on ühendus alati sisselülitatud VPN-iga. Kui jätkate mõne teisega, asendatakse teie olemasolev VPN ja alati sisselülitatud režiim lülitatakse välja."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Teil juba on ühendus VPN-iga. Kui jätkate mõne teisega, asendatakse teie olemasolev VPN."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Lülita sisse"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> ei saa ühendust luua"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"See rakendus ei toeta alati sisselülitatud VPN-i."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2536,8 +2529,12 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Võrk ja Internet"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Ühendatud seadmed"</string>
-    <!-- no translation found for system_dashboard_summary (6112602136713843779) -->
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Rakendused ja märguanded"</string>
+    <!-- no translation found for account_dashboard_title (38701889336378742) -->
     <skip />
+    <!-- no translation found for app_default_dashboard_title (8176215295082796426) -->
+    <skip />
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Keel: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Seaded"</string>
     <string name="search_menu" msgid="6283419262313758339">"Otsingu seaded"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Otsinguseaded"</string>
@@ -3045,8 +3042,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Teisipäev, 18:01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Teisipäev, 18:02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Teisipäev, 18:03"</string>
-    <string name="see_all" msgid="8883901630052886984">"Kuva kõik"</string>
-    <string name="see_less" msgid="1250265310929558370">"Kuva vähem"</string>
     <string name="disconnected" msgid="5787956818111197212">"Ühendus on katkestatud"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"Kasutatud andmemaht on <xliff:g id="AMOUNT">%1$s</xliff:g>"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-eu-rES/strings.xml b/res/values-eu-rES/strings.xml
index 29e8a52..911ca98 100644
--- a/res/values-eu-rES/strings.xml
+++ b/res/values-eu-rES/strings.xml
@@ -2280,20 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Deskonektatu"</string>
     <string name="vpn_version" msgid="1939804054179766249">"<xliff:g id="VERSION">%s</xliff:g> bertsioa"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Ahaztu VPN konexioa"</string>
-    <!-- no translation found for vpn_replace_vpn_title (2963898301277610248) -->
-    <skip />
-    <!-- no translation found for vpn_set_vpn_title (4009987321156037267) -->
-    <skip />
-    <!-- no translation found for vpn_first_always_on_vpn_message (3025322109743675467) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_enable_message (2577928591361606641) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_disable_message (3011818750025879902) -->
-    <skip />
-    <!-- no translation found for vpn_replace_vpn_message (5611635724578812860) -->
-    <skip />
-    <!-- no translation found for vpn_turn_on (2363136869284273872) -->
-    <skip />
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Dagoen VPN konexioa ordeztu nahi duzu?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"VPNa beti aktibatuta egoteko aukera ezarri nahi duzu?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Ezarpen hau aktibatzen baduzu, ez duzu Interneteko konexiorik izango VPN sarera behar bezala konektatu arte"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Lehendik duzun VPNa ordeztuko da eta ez duzu Interneteko konexiorik izango VPN sarera behar bezala konektatu arte"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Beti aktibatuta dagoen VPN sare batera konektatuta zaude dagoeneko. Beste VPN batera konektatzen bazara, lehendik duzuna ordeztuko da eta desaktibatu egingo da beti aktibatuta edukitzeko modua."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Bazaude VPN sare batera konektatuta. Beste batera konektatzen bazara, daukazuna ordeztuko da."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Aktibatu"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"Ezin da konektatu <xliff:g id="VPN_NAME">%1$s</xliff:g>"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Aplikazio honek ez du onartzen beti aktibatuta dagoen VPN sarea."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2536,8 +2529,12 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Sareak eta Internet"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Konektatutako gailuak"</string>
-    <!-- no translation found for system_dashboard_summary (6112602136713843779) -->
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Aplikazioak eta jakinarazpenak"</string>
+    <!-- no translation found for account_dashboard_title (38701889336378742) -->
     <skip />
+    <!-- no translation found for app_default_dashboard_title (8176215295082796426) -->
+    <skip />
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Hizkuntza: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Ezarpenak"</string>
     <string name="search_menu" msgid="6283419262313758339">"Bilaketa-ezarpenak"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Bilaketa-ezarpenak"</string>
@@ -3045,8 +3042,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Asteartea, 18:01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Asteartea, 18:02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Asteartea, 18:03"</string>
-    <string name="see_all" msgid="8883901630052886984">"Ikusi guztiak"</string>
-    <string name="see_less" msgid="1250265310929558370">"Ikusi gutxiago"</string>
     <string name="disconnected" msgid="5787956818111197212">"Deskonektatuta"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"Datuen <xliff:g id="AMOUNT">%1$s</xliff:g> erabili dira"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index 209576c..a33843b 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -2280,20 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"قطع ارتباط"</string>
     <string name="vpn_version" msgid="1939804054179766249">"نسخه <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"‏فراموش کردن VPN"</string>
-    <!-- no translation found for vpn_replace_vpn_title (2963898301277610248) -->
-    <skip />
-    <!-- no translation found for vpn_set_vpn_title (4009987321156037267) -->
-    <skip />
-    <!-- no translation found for vpn_first_always_on_vpn_message (3025322109743675467) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_enable_message (2577928591361606641) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_disable_message (3011818750025879902) -->
-    <skip />
-    <!-- no translation found for vpn_replace_vpn_message (5611635724578812860) -->
-    <skip />
-    <!-- no translation found for vpn_turn_on (2363136869284273872) -->
-    <skip />
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"‏VPN موجود جایگزین شود؟"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"‏VPN همیشه روشن تنظیم شود؟"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"‏با روشن کردن این تنظیم، تا وقتی VPN با موفقیت متصل نشود، اتصال اینترنت نخواهید داشت"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"‏VPN فعلی شما جایگزین می‌شود و تا وقتی VPN با موفقیت متصل نشود، اتصال اینترنت نخواهید داشت"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"‏درحال‌حاضر به VPN همیشه روشنی وصل هستید. اگر به VPN دیگری متصل شوید، VPN فعلی‌تان جایگزین می‌شود و حالت همیشه روشن خاموش می‌شود."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"‏درحال حاضر به VPN وصل هستید. اگر به VPN دیگری متصل شوید، VPN فعلی‌تان جایگزین می‌شود."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"فعال کردن"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> نمی‌تواند متصل شود"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"‏این برنامه از VPN همیشه روشن پشتیبانی نمی‌کند."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2536,8 +2529,13 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"شبکه و اینترنت"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"دستگاه‌های متصل"</string>
-    <!-- no translation found for system_dashboard_summary (6112602136713843779) -->
+    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
     <skip />
+    <!-- no translation found for account_dashboard_title (38701889336378742) -->
+    <skip />
+    <!-- no translation found for app_default_dashboard_title (8176215295082796426) -->
+    <skip />
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"زبان: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"تنظیمات"</string>
     <string name="search_menu" msgid="6283419262313758339">"تنظیمات جستجو"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"تنظیمات جستجو"</string>
@@ -3045,8 +3043,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"سه‌شنبه ۶:۰۱ ب.ظ"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"سه‌شنبه ۶:۰۲ ب.ظ"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"سه‌شنبه ۶:۰۳ ب.ظ"</string>
-    <string name="see_all" msgid="8883901630052886984">"مشاهده همه"</string>
-    <string name="see_less" msgid="1250265310929558370">"مشاهده موارد کمتر"</string>
     <string name="disconnected" msgid="5787956818111197212">"قطع ارتباط"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> داده استفاده‌شده"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index 83b131c..3c9ae8c 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -2280,20 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Katkaise yhteys"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Versio <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Unohda VPN"</string>
-    <!-- no translation found for vpn_replace_vpn_title (2963898301277610248) -->
-    <skip />
-    <!-- no translation found for vpn_set_vpn_title (4009987321156037267) -->
-    <skip />
-    <!-- no translation found for vpn_first_always_on_vpn_message (3025322109743675467) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_enable_message (2577928591361606641) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_disable_message (3011818750025879902) -->
-    <skip />
-    <!-- no translation found for vpn_replace_vpn_message (5611635724578812860) -->
-    <skip />
-    <!-- no translation found for vpn_turn_on (2363136869284273872) -->
-    <skip />
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Korvataanko nykyinen VPN?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Määritetäänkö aina käytössä oleva VPN?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Jos otat tämän asetuksen käyttöön, et voi muodostaa internetyhteyttä ennen kuin VPN-yhteys on muodostettu."</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Nykyinen VPN korvataan, etkä voi muodostaa internetyhteyttä ennen kuin VPN-yhteys on muodostettu."</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Olet jo yhteydessä aina käytössä olevaan VPN-verkkoon. Jos muodostat yhteyden uuteen VPN:ään, nykyinen verkkosi korvataan ja aina käytössä ‑tila poistetaan käytöstä."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Olet jo yhteydessä VPN-verkkoon. Jos muodostat yhteyden uuteen VPN:ään, nykyinen verkkosi korvataan."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Ota käyttöön"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"Yhteyttä verkkoon <xliff:g id="VPN_NAME">%1$s</xliff:g> ei voi muodostaa"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Sovellus ei tue aina käytössä olevaa VPN-yhteyttä."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2536,8 +2529,12 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Verkko ja internet"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Yhdistetyt laitteet"</string>
-    <!-- no translation found for system_dashboard_summary (6112602136713843779) -->
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Sovellukset ja ilmoitukset"</string>
+    <!-- no translation found for account_dashboard_title (38701889336378742) -->
     <skip />
+    <!-- no translation found for app_default_dashboard_title (8176215295082796426) -->
+    <skip />
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Kieli: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Asetukset"</string>
     <string name="search_menu" msgid="6283419262313758339">"Hakuasetukset"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Hakuasetukset"</string>
@@ -3045,8 +3042,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Ti klo 18.01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Ti klo 18.02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Ti klo 18.03"</string>
-    <string name="see_all" msgid="8883901630052886984">"Näytä kaikki"</string>
-    <string name="see_less" msgid="1250265310929558370">"Näytä vähemmän"</string>
     <string name="disconnected" msgid="5787956818111197212">"Yhteys katkaistu"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> datasta käytetty"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml
index 3c8f53a..5db2760 100644
--- a/res/values-fr-rCA/strings.xml
+++ b/res/values-fr-rCA/strings.xml
@@ -599,7 +599,7 @@
     <string name="bluetooth_device_context_connect_advanced" msgid="2643129703569788771">"Options…"</string>
     <string name="bluetooth_menu_advanced" msgid="8572178316357220524">"Options avancées"</string>
     <string name="bluetooth_advanced_titlebar" msgid="2142159726881547669">"Paramètres Bluetooth avancés"</string>
-    <string name="bluetooth_empty_list_bluetooth_off" msgid="6351930724051893423">"Si Bluetooth activé, appareil peut communiquer avec autres appareils Bluetooth à proximité."</string>
+    <string name="bluetooth_empty_list_bluetooth_off" msgid="6351930724051893423">"Si la fonctionnalité Bluetooth est activée, l\'appareil peut communiquer avec les autres appareils Bluetooth à proximité"</string>
     <string name="ble_scan_notify_text" msgid="1295915006005700650">"Pour améliorer la précision de la localisation, les applications et les services système peuvent toujours détecter les appareils Bluetooth. Vous pouvez modifier ce paramètre dans les <xliff:g id="LINK_BEGIN_0">LINK_BEGIN</xliff:g>paramètres de recherche<xliff:g id="LINK_END_1">LINK_END</xliff:g>."</string>
     <string name="bluetooth_connect_specific_profiles_title" msgid="6952214406025825164">"Se connecter à…"</string>
     <string name="bluetooth_disconnect_a2dp_profile" msgid="3524648279150937177">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> sera déconnecté de l\'audio du support."</string>
@@ -2280,20 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Déconnecter"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Version <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Oublier le profil RPV"</string>
-    <!-- no translation found for vpn_replace_vpn_title (2963898301277610248) -->
-    <skip />
-    <!-- no translation found for vpn_set_vpn_title (4009987321156037267) -->
-    <skip />
-    <!-- no translation found for vpn_first_always_on_vpn_message (3025322109743675467) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_enable_message (2577928591361606641) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_disable_message (3011818750025879902) -->
-    <skip />
-    <!-- no translation found for vpn_replace_vpn_message (5611635724578812860) -->
-    <skip />
-    <!-- no translation found for vpn_turn_on (2363136869284273872) -->
-    <skip />
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Remplacer le RPV existant?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Définir le RPV permanent?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Si vous activez ce paramètre, vous ne disposerez d\'aucune connexion Internet jusqu\'à ce que le RPV parvienne à se connecter"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Votre RPV existant sera remplacé, et vous ne disposerez d\'aucune connexion Internet jusqu\'à ce que le RPV parvienne à se connecter"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Vous êtes déjà connecté à un RPV permanent. Si vous vous connectez à un autre RPV, le RPV actuel sera remplacé et le mode permanent sera désactivé."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Vous êtes déjà connecté à un RPV. Si vous vous connectez à un RPV différent, votre RPV actuel sera remplacé."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Activer"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> n\'est pas en mesure de se connecter"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Cette application ne prend pas en charge le RPV permanent."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2536,8 +2529,13 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Réseau et Internet"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Appareils connectés"</string>
-    <!-- no translation found for system_dashboard_summary (6112602136713843779) -->
+    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
     <skip />
+    <!-- no translation found for account_dashboard_title (38701889336378742) -->
+    <skip />
+    <!-- no translation found for app_default_dashboard_title (8176215295082796426) -->
+    <skip />
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Langue : <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Paramètres"</string>
     <string name="search_menu" msgid="6283419262313758339">"Paramètres de recherche"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Paramètres de recherche"</string>
@@ -3045,8 +3043,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Mardi à 18 h 01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Mardi à 18 h 02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Mardi à 18 h 03"</string>
-    <string name="see_all" msgid="8883901630052886984">"Tout afficher"</string>
-    <string name="see_less" msgid="1250265310929558370">"En voir moins"</string>
     <string name="disconnected" msgid="5787956818111197212">"Déconnecté"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> de données utilisées"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
@@ -3210,7 +3206,7 @@
     <string name="support_escalation_by_phone" msgid="4843223043487058711">"Téléphone"</string>
     <string name="support_escalation_by_chat" msgid="977019859110763749">"Clavardage"</string>
     <string name="support_tips_and_tricks_title" msgid="4153466795695447828">"Découvrir des conseils et des astuces"</string>
-    <string name="support_help_feedback_title" msgid="693440287222186718">"Rechercher dans l\'aide et envoyer commentaires"</string>
+    <string name="support_help_feedback_title" msgid="693440287222186718">"Rechercher dans l\'aide et envoyer des commentaires"</string>
     <string name="support_sign_in_required_title" msgid="1367187789121480440">"Communiquer avec l\'équipe d\'assistance"</string>
     <string name="support_sign_in_button_text" msgid="3054769428620671241">"Connexion"</string>
     <string name="support_sign_in_required_help" msgid="5200654782405538114">"Vous n\'arrivez pas à vous connecter?"</string>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index 22a0883..1cf7cca 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -2280,20 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Déconnecter"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Version <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Supprimer le VPN"</string>
-    <!-- no translation found for vpn_replace_vpn_title (2963898301277610248) -->
-    <skip />
-    <!-- no translation found for vpn_set_vpn_title (4009987321156037267) -->
-    <skip />
-    <!-- no translation found for vpn_first_always_on_vpn_message (3025322109743675467) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_enable_message (2577928591361606641) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_disable_message (3011818750025879902) -->
-    <skip />
-    <!-- no translation found for vpn_replace_vpn_message (5611635724578812860) -->
-    <skip />
-    <!-- no translation found for vpn_turn_on (2363136869284273872) -->
-    <skip />
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Remplacer le VPN existant ?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Définir le VPN permanent ?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Si vous activez ce paramètre, vous ne disposerez d\'aucune connexion Internet jusqu\'à ce que le VPN parvienne à se connecter"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Votre VPN existant sera remplacé, et vous ne disposerez d\'aucune connexion Internet jusqu\'à ce que le VPN parvienne à se connecter"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Vous êtes déjà connecté à un VPN permanent. Si vous vous connectez à un autre VPN, le VPN actuel sera remplacé et le mode permanent sera désactivé."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Vous êtes déjà connecté à un VPN. Si vous vous connectez à un autre VPN, le VPN actuel sera remplacé."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Activer"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> ne peut pas se connecter"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Cette application n\'est pas compatible avec le VPN permanent."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2536,8 +2529,12 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Réseau et Internet"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Appareils connectés"</string>
-    <!-- no translation found for system_dashboard_summary (6112602136713843779) -->
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Applications et notifications"</string>
+    <!-- no translation found for account_dashboard_title (38701889336378742) -->
     <skip />
+    <!-- no translation found for app_default_dashboard_title (8176215295082796426) -->
+    <skip />
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Langue : <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Paramètres"</string>
     <string name="search_menu" msgid="6283419262313758339">"Paramètres de recherche"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Paramètres de recherche"</string>
@@ -3045,8 +3042,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Mardi à 18:01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Mardi à 18:02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Mardi à 18:03"</string>
-    <string name="see_all" msgid="8883901630052886984">"Tout afficher"</string>
-    <string name="see_less" msgid="1250265310929558370">"Moins de détails"</string>
     <string name="disconnected" msgid="5787956818111197212">"Déconnecté"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> des données sont utilisées."</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-gl-rES/strings.xml b/res/values-gl-rES/strings.xml
index 3ecb47a..76ba96f 100644
--- a/res/values-gl-rES/strings.xml
+++ b/res/values-gl-rES/strings.xml
@@ -2280,20 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Desconectar"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Versión <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Esquecer perfil da VPN"</string>
-    <!-- no translation found for vpn_replace_vpn_title (2963898301277610248) -->
-    <skip />
-    <!-- no translation found for vpn_set_vpn_title (4009987321156037267) -->
-    <skip />
-    <!-- no translation found for vpn_first_always_on_vpn_message (3025322109743675467) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_enable_message (2577928591361606641) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_disable_message (3011818750025879902) -->
-    <skip />
-    <!-- no translation found for vpn_replace_vpn_message (5611635724578812860) -->
-    <skip />
-    <!-- no translation found for vpn_turn_on (2363136869284273872) -->
-    <skip />
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Queres substituír a VPN existente?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Queres definir a VPN como sempre activa?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Ao activar esta configuración, non terás conexión a Internet ata que se conecte a VPN correctamente"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"A VPN existente substituirase e non terás conexión a Internet ata que se conecte á VPN correctamente"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Xa te conectaches a unha VPN sempre activa. Se te conectas a unha VPN distinta, substituirase a actual e desactivarase o modo de VPN sempre activa."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Xa te conectaches a unha VPN. Se te conectas a unha distinta, substituirase a VPN actual."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Activar"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"Non se pode conectar a <xliff:g id="VPN_NAME">%1$s</xliff:g>"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Esta aplicación non é compatible con VPN que estean sempre activadas."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2536,8 +2529,12 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Rede e Internet"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Dispositivos conectados"</string>
-    <!-- no translation found for system_dashboard_summary (6112602136713843779) -->
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Aplicacións e notificacións"</string>
+    <!-- no translation found for account_dashboard_title (38701889336378742) -->
     <skip />
+    <!-- no translation found for app_default_dashboard_title (8176215295082796426) -->
+    <skip />
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Idioma: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Configuración"</string>
     <string name="search_menu" msgid="6283419262313758339">"Configuración de busca"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Configuración de busca"</string>
@@ -3045,8 +3042,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Martes ás 6:01 p.m."</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Martes ás 6:02 p.m."</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Martes ás 6:03 p.m."</string>
-    <string name="see_all" msgid="8883901630052886984">"Ver todo"</string>
-    <string name="see_less" msgid="1250265310929558370">"Ver menos"</string>
     <string name="disconnected" msgid="5787956818111197212">"Desconectada"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> de datos utilizados"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-gu-rIN/strings.xml b/res/values-gu-rIN/strings.xml
index 98bdd00..e5e0a72 100644
--- a/res/values-gu-rIN/strings.xml
+++ b/res/values-gu-rIN/strings.xml
@@ -2282,20 +2282,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"ડિસ્કનેક્ટ કરો"</string>
     <string name="vpn_version" msgid="1939804054179766249">"સંસ્કરણ <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"VPN ભૂલી ગયાં"</string>
-    <!-- no translation found for vpn_replace_vpn_title (2963898301277610248) -->
-    <skip />
-    <!-- no translation found for vpn_set_vpn_title (4009987321156037267) -->
-    <skip />
-    <!-- no translation found for vpn_first_always_on_vpn_message (3025322109743675467) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_enable_message (2577928591361606641) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_disable_message (3011818750025879902) -->
-    <skip />
-    <!-- no translation found for vpn_replace_vpn_message (5611635724578812860) -->
-    <skip />
-    <!-- no translation found for vpn_turn_on (2363136869284273872) -->
-    <skip />
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"અસ્તિત્વમાંની VPN ને બદલીએ?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"હંમેશાં ચાલુ VPN સેટ કરીએ?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"આ સેટિંગ ચાલુ કરવાથી, જ્યાં સુધી VPN સફળતાપૂર્વક કનેક્ટ ન થાય ત્યાં સુધી તમારી પાસે ઇન્ટરનેટ કનેક્શન હશે નહીં"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"તમારા અસ્તિત્વમાંના VPN ને બદલવામાં આવશે અને VPN સફળતાપૂર્વક કનેક્ટ ન થાય ત્યાં સુધી તમારી પાસે ઇન્ટરનેટ કનેક્શન હશે નહીં"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"તમે પહેલાંથી હંમેશાં-ચાલુ VPN થી કનેક્ટ થયેલ છો. જો તમે કોઈ બીજાથી કનેક્ટ કરો છો, તો તમારા અસ્તિત્વમાંના VPN ને બદલવામાં આવશે અને હંમેશાં-ચાલુ મોડ બંધ થઈ જશે."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"તમે પહેલાંથી VPN થી કનેક્ટ થયેલ છો. જો તમે કોઈ બીજાથી કનેક્ટ કરો છો, તો તમારા અસ્તિત્વમાંના VPN ને બદલવામાં આવશે."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"ચાલુ કરો"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> થી કનેક્ટ કરી શકાતું નથી"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"આ ઍપ્લિકેશન હંમેશાં ચાલુ VPN નું સમર્થન કરતી નથી."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2538,8 +2531,12 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"નેટવર્ક અને ઇન્ટરનેટ"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"કનેક્ટ થયેલ ઉપકરણો"</string>
-    <!-- no translation found for system_dashboard_summary (6112602136713843779) -->
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"ઍપ્લિકેશનો અને સૂચનાઓ"</string>
+    <!-- no translation found for account_dashboard_title (38701889336378742) -->
     <skip />
+    <!-- no translation found for app_default_dashboard_title (8176215295082796426) -->
+    <skip />
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"ભાષા: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"સેટિંગ્સ"</string>
     <string name="search_menu" msgid="6283419262313758339">"શોધ સેટિંગ્સ"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"શોધ સેટિંગ્સ"</string>
@@ -3047,8 +3044,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"મંગળ 6:01 સાંજે"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"મંગળ 6:02 સાંજે"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"મંગળ 6:03 સાંજે"</string>
-    <string name="see_all" msgid="8883901630052886984">"બધું જુઓ"</string>
-    <string name="see_less" msgid="1250265310929558370">"ઓછું જુઓ"</string>
     <string name="disconnected" msgid="5787956818111197212">"ડિસ્કનેક્ટ કર્યું"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> ડેટા વાપર્યો"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index ba34036..6ee22ec 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -2280,20 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"डिस्कनेक्ट करें"</string>
     <string name="vpn_version" msgid="1939804054179766249">"वर्शन <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"VPN भूल जाएं"</string>
-    <!-- no translation found for vpn_replace_vpn_title (2963898301277610248) -->
-    <skip />
-    <!-- no translation found for vpn_set_vpn_title (4009987321156037267) -->
-    <skip />
-    <!-- no translation found for vpn_first_always_on_vpn_message (3025322109743675467) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_enable_message (2577928591361606641) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_disable_message (3011818750025879902) -->
-    <skip />
-    <!-- no translation found for vpn_replace_vpn_message (5611635724578812860) -->
-    <skip />
-    <!-- no translation found for vpn_turn_on (2363136869284273872) -->
-    <skip />
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"मौजूदा VPN को बदलें?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"हमेशा-चालू VPN सेट करें?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"यह सेटिंग चालू करने से, आपके पास तब तक इंटरनेट कनेक्शन नहीं होगा जब तक कि VPN सफलतापूर्वक कनेक्ट नहीं हो जाता"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"आपका मौजूदा VPN बदल दिया जाएगा और आपके पास तब तक इंटरनेट कनेक्शन नहीं होगा जब तक कि VPN सफलतापूर्वक कनेक्ट नहीं हो जाता"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"आप हमेशा चालू रहने वाले किसी VPN से पहले से कनेक्ट हैं. यदि आप किसी दूसरे से कनेक्ट करते हैं तो मौजूदा VPN बदल दिया जाएगा और हमेशा-चालू मोड बंद हो जाएगा."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"आप पहले से ही किसी VPN से कनेक्ट हैं. यदि आप किसी दूसरे से कनेक्ट करते हैं, तो आपका माैजूदा VPN बदल दिया जाएगा."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"चालू करें"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> कनेक्ट नहीं कर सकता"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"यह ऐप्लिकेशन हमेशा-चालू VPN का समर्थन नहीं करता."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2536,8 +2529,12 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"नेटवर्क और इंटरनेट"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"कनेक्ट किए गए डिवाइस"</string>
-    <!-- no translation found for system_dashboard_summary (6112602136713843779) -->
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"ऐप्लिकेशन और नोटिफ़िकेशन"</string>
+    <!-- no translation found for account_dashboard_title (38701889336378742) -->
     <skip />
+    <!-- no translation found for app_default_dashboard_title (8176215295082796426) -->
+    <skip />
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"भाषा: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"सेटिंग"</string>
     <string name="search_menu" msgid="6283419262313758339">"खोज सेटिंग"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"खोज सेटिंग"</string>
@@ -3045,8 +3042,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"मंगलवार शाम 6:01 बजे"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"मंगलवार शाम 6:02 बजे"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"मंगलवार शाम 6:03 बजे"</string>
-    <string name="see_all" msgid="8883901630052886984">"सभी देखें"</string>
-    <string name="see_less" msgid="1250265310929558370">"कम देखें"</string>
     <string name="disconnected" msgid="5787956818111197212">"डिस्कनेक्ट किया गया"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> डेटा का उपयोग किया गया है"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index 155ff55..3e8afca 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -2297,20 +2297,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Prekini vezu"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Verzija <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Zaboravi VPN"</string>
-    <!-- no translation found for vpn_replace_vpn_title (2963898301277610248) -->
-    <skip />
-    <!-- no translation found for vpn_set_vpn_title (4009987321156037267) -->
-    <skip />
-    <!-- no translation found for vpn_first_always_on_vpn_message (3025322109743675467) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_enable_message (2577928591361606641) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_disable_message (3011818750025879902) -->
-    <skip />
-    <!-- no translation found for vpn_replace_vpn_message (5611635724578812860) -->
-    <skip />
-    <!-- no translation found for vpn_turn_on (2363136869284273872) -->
-    <skip />
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Želite li zamijeniti dosadašnji VPN?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Želite li postaviti uvijek uključeni VPN?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Ako uključite tu postavku, nećete imati internetsku vezu dok se VPN ne poveže"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Vaš dosadašnji VPN zamijenit će se i nećete imati internetsku vezu dok se VPN ne poveže"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Već ste povezani s uvijek uključenim VPN-om. Ako se povežete s nekim drugim VPN-om, on će zamijeniti dosadašnji, a način rada \"uvijek uključeno\" isključit će se."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Već ste povezani s VPN-om. Ako se povežete s nekim drugi VPN-om, on će zamijeniti dosadašnji."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Uključi"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"Povezivanje s <xliff:g id="VPN_NAME">%1$s</xliff:g> mrežom nije uspjelo"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Ova aplikacija ne podržava uvijek uključeni VPN."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2558,8 +2551,12 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Mreža i internet"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Povezani uređaji"</string>
-    <!-- no translation found for system_dashboard_summary (6112602136713843779) -->
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Aplikacije i obavijesti"</string>
+    <!-- no translation found for account_dashboard_title (38701889336378742) -->
     <skip />
+    <!-- no translation found for app_default_dashboard_title (8176215295082796426) -->
+    <skip />
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Jezik: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Postavke"</string>
     <string name="search_menu" msgid="6283419262313758339">"Postavke pretraživanja"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Postavke pretraživanja"</string>
@@ -3075,8 +3072,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Uto, 18:01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Uto, 18:02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Uto, 18:03"</string>
-    <string name="see_all" msgid="8883901630052886984">"Prikaži sve"</string>
-    <string name="see_less" msgid="1250265310929558370">"Prikaži manje"</string>
     <string name="disconnected" msgid="5787956818111197212">"Veza je prekinuta"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"Količina iskorištenih podataka: <xliff:g id="AMOUNT">%1$s</xliff:g>"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index 668dd44..f2a8db9 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -2280,20 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Leválasztás"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Verzió: <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"VPN elfelejtése"</string>
-    <!-- no translation found for vpn_replace_vpn_title (2963898301277610248) -->
-    <skip />
-    <!-- no translation found for vpn_set_vpn_title (4009987321156037267) -->
-    <skip />
-    <!-- no translation found for vpn_first_always_on_vpn_message (3025322109743675467) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_enable_message (2577928591361606641) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_disable_message (3011818750025879902) -->
-    <skip />
-    <!-- no translation found for vpn_replace_vpn_message (5611635724578812860) -->
-    <skip />
-    <!-- no translation found for vpn_turn_on (2363136869284273872) -->
-    <skip />
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Lecseréli a meglévő VPN-t?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Beállítja a mindig bekapcsolt VPN-t?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"A beállítás bekapcsolása után a VPN sikeres csatlakozásáig nem lesz internetkapcsolata"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"A rendszer lecseréli meglévő VPN-jét, valamint az új VPN csatlakozásáig nem lesz internetkapcsolata."</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Már csatlakozik egy mindig bekapcsolt VPN-hez. Ha másik VPN-re csatlakozik, akkor a rendszer lecseréli a meglévőt, valamint kikapcsolja a mindig bekapcsolt módot."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Már csatlakozik VPN-hez. Ha másikhoz csatlakozik, a meglévő VPN-t lecseréljük."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Bekapcsolás"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"A(z) <xliff:g id="VPN_NAME">%1$s</xliff:g> nem tud csatlakozni"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Ez az alkalmazás nem támogatja a mindig bekapcsolt VPN-t."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2536,8 +2529,12 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Hálózat és internet"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Társított eszközök"</string>
-    <!-- no translation found for system_dashboard_summary (6112602136713843779) -->
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Alkalmazások és értesítések"</string>
+    <!-- no translation found for account_dashboard_title (38701889336378742) -->
     <skip />
+    <!-- no translation found for app_default_dashboard_title (8176215295082796426) -->
+    <skip />
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Nyelv: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Beállítások"</string>
     <string name="search_menu" msgid="6283419262313758339">"Keresési beállítások"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Keresési beállítások"</string>
@@ -3045,8 +3042,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Kedd 18:01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Kedd 18:02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Kedd 18:03"</string>
-    <string name="see_all" msgid="8883901630052886984">"Az összes megjelenítése"</string>
-    <string name="see_less" msgid="1250265310929558370">"Kevesebb megjelenítése"</string>
     <string name="disconnected" msgid="5787956818111197212">"Kapcsolat bontva"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"Felhasznált adatmennyiség: <xliff:g id="AMOUNT">%1$s</xliff:g>"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-hy-rAM/strings.xml b/res/values-hy-rAM/strings.xml
index a629197..a60127d 100644
--- a/res/values-hy-rAM/strings.xml
+++ b/res/values-hy-rAM/strings.xml
@@ -705,8 +705,8 @@
     <string name="wifi_more" msgid="3195296805089107950">"Ավելին"</string>
     <string name="wifi_setup_wps" msgid="8128702488486283957">"Ինքնուրույն կարգավորում (WPS)"</string>
     <string name="wifi_show_advanced" msgid="3409422789616520979">"Ընդլայնված ընտրանքներ"</string>
-    <string name="wifi_advanced_toggle_description_expanded" msgid="2380600578544493084">"Ընդլայնված ընտրանքների բացվող ցանկ: Կրկնակի հպեք՝ կոծկելու համար:"</string>
-    <string name="wifi_advanced_toggle_description_collapsed" msgid="1463812308429197263">"Ընդլայնված ընտրանքների բացվող ցանկ: Կրկնակի հպեք՝ ընդարձակելու համար:"</string>
+    <string name="wifi_advanced_toggle_description_expanded" msgid="2380600578544493084">"Ընդլայնված ընտրանքների իջնող ցանկ: Կրկնակի հպեք՝ կոծկելու համար:"</string>
+    <string name="wifi_advanced_toggle_description_collapsed" msgid="1463812308429197263">"Ընդլայնված ընտրանքների իջնող ցանկ: Կրկնակի հպեք՝ ընդարձակելու համար:"</string>
     <string name="wifi_wps_setup_title" msgid="8207552222481570175">"Wi‑Fi-ով պաշտպանված կարգավորում"</string>
     <string name="wifi_wps_setup_msg" msgid="315174329121275092">"WPS-ը մեկնարկում է..."</string>
     <string name="wifi_wps_onstart_pbc" msgid="817003360936932340">"Սեղմեք երթուղիչի «անվտանգ Wi‑Fi կարգավորում» կոճակը: Այն կարող է կոչվել «WPS» կամ նշված լինել այս նշանով՝"</string>
@@ -2026,7 +2026,7 @@
     <string name="credentials_enabled" msgid="7588607413349978930">"Վկայականի պահոցը միացված է:"</string>
     <string name="credentials_configure_lock_screen_hint" msgid="6757119179588664966">"Վկայականների պահոցն օգտագործելու համար անհրաժեշտ է, որ էկրանը կողպող PIN կամ գաղտնաբառ կիրառեք:"</string>
     <string name="usage_access_title" msgid="332333405495457839">"Թույլատրված հավելվածներ"</string>
-    <string name="emergency_tone_title" msgid="1055954530111587114">"Արտակարգ իրավիճակ ահազանգող ազդանշան"</string>
+    <string name="emergency_tone_title" msgid="1055954530111587114">"Շտապ կանչի ազդանշանը"</string>
     <string name="emergency_tone_summary" msgid="722259232924572153">"Կարգավորել աշխատանքի ռեժիմը շտապ կանչի դեպքում"</string>
     <string name="privacy_settings" msgid="5446972770562918934">"Պահուստավորում և վերակայում"</string>
     <string name="privacy_settings_title" msgid="4856282165773594890">"Պահուստավորում և վերականգնում"</string>
@@ -2280,20 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Անջատել"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Տարբերակ <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Մոռանալ VPN-ը"</string>
-    <!-- no translation found for vpn_replace_vpn_title (2963898301277610248) -->
-    <skip />
-    <!-- no translation found for vpn_set_vpn_title (4009987321156037267) -->
-    <skip />
-    <!-- no translation found for vpn_first_always_on_vpn_message (3025322109743675467) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_enable_message (2577928591361606641) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_disable_message (3011818750025879902) -->
-    <skip />
-    <!-- no translation found for vpn_replace_vpn_message (5611635724578812860) -->
-    <skip />
-    <!-- no translation found for vpn_turn_on (2363136869284273872) -->
-    <skip />
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Փոխարինե՞լ ընթացիկ VPN-ը:"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Սահմանե՞լ որպես «միշտ միացված» VPN:"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Այս կարգավորումը միացնելու դեպքում դուք մինչև VPN-ի բարեհաջող միացումը ինտերնետ կապ չեք ունենա"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Ձեր ընթացիկ VPN-ը կփոխարինվի նորով և դուք մինչև VPN-ի բարեհաջող միացումը ինտերնետ կապ չեք ունենա"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Դուք արդեն միացած եք «միշտ միացված» VPN ցանցին: Մեկ այլ VPN ցանցին միանալու դեպքում ընթացիկ VPN-ը կփոխարինվի նորով և «միշտ միացված» ռեժիմը կանջատվի:"</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Դուք արդեն միացած եք VPN ցանցին: Մեկ այլ ցանցին միանալու դեպքում ընթացիկ VPN-ը կփոխարինվի նորով:"</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Միացնել"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"Հնարավոր չէ միանալ <xliff:g id="VPN_NAME">%1$s</xliff:g> ցանցին"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Այս հավելվածը չի աջակցում VPN-ի միշտ միացված ռեժիմը:"</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2536,8 +2529,12 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Ցանց և ինտերնետ"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Կապակցված սարքեր"</string>
-    <!-- no translation found for system_dashboard_summary (6112602136713843779) -->
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Հավելվածներ և ծանուցումներ"</string>
+    <!-- no translation found for account_dashboard_title (38701889336378742) -->
     <skip />
+    <!-- no translation found for app_default_dashboard_title (8176215295082796426) -->
+    <skip />
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Լեզուն՝ <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Կարգավորումներ"</string>
     <string name="search_menu" msgid="6283419262313758339">"Որոնման կարգավորումներ"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Որոնման կարգավորումներ"</string>
@@ -3045,8 +3042,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Երք, 18:01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Երք, 18:02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Երք, 18:03"</string>
-    <string name="see_all" msgid="8883901630052886984">"Տեսնել բոլորը"</string>
-    <string name="see_less" msgid="1250265310929558370">"Տեսնել ավելի քիչ"</string>
     <string name="disconnected" msgid="5787956818111197212">"Անջատված է"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"Օգտագործած տվյալներ՝ <xliff:g id="AMOUNT">%1$s</xliff:g>"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index 09d3cac..34ec92f 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -2280,20 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Putuskan sambungan"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Versi <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Lupakan VPN"</string>
-    <!-- no translation found for vpn_replace_vpn_title (2963898301277610248) -->
-    <skip />
-    <!-- no translation found for vpn_set_vpn_title (4009987321156037267) -->
-    <skip />
-    <!-- no translation found for vpn_first_always_on_vpn_message (3025322109743675467) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_enable_message (2577928591361606641) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_disable_message (3011818750025879902) -->
-    <skip />
-    <!-- no translation found for vpn_replace_vpn_message (5611635724578812860) -->
-    <skip />
-    <!-- no translation found for vpn_turn_on (2363136869284273872) -->
-    <skip />
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Ganti VPN yang sudah ada?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Setel VPN selalu aktif?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Jika setelan ini diaktifkan, sambungan internet akan tersedia jika VPN berhasil terhubung"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"VPN yang sudah ada akan digantikan, dan sambungan internet akan tersedia jika VPN berhasil terhubung"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Anda sudah terhubung ke VPN selalu aktif. Jika Anda terhubung ke VPN yang berbeda, VPN yang sudah ada akan digantikan, dan mode selalu aktif akan dinonaktifkan."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Anda sudah terhubung ke VPN. Jika Anda terhubung ke VPN yang berbeda, VPN yang sudah ada akan digantikan."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Aktifkan"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> tidak dapat terhubung"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Aplikasi ini tidak mendukung VPN yang selalu aktif."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2536,8 +2529,12 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Jaringan &amp; Internet"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Perangkat yang terhubung"</string>
-    <!-- no translation found for system_dashboard_summary (6112602136713843779) -->
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Aplikasi &amp; notifikasi"</string>
+    <!-- no translation found for account_dashboard_title (38701889336378742) -->
     <skip />
+    <!-- no translation found for app_default_dashboard_title (8176215295082796426) -->
+    <skip />
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Bahasa: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Setelan"</string>
     <string name="search_menu" msgid="6283419262313758339">"Setelan penelusuran"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Setelan penelusuran"</string>
@@ -3045,8 +3042,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Sel 18.01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Sel 18.02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Sel 18.03"</string>
-    <string name="see_all" msgid="8883901630052886984">"Lihat semua"</string>
-    <string name="see_less" msgid="1250265310929558370">"Lihat lebih sedikit"</string>
     <string name="disconnected" msgid="5787956818111197212">"Terputus"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> data digunakan"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-is-rIS/strings.xml b/res/values-is-rIS/strings.xml
index 2d53c35..443a7e7 100644
--- a/res/values-is-rIS/strings.xml
+++ b/res/values-is-rIS/strings.xml
@@ -2280,20 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Aftengja"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Útgáfa <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Gleyma VPN"</string>
-    <!-- no translation found for vpn_replace_vpn_title (2963898301277610248) -->
-    <skip />
-    <!-- no translation found for vpn_set_vpn_title (4009987321156037267) -->
-    <skip />
-    <!-- no translation found for vpn_first_always_on_vpn_message (3025322109743675467) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_enable_message (2577928591361606641) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_disable_message (3011818750025879902) -->
-    <skip />
-    <!-- no translation found for vpn_replace_vpn_message (5611635724578812860) -->
-    <skip />
-    <!-- no translation found for vpn_turn_on (2363136869284273872) -->
-    <skip />
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Skipta út núverandi VPN?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Velja VPN sem alltaf er kveikt á?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Ef þú kveikir á þessari stillingu nærðu ekki nettengingu fyrr en VPN nær að tengjast"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Núverandi VPN verður skipt út og engin nettenging verður fyrir hendi fyrr en VPN nær að tengjast"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Þú ert þegar með tengingu við VPN sem alltaf er kveikt á. Ef þú tengist við annað net verður fyrirliggjandi VPN skipt út og slökkt verður á stillingunni „Alltaf kveikt“."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Þú ert nú þegar með VPN tengt. Ef þú tengist öðru neti kemur það í stað fyrirliggjandi VPN."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Kveikja"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> getur ekki tengst"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Þetta forrit styður ekki sívirkt VPN."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2536,8 +2529,12 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Netkerfi og internet"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Tengd tæki"</string>
-    <!-- no translation found for system_dashboard_summary (6112602136713843779) -->
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Forrit og tilkynningar"</string>
+    <!-- no translation found for account_dashboard_title (38701889336378742) -->
     <skip />
+    <!-- no translation found for app_default_dashboard_title (8176215295082796426) -->
+    <skip />
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Tungumál: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Stillingar"</string>
     <string name="search_menu" msgid="6283419262313758339">"Leitarstillingar"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Leitarstillingar"</string>
@@ -3045,8 +3042,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Þri 18:01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Þri 18:02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Þri 18:03"</string>
-    <string name="see_all" msgid="8883901630052886984">"Sjá allt"</string>
-    <string name="see_less" msgid="1250265310929558370">"Sjá minna"</string>
     <string name="disconnected" msgid="5787956818111197212">"Aftengt"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> notuð"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index 8031e9a..fb95867 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -2280,20 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Disconnetti"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Versione <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Rimuovi VPN"</string>
-    <!-- no translation found for vpn_replace_vpn_title (2963898301277610248) -->
-    <skip />
-    <!-- no translation found for vpn_set_vpn_title (4009987321156037267) -->
-    <skip />
-    <!-- no translation found for vpn_first_always_on_vpn_message (3025322109743675467) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_enable_message (2577928591361606641) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_disable_message (3011818750025879902) -->
-    <skip />
-    <!-- no translation found for vpn_replace_vpn_message (5611635724578812860) -->
-    <skip />
-    <!-- no translation found for vpn_turn_on (2363136869284273872) -->
-    <skip />
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Sostituire la rete VPN esistente?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Impostare la rete VPN sempre attiva?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Se attivi questa impostazione, la connessione Internet non sarà disponibile fino a quando la rete VPN sarà connessa correttamente"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"La rete VPN attuale sarà sostituita e la connessione Internet non sarà disponibile fino a quando la rete VPN sarà connessa correttamente"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Sei già collegato a una rete VPN sempre attiva. Se ti connetti a un\'altra rete, la rete VPN attuale verrà sostituita e la modalità sempre attiva verrà disattivata."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Sei già collegato a una rete VPN. Se ti connetti a un\'altra rete, la VPN attuale verrà sostituita."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Attiva"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"Impossibile connettersi alla rete <xliff:g id="VPN_NAME">%1$s</xliff:g>"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Questa app non supporta le reti VPN sempre attive."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2536,8 +2529,12 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Rete e Internet"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Dispositivi collegati"</string>
-    <!-- no translation found for system_dashboard_summary (6112602136713843779) -->
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"App e notifiche"</string>
+    <!-- no translation found for account_dashboard_title (38701889336378742) -->
     <skip />
+    <!-- no translation found for app_default_dashboard_title (8176215295082796426) -->
+    <skip />
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Lingua: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Impostazioni"</string>
     <string name="search_menu" msgid="6283419262313758339">"Impostazioni di ricerca"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Impostazioni di ricerca"</string>
@@ -3045,8 +3042,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Mar 18:01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Mar 18:02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Mar 18:03"</string>
-    <string name="see_all" msgid="8883901630052886984">"Mostra tutto"</string>
-    <string name="see_less" msgid="1250265310929558370">"Comprimi"</string>
     <string name="disconnected" msgid="5787956818111197212">"Disconnesso"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> di dati utilizzati"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index 87701a4..64d83db 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -2314,20 +2314,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"נתק"</string>
     <string name="vpn_version" msgid="1939804054179766249">"גרסה <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"‏שכח VPN"</string>
-    <!-- no translation found for vpn_replace_vpn_title (2963898301277610248) -->
-    <skip />
-    <!-- no translation found for vpn_set_vpn_title (4009987321156037267) -->
-    <skip />
-    <!-- no translation found for vpn_first_always_on_vpn_message (3025322109743675467) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_enable_message (2577928591361606641) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_disable_message (3011818750025879902) -->
-    <skip />
-    <!-- no translation found for vpn_replace_vpn_message (5611635724578812860) -->
-    <skip />
-    <!-- no translation found for vpn_turn_on (2363136869284273872) -->
-    <skip />
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"‏האם להחליף רשת VPN קיימת?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"‏האם להגדיר את רשת ה-VPN בחיבור תמידי?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"‏על ידי הפעלת הגדרה זו לא יהיה לך חיבור אינטרנט עד שחיבור ה-VPN יסתיים בהצלחה"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"‏רשת ה-VPN הקיימת תוחלף ולא יהיה לך חיבור אינטרנט עד שחיבור ה-VPN יסתיים בהצלחה"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"‏אתה כבר מחובר לרשת VPN בחיבור תמידי. אם תתחבר לרשת VPN שונה, הרשת הקיימת תוחלף ומצב החיבור התמידי ייכבה."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"‏אתה כבר מחובר לרשת VPN. אם תתחבר לרשת VPN שונה, הרשת הקיימת תוחלף."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"הפעל"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> לא מצליחה להתחבר"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"‏אפליקציה זו אינה תומכת באפשרות של רשת VPN הפועלת תמיד"</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2582,8 +2575,12 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"רשת ואינטרנט"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"מכשירים מחוברים"</string>
-    <!-- no translation found for system_dashboard_summary (6112602136713843779) -->
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"אפליקציות והודעות"</string>
+    <!-- no translation found for account_dashboard_title (38701889336378742) -->
     <skip />
+    <!-- no translation found for app_default_dashboard_title (8176215295082796426) -->
+    <skip />
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"שפה: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"הגדרות"</string>
     <string name="search_menu" msgid="6283419262313758339">"הגדרות חיפוש"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"הגדרות חיפוש"</string>
@@ -3107,8 +3104,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"יום שלישי 18:01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"יום שלישי 18:02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"יום שלישי 18:03"</string>
-    <string name="see_all" msgid="8883901630052886984">"הצג הכל"</string>
-    <string name="see_less" msgid="1250265310929558370">"הצג פחות"</string>
     <string name="disconnected" msgid="5787956818111197212">"מנותק"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> מהנתונים בשימוש"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index b5eea6d..e5680af 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -2284,20 +2284,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"接続を解除"</string>
     <string name="vpn_version" msgid="1939804054179766249">"バージョン<xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"VPN を削除"</string>
-    <!-- no translation found for vpn_replace_vpn_title (2963898301277610248) -->
-    <skip />
-    <!-- no translation found for vpn_set_vpn_title (4009987321156037267) -->
-    <skip />
-    <!-- no translation found for vpn_first_always_on_vpn_message (3025322109743675467) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_enable_message (2577928591361606641) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_disable_message (3011818750025879902) -->
-    <skip />
-    <!-- no translation found for vpn_replace_vpn_message (5611635724578812860) -->
-    <skip />
-    <!-- no translation found for vpn_turn_on (2363136869284273872) -->
-    <skip />
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"既存の VPN を置き換えますか?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"常時接続 VPN を設定しますか?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"この設定を有効にすると、VPN に接続するまではインターネットに接続できなくなります"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"既存の VPN が置き換えられ、VPN に接続するまではインターネットに接続できなくなります"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"すでに常時接続 VPN に接続しています。別の VPN に接続する場合は、既存の VPN が置き換えられ、常時接続モードは無効になります。"</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"すでに VPN に接続しています。別の VPN に接続する場合は、既存の VPN が置き換えられます。"</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"有効にする"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"「<xliff:g id="VPN_NAME">%1$s</xliff:g>」に接続できません"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"このアプリは常時接続 VPN に対応していません。"</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2540,8 +2533,12 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"ネットワークとインターネット"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"接続済みの端末"</string>
-    <!-- no translation found for system_dashboard_summary (6112602136713843779) -->
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"アプリと通知"</string>
+    <!-- no translation found for account_dashboard_title (38701889336378742) -->
     <skip />
+    <!-- no translation found for app_default_dashboard_title (8176215295082796426) -->
+    <skip />
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"言語: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"設定"</string>
     <string name="search_menu" msgid="6283419262313758339">"検索設定"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"検索設定"</string>
@@ -2623,10 +2620,10 @@
     <string name="emergency_tone_alert" msgid="8941852695428130667">"アラート"</string>
     <string name="emergency_tone_vibrate" msgid="8281126443204950847">"バイブレーション"</string>
     <string name="boot_sounds_title" msgid="567029107382343709">"電源オンの音"</string>
-    <string name="zen_mode_settings_title" msgid="2689740350895257590">"通知を非表示"</string>
+    <string name="zen_mode_settings_title" msgid="2689740350895257590">"マナーモード"</string>
     <string name="zen_mode_priority_settings_title" msgid="2623117023031824309">"優先する通知のみを許可"</string>
     <string name="zen_mode_automation_settings_title" msgid="4228995740594063774">"自動ルール"</string>
-    <string name="zen_mode_automation_suggestion_title" msgid="3373871113435938830">"[通知を非表示] スケジュールの設定"</string>
+    <string name="zen_mode_automation_suggestion_title" msgid="3373871113435938830">"マナーモード スケジュールの設定"</string>
     <string name="zen_mode_automation_suggestion_summary" msgid="8554080399360506596">"所定の時間にマナーモードにする"</string>
     <string name="zen_mode_option_important_interruptions" msgid="3903928008177972500">"優先する通知のみ"</string>
     <string name="zen_mode_option_alarms" msgid="5785372117288803600">"アラームのみ"</string>
@@ -2679,8 +2676,8 @@
     </plurals>
     <string name="no_notification_listeners" msgid="3487091564454192821">"通知へのアクセスをリクエストしたインストール済みアプリはありません。"</string>
     <string name="notification_listener_security_warning_title" msgid="5522924135145843279">"<xliff:g id="SERVICE">%1$s</xliff:g>での通知へのアクセスを許可しますか?"</string>
-    <string name="notification_listener_security_warning_summary" msgid="119203147791040151">"<xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> はすべての通知を読み取ることができます。通知には、連絡先名などの個人情報や受信したメッセージの本文も含まれます。また、通知を非表示にしたり、通知内のボタン操作を実行したりすることもできます。\n\nこれにより、アプリが通知の非表示設定を切り替えたり、関連する設定を変更したりすることも可能になります。"</string>
-    <string name="notification_listener_disable_warning_summary" msgid="6738915379642948000">"<xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> の通知アクセスを OFF にすると、[通知を非表示] のアクセスも OFF になります。"</string>
+    <string name="notification_listener_security_warning_summary" msgid="119203147791040151">"<xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> はすべての通知を読み取ることができます。通知には、連絡先名などの個人情報や受信したメッセージの本文も含まれます。また、通知を非表示にしたり、通知内のボタン操作を実行したりすることもできます。\n\nこれにより、アプリがマナーモード設定を切り替えたり、関連する設定を変更したりすることも可能になります。"</string>
+    <string name="notification_listener_disable_warning_summary" msgid="6738915379642948000">"<xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> の通知アクセスを OFF にすると、マナーモードのアクセスも OFF になります。"</string>
     <string name="notification_listener_disable_warning_confirm" msgid="8333442186428083057">"OFF にする"</string>
     <string name="notification_listener_disable_warning_cancel" msgid="8586417377104211584">"キャンセル"</string>
     <string name="vr_listeners_title" msgid="1318901577754715777">"VR ヘルパー サービス"</string>
@@ -2690,16 +2687,16 @@
     <string name="display_vr_pref_title" msgid="8104485269504335481">"端末が VR モードの場合"</string>
     <string name="display_vr_pref_low_persistence" msgid="5707494209944718537">"手ぶれ補正を弱くする(推奨)"</string>
     <string name="display_vr_pref_off" msgid="2190091757123260989">"ちらつきを減らす"</string>
-    <string name="manage_zen_access_title" msgid="2611116122628520522">"[通知を非表示]へのアクセス"</string>
-    <string name="zen_access_empty_text" msgid="8772967285742259540">"[通知を非表示]へのアクセスをリクエストしたインストール済みアプリはありません"</string>
+    <string name="manage_zen_access_title" msgid="2611116122628520522">"マナーモードへのアクセス"</string>
+    <string name="zen_access_empty_text" msgid="8772967285742259540">"マナーモードへのアクセスをリクエストしたインストール済みアプリはありません"</string>
     <string name="loading_notification_apps" msgid="5031818677010335895">"アプリを読み込んでいます..."</string>
     <string name="notification_channels" msgid="8681423709659818791">"チャンネル"</string>
     <string name="app_notification_block_title" msgid="4069351066849087649">"すべてブロック"</string>
     <string name="app_notification_block_summary" msgid="9049487483231233726">"このアプリからの通知を表示しない"</string>
     <string name="channel_notification_block_title" msgid="1570538726036580979">"すべてブロック"</string>
     <string name="channel_notification_block_summary" msgid="3024773079420038146">"このチャンネルからの通知を表示しない"</string>
-    <string name="app_notification_override_dnd_title" msgid="7867458246395884830">"[通知を非表示] をオーバーライドする"</string>
-    <string name="app_notification_override_dnd_summary" msgid="3516007157020189746">"[通知を非表示] が [優先する通知のみ] に設定されているとき、この通知を引き続き表示する"</string>
+    <string name="app_notification_override_dnd_title" msgid="7867458246395884830">"マナーモードをオーバーライドする"</string>
+    <string name="app_notification_override_dnd_summary" msgid="3516007157020189746">"[マナーモード] が [優先する通知のみ] に設定されているとき、この通知を引き続き表示する"</string>
     <string name="app_notification_visibility_override_title" msgid="2187232730902430718">"ロック画面"</string>
     <string name="app_notification_row_banned" msgid="5983655258784814773">"ブロック済み"</string>
     <string name="app_notification_row_priority" msgid="7723839972982746568">"優先"</string>
@@ -2720,9 +2717,9 @@
     <string name="zen_mode_rule_type_unknown" msgid="3049377282766700600">"不明"</string>
     <string name="zen_mode_configure_rule" msgid="8865785428056490305">"ルールを設定"</string>
     <string name="zen_schedule_rule_type_name" msgid="142936744435271449">"時間ルール"</string>
-    <string name="zen_schedule_rule_enabled_toast" msgid="3379499360390382259">"自動ルールでは指定時間内は[通知を非表示]をONに設定します"</string>
+    <string name="zen_schedule_rule_enabled_toast" msgid="3379499360390382259">"自動ルールでは指定時間内はマナーモードを ON に設定します"</string>
     <string name="zen_event_rule_type_name" msgid="2645981990973086797">"予定ルール"</string>
-    <string name="zen_event_rule_enabled_toast" msgid="6910577623330811480">"自動ルールでは指定した予定の間は[通知を非表示]をONに設定します"</string>
+    <string name="zen_event_rule_enabled_toast" msgid="6910577623330811480">"自動ルールでは指定した予定の間はマナーモードを ON に設定します"</string>
     <string name="zen_mode_event_rule_calendar" msgid="8787906563769067418">"対象となる予定"</string>
     <string name="zen_mode_event_rule_summary_calendar_template" msgid="5135844750232403975">"対象となる予定: <xliff:g id="CALENDAR">%1$s</xliff:g>"</string>
     <string name="zen_mode_event_rule_summary_any_calendar" msgid="4936646399126636358">"すべてのカレンダー"</string>
@@ -2777,10 +2774,10 @@
     <string name="zen_mode_summary_alarms_only_by_time" msgid="7465525754879341907">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g>までアラームのみに変更します"</string>
     <string name="zen_mode_summary_always" msgid="6172985102689237703">"常に割り込みに変更します"</string>
     <string name="zen_mode_screen_on" msgid="7712038508173845101">"画面が ON のときにブロックする"</string>
-    <string name="zen_mode_screen_on_summary" msgid="6444425984146305149">"[通知を非表示] でサイレントに設定した通知を受信したときに、画面上にポップアップ表示されなくなります"</string>
+    <string name="zen_mode_screen_on_summary" msgid="6444425984146305149">"マナーモードでサイレントに設定した通知を受信したときに、画面上にポップアップ表示されなくなります"</string>
     <string name="zen_mode_screen_off" msgid="5026854939192419879">"画面が OFF のときにブロックする"</string>
-    <string name="zen_mode_screen_off_summary" msgid="6490932947651798094">"[通知を非表示] でサイレントに設定した通知を受信したときに、画面が ON になったり光が点滅したりしなくなります"</string>
-    <string name="zen_mode_screen_off_summary_no_led" msgid="3758698381956461866">"[通知を非表示] でサイレントに設定した通知を受信したときに画面が ON にならなくなります"</string>
+    <string name="zen_mode_screen_off_summary" msgid="6490932947651798094">"マナーモードでサイレントに設定した通知を受信したときに、画面が ON になったり光が点滅したりしなくなります"</string>
+    <string name="zen_mode_screen_off_summary_no_led" msgid="3758698381956461866">"マナーモードでサイレントに設定した通知を受信したときに画面が ON にならなくなります"</string>
     <string name="zen_mode_all_visual_interruptions" msgid="2851308980832487411">"OFF"</string>
     <string name="zen_mode_screen_on_visual_interruptions" msgid="7373348148129140528">"画面が ON のとき"</string>
     <string name="zen_mode_screen_off_visual_interruptions" msgid="4850792880144382633">"画面が OFF のとき"</string>
@@ -2848,7 +2845,7 @@
     <string name="notifications_silenced" msgid="4728603513072110381">"マナーモード"</string>
     <string name="notifications_redacted" msgid="4493588975742803160">"ロック画面にプライベートな内容を表示しない"</string>
     <string name="notifications_hidden" msgid="3619610536038757468">"ロック画面に表示しない"</string>
-    <string name="notifications_priority" msgid="1066342037602085552">"[通知を非表示] をオーバーライド"</string>
+    <string name="notifications_priority" msgid="1066342037602085552">"マナーモードをオーバーライド済み"</string>
     <string name="notifications_summary_divider" msgid="9013807608804041387">" / "</string>
     <string name="notification_summary_level" msgid="2726571692704140826">"レベル %d"</string>
     <plurals name="permissions_summary" formatted="false" msgid="6402730318075959117">
@@ -2871,7 +2868,7 @@
     <string name="filter_work_apps" msgid="24519936790795574">"仕事用"</string>
     <string name="filter_notif_blocked_apps" msgid="3446926933792244485">"ブロック中"</string>
     <string name="filter_with_domain_urls_apps" msgid="4573276638806792792">"ドメインURLあり"</string>
-    <string name="filter_notif_priority_apps" msgid="5056470299318500609">"[通知を非表示] をオーバーライド"</string>
+    <string name="filter_notif_priority_apps" msgid="5056470299318500609">"マナーモードをオーバーライド"</string>
     <string name="filter_notif_sensitive_apps" msgid="3847012996691991486">"ロック画面にプライベートな内容を表示しない"</string>
     <string name="filter_notif_hide_notifications_apps" msgid="3977513041080404368">"ロック画面に表示しない"</string>
     <string name="filter_notif_silent" msgid="8533960664617048281">"マナーモードで表示"</string>
@@ -2989,11 +2986,11 @@
     <string name="running_frequency" msgid="6622624669948277693">"頻度"</string>
     <string name="memory_maximum_usage" msgid="6513785462055278341">"最大使用量"</string>
     <string name="no_data_usage" msgid="9131454024293628063">"データ通信の使用はありません"</string>
-    <string name="zen_access_warning_dialog_title" msgid="1198189958031157142">"<xliff:g id="APP">%1$s</xliff:g>の[通知を非表示]へのアクセスを許可しますか?"</string>
-    <string name="zen_access_warning_dialog_summary" msgid="4015885767653010873">"アプリは[通知を非表示]のON/OFFを切り替えたり、関連する設定を変更したりできるようになります。"</string>
+    <string name="zen_access_warning_dialog_title" msgid="1198189958031157142">"<xliff:g id="APP">%1$s</xliff:g> のマナーモードへのアクセスを許可しますか?"</string>
+    <string name="zen_access_warning_dialog_summary" msgid="4015885767653010873">"アプリはマナーモードの ON / OFF を切り替えたり、関連する設定を変更したりできるようになります。"</string>
     <string name="zen_access_disabled_package_warning" msgid="302820100078584431">"通知アクセスが ON になっているため ON のままにしておく必要があります"</string>
-    <string name="zen_access_revoke_warning_dialog_title" msgid="558779234015793950">"「<xliff:g id="APP">%1$s</xliff:g>」の「通知を非表示」に対する権限を取り消しますか?"</string>
-    <string name="zen_access_revoke_warning_dialog_summary" msgid="5518216907304930148">"このアプリで作成したすべての「通知を非表示」ルールは削除されます。"</string>
+    <string name="zen_access_revoke_warning_dialog_title" msgid="558779234015793950">"<xliff:g id="APP">%1$s</xliff:g> のマナーモードに対する権限を取り消しますか?"</string>
+    <string name="zen_access_revoke_warning_dialog_summary" msgid="5518216907304930148">"このアプリで作成したすべてのマナーモード ルールは削除されます。"</string>
     <string name="ignore_optimizations_on" msgid="6915689518016285116">"最適化しない"</string>
     <string name="ignore_optimizations_off" msgid="6153196256410296835">"最適化する"</string>
     <string name="ignore_optimizations_on_desc" msgid="2321398930330555815">"電池の消耗が速くなる可能性があります"</string>
@@ -3049,8 +3046,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"火 午後6:01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"火 午後6:02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"火 午後6:03"</string>
-    <string name="see_all" msgid="8883901630052886984">"すべて表示"</string>
-    <string name="see_less" msgid="1250265310929558370">"一部を表示"</string>
     <string name="disconnected" msgid="5787956818111197212">"切断されています"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> のデータを使用しています"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
@@ -3084,7 +3079,7 @@
     <string name="condition_hotspot_summary" msgid="3433182779269409683">"ポータブル Wi-Fi アクセス ポイント(<xliff:g id="ID_1">%1$s</xliff:g>)が有効です。この端末では Wi-Fi が OFF になっています。"</string>
     <string name="condition_airplane_title" msgid="287356299107070503">"機内モードが ON"</string>
     <string name="condition_airplane_summary" msgid="2136872325308526329">"Wi-Fi、Bluetooth、モバイル ネットワークが OFF になっています。電話の発信やインターネットへの接続はできません。"</string>
-    <string name="condition_zen_title" msgid="2679168532600816392">"[通知を非通知] が ON(<xliff:g id="ID_1">%1$s</xliff:g>)"</string>
+    <string name="condition_zen_title" msgid="2679168532600816392">"マナーモードが ON(<xliff:g id="ID_1">%1$s</xliff:g>)"</string>
     <string name="condition_battery_title" msgid="3272131008388575349">"バッテリー セーバー ON"</string>
     <string name="condition_battery_summary" msgid="4418839236027977450">"パフォーマンスが制限されています。位置情報サービスとバックグラウンド データは OFF です。"</string>
     <string name="condition_cellular_title" msgid="2398754272044917264">"モバイルデータ OFF"</string>
diff --git a/res/values-ka-rGE/strings.xml b/res/values-ka-rGE/strings.xml
index 7a61f92..e234eaf 100644
--- a/res/values-ka-rGE/strings.xml
+++ b/res/values-ka-rGE/strings.xml
@@ -2280,20 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"კავშირის გაწყვეტა"</string>
     <string name="vpn_version" msgid="1939804054179766249">"ვერსია <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"VPN-ის დავიწყება"</string>
-    <!-- no translation found for vpn_replace_vpn_title (2963898301277610248) -->
-    <skip />
-    <!-- no translation found for vpn_set_vpn_title (4009987321156037267) -->
-    <skip />
-    <!-- no translation found for vpn_first_always_on_vpn_message (3025322109743675467) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_enable_message (2577928591361606641) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_disable_message (3011818750025879902) -->
-    <skip />
-    <!-- no translation found for vpn_replace_vpn_message (5611635724578812860) -->
-    <skip />
-    <!-- no translation found for vpn_turn_on (2363136869284273872) -->
-    <skip />
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"გსურთ არსებული VPN-ის ჩანაცვლება?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"გსურთ ყოველთვის ჩართული VPN-ის დაყენება?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"ამ პარამეტრის ჩართვის შემთხვევაში, VPN-ის წარმატებით დაკავშირებამდე ინტერნეტ-კავშირი არ გექნებათ"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"თქვენი არსებული VPN ჩანაცვლდება და VPN-ის წარმატებით დაკავშირებამდე ინტერნეტ-კავშირი არ გექნებათ"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"თქვენ უკვე დაკავშირებული ხართ ყოველთვის ჩართულ VPN-თან. ახალ VPN-თან დაკავშირების შემთხვევაში, არსებული ჩანაცვლდება, ხოლო ყოველთვის ჩართული რეჟიმი გამოირთვება."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"თქვენ უკვე დაკავშირებული ხართ VPN-თან. ახალ VPN-თან დაკავშირების შემთხვევაში, არსებული ჩანაცვლდება."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"ჩართვა"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g>-მა კავშირი ვერ დაამყარა"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"ყოველთვის ჩართული VPN მხარდაუჭერელია ამ აპის მიერ."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2536,8 +2529,12 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"ქსელი და ინტერნეტი"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"დაკავშირებული მოწყობილობები"</string>
-    <!-- no translation found for system_dashboard_summary (6112602136713843779) -->
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"აპები და შეტყობინებები"</string>
+    <!-- no translation found for account_dashboard_title (38701889336378742) -->
     <skip />
+    <!-- no translation found for app_default_dashboard_title (8176215295082796426) -->
+    <skip />
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"ენა: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"პარამეტრები"</string>
     <string name="search_menu" msgid="6283419262313758339">"ძიების პარამეტრები"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"ძიების პარამეტრები"</string>
@@ -3045,8 +3042,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"სამ, 18:01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"სამ, 18:02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"სამ, 18:03"</string>
-    <string name="see_all" msgid="8883901630052886984">"ყველას ნახვა"</string>
-    <string name="see_less" msgid="1250265310929558370">"ნაკლების ნახვა"</string>
     <string name="disconnected" msgid="5787956818111197212">"გათიშულია"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"გამოყენებულია მონაცემთა <xliff:g id="AMOUNT">%1$s</xliff:g>"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-kk-rKZ/strings.xml b/res/values-kk-rKZ/strings.xml
index 97fabcb..d97d9bb 100644
--- a/res/values-kk-rKZ/strings.xml
+++ b/res/values-kk-rKZ/strings.xml
@@ -2280,20 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Ажырату"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Нұсқасы: <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"VPN ұмыту"</string>
-    <!-- no translation found for vpn_replace_vpn_title (2963898301277610248) -->
-    <skip />
-    <!-- no translation found for vpn_set_vpn_title (4009987321156037267) -->
-    <skip />
-    <!-- no translation found for vpn_first_always_on_vpn_message (3025322109743675467) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_enable_message (2577928591361606641) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_disable_message (3011818750025879902) -->
-    <skip />
-    <!-- no translation found for vpn_replace_vpn_message (5611635724578812860) -->
-    <skip />
-    <!-- no translation found for vpn_turn_on (2363136869284273872) -->
-    <skip />
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Бар VPN қолданбасын ауыстыру керек пе?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Әрқашан қосулы VPN режимін орнату"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Бұл параметрді іске қоссаңыз, VPN сәтті қосылғанша интернетке қосыла алмайсыз"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Қолданыстағы VPN желісі алмастырылады және VPN сәтті қосылғанша интернетке қосыла алмайсыз"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Сіз әрқашан қосулы VPN желісіне қосылдыңыз. Егер басқа желіге қосылсаңыз, қолданыстағы VPN желісі алмастырылады және әрқашан қосулы режим өшіріледі."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Сіз VPN желісіне қосылдыңыз. Егер басқа желіге қосылсаңыз, қолданыстағы VPN желісі алмастырылады."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Қосу"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> қосыла алмайды"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Бұл қолданба \"әрқашан қосулы\" VPN желісін қолдамайды."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN (Виртуалды жеке желі)"</string>
@@ -2536,8 +2529,12 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Желі және интернет"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Қосылған құрылғылар"</string>
-    <!-- no translation found for system_dashboard_summary (6112602136713843779) -->
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Қолданбалар мен хабарландырулар"</string>
+    <!-- no translation found for account_dashboard_title (38701889336378742) -->
     <skip />
+    <!-- no translation found for app_default_dashboard_title (8176215295082796426) -->
+    <skip />
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Тіл: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Параметрлер"</string>
     <string name="search_menu" msgid="6283419262313758339">"Іздеу параметрлері"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Іздеу параметрлері"</string>
@@ -3045,8 +3042,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Бс 18:01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Бс 18:02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Бс 18:03"</string>
-    <string name="see_all" msgid="8883901630052886984">"Барлығын көру"</string>
-    <string name="see_less" msgid="1250265310929558370">"Азырақ көру"</string>
     <string name="disconnected" msgid="5787956818111197212">"Ажыратылған"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"Деректердің <xliff:g id="AMOUNT">%1$s</xliff:g> пайдаланылған"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-km-rKH/strings.xml b/res/values-km-rKH/strings.xml
index 976d245..5b2b968 100644
--- a/res/values-km-rKH/strings.xml
+++ b/res/values-km-rKH/strings.xml
@@ -2280,20 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"ផ្ដាច់"</string>
     <string name="vpn_version" msgid="1939804054179766249">"កំណែ <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"បំភ្លេច VPN"</string>
-    <!-- no translation found for vpn_replace_vpn_title (2963898301277610248) -->
-    <skip />
-    <!-- no translation found for vpn_set_vpn_title (4009987321156037267) -->
-    <skip />
-    <!-- no translation found for vpn_first_always_on_vpn_message (3025322109743675467) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_enable_message (2577928591361606641) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_disable_message (3011818750025879902) -->
-    <skip />
-    <!-- no translation found for vpn_replace_vpn_message (5611635724578812860) -->
-    <skip />
-    <!-- no translation found for vpn_turn_on (2363136869284273872) -->
-    <skip />
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"ជំនួស VPN ដែលមានស្រាប់ឬ?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"កំណត់ VPN ឲ្យបើកជានិច្ចឬ?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"ប្រសិនបើបើកការកំណត់នេះ អ្នកនឹងមិនមានការតភ្ជាប់អ៊ីនធឺណិតទេ រហូតទាល់តែ VPN នោះបានភ្ជាប់ដោយជោគជ័យ"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"VPN ដែលមានស្រាប់របស់អ្នកនឹងត្រូវបានជំនួស ហើយអ្នកនឹងមិនមានការតភ្ជាប់អ៊ីនធឺណិតទេ រហូតទាល់តែ VPN នោះបានភ្ជាប់ដោយជោគជ័យ"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"អ្នកបានភ្ជាប់ទៅ VPN ដែលបើកជានិច្ចរួចហើយ។ ប្រសិនបើអ្នកភ្ជាប់ទៅ VPN មួយផ្សេងទៀត នោះ VPN ដែលមានស្រាប់របស់អ្នកនឹងត្រូវបានជំនួស ហើយមុខងារបើកជានិច្ចនឹងបិទ។"</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"អ្នកបានភ្ជាប់ទៅ VPN រួចហើយ។ ប្រសិនបើអ្នកភ្ជាប់ទៅ VPN មួយផ្សេងទៀត នោះ VPN ដែលមានស្រាប់របស់អ្នកនឹងត្រូវបានជំនួស។"</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"បើក"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> មិនអាចភ្ជាប់បានទេ"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"កម្មវិធីនេះមិនគាំទ្ររបៀបបើក VPN ជានិច្ចនោះទេ។"</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2536,8 +2529,12 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"បណ្តាញ និងអ៊ីនធឺណិត"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"ឧបករណ៍ដែលបានភ្ជាប់"</string>
-    <!-- no translation found for system_dashboard_summary (6112602136713843779) -->
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"កម្មវិធី និងការជូនដំណឹង"</string>
+    <!-- no translation found for account_dashboard_title (38701889336378742) -->
     <skip />
+    <!-- no translation found for app_default_dashboard_title (8176215295082796426) -->
+    <skip />
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"ភាសា៖ <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"ការកំណត់"</string>
     <string name="search_menu" msgid="6283419262313758339">"ការកំណត់ការស្វែងរក"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"កំណត់​ការ​​ស្វែងរក"</string>
@@ -3045,8 +3042,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"អង្គារ៍ 6:01PM"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"អង្គារ៍ 6:02PM"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"អង្គារ៍ 6:03PM"</string>
-    <string name="see_all" msgid="8883901630052886984">"មើលទាំងអស់"</string>
-    <string name="see_less" msgid="1250265310929558370">"​មើល​តិច​ជាង"</string>
     <string name="disconnected" msgid="5787956818111197212">"បាន​ផ្ដាច់"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"បានប្រើទិន្នន័យអស់ <xliff:g id="AMOUNT">%1$s</xliff:g>"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-kn-rIN/strings.xml b/res/values-kn-rIN/strings.xml
index 63fa87b..a29aff2 100644
--- a/res/values-kn-rIN/strings.xml
+++ b/res/values-kn-rIN/strings.xml
@@ -2280,20 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"ಸಂಪರ್ಕ ಕಡಿತಗೊಳಿಸು"</string>
     <string name="vpn_version" msgid="1939804054179766249">"<xliff:g id="VERSION">%s</xliff:g> ಆವೃತ್ತಿ"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"VPN ಮರೆತುಬಿಡು"</string>
-    <!-- no translation found for vpn_replace_vpn_title (2963898301277610248) -->
-    <skip />
-    <!-- no translation found for vpn_set_vpn_title (4009987321156037267) -->
-    <skip />
-    <!-- no translation found for vpn_first_always_on_vpn_message (3025322109743675467) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_enable_message (2577928591361606641) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_disable_message (3011818750025879902) -->
-    <skip />
-    <!-- no translation found for vpn_replace_vpn_message (5611635724578812860) -->
-    <skip />
-    <!-- no translation found for vpn_turn_on (2363136869284273872) -->
-    <skip />
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ VPN ಸ್ಥಾನಾಂತರಿಸುವುದೇ?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"VPN ಯಾವಾಗಲೂ ಆನ್ ಆಗಿರುವಂತೆ ಹೊಂದಿಸುವುದೇ?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"ಈ ಸೆಟ್ಟಿಂಗ್ ಆನ್ ಮಾಡುವ ಮೂಲಕ, VPN ಯಶಸ್ವಿಯಾಗಿ ಸಂಪರ್ಕವಾಗುವವರೆಗೆ ನೀವು ಇಂಟರ್ನೆಟ್ ಸಂಪರ್ಕವನ್ನು ಹೊಂದುವುದಿಲ್ಲ"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"ನಿಮ್ಮ ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ VPN ಅನ್ನು ಸ್ಥಾನಾಂತರಿಸಲಾಗುವುದು ಮತ್ತು VPN ಯಶಸ್ವಿಯಾಗಿ ಸಂಪರ್ಕವಾಗುವವರೆಗೆ ನೀವು ಇಂಟರ್ನೆಟ್ ಸಂಪರ್ಕವನ್ನು ಹೊಂದುವುದಿಲ್ಲ"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"ಯಾವಾಗಲೂ ಆನ್ ಆಗಿರುವ VPN ಗೆ ನೀವು ಈಗಾಗಲೇ ಸಂಪರ್ಕಗೊಂಡಿರುವಿರಿ. ನೀವು ಬೇರೊಂದಕ್ಕೆ ಸಂಪರ್ಕಗೊಂಡಲ್ಲಿ, ನಿಮ್ಮ ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ VPN ಅನ್ನು ಸ್ಥಾನಾಂತರಿಸಲಾಗುವುದು ಮತ್ತು ಯಾವಾಗಲೂ ಆನ್ ಮೋಡ್‌ನಲ್ಲಿರುವುದನ್ನು ಆಫ್ ಮಾಡಲಾಗುತ್ತದೆ."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"ನೀವು ಈಗಾಗಲೇ VPN ಗೆ ಸಂಪರ್ಕ ಹೊಂದಿರುವಿರಿ. ಒಂದು ವೇಳೆ ನೀವು ಬೇರೊಂದಕ್ಕೆ ಸಂಪರ್ಕಗೊಂಡಲ್ಲಿ, ನಿಮ್ಮ ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ VPN ಅನ್ನು ಸ್ಥಾನಾಂತರಿಸಲಾಗುವುದು."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"ಆನ್ ಮಾಡು"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> ಸಂಪರ್ಕ ಸಾಧ್ಯವಿಲ್ಲ"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"ಈ ಅಪ್ಲಿಕೇಶನ್ ಯಾವಾಗಲೂ-ಆನ್ VPN ಬೆಂಬಲಿಸುವುದಿಲ್ಲ."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2536,8 +2529,12 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"ನೆಟ್‌ವರ್ಕ್ ಮತ್ತು ಇಂಟರ್ನೆಟ್"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"ಸಂಪರ್ಕ ಹೊಂದಿರುವ ಸಾಧನಗಳು"</string>
-    <!-- no translation found for system_dashboard_summary (6112602136713843779) -->
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"ಅಪ್ಲಿಕೇಶನ್‌ಗಳು ಮತ್ತು ಅಧಿಸೂಚನೆಗಳು"</string>
+    <!-- no translation found for account_dashboard_title (38701889336378742) -->
     <skip />
+    <!-- no translation found for app_default_dashboard_title (8176215295082796426) -->
+    <skip />
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"ಭಾಷೆ: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"ಸೆಟ್ಟಿಂಗ್‌ಗಳು"</string>
     <string name="search_menu" msgid="6283419262313758339">"ಹುಡುಕಾಟ ಸೆಟ್ಟಿಂಗ್‌ಗಳು"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"ಹುಡುಕಾಟ ಸೆಟ್ಟಿಂಗ್‌ಗಳು"</string>
@@ -3045,8 +3042,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"ಮಂಗಳ 6:01PM"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"ಮಂಗಳ 6:02PM"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"ಮಂಗಳ 6:03PM"</string>
-    <string name="see_all" msgid="8883901630052886984">"ಎಲ್ಲವನ್ನೂ ನೋಡಿ"</string>
-    <string name="see_less" msgid="1250265310929558370">"ಕಡಿಮೆ ನೋಡಿ"</string>
     <string name="disconnected" msgid="5787956818111197212">"ಸಂಪರ್ಕ ಕಡಿತಗೊಳಿಸಲಾಗಿದೆ"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> ಡೇಟಾ ಬಳಸಲಾಗಿದೆ"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index 1d147fa..b92fdae 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -2280,20 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"연결 해제"</string>
     <string name="vpn_version" msgid="1939804054179766249">"버전 <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"VPN 삭제"</string>
-    <!-- no translation found for vpn_replace_vpn_title (2963898301277610248) -->
-    <skip />
-    <!-- no translation found for vpn_set_vpn_title (4009987321156037267) -->
-    <skip />
-    <!-- no translation found for vpn_first_always_on_vpn_message (3025322109743675467) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_enable_message (2577928591361606641) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_disable_message (3011818750025879902) -->
-    <skip />
-    <!-- no translation found for vpn_replace_vpn_message (5611635724578812860) -->
-    <skip />
-    <!-- no translation found for vpn_turn_on (2363136869284273872) -->
-    <skip />
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"기존 VPN을 교체하시겠습니까?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"연결 유지 VPN을 설정하시겠습니까?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"이 설정을 사용하면 VPN이 연결될 때까지 인터넷에 연결되지 않습니다."</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"기존 VPN이 교체되며 VPN에 연결될 때까지 인터넷에 연결되지 않습니다."</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"이미 연결 유지 VPN에 연결되어 있습니다. 다른 VPN에 연결하면 기존 VPN은 교체되며 연결 유지 모드가 사용 중지됩니다."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"이미 VPN에 연결되어 있습니다. 다른 VPN에 연결하면 기존 VPN은 교체됩니다."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"사용"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g>에 연결할 수 없습니다."</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"이 앱은 연결 유지 VPN을 지원하지 않습니다."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2536,8 +2529,13 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"네트워크 및 인터넷"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"연결된 기기"</string>
-    <!-- no translation found for system_dashboard_summary (6112602136713843779) -->
+    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
     <skip />
+    <!-- no translation found for account_dashboard_title (38701889336378742) -->
+    <skip />
+    <!-- no translation found for app_default_dashboard_title (8176215295082796426) -->
+    <skip />
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"언어: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"설정"</string>
     <string name="search_menu" msgid="6283419262313758339">"검색 설정"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"검색 설정"</string>
@@ -3045,8 +3043,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"화요일 오후 6시 1분"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"화요일 오후 6시 2분"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"화요일 오후 6시 3분"</string>
-    <string name="see_all" msgid="8883901630052886984">"모두 보기"</string>
-    <string name="see_less" msgid="1250265310929558370">"간략히 보기"</string>
     <string name="disconnected" msgid="5787956818111197212">"연결 해제됨"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"데이터 <xliff:g id="AMOUNT">%1$s</xliff:g> 사용됨"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-ky-rKG/strings.xml b/res/values-ky-rKG/strings.xml
index 3310d53..d336841 100644
--- a/res/values-ky-rKG/strings.xml
+++ b/res/values-ky-rKG/strings.xml
@@ -2279,20 +2279,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Ажыратуу"</string>
     <string name="vpn_version" msgid="1939804054179766249">"<xliff:g id="VERSION">%s</xliff:g> версиясы"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"VPN профили унутулсун"</string>
-    <!-- no translation found for vpn_replace_vpn_title (2963898301277610248) -->
-    <skip />
-    <!-- no translation found for vpn_set_vpn_title (4009987321156037267) -->
-    <skip />
-    <!-- no translation found for vpn_first_always_on_vpn_message (3025322109743675467) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_enable_message (2577928591361606641) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_disable_message (3011818750025879902) -->
-    <skip />
-    <!-- no translation found for vpn_replace_vpn_message (5611635724578812860) -->
-    <skip />
-    <!-- no translation found for vpn_turn_on (2363136869284273872) -->
-    <skip />
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Учурдагы VPN алмаштырылсынбы?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Дайым иштеген VPN\'ди жөндөөбу?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Бул орнотууну куйгүзүү менен VPN ийгиликтүү туташмайынча, интернетиңиз жок болуп турат"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Күйгүзулгөн VPN\'ңиз алмаштырылып, VPN ийгиликтүү туташмайынча, интернетиңиз жок болуп турат"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Дайым иштеген VPN кызматыңыз туташылган. Эгер башкасына туташсаңыз, учурдагы VPN алмаштырылып, дайым күйүк режими өчүрүлүп калат."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"VPN кызматы туташылган. Эгер башкасына туташсаңыз, учурдагы VPN өчүрүлөт."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Күйгүзүү"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> туташпай жатат"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Бул колдонмо дайым иштеген VPN кызматына туташпайт."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2535,8 +2528,12 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Тармак жана Интернет"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Туташкан түзмөктөр"</string>
-    <!-- no translation found for system_dashboard_summary (6112602136713843779) -->
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Колдонмолор жана эскертмелер"</string>
+    <!-- no translation found for account_dashboard_title (38701889336378742) -->
     <skip />
+    <!-- no translation found for app_default_dashboard_title (8176215295082796426) -->
+    <skip />
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Тили: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Жөндөөлөр"</string>
     <string name="search_menu" msgid="6283419262313758339">"Издөө жөндөөлөрү"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Издөө жөндөөлөрү"</string>
@@ -3044,8 +3041,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Шй. 18:01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Шй. 18:02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Шй. 18:03"</string>
-    <string name="see_all" msgid="8883901630052886984">"Бардыгын көрүү"</string>
-    <string name="see_less" msgid="1250265310929558370">"Азыраак көрүү"</string>
     <string name="disconnected" msgid="5787956818111197212">"Ажыратылган"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"Дайындардын <xliff:g id="AMOUNT">%1$s</xliff:g> колдонулду"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-lo-rLA/strings.xml b/res/values-lo-rLA/strings.xml
index cf7ec5f..40654cf 100644
--- a/res/values-lo-rLA/strings.xml
+++ b/res/values-lo-rLA/strings.xml
@@ -2280,20 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"ຕັດການເຊື່ອມຕໍ່"</string>
     <string name="vpn_version" msgid="1939804054179766249">"ເວີ​ຊັນ <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"ລືມ VPN"</string>
-    <!-- no translation found for vpn_replace_vpn_title (2963898301277610248) -->
-    <skip />
-    <!-- no translation found for vpn_set_vpn_title (4009987321156037267) -->
-    <skip />
-    <!-- no translation found for vpn_first_always_on_vpn_message (3025322109743675467) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_enable_message (2577928591361606641) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_disable_message (3011818750025879902) -->
-    <skip />
-    <!-- no translation found for vpn_replace_vpn_message (5611635724578812860) -->
-    <skip />
-    <!-- no translation found for vpn_turn_on (2363136869284273872) -->
-    <skip />
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"ຂຽນທັບ VPN ທີ່ມີຢູ່ກ່ອນແລ້ວຂອງທ່ານບໍ?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Set always-on VPN?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"By turning on this setting, you won\'t have an Internet connection until the VPN successfully connects"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Your existing VPN will be replaced, and you won\'t have an Internet connection until the VPN successfully connects"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"You\'re already connected to an always-on VPN. If you connect to a different one, your existing VPN will be replaced, and always-on mode will turn off."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"ທ່ານເຊື່ອມຕໍ່ຫາ VPN ຢູ່ກ່ອນແລ້ວ. ຫາກທ່ານເຊື່ອມຕໍ່ຫາອັນອື່ນອີກ, VPN ທີ່ມີຢູ່ແລ້ວຂອງທ່ານຈະຖືກແທນທີ່."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"ເປີດໃຊ້"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> ບໍ່ສາມາດເຊື່ອມຕໍ່ໄດ້"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"ແອັບນີ້ບໍ່ຮອງຮັບ VPN ແບບເປີດຕະຫຼອດເວລາ."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2536,8 +2529,12 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"ເຄືອຂ່າຍ ແລະ ອິນເຕີເນັດ"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"ອຸປະກອນທີ່ເຊື່ອມຕໍ່ແລ້ວ"</string>
-    <!-- no translation found for system_dashboard_summary (6112602136713843779) -->
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"ແອັບ ແລະ ການແຈ້ງເຕືອນ"</string>
+    <!-- no translation found for account_dashboard_title (38701889336378742) -->
     <skip />
+    <!-- no translation found for app_default_dashboard_title (8176215295082796426) -->
+    <skip />
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Language: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"​ການ​ຕັ້ງ​ຄ່າ"</string>
     <string name="search_menu" msgid="6283419262313758339">"​ການ​ຕັ້ງ​ຄ່າ​ການ​ຊອກ​ຫາ"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"​ການ​ຕັ້ງ​ຄ່າ​ການ​ຊອກ​ຫາ"</string>
@@ -3045,8 +3042,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"ອັງຄານ 6:01 ໂມງແລງ"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"ອັງຄານ 6:02 ໂມງແລງ"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"ອັງຄານ 6:03 ໂມງແລງ"</string>
-    <string name="see_all" msgid="8883901630052886984">"ເບິ່ງ​ທັງ​ໝົດ"</string>
-    <string name="see_less" msgid="1250265310929558370">"​​ເບິ່ງ​ໜ້ອຍ​ລົງ"</string>
     <string name="disconnected" msgid="5787956818111197212">"​ຕັດ​ການ​ເຊື່ອມ​ຕໍ່​ແລ້ວ"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"ໃຊ້ຂໍ້ມູນໄປແລ້ວ <xliff:g id="AMOUNT">%1$s</xliff:g>"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index 1150bcb..fa39cf3 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -2314,20 +2314,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Atsijungti"</string>
     <string name="vpn_version" msgid="1939804054179766249">"<xliff:g id="VERSION">%s</xliff:g> versija"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Pamiršti VPN"</string>
-    <!-- no translation found for vpn_replace_vpn_title (2963898301277610248) -->
-    <skip />
-    <!-- no translation found for vpn_set_vpn_title (4009987321156037267) -->
-    <skip />
-    <!-- no translation found for vpn_first_always_on_vpn_message (3025322109743675467) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_enable_message (2577928591361606641) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_disable_message (3011818750025879902) -->
-    <skip />
-    <!-- no translation found for vpn_replace_vpn_message (5611635724578812860) -->
-    <skip />
-    <!-- no translation found for vpn_turn_on (2363136869284273872) -->
-    <skip />
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Pakeisti esamą VPN?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Nustatyti visada įjungtą VPN?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Įjungę šį nustatymą neturėsite interneto ryšio, kol VPN nebus sėkmingai įjungtas"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Esamas VPN bus pakeistas ir jūs neturėsite interneto ryšio, kol VPN nebus sėkmingai įjungtas"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Jau esate prisijungę prie visada įjungto VPN. Jei prisijungsite prie kito VPN, esamas VPN bus pakeistas ir visada įjungto VPN režimas bus išjungtas."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Jau esate prisijungę prie VPN. Jei prisijungsite prie kito VPN, esamas VPN bus pakeistas."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Įjungti"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"Nepavyko prisijungti prie „<xliff:g id="VPN_NAME">%1$s</xliff:g>“"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Ši programa nepalaiko visada įjungto VPN."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2580,8 +2573,12 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Tinkas ir internetas"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Prijungti įrenginiai"</string>
-    <!-- no translation found for system_dashboard_summary (6112602136713843779) -->
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Programos ir pranešimai"</string>
+    <!-- no translation found for account_dashboard_title (38701889336378742) -->
     <skip />
+    <!-- no translation found for app_default_dashboard_title (8176215295082796426) -->
+    <skip />
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Kalba: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Nustatymai"</string>
     <string name="search_menu" msgid="6283419262313758339">"Paieškos nustatymai"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Paieškos nustatymai"</string>
@@ -3107,8 +3104,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"A., 18.01 val."</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"A., 18.02 val."</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"A., 18.03 val."</string>
-    <string name="see_all" msgid="8883901630052886984">"Žr. viską"</string>
-    <string name="see_less" msgid="1250265310929558370">"Žr. mažiau"</string>
     <string name="disconnected" msgid="5787956818111197212">"Atsijungta"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"Panaudota duomenų: <xliff:g id="AMOUNT">%1$s</xliff:g>"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index 93a2712..8a74bb3 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -2297,20 +2297,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Pārtraukt savienojumu"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Versija <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Aizmirst VPN"</string>
-    <!-- no translation found for vpn_replace_vpn_title (2963898301277610248) -->
-    <skip />
-    <!-- no translation found for vpn_set_vpn_title (4009987321156037267) -->
-    <skip />
-    <!-- no translation found for vpn_first_always_on_vpn_message (3025322109743675467) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_enable_message (2577928591361606641) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_disable_message (3011818750025879902) -->
-    <skip />
-    <!-- no translation found for vpn_replace_vpn_message (5611635724578812860) -->
-    <skip />
-    <!-- no translation found for vpn_turn_on (2363136869284273872) -->
-    <skip />
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Vai aizstāt esošo VPN?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Vai iestatīt vienmēr ieslēgtu VPN?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Ieslēdzot šo iestatījumu, jums nebūs interneta savienojuma, kamēr nebūs sekmīgi izveidots VPN savienojums."</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Jūsu esošais VPN tiks aizstāts, un jums nebūs interneta savienojuma, kamēr nebūs sekmīgi izveidots VPN savienojums."</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Jūs jau esat izveidojis savienojumu ar vienmēr ieslēgtu VPN. Ja izveidosiet savienojumu ar citu VPN, esošais VPN tiks aizstāts un režīms “vienmēr ieslēgts” tiks izslēgts."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Jau ir izveidots savienojums ar VPN. Izveidojot savienojumu ar citu VPN, esošais tiks aizstāts."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Ieslēgt"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g>: nevar izveidot savienojumu"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Šajā lietotnē netiek atbalstīts vienmēr ieslēgts VPN."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2558,8 +2551,12 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Tīkls un internets"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Pievienotās ierīces"</string>
-    <!-- no translation found for system_dashboard_summary (6112602136713843779) -->
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Lietotnes un paziņojumi"</string>
+    <!-- no translation found for account_dashboard_title (38701889336378742) -->
     <skip />
+    <!-- no translation found for app_default_dashboard_title (8176215295082796426) -->
+    <skip />
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Valoda: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Iestatījumi"</string>
     <string name="search_menu" msgid="6283419262313758339">"Meklēšanas iestatījumi"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Meklēšanas iestatījumi"</string>
@@ -3075,8 +3072,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Otrdien plkst. 18:01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Otrdien plkst. 18:02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Otrdien plkst. 18:03"</string>
-    <string name="see_all" msgid="8883901630052886984">"Skatīt visus"</string>
-    <string name="see_less" msgid="1250265310929558370">"Skatīt mazāk"</string>
     <string name="disconnected" msgid="5787956818111197212">"Atvienots"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"Izmantoti <xliff:g id="AMOUNT">%1$s</xliff:g> datu"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-mk-rMK/strings.xml b/res/values-mk-rMK/strings.xml
index 87ec149..ef83816 100644
--- a/res/values-mk-rMK/strings.xml
+++ b/res/values-mk-rMK/strings.xml
@@ -2280,20 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Исклучи"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Верзија <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Заборави VPN"</string>
-    <!-- no translation found for vpn_replace_vpn_title (2963898301277610248) -->
-    <skip />
-    <!-- no translation found for vpn_set_vpn_title (4009987321156037267) -->
-    <skip />
-    <!-- no translation found for vpn_first_always_on_vpn_message (3025322109743675467) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_enable_message (2577928591361606641) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_disable_message (3011818750025879902) -->
-    <skip />
-    <!-- no translation found for vpn_replace_vpn_message (5611635724578812860) -->
-    <skip />
-    <!-- no translation found for vpn_turn_on (2363136869284273872) -->
-    <skip />
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Да се замени постојната VPN?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Да се постави „секогаш вклучена“ VPN?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Ако ја вклучите поставкава, нема да имате интернет-врска сѐ додека VPN успешно се поврзе"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Вашата постојна VPN ќе се замени и нема да имате интернет-врска сѐ додека VPN успешно се поврзе"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Веќе сте поврзани на „секогаш вклучена“ VPN. Ако се поврзете на друга мрежа, вашата постојна VPN ќе се замени и режимот „секогаш вклучена“ ќе се исклучи."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Веќе сте поврзани на VPN. Ако се поврзете на друга мрежа, вашата постојна VPN ќе се замени."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Вклучете"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> не може да се поврзе"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Оваа апликација не поддржува постојано вклучен VPN."</string>
     <string name="vpn_title" msgid="6317731879966640551">"Виртуелна приватна мрежа (VPN)"</string>
@@ -2536,8 +2529,12 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Мрежа и Интернет"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Поврзани уреди"</string>
-    <!-- no translation found for system_dashboard_summary (6112602136713843779) -->
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Апликации и известувања"</string>
+    <!-- no translation found for account_dashboard_title (38701889336378742) -->
     <skip />
+    <!-- no translation found for app_default_dashboard_title (8176215295082796426) -->
+    <skip />
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Јазик: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Поставки"</string>
     <string name="search_menu" msgid="6283419262313758339">"Поставки за пребарување"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Поставки за пребарување"</string>
@@ -3045,8 +3042,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Вто 18:01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Вто 18:02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Вто 18:03"</string>
-    <string name="see_all" msgid="8883901630052886984">"Види ги сите"</string>
-    <string name="see_less" msgid="1250265310929558370">"Види помалку"</string>
     <string name="disconnected" msgid="5787956818111197212">"Исклучено"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> од податоците се искористени"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-ml-rIN/strings.xml b/res/values-ml-rIN/strings.xml
index f391137..03a9246 100644
--- a/res/values-ml-rIN/strings.xml
+++ b/res/values-ml-rIN/strings.xml
@@ -2280,20 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"വിച്ഛേദിക്കുക"</string>
     <string name="vpn_version" msgid="1939804054179766249">"പതിപ്പ് <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"VPN മറക്കുക"</string>
-    <!-- no translation found for vpn_replace_vpn_title (2963898301277610248) -->
-    <skip />
-    <!-- no translation found for vpn_set_vpn_title (4009987321156037267) -->
-    <skip />
-    <!-- no translation found for vpn_first_always_on_vpn_message (3025322109743675467) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_enable_message (2577928591361606641) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_disable_message (3011818750025879902) -->
-    <skip />
-    <!-- no translation found for vpn_replace_vpn_message (5611635724578812860) -->
-    <skip />
-    <!-- no translation found for vpn_turn_on (2363136869284273872) -->
-    <skip />
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"നിലവിലുള്ള VPN-ന് പകരം പുതിയതാക്കണോ?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"\'എല്ലായ്പ്പോഴും ഓൺ\' VPN സജ്ജമാക്കണോ?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"ഈ ക്രമീകരണം ഓണാക്കുകയാണെങ്കിൽ, VPN കണക്റ്റുചെയ്യുന്നത് വരെ നിങ്ങൾക്ക് ഇന്റർനെറ്റ് കണക്ഷൻ ഉണ്ടായിരിക്കുകയില്ല."</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"നിലവിലുള്ള VPN-ന് പകരം പുതിയത് ഉപയോഗിക്കും, VPN കണക്റ്റുചെയ്യുന്നത് വരെ നിങ്ങൾക്ക് ഇന്റർനെറ്റ് കണക്ഷൻ ഉണ്ടായിരിക്കുകയുമില്ല."</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"ഇതിനകം തന്നെ നിങ്ങളൊരു \'എല്ലായ്പ്പോഴും ഓൺ\' VPN-ലേക്ക് കണക്റ്റുചെയ്തിട്ടുണ്ട്. നിങ്ങൾ വേറൊരു VPN-ലേക്ക് കണക്റ്റുചെയ്യുന്ന പക്ഷം, നിലവിലുള്ളതിന് പകരം പുതിയത് ഉപയോഗിക്കും, \'എല്ലായ്പ്പോഴും ഓൺ\' മോഡ് ഓഫാവുകയും ചെയ്യും."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"ഇതിനകം തന്നെ നിങ്ങൾ ഒരു VPN-ലേക്ക് കണക്റ്റുചെയ്തിട്ടുണ്ട്. നിങ്ങൾ വേറൊരു VPN-ലേക്ക് കണക്റ്റുചെയ്യുന്ന പക്ഷം, നിലവിലുള്ളതിന് പകരം പുതിയത് ഉപയോഗിക്കും."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"ഓൺ ചെയ്യുക"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> കണക്റ്റുചെയ്യാൻ കഴിയില്ല"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"ഈ ആപ്പ് \'എല്ലായ്‌പ്പോഴും ഓണായിരിക്കുന്ന VPN\' പിന്തുണയ്ക്കുന്നില്ല."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2536,8 +2529,12 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"നെറ്റ്‌വർക്കും ഇന്റർനെറ്റും"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"കണക്‌റ്റുചെയ്‌ത ഉപകരണങ്ങൾ"</string>
-    <!-- no translation found for system_dashboard_summary (6112602136713843779) -->
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"ആപ്‌സും അറിയിപ്പുകളും"</string>
+    <!-- no translation found for account_dashboard_title (38701889336378742) -->
     <skip />
+    <!-- no translation found for app_default_dashboard_title (8176215295082796426) -->
+    <skip />
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"ഭാഷ: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"ക്രമീകരണം"</string>
     <string name="search_menu" msgid="6283419262313758339">"തിരയൽ ക്രമീകരണം"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"തിരയൽ ക്രമീകരണങ്ങൾ"</string>
@@ -3045,8 +3042,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"ചൊവ്വ 6:01PM"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"ചൊവ്വ 6:02PM"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"ചൊവ്വ 6:03PM"</string>
-    <string name="see_all" msgid="8883901630052886984">"എല്ലാം കാണുക"</string>
-    <string name="see_less" msgid="1250265310929558370">"കുറച്ച് കാണുക"</string>
     <string name="disconnected" msgid="5787956818111197212">"വിച്ഛേദിച്ചു"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> ഡാറ്റ ഉപയോഗിച്ചു"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-mn-rMN/strings.xml b/res/values-mn-rMN/strings.xml
index 88d7d15..5f09887 100644
--- a/res/values-mn-rMN/strings.xml
+++ b/res/values-mn-rMN/strings.xml
@@ -1690,7 +1690,7 @@
     <string name="battery_history_minutes_no_seconds" msgid="7780294302606853082">"<xliff:g id="MINUTES">%1$d</xliff:g>м"</string>
     <string name="usage_stats_label" msgid="5890846333487083609">"Ашиглалтын статистик"</string>
     <string name="testing_usage_stats" msgid="7823048598893937339">"Ашиглалтын статистик"</string>
-    <string name="display_order_text" msgid="8592776965827565271">"Эрэмблэх:"</string>
+    <string name="display_order_text" msgid="8592776965827565271">"Эрэмбэлэх:"</string>
     <string name="app_name_label" msgid="5440362857006046193">"Апп"</string>
     <string name="last_time_used_label" msgid="8459441968795479307">"Ашигласан сүүлийн цаг"</string>
     <string name="usage_time_label" msgid="295954901452833058">"Ашиглалтын цаг"</string>
@@ -2280,20 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Салгах"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Хувилбар <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"VPN мартсан"</string>
-    <!-- no translation found for vpn_replace_vpn_title (2963898301277610248) -->
-    <skip />
-    <!-- no translation found for vpn_set_vpn_title (4009987321156037267) -->
-    <skip />
-    <!-- no translation found for vpn_first_always_on_vpn_message (3025322109743675467) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_enable_message (2577928591361606641) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_disable_message (3011818750025879902) -->
-    <skip />
-    <!-- no translation found for vpn_replace_vpn_message (5611635724578812860) -->
-    <skip />
-    <!-- no translation found for vpn_turn_on (2363136869284273872) -->
-    <skip />
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Энэ VPN-г солих уу?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"VPN-г тогтмол асаалттайгаар тохируулах уу?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Та энэ тохиргоог асааснаар VPN-г холбогдох хүртэл Интернэтэд холбогдох боломжгүй болно"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Таны одоогийн VPN-г солих бөгөөд та VPN-г холбогдох хүртэл Интернэтэд холбогдох боломжгүй болно"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Та аль хэдийн тогтмол асаалттай VPN-д холбогдсон байна. Хэрэв та өөр холболтод холбогдвол таны одоогийн VPN-г сольж, тогтмол асаалттай горим унтрах болно."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Та аль хэдийн VPN-д холбогдсон байна. Хэрэв та өөр холболтод холбогдвол одоогийн ашиглаж байгаа VPN-г солих болно."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Асаах"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> холбогдох боломжгүй байна"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Энэ апп нь тотгмол асаалттай VPN-г дэмждэггүй."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2536,8 +2529,12 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Сүлжээ &amp; интернэт"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Холбогдсон төхөөрөмж"</string>
-    <!-- no translation found for system_dashboard_summary (6112602136713843779) -->
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Апп; мэдэгдэл"</string>
+    <!-- no translation found for account_dashboard_title (38701889336378742) -->
     <skip />
+    <!-- no translation found for app_default_dashboard_title (8176215295082796426) -->
+    <skip />
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Хэл: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Тохиргоо"</string>
     <string name="search_menu" msgid="6283419262313758339">"Хайлтын тохиргоо"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Хайлтын тохиргоо"</string>
@@ -3043,8 +3040,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Мя 18:01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Мя 18:02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Мя 18:03"</string>
-    <string name="see_all" msgid="8883901630052886984">"Бүгдийг харах"</string>
-    <string name="see_less" msgid="1250265310929558370">"Цөөнийг харах"</string>
     <string name="disconnected" msgid="5787956818111197212">"Салгасан"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> датаг ашигласан"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-mr-rIN/strings.xml b/res/values-mr-rIN/strings.xml
index ee3aa95..90d68c7 100644
--- a/res/values-mr-rIN/strings.xml
+++ b/res/values-mr-rIN/strings.xml
@@ -2280,20 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"‍डिस्कनेक्ट करा"</string>
     <string name="vpn_version" msgid="1939804054179766249">"आवृत्ती <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"VPN विसरा"</string>
-    <!-- no translation found for vpn_replace_vpn_title (2963898301277610248) -->
-    <skip />
-    <!-- no translation found for vpn_set_vpn_title (4009987321156037267) -->
-    <skip />
-    <!-- no translation found for vpn_first_always_on_vpn_message (3025322109743675467) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_enable_message (2577928591361606641) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_disable_message (3011818750025879902) -->
-    <skip />
-    <!-- no translation found for vpn_replace_vpn_message (5611635724578812860) -->
-    <skip />
-    <!-- no translation found for vpn_turn_on (2363136869284273872) -->
-    <skip />
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"विद्यमान VPN पुनर्स्थित करायचे?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"नेहमी-चालू VPN सेट करायचे?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"हे सेटिंग चालू करून, VPN यशस्वीरित्या कनेक्ट करेपर्यंत आपल्याकडे इंटरनेट कनेक्शन असणार नाही"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"आपले विद्यमान VPN पुनर्स्थित केले जाईल आणि VPN यशस्वीरित्या कनेक्ट करेपर्यंत आपल्याकडे इंटरनेट कनेक्शन असणार नाही"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"आपण आधीपासून नेहमी-चालू VPN शी कनेक्ट केले आहे. आपण एका भिन्न VPN शी कनेक्ट केल्यास, आपले विद्यमान VPN पुनर्स्थित केले जाईल आणि नेहमी-चालू मोड बंद होईल."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"आपण आधीपासून एका VPN शी कनेक्ट केले आहे. आपण भिन्न VPN शी कनेक्ट केल्यास, आपले विद्यमान VPN बदलले जाईल."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"चालू करा"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> कनेक्ट करू शकत नाही"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"हा अॅप नेहमी-चालू VPN ला समर्थन देत नाही."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2536,8 +2529,12 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"नेटवर्क आणि इंटरनेट"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"कनेक्‍ट केलेले डिव्‍हाइसेस"</string>
-    <!-- no translation found for system_dashboard_summary (6112602136713843779) -->
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"अॅप्स आणि सूचना"</string>
+    <!-- no translation found for account_dashboard_title (38701889336378742) -->
     <skip />
+    <!-- no translation found for app_default_dashboard_title (8176215295082796426) -->
+    <skip />
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"भाषा: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"सेटिंग्ज"</string>
     <string name="search_menu" msgid="6283419262313758339">"शोध सेटिंग्ज"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"शोध सेटिंग्ज"</string>
@@ -3045,8 +3042,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"मंगळवारी 6:01PM वाजता"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"मंगळवारी 6:02PM वाजता"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"मंगळवारी 6:03PM वाजता"</string>
-    <string name="see_all" msgid="8883901630052886984">"सर्व पहा"</string>
-    <string name="see_less" msgid="1250265310929558370">"कमी पहा"</string>
     <string name="disconnected" msgid="5787956818111197212">"डिस्कनेक्ट केले"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> डेटा वापरला"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-ms-rMY/strings.xml b/res/values-ms-rMY/strings.xml
index cd5ed47..5d521e2 100644
--- a/res/values-ms-rMY/strings.xml
+++ b/res/values-ms-rMY/strings.xml
@@ -2280,20 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Putuskan sambungan"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Versi <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Lupakan VPN"</string>
-    <!-- no translation found for vpn_replace_vpn_title (2963898301277610248) -->
-    <skip />
-    <!-- no translation found for vpn_set_vpn_title (4009987321156037267) -->
-    <skip />
-    <!-- no translation found for vpn_first_always_on_vpn_message (3025322109743675467) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_enable_message (2577928591361606641) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_disable_message (3011818750025879902) -->
-    <skip />
-    <!-- no translation found for vpn_replace_vpn_message (5611635724578812860) -->
-    <skip />
-    <!-- no translation found for vpn_turn_on (2363136869284273872) -->
-    <skip />
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Gantikan VPN yang sedia ada?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Tetapkan VPN sentiasa hidup?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Dengan menghidupkan tetapan ini, anda tidak akan ada sambungan Internet sehingga VPN berjaya disambungkan"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"VPN anda yang sedia ada akan digantikan dan anda tidak akan ada sambungan Internet sehingga VPN berjaya disambungkan"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Anda sudah disambungkan ke VPN sentiasa hidup. Jika anda menyambung ke VPN yang lain, VPN anda yang sedia ada akan digantikan dan mod sentiasa hidup akan dimatikan."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Anda sudah disambungkan ke VPN. Jika anda menyambung ke VPN yang lain, VPN anda yang sedia ada akan digantikan."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Hidupkan"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> tidak dapat menyambung"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Apl ini tidak menyokong VPN yang sentiasa hidup"</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2536,8 +2529,12 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Rangkaian &amp; Internet"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Peranti yang disambungkan"</string>
-    <!-- no translation found for system_dashboard_summary (6112602136713843779) -->
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Apl &amp; pemberitahuan"</string>
+    <!-- no translation found for account_dashboard_title (38701889336378742) -->
     <skip />
+    <!-- no translation found for app_default_dashboard_title (8176215295082796426) -->
+    <skip />
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Bahasa: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Tetapan"</string>
     <string name="search_menu" msgid="6283419262313758339">"Tetapan carian"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Tetapan carian"</string>
@@ -3045,8 +3042,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Sel 6:01PTG"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Sel 6:02PTG"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Sel 6:03 PTG"</string>
-    <string name="see_all" msgid="8883901630052886984">"Lihat semua"</string>
-    <string name="see_less" msgid="1250265310929558370">"Lihat kurang"</string>
     <string name="disconnected" msgid="5787956818111197212">"Diputuskan sambungan"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> data digunakan"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-my-rMM/strings.xml b/res/values-my-rMM/strings.xml
index 4be666c..de5746b 100644
--- a/res/values-my-rMM/strings.xml
+++ b/res/values-my-rMM/strings.xml
@@ -2280,20 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"ဆက်သွယ်မှု ဖြတ်ရန်"</string>
     <string name="vpn_version" msgid="1939804054179766249">"ဗားရှင်း <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"VPN ကိုမေ့လိုက်ပါ"</string>
-    <!-- no translation found for vpn_replace_vpn_title (2963898301277610248) -->
-    <skip />
-    <!-- no translation found for vpn_set_vpn_title (4009987321156037267) -->
-    <skip />
-    <!-- no translation found for vpn_first_always_on_vpn_message (3025322109743675467) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_enable_message (2577928591361606641) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_disable_message (3011818750025879902) -->
-    <skip />
-    <!-- no translation found for vpn_replace_vpn_message (5611635724578812860) -->
-    <skip />
-    <!-- no translation found for vpn_turn_on (2363136869284273872) -->
-    <skip />
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"ရှိပြီးသား VPN ကိုအစားထိုးမလား။"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"VPN ကို အမြဲတမ်းဖွင့်ထားရန် သတ်မှတ်မလား။"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"ဤဆက်တင်ကို ဖွင့်ခြင်းဖြင့် VPN အောင်မြင်စွာ မချိတ်မချင်း သင့်တွင် အင်တာနက်ချိတ်ဆက်မှု ရှိမည်မဟုတ်ပါ"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"သင်၏ လက်ရှိ VPN ကို အစားထိုးသွားမည်ဖြစ်၍ VPN အောင်မြင်စွာ မချိတ်မချင်း သင့်ထံတွင် အင်တာနက် ချိတ်ဆက်မှု ရှိမည်မဟုတ်ပါ"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"သင်သည် အမြဲတမ်းဖွင့်ထားရသော VPN နှင့် ချိတ်ဆက်ပြီးသားဖြစ်သည်။ အခြားတစ်ခုနှင့် ချိတ်ဆက်လိုက်လျှင် လက်ရှိ VPN ကို အစားထိုးသွားမည်ဖြစ်၍ အမြဲဖွင့်ထားရသော မုဒ်သည် ပိတ်သွားပါမည်။"</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"VPN သို့ ချိတ်ဆက်ပြီးသား ဖြစ်ပါသည်။ အခြားတစ်ခုသို့ ချိတ်ဆက်လျှင် လက်ရှိ VPN ကိုအစားထိုးသွားပါမည်။"</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"ဖွင့်ရန်"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> ချိတ်ဆက်၍မရပါ"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"ဤအက်ပ်သည် VPN အမြဲတမ်းဖွင့်ထားခြင်းကို ပံ့ပိုးမှုမရှိပါ။"</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2536,8 +2529,12 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"ကွန်ရက်နှင့် အင်တာနက်"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"ချိတ်ဆက်ထားသော စက်ပစ္စည်းများ"</string>
-    <!-- no translation found for system_dashboard_summary (6112602136713843779) -->
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"အက်ပ်များနှင့် အကြောင်းကြားချက်များ"</string>
+    <!-- no translation found for account_dashboard_title (38701889336378742) -->
     <skip />
+    <!-- no translation found for app_default_dashboard_title (8176215295082796426) -->
+    <skip />
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"ဘာသာစကား - <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"ဆက်တင်များ"</string>
     <string name="search_menu" msgid="6283419262313758339">"ရှာဖွေမှု ဆက်တင်များ"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"ရှာဖွေမှု ဆက်တင်များ"</string>
@@ -3045,8 +3042,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"အင်္ဂါနေ့ ညနေ ၆:၀၁"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"အင်္ဂါနေ့ ညနေ ၆:၀၂"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"အင်္ဂါနေ့ ညနေ ၆:၀၃"</string>
-    <string name="see_all" msgid="8883901630052886984">"အားလုံးကြည့်ပါ"</string>
-    <string name="see_less" msgid="1250265310929558370">"လျှော့ ကြည့်ရန်"</string>
     <string name="disconnected" msgid="5787956818111197212">"ချိတ်ဆက်မှုပြတ်တောက်သည်"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"ဒေတာ၏ <xliff:g id="AMOUNT">%1$s</xliff:g> ကိုအသုံးပြုထားသည်"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index 8270ac0..14410c0 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -2280,20 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Koble fra"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Versjon <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Glem VPN-profilen"</string>
-    <!-- no translation found for vpn_replace_vpn_title (2963898301277610248) -->
-    <skip />
-    <!-- no translation found for vpn_set_vpn_title (4009987321156037267) -->
-    <skip />
-    <!-- no translation found for vpn_first_always_on_vpn_message (3025322109743675467) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_enable_message (2577928591361606641) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_disable_message (3011818750025879902) -->
-    <skip />
-    <!-- no translation found for vpn_replace_vpn_message (5611635724578812860) -->
-    <skip />
-    <!-- no translation found for vpn_turn_on (2363136869284273872) -->
-    <skip />
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Vil du erstatte det nåværende VPN-et?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Vil du angi alltid på-VPN?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Ved å slå på denne innstillingen kommer du ikke til å ha Internett-tilkobling før VPN-tilkoblingen er opprettet."</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Det eksisterende VPN-et ditt blir byttet ut, og du kommer ikke til å ha Internett-tilkobling før VPN-tilkoblingen er opprettet."</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Du er allerede koblet til et alltid på-VPN. Hvis du kobler til et annet, blir det eksisterende VPN-et byttet ut, og alltid på-modus blir slått av."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Du er allerede koblet til et VPN. Hvis du kobler til et nytt VPN, erstattes tilkoblingen til det nåværende VPN-et."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Slå på"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"Kan ikke koble til <xliff:g id="VPN_NAME">%1$s</xliff:g>"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Denne appen støtter ikke alltid-på VPN."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2536,8 +2529,12 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Nettverk og Internett"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Tilkoblede enheter"</string>
-    <!-- no translation found for system_dashboard_summary (6112602136713843779) -->
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Apper og varsler"</string>
+    <!-- no translation found for account_dashboard_title (38701889336378742) -->
     <skip />
+    <!-- no translation found for app_default_dashboard_title (8176215295082796426) -->
+    <skip />
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Språk: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Innstillinger"</string>
     <string name="search_menu" msgid="6283419262313758339">"Søkeinnstillinger"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Søkeinnstillinger"</string>
@@ -3045,8 +3042,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"tirs kl. 18.01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"tirs kl. 18.02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"tirs kl. 18.03"</string>
-    <string name="see_all" msgid="8883901630052886984">"Se alle"</string>
-    <string name="see_less" msgid="1250265310929558370">"Se mindre"</string>
     <string name="disconnected" msgid="5787956818111197212">"Frakoblet"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> av dataen er brukt"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-ne-rNP/strings.xml b/res/values-ne-rNP/strings.xml
index 4bc5ea9..dd19c87 100644
--- a/res/values-ne-rNP/strings.xml
+++ b/res/values-ne-rNP/strings.xml
@@ -2280,20 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"विच्छेदन गर्नुहोस्"</string>
     <string name="vpn_version" msgid="1939804054179766249">"संस्करण <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"VPN लाई बिर्सनुहोस्"</string>
-    <!-- no translation found for vpn_replace_vpn_title (2963898301277610248) -->
-    <skip />
-    <!-- no translation found for vpn_set_vpn_title (4009987321156037267) -->
-    <skip />
-    <!-- no translation found for vpn_first_always_on_vpn_message (3025322109743675467) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_enable_message (2577928591361606641) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_disable_message (3011818750025879902) -->
-    <skip />
-    <!-- no translation found for vpn_replace_vpn_message (5611635724578812860) -->
-    <skip />
-    <!-- no translation found for vpn_turn_on (2363136869284273872) -->
-    <skip />
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"विद्यमान VPN लाई बदल्ने हो?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"सधैँ-सक्रिय VPN लाई सेट गर्ने हो?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"यो सेटिङलाई सक्रिय गरेर सफलतापूर्वक VPN जडान नहोउन्जेलसम्म तपाईंसँग इन्टरनेट जडान हुने छैन"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"तपाईंको विद्यमान VPN लाई प्रतिस्थापन गरिने छ र सफलतापूर्वक VPN जडान नहोउन्जेल तपाईंसँग इन्टरनेट जडान हुने छैन"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"तपाईँले पहिले नै एउटा सधैं-सक्रिय VPN मा जडान गर्नुभएको छ। तपाईंले अर्को कुनै VPN मा ज‍डान गर्नुभयो भने तपाईंको विद्यमान VPN लाई प्रतिस्थापन गरिनेछ र सधैं-सक्रिय मोड निष्क्रिय हुने छ।"</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"तपाईँले पहिले नै एउटा VPN मा जडान गर्नुभएको छ। तपाईँले कुनै नयाँ VPN मा ज‍डान गर्नुभयो भने तपाईँको विद्यमान VPN लाई प्रतिस्थापन गरिनेछ।"</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"सक्रिय गर्नुहोस्"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> जडान गर्न सक्दैन"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"यस अनुप्रयोगले सधैँ सक्रिय रहने VPN लाई समर्थन गर्दैन।"</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2536,8 +2529,12 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"नेटवर्क र इन्टरनेट"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"जडान गरिएका यन्त्रहरू"</string>
-    <!-- no translation found for system_dashboard_summary (6112602136713843779) -->
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"अनुप्रयोग सम्बन्धी &amp; सूचनाहरू"</string>
+    <!-- no translation found for account_dashboard_title (38701889336378742) -->
     <skip />
+    <!-- no translation found for app_default_dashboard_title (8176215295082796426) -->
+    <skip />
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"भाषा: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"सेटिङहरू"</string>
     <string name="search_menu" msgid="6283419262313758339">"खोज सेटिङहरू"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"खोज सेटिङहरू"</string>
@@ -3045,8 +3042,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"मंगलबार बेलुका ६.०१ बजे"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"मंगलबार बेलुका ६.०२ बजे"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"मंगलबार बेलुका ६.०३ बजे"</string>
-    <string name="see_all" msgid="8883901630052886984">"सबै हेर्नुहोस्"</string>
-    <string name="see_less" msgid="1250265310929558370">"कम हेर्नुहोस्"</string>
     <string name="disconnected" msgid="5787956818111197212">"विच्छेद भयो"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"डेटाको <xliff:g id="AMOUNT">%1$s</xliff:g> प्रयोग गरियो"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index 56323d0..444e54f 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -2280,20 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Verbinding verbreken"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Versie <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"VPN vergeten"</string>
-    <!-- no translation found for vpn_replace_vpn_title (2963898301277610248) -->
-    <skip />
-    <!-- no translation found for vpn_set_vpn_title (4009987321156037267) -->
-    <skip />
-    <!-- no translation found for vpn_first_always_on_vpn_message (3025322109743675467) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_enable_message (2577928591361606641) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_disable_message (3011818750025879902) -->
-    <skip />
-    <!-- no translation found for vpn_replace_vpn_message (5611635724578812860) -->
-    <skip />
-    <!-- no translation found for vpn_turn_on (2363136869284273872) -->
-    <skip />
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Bestaande VPN vervangen?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Always-on VPN instellen?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Als je deze instelling inschakelt, wordt de internetverbinding verbroken totdat het VPN verbinding heeft gemaakt"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Je bestaande VPN wordt vervangen en je hebt pas weer internetverbinding nadat het VPN verbinding heeft gemaakt"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Je hebt al verbinding met een Always-on VPN. Als je verbinding maakt met een ander VPN, wordt je bestaande VPN vervangen en wordt de Always-on-modus uitgeschakeld."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Je hebt al verbinding met een VPN. Als je verbinding met een ander VPN maakt, wordt je bestaande VPN vervangen."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Inschakelen"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> kan geen verbinding maken"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Deze app biedt geen ondersteuning voor Always-on VPN."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2536,8 +2529,12 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Netwerk en internet"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Verbonden apparaten"</string>
-    <!-- no translation found for system_dashboard_summary (6112602136713843779) -->
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Apps en meldingen"</string>
+    <!-- no translation found for account_dashboard_title (38701889336378742) -->
     <skip />
+    <!-- no translation found for app_default_dashboard_title (8176215295082796426) -->
+    <skip />
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Taal: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Instellingen"</string>
     <string name="search_menu" msgid="6283419262313758339">"Zoekinstellingen"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Zoekinstellingen"</string>
@@ -3045,8 +3042,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Di. 18:01 uur"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Di. 18:02 uur"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Di. 18:03 uur"</string>
-    <string name="see_all" msgid="8883901630052886984">"Alles weergeven"</string>
-    <string name="see_less" msgid="1250265310929558370">"Minder weergeven"</string>
     <string name="disconnected" msgid="5787956818111197212">"Verbinding verbroken"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> van data gebruikt"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-pa-rIN/strings.xml b/res/values-pa-rIN/strings.xml
index 8bdd78e..a6b31c1 100644
--- a/res/values-pa-rIN/strings.xml
+++ b/res/values-pa-rIN/strings.xml
@@ -2280,20 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"ਡਿਸਕਨੈਕਟ ਕਰੋ"</string>
     <string name="vpn_version" msgid="1939804054179766249">"ਸੰਸਕਰਨ <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"VPN ਨੂੰ ਛੱਡੋ"</string>
-    <!-- no translation found for vpn_replace_vpn_title (2963898301277610248) -->
-    <skip />
-    <!-- no translation found for vpn_set_vpn_title (4009987321156037267) -->
-    <skip />
-    <!-- no translation found for vpn_first_always_on_vpn_message (3025322109743675467) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_enable_message (2577928591361606641) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_disable_message (3011818750025879902) -->
-    <skip />
-    <!-- no translation found for vpn_replace_vpn_message (5611635724578812860) -->
-    <skip />
-    <!-- no translation found for vpn_turn_on (2363136869284273872) -->
-    <skip />
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"ਕੀ ਮੌਜੂਦਾ VPN ਨੂੰ ਤਬਦੀਲ ਕਰਨਾ ਹੈ?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"ਕੀ ਹਮੇਸ਼ਾ-ਚਾਲੂ VPN ਨੂੰ ਸੈੱਟ ਕਰਨਾ ਹੈ?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"ਇਸ ਸੈਟਿੰਗ ਨੂੰ ਚਾਲੂ ਕਰਨ ਨਾਲ, ਤੁਹਾਡੇ ਕੋਲ ਇੱਕ ਇੰਟਰਨੈੱਟ ਕਨੈਕਸ਼ਨ ਤਦ ਤੱਕ ਨਹੀਂ ਹੋਵੇਗਾ ਜਦ ਤੱਕ VPN ਸਫ਼ਲਤਾਪੂਰਵਕ ਕਨੈਕਟ ਨਹੀਂ ਹੋ ਜਾਂਦਾ"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"ਤੁਹਾਡੇ ਮੌਜੂਦਾ VPN ਨੂੰ ਤਬਦੀਲ ਕਰ ਦਿੱਤਾ ਜਾਵੇਗਾ, ਅਤੇ ਤੁਹਾਡੇ ਕੋਲ ਤਦ ਤੱਕ ਇੱਕ ਇੰਟਰਨੈੱਟ ਕਨੈਕਸ਼ਨ ਨਹੀਂ ਹੋਵੇਗਾ ਜਦ ਤੱਕ VPN ਸਫ਼ਲਤਾਪੂਰਵਕ ਕਨੈਕਟ ਨਹੀਂ ਹੋ ਜਾਂਦਾ"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"ਤੁਸੀਂ ਪਹਿਲਾਂ ਤੋਂ ਹਮੇਸ਼ਾ-ਚਾਲੂ VPN ਨਾਲ ਕਨੈਕਟ ਹੋ। ਜੇਕਰ ਤੁਸੀਂ ਕਿਸੇ ਹੋਰ ਨਾਲ ਕਨੈਕਟ ਹੁੰਦੇ ਹੋ, ਤਾਂ ਤੁਹਾਡੇ ਮੌਜੂਦਾ VPN ਨੂੰ ਤਬਦੀਲ ਕਰ ਦਿੱਤਾ ਜਾਵੇਗਾ, ਅਤੇ ਹਮੇਸ਼ਾ-ਚਾਲੂ ਮੋਡ ਬੰਦ ਹੋ ਜਾਵੇਗਾ।"</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"ਤੁਸੀਂ ਪਹਿਲਾਂ ਤੋਂ ਹੀ ਕਿਸੇ VPN ਨਾਲ ਕਨੈਕਟ ਹੋ। ਜੇਕਰ ਤੁਸੀਂ ਕਿਸੇ ਹੋਰ ਨਾਲ ਕਨੈਕਟ ਹੁੰਦੇ ਹੋ, ਤਾਂ ਤੁਹਾਡੇ ਵਰਤਮਾਨ VPN ਨੂੰ ਤਬਦੀਲ ਕਰ ਦਿੱਤਾ ਜਾਵੇਗਾ।"</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"ਚਾਲੂ ਕਰੋ"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> ਨਾਲ ਕਨੈਕਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"ਇਹ ਐਪ ਹਮੇਸ਼ਾਂ-ਚਾਲੂ ਰਹਿਣ ਵਾਲੇ VPN ਦਾ ਸਮਰਥਨ ਨਹੀਂ ਕਰਦੀ ਹੈ।"</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2536,8 +2529,12 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"ਨੈੱਟਵਰਕ ਅਤੇ ਇੰਟਰਨੈੱਟ"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"ਕਨੈਕਟ ਕੀਤੀਆਂ ਡੀਵਾਈਸਾਂ"</string>
-    <!-- no translation found for system_dashboard_summary (6112602136713843779) -->
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"ਐਪਾਂ ਅਤੇ ਸੂਚਨਾਵਾਂ"</string>
+    <!-- no translation found for account_dashboard_title (38701889336378742) -->
     <skip />
+    <!-- no translation found for app_default_dashboard_title (8176215295082796426) -->
+    <skip />
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"ਭਾਸ਼ਾ: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"ਸੈਟਿੰਗਾਂ"</string>
     <string name="search_menu" msgid="6283419262313758339">"ਖੋਜ ਸੈੱਟਿੰਗਜ਼"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"ਖੋਜ ਸੈਟਿੰਗਾਂ"</string>
@@ -3045,8 +3042,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"ਮੰਗਲ 6:01PM"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"ਮੰਗਲ 6:02PM"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"ਮੰਗਲ 6:03PM"</string>
-    <string name="see_all" msgid="8883901630052886984">"ਸਭ ਵੇਖੋ"</string>
-    <string name="see_less" msgid="1250265310929558370">"ਘੱਟ ਵੇਖੋ"</string>
     <string name="disconnected" msgid="5787956818111197212">"ਡਿਸਕਨੈਕਟ ਹੋਇਆ"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> ਡੈਟਾ ਵਰਤਿਆ ਗਿਆ"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index 0a99207..7987bfb 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -2314,20 +2314,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Odłącz"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Wersja <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Zapomnij VPN"</string>
-    <!-- no translation found for vpn_replace_vpn_title (2963898301277610248) -->
-    <skip />
-    <!-- no translation found for vpn_set_vpn_title (4009987321156037267) -->
-    <skip />
-    <!-- no translation found for vpn_first_always_on_vpn_message (3025322109743675467) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_enable_message (2577928591361606641) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_disable_message (3011818750025879902) -->
-    <skip />
-    <!-- no translation found for vpn_replace_vpn_message (5611635724578812860) -->
-    <skip />
-    <!-- no translation found for vpn_turn_on (2363136869284273872) -->
-    <skip />
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Zastąpić obecną sieć VPN?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Ustawić stały VPN?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Po włączeniu tego ustawienia utracisz połączenie internetowe do czasu nawiązania połączenia przez VPN"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Dotychczasowe połączenie VPN zostanie zastąpione i nie będziesz mieć połączenia internetowego do czasu połączenia z VPN"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Masz już połączenie ze stałą siecią VPN. Jeśli połączysz się z inną, obecna zostanie zastąpiona, a tryb stały zostanie wyłączony."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Masz już połączenie z siecią VPN. Jeśli połączysz się z inną, obecna zostanie zastąpiona."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Włącz"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"Nie można połączyć z siecią <xliff:g id="VPN_NAME">%1$s</xliff:g>"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Ta aplikacja nie obsługuje łączenia tylko przez sieć VPN."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2580,8 +2573,12 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Sieć i internet"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Połączone urządzenia"</string>
-    <!-- no translation found for system_dashboard_summary (6112602136713843779) -->
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Aplikacje i powiadomienia"</string>
+    <!-- no translation found for account_dashboard_title (38701889336378742) -->
     <skip />
+    <!-- no translation found for app_default_dashboard_title (8176215295082796426) -->
+    <skip />
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Język: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Ustawienia"</string>
     <string name="search_menu" msgid="6283419262313758339">"Ustawienia wyszukiwania"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Ustawienia wyszukiwania"</string>
@@ -3105,8 +3102,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Wt. 18:01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Wt. 18:02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Wt. 18:03"</string>
-    <string name="see_all" msgid="8883901630052886984">"Pokaż wszystko"</string>
-    <string name="see_less" msgid="1250265310929558370">"Pokaż mniej"</string>
     <string name="disconnected" msgid="5787956818111197212">"Rozłączono"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"Użycie danych: <xliff:g id="AMOUNT">%1$s</xliff:g>"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-pt-rBR/strings.xml b/res/values-pt-rBR/strings.xml
index 22d144f..415a112 100644
--- a/res/values-pt-rBR/strings.xml
+++ b/res/values-pt-rBR/strings.xml
@@ -2280,20 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Desconectar"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Versão <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Esquecer VPN"</string>
-    <!-- no translation found for vpn_replace_vpn_title (2963898301277610248) -->
-    <skip />
-    <!-- no translation found for vpn_set_vpn_title (4009987321156037267) -->
-    <skip />
-    <!-- no translation found for vpn_first_always_on_vpn_message (3025322109743675467) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_enable_message (2577928591361606641) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_disable_message (3011818750025879902) -->
-    <skip />
-    <!-- no translation found for vpn_replace_vpn_message (5611635724578812860) -->
-    <skip />
-    <!-- no translation found for vpn_turn_on (2363136869284273872) -->
-    <skip />
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Substituir VPN já existente?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Configurar VPN sempre ativa?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Se você ativar esta configuração, sua conexão com a Internet não estará disponível até que a VPN se conecte"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Sua VPN já existente será substituída, e você não terá uma conexão com a Internet até que a VPN se conecte"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Você já está conectado a uma VPN sempre ativa. Caso se conecte a uma diferente, a VPN já existente será substituída, e o modo sempre ativo será desativado."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Você já está conectado a uma VPN. Caso se conecte a uma diferente, a VPN já existente será substituída."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Ativar"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"Não é possível conectar-se a <xliff:g id="VPN_NAME">%1$s</xliff:g>"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Este app não é compatível com VPN sempre ativa."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2536,8 +2529,12 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Rede e Internet"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Dispositivos conectados"</string>
-    <!-- no translation found for system_dashboard_summary (6112602136713843779) -->
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Apps e notificações"</string>
+    <!-- no translation found for account_dashboard_title (38701889336378742) -->
     <skip />
+    <!-- no translation found for app_default_dashboard_title (8176215295082796426) -->
+    <skip />
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Idioma: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Configurações"</string>
     <string name="search_menu" msgid="6283419262313758339">"Configurações de pesquisa"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Configurações de pesquisa"</string>
@@ -3045,8 +3042,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Ter 18:01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Ter 18:02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Ter 18:03"</string>
-    <string name="see_all" msgid="8883901630052886984">"Ver tudo"</string>
-    <string name="see_less" msgid="1250265310929558370">"Ver menos"</string>
     <string name="disconnected" msgid="5787956818111197212">"Desconectado"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> de dados usados"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index a068bf7..36b79eb 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -2280,20 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Desligar"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Versão <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Esquecer VPN"</string>
-    <!-- no translation found for vpn_replace_vpn_title (2963898301277610248) -->
-    <skip />
-    <!-- no translation found for vpn_set_vpn_title (4009987321156037267) -->
-    <skip />
-    <!-- no translation found for vpn_first_always_on_vpn_message (3025322109743675467) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_enable_message (2577928591361606641) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_disable_message (3011818750025879902) -->
-    <skip />
-    <!-- no translation found for vpn_replace_vpn_message (5611635724578812860) -->
-    <skip />
-    <!-- no translation found for vpn_turn_on (2363136869284273872) -->
-    <skip />
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Pretende substituir a VPN existente?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Pretende definir a VPN como sempre ativa?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Ao ativar esta definição, não terá uma ligação à Internet até a VPN estabelecer ligação com êxito"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"A sua VPN existente será substituída e não terá uma ligação à Internet até a VPN estabelecer ligação com êxito"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Já está ligado a uma VPN sempre ativa. Se ligar a outra, a VPN existente será substituída e o modo sempre ativo será desativado."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Já está ligado a uma VPN. Se ligar a outra, a VPN existente será substituída."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Ativar"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"Não é possível ligar <xliff:g id="VPN_NAME">%1$s</xliff:g>"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Esta aplicação não é compatível com uma VPN sempre ativada."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2536,8 +2529,12 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Rede e Internet"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Dispositivos ligados"</string>
-    <!-- no translation found for system_dashboard_summary (6112602136713843779) -->
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Aplicações e notificações"</string>
+    <!-- no translation found for account_dashboard_title (38701889336378742) -->
     <skip />
+    <!-- no translation found for app_default_dashboard_title (8176215295082796426) -->
+    <skip />
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Idioma: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Definições"</string>
     <string name="search_menu" msgid="6283419262313758339">"Definições de pesquisa"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Definições de pesquisa"</string>
@@ -3045,8 +3042,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Terça-feira às 18:01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Terça-feira às 18:02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Terça-feira às 18:03"</string>
-    <string name="see_all" msgid="8883901630052886984">"Ver tudo"</string>
-    <string name="see_less" msgid="1250265310929558370">"Ver menos"</string>
     <string name="disconnected" msgid="5787956818111197212">"Desligado"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> dos dados utilizados"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index 22d144f..415a112 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -2280,20 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Desconectar"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Versão <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Esquecer VPN"</string>
-    <!-- no translation found for vpn_replace_vpn_title (2963898301277610248) -->
-    <skip />
-    <!-- no translation found for vpn_set_vpn_title (4009987321156037267) -->
-    <skip />
-    <!-- no translation found for vpn_first_always_on_vpn_message (3025322109743675467) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_enable_message (2577928591361606641) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_disable_message (3011818750025879902) -->
-    <skip />
-    <!-- no translation found for vpn_replace_vpn_message (5611635724578812860) -->
-    <skip />
-    <!-- no translation found for vpn_turn_on (2363136869284273872) -->
-    <skip />
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Substituir VPN já existente?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Configurar VPN sempre ativa?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Se você ativar esta configuração, sua conexão com a Internet não estará disponível até que a VPN se conecte"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Sua VPN já existente será substituída, e você não terá uma conexão com a Internet até que a VPN se conecte"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Você já está conectado a uma VPN sempre ativa. Caso se conecte a uma diferente, a VPN já existente será substituída, e o modo sempre ativo será desativado."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Você já está conectado a uma VPN. Caso se conecte a uma diferente, a VPN já existente será substituída."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Ativar"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"Não é possível conectar-se a <xliff:g id="VPN_NAME">%1$s</xliff:g>"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Este app não é compatível com VPN sempre ativa."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2536,8 +2529,12 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Rede e Internet"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Dispositivos conectados"</string>
-    <!-- no translation found for system_dashboard_summary (6112602136713843779) -->
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Apps e notificações"</string>
+    <!-- no translation found for account_dashboard_title (38701889336378742) -->
     <skip />
+    <!-- no translation found for app_default_dashboard_title (8176215295082796426) -->
+    <skip />
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Idioma: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Configurações"</string>
     <string name="search_menu" msgid="6283419262313758339">"Configurações de pesquisa"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Configurações de pesquisa"</string>
@@ -3045,8 +3042,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Ter 18:01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Ter 18:02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Ter 18:03"</string>
-    <string name="see_all" msgid="8883901630052886984">"Ver tudo"</string>
-    <string name="see_less" msgid="1250265310929558370">"Ver menos"</string>
     <string name="disconnected" msgid="5787956818111197212">"Desconectado"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> de dados usados"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index cb55d5d..5c5f548 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -2297,20 +2297,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Deconectați-vă"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Versiunea <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Eliminați profilul VPN"</string>
-    <!-- no translation found for vpn_replace_vpn_title (2963898301277610248) -->
-    <skip />
-    <!-- no translation found for vpn_set_vpn_title (4009987321156037267) -->
-    <skip />
-    <!-- no translation found for vpn_first_always_on_vpn_message (3025322109743675467) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_enable_message (2577928591361606641) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_disable_message (3011818750025879902) -->
-    <skip />
-    <!-- no translation found for vpn_replace_vpn_message (5611635724578812860) -->
-    <skip />
-    <!-- no translation found for vpn_turn_on (2363136869284273872) -->
-    <skip />
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Înlocuiți rețeaua VPN existentă?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Setați rețeaua VPN ca activată permanent?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Dacă activați această setare, nu veți avea conexiune la internet până când nu se conectează rețeaua VPN."</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Rețeaua VPN existentă va fi înlocuită și nu veți avea conexiune la internet până când nu se conectează rețeaua VPN."</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"V-ați conectat deja la o rețea VPN activată permanent. Dacă vă conectați la altă rețea, rețeaua VPN existentă va fi înlocuită și modul activat permanent va fi dezactivat."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"V-ați conectat deja la o rețea VPN. Dacă vă conectați la altă rețea, rețeaua VPN existentă va fi înlocuită."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Activați"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"Nu vă puteți conecta la <xliff:g id="VPN_NAME">%1$s</xliff:g>"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Această aplicație nu acceptă rețele VPN activate permanent."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2558,8 +2551,12 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Rețea și internet"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Dispozitive conectate"</string>
-    <!-- no translation found for system_dashboard_summary (6112602136713843779) -->
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Aplicații și notificări"</string>
+    <!-- no translation found for account_dashboard_title (38701889336378742) -->
     <skip />
+    <!-- no translation found for app_default_dashboard_title (8176215295082796426) -->
+    <skip />
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Limba: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Setări"</string>
     <string name="search_menu" msgid="6283419262313758339">"Setări de căutare"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Setări pentru căutare"</string>
@@ -3075,8 +3072,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Marți, la 18:01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Marți, la 18:02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Marți, la 18:03"</string>
-    <string name="see_all" msgid="8883901630052886984">"Afișați-le pe toate"</string>
-    <string name="see_less" msgid="1250265310929558370">"Afișați mai puține"</string>
     <string name="disconnected" msgid="5787956818111197212">"Deconectată"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"Date folosite: <xliff:g id="AMOUNT">%1$s</xliff:g>"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-ru/arrays.xml b/res/values-ru/arrays.xml
index e669210..1d9273c 100644
--- a/res/values-ru/arrays.xml
+++ b/res/values-ru/arrays.xml
@@ -475,6 +475,6 @@
   <string-array name="automatic_storage_management_days">
     <item msgid="687318592238852312">"Добавленные более 30 дней назад"</item>
     <item msgid="2900554746706302178">"Добавленные более 60 дней назад"</item>
-    <item msgid="5692284879054004388">"Добавленные более 60 дней назад"</item>
+    <item msgid="5692284879054004388">"Добавленные более 90 дней назад"</item>
   </string-array>
 </resources>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index 3bcf2d4..c7678e4 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -2314,20 +2314,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Да"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Версия <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Удалить VPN"</string>
-    <!-- no translation found for vpn_replace_vpn_title (2963898301277610248) -->
-    <skip />
-    <!-- no translation found for vpn_set_vpn_title (4009987321156037267) -->
-    <skip />
-    <!-- no translation found for vpn_first_always_on_vpn_message (3025322109743675467) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_enable_message (2577928591361606641) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_disable_message (3011818750025879902) -->
-    <skip />
-    <!-- no translation found for vpn_replace_vpn_message (5611635724578812860) -->
-    <skip />
-    <!-- no translation found for vpn_turn_on (2363136869284273872) -->
-    <skip />
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Сменить текущую VPN-сеть?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Настроить постоянную VPN-сеть?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Если включить эту настройку, доступ к Интернету появится только после подключения к VPN."</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Вы замените текущую VPN-сеть, а доступ к Интернету появится только после подключения к новой сети."</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Вы уже подключены к постоянной VPN-сети. Если выбрать другую сеть, режим постоянного подключения будет сброшен."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Вы уже подключены. Если вы подключитесь к другой VPN-сети, то замените текущую."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Включить"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"Не удалось подключиться к сети \"<xliff:g id="VPN_NAME">%1$s</xliff:g>\""</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Это приложение не поддерживает постоянное подключение к VPN."</string>
     <string name="vpn_title" msgid="6317731879966640551">"Настройки VPN"</string>
@@ -2580,8 +2573,13 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Сеть и Интернет"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Подключенные устройства"</string>
-    <!-- no translation found for system_dashboard_summary (6112602136713843779) -->
+    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
     <skip />
+    <!-- no translation found for account_dashboard_title (38701889336378742) -->
+    <skip />
+    <!-- no translation found for app_default_dashboard_title (8176215295082796426) -->
+    <skip />
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Язык: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Настройки"</string>
     <string name="search_menu" msgid="6283419262313758339">"Поиск настроек"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Поиск настроек"</string>
@@ -3105,8 +3103,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Вт, 18:01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Вт, 18:02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Вт, 18:03"</string>
-    <string name="see_all" msgid="8883901630052886984">"Показать все"</string>
-    <string name="see_less" msgid="1250265310929558370">"Скрыть"</string>
     <string name="disconnected" msgid="5787956818111197212">"Нет подключения"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"Использовано трафика: <xliff:g id="AMOUNT">%1$s</xliff:g>"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-si-rLK/strings.xml b/res/values-si-rLK/strings.xml
index 6f89529..47893c6 100644
--- a/res/values-si-rLK/strings.xml
+++ b/res/values-si-rLK/strings.xml
@@ -2282,20 +2282,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"විසන්ධි කරන්න"</string>
     <string name="vpn_version" msgid="1939804054179766249">"අනුවාදය <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"VPN අමතක කරන්න"</string>
-    <!-- no translation found for vpn_replace_vpn_title (2963898301277610248) -->
-    <skip />
-    <!-- no translation found for vpn_set_vpn_title (4009987321156037267) -->
-    <skip />
-    <!-- no translation found for vpn_first_always_on_vpn_message (3025322109743675467) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_enable_message (2577928591361606641) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_disable_message (3011818750025879902) -->
-    <skip />
-    <!-- no translation found for vpn_replace_vpn_message (5611635724578812860) -->
-    <skip />
-    <!-- no translation found for vpn_turn_on (2363136869284273872) -->
-    <skip />
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"පවතින VPN ප්‍රතිස්ථාපනය කරන්නද?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"සැම විට ක්‍රියාත්මක VPN සකසන්නද?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"මෙම සැකසීම ක්‍රියාත්මක කිරීමෙන්, ඔබට VPN සාර්ථකව සම්බන්ධ වන තෙක් අන්තර්ජාල සබැඳුමක් නොතිබෙනු ඇත"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"ඔබේ පවතින VPN ප්‍රතිස්ථාපනය වනු ඇති අතර, ඔබට VPN සාර්ථකව සම්බන්ධ වන තෙක් අන්තර්ජාල සබැඳුමක් නොතිබෙනු ඇත"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"ඔබට දැනටමත් සැම විට ක්‍රියාත්මක VPN එකකට සම්බන්ධය. ඔබ වෙනත් එකකට සම්බන්ධ වුවහොත්, ඔබේ පවතින VPN ප්‍රතිස්ථාපනය වනු ඇති අතර, සැම විට ක්‍රියාත්මක ප්‍රකාරය ක්‍රියාවිරහිත වනු ඇත."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"ඔබට දැනටමත් VPN එකකට සම්බන්ධය. ඔබ වෙනත් එකකට සබැඳුණහොත්, ඔබේ පවතින VPN ප්‍රතිස්ථාපනය වනු ඇත."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"ක්‍රියාත්මක කරන්න"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> හට සම්බන්ධ විය නොහැකිය"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"මෙම යෙදුම සැම විට ක්‍රියාත්මක VPN සඳහා සහාය නොදක්වයි."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2538,8 +2531,12 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"ජාලය සහ අන්තර්ජාලය"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"සම්බන්ධ කළ උපාංග"</string>
-    <!-- no translation found for system_dashboard_summary (6112602136713843779) -->
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"යෙදුම් සහ දැනුම්දීම්"</string>
+    <!-- no translation found for account_dashboard_title (38701889336378742) -->
     <skip />
+    <!-- no translation found for app_default_dashboard_title (8176215295082796426) -->
+    <skip />
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"භාෂාව: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"සැකසීම්"</string>
     <string name="search_menu" msgid="6283419262313758339">"සැකසීම් සොයන්න"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"සැකසීම් සොයන්න"</string>
@@ -3047,8 +3044,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"අඟ ප.ව. 6:01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"අඟ ප.ව. 6:02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"අඟ ප.ව. 6:03"</string>
-    <string name="see_all" msgid="8883901630052886984">"සියල්ල බලන්න"</string>
-    <string name="see_less" msgid="1250265310929558370">"අඩුවෙන් බලන්න"</string>
     <string name="disconnected" msgid="5787956818111197212">"විසන්ධි වුණි"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"දත්තවලින් <xliff:g id="AMOUNT">%1$s</xliff:g>ක් ස්ථාපනය කරන ලදී"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index 08d91ab..6265435 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -2314,20 +2314,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Odpojiť"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Verzia <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Zabudnúť profil VPN"</string>
-    <!-- no translation found for vpn_replace_vpn_title (2963898301277610248) -->
-    <skip />
-    <!-- no translation found for vpn_set_vpn_title (4009987321156037267) -->
-    <skip />
-    <!-- no translation found for vpn_first_always_on_vpn_message (3025322109743675467) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_enable_message (2577928591361606641) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_disable_message (3011818750025879902) -->
-    <skip />
-    <!-- no translation found for vpn_replace_vpn_message (5611635724578812860) -->
-    <skip />
-    <!-- no translation found for vpn_turn_on (2363136869284273872) -->
-    <skip />
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Nahradiť existujúcu sieť VPN?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Nastaviť sieť VPN, ktorá je vždy zapnutá?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Ak zapnete toto nastavenie, nebudete mať internetové pripojenie, dokým nedôjde k úspešnému nadviazaniu pripojenia VPN"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Vaša súčasná sieť VPN bude nahradená a nebudete mať internetové pripojenie, dokým nedôjde k úspešnému nadviazaniu pripojenia VPN"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"K sieti VPN, ktorá je vždy zapnutá, ste sa už pripojili. Ak sa pripojíte k inej sieti, vaša súčasná sieť VPN bude nahradená a vypne sa režim vždy zapnutej siete."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"K sieti VPN ste sa už pripojili. Ak sa pripojíte k inej sieti, vaša súčasná sieť VPN bude nahradená."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Zapnúť"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> nie je možné pripojiť"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Táto aplikácia nepodporuje siete VPN, ktoré sú vždy zapnuté."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2580,8 +2573,12 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Sieť a internet"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Pripojené zariadenia"</string>
-    <!-- no translation found for system_dashboard_summary (6112602136713843779) -->
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Aplikácie a upozornenia"</string>
+    <!-- no translation found for account_dashboard_title (38701889336378742) -->
     <skip />
+    <!-- no translation found for app_default_dashboard_title (8176215295082796426) -->
+    <skip />
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Jazyk: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Nastavenia"</string>
     <string name="search_menu" msgid="6283419262313758339">"Nastavenia vyhľadávania"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Nastavenia vyhľadávania"</string>
@@ -3105,8 +3102,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Ut 18:01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Ut 18:02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Ut 18:03"</string>
-    <string name="see_all" msgid="8883901630052886984">"Zobraziť všetko"</string>
-    <string name="see_less" msgid="1250265310929558370">"Zobraziť menej"</string>
     <string name="disconnected" msgid="5787956818111197212">"Odpojené"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"Objem využitých dát: <xliff:g id="AMOUNT">%1$s</xliff:g>"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index fab247a..1178dab 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -2314,20 +2314,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Prekini povezavo"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Različica <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Pozabi omrežje VPN"</string>
-    <!-- no translation found for vpn_replace_vpn_title (2963898301277610248) -->
-    <skip />
-    <!-- no translation found for vpn_set_vpn_title (4009987321156037267) -->
-    <skip />
-    <!-- no translation found for vpn_first_always_on_vpn_message (3025322109743675467) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_enable_message (2577928591361606641) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_disable_message (3011818750025879902) -->
-    <skip />
-    <!-- no translation found for vpn_replace_vpn_message (5611635724578812860) -->
-    <skip />
-    <!-- no translation found for vpn_turn_on (2363136869284273872) -->
-    <skip />
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Želite zamenjati obstoječe omrežje VPN?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Ali želite, da je omrežje VPN stalno vklopljeno?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Če vklopite to nastavitev, ne boste imeli internetne povezave, dokler se ne vzpostavi povezava z omrežjem VPN."</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Vaše obstoječe omrežje VPN bo zamenjano in ne boste imeli internetne povezave, dokler se ne vzpostavi povezava z omrežjem VPN."</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"S stalno vklopljenim omrežjem VPN ste že povezani. Če se povežete z drugim, bo obstoječe omrežje VPN zamenjano in stalno vklopljeni način se bo izklopil."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Z omrežjem VPN ste že povezani. Če se povežete z drugim, bo obstoječe omrežje VPN zamenjano."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Vklopi"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"Z omrežjem VPN <xliff:g id="VPN_NAME">%1$s</xliff:g> ni mogoče vzpostaviti povezave."</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Ta aplikacija ne podpira stalno vklopljenih omrežij VPN."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2580,8 +2573,13 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Omrežje in internet"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Povezane naprave"</string>
-    <!-- no translation found for system_dashboard_summary (6112602136713843779) -->
+    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
     <skip />
+    <!-- no translation found for account_dashboard_title (38701889336378742) -->
+    <skip />
+    <!-- no translation found for app_default_dashboard_title (8176215295082796426) -->
+    <skip />
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Jezik: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Nastavitve"</string>
     <string name="search_menu" msgid="6283419262313758339">"Nastavitve iskanja"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Nastavitve iskanja"</string>
@@ -3105,8 +3103,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Tor., 18.01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Tor., 18.02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Tor., 18.03"</string>
-    <string name="see_all" msgid="8883901630052886984">"Pokaži vse"</string>
-    <string name="see_less" msgid="1250265310929558370">"Pokaži manj"</string>
     <string name="disconnected" msgid="5787956818111197212">"Povezava prekinjena"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"Prenesenih podatkov: <xliff:g id="AMOUNT">%1$s</xliff:g>"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-sq-rAL/strings.xml b/res/values-sq-rAL/strings.xml
index 482a90b..9fa3e81 100644
--- a/res/values-sq-rAL/strings.xml
+++ b/res/values-sq-rAL/strings.xml
@@ -2280,20 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Shkëpute"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Versioni <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Harroje rrjetin VPN"</string>
-    <!-- no translation found for vpn_replace_vpn_title (2963898301277610248) -->
-    <skip />
-    <!-- no translation found for vpn_set_vpn_title (4009987321156037267) -->
-    <skip />
-    <!-- no translation found for vpn_first_always_on_vpn_message (3025322109743675467) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_enable_message (2577928591361606641) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_disable_message (3011818750025879902) -->
-    <skip />
-    <!-- no translation found for vpn_replace_vpn_message (5611635724578812860) -->
-    <skip />
-    <!-- no translation found for vpn_turn_on (2363136869284273872) -->
-    <skip />
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Të zëvendësohet rrjeti ekzistues VPN?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Të caktohet rrjeti VPN gjithmonë aktiv?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Duke aktivizuar këtë cilësim, nuk do të kesh një lidhje interneti deri sa rrjeti VPN të lidhet me sukses"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Rrjeti yt ekzistues VPN do të zëvendësohet dhe nuk do të kesh një lidhje interneti deri sa rrjeti VPN të lidhet me sukses"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Je tashmë i lidhur me një rrjet VPN gjithmonë aktiv. Nëse je lidhur me një tjetër, rrjeti yt ekzistues VPN do të zëvendësohet dhe modaliteti gjithmonë aktiv do të çaktivizohet."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Je tashmë i lidhur me një rrjet VPN. Nëse je lidhur me një tjetër, rrjeti yt ekzistues VPN do të zëvendësohet."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Aktivizo"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> nuk mund të lidhet"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Ky aplikacion nuk mbështet VPN-në që është gjithmonë aktive."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2536,8 +2529,12 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Rrjeti dhe interneti"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Pajisje të lidhura"</string>
-    <!-- no translation found for system_dashboard_summary (6112602136713843779) -->
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Aplikacionet dhe njoftimet"</string>
+    <!-- no translation found for account_dashboard_title (38701889336378742) -->
     <skip />
+    <!-- no translation found for app_default_dashboard_title (8176215295082796426) -->
+    <skip />
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Gjuha: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Cilësimet"</string>
     <string name="search_menu" msgid="6283419262313758339">"Cilësimet e kërkimit"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Cilësimet e kërkimit"</string>
@@ -3045,8 +3042,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"E martë 18:01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"E martë 18:02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"E martë 18:03"</string>
-    <string name="see_all" msgid="8883901630052886984">"Shikoji të gjitha"</string>
-    <string name="see_less" msgid="1250265310929558370">"Shiko më pak"</string>
     <string name="disconnected" msgid="5787956818111197212">"E shkëputur"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> nga të dhënat janë përdorur"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index 1eb56c9..e15bbc7 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -2297,20 +2297,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Прекини везу"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Верзија <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Заборави VPN"</string>
-    <!-- no translation found for vpn_replace_vpn_title (2963898301277610248) -->
-    <skip />
-    <!-- no translation found for vpn_set_vpn_title (4009987321156037267) -->
-    <skip />
-    <!-- no translation found for vpn_first_always_on_vpn_message (3025322109743675467) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_enable_message (2577928591361606641) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_disable_message (3011818750025879902) -->
-    <skip />
-    <!-- no translation found for vpn_replace_vpn_message (5611635724578812860) -->
-    <skip />
-    <!-- no translation found for vpn_turn_on (2363136869284273872) -->
-    <skip />
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Желите ли да замените постојећи VPN?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Желите ли да подесите увек укључени VPN?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Ако укључите ово подешавање, нећете имати интернет везу док се VPN не повеже"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Постојећи VPN ће бити замењен и нећете имати интернет везу док се VPN не повеже"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Већ сте повезани са увек укљученим VPN-ом. Ако се повежете са неким другим, постојећи VPN ће бити замењен, а режим Увек укључен ће бити искључен."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Већ сте повезани са VPN-ом. Ако се повежете са неким другим, постојећи VPN ће бити замењен."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Укључи"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"Повезивање са VPN-ом <xliff:g id="VPN_NAME">%1$s</xliff:g> није успело"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Ова апликација не подржава стално укључени VPN."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2558,8 +2551,12 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Мрежа и интернет"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Повезани уређаји"</string>
-    <!-- no translation found for system_dashboard_summary (6112602136713843779) -->
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Aпликације и обавештења"</string>
+    <!-- no translation found for account_dashboard_title (38701889336378742) -->
     <skip />
+    <!-- no translation found for app_default_dashboard_title (8176215295082796426) -->
+    <skip />
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Језик: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Подешавања"</string>
     <string name="search_menu" msgid="6283419262313758339">"Претражите подешавања"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Подешавања претраге"</string>
@@ -3075,8 +3072,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Уто 18:01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Уто 18:02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Уто 18:03"</string>
-    <string name="see_all" msgid="8883901630052886984">"Прикажи све"</string>
-    <string name="see_less" msgid="1250265310929558370">"Прикажи мање"</string>
     <string name="disconnected" msgid="5787956818111197212">"Веза је прекинута"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"Користи се <xliff:g id="AMOUNT">%1$s</xliff:g> података"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index e4757a3..3fc903b 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -2280,20 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Koppla från"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Version <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Glöm VPN"</string>
-    <!-- no translation found for vpn_replace_vpn_title (2963898301277610248) -->
-    <skip />
-    <!-- no translation found for vpn_set_vpn_title (4009987321156037267) -->
-    <skip />
-    <!-- no translation found for vpn_first_always_on_vpn_message (3025322109743675467) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_enable_message (2577928591361606641) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_disable_message (3011818750025879902) -->
-    <skip />
-    <!-- no translation found for vpn_replace_vpn_message (5611635724578812860) -->
-    <skip />
-    <!-- no translation found for vpn_turn_on (2363136869284273872) -->
-    <skip />
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Vill du byta ut befintligt VPN?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Vill du ange Always-on VPN?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Om du inaktiverar den här inställningen har du ingen internetanslutning förrän VPN är anslutet"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Ditt befintliga VPN ersätts, och du har ingen internetanslutning förrän VPN är anslutet."</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Du är redan ansluten till ett Always-on VPN. Om du ansluter till ett annat ersätts ditt befintliga VPN, och Always-on-läge inaktiveras."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Du är redan ansluten till ett VPN. Om du ansluter till ett annat ersätts ditt befintliga VPN."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Aktivera"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> kan inte ansluta"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Appen stöder inte Always-on VPN."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2536,8 +2529,12 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Nätverk och internet"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Anslutna enheter"</string>
-    <!-- no translation found for system_dashboard_summary (6112602136713843779) -->
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Appar och aviseringar"</string>
+    <!-- no translation found for account_dashboard_title (38701889336378742) -->
     <skip />
+    <!-- no translation found for app_default_dashboard_title (8176215295082796426) -->
+    <skip />
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Språk: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Inställningar"</string>
     <string name="search_menu" msgid="6283419262313758339">"Sökinställningar"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Sökinställningar"</string>
@@ -3045,8 +3042,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Tis. 18:01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Tis. 18:02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Tis. 18:03"</string>
-    <string name="see_all" msgid="8883901630052886984">"Visa alla"</string>
-    <string name="see_less" msgid="1250265310929558370">"Visa färre"</string>
     <string name="disconnected" msgid="5787956818111197212">"Frånkopplad"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> data används"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index 0ee4606..68c9598 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -2286,20 +2286,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Kata muungnisho"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Toleo la <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Ondoa VPN"</string>
-    <!-- no translation found for vpn_replace_vpn_title (2963898301277610248) -->
-    <skip />
-    <!-- no translation found for vpn_set_vpn_title (4009987321156037267) -->
-    <skip />
-    <!-- no translation found for vpn_first_always_on_vpn_message (3025322109743675467) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_enable_message (2577928591361606641) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_disable_message (3011818750025879902) -->
-    <skip />
-    <!-- no translation found for vpn_replace_vpn_message (5611635724578812860) -->
-    <skip />
-    <!-- no translation found for vpn_turn_on (2363136869284273872) -->
-    <skip />
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Ungependa kubadilisha VPN iliyopo?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Ungependa kuweka VPN iliyowashwa kila mara?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Kwa kuwasha mIpangilio hii, hutapata muunganisho wa Intaneti hadi VPN itakapounganishwa"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Programu itaondoa VPN iliyopo, na hutaweza kuwa na muunganisho wa Intaneti hadi  VPN itakapounganishwa"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Tayari umeunganisha kwenye VPN ambayo imewashwa kila mara. Ikiwa utaunganisha kwenye programu tofauti, programu hiyo itaondoa VPN iliyopo na kuzima hali ya imewashwa kila mara."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Tayari umeunganisha kwenye VPN. Ikiwa utaunganisha kwenye programu tofauti, programu hiyo itaondoa VPN iliyopo."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Washa"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"Haiwezi kuunganisha <xliff:g id="VPN_NAME">%1$s</xliff:g>"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Programu hii haitumii VPN iliyo katika hali ya kuwaka kila mara."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2542,8 +2535,12 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Mtandao na Intaneti"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Vifaa vilivyounganishwa"</string>
-    <!-- no translation found for system_dashboard_summary (6112602136713843779) -->
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Programu na arifa"</string>
+    <!-- no translation found for account_dashboard_title (38701889336378742) -->
     <skip />
+    <!-- no translation found for app_default_dashboard_title (8176215295082796426) -->
+    <skip />
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Lugha: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Mipangilio"</string>
     <string name="search_menu" msgid="6283419262313758339">"Mipangilio ya utafutaji"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Mipangilio ya utafutaji"</string>
@@ -3051,8 +3048,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Jumanne saa 12:01 jioni"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Jumanne saa 12:02 jioni"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Jumanne saa 12:03 jioni"</string>
-    <string name="see_all" msgid="8883901630052886984">"Angalia zote"</string>
-    <string name="see_less" msgid="1250265310929558370">"Angalia chache"</string>
     <string name="disconnected" msgid="5787956818111197212">"Imeondolewa"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> ya data imetumika"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-sw400dp/dimens.xml b/res/values-sw400dp/dimens.xml
index da58a9c..7ae4061 100755
--- a/res/values-sw400dp/dimens.xml
+++ b/res/values-sw400dp/dimens.xml
@@ -16,16 +16,10 @@
   -->
 
 <resources>
-    <dimen name="fingerprint_ring_radius">106dp</dimen>
-    <dimen name="fingerprint_animation_size">100dp</dimen>
-    <dimen name="fingerprint_progress_bar_size">220dp</dimen>
     <dimen name="fingerprint_enrolling_content_margin_top">56dp</dimen>
     <dimen name="fingerprint_in_app_indicator_size">176dp</dimen>
     <dimen name="fingerprint_find_sensor_graphic_size">240dp</dimen>
 
-    <dimen name="setup_fingerprint_ring_radius">92dp</dimen>
-    <dimen name="setup_fingerprint_progress_bar_size">192dp</dimen>
-
     <dimen name="support_escalation_card_padding_start">56dp</dimen>
     <dimen name="support_escalation_card_padding_end">56dp</dimen>
 </resources>
diff --git a/res/values-ta-rIN/strings.xml b/res/values-ta-rIN/strings.xml
index b8be56f..bf455ab 100644
--- a/res/values-ta-rIN/strings.xml
+++ b/res/values-ta-rIN/strings.xml
@@ -2280,20 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"தொடர்பைத் துண்டி"</string>
     <string name="vpn_version" msgid="1939804054179766249">"பதிப்பு <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"VPNஐ நீக்கு"</string>
-    <!-- no translation found for vpn_replace_vpn_title (2963898301277610248) -->
-    <skip />
-    <!-- no translation found for vpn_set_vpn_title (4009987321156037267) -->
-    <skip />
-    <!-- no translation found for vpn_first_always_on_vpn_message (3025322109743675467) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_enable_message (2577928591361606641) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_disable_message (3011818750025879902) -->
-    <skip />
-    <!-- no translation found for vpn_replace_vpn_message (5611635724578812860) -->
-    <skip />
-    <!-- no translation found for vpn_turn_on (2363136869284273872) -->
-    <skip />
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"தற்போதுள்ள VPNஐ மாற்றியமைக்கவா?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"எப்போதும் இயங்கும் VPNஐ அமைக்கவா?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"இந்த அமைப்பை இயக்கினால், VPN இணைக்கப்படும் வரை இணைய இணைப்பு கிடைக்காது"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"தற்போதுள்ள VPN மாற்றியமைக்கப்படும், மேலும் VPN இணைக்கப்படும் வரை இணைய இணைப்பு கிடைக்காது"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"எப்போதும் இயங்கும் VPN உடன் ஏற்கனவே இணைத்துள்ளீர்கள். வேறொன்றுடன் இணைத்தால், அது தற்போதுள்ள VPNக்குப் பதிலாக மாற்றியமைக்கப்படும், மேலும் எப்போதும் இயங்கும் பயன்முறை முடக்கப்படும்."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"ஏற்கனவே ஒரு VPN உடன் இணைத்துள்ளீர்கள். வேறொன்றுடன் இணைத்தால், அது தற்போதுள்ள VPNக்குப் பதிலாக மாற்றியமைக்கப்படும்."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"இயக்கு"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g>ஐ இணைக்க முடியாது"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"இந்தப் பயன்பாடு எப்போதும் இயங்கும் VPNஐ ஆதரிக்கவில்லை."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2536,8 +2529,12 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"நெட்வொர்க் &amp; இணையம்"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"இணைத்த சாதனங்கள்"</string>
-    <!-- no translation found for system_dashboard_summary (6112602136713843779) -->
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"பயன்பாடுகள் &amp; அறிவிப்புகள்"</string>
+    <!-- no translation found for account_dashboard_title (38701889336378742) -->
     <skip />
+    <!-- no translation found for app_default_dashboard_title (8176215295082796426) -->
+    <skip />
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"மொழி: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"அமைப்பு"</string>
     <string name="search_menu" msgid="6283419262313758339">"தேடல் அமைப்புகள்"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"தேடல் அமைப்பு"</string>
@@ -3045,8 +3042,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"செவ் 6:01PM"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"செவ் 6:02PM"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"செவ் 6:03PM"</string>
-    <string name="see_all" msgid="8883901630052886984">"எல்லாம் காட்டு"</string>
-    <string name="see_less" msgid="1250265310929558370">"குறைவாகக் காட்டு"</string>
     <string name="disconnected" msgid="5787956818111197212">"துண்டிக்கப்பட்டது"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> தரவு பயன்படுத்தப்பட்டுள்ளது"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-te-rIN/strings.xml b/res/values-te-rIN/strings.xml
index 879b1c6..6b159fc 100644
--- a/res/values-te-rIN/strings.xml
+++ b/res/values-te-rIN/strings.xml
@@ -2280,20 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"డిస్‌కనెక్ట్ చేయి"</string>
     <string name="vpn_version" msgid="1939804054179766249">"సంస్కరణ <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"VPNని విస్మరించు"</string>
-    <!-- no translation found for vpn_replace_vpn_title (2963898301277610248) -->
-    <skip />
-    <!-- no translation found for vpn_set_vpn_title (4009987321156037267) -->
-    <skip />
-    <!-- no translation found for vpn_first_always_on_vpn_message (3025322109743675467) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_enable_message (2577928591361606641) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_disable_message (3011818750025879902) -->
-    <skip />
-    <!-- no translation found for vpn_replace_vpn_message (5611635724578812860) -->
-    <skip />
-    <!-- no translation found for vpn_turn_on (2363136869284273872) -->
-    <skip />
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"ఇప్పటికే ఉన్న VPNని భర్తీ చేయాలా?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"ఎల్లప్పుడూ ఆన్‌లో ఉండే VPNని సెట్ చేయాలా?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"ఈ సెట్టింగ్‌ను ఆన్ చేస్తే, VPN విజయవంతంగా కనెక్ట్ అయ్యే వరకు మీకు ఇంటర్నెట్ కనెక్షన్ ఉండదు"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"ఇప్పటికే ఉన్న మీ VPN భర్తీ చేయబడుతుంది మరియు VPN విజయవంతంగా కనెక్ట్ అయ్యే వరకు మీకు ఇంటర్నెట్ కనెక్షన్ ఉండదు"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"మీరు ఇప్పటికే ఎల్లప్పుడూ ఆన్‌లో ఉండే VPNకి కనెక్ట్ అయ్యారు. మీరు వేరొక దానికి కనెక్ట్ చేస్తే, ఇప్పటికే ఉన్న మీ VPN భర్తీ చేయబడుతుంది మరియు ఎల్లప్పుడూ ఆన్‌లో ఉంచే మోడ్ ఆఫ్ చేయబడుతుంది."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"మీరు ఇప్పటికే VPNకి కనెక్ట్ అయ్యారు. మీరు వేరొక దానికి కనెక్ట్ చేస్తే, మీ ప్రస్తుత VPN భర్తీ చేయబడుతుంది."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"ఆన్ చేయి"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g>కి కనెక్ట్ కావడం సాధ్యపడదు"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"ఈ అనువర్తనం ఎల్లప్పుడూ ఆన్‌లో ఉండే VPNకు మద్దతివ్వదు."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2536,8 +2529,12 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"నెట్‌వర్క్ &amp; ఇంటర్నెట్"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"కనెక్ట్ చేసిన పరికరాలు"</string>
-    <!-- no translation found for system_dashboard_summary (6112602136713843779) -->
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"అనువర్తనాలు &amp; నోటిఫికేషన్‌లు"</string>
+    <!-- no translation found for account_dashboard_title (38701889336378742) -->
     <skip />
+    <!-- no translation found for app_default_dashboard_title (8176215295082796426) -->
+    <skip />
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"భాష: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"సెట్టింగ్‌లు"</string>
     <string name="search_menu" msgid="6283419262313758339">"శోధన సెట్టింగ్‌లు"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"శోధన సెట్టింగ్‌లు"</string>
@@ -3045,8 +3042,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"మంగళ 6:01PM"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"మంగళ 6:02PM"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"మంగళ 6:03PM"</string>
-    <string name="see_all" msgid="8883901630052886984">"అన్నీ చూడండి"</string>
-    <string name="see_less" msgid="1250265310929558370">"తక్కువ చూడండి"</string>
     <string name="disconnected" msgid="5787956818111197212">"డిస్‌కనెక్ట్ చేయబడింది"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> డేటా ఉపయోగించబడింది"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index 137bf75..0b8bcfc 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -2280,20 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"ยกเลิกการเชื่อมต่อ"</string>
     <string name="vpn_version" msgid="1939804054179766249">"เวอร์ชัน <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"ลืม VPN"</string>
-    <!-- no translation found for vpn_replace_vpn_title (2963898301277610248) -->
-    <skip />
-    <!-- no translation found for vpn_set_vpn_title (4009987321156037267) -->
-    <skip />
-    <!-- no translation found for vpn_first_always_on_vpn_message (3025322109743675467) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_enable_message (2577928591361606641) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_disable_message (3011818750025879902) -->
-    <skip />
-    <!-- no translation found for vpn_replace_vpn_message (5611635724578812860) -->
-    <skip />
-    <!-- no translation found for vpn_turn_on (2363136869284273872) -->
-    <skip />
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"แทนที่ VPN ที่มีอยู่หรือไม่"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"ตั้งค่า VPN แบบเปิดตลอดเวลาหรือไม่"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"เมื่อเปิดการตั้งค่านี้ คุณจะไม่มีการเชื่อมต่ออินเทอร์เน็ตจนกว่า VPN จะเชื่อมต่อสำเร็จ"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"ระบบจะแทนที่ VPN ที่มีอยู่และคุณจะไม่มีการเชื่อมต่ออินเทอร์เน็ตจนกว่า VPN จะเชื่อมต่อสำเร็จ"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"คุณเชื่อมต่ออยู่กับ VPN แบบเปิดตลอดเวลาแล้ว หากเชื่อมต่อรายการอื่น ระบบจะแทนที่ VPN ที่มีอยู่และปิดโหมดเปิดตลอดเวลา"</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"คุณเชื่อมต่ออยู่กับ VPN แล้ว หากเชื่อมต่อรายการอื่น ระบบจะแทนที่ VPN ที่มีอยู่"</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"เปิด"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> ไม่สามารถเชื่อมต่อได้"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"แอปนี้ไม่สนับสนุน VPN ที่เปิดอยู่เสมอ"</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2536,8 +2529,12 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"เครือข่ายและอินเทอร์เน็ต"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"อุปกรณ์ที่เชื่อมต่อ"</string>
-    <!-- no translation found for system_dashboard_summary (6112602136713843779) -->
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"แอปและการแจ้งเตือน"</string>
+    <!-- no translation found for account_dashboard_title (38701889336378742) -->
     <skip />
+    <!-- no translation found for app_default_dashboard_title (8176215295082796426) -->
+    <skip />
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"ภาษา: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"การตั้งค่า"</string>
     <string name="search_menu" msgid="6283419262313758339">"การตั้งค่าการค้นหา"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"การตั้งค่าการค้นหา"</string>
@@ -3045,8 +3042,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"อังคาร 18.01 น."</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"อังคาร 18.02 น."</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"อังคาร 18.03 น."</string>
-    <string name="see_all" msgid="8883901630052886984">"ดูทั้งหมด"</string>
-    <string name="see_less" msgid="1250265310929558370">"ดูน้อยลง"</string>
     <string name="disconnected" msgid="5787956818111197212">"ยกเลิกการเชื่อมต่อแล้ว"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"ใช้อินเทอร์เน็ตไป <xliff:g id="AMOUNT">%1$s</xliff:g>"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
index 8237c49..fa2e8b6 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -2280,20 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Putulin ang koneksyon"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Bersyon <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Kalimutan ang VPN"</string>
-    <!-- no translation found for vpn_replace_vpn_title (2963898301277610248) -->
-    <skip />
-    <!-- no translation found for vpn_set_vpn_title (4009987321156037267) -->
-    <skip />
-    <!-- no translation found for vpn_first_always_on_vpn_message (3025322109743675467) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_enable_message (2577928591361606641) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_disable_message (3011818750025879902) -->
-    <skip />
-    <!-- no translation found for vpn_replace_vpn_message (5611635724578812860) -->
-    <skip />
-    <!-- no translation found for vpn_turn_on (2363136869284273872) -->
-    <skip />
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Gusto mo bang palitan ang dati nang VPN?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Gusto mo bang itakda ang VPN na palaging naka-on?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Kapag na-on ang setting na ito, wala kang magagamit na koneksyon sa Internet hanggang sa matagumpay na makakonekta ang VPN"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Papalitan ang dati mo nang VPN at wala kang magagamit na koneksyon sa Internet hanggang sa matagumpay na makakonekta ang VPN"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Nakakonekta ka na sa isang VPN na palaging naka-on. Kung kokonekta ka sa iba, papalitan ang dati mo nang VPN at io-off ang palaging naka-on na mode."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Nakakonekta ka na sa isang VPN. Kung kokonekta ka sa iba, papalitan ang dati mo nang VPN."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"I-on"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"Hindi makakonekta ang <xliff:g id="VPN_NAME">%1$s</xliff:g>"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Hindi sinusuportahan ng app na ito ang VPN na palaging naka-on."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2536,8 +2529,12 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Network at Internet"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Mga nakakonektang device"</string>
-    <!-- no translation found for system_dashboard_summary (6112602136713843779) -->
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Mga app at notification"</string>
+    <!-- no translation found for account_dashboard_title (38701889336378742) -->
     <skip />
+    <!-- no translation found for app_default_dashboard_title (8176215295082796426) -->
+    <skip />
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Wika: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Mga Setting"</string>
     <string name="search_menu" msgid="6283419262313758339">"Mga setting ng paghahanap"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Mga setting ng paghahanap"</string>
@@ -3045,8 +3042,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Mar 6:01PM"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Mar 6:02PM"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Mar 6:03PM"</string>
-    <string name="see_all" msgid="8883901630052886984">"Tingnan lahat"</string>
-    <string name="see_less" msgid="1250265310929558370">"Tumingin nang kaunti"</string>
     <string name="disconnected" msgid="5787956818111197212">"Naputol ang Koneksyon"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> ng data ang ginamit"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index 2d57f0e..4933eec 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -2280,20 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Bağlantıyı kes"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Sürüm <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"VPN\'yi unut"</string>
-    <!-- no translation found for vpn_replace_vpn_title (2963898301277610248) -->
-    <skip />
-    <!-- no translation found for vpn_set_vpn_title (4009987321156037267) -->
-    <skip />
-    <!-- no translation found for vpn_first_always_on_vpn_message (3025322109743675467) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_enable_message (2577928591361606641) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_disable_message (3011818750025879902) -->
-    <skip />
-    <!-- no translation found for vpn_replace_vpn_message (5611635724578812860) -->
-    <skip />
-    <!-- no translation found for vpn_turn_on (2363136869284273872) -->
-    <skip />
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Mevcut VPN değiştirilsin mi?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Her zaman açık VPN ayarlansın mı?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Bu ayarı açtığınızda VPN doğru bir şekilde bağlanana kadar İnternet bağlantınız olmayacak."</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Mevcut VPN\'niz değiştirilecek ve VPN başarıyla bağlanana kadar İnternet bağlantınız olmayacak."</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Her zaman açık moddaki VPN\'ye zaten bağlısınız. Farklı bir VPN\'ye bağlanırsanız mevcut VPN\'niz değişir ve her zaman açık modu kapanır."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Bir VPN\'ye zaten bağlısınız. Farklı bir VPN\'ye bağlanırsanız mevcut VPN\'niz değiştirilecek."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Aç"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> bağlantısı yapılamıyor"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Bu uygulama her zaman açık durumda olan VPN\'yi desteklemez."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2536,8 +2529,13 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Ağ ve İnternet"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Bağlı cihazlar"</string>
-    <!-- no translation found for system_dashboard_summary (6112602136713843779) -->
+    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
     <skip />
+    <!-- no translation found for account_dashboard_title (38701889336378742) -->
+    <skip />
+    <!-- no translation found for app_default_dashboard_title (8176215295082796426) -->
+    <skip />
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Dil: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Ayarlar"</string>
     <string name="search_menu" msgid="6283419262313758339">"Arama ayarları"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Arama ayarları"</string>
@@ -3045,8 +3043,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Sal 18:01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Sal 18:02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Sal 18:03"</string>
-    <string name="see_all" msgid="8883901630052886984">"Tümünü göster"</string>
-    <string name="see_less" msgid="1250265310929558370">"Daha az göster"</string>
     <string name="disconnected" msgid="5787956818111197212">"Bağlantı kesildi"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> veri kullanıldı"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index 8adc8cb..151a5be 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -2314,20 +2314,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Відключити"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Версія <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Забути мережу VPN"</string>
-    <!-- no translation found for vpn_replace_vpn_title (2963898301277610248) -->
-    <skip />
-    <!-- no translation found for vpn_set_vpn_title (4009987321156037267) -->
-    <skip />
-    <!-- no translation found for vpn_first_always_on_vpn_message (3025322109743675467) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_enable_message (2577928591361606641) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_disable_message (3011818750025879902) -->
-    <skip />
-    <!-- no translation found for vpn_replace_vpn_message (5611635724578812860) -->
-    <skip />
-    <!-- no translation found for vpn_turn_on (2363136869284273872) -->
-    <skip />
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Замінити наявну мережу VPN?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Увімкнути постійну мережу VPN?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Якщо ввімкнути це налаштування, пристрій не матиме з’єднання з Інтернетом, доки не під’єднається мережа VPN"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Наявну мережу VPN буде замінено, а пристрій не матиме з’єднання з Інтернетом, доки не під’єднається мережа VPN"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Пристрій уже під’єднано до постійної мережі VPN. Якщо під’єднати його до іншої мережі, наявну мережу VPN буде замінено, а режим постійної мережі VPN буде вимкнено."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Пристрій уже під’єднано до мережі VPN. Якщо під’єднати його до іншої мережі, наявну мережу VPN буде замінено."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Увімкнути"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"Не вдається під’єднатися до мережі <xliff:g id="VPN_NAME">%1$s</xliff:g>"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Цей додаток не підтримує постійну мережу VPN."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2580,8 +2573,12 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Мережа й Інтернет"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Під’єднані пристрої"</string>
-    <!-- no translation found for system_dashboard_summary (6112602136713843779) -->
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Додатки та сповіщення"</string>
+    <!-- no translation found for account_dashboard_title (38701889336378742) -->
     <skip />
+    <!-- no translation found for app_default_dashboard_title (8176215295082796426) -->
+    <skip />
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Мова: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Налаштування"</string>
     <string name="search_menu" msgid="6283419262313758339">"Налаштування пошуку"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Налаштуваня пошуку"</string>
@@ -3105,8 +3102,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Вт 18:01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Вт 18:02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Вт 18:03"</string>
-    <string name="see_all" msgid="8883901630052886984">"Показати все"</string>
-    <string name="see_less" msgid="1250265310929558370">"Показати менше"</string>
     <string name="disconnected" msgid="5787956818111197212">"Від’єднано"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"Використовується трафіку: <xliff:g id="AMOUNT">%1$s</xliff:g>"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-ur-rPK/strings.xml b/res/values-ur-rPK/strings.xml
index 5f05a75..53e23f5 100644
--- a/res/values-ur-rPK/strings.xml
+++ b/res/values-ur-rPK/strings.xml
@@ -2270,20 +2270,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"غیر منسلک کریں"</string>
     <string name="vpn_version" msgid="1939804054179766249">"ورژن <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"‏VPN بھول جائیں"</string>
-    <!-- no translation found for vpn_replace_vpn_title (2963898301277610248) -->
-    <skip />
-    <!-- no translation found for vpn_set_vpn_title (4009987321156037267) -->
-    <skip />
-    <!-- no translation found for vpn_first_always_on_vpn_message (3025322109743675467) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_enable_message (2577928591361606641) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_disable_message (3011818750025879902) -->
-    <skip />
-    <!-- no translation found for vpn_replace_vpn_message (5611635724578812860) -->
-    <skip />
-    <!-- no translation found for vpn_turn_on (2363136869284273872) -->
-    <skip />
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"‏موجودہ VPN بدلیں؟"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"‏ہمیشہ آن VPN سیٹ کریں؟"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"‏اس ترتیب کو آن کرنے سے، آپ کے پاس تب تک انٹرنیٹ کنکشن نہیں ہو گا جب تک VPN کامیابی کے ساتھ منسلک نہیں ہو جاتا"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"‏آپ کا موجودہ VPN بدل دیا جائے گا اور آپ کے پاس تب تک انٹرنیٹ کنکشن نہیں ہو گا جب تک VPN کامیابی کے ساتھ منسلک نہیں ہو جاتا"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"‏آپ پہلے سے ایک ہمیشہ آن VPN سے منسلک ہیں۔ اگر آپ کسی مختلف سے منسلک ہوتے ہیں تو آپ کا موجودہ VPN بدل دیا جائے گا اور ہمیشہ آن موڈ آف ہو جائے گا۔"</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"‏آپ پہلے سے VPN سے منسلک ہیں۔ اگر آپ کسی مختلف سے منسلک ہوتے ہیں تو آپ کا موجودہ VPN بدل دیا جائے گا۔"</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"آن کریں"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> منسلک نہیں ہو سکتا"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"‏یہ ایپ ہمیشہ آن VPN کو سپورٹ نہیں کرتی۔"</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2524,8 +2517,13 @@
     <!-- no translation found for settings_suggestion_header_summary_hidden_items (5597356221942118048) -->
     <string name="network_dashboard_title" msgid="4771589228992391573">"نیٹ ورک اور انٹرنیٹ"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"منسلک آلات"</string>
-    <!-- no translation found for system_dashboard_summary (6112602136713843779) -->
+    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
     <skip />
+    <!-- no translation found for account_dashboard_title (38701889336378742) -->
+    <skip />
+    <!-- no translation found for app_default_dashboard_title (8176215295082796426) -->
+    <skip />
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"زبان: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"ترتیبات"</string>
     <string name="search_menu" msgid="6283419262313758339">"تلاش کی ترتیبات"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"تلاش کی ترتیبات"</string>
@@ -3033,8 +3031,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"منگل 6:01 بجے رات"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"منگل 6:02 بجے رات"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"منگل 6:03 بجے رات"</string>
-    <string name="see_all" msgid="8883901630052886984">"سبھی دیکھیں"</string>
-    <string name="see_less" msgid="1250265310929558370">"کم دیکھیں"</string>
     <string name="disconnected" msgid="5787956818111197212">"غیر منسلک ہے"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> ڈیٹا استعمال ہو گیا"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-uz-rUZ/strings.xml b/res/values-uz-rUZ/strings.xml
index c356293..06dd31d 100644
--- a/res/values-uz-rUZ/strings.xml
+++ b/res/values-uz-rUZ/strings.xml
@@ -2280,20 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Aloqani uzish"</string>
     <string name="vpn_version" msgid="1939804054179766249">"<xliff:g id="VERSION">%s</xliff:g> versiya"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"VPNni o‘chirish"</string>
-    <!-- no translation found for vpn_replace_vpn_title (2963898301277610248) -->
-    <skip />
-    <!-- no translation found for vpn_set_vpn_title (4009987321156037267) -->
-    <skip />
-    <!-- no translation found for vpn_first_always_on_vpn_message (3025322109743675467) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_enable_message (2577928591361606641) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_disable_message (3011818750025879902) -->
-    <skip />
-    <!-- no translation found for vpn_replace_vpn_message (5611635724578812860) -->
-    <skip />
-    <!-- no translation found for vpn_turn_on (2363136869284273872) -->
-    <skip />
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Mavjud VPN tarmog‘i almashtirilsinmi?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Doimiy VPN o‘rnatilsinmi?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Bu sozlama yoqilganda to VPN to‘liq ulanmaguncha internet ishlamaydi"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Mavjud VPN tarmog‘i almashtiriladi va to VPN to‘liq ulanmaguncha internet ishlamaydi"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Doimiy VPN tarmog‘iga allaqachon ulangansiz. Agar boshqasiga ulansangiz, mavjud VPN tarmog‘i almashtiriladi va doimiy rejim o‘chirib qo‘yiladi."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Allaqachon VPN tarmog‘iga ulangan. Yangisiga ulansangiz, mavjud tarmoq almashtiriladi."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Yoqish"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"“<xliff:g id="VPN_NAME">%1$s</xliff:g>” tarmog‘iga ulanib bo‘lmadi"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Bu ilova doimiy VPN tarmog‘iga ulanishni qo‘llab-quvvatlamaydi."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2534,10 +2527,14 @@
       <item quantity="other">%d ta yashirin elementni ko‘rsatish</item>
       <item quantity="one">%d ta yashirin elementni ko‘rsatish</item>
     </plurals>
-    <string name="network_dashboard_title" msgid="4771589228992391573">"Tarmoq va internet"</string>
+    <string name="network_dashboard_title" msgid="4771589228992391573">"Tarmoq va Internet"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Ulangan qurilmalar"</string>
-    <!-- no translation found for system_dashboard_summary (6112602136713843779) -->
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Ilova va bildirishnomalar"</string>
+    <!-- no translation found for account_dashboard_title (38701889336378742) -->
     <skip />
+    <!-- no translation found for app_default_dashboard_title (8176215295082796426) -->
+    <skip />
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Til: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Sozlamalar"</string>
     <string name="search_menu" msgid="6283419262313758339">"Qidiruv sozlamalari"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Qidiruv sozlamalari"</string>
@@ -3045,8 +3042,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Seshanba, 18:01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Seshanba, 18:02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Seshanba, 18:03"</string>
-    <string name="see_all" msgid="8883901630052886984">"Hammasini ko‘rsatish"</string>
-    <string name="see_less" msgid="1250265310929558370">"Kamroq"</string>
     <string name="disconnected" msgid="5787956818111197212">"Aloqa uzildi"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"Sarflangan trafik: <xliff:g id="AMOUNT">%1$s</xliff:g>"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index 2d683e9..d3417ef 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -2280,20 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Ngắt kết nối"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Phiên bản <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Quên VPN"</string>
-    <!-- no translation found for vpn_replace_vpn_title (2963898301277610248) -->
-    <skip />
-    <!-- no translation found for vpn_set_vpn_title (4009987321156037267) -->
-    <skip />
-    <!-- no translation found for vpn_first_always_on_vpn_message (3025322109743675467) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_enable_message (2577928591361606641) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_disable_message (3011818750025879902) -->
-    <skip />
-    <!-- no translation found for vpn_replace_vpn_message (5611635724578812860) -->
-    <skip />
-    <!-- no translation found for vpn_turn_on (2363136869284273872) -->
-    <skip />
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Thay thế VPN hiện có?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Đặt VPN luôn bật?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Bằng cách bật cài đặt này, bạn sẽ không có kết nối Internet cho đến khi VPN kết nối thành công"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"VPN hiện có của bạn sẽ được thay thế và bạn sẽ không có kết nối Internet cho đến khi VPN kết nối thành công"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Bạn đã kết nối với một VPN luôn bật. Nếu bạn kết nối với một VPN khác, VPN hiện có của bạn sẽ bị thay thế và chế độ luôn bật sẽ tắt."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Bạn đã kết nối với một VPN. Nếu bạn kết nối với một VPN khác, VPN hiện có của bạn sẽ bị thay thế."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Bật"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> không thể kết nối"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Ứng dụng này không hỗ trợ VPN luôn bật."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2536,8 +2529,12 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Mạng và Internet"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Thiết bị đã kết nối"</string>
-    <!-- no translation found for system_dashboard_summary (6112602136713843779) -->
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Ứng dụng và thông báo"</string>
+    <!-- no translation found for account_dashboard_title (38701889336378742) -->
     <skip />
+    <!-- no translation found for app_default_dashboard_title (8176215295082796426) -->
+    <skip />
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Ngôn ngữ: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Cài đặt"</string>
     <string name="search_menu" msgid="6283419262313758339">"Cài đặt tìm kiếm"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Cài đặt tìm kiếm"</string>
@@ -3045,8 +3042,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Thứ Ba 6:01 CH"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Thứ Ba 6:02 CH"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Thứ Ba 6:03 CH"</string>
-    <string name="see_all" msgid="8883901630052886984">"Xem tất cả"</string>
-    <string name="see_less" msgid="1250265310929558370">"Xem bớt"</string>
     <string name="disconnected" msgid="5787956818111197212">"Đã ngắt kết nối"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"Đã sử dụng <xliff:g id="AMOUNT">%1$s</xliff:g> dữ liệu"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index 145ff6e..c10760b 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -2280,20 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"断开连接"</string>
     <string name="vpn_version" msgid="1939804054179766249">"版本 <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"取消保存 VPN"</string>
-    <!-- no translation found for vpn_replace_vpn_title (2963898301277610248) -->
-    <skip />
-    <!-- no translation found for vpn_set_vpn_title (4009987321156037267) -->
-    <skip />
-    <!-- no translation found for vpn_first_always_on_vpn_message (3025322109743675467) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_enable_message (2577928591361606641) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_disable_message (3011818750025879902) -->
-    <skip />
-    <!-- no translation found for vpn_replace_vpn_message (5611635724578812860) -->
-    <skip />
-    <!-- no translation found for vpn_turn_on (2363136869284273872) -->
-    <skip />
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"要替换现有 VPN 吗?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"要设置始终开启的 VPN 吗?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"开启这项设置后,在 VPN 成功连接之前,您将无法连接到互联网"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"系统将替换现有 VPN,而且在 VPN 成功连接之前,您将无法连接到互联网"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"您已连接到某个始终开启的 VPN。如果您要连接到其他 VPN,则系统将替换现有 VPN,并关闭始终开启模式。"</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"您已连接到 VPN。如果您要连接到其他 VPN,则系统将替换现有 VPN。"</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"开启"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"无法连接到<xliff:g id="VPN_NAME">%1$s</xliff:g>"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"此应用不支持始终开启的 VPN。"</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2536,8 +2529,12 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"网络和互联网"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"已关联的设备"</string>
-    <!-- no translation found for system_dashboard_summary (6112602136713843779) -->
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"应用和通知"</string>
+    <!-- no translation found for account_dashboard_title (38701889336378742) -->
     <skip />
+    <!-- no translation found for app_default_dashboard_title (8176215295082796426) -->
+    <skip />
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"语言:<xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"设置"</string>
     <string name="search_menu" msgid="6283419262313758339">"搜索设置"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"搜索设置"</string>
@@ -3045,8 +3042,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"周二下午 6:01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"周二下午 6:02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"周二下午 6:03"</string>
-    <string name="see_all" msgid="8883901630052886984">"查看全部"</string>
-    <string name="see_less" msgid="1250265310929558370">"隐藏部分"</string>
     <string name="disconnected" msgid="5787956818111197212">"已断开连接"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"已使用 <xliff:g id="AMOUNT">%1$s</xliff:g> 的数据"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml
index 86acee1..201b23e 100644
--- a/res/values-zh-rHK/strings.xml
+++ b/res/values-zh-rHK/strings.xml
@@ -2285,20 +2285,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"中斷連線"</string>
     <string name="vpn_version" msgid="1939804054179766249">"版本為:<xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"刪除 VPN"</string>
-    <!-- no translation found for vpn_replace_vpn_title (2963898301277610248) -->
-    <skip />
-    <!-- no translation found for vpn_set_vpn_title (4009987321156037267) -->
-    <skip />
-    <!-- no translation found for vpn_first_always_on_vpn_message (3025322109743675467) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_enable_message (2577928591361606641) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_disable_message (3011818750025879902) -->
-    <skip />
-    <!-- no translation found for vpn_replace_vpn_message (5611635724578812860) -->
-    <skip />
-    <!-- no translation found for vpn_turn_on (2363136869284273872) -->
-    <skip />
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"要取代目前的 VPN 嗎?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"要設定永遠開啟的 VPN 嗎?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"開啟此設定後,VPN 成功連線前,您將無法連線至互聯網"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"目前的 VPN 將會被取代,而 VPN 成功連線前,您將無法連線至互聯網"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"您已連線至永遠開啟的 VPN。如果您連線至另一個 VPN,目前的 VPN 將會被取代,而永遠開啟模式亦將會關閉。"</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"您已連線至 VPN。如果您連線至另一個 VPN,目前的 VPN 將會被取代。"</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"開啟"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"無法連接 <xliff:g id="VPN_NAME">%1$s</xliff:g>"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"此應用程式不支援永遠開啟的 VPN。"</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2541,8 +2534,12 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"網絡和互聯網"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"已連結的裝置"</string>
-    <!-- no translation found for system_dashboard_summary (6112602136713843779) -->
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"應用程式和通知"</string>
+    <!-- no translation found for account_dashboard_title (38701889336378742) -->
     <skip />
+    <!-- no translation found for app_default_dashboard_title (8176215295082796426) -->
+    <skip />
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"語言:<xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"設定"</string>
     <string name="search_menu" msgid="6283419262313758339">"搜尋設定"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"搜尋設定"</string>
@@ -3050,8 +3047,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"星期二下午 6:01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"星期二下午 6:02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"星期二下午 6:03"</string>
-    <string name="see_all" msgid="8883901630052886984">"顯示全部"</string>
-    <string name="see_less" msgid="1250265310929558370">"顯示較少"</string>
     <string name="disconnected" msgid="5787956818111197212">"已中斷連線"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"已使用 <xliff:g id="AMOUNT">%1$s</xliff:g> 數據"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index b58385b..53a7680 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -2284,20 +2284,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"中斷連線"</string>
     <string name="vpn_version" msgid="1939804054179766249">"版本 <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"清除 VPN 設定檔"</string>
-    <!-- no translation found for vpn_replace_vpn_title (2963898301277610248) -->
-    <skip />
-    <!-- no translation found for vpn_set_vpn_title (4009987321156037267) -->
-    <skip />
-    <!-- no translation found for vpn_first_always_on_vpn_message (3025322109743675467) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_enable_message (2577928591361606641) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_disable_message (3011818750025879902) -->
-    <skip />
-    <!-- no translation found for vpn_replace_vpn_message (5611635724578812860) -->
-    <skip />
-    <!-- no translation found for vpn_turn_on (2363136869284273872) -->
-    <skip />
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"要取代現有的 VPN 嗎?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"要設定永久連線的 VPN 嗎?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"開啟這項設定後,在 VPN 成功連線之前,你將無法連上網際網路"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"現有的 VPN 會遭到取代,而且在 VPN 成功連線之前,你將無法連上網際網路"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"你已連線至某個永久連線的 VPN。連線至其他 VPN 將會取代現有的 VPN,並關閉永久連線模式。"</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"你已連線至某個 VPN。連線至其他 VPN 將會取代現有的 VPN。"</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"開啟"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"無法連線至 <xliff:g id="VPN_NAME">%1$s</xliff:g>"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"這個應用程式不支援永久連線的 VPN。"</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2540,8 +2533,13 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"網路和網際網路"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"已連結的裝置"</string>
-    <!-- no translation found for system_dashboard_summary (6112602136713843779) -->
+    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
     <skip />
+    <!-- no translation found for account_dashboard_title (38701889336378742) -->
+    <skip />
+    <!-- no translation found for app_default_dashboard_title (8176215295082796426) -->
+    <skip />
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"語言:<xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"設定"</string>
     <string name="search_menu" msgid="6283419262313758339">"搜尋設定"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"搜尋設定"</string>
@@ -3049,8 +3047,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"週二下午 6:01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"週二下午 6:02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"週二下午 6:03"</string>
-    <string name="see_all" msgid="8883901630052886984">"全部顯示"</string>
-    <string name="see_less" msgid="1250265310929558370">"顯示較少"</string>
     <string name="disconnected" msgid="5787956818111197212">"已中斷連線"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"已使用 <xliff:g id="AMOUNT">%1$s</xliff:g>的數據用量"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
index 4589b21..942f1dd 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -2281,20 +2281,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Nqamula"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Inguqulo engu-<xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Khohlwa i-VPN"</string>
-    <!-- no translation found for vpn_replace_vpn_title (2963898301277610248) -->
-    <skip />
-    <!-- no translation found for vpn_set_vpn_title (4009987321156037267) -->
-    <skip />
-    <!-- no translation found for vpn_first_always_on_vpn_message (3025322109743675467) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_enable_message (2577928591361606641) -->
-    <skip />
-    <!-- no translation found for vpn_replace_always_on_vpn_disable_message (3011818750025879902) -->
-    <skip />
-    <!-- no translation found for vpn_replace_vpn_message (5611635724578812860) -->
-    <skip />
-    <!-- no translation found for vpn_turn_on (2363136869284273872) -->
-    <skip />
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Shintshanisa i-VPN ekhona?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Setha i-VPN ehlala ivuliwe?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Ngokuvula lesi silungiselelo, ngeke ube nokuxhumeka kwe-inthanethi kuze kuxhumeke i-VPN ngempumelelo"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"I-VPN yakho ekhona izoshintshaniswa, futhi ngeke ube nokuxhumeka kwe-inthanethi i-VPN ize ixhumeke ngempumelelo"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Usuvele uxhumeke ku-VPN ehlala ivuliwe. Uma uxhumeka kwehlukile, i-VPN yakho ekhona izoshintshaniswa, futhi imodi yokuhlala ivuliwe izovalwa."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Usuvele uxhumekile ku-VPN. Uma uxhua kwehlukile, i-VPN izoshintshaniswa."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Vula"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> ayikwazi ukuxhuma"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Lolu hlelo lokusebenza alisekeli i-VPN ehlala ivulekile."</string>
     <string name="vpn_title" msgid="6317731879966640551">"I-VPN"</string>
@@ -2537,8 +2530,12 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Inethiwekhi ye-inthanethi"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Amadivayisi axhunyiwe"</string>
-    <!-- no translation found for system_dashboard_summary (6112602136713843779) -->
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Izinhlelo zokusebenza nezaziso"</string>
+    <!-- no translation found for account_dashboard_title (38701889336378742) -->
     <skip />
+    <!-- no translation found for app_default_dashboard_title (8176215295082796426) -->
+    <skip />
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Ulimi: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Izilungiselelo"</string>
     <string name="search_menu" msgid="6283419262313758339">"Izilungiselelo zokusesha"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Izilungiselelo zokusesha"</string>
@@ -3046,8 +3043,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Lwesibili 6:01PM"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Lwesibili 6:02PM"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Lwesibili 6:03PM"</string>
-    <string name="see_all" msgid="8883901630052886984">"Buka konke"</string>
-    <string name="see_less" msgid="1250265310929558370">"Buka okuncane"</string>
     <string name="disconnected" msgid="5787956818111197212">"Inqamukile"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> wedatha esetshenzisiwe"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values/colors.xml b/res/values/colors.xml
index 9f3dd5b..3be4038 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -53,8 +53,6 @@
     <color name="fingerprint_title_area_bg">?android:attr/colorAccent</color>
     <color name="fingerprint_title_color">#ffffffff</color>
     <color name="fingerprint_message_color">#de000000</color>
-    <color name="fingerprint_progress_ring">?android:attr/colorAccent</color>
-    <color name="fingerprint_progress_ring_bg">#20000000</color>
     <color name="fingerprint_indicator_background_resting">#12000000</color>
 
     <color name="running_processes_system_ram">#ff384248</color>
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index b266f9c..40f3f71 100755
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -67,6 +67,7 @@
 
     <dimen name="captioning_preview_height">200dp</dimen>
 
+    <dimen name="ring_progress_bar_thickness">4dp</dimen>
     <dimen name="settings_side_margin">0dip</dimen>
 
     <!-- Weight of the left pane in a multi-pane preference layout. -->
@@ -221,8 +222,6 @@
     <dimen name="redaction_vertical_margins">8dp</dimen>
 
     <!-- Fingerprint -->
-    <dimen name="fingerprint_ring_radius">92dip</dimen>
-    <dimen name="fingerprint_ring_thickness">4dip</dimen>
     <dimen name="fingerprint_dot_radius">8dp</dimen>
     <dimen name="fingerprint_pulse_radius">50dp</dimen>
     <item name="fingerprint_sensor_location_fraction_x" type="fraction">50%</item>
@@ -233,15 +232,13 @@
     <dimen name="fingerprint_error_text_appear_distance">16dp</dimen>
     <dimen name="fingerprint_error_text_disappear_distance">-8dp</dimen>
     <dimen name="fingerprint_animation_size">88dp</dimen>
-    <dimen name="fingerprint_progress_bar_size">192dp</dimen>
+    <dimen name="fingerprint_progress_bar_max_size">220dp</dimen>
+    <dimen name="fingerprint_progress_bar_min_size">120dp</dimen>
     <dimen name="fingerprint_enrolling_content_margin_top">36dp</dimen>
     <dimen name="fingerprint_in_app_indicator_size">124dp</dimen>
     <dimen name="fingerprint_in_app_indicator_min_size">124dp</dimen>
     <dimen name="fingerprint_in_app_indicator_max_size">264dp</dimen>
 
-    <dimen name="setup_fingerprint_ring_radius">80dip</dimen>
-    <dimen name="setup_fingerprint_progress_bar_size">168dp</dimen>
-
     <dimen name="confirm_credentials_security_method_margin">48dp</dimen>
     <dimen name="confirm_credentials_layout_width">@dimen/match_parent</dimen>
     <dimen name="confirm_credentials_top_padding">0dp</dimen>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 8e6336f..14b7899 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -5929,6 +5929,13 @@
     <string name="network_dashboard_title">Network &amp; Internet</string>
     <!-- Title for setting tile leading to Connected devices settings [CHAR LIMIT=40]-->
     <string name="connected_devices_dashboard_title">Connected devices</string>
+    <!-- Title for setting tile leading to Apps & Notification settings [CHAR LIMIT=40]-->
+    <string name="app_and_notification_dashboard_title">Apps &amp; notifications</string>
+    <!-- Title for setting tile leading to User and accounts settings [CHAR LIMIT=40]-->
+    <string name="account_dashboard_title">User &amp; accounts</string>
+    <!-- Title for setting tile leading to App defaults (which allows user set default app to
+    handle actions such as open web page, making phone calls, default SMS apps [CHAR  LIMIT=40]-->
+    <string name="app_default_dashboard_title">App defaults</string>
     <!-- Summary text for system preference tile, showing current display language of device [CHAR LIMIT=NONE]-->
     <string name="system_dashboard_summary">Language: <xliff:g id="language">%1$s</xliff:g></string>
 
@@ -6152,7 +6159,7 @@
 
 
     <!-- Configure Notifications Settings title. [CHAR LIMIT=30] -->
-    <string name="configure_notification_settings">Configure notifications</string>
+    <string name="configure_notification_settings">Notification preferences</string>
 
     <!-- Configure Notifications: Advanced section header [CHAR LIMIT=30] -->
     <string name="advanced_section_header">Advanced</string>
@@ -7281,11 +7288,6 @@
     <!-- Conversation message timestamp of the messaging app preview screen. [CHAR LIMIT=20] -->
     <string name="screen_zoom_conversation_timestamp_4">Tue 6:03PM</string>
 
-    <!-- Button to show all top-level settings items [CHAR LIMIT=20] -->
-    <string name="see_all">See all</string>
-    <!-- Button to show less top-level settings items [CHAR LIMIT=20] -->
-    <string name="see_less">See less</string>
-
     <!-- Wi-Fi state - Disconnected [CHAR LIMIT=NONE] -->
     <string name="disconnected">Disconnected</string>
 
diff --git a/res/values/styles.xml b/res/values/styles.xml
index fc37bb0..0f957a8 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -445,4 +445,11 @@
         <item name="android:lineSpacingMultiplier">1.2</item>
     </style>
 
+    <style name="RingProgressBarStyle" parent="android:style/Widget.Material.ProgressBar.Horizontal">
+        <item name="android:indeterminate">false</item>
+        <item name="android:max">10000</item>
+        <item name="android:mirrorForRtl">false</item>
+        <item name="android:progressDrawable">@drawable/ring_progress</item>
+    </style>
+
 </resources>
diff --git a/res/values/themes.xml b/res/values/themes.xml
index b9f69cf..a5ff54a 100644
--- a/res/values/themes.xml
+++ b/res/values/themes.xml
@@ -16,8 +16,6 @@
 
 <resources>
     <attr name="fingerprint_layout_theme" format="reference" />
-    <attr name="fingerprint_progress_bar_size" format="reference|dimension" />
-    <attr name="fingerprint_ring_radius" format="reference|dimension" />
     <attr name="ic_menu_moreoverflow" format="reference" />
     <attr name="ic_wps" format="reference" />
     <attr name="setup_divider_color" format="reference" />
@@ -38,8 +36,6 @@
         <item name="android:windowBackground">?android:attr/colorBackground</item>
         <item name="*android:preferencePanelStyle">@*android:style/PreferencePanel.Dialog</item>
         <item name="fingerprint_layout_theme">@style/FingerprintLayoutTheme</item>
-        <item name="fingerprint_progress_bar_size">@dimen/setup_fingerprint_progress_bar_size</item>
-        <item name="fingerprint_ring_radius">@dimen/setup_fingerprint_ring_radius</item>
         <item name="ic_menu_moreoverflow">@*android:drawable/ic_menu_moreoverflow_material</item>
         <item name="ic_wps">@drawable/ic_wps_dark</item>
         <item name="setup_divider_color">@color/setup_divider_color_dark</item>
@@ -62,8 +58,6 @@
         <item name="android:windowBackground">?android:attr/colorBackground</item>
         <item name="*android:preferencePanelStyle">@*android:style/PreferencePanel.Dialog</item>
         <item name="fingerprint_layout_theme">@style/FingerprintLayoutTheme</item>
-        <item name="fingerprint_progress_bar_size">@dimen/setup_fingerprint_progress_bar_size</item>
-        <item name="fingerprint_ring_radius">@dimen/setup_fingerprint_ring_radius</item>
         <item name="ic_menu_moreoverflow">@*android:drawable/ic_menu_moreoverflow_material</item>
         <item name="ic_wps">@drawable/ic_wps_light</item>
         <item name="setup_divider_color">@color/setup_divider_color_light</item>
@@ -123,6 +117,7 @@
 
     <style name="SetupWizardAccessibilitySwitchBarTheme" parent="ThemeOverlay.SwitchBar.Settings">
         <item name="switchBarBackgroundColor">@color/material_blue_500</item>
+        <item name="android:colorControlActivated">@android:color/white</item>
     </style>
 
     <!-- Theme with no local references, used by AccountPreferenceBase where we have to inflate
@@ -140,8 +135,6 @@
         <item name="*android:preferenceFragmentPaddingSide">@dimen/settings_side_margin</item>
 
         <item name="fingerprint_layout_theme">@style/FingerprintLayoutTheme</item>
-        <item name="fingerprint_progress_bar_size">@dimen/fingerprint_progress_bar_size</item>
-        <item name="fingerprint_ring_radius">@dimen/fingerprint_ring_radius</item>
         <item name="ic_menu_moreoverflow">@*android:drawable/ic_menu_moreoverflow_holo_dark</item>
         <item name="ic_wps">@drawable/ic_wps_light</item>
         <item name="wifi_signal">@drawable/wifi_signal</item>
diff --git a/res/xml/advanced_apps.xml b/res/xml/advanced_apps.xml
index 405d5af..7b1af10 100644
--- a/res/xml/advanced_apps.xml
+++ b/res/xml/advanced_apps.xml
@@ -19,10 +19,12 @@
     xmlns:settings="http://schemas.android.com/apk/res/com.android.settings"
     android:key="applications_settings">
 
-    <PreferenceScreen
+    <Preference
         android:key="manage_perms"
         android:title="@string/app_permissions"
-        settings:keywords="@string/keywords_app_permissions" />
+        settings:keywords="@string/keywords_app_permissions">
+        <intent android:action="android.intent.action.MANAGE_PERMISSIONS"/>
+    </Preference>
 
     <PreferenceCategory
         android:title="@string/default_apps_title">
diff --git a/res/xml/app_and_notification.xml b/res/xml/app_and_notification.xml
new file mode 100644
index 0000000..4aa109e
--- /dev/null
+++ b/res/xml/app_and_notification.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 2016 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  -->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:settings="http://schemas.android.com/apk/res/com.android.settings">
+
+    <Preference
+        android:key="manage_perms"
+        android:title="@string/app_permissions"
+        android:order="-130"
+        settings:keywords="@string/keywords_app_permissions">
+        <intent android:action="android.intent.action.MANAGE_PERMISSIONS"/>
+    </Preference>
+
+</PreferenceScreen>
\ No newline at end of file
diff --git a/res/xml/app_default_settings.xml b/res/xml/app_default_settings.xml
new file mode 100644
index 0000000..c6e56a1
--- /dev/null
+++ b/res/xml/app_default_settings.xml
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 2016 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  -->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:settings="http://schemas.android.com/apk/res/com.android.settings">
+
+    <Preference
+        android:key="assist_and_voice_input"
+        android:title="@string/assist_and_voice_input_title"
+        android:fragment="com.android.settings.applications.ManageAssist"
+        android:order="-20"/>
+
+    <com.android.settings.applications.DefaultBrowserPreference
+        android:key="default_browser"
+        android:title="@string/default_browser_title"
+        android:summary="@string/default_browser_title_none"
+        android:order="-19"/>
+
+    <com.android.settings.applications.DefaultHomePreference
+        android:key="default_home"
+        android:title="@string/home_app"
+        android:summary="@string/no_default_home"
+        settings:keywords="@string/keywords_home"
+        android:order="-18"/>
+
+    <com.android.settings.applications.DefaultPhonePreference
+        android:key="default_phone_app"
+        android:title="@string/default_phone_title"
+        settings:keywords="@string/keywords_default_phone_app"
+        android:order="-17"/>
+
+    <com.android.settings.applications.DefaultSmsPreference
+        android:key="default_sms_app"
+        android:title="@string/sms_application_title"
+        settings:keywords="@string/keywords_more_default_sms_app"
+        android:order="-16"/>
+
+    <com.android.settings.applications.DefaultEmergencyPreference
+        android:key="default_emergency_app"
+        android:title="@string/default_emergency_app"
+        settings:keywords="@string/keywords_emergency_app"
+        android:order="-15"/>
+
+    <Preference
+        android:key="domain_urls"
+        android:title="@string/domain_urls_title"
+        android:fragment="com.android.settings.applications.ManageDomainUrls">
+    </Preference>
+
+    <com.android.settings.WorkOnlyCategory
+        android:key="work_defaults"
+        android:title="@string/default_for_work">
+
+        <com.android.settings.applications.DefaultBrowserPreference
+            android:key="work_default_browser"
+            android:title="@string/default_browser_title"
+            android:summary="@string/default_browser_title_none"
+            settings:forWork="true"/>
+
+        <com.android.settings.applications.DefaultPhonePreference
+            android:key="work_default_phone_app"
+            android:title="@string/default_phone_title"
+            settings:keywords="@string/keywords_default_phone_app"
+            settings:forWork="true"/>
+
+    </com.android.settings.WorkOnlyCategory>
+
+    <Preference
+        android:key="special_access"
+        android:fragment="com.android.settings.applications.SpecialAccessSettings"
+        android:title="@string/special_access"/>
+
+</PreferenceScreen>
\ No newline at end of file
diff --git a/res/xml/configure_notification_settings.xml b/res/xml/configure_notification_settings.xml
index 8778abb..626cd33 100644
--- a/res/xml/configure_notification_settings.xml
+++ b/res/xml/configure_notification_settings.xml
@@ -15,19 +15,34 @@
 -->
 
 <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
-                  xmlns:settings="http://schemas.android.com/apk/res/com.android.settings"
-        android:title="@string/configure_notification_settings"
-        android:key="configure_notification_settings" >
+                  android:title="@string/configure_notification_settings"
+                  android:key="configure_notification_settings">
 
     <!-- Pulse notification light -->
     <SwitchPreference
-            android:key="notification_pulse"
-            android:title="@string/notification_pulse_title" />
+        android:key="notification_pulse"
+        android:title="@string/notification_pulse_title"/>
 
     <!-- When device is locked -->
     <com.android.settings.notification.RestrictedDropDownPreference
-            android:key="lock_screen_notifications"
+        android:key="lock_screen_notifications"
+        android:title="@string/lock_screen_notifications_title"
+        android:summary="%s"/>
+
+    <SwitchPreference
+        android:key="gesture_swipe_down_fingerprint"
+        android:title="@string/fingerprint_swipe_for_notifications_title"
+        android:summary="@string/fingerprint_swipe_for_notifications_summary"/>
+
+    <PreferenceCategory
+        android:key="lock_screen_notifications_profile_header"
+        android:title="@string/profile_section_header">
+
+        <com.android.settings.notification.RestrictedDropDownPreference
+            android:key="lock_screen_notifications_profile"
             android:title="@string/lock_screen_notifications_title"
-            android:summary="%s" />
+            android:summary="%s"/>
+
+    </PreferenceCategory>
 
 </PreferenceScreen>
diff --git a/res/xml/configure_notification_settings_profile.xml b/res/xml/configure_notification_settings_profile.xml
deleted file mode 100644
index 301f3c0..0000000
--- a/res/xml/configure_notification_settings_profile.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2016 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
-                  xmlns:settings="http://schemas.android.com/apk/res/com.android.settings"
-        android:title="@string/configure_notification_settings" >
-
-    <PreferenceCategory
-            android:title="@string/profile_section_header" >
-
-        <com.android.settings.notification.RestrictedDropDownPreference
-            android:key="lock_screen_notifications_profile"
-            android:title="@string/lock_screen_notifications_title"
-            android:summary="%s" />
-
-    </PreferenceCategory>
-
-</PreferenceScreen>
diff --git a/src/com/android/settings/DevelopmentSettings.java b/src/com/android/settings/DevelopmentSettings.java
index 32aaaf0..b9bc439 100644
--- a/src/com/android/settings/DevelopmentSettings.java
+++ b/src/com/android/settings/DevelopmentSettings.java
@@ -1958,7 +1958,8 @@
             Settings.Global.putInt(getActivity().getContentResolver(),
                     Settings.Global.STAY_ON_WHILE_PLUGGED_IN,
                     mKeepScreenOn.isChecked() ?
-                            (BatteryManager.BATTERY_PLUGGED_AC | BatteryManager.BATTERY_PLUGGED_USB) : 0);
+                            (BatteryManager.BATTERY_PLUGGED_AC | BatteryManager.BATTERY_PLUGGED_USB
+                                    | BatteryManager.BATTERY_PLUGGED_WIRELESS) : 0);
         } else if (preference == mBtHciSnoopLog) {
             writeBtHciSnoopLogOptions();
         } else if (preference == mEnableOemUnlock && mEnableOemUnlock.isEnabled()) {
diff --git a/src/com/android/settings/Settings.java b/src/com/android/settings/Settings.java
index 91db7fa..451c7e3 100644
--- a/src/com/android/settings/Settings.java
+++ b/src/com/android/settings/Settings.java
@@ -166,7 +166,9 @@
     // Top level categories for new IA
     public static class NetworkDashboardActivity extends SettingsActivity {}
     public static class ConnectedDeviceDashboardActivity extends SettingsActivity {}
+    public static class AppAndNotificationDashboardActivity extends SettingsActivity {}
     public static class StorageDashboardActivity extends SettingsActivity {}
+    public static class UserAndAccountDashboardActivity extends SettingsActivity {}
     public static class SystemDashboardActivity extends SettingsActivity {}
     public static class SupportDashboardActivity extends SettingsActivity {}
 
diff --git a/src/com/android/settings/SettingsActivity.java b/src/com/android/settings/SettingsActivity.java
index b434777..432dec3 100644
--- a/src/com/android/settings/SettingsActivity.java
+++ b/src/com/android/settings/SettingsActivity.java
@@ -61,7 +61,9 @@
 import com.android.settings.accounts.AccountSyncSettings;
 import com.android.settings.accounts.ChooseAccountActivity;
 import com.android.settings.accounts.ManagedProfileSettings;
+import com.android.settings.accounts.UserAndAccountDashboardFragment;
 import com.android.settings.applications.AdvancedAppSettings;
+import com.android.settings.applications.AppAndNotificationDashboardFragment;
 import com.android.settings.applications.DrawOverlayDetails;
 import com.android.settings.applications.InstalledAppDetails;
 import com.android.settings.applications.ManageApplications;
@@ -272,23 +274,26 @@
             // New IA
             // Home page
             Settings.NetworkDashboardActivity.class.getName(),
+            Settings.ConnectedDeviceDashboardActivity.class.getName(),
+            Settings.AppAndNotificationDashboardActivity.class.getName(),
             "com.android.settings.Settings.BatteryDashboardAlias",
             "com.android.settings.Settings.DisplayDashboardAlias",
             "com.android.settings.Settings.SoundDashboardAlias",
             "com.android.settings.Settings.SecurityDashboardAlias",
+            Settings.UserAndAccountDashboardActivity.class.getName(),
             Settings.SystemDashboardActivity.class.getName(),
             Settings.SupportDashboardActivity.class.getName(),
+            // Home page > Apps & Notifications
+            "com.android.settings.Settings.ManageApplicationsDashboardAlias",
+            "com.android.settings.Settings.PaymentSettingsDashboardAlias",
             // Home page > Network & Internet
             "com.android.settings.Settings.WifiDashboardAlias",
             "com.android.settings.Settings.DataUsageDashboardAlias",
-            // Home page > Connected devices
-            Settings.ConnectedDeviceDashboardActivity.class.getName(),
             // Home page > System
             "com.android.settings.Settings.LanguageAndInputDashboardAlias",
             "com.android.settings.Settings.DateTimeDashboardAlias",
             "com.android.settings.Settings.AccessibilityDashboardAlias",
             "com.android.settings.Settings.AboutDeviceDashboardAlias",
-
     };
 
     private static final String[] ENTRY_FRAGMENTS = {
@@ -393,6 +398,8 @@
             SystemDashboardFragment.class.getName(),
             NetworkDashboardFragment.class.getName(),
             ConnectedDeviceDashboardFragment.class.getName(),
+            AppAndNotificationDashboardFragment.class.getName(),
+            UserAndAccountDashboardFragment.class.getName(),
     };
 
 
diff --git a/src/com/android/settings/Utils.java b/src/com/android/settings/Utils.java
index f8520d8..6f4482c 100644
--- a/src/com/android/settings/Utils.java
+++ b/src/com/android/settings/Utils.java
@@ -47,7 +47,9 @@
 import android.hardware.fingerprint.FingerprintManager;
 import android.net.ConnectivityManager;
 import android.net.LinkProperties;
+import android.net.Network;
 import android.net.Uri;
+import android.net.wifi.WifiManager;
 import android.os.BatteryManager;
 import android.os.Bundle;
 import android.os.IBinder;
@@ -235,10 +237,15 @@
      * @return the formatted and newline-separated IP addresses, or null if none.
      */
     public static String getWifiIpAddresses(Context context) {
-        ConnectivityManager cm = (ConnectivityManager)
+        WifiManager wifiManager = context.getSystemService(WifiManager.class);
+        Network currentNetwork = wifiManager.getCurrentNetwork();
+        if (currentNetwork != null) {
+            ConnectivityManager cm = (ConnectivityManager)
                 context.getSystemService(Context.CONNECTIVITY_SERVICE);
-        LinkProperties prop = cm.getLinkProperties(ConnectivityManager.TYPE_WIFI);
-        return formatIpAddresses(prop);
+            LinkProperties prop = cm.getLinkProperties(currentNetwork);
+            return formatIpAddresses(prop);
+        }
+        return null;
     }
 
     /**
diff --git a/src/com/android/settings/accounts/UserAndAccountDashboardFragment.java b/src/com/android/settings/accounts/UserAndAccountDashboardFragment.java
new file mode 100644
index 0000000..34d6dc4
--- /dev/null
+++ b/src/com/android/settings/accounts/UserAndAccountDashboardFragment.java
@@ -0,0 +1,57 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.settings.accounts;
+
+import android.content.Context;
+
+import com.android.internal.logging.MetricsProto.MetricsEvent;
+import com.android.settings.R;
+import com.android.settings.core.PreferenceController;
+import com.android.settings.dashboard.DashboardFragment;
+import com.android.settingslib.drawer.CategoryKey;
+
+import java.util.List;
+
+public class UserAndAccountDashboardFragment extends DashboardFragment {
+
+    private static final String TAG = "UserAndAccountDashboard";
+
+    @Override
+    public int getMetricsCategory() {
+        return MetricsEvent.ACCOUNT;
+    }
+
+    @Override
+    protected String getCategoryKey() {
+        return CategoryKey.CATEGORY_ACCOUNT;
+    }
+
+    @Override
+    protected String getLogTag() {
+        return TAG;
+    }
+
+    @Override
+    protected int getPreferenceScreenResId() {
+        return R.xml.account_settings;
+    }
+
+    @Override
+    protected List<PreferenceController> getPreferenceControllers(Context context) {
+        return null;
+    }
+
+}
\ No newline at end of file
diff --git a/src/com/android/settings/applications/AdvancedAppSettings.java b/src/com/android/settings/applications/AdvancedAppSettings.java
index db9d8de..827b6e8 100644
--- a/src/com/android/settings/applications/AdvancedAppSettings.java
+++ b/src/com/android/settings/applications/AdvancedAppSettings.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2015 The Android Open Source Project
+ * Copyright (C) 2016 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -15,57 +15,52 @@
  */
 package com.android.settings.applications;
 
-import android.content.BroadcastReceiver;
 import android.content.Context;
-import android.content.Intent;
-import android.os.AsyncTask;
 import android.os.Bundle;
 import android.provider.SearchIndexableResource;
-import android.support.v7.preference.Preference;
+
 import com.android.internal.logging.MetricsProto.MetricsEvent;
 import com.android.settings.R;
-import com.android.settings.SettingsPreferenceFragment;
 import com.android.settings.Utils;
-import com.android.settings.applications.PermissionsSummaryHelper.PermissionsResultCallback;
+import com.android.settings.core.PreferenceController;
+import com.android.settings.dashboard.DashboardFragment;
+import com.android.settings.overlay.FeatureFactory;
 import com.android.settings.search.BaseSearchIndexProvider;
 import com.android.settings.search.Indexable;
+import com.android.settingslib.drawer.CategoryKey;
 
-import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 
-public class AdvancedAppSettings extends SettingsPreferenceFragment implements
-        Indexable {
+public class AdvancedAppSettings extends DashboardFragment {
 
     static final String TAG = "AdvancedAppSettings";
 
-    private static final String KEY_APP_PERM = "manage_perms";
-    private static final String KEY_APP_DOMAIN_URLS = "domain_urls";
-    private static final String KEY_HIGH_POWER_APPS = "high_power_apps";
-    private static final String KEY_SYSTEM_ALERT_WINDOW = "system_alert_window";
-    private static final String KEY_WRITE_SETTINGS_APPS = "write_settings_apps";
-
-    private Preference mAppPermsPreference;
-    private Preference mAppDomainURLsPreference;
-    private Preference mHighPowerPreference;
-    private Preference mSystemAlertWindowPreference;
-    private Preference mWriteSettingsPreference;
-
-    private BroadcastReceiver mPermissionReceiver;
-
     @Override
     public void onCreate(Bundle icicle) {
         super.onCreate(icicle);
-        addPreferencesFromResource(R.xml.advanced_apps);
+    }
 
-        Preference permissions = getPreferenceScreen().findPreference(KEY_APP_PERM);
-        permissions.setIntent(new Intent(Intent.ACTION_MANAGE_PERMISSIONS));
+    @Override
+    protected String getCategoryKey() {
+        return CategoryKey.CATEGORY_APPS_DEFAULT;
+    }
 
-        mAppPermsPreference = findPreference(KEY_APP_PERM);
-        mAppDomainURLsPreference = findPreference(KEY_APP_DOMAIN_URLS);
-        mHighPowerPreference = findPreference(KEY_HIGH_POWER_APPS);
-        mSystemAlertWindowPreference = findPreference(KEY_SYSTEM_ALERT_WINDOW);
-        mWriteSettingsPreference = findPreference(KEY_WRITE_SETTINGS_APPS);
+    @Override
+    protected String getLogTag() {
+        return TAG;
+    }
+
+    @Override
+    protected int getPreferenceScreenResId() {
+        return mDashboardFeatureProvider.isEnabled()
+                ? R.xml.app_default_settings
+                : R.xml.advanced_apps;
+    }
+
+    @Override
+    protected List<PreferenceController> getPreferenceControllers(Context context) {
+        return null;
     }
 
     @Override
@@ -73,32 +68,16 @@
         return MetricsEvent.APPLICATIONS_ADVANCED;
     }
 
-    private final PermissionsResultCallback mPermissionCallback = new PermissionsResultCallback() {
-        @Override
-        public void onAppWithPermissionsCountsResult(int standardGrantedPermissionAppCount,
-                int standardUsedPermissionAppCount) {
-            if (getActivity() == null) {
-                return;
-            }
-            mPermissionReceiver = null;
-            if (standardUsedPermissionAppCount != 0) {
-                mAppPermsPreference.setSummary(getContext().getString(
-                        R.string.app_permissions_summary,
-                        standardGrantedPermissionAppCount,
-                        standardUsedPermissionAppCount));
-            } else {
-                mAppPermsPreference.setSummary(null);
-            }
-        }
-    };
-
     public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
             new BaseSearchIndexProvider() {
                 @Override
                 public List<SearchIndexableResource> getXmlResourcesToIndex(
                         Context context, boolean enabled) {
-                    SearchIndexableResource sir = new SearchIndexableResource(context);
-                    sir.xmlResId = R.xml.advanced_apps;
+                    final SearchIndexableResource sir = new SearchIndexableResource(context);
+                    sir.xmlResId = FeatureFactory.getFactory(context)
+                            .getDashboardFeatureProvider(context).isEnabled()
+                            ? R.xml.app_default_settings
+                            : R.xml.advanced_apps;
                     return Arrays.asList(sir);
                 }
 
diff --git a/src/com/android/settings/applications/AppAndNotificationDashboardFragment.java b/src/com/android/settings/applications/AppAndNotificationDashboardFragment.java
new file mode 100644
index 0000000..8630541
--- /dev/null
+++ b/src/com/android/settings/applications/AppAndNotificationDashboardFragment.java
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.applications;
+
+import android.content.Context;
+
+import com.android.settings.R;
+import com.android.settings.core.PreferenceController;
+import com.android.settings.dashboard.DashboardFragment;
+import com.android.settingslib.drawer.CategoryKey;
+
+import java.util.List;
+
+public class AppAndNotificationDashboardFragment extends DashboardFragment {
+
+    private static final String TAG = "AppAndNotifDashboard";
+
+    @Override
+    public int getMetricsCategory() {
+        return APP_AND_NOTIFICATION_CATEGORY_FRAGMENT;
+    }
+
+    @Override
+    protected String getCategoryKey() {
+        return CategoryKey.CATEGORY_APPS;
+    }
+
+    @Override
+    protected String getLogTag() {
+        return TAG;
+    }
+
+    @Override
+    protected int getPreferenceScreenResId() {
+        return R.xml.app_and_notification;
+    }
+
+    @Override
+    protected List<PreferenceController> getPreferenceControllers(Context context) {
+        return null;
+    }
+}
diff --git a/src/com/android/settings/applications/ManageApplications.java b/src/com/android/settings/applications/ManageApplications.java
index f868c1b..2329d12 100644
--- a/src/com/android/settings/applications/ManageApplications.java
+++ b/src/com/android/settings/applications/ManageApplications.java
@@ -245,7 +245,8 @@
         }
         if (className.equals(AllApplicationsActivity.class.getName())) {
             mShowSystem = true;
-        } else if (className.equals(NotificationAppListActivity.class.getName())) {
+        } else if (className.equals(NotificationAppListActivity.class.getName())
+                || this instanceof NotificationApps) {
             mListType = LIST_TYPE_NOTIFICATION;
             mNotifBackend = new NotificationBackend();
         } else if (className.equals(StorageUseActivity.class.getName())) {
diff --git a/src/com/android/settings/core/InstrumentedFragment.java b/src/com/android/settings/core/InstrumentedFragment.java
index 7297953..ca683e3 100644
--- a/src/com/android/settings/core/InstrumentedFragment.java
+++ b/src/com/android/settings/core/InstrumentedFragment.java
@@ -39,6 +39,7 @@
     protected final int STORAGE_CATEGORY_FRAGMENT = PLACEHOLDER_METRIC + 2;
     protected final int NETWORK_CATEGORY_FRAGMENT = PLACEHOLDER_METRIC + 3;
     protected final int CONNECTED_DEVICE_CATEGORY_FRAGMENT = PLACEHOLDER_METRIC + 4;
+    protected final int APP_AND_NOTIFICATION_CATEGORY_FRAGMENT = PLACEHOLDER_METRIC + 5;
 
     public InstrumentedFragment() {
         // Mixin that logs visibility change for activity.
diff --git a/src/com/android/settings/dashboard/DashboardAdapter.java b/src/com/android/settings/dashboard/DashboardAdapter.java
index f501dfa..baea164 100644
--- a/src/com/android/settings/dashboard/DashboardAdapter.java
+++ b/src/com/android/settings/dashboard/DashboardAdapter.java
@@ -20,6 +20,7 @@
 import android.graphics.drawable.Drawable;
 import android.graphics.drawable.Icon;
 import android.os.Bundle;
+import android.support.v7.util.DiffUtil;
 import android.support.v7.widget.PopupMenu;
 import android.support.v7.widget.RecyclerView;
 import android.text.TextUtils;
@@ -34,7 +35,6 @@
 import android.widget.TextView;
 
 import com.android.internal.logging.MetricsProto.MetricsEvent;
-import com.android.internal.util.ArrayUtils;
 import com.android.settings.R;
 import com.android.settings.SettingsActivity;
 import com.android.settings.core.instrumentation.MetricsFeatureProvider;
@@ -48,82 +48,91 @@
 import java.util.List;
 
 public class DashboardAdapter extends RecyclerView.Adapter<DashboardAdapter.DashboardItemHolder>
-        implements View.OnClickListener, SummaryLoader.SummaryConsumer {
+        implements SummaryLoader.SummaryConsumer {
     public static final String TAG = "DashboardAdapter";
     private static final String STATE_SUGGESTION_LIST = "suggestion_list";
     private static final String STATE_CATEGORY_LIST = "category_list";
-    private static final String STATE_IS_SHOWING_ALL = "is_showing_all";
     private static final String STATE_SUGGESTION_MODE = "suggestion_mode";
-    private static final int NS_SPACER = 0;
-    private static final int NS_SUGGESTION = 1000;
-    private static final int NS_ITEMS = 2000;
-    private static final int NS_CONDITION = 3000;
 
-    private static int SUGGESTION_MODE_DEFAULT = 0;
-    private static int SUGGESTION_MODE_COLLAPSED = 1;
-    private static int SUGGESTION_MODE_EXPANDED = 2;
-
-    private static final int DEFAULT_SUGGESTION_COUNT = 2;
-
-    private final List<Object> mItems = new ArrayList<>();
-    private final List<Integer> mTypes = new ArrayList<>();
-    private final List<Integer> mIds = new ArrayList<>();
     private final IconCache mCache;
-
     private final Context mContext;
     private final MetricsFeatureProvider mMetricsFeatureProvider;
-
-    private List<DashboardCategory> mCategories;
-    private List<Condition> mConditions;
-    private List<Tile> mSuggestions;
-
-    private boolean mIsShowingAll;
-    // Used for counting items;
-    private int mId;
-
-    private int mSuggestionMode = SUGGESTION_MODE_DEFAULT;
-
-    private Condition mExpandedCondition = null;
+    private DashboardData mDashboardData;
     private SuggestionParser mSuggestionParser;
 
+    private View.OnClickListener mTileClickListener = new View.OnClickListener() {
+        @Override
+        public void onClick(View v) {
+            //TODO: get rid of setTag/getTag
+            ((SettingsActivity) mContext).openTile((Tile) v.getTag());
+        }
+    };
+
+    private View.OnClickListener mConditionClickListener = new View.OnClickListener() {
+
+        @Override
+        public void onClick(View v) {
+            Condition expandedCondition = mDashboardData.getExpandedCondition();
+
+            //TODO: get rid of setTag/getTag
+            if (v.getTag() == expandedCondition) {
+                mMetricsFeatureProvider.action(mContext,
+                        MetricsEvent.ACTION_SETTINGS_CONDITION_CLICK,
+                        expandedCondition.getMetricsConstant());
+                expandedCondition.onPrimaryClick();
+            } else {
+                expandedCondition = (Condition) v.getTag();
+                mMetricsFeatureProvider.action(mContext,
+                        MetricsEvent.ACTION_SETTINGS_CONDITION_EXPAND,
+                        expandedCondition.getMetricsConstant());
+
+                updateExpandedCondition(expandedCondition);
+            }
+        }
+    };
+
     public DashboardAdapter(Context context, SuggestionParser parser,
             MetricsFeatureProvider metricsFeatureProvider, Bundle savedInstanceState,
             List<Condition> conditions) {
+        List<Tile> suggestions = null;
+        List<DashboardCategory> categories = null;
+        int suggestionMode = DashboardData.SUGGESTION_MODE_DEFAULT;
+
         mContext = context;
         mMetricsFeatureProvider = metricsFeatureProvider;
         mCache = new IconCache(context);
         mSuggestionParser = parser;
-        mConditions = conditions;
 
         setHasStableIds(true);
 
-        boolean showAll = true;
         if (savedInstanceState != null) {
-            mSuggestions = savedInstanceState.getParcelableArrayList(STATE_SUGGESTION_LIST);
-            mCategories = savedInstanceState.getParcelableArrayList(STATE_CATEGORY_LIST);
-            showAll = savedInstanceState.getBoolean(STATE_IS_SHOWING_ALL, true);
-            mSuggestionMode = savedInstanceState.getInt(
-                    STATE_SUGGESTION_MODE, SUGGESTION_MODE_DEFAULT);
+            suggestions = savedInstanceState.getParcelableArrayList(STATE_SUGGESTION_LIST);
+            categories = savedInstanceState.getParcelableArrayList(STATE_CATEGORY_LIST);
+            suggestionMode = savedInstanceState.getInt(
+                    STATE_SUGGESTION_MODE, DashboardData.SUGGESTION_MODE_DEFAULT);
         }
-        setShowingAll(showAll);
+
+        mDashboardData = new DashboardData.Builder()
+                .setConditions(conditions)
+                .setSuggestions(suggestions)
+                .setCategories(categories)
+                .setSuggestionMode(suggestionMode)
+                .build();
     }
 
     public List<Tile> getSuggestions() {
-        return mSuggestions;
+        return mDashboardData.getSuggestions();
     }
 
     public void setCategoriesAndSuggestions(List<DashboardCategory> categories,
             List<Tile> suggestions) {
-        mSuggestions = suggestions;
-        mCategories = categories;
-
         // TODO: Better place for tinting?
         TypedValue tintColor = new TypedValue();
         mContext.getTheme().resolveAttribute(com.android.internal.R.attr.colorAccent,
                 tintColor, true);
         for (int i = 0; i < categories.size(); i++) {
             for (int j = 0; j < categories.get(i).tiles.size(); j++) {
-                Tile tile = categories.get(i).tiles.get(j);
+                final Tile tile = categories.get(i).tiles.get(j);
 
                 if (!mContext.getPackageName().equals(
                         tile.intent.getComponent().getPackageName())) {
@@ -133,85 +142,49 @@
                 }
             }
         }
-        recountItems();
+
+        final DashboardData prevData = mDashboardData;
+        mDashboardData = new DashboardData.Builder(prevData)
+                .setSuggestions(suggestions)
+                .setCategories(categories)
+                .build();
+        notifyDashboardDataChanged(prevData);
     }
 
     public void setConditions(List<Condition> conditions) {
-        mConditions = conditions;
-        recountItems();
+        final DashboardData prevData = mDashboardData;
+        mDashboardData = new DashboardData.Builder(prevData)
+                .setConditions(conditions)
+                .build();
+        notifyDashboardDataChanged(prevData);
     }
 
     @Override
     public void notifySummaryChanged(Tile tile) {
-        notifyDataSetChanged();
-    }
+        final int position = mDashboardData.getPositionByTile(tile);
+        if (position != DashboardData.POSITION_NOT_FOUND) {
+            final Tile targetTile = (Tile) mDashboardData.getItemEntityByPosition(position);
+            if (!TextUtils.equals(tile.summary, targetTile.summary)) {
 
-    public void setShowingAll(boolean showingAll) {
-        mIsShowingAll = showingAll;
-        recountItems();
-    }
-
-    private void recountItems() {
-        reset();
-        boolean hasConditions = false;
-        for (int i = 0; mConditions != null && i < mConditions.size(); i++) {
-            boolean shouldShow = mConditions.get(i).shouldShow();
-            hasConditions |= shouldShow;
-            countItem(mConditions.get(i), R.layout.condition_card, shouldShow, NS_CONDITION);
-        }
-        boolean hasSuggestions = mSuggestions != null && mSuggestions.size() != 0;
-        countItem(null, R.layout.dashboard_spacer, hasConditions && hasSuggestions, NS_SPACER);
-        countItem(null, R.layout.suggestion_header, hasSuggestions, NS_SPACER);
-        resetCount();
-        if (mSuggestions != null) {
-            int maxSuggestions = getDisplayableSuggestionCount();
-            for (int i = 0; i < mSuggestions.size(); i++) {
-                countItem(mSuggestions.get(i), R.layout.suggestion_tile, i < maxSuggestions,
-                        NS_SUGGESTION);
+                // Since usually tile in parameter and tile in mCategories are same instance,
+                // which is hard to be detected by DiffUtil, so we notifyItemChanged directly.
+                notifyItemChanged(position);
             }
         }
-        resetCount();
-        for (int i = 0; mCategories != null && i < mCategories.size(); i++) {
-            DashboardCategory category = mCategories.get(i);
-            countItem(category, R.layout.dashboard_category, mIsShowingAll
-                    && !TextUtils.isEmpty(category.title), NS_ITEMS);
-            for (int j = 0; j < category.tiles.size(); j++) {
-                Tile tile = category.tiles.get(j);
-                countItem(tile, R.layout.dashboard_tile, mIsShowingAll
-                        || ArrayUtils.contains(DashboardSummary.INITIAL_ITEMS,
-                        tile.intent.getComponent().getClassName()), NS_ITEMS);
-            }
+    }
+
+    // TODO: move this method to SuggestionParser or some other util class
+    public void disableSuggestion(Tile suggestion) {
+        if (mSuggestionParser == null) {
+            return;
         }
-        notifyDataSetChanged();
-    }
-
-    private void resetCount() {
-        mId = 0;
-    }
-
-    private void reset() {
-        mItems.clear();
-        mTypes.clear();
-        mIds.clear();
-        mId = 0;
-    }
-
-    private void countItem(Object object, int type, boolean add, int nameSpace) {
-        if (add) {
-            mItems.add(object);
-            mTypes.add(type);
-            // TODO: Counting namespaces for handling of suggestions/conds appearing/disappearing.
-            mIds.add(mId + nameSpace);
+        if (mSuggestionParser.dismissSuggestion(suggestion)) {
+            mContext.getPackageManager().setComponentEnabledSetting(
+                    suggestion.intent.getComponent(),
+                    PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
+                    PackageManager.DONT_KILL_APP);
+            mSuggestionParser.markCategoryDone(suggestion.category);
         }
-        mId++;
-    }
-
-    private int getDisplayableSuggestionCount() {
-        final int suggestionSize = mSuggestions.size();
-        return mSuggestionMode == SUGGESTION_MODE_DEFAULT
-                ? Math.min(DEFAULT_SUGGESTION_COUNT, suggestionSize)
-                : mSuggestionMode == SUGGESTION_MODE_EXPANDED
-                        ? suggestionSize : 0;
     }
 
     @Override
@@ -222,21 +195,24 @@
 
     @Override
     public void onBindViewHolder(DashboardItemHolder holder, int position) {
-        switch (mTypes.get(position)) {
+        final int type = mDashboardData.getItemTypeByPosition(position);
+        switch (type) {
             case R.layout.dashboard_category:
-                onBindCategory(holder, (DashboardCategory) mItems.get(position));
+                onBindCategory(holder,
+                        (DashboardCategory) mDashboardData.getItemEntityByPosition(position));
                 break;
             case R.layout.dashboard_tile:
-                final Tile tile = (Tile) mItems.get(position);
+                final Tile tile = (Tile) mDashboardData.getItemEntityByPosition(position);
                 onBindTile(holder, tile);
                 holder.itemView.setTag(tile);
-                holder.itemView.setOnClickListener(this);
+                holder.itemView.setOnClickListener(mTileClickListener);
                 break;
             case R.layout.suggestion_header:
-                onBindSuggestionHeader(holder);
+                onBindSuggestionHeader(holder, (DashboardData.SuggestionHeaderData)
+                        mDashboardData.getItemEntityByPosition(position));
                 break;
             case R.layout.suggestion_tile:
-                final Tile suggestion = (Tile) mItems.get(position);
+                final Tile suggestion = (Tile) mDashboardData.getItemEntityByPosition(position);
                 onBindTile(holder, suggestion);
                 holder.itemView.setOnClickListener(new View.OnClickListener() {
                     @Override
@@ -255,12 +231,12 @@
                             }
                         });
                 break;
-            case R.layout.see_all:
-                onBindSeeAll(holder);
-                break;
             case R.layout.condition_card:
-                ConditionAdapterUtils.bindViews((Condition) mItems.get(position), holder,
-                        mItems.get(position) == mExpandedCondition, this,
+                final boolean isExpanded = mDashboardData.getItemEntityByPosition(position)
+                        == mDashboardData.getExpandedCondition();
+                ConditionAdapterUtils.bindViews(
+                        (Condition) mDashboardData.getItemEntityByPosition(position),
+                        holder, isExpanded, mConditionClickListener,
                         new View.OnClickListener() {
                             @Override
                             public void onClick(View v) {
@@ -271,45 +247,103 @@
         }
     }
 
+    @Override
+    public long getItemId(int position) {
+        return mDashboardData.getItemIdByPosition(position);
+    }
+
+    @Override
+    public int getItemViewType(int position) {
+        return mDashboardData.getItemTypeByPosition(position);
+    }
+
+    @Override
+    public int getItemCount() {
+        return mDashboardData.size();
+    }
+
+    public void onExpandClick(View v) {
+        Condition expandedCondition = mDashboardData.getExpandedCondition();
+        if (v.getTag() == expandedCondition) {
+            mMetricsFeatureProvider.action(mContext,
+                    MetricsEvent.ACTION_SETTINGS_CONDITION_COLLAPSE,
+                    expandedCondition.getMetricsConstant());
+            expandedCondition = null;
+        } else {
+            expandedCondition = (Condition) v.getTag();
+            mMetricsFeatureProvider.action(mContext, MetricsEvent.ACTION_SETTINGS_CONDITION_EXPAND,
+                    expandedCondition.getMetricsConstant());
+        }
+
+        updateExpandedCondition(expandedCondition);
+    }
+
+    public Object getItem(long itemId) {
+        return mDashboardData.getItemEntityById(itemId);
+    }
+
+    public static String getSuggestionIdentifier(Context context, Tile suggestion) {
+        String packageName = suggestion.intent.getComponent().getPackageName();
+        if (packageName.equals(context.getPackageName())) {
+            // Since Settings provides several suggestions, fill in the class instead of the
+            // package for these.
+            packageName = suggestion.intent.getComponent().getClassName();
+        }
+        return packageName;
+    }
+
+    private void notifyDashboardDataChanged(DashboardData prevData) {
+        if (prevData != null) {
+            final DiffUtil.DiffResult diffResult = DiffUtil.calculateDiff(new DashboardData
+                    .ItemsDataDiffCallback(prevData.getItemList(), mDashboardData.getItemList()));
+            diffResult.dispatchUpdatesTo(this);
+        } else {
+            notifyDataSetChanged();
+        }
+    }
+
+    private void updateExpandedCondition(Condition condition) {
+        final DashboardData prevData = mDashboardData;
+        mDashboardData = new DashboardData.Builder(prevData)
+                .setExpandedCondition(condition)
+                .build();
+        notifyDashboardDataChanged(prevData);
+    }
+
     private void showRemoveOption(View v, final Tile suggestion) {
-        PopupMenu popup = new PopupMenu(
+        final PopupMenu popup = new PopupMenu(
                 new ContextThemeWrapper(mContext, R.style.Theme_AppCompat_DayNight), v);
         popup.getMenu().add(R.string.suggestion_remove).setOnMenuItemClickListener(
                 new MenuItem.OnMenuItemClickListener() {
-            @Override
-            public boolean onMenuItemClick(MenuItem item) {
-                mMetricsFeatureProvider.action(
-                        mContext, MetricsEvent.ACTION_SETTINGS_DISMISS_SUGGESTION,
-                        DashboardAdapter.getSuggestionIdentifier(mContext, suggestion));
-                disableSuggestion(suggestion);
-                mSuggestions.remove(suggestion);
-                recountItems();
-                return true;
-            }
-        });
+                    @Override
+                    public boolean onMenuItemClick(MenuItem item) {
+                        mMetricsFeatureProvider.action(
+                                mContext, MetricsEvent.ACTION_SETTINGS_DISMISS_SUGGESTION,
+                                DashboardAdapter.getSuggestionIdentifier(mContext, suggestion));
+                        disableSuggestion(suggestion);
+                        List<Tile> suggestions = mDashboardData.getSuggestions();
+                        suggestions.remove(suggestion);
+
+                        DashboardData prevData = mDashboardData;
+                        mDashboardData = new DashboardData.Builder(prevData)
+                                .setSuggestions(suggestions)
+                                .build();
+                        notifyDashboardDataChanged(prevData);
+
+                        return true;
+                    }
+                });
         popup.show();
     }
 
-    public void disableSuggestion(Tile suggestion) {
-        if (mSuggestionParser == null) {
-            return;
-        }
-        if (mSuggestionParser.dismissSuggestion(suggestion)) {
-            mContext.getPackageManager().setComponentEnabledSetting(
-                    suggestion.intent.getComponent(),
-                    PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
-                    PackageManager.DONT_KILL_APP);
-            mSuggestionParser.markCategoryDone(suggestion.category);
-        }
-    }
+    private void onBindSuggestionHeader(final DashboardItemHolder holder, DashboardData
+            .SuggestionHeaderData data) {
+        final boolean moreSuggestions = data.hasMoreSuggestions;
+        final int undisplayedSuggestionCount = data.undisplayedSuggestionCount;
 
-    private void onBindSuggestionHeader(final DashboardItemHolder holder) {
-        final boolean moreSuggestions = hasMoreSuggestions();
-        final int undisplayedSuggestionCount =
-                mSuggestions.size() - getDisplayableSuggestionCount();
         holder.icon.setImageResource(moreSuggestions ? R.drawable.ic_expand_more
                 : R.drawable.ic_expand_less);
-        holder.title.setText(mContext.getString(R.string.suggestions_title, mSuggestions.size()));
+        holder.title.setText(mContext.getString(R.string.suggestions_title, data.suggestionSize));
         String summaryContentDescription;
         if (moreSuggestions) {
             summaryContentDescription = mContext.getResources().getQuantityString(
@@ -329,22 +363,22 @@
         holder.itemView.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
-                if (hasMoreSuggestions()) {
-                    mSuggestionMode = SUGGESTION_MODE_EXPANDED;
+                final int suggestionMode;
+                if (moreSuggestions) {
+                    suggestionMode = DashboardData.SUGGESTION_MODE_EXPANDED;
                 } else {
-                    mSuggestionMode = SUGGESTION_MODE_COLLAPSED;
+                    suggestionMode = DashboardData.SUGGESTION_MODE_COLLAPSED;
                 }
-                recountItems();
+
+                DashboardData prevData = mDashboardData;
+                mDashboardData = new DashboardData.Builder(prevData)
+                        .setSuggestionMode(suggestionMode)
+                        .build();
+                notifyDashboardDataChanged(prevData);
             }
         });
     }
 
-    private boolean hasMoreSuggestions() {
-        return mSuggestionMode == SUGGESTION_MODE_COLLAPSED
-                || (mSuggestionMode == SUGGESTION_MODE_DEFAULT
-                && mSuggestions.size() > DEFAULT_SUGGESTION_COUNT);
-    }
-
     private void onBindTile(DashboardItemHolder holder, Tile tile) {
         holder.icon.setImageDrawable(mCache.getIcon(tile.icon));
         holder.title.setText(tile.title);
@@ -360,98 +394,21 @@
         holder.title.setText(category.title);
     }
 
-    private void onBindSeeAll(DashboardItemHolder holder) {
-        holder.title.setText(mIsShowingAll ? R.string.see_less
-                : R.string.see_all);
-        holder.itemView.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                setShowingAll(!mIsShowingAll);
-            }
-        });
-    }
-
-    @Override
-    public long getItemId(int position) {
-        return mIds.get(position);
-    }
-
-    @Override
-    public int getItemViewType(int position) {
-        return mTypes.get(position);
-    }
-
-    @Override
-    public int getItemCount() {
-        return mIds.size();
-    }
-
-    @Override
-    public void onClick(View v) {
-        if (v.getId() == R.id.dashboard_tile) {
-            ((SettingsActivity) mContext).openTile((Tile) v.getTag());
-            return;
-        }
-        if (v.getTag() == mExpandedCondition) {
-            mMetricsFeatureProvider.action(mContext, MetricsEvent.ACTION_SETTINGS_CONDITION_CLICK,
-                    mExpandedCondition.getMetricsConstant());
-            mExpandedCondition.onPrimaryClick();
-        } else {
-            mExpandedCondition = (Condition) v.getTag();
-            mMetricsFeatureProvider.action(mContext, MetricsEvent.ACTION_SETTINGS_CONDITION_EXPAND,
-                    mExpandedCondition.getMetricsConstant());
-            notifyDataSetChanged();
-        }
-    }
-
-    public void onExpandClick(View v) {
-        if (v.getTag() == mExpandedCondition) {
-            mMetricsFeatureProvider.action(mContext,
-                    MetricsEvent.ACTION_SETTINGS_CONDITION_COLLAPSE,
-                    mExpandedCondition.getMetricsConstant());
-            mExpandedCondition = null;
-        } else {
-            mExpandedCondition = (Condition) v.getTag();
-            mMetricsFeatureProvider.action(mContext, MetricsEvent.ACTION_SETTINGS_CONDITION_EXPAND,
-                    mExpandedCondition.getMetricsConstant());
-        }
-        notifyDataSetChanged();
-    }
-
-    public Object getItem(long itemId) {
-        for (int i = 0; i < mIds.size(); i++) {
-            if (mIds.get(i) == itemId) {
-                return mItems.get(i);
-            }
-        }
-        return null;
-    }
-
-    public static String getSuggestionIdentifier(Context context, Tile suggestion) {
-        String packageName = suggestion.intent.getComponent().getPackageName();
-        if (packageName.equals(context.getPackageName())) {
-            // Since Settings provides several suggestions, fill in the class instead of the
-            // package for these.
-            packageName = suggestion.intent.getComponent().getClassName();
-        }
-        return packageName;
-    }
-
     void onSaveInstanceState(Bundle outState) {
-        if (mSuggestions != null) {
+        final List<Tile> suggestions = mDashboardData.getSuggestions();
+        final List<DashboardCategory> categories = mDashboardData.getCategories();
+        if (suggestions != null) {
             outState.putParcelableArrayList(STATE_SUGGESTION_LIST,
-                    new ArrayList<Tile>(mSuggestions));
+                    new ArrayList<Tile>(suggestions));
         }
-        if (mCategories != null) {
+        if (categories != null) {
             outState.putParcelableArrayList(STATE_CATEGORY_LIST,
-                    new ArrayList<DashboardCategory>(mCategories));
+                    new ArrayList<DashboardCategory>(categories));
         }
-        outState.putBoolean(STATE_IS_SHOWING_ALL, mIsShowingAll);
-        outState.putInt(STATE_SUGGESTION_MODE, mSuggestionMode);
+        outState.putInt(STATE_SUGGESTION_MODE, mDashboardData.getSuggestionMode());
     }
 
     private static class IconCache {
-
         private final Context mContext;
         private final ArrayMap<Icon, Drawable> mMap = new ArrayMap<>();
 
diff --git a/src/com/android/settings/dashboard/DashboardData.java b/src/com/android/settings/dashboard/DashboardData.java
new file mode 100644
index 0000000..0fc994b
--- /dev/null
+++ b/src/com/android/settings/dashboard/DashboardData.java
@@ -0,0 +1,488 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.settings.dashboard;
+
+import android.annotation.IntDef;
+import android.support.v7.util.DiffUtil;
+import android.text.TextUtils;
+import com.android.settings.dashboard.conditional.Condition;
+import com.android.settingslib.drawer.DashboardCategory;
+import com.android.settingslib.drawer.Tile;
+import com.android.settings.R;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Description about data list used in the DashboardAdapter. In the data list each item can be
+ * Condition, suggestion or category tile.
+ * <p>
+ * ItemsData has inner class Item, which represents the Item in data list.
+ */
+public class DashboardData {
+    public static final int SUGGESTION_MODE_DEFAULT = 0;
+    public static final int SUGGESTION_MODE_COLLAPSED = 1;
+    public static final int SUGGESTION_MODE_EXPANDED = 2;
+    public static final int POSITION_NOT_FOUND = -1;
+    public static final int DEFAULT_SUGGESTION_COUNT = 2;
+
+    // id namespace for different type of items.
+    private static final int NS_SPACER = 0;
+    private static final int NS_SUGGESTION = 1000;
+    private static final int NS_ITEMS = 2000;
+    private static final int NS_CONDITION = 3000;
+
+    private final List<Item> mItems;
+    private final List<DashboardCategory> mCategories;
+    private final List<Condition> mConditions;
+    private final List<Tile> mSuggestions;
+    private final int mSuggestionMode;
+    private final Condition mExpandedCondition;
+    private int mId;
+
+    private DashboardData(Builder builder) {
+        mCategories = builder.mCategories;
+        mConditions = builder.mConditions;
+        mSuggestions = builder.mSuggestions;
+        mSuggestionMode = builder.mSuggestionMode;
+        mExpandedCondition = builder.mExpandedCondition;
+
+        mItems = new ArrayList<>();
+        mId = 0;
+
+        buildItemsData();
+    }
+
+    public int getItemIdByPosition(int position) {
+        return mItems.get(position).id;
+    }
+
+    public int getItemTypeByPosition(int position) {
+        return mItems.get(position).type;
+    }
+
+    public Object getItemEntityByPosition(int position) {
+        return mItems.get(position).entity;
+    }
+
+    public List<Item> getItemList() {
+        return mItems;
+    }
+
+    public int size() {
+        return mItems.size();
+    }
+
+    public Object getItemEntityById(long id) {
+        for (final Item item : mItems) {
+            if (item.id == id) {
+                return item.entity;
+            }
+        }
+        return null;
+    }
+
+    public List<DashboardCategory> getCategories() {
+        return mCategories;
+    }
+
+    public List<Condition> getConditions() {
+        return mConditions;
+    }
+
+    public List<Tile> getSuggestions() {
+        return mSuggestions;
+    }
+
+    public int getSuggestionMode() {
+        return mSuggestionMode;
+    }
+
+    public Condition getExpandedCondition() {
+        return mExpandedCondition;
+    }
+
+    /**
+     * Find the position of the object in mItems list, using the equals method to compare
+     *
+     * @param entity the object that need to be found in list
+     * @return position of the object, return POSITION_NOT_FOUND if object isn't in the list
+     */
+    public int getPositionByEntity(Object entity) {
+        if (entity == null) return POSITION_NOT_FOUND;
+
+        final int size = mItems.size();
+        for (int i = 0; i < size; i++) {
+            final Object item = mItems.get(i).entity;
+            if (entity.equals(item)) {
+                return i;
+            }
+        }
+
+        return POSITION_NOT_FOUND;
+    }
+
+    /**
+     * Find the position of the Tile object.
+     * <p>
+     * First, try to find the exact identical instance of the tile object, if not found,
+     * then try to find a tile has the same title.
+     *
+     * @param tile tile that need to be found
+     * @return position of the object, return INDEX_NOT_FOUND if object isn't in the list
+     */
+    public int getPositionByTile(Tile tile) {
+        final int size = mItems.size();
+        for (int i = 0; i < size; i++) {
+            final Object entity = mItems.get(i).entity;
+            if (entity == tile) {
+                return i;
+            } else if (entity instanceof Tile && tile.title.equals(((Tile) entity).title)) {
+                return i;
+            }
+        }
+
+        return POSITION_NOT_FOUND;
+    }
+
+    /**
+     * Get the count of suggestions to display
+     *
+     * The displayable count mainly depends on the {@link #mSuggestionMode}
+     * and the size of suggestions list.
+     *
+     * When in default mode, displayable count couldn't larger than
+     * {@link #DEFAULT_SUGGESTION_COUNT}.
+     *
+     * When in expanded mode, display all the suggestions.
+     * @return the count of suggestions to display
+     */
+    public int getDisplayableSuggestionCount() {
+        final int suggestionSize = mSuggestions.size();
+        return mSuggestionMode == SUGGESTION_MODE_DEFAULT
+                ? Math.min(DEFAULT_SUGGESTION_COUNT, suggestionSize)
+                : mSuggestionMode == SUGGESTION_MODE_EXPANDED
+                ? suggestionSize : 0;
+    }
+
+    public boolean hasMoreSuggestions() {
+        return mSuggestionMode == SUGGESTION_MODE_COLLAPSED
+                || (mSuggestionMode == SUGGESTION_MODE_DEFAULT
+                && mSuggestions.size() > DEFAULT_SUGGESTION_COUNT);
+    }
+
+    private void resetCount() {
+        mId = 0;
+    }
+
+    /**
+     * Count the item and add it into list when {@paramref add} is true.
+     *
+     * Note that {@link #mId} will increment automatically and the real
+     * id stored in {@link Item} is shifted by {@paramref nameSpace}. This is a
+     * simple way to keep the id stable.
+     *
+     * @param object maybe {@link Condition}, {@link Tile}, {@link DashboardCategory} or null
+     * @param type type of the item, and value is the layout id
+     * @param add  flag about whether to add item into list
+     * @param nameSpace namespace based on the type
+     */
+    private void countItem(Object object, int type, boolean add, int nameSpace) {
+        if (add) {
+            mItems.add(new Item(object, type, mId + nameSpace, object == mExpandedCondition));
+        }
+        mId++;
+    }
+
+    /**
+     * Build the mItems list using mConditions, mSuggestions, mCategories data
+     * and mIsShowingAll, mSuggestionMode flag.
+     */
+    private void buildItemsData() {
+        boolean hasConditions = false;
+        for (int i = 0; mConditions != null && i < mConditions.size(); i++) {
+            boolean shouldShow = mConditions.get(i).shouldShow();
+            hasConditions |= shouldShow;
+            countItem(mConditions.get(i), R.layout.condition_card, shouldShow, NS_CONDITION);
+        }
+
+        resetCount();
+        final boolean hasSuggestions = mSuggestions != null && mSuggestions.size() != 0;
+        countItem(null, R.layout.dashboard_spacer, hasConditions && hasSuggestions, NS_SPACER);
+        countItem(buildSuggestionHeaderData(), R.layout.suggestion_header, hasSuggestions,
+                NS_SPACER);
+
+        resetCount();
+        if (mSuggestions != null) {
+            int maxSuggestions = getDisplayableSuggestionCount();
+            for (int i = 0; i < mSuggestions.size(); i++) {
+                countItem(mSuggestions.get(i), R.layout.suggestion_tile, i < maxSuggestions,
+                        NS_SUGGESTION);
+            }
+        }
+        resetCount();
+        for (int i = 0; mCategories != null && i < mCategories.size(); i++) {
+            DashboardCategory category = mCategories.get(i);
+            countItem(category, R.layout.dashboard_category,
+                    !TextUtils.isEmpty(category.title), NS_ITEMS);
+            for (int j = 0; j < category.tiles.size(); j++) {
+                Tile tile = category.tiles.get(j);
+                countItem(tile, R.layout.dashboard_tile, true, NS_ITEMS);
+            }
+        }
+    }
+
+    private SuggestionHeaderData buildSuggestionHeaderData() {
+        SuggestionHeaderData data;
+        if (mSuggestions == null) {
+            data = new SuggestionHeaderData();
+        } else {
+            final boolean hasMoreSuggestions = hasMoreSuggestions();
+            final int suggestionSize = mSuggestions.size();
+            final int undisplayedSuggestionCount = suggestionSize - getDisplayableSuggestionCount();
+            data = new SuggestionHeaderData(hasMoreSuggestions, suggestionSize,
+                    undisplayedSuggestionCount);
+        }
+
+        return data;
+    }
+
+    /**
+     * Builder used to build the ItemsData
+     * <p>
+     * {@link #mExpandedCondition} and {@link #mSuggestionMode} have default value
+     * while others are not.
+     */
+    public static class Builder {
+        private int mSuggestionMode = SUGGESTION_MODE_DEFAULT;
+        private Condition mExpandedCondition = null;
+
+        private List<DashboardCategory> mCategories;
+        private List<Condition> mConditions;
+        private List<Tile> mSuggestions;
+
+
+        public Builder() {
+        }
+
+        public Builder(DashboardData dashboardData) {
+            mCategories = dashboardData.mCategories;
+            mConditions = dashboardData.mConditions;
+            mSuggestions = dashboardData.mSuggestions;
+            mSuggestionMode = dashboardData.mSuggestionMode;
+            mExpandedCondition = dashboardData.mExpandedCondition;
+        }
+
+        public Builder setCategories(List<DashboardCategory> categories) {
+            this.mCategories = categories;
+            return this;
+        }
+
+        public Builder setConditions(List<Condition> conditions) {
+            this.mConditions = conditions;
+            return this;
+        }
+
+        public Builder setSuggestions(List<Tile> suggestions) {
+            this.mSuggestions = suggestions;
+            return this;
+        }
+
+        public Builder setSuggestionMode(int suggestionMode) {
+            this.mSuggestionMode = suggestionMode;
+            return this;
+        }
+
+        public Builder setExpandedCondition(Condition expandedCondition) {
+            this.mExpandedCondition = expandedCondition;
+            return this;
+        }
+
+        public DashboardData build() {
+            return new DashboardData(this);
+        }
+    }
+
+    /**
+     * A DiffCallback to calculate the difference between old and new Item
+     * List in DashboardData
+     */
+    public static class ItemsDataDiffCallback extends DiffUtil.Callback {
+        final private List<Item> mOldItems;
+        final private List<Item> mNewItems;
+
+        public ItemsDataDiffCallback(List<Item> oldItems, List<Item> newItems) {
+            mOldItems = oldItems;
+            mNewItems = newItems;
+        }
+
+        @Override
+        public int getOldListSize() {
+            return mOldItems.size();
+        }
+
+        @Override
+        public int getNewListSize() {
+            return mNewItems.size();
+        }
+
+        @Override
+        public boolean areItemsTheSame(int oldItemPosition, int newItemPosition) {
+            return mOldItems.get(oldItemPosition).id == mNewItems.get(newItemPosition).id;
+        }
+
+        @Override
+        public boolean areContentsTheSame(int oldItemPosition, int newItemPosition) {
+            return mOldItems.get(oldItemPosition).equals(mNewItems.get(newItemPosition));
+        }
+    }
+
+    /**
+     * An item contains the data needed in the DashboardData.
+     */
+    private static class Item {
+        // valid types in field type
+        private static final int TYPE_DASHBOARD_CATEGORY = R.layout.dashboard_category;
+        private static final int TYPE_DASHBOARD_TILE = R.layout.dashboard_tile;
+        private static final int TYPE_SUGGESTION_HEADER = R.layout.suggestion_header;
+        private static final int TYPE_SUGGESTION_TILE = R.layout.suggestion_tile;
+        private static final int TYPE_CONDITION_CARD = R.layout.condition_card;
+        private static final int TYPE_DASHBOARD_SPACER = R.layout.dashboard_spacer;
+
+        @IntDef({TYPE_DASHBOARD_CATEGORY, TYPE_DASHBOARD_TILE, TYPE_SUGGESTION_HEADER,
+                TYPE_SUGGESTION_TILE, TYPE_CONDITION_CARD, TYPE_DASHBOARD_SPACER})
+        @Retention(RetentionPolicy.SOURCE)
+        public @interface ItemTypes{}
+
+        /**
+         * The main data object in item, usually is a {@link Tile}, {@link Condition} or
+         * {@link DashboardCategory} object. This object can also be null when the
+         * item is an divider line. Please refer to {@link #buildItemsData()} for
+         * detail usage of the Item.
+         */
+        public final Object entity;
+
+        /**
+         * The type of item, value inside is the layout id(e.g. R.layout.dashboard_tile)
+         */
+        public final @ItemTypes int type;
+
+        /**
+         * Id of this item, used in the {@link ItemsDataDiffCallback} to identify the same item.
+         */
+        public final int id;
+
+        /**
+         * To store whether the condition is expanded, useless when {@link #type} is not
+         * {@link #TYPE_CONDITION_CARD}
+         */
+        public final boolean conditionExpanded;
+
+        public Item(Object entity, @ItemTypes int type, int id, boolean conditionExpanded) {
+            this.entity = entity;
+            this.type = type;
+            this.id = id;
+            this.conditionExpanded = conditionExpanded;
+        }
+
+        /**
+         * Override it to make comparision in the {@link ItemsDataDiffCallback}
+         * @param obj object to compared with
+         * @return true if the same object or has equal value.
+         */
+        @Override
+        public boolean equals(Object obj) {
+            if (this == obj) {
+                return true;
+            }
+
+            if (!(obj instanceof Item)) {
+                return false;
+            }
+
+            final Item targetItem = (Item) obj;
+            if (type != targetItem.type || id != targetItem.id) {
+                return false;
+            }
+
+            switch (type) {
+                case TYPE_DASHBOARD_CATEGORY:
+                    // Only check title for dashboard category
+                    return TextUtils.equals(((DashboardCategory)entity).title,
+                            ((DashboardCategory) targetItem.entity).title);
+                case TYPE_DASHBOARD_TILE:
+                    final Tile localTile = (Tile)entity;
+                    final Tile targetTile = (Tile)targetItem.entity;
+
+                    // Only check title and summary for dashboard tile
+                    return TextUtils.equals(localTile.title, targetTile.title)
+                            && TextUtils.equals(localTile.summary, targetTile.summary);
+                case TYPE_CONDITION_CARD:
+                    // First check conditionExpanded for quick return
+                    if (conditionExpanded != targetItem.conditionExpanded) {
+                        return false;
+                    }
+                    // After that, go to default to do final check
+                default:
+                    return entity == null ? targetItem.entity == null
+                            : entity.equals(targetItem.entity);
+            }
+        }
+    }
+
+    /**
+     * This class contains the data needed to build the header. The data can also be
+     * used to check the diff in DiffUtil.Callback
+     */
+    public static class SuggestionHeaderData {
+        public final boolean hasMoreSuggestions;
+        public final int suggestionSize;
+        public final int undisplayedSuggestionCount;
+
+        public SuggestionHeaderData(boolean moreSuggestions, int suggestionSize, int
+                undisplayedSuggestionCount) {
+            this.hasMoreSuggestions = moreSuggestions;
+            this.suggestionSize = suggestionSize;
+            this.undisplayedSuggestionCount = undisplayedSuggestionCount;
+        }
+
+        public SuggestionHeaderData() {
+            hasMoreSuggestions = false;
+            suggestionSize = 0;
+            undisplayedSuggestionCount = 0;
+        }
+
+        @Override
+        public boolean equals(Object obj) {
+            if (this == obj) {
+                return true;
+            }
+
+            if (!(obj instanceof SuggestionHeaderData)) {
+                return false;
+            }
+
+            SuggestionHeaderData targetData = (SuggestionHeaderData) obj;
+
+            return hasMoreSuggestions == targetData.hasMoreSuggestions
+                    && suggestionSize == targetData.suggestionSize
+                    && undisplayedSuggestionCount == targetData.undisplayedSuggestionCount;
+        }
+    }
+
+}
\ No newline at end of file
diff --git a/src/com/android/settings/dashboard/DashboardFeatureProvider.java b/src/com/android/settings/dashboard/DashboardFeatureProvider.java
index 92154be..0a8dbbf 100644
--- a/src/com/android/settings/dashboard/DashboardFeatureProvider.java
+++ b/src/com/android/settings/dashboard/DashboardFeatureProvider.java
@@ -15,6 +15,7 @@
  */
 package com.android.settings.dashboard;
 
+import android.content.Context;
 import android.support.v7.preference.Preference;
 
 import com.android.settingslib.drawer.DashboardCategory;
@@ -53,4 +54,10 @@
      * Returns an unique string key for the tile.
      */
     String getDashboardKeyForTile(Tile tile);
+
+    /**
+     * Returns a {@link ProgressiveDisclosureMixin} for specified fragment.
+     */
+    ProgressiveDisclosureMixin getProgressiveDisclosureMixin(Context context,
+            DashboardFragment fragment);
 }
diff --git a/src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java b/src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java
index df3f6ef..ed0520a 100644
--- a/src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java
+++ b/src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java
@@ -72,4 +72,10 @@
         sb.append(component.getClassName());
         return sb.toString();
     }
+
+    @Override
+    public ProgressiveDisclosureMixin getProgressiveDisclosureMixin(Context context,
+            DashboardFragment fragment) {
+        return new ProgressiveDisclosureMixin(context, this, fragment);
+    }
 }
diff --git a/src/com/android/settings/dashboard/DashboardFragment.java b/src/com/android/settings/dashboard/DashboardFragment.java
index a730939..fd125af 100644
--- a/src/com/android/settings/dashboard/DashboardFragment.java
+++ b/src/com/android/settings/dashboard/DashboardFragment.java
@@ -22,7 +22,9 @@
 import android.graphics.drawable.ColorDrawable;
 import android.graphics.drawable.Drawable;
 import android.os.Bundle;
+import android.support.annotation.VisibleForTesting;
 import android.support.v7.preference.Preference;
+import android.support.v7.preference.PreferenceManager;
 import android.support.v7.preference.PreferenceScreen;
 import android.text.TextUtils;
 import android.util.ArrayMap;
@@ -41,6 +43,7 @@
 import com.android.settingslib.drawer.SettingsDrawerActivity;
 import com.android.settingslib.drawer.Tile;
 
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
 import java.util.Map;
@@ -69,7 +72,8 @@
         super.onAttach(context);
         mDashboardFeatureProvider =
                 FeatureFactory.getFactory(context).getDashboardFeatureProvider(context);
-        mProgressiveDisclosureMixin = new ProgressiveDisclosureMixin(context, this);
+        mProgressiveDisclosureMixin = mDashboardFeatureProvider
+                .getProgressiveDisclosureMixin(context, this);
         getLifecycle().addObserver(mProgressiveDisclosureMixin);
 
         final List<PreferenceController> controllers = getPreferenceControllers(context);
@@ -82,6 +86,24 @@
     }
 
     @Override
+    public void onCreate(Bundle icicle) {
+        super.onCreate(icicle);
+        // Set ComparisonCallback so we get better animation when list changes.
+        getPreferenceManager().setPreferenceComparisonCallback(
+                new PreferenceManager.SimplePreferenceComparisonCallback());
+    }
+
+    @Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup container,
+            Bundle savedInstanceState) {
+        final View view = super.onCreateView(inflater, container, savedInstanceState);
+        if (mDashboardFeatureProvider.isEnabled()) {
+            getListView().addItemDecoration(mDividerDecoration);
+        }
+        return view;
+    }
+
+    @Override
     public void onCategoriesChanged() {
         final DashboardCategory category =
                 mDashboardFeatureProvider.getTilesForCategory(getCategoryKey());
@@ -99,6 +121,18 @@
     }
 
     @Override
+    public void setDivider(Drawable divider) {
+        if (mDashboardFeatureProvider.isEnabled()) {
+            // Intercept divider and set it transparent so system divider decoration is disabled.
+            // We will use our decoration to draw divider more intelligently.
+            mDividerDecoration.setDivider(divider);
+            super.setDivider(new ColorDrawable(Color.TRANSPARENT));
+        } else {
+            super.setDivider(divider);
+        }
+    }
+
+    @Override
     public void onStart() {
         super.onStart();
         final DashboardCategory category =
@@ -120,7 +154,8 @@
     @Override
     public void notifySummaryChanged(Tile tile) {
         final String key = mDashboardFeatureProvider.getDashboardKeyForTile(tile);
-        final Preference pref = findPreference(key);
+        final Preference pref = mProgressiveDisclosureMixin.findPreference(
+                getPreferenceScreen(), key);
         if (pref == null) {
             Log.d(getLogTag(),
                     String.format("Can't find pref by key %s, skipping update summary %s/%s",
@@ -164,18 +199,6 @@
         }
     }
 
-    @Override
-    public Preference findPreference(CharSequence key) {
-        Preference preference = super.findPreference(key);
-        if (preference == null && mProgressiveDisclosureMixin != null) {
-            preference = mProgressiveDisclosureMixin.findPreference(key);
-        }
-        if (preference == null) {
-            Log.d(TAG, "Cannot find preference with key " + key);
-        }
-        return preference;
-    }
-
     protected <T extends PreferenceController> T getPreferenceController(Class<T> clazz) {
         PreferenceController controller = mPreferenceControllers.get(clazz);
         return (T) controller;
@@ -222,94 +245,15 @@
     }
 
     /**
-     * Displays dashboard tiles as preference.
-     */
-    private final void displayDashboardTiles(final String TAG, PreferenceScreen screen) {
-        final Context context = getContext();
-        final DashboardCategory category =
-                mDashboardFeatureProvider.getTilesForCategory(getCategoryKey());
-        if (category == null) {
-            Log.d(TAG, "NO dynamic tiles for " + TAG);
-            return;
-        }
-        List<Tile> tiles = category.tiles;
-        if (tiles == null) {
-            Log.d(TAG, "tile list is empty, skipping category " + category.title);
-            return;
-        }
-        // There are dashboard tiles, so we need to install SummaryLoader.
-        if (mSummaryLoader != null) {
-            mSummaryLoader.release();
-        }
-        mSummaryLoader = new SummaryLoader(getActivity(), getCategoryKey());
-        mSummaryLoader.setSummaryConsumer(this);
-        // Install dashboard tiles.
-        for (Tile tile : tiles) {
-            final String key = mDashboardFeatureProvider.getDashboardKeyForTile(tile);
-            if (TextUtils.isEmpty(key)) {
-                Log.d(TAG, "tile does not contain a key, skipping " + tile);
-                continue;
-            }
-            mDashboardTilePrefKeys.add(key);
-            final Preference pref = new DashboardTilePreference(context);
-            pref.setTitle(tile.title);
-            pref.setKey(key);
-            pref.setSummary(tile.summary);
-            if (tile.icon != null) {
-                pref.setIcon(tile.icon.loadDrawable(context));
-            }
-            final Bundle metadata = tile.metaData;
-            if (metadata != null) {
-                String clsName = metadata.getString(SettingsActivity.META_DATA_KEY_FRAGMENT_CLASS);
-                if (!TextUtils.isEmpty(clsName)) {
-                    pref.setFragment(clsName);
-                }
-            } else if (tile.intent != null) {
-                final Intent intent = new Intent(tile.intent);
-                pref.setOnPreferenceClickListener(preference -> {
-                    getActivity().startActivityForResult(intent, 0);
-                    return true;
-                });
-            }
-            // Use negated priority for order, because tile priority is based on intent-filter
-            // (larger value has higher priority). However pref order defines smaller value has
-            // higher priority.
-            pref.setOrder(-tile.priority);
-
-            // Either add to screen, or to collapsed list.
-            if (mProgressiveDisclosureMixin.isCollapsed()) {
-                // Already collapsed, add to collapsed list.
-                mProgressiveDisclosureMixin.addToCollapsedList(pref);
-            } else if (mProgressiveDisclosureMixin.shouldCollapse(screen)) {
-                // About to have too many tiles on scree, collapse and add pref to collapsed list.
-                mProgressiveDisclosureMixin.collapse(screen);
-                mProgressiveDisclosureMixin.addToCollapsedList(pref);
-            } else {
-                // No need to collapse, add to screen directly.
-                screen.addPreference(pref);
-            }
-        }
-    }
-
-    @Override
-    public View onCreateView(LayoutInflater inflater, ViewGroup container,
-            Bundle savedInstanceState) {
-        final View view = super.onCreateView(inflater, container, savedInstanceState);
-        if (mDashboardFeatureProvider.isEnabled()) {
-            getListView().addItemDecoration(mDividerDecoration);
-        }
-        return view;
-    }
-
-    /**
      * Update state of each preference managed by PreferenceController.
      */
     private void updatePreferenceStates() {
         Collection<PreferenceController> controllers = mPreferenceControllers.values();
+        final PreferenceScreen screen = getPreferenceScreen();
         for (PreferenceController controller : controllers) {
             final String key = controller.getPreferenceKey();
 
-            final Preference preference = findPreference(key);
+            final Preference preference = mProgressiveDisclosureMixin.findPreference(screen, key);
             if (preference == null) {
                 Log.d(TAG, "Cannot find preference with key " + key);
                 continue;
@@ -318,18 +262,6 @@
         }
     }
 
-    @Override
-    public void setDivider(Drawable divider) {
-        if (mDashboardFeatureProvider.isEnabled()) {
-            // Intercept divider and set it transparent so system divider decoration is disabled.
-            // We will use our decoration to draw divider more intelligently.
-            mDividerDecoration.setDivider(divider);
-            super.setDivider(new ColorDrawable(Color.TRANSPARENT));
-        } else {
-            super.setDivider(divider);
-        }
-    }
-
     /**
      * Refresh all preference items, including both static prefs from xml, and dynamic items from
      * DashboardCategory.
@@ -345,28 +277,89 @@
         displayResourceTiles();
 
         refreshDashboardTiles(TAG);
-
-        if (!mProgressiveDisclosureMixin.isCollapsed()
-                && mProgressiveDisclosureMixin.shouldCollapse(getPreferenceScreen())) {
-            mProgressiveDisclosureMixin.collapse(getPreferenceScreen());
-        }
     }
 
     /**
      * Refresh preference items backed by DashboardCategory.
      */
-    private void refreshDashboardTiles(final String TAG) {
+    @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
+    void refreshDashboardTiles(final String TAG) {
         final PreferenceScreen screen = getPreferenceScreen();
-        for (String key : mDashboardTilePrefKeys) {
-            // Remove tiles from screen
-            final Preference pref = screen.findPreference(key);
-            if (pref != null) {
-                screen.removePreference(pref);
+
+        final Context context = getContext();
+        final DashboardCategory category =
+                mDashboardFeatureProvider.getTilesForCategory(getCategoryKey());
+        if (category == null) {
+            Log.d(TAG, "NO dashboard tiles for " + TAG);
+            return;
+        }
+        List<Tile> tiles = category.tiles;
+        if (tiles == null) {
+            Log.d(TAG, "tile list is empty, skipping category " + category.title);
+            return;
+        }
+        // Create a list to track which tiles are to be removed.
+        final List<String> remove = new ArrayList<>(mDashboardTilePrefKeys);
+
+        // There are dashboard tiles, so we need to install SummaryLoader.
+        if (mSummaryLoader != null) {
+            mSummaryLoader.release();
+        }
+        mSummaryLoader = new SummaryLoader(getActivity(), getCategoryKey());
+        mSummaryLoader.setSummaryConsumer(this);
+        // Install dashboard tiles.
+        for (Tile tile : tiles) {
+            final String key = mDashboardFeatureProvider.getDashboardKeyForTile(tile);
+            if (TextUtils.isEmpty(key)) {
+                Log.d(TAG, "tile does not contain a key, skipping " + tile);
+                continue;
             }
-            // Also remove tile from collapsed set
+            if (mDashboardTilePrefKeys.contains(key)) {
+                // Have the key already, will rebind.
+                final Preference preference = mProgressiveDisclosureMixin.findPreference(
+                        screen, key);
+                bindPreferenceToTile(context, preference, tile, key);
+            } else {
+                // Don't have this key, add it.
+                final Preference pref = new DashboardTilePreference(context);
+                bindPreferenceToTile(context, pref, tile, key);
+                mProgressiveDisclosureMixin.addPreference(screen, pref);
+                mDashboardTilePrefKeys.add(key);
+            }
+            remove.remove(key);
+        }
+        // Finally remove tiles that are gone.
+        for (String key : remove) {
+            mDashboardTilePrefKeys.remove(key);
             mProgressiveDisclosureMixin.removePreference(screen, key);
         }
-        mDashboardTilePrefKeys.clear();
-        displayDashboardTiles(TAG, getPreferenceScreen());
+    }
+
+    @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
+    void bindPreferenceToTile(Context context, Preference pref, Tile tile, String key) {
+        pref.setTitle(tile.title);
+        pref.setKey(key);
+        pref.setSummary(tile.summary);
+        if (tile.icon != null) {
+            pref.setIcon(tile.icon.loadDrawable(context));
+        }
+        final Bundle metadata = tile.metaData;
+        String clsName = null;
+        if (metadata != null) {
+            clsName = metadata.getString(SettingsActivity.META_DATA_KEY_FRAGMENT_CLASS);
+        }
+        if (!TextUtils.isEmpty(clsName)) {
+            pref.setFragment(clsName);
+        } else if (tile.intent != null) {
+            final Intent intent = new Intent(tile.intent);
+            pref.setOnPreferenceClickListener(preference -> {
+                getActivity().startActivityForResult(intent, 0);
+                return true;
+            });
+        }
+        // Use negated priority for order, because tile priority is based on intent-filter
+        // (larger value has higher priority). However pref order defines smaller value has
+        // higher priority.
+        pref.setOrder(-tile.priority);
     }
 }
diff --git a/src/com/android/settings/dashboard/ProgressiveDisclosureMixin.java b/src/com/android/settings/dashboard/ProgressiveDisclosureMixin.java
index 28113ad..75251b3 100644
--- a/src/com/android/settings/dashboard/ProgressiveDisclosureMixin.java
+++ b/src/com/android/settings/dashboard/ProgressiveDisclosureMixin.java
@@ -18,6 +18,7 @@
 
 import android.content.Context;
 import android.os.Bundle;
+import android.support.annotation.VisibleForTesting;
 import android.support.v14.preference.PreferenceFragment;
 import android.support.v7.preference.Preference;
 import android.support.v7.preference.PreferenceScreen;
@@ -27,9 +28,9 @@
 import com.android.settings.core.lifecycle.LifecycleObserver;
 import com.android.settings.core.lifecycle.events.OnCreate;
 import com.android.settings.core.lifecycle.events.OnSaveInstanceState;
-import com.android.settings.overlay.FeatureFactory;
 
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 
 public class ProgressiveDisclosureMixin implements Preference.OnPreferenceClickListener,
@@ -42,18 +43,19 @@
     private int mTileLimit = DEFAULT_TILE_LIMIT;
 
     private final DashboardFeatureProvider mDashboardFeatureProvider;
-    private final List<Preference> collapsedPrefs = new ArrayList<>();
+    // Collapsed preference sorted by order.
+    private final List<Preference> mCollapsedPrefs = new ArrayList<>();
     private final ExpandPreference mExpandButton;
     private final PreferenceFragment mFragment;
 
     private boolean mUserExpanded;
 
-    public ProgressiveDisclosureMixin(Context context, PreferenceFragment fragment) {
+    public ProgressiveDisclosureMixin(Context context,
+            DashboardFeatureProvider dashboardFeatureProvider, PreferenceFragment fragment) {
         mFragment = fragment;
         mExpandButton = new ExpandPreference(context);
         mExpandButton.setOnPreferenceClickListener(this);
-        mDashboardFeatureProvider = FeatureFactory.getFactory(context)
-                .getDashboardFeatureProvider(context);
+        mDashboardFeatureProvider = dashboardFeatureProvider;
     }
 
     @Override
@@ -74,9 +76,10 @@
             final PreferenceScreen screen = mFragment.getPreferenceScreen();
             if (screen != null) {
                 screen.removePreference(preference);
-                for (Preference pref : collapsedPrefs) {
+                for (Preference pref : mCollapsedPrefs) {
                     screen.addPreference(pref);
                 }
+                mCollapsedPrefs.clear();
                 mUserExpanded = true;
             }
         }
@@ -94,7 +97,7 @@
      * Whether the controller is in collapsed state.
      */
     public boolean isCollapsed() {
-        return !collapsedPrefs.isEmpty();
+        return !mCollapsedPrefs.isEmpty();
     }
 
     /**
@@ -113,7 +116,7 @@
         if (!shouldCollapse(screen)) {
             return;
         }
-        if (!collapsedPrefs.isEmpty()) {
+        if (!mCollapsedPrefs.isEmpty()) {
             Log.w(TAG, "collapsed list should ALWAYS BE EMPTY before collapsing!");
         }
 
@@ -126,24 +129,56 @@
     }
 
     /**
-     * Add preference to collapsed list.
+     * Adds preference to screen. If there are too many preference on screen, adds it to
+     * collapsed list instead.
      */
-    public void addToCollapsedList(Preference preference) {
-        collapsedPrefs.add(preference);
+    public void addPreference(PreferenceScreen screen, Preference pref) {
+        // Either add to screen, or to collapsed list.
+        if (isCollapsed()) {
+            // insert the preference to right position.
+            final int lastPreferenceIndex = screen.getPreferenceCount() - 2;
+            if (lastPreferenceIndex >= 0) {
+                final Preference lastPreference = screen.getPreference(lastPreferenceIndex);
+                if (lastPreference.getOrder() > pref.getOrder()) {
+                    // insert to screen and move the last pref to collapsed list.
+                    screen.removePreference(lastPreference);
+                    screen.addPreference(pref);
+                    addToCollapsedList(lastPreference);
+                } else {
+                    // Insert to collapsed list.
+                    addToCollapsedList(pref);
+                }
+            } else {
+                // Couldn't find last preference on screen, just add to collapsed list.
+                addToCollapsedList(pref);
+            }
+        } else if (shouldCollapse(screen)) {
+            // About to have too many tiles on scree, collapse and add pref to collapsed list.
+            screen.addPreference(pref);
+            collapse(screen);
+        } else {
+            // No need to collapse, add to screen directly.
+            screen.addPreference(pref);
+        }
     }
 
     /**
-     * Remove preference from collapsed list. If the preference is not in list, do nothing.
+     * Removes preference. If the preference is on screen, remove it from screen. If the
+     * preference is in collapsed list, remove it from list.
      */
     public void removePreference(PreferenceScreen screen, String key) {
-        if (!isCollapsed()) {
+        // Try removing from screen.
+        final Preference preference = screen.findPreference(key);
+        if (preference != null) {
+            screen.removePreference(preference);
             return;
         }
-        for (int i = 0; i < collapsedPrefs.size(); i++) {
-            final Preference pref = collapsedPrefs.get(i);
+        // Didn't find on screen, try removing from collapsed list.
+        for (int i = 0; i < mCollapsedPrefs.size(); i++) {
+            final Preference pref = mCollapsedPrefs.get(i);
             if (TextUtils.equals(key, pref.getKey())) {
-                collapsedPrefs.remove(pref);
-                if (collapsedPrefs.isEmpty()) {
+                mCollapsedPrefs.remove(pref);
+                if (mCollapsedPrefs.isEmpty()) {
                     // Removed last element, remove expand button too.
                     screen.removePreference(mExpandButton);
                 }
@@ -153,16 +188,38 @@
     }
 
     /**
-     * Find whether a preference is in collapsed list.
+     * Finds preference by key, either from screen or from collapsed list.
      */
-    public Preference findPreference(CharSequence key) {
-        for (int i = 0; i < collapsedPrefs.size(); i++) {
-            final Preference pref = collapsedPrefs.get(i);
+    public Preference findPreference(PreferenceScreen screen, CharSequence key) {
+        Preference preference = screen.findPreference(key);
+        if (preference != null) {
+            return preference;
+        }
+        for (int i = 0; i < mCollapsedPrefs.size(); i++) {
+            final Preference pref = mCollapsedPrefs.get(i);
             if (TextUtils.equals(key, pref.getKey())) {
                 return pref;
             }
         }
+        Log.d(TAG, "Cannot find preference with key " + key);
         return null;
     }
 
+    /**
+     * Add preference to collapsed list.
+     */
+    @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
+    void addToCollapsedList(Preference preference) {
+        // Insert preference based on it's order.
+        int insertionIndex = Collections.binarySearch(mCollapsedPrefs, preference);
+        if (insertionIndex < 0) {
+            insertionIndex = insertionIndex * -1 - 1;
+        }
+        mCollapsedPrefs.add(insertionIndex, preference);
+    }
+
+    @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
+    List<Preference> getCollapsedPrefs() {
+        return mCollapsedPrefs;
+    }
 }
diff --git a/src/com/android/settings/datausage/DataUsageSummary.java b/src/com/android/settings/datausage/DataUsageSummary.java
index e284bed..c99a4ab 100644
--- a/src/com/android/settings/datausage/DataUsageSummary.java
+++ b/src/com/android/settings/datausage/DataUsageSummary.java
@@ -77,6 +77,11 @@
     private int mDataUsageTemplate;
 
     @Override
+    protected int getHelpResource() {
+        return R.string.help_url_data_usage;
+    }
+
+    @Override
     public void onCreate(Bundle icicle) {
         super.onCreate(icicle);
 
diff --git a/src/com/android/settings/fingerprint/FingerprintEnrollEnrolling.java b/src/com/android/settings/fingerprint/FingerprintEnrollEnrolling.java
index cd56458..fa108bb 100644
--- a/src/com/android/settings/fingerprint/FingerprintEnrollEnrolling.java
+++ b/src/com/android/settings/fingerprint/FingerprintEnrollEnrolling.java
@@ -23,13 +23,12 @@
 import android.app.Activity;
 import android.app.AlertDialog;
 import android.app.Dialog;
-import android.app.DialogFragment;
 import android.content.DialogInterface;
 import android.content.Intent;
-import android.content.res.ColorStateList;
 import android.graphics.drawable.Animatable2;
 import android.graphics.drawable.AnimatedVectorDrawable;
 import android.graphics.drawable.Drawable;
+import android.graphics.drawable.LayerDrawable;
 import android.hardware.fingerprint.FingerprintManager;
 import android.os.Bundle;
 import android.os.UserHandle;
@@ -37,7 +36,6 @@
 import android.view.View;
 import android.view.animation.AnimationUtils;
 import android.view.animation.Interpolator;
-import android.widget.ImageView;
 import android.widget.ProgressBar;
 import android.widget.TextView;
 
@@ -75,7 +73,6 @@
     private static final int ICON_TOUCH_COUNT_SHOW_UNTIL_DIALOG_SHOWN = 3;
 
     private ProgressBar mProgressBar;
-    private ImageView mFingerprintAnimator;
     private ObjectAnimator mProgressAnim;
     private TextView mStartMessage;
     private TextView mRepeatMessage;
@@ -87,6 +84,7 @@
     private FingerprintEnrollSidecar mSidecar;
     private boolean mAnimationCancelled;
     private AnimatedVectorDrawable mIconAnimationDrawable;
+    private Drawable mIconBackgroundDrawable;
     private int mIndicatorBackgroundRestingColor;
     private int mIndicatorBackgroundActivatedColor;
     private boolean mRestoring;
@@ -100,8 +98,11 @@
         mRepeatMessage = (TextView) findViewById(R.id.repeat_message);
         mErrorText = (TextView) findViewById(R.id.error_text);
         mProgressBar = (ProgressBar) findViewById(R.id.fingerprint_progress_bar);
-        mFingerprintAnimator = (ImageView) findViewById(R.id.fingerprint_animator);
-        mIconAnimationDrawable = (AnimatedVectorDrawable) mFingerprintAnimator.getDrawable();
+        final LayerDrawable fingerprintDrawable = (LayerDrawable) mProgressBar.getBackground();
+        mIconAnimationDrawable = (AnimatedVectorDrawable)
+                fingerprintDrawable.findDrawableByLayerId(R.id.fingerprint_animation);
+        mIconBackgroundDrawable =
+                fingerprintDrawable.findDrawableByLayerId(R.id.fingerprint_background);
         mIconAnimationDrawable.registerAnimationCallback(mIconAnimationCallback);
         mFastOutSlowInInterpolator = AnimationUtils.loadInterpolator(
                 this, android.R.interpolator.fast_out_slow_in);
@@ -109,7 +110,7 @@
                 this, android.R.interpolator.linear_out_slow_in);
         mFastOutLinearInInterpolator = AnimationUtils.loadInterpolator(
                 this, android.R.interpolator.fast_out_linear_in);
-        mFingerprintAnimator.setOnTouchListener(new View.OnTouchListener() {
+        mProgressBar.setOnTouchListener(new View.OnTouchListener() {
             @Override
             public boolean onTouch(View v, MotionEvent event) {
                 if (event.getActionMasked() == MotionEvent.ACTION_DOWN) {
@@ -117,12 +118,12 @@
                     if (mIconTouchCount == ICON_TOUCH_COUNT_SHOW_UNTIL_DIALOG_SHOWN) {
                         showIconTouchDialog();
                     } else {
-                        mFingerprintAnimator.postDelayed(mShowDialogRunnable,
+                        mProgressBar.postDelayed(mShowDialogRunnable,
                                 ICON_TOUCH_DURATION_UNTIL_DIALOG_SHOWN);
                     }
                 } else if (event.getActionMasked() == MotionEvent.ACTION_CANCEL
                         || event.getActionMasked() == MotionEvent.ACTION_UP) {
-                    mFingerprintAnimator.removeCallbacks(mShowDialogRunnable);
+                    mProgressBar.removeCallbacks(mShowDialogRunnable);
                 }
                 return true;
             }
@@ -131,6 +132,7 @@
                 = getColor(R.color.fingerprint_indicator_background_resting);
         mIndicatorBackgroundActivatedColor
                 = getColor(R.color.fingerprint_indicator_background_activated);
+        mIconBackgroundDrawable.setTint(mIndicatorBackgroundRestingColor);
         mRestoring = savedInstanceState != null;
     }
 
@@ -213,8 +215,7 @@
                 new ValueAnimator.AnimatorUpdateListener() {
             @Override
             public void onAnimationUpdate(ValueAnimator animation) {
-                mFingerprintAnimator.setBackgroundTintList(ColorStateList.valueOf(
-                        (Integer) animation.getAnimatedValue()));
+                mIconBackgroundDrawable.setTint((Integer) animation.getAnimatedValue());
             }
         };
         anim.addUpdateListener(listener);
@@ -400,7 +401,7 @@
             }
 
             // Start animation after it has ended.
-            mFingerprintAnimator.post(new Runnable() {
+            mProgressBar.post(new Runnable() {
                 @Override
                 public void run() {
                     startIconAnimation();
diff --git a/src/com/android/settings/fuelgauge/BatteryEntry.java b/src/com/android/settings/fuelgauge/BatteryEntry.java
index b0e6969..aa71252 100644
--- a/src/com/android/settings/fuelgauge/BatteryEntry.java
+++ b/src/com/android/settings/fuelgauge/BatteryEntry.java
@@ -22,6 +22,7 @@
 import android.content.pm.IPackageManager;
 import android.content.pm.PackageInfo;
 import android.content.pm.PackageManager;
+import android.content.pm.PackageManager.NameNotFoundException;
 import android.content.pm.UserInfo;
 import android.graphics.drawable.Drawable;
 import android.os.Handler;
@@ -45,6 +46,8 @@
     public static final int MSG_UPDATE_NAME_ICON = 1;
     public static final int MSG_REPORT_FULLY_DRAWN = 2;
 
+    private static final String TAG = "BatteryEntry";
+
     static final HashMap<String,UidToDetail> sUidCache = new HashMap<String,UidToDetail>();
 
     static final ArrayList<BatteryEntry> mRequestQueue = new ArrayList<BatteryEntry>();
@@ -160,7 +163,23 @@
                 iconId = R.drawable.ic_settings_display;
                 break;
             case APP:
-                name = sipper.packageWithHighestDrain;
+                PackageManager pm = context.getPackageManager();
+                sipper.mPackages = pm.getPackagesForUid(sipper.uidObj.getUid());
+                // Apps should only have one package
+                if (sipper.mPackages == null || sipper.mPackages.length != 1) {
+                    name = sipper.packageWithHighestDrain;
+                } else {
+                    defaultPackageName = pm.getPackagesForUid(sipper.uidObj.getUid())[0];
+                    try {
+                        ApplicationInfo appInfo =
+                            pm.getApplicationInfo(defaultPackageName, 0 /* no flags */);
+                        name = pm.getApplicationLabel(appInfo).toString();
+                    } catch (NameNotFoundException e) {
+                        Log.d(TAG, "PackageManager failed to retrieve ApplicationInfo for: "
+                            + defaultPackageName);
+                        name = defaultPackageName;
+                    }
+                }
                 break;
             case USER: {
                 UserInfo info = um.getUserInfo(sipper.userId);
@@ -246,7 +265,9 @@
 
         PackageManager pm = context.getPackageManager();
         final int uid = sipper.uidObj.getUid();
-        sipper.mPackages = pm.getPackagesForUid(uid);
+        if (sipper.mPackages == null) {
+            sipper.mPackages = pm.getPackagesForUid(uid);
+        }
         if (sipper.mPackages != null) {
             String[] packageLabels = new String[sipper.mPackages.length];
             System.arraycopy(sipper.mPackages, 0, packageLabels, 0, sipper.mPackages.length);
@@ -259,7 +280,7 @@
                     final ApplicationInfo ai = ipm.getApplicationInfo(packageLabels[i],
                             0 /* no flags */, userId);
                     if (ai == null) {
-                        Log.d(PowerUsageSummary.TAG, "Retrieving null app info for package "
+                        Log.d(TAG, "Retrieving null app info for package "
                                 + packageLabels[i] + ", user " + userId);
                         continue;
                     }
@@ -273,7 +294,7 @@
                         break;
                     }
                 } catch (RemoteException e) {
-                    Log.d(PowerUsageSummary.TAG, "Error while retrieving app info for package "
+                    Log.d(TAG, "Error while retrieving app info for package "
                             + packageLabels[i] + ", user " + userId, e);
                 }
             }
@@ -286,7 +307,7 @@
                     try {
                         final PackageInfo pi = ipm.getPackageInfo(pkgName, 0 /* no flags */, userId);
                         if (pi == null) {
-                            Log.d(PowerUsageSummary.TAG, "Retrieving null package info for package "
+                            Log.d(TAG, "Retrieving null package info for package "
                                     + pkgName + ", user " + userId);
                             continue;
                         }
@@ -303,7 +324,7 @@
                             }
                         }
                     } catch (RemoteException e) {
-                        Log.d(PowerUsageSummary.TAG, "Error while retrieving package info for package "
+                        Log.d(TAG, "Error while retrieving package info for package "
                                 + pkgName + ", user " + userId, e);
                     }
                 }
diff --git a/src/com/android/settings/gestures/GesturePreference.java b/src/com/android/settings/gestures/GesturePreference.java
index 1909dcd..5a64a5a 100644
--- a/src/com/android/settings/gestures/GesturePreference.java
+++ b/src/com/android/settings/gestures/GesturePreference.java
@@ -150,6 +150,10 @@
                         playButton.setVisibility(View.VISIBLE);
                     }
                 }
+                if (mMediaPlayer != null && !mMediaPlayer.isPlaying() &&
+                        playButton.getVisibility() != View.VISIBLE) {
+                    playButton.setVisibility(View.VISIBLE);
+                }
             }
         });
 
@@ -175,4 +179,10 @@
         }
     }
 
+    void onViewInvisible() {
+        if (mMediaPlayer != null && mMediaPlayer.isPlaying()) {
+            mMediaPlayer.pause();
+        }
+    }
+
 }
diff --git a/src/com/android/settings/gestures/GestureSettings.java b/src/com/android/settings/gestures/GestureSettings.java
index a8f70d9..c68d922 100644
--- a/src/com/android/settings/gestures/GestureSettings.java
+++ b/src/com/android/settings/gestures/GestureSettings.java
@@ -34,9 +34,9 @@
 import com.android.internal.hardware.AmbientDisplayConfiguration;
 import com.android.internal.logging.MetricsProto.MetricsEvent;
 import com.android.settings.R;
+import com.android.settings.SettingsPreferenceFragment;
 import com.android.settings.search.BaseSearchIndexProvider;
 import com.android.settings.search.Indexable;
-import com.android.settings.SettingsPreferenceFragment;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -53,11 +53,11 @@
     private static final String PREF_KEY_DOUBLE_TAP_POWER = "gesture_double_tap_power";
     private static final String PREF_KEY_DOUBLE_TWIST = "gesture_double_twist";
     private static final String PREF_KEY_PICK_UP = "gesture_pick_up";
-    private static final String PREF_KEY_SWIPE_DOWN_FINGERPRINT = "gesture_swipe_down_fingerprint";
     private static final String PREF_KEY_DOUBLE_TAP_SCREEN = "gesture_double_tap_screen";
     private static final String DEBUG_DOZE_COMPONENT = "debug.doze.component";
 
     private List<GesturePreference> mPreferences;
+    private SwipeToNotificationPreferenceController mSwipeToNotificationPreferenceController;
 
     private AmbientDisplayConfiguration mAmbientConfig;
 
@@ -66,6 +66,8 @@
         super.onCreate(savedInstanceState);
         addPreferencesFromResource(R.xml.gesture_settings);
         Context context = getActivity();
+        mSwipeToNotificationPreferenceController =
+                new SwipeToNotificationPreferenceController(context);
         mPreferences = new ArrayList();
 
         // Double tap power for camera
@@ -93,11 +95,7 @@
         }
 
         // Fingerprint slide for notifications
-        if (isSystemUINavigationAvailable(context)) {
-            addPreference(PREF_KEY_SWIPE_DOWN_FINGERPRINT, isSystemUINavigationEnabled(context));
-        } else {
-            removePreference(PREF_KEY_SWIPE_DOWN_FINGERPRINT);
-        }
+        mSwipeToNotificationPreferenceController.displayPreference(getPreferenceScreen());
 
         // Double twist for camera mode
         if (isDoubleTwistAvailable(context)) {
@@ -112,7 +110,7 @@
 
     @Override
     public View onCreateView(LayoutInflater inflater, ViewGroup container,
-                             Bundle savedInstanceState) {
+            Bundle savedInstanceState) {
         View view = super.onCreateView(inflater, container, savedInstanceState);
         RecyclerView listview = getListView();
         listview.addOnScrollListener(new RecyclerView.OnScrollListener() {
@@ -137,6 +135,13 @@
     }
 
     @Override
+    public void onResume() {
+        super.onResume();
+        mSwipeToNotificationPreferenceController.updateState(
+                findPreference(mSwipeToNotificationPreferenceController.getPreferenceKey()));
+    }
+
+    @Override
     public void onStart() {
         super.onStart();
         for (GesturePreference preference : mPreferences) {
@@ -145,6 +150,14 @@
     }
 
     @Override
+    public void onStop() {
+        super.onStop();
+        for (GesturePreference preference : mPreferences) {
+            preference.onViewInvisible();
+        }
+    }
+
+    @Override
     public boolean onPreferenceChange(Preference preference, Object newValue) {
         boolean enabled = (boolean) newValue;
         String key = preference.getKey();
@@ -155,9 +168,6 @@
             Secure.putInt(getContentResolver(), Secure.DOZE_PULSE_ON_PICK_UP, enabled ? 1 : 0);
         } else if (PREF_KEY_DOUBLE_TAP_SCREEN.equals(key)) {
             Secure.putInt(getContentResolver(), Secure.DOZE_PULSE_ON_DOUBLE_TAP, enabled ? 1 : 0);
-        } else if (PREF_KEY_SWIPE_DOWN_FINGERPRINT.equals(key)) {
-            Secure.putInt(getContentResolver(),
-                    Secure.SYSTEM_NAVIGATION_KEYS_ENABLED, enabled ? 1 : 0);
         } else if (PREF_KEY_DOUBLE_TWIST.equals(key)) {
             Secure.putInt(getContentResolver(),
                     Secure.CAMERA_DOUBLE_TWIST_TO_FLIP_ENABLED, enabled ? 1 : 0);
@@ -180,16 +190,6 @@
                 com.android.internal.R.bool.config_cameraDoubleTapPowerGestureEnabled);
     }
 
-    private static boolean isSystemUINavigationAvailable(Context context) {
-        return context.getResources().getBoolean(
-                com.android.internal.R.bool.config_supportSystemNavigationKeys);
-    }
-
-    private static boolean isSystemUINavigationEnabled(Context context) {
-        return Secure.getInt(context.getContentResolver(), Secure.SYSTEM_NAVIGATION_KEYS_ENABLED, 0)
-                == 1;
-    }
-
     private static boolean isDoubleTwistAvailable(Context context) {
         return hasSensor(context, R.string.gesture_double_twist_sensor_name,
                 R.string.gesture_double_twist_sensor_vendor);
@@ -219,42 +219,41 @@
     }
 
     public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
-        new BaseSearchIndexProvider() {
-            @Override
-            public List<SearchIndexableResource> getXmlResourcesToIndex(Context context,
-                     boolean enabled) {
-                ArrayList<SearchIndexableResource> result =
-                        new ArrayList<SearchIndexableResource>();
+            new BaseSearchIndexProvider() {
+                @Override
+                public List<SearchIndexableResource> getXmlResourcesToIndex(Context context,
+                        boolean enabled) {
+                    ArrayList<SearchIndexableResource> result =
+                            new ArrayList<SearchIndexableResource>();
 
-                SearchIndexableResource sir = new SearchIndexableResource(context);
-                sir.xmlResId = R.xml.gesture_settings;
-                result.add(sir);
+                    SearchIndexableResource sir = new SearchIndexableResource(context);
+                    sir.xmlResId = R.xml.gesture_settings;
+                    result.add(sir);
 
-                return result;
-            }
+                    return result;
+                }
 
-            @Override
-            public List<String> getNonIndexableKeys(Context context) {
-                ArrayList<String> result = new ArrayList<String>();
-                AmbientDisplayConfiguration ambientConfig
-                        = new AmbientDisplayConfiguration(context);
-                if (!isCameraDoubleTapPowerGestureAvailable(context.getResources())) {
-                    result.add(PREF_KEY_DOUBLE_TAP_POWER);
+                @Override
+                public List<String> getNonIndexableKeys(Context context) {
+                    ArrayList<String> result = new ArrayList<String>();
+                    AmbientDisplayConfiguration ambientConfig
+                            = new AmbientDisplayConfiguration(context);
+                    if (!isCameraDoubleTapPowerGestureAvailable(context.getResources())) {
+                        result.add(PREF_KEY_DOUBLE_TAP_POWER);
+                    }
+                    if (!ambientConfig.pulseOnPickupAvailable()) {
+                        result.add(PREF_KEY_PICK_UP);
+                    }
+                    if (!ambientConfig.pulseOnDoubleTapAvailable()) {
+                        result.add(PREF_KEY_DOUBLE_TAP_SCREEN);
+                    }
+                    new SwipeToNotificationPreferenceController(context)
+                            .updateNonIndexableKeys(result);
+                    if (!isDoubleTwistAvailable(context)) {
+                        result.add(PREF_KEY_DOUBLE_TWIST);
+                    }
+                    return result;
                 }
-                if (!ambientConfig.pulseOnPickupAvailable()) {
-                    result.add(PREF_KEY_PICK_UP);
-                }
-                if (!ambientConfig.pulseOnDoubleTapAvailable()) {
-                    result.add(PREF_KEY_DOUBLE_TAP_SCREEN);
-                }
-                if (!isSystemUINavigationAvailable(context)) {
-                    result.add(PREF_KEY_SWIPE_DOWN_FINGERPRINT);
-                }
-                if (!isDoubleTwistAvailable(context)) {
-                    result.add(PREF_KEY_DOUBLE_TWIST);
-                }
-                return result;
-            }
-        };
+            };
 
 }
diff --git a/src/com/android/settings/gestures/SwipeToNotificationPreferenceController.java b/src/com/android/settings/gestures/SwipeToNotificationPreferenceController.java
new file mode 100644
index 0000000..dee532f
--- /dev/null
+++ b/src/com/android/settings/gestures/SwipeToNotificationPreferenceController.java
@@ -0,0 +1,71 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.gestures;
+
+import android.content.Context;
+import android.provider.Settings;
+import android.support.v7.preference.Preference;
+import android.support.v7.preference.TwoStatePreference;
+
+import com.android.settings.core.PreferenceController;
+
+public class SwipeToNotificationPreferenceController extends PreferenceController
+        implements Preference.OnPreferenceChangeListener {
+
+    private static final String PREF_KEY_SWIPE_DOWN_FINGERPRINT = "gesture_swipe_down_fingerprint";
+
+    public SwipeToNotificationPreferenceController(Context context) {
+        super(context);
+    }
+
+    @Override
+    public boolean handlePreferenceTreeClick(Preference preference) {
+        return false;
+    }
+
+    @Override
+    public String getPreferenceKey() {
+        return PREF_KEY_SWIPE_DOWN_FINGERPRINT;
+    }
+
+    @Override
+    public void updateState(Preference preference) {
+        super.updateState(preference);
+        if (preference != null && preference instanceof TwoStatePreference) {
+            ((TwoStatePreference) preference).setChecked(isSystemUINavigationEnabled());
+        }
+    }
+
+    @Override
+    protected boolean isAvailable() {
+        return mContext.getResources().getBoolean(
+                com.android.internal.R.bool.config_supportSystemNavigationKeys);
+    }
+
+    private boolean isSystemUINavigationEnabled() {
+        return Settings.Secure.getInt(mContext.getContentResolver(),
+                Settings.Secure.SYSTEM_NAVIGATION_KEYS_ENABLED, 0)
+                == 1;
+    }
+
+    @Override
+    public boolean onPreferenceChange(Preference preference, Object newValue) {
+        Settings.Secure.putInt(mContext.getContentResolver(),
+                Settings.Secure.SYSTEM_NAVIGATION_KEYS_ENABLED, (boolean) newValue ? 1 : 0);
+        return true;
+    }
+}
diff --git a/src/com/android/settings/notification/ConfigureNotificationSettings.java b/src/com/android/settings/notification/ConfigureNotificationSettings.java
index 3f53ec9..1f322d0 100644
--- a/src/com/android/settings/notification/ConfigureNotificationSettings.java
+++ b/src/com/android/settings/notification/ConfigureNotificationSettings.java
@@ -1,4 +1,4 @@
-/**
+/*
  * Copyright (C) 2015 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -16,54 +16,23 @@
 
 package com.android.settings.notification;
 
-import android.app.admin.DevicePolicyManager;
-import android.content.ContentResolver;
 import android.content.Context;
-import android.database.ContentObserver;
-import android.net.Uri;
 import android.os.Bundle;
-import android.os.Handler;
-import android.os.UserHandle;
-import android.os.UserManager;
-import android.provider.Settings;
-import android.support.v7.preference.Preference;
-import android.support.v7.preference.Preference.OnPreferenceChangeListener;
-import android.support.v7.preference.TwoStatePreference;
-import android.util.Log;
+
 import com.android.internal.logging.MetricsProto.MetricsEvent;
-import com.android.internal.widget.LockPatternUtils;
 import com.android.settings.R;
-import com.android.settings.RestrictedListPreference.RestrictedItem;
-import com.android.settings.SettingsPreferenceFragment;
-import com.android.settings.Utils;
-import com.android.settingslib.RestrictedLockUtils;
+import com.android.settings.core.PreferenceController;
+import com.android.settings.dashboard.DashboardFragment;
+import com.android.settings.gestures.SwipeToNotificationPreferenceController;
+import com.android.settings.overlay.FeatureFactory;
 
 import java.util.ArrayList;
+import java.util.List;
 
-import static android.app.admin.DevicePolicyManager.KEYGUARD_DISABLE_SECURE_NOTIFICATIONS;
-import static android.app.admin.DevicePolicyManager.KEYGUARD_DISABLE_UNREDACTED_NOTIFICATIONS;
-import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
-
-public class ConfigureNotificationSettings extends SettingsPreferenceFragment {
+public class ConfigureNotificationSettings extends DashboardFragment {
     private static final String TAG = "ConfigNotiSettings";
 
-    private static final String KEY_NOTIFICATION_PULSE = "notification_pulse";
-    private static final String KEY_LOCK_SCREEN_NOTIFICATIONS = "lock_screen_notifications";
-    private static final String KEY_LOCK_SCREEN_PROFILE_NOTIFICATIONS =
-            "lock_screen_notifications_profile";
-
-    private final SettingsObserver mSettingsObserver = new SettingsObserver();
-
-    private Context mContext;
-
-    private TwoStatePreference mNotificationPulse;
-    private RestrictedDropDownPreference mLockscreen;
-    private RestrictedDropDownPreference mLockscreenProfile;
-    private boolean mSecure;
-    private boolean mSecureProfile;
-    private int mLockscreenSelectedValue;
-    private int mLockscreenSelectedValueProfile;
-    private int mProfileChallengeUserId;
+    private LockScreenNotificationPreferenceController mLockScreenNotificationController;
 
     @Override
     public int getMetricsCategory() {
@@ -71,310 +40,43 @@
     }
 
     @Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        mContext = getActivity();
-        mProfileChallengeUserId = Utils.getManagedProfileId(
-                UserManager.get(mContext), UserHandle.myUserId());
-
-        final LockPatternUtils utils = new LockPatternUtils(getActivity());
-        final boolean isUnified =
-                !utils.isSeparateProfileChallengeEnabled(mProfileChallengeUserId);
-
-        mSecure = utils.isSecure(UserHandle.myUserId());
-        mSecureProfile = (mProfileChallengeUserId != UserHandle.USER_NULL)
-                && (utils.isSecure(mProfileChallengeUserId) || (isUnified && mSecure));
-
-        addPreferencesFromResource(R.xml.configure_notification_settings);
-
-        initPulse();
-        initLockscreenNotifications();
-
-        if (mProfileChallengeUserId != UserHandle.USER_NULL) {
-            addPreferencesFromResource(R.xml.configure_notification_settings_profile);
-            initLockscreenNotificationsForProfile();
-        }
-
+    protected String getCategoryKey() {
+        return "";
     }
 
     @Override
-    public void onResume() {
-        super.onResume();
-        mSettingsObserver.register(true);
+    protected String getLogTag() {
+        return TAG;
     }
 
     @Override
-    public void onPause() {
-        super.onPause();
-        mSettingsObserver.register(false);
+    protected int getPreferenceScreenResId() {
+        return R.xml.configure_notification_settings;
     }
 
-    // === Pulse notification light ===
-
-    private void initPulse() {
-        mNotificationPulse =
-                (TwoStatePreference) getPreferenceScreen().findPreference(KEY_NOTIFICATION_PULSE);
-        if (mNotificationPulse == null) {
-            Log.i(TAG, "Preference not found: " + KEY_NOTIFICATION_PULSE);
-            return;
-        }
-        if (!getResources()
-                .getBoolean(com.android.internal.R.bool.config_intrusiveNotificationLed)) {
-            getPreferenceScreen().removePreference(mNotificationPulse);
-        } else {
-            updatePulse();
-            mNotificationPulse.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
-                @Override
-                public boolean onPreferenceChange(Preference preference, Object newValue) {
-                    final boolean val = (Boolean)newValue;
-                    return Settings.System.putInt(getContentResolver(),
-                            Settings.System.NOTIFICATION_LIGHT_PULSE,
-                            val ? 1 : 0);
-                }
-            });
-        }
+    @Override
+    protected List<PreferenceController> getPreferenceControllers(Context context) {
+        final List<PreferenceController> controllers = new ArrayList<>();
+        final PulseNotificationPreferenceController pulseController =
+                new PulseNotificationPreferenceController(context);
+        mLockScreenNotificationController = new LockScreenNotificationPreferenceController(context);
+        getLifecycle().addObserver(pulseController);
+        getLifecycle().addObserver(mLockScreenNotificationController);
+        controllers.add(new SwipeToNotificationPreferenceController(context));
+        controllers.add(pulseController);
+        controllers.add(mLockScreenNotificationController);
+        return controllers;
     }
 
-    private void updatePulse() {
-        if (mNotificationPulse == null) {
-            return;
-        }
-        try {
-            mNotificationPulse.setChecked(Settings.System.getInt(getContentResolver(),
-                    Settings.System.NOTIFICATION_LIGHT_PULSE) == 1);
-        } catch (Settings.SettingNotFoundException snfe) {
-            Log.e(TAG, Settings.System.NOTIFICATION_LIGHT_PULSE + " not found");
-        }
-    }
-
-    private void initLockscreenNotifications() {
-        mLockscreen = (RestrictedDropDownPreference) getPreferenceScreen().findPreference(
-                KEY_LOCK_SCREEN_NOTIFICATIONS);
-        if (mLockscreen == null) {
-            Log.i(TAG, "Preference not found: " + KEY_LOCK_SCREEN_NOTIFICATIONS);
-            return;
-        }
-
-        ArrayList<CharSequence> entries = new ArrayList<>();
-        ArrayList<CharSequence> values = new ArrayList<>();
-        entries.add(getString(R.string.lock_screen_notifications_summary_disable));
-        values.add(Integer.toString(R.string.lock_screen_notifications_summary_disable));
-
-        String summaryShowEntry = getString(R.string.lock_screen_notifications_summary_show);
-        String summaryShowEntryValue = Integer.toString(
-                R.string.lock_screen_notifications_summary_show);
-        entries.add(summaryShowEntry);
-        values.add(summaryShowEntryValue);
-        setRestrictedIfNotificationFeaturesDisabled(summaryShowEntry, summaryShowEntryValue,
-                KEYGUARD_DISABLE_SECURE_NOTIFICATIONS | KEYGUARD_DISABLE_UNREDACTED_NOTIFICATIONS);
-
-        if (mSecure) {
-            String summaryHideEntry = getString(R.string.lock_screen_notifications_summary_hide);
-            String summaryHideEntryValue = Integer.toString(
-                    R.string.lock_screen_notifications_summary_hide);
-            entries.add(summaryHideEntry);
-            values.add(summaryHideEntryValue);
-            setRestrictedIfNotificationFeaturesDisabled(summaryHideEntry, summaryHideEntryValue,
-                    KEYGUARD_DISABLE_SECURE_NOTIFICATIONS);
-        }
-
-        mLockscreen.setEntries(entries.toArray(new CharSequence[entries.size()]));
-        mLockscreen.setEntryValues(values.toArray(new CharSequence[values.size()]));
-        updateLockscreenNotifications();
-        if (mLockscreen.getEntries().length > 1) {
-            mLockscreen.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
-                @Override
-                public boolean onPreferenceChange(Preference preference, Object newValue) {
-                    final int val = Integer.parseInt((String) newValue);
-                    if (val == mLockscreenSelectedValue) {
-                        return false;
-                    }
-                    final boolean enabled =
-                            val != R.string.lock_screen_notifications_summary_disable;
-                    final boolean show = val == R.string.lock_screen_notifications_summary_show;
-                    Settings.Secure.putInt(getContentResolver(),
-                            Settings.Secure.LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS, show ? 1 : 0);
-                    Settings.Secure.putInt(getContentResolver(),
-                            Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS, enabled ? 1 : 0);
-                    mLockscreenSelectedValue = val;
-                    return true;
-                }
-            });
-        } else {
-            // There is one or less option for the user, disable the drop down.
-            mLockscreen.setEnabled(false);
-        }
-    }
-
-    // === Lockscreen (public / private) notifications ===
-    private void initLockscreenNotificationsForProfile() {
-        mLockscreenProfile = (RestrictedDropDownPreference) getPreferenceScreen()
-                .findPreference(KEY_LOCK_SCREEN_PROFILE_NOTIFICATIONS);
-        if (mLockscreenProfile == null) {
-            Log.i(TAG, "Preference not found: " + KEY_LOCK_SCREEN_PROFILE_NOTIFICATIONS);
-            return;
-        }
-        ArrayList<CharSequence> entries = new ArrayList<>();
-        ArrayList<CharSequence> values = new ArrayList<>();
-        entries.add(getString(R.string.lock_screen_notifications_summary_disable_profile));
-        values.add(Integer.toString(R.string.lock_screen_notifications_summary_disable_profile));
-
-        String summaryShowEntry = getString(
-                R.string.lock_screen_notifications_summary_show_profile);
-        String summaryShowEntryValue = Integer.toString(
-                R.string.lock_screen_notifications_summary_show_profile);
-        entries.add(summaryShowEntry);
-        values.add(summaryShowEntryValue);
-        setRestrictedIfNotificationFeaturesDisabled(summaryShowEntry, summaryShowEntryValue,
-                KEYGUARD_DISABLE_SECURE_NOTIFICATIONS | KEYGUARD_DISABLE_UNREDACTED_NOTIFICATIONS);
-
-        if (mSecureProfile) {
-            String summaryHideEntry = getString(
-                    R.string.lock_screen_notifications_summary_hide_profile);
-            String summaryHideEntryValue = Integer.toString(
-                    R.string.lock_screen_notifications_summary_hide_profile);
-            entries.add(summaryHideEntry);
-            values.add(summaryHideEntryValue);
-            setRestrictedIfNotificationFeaturesDisabled(summaryHideEntry, summaryHideEntryValue,
-                    KEYGUARD_DISABLE_SECURE_NOTIFICATIONS);
-        }
-
-        mLockscreenProfile.setOnPreClickListener(
-                (Preference p) -> Utils.startQuietModeDialogIfNecessary(mContext,
-                        UserManager.get(mContext),
-                        mProfileChallengeUserId)
-        );
-
-        mLockscreenProfile.setEntries(entries.toArray(new CharSequence[entries.size()]));
-        mLockscreenProfile.setEntryValues(values.toArray(new CharSequence[values.size()]));
-        updateLockscreenNotificationsForProfile();
-        if (mLockscreenProfile.getEntries().length > 1) {
-            mLockscreenProfile.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
-                @Override
-                public boolean onPreferenceChange(Preference preference, Object newValue) {
-                    final int val = Integer.parseInt((String) newValue);
-                    if (val == mLockscreenSelectedValueProfile) {
-                        return false;
-                    }
-                    final boolean enabled =
-                            val != R.string.lock_screen_notifications_summary_disable_profile;
-                    final boolean show =
-                            val == R.string.lock_screen_notifications_summary_show_profile;
-                    Settings.Secure.putIntForUser(getContentResolver(),
-                            Settings.Secure.LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS,
-                            show ? 1 : 0, mProfileChallengeUserId);
-                    Settings.Secure.putIntForUser(getContentResolver(),
-                            Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS,
-                            enabled ? 1 : 0, mProfileChallengeUserId);
-                    mLockscreenSelectedValueProfile = val;
-                    return true;
-                }
-            });
-        } else {
-            // There is one or less option for the user, disable the drop down.
-            mLockscreenProfile.setEnabled(false);
-        }
-    }
-
-    private void setRestrictedIfNotificationFeaturesDisabled(CharSequence entry,
-            CharSequence entryValue, int keyguardNotificationFeatures) {
-        EnforcedAdmin admin = RestrictedLockUtils.checkIfKeyguardFeaturesDisabled(
-                mContext, keyguardNotificationFeatures, UserHandle.myUserId());
-        if (admin != null && mLockscreen != null) {
-            RestrictedDropDownPreference.RestrictedItem item =
-                    new RestrictedDropDownPreference.RestrictedItem(entry, entryValue, admin);
-            mLockscreen.addRestrictedItem(item);
-        }
-        if (mProfileChallengeUserId != UserHandle.USER_NULL) {
-            EnforcedAdmin profileAdmin = RestrictedLockUtils.checkIfKeyguardFeaturesDisabled(
-                    mContext, keyguardNotificationFeatures, mProfileChallengeUserId);
-            if (profileAdmin != null && mLockscreenProfile != null) {
-                RestrictedDropDownPreference.RestrictedItem item =
-                        new RestrictedDropDownPreference.RestrictedItem(
-                                entry, entryValue, profileAdmin);
-                mLockscreenProfile.addRestrictedItem(item);
-            }
-        }
-    }
-
-    private void updateLockscreenNotifications() {
-        if (mLockscreen == null) {
-            return;
-        }
-        final boolean enabled = getLockscreenNotificationsEnabled(UserHandle.myUserId());
-        final boolean allowPrivate = !mSecure
-                || getLockscreenAllowPrivateNotifications(UserHandle.myUserId());
-        mLockscreenSelectedValue = !enabled ? R.string.lock_screen_notifications_summary_disable :
-                allowPrivate ? R.string.lock_screen_notifications_summary_show :
-                R.string.lock_screen_notifications_summary_hide;
-        mLockscreen.setValue(Integer.toString(mLockscreenSelectedValue));
-    }
-
-    private void updateLockscreenNotificationsForProfile() {
-        if (mProfileChallengeUserId == UserHandle.USER_NULL) {
-            return;
-        }
-        if (mLockscreenProfile == null) {
-            return;
-        }
-        final boolean enabled = getLockscreenNotificationsEnabled(mProfileChallengeUserId);
-        final boolean allowPrivate = !mSecureProfile
-                || getLockscreenAllowPrivateNotifications(mProfileChallengeUserId);
-        mLockscreenSelectedValueProfile = !enabled
-                ? R.string.lock_screen_notifications_summary_disable_profile
-                        : (allowPrivate ? R.string.lock_screen_notifications_summary_show_profile
-                                : R.string.lock_screen_notifications_summary_hide_profile);
-        mLockscreenProfile.setValue(Integer.toString(mLockscreenSelectedValueProfile));
-    }
-
-    private boolean getLockscreenNotificationsEnabled(int userId) {
-        return Settings.Secure.getIntForUser(getContentResolver(),
-                Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS, 0, userId) != 0;
-    }
-
-    private boolean getLockscreenAllowPrivateNotifications(int userId) {
-        return Settings.Secure.getIntForUser(getContentResolver(),
-                Settings.Secure.LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS, 0, userId) != 0;
-    }
-
-
-    // === Callbacks ===
-
-    private final class SettingsObserver extends ContentObserver {
-        private final Uri NOTIFICATION_LIGHT_PULSE_URI =
-                Settings.System.getUriFor(Settings.System.NOTIFICATION_LIGHT_PULSE);
-        private final Uri LOCK_SCREEN_PRIVATE_URI =
-                Settings.Secure.getUriFor(Settings.Secure.LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS);
-        private final Uri LOCK_SCREEN_SHOW_URI =
-                Settings.Secure.getUriFor(Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS);
-
-        public SettingsObserver() {
-            super(new Handler());
-        }
-
-        public void register(boolean register) {
-            final ContentResolver cr = getContentResolver();
-            if (register) {
-                cr.registerContentObserver(NOTIFICATION_LIGHT_PULSE_URI, false, this);
-                cr.registerContentObserver(LOCK_SCREEN_PRIVATE_URI, false, this);
-                cr.registerContentObserver(LOCK_SCREEN_SHOW_URI, false, this);
-            } else {
-                cr.unregisterContentObserver(this);
-            }
-        }
-
-        @Override
-        public void onChange(boolean selfChange, Uri uri) {
-            super.onChange(selfChange, uri);
-            if (NOTIFICATION_LIGHT_PULSE_URI.equals(uri)) {
-                updatePulse();
-            }
-            if (LOCK_SCREEN_PRIVATE_URI.equals(uri) || LOCK_SCREEN_SHOW_URI.equals(uri)) {
-                updateLockscreenNotifications();
-                if (mProfileChallengeUserId != UserHandle.USER_NULL) {
-                    updateLockscreenNotificationsForProfile();
-                }
-            }
+    @Override
+    public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
+        super.onCreatePreferences(savedInstanceState, rootKey);
+        final Context context = getContext();
+        if (!FeatureFactory.getFactory(context).getDashboardFeatureProvider(context).isEnabled()) {
+            final String prefKey = getPreferenceController(
+                    SwipeToNotificationPreferenceController.class)
+                    .getPreferenceKey();
+            removePreference(prefKey);
         }
     }
 }
diff --git a/src/com/android/settings/notification/LockScreenNotificationPreferenceController.java b/src/com/android/settings/notification/LockScreenNotificationPreferenceController.java
new file mode 100644
index 0000000..f349a84
--- /dev/null
+++ b/src/com/android/settings/notification/LockScreenNotificationPreferenceController.java
@@ -0,0 +1,346 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.notification;
+
+import android.content.ContentResolver;
+import android.content.Context;
+import android.database.ContentObserver;
+import android.net.Uri;
+import android.os.Handler;
+import android.os.UserHandle;
+import android.os.UserManager;
+import android.provider.Settings;
+import android.support.v7.preference.Preference;
+import android.support.v7.preference.PreferenceScreen;
+import android.util.Log;
+
+import com.android.internal.widget.LockPatternUtils;
+import com.android.settings.R;
+import com.android.settings.Utils;
+import com.android.settings.core.PreferenceController;
+import com.android.settings.core.lifecycle.LifecycleObserver;
+import com.android.settings.core.lifecycle.events.OnPause;
+import com.android.settings.core.lifecycle.events.OnResume;
+import com.android.settingslib.RestrictedLockUtils;
+
+import java.util.ArrayList;
+
+import static android.app.admin.DevicePolicyManager.KEYGUARD_DISABLE_SECURE_NOTIFICATIONS;
+import static android.app.admin.DevicePolicyManager.KEYGUARD_DISABLE_UNREDACTED_NOTIFICATIONS;
+
+public class LockScreenNotificationPreferenceController extends PreferenceController implements
+        Preference.OnPreferenceChangeListener, LifecycleObserver, OnResume, OnPause {
+
+    private static final String TAG = "LockScreenNotifPref";
+    private static final String KEY_LOCK_SCREEN_NOTIFICATIONS = "lock_screen_notifications";
+    private static final String KEY_LOCK_SCREEN_PROFILE_HEADER =
+            "lock_screen_notifications_profile_header";
+    private static final String KEY_LOCK_SCREEN_PROFILE_NOTIFICATIONS =
+            "lock_screen_notifications_profile";
+
+    private RestrictedDropDownPreference mLockscreen;
+    private RestrictedDropDownPreference mLockscreenProfile;
+
+    private final int mProfileChallengeUserId;
+    private final boolean mSecure;
+    private final boolean mSecureProfile;
+
+    private SettingObserver mSettingObserver;
+    private int mLockscreenSelectedValue;
+    private int mLockscreenSelectedValueProfile;
+
+    public LockScreenNotificationPreferenceController(Context context) {
+        super(context);
+        mProfileChallengeUserId = Utils.getManagedProfileId(
+                UserManager.get(context), UserHandle.myUserId());
+        final LockPatternUtils utils = new LockPatternUtils(context);
+        final boolean isUnified =
+                !utils.isSeparateProfileChallengeEnabled(mProfileChallengeUserId);
+        mSecure = utils.isSecure(UserHandle.myUserId());
+        mSecureProfile = (mProfileChallengeUserId != UserHandle.USER_NULL)
+                && (utils.isSecure(mProfileChallengeUserId) || (isUnified && mSecure));
+    }
+
+    @Override
+    public boolean handlePreferenceTreeClick(Preference preference) {
+        return false;
+    }
+
+    @Override
+    public void displayPreference(PreferenceScreen screen) {
+        super.displayPreference(screen);
+        mLockscreen =
+                (RestrictedDropDownPreference) screen.findPreference(KEY_LOCK_SCREEN_NOTIFICATIONS);
+        if (mLockscreen == null) {
+            Log.i(TAG, "Preference not found: " + KEY_LOCK_SCREEN_NOTIFICATIONS);
+            return;
+        }
+        if (mProfileChallengeUserId != UserHandle.USER_NULL) {
+            mLockscreenProfile = (RestrictedDropDownPreference) screen.findPreference(
+                    KEY_LOCK_SCREEN_PROFILE_NOTIFICATIONS);
+        } else {
+            removePreference(screen, KEY_LOCK_SCREEN_PROFILE_NOTIFICATIONS);
+            removePreference(screen, KEY_LOCK_SCREEN_PROFILE_HEADER);
+        }
+        mSettingObserver = new SettingObserver();
+        initLockScreenNotificationPrefDisplay();
+        initLockscreenNotificationPrefForProfile();
+    }
+
+    private void initLockScreenNotificationPrefDisplay() {
+        ArrayList<CharSequence> entries = new ArrayList<>();
+        ArrayList<CharSequence> values = new ArrayList<>();
+        entries.add(mContext.getString(R.string.lock_screen_notifications_summary_disable));
+        values.add(Integer.toString(R.string.lock_screen_notifications_summary_disable));
+
+        String summaryShowEntry =
+                mContext.getString(R.string.lock_screen_notifications_summary_show);
+        String summaryShowEntryValue =
+                Integer.toString(R.string.lock_screen_notifications_summary_show);
+        entries.add(summaryShowEntry);
+        values.add(summaryShowEntryValue);
+        setRestrictedIfNotificationFeaturesDisabled(summaryShowEntry, summaryShowEntryValue,
+                KEYGUARD_DISABLE_SECURE_NOTIFICATIONS | KEYGUARD_DISABLE_UNREDACTED_NOTIFICATIONS);
+
+        if (mSecure) {
+            String summaryHideEntry =
+                    mContext.getString(R.string.lock_screen_notifications_summary_hide);
+            String summaryHideEntryValue =
+                    Integer.toString(R.string.lock_screen_notifications_summary_hide);
+            entries.add(summaryHideEntry);
+            values.add(summaryHideEntryValue);
+            setRestrictedIfNotificationFeaturesDisabled(summaryHideEntry, summaryHideEntryValue,
+                    KEYGUARD_DISABLE_SECURE_NOTIFICATIONS);
+        }
+
+        mLockscreen.setEntries(entries.toArray(new CharSequence[entries.size()]));
+        mLockscreen.setEntryValues(values.toArray(new CharSequence[values.size()]));
+        updateLockscreenNotifications();
+
+        if (mLockscreen.getEntries().length > 1) {
+            mLockscreen.setOnPreferenceChangeListener(this);
+        } else {
+            // There is one or less option for the user, disable the drop down.
+            mLockscreen.setEnabled(false);
+        }
+    }
+
+    private void initLockscreenNotificationPrefForProfile() {
+        if (mLockscreenProfile == null) {
+            Log.i(TAG, "Preference not found: " + KEY_LOCK_SCREEN_PROFILE_NOTIFICATIONS);
+            return;
+        }
+        ArrayList<CharSequence> entries = new ArrayList<>();
+        ArrayList<CharSequence> values = new ArrayList<>();
+        entries.add(mContext.getString(R.string.lock_screen_notifications_summary_disable_profile));
+        values.add(Integer.toString(R.string.lock_screen_notifications_summary_disable_profile));
+
+        String summaryShowEntry = mContext.getString(
+                R.string.lock_screen_notifications_summary_show_profile);
+        String summaryShowEntryValue = Integer.toString(
+                R.string.lock_screen_notifications_summary_show_profile);
+        entries.add(summaryShowEntry);
+        values.add(summaryShowEntryValue);
+        setRestrictedIfNotificationFeaturesDisabled(summaryShowEntry, summaryShowEntryValue,
+                KEYGUARD_DISABLE_SECURE_NOTIFICATIONS | KEYGUARD_DISABLE_UNREDACTED_NOTIFICATIONS);
+
+        if (mSecureProfile) {
+            String summaryHideEntry = mContext.getString(
+                    R.string.lock_screen_notifications_summary_hide_profile);
+            String summaryHideEntryValue = Integer.toString(
+                    R.string.lock_screen_notifications_summary_hide_profile);
+            entries.add(summaryHideEntry);
+            values.add(summaryHideEntryValue);
+            setRestrictedIfNotificationFeaturesDisabled(summaryHideEntry, summaryHideEntryValue,
+                    KEYGUARD_DISABLE_SECURE_NOTIFICATIONS);
+        }
+        mLockscreenProfile.setOnPreClickListener(
+                (Preference p) -> Utils.startQuietModeDialogIfNecessary(mContext,
+                        UserManager.get(mContext), mProfileChallengeUserId)
+        );
+
+        mLockscreenProfile.setEntries(entries.toArray(new CharSequence[entries.size()]));
+        mLockscreenProfile.setEntryValues(values.toArray(new CharSequence[values.size()]));
+        updateLockscreenNotificationsForProfile();
+        if (mLockscreenProfile.getEntries().length > 1) {
+            mLockscreenProfile.setOnPreferenceChangeListener(this);
+        } else {
+            // There is one or less option for the user, disable the drop down.
+            mLockscreenProfile.setEnabled(false);
+        }
+    }
+
+    @Override
+    public String getPreferenceKey() {
+        return null;
+    }
+
+    @Override
+    protected boolean isAvailable() {
+        return false;
+    }
+
+    @Override
+    public void onResume() {
+        if (mSettingObserver != null) {
+            mSettingObserver.register(mContext.getContentResolver(), true /* register */);
+        }
+    }
+
+    @Override
+    public void onPause() {
+        if (mSettingObserver != null) {
+            mSettingObserver.register(mContext.getContentResolver(), false /* register */);
+        }
+    }
+
+    @Override
+    public boolean onPreferenceChange(Preference preference, Object newValue) {
+        switch (preference.getKey()) {
+            case KEY_LOCK_SCREEN_PROFILE_NOTIFICATIONS: {
+                final int val = Integer.parseInt((String) newValue);
+                if (val == mLockscreenSelectedValueProfile) {
+                    return false;
+                }
+                final boolean enabled =
+                        val != R.string.lock_screen_notifications_summary_disable_profile;
+                final boolean show =
+                        val == R.string.lock_screen_notifications_summary_show_profile;
+                Settings.Secure.putIntForUser(mContext.getContentResolver(),
+                        Settings.Secure.LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS,
+                        show ? 1 : 0, mProfileChallengeUserId);
+                Settings.Secure.putIntForUser(mContext.getContentResolver(),
+                        Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS,
+                        enabled ? 1 : 0, mProfileChallengeUserId);
+                mLockscreenSelectedValueProfile = val;
+                return true;
+            }
+            case KEY_LOCK_SCREEN_NOTIFICATIONS: {
+                final int val = Integer.parseInt((String) newValue);
+                if (val == mLockscreenSelectedValue) {
+                    return false;
+                }
+                final boolean enabled =
+                        val != R.string.lock_screen_notifications_summary_disable;
+                final boolean show = val == R.string.lock_screen_notifications_summary_show;
+                Settings.Secure.putInt(mContext.getContentResolver(),
+                        Settings.Secure.LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS, show ? 1 : 0);
+                Settings.Secure.putInt(mContext.getContentResolver(),
+                        Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS, enabled ? 1 : 0);
+                mLockscreenSelectedValue = val;
+                return true;
+            }
+            default:
+                return false;
+        }
+    }
+
+    private void setRestrictedIfNotificationFeaturesDisabled(CharSequence entry,
+            CharSequence entryValue, int keyguardNotificationFeatures) {
+        RestrictedLockUtils.EnforcedAdmin admin =
+                RestrictedLockUtils.checkIfKeyguardFeaturesDisabled(
+                        mContext, keyguardNotificationFeatures, UserHandle.myUserId());
+        if (admin != null && mLockscreen != null) {
+            RestrictedDropDownPreference.RestrictedItem item =
+                    new RestrictedDropDownPreference.RestrictedItem(entry, entryValue, admin);
+            mLockscreen.addRestrictedItem(item);
+        }
+        if (mProfileChallengeUserId != UserHandle.USER_NULL) {
+            RestrictedLockUtils.EnforcedAdmin profileAdmin =
+                    RestrictedLockUtils.checkIfKeyguardFeaturesDisabled(
+                            mContext, keyguardNotificationFeatures, mProfileChallengeUserId);
+            if (profileAdmin != null && mLockscreenProfile != null) {
+                RestrictedDropDownPreference.RestrictedItem item =
+                        new RestrictedDropDownPreference.RestrictedItem(
+                                entry, entryValue, profileAdmin);
+                mLockscreenProfile.addRestrictedItem(item);
+            }
+        }
+    }
+
+    private void updateLockscreenNotifications() {
+        if (mLockscreen == null) {
+            return;
+        }
+        final boolean enabled = getLockscreenNotificationsEnabled(UserHandle.myUserId());
+        final boolean allowPrivate = !mSecure
+                || getLockscreenAllowPrivateNotifications(UserHandle.myUserId());
+        mLockscreenSelectedValue = !enabled ? R.string.lock_screen_notifications_summary_disable :
+                allowPrivate ? R.string.lock_screen_notifications_summary_show :
+                        R.string.lock_screen_notifications_summary_hide;
+        mLockscreen.setValue(Integer.toString(mLockscreenSelectedValue));
+    }
+
+    private void updateLockscreenNotificationsForProfile() {
+        if (mProfileChallengeUserId == UserHandle.USER_NULL) {
+            return;
+        }
+        if (mLockscreenProfile == null) {
+            return;
+        }
+        final boolean enabled = getLockscreenNotificationsEnabled(mProfileChallengeUserId);
+        final boolean allowPrivate = !mSecureProfile
+                || getLockscreenAllowPrivateNotifications(mProfileChallengeUserId);
+        mLockscreenSelectedValueProfile = !enabled
+                ? R.string.lock_screen_notifications_summary_disable_profile
+                : (allowPrivate ? R.string.lock_screen_notifications_summary_show_profile
+                        : R.string.lock_screen_notifications_summary_hide_profile);
+        mLockscreenProfile.setValue(Integer.toString(mLockscreenSelectedValueProfile));
+    }
+
+    private boolean getLockscreenNotificationsEnabled(int userId) {
+        return Settings.Secure.getIntForUser(mContext.getContentResolver(),
+                Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS, 0, userId) != 0;
+    }
+
+    private boolean getLockscreenAllowPrivateNotifications(int userId) {
+        return Settings.Secure.getIntForUser(mContext.getContentResolver(),
+                Settings.Secure.LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS, 0, userId) != 0;
+    }
+
+    class SettingObserver extends ContentObserver {
+
+        private final Uri LOCK_SCREEN_PRIVATE_URI =
+                Settings.Secure.getUriFor(Settings.Secure.LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS);
+        private final Uri LOCK_SCREEN_SHOW_URI =
+                Settings.Secure.getUriFor(Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS);
+
+        public SettingObserver() {
+            super(new Handler());
+        }
+
+        public void register(ContentResolver cr, boolean register) {
+            if (register) {
+                cr.registerContentObserver(LOCK_SCREEN_PRIVATE_URI, false, this);
+                cr.registerContentObserver(LOCK_SCREEN_SHOW_URI, false, this);
+            } else {
+                cr.unregisterContentObserver(this);
+            }
+        }
+
+        @Override
+        public void onChange(boolean selfChange, Uri uri) {
+            super.onChange(selfChange, uri);
+            if (LOCK_SCREEN_PRIVATE_URI.equals(uri) || LOCK_SCREEN_SHOW_URI.equals(uri)) {
+                updateLockscreenNotifications();
+                if (mProfileChallengeUserId != UserHandle.USER_NULL) {
+                    updateLockscreenNotificationsForProfile();
+                }
+            }
+        }
+    }
+}
diff --git a/src/com/android/settings/notification/PulseNotificationPreferenceController.java b/src/com/android/settings/notification/PulseNotificationPreferenceController.java
new file mode 100644
index 0000000..03832e5
--- /dev/null
+++ b/src/com/android/settings/notification/PulseNotificationPreferenceController.java
@@ -0,0 +1,133 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.notification;
+
+import android.content.ContentResolver;
+import android.content.Context;
+import android.database.ContentObserver;
+import android.net.Uri;
+import android.os.Handler;
+import android.provider.Settings;
+import android.support.v7.preference.Preference;
+import android.support.v7.preference.PreferenceScreen;
+import android.support.v7.preference.TwoStatePreference;
+import android.util.Log;
+
+import com.android.settings.core.PreferenceController;
+import com.android.settings.core.lifecycle.LifecycleObserver;
+import com.android.settings.core.lifecycle.events.OnPause;
+import com.android.settings.core.lifecycle.events.OnResume;
+
+import static android.provider.Settings.System.NOTIFICATION_LIGHT_PULSE;
+
+public class PulseNotificationPreferenceController extends PreferenceController implements
+        Preference.OnPreferenceChangeListener, LifecycleObserver, OnResume, OnPause {
+
+    private static final String TAG = "PulseNotifPrefContr";
+    private static final String KEY_NOTIFICATION_PULSE = "notification_pulse";
+    private SettingObserver mSettingObserver;
+
+    public PulseNotificationPreferenceController(Context context) {
+        super(context);
+    }
+
+    @Override
+    public void displayPreference(PreferenceScreen screen) {
+        super.displayPreference(screen);
+        Preference preference = screen.findPreference(KEY_NOTIFICATION_PULSE);
+        if (preference != null) {
+            mSettingObserver = new SettingObserver(preference);
+        }
+    }
+
+    @Override
+    public void onResume() {
+        if (mSettingObserver != null) {
+            mSettingObserver.register(mContext.getContentResolver(), true /* register */);
+        }
+    }
+
+    @Override
+    public void onPause() {
+        if (mSettingObserver != null) {
+            mSettingObserver.register(mContext.getContentResolver(), false /* register */);
+        }
+    }
+
+    @Override
+    public boolean handlePreferenceTreeClick(Preference preference) {
+        return false;
+    }
+
+    @Override
+    public String getPreferenceKey() {
+        return KEY_NOTIFICATION_PULSE;
+    }
+
+    @Override
+    protected boolean isAvailable() {
+        return mContext.getResources()
+                .getBoolean(com.android.internal.R.bool.config_intrusiveNotificationLed);
+    }
+
+    @Override
+    public void updateState(Preference preference) {
+        try {
+            final boolean checked = Settings.System.getInt(mContext.getContentResolver(),
+                    NOTIFICATION_LIGHT_PULSE) == 1;
+            ((TwoStatePreference) preference).setChecked(checked);
+        } catch (Settings.SettingNotFoundException snfe) {
+            Log.e(TAG, NOTIFICATION_LIGHT_PULSE + " not found");
+        }
+    }
+
+    @Override
+    public boolean onPreferenceChange(Preference preference, Object newValue) {
+        final boolean val = (Boolean) newValue;
+        return Settings.System.putInt(mContext.getContentResolver(),
+                NOTIFICATION_LIGHT_PULSE, val ? 1 : 0);
+    }
+
+    class SettingObserver extends ContentObserver {
+
+        private final Uri NOTIFICATION_LIGHT_PULSE_URI =
+                Settings.System.getUriFor(Settings.System.NOTIFICATION_LIGHT_PULSE);
+
+        private final Preference mPreference;
+
+        public SettingObserver(Preference preference) {
+            super(new Handler());
+            mPreference = preference;
+        }
+
+        public void register(ContentResolver cr, boolean register) {
+            if (register) {
+                cr.registerContentObserver(NOTIFICATION_LIGHT_PULSE_URI, false, this);
+            } else {
+                cr.unregisterContentObserver(this);
+            }
+        }
+
+        @Override
+        public void onChange(boolean selfChange, Uri uri) {
+            super.onChange(selfChange, uri);
+            if (NOTIFICATION_LIGHT_PULSE_URI.equals(uri)) {
+                updateState(mPreference);
+            }
+        }
+    }
+}
diff --git a/src/com/android/settings/widget/RingProgressBar.java b/src/com/android/settings/widget/RingProgressBar.java
new file mode 100644
index 0000000..605e4e9
--- /dev/null
+++ b/src/com/android/settings/widget/RingProgressBar.java
@@ -0,0 +1,57 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.widget;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.widget.ProgressBar;
+
+import com.android.settings.R;
+
+/**
+ * A (determinate) progress bar in the form of a ring. The progress bar goes clockwise starting
+ * from the 12 o'clock position. This view maintain equal width and height using a strategy similar
+ * to "centerInside" for ImageView.
+ */
+public class RingProgressBar extends ProgressBar {
+
+    public RingProgressBar(Context context) {
+        this(context, null);
+    }
+
+    public RingProgressBar(Context context, AttributeSet attrs) {
+        this(context, attrs, 0);
+    }
+
+    public RingProgressBar(Context context, AttributeSet attrs, int defStyleAttr) {
+        this(context, attrs, defStyleAttr, R.style.RingProgressBarStyle);
+    }
+
+    public RingProgressBar(Context context, AttributeSet attrs, int defStyleAttr,
+            int defStyleRes) {
+        super(context, attrs, defStyleAttr, defStyleRes);
+    }
+
+    @Override
+    protected synchronized void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
+        final int measuredHeight = getMeasuredHeight();
+        final int measuredWidth = getMeasuredWidth();
+        final int shortSide = Math.min(measuredHeight, measuredWidth);
+        setMeasuredDimension(shortSide, shortSide);
+    }
+}
diff --git a/tests/app/src/com/android/settings/tests/DashboardAdapterTest.java b/tests/app/src/com/android/settings/tests/DashboardAdapterTest.java
new file mode 100644
index 0000000..4b8e6cf
--- /dev/null
+++ b/tests/app/src/com/android/settings/tests/DashboardAdapterTest.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.settings.tests;
+
+import android.app.Instrumentation;
+import android.content.Context;
+import android.content.Intent;
+import android.provider.Settings;
+import android.support.test.InstrumentationRegistry;
+import android.support.test.filters.SmallTest;
+import android.support.test.runner.AndroidJUnit4;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import com.android.settings.R;
+
+import static android.support.test.espresso.Espresso.onView;
+import static android.support.test.espresso.action.ViewActions.click;
+import static android.support.test.espresso.assertion.ViewAssertions.matches;
+import static android.support.test.espresso.matcher.ViewMatchers.*;
+import static android.support.test.espresso.matcher.ViewMatchers.Visibility.VISIBLE;
+import static org.hamcrest.core.AllOf.allOf;
+
+@RunWith(AndroidJUnit4.class)
+@SmallTest
+public class DashboardAdapterTest {
+    @Before
+    public void SetUp() {
+        Instrumentation instrumentation = InstrumentationRegistry.getInstrumentation();
+        instrumentation.startActivitySync(new Intent(Settings
+                .ACTION_SETTINGS));
+    }
+
+    @Test
+    public void testTileConsistency_ToggleSuggestionsAndOpenBluetooth_shouldInBluetooth()
+            throws Exception{
+        final Context context = InstrumentationRegistry.getTargetContext();
+
+        onView(allOf(withText(context.getString(R.string.suggestions_title)),
+                withEffectiveVisibility(VISIBLE))).perform(click());
+        onView(allOf(withText(context.getString(R.string.bluetooth_settings)),
+                withEffectiveVisibility(VISIBLE))).perform(click());
+
+        // It should go to Bluetooth sub page, not other page or crash
+        onView(allOf(withText(context.getString(R.string.bluetooth_settings)),
+                withEffectiveVisibility(VISIBLE))).check(matches(isDisplayed()));
+
+    }
+}
diff --git a/tests/app/src/com/android/settings/tests/KeepOnScreenTest.java b/tests/app/src/com/android/settings/tests/KeepOnScreenTest.java
new file mode 100644
index 0000000..0b1308e
--- /dev/null
+++ b/tests/app/src/com/android/settings/tests/KeepOnScreenTest.java
@@ -0,0 +1,70 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.tests;
+
+import android.app.Instrumentation;
+import android.content.Context;
+import android.content.Intent;
+import android.os.BatteryManager;
+import android.provider.Settings;
+import android.support.test.InstrumentationRegistry;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.runner.RunWith;
+import android.support.test.filters.SmallTest;
+import android.support.test.runner.AndroidJUnit4;
+import org.junit.Test;
+import com.android.settings.R;
+
+import static android.support.test.espresso.Espresso.onView;
+import static android.support.test.espresso.action.ViewActions.click;
+import static android.support.test.espresso.matcher.ViewMatchers.*;
+import static junit.framework.Assert.assertEquals;
+
+@RunWith(AndroidJUnit4.class)
+@SmallTest
+public class KeepOnScreenTest {
+    private static int EXPECTED_FLAG = BatteryManager.BATTERY_PLUGGED_AC
+            | BatteryManager.BATTERY_PLUGGED_USB | BatteryManager.BATTERY_PLUGGED_WIRELESS;
+
+    @Test
+    public void testStayAwake_turnOn_StayAwakeWhileWirelessCharging() throws Exception{
+        Instrumentation instrumentation = InstrumentationRegistry.getInstrumentation();
+        instrumentation.startActivitySync(new Intent(android.provider.Settings
+                .ACTION_APPLICATION_DEVELOPMENT_SETTINGS));
+
+        final Context targetContext = instrumentation.getTargetContext();
+        final int prevFlag = Settings.Global.getInt(targetContext.getContentResolver(), Settings
+                .Global.STAY_ON_WHILE_PLUGGED_IN);
+
+        // Turn on "Stay Awake" if needed
+        if (prevFlag == 0) {
+            onView(withText(R.string.keep_screen_on)).perform(click());
+        }
+
+        final int currentFlag = Settings.Global.getInt(targetContext.getContentResolver(), Settings
+                .Global.STAY_ON_WHILE_PLUGGED_IN);
+
+        assertEquals(EXPECTED_FLAG, currentFlag);
+
+        // Since this app doesn't have permission(and shouldn't have) to change global setting, we
+        // can only tearDown in this way
+        if (prevFlag != currentFlag) {
+            onView(withText(R.string.keep_screen_on)).perform(click());
+        }
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/UtilsTest.java b/tests/robotests/src/com/android/settings/UtilsTest.java
new file mode 100644
index 0000000..e486d31
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/UtilsTest.java
@@ -0,0 +1,69 @@
+package com.android.settings;
+
+import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.when;
+
+import android.content.Context;
+import android.net.ConnectivityManager;
+import android.net.LinkAddress;
+import android.net.LinkProperties;
+import android.net.Network;
+import android.net.wifi.WifiManager;
+import java.net.InetAddress;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RobolectricTestRunner;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+
+@RunWith(RobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public class UtilsTest {
+
+    private Context mContext;
+    @Mock private WifiManager wifiManager;
+    @Mock private Network network;
+    @Mock private ConnectivityManager connectivityManager;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+
+        mContext = spy(RuntimeEnvironment.application);
+        when(mContext.getSystemService(WifiManager.class)).thenReturn(wifiManager);
+        when(mContext.getSystemService(Context.CONNECTIVITY_SERVICE))
+            .thenReturn(connectivityManager);
+    }
+
+    @Test
+    public void testGetWifiIpAddresses_succeeds() throws Exception {
+        when(wifiManager.getCurrentNetwork()).thenReturn(network);
+        LinkAddress address = new LinkAddress(InetAddress.getByName("127.0.0.1"), 0);
+        LinkProperties lp = new LinkProperties();
+        lp.addLinkAddress(address);
+        when(connectivityManager.getLinkProperties(network)).thenReturn(lp);
+
+        assertThat(Utils.getWifiIpAddresses(mContext)).isEqualTo("127.0.0.1");
+    }
+
+    @Test
+    public void testGetWifiIpAddresses_nullLinkProperties() {
+        when(wifiManager.getCurrentNetwork()).thenReturn(network);
+        // Explicitly set the return value to null for readability sake.
+        when(connectivityManager.getLinkProperties(network)).thenReturn(null);
+
+        assertThat(Utils.getWifiIpAddresses(mContext)).isNull();
+    }
+
+    @Test
+    public void testGetWifiIpAddresses_nullNetwork() {
+        // Explicitly set the return value to null for readability sake.
+        when(wifiManager.getCurrentNetwork()).thenReturn(null);
+
+        assertThat(Utils.getWifiIpAddresses(mContext)).isNull();
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/accounts/UserAndAccountDashboardFragmentTest.java b/tests/robotests/src/com/android/settings/accounts/UserAndAccountDashboardFragmentTest.java
new file mode 100644
index 0000000..2d266b6
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/accounts/UserAndAccountDashboardFragmentTest.java
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+package com.android.settings.accounts;
+
+import android.content.Context;
+
+import com.android.settings.TestConfig;
+import com.android.settings.testutils.FakeFeatureFactory;
+import com.android.settingslib.drawer.CategoryKey;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Answers;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RobolectricTestRunner;
+import org.robolectric.annotation.Config;
+
+import static com.google.common.truth.Truth.assertThat;
+
+@RunWith(RobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public class UserAndAccountDashboardFragmentTest {
+
+  @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+  private Context mContext;
+
+  private UserAndAccountDashboardFragment mFragment;
+
+  @Before
+  public void setUp() {
+    MockitoAnnotations.initMocks(this);
+    FakeFeatureFactory.setupForTest(mContext);
+    mFragment = new UserAndAccountDashboardFragment();
+  }
+
+  @Test
+  public void testCategory_isConnectedDevice() {
+    assertThat(mFragment.getCategoryKey()).isEqualTo(CategoryKey.CATEGORY_ACCOUNT);
+  }
+
+}
diff --git a/tests/robotests/src/com/android/settings/applications/AdvancedAppSettingsTest.java b/tests/robotests/src/com/android/settings/applications/AdvancedAppSettingsTest.java
new file mode 100644
index 0000000..d0c5889
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/applications/AdvancedAppSettingsTest.java
@@ -0,0 +1,68 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.applications;
+
+import android.content.Context;
+
+import com.android.settings.R;
+import com.android.settings.TestConfig;
+import com.android.settings.testutils.FakeFeatureFactory;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Answers;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RobolectricTestRunner;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadows.ShadowApplication;
+
+import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.Mockito.when;
+
+@RunWith(RobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public class AdvancedAppSettingsTest {
+
+    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+    private Context mContext;
+
+    private FakeFeatureFactory mFeatureFactory;
+    private AdvancedAppSettings mFragment;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        FakeFeatureFactory.setupForTest(mContext);
+        mFeatureFactory = (FakeFeatureFactory) FakeFeatureFactory.getFactory(mContext);
+        mFragment = new AdvancedAppSettings();
+        mFragment.onAttach(ShadowApplication.getInstance().getApplicationContext());
+    }
+
+    @Test
+    public void getPreferenceScreenResId_differentIAEnabledState_shouldUseDifferentPrefLayout() {
+        when(mFeatureFactory.dashboardFeatureProvider.isEnabled()).thenReturn(true);
+        assertThat(mFragment.getPreferenceScreenResId()).isEqualTo(
+                R.xml.app_default_settings);
+
+        when(mFeatureFactory.dashboardFeatureProvider.isEnabled()).thenReturn(false);
+        assertThat(mFragment.getPreferenceScreenResId()).isEqualTo(
+                R.xml.advanced_apps);
+    }
+
+}
diff --git a/tests/robotests/src/com/android/settings/dashboard/DashboardDataTest.java b/tests/robotests/src/com/android/settings/dashboard/DashboardDataTest.java
new file mode 100644
index 0000000..52c2103
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/dashboard/DashboardDataTest.java
@@ -0,0 +1,336 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.dashboard;
+
+import android.support.annotation.NonNull;
+import android.support.v7.util.DiffUtil;
+import android.support.v7.util.ListUpdateCallback;
+import com.android.settings.TestConfig;
+import com.android.settings.dashboard.conditional.AirplaneModeCondition;
+import com.android.settings.dashboard.conditional.Condition;
+import com.android.settingslib.drawer.DashboardCategory;
+import com.android.settingslib.drawer.Tile;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RobolectricTestRunner;
+import org.robolectric.annotation.Config;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+@RunWith(RobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public class DashboardDataTest {
+    private static final String TEST_SUGGESTION_TITLE = "Use fingerprint";
+    private static final String TEST_CATEGORY_TILE_TITLE = "Display";
+
+    private DashboardData mDashboardDataWithOneConditions;
+    private DashboardData mDashboardDataWithTwoConditions;
+    private DashboardData mDashboardDataWithNoItems;
+    @Mock
+    private Tile mTestCategoryTile;
+    @Mock
+    private Tile mTestSuggestion;
+    @Mock
+    private DashboardCategory mDashboardCategory;
+    @Mock
+    private Condition mTestCondition;
+    @Mock
+    private Condition mSecondCondition; // condition used to test insert in DiffUtil
+
+    @Before
+    public void SetUp() {
+        MockitoAnnotations.initMocks(this);
+
+        // Build suggestions
+        final List<Tile> suggestions = new ArrayList<>();
+        mTestSuggestion.title = TEST_SUGGESTION_TITLE;
+        suggestions.add(mTestSuggestion);
+
+        // Build oneItemConditions
+        final List<Condition> oneItemConditions = new ArrayList<>();
+        when(mTestCondition.shouldShow()).thenReturn(true);
+        oneItemConditions.add(mTestCondition);
+
+        // Build twoItemConditions
+        final List<Condition> twoItemsConditions = new ArrayList<>();
+        when(mSecondCondition.shouldShow()).thenReturn(true);
+        twoItemsConditions.add(mTestCondition);
+        twoItemsConditions.add(mSecondCondition);
+
+        // Build categories
+        final List<DashboardCategory> categories = new ArrayList<>();
+        mTestCategoryTile.title = TEST_CATEGORY_TILE_TITLE;
+        mDashboardCategory.title = "test";
+        mDashboardCategory.tiles = new ArrayList<>();
+        mDashboardCategory.tiles.add(mTestCategoryTile);
+        categories.add(mDashboardCategory);
+
+        // Build DashboardData 
+        mDashboardDataWithOneConditions = new DashboardData.Builder()
+                .setConditions(oneItemConditions)
+                .setCategories(categories)
+                .setSuggestions(suggestions)
+                .build();
+
+        mDashboardDataWithTwoConditions = new DashboardData.Builder()
+                .setConditions(twoItemsConditions)
+                .setCategories(categories)
+                .setSuggestions(suggestions)
+                .build();
+
+        mDashboardDataWithNoItems = new DashboardData.Builder()
+                .setConditions(null)
+                .setCategories(null)
+                .setSuggestions(null)
+                .build();
+    }
+
+    @Test
+    public void testBuildItemsData_containsAllData() {
+        final DashboardData.SuggestionHeaderData data =
+                new DashboardData.SuggestionHeaderData(false, 1, 0);
+        final Object[] expectedObjects = {mTestCondition, null, data, mTestSuggestion,
+                mDashboardCategory, mTestCategoryTile};
+        final int expectedSize = expectedObjects.length;
+
+        assertThat(mDashboardDataWithOneConditions.getItemList().size())
+                .isEqualTo(expectedSize);
+        for (int i = 0; i < expectedSize; i++) {
+            if (mDashboardDataWithOneConditions.getItemEntityByPosition(i)
+                    instanceof DashboardData.SuggestionHeaderData) {
+                // SuggestionHeaderData is created inside when build, we can only use isEqualTo
+                assertThat(mDashboardDataWithOneConditions.getItemEntityByPosition(i))
+                        .isEqualTo(expectedObjects[i]);
+            } else {
+                assertThat(mDashboardDataWithOneConditions.getItemEntityByPosition(i))
+                        .isSameAs(expectedObjects[i]);
+            }
+        }
+    }
+
+    @Test
+    public void testGetPositionByEntity_selfInstance_returnPositionFound() {
+        final int position = mDashboardDataWithOneConditions
+                .getPositionByEntity(mTestCondition);
+        assertThat(position).isNotEqualTo(DashboardData.POSITION_NOT_FOUND);
+    }
+
+    @Test
+    public void testGetPositionByEntity_notExisted_returnNotFound() {
+        final Condition condition = mock(AirplaneModeCondition.class);
+        final int position = mDashboardDataWithOneConditions.getPositionByEntity(condition);
+        assertThat(position).isEqualTo(DashboardData.POSITION_NOT_FOUND);
+    }
+
+    @Test
+    public void testGetPositionByTile_selfInstance_returnPositionFound() {
+        final int position = mDashboardDataWithOneConditions
+                .getPositionByTile(mTestCategoryTile);
+        assertThat(position).isNotEqualTo(DashboardData.POSITION_NOT_FOUND);
+    }
+
+    @Test
+    public void testGetPositionByTile_equalTitle_returnPositionFound() {
+        final Tile tile = mock(Tile.class);
+        tile.title = TEST_CATEGORY_TILE_TITLE;
+        final int position = mDashboardDataWithOneConditions.getPositionByTile(tile);
+        assertThat(position).isNotEqualTo(DashboardData.POSITION_NOT_FOUND);
+    }
+
+    @Test
+    public void testGetPositionByTile_notExisted_returnNotFound() {
+        final Tile tile = mock(Tile.class);
+        tile.title = "";
+        final int position = mDashboardDataWithOneConditions.getPositionByTile(tile);
+        assertThat(position).isEqualTo(DashboardData.POSITION_NOT_FOUND);
+    }
+
+    @Test
+    public void testDiffUtil_DataEqual_noResultData() {
+        List<ListUpdateResult.ResultData> testResultData = new ArrayList<>();
+        testDiffUtil(mDashboardDataWithOneConditions, 
+                mDashboardDataWithOneConditions, testResultData);
+    }
+
+    @Test
+    public void testDiffUtil_InsertOneCondition_ResultDataOneInserted() {
+        //Build testResultData
+        final List<ListUpdateResult.ResultData> testResultData = new ArrayList<>();
+        testResultData.add(new ListUpdateResult.ResultData(
+                ListUpdateResult.ResultData.TYPE_OPERATION_INSERT, 1, 1));
+
+        testDiffUtil(mDashboardDataWithOneConditions,
+                mDashboardDataWithTwoConditions, testResultData);
+    }
+
+    @Test
+    public void testDiffUtil_DeleteAllData_ResultDataOneDeleted() {
+        //Build testResultData
+        final List<ListUpdateResult.ResultData> testResultData = new ArrayList<>();
+        testResultData.add(new ListUpdateResult.ResultData(
+                ListUpdateResult.ResultData.TYPE_OPERATION_REMOVE, 0, 6));
+
+        testDiffUtil(mDashboardDataWithOneConditions, mDashboardDataWithNoItems, testResultData);
+    }
+
+    /**
+     * Test when using the
+     * {@link com.android.settings.dashboard.DashboardData.ItemsDataDiffCallback}
+     * to transfer List from {@paramref baseDashboardData} to {@paramref diffDashboardData}, whether
+     * the transform data result is equals to {@paramref testResultData}
+     * <p>
+     * The steps are described below:
+     * 1. Calculate a {@link android.support.v7.util.DiffUtil.DiffResult} from
+     * {@paramref baseDashboardData} to {@paramref diffDashboardData}
+     * <p>
+     * 2. Dispatch the {@link android.support.v7.util.DiffUtil.DiffResult} calculated from step 1
+     * into {@link ListUpdateResult}
+     * <p>
+     * 3. Get result data(a.k.a. baseResultData) from {@link ListUpdateResult} and compare it to
+     * {@paramref testResultData}
+     * <p>
+     * Because baseResultData and {@paramref testResultData} don't have sequence. When do the
+     * comparison, we will sort them first and then compare the inside data from them one by one.
+     *
+     * @param baseDashboardData
+     * @param diffDashboardData
+     * @param testResultData
+     */
+    private void testDiffUtil(DashboardData baseDashboardData, DashboardData diffDashboardData,
+            List<ListUpdateResult.ResultData> testResultData) {
+        final DiffUtil.DiffResult diffUtilResult = DiffUtil.calculateDiff(
+                new DashboardData.ItemsDataDiffCallback(
+                        baseDashboardData.getItemList(), diffDashboardData.getItemList()));
+
+        // Dispatch to listUpdateResult, then listUpdateResult will have result data
+        final ListUpdateResult listUpdateResult = new ListUpdateResult();
+        diffUtilResult.dispatchUpdatesTo(listUpdateResult);
+
+        final List<ListUpdateResult.ResultData> baseResultData = listUpdateResult.getResultData();
+        assertThat(testResultData.size()).isEqualTo(baseResultData.size());
+
+        // Sort them so we can compare them one by one using a for loop
+        Collections.sort(baseResultData);
+        Collections.sort(testResultData);
+        final int size = baseResultData.size();
+        for (int i = 0; i < size; i++) {
+            // Refer to equals method in ResultData
+            assertThat(baseResultData.get(i)).isEqualTo(testResultData.get(i));
+        }
+    }
+
+    /**
+     * This class contains the result about how the changes made to convert one
+     * list to another list. It implements ListUpdateCallback to record the result data.
+     */
+    private static class ListUpdateResult implements ListUpdateCallback {
+        final private List<ResultData> mResultData;
+
+        public ListUpdateResult() {
+            mResultData = new ArrayList<>();
+        }
+
+        public List<ResultData> getResultData() {
+            return mResultData;
+        }
+
+        @Override
+        public void onInserted(int position, int count) {
+            mResultData.add(new ResultData(ResultData.TYPE_OPERATION_INSERT, position, count));
+        }
+
+        @Override
+        public void onRemoved(int position, int count) {
+            mResultData.add(new ResultData(ResultData.TYPE_OPERATION_REMOVE, position, count));
+        }
+
+        @Override
+        public void onMoved(int fromPosition, int toPosition) {
+            mResultData.add(
+                    new ResultData(ResultData.TYPE_OPERATION_MOVE, fromPosition, toPosition));
+        }
+
+        @Override
+        public void onChanged(int position, int count, Object payload) {
+            mResultData.add(new ResultData(ResultData.TYPE_OPERATION_CHANGE, position, count));
+        }
+
+        /**
+         * This class contains general type and field to record the operation data generated
+         * in {@link ListUpdateCallback}. Please refer to {@link ListUpdateCallback} for more info.
+         * <p>
+         * The following are examples about the data stored in this class:
+         * <p>
+         * "The data starts from position(arg1) with count number(arg2) is changed(operation)"
+         * or "The data is moved(operation) from position1(arg1) to position2(arg2)"
+         */
+        private static class ResultData implements Comparable<ResultData> {
+            public static final int TYPE_OPERATION_INSERT = 0;
+            public static final int TYPE_OPERATION_REMOVE = 1;
+            public static final int TYPE_OPERATION_MOVE = 2;
+            public static final int TYPE_OPERATION_CHANGE = 3;
+
+            public final int operation;
+            public final int arg1;
+            public final int arg2;
+
+            public ResultData(int operation, int arg1, int arg2) {
+                this.operation = operation;
+                this.arg1 = arg1;
+                this.arg2 = arg2;
+            }
+
+            @Override
+            public boolean equals(Object obj) {
+                if (this == obj) {
+                    return true;
+                }
+
+                if (!(obj instanceof ResultData)) {
+                    return false;
+                }
+
+                ResultData targetData = (ResultData) obj;
+
+                return operation == targetData.operation && arg1 == targetData.arg1
+                        && arg2 == targetData.arg2;
+            }
+
+            @Override
+            public int compareTo(@NonNull ResultData resultData) {
+                if (this.operation != resultData.operation) {
+                    return operation - resultData.operation;
+                }
+
+                if (arg1 != resultData.arg1) {
+                    return arg1 - resultData.arg1;
+                }
+
+                return arg2 - resultData.arg2;
+            }
+        }
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/dashboard/DashboardFragmentTest.java b/tests/robotests/src/com/android/settings/dashboard/DashboardFragmentTest.java
index cc064df..6d11041 100644
--- a/tests/robotests/src/com/android/settings/dashboard/DashboardFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/dashboard/DashboardFragmentTest.java
@@ -16,10 +16,14 @@
 package com.android.settings.dashboard;
 
 import android.content.Context;
+import android.content.Intent;
+import android.graphics.Bitmap;
+import android.graphics.drawable.Icon;
 import android.os.Bundle;
 import android.support.v7.preference.Preference;
 import android.support.v7.preference.PreferenceScreen;
 
+import com.android.settings.SettingsActivity;
 import com.android.settings.TestConfig;
 import com.android.settings.core.PreferenceController;
 import com.android.settings.overlay.FeatureFactory;
@@ -44,6 +48,7 @@
 import static com.google.common.truth.Truth.assertThat;
 import static org.mockito.Matchers.any;
 import static org.mockito.Matchers.anyString;
+import static org.mockito.Matchers.eq;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.verify;
@@ -59,6 +64,8 @@
     private DashboardCategory mDashboardCategory;
     @Mock
     private FakeFeatureFactory mFakeFeatureFactory;
+    @Mock
+    private ProgressiveDisclosureMixin mDisclosureMixin;
     private TestFragment mTestFragment;
 
     @Before
@@ -69,9 +76,12 @@
         mDashboardCategory.tiles = new ArrayList<>();
         mDashboardCategory.tiles.add(new Tile());
         mTestFragment = new TestFragment(ShadowApplication.getInstance().getApplicationContext());
-        mTestFragment.onAttach(ShadowApplication.getInstance().getApplicationContext());
+        when(mFakeFeatureFactory.dashboardFeatureProvider
+                .getProgressiveDisclosureMixin(any(Context.class), eq(mTestFragment)))
+                .thenReturn(mDisclosureMixin);
         when(mFakeFeatureFactory.dashboardFeatureProvider.getTilesForCategory(anyString()))
                 .thenReturn(mDashboardCategory);
+        mTestFragment.onAttach(ShadowApplication.getInstance().getApplicationContext());
     }
 
     @Test
@@ -87,11 +97,14 @@
 
     @Test
     public void displayTilesAsPreference_shouldAddTilesWithIntent() {
+        when(mFakeFeatureFactory.dashboardFeatureProvider.getTilesForCategory(anyString()))
+                .thenReturn(mDashboardCategory);
         when(mFakeFeatureFactory.dashboardFeatureProvider.getDashboardKeyForTile(any(Tile.class)))
                 .thenReturn("test_key");
         mTestFragment.onCreatePreferences(new Bundle(), "rootKey");
 
-        verify(mTestFragment.mScreen).addPreference(any(DashboardTilePreference.class));
+        verify(mDisclosureMixin).addPreference(any(PreferenceScreen.class),
+                any(DashboardTilePreference.class));
     }
 
     @Test
@@ -109,6 +122,42 @@
         verify(mTestFragment.mScreen, never()).addPreference(any(DashboardTilePreference.class));
     }
 
+    @Test
+    public void bindPreference_shouldBindAllData() {
+        final Preference preference = new Preference(
+                ShadowApplication.getInstance().getApplicationContext());
+        final Tile tile = new Tile();
+        tile.title = "title";
+        tile.summary = "summary";
+        tile.icon = Icon.createWithBitmap(Bitmap.createBitmap(1, 1, Bitmap.Config.RGB_565));
+        tile.metaData = new Bundle();
+        tile.metaData.putString(SettingsActivity.META_DATA_KEY_FRAGMENT_CLASS, "HI");
+        tile.priority = 10;
+        mTestFragment.bindPreferenceToTile(mContext, preference, tile, "123");
+
+        assertThat(preference.getTitle()).isEqualTo(tile.title);
+        assertThat(preference.getSummary()).isEqualTo(tile.summary);
+        assertThat(preference.getIcon()).isNotNull();
+        assertThat(preference.getFragment())
+                .isEqualTo(tile.metaData.getString(SettingsActivity.META_DATA_KEY_FRAGMENT_CLASS));
+        assertThat(preference.getOrder()).isEqualTo(-tile.priority);
+    }
+
+    @Test
+    public void bindPreference_noFragmentMetadata_shouldBindIntent() {
+        final Preference preference = new Preference(
+                ShadowApplication.getInstance().getApplicationContext());
+        final Tile tile = new Tile();
+        tile.metaData = new Bundle();
+        tile.priority = 10;
+        tile.intent = new Intent();
+        mTestFragment.bindPreferenceToTile(mContext, preference, tile, "123");
+
+        assertThat(preference.getFragment()).isNull();
+        assertThat(preference.getOnPreferenceClickListener()).isNotNull();
+        assertThat(preference.getOrder()).isEqualTo(-tile.priority);
+    }
+
     public static class TestPreferenceController extends PreferenceController {
 
         public TestPreferenceController(Context context) {
@@ -139,7 +188,6 @@
     public static class TestFragment extends DashboardFragment {
 
         private final Context mContext;
-        @Mock
         public PreferenceScreen mScreen;
 
         public TestFragment(Context context) {
diff --git a/tests/robotests/src/com/android/settings/dashboard/ProgressiveDisclosureTest.java b/tests/robotests/src/com/android/settings/dashboard/ProgressiveDisclosureTest.java
index 6964d74..be02596 100644
--- a/tests/robotests/src/com/android/settings/dashboard/ProgressiveDisclosureTest.java
+++ b/tests/robotests/src/com/android/settings/dashboard/ProgressiveDisclosureTest.java
@@ -35,9 +35,12 @@
 import org.robolectric.annotation.Config;
 import org.robolectric.shadows.ShadowApplication;
 
+import java.util.List;
+
 import static com.google.common.truth.Truth.assertThat;
 import static org.mockito.Matchers.any;
 import static org.mockito.Matchers.anyInt;
+import static org.mockito.Matchers.anyString;
 import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
@@ -53,6 +56,7 @@
     private FakeFeatureFactory mFakeFeatureFactory;
     @Mock(answer = Answers.RETURNS_DEEP_STUBS)
     private PreferenceFragment mPreferenceFragment;
+    private PreferenceScreen mScreen;
     private Context mAppContext;
     private Preference mPreference;
 
@@ -62,9 +66,11 @@
     public void setUp() {
         MockitoAnnotations.initMocks(this);
         FakeFeatureFactory.setupForTest(mContext);
+        mScreen = mPreferenceFragment.getPreferenceScreen();
         mAppContext = ShadowApplication.getInstance().getApplicationContext();
         mFakeFeatureFactory = (FakeFeatureFactory) FeatureFactory.getFactory(mContext);
-        mMixin = new ProgressiveDisclosureMixin(mAppContext, mPreferenceFragment);
+        mMixin = new ProgressiveDisclosureMixin(mAppContext,
+                mFakeFeatureFactory.dashboardFeatureProvider, mPreferenceFragment);
         mPreference = new Preference(mAppContext);
         mPreference.setKey("test");
         when(mFakeFeatureFactory.dashboardFeatureProvider.isEnabled()).thenReturn(true);
@@ -72,57 +78,81 @@
 
     @Test
     public void shouldNotCollapse_lessPreferenceThanLimit() {
-        when(mPreferenceFragment.getPreferenceScreen().getPreferenceCount()).thenReturn(5);
+        when(mScreen.getPreferenceCount()).thenReturn(5);
 
         mMixin.setTileLimit(10);
 
-        assertThat(mMixin.shouldCollapse(mPreferenceFragment.getPreferenceScreen())).isFalse();
+        assertThat(mMixin.shouldCollapse(mScreen)).isFalse();
     }
 
     @Test
     public void shouldCollapse_morePreferenceThanLimit() {
         when(mFakeFeatureFactory.dashboardFeatureProvider.isEnabled()).thenReturn(true);
-        when(mPreferenceFragment.getPreferenceScreen().getPreferenceCount()).thenReturn(5);
+        when(mScreen.getPreferenceCount()).thenReturn(5);
 
-        assertThat(mMixin.shouldCollapse(mPreferenceFragment.getPreferenceScreen())).isTrue();
+        assertThat(mMixin.shouldCollapse(mScreen)).isTrue();
     }
 
     @Test
     public void findPreference_prefInCollapsedList_shouldFindIt() {
+        when(mScreen.findPreference(anyString())).thenReturn(null);
         mMixin.addToCollapsedList(mPreference);
 
-        Preference pref = mMixin.findPreference(mPreference.getKey());
+        Preference pref = mMixin.findPreference(mScreen, mPreference.getKey());
 
         assertThat(pref).isNotNull();
         assertThat(pref).isSameAs(mPreference);
     }
 
     @Test
-    public void findPreference_prefNotInCollapsedList_shouldNotFindIt() {
-        Preference pref = mMixin.findPreference(mPreference.getKey());
+    public void findPreference_prefOnScreen_shouldFindIt() {
+        when(mScreen.findPreference(mPreference.getKey())).thenReturn(mPreference);
+
+        Preference pref = mMixin.findPreference(mScreen, mPreference.getKey());
+
+        assertThat(pref).isNotNull();
+        assertThat(pref).isSameAs(mPreference);
+    }
+
+    @Test
+    public void findPreference_prefNotInCollapsedListOrScreen_shouldNotFindIt() {
+        when(mScreen.findPreference(anyString())).thenReturn(null);
+        Preference pref = mMixin.findPreference(mScreen, mPreference.getKey());
 
         assertThat(pref).isNull();
     }
 
     @Test
     public void findPreference_prefRemovedFromCollapsedList_shouldNotFindIt() {
+        when(mScreen.findPreference(anyString())).thenReturn(null);
         mMixin.addToCollapsedList(mPreference);
         mMixin.removePreference(mPreferenceFragment.getPreferenceScreen(), mPreference.getKey());
-        Preference pref = mMixin.findPreference(mPreference.getKey());
+
+        Preference pref = mMixin.findPreference(mScreen, mPreference.getKey());
 
         assertThat(pref).isNull();
     }
 
     @Test
+    public void removePreference_shouldRemoveOnScreenPreference() {
+        when(mScreen.findPreference(mPreference.getKey())).thenReturn(mPreference);
+
+        mMixin.removePreference(mScreen, mPreference.getKey());
+
+        verify(mScreen).removePreference(mPreference);
+    }
+
+    @Test
     public void removeLastPreference_shouldRemoveExpandButtonToo() {
+        when(mScreen.findPreference(anyString())).thenReturn(null);
         mMixin.addToCollapsedList(mPreference);
         // Collapsed
         assertThat(mMixin.isCollapsed()).isTrue();
 
-        mMixin.removePreference(mPreferenceFragment.getPreferenceScreen(), mPreference.getKey());
+        mMixin.removePreference(mScreen, mPreference.getKey());
 
         // Removing expand button
-        verify(mPreferenceFragment.getPreferenceScreen()).removePreference(any(Preference.class));
+        verify(mScreen).removePreference(any(Preference.class));
         // No longer collapsed
         assertThat(mMixin.isCollapsed()).isFalse();
     }
@@ -153,4 +183,77 @@
         verify(screen, times(3)).removePreference(any(Preference.class));
     }
 
+    @Test
+    public void addToCollapsedList_shouldAddInOrder() {
+        final Preference pref1 = new Preference(mAppContext);
+        final Preference pref2 = new Preference(mAppContext);
+        pref1.setOrder(10);
+        pref2.setOrder(20);
+
+        // Pref1 has lower order than pref2, but add pref2 first. The collapsed list should maintain
+        // items in increasing order.
+        mMixin.addToCollapsedList(pref2);
+        mMixin.addToCollapsedList(pref1);
+
+        List<Preference> collapsedList = mMixin.getCollapsedPrefs();
+        assertThat(collapsedList.get(0)).isSameAs(pref1);
+        assertThat(collapsedList.get(1)).isSameAs(pref2);
+    }
+
+    @Test
+    public void addPreferenceWhenCollapsed_noPrefOnScreen_shouldAddToList() {
+        // Add something to collapsed list so we are in collapsed state.
+        mMixin.addToCollapsedList(new Preference(mAppContext));
+        assertThat(mMixin.getCollapsedPrefs().size()).isEqualTo(1);
+
+        // Just 1 preference on screen: the more button
+        when(mScreen.getPreferenceCount()).thenReturn(1);
+        final Preference toBeAdded = new Preference(mAppContext);
+        toBeAdded.setOrder(100);
+        mMixin.addPreference(mScreen, toBeAdded);
+
+        // Should have 2 prefs in collapsed list now
+        assertThat(mMixin.getCollapsedPrefs().size()).isEqualTo(2);
+        assertThat(mMixin.getCollapsedPrefs().get(0)).isSameAs(toBeAdded);
+    }
+
+    @Test
+    public void addPreferenceWhenCollapsed_prefOrderLessThanLastOnScreen_shouldAddToScreen() {
+        final Preference lastPref = new Preference(mAppContext);
+        lastPref.setOrder(100);
+        // Add something to collapsed list so we are in collapsed state.
+        mMixin.addToCollapsedList(new Preference(mAppContext));
+        assertThat(mMixin.getCollapsedPrefs().size()).isEqualTo(1);
+        // 3 prefs on screen, 2 are real and the last one is more button.
+        when(mScreen.getPreferenceCount()).thenReturn(3);
+        when(mScreen.getPreference(1)).thenReturn(lastPref);
+
+        final Preference toBeAdded = new Preference(mAppContext);
+        toBeAdded.setOrder(50);
+        mMixin.addPreference(mScreen, toBeAdded);
+
+        verify(mScreen).removePreference(lastPref);
+        verify(mScreen).addPreference(toBeAdded);
+        assertThat(mMixin.getCollapsedPrefs().get(0)).isSameAs(lastPref);
+    }
+
+    @Test
+    public void addPreferenceWhenCollapsed_prefOrderMoreThanLastOnScreen_shouldAddToList() {
+        final Preference lastPref = new Preference(mAppContext);
+        lastPref.setOrder(100);
+        // Add something to collapsed list so we are in collapsed state.
+        mMixin.addToCollapsedList(new Preference(mAppContext));
+        assertThat(mMixin.getCollapsedPrefs().size()).isEqualTo(1);
+        // 3 prefs on screen, 2 are real and the last one is more button.
+        when(mScreen.getPreferenceCount()).thenReturn(3);
+        when(mScreen.getPreference(1)).thenReturn(lastPref);
+
+        final Preference toBeAdded = new Preference(mAppContext);
+        toBeAdded.setOrder(200);
+        mMixin.addPreference(mScreen, toBeAdded);
+
+        verify(mScreen, never()).removePreference(any(Preference.class));
+        verify(mScreen, never()).addPreference(any(Preference.class));
+        assertThat(mMixin.getCollapsedPrefs().get(0)).isSameAs(toBeAdded);
+    }
 }
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/BatteryEntryTest.java b/tests/robotests/src/com/android/settings/fuelgauge/BatteryEntryTest.java
new file mode 100644
index 0000000..632d549
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/fuelgauge/BatteryEntryTest.java
@@ -0,0 +1,124 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.settings.fuelgauge;
+
+
+import android.content.Context;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageManager;
+import android.content.pm.PackageManager.NameNotFoundException;
+import android.os.Handler;
+import android.os.UserManager;
+
+import com.android.internal.os.BatterySipper;
+import com.android.internal.os.BatterySipper.DrainType;
+import com.android.settings.TestConfig;
+
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.junit.MockitoRule;
+import org.mockito.junit.MockitoJUnit;
+import org.robolectric.RobolectricTestRunner;
+import org.robolectric.annotation.Config;
+
+import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+@RunWith(RobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public class BatteryEntryTest {
+
+    private static final int APP_UID = 123;
+    private static final String APP_DEFAULT_PACKAGE_NAME = "com.android.test";
+    private static final String APP_LABEL = "Test App Name";
+    private static final String HIGH_DRAIN_PACKAGE = "com.android.test.screen";
+
+    @Rule public MockitoRule mocks = MockitoJUnit.rule();
+
+    @Mock private Context mockContext;
+    @Mock private Handler mockHandler;
+    @Mock private PackageManager mockPackageManager;
+    @Mock private UserManager mockUserManager;
+
+    @Before
+    public void stubContextToReturnMockPackageManager() {
+        when(mockContext.getPackageManager()).thenReturn(mockPackageManager);
+    }
+
+    @Before
+    public void stubPackageManagerToReturnAppPackageAndName() throws NameNotFoundException {
+        when(mockPackageManager.getPackagesForUid(APP_UID)).thenReturn(
+            new String[]{APP_DEFAULT_PACKAGE_NAME});
+
+        ApplicationInfo appInfo = mock(ApplicationInfo.class);
+        when(mockPackageManager.getApplicationInfo(APP_DEFAULT_PACKAGE_NAME, 0 /* no flags */))
+            .thenReturn(appInfo);
+        when(mockPackageManager.getApplicationLabel(appInfo)).thenReturn(APP_LABEL);
+    }
+
+    private BatteryEntry createBatteryEntryForApp() {
+        return new BatteryEntry(mockContext, mockHandler, mockUserManager, createSipperForApp());
+    }
+
+    private BatterySipper createSipperForApp() {
+        BatterySipper sipper =
+            new BatterySipper(DrainType.APP, new FakeUid(APP_UID), 0 /* power use */);
+        sipper.packageWithHighestDrain = HIGH_DRAIN_PACKAGE;
+        return sipper;
+    }
+
+    @Test
+    public void batteryEntryForApp_shouldSetDefaultPackageNameAndLabel() throws Exception {
+        BatteryEntry entry = createBatteryEntryForApp();
+
+        assertThat(entry.defaultPackageName).isEqualTo(APP_DEFAULT_PACKAGE_NAME);
+        assertThat(entry.getLabel()).isEqualTo(APP_LABEL);
+    }
+
+    @Test
+    public void batteryEntryForApp_shouldSetLabelAsPackageName_whenPackageCannotBeFound()
+        throws Exception {
+      when(mockPackageManager.getApplicationInfo(APP_DEFAULT_PACKAGE_NAME, 0 /* no flags */))
+          .thenThrow(new NameNotFoundException());
+
+      BatteryEntry entry = createBatteryEntryForApp();
+
+      assertThat(entry.getLabel()).isEqualTo(APP_DEFAULT_PACKAGE_NAME);
+    }
+
+    @Test
+    public void batteryEntryForApp_shouldSetHighestDrainPackage_whenPackagesCannotBeFoundForUid() {
+        when(mockPackageManager.getPackagesForUid(APP_UID)).thenReturn(null);
+
+        BatteryEntry entry = createBatteryEntryForApp();
+
+        assertThat(entry.getLabel()).isEqualTo(HIGH_DRAIN_PACKAGE);
+    }
+
+    @Test
+    public void batteryEntryForApp_shouldSetHighestDrainPackage_whenMultiplePackagesFoundForUid() {
+        when(mockPackageManager.getPackagesForUid(APP_UID)).thenReturn(
+            new String[]{APP_DEFAULT_PACKAGE_NAME, "package2", "package3"});
+
+        BatteryEntry entry = createBatteryEntryForApp();
+        
+        assertThat(entry.getLabel()).isEqualTo(HIGH_DRAIN_PACKAGE);
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/gestures/SwipeToNotificationPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/gestures/SwipeToNotificationPreferenceControllerTest.java
new file mode 100644
index 0000000..e2b4473
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/gestures/SwipeToNotificationPreferenceControllerTest.java
@@ -0,0 +1,108 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.gestures;
+
+import android.content.Context;
+import android.provider.Settings;
+import android.support.v7.preference.Preference;
+import android.support.v7.preference.PreferenceScreen;
+import android.support.v7.preference.TwoStatePreference;
+
+import com.android.settings.TestConfig;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Answers;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RobolectricTestRunner;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadows.ShadowApplication;
+
+import static android.provider.Settings.Secure.SYSTEM_NAVIGATION_KEYS_ENABLED;
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+@RunWith(RobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public class SwipeToNotificationPreferenceControllerTest {
+
+    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+    private Context mContext;
+    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+    private PreferenceScreen mScreen;
+
+    private SwipeToNotificationPreferenceController mController;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mController = new SwipeToNotificationPreferenceController(mContext);
+    }
+
+    @Test
+    public void display_configIsTrue_shouldDisplay() {
+        when(mContext.getResources().
+                getBoolean(com.android.internal.R.bool.config_supportSystemNavigationKeys))
+                .thenReturn(true);
+        mController.displayPreference(mScreen);
+
+        verify(mScreen, never()).removePreference(any(Preference.class));
+    }
+
+    @Test
+    public void display_configIsFalse_shouldNotDisplay() {
+        when(mContext.getResources().
+                getBoolean(com.android.internal.R.bool.config_supportSystemNavigationKeys))
+                .thenReturn(false);
+        when(mScreen.findPreference(mController.getPreferenceKey()))
+                .thenReturn(mock(Preference.class));
+
+        mController.displayPreference(mScreen);
+
+        verify(mScreen).removePreference(any(Preference.class));
+    }
+
+    @Test
+    public void updateState_preferenceSetCheckedWhenSettingIsOn() {
+        final TwoStatePreference preference = mock(TwoStatePreference.class);
+        final Context context = ShadowApplication.getInstance().getApplicationContext();
+        Settings.System.putInt(context.getContentResolver(), SYSTEM_NAVIGATION_KEYS_ENABLED, 1);
+
+        mController = new SwipeToNotificationPreferenceController(context);
+        mController.updateState(preference);
+
+        verify(preference).setChecked(true);
+    }
+
+    @Test
+    public void updateState_preferenceSetUncheckedWhenSettingIsOff() {
+        final TwoStatePreference preference = mock(TwoStatePreference.class);
+        final Context context = ShadowApplication.getInstance().getApplicationContext();
+        Settings.System.putInt(context.getContentResolver(), SYSTEM_NAVIGATION_KEYS_ENABLED, 0);
+
+        mController = new SwipeToNotificationPreferenceController(context);
+        mController.updateState(preference);
+
+        verify(preference).setChecked(false);
+    }
+
+}
diff --git a/tests/robotests/src/com/android/settings/notification/PulseNotificationPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/PulseNotificationPreferenceControllerTest.java
new file mode 100644
index 0000000..4eb33e9
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/notification/PulseNotificationPreferenceControllerTest.java
@@ -0,0 +1,107 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.notification;
+
+import android.content.Context;
+import android.provider.Settings;
+import android.support.v7.preference.Preference;
+import android.support.v7.preference.PreferenceScreen;
+import android.support.v7.preference.TwoStatePreference;
+
+import com.android.settings.TestConfig;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Answers;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RobolectricTestRunner;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadows.ShadowApplication;
+
+import static android.provider.Settings.System.NOTIFICATION_LIGHT_PULSE;
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+@RunWith(RobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public class PulseNotificationPreferenceControllerTest {
+
+    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+    private Context mContext;
+    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+    private PreferenceScreen mScreen;
+
+    private PulseNotificationPreferenceController mController;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mController = new PulseNotificationPreferenceController(mContext);
+    }
+
+    @Test
+    public void display_configIsTrue_shouldDisplay() {
+        when(mContext.getResources().
+                getBoolean(com.android.internal.R.bool.config_intrusiveNotificationLed))
+                .thenReturn(true);
+        mController.displayPreference(mScreen);
+
+        verify(mScreen, never()).removePreference(any(Preference.class));
+    }
+
+    @Test
+    public void display_configIsFalse_shouldNotDisplay() {
+        when(mContext.getResources().
+                getBoolean(com.android.internal.R.bool.config_intrusiveNotificationLed))
+                .thenReturn(false);
+        when(mScreen.findPreference(mController.getPreferenceKey()))
+                .thenReturn(mock(Preference.class));
+
+        mController.displayPreference(mScreen);
+
+        verify(mScreen).removePreference(any(Preference.class));
+    }
+
+    @Test
+    public void updateState_preferenceSetCheckedWhenSettingIsOn() {
+        final TwoStatePreference preference = mock(TwoStatePreference.class);
+        final Context context = ShadowApplication.getInstance().getApplicationContext();
+        Settings.System.putInt(context.getContentResolver(), NOTIFICATION_LIGHT_PULSE, 1);
+
+        mController = new PulseNotificationPreferenceController(context);
+        mController.updateState(preference);
+
+        verify(preference).setChecked(true);
+    }
+
+    @Test
+    public void updateState_preferenceSetUncheckedWhenSettingIsOff() {
+        final TwoStatePreference preference = mock(TwoStatePreference.class);
+        final Context context = ShadowApplication.getInstance().getApplicationContext();
+        Settings.System.putInt(context.getContentResolver(), NOTIFICATION_LIGHT_PULSE, 0);
+
+        mController = new PulseNotificationPreferenceController(context);
+        mController.updateState(preference);
+
+        verify(preference).setChecked(false);
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/widget/RingProgressBarTest.java b/tests/robotests/src/com/android/settings/widget/RingProgressBarTest.java
new file mode 100644
index 0000000..b7a5fd9
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/widget/RingProgressBarTest.java
@@ -0,0 +1,70 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.widget;
+
+import static junit.framework.Assert.assertEquals;
+
+import android.content.Context;
+import android.view.View.MeasureSpec;
+
+import com.android.settings.TestConfig;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RobolectricTestRunner;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+
+@RunWith(RobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public class RingProgressBarTest {
+
+    private Context mContext = RuntimeEnvironment.application;
+
+    private RingProgressBar mProgressBar;
+
+    @Before
+    public void setUp() {
+        mProgressBar = new RingProgressBar(mContext);
+    }
+
+    @Test
+    public void testMeasurePortrait() {
+        mProgressBar.measure(
+                MeasureSpec.makeMeasureSpec(100, MeasureSpec.EXACTLY),
+                MeasureSpec.makeMeasureSpec(200, MeasureSpec.EXACTLY));
+        assertEquals(100, mProgressBar.getMeasuredHeight());
+        assertEquals(100, mProgressBar.getMeasuredWidth());
+    }
+
+    @Test
+    public void testMeasureLandscape() {
+        mProgressBar.measure(
+                MeasureSpec.makeMeasureSpec(200, MeasureSpec.EXACTLY),
+                MeasureSpec.makeMeasureSpec(100, MeasureSpec.EXACTLY));
+        assertEquals(100, mProgressBar.getMeasuredHeight());
+        assertEquals(100, mProgressBar.getMeasuredWidth());
+    }
+
+    @Test
+    public void testDefaultAttributes() {
+        assertEquals(false, mProgressBar.isIndeterminate());
+        assertEquals(0, mProgressBar.getProgress());
+        assertEquals(10000, mProgressBar.getMax());
+    }
+}