• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2016 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.settings.core.gateway;
18 
19 import com.android.settings.AllInOneTetherSettings;
20 import com.android.settings.DisplaySettings;
21 import com.android.settings.IccLockSettings;
22 import com.android.settings.MainClear;
23 import com.android.settings.MainClearConfirm;
24 import com.android.settings.Settings;
25 import com.android.settings.TestingSettings;
26 import com.android.settings.TrustedCredentialsSettings;
27 import com.android.settings.accessibility.AccessibilityDetailsSettingsFragment;
28 import com.android.settings.accessibility.AccessibilitySettings;
29 import com.android.settings.accessibility.AccessibilitySettingsForSetupWizard;
30 import com.android.settings.accessibility.CaptioningPropertiesFragment;
31 import com.android.settings.accessibility.ColorAndMotionFragment;
32 import com.android.settings.accessibility.TextReadingPreferenceFragment;
33 import com.android.settings.accessibility.TextReadingPreferenceFragmentForSetupWizard;
34 import com.android.settings.accessibility.ToggleColorInversionPreferenceFragment;
35 import com.android.settings.accessibility.ToggleDaltonizerPreferenceFragment;
36 import com.android.settings.accessibility.ToggleReduceBrightColorsPreferenceFragment;
37 import com.android.settings.accounts.AccountDashboardFragment;
38 import com.android.settings.accounts.AccountSyncSettings;
39 import com.android.settings.accounts.ChooseAccountFragment;
40 import com.android.settings.accounts.ManagedProfileSettings;
41 import com.android.settings.applications.AppDashboardFragment;
42 import com.android.settings.applications.ProcessStatsSummary;
43 import com.android.settings.applications.ProcessStatsUi;
44 import com.android.settings.applications.UsageAccessDetails;
45 import com.android.settings.applications.appcompat.UserAspectRatioDetails;
46 import com.android.settings.applications.appinfo.AlarmsAndRemindersDetails;
47 import com.android.settings.applications.appinfo.AppInfoDashboardFragment;
48 import com.android.settings.applications.appinfo.AppLocaleDetails;
49 import com.android.settings.applications.appinfo.DrawOverlayDetails;
50 import com.android.settings.applications.appinfo.ExternalSourcesDetails;
51 import com.android.settings.applications.appinfo.LongBackgroundTasksDetails;
52 import com.android.settings.applications.appinfo.ManageExternalStorageDetails;
53 import com.android.settings.applications.appinfo.MediaManagementAppsDetails;
54 import com.android.settings.applications.appinfo.TurnScreenOnDetails;
55 import com.android.settings.applications.appinfo.WriteSettingsDetails;
56 import com.android.settings.applications.appops.BackgroundCheckSummary;
57 import com.android.settings.applications.assist.ManageAssist;
58 import com.android.settings.applications.manageapplications.ManageApplications;
59 import com.android.settings.applications.managedomainurls.ManageDomainUrls;
60 import com.android.settings.applications.specialaccess.deviceadmin.DeviceAdminSettings;
61 import com.android.settings.applications.specialaccess.interactacrossprofiles.InteractAcrossProfilesDetails;
62 import com.android.settings.applications.specialaccess.interactacrossprofiles.InteractAcrossProfilesSettings;
63 import com.android.settings.applications.specialaccess.notificationaccess.NotificationAccessDetails;
64 import com.android.settings.applications.specialaccess.pictureinpicture.PictureInPictureDetails;
65 import com.android.settings.applications.specialaccess.pictureinpicture.PictureInPictureSettings;
66 import com.android.settings.applications.specialaccess.premiumsms.PremiumSmsAccess;
67 import com.android.settings.applications.specialaccess.vrlistener.VrListenerSettings;
68 import com.android.settings.applications.specialaccess.zenaccess.ZenAccessDetails;
69 import com.android.settings.backup.PrivacySettings;
70 import com.android.settings.backup.ToggleBackupSettingFragment;
71 import com.android.settings.backup.UserBackupSettingsActivity;
72 import com.android.settings.biometrics.combination.CombinedBiometricProfileSettings;
73 import com.android.settings.biometrics.combination.CombinedBiometricSettings;
74 import com.android.settings.biometrics.face.FaceSettings;
75 import com.android.settings.biometrics.fingerprint.FingerprintSettings;
76 import com.android.settings.biometrics.fingerprint2.ui.fragment.FingerprintSettingsV2Fragment;
77 import com.android.settings.bluetooth.BluetoothBroadcastDialog;
78 import com.android.settings.bluetooth.BluetoothDeviceDetailsFragment;
79 import com.android.settings.bluetooth.BluetoothFindBroadcastsFragment;
80 import com.android.settings.bluetooth.BluetoothPairingDetail;
81 import com.android.settings.bugreporthandler.BugReportHandlerPicker;
82 import com.android.settings.communal.CommunalDashboardFragment;
83 import com.android.settings.connecteddevice.AdvancedConnectedDeviceDashboardFragment;
84 import com.android.settings.connecteddevice.ConnectedDeviceDashboardFragment;
85 import com.android.settings.connecteddevice.NfcAndPaymentFragment;
86 import com.android.settings.connecteddevice.PreviouslyConnectedDeviceDashboardFragment;
87 import com.android.settings.connecteddevice.stylus.StylusUsiDetailsFragment;
88 import com.android.settings.connecteddevice.usb.UsbDetailsFragment;
89 import com.android.settings.datausage.DataSaverSummary;
90 import com.android.settings.datausage.DataUsageList;
91 import com.android.settings.datausage.DataUsageSummary;
92 import com.android.settings.datetime.DateTimeSettings;
93 import com.android.settings.deletionhelper.AutomaticStorageManagerSettings;
94 import com.android.settings.development.DevelopmentSettingsDashboardFragment;
95 import com.android.settings.deviceinfo.PrivateVolumeForget;
96 import com.android.settings.deviceinfo.PublicVolumeSettings;
97 import com.android.settings.deviceinfo.StorageDashboardFragment;
98 import com.android.settings.deviceinfo.aboutphone.MyDeviceInfoFragment;
99 import com.android.settings.deviceinfo.batteryinfo.BatteryInfoFragment;
100 import com.android.settings.deviceinfo.firmwareversion.FirmwareVersionSettings;
101 import com.android.settings.deviceinfo.legal.ModuleLicensesDashboard;
102 import com.android.settings.display.AutoBrightnessSettings;
103 import com.android.settings.display.NightDisplaySettings;
104 import com.android.settings.display.SmartAutoRotatePreferenceFragment;
105 import com.android.settings.display.darkmode.DarkModeSettingsFragment;
106 import com.android.settings.dream.DreamSettings;
107 import com.android.settings.enterprise.EnterprisePrivacySettings;
108 import com.android.settings.fuelgauge.AdvancedPowerUsageDetail;
109 import com.android.settings.fuelgauge.batterysaver.BatterySaverScheduleSettings;
110 import com.android.settings.fuelgauge.batterysaver.BatterySaverSettings;
111 import com.android.settings.fuelgauge.batteryusage.PowerUsageSummary;
112 import com.android.settings.gestures.AssistGestureSettings;
113 import com.android.settings.gestures.ButtonNavigationSettingsFragment;
114 import com.android.settings.gestures.DoubleTapPowerSettings;
115 import com.android.settings.gestures.DoubleTapScreenSettings;
116 import com.android.settings.gestures.DoubleTwistGestureSettings;
117 import com.android.settings.gestures.GestureNavigationSettingsFragment;
118 import com.android.settings.gestures.OneHandedSettings;
119 import com.android.settings.gestures.PickupGestureSettings;
120 import com.android.settings.gestures.PowerMenuSettings;
121 import com.android.settings.gestures.SwipeToNotificationSettings;
122 import com.android.settings.gestures.SystemNavigationGestureSettings;
123 import com.android.settings.inputmethod.AvailableVirtualKeyboardFragment;
124 import com.android.settings.inputmethod.KeyboardLayoutPickerFragment;
125 import com.android.settings.inputmethod.KeyboardSettings;
126 import com.android.settings.inputmethod.ModifierKeysSettings;
127 import com.android.settings.inputmethod.NewKeyboardLayoutEnabledLocalesFragment;
128 import com.android.settings.inputmethod.PhysicalKeyboardFragment;
129 import com.android.settings.inputmethod.SpellCheckersSettings;
130 import com.android.settings.inputmethod.TrackpadSettings;
131 import com.android.settings.inputmethod.UserDictionaryList;
132 import com.android.settings.inputmethod.UserDictionarySettings;
133 import com.android.settings.language.LanguageAndInputSettings;
134 import com.android.settings.language.LanguageSettings;
135 import com.android.settings.localepicker.LocaleListEditor;
136 import com.android.settings.location.LocationServices;
137 import com.android.settings.location.LocationSettings;
138 import com.android.settings.location.WifiScanningFragment;
139 import com.android.settings.network.MobileNetworkListFragment;
140 import com.android.settings.network.NetworkDashboardFragment;
141 import com.android.settings.network.NetworkProviderSettings;
142 import com.android.settings.network.apn.ApnEditor;
143 import com.android.settings.network.apn.ApnSettings;
144 import com.android.settings.network.telephony.MobileNetworkSettings;
145 import com.android.settings.network.telephony.NetworkSelectSettings;
146 import com.android.settings.network.tether.TetherSettings;
147 import com.android.settings.nfc.AndroidBeam;
148 import com.android.settings.nfc.PaymentSettings;
149 import com.android.settings.notification.ConfigureNotificationSettings;
150 import com.android.settings.notification.NotificationAccessSettings;
151 import com.android.settings.notification.NotificationAssistantPicker;
152 import com.android.settings.notification.SoundSettings;
153 import com.android.settings.notification.app.AppBubbleNotificationSettings;
154 import com.android.settings.notification.app.AppNotificationSettings;
155 import com.android.settings.notification.app.ChannelNotificationSettings;
156 import com.android.settings.notification.app.ConversationListSettings;
157 import com.android.settings.notification.history.NotificationStation;
158 import com.android.settings.notification.zen.ZenAccessSettings;
159 import com.android.settings.notification.zen.ZenModeAutomationSettings;
160 import com.android.settings.notification.zen.ZenModeBlockedEffectsSettings;
161 import com.android.settings.notification.zen.ZenModeEventRuleSettings;
162 import com.android.settings.notification.zen.ZenModeScheduleRuleSettings;
163 import com.android.settings.notification.zen.ZenModeSettings;
164 import com.android.settings.password.ChooseLockPassword;
165 import com.android.settings.password.ChooseLockPattern;
166 import com.android.settings.print.PrintJobSettingsFragment;
167 import com.android.settings.print.PrintSettingsFragment;
168 import com.android.settings.privacy.PrivacyControlsFragment;
169 import com.android.settings.privacy.PrivacyDashboardFragment;
170 import com.android.settings.regionalpreferences.RegionalPreferencesEntriesFragment;
171 import com.android.settings.safetycenter.MoreSecurityPrivacyFragment;
172 import com.android.settings.security.LockscreenDashboardFragment;
173 import com.android.settings.security.MemtagPage;
174 import com.android.settings.security.SecurityAdvancedSettings;
175 import com.android.settings.security.SecuritySettings;
176 import com.android.settings.shortcut.CreateShortcut;
177 import com.android.settings.sound.MediaControlsSettings;
178 import com.android.settings.support.SupportDashboardActivity;
179 import com.android.settings.system.ResetDashboardFragment;
180 import com.android.settings.system.SystemDashboardFragment;
181 import com.android.settings.tts.TextToSpeechSettings;
182 import com.android.settings.users.UserSettings;
183 import com.android.settings.vpn2.VpnSettings;
184 import com.android.settings.wallpaper.WallpaperTypeSettings;
185 import com.android.settings.webview.WebViewAppPicker;
186 import com.android.settings.wfd.WifiDisplaySettings;
187 import com.android.settings.wifi.ConfigureWifiSettings;
188 import com.android.settings.wifi.WifiAPITest;
189 import com.android.settings.wifi.WifiInfo;
190 import com.android.settings.wifi.WifiSettings;
191 import com.android.settings.wifi.calling.WifiCallingDisclaimerFragment;
192 import com.android.settings.wifi.calling.WifiCallingSettings;
193 import com.android.settings.wifi.details.WifiNetworkDetailsFragment;
194 import com.android.settings.wifi.p2p.WifiP2pSettings;
195 import com.android.settings.wifi.savedaccesspoints2.SavedAccessPointsWifiSettings2;
196 import com.android.settings.wifi.tether.WifiTetherSettings;
197 
198 public class SettingsGateway {
199 
200     /**
201      * A list of fragment that can be hosted by SettingsActivity. SettingsActivity will throw a
202      * security exception if the fragment it needs to display is not in this list.
203      */
204     public static final String[] ENTRY_FRAGMENTS = {
205             AdvancedConnectedDeviceDashboardFragment.class.getName(),
206             CreateShortcut.class.getName(),
207             BluetoothPairingDetail.class.getName(),
208             WifiSettings.class.getName(),
209             WifiNetworkDetailsFragment.class.getName(),
210             ConfigureWifiSettings.class.getName(),
211             SavedAccessPointsWifiSettings2.class.getName(),
212             AllInOneTetherSettings.class.getName(),
213             TetherSettings.class.getName(),
214             SmartAutoRotatePreferenceFragment.class.getName(),
215             WifiP2pSettings.class.getName(),
216             WifiTetherSettings.class.getName(),
217             BackgroundCheckSummary.class.getName(),
218             VpnSettings.class.getName(),
219             DataSaverSummary.class.getName(),
220             DateTimeSettings.class.getName(),
221             LocaleListEditor.class.getName(),
222             AvailableVirtualKeyboardFragment.class.getName(),
223             LanguageAndInputSettings.class.getName(),
224             LanguageSettings.class.getName(),
225             KeyboardSettings.class.getName(),
226             ModifierKeysSettings.class.getName(),
227             NewKeyboardLayoutEnabledLocalesFragment.class.getName(),
228             TrackpadSettings.class.getName(),
229             SpellCheckersSettings.class.getName(),
230             UserDictionaryList.class.getName(),
231             UserDictionarySettings.class.getName(),
232             DisplaySettings.class.getName(),
233             MyDeviceInfoFragment.class.getName(),
234             ModuleLicensesDashboard.class.getName(),
235             ManageApplications.class.getName(),
236             FirmwareVersionSettings.class.getName(),
237             ManageAssist.class.getName(),
238             ProcessStatsUi.class.getName(),
239             NotificationStation.class.getName(),
240             LocationSettings.class.getName(),
241             WifiScanningFragment.class.getName(),
242             PrivacyDashboardFragment.class.getName(),
243             PrivacyControlsFragment.class.getName(),
244             LocationServices.class.getName(),
245             SecuritySettings.class.getName(),
246             SecurityAdvancedSettings.class.getName(),
247             MoreSecurityPrivacyFragment.class.getName(),
248             UsageAccessDetails.class.getName(),
249             PrivacySettings.class.getName(),
250             DeviceAdminSettings.class.getName(),
251             AccessibilityDetailsSettingsFragment.class.getName(),
252             AccessibilitySettings.class.getName(),
253             AccessibilitySettingsForSetupWizard.class.getName(),
254             TextReadingPreferenceFragment.class.getName(),
255             TextReadingPreferenceFragmentForSetupWizard.class.getName(),
256             CaptioningPropertiesFragment.class.getName(),
257             ToggleDaltonizerPreferenceFragment.class.getName(),
258             ToggleColorInversionPreferenceFragment.class.getName(),
259             ToggleReduceBrightColorsPreferenceFragment.class.getName(),
260             TextToSpeechSettings.class.getName(),
261             PrivateVolumeForget.class.getName(),
262             PublicVolumeSettings.class.getName(),
263             DevelopmentSettingsDashboardFragment.class.getName(),
264             AndroidBeam.class.getName(),
265             WifiDisplaySettings.class.getName(),
266             PowerUsageSummary.class.getName(),
267             AccountSyncSettings.class.getName(),
268             AssistGestureSettings.class.getName(),
269             FaceSettings.class.getName(),
270             FingerprintSettings.FingerprintSettingsFragment.class.getName(),
271             FingerprintSettingsV2Fragment.class.getName(),
272             CombinedBiometricSettings.class.getName(),
273             CombinedBiometricProfileSettings.class.getName(),
274             SwipeToNotificationSettings.class.getName(),
275             DoubleTapPowerSettings.class.getName(),
276             DoubleTapScreenSettings.class.getName(),
277             PickupGestureSettings.class.getName(),
278             DoubleTwistGestureSettings.class.getName(),
279             SystemNavigationGestureSettings.class.getName(),
280             DataUsageSummary.class.getName(),
281             DreamSettings.class.getName(),
282             CommunalDashboardFragment.class.getName(),
283             UserSettings.class.getName(),
284             NotificationAccessSettings.class.getName(),
285             NotificationAccessDetails.class.getName(),
286             AppBubbleNotificationSettings.class.getName(),
287             ZenAccessSettings.class.getName(),
288             ZenAccessDetails.class.getName(),
289             ZenModeAutomationSettings.class.getName(),
290             PrintSettingsFragment.class.getName(),
291             PrintJobSettingsFragment.class.getName(),
292             TrustedCredentialsSettings.class.getName(),
293             PaymentSettings.class.getName(),
294             KeyboardLayoutPickerFragment.class.getName(),
295             PhysicalKeyboardFragment.class.getName(),
296             ZenModeSettings.class.getName(),
297             SoundSettings.class.getName(),
298             ConversationListSettings.class.getName(),
299             ConfigureNotificationSettings.class.getName(),
300             ChooseLockPassword.ChooseLockPasswordFragment.class.getName(),
301             ChooseLockPattern.ChooseLockPatternFragment.class.getName(),
302             AppInfoDashboardFragment.class.getName(),
303             BatterySaverSettings.class.getName(),
304             AppNotificationSettings.class.getName(),
305             NotificationAssistantPicker.class.getName(),
306             ChannelNotificationSettings.class.getName(),
307             ApnSettings.class.getName(),
308             ApnEditor.class.getName(),
309             WifiCallingSettings.class.getName(),
310             ZenModeScheduleRuleSettings.class.getName(),
311             ZenModeEventRuleSettings.class.getName(),
312             ZenModeBlockedEffectsSettings.class.getName(),
313             ProcessStatsUi.class.getName(),
314             AdvancedPowerUsageDetail.class.getName(),
315             ProcessStatsSummary.class.getName(),
316             DrawOverlayDetails.class.getName(),
317             WriteSettingsDetails.class.getName(),
318             ExternalSourcesDetails.class.getName(),
319             ManageExternalStorageDetails.class.getName(),
320             WallpaperTypeSettings.class.getName(),
321             VrListenerSettings.class.getName(),
322             PictureInPictureSettings.class.getName(),
323             PictureInPictureDetails.class.getName(),
324             PremiumSmsAccess.class.getName(),
325             ManagedProfileSettings.class.getName(),
326             ChooseAccountFragment.class.getName(),
327             IccLockSettings.class.getName(),
328             TestingSettings.class.getName(),
329             WifiAPITest.class.getName(),
330             WifiInfo.class.getName(),
331             MainClear.class.getName(),
332             MainClearConfirm.class.getName(),
333             ResetDashboardFragment.class.getName(),
334             NightDisplaySettings.class.getName(),
335             ManageDomainUrls.class.getName(),
336             AutomaticStorageManagerSettings.class.getName(),
337             StorageDashboardFragment.class.getName(),
338             SystemDashboardFragment.class.getName(),
339             NetworkDashboardFragment.class.getName(),
340             ConnectedDeviceDashboardFragment.class.getName(),
341             UsbDetailsFragment.class.getName(),
342             AppDashboardFragment.class.getName(),
343             WifiCallingDisclaimerFragment.class.getName(),
344             AccountDashboardFragment.class.getName(),
345             EnterprisePrivacySettings.class.getName(),
346             WebViewAppPicker.class.getName(),
347             LockscreenDashboardFragment.class.getName(),
348             MemtagPage.class.getName(),
349             BluetoothDeviceDetailsFragment.class.getName(),
350             BluetoothBroadcastDialog.class.getName(),
351             BluetoothFindBroadcastsFragment.class.getName(),
352             StylusUsiDetailsFragment.class.getName(),
353             DataUsageList.class.getName(),
354             ToggleBackupSettingFragment.class.getName(),
355             PreviouslyConnectedDeviceDashboardFragment.class.getName(),
356             BatterySaverScheduleSettings.class.getName(),
357             MobileNetworkListFragment.class.getName(),
358             PowerMenuSettings.class.getName(),
359             DarkModeSettingsFragment.class.getName(),
360             BugReportHandlerPicker.class.getName(),
361             GestureNavigationSettingsFragment.class.getName(),
362             ButtonNavigationSettingsFragment.class.getName(),
363             InteractAcrossProfilesSettings.class.getName(),
364             InteractAcrossProfilesDetails.class.getName(),
365             MediaControlsSettings.class.getName(),
366             NetworkProviderSettings.class.getName(),
367             NetworkSelectSettings.class.getName(),
368             AlarmsAndRemindersDetails.class.getName(),
369             MediaManagementAppsDetails.class.getName(),
370             AutoBrightnessSettings.class.getName(),
371             OneHandedSettings.class.getName(),
372             MobileNetworkSettings.class.getName(),
373             AppLocaleDetails.class.getName(),
374             TurnScreenOnDetails.class.getName(),
375             NfcAndPaymentFragment.class.getName(),
376             ColorAndMotionFragment.class.getName(),
377             LongBackgroundTasksDetails.class.getName(),
378             RegionalPreferencesEntriesFragment.class.getName(),
379             BatteryInfoFragment.class.getName(),
380             UserAspectRatioDetails.class.getName()
381     };
382 
383     public static final String[] SETTINGS_FOR_RESTRICTED = {
384             // Home page
385             Settings.NetworkDashboardActivity.class.getName(),
386             Settings.ConnectedDeviceDashboardActivity.class.getName(),
387             Settings.AppDashboardActivity.class.getName(),
388             Settings.DisplaySettingsActivity.class.getName(),
389             Settings.SoundSettingsActivity.class.getName(),
390             Settings.StorageDashboardActivity.class.getName(),
391             Settings.PowerUsageSummaryActivity.class.getName(),
392             Settings.AccountDashboardActivity.class.getName(),
393             Settings.PrivacySettingsActivity.class.getName(),
394             Settings.SecurityDashboardActivity.class.getName(),
395             Settings.AccessibilitySettingsActivity.class.getName(),
396             Settings.SystemDashboardActivity.class.getName(),
397             SupportDashboardActivity.class.getName(),
398             // Home page > Network & Internet
399             Settings.WifiSettingsActivity.class.getName(),
400             Settings.DataUsageSummaryActivity.class.getName(),
401             Settings.NetworkProviderSettingsActivity.class.getName(),
402             Settings.NetworkSelectActivity.class.getName(),
403             // Home page > Connected devices
404             Settings.BluetoothSettingsActivity.class.getName(),
405             Settings.WifiDisplaySettingsActivity.class.getName(),
406             Settings.PrintSettingsActivity.class.getName(),
407             // Home page > Apps & Notifications
408             Settings.UserSettingsActivity.class.getName(),
409             Settings.ConfigureNotificationSettingsActivity.class.getName(),
410             Settings.ManageApplicationsActivity.class.getName(),
411             Settings.PaymentSettingsActivity.class.getName(),
412             // Home page > Display
413             Settings.AdaptiveBrightnessActivity.class.getName(),
414             // Home page > Security & screen lock
415             Settings.LocationSettingsActivity.class.getName(),
416             // Home page > System
417             Settings.LanguageAndInputSettingsActivity.class.getName(),
418             Settings.LanguageSettingsActivity.class.getName(),
419             Settings.KeyboardSettingsActivity.class.getName(),
420             Settings.DateTimeSettingsActivity.class.getName(),
421             Settings.EnterprisePrivacySettingsActivity.class.getName(),
422             Settings.MyDeviceInfoActivity.class.getName(),
423             Settings.ModuleLicensesActivity.class.getName(),
424             UserBackupSettingsActivity.class.getName(),
425             Settings.MemtagPageActivity.class.getName(),
426             Settings.NavigationModeSettingsActivity.class.getName(),
427     };
428 }
429