Snap for 8508678 from ab19bc5b97685cab637f22f645e9fc156151a7fa to ndk-r25-release

Change-Id: I6634645995cb955d0f3d2bcadf18edb9bcd79267
diff --git a/ChangeLog b/ChangeLog
index 2d19253..e37bfc9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,9 @@
-build 8121221
+build 8355685 (March 25, 2022)
+1. Add doc for getting boot-time profile, add doc view_the_profile.md.
+2. Share report lib options between scripts.
+
+
+build 8121221 (Jan 26, 2022)
 1. On Android >= 13, allow an app profiling itself even after device reboot.
    The permission expiration time can be set by --days in api_profiler.py.
 2. Improve --trace-offcpu in record cmd to support multiple report modes: pure on cpu samples,
diff --git a/annotate.py b/annotate.py
index 16af623..7bf8fe9 100755
--- a/annotate.py
+++ b/annotate.py
@@ -146,7 +146,7 @@
 
     def __init__(self, config):
         # check config variables
-        config_names = ['perf_data_list', 'source_dirs', 'comm_filters', 'dso_filters', 'ndk_path']
+        config_names = ['perf_data_list', 'source_dirs', 'dso_filters', 'ndk_path']
         for name in config_names:
             if name not in config:
                 log_exit('config [%s] is missing' % name)
@@ -161,7 +161,6 @@
         self.config = config
         self.symfs_dir = symfs_dir
         self.kallsyms = kallsyms
-        self.comm_filter = set(config['comm_filters']) if config.get('comm_filters') else None
         self.dso_filter = set(config['dso_filters']) if config.get('dso_filters') else None
 
         config['annotate_dest_dir'] = 'annotated_files'
@@ -193,15 +192,12 @@
                 lib.SetSymfs(self.symfs_dir)
             if self.kallsyms:
                 lib.SetKallsymsFile(self.kallsyms)
-            if self.config.get('sample_filter'):
-                lib.SetSampleFilter(self.config.get('sample_filter'))
+            lib.SetReportOptions(self.config['report_lib_options'])
             while True:
                 sample = lib.GetNextSample()
                 if sample is None:
                     lib.Close()
                     break
-                if not self._filter_sample(sample):
-                    continue
                 symbols = []
                 symbols.append(lib.GetSymbolOfCurrentSample())
                 callchain = lib.GetCallChainOfCurrentSample()
@@ -215,13 +211,6 @@
                         self.addr2line.add_addr(symbol.dso_name, build_id, symbol.symbol_addr,
                                                 symbol.symbol_addr)
 
-    def _filter_sample(self, sample):
-        """Return true if the sample can be used."""
-        if self.comm_filter:
-            if sample.thread_comm not in self.comm_filter:
-                return False
-        return True
-
     def _filter_symbol(self, symbol):
         if not self.dso_filter or symbol.dso_name in self.dso_filter:
             return True
@@ -241,15 +230,12 @@
                 lib.SetSymfs(self.symfs_dir)
             if self.kallsyms:
                 lib.SetKallsymsFile(self.kallsyms)
-            if self.config.get('sample_filter'):
-                lib.SetSampleFilter(self.config.get('sample_filter'))
+            lib.SetReportOptions(self.config['report_lib_options'])
             while True:
                 sample = lib.GetNextSample()
                 if sample is None:
                     lib.Close()
                     break
-                if not self._filter_sample(sample):
-                    continue
                 self._generate_periods_for_sample(lib, sample)
 
     def _generate_periods_for_sample(self, lib, sample):
@@ -477,11 +463,9 @@
                         help='show raw period instead of percentage')
     parser.add_argument('--summary-width', type=int, default=80, help='max width of summary file')
     sample_filter_group = parser.add_argument_group('Sample filter options')
-    parser.add_sample_filter_options(sample_filter_group)
-    sample_filter_group.add_argument('--comm', nargs='+', action='append', help="""
-        Use samples only in threads with selected names.""")
     sample_filter_group.add_argument('--dso', nargs='+', action='append', help="""
         Use samples only in selected binaries.""")
+    parser.add_report_lib_options(sample_filter_group=sample_filter_group)
 
     args = parser.parse_args()
     config = {}
@@ -489,12 +473,11 @@
     if not config['perf_data_list']:
         config['perf_data_list'].append('perf.data')
     config['source_dirs'] = flatten_arg_list(args.source_dirs)
-    config['comm_filters'] = flatten_arg_list(args.comm)
     config['dso_filters'] = flatten_arg_list(args.dso)
     config['ndk_path'] = args.ndk_path
     config['raw_period'] = args.raw_period
     config['summary_width'] = args.summary_width
-    config['sample_filter'] = args.sample_filter
+    config['report_lib_options'] = args.report_lib_options
 
     annotator = SourceFileAnnotator(config)
     annotator.annotate()
diff --git a/bin/android/arm/simpleperf b/bin/android/arm/simpleperf
index 5ccbd4f..23c8702 100755
--- a/bin/android/arm/simpleperf
+++ b/bin/android/arm/simpleperf
Binary files differ
diff --git a/bin/android/arm64/simpleperf b/bin/android/arm64/simpleperf
index 862e4d9..d27f1ef 100755
--- a/bin/android/arm64/simpleperf
+++ b/bin/android/arm64/simpleperf
Binary files differ
diff --git a/bin/android/x86/simpleperf b/bin/android/x86/simpleperf
index a78e051..ee0d472 100755
--- a/bin/android/x86/simpleperf
+++ b/bin/android/x86/simpleperf
Binary files differ
diff --git a/bin/android/x86_64/simpleperf b/bin/android/x86_64/simpleperf
index 8872cf4..513f017 100755
--- a/bin/android/x86_64/simpleperf
+++ b/bin/android/x86_64/simpleperf
Binary files differ
diff --git a/bin/darwin/x86_64/libsimpleperf_report.dylib b/bin/darwin/x86_64/libsimpleperf_report.dylib
index 32631f6..0e6e5ae 100755
--- a/bin/darwin/x86_64/libsimpleperf_report.dylib
+++ b/bin/darwin/x86_64/libsimpleperf_report.dylib
Binary files differ
diff --git a/bin/darwin/x86_64/simpleperf b/bin/darwin/x86_64/simpleperf
index c4daaf2..7d26684 100755
--- a/bin/darwin/x86_64/simpleperf
+++ b/bin/darwin/x86_64/simpleperf
Binary files differ
diff --git a/bin/linux/x86_64/libsimpleperf_report.so b/bin/linux/x86_64/libsimpleperf_report.so
index 6f148a8..2a8f268 100755
--- a/bin/linux/x86_64/libsimpleperf_report.so
+++ b/bin/linux/x86_64/libsimpleperf_report.so
Binary files differ
diff --git a/bin/linux/x86_64/simpleperf b/bin/linux/x86_64/simpleperf
index f296888..8eaadf3 100755
--- a/bin/linux/x86_64/simpleperf
+++ b/bin/linux/x86_64/simpleperf
Binary files differ
diff --git a/bin/windows/x86_64/libsimpleperf_report.dll b/bin/windows/x86_64/libsimpleperf_report.dll
index 074bff3..d18e011 100755
--- a/bin/windows/x86_64/libsimpleperf_report.dll
+++ b/bin/windows/x86_64/libsimpleperf_report.dll
Binary files differ
diff --git a/bin/windows/x86_64/simpleperf.exe b/bin/windows/x86_64/simpleperf.exe
index fc98293..262a202 100755
--- a/bin/windows/x86_64/simpleperf.exe
+++ b/bin/windows/x86_64/simpleperf.exe
Binary files differ
diff --git a/doc/README.md b/doc/README.md
index 473a5c1..51ffc83 100644
--- a/doc/README.md
+++ b/doc/README.md
@@ -95,6 +95,9 @@
 
 See [scripts_reference.md](./scripts_reference.md).
 
+## View the profile
+
+See [view_the_profile.md](./view_the_profile.md).
 
 ## Answers to common issues
 
diff --git a/doc/android_platform_profiling.md b/doc/android_platform_profiling.md
index f4899e4..f2a31cf 100644
--- a/doc/android_platform_profiling.md
+++ b/doc/android_platform_profiling.md
@@ -75,3 +75,35 @@
 by the kernel to monitor memory latency. So only 3 counters are available. It's fine to monitor up
 to 3 PMU events at the same time. To monitor more than 3 events, the `--use-devfreq-counters` option
 can be used to borrow from the counters used by the kernel.
+
+## Get boot-time profile
+
+On userdebug/eng devices, we can get boot-time profile via simpleperf.
+
+Step 1. In adb root, set options used to record boot-time profile. Simpleperf stores the options in
+a persist property `persist.simpleperf.boot_record`.
+
+```
+# simpleperf boot-record --enable "-a -g --duration 10 --exclude-perf"
+```
+
+Step 2. Reboot the device. When booting, init finds that the persist property is set, so it forks
+a background process to run simpleperf to record boot-time profile. init starts simpleperf at
+zygote-start stage, right after zygote is started.
+
+```
+$ adb reboot
+```
+
+Step 3. After boot, the boot-time profile is stored in /data/simpleperf_boot_data. Then we can pull
+the profile to host to report.
+
+```
+$ adb shell ls /data/simpleperf_boot_data
+perf-20220126-11-47-51.data
+```
+
+Following is a boot-time profile example. From timestamp, the first sample is generated at about
+4.5s after booting.
+
+![boot_time_profile](pictures/boot_time_profile.png)
diff --git a/doc/pictures/android_studio_profiler_flame_chart.png b/doc/pictures/android_studio_profiler_flame_chart.png
new file mode 100644
index 0000000..6fea4f7
--- /dev/null
+++ b/doc/pictures/android_studio_profiler_flame_chart.png
Binary files differ
diff --git a/doc/pictures/android_studio_profiler_open_perf_trace.png b/doc/pictures/android_studio_profiler_open_perf_trace.png
new file mode 100644
index 0000000..faa9b70
--- /dev/null
+++ b/doc/pictures/android_studio_profiler_open_perf_trace.png
Binary files differ
diff --git a/doc/pictures/android_studio_profiler_select_process.png b/doc/pictures/android_studio_profiler_select_process.png
new file mode 100644
index 0000000..4004e17
--- /dev/null
+++ b/doc/pictures/android_studio_profiler_select_process.png
Binary files differ
diff --git a/doc/pictures/android_studio_profiler_select_recording_method.png b/doc/pictures/android_studio_profiler_select_recording_method.png
new file mode 100644
index 0000000..3813533
--- /dev/null
+++ b/doc/pictures/android_studio_profiler_select_recording_method.png
Binary files differ
diff --git a/doc/pictures/boot_time_profile.png b/doc/pictures/boot_time_profile.png
new file mode 100644
index 0000000..3e06155
--- /dev/null
+++ b/doc/pictures/boot_time_profile.png
Binary files differ
diff --git a/doc/pictures/continuous_pprof.png b/doc/pictures/continuous_pprof.png
new file mode 100644
index 0000000..f92f7b6
--- /dev/null
+++ b/doc/pictures/continuous_pprof.png
Binary files differ
diff --git a/doc/pictures/firefox_profiler.png b/doc/pictures/firefox_profiler.png
new file mode 100644
index 0000000..4019289
--- /dev/null
+++ b/doc/pictures/firefox_profiler.png
Binary files differ
diff --git a/doc/pictures/flamescope.png b/doc/pictures/flamescope.png
new file mode 100644
index 0000000..2a19dad
--- /dev/null
+++ b/doc/pictures/flamescope.png
Binary files differ
diff --git a/doc/pictures/flamescope_click.png b/doc/pictures/flamescope_click.png
new file mode 100644
index 0000000..a5a8a97
--- /dev/null
+++ b/doc/pictures/flamescope_click.png
Binary files differ
diff --git a/doc/pictures/flamescope_flamegraph.png b/doc/pictures/flamescope_flamegraph.png
new file mode 100644
index 0000000..8a0b4ef
--- /dev/null
+++ b/doc/pictures/flamescope_flamegraph.png
Binary files differ
diff --git a/doc/pictures/report_command.png b/doc/pictures/report_command.png
new file mode 100644
index 0000000..c04419a
--- /dev/null
+++ b/doc/pictures/report_command.png
Binary files differ
diff --git a/doc/pictures/report_html.png b/doc/pictures/report_html.png
new file mode 100644
index 0000000..358ef7b
--- /dev/null
+++ b/doc/pictures/report_html.png
Binary files differ
diff --git a/doc/scripts_reference.md b/doc/scripts_reference.md
index 1a97ebe..31dee02 100644
--- a/doc/scripts_reference.md
+++ b/doc/scripts_reference.md
@@ -114,6 +114,9 @@
 
 ## Viewing the profile
 
+Scripts in this section are for viewing the profile or converting profile data into formats used by
+external UIs. For recommended UIs, see [view_the_profile.md](view_the_profile.md).
+
 ### report.py
 
 report.py is a wrapper of the `report` command on the host. It accepts all options of the `report`
diff --git a/doc/view_the_profile.md b/doc/view_the_profile.md
new file mode 100644
index 0000000..8a0e07e
--- /dev/null
+++ b/doc/view_the_profile.md
@@ -0,0 +1,342 @@
+# View the profile
+
+[TOC]
+
+## Introduction
+
+After using `simpleperf record` or `app_profiler.py`, we get a profile data file. The file contains
+a list of samples. Each sample has a timestamp, a thread id, a callstack, events (like cpu-cycles
+or cpu-clock) used in this sample, etc. We have many choices for viewing the profile. We can show
+samples in chronological order, or show aggregated flamegraphs. We can show reports in text format,
+or in some interactive UIs.
+
+Below shows some recommended UIs to view the profile. Google developers can find more examples in
+[go/gmm-profiling](go/gmm-profiling?polyglot=linux-workstation#viewing-the-profile).
+
+
+## Continuous PProf UI (great flamegraph UI, but only available internally)
+
+[PProf](https://github.com/google/pprof) is a mature profiling technology used extensively on
+Google servers, with a powerful flamegraph UI, with strong drilldown, search, pivot, profile diff,
+and graph visualisation.
+
+![Example](./pictures/continuous_pprof.png)
+
+We can use `pprof_proto_generator.py` to convert profiles into pprof.profile protobufs for use in
+pprof.
+
+```
+# Output all threads, broken down by threadpool.
+./pprof_proto_generator.py
+
+# Use proguard mapping.
+./pprof_proto_generator.py --proguard-mapping-file proguard.map
+
+# Just the main (UI) thread (query by thread name):
+./pprof_proto_generator.py --comm com.example.android.displayingbitmaps
+```
+
+This will print some debug logs about Failed to read symbols: this is usually OK, unless those
+symbols are hotspots.
+
+Upload pprof.profile to http://pprof/ UI:
+
+```
+# Upload all threads in profile, grouped by threadpool.
+# This is usually a good default, combining threads with similar names.
+pprof --flame --tagroot threadpool pprof.profile
+
+# Upload all threads in profile, grouped by individual thread name.
+pprof --flame --tagroot thread pprof.profile
+
+# Upload all threads in profile, without grouping by thread.
+pprof --flame pprof.profile
+This will output a URL, example: https://pprof.corp.google.com/?id=589a60852306144c880e36429e10b166
+```
+
+## Firefox Profiler (great chronological UI)
+
+We can view Android profiles using Firefox Profiler: https://profiler.firefox.com/. This does not
+require Firefox installation -- Firefox Profiler is just a website, you can open it in any browser.
+
+![Example](./pictures/firefox_profiler.png)
+
+Firefox Profiler has a great chronological view, as it doesn't pre-aggregate similar stack traces
+like pprof does.
+
+We can use `gecko_profile_generator.py` to convert raw perf.data files into a Firefox Profile, with
+Proguard deobfuscation.
+
+```
+# Create Gecko Profile
+./gecko_profile_generator.py | gzip > gecko_profile.json.gz
+
+# Create Gecko Profile using Proguard map
+./gecko_profile_generator.py --proguard-mapping-file proguard.map | gzip > gecko_profile.json.gz
+```
+
+Then drag-and-drop gecko_profile.json.gz into https://profiler.firefox.com/.
+
+Firefox Profiler supports:
+
+1. Aggregated Flamegraphs
+2. Chronological Stackcharts
+
+And allows filtering by:
+
+1. Individual threads
+2. Multiple threads (Ctrl+Click thread names to select many)
+3. Timeline period
+4. Stack frame text search
+
+## FlameScope (great jank-finding UI)
+
+[Netflix's FlameScope](https://github.com/Netflix/flamescope) is a rough, proof-of-concept UI that
+lets you spot repeating patterns of work by laying out the profile as a subsecond heatmap.
+
+Below, each vertical stripe is one second, and each cell is 10ms. Redder cells have more samples.
+See https://www.brendangregg.com/blog/2018-11-08/flamescope-pattern-recognition.html for how to
+spot patterns.
+
+This is an example of a 60s DisplayBitmaps app Startup Profile.
+
+![Example](./pictures/flamescope.png)
+
+You can see:
+
+  The thick red vertical line on the left is startup.
+  The long white vertical sections on the left shows the app is mostly idle, waiting for commands
+  from instrumented tests.
+  Then we see periodically red blocks, which shows the app is periodically busy handling commands
+  from instrumented tests.
+
+Click the start and end cells of a duration:
+
+![Example](./pictures/flamescope_click.png)
+
+To see a flamegraph for that duration:
+
+![Example](./pictures/flamescope_flamegraph.png)
+
+Install and run Flamescope:
+
+```
+git clone https://github.com/Netflix/flamescope ~/flamescope
+cd ~/flamescope
+pip install -r requirements.txt
+npm install
+npm run webpack
+python3 run.py
+```
+
+Then open FlameScope in-browser: http://localhost:5000/.
+
+FlameScope can read gzipped perf script format profiles. Convert simpleperf perf.data to this
+format with `report_sample.py`, and place it in Flamescope's examples directory:
+
+```
+# Create `Linux perf script` format profile.
+report_sample.py | gzip > ~/flamescope/examples/my_simpleperf_profile.gz
+
+# Create `Linux perf script` format profile using Proguard map.
+report_sample.py \
+  --proguard-mapping-file proguard.map \
+  | gzip > ~/flamescope/examples/my_simpleperf_profile.gz
+```
+
+Open the profile "as Linux Perf", and click start and end sections to get a flamegraph of that
+timespan.
+
+To investigate UI Thread Jank, filter to UI thread samples only:
+
+```
+report_sample.py \
+  --comm com.example.android.displayingbitmaps \ # UI Thread
+  | gzip > ~/flamescope/examples/uithread.gz
+```
+
+Once you've identified the timespan of interest, consider also zooming into that section with
+Firefox Profiler, which has a more powerful flamegraph viewer.
+
+## Differential FlameGraph
+
+See Brendan Gregg's [Differential Flame Graphs](https://www.brendangregg.com/blog/2014-11-09/differential-flame-graphs.html) blog.
+
+Use Simpleperf's `stackcollapse.py` to convert perf.data to Folded Stacks format for the FlameGraph
+toolkit.
+
+Consider diffing both directions: After minus Before, and Before minus After.
+
+If you've recorded before and after your optimisation as perf_before.data and perf_after.data, and
+you're only interested in the UI thread:
+
+```
+# Generate before and after folded stacks from perf.data files
+./stackcollapse.py --kernel --jit -i perf_before.data \
+  --proguard-mapping-file proguard_before.map \
+  --comm com.example.android.displayingbitmaps \
+  > perf_before.folded
+./stackcollapse.py --kernel --jit -i perf_after.data \
+  --proguard-mapping-file proguard_after.map \
+  --comm com.example.android.displayingbitmaps \
+  > perf_after.folded
+
+# Generate diff reports
+FlameGraph/difffolded.pl -n perf_before.folded perf_after.folded \
+  | FlameGraph/flamegraph.pl > diff1.svg
+FlameGraph/difffolded.pl -n --negate perf_after.folded perf_before.folded \
+  | FlameGraph/flamegraph.pl > diff2.svg
+```
+
+## Android Studio Profiler
+
+Android Studio Profiler supports recording and reporting profiles of app processes. It supports
+several recording methods, including one using simpleperf as backend. You can use Android Studio
+Profiler for both recording and reporting.
+
+In Android Studio:
+Open View -> Tool Windows -> Profiler
+Click + -> Your Device -> Profileable Processes -> Your App
+
+![Example](./pictures/android_studio_profiler_select_process.png)
+
+Click into "CPU" Chart
+
+Choose Callstack Sample Recording. Even if you're using Java, this provides better observability,
+into ART, malloc, and the kernel.
+
+![Example](./pictures/android_studio_profiler_select_recording_method.png)
+
+Click Record, run your test on the device, then Stop when you're done.
+
+Click on a thread track, and "Flame Chart" to see a chronological chart on the left, and an
+aggregated flamechart on the right:
+
+![Example](./pictures/android_studio_profiler_flame_chart.png)
+
+If you want more flexibility in recording options, or want to add proguard mapping file, you can
+record using simpleperf, and report using Android Studio Profiler.
+
+We can use `simpleperf report-sample` to convert perf.data to trace files for Android Studio
+Profiler.
+
+```
+# Convert perf.data to perf.trace for Android Studio Profiler.
+# If on Mac/Windows, use simpleperf host executable for those platforms instead.
+bin/linux/x86_64/simpleperf report-sample --show-callchain --protobuf -i perf.data -o perf.trace
+
+# Convert perf.data to perf.trace using proguard mapping file.
+bin/linux/x86_64/simpleperf report-sample --show-callchain --protobuf -i perf.data -o perf.trace \
+    --proguard-mapping-file proguard.map
+```
+
+In Android Studio: Open File -> Open -> Select perf.trace
+
+![Example](./pictures/android_studio_profiler_open_perf_trace.png)
+
+
+## Simpleperf HTML Report
+
+Simpleperf can generate its own HTML Profile, which is able to show Android-specific information
+and separate flamegraphs for all threads, with a much rougher flamegraph UI.
+
+![Example](./pictures/report_html.png)
+
+This UI is fairly rough; we recommend using the Continuous PProf UI or Firefox Profiler instead. But
+it's useful for a quick look at your data.
+
+Each of the following commands take as input ./perf.data and output ./report.html.
+
+```
+# Make an HTML report.
+./report_html.py
+
+# Make an HTML report with Proguard mapping.
+./report_html.py --proguard-mapping-file proguard.map
+```
+
+This will print some debug logs about Failed to read symbols: this is usually OK, unless those
+symbols are hotspots.
+
+See also [report_html.py's README](scripts_reference.md#report_htmlpy) and `report_html.py -h`.
+
+
+## PProf Interactive Command Line
+
+Unlike Continuous PProf UI, [PProf](https://github.com/google/pprof) command line is publicly
+available, and allows drilldown, pivoting and filtering.
+
+The below session demonstrates filtering to stack frames containing processBitmap.
+
+```
+$ pprof pprof.profile
+(pprof) show=processBitmap
+(pprof) top
+Active filters:
+   show=processBitmap
+Showing nodes accounting for 2.45s, 11.44% of 21.46s total
+      flat  flat%   sum%        cum   cum%
+     2.45s 11.44% 11.44%      2.45s 11.44%  com.example.android.displayingbitmaps.util.ImageFetcher.processBitmap
+```
+
+And then showing the tags of those frames, to tell what threads they are running on:
+
+```
+(pprof) tags
+ pid: Total 2.5s
+      2.5s (  100%): 31112
+
+ thread: Total 2.5s
+         1.4s (57.21%): AsyncTask #3
+         1.1s (42.79%): AsyncTask #4
+
+ threadpool: Total 2.5s
+             2.5s (  100%): AsyncTask #%d
+
+ tid: Total 2.5s
+      1.4s (57.21%): 31174
+      1.1s (42.79%): 31175
+```
+
+Contrast with another method:
+
+```
+(pprof) show=addBitmapToCache
+(pprof) top
+Active filters:
+   show=addBitmapToCache
+Showing nodes accounting for 1.05s, 4.88% of 21.46s total
+      flat  flat%   sum%        cum   cum%
+     1.05s  4.88%  4.88%      1.05s  4.88%  com.example.android.displayingbitmaps.util.ImageCache.addBitmapToCache
+```
+
+For more information, see the [pprof README](https://github.com/google/pprof/blob/master/doc/README.md#interactive-terminal-use).
+
+
+## Simpleperf Report Command Line
+
+The simpleperf report command reports profiles in text format.
+
+![Example](./pictures/report_command.png)
+
+You can call `simpleperf report` directly or call it via `report.py`.
+
+```
+# Report symbols in table format.
+$ ./report.py --children
+
+# Report call graph.
+$ bin/linux/x86_64/simpleperf report -g -i perf.data
+```
+
+See also [report command's README](executable_commands_reference.md#The-report-command) and
+`report.py -h`.
+
+
+## Custom Report Interface
+
+If the above View UIs can't fulfill your need, you can use `simpleperf_report_lib.py` to parse
+perf.data, extract sample information, and feed it to any views you like.
+
+See [simpleperf_report_lib.py's README](scripts_reference.md#simpleperf_report_libpy) for more
+details.
diff --git a/gecko_profile_generator.py b/gecko_profile_generator.py
index e7108ee..396c9a5 100755
--- a/gecko_profile_generator.py
+++ b/gecko_profile_generator.py
@@ -30,7 +30,7 @@
 
 from dataclasses import dataclass, field
 from simpleperf_report_lib import ReportLib
-from simpleperf_utils import BaseArgumentParser, flatten_arg_list
+from simpleperf_utils import BaseArgumentParser, flatten_arg_list, ReportLibOptions
 from typing import List, Dict, Optional, NamedTuple, Set, Tuple
 
 
@@ -295,22 +295,17 @@
         record_file: str,
         symfs_dir: Optional[str],
         kallsyms_file: Optional[str],
-        proguard_mapping_file: List[str],
-        comm_filter: Set[str],
-        sample_filter: Optional[str]) -> GeckoProfile:
+        report_lib_options: ReportLibOptions) -> GeckoProfile:
     """convert a simpleperf profile to gecko format"""
     lib = ReportLib()
 
     lib.ShowIpForUnknownSymbol()
-    for file_path in proguard_mapping_file:
-        lib.AddProguardMappingFile(file_path)
     if symfs_dir is not None:
         lib.SetSymfs(symfs_dir)
     lib.SetRecordFile(record_file)
     if kallsyms_file is not None:
         lib.SetKallsymsFile(kallsyms_file)
-    if sample_filter:
-        lib.SetSampleFilter(sample_filter)
+    lib.SetReportOptions(report_lib_options)
 
     arch = lib.GetArch()
     meta_info = lib.MetaInfo()
@@ -324,9 +319,6 @@
         if sample is None:
             lib.Close()
             break
-        if comm_filter:
-            if sample.thread_comm not in comm_filter:
-                continue
         event = lib.GetEventOfCurrentSample()
         symbol = lib.GetSymbolOfCurrentSample()
         callchain = lib.GetCallChainOfCurrentSample()
@@ -405,22 +397,13 @@
     parser.add_argument('--kallsyms', help='Set the path to find kernel symbols.')
     parser.add_argument('-i', '--record_file', nargs='?', default='perf.data',
                         help='Default is perf.data.')
-    parser.add_argument(
-        '--proguard-mapping-file', nargs='+',
-        help='Add proguard mapping file to de-obfuscate symbols',
-        default=[])
-    sample_filter_group = parser.add_argument_group('Sample filter options')
-    parser.add_sample_filter_options(sample_filter_group)
-    sample_filter_group.add_argument('--comm', nargs='+', action='append', help="""
-      Use samples only in threads with selected names.""")
+    parser.add_report_lib_options()
     args = parser.parse_args()
     profile = _gecko_profile(
         record_file=args.record_file,
         symfs_dir=args.symfs,
         kallsyms_file=args.kallsyms,
-        proguard_mapping_file=args.proguard_mapping_file,
-        comm_filter=set(flatten_arg_list(args.comm)),
-        sample_filter=args.sample_filter)
+        report_lib_options=args.report_lib_options)
 
     json.dump(profile, sys.stdout, sort_keys=True)
 
diff --git a/inferno/inferno.py b/inferno/inferno.py
index 512b1dc..ccf1b6b 100755
--- a/inferno/inferno.py
+++ b/inferno/inferno.py
@@ -111,14 +111,7 @@
         lib.SetRecordFile(record_file)
     if kallsyms_file:
         lib.SetKallsymsFile(kallsyms_file)
-    if args.show_art_frames:
-        lib.ShowArtFrames(True)
-    for file_path in args.proguard_mapping_file or []:
-        lib.AddProguardMappingFile(file_path)
-    if args.trace_offcpu:
-        lib.SetTraceOffCpuMode(args.trace_offcpu)
-    if args.sample_filter:
-        lib.SetSampleFilter(args.sample_filter)
+    lib.SetReportOptions(args.report_lib_options)
     process.cmd = lib.GetRecordCmd()
     product_props = lib.MetaInfo().get("product_props")
     if product_props:
@@ -313,12 +306,8 @@
     report_group.add_argument('--symfs', help="""Set the path to find binaries with symbols and
                               debug info.""")
     report_group.add_argument('--title', help='Show a title in the report.')
-    report_group.add_argument('--show_art_frames', action='store_true',
-                              help='Show frames of internal methods in the ART Java interpreter.')
-    report_group.add_argument('--proguard-mapping-file', nargs='+',
-                              help='Add proguard mapping file to de-obfuscate symbols')
-    parser.add_trace_offcpu_option(report_group)
-    parser.add_sample_filter_options(report_group, False)
+    parser.add_report_lib_options(
+        report_group, sample_filter_group=report_group, sample_filter_with_pid_shortcut=False)
 
     debug_group = parser.add_argument_group('Debug options')
     debug_group.add_argument('--disable_adb_root', action='store_true', help="""Force adb to run
diff --git a/pprof_proto_generator.py b/pprof_proto_generator.py
index 2e807d9..57c988b 100755
--- a/pprof_proto_generator.py
+++ b/pprof_proto_generator.py
@@ -270,7 +270,6 @@
         config['binary_cache_dir'] = 'binary_cache'
         if not os.path.isdir(config['binary_cache_dir']):
             config['binary_cache_dir'] = None
-        self.comm_filter = set(config['comm_filters']) if config.get('comm_filters') else None
         self.dso_filter = set(config['dso_filters']) if config.get('dso_filters') else None
         self.max_chain_length = config['max_chain_length']
         self.profile = profile_pb2.Profile()
@@ -303,10 +302,7 @@
 
         if self.config.get('show_art_frames'):
             self.lib.ShowArtFrames()
-        for file_path in self.config['proguard_mapping_file'] or []:
-            self.lib.AddProguardMappingFile(file_path)
-        if self.config.get('sample_filter'):
-            self.lib.SetSampleFilter(self.config['sample_filter'])
+        self.lib.SetReportOptions(self.config['report_lib_options'])
 
         comments = [
             "Simpleperf Record Command:\n" + self.lib.GetRecordCmd(),
@@ -329,9 +325,6 @@
             symbol = self.lib.GetSymbolOfCurrentSample()
             callchain = self.lib.GetCallChainOfCurrentSample()
 
-            if not self._filter_report_sample(report_sample):
-                continue
-
             sample_type_id = self.get_sample_type_id(event.name)
             sample = Sample()
             sample.add_value(sample_type_id, 1)
@@ -379,13 +372,6 @@
 
         return self.profile
 
-    def _filter_report_sample(self, sample):
-        """Return true if the sample can be used."""
-        if self.comm_filter:
-            if sample.thread_comm not in self.comm_filter:
-                return False
-        return True
-
     def _filter_symbol(self, symbol):
         if not self.dso_filter or symbol.dso_name in self.dso_filter:
             return True
@@ -633,20 +619,13 @@
     parser.add_argument('--max_chain_length', type=int, default=1000000000, help="""
         Maximum depth of samples to be converted.""")  # Large value as infinity standin.
     parser.add_argument('--ndk_path', type=extant_dir, help='Set the path of a ndk release.')
-    parser.add_argument('--show_art_frames', action='store_true',
-                        help='Show frames of internal methods in the ART Java interpreter.')
-    parser.add_argument(
-        '--proguard-mapping-file', nargs='+',
-        help='Add proguard mapping file to de-obfuscate symbols')
     parser.add_argument(
         '-j', '--jobs', type=int, default=os.cpu_count(),
         help='Use multithreading to speed up source code annotation.')
     sample_filter_group = parser.add_argument_group('Sample filter options')
-    parser.add_sample_filter_options(sample_filter_group)
-    sample_filter_group.add_argument('--comm', nargs='+', action='append', help="""
-        Use samples only in threads with selected names.""")
     sample_filter_group.add_argument('--dso', nargs='+', action='append', help="""
         Use samples only in selected binaries.""")
+    parser.add_report_lib_options(sample_filter_group=sample_filter_group)
 
     args = parser.parse_args()
     if args.show:
@@ -658,18 +637,16 @@
 
     config = {}
     config['output_file'] = args.output_file
-    config['comm_filters'] = flatten_arg_list(args.comm)
     config['dso_filters'] = flatten_arg_list(args.dso)
     config['ndk_path'] = args.ndk_path
-    config['show_art_frames'] = args.show_art_frames
     config['max_chain_length'] = args.max_chain_length
-    config['proguard_mapping_file'] = args.proguard_mapping_file
-    config['sample_filter'] = args.sample_filter
+    config['report_lib_options'] = args.report_lib_options
     generator = PprofProfileGenerator(config)
     for record_file in args.record_file:
         generator.load_record_file(record_file)
     profile = generator.gen(args.jobs)
     store_pprof_profile(config['output_file'], profile)
+    logging.info("Report is generated at '%s' successfully." % config['output_file'])
 
 
 if __name__ == '__main__':
diff --git a/purgatorio/purgatorio.py b/purgatorio/purgatorio.py
index 0f07254..4e2560a 100755
--- a/purgatorio/purgatorio.py
+++ b/purgatorio/purgatorio.py
@@ -43,6 +43,7 @@
 simpleperf_path = Path(__file__).absolute().parents[1]
 sys.path.insert(0, str(simpleperf_path))
 import simpleperf_report_lib as sp
+from simpleperf_utils import BaseArgumentParser
 # fmt: on
 
 
@@ -169,11 +170,7 @@
     if args.ksyms:
         lib.SetKallsymsFile(args.ksyms)
 
-    if not args.not_art:
-        lib.ShowArtFrames(True)
-
-    for file_path in args.proguard_mapping_file or []:
-        lib.AddProguardMappingFile(file_path)
+    lib.SetReportOptions(args.report_lib_options)
 
     product = lib.MetaInfo().get('product_props')
 
@@ -268,21 +265,19 @@
 
 
 def main():
-    parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter)
+    parser = BaseArgumentParser()
     parser.add_argument('-i', '--input_file', type=str, required=True, help='input file')
     parser.add_argument('--title', '-t', type=str, help='document title')
     parser.add_argument('--ksyms', '-k', type=str, help='path to kernel symbols (kallsyms)')
     parser.add_argument('--usyms', '-u', type=str, help='path to tree with user space symbols')
-    parser.add_argument('--not_art', '-a', action='store_true', help='Don\'t show ART symbols')
     parser.add_argument('--output', '-o', type=str, help='output file')
     parser.add_argument('--dont_open', '-d', action='store_true', help='Don\'t open output file')
     parser.add_argument('--include_dso_names', '-n', action='store_true',
                         help='Include dso names in backtraces')
     parser.add_argument('--include_symbols_addr', '-s', action='store_true',
                         help='Include addresses of symbols in backtraces')
-    parser.add_argument(
-        '--proguard-mapping-file', nargs='+',
-        help='Add proguard mapping file to de-obfuscate symbols')
+    parser.add_report_lib_options(default_show_art_frames=True)
+
     args = parser.parse_args()
 
     # TODO test hierarchical ranges too
diff --git a/repo.prop b/repo.prop
index 927bc60..e8d388f 100644
--- a/repo.prop
+++ b/repo.prop
@@ -1,419 +1,422 @@
-device/amlogic/yukawa 8452a2826038a7e5635460edd039152c35bd8f7c
-device/amlogic/yukawa-kernel 66f55658f9e8790d4823357920b848d52a4bf29e
-device/common 460fcf0376b6237ad788b49b0560308a97e23493
+device/amlogic/yukawa 5677a372d54ef9c420b23dfeae392174da7cf607
+device/amlogic/yukawa-kernel eed6f9e0d8220918b657b5f254855cf79b1b1ca8
+device/common bd425946e208e7f970234389d7d9da91b2628ab7
 device/generic/arm64 a8f870b2bcc01d57753173ba88d82f450cf831fe
 device/generic/armv7-a-neon 78803f894677eb6e36a71bd39942f26df8295e8f
-device/generic/art e8a1be375832a7f8f7e29d3face61e067a89b79a
-device/generic/car a47334e91109ef31d94831c0ef7cf607cd333fad
-device/generic/common 3582e75ee40b5bab0ee83ac2371aa4f8c1bccf1e
-device/generic/goldfish 2fc197f4704e1f6444b66f9e0149f77726d9e977
-device/generic/goldfish-opengl 00852a98207243273d57e8f5885f7dae69e7d2f0
+device/generic/art 1c96ea90efd0e204cf4f6e65c9a6f19d557b4240
+device/generic/car b9b3e8ae2d6c0481e8e1123bfd5ca5bea3d22748
+device/generic/common 5f5f291cdd09591afee0002de6d5befefd2839ce
+device/generic/goldfish 93aaec5381edc4c273e44b9e5a2955355428a3d5
+device/generic/goldfish-opengl 0100cc743aec9ce29ee8fa10addd823565a166c3
 device/generic/mini-emulator-arm64 a8c0896b7b861d7b88978c39b2ff2378cfab11d4
 device/generic/mini-emulator-armv7-a-neon e601f097400b954be840190789ea50ebec3d749d
 device/generic/mini-emulator-x86 d88a605514040a77cc5a90f8c48a963c652963b4
 device/generic/mini-emulator-x86_64 ad534dd78016dbdf78c7c2140ad606aca6d02568
-device/generic/opengl-transport 629ed91f1ced109c86381d4e710e72e4a5c7f058
+device/generic/opengl-transport 989ed9e61ee046c382c8e8c0211c468ecf1fbdbe
 device/generic/qemu 5ab1a80ca9a3edb54b8db53e20508f132aa9af8b
-device/generic/trusty 6a4a48ea93c44d22192ecddfcad2ddf1bb5c78e0
-device/generic/uml 9ced36c9d722f75cb77257336e14a43f233427c1
-device/generic/vulkan-cereal 532fbb2417f8b8b60cf8c8452d1f1c5ce3c52ab5
+device/generic/trusty 4b91b3b53b773ad00dfec0c61756de73bc7b317c
+device/generic/uml 91d8e8e770458565c1ed11b1ac9eb57dbf978a08
+device/generic/vulkan-cereal 8a9f5ad270f03653e3e51d394b1673312bbe413e
 device/generic/x86 817ed7bdaba24c0cf699236ba877858e7516acf6
 device/generic/x86_64 8c842b376a213920eb9eef147c0dc0c9e5563796
-device/google/atv 0f2e15e24d516a79922eacd38c3447707e5ea9d1
-device/google/barbet 34486080cabb78058d2b9fbcadf69ff1cf40aba4
-device/google/barbet-kernel 178324806e361494aa3c9293e6e9b99fba45fc93
-device/google/barbet-sepolicy fc7edb5bdb9bb5bfac1d0261cc83e115feb71a9f
-device/google/bonito e92cfebf1e4667bc2a736a8df91681290d7266a7
-device/google/bonito-kernel 392507de332e1d9fcb79b435a9cd22fff53c9ad9
-device/google/bonito-sepolicy 360dee0b3e12ea5976ba821dd6260293333cc5c8
-device/google/bramble f43b0d504c5e9a01e86bb8b85c7469ef8720a15a
-device/google/bramble-sepolicy b293621007b83cf67b62dd06f8143565e78b37c8
-device/google/contexthub 48f7ea575613270c223b1fa3a10592197c2ca148
-device/google/coral e5f068c7e67126f123740c4d4c6e82e906a33ad3
-device/google/coral-kernel ddc622445695b670fcd2629cbad51797e7c749e9
-device/google/coral-sepolicy 820a21cc2f40aab1bd9e08fc7da702f41fa1dce3
-device/google/cuttlefish 037f724cfcb84228a5e074d911b1b2718a8888a3
-device/google/cuttlefish_prebuilts 7cf23bd224f203f4b82c26b15015e07afe2b31f0
+device/google/atv 2f219f10e676334c7630446c36f7ec3f64d30ab5
+device/google/barbet 802e0797789300f476143cbcffb76156483b9a54
+device/google/barbet-kernel 998323971011bd39ace38641acb886f81bb63d81
+device/google/barbet-sepolicy e03287716bd6ef5f0c9543e2c132a27a522fb3c9
+device/google/bonito 628fcd2a9c3f5356e177e7d11eb3a1d776eaa643
+device/google/bonito-kernel 08b345590401b37cb95f3ad2d60ef93bd9144a5e
+device/google/bonito-sepolicy 3a8b8188aa784a8cd3a56316e08254b2bfecb465
+device/google/bramble 01c88d8396e2b687d9a5b38ce6c4399497f3f51c
+device/google/bramble-sepolicy d14198b6fe2ac21712dcad51d37140431956a855
+device/google/contexthub 079bb97347060e8cf161bf905430b47f274f9cf9
+device/google/coral 17af059d1305dee3f3180189210dc998b1bfe850
+device/google/coral-kernel 5df8dd4e1ce4de5e1a99041291667d4526ed125f
+device/google/coral-sepolicy cd9d56d4f9e2314cf2d7651d0fd05d0de001ab7d
+device/google/cuttlefish f1395649b0655047e07cac9d9e396b44eb4da884
+device/google/cuttlefish_prebuilts c9abf162c6471527851a3d31f549bb4087817620
 device/google/gs-common edbdff98d5e2c9719afe4f6a9cf95b5d641fb577
-device/google/gs101 7d9b9dafb1c57edcbde4306f0ab98c1b4b722918
-device/google/gs101-sepolicy 783e960fb60637c9929a39367036c709847ef4ef
-device/google/raviole eec4399e8d8fa52017af864cb5baa933cfe854a4
-device/google/raviole-kernel cc424ff658a55f2e7920f8531fb285c702a29be0
-device/google/redbull 3e65924ce35e4e6be2538111f6c584b8fb8a47e3
-device/google/redbull-kernel 213ef5219f6f6be08b04e0861fa444c9858a4205
-device/google/redbull-sepolicy e266592c79ac95958cd0e3f279a8f8c26cfba4c6
-device/google/redfin f2ce69972172367fd1c0caab75c63a77cedfa2ff
-device/google/redfin-sepolicy 5e56497e7eb2af374498f2a3134c607ed206ef4a
-device/google/sunfish 55358f19085de6f54dd459170027ea8bd8a7e03e
-device/google/sunfish-kernel 66db3913415ea4c46aff1aa3ffe349121cd88f12
-device/google/sunfish-sepolicy 8836c48605db10a66f9ed0477fd81aaad0a7babc
-device/google/trout 95135fd48daaecad0fe78b0ce3391a6eabac3085
-device/google/vrservices c3e0c2641998737c0c693b52356300a848d793e7
-device/google_car 5274036ad0de78900c5a548cfdb34a804ee1da5f
-device/linaro/dragonboard f8a97abc14224b34bc9489be97792bbdd4a510f2
-device/linaro/dragonboard-kernel cd3b61a887e2d8c66e7b48d77f73b8c11e6baf2c
-device/linaro/hikey 89382331ab248b29af72b97987560f8498429555
-device/linaro/hikey-kernel 9a5e09d6b5eb727b8e70119e88bbf23fd688a219
-device/linaro/poplar 0654aa94fce084d2f9bd811d2b5af261a13e94fd
+device/google/gs101 574b2c9029ef2304febae8f6bc94129dd134468e
+device/google/gs101-sepolicy 9b92e2e9aadec3e680e35d43c2af5c452950612f
+device/google/raviole 367403a375a0b5147ffc5e238ffe70389f739377
+device/google/raviole-kernel 7ad14a1a5a3772949f638fb9e7f0f5d473c2b546
+device/google/redbull c44cfbb8f92d2e2d9b0ae39d23a293d32d6d7640
+device/google/redbull-kernel 9bd4a46a0d00ac1c5eee07cb8caa8daee9735f05
+device/google/redbull-sepolicy 7fe9993a52307b63db06fc883a3d9156f1d6455a
+device/google/redfin 20b6d0610b78348b5e87b46f7aa8c4abe058ac05
+device/google/redfin-sepolicy 8b3174b80d30c0abc1171133834fa824af61acf7
+device/google/sunfish ad28b1bb258a339c0fe978a637b225dc3971e2ed
+device/google/sunfish-kernel 8dba400dc5eca8c4eaeacaff0969004cc9774b5b
+device/google/sunfish-sepolicy a999c4bb2dcd77bd1e05e05660373a0ceb670dfa
+device/google/trout 013ca262a21628f5bd151921c2a7dcde922fe283
+device/google/vrservices 4d2dc925e9ab1018071a2956f87f751a3b85476d
+device/google_car c79864f1c59fac3076680656b33d6335c5fb6d7d
+device/linaro/dragonboard 22391dbedad9ff62ae73f4f6a3c0247c53840a8f
+device/linaro/dragonboard-kernel 701d7e5a917214d4f0c961d0b92e2fa2cc340b46
+device/linaro/hikey 0f34a30f6bf08c2016dc9abdaf29fff42907efdc
+device/linaro/hikey-kernel 6542b14f1e977d5e80ba18fce4d3701e28d5f83e
+device/linaro/poplar 46461a7153d62ccd13c72ecc1a17cc58d8691fb2
 device/linaro/poplar-kernel dc5a5f37e19871ed67bb9e9209e7318bb3e6ad31
-device/mediatek/wembley-sepolicy 6f6ac2e5db195685547bfa367497e25caf55aa56
-device/sample 93f7b076e0ea87730c609c142b5dd7fa36ac8eba
-device/ti/beagle-x15 c76082cf63eb138daf2240dfc53e92eeb12b014c
-device/ti/beagle-x15-kernel a6e690e1cca4bac205d712f85957269fc830fd92
-kernel/configs 8734b56f3645e82d38f0d61d9276df3050d16932
-kernel/prebuilts/4.19/arm64 0705e65cc1e249cd6ebc268620dae93a1a3c8ebb
-kernel/prebuilts/5.10/arm64 8c3fea20d58d2b8c6301482076c412d50a25bbee
-kernel/prebuilts/5.10/x86-64 aa1163bbb478275df1df15f6f672106672e75fd0
-kernel/prebuilts/5.15/arm64 66489a116d28ad5b743e878f051e8429069a4f7b
-kernel/prebuilts/5.15/x86-64 79e961e85915ba8a9d6d0c99d5e1554dd6d7894e
-kernel/prebuilts/5.4/arm64 fdd17c085423dc942940d076ebdd464d2e92c3f9
-kernel/prebuilts/5.4/x86-64 19a2a14d535a0848ceda32d1e7089de1f826c893
+device/mediatek/wembley-sepolicy c3960056536e2a39380b1eb0a7fcf71dda300401
+device/sample cb774f767dadf3de2581c5aefd219ff6318da319
+device/ti/beagle-x15 509878765bd128fe2cd0bfd97aaa5b0916e7d5c5
+device/ti/beagle-x15-kernel e42d6120ed037262b99ee10e3befe9366acbc9f3
+kernel/configs 7ea7ec79400b64b29bcea0ff9a5689f4b37ce001
+kernel/prebuilts/4.19/arm64 740e734f1eb41f4fb71da8fb0ac896ec1ec13aa7
+kernel/prebuilts/5.10/arm64 6ac624f84dc6c8ecfdb6eb0f1d9b474541f8bfb0
+kernel/prebuilts/5.10/x86-64 4de14c6663dd79c56bb4f92303a6dee0366a82b9
+kernel/prebuilts/5.15/arm64 976fc3ca09d9987f175b38d6c2895510ca4a0e62
+kernel/prebuilts/5.15/x86-64 a310f920856219c2367a11539293d698652f43be
+kernel/prebuilts/5.4/arm64 70f9d87e5b736bca46d1139ec711145bd2085d76
+kernel/prebuilts/5.4/x86-64 ae8287b4064ed014dbb7646a6b770c907195d5f1
 kernel/prebuilts/common-modules/virtual-device/4.19/arm64 31fa2c2d74f8b3659d8a2093f727486c4d890540
 kernel/prebuilts/common-modules/virtual-device/4.19/x86-64 396ea43be7fdb2f7fa7f5ebf3e9aa2a3491a0e68
-kernel/prebuilts/common-modules/virtual-device/5.10/arm64 2511b14405dfe6c3a7ecbf0b959ec73502a3316d
-kernel/prebuilts/common-modules/virtual-device/5.10/x86-64 83ac085a1574f2f7fcaa2eb0c2dd50fcb397165d
-kernel/prebuilts/common-modules/virtual-device/5.15/arm64 4f76a05ebd0c515ec500b75bf2ccc13eab7f9261
-kernel/prebuilts/common-modules/virtual-device/5.15/x86-64 4a43092128e4a92bd70a7ae377e1bbcb09c16867
-kernel/prebuilts/common-modules/virtual-device/5.4/arm64 17dd8d07d78dd7ecfc9c77321c32835a283e1c4c
-kernel/prebuilts/common-modules/virtual-device/5.4/x86-64 5d66141c599d84f92d67c23865b5fc68910f7a01
-kernel/prebuilts/common-modules/virtual-device/mainline/arm64 ca7638691666c828f940a75a97f356092f6e0b8b
-kernel/prebuilts/common-modules/virtual-device/mainline/x86-64 c5a243861939f63a588b273ee60646632975672c
-kernel/prebuilts/mainline/arm64 610128cd53d53af9502588012fc4cdd2baf78279
-kernel/prebuilts/mainline/x86-64 a930d9bfeb579218d3291b9b88436f17f471ac95
-kernel/tests c830560f6fa1fb6c0276776b0b14c09ecf305bb1
-platform/art 7137bb9e28a92b0acaffe76d979d8ebf7bb27647
-platform/bionic 3e4a9b3f9fbe52ac12c71b802170402d4b35ad40
-platform/bootable/libbootloader 3f49a5e497a5439e852a5e62f2111b575bc76bf3
-platform/bootable/recovery 2dc021fbb22e5bf6f5e55b5775ebb56b315b5167
-platform/build 7fd63061769f00cbc0b4457e3131d6fcaff7270d
-platform/build/bazel 062331af998c912d0a0dda66f7c63b0434d11c20
-platform/build/bazel_common_rules 223fe5f20f5c8b591c88c9899bf7df8fbe16bba7
-platform/build/blueprint 65c56bf690a0a264d23f60ff3dfcd3d8207e9f0d
-platform/build/pesto 75874901924fb4ec4e7c2b29f879456e425e34d9
-platform/build/soong 3203efa58dd49a1494dcdb7e81e12a9acbdd02c8
-platform/cts de88d8e4633e6e7070ba48676ec9e4dffca85bc9
-platform/dalvik 6ccede38aedba4815925ebc75471d220830e9bac
-platform/developers/build 7588744d5cb9c816237abb3fd030775a9429dda9
+kernel/prebuilts/common-modules/virtual-device/5.10/arm64 9fce4e52d8f65fb761e4b2750c2bc8c87978a8b9
+kernel/prebuilts/common-modules/virtual-device/5.10/x86-64 34eb774c72dde7f57f04b5e43687c9060c375c20
+kernel/prebuilts/common-modules/virtual-device/5.15/arm64 35c6957274d824cf996ca54f0f121ffa7016a8c6
+kernel/prebuilts/common-modules/virtual-device/5.15/x86-64 9a2b5fbdd1ce0f5374d855fa1acb96e5bb2692fb
+kernel/prebuilts/common-modules/virtual-device/5.4/arm64 f6b9a67dc484367a48cf3a9da1185cc027b7d659
+kernel/prebuilts/common-modules/virtual-device/5.4/x86-64 143966dfccf4e6005274d1c613ab5434f3818447
+kernel/prebuilts/common-modules/virtual-device/mainline/arm64 3f8458c4093af832a251e2608e38e1388736c552
+kernel/prebuilts/common-modules/virtual-device/mainline/x86-64 e720902e79f3831cdb1eac9a38a4b98b55f54f97
+kernel/prebuilts/mainline/arm64 74f994e7a5f820774d13c6dd4deea3d8a2983eba
+kernel/prebuilts/mainline/x86-64 c2d46e6f8f12963cc71a65ee27f2f4ea5c388272
+kernel/tests 37e87340a5d2404f123442b72e57a40a66e97367
+platform/art c0dc7cff8210c00e9654019136304f7768117485
+platform/bionic ea73be5cf282c69482a1020f0fa8661893fab6f1
+platform/bootable/libbootloader 15525981f0a905bc273c50c6158ff71cecf5f91e
+platform/bootable/recovery 01d5379be3dadeedd12d2e4eb79ac582e66575dd
+platform/build e23224f2f662988f0d46208f36ad4ee13b085781
+platform/build/bazel 244ae2014d91eaf35d52546f17720344ddc14e7b
+platform/build/bazel_common_rules acccfc9fe1ca3d55efb93acb8b12f6a9e9da6cf0
+platform/build/blueprint 8846aaaacbad3872102ebc804c6c7046890843af
+platform/build/pesto c91669168430ba90134986d5c24e76ebbe4dd2a8
+platform/build/soong 0f6da24c1c30b7524257a69847fadde09cb224af
+platform/cts 78a84679ec06249a69d7fd95e9ef6fd69415dccb
+platform/dalvik f81eda9d1ac728c8a6a21dc63c785fa88e09f0ca
+platform/developers/build 08253efe997590ea0d25e7cfb97b3dfe1d81072e
 platform/developers/demos 03814c35b8ee0a1284c667556260124d97466b28
-platform/developers/samples/android d83d8cff2ba17a2162bc2063dc6168f5011406b9
-platform/development 88918007a21a9d6ac72c11c060bd201ef0ff045b
+platform/developers/samples/android 7412092957b21a4f0e76e5fc7c4bd933048d214c
+platform/development 8337cc1301fc08cc90d165209bf20e52f1e172eb
 platform/external/ComputeLibrary c267b34d881fd34ec325642b45bdc85b9ae22ae2
-platform/external/FP16 f24b12237c4717df2500ddeb8c36c51bd1e20e2b
+platform/external/FP16 ba06300ba66277f2689b312b116bcd0842091901
 platform/external/FXdiv 7d850210b6a9bfc78d5aecc3f6b6a844462215ca
-platform/external/ImageMagick 101f209c794d4afacbb790c8f53ab9bdedf9db1d
-platform/external/OpenCL-CTS 17a68917ff73f2786ed039baa739cf015e10fb4a
-platform/external/OpenCSD 042f662a4746ea0c98c3543bf0e1fed2209af142
+platform/external/ImageMagick 5bdd004352a20d0af7f7fa3c9e84f9af0ed8baef
+platform/external/OpenCL-CTS 20b4fe7fda624c41df19dca2ac66d5db9b60e735
+platform/external/OpenCSD 91b96f069e5e2689184b0f3cfb6eae8b9c25a47f
 platform/external/Reactive-Extensions/RxCpp f3acffd697cf1efcfccba4af4b3c5cc478a938c4
-platform/external/TestParameterInjector 31c89b797c2e81413ab10c86521d65fc737c047e
-platform/external/XNNPACK e15dae544ba220b3daad8addf79ccd566501375a
-platform/external/aac b88f52912c1aa2b9c7de45d11b3cd19b4425c877
-platform/external/abseil-cpp 308dfd6070543fd553a03ce4a4354437efd1f219
-platform/external/adt-infra 49a598b4eb02fab2532aaae81ff5b9373fa601f1
-platform/external/android-clat bb04b3ebe322e97f40353c1d87d238322321018b
-platform/external/android-nn-driver b30ea668adc0eba4c1f9530e9c23444eb250db28
+platform/external/TestParameterInjector fc884615520cf306f7e17f0a9971cd66b1eac546
+platform/external/XNNPACK e01f99b6dbbc3735d72b5aff1b0218d5f876b65b
+platform/external/aac 2485121962f4085cf3ade96846089e802ca8be21
+platform/external/abseil-cpp 546e4b60b39a14d93bd7610f880366bb12f33692
+platform/external/adt-infra ba0dc9639c7eb0cec0135066bf0efcd8d8e42741
+platform/external/android-clat bd5d1646b6c41da7b3820c92bb5c7fa9eb5cf9bd
+platform/external/android-nn-driver 30dcae92495c3bc58dc8b25a1ae9e9fb30dffba6
 platform/external/androidplot b2c680bb9fae8c3dbbaecf285e21ff5a7a7ea56d
-platform/external/angle 07a485aa06b1a8b2f1f98b3e9cea73da37b76959
+platform/external/angle 443193dc7fa8cb3c628576da8ed09b4a3f854d9e
 platform/external/ant-glob 7975b2e3267d09bd57a93dfe6484aefc92cc0b1f
 platform/external/antlr 5e9c5f19f128039cb39c525c654a5613db2cde4a
 platform/external/apache-commons-bcel 3afcbb34fadb7e198fb8fa389e5fa05bea4992c6
 platform/external/apache-commons-compress e3e70959d3f90a0edff48043afb581761ae16650
 platform/external/apache-commons-math 94a0196031d21fb0009bf5638fc88a508596c50f
-platform/external/apache-harmony a4eb42e6c16ac385d2cfeb03c433e70d9fee1d51
-platform/external/apache-http 3b626a5aaf8676dbd03e49993a13aa18107fdccf
-platform/external/apache-xml 139d6346a5b57225ba5523ddad45a611930bd03a
+platform/external/apache-harmony 6fd6571045e1c20a499481302e67c12808b234d7
+platform/external/apache-http f521ef3fcb86c13c2cac6c36795750e7d8a44f30
+platform/external/apache-xml 3a09a5de59cd3d99a88cbe4be1720d82d60f8c77
 platform/external/arm-neon-tests d6edd35daae92c9a7cb1c9a6ec1284faf5115a91
-platform/external/arm-optimized-routines ebf3a7c8225e6a2d173efdd18b3f224a92795b53
-platform/external/arm-trusted-firmware 4a058330253c976cba91dcde88a6b491ef30e021
+platform/external/arm-optimized-routines a0774c3830a2e0b10c8a4423401b25774805d1ef
+platform/external/arm-trusted-firmware b462fa33c88061e2cc8901dfea1f2acd583830a7
 platform/external/armnn c768eebe89d3a1ae2f89586430c945dfc0f9095b
-platform/external/auto c2d02c120bb3376e8ac23425bf0563854482c6f5
+platform/external/auto 4602a2416f0b6561eefba6ae128a50c271d7594e
 platform/external/autotest b09fa62006be048676a4f1d3bfacfe030fdf5924
-platform/external/avb e685eb851dce98edaa30fa42a1d3f4bfba344131
-platform/external/bazel-skylib 49167b764a488958ba7b57981f10f1addad94726
-platform/external/bazelbuild-rules_android ef5334abc077008bb55d1913d7b192417c7661a7
-platform/external/bc 7ab8b0c6f647279a3855fbdf4b8914fbe3027e8a
-platform/external/bcc cd192fe00092ffa6e4d949921251b7e175b12296
+platform/external/avb 65fd3c8bb4e001216515a20d49b58f5e7d05aa58
+platform/external/bazel-skylib 751794ededcf51763cfe6ed2bd5daaead90b4719
+platform/external/bazelbuild-rules_android 4f4fb7c48a0e0712760a7a76e828230cf6bd4997
+platform/external/bc a19420e481808edcee3a89ef0ec28fa976dbe535
+platform/external/bcc a789e732f0e3bada5a6bce66da07c7a7b8009512
 platform/external/blktrace 59c8bdfef2fa16fc4714374b8a3293b0481e797e
-platform/external/boringssl 37fecfd4dcceb7cb9794b3217f3ba98b60dbee19
-platform/external/bouncycastle 581f5e8e38c3075eb96889be617d8fa44991da78
+platform/external/boringssl 04020dd3a5075e081e18ac0bccda127e69033660
+platform/external/bouncycastle a73d2d5997d7eb1c40be084ce63793e64200f698
+platform/external/bpftool a8d3dd308d89704cc95fa3078c57a3b2794d8213
 platform/external/brotli f2d38d9f9559aa286f8bdf790d40a2b60a534219
-platform/external/bsdiff 26e664286bcd27831d846781d2d7096177b6f540
-platform/external/bzip2 eb4b0aa84fa816d24c1592342f0844756e71ce9c
-platform/external/caliper eb1a2e1a570b1fe411e6ae0941c68c66b2a11dd4
-platform/external/capstone 521478379cd68d973e5f94b74737efe5511ccf64
-platform/external/catch2 9ad57cb8b45b1231f0bec5a7f227e1a58de569f7
+platform/external/bsdiff c377a6f624fc0dd5320de952f043d1a1bb5a73cb
+platform/external/bzip2 45bb1c619b11a3004b84b5217159b33578a15e03
+platform/external/caliper 5abc62c61cdade95152c88aab507fc1564d82929
+platform/external/capstone 7a8826e1191d80a44664c800079bec13c5f2f266
+platform/external/catch2 69309fd3932511430d7432003008c940d951cb6e
 platform/external/cblas acaec517e34fb9a0210f8fff1000b88184983b8c
 platform/external/cbor-java bb098f6cce64b58dd7b011b16a258e644236f943
-platform/external/chromium-trace aac5d63dd304acb88b303d6a4afad552e464c5a9
-platform/external/chromium-webview e81a6cf135793eb7e265a497b93512257ae3ba9d
-platform/external/clang 806fd94e1a61034256d00019daeedb86bae7ee98
-platform/external/cldr 0669d85bf4d8b626dd13f0495780bf52c2a7e68e
+platform/external/chromium-trace 60113d820d77833df39f2acd8ab6fd01c2d8abe0
+platform/external/chromium-webview 0f6b42b06cf6838f062d98aff42a5136cd0debc4
+platform/external/clang 97590be00c7e80df17af9fba1f12a6a850919832
+platform/external/cldr 446d49bb7425063bfabbe807b2cb5fd4f53e546f
 platform/external/cn-cbor ef07341a09e332c72f3066dfc2dde3b10dc81179
 platform/external/compiler-rt 444a07aa32aa3ec74cca2f3dba5c7271088f25be
-platform/external/connectedappssdk acdf5f3c75988a6a2a71402cee3b513a92597074
-platform/external/conscrypt fa26362b9491d150e144cce45a17dbe93deb8033
-platform/external/cpu_features 5f35113d1ba9d128bc8fdb459321c3b52a103ce6
+platform/external/connectedappssdk 52aa0c44122d6eb55c25f1e4e2242357828954ff
+platform/external/conscrypt c7848cb44fd4b35e4b4759fc74a888c8607a509d
+platform/external/cpu_features b88c0f82a398f2750c2f53351d58d4212f0037d6
 platform/external/cpuinfo f4db1e200ce9452791ad107e4d18f14668adb3aa
 platform/external/crcalc 4337f4914f1b53a3695993d85d0d934d03d85c04
 platform/external/cros/system_api fbc51b57a6a56013e0132bcfdf1ccac3a02ef18d
-platform/external/crosvm 896d1e9da6f7783d0c00a1be4f8535437241651e
-platform/external/curl 85891863b6abe539c5393fb3b94251c935c3ba10
-platform/external/dagger2 a2569bb6149a82679f7723f03047575d4cdc5d6d
-platform/external/deqp 53720b78ffd9ac2c6788c415cf4fd7e47321b46b
-platform/external/deqp-deps/SPIRV-Headers 376e1273cc737787c5e53020cab1a780727afc45
-platform/external/deqp-deps/SPIRV-Tools 42e68022b52c5b737302834cc0edd8540ed25564
-platform/external/deqp-deps/amber 90dfbc4f63fdf492c51c62402cf2ea9d06ebdd98
-platform/external/deqp-deps/glslang e5b44fcf6097c8a904f154bbd6328816c5a2aca4
+platform/external/crosvm 784e31cce1b919d2fa8c262ae369717be17725c9
+platform/external/curl f357993e32a89d17eb84548dd1ca21a447242436
+platform/external/dagger2 a1888cde9cb89ab42f2a2fd4359fce23af9a4dee
+platform/external/deqp 202eff127aaa01e608d95627aad39d3168b66e82
+platform/external/deqp-deps/SPIRV-Headers 5a2b11c7909715d5dcaf3d554798ef87d22832d2
+platform/external/deqp-deps/SPIRV-Tools f5da982ac4bf8ca6196205ace36abe65d4ee1d86
+platform/external/deqp-deps/amber 1b26efd4898a9284f35bbd42b2050b299fe082bd
+platform/external/deqp-deps/glslang 1a266480831da6c3cb73c0cd1ab958037df271e4
 platform/external/desugar 3f2e342d158eeffb6cc2732a3e151947e1778285
-platform/external/dexmaker 9dce3eb16c9fcf4deec8f948ead21fc90b61eb53
+platform/external/dexmaker 70f053f6dcbd45977c9ba7dfefe7f64f811f1df5
 platform/external/dlmalloc 1e7d19dc9110d9e7364d5b69db6348005423506c
-platform/external/dng_sdk b09ab77c62c60f96201c069f886b7d88e3249b89
-platform/external/dnsmasq ef388aa1e3960e38a1ee69b1bca6d20711b42be4
-platform/external/doclava 5ed3bb29745014b6a2ae9f18d9972f305af93c56
+platform/external/dng_sdk 62a78cf80da30294ff670eabf39acc3a3fb0f939
+platform/external/dnsmasq 24d8515a1b8e7a9526b742695aa3212334b21af6
+platform/external/doclava dcdba9f664bc84b51ea47fb8f6aaf9f27635bcef
 platform/external/dokka 5e103bb1de1b48eaccfc540c98e952e648643268
 platform/external/downloader c48f927a0a6213036a37375ba670e81a3f0c351b
-platform/external/drm_hwcomposer 7cd676bfe3c6bd5cd18c1898a2a8d691718e501d
-platform/external/drrickorang e7d942579b847329f0850b03e6ca60d3065e567b
-platform/external/dtc 91e2c5848a4c9edd048b7502b9f110d7b8f3116f
+platform/external/drm_hwcomposer f69b896c2eb6d3e088bf9747166a1fac76a40498
+platform/external/dtc c49e03bc43266df4595c3a5024022f3d200eb455
 platform/external/dynamic_depth 314c38ace9cb9c8f2b4f17a112de1b7518a799e6
-platform/external/e2fsprogs d0aa80a424735cfd553196ae349227d754bd75e2
+platform/external/e2fsprogs 3b2c6d484aa4bea9ace70c92dbd3dafe4ffadc31
 platform/external/easymock ff3c51d34972d11a0f17fd28b164af6978a77f0b
-platform/external/eigen 710f766fafb6e2a8e4c5484850500656ccd032bd
-platform/external/elfutils 0a17acf874f01961b1e26d64ea4c4334e1f41074
+platform/external/eigen 4288edfb9cedba57c6dbbc1cc4de4fd95c944be6
+platform/external/elfutils 57c07a39330adb2afa56b350f57cb0c31caf0830
 platform/external/emma 9b89c5da049cd45d8947b74f20531b5df3ad60d4
-platform/external/erofs-utils 635a91ad5824d6be2febef7075217d1115e0e7c6
-platform/external/error_prone a3d8aa068a6292bb6d1d3920e82908c699703c8a
+platform/external/erofs-utils 73e53b5eba60d3e81bf200e2a13e6b1ae6ba1858
+platform/external/error_prone 5a8a968c3e07cfc958ebee5f1c63626f0b2b3784
 platform/external/escapevelocity 0c426027ff5b7261d48f4ea19db8ec464eec9ca4
-platform/external/ethtool da6142166fea82060aa5472ccfe5d08e9ba2224c
-platform/external/exfatprogs c3353edb38ad2805335208e2830d701f0f996d00
-platform/external/exoplayer 520c5d2c26063f0eabcd666775c721be39cadd6c
-platform/external/expat f57a5f877e15aa1a7bd64331e3e4a59f6cb20570
-platform/external/f2fs-tools 38fe20aac207fe087b7549074aec8edbc7002f52
+platform/external/ethtool cb899e3c9d5834b2c20b9fabfbb66681b54cc41d
+platform/external/exfatprogs 1d1153e18599e6661e2760d9b98670fca15de9fd
+platform/external/exoplayer 543c486452b422643dc20b82ac7cb87cf8c7532f
+platform/external/expat 352ad3df161402b3451efa77d5cf3f7254d2e3f4
+platform/external/f2fs-tools e0f384ec1c0388eba9b13bee6cae372313fea61d
 platform/external/fastrpc 3065a7f78ba670bff8854a4f1c2e57e8a65ccab3
-platform/external/fdlibm 695f5f4c80350f204a8f4e22bb913edcfb444c7e
-platform/external/fec d0469932dc716bc2b8ef3efea4c10029710a1e07
-platform/external/fft2d 4d2dff89a2472f4247da2a85983a37f35b5f5089
-platform/external/firebase-messaging 1b3ee1ca0ea0ae6317f14639f551dbed7ca3e952
-platform/external/flac c36f96ad29b2e2bbb9eb8a070d868f8f5f59ae71
-platform/external/flatbuffers 98c6a6fd9c1731157022e499121affebdaecc564
-platform/external/fmtlib e4c6ab791de359982410f5d9efa9ca8c4f67daad
-platform/external/fonttools 1a028b57a3024d0027baab941454d524a02a0add
-platform/external/freetype c7247f1295a3624ba20160877ff20fca6ae5d4d0
-platform/external/fsck_msdos ff2662f52c1e5453375fce3b07c429710c0b0833
-platform/external/fsverity-utils 8387fd149f80254d52e1387f9c3f778a70a4d46f
-platform/external/gemmlowp 96315b5950200b5baf3f7e9bd4a71ba3c35ddd1e
-platform/external/geojson-jackson 26b259edaad3b43d44e6f943ca84c81389fc2058
-platform/external/geonames 98cd22fa44e66de413a50b63c487ecb67753d781
+platform/external/fdlibm 8ed228170f2cca7f65560dcd61f6bac176d7f7b3
+platform/external/fec 6cdf58fc69d8114a699bf80329379951ad592564
+platform/external/fft2d 3ffbc74fd45bab491029cd12819dd76ceba38b25
+platform/external/firebase-messaging d95c9d8a8f4bcd348b1e91101739a642fc5de029
+platform/external/flac 9028f67873d7b601389e7c8b826019bce54e0f17
+platform/external/flatbuffers c9f1b01fcb8687db14a1c9d0793e8e0ce9423b62
+platform/external/fmtlib b17c0dc0724838a38679e1e680ee9066fd9ed66a
+platform/external/fonttools 040bde7014fe2b4cadacf3413b1bf170300db934
+platform/external/freetype a06b8404574a19243f81c4e00ec99227fde9b051
+platform/external/fsck_msdos fdfc6f76b106424c0319fd4f7ffbcb74cf4094d4
+platform/external/fsverity-utils de7d92ea04ba80250f60add7538d9f569ce091b2
+platform/external/gemmlowp 2344541a0a82bf1b9ded4e658dbe04353c9297c2
+platform/external/geojson-jackson 4b8d11599ad28708b8cda03aac5fed454545ec5b
+platform/external/geonames 564d84d1d3e5d3b08ca8aab6e527c7220061bd21
 platform/external/gflags 0a79e775689c909755de7bde84a59210daecfcdf
-platform/external/giflib 01b0715646b4d6518ba038d6ce979daa09f94b56
-platform/external/glide 35f653bdc51cf9ad2afe72c4c2bd7a01fe47dffd
-platform/external/go-cmp ef3d7bfac43fd6f23623c32dbcd00b550bb8161e
-platform/external/golang-protobuf 09cc35af0ae2c59102cd56a0df4881d674b5b344
+platform/external/gfxstream-protocols 36afbdd57c90b234ecd81738f80e9ccfb52e1a7a
+platform/external/giflib d783c37d2c8e0342b2358e5099ccfd3927866149
+platform/external/glide 902908c4c0f99ad48b79258cfda20f8d4df4780e
+platform/external/go-cmp d3060192861a5509fc6d3e038d725b04f5fb978b
+platform/external/golang-protobuf f057362eb204d77842a2ae14b9b1cea3fcc87601
 platform/external/google-benchmark a9fe1cf515fbcf6fc298162ac59c2b3a1c0145d8
-platform/external/google-breakpad 62de7faa9eb07e8116f78b63eabeba1a8703551e
-platform/external/google-fonts/arbutus-slab baa25c3d2479d4c8d020c025517bdd028540dce5
-platform/external/google-fonts/arvo a6620ad842b2cbd32f3352e245fbf1fdcfb29557
-platform/external/google-fonts/barlow 712e324b45cb852afbdc0b46a7e11ce0564c5d71
-platform/external/google-fonts/big-shoulders-text d31ae52fe46e9efacef8082d3528445c7013915f
-platform/external/google-fonts/carrois-gothic-sc 95116e4cd09f42b1591477d952e87cd11b132e03
+platform/external/google-breakpad a201fa6b7753794bba0387c235e3428adb5c97f7
+platform/external/google-fonts/arbutus-slab 743548021c5318276c12ef3ecc71b7ea9a8d05fc
+platform/external/google-fonts/arvo dcf49da85754d50a3ce684adb794e13487ebaf41
+platform/external/google-fonts/barlow 79531f70ad0f306bb277df3017d05e69063a66b7
+platform/external/google-fonts/big-shoulders-text c73db04c3f787fd9c642a92ed3066eb26d93d18d
+platform/external/google-fonts/carrois-gothic-sc f886984c790d22ad7b647ba455f4d2c4852c5794
 platform/external/google-fonts/coming-soon 2d0a2dad31334de5000ecb959e630df599571aa0
-platform/external/google-fonts/cutive-mono 327400702dc3fbf7e12dfcb911e93fb45387cca8
-platform/external/google-fonts/dancing-script effeacee30eb1ce62f35dad197e0de35ed3486ab
-platform/external/google-fonts/fraunces 96b52bd22c86ba1bec9731f599ec674fd6493bb8
-platform/external/google-fonts/karla df8335902c7bf997c47b84f6250c25944ea28252
-platform/external/google-fonts/lato 01c01a05bad859d32ae37f944dd7ad95b1c8d9f3
-platform/external/google-fonts/lustria c3da8853b355fd734f572da971f26ad7f0020d57
-platform/external/google-fonts/rubik ba95d1cb9a46635f64f04c5fd536631b61ea8ede
-platform/external/google-fonts/source-sans-pro c98b51173f5e709daf22e2839f1a35fa836890c1
-platform/external/google-fonts/zilla-slab 0af8a9bb0fc901c796f7ac5c7e9945dbb5904243
+platform/external/google-fonts/cutive-mono 1d770bf419146f2d8e45b4379c68d46b2eba9a0c
+platform/external/google-fonts/dancing-script 1457fda4bfc778e72780bb14e1bb8409f67fffc3
+platform/external/google-fonts/fraunces f9ed8199d7cbbae6880aac311dc94268b1366adb
+platform/external/google-fonts/karla eb01f77c4e95c96e27628afbab305122b0259354
+platform/external/google-fonts/lato 1289a2eba382e2c6f282b0bd81b20a78bc60af27
+platform/external/google-fonts/lustria d66ec78943ecb419e6d7ec76e7e82e3525839b1e
+platform/external/google-fonts/rubik 3d52a545dba1fc314310373cec2bab447da4da65
+platform/external/google-fonts/source-sans-pro d190d5eb0535e1780f8acb193c77f7dec5280038
+platform/external/google-fonts/zilla-slab e96975f593fa061ffa5046ba353583cdbb3b671b
 platform/external/google-fruit 729c6fdf4d9d7d1cce5dc4a748c085ab8640c3fa
-platform/external/google-java-format e8e9d1523c934a20d55b11e1ed891309b466f88d
+platform/external/google-java-format 8d846a9eefe349bd8ec1eb1f0f9ad057961bf280
 platform/external/google-styleguide 839fa273f50bdda7830edee05e5f7fdaed4674d9
-platform/external/googletest fc29b47e6a4252a86ecd1d61ab5c2d834f6f5626
-platform/external/gptfdisk 21b1601d6408876638f3ce72d2e3e67533e466f2
-platform/external/grpc-grpc 7b80cbb190b3042a40e2b51def56d9fb97467775
-platform/external/grpc-grpc-java 8352466fe71941cb50db5aa8cb2a39708699b014
-platform/external/guava 61a833abb144788a740c53b858b78596a7942c58
-platform/external/guice cb83fa3901a9604a47fffee7329417eec6c21e3d
-platform/external/gwp_asan f6c670ee3dc5605332a5c1241cdb9c86e62fe413
-platform/external/hamcrest 1ad0dd742eeef7a450b327050c7a2622322ce4e8
-platform/external/harfbuzz_ng 85d13066731a9a770ae2e12438b5fc4e1773b497
-platform/external/hyphenation-patterns 36c0ae5c63c1e3c57502cc0ec3b038599caa68b9
-platform/external/icing f0dddcce4c8e72ac3e5f5d2317c963fe5fc13fa7
-platform/external/icu b556d6e2d4abfe9b02743e4e09fcce0f3f8f6fc1
-platform/external/igt-gpu-tools b6b6a01c17907d110196498a9a9a4aeb74d5dc8f
+platform/external/googletest c62a4b38284e4428f442e044c7bd5ba9a5ad5905
+platform/external/gptfdisk b22ee3d5f691244ba679f155d0aad3643bae5f0b
+platform/external/grpc-grpc 9ecf6e6de8a7a05a78e7b3edcaa8c1708b9d9feb
+platform/external/grpc-grpc-java 7041d1caa37e8891c599ffb885542085726b75d2
+platform/external/guava e9cd21c08c932d947f9af34d00aefaf735f4b62f
+platform/external/guice 9402bf90a7a537ef4031ea2bd63e36120a44f3d7
+platform/external/gwp_asan 7140ea617e002e9a4b620ed03e25231fcfe83f70
+platform/external/hamcrest dbd844e3214d95ae2fa675f4f8f07ea57ad88cf1
+platform/external/harfbuzz_ng 6aec41a039715668327406d78d6f9380a93e8114
+platform/external/hyphenation-patterns 1219573419f2e25b1b586a3ae773f21ce3a721ad
+platform/external/icing 91ea4eb81b73ffca5a4844ac36736e10e5ec98a3
+platform/external/icu 1bf31380c5c5842ed50d79143a496816965d7626
+platform/external/igt-gpu-tools 6eaf47f6d90bdc202bfb94f217eaf6f0afbf9cca
 platform/external/image_io 58c1ce47f6a380f8f9db345483f0e2da97e6c96e
-platform/external/ims f1471da4f3dae3b3658796f69738606122d27e2e
+platform/external/ims abdb572ec3ebdf473017104058001ce9294d5ea9
 platform/external/iperf3 9d13f81bef659060c27588448485749ebcba88f9
-platform/external/iproute2 1647daeb8eada2c2b8ef4d57186ae51029e21b33
-platform/external/ipsec-tools 6367fa21f0fb3e78924e0ee6479708a3ca63bcd9
-platform/external/iptables 5def76d07e08fb258900c5f5488abd79c6651d50
-platform/external/iputils 4f2aebd9ec11569cd58ec540d9da4f673ee13d28
-platform/external/iw 9444c81817ce4878c9924e5c3f299706d1f93fcf
-platform/external/jackson-annotations c4e79f4da3385ca8341f18c15af0eea5956027c8
-platform/external/jackson-core 2e122c9c55b023064047dd92b5e77fda950da3f7
-platform/external/jackson-databind 260e53a5540c2f688d69fe81a53077f66001be47
-platform/external/jacoco 3758d975850aecabdb8edf8ad96c5162c2bd5519
-platform/external/jarjar 4660139de623dae716a6ea2f4f4673edd023b21f
-platform/external/javaparser 10eafadbdc2373a149633f2784435737eb8ae560
+platform/external/iproute2 468f098d164b7c71caccb4d580bfc83e3c3e9b0a
+platform/external/ipsec-tools 80d7ede8fb457e35009bcd96872842770aed84f2
+platform/external/iptables e7ee27eb02066e77909af455374a0fb729c3212b
+platform/external/iputils 40f2ddff905e4f6cbdf2d70f829f45beed1a4354
+platform/external/iw 581ab7908442a5273c37fe2a150a09ecdedf54cb
+platform/external/jackson-annotations c03bee60009d340869efe5026f39ed2f4da00b28
+platform/external/jackson-core b1c3cb896f267a107137ffbbc70b261b05c5e653
+platform/external/jackson-databind bae2f1ad52f2ac2601d9a76dc049ec1555fa3147
+platform/external/jacoco e88f98f65446085a5f1c87c782570446d2c492c3
+platform/external/jarjar 692903906a6d792de136d324648dc53e4d2ff3d7
+platform/external/javaparser b0950f0e9d0867707bae3f0b412f6c117e0d2793
 platform/external/javapoet 2e9524a281ce263b7a8911a062bd236006e5e8b2
 platform/external/javasqlite d22457febcc1b97754a7270d85de983d67221d24
-platform/external/javassist 43498d488d4ccadf4c85de645c462e7d61f5a6ee
-platform/external/jazzer-api a73937e00a22ac8528075a7615a7330aca96ed88
+platform/external/javassist fe6a737f7f9b2cad3868efd034bc7263d4aa6520
+platform/external/jazzer-api 36f0c7c5f78d95647b52c769f46a3235bd3f1cb0
 platform/external/jcommander 003c0baa2d807177530bd5ff4a996cc979fe34d9
 platform/external/jdiff 504af9f0563b28217789a084e36411a78448957a
-platform/external/jemalloc_new 2eb74a679cdd851e514e9d0322940577c9b53c5e
+platform/external/jemalloc_new 5b69465557160203fae4284a59f4ac4034045ca6
 platform/external/jimfs 081993c0756b0603e2f5c1b1d725354dcd276861
 platform/external/jline 85919cbbfd471490899f5aa9c768dd7e5c907f31
-platform/external/jsilver ca3d0c36b5bc791ee572936a166bd53ff3d67528
+platform/external/jsilver 5f9329b288c6711c7748a05efbcbd64c920b8c92
 platform/external/jsmn 803a99783932e62c4c4e1da497c1b31c8a40189d
-platform/external/jsoncpp 71d43b9f004ad78a3263aa295349ee3482df95b6
-platform/external/jsr305 0d97ef546459c958d2ebf54aa8046123cf453fc0
+platform/external/jsoncpp d9c511ccf26887143e389572ea51dc5287ad08d8
+platform/external/jsr305 0cc70d38f0dba8202982352dd95783b24e625b5b
 platform/external/jsr330 a6b730fb5bef257fb773b3492cdad973a563c65c
-platform/external/junit 57c8c9ee1cacbfbcdfe0f529b983edc5d3578bde
+platform/external/junit 66a4efbe302ff3eab26951ecab872cf64e4df36b
 platform/external/junit-params 421c8d1e82b7dd24511a4afc3b68cdfa0c8481f1
-platform/external/kernel-headers e7717ce6e05c50dd4118e1f398515f8596108d87
-platform/external/kmod 6050485aeb8db1fc6ca8e8bc3c482c49f998efac
-platform/external/kotlinc 6b624fac7f38dafe3a689d3e981d366a70c37eed
-platform/external/kotlinx.atomicfu bedab4764436a0f902d81281050e3d11f3d15eee
-platform/external/kotlinx.coroutines a9b4b3933d26f3a6c85fdd08b39479cd450403a3
-platform/external/kotlinx.metadata e7a09470722da5b2713d38cc91873957ae4eae35
-platform/external/ksoap2 8c176117eb3661b27ce0fe0d01cccf0b12214c5f
-platform/external/libabigail ce1bcaa99e58f484466997e65bf234bd925775e1
-platform/external/libaom 8c28e41ed0926824b8072c36c9afc1c4ebe29367
-platform/external/libavc 355c8afbe8f8ee69937b7c0ef9b597ae5d55c289
+platform/external/kernel-headers e90636fb37fe106c8f3f7bc0087549b166851700
+platform/external/kmod 1eceb7a69fdf4148a01f51a4ac592e2f845bb3ba
+platform/external/kotlinc cde70eab146a7eefb9a0ff40fc202fef34ba96a2
+platform/external/kotlinx.atomicfu 58fa8bb812717fde34b216b4231d487a512023d8
+platform/external/kotlinx.coroutines b6198bc2d786c252725f17a7265863fe51ba836d
+platform/external/kotlinx.metadata cc3676523fb8383fc279ee62c29edf28fde69940
+platform/external/ksoap2 8bc5f40f9ba8f4a63b6b222094123c03055a220e
+platform/external/libabigail 39f05ec927056a914631c02bf8a59c224c542727
+platform/external/libaom 332043ea211627de546781036fc3f9a2cbccaa7a
+platform/external/libavc 5cb055bfd8d352ccfd339f14b3c6bdb9d0d10c78
 platform/external/libbackup 2f4e13759d445405fb43514f48af4f22cd974e95
-platform/external/libbpf 4637e15d07186d0c9e8a31b2b7b326341d501968
-platform/external/libbrillo a2cdf4ad431c7fe261e80eb2381ff9a355e68a74
-platform/external/libcap 4ba65b67bcbb284b44e6c1f5c3ca1ef57f17df31
+platform/external/libbpf af1b5a52265d80f2099ca6d25d97f5c13f8cc379
+platform/external/libbrillo 3ebbf8d06d91e3b3a029e5ae880d78ac10f42086
+platform/external/libcap 25d17068dbd61a46e60f373dde3c3f8b6c123624
 platform/external/libcap-ng 5f456ec1c300fcfdbdca08235a9564dd3f0525f9
-platform/external/libchrome fc8bddb88b6fb5707f3bbec11909c1a4e4ce0360
+platform/external/libchrome dadcc41a3478a2cc5359b83d8fc62399f342c666
 platform/external/libchromeos-rs a5cb5aaf7d0e0af6c193fb1418faef0537e17006
-platform/external/libconfig 58bd7431d7c704a5d2afea0ca5e2fb5e30ebc093
-platform/external/libcppbor bed56b446c1fe705a1e3eae49d8779831440a445
-platform/external/libcups 7483f7a427adf4720df28532987e0898a70b1bf3
-platform/external/libcxx bcc2bc8182e8605930c591d1afdb103fef0beb8b
-platform/external/libcxxabi 0becd3ec0fd8347284c522762e2be4f0c537e6c6
-platform/external/libdivsufsort 17fdd802fb3783cfe7d47fa17c3272927d1bdf2f
-platform/external/libdrm 271a38e504554594aed2d92ba69252d508fdbd73
+platform/external/libconfig 05dea3ca2b4a5e6607867f89a4b3325170b6f50b
+platform/external/libcppbor 4e8bf994ca6ef4263073ba85c999b3d5753e2d8d
+platform/external/libcups bd65b363b68afa4719f105f5d8af7818b6799461
+platform/external/libcxx ab743b88cabca5be8d6bf513c0e5b9573ea3e904
+platform/external/libcxxabi 807ca60e8fc7ac14482a3d01fcc868d057d3244b
+platform/external/libdivsufsort cd3e8c6e4e3bcb8a0119e64a1b28060179fb9176
+platform/external/libdrm 15fec1f4afc865bed4874d65fadd7293d70a4afc
 platform/external/libepoxy 35241b13be11e36915c67e593e46aadb5af7cd9e
-platform/external/libese 68673133176e2fb46eed0c8bf7e3a83f1e108c65
-platform/external/libevent 7ea7d1f75bc357cb677497873266e7b4ee258bdb
-platform/external/libexif 57986a3560a8d80521584e12ed013a0479dc8237
-platform/external/libffi 53c06309fb0344d00e7d2cf3e8e78996e27e5906
-platform/external/libfuse 2351a9ff5c2d09bd891347e8318af92084418b6f
-platform/external/libgav1 f278b177803a5dd51723c8b986466d2f6773c60f
+platform/external/libese 009a0e9d430b052646723bfbdad94b8fe1e68bfa
+platform/external/libevent 58fe6a0f31fa153882ebc2525bec1f6fb8e8c3ed
+platform/external/libexif dc94a53f03dc377aba3ecb06cfad4ebf2b82de09
+platform/external/libffi bc9e82779dbb9312ddcce6357db632046d8f32cd
+platform/external/libfuse c1a986de263374d76afcff0f63dc0be3e9ddf2d9
+platform/external/libgav1 be9833f22f5d88a6d01a3bcb188e9e029192a90f
 platform/external/libgsm f3b76f2091d20516d23ea28a0845dd3954b104ef
-platform/external/libhevc ace7066e8f2f08855c6e19641353bea8fd5cf3cf
-platform/external/libiio 4db18a3a834b0c1079d72a8d6c0dc2a694faee47
-platform/external/libjpeg-turbo 335609fa03b4005afd99a0d4b1785a2d5568ac83
-platform/external/libkmsxx 4d589a12fee784fe3460444fc627783aed0de8ce
+platform/external/libhevc 6ec02e6ba43be70dbcc41bd28edb1e6757884e2e
+platform/external/libiio fb3acc02fff17246f92717302d48f81e58010bb6
+platform/external/libjpeg-turbo 52beb3d110f4dedf4d0d7534f1064edd55daaa11
+platform/external/libkmsxx 149b14b2da54247f86c53042ce62efb93ea41b90
 platform/external/libldac 49b5c7024580659555f8c464ddd33ee147fdc686
-platform/external/libmpeg2 bf40998ccd65ad01f200fd5ec2f8c000c763976c
+platform/external/libmpeg2 845d34f32da95d5631a3fa777a3620f4e87946bc
 platform/external/libnetfilter_conntrack d96586afc96054c9e009a3801b1e53546de77c3c
 platform/external/libnfnetlink 0f7970ad14c39e8bc8c49588e88da193dfd1840d
-platform/external/libnl 52623564b29360e9a4130ed394fabf22e1fdf803
-platform/external/libogg a08688102513c2fec0dc1aed0a99667fc6fd77b2
-platform/external/libopus 94f53aac9596a565c239eb344304fd26286ebc7b
-platform/external/libpcap f35768120f6eb8816c3fa79907fde145324b7539
-platform/external/libphonenumber c2c58355734e32c7adb19a58e45950b21c98c092
-platform/external/libpng b9bbf1b9a5bd0197b5059af31b902fbc8c2b8a0b
+platform/external/libnl fe26a0dba133317f6c11d0a7b6126f078423fc88
+platform/external/libogg ed2a6529b65f25eb18ac5a8cef849dd4d48667a9
+platform/external/libopus bf3886748c17e0b19e60e1a4ce7381b68ffd7bd7
+platform/external/libpcap 5edc8aa1695ce8912fbfabe62d87514487f035a4
+platform/external/libphonenumber 927083855e8b58525d917a387ed19c1cfe733f0b
+platform/external/libpng cf10bcfe965f80e71f4c039f3d4d1b118a6f8df3
 platform/external/libprotobuf-mutator aaf83d86ac6262c106908494482740ee29bd89fa
 platform/external/libsrtp2 27d85351fc03b371c7389e8e6be7255fd2d592bd
-platform/external/libtextclassifier 611668506dc85aa10c01f33aa63fce20a5118d15
-platform/external/liburing 6e61b34ab801c4c065ba97191eb93ceb2fc522b8
-platform/external/libusb c5302636de2dda4d9d55e942e82aaf32184d8566
-platform/external/libutf 30db774a5cb6b40682cf928d016a4f51a3d24781
-platform/external/libvpx b3eb57cddbd82e4ce8b8f8054affee72627f168f
+platform/external/libtextclassifier 6d5d733d1a614f672328a0511d42bd3ce7b1b44d
+platform/external/liburing ea154671ebd930d3765615bf2116e8db1dfc24d8
+platform/external/libusb d81baf91af87dbf9717acab238125737c1416d9d
+platform/external/libutf 929a340f99fcfcaff4bad0647a40f1c0dc2c0fa5
+platform/external/libvpx 306fa9fdabfdfab88eec5b0656be2fb23cbb85e7
 platform/external/libwebm 108faf5701d1df802c2747937d78aca648846fd5
-platform/external/libwebsockets 8359156eee056685fe794391b348beb87ea54fd9
+platform/external/libwebsockets cfd44fa38061496324953feaa03f18ce67cc3822
 platform/external/libxaac 76071bf27f9705daec31b604ba91ab2a342666c0
-platform/external/libxkbcommon f895ce5560d2d5f2238765a48bee1962a46996b5
-platform/external/libxml2 73643695bab14d4ed2340d882ed56027e007ec7b
-platform/external/libyuv ca9efb697a2debb4fa4fbd821ee7b6e963dc0f18
-platform/external/linux-kselftest 2963b26d31705c49c09f48b399cb089d2c546ecf
-platform/external/llvm 1dd221f6c93caed57bda93f1f3cb5a531b909ec7
+platform/external/libxkbcommon 267dd706d130cb025ed04edef860b883b3331a52
+platform/external/libxml2 c79b8a77d1464898398864e0123f021d69e322af
+platform/external/libyuv 73746e23bb1fd37849d1eddb18bbc858de381cf9
+platform/external/linux-kselftest 204e3ab3079cae8f5f5ddc1835fd65a438f08a52
+platform/external/llvm 58ff7081fbcee8f1216ca4e298909cb54c3e418a
 platform/external/lmfit 8ab23bc2263c8d5ce5adac61e5b625b28c79cb85
-platform/external/lottie bde62b45124ea8bb2e4f6a2e19b9a244f2078d02
-platform/external/ltp f3020fe84dfabda1c0a00a4f25394ccc4b20684f
-platform/external/lua 6e63f50827b639d069489a2fe5df7a7eb6375a23
-platform/external/lz4 dcb32bf389c160d4dd0366581c1513a4c49f1139
-platform/external/lzma b1c8fbc3054eba213b78e8361f1985a9717a86e0
-platform/external/marisa-trie d267b2cc43b9906a54080117df885d9a12fd648e
+platform/external/lottie f6862cd3075a1bf236d0341aaeecb32800390c5e
+platform/external/ltp 52e0aa9dd408e56488a19ba23b8cc91d0260a214
+platform/external/lua 784db0b4229f9725e084006bccc6986930b4b039
+platform/external/lz4 f1fecb22fe8c5673c2b808cb8fdc9728c7b48e84
+platform/external/lzma 4f5796a404ac8b83a639039081a3c056b881e3da
+platform/external/marisa-trie 78af537db3879494ea98951e4cd2ce7dcfa3d490
 platform/external/markdown e5dfed10bfde57e68ab7ea2afd9d374e2a338ead
-platform/external/mdnsresponder 585ae6f9239e774b1617130a549bb0741271ac9f
-platform/external/mesa3d cf6e68d906c667f18803e95f49c911a3a0e145bb
+platform/external/mdnsresponder 7954d70a0bdeb909acf7a5d640435c9806599de2
+platform/external/mesa3d a83b21d4483486fdba749094add92186917acd33
 platform/external/mime-support 1ead8db7458eb68ec15d1cc56aa5a5f393731c57
-platform/external/minigbm 40fbcdf3dc2fb10719a2b0e252ddff71de421999
-platform/external/minijail 09f556bfaca4482de9504490860bbd55fdf1c175
+platform/external/minigbm f1da49e36e33c621543eba3acffd3183634f57ce
+platform/external/minijail 8a310c81a5ab8132200446c17696188b301cbd9e
 platform/external/mksh 6dbd8b0ef9ced92782c0cb69f075ea91ce5c3057
-platform/external/mobly-bundled-snippets 4378138945dd489d138ee96d3776be453f8290e0
-platform/external/mobly-snippet-lib 8acadb5315225f56234b458d4d78a398621586c5
-platform/external/mockftpserver 03c9c1424fefbfd55af490c92763934dbd07a7f9
-platform/external/mockito 4dfa4080479efda03838538e02fbdac9c6417b02
+platform/external/mobly-bundled-snippets 32f1c21deca86e582beffab0e48d773e901f71ed
+platform/external/mobly-snippet-lib c9a8e4590cdec0736a44e61c6b08e4d42de5ebec
+platform/external/mockftpserver 4966e37e901373b85fcc2f9cd51a1726d65983fe
+platform/external/mockito 942acf5d99a02d23b43d307ac8a555689bfe0704
 platform/external/mockwebserver 789581c027fd8eff57cd0a5c048966f6602ca3e2
-platform/external/modp_b64 ce638d605d6d1a588244879a5c0468fab5a58cb6
+platform/external/modp_b64 013c5dcb763a75ef112bd0a96f6ce5fdb5a295c4
 platform/external/mp4parser 535f16cbaf0d05851c19e697b4e3fc3691275728
-platform/external/ms-tpm-20-ref 8bb9732e63210bca4c0a0b684e56ae3af7db5354
-platform/external/mtools f025199b69eb224eaf56bcd956cde06818a12156
-platform/external/mtpd ea82ab7dc6031261f53c884d40811412830a0f04
-platform/external/musl a1362f288ec6bc8a51042c3a49658cc79ae5200a
-platform/external/nanohttpd e66814600c6b353b1824fa651566c769ea16c096
-platform/external/nanopb-c 1f184ee678d59cf69c05aff5e9eeff4ad951c8f5
+platform/external/ms-tpm-20-ref 2caa5dfb09982ad0711af72c83eb4ad5abd5e69f
+platform/external/mtools 7f65e4570b62c4e676b5ad3857f8d6db1a467d8b
+platform/external/mtpd adda79f74ba1de11fba1e5ffb48580dd4a69ca42
+platform/external/musl d7c2c9177657234ecb86af5aeede9bcdf8d094a0
+platform/external/nanohttpd 9836310c325ca43bd4636667c1fa11e23d270b17
+platform/external/nanopb-c e87676aab5592ef5d45185dac464713c601924df
 platform/external/naver-fonts be181d85b8b600bbc14fb65f6ec0d534f923dc44
 platform/external/neon_2_sse 55819c5d414d804c947dbc57922f6a3e9a15a94b
 platform/external/neven 2da29a79a7c5e6568794a6dbbfecd8090c3dd445
-platform/external/newfs_msdos f93cdcbaf272ee777a359b5ae02166341e793a02
+platform/external/newfs_msdos 71ef828b99fdc3d7634ab40a5ca3d5c572344aae
 platform/external/nist-pkits 54fb7602d1e2c9ee048e2d2e2405efd82dc32ec5
 platform/external/nist-sip f98f18ed592bec22c7a675211ba92203be429552
-platform/external/nos/host/generic d15eabbcfa744f32952c618326eb0b72e9a7c2cb
-platform/external/noto-fonts aefb173f3eed7673e69938a656650a3145b4acc0
+platform/external/nos/host/generic 4f3b6d22460ce24a420f71a8128a2175178bb99d
+platform/external/noto-fonts 4ef7c49d464ac0fb04f7aae3baea2d0a9f006914
+platform/external/nullaway d4b678831c49109727db51b0c7828fbac43ea67c
 platform/external/oauth 4b89e4cf7fa70a951a1d37d84ffe14d096461603
-platform/external/objenesis 31487ec8d7393671ab219803ded213c9119abb2c
-platform/external/oboe 6cd8fca1bbedb79e46b8aa33bf7694bd26390ef2
-platform/external/obstack 11ebed938ab4f94e4b9eb4cc64f1e69e42b65c6b
-platform/external/oj-libjdwp 1ae81d7e15433fc17e4bdd7246e323fd36bdb07f
-platform/external/okhttp 4f9c93bdaba0625723d8a3967ee64fb3d92b3a2f
+platform/external/obex 19ca1d3ac264e77ef5128389676366a706e22c42
+platform/external/objenesis e729a0465a750e6c21d18d5ed9fa50a132a4f0d0
+platform/external/oboe 952fabca48804007373239d4876915c0603ef318
+platform/external/obstack f18692e3ee4e2570e8d9a455105efa3b45180c44
+platform/external/oj-libjdwp 59e512dcf478bdce35e99172480be4ada6a8c260
+platform/external/okhttp 3cd53f1c0b90c717d991c2cdf245e7b8db96fa14
 platform/external/okhttp4 73ae9756098533a6fe58aa1149c88f5304f4124f
 platform/external/okio f615f0f87fe2362d338989b5d17fc7947033911b
-platform/external/one-true-awk 91cf751730b6625306048e8c48422667189ab00f
-platform/external/open-dice 5b457b656d692e1f1fd804a8cb3cb4b168179631
-platform/external/opencensus-java 193e4e78be3f009528f2bbfeb17b35c39c78782a
-platform/external/openscreen 7d59e3d0ee5a2da981075bd3280a33d554b1108e
-platform/external/openwrt-prebuilts cf093279564b89ec7d34ba11ade5cb1ed9ce951f
-platform/external/oss-fuzz 94aaa2d07866e1918408aa11bc21840b8768ca90
-platform/external/owasp/sanitizer 4059dad3896463253e1d4b53d4cae15fa38ece2e
-platform/external/parameter-framework 5a43265c148829c3e33a344c1088f53d76226440
-platform/external/pcre ecf3b88a6ca620985e62537b177b60790b75893e
-platform/external/pdfium c5af4fea3617e6dc14967428e199be2ac2d56503
-platform/external/perfetto e5edaf7b19483f6b8988fe04b0c70319a69047c4
-platform/external/pffft 101a41d6e42c24f319c1ff351ade0241472f5d41
-platform/external/piex e34ed65a0c4f22dfbd449261ab17b503dead5874
+platform/external/one-true-awk eba1e845738e0bf1df4871e3750dd3110c9bf2b0
+platform/external/open-dice 6a1dcee50a3d44f877fe4ce7f1cad510c1d481fc
+platform/external/opencensus-java 07c1778e88932f196d06cbd2967e42504643260e
+platform/external/openscreen 77cf7da54682f35cff0d0ade7f15ac42cc34cebd
+platform/external/openwrt-prebuilts 295ec76f04082fd063466a13e4c0f76d5e09338f
+platform/external/oss-fuzz a7b03fff7c73c6425f83b9000b9af40cae188062
+platform/external/owasp/sanitizer 642b0d18e7f66f84b7c9b0813393b94e63d2da01
+platform/external/parameter-framework f89395b58aaa8adc932603ba39af65f38944f740
+platform/external/pcre 14ed2fa8d00f7e0b9e09279ea34901c2977ca0bc
+platform/external/pdfium fadf897ff4dd745c0a5688441f6fbe12266ea3da
+platform/external/perfetto 02f8c4e4f21fd615680be3bc3040c25d916c6ce5
+platform/external/pffft 854a56dee89d31a3e0bced3760e652b53fb219b0
+platform/external/piex 6f23d3a9d7f5486dd451adfc7ca2146191799451
 platform/external/pigweed 050b7cc0f7e419d59240ab939d5ebb3074b93c21
 platform/external/ply 6171fa4b7a3429c5416e5373d7ecb34ca93b3a2c
-platform/external/ppp fe5ce98a86b628a4a58e8676f45e4396eeea20e5
+platform/external/ppp 2f0bb81d3132045c06e741d1f2d4cde776172487
 platform/external/proguard 26247a04689a6cb7778dc754e6decc98a5ef0b47
-platform/external/protobuf 971c9668fb45c8e602bf57faee846001c20185ba
+platform/external/protobuf 8171c527604f8d5afc702d39925fb84eebaeeaf3
 platform/external/psimd 92ebf9d46ce0487a6b9f36a464e134ab9f252819
-platform/external/pthreadpool 252ebc8a87442f0ea087deffaa1609be1490b7fe
-platform/external/puffin 418b82167fa4af7af0242417bb7dd3b5ec11cf09
+platform/external/pthreadpool c918f70914a7edf148b364f42f6a7f85bca259db
+platform/external/puffin e6deccf6287e24db0c05a930887e8ddb419e4f5a
 platform/external/python/apitools 735c3e19711364fac7a21bebf5778fc7e11a6ef5
 platform/external/python/asn1crypto d97d75a0eaf555264c6c3d6c1f8f70c7bb4e0b8e
-platform/external/python/cachetools 8526fcd3c82e6d9cc30fe17bec6b4028d7bcebd1
-platform/external/python/cffi eae478ef59d6fb7a2d59b2974743ce305ecb18ed
-platform/external/python/cpython2 3a312643aad8089d2cf1abe0da5ef8b411a0dcab
-platform/external/python/cpython3 3cd57f1c9c67aaa4211763747eea5b9e15e00094
-platform/external/python/cryptography 8e9dd7d37b45b3fb72d486ab2593456a8ec91b96
+platform/external/python/cachetools c438facdfe6920f21bcb3c3e7a814b5e36956292
+platform/external/python/cffi a7570703e7bb619f5c1b039498d8cf3e4b937883
+platform/external/python/cpython2 453a345a577b02e6cdd90754e3cddc006c2d1bbb
+platform/external/python/cpython3 8800b0dc37117c14f4cb888f5def420d4233293d
+platform/external/python/cryptography b319751a9aa0fb7a0848b1069c32db67d609a0cf
 platform/external/python/dateutil 0b7a356c2e0d29586a7ffe48c853e24b476ffb16
 platform/external/python/enum34 6664e8a8b506da5a54f1327e23f129a860e39625
 platform/external/python/funcsigs b2a1d111b2dfad01f04216358867baa793b8e173
-platform/external/python/futures 7eaa067827d8236e0a471924e6b6c789ae00d55f
-platform/external/python/google-api-python-client b6462f3336c553d77a5cebde4ff8a79f9c44350e
-platform/external/python/google-auth-library-python 94b8b2a00893c84a7f7860dfea48003b8bcf7468
-platform/external/python/httplib2 364f0322d08922ba4decb5d25ed1cc99ea453f57
+platform/external/python/futures 51ca07f88e431321086a18f73dfd234d938b08c6
+platform/external/python/google-api-python-client 1f6bf94db6fe4168316922bc4f386cf127e9fcb5
+platform/external/python/google-auth-library-python ba85959b508c5d98739e9674db0b629ddc150be2
+platform/external/python/httplib2 bccfd5c120f8431616553bda6c2d06d0de6e0489
 platform/external/python/ipaddress c14214b113fa523b5c2c9811b9ee40ca0549bae6
 platform/external/python/jinja a3d456e3466b77e900831413b87301d99f0bc8ef
 platform/external/python/markupsafe cd02adcc355bd64f0cbea8d0682c770df8e49907
-platform/external/python/mobly 27210a6e0900f6498c933f4b21c03164386fbe6d
+platform/external/python/mobly 5187d1895ddc2a9c11fae5cd9866a2c9927f8287
 platform/external/python/oauth2client b610dace3ca9b1df59539c1d65e12b0bcee4868c
 platform/external/python/parse_type 61d68b472b2a777880c45d2f0068f03f36fa3557
 platform/external/python/pyasn1 3ceac708028babed56772972a05183ebf9540a82
@@ -422,359 +425,370 @@
 platform/external/python/pycparser 053dc63e3881cf899b4cf057c27e6825fba00158
 platform/external/python/pyfakefs f23d82c3d2eb575025793409b71f740fa9faaaea
 platform/external/python/pyopenssl 1b4e8613eaf5f299f6b60c7f898b69064ad13f78
-platform/external/python/python-api-core 40053fdc1feb9a76a0bc92f8f52d2e8aeae74d60
+platform/external/python/python-api-core 794b51e27723df2fb7a1551755e117267c1da08c
 platform/external/python/rsa 148ea9cc009d98547cb1ab2e76482c6605afc3ca
 platform/external/python/setuptools 1f77df533b4400dae578bc72b28067bf447471b7
 platform/external/python/six bbf346ef3234cb42b2c663ee65febb15c9b7d5b9
 platform/external/python/uritemplates a27a82898c7940d71785d6e36c34474c8b903e97
 platform/external/rappor c0c087402768fcf42b0af8de321cea93695953a3
-platform/external/replicaisland 35fbca743ccab42ace2ff5950b9076e1e35e65ca
-platform/external/rmi4utils adf2f3178fb6735be5a08642789f08484093799f
+platform/external/renderscript-intrinsics-replacement-toolkit 1c5d4657e9a3886bc88315640f1ec9205659d4a4
+platform/external/replicaisland 467bf3753ae557b739d5b02ecb5f560703543a07
+platform/external/rmi4utils 7f84b8c3238a19400de0a2d875509a96c4d16602
 platform/external/rnnoise bdd268c09402f225f2691de5ef86d583823dd831
-platform/external/robolectric-shadows 48ec562d8fae5f0423dba84cc04d25fa96f5e50f
-platform/external/roboto-fonts 38b2925540836f292abfca5c1e5718b82928b17a
+platform/external/robolectric-shadows 4a767e1cd43d9bd7fd0dabfc9c7862bb45b744b3
+platform/external/roboto-fonts c75cc86caed0124238d446f65929b3749943f21a
 platform/external/rootdev f4358c45c06cca1e2a8c774e8fae69288d1bbec4
-platform/external/rust/crates/ahash 46b33b66c00f0c6e53826c49b6107a84fe506800
-platform/external/rust/crates/aho-corasick aaaab372f716dfbc3fcd015e53e48ccafc7f4311
-platform/external/rust/crates/android_log-sys ea820df57b1c7150e2103a04e51a091a3b466bfc
-platform/external/rust/crates/android_logger 238feea990dd900b84f12f0b98c37d780c159dd3
-platform/external/rust/crates/anyhow 5b5b5f45c49fe2ab1dffc0d7de817a8d0915f0a2
-platform/external/rust/crates/arbitrary 302672b198c394870a3aa1aadc23ace3b886693a
-platform/external/rust/crates/argh 0f3c1ab533885d72ec0aa8375f59a8ec016c3da6
-platform/external/rust/crates/argh_derive dc8aa4bba0b565209043bf232adec011eb055d47
-platform/external/rust/crates/argh_shared 6c7113ea11aa28aeedefb7fb064abc2dc03cc9f3
-platform/external/rust/crates/ash 98fc1695e33cae172e869c92dc0c8e636791b16c
-platform/external/rust/crates/async-stream 93804d9c319cc27189c48d5ad4f4159f17cacd0e
-platform/external/rust/crates/async-stream-impl 1599461478ce81dff957016661df10b97bfa229a
-platform/external/rust/crates/async-task 39d6771ed5b25ed61c3118b41151bf6ccfa25546
-platform/external/rust/crates/async-trait 1b62f492b7248b477bc02dfdcec29f11be625fd9
-platform/external/rust/crates/atty 43a5ae7720f505bb0430a9bd7575fc00801af6f4
-platform/external/rust/crates/base64 932bf734d6331198b6f98941e9ea6fd54165533f
-platform/external/rust/crates/bencher f59f34ad113a879453ba5f963f8573eccc643c6e
-platform/external/rust/crates/bindgen 26499f254cd65b4f2b03f25402577f9490eef8a6
-platform/external/rust/crates/bitflags 33b89808c55f08800e09619bbcb61ade2f32afff
-platform/external/rust/crates/bstr af5d1c395204bb8eb16fc7788ca109f47b548f80
-platform/external/rust/crates/byteorder 27ad8a7e490affa8fe494e7b1cc93a66738c8a82
-platform/external/rust/crates/bytes e39bcbd709d9505b6a634ffe99fa427e9261481c
-platform/external/rust/crates/cast be911e39e2881a5ba203a0c011fe7fab51fb2e2b
-platform/external/rust/crates/cesu8 53571831804ba765eb8dfa28fbe2642cacc50556
-platform/external/rust/crates/cexpr e19cf51cad62ae5c84b70d786edd2f1d8f4a9a37
-platform/external/rust/crates/cfg-if 72747ceab4ed808cc894c4ae0191860682bc69eb
-platform/external/rust/crates/chrono f551b6521544ad4435a04419b83c6125921a13fb
-platform/external/rust/crates/clang-sys 98637a5ef90bcd345b5071ab25788ac5b66ac8fd
-platform/external/rust/crates/clap 3032976eeb7f089c0c5be33c0c9675d9accf2313
-platform/external/rust/crates/codespan-reporting f3c50fc7a3458a1d6e901668080f4e9c44fcca8b
-platform/external/rust/crates/combine 55a28934a0fc643c6e849662542a9f886d6c99b0
-platform/external/rust/crates/command-fds f5f9129c3e03ce7346e28fbe3a3a722ef0f462b0
-platform/external/rust/crates/crc32fast 8d7de56b356e4bbd06131a8391b489837c9ead1a
-platform/external/rust/crates/criterion b30f8efd4a6930a8a8a1f410e9d3a31ae99c2531
-platform/external/rust/crates/criterion-plot 491758127c5926578c8df2af7f056681950d88fe
-platform/external/rust/crates/crossbeam-channel 45d23ac22e61943f08800f164b5c6d632d79c685
-platform/external/rust/crates/crossbeam-deque dcb6d71c0a73f3353992a91f3620d530602d274b
-platform/external/rust/crates/crossbeam-epoch 92f5619a7b51f767c4cacd696926337137524bd4
-platform/external/rust/crates/crossbeam-queue be67fbfa8b79c8939373991e7fb8a6cb9cfe952a
-platform/external/rust/crates/crossbeam-utils 6d812ad174430c41edbbf32a724f7f31d470405f
-platform/external/rust/crates/csv 22f636efee0ee8269c3a4f55ee815377ad6363c8
-platform/external/rust/crates/csv-core d6665069240d6954bcfc0ff43f5d62663b0c24dd
-platform/external/rust/crates/der-oid-macro e7549cea3a65761a9080a5597a79a205493b6ebc
-platform/external/rust/crates/der-parser 9174fe2facc4ac100d461771245489f07ad3ab94
-platform/external/rust/crates/derive_arbitrary 07a58eb6fea3108ef968130e3827203af6f8cfed
-platform/external/rust/crates/downcast-rs 67187a948004e1e754a2983f0204327f749fbd45
-platform/external/rust/crates/either e1dbf355592a0c2f65858232030876f02b61db40
-platform/external/rust/crates/enumn 60c330561c442dfc1e03c28049f5e74a3353c57e
-platform/external/rust/crates/env_logger 686ba7f92238b62c7a4f78891a775ee0f15f8804
-platform/external/rust/crates/fallible-iterator 47ef789c6db3bac75ce81330a6b36131a163ad6a
-platform/external/rust/crates/fallible-streaming-iterator bf728c825e6d18c4e828456ca018b2d12f26b6c1
-platform/external/rust/crates/flate2 40b4da410626bc12c415dbd0b72fac849ca8145c
-platform/external/rust/crates/fnv 57b40ebb390c53431ba10b3f703befa361c170d7
-platform/external/rust/crates/form_urlencoded 76d78da8c0578d504e0f846ec3a82970791edc0a
-platform/external/rust/crates/futures bcd1eeeb321c47a34f0492818afb67312b11f1d3
-platform/external/rust/crates/futures-channel eb78ff959c791dd1b8cbf81000ec552a2bf5d7c3
-platform/external/rust/crates/futures-core 072114f7fa39feeb65ba7bd28f4a8398f3154c11
-platform/external/rust/crates/futures-executor 8efe40e22025cf85a8029528ed844f6fe27c5b35
-platform/external/rust/crates/futures-io 2734b43f2091ada5ad724a9587229e4a3c3fecda
-platform/external/rust/crates/futures-macro 97d7a6ac100b60e2753483c9e6b81f5f81b5acac
-platform/external/rust/crates/futures-sink 589d7ab9c79f9df4680c4a245ef4aa98174ac931
-platform/external/rust/crates/futures-task 0be57c1a4646111d3cc118a36e116e1841d1929b
-platform/external/rust/crates/futures-util 505ba877fc8ac639a5e73d3fced0ad8985b81b68
-platform/external/rust/crates/gdbstub e10f4a7d594b61923df40ad53e568022e1fd2e35
-platform/external/rust/crates/gdbstub_arch c1d7cf4665507688918b07da1e97af3691809733
-platform/external/rust/crates/getrandom 68989f4e037e2191167ef2262be734b84db9d160
-platform/external/rust/crates/glob f07115f1a9d6dc7b84d2f0f4d1072e813af35f4b
-platform/external/rust/crates/grpcio 5df4e4421db8800372a500e48d684bf409713aed
-platform/external/rust/crates/grpcio-compiler a88a845571f6bf56673e9d4871dec63342268fcf
-platform/external/rust/crates/grpcio-sys 9b74ec1711b7068f3fc6e2b179f420692770e8b0
-platform/external/rust/crates/half 2e43507b1305b4fb1bba7374ddf329f80b03aa0b
-platform/external/rust/crates/hashbrown d75ddf7f489d5fc923995b0ae4005fb7c57f5f3d
-platform/external/rust/crates/hashlink e3c6c6aad154b07532104161dc65a885c3e0a11f
-platform/external/rust/crates/heck a34148214389e543cfb2ccafebf7ca6f57e59ad1
-platform/external/rust/crates/idna 7fed6ddd0aba19726d8aec036855dc9a753bce33
-platform/external/rust/crates/instant b0aa4bc39687076a2c0842791dc13c33a272c2f9
-platform/external/rust/crates/intrusive-collections 9fdfb236adad6b311b27e4268b6b6faeabe625ee
-platform/external/rust/crates/itertools 73f2a028a84da44de8953d0c8930c431d8cafbdc
-platform/external/rust/crates/itoa 183d030486262ac523ea2b1d6f995cc355d6ae97
-platform/external/rust/crates/jni 67d1e8d691c97a4f4988cfc4126724659c930f1c
-platform/external/rust/crates/jni-sys 1ced866302c08d78a096235ada8a69e53080dcb6
-platform/external/rust/crates/kernlog 9977244adb4086e3ab40aeec474142aa25379dda
-platform/external/rust/crates/lazy_static bbb48b022cef603df6de741f538a970e338a6559
-platform/external/rust/crates/lazycell ce24b5ee8861f32cab1076e00c681da40824df6f
-platform/external/rust/crates/libc 4dc60fa0efc19bd6614fc8e77d38f8804aa853c4
-platform/external/rust/crates/libfuzzer-sys c423909b3cd26ac27ef23b582d26f29a3a2dd996
-platform/external/rust/crates/libloading d1f844e7e2f269c54b4b575d822ba645aa1986bb
-platform/external/rust/crates/libm 503c86180d7dddf2edaa7b456cd1a485a9aa0679
-platform/external/rust/crates/libsqlite3-sys 2e938baf39cdbf6c52e9ec8b626b91942cdb1c66
-platform/external/rust/crates/libz-sys 605c9bf3c7aeb0d445fe5a111d41bd65769ad0bb
-platform/external/rust/crates/linked-hash-map 249c2f832aaac81c245b24a8ad2348f601330ac8
-platform/external/rust/crates/lock_api 4ee6eef50c52b9d9132d15cbb27d0e6b1c8ce13e
-platform/external/rust/crates/log 8c7b0099a801578f76e4a983130dbadbda8e03b5
-platform/external/rust/crates/lru-cache 034b39a9ea6aef0d3a278c5855ea8acd59d483a0
-platform/external/rust/crates/macaddr fc363d02a7cef3eaada072409468973044414702
-platform/external/rust/crates/managed 6a1cc678093719131d3c285b3593fb1453d251a4
-platform/external/rust/crates/matches ce0418520918d045b4160b28fc1ad38d9c97af0b
-platform/external/rust/crates/memchr 03634a403b38c5f5f4329165fac3ad249088a080
-platform/external/rust/crates/memoffset 4253826b2b8d6b5aa99d879bbbe6f0fc2154bf39
-platform/external/rust/crates/minimal-lexical 75dae494b4d7cf5cf88891d64639bcb9e8526cbe
-platform/external/rust/crates/mio fbd4c3346c5819c33e9b7e2841482a1061e9521c
-platform/external/rust/crates/nix c492c64cf0beb2589f11db1520c7d806da01c4a2
-platform/external/rust/crates/no-panic 0d95df1a404ed04ab2843f1c953df9398014aba3
-platform/external/rust/crates/nom 75a615bc14e4ee06ceb88ee76c1f9a178f98ca2d
-platform/external/rust/crates/num-bigint 7cda564c4ac1d2ac96616a637d047f6363da73bc
-platform/external/rust/crates/num-derive 3c533f6dba58b5e3bdb51da09d8be8f4ca335363
-platform/external/rust/crates/num-integer 25eb6eab6d2deaed9187971a697a28d20e2fa82e
-platform/external/rust/crates/num-traits 377634fdde51156922474ccaf760b012f2f25596
-platform/external/rust/crates/num_cpus 296d549ac0e8b686b2e495571079ce30c13e98b1
-platform/external/rust/crates/oid-registry e8a6a51af71ee20c9869c6dec5f2960c362f6c8e
-platform/external/rust/crates/once_cell d01000a5bb90e8fa1df507e3cbda43f7a56efc73
-platform/external/rust/crates/oorandom 485b595671e5e604a52b6259d9cf608e048dad23
-platform/external/rust/crates/parking_lot d01086324552c1ad3726d97d2b8b9e4dffb90f1f
-platform/external/rust/crates/parking_lot_core 01d7160be62b30bbb4e9250eaa69f60645a15f80
-platform/external/rust/crates/paste dde9836c1d6dbcaab501760ed87768147b4dbd6f
-platform/external/rust/crates/peeking_take_while 90188f6ee6f11688bbe3c8ff3cc17eb12cf2050b
-platform/external/rust/crates/percent-encoding fa250d7ecb33f39a1586a808bddb38634a472c6f
-platform/external/rust/crates/pin-project cd292af7189fa0307391bc7a013a9abda2e12d32
-platform/external/rust/crates/pin-project-internal ef8db57784d3eb06f2dd02096bfbd9491b503f69
-platform/external/rust/crates/pin-project-lite c0dcb0f098977376e06204a495f40139b1978fbe
-platform/external/rust/crates/pin-utils db23c6d328e797528b3221d92ed403a407d75406
-platform/external/rust/crates/plotters 5ec77bbc03c430a8be814030eac93d901aaeef07
-platform/external/rust/crates/plotters-backend 01b46d685cc0f20f48324e6b283f622c2b6a57b5
-platform/external/rust/crates/plotters-svg 4f1b857e682d4ae48e3185bdf69ba92dddcd7a6e
-platform/external/rust/crates/ppv-lite86 b033c6d34d1a86ef14d2ff5aa01bc71d2aaf8af4
-platform/external/rust/crates/proc-macro-error 58d518ba9b0114abe05e48af3d03847e40a553a9
-platform/external/rust/crates/proc-macro-error-attr f0351ed23241e2ad1c8d5a7883bd2e27e763cdb2
-platform/external/rust/crates/proc-macro-hack e4f1fa2ffa5c4a4923dfdd9382b3b03fb1ab5cb7
-platform/external/rust/crates/proc-macro-nested d78c3df7a285b437de6f414607dc0b7ffff09534
-platform/external/rust/crates/proc-macro2 f7f886d4fd5ae000f0feb47ee3042022907f0705
-platform/external/rust/crates/protobuf 4e261320370c285894f6a88ab6112b4c4679b0e5
-platform/external/rust/crates/protobuf-codegen c22866ff852e289b2827784833619a03058eaec7
-platform/external/rust/crates/quiche a5b39ea6abcc2dcc4f1681a98c300622af298d98
-platform/external/rust/crates/quickcheck 2a4e128137b9cb9fc940a2fbfc057be2f4fcd648
-platform/external/rust/crates/quote e8d7fb1f5e1a8dce08e2a59bae410da50a62530b
-platform/external/rust/crates/rand a57efb764bad1c5da1ce44ed716050c45ddcc05d
-platform/external/rust/crates/rand_chacha 6bde1a0531dc2c5fec37b24f47e67abe1892c2e4
-platform/external/rust/crates/rand_core f49c92d2767b0d198008e00ccc8b1c70319a8d56
-platform/external/rust/crates/rand_xorshift 4957b12d5846ce5bdffd556311c8eca12439c4b8
-platform/external/rust/crates/rayon 90b52b63222027e487769f5df33dc81d84605964
-platform/external/rust/crates/rayon-core accd1e13c004b070e3d494e7c63557b78379a3f4
-platform/external/rust/crates/regex 9306e1d6a5f010c6b1c5aac09284f8bda6d2d6b7
-platform/external/rust/crates/regex-automata 13020e3a76fe2656931bc9043b61ba7b7d2593bb
-platform/external/rust/crates/regex-syntax 73136f46f20295f3984cf2e369baa475ad0b9677
-platform/external/rust/crates/remain b0ebc4c306dea1f7d15f744bbaa08f69a54b33d3
-platform/external/rust/crates/remove_dir_all 8e7882ebec21e5d464c272d297a66ee88f58a2fe
-platform/external/rust/crates/ring 3d808c41aaa85ee8b1a78f13cf5dcf569245fd5d
-platform/external/rust/crates/rusqlite b421497885766afa873d223be63e826a94e7f875
-platform/external/rust/crates/rustc-demangle 23ea87822638b880831ebc333bb69e20409d8fff
-platform/external/rust/crates/rustc-demangle-capi ebc79c9fcfcf337d6e928e710b5919ee0e59f67b
-platform/external/rust/crates/rustc-hash 67a9453aefe4a992b7ead6fe1410d6d648bdd5dc
-platform/external/rust/crates/rusticata-macros 8116b17f90ad4213b65a9260841d86a8cbed315e
-platform/external/rust/crates/rustversion 8ab8457eb66bbc70d533fda724c07c7aace0ddb2
-platform/external/rust/crates/ryu 33c014838254dea3acf6e20dc0cc8464a98b8449
-platform/external/rust/crates/same-file 62c9d5db1d80a3d8b0f2cc38d6c0e166668dcdde
-platform/external/rust/crates/scopeguard 37947d4db4512f8ae05155924b8b483fd2d3cb3d
-platform/external/rust/crates/serde 8b746facba539461baa5124371185ffed35dcff6
-platform/external/rust/crates/serde-xml-rs c865f9c448e3e06224d894af7897af83c6afc64a
-platform/external/rust/crates/serde_cbor a43d0f933216d81f54de64eb8f6fe0ffebf8ce52
-platform/external/rust/crates/serde_derive f3f3864fe786f9cfcfc8992996cb19481a9f1a6e
-platform/external/rust/crates/serde_json bd3f4ec8e31922045014fe71289519928df3d3cd
-platform/external/rust/crates/serde_test e9b747bc284b65cb110237e321e49cb9552c325d
-platform/external/rust/crates/shared_child 32eacf2b6ac1e035375033366a0090049cd195b3
-platform/external/rust/crates/shared_library 24bb0946c3e9469ba74f2149c49b52f8bc89c903
-platform/external/rust/crates/shlex 61187b88994d31d5b0ff8f5622cce120d1979f81
-platform/external/rust/crates/slab e26dddd8e02c54bfb48d4a779e2b81bfb971fae4
-platform/external/rust/crates/smallvec fed5b565d14abdedc5c4bfbed4e5387347606e5e
-platform/external/rust/crates/spin 9f9110a2d174361191fb893aee268c5a3e0d86fe
-platform/external/rust/crates/structopt 295f256e2a57b2b385cf2f210b66f5afbfaa9dcb
-platform/external/rust/crates/structopt-derive 24a57a6bcb63b41b94292b329baf5fee101f987c
-platform/external/rust/crates/syn 506c21d74547546c7bd20298564016bd5103663c
-platform/external/rust/crates/syn-mid c00d6646de98f6d756bc2cd25f654878328945d2
-platform/external/rust/crates/tempfile 4f7e0e22e235d937549d8fa007ffaf5ad4bea065
-platform/external/rust/crates/termcolor 337e7181ce1d0a2b9d94c8fd31591be08b5dfe55
-platform/external/rust/crates/textwrap 6fbd583bccc054b50e1bb6104332e5dca606e04e
-platform/external/rust/crates/thiserror 0c9c82af3f78bdb0c238e7ed63bc35d9d331e517
-platform/external/rust/crates/thiserror-impl a4ef602aff163d6c71f4ebe40a7e5a2af0846d99
-platform/external/rust/crates/thread_local 5f69de30630d27073a1724b8a48303f28eaae497
-platform/external/rust/crates/tinytemplate 14d2a82f659a314702f3058acae572d119ff95ea
-platform/external/rust/crates/tinyvec 206200b5a5c19d737e285d2bf20fc7c65ffdb8ab
-platform/external/rust/crates/tinyvec_macros 984c3bbe6a81dbec2dc85b42a4a6a4bf07908d1b
-platform/external/rust/crates/tokio 8434b7c98c4a887e76fd1d833e3506b32efaddf3
-platform/external/rust/crates/tokio-macros 5fc62a39cd56e945722a4cf07f6a8865c8633407
-platform/external/rust/crates/tokio-stream 91505616f6f34e380fa43bbac1c3b310137fdd61
-platform/external/rust/crates/tokio-test 0583486a505e80c5ecf0a8ddbfbe22c1015c0522
-platform/external/rust/crates/unicode-bidi f737a4265934a8bbb2911241d21bec1861b1f3dc
-platform/external/rust/crates/unicode-normalization 00dcd48b785ee187a6271490f1d2e735e8d02c5e
-platform/external/rust/crates/unicode-segmentation fc95ed3ab668e390c8851c79a9eca1f39aed932d
-platform/external/rust/crates/unicode-width 31cf89cfa90323438a51aa45bba75fe0a0647eb3
-platform/external/rust/crates/unicode-xid 8a975f2dff0bcdae5adab769e98c4ecd96907402
-platform/external/rust/crates/untrusted 045e83b3ec15bc7bd96ba19b3c198126ae06f0eb
-platform/external/rust/crates/url e5b5db7043af9cf0e0cc14edd77f5a4d434dd8f9
-platform/external/rust/crates/uuid 7412155048aebcef2b3caf1f1e2c8c82f3fe60fd
-platform/external/rust/crates/vsock f42aa883507e00729423069e2a642cd742fde325
-platform/external/rust/crates/vulkano d26b214d9657d26925eaf77f7428c896140be508
-platform/external/rust/crates/walkdir 677e4a7eaaa884833ac5888c771bd1dc6926afba
-platform/external/rust/crates/weak-table 42ea95428b6b388c92c833ed22fe425aaa933ceb
-platform/external/rust/crates/webpki 168833dd17405bb5b141bbec94e5f68db24287fb
-platform/external/rust/crates/which 87a1a3763191d316cc63ad459c3ffc75ffc07f64
-platform/external/rust/crates/x509-parser 5b0d5dea6596152899146f9e56ab57b722f51da3
-platform/external/rust/crates/xml-rs 7b057dd40c124d16ffe30c68db606f46aa8d1922
-platform/external/rust/crates/zip b39372503eba34ab05e7f88c25526ea40d848d1a
-platform/external/rust/cxx 666a0fb0767e52d5139d7e525420aca53223ca6c
-platform/external/ruy b1da6e34e65cf19a9d8cb9512a748751fa7c1080
-platform/external/s2-geometry-library-java 8ceac0c68b218f299aa03fee931a62d5b056e0ac
+platform/external/rust/crates/ahash 56da018f152aa6251f884d196df5db4e30ef7e10
+platform/external/rust/crates/aho-corasick c7231e519cd69751ce4df5840c8efe6e791badbb
+platform/external/rust/crates/android_log-sys 88a725843518a98bd5449a3b23d22f1bbb799cfd
+platform/external/rust/crates/android_logger 70ab96c1f2779151142c380809dc144ea3010976
+platform/external/rust/crates/anyhow bc4644b724dbadba07a7273b2192d029044c370e
+platform/external/rust/crates/arbitrary d1761d37d7a2103735a2ab887c1fc40c2a3861d9
+platform/external/rust/crates/argh 77600c1030348dcc0ab34a599ad796091dc41b1b
+platform/external/rust/crates/argh_derive 433d113dfe5d09334eb00888c6564cbf6e459e5d
+platform/external/rust/crates/argh_shared 8a9a834cfcc35721886f06ec0b74802ae1979b31
+platform/external/rust/crates/ash 50a5fee64ae013c5e126e3c444a3ac6eaf09b80c
+platform/external/rust/crates/async-stream b978e7d28dcf0744dba78251b8dfe08f734331b6
+platform/external/rust/crates/async-stream-impl 1c14b4e7f796055204bb232c2c5493a71b229e33
+platform/external/rust/crates/async-task 9db9e8d1e78a63ce9014d4ff34ccf276156932db
+platform/external/rust/crates/async-trait 4887a5cf8e55176a8bf982c232953d42d93eb124
+platform/external/rust/crates/atty 4185c2215ec6880a0a96f413bc0f3162f8051ae7
+platform/external/rust/crates/base64 c16b5d44c39f776c0f74bb1834a5481ec741e3ad
+platform/external/rust/crates/bencher 02a6602c18a4522a6736c77ee4df2266c9dbdcb0
+platform/external/rust/crates/bindgen 2ea3a4a5292a91820dd470ddd5df64768f2bde3a
+platform/external/rust/crates/bitflags ae03cbebb365c4622e6c305a83b6db7c7b846205
+platform/external/rust/crates/bstr f099e74991efe61c17b944b407526bc632e13bde
+platform/external/rust/crates/byteorder ca282773d0802e2b405b93d7b2812266a4194949
+platform/external/rust/crates/bytes 2364ac0df5160739f62b37e8f64f0946d5c6defe
+platform/external/rust/crates/cast 05b7dcadbe2ef5978d1f05e6a3770e803401c55f
+platform/external/rust/crates/cesu8 4b2b3e0156f9386ce899e20195e4c6fbc589d2e8
+platform/external/rust/crates/cexpr e391e65bae6ac6d777715b6696f85fd5e6193cdc
+platform/external/rust/crates/cfg-if 48c17ee38504f8889240f6c03bd1ef9c4c72d87a
+platform/external/rust/crates/chrono b765a39da4bf922ca4686cbe0befdfec9fa8e966
+platform/external/rust/crates/ciborium 98df581ed41275602fdb43ba68e73a3754fc290c
+platform/external/rust/crates/ciborium-io c809b61013edef983488800b8d6de4cc471dcac9
+platform/external/rust/crates/ciborium-ll c1c6232a79f0111d8f82909a4b493279db8562af
+platform/external/rust/crates/clang-sys 5071bb7ee8e95e06493957c8ec637723bff956be
+platform/external/rust/crates/clap ddf297f47fa2441df0551481bf77ca740c55be33
+platform/external/rust/crates/codespan-reporting 3ef2aebdacd2b5e060560b337168e1dc9ccb544d
+platform/external/rust/crates/combine 4f5b27cef875b18967799061fa286c4de8276b30
+platform/external/rust/crates/command-fds adca04253c621998044290a34d2d41ebe4255847
+platform/external/rust/crates/coset 351c7de19bc8b13d0f1fe78fd510d7f3561fa485
+platform/external/rust/crates/crc32fast 2ab4862286bfebb5f7bb95e1b2c0671cdb8dbe74
+platform/external/rust/crates/criterion 99b74c005c949addf7f628eae389984f08826ac4
+platform/external/rust/crates/criterion-plot 3df75cdfe2fdaaa4339150899343e274b09e694e
+platform/external/rust/crates/crossbeam-channel 24719a645d80148612f714ac79aef0dc79f8098c
+platform/external/rust/crates/crossbeam-deque a81507f375a084813f4a030d7f521af95e3a72f6
+platform/external/rust/crates/crossbeam-epoch 297cdbd1161fd7b583427cac2a531fdf74ec21e7
+platform/external/rust/crates/crossbeam-queue fcf0a192b6dd704b7d94ff57fffdd96ac6baa62d
+platform/external/rust/crates/crossbeam-utils 5de561b0e6752f158e5890e9451bb7429f157925
+platform/external/rust/crates/csv 0e824a806f865e1fa3e1a59ac7e426ed73c4fa53
+platform/external/rust/crates/csv-core ff5d6e7e1136ea0973248ab2d22918862c774705
+platform/external/rust/crates/der-oid-macro 624d091ea1c737b587d8d60e98be8764e3a38873
+platform/external/rust/crates/der-parser 39540566020260d19a4c9af692b7d2d43061a289
+platform/external/rust/crates/derive_arbitrary 51b36c8790cf7bcbc932a80fcd9aad28bdf35174
+platform/external/rust/crates/downcast-rs 2f4189764757c576d6a333b2ff4c99df2ccba46a
+platform/external/rust/crates/either 1b1d95b0d72996c899c0cb8ad9de5344b5ee52a9
+platform/external/rust/crates/enumn 017904a828741e06c675d60b0279798ca158b893
+platform/external/rust/crates/env_logger 4c0044bf60a1534e92a1058627b40bea7fc20aae
+platform/external/rust/crates/fallible-iterator f5284049e4d7ef1752f2e1f5f2300e757cb7823e
+platform/external/rust/crates/fallible-streaming-iterator cc1465ae83cfe7edc4f8e482aaad736b878deaa3
+platform/external/rust/crates/flate2 8193ab6c21a1c4829cd866e65082f6f0a07266e3
+platform/external/rust/crates/fnv c3c664e9999bd0d7d3dde5cae8e32040f1174e6d
+platform/external/rust/crates/form_urlencoded 1fb7654fe6bd6f463d7aa1f172ae0e9c17b30548
+platform/external/rust/crates/futures a696e9b7a34ae0e932c877ee4aafc06be1be3084
+platform/external/rust/crates/futures-channel 8dad322c8522493cad5f80d7a3ecafb90921f7c3
+platform/external/rust/crates/futures-core 312f95d36f33531c037ccee61080771cebd6b095
+platform/external/rust/crates/futures-executor aa03a8e2b50e86b876fa74a33f4b5fba901859e2
+platform/external/rust/crates/futures-io fb0dd75d7dc238a02eaf80649f57bbc4dc515c25
+platform/external/rust/crates/futures-macro ec442da3ef9a382800d0d9941a3e304e0e67f5bb
+platform/external/rust/crates/futures-sink 60552e97a6c1780d8fd5df0058e724e35218fb3d
+platform/external/rust/crates/futures-task f7d873365a79ce85b9cce998ed7705df6f43874e
+platform/external/rust/crates/futures-util 7f33ed9567d4b9c2c5cc692375ce581f86f19bd1
+platform/external/rust/crates/gdbstub f2a21c94a957ac8f1d9bb8628bc56b3f2dd54c03
+platform/external/rust/crates/gdbstub_arch 70b52fc38ae7444865a91b3c678544d80ce38e27
+platform/external/rust/crates/getrandom ead1476f28a7baf7baee7b5facf8f2a3817064d9
+platform/external/rust/crates/glob 538d47867cb22db9ee02748655da9ef024d2e89e
+platform/external/rust/crates/grpcio f1fe7c70141faf8c45cef09cc1f95bda3aed340e
+platform/external/rust/crates/grpcio-compiler a26acbb75d1a943a65ea5223035a8cc65d893da7
+platform/external/rust/crates/grpcio-sys b77289495cc4c4c8dfcd970f89cce12fb4650f8e
+platform/external/rust/crates/half dd61582e4f76384976173f7d0cf0b6ba41c8516b
+platform/external/rust/crates/hashbrown 23097a9d26d007ae5030514c1353353c975ee7cb
+platform/external/rust/crates/hashlink 9106a01d18551eb661cb23f5a5fce614bb7dc994
+platform/external/rust/crates/heck 92d6f069d53575dce561285797f5578514c86228
+platform/external/rust/crates/idna 3e2c3deb5061dbad51d94a6cc91945d21dc19a92
+platform/external/rust/crates/instant 99edec3f39aedd22f4f59b85a6b5555f1c21d209
+platform/external/rust/crates/intrusive-collections 5701aaf4670ca929c00559993ef40f0a890a4503
+platform/external/rust/crates/itertools 70f6aef13154d1cca64bc0ecf70816722bcfac24
+platform/external/rust/crates/itoa 184d3655e5b80800fb3efcd58d6b8b210859f8a3
+platform/external/rust/crates/jni 816d54a745a542999cc55ff9cbed96bff874bfe4
+platform/external/rust/crates/jni-sys a354d56fe461f6820e95ab21ffc9ebe296170b18
+platform/external/rust/crates/kernlog a9b90db24e9416879b6d1e1e6b9351f9d71bff8d
+platform/external/rust/crates/lazy_static f43c0c7e616982edd741e2806f0364d0540d0668
+platform/external/rust/crates/lazycell 066f4302a740c8eb3c6eec30593adc5a73518eba
+platform/external/rust/crates/libc d7dddd75ff1e38ae41a203f71c77a0d68a79e3a0
+platform/external/rust/crates/libfuzzer-sys cf7518c63ad2e42cb2bf96628d893515b4a3047a
+platform/external/rust/crates/libloading a8ec863d3b317e190276ec8ca23c194b1f452faa
+platform/external/rust/crates/libm a68604362e6a803c451970e5fea5fdcf8bbcb0f1
+platform/external/rust/crates/libsqlite3-sys 75b46b26478eda9d5c8fcc27979ce2854ed6a911
+platform/external/rust/crates/libz-sys e67a0b8c9eca9054e41427bbcd01e04ed46117a1
+platform/external/rust/crates/linked-hash-map ac402c44001a64c22547bb31147f71ed12f06f85
+platform/external/rust/crates/lock_api 536331573f604cf152c7ed15984460c651038dfe
+platform/external/rust/crates/log e57e1f5a52e741ff124308d44839b3911b3221ef
+platform/external/rust/crates/lru-cache 1cd5f21fd7eb5c8f79dd83f6b8aa5008645dca63
+platform/external/rust/crates/macaddr 23ffa5f582a9fbec3c0850d358ca294879f25685
+platform/external/rust/crates/managed 89d68692ffbb1cccce26b837429b8b95f1a89fa3
+platform/external/rust/crates/matches a8c624085a66e20489bef7f47c085bd1d7963fe4
+platform/external/rust/crates/memchr ffd1ab77feda9cc4ba740642226e24f7269de639
+platform/external/rust/crates/memoffset 5883046d9c20c6685ed0b9f2878b903f6f46399f
+platform/external/rust/crates/minimal-lexical 537a5b48fd886c03189c6e4857cdcd4aa90f7f32
+platform/external/rust/crates/mio 2bdd63dc08c360d66a31e788c3c194005a0c1fd9
+platform/external/rust/crates/nix cd3db46cf81c8a5e1762cebf482e2ea2e8485e3c
+platform/external/rust/crates/no-panic eabce3a0486b39ce8918df6af292fb4846c0689e
+platform/external/rust/crates/nom c35a765c4d698ae7ec86ba80d241521810af9e92
+platform/external/rust/crates/num-bigint 82d869045895fc078eb76eae8651050ceb2099e9
+platform/external/rust/crates/num-derive be392b94cf8ac6cf5a775e4ade95a8508f96882a
+platform/external/rust/crates/num-integer 29850cb726b2f4c3e60cf4aac8b487ceb0999196
+platform/external/rust/crates/num-traits e4c2794fe44149aca231199d1347bbf90dd1b060
+platform/external/rust/crates/num_cpus 97700fb41597d332612a165e0bdbd79f61036a69
+platform/external/rust/crates/oid-registry 8cae447c28f8dbe78c50ad21b8a5918860c9d327
+platform/external/rust/crates/once_cell a7508067f9eebeef662445f55a939b12e03cf2be
+platform/external/rust/crates/oorandom 65a2a52f01b68b5234b154aa05d8114f6a4a3716
+platform/external/rust/crates/parking_lot 62a2394eccf36cceb62edc838e98f927c02725a6
+platform/external/rust/crates/parking_lot_core 9af4027ce817b93933cd4909a8e68d25f3353b7c
+platform/external/rust/crates/paste f00bdca859e8617a02b76320a5208d67364de125
+platform/external/rust/crates/peeking_take_while 30daf4455c73e2c71cd2c49b3c970e94e33085a5
+platform/external/rust/crates/percent-encoding a9c46b07fdcd48701066eb36dc4596bcc8af91d6
+platform/external/rust/crates/pest 1d5eeb5c025e516bfaa38bb087f32f5a55b1f839
+platform/external/rust/crates/pest_derive 957370ad07c639bc633992625b9118eae5382b8c
+platform/external/rust/crates/pest_generator da3d162fec020b841877ef01925c78ee7ae026a0
+platform/external/rust/crates/pest_meta 08d7c71fed655cfa1346afe81c36fad27f047378
+platform/external/rust/crates/pin-project 7a0a6be9f8b9d1c173424206a485f510b83c0e6f
+platform/external/rust/crates/pin-project-internal efc4476e43cb51eb6c51cd5ae8a46b75873cc226
+platform/external/rust/crates/pin-project-lite 7e1380e547cf21c284db6dcb6e1c0f43a39c89af
+platform/external/rust/crates/pin-utils f8402f36f186c9e8888594b54dab25b63e379fbd
+platform/external/rust/crates/plotters 732f81e7fc84b69dad0dc3ff2a02e1cf84e77697
+platform/external/rust/crates/plotters-backend 59b2959c33aaeafdd3dccae9213e38aa73ab110f
+platform/external/rust/crates/plotters-svg fbbf326d558915bf0a4809fe8b52f91eaf97fb66
+platform/external/rust/crates/ppv-lite86 d256f83de62fc892ce66a511c11e3f92ef86b76a
+platform/external/rust/crates/proc-macro-error a9c8b8bc51b7aebc07f5f36b2a6b93c88f4f50fe
+platform/external/rust/crates/proc-macro-error-attr 174c58de27f31ae408004bc0a052da0c00de438d
+platform/external/rust/crates/proc-macro-hack fb3d1d442d983ee72cbe30ac88be1215f7e2c7e8
+platform/external/rust/crates/proc-macro-nested d32f6f3ba060503f631a59b6afade5d5677f0d92
+platform/external/rust/crates/proc-macro2 7125d985a80c2992984b182e2161b4439341a7de
+platform/external/rust/crates/protobuf 7f5583fae768ca1747ff42d5a3f57bf76c941806
+platform/external/rust/crates/protobuf-codegen 7b9af8a53ba27de03d944f140ec484f8628eea74
+platform/external/rust/crates/quiche 84f691550cea694f801f3a5c9f3716b28785c0a4
+platform/external/rust/crates/quickcheck 8b002d4cd868143b6b0bca74998aba32db938476
+platform/external/rust/crates/quote ff16922d1a8f9766fea9b1436d6a996cf8950344
+platform/external/rust/crates/rand a019995f06b4df9eb5710bf4365f10dc62b4d5a7
+platform/external/rust/crates/rand_chacha ee6e6a076b7c18f1bec75bd1434c59a9858505c0
+platform/external/rust/crates/rand_core 077526bc4eb71ae4a95d6b58f8285042c5af0f5d
+platform/external/rust/crates/rand_xorshift 1924a5eb76018284fc539cf4f4cc74b07a360eae
+platform/external/rust/crates/rayon ca570809aaf407948fcef22eb2737b22e031c5aa
+platform/external/rust/crates/rayon-core 7ccf97b6f0baa8ebf6855ed9f1b62fb6855d8d61
+platform/external/rust/crates/regex adb7f234d199d74a3f36f984f0033c28f590cc90
+platform/external/rust/crates/regex-automata 5838be7a6e80481420ba6c871854e3fe5373f670
+platform/external/rust/crates/regex-syntax 5e64d5aa1d6f6aa092fd96ec1852ed1dac75b34f
+platform/external/rust/crates/remain 2d4af72941e16c914cb360122dd8455cb4d4c4d0
+platform/external/rust/crates/remove_dir_all ca9fce3ae8f7e4337029a4815c51dfe4b7429e10
+platform/external/rust/crates/ring e702cf476dbb054538b481665853ff0a2793f03f
+platform/external/rust/crates/rusqlite d0f2c067d11bc63c9bcc8c9fbcc0f5401bb825bf
+platform/external/rust/crates/rustc-demangle 8c929f36e2629c5f9331e9f682f530426ae68f93
+platform/external/rust/crates/rustc-demangle-capi fee08a804fa6a9a50bf276b1bbe61284595af56d
+platform/external/rust/crates/rustc-hash 9ed7eb0620aee2642ee274c5ed3863f40e8fb7e9
+platform/external/rust/crates/rusticata-macros 6f3124c3a1b89f2c1f5173ee821df079122a204c
+platform/external/rust/crates/rustversion d3e44471478fcea19cb6e871729335ceb926764e
+platform/external/rust/crates/ryu 506b732e778401c922c153d99842d0fbc7fbb645
+platform/external/rust/crates/same-file 5e114133e361f6e6c0c8e6e3302eccf70b87cea1
+platform/external/rust/crates/scopeguard 580b732d3706102ec76cacc7e0d092096c05e684
+platform/external/rust/crates/semver dff32d756ce47e55e742a7fe4086bd054f3a2f4e
+platform/external/rust/crates/serde 9a5fab8a597f4b785df4a4b1209f7c5842eafcdf
+platform/external/rust/crates/serde-xml-rs 39bbd0d3c89b95f034cf495e93a835c7a5841887
+platform/external/rust/crates/serde_cbor 439e969f68847b29402a6278b58755822077d316
+platform/external/rust/crates/serde_derive 169829483b6b06e4ace4c13b49fc1382706efda2
+platform/external/rust/crates/serde_json ebaddac073a15b757eb5fd14841474f2480cac33
+platform/external/rust/crates/serde_test 5a4615e671d98413ebc5d792420c3c43850e2b87
+platform/external/rust/crates/shared_child 88074aacaf19b5b2dac7ca36a9738a0f55ebd606
+platform/external/rust/crates/shared_library e48804ace8f9121f539a81d3e86ed379c431ffaa
+platform/external/rust/crates/shlex d9d2ed9b51fce03a1240a9e6ef66fa7a85f662ec
+platform/external/rust/crates/slab cf82efc3fd53fb7265d5ad46615b27b0e4ca4809
+platform/external/rust/crates/smallvec c495a236f0533b48e48415702f13eddc1e25cb37
+platform/external/rust/crates/spin ade3150886d778b4ff7e0ed7a17e37fcd38ec79e
+platform/external/rust/crates/structopt c09bbfade0f53b8671606c414d98202f35026b6d
+platform/external/rust/crates/structopt-derive b92fd0774eace93c3c1f1532ef04646d30b0493a
+platform/external/rust/crates/syn 867826f4c708c22a49a34079d30314740c019e65
+platform/external/rust/crates/syn-mid b192a186419f3fba23b551458eb8cce4349ca8e1
+platform/external/rust/crates/tempfile 9a70104519484e00a597ec633011ad227c6b32dc
+platform/external/rust/crates/termcolor 8dea1c67b598332411c3066e689f5a13e258cd7b
+platform/external/rust/crates/textwrap 5a487874bed335cdf062655e9903ce49e080db63
+platform/external/rust/crates/thiserror 0595e183d74116ca5297868bc42013f4f6fbc728
+platform/external/rust/crates/thiserror-impl b19637b48bf866708d39cb9ac8f0b4f9acc758a5
+platform/external/rust/crates/thread_local c34cdb171c947fa8bb12347ab3ddf1cc52e9931a
+platform/external/rust/crates/tinytemplate 6813a6d7d0469496e16dc29a53d56bbc666641c1
+platform/external/rust/crates/tinyvec 50d239378fd6469e182dc035d1e332b9b6bf85c0
+platform/external/rust/crates/tinyvec_macros a9fc74b95fba8db13510e102fa539ae4d45dcf35
+platform/external/rust/crates/tokio 460d6e1daac9fc10ee7ac8c3cee019a870ed7906
+platform/external/rust/crates/tokio-macros 9878533c3bdacf5e7ec5c25f4327b68a1cffb2c1
+platform/external/rust/crates/tokio-stream daaa95516f785743390c5d282408406f196ae3ad
+platform/external/rust/crates/tokio-test 78472bd8049736c31af8c363a7c11f8c93e1a013
+platform/external/rust/crates/ucd-trie aec5d5e92ec43eb963b25eaa9cab90fd988ec989
+platform/external/rust/crates/unicode-bidi 6aea46fddabb06e3f97d27d9ff2ff9c7550653aa
+platform/external/rust/crates/unicode-normalization b266c96656850faf924f39eddd8f9166b3d8ba6c
+platform/external/rust/crates/unicode-segmentation 843021ae05667145797a73d37067bcc1b3761d21
+platform/external/rust/crates/unicode-width c4f7f7e0bc6714105e988b9159de3e29637fbe6f
+platform/external/rust/crates/unicode-xid 2782ff4854e667df7e54ae96e2d9c5783e83f82c
+platform/external/rust/crates/untrusted 3c2a0fc271b07711aee3d41a3a27c5f6169de7af
+platform/external/rust/crates/url d5181aa254a3241faed78057ac8743285677d6d9
+platform/external/rust/crates/uuid 3adfcfbee61cea9c0af1d82fb667742b89e7d5bd
+platform/external/rust/crates/vsock 1303f3845ea6785ba3b31fd718bb0a37638c0a61
+platform/external/rust/crates/vulkano e3c575c994dbc43edc519f81e0f97b70f68595b0
+platform/external/rust/crates/walkdir 411ae906d7f30135fabd2283d03d653bffbec85d
+platform/external/rust/crates/weak-table 368154221bee43c1ef793a5e85907e5486d18c42
+platform/external/rust/crates/webpki 1baf88c1b9a7fbb7143e80e258c45c8707f88231
+platform/external/rust/crates/which 2fefde9d266fada1f9df5c4953fbb7e276757101
+platform/external/rust/crates/x509-parser 6c541127fcbcbe00206315249fb840cefb072753
+platform/external/rust/crates/xml-rs 8ada0935e9fdcea52e1f4955fc21c32623420908
+platform/external/rust/crates/zip 4a31a7bde72838a279c628aa56c7df1d39fde486
+platform/external/rust/cxx c60fbf4a3f00858cf3f8e1e80ad416d023e4ea16
+platform/external/ruy e8bf00dd0357b1a817285bfd59be7c098cf41feb
+platform/external/s2-geometry-library-java 5a4eddb0a810a01e5bdbc1f61866b456359d4ec8
 platform/external/scapy 6ebe92a8cca44f53c9b8babac936d8e863ea6315
 platform/external/scrypt ff358a74a901e92b701dd6dc72b1b865b5ec59b7
-platform/external/scudo 6e0a370127e3a7ba079d875d0cd2488b6441f189
+platform/external/scudo d5b16e038907a669337f238867c2a2dc57e79461
 platform/external/seccomp-tests 4834f7e322a3e380307dfbb8582ccf3c2407c486
-platform/external/selinux bd36679ab30534b20e2528bd18e34f5bbaab3790
-platform/external/setupcompat 52013a2a6edfbdcb13d2dbeab0fd336271629233
-platform/external/setupdesign 6bca4aa691596970ea3f54f89300453950fb6c02
-platform/external/sfntly fb5abf218ecbc3c3ef51c2c17c59ff70539346fc
+platform/external/selinux 871ce28028ef71b85b674ce0d7c4dd16c030be82
+platform/external/setupcompat 5cafc9f511b85429cad3f1c564277b6375df9793
+platform/external/setupdesign ef2432791623e4f2fe2a0fc36581686799a7dcd6
+platform/external/sfntly 74d0e947829a2c0d2b6012b297c770a0007c8d4f
 platform/external/shaderc/spirv-headers f4356c4b3356771af675d4c7b7aaefcbd7a92e38
 platform/external/shflags f08df330ef2f7fc3a3e5371913f76db8854337df
-platform/external/skia 33923abd6b5a17c3374b177f4e81d042f048b48c
-platform/external/skqp 6cb5bb7d7207078c0e68c9477148af04fa387932
-platform/external/sl4a 43f3e44e7ba7c163ea8dcc7418fce678104f7447
-platform/external/slf4j f803531999c8c9cab703b9803ed5c2cce0cfa8aa
+platform/external/skia 0849585924e4ebc83065e6eeaa8877b5e60314fc
+platform/external/skqp a75b41b1e851d970ff651d1a835844232b7c51ef
+platform/external/sl4a 04a3a8e3cc6c3afc41e50570f02da11dc451faac
+platform/external/slf4j f1daeced3c7400eb4410cef87d58d4ff3f866b3d
 platform/external/smali a54e1988ed67bb5c97915a8d079b1985401d48f0
 platform/external/snakeyaml e811c6100a510f0be42507e51e5f836e16d1d755
 platform/external/sonic 962eb819ac2dc3ba7f198367eaa1fd1c9344d9fa
-platform/external/sonivox c94c48362a7b080c9e1539566fbc110118cb2904
+platform/external/sonivox 36d26dab90b69e99afb2f782b0870e5d42daae4b
 platform/external/speex 78bbb12803ed32e6aaa9723ff1780bb7f399622f
-platform/external/sqlite fe83094f1db4dec1152c2c2944654626ccbe5542
-platform/external/squashfs-tools 46314aab033ec4308e500b73de893e597e3a6f38
-platform/external/stardoc 0b11f1a7c4be293d7b55a65acfdd91d4fb84b892
+platform/external/sqlite 49479ad5d77da86b5d96bc9f59326628ece9913d
+platform/external/squashfs-tools f5cc5ece10a65c0a3030b319d047c8c3482f65c8
+platform/external/stardoc c9ef857a4e04f66e31f9cdc700c1b8e558124686
 platform/external/starlark-go 5eb02f5d1d9f2e38748bfeb354fdde1928633068
-platform/external/strace 462bf370f9dcc20d5fb6f69a113e329d26f0921c
+platform/external/strace fd5d6e8efb3e6759c8611830c98dad27a0d59145
 platform/external/stressapptest 196aac3a7c1714da0865f228707b59fd46f8e90e
-platform/external/subsampling-scale-image-view cbe82f13e1b692a859c999e374ec3d714dafc862
-platform/external/swiftshader f6290e39af4a425804f4f0a283449c5d6753e4a0
-platform/external/tagsoup ca90c958f2e7e9adab5f00d3588e639fac09ad24
-platform/external/tcpdump b9afb04716f5fbb5431fd679800ea7aa80158684
-platform/external/tensorflow 3380088c428b08a1e29ccf0253c25642e0f0884f
-platform/external/testng 880dc2c9c8f87af9686bfea9f507ff77d1ba7a22
+platform/external/subsampling-scale-image-view 7f42b9b1ebb50df3f8a561d0c7284c5f6f68076b
+platform/external/swiftshader a1a024055059ade48f60ab9176991c7711df18d4
+platform/external/tagsoup 0dc20de0d36e49fecacf1408efaca6a9074ff7b9
+platform/external/tcpdump d0f5c1ba5aea9ec170b8d97aac5cdedc2a573857
+platform/external/tensorflow 32d28bbd400d1537165ffa969826677de59f9deb
+platform/external/testng 519cf469fad9ddee452351f2c77df528fd8d17cb
 platform/external/tflite-support 74226fd79217c7031d065239f9baceef3bd341c8
-platform/external/timezone-boundary-builder 19bfc03f2b95d092c6860cfae3a47b61c2857724
-platform/external/tinyalsa 62f46cc3a8a5ac98e9800b2545eed2158c2f7194
-platform/external/tinyalsa_new c7a1d339d375663eca22575e10a22920a9c08b52
+platform/external/timezone-boundary-builder 770ad1aae67f5632f45a056f8e14bb5858083a0b
+platform/external/tinyalsa 13750eb058883c42597e09738f1754d8bc91eb8b
+platform/external/tinyalsa_new c8c7937aa608dd670f02ae309d87db7504ae85d9
 platform/external/tinycompress 5c83785bd1a512c30b640df68ac19185be630afc
-platform/external/tinyxml2 01da13df23a136e9aabddd267675386e9b5e05c9
-platform/external/toolchain-utils d6ac98c7b6e3f29611cb07d99ba17877a2f513d1
-platform/external/toybox 89f92a2f67513a2ed91caac07fd273178b1a7af3
+platform/external/tinyxml2 3d04254f11abf554be4baae00f2b8563147b9633
+platform/external/toolchain-utils c3109e7049de94507ef55adcf443c503522d018b
+platform/external/toybox ed55c83b8729bc316d8f0a65c026b7979a8b9d35
 platform/external/tpm2-tss 06014c470f6260826c9b9f929cb875b31a2a62b0
-platform/external/tremolo 2ba29f5cf28f2e18ca1b7ca56c1df2c2670183b7
-platform/external/turbine 3585bc23675d6f93ccbd2326edc787b668516311
-platform/external/ukey2 63a44f43f7fc2958c3dc83761cacbd68f1a35405
-platform/external/unicode 2313254ef701be9e874b5f9d8fa689b899bd6042
+platform/external/tremolo d1961cf8484194e49ea7fb3ed09163a2f1b80625
+platform/external/turbine 9bf778265e1e28f01287c6868c95aacdfbe9ce36
+platform/external/ukey2 4c98a2c2b3f11060f7bd1c0eea702699baa7998e
+platform/external/unicode d7c213eaf2e413b4c23d7d736185a2aab40e9719
 platform/external/universal-tween-engine cf206de5fe9b83698949471b8c55b23591a50ee7
 platform/external/usrsctp 7a975dca9951707f03c749ae215387d910cd2af9
-platform/external/v4l2_codec2 4ada426fd0127c6b4950b6a91ce8c146bc35e8a2
-platform/external/vboot_reference c60298ddf2a8062054eac54930abccafafa273ec
-platform/external/virglrenderer 921146cc4768668904696ded215bb7cfba653f34
-platform/external/vixl ffb6e66fd170f04023ae412d51b736ed110c3279
-platform/external/vogar a4242d5491fd3fe867566a8433df0750111bfb9e
-platform/external/volley 5dc5c91107872ee7f1a56e854e3c3d2cfb3f6185
-platform/external/vulkan-headers 76d823326d7e4d54d266e7bcbd5615b01e14d636
+platform/external/v4l2_codec2 10a1600af7862e017f6ff1a07479905c430f5fbc
+platform/external/vboot_reference 0e96e7905f1d44e4c6c7228edd79b9e2cd20289e
+platform/external/virglrenderer 2271477b060878255cc527217151838999d47b95
+platform/external/vixl c23183e02bbcde50df370fd5208e5594a4cccaa8
+platform/external/vogar 578f1e4e0461353f0794ef86dd57e6472fe688ee
+platform/external/volley 702dbd7b31d66a78f090ac803617ad37814fc71b
+platform/external/vulkan-headers c55a0da5589d6e856d6b49d3b755c32549eac5c4
 platform/external/vulkan-validation-layers be1c66b16f59589cc29ffa72f45c917b3eda219e
-platform/external/walt e26e8a2469e154334e6d43a72d66a0bb1572e90b
-platform/external/wayland c0bc8da3eca98e2554ec2dc3384bea63192bf6c0
-platform/external/wayland-protocols 546d2b7c92783ed2f270425c02dafb0891ba494c
-platform/external/webp 0daa39bd9e7224a494972cc4d7e97f73241393b3
-platform/external/webrtc 0a066a4454457447e9df341628690b93aee607b3
-platform/external/wmediumd 74985688fa87774bd937c6e4d8306b00862b5587
-platform/external/wpa_supplicant_8 0fe0e84ca911f4856f1d9b0e27f54331c2b63696
-platform/external/wuffs-mirror-release-c 4102ff1e2dbf1533d11eb5c47bffa536edb3d5c1
-platform/external/wycheproof 0ee3bf9e6c90d8921bb6d5b1ac0fee829078e32a
-platform/external/xmp_toolkit a39460d4174b89ecca1614b9fc575a84e1d8ac2e
-platform/external/xz-embedded b8d095b11cab7e99edf55a7e87a3a6d24b41ba8e
+platform/external/walt 2a017dda9b21b51a832abe6983ed1e2fae0caba5
+platform/external/wayland dd518d5fb93e51c4e7a3ad0e00b5e6ad5c36c16c
+platform/external/wayland-protocols b76a8e7126e76d6e8e8aecece0215a2805f37c38
+platform/external/webp 2d3cb9403901fa66b1e3a04c4dfb5d19d5a98360
+platform/external/webrtc 6d50132cb2228fbb6a4b9d40f1b79a22eb72db76
+platform/external/wmediumd b19ff154521fae446f432abf3407545bf4c3c3fe
+platform/external/wpa_supplicant_8 f5e10661b00379ba6bbebc90d4a8604b6524fb68
+platform/external/wuffs-mirror-release-c 207657eaeb980fbd91664a3f0d3d62ab6fe3df4a
+platform/external/wycheproof 93bc9ef8b0788ab7c677c040c7983e6bf0712d28
+platform/external/xmp_toolkit 3cb7c045d37882f7a7dfe3f478c897296ef13111
+platform/external/xz-embedded 764ee3e9792e84135d4a8536f335b600c471fddc
 platform/external/xz-java 498adeca25aa96ccd1b16fdc74ba0092ef5e0be1
 platform/external/yapf 699741a8380f9fc9637f72359317be58d8460677
-platform/external/zlib 6792ccf929b24d1e2232d197d16de078e3217fb9
-platform/external/zopfli 150bada2837136cab4e9bd15148ccb1611be0e2b
-platform/external/zstd 6f5d242ee0ad0ca0ce8ea23091edc17294f70691
-platform/external/zucchini fef0da316bca285952ec8d1659b81b0f559f3ec5
+platform/external/zlib ce697064c52fd23fc1253fd0f9c8cfcd737c4694
+platform/external/zopfli f8ce7f2433d276bc10616c305f03db78bc8a2708
+platform/external/zstd e7f14f014127d20071237cd0f4d8bfb12389103a
+platform/external/zucchini e213fd334ef46c9061431ae10710ec2148760da1
 platform/external/zxing 8743c37c607bfc439f03658702e3cf5151ff6dc0
-platform/frameworks/av 9ed1508dac95d8d1e9de7def5a099846d925fb08
-platform/frameworks/base b76b8dd413d90dff9516e2033c4634c5fde8bb7f
+platform/frameworks/av 4fa8a55aff27ff9ac2881c9c99328c586036f2be
+platform/frameworks/base a000c8be6edb2147220677f421c161a9689c098d
 platform/frameworks/compile/libbcc 3e09c6db61cca190078921f5dfe4c085158cab46
-platform/frameworks/compile/mclinker 32bd49ee8d9c1a207d2c89ead48b87e11807d81f
+platform/frameworks/compile/mclinker 5eaca01c03d261a68948d908eb44a8699b7f2625
 platform/frameworks/compile/slang 9eebeffe206515a081a360293ea1a40e79845e3e
-platform/frameworks/ex 45f433ee91397cc4ac6d3e85805d6152c34c5d54
-platform/frameworks/hardware/interfaces 492982d509687d4038bdd2ceb340600ed0520200
-platform/frameworks/layoutlib f5560b3b7884d909ad3ec0b6b70ddc323a8b195f
-platform/frameworks/libs/modules-utils 72e541b0d3b4cad2fa4ea2a0962eae0d720a7402
-platform/frameworks/libs/native_bridge_support c1bb86891d293141d834cfaf7503da6154494afe
-platform/frameworks/libs/net d15530f8260bae03575c5180274b649b0ba4ce37
-platform/frameworks/libs/service_entitlement ced18c051160d14acf3cf15e2d4e516bbb41ad25
-platform/frameworks/libs/systemui 6c7997f997efb00f6a42b05607dcd1115c79d523
-platform/frameworks/minikin b804f2fe46e2deaba6a2f2d640f52662bf13ef69
-platform/frameworks/multidex 7b96a56187114d1e96c328ee08c7617ef9af75b4
-platform/frameworks/native 147e2cd5f4de148cdc015e90e1fe4ea08466917b
+platform/frameworks/ex e95a053a84da6bf7d21f932300732f5a6f3680a1
+platform/frameworks/hardware/interfaces 4b7e556ef4c27963db08c757ab473f78f88a089d
+platform/frameworks/layoutlib 07a6df8c52216560af932977dcad96227a875cd6
+platform/frameworks/libs/modules-utils a6b965cda2aa28f2e2805fea5f165dc036214bc7
+platform/frameworks/libs/native_bridge_support 2125c96dd76d1f171d752381168baf669104eaf9
+platform/frameworks/libs/net 6038724f13d8a98626d636b6d5b434e07ad6e258
+platform/frameworks/libs/service_entitlement 63b4262402012866e89b31ed767c8a37e2501ce0
+platform/frameworks/libs/systemui eefa0309a34cfcef606cccdc57172719a85deb1f
+platform/frameworks/minikin c5f93531fd98387e85949577cec22043efd6f24e
+platform/frameworks/multidex 2a9c14d471f4a13a5a99561a7df9eda6b6341ca8
+platform/frameworks/native 2f080e2bba2eaa8ae634e54808de7d2540abd885
 platform/frameworks/opt/bitmap d82b97f9816a0f31c1277c118250f04e50640da8
-platform/frameworks/opt/calendar 73073247fa5fb65c6b1685cdde92e4114756edbf
-platform/frameworks/opt/car/services 89174e8eec6100b18e0cb644e2dac529072f0637
-platform/frameworks/opt/car/setupwizard f6312ccf62c59fcc6ef183f25bc556c955c8f9a5
-platform/frameworks/opt/chips f19f9c5a357724c5f4e66ba694f397d49d234325
-platform/frameworks/opt/colorpicker 41e00a503c67034a30b4a957d31d1384fd645b13
-platform/frameworks/opt/localepicker f3a70b6b36e0801095ac5d786336c70389f67bf3
-platform/frameworks/opt/net/ethernet e9554cf917e5b083a27583b6bf57147292ed8b0e
-platform/frameworks/opt/net/ims c77ad362a154176dc7572a61c5e3dd57ba8a4a7e
-platform/frameworks/opt/net/voip fc7eb67fd9cc4bec86ee69cc06c978694fa3a524
-platform/frameworks/opt/net/wifi 6178a598064575ce2c41b99493b9ef4ebfb82d40
-platform/frameworks/opt/photoviewer e4844af4a166e862c0617dde5699915f37eb3b6c
+platform/frameworks/opt/calendar 6abd8556da63ab4e9f60757860cc2c09370f965a
+platform/frameworks/opt/car/services d4a24927975a92f521fd3f343dba13998e6e3f23
+platform/frameworks/opt/car/setupwizard 917c8c2a133b5c12af5d9faa31a61919b6a6a155
+platform/frameworks/opt/chips 63f8121ee89dc5a0db85e6be09ad99c719a39ad1
+platform/frameworks/opt/colorpicker 4904ef0167e221916fbf40a755f845c63a93bafe
+platform/frameworks/opt/localepicker 7873a3961175c8aedc1de02e5de3cfac4e848f15
+platform/frameworks/opt/net/ethernet ec57335dc3ae759b06182ec16fff3c7fb5c5c591
+platform/frameworks/opt/net/ims 9a8f833b71d1e5f03d99aeca7b75f663a6fea975
+platform/frameworks/opt/net/voip 975a340b2cf1cb1e992465bb0b8c162cd5891e7a
+platform/frameworks/opt/net/wifi f8b035b2826c9235935ea66aa965b1410b4734ba
+platform/frameworks/opt/photoviewer 95095b380c6af2493faf1cb81b8b6bd1f5260d93
 platform/frameworks/opt/setupwizard 66f724dfc5f2afd9a7f460d2f8b96be52bf61e05
-platform/frameworks/opt/telephony 8fc31b1cbcf92f77a76ca1d763b7e15a6d784d5d
-platform/frameworks/opt/timezonepicker 7b9a95399879fb0800ba24816c62396a7bdecbf1
-platform/frameworks/opt/tv/tvsystem 54799d576d107c013fb5c88fb8e81ba208c05b92
-platform/frameworks/opt/vcard 11b260ed394ab0acbc3906c23f471d706c1f4e28
-platform/frameworks/proto_logging 6f32ffc22d92e20372d46d64ac37355a01ca7398
-platform/frameworks/rs 43cd3ef1c6d31929e3c1be6a45ca2850f787c3be
-platform/frameworks/wilhelm 6a9b35a26459adc06e8ca25d72531c0279815d0b
-platform/hardware/broadcom/libbt c2ca80bf9af2ce8923168ae6ad5169e3510a0ad1
-platform/hardware/broadcom/wlan ad79c1c2a1e22a10772f45b6959eee5eb4ba1a8c
-platform/hardware/google/apf 140956b1ef005adc6260a60e9df61c52f88c8fdf
-platform/hardware/google/av 84e7b57546363aaaff239d8d25440af5ad62cff0
-platform/hardware/google/camera c9f284c88f40ece77f92deded34497996554ecac
-platform/hardware/google/easel d26768c8a24657c33a9fe4374d5601c610361383
-platform/hardware/google/gchips 82d3730fe8c870ee8e69ed2b0b463c8359941b3e
-platform/hardware/google/graphics/common 4e7f73f2d2ee2013c01bdde654fb2de401b91d40
-platform/hardware/google/graphics/gs101 eeed9ca876692accbe698591d0adaa7c5de2b638
-platform/hardware/google/interfaces 57206995e555e7a69dfb4f29288da79fd19a5c3d
-platform/hardware/google/pixel 35bbf8ba697ddaaa4545a56741957270e631e037
-platform/hardware/google/pixel-sepolicy 4183259d12b7ad9bc782530053adc05134cfc972
-platform/hardware/interfaces 23766e57790a157b74fad4f022f95ff413238a61
-platform/hardware/invensense 4289ab2530fced262fc1a827b483d9ea2b386103
-platform/hardware/knowles/athletico/sound_trigger_hal a63921ad177cb7018fdc76b257c39e5c78b5901c
-platform/hardware/libhardware 63cfeed71c189b7665b8bdabfb2f4aadd684f7d1
-platform/hardware/libhardware_legacy 69a1187217466fe1259409024e04697d18c7a442
-platform/hardware/nxp/nfc c536914389ae89c17805ac3d65566fc86d1e9b06
-platform/hardware/nxp/secure_element df7e0c87f98476710b914af95129a00ae7902b28
-platform/hardware/qcom/audio 7d365d697edbce73a43d56125abf509dacb7f41c
+platform/frameworks/opt/telephony 0af2e5114bda883caca4b210d124b6b30025a74f
+platform/frameworks/opt/timezonepicker 45bae2b4294a8006307792d3620132e19bd6ffc5
+platform/frameworks/opt/tv/tvsystem 8d8adcd642bd670f32e4543c658b134091fa2f4f
+platform/frameworks/opt/vcard d829d823b8411717f2b6d45f7402643c24b427cd
+platform/frameworks/proto_logging 407b08be97dd506f6c89a0f516194ca6abc48a36
+platform/frameworks/rs a6316f88de224b13b71fffda564191c58bb17745
+platform/frameworks/wilhelm 150b192464766569ff7879e77e8310a10c3283d8
+platform/hardware/broadcom/libbt 9453d7b37d885590cc57aefa75f7a6cddae14e89
+platform/hardware/broadcom/wlan 79c17918a3d09096160742dd6cb714890c7bb0cf
+platform/hardware/google/apf 56f440b3840e4e0e9efeadef70a596243e59330e
+platform/hardware/google/av d139c917f66aea6239e86bec64c2d14b28db141c
+platform/hardware/google/camera 5191872f264c7fe3d990a5c827f4e063144f5749
+platform/hardware/google/easel 05a433c97ceb69634c1d366eb3be911a22ad82ec
+platform/hardware/google/gchips 39229b4e46330f69e6fa92c5672b992649c684a8
+platform/hardware/google/graphics/common 03b4a0de750b11730ae33e8468b80c1ca6b9a400
+platform/hardware/google/graphics/gs101 cad43273037b4c875df285dd41c220de8af2830a
+platform/hardware/google/interfaces 067a4b132245736aa34ed5f9b857fb5f7b683eca
+platform/hardware/google/pixel 21bfdbfa40d7136aff107f685865c33ec63272ad
+platform/hardware/google/pixel-sepolicy dc75778cc0bcaa4dcec06317db69f784af5d4442
+platform/hardware/interfaces 6f5d86d29caee2e65db2ba0b0a92179144db0a39
+platform/hardware/invensense cb8fd570420eca156654f56edcaa3589108cc629
+platform/hardware/knowles/athletico/sound_trigger_hal 560ad332d79e3899f944347d7a98d16bee4dc8e2
+platform/hardware/libhardware 9e933f7b8e320c2f0b758d18dd78b3ee5b6d3aa3
+platform/hardware/libhardware_legacy 156509956772027993eea1831e30a5dcbd74e38a
+platform/hardware/nxp/nfc 66fe0f18b82602d2d9a8fa92bf8359c426c60cb6
+platform/hardware/nxp/secure_element 5b7fa4e6b1c6c48d063a045ae99a38f3b498eb03
+platform/hardware/qcom/audio bd39ad2171d966e30c5eea17b528d2e7046f4948
 platform/hardware/qcom/bootctrl 4931910bfe9185d870b4d5c33d3b7c6b283bc575
-platform/hardware/qcom/bt 6a4e21f4ad71f41f5d450c70dfaa4bde1a9414ad
-platform/hardware/qcom/camera 1f7a42478c5f4810ffeb09434b71761650f69d4b
-platform/hardware/qcom/data/ipacfg-mgr 5ab0b51bc82cd15baf8a38260bc8d755b606ad93
-platform/hardware/qcom/display 75cdd78b684f1957d6d66944ebc11c2894518fdd
+platform/hardware/qcom/bt 73ca8493324b914a36fa530d2192dfd5fd361bdc
+platform/hardware/qcom/camera bed5b62f2b8f75581a6812a01ed279abf9007ffa
+platform/hardware/qcom/data/ipacfg-mgr 8a9f1e20b52528054c68178f5254603f83591ecc
+platform/hardware/qcom/display 8a5bff6bbe1aed8a5a2c27c6b3f7aed3a0865c4e
 platform/hardware/qcom/gps d2dc279faf65f9a80d7f6658ba2d21ff2f25b613
 platform/hardware/qcom/keymaster 73d9645b9d439a79a9b066cf8ce0c3e53d164eb1
-platform/hardware/qcom/media ee589e43bc397550c82fffa7c1d17841b53d27c5
+platform/hardware/qcom/media bbac916da660a1b38f4175e0e84f88df46329c80
 platform/hardware/qcom/msm8960 82ffc8e7b05466745807d67193156460fa250ad9
 platform/hardware/qcom/msm8994 cb309d55f41d491b27c8b5a417361e1776c2d894
 platform/hardware/qcom/msm8996 38178edd85367189b6756b2b84a0c40b17dacf57
@@ -783,319 +797,325 @@
 platform/hardware/qcom/msm8x27 619c1a5f4950cd1c926835726671b6fdfe5a3643
 platform/hardware/qcom/msm8x84 11807702c114ba029cb5a2c2b7826604dce62996
 platform/hardware/qcom/power 44a8ed5d0baa74ca5fd08a336059ecbb6428bb0d
-platform/hardware/qcom/sdm845/bt 73f07a1359ab82e7486a8507f6fd2f0659ca7bb2
-platform/hardware/qcom/sdm845/data/ipacfg-mgr 10ba308f00b5cd6ab88524eaf33333a71eba85fc
-platform/hardware/qcom/sdm845/display 66589a7396102569cc57b922c0e4bd0fd7100317
-platform/hardware/qcom/sdm845/gps cd69b7f3d6e64914815e6738a5cc789edcfc6dba
-platform/hardware/qcom/sdm845/media c3e6375c0ecce27f61f3c5af7e036edb480c5218
-platform/hardware/qcom/sdm845/thermal 0151a432a4eb34fc97faf9659c00292c4dfaa079
+platform/hardware/qcom/sdm845/bt 7a67c533e49887b432abba6e30d1d08f4570b463
+platform/hardware/qcom/sdm845/data/ipacfg-mgr 62149d40a041dd02db58cc39496a79d1a6ed5b08
+platform/hardware/qcom/sdm845/display d1e70dff95886c0d71fb7963c3ceb2001f68954b
+platform/hardware/qcom/sdm845/gps 246f7a403b0c0e6be16fad2764e33ce28efbc3c5
+platform/hardware/qcom/sdm845/media 7df75632adaa0df490ca7b3de0df15995f15ca97
+platform/hardware/qcom/sdm845/thermal ee8dc7b78dfbd13bcb4cd8d755acaefe1f10442e
 platform/hardware/qcom/sdm845/vr cbf1cf93698aba49e16ef70554dc9978cf6b3244
-platform/hardware/qcom/sm7150/gps 90775acc27f9dc4f5539a9ee90c87bcd17e3ae88
-platform/hardware/qcom/sm7250/display 49a72a19d42268abc2e3159f89fde0f22ad8836b
-platform/hardware/qcom/sm7250/gps 04e04476a26d8b1c33895170a4d6f2dd0b6d690c
-platform/hardware/qcom/sm7250/media b813a8992342579fd09f94dadf411c567528b25f
-platform/hardware/qcom/sm8150/data/ipacfg-mgr 848447c0409a49bac81a7fab6e36c71a179ec716
-platform/hardware/qcom/sm8150/display e8358e297e7b90cbe0cf8426c49f10b92b94bf25
-platform/hardware/qcom/sm8150/gps f852afd63cb481e0a541fb6266cd74c2bda2ac3b
-platform/hardware/qcom/sm8150/media 6c3631fbf22656e2ccc5f3d2fd4240e51b5d8266
-platform/hardware/qcom/sm8150/thermal 864c500a7b5ae8f1727515c47d7bbc0e24e144f2
-platform/hardware/qcom/sm8150/vr 3d8a397f23ba394b7fdb49c2b5f66ee4a08cbcb8
-platform/hardware/qcom/sm8150p/gps 8ef291d529d12320730c8d96162d4df295bd3d22
-platform/hardware/qcom/wlan efc762d65d7bf56e3d7812c558f0bb7f59331442
-platform/hardware/ril f97c00e83f95aa7023bd8409f9aa058fb5832446
+platform/hardware/qcom/sm7150/gps 8e4b402d70040bdfd9d83563b9a2bd45d77dc1f8
+platform/hardware/qcom/sm7250/display 7efab3504fe16fb037357e9adb6c1e9a3288c910
+platform/hardware/qcom/sm7250/gps 2f4b211b2ab8244555db9bcd411287cc6a0b86c1
+platform/hardware/qcom/sm7250/media af83db8594ef30724ea28cd70395e7169f43222a
+platform/hardware/qcom/sm8150/data/ipacfg-mgr 5fa1acc680206bb723c801c4fc773aa9468f6841
+platform/hardware/qcom/sm8150/display f9d8178496a7b6bcb3d1ee8d0a87ce4fe2b7c03c
+platform/hardware/qcom/sm8150/gps 4dfc1cce6a7a5e6d872d776a31a06442f87f9545
+platform/hardware/qcom/sm8150/media 989032415784675c9f182c4f0ead646b7a8bab59
+platform/hardware/qcom/sm8150/thermal b28dc7faf5eace4c78648ed6f276c6e2ae40f641
+platform/hardware/qcom/sm8150/vr 0094d246178d53bcf98ee41b52aea421aec0f220
+platform/hardware/qcom/sm8150p/gps 7c80b52627791ab2d7870ac9e03fb7bda23852f4
+platform/hardware/qcom/wlan bcb507d6b94500888320b6cfc8f3e146e715fa4f
+platform/hardware/ril 5a3b580b687b090e0b4c4431851115e7defe31da
 platform/hardware/samsung/nfc 6b0c5eaf40c604e60d213b2bf7b6eee6ade53d42
-platform/hardware/st/nfc 156557b1f114ebd8b91eba65f7a6abd65952e24a
-platform/hardware/st/secure_element 89775d0fb6980504e8132317a0f7eae250fd9e24
-platform/hardware/st/secure_element2 109717e7397b91a3ca679cc638495da7d811070a
+platform/hardware/st/nfc 981f30547ee535122f7843548daa8cb76ed1fec1
+platform/hardware/st/secure_element 84bff1b4afbfa61d4ae2e6bfe5efc0acd525273d
+platform/hardware/st/secure_element2 9bbca48435320542b097cc6875a3aa8482a40fc8
 platform/hardware/ti/am57x 2a66e7434897f14b593ccd1a32c435cf4c6d694a
-platform/libcore 2f4a1419011a6bff8cab66af4a9ac9612ce300c3
-platform/libnativehelper b66c7a44eee0c135b02abd03b42655b0ef518241
-platform/manifest 212a40a6ac230c52ff22278ea09fa53e246691c6
-platform/packages/apps/BasicSmsReceiver 81046e4db65a0d5d47b7cb595fdbe5b87d547446
+platform/libcore 445283200d9104fd790dc0b6e03afbdccd5f77fe
+platform/libnativehelper a0e0a0234efa3b9fa9807cd53636b04a870c225f
+platform/manifest ab13992ecf4246abd797909a92b7412746d0efdb
+platform/packages/apps/BasicSmsReceiver 62c89d5e4edce7f4fa13c4692ebb581206157eb1
 platform/packages/apps/Browser2 cae85358c229567afd70bffd7d8b43fab36c5d40
-platform/packages/apps/Calendar 5f91835dc3ce86d9be26fe6fe5c9bcc7d57c9653
-platform/packages/apps/Camera2 aaf73164d178707077c997a328fd37d59f834c5d
-platform/packages/apps/Car/Calendar a6e99bea462f9d86393c0568d5a570401f8dd52f
-platform/packages/apps/Car/Cluster a5dd3c258b68c0eea3d6c7104e11e695af38c738
-platform/packages/apps/Car/DebuggingRestrictionController dc7fb2329873eda111b6af4a9e1fe6c0b4492e5c
-platform/packages/apps/Car/Dialer 2116e48dd5e2cdf480243cf258bc63a10b2603c9
-platform/packages/apps/Car/Hvac b5531c127a9f80cdefc63eddebe1d888177f48a4
+platform/packages/apps/Calendar 6b18a8e6ec1b7bd2909d4e458512d7d869143c96
+platform/packages/apps/Camera2 db6ecedad53ef5c8e336f1773a35e8edc125644f
+platform/packages/apps/Car/Calendar 7b7b710c8da82544f3d50cf2c2d41a972f23bb43
+platform/packages/apps/Car/Cluster 383786572bf4b49ecc2426900a81e22fafadf453
+platform/packages/apps/Car/DebuggingRestrictionController 5d41b274ad745d4d63e79bb19155ece9a7116512
+platform/packages/apps/Car/Dialer a24936450d528d95f4542405d91caae946b8f7f5
+platform/packages/apps/Car/Hvac 29c818f8428ce01f83d0d36c3c8d7c70f5ef324c
 platform/packages/apps/Car/LatinIME 00a40896c92db205af360ce063dd66bf34d1b329
-platform/packages/apps/Car/Launcher 1157beb9fd6aaacdd71f216b7b70aa408791068f
-platform/packages/apps/Car/LinkViewer 615d3f0610daff1a23a80b8d9c8e2b138ef139f6
-platform/packages/apps/Car/LocalMediaPlayer a9ede0810c6c326ff55ad2a8e19bf93e27699551
-platform/packages/apps/Car/Media feb8d2604a0a88fca96369cb833c6a9f3a0319af
-platform/packages/apps/Car/Messenger 7cf3a16d0675915e691029ba1932935396ed8057
-platform/packages/apps/Car/Notification ac0d95b05449d1b856e8f80d9cb9f05c0d25b2c8
-platform/packages/apps/Car/Provision 9e11703421e81e63c1b42c225567eab16d26f75f
-platform/packages/apps/Car/Radio d3eeb5ef9161f02b2aa56d4d37d13e7e872b64bc
-platform/packages/apps/Car/RotaryController 1f6700f897f8e1e41db5c49f84a91e3b9861a005
-platform/packages/apps/Car/Settings 988e7239f6c3d83e31238984c16211d0df4cc55e
-platform/packages/apps/Car/SettingsIntelligence 7ea28c94f5c79df86cffd03248d95cf9965f8440
-platform/packages/apps/Car/SystemUI 86e54e983a553c6bff9bc7d549695501c6d0a1d1
-platform/packages/apps/Car/SystemUpdater f779fb9bf31cb5200d0ef05369fc902a4a6cc5fd
-platform/packages/apps/Car/libs 2d7408a46556e26e4acea76f3a5420162c190733
-platform/packages/apps/Car/tests 4866fd2e61960e181546a514c4e3df98766ce89b
-platform/packages/apps/CarrierConfig b0b2f4f10fa4ca97eb99040354a26c91a730a53f
-platform/packages/apps/CellBroadcastReceiver ab533fcceb58eea25639009a6bbe852ed624f305
-platform/packages/apps/CertInstaller 6b4bf35a213d1ea1ade4322c4b5b8570fee58e7f
-platform/packages/apps/Contacts b1723e4be30662178b9194aef7df63df2a0343ea
-platform/packages/apps/DeskClock d540925d6e193f9450945a7bbfd2b1829ca808fe
+platform/packages/apps/Car/Launcher ee5d6bd588f37ea428dc43001d0026696d6585ef
+platform/packages/apps/Car/LinkViewer b7fdf13fc067c822eaf246a1a5049d3567d77e8a
+platform/packages/apps/Car/LocalMediaPlayer 20739b50b415946b4a395540fffb85e0faa18b63
+platform/packages/apps/Car/Media ec9bb1b16aaccc5f8d10ea5543658ced79cb2746
+platform/packages/apps/Car/Messenger 299675ea8501e14b4bfa7a9b4fb0715c92409c68
+platform/packages/apps/Car/Notification 2e36b62603938b797cd9ee84c2e631b9c547ea9c
+platform/packages/apps/Car/Provision 4a1c9acbf4d867654d9d5ffee58bb0ae85b4ab7d
+platform/packages/apps/Car/Radio 52acde66d13f853ee1ce1899cb7974dae713fb7a
+platform/packages/apps/Car/RotaryController c348fde477cc17fe9921b4ee0b5aff56407a861b
+platform/packages/apps/Car/Settings 0045be285278eb3d09bbb8266f9141b8241904de
+platform/packages/apps/Car/SettingsIntelligence 1709ca7042220bcd88ce2a8a3c7d52946df27cb9
+platform/packages/apps/Car/SystemUI 182511ba6d2603ec30cfec6e58b7569f095aa47f
+platform/packages/apps/Car/SystemUpdater 59e4be6161e68e85173417157ea5a1b4cf8635af
+platform/packages/apps/Car/libs 6a307a02402dc37ba12e90e368f143458e7a3f9a
+platform/packages/apps/Car/tests c607a5bd3811fc95515c66366302a7443965ad93
+platform/packages/apps/CarrierConfig 6f6ca9ff1e107e6a361402b3de923218a1f77426
+platform/packages/apps/CellBroadcastReceiver 41423c00e0c4a4d1ccfcbddeddbf274e6b8b01f3
+platform/packages/apps/CertInstaller ec37a4795e60f5311ce4b9c3320ac216d422710e
+platform/packages/apps/Contacts 1f4c27cbfabf885ba6d2c6dc700246219f8f80f6
+platform/packages/apps/DeskClock 6be72a122a28c1fe5fe5d37ddb0c14629db8d05f
 platform/packages/apps/DevCamera 0d015c8e8d1066d0ad9101424a1b7ff290b7333a
-platform/packages/apps/Dialer 366c3ae96828e9b48241f5ed5588ad61206e9aff
-platform/packages/apps/DocumentsUI 09fed75a94be0d01b26d5dc11f1213f9723c3a9e
-platform/packages/apps/EmergencyInfo 0be21f31b3d55f2f5738ce86836ac1c555741bac
+platform/packages/apps/Dialer 0bcf8d386988964734e752dc80446453beef1b64
+platform/packages/apps/DocumentsUI 2a1a4a6fc4e581e94ff12206bc921f4654f805a7
+platform/packages/apps/EmergencyInfo eb55bac321bba66ea0ec1a42ec62b560f9b99434
 platform/packages/apps/Gallery 4588c622aebd50ce480acdfc9e32e152c3873b3f
-platform/packages/apps/Gallery2 ed705847add2f9e29597ef0dd8876e88b13ea1b7
-platform/packages/apps/HTMLViewer b8717c16c08686a7d2b7824693ee553d05b5d968
-platform/packages/apps/ImsServiceEntitlement 6ff680c342df0ea58ce4d3e2000d8d692b3508e9
-platform/packages/apps/KeyChain c13e6d5405bcc5d2476375717e939881aace261a
-platform/packages/apps/Launcher3 96b6c36bf7223213d1c78261439d56a97818fa8b
-platform/packages/apps/LegacyCamera db6237763c1e0a7b11b6237beeeafd5a430456df
-platform/packages/apps/ManagedProvisioning d6190ae1cc494741dc9fccae73d47a5fb79c0a4e
-platform/packages/apps/Messaging 822e0201a4a4399590694749685ef6ab026a1aa3
-platform/packages/apps/Music e79c46e333e54360797aa34f160a54b1d09d0c80
-platform/packages/apps/MusicFX 380cffa110ac123818559732a12e138e0aabe683
-platform/packages/apps/Nfc edac933e8c27ca80c9935af8850f651eb1c862d1
+platform/packages/apps/Gallery2 791597cf22483d7adaf7765ca196ece54280f781
+platform/packages/apps/HTMLViewer 7974e7dda7c435d9211a5a9520622b64806cbc1c
+platform/packages/apps/ImsServiceEntitlement bba8d55ccc4a6700a01bb821c5d091ee9ebee52a
+platform/packages/apps/KeyChain fcc8ab08a6253b2d7f6d8960387ad32a24cde06c
+platform/packages/apps/Launcher3 6522c86f915d11cad8b242b78114e209dc10273b
+platform/packages/apps/LegacyCamera 2076cb0fcf47adb70c7cac0bcf8659f7f261acdf
+platform/packages/apps/ManagedProvisioning b6901e4594a8745fba64331efecae00a7da7d0cb
+platform/packages/apps/Messaging ace3e142caf13ebd8e2d4e2d295bf6a93b5c58a4
+platform/packages/apps/Music a1541ef1719041badaadfffa005b7752fc202020
+platform/packages/apps/MusicFX 6c5d5df42826b887d20828e2f680503080afab82
+platform/packages/apps/Nfc c34808e3a9c6dfa22b07055ab547059ad671bcf5
 platform/packages/apps/OnDeviceAppPrediction cd82c2ee8f2d27570faa4451f244d7cd5b4eeb13
 platform/packages/apps/OneTimeInitializer ca4d679b70a3cc868e0647dcef65046d7ef98a67
-platform/packages/apps/PhoneCommon 3d0b12d37c2f2e23d98222f23839b0a45ac3f4f8
+platform/packages/apps/PhoneCommon d4c548a25fa8f14e589747ecd09927189d2ad7c0
 platform/packages/apps/Protips caab5bd975b5f382d621b99929a00754940f371d
-platform/packages/apps/Provision 04412d25fbc2c613134cf0ea4209182a1f389d45
-platform/packages/apps/QuickAccessWallet cfd6664e14be253b22bc8a26771b10529e5ed287
-platform/packages/apps/QuickSearchBox 0c3c802e8df247017d6312b60e9b0a5d61e1e0a4
-platform/packages/apps/RemoteProvisioner c76126115c19c1a96059f3378b642a0450b31533
-platform/packages/apps/SafetyRegulatoryInfo 371da287831f0b0164f97d00961968200306a522
-platform/packages/apps/SampleLocationAttribution d6e74e3e12002f17ad1bffee7aba6d3339187368
-platform/packages/apps/SecureElement 981c5581cae97be9d021ce29e2d93d25991d91c0
-platform/packages/apps/Settings 1f81e37d953dd475f469a585da74104146fa00aa
-platform/packages/apps/SettingsIntelligence d381fe831a583161f63cbef1bfd0cd3a1225dbf0
-platform/packages/apps/SpareParts e7895f076cc055db07a20d17806bd7b6f253965c
-platform/packages/apps/Stk 9d52f29d393ac20ffa640ac693fc315648df66e8
-platform/packages/apps/StorageManager 90a0a8928a889b7dd9570accdcf5c093255215d8
-platform/packages/apps/TV 875960f8cf86f3e8248cc765a325af6b0f1d8463
-platform/packages/apps/Tag c5cede21103139e3511f717f70f9997a711010f4
-platform/packages/apps/Test/connectivity 703d1caf02a0bf2ee3fe625918d9ab8f4da9c306
-platform/packages/apps/ThemePicker c3e76707ae2113c4486561ea871c24b9cc1ae0da
-platform/packages/apps/TimeZoneData 3fbab26c00490ef28a15391dbb5487872633fa72
-platform/packages/apps/TimeZoneUpdater ae4ab13c7e7d94cb7484be1b3f8235c9f7ac09b1
-platform/packages/apps/Traceur 9299b83348a74261fd8887d48998c5989df2a367
-platform/packages/apps/TvSettings fc0e2203662e1b6327aa059992ee1e9370bfb703
-platform/packages/apps/UniversalMediaPlayer b83183417c7a671976af2bb0311dbb46c54d0812
-platform/packages/apps/WallpaperPicker 90df0659961cd8d851d9ac539cbe08f5581f405f
-platform/packages/apps/WallpaperPicker2 b5f3fbdca5d37c831edbf63ae7df75693a39e617
-platform/packages/inputmethods/LatinIME baf1b83142b64c9aab5cc589ef9f7b4f5347b8e9
-platform/packages/inputmethods/LeanbackIME 6ec8f9e9a2e24848403714d825bed3dda3cd63d6
-platform/packages/modules/AppSearch 6c64349b9613a809e7b20b629f1d5f3a4af5ff66
-platform/packages/modules/ArtPrebuilt 86d4c33ff8d7533bf2f9e706a1eadb661411a259
-platform/packages/modules/Bluetooth 77a8cf3740c067e64cf274386eda01ec0afaeeaf
+platform/packages/apps/Provision c42db2790a7d00c95d699677078558fdea79d1e0
+platform/packages/apps/QuickAccessWallet 572cabcc6f63a063e0a5e2954cc1e7c01ed569d3
+platform/packages/apps/QuickSearchBox 04e5d24c54b23010ad065bf168ec677009195dd3
+platform/packages/apps/RemoteProvisioner e3451773d5d06f31563c92ea68737983dd56d807
+platform/packages/apps/SafetyRegulatoryInfo dfe63f2bddff4110b7e51c91723a7e51f884fb45
+platform/packages/apps/SampleLocationAttribution 73285a1c9e8cdaa0ceec975991891dc9a04501db
+platform/packages/apps/SecureElement 28d5f88df97a20cb793daaf5ff821e7c54f87cfc
+platform/packages/apps/Settings 38f605eeed2e37f3a5e8296e276747fe011d74e5
+platform/packages/apps/SettingsIntelligence 5400f13bd43410859e37eb3aa5b4647d5ba2e32e
+platform/packages/apps/SpareParts 826adbc8c17a003ef7ef2202b6a3c75aa48da9f3
+platform/packages/apps/Stk 4b55aa914dce61cfd3005d0e41cea21ee7484b16
+platform/packages/apps/StorageManager 7297544ea34b1de7e009a910ab1d4fe8f3f02851
+platform/packages/apps/TV cec216cadb2ffed79626aa7509101b8a1ccf8894
+platform/packages/apps/Tag c6f034c22253a8074b7e5e1e902e6b97cae5ca9d
+platform/packages/apps/Test/connectivity 5cc44ad679f7782ca9fba32c58e8e7f53a7004e7
+platform/packages/apps/ThemePicker 1d9596e96384ae984f9267cafa04ea7895add6bb
+platform/packages/apps/TimeZoneData ad6407a84b6752c35b1912bf9823081df3cbf5af
+platform/packages/apps/TimeZoneUpdater 732bf5ed5f18bd94bd29f54c4de4b59c31015e29
+platform/packages/apps/Traceur d93de6b3e21e5d6933e3551085796c7e57221600
+platform/packages/apps/TvSettings 24da8ac971bf5c6e9828e5a2a4657945564dfc70
+platform/packages/apps/UniversalMediaPlayer 679b85b5999c531978809ade2f9923a9b978f24b
+platform/packages/apps/WallpaperPicker 8e10e7c3dee87cb676f64978dfe57a1783092810
+platform/packages/apps/WallpaperPicker2 7cf9fdef9339b0cb2d243dec0ce951bb09481931
+platform/packages/inputmethods/LatinIME b41b1a64cb3d5c13cbb5fb0ecac1ed405e6004c4
+platform/packages/inputmethods/LeanbackIME e87549bd7f184ac266a328a16f17cb1342f617c5
+platform/packages/modules/AppSearch 0740ea7d24fd4e3f1a76fd8290e78af8dbfc8c05
+platform/packages/modules/ArtPrebuilt 0eb7ff8e75a5fd3bf6fc1efa7b70f7424e12c608
+platform/packages/modules/Bluetooth b680aa816debb12cdd0240fb8c54d43fd6484e8e
 platform/packages/modules/BootPrebuilt/5.10/arm64 67668ad234208fdc0fde0e471c58a744dec48217
 platform/packages/modules/BootPrebuilt/5.4/arm64 2b9dd595e3c362b6fda6c260b578b51754546f0c
-platform/packages/modules/CaptivePortalLogin d87ab6d042c857a75825ef5120113453b8accb81
-platform/packages/modules/CellBroadcastService 7fed0fe357f275154733fe23d967ca0ed182e371
-platform/packages/modules/Connectivity 84eb6ebfa9aa61390be480c74851005b77f8fe57
-platform/packages/modules/Cronet 77cc95e4fe2612a5df743bca69f993b46fe3ff6b
-platform/packages/modules/DnsResolver d43b283255db42ab96a5d61f3437f5aa4932541b
-platform/packages/modules/ExtServices 405a276ffae04256ddedd852ae6edeff6f486fb5
-platform/packages/modules/GeoTZ 56ac03df24ca31fdb7d5b62542e6bab304d89d20
-platform/packages/modules/Gki ab9bc5f513cd5399accb9b46d8b8f73bfb3205b5
-platform/packages/modules/IPsec 7277e6452542cafaa9b2e2efc68f53214a0faabb
-platform/packages/modules/ModuleMetadata f275d8545b013f5b6c9d978b89f2352afe10bfe9
-platform/packages/modules/NetworkPermissionConfig b9d9e910fda274d7ea8e40ce42110af9e663cfc0
-platform/packages/modules/NetworkStack 4f25017af72eea6f3b9cfae8b070f777119662e4
-platform/packages/modules/NeuralNetworks 318b4995367526a9fb9976cd02bccbf5abbcbc8d
-platform/packages/modules/Permission 99fd28d38e037af5d1bf2d7eec1a663493e40aa1
-platform/packages/modules/RuntimeI18n 52c7f16f8242ce6bb131ee0f8be886e876bbf734
-platform/packages/modules/SEPolicy 155c37260fe8bd1e723a8bb7d80f2872d8533de2
-platform/packages/modules/Scheduling 472daf67d139024b108681ac3290699aacd1fb6e
-platform/packages/modules/SdkExtensions 86e6e029b89e71a381bcf87287b1c1260daafc10
-platform/packages/modules/StatsD 0183a3d5643b5d042f7c4e314ad33792e93efe61
+platform/packages/modules/CaptivePortalLogin 5640ad519fa72702d8c6d7ce76a2df4d0f372e7c
+platform/packages/modules/CellBroadcastService 3722a7f9e057c456d41bfb1b1810d5f9f6d6f66e
+platform/packages/modules/Connectivity 3fffef679deb398fe57e68607d4255e8436ff666
+platform/packages/modules/Cronet 70760c0afbdec2ccc67664f17dbcbb635c1e8bf7
+platform/packages/modules/DnsResolver 511b9f559ce9c87a6b1ef7d99307a4e2dc735c66
+platform/packages/modules/ExtServices becbd2b31eea116e95b5c718c2f6b6785867d465
+platform/packages/modules/GeoTZ eb3f4c779d6a9d704cb2dfe3b8e579689ea3b007
+platform/packages/modules/Gki e80816d2f51c3d50abb90f110ba2ffd4a30d306a
+platform/packages/modules/IPsec ddb95c4b2333ac52d66e637e1840b854c9bc8a71
+platform/packages/modules/Media ba3a45dde58c5b70ea9289d83ae84387f95941f4
+platform/packages/modules/ModuleMetadata ebe4c0ef7579eba3c1d87c44e210a30062d8eec5
+platform/packages/modules/NetworkPermissionConfig 8eeb226ba46bb3493294168bd598813228299828
+platform/packages/modules/NetworkStack df6445729065e36305f344155ce61bcf9d0e8c3c
+platform/packages/modules/NeuralNetworks c231edc2ba28f244220eea92cacc8e08bcf9210a
+platform/packages/modules/Permission 6284d2c07d034bb6365172e5eedb6655144113fb
+platform/packages/modules/RuntimeI18n ed9a88dfbe70888ca09c9baa59841f5fa984c6e9
+platform/packages/modules/SEPolicy b8039bb627a452e02622049cc39732cfce9b7d4d
+platform/packages/modules/Scheduling 9fd7d21d14da28b2bddc901ccd450722080a1b84
+platform/packages/modules/SdkExtensions 49031f7132b49d01776cc4ad6574db1a64d3fc58
+platform/packages/modules/StatsD 007ddc380a4c06fc4ad97b0ef4ce5c324dc58a1e
 platform/packages/modules/TestModule 3523a2f0f9b12d4e60374af63aae14f75a2b4c10
-platform/packages/modules/Uwb d3ba297396657d9624813c15116cc3c3c4a74ffa
-platform/packages/modules/Virtualization 30f284d218955a877b9bf7a54c1fe7bfe628be07
-platform/packages/modules/Wifi ef9a073ee39d483f138ab9cb0c9c4101a3ba3a9c
-platform/packages/modules/adb 6f231fa337109a8b8ecccc5966b4144fa89f700c
-platform/packages/modules/common a1b9d880b42b134726547cce1ddca1237f2ac2d0
-platform/packages/modules/vndk c473f25ce86abdc0ac50b40330ffd506a71b69d1
-platform/packages/providers/BlockedNumberProvider abb67ae72c53badc0c37f725824527c35bc00d5e
+platform/packages/modules/Uwb 87bd94f38513fa126ade26cdff7f457ad1c81746
+platform/packages/modules/Virtualization bb233e8f8e51bf2e14c137e26465dade1af01199
+platform/packages/modules/Wifi c6627d41d2bea0320288cf2672c404e708c6b9e2
+platform/packages/modules/adb d69c40a2b69cac909d847c9961387ec51070bf91
+platform/packages/modules/common d77f10667ee050dce465e3d761ad4efac79a2c5f
+platform/packages/modules/vndk 9b2ad6c08e55a14e4d7744bfab7d9c0df849b94a
+platform/packages/providers/BlockedNumberProvider fb51646e820953cc64f700c5942e2c600559a370
 platform/packages/providers/BookmarkProvider eb964556d8a00ae4e551631d4351da2e7de149d1
-platform/packages/providers/CalendarProvider cf28c73a8e9b3200972c6fa593a234ade97cd8f1
-platform/packages/providers/CallLogProvider 4cd07162360b68dde21a59b5751868dedecea18f
-platform/packages/providers/ContactsProvider 87a288518775edcd958c526e69924bff20332544
-platform/packages/providers/DownloadProvider 87de98a7a8c4f184c2a76fa7f6d2d0eef54ed532
-platform/packages/providers/MediaProvider 22d0c93ef915df763a7cdf53d16b3938ee8d5d91
+platform/packages/providers/CalendarProvider cb13243c03919dea4d1d0b6f9edecbd0b191eac6
+platform/packages/providers/CallLogProvider 2c1f5ec7c7b44813c382ef42c1889e58e43dbd1d
+platform/packages/providers/ContactsProvider 47c9e93bb7ffea8e125be2dd2e8d86963605ebaa
+platform/packages/providers/DownloadProvider cc58bf24a9aacf90171fd3de697b379eec6e8cb5
+platform/packages/providers/MediaProvider 2fa4193d924af38b855ccb627156d8466f4eea0f
 platform/packages/providers/PartnerBookmarksProvider 38c9c59c48be719f7ad33239017384906d1a2fd4
-platform/packages/providers/TelephonyProvider f39427daa899c8fc0c25c959237640453fab38d3
-platform/packages/providers/TvProvider 005c21effed05b165905381de62ffa1ec6d1baee
-platform/packages/providers/UserDictionaryProvider d5cd59c68171338a303f86ae64b5ed51e33aa0d0
-platform/packages/screensavers/Basic 20e1350f2fa0d82bd47a1b0d2a8c9f5b5cfdfc12
-platform/packages/screensavers/PhotoTable c36f3c71c45d60a1da022ea5bb50d2544e2fa7fb
-platform/packages/services/AlternativeNetworkAccess 75f27a0e788fc18784d2590a9db5c2369bbf0c15
-platform/packages/services/BuiltInPrintService 71e7af3ce8eb5878e83788960b5391c2a5354582
-platform/packages/services/Car cfa97c2a7c21ca96b0f65de7b37e68f66edb9918
-platform/packages/services/Iwlan 7d17452b124de6e35f72352092e433fb78d918a7
-platform/packages/services/Mms ff76664bf8f48c462e3af46ac4b7d785bca02961
-platform/packages/services/Mtp 0db02d9b4c386cf4874c69f76a14bee0f4e71669
-platform/packages/services/Telecomm 35ccdda9638b0119b05c6eb615144df357cfa43f
-platform/packages/services/Telephony e26e4304020e0c0ecfcf720a578fdb42574edde1
+platform/packages/providers/TelephonyProvider 808181909855df053b033b41057736e366fe62f0
+platform/packages/providers/TvProvider 3b6829981dc7080c4d2531e81cd88fccfaf3713f
+platform/packages/providers/UserDictionaryProvider 4712d782e3a8304de92214bb21187a2d26f781b2
+platform/packages/screensavers/Basic 51152b145dcac50791cb2f294bf7d1942a57d9e7
+platform/packages/screensavers/PhotoTable 71e1c326a78f4feb13d59e7bf8c3a837d5fb911e
+platform/packages/services/AlternativeNetworkAccess 8734d5be22cbaa78ec4d69e5ed3ea910d95bcd68
+platform/packages/services/BuiltInPrintService 0a3709d5b68d8243ce18997a283c64a36ebf51f7
+platform/packages/services/Car 8d53a0a9fac1228c0740fbd474ff2243207951ba
+platform/packages/services/Iwlan 7146eae7cd079abf9ab345a9f1d142a61105111e
+platform/packages/services/Mms 9e4ea3cb1447eb99849d79363466d4598af4dffc
+platform/packages/services/Mtp 3641efb3ca93ee0172114f6a32c19a822d375ba4
+platform/packages/services/Telecomm f67f6d1c03470e481433e491143dc653fa447de2
+platform/packages/services/Telephony 17e41aa34159c9acd1dee0f3f3f46a1546e99341
 platform/packages/wallpapers/ImageWallpaper 0a1680f07b09889c7642a775b6bb69d1b27f9b09
-platform/packages/wallpapers/LivePicker e6a9958db349561d4567d5ce65c5bb8c2f785291
-platform/pdk 5a3e5b2a26d8c14ef87671d6c0d42b658687b475
-platform/platform_testing fe81affefabecf4f060d1f20745716a9419b561a
-platform/prebuilts/abi-dumps/ndk 601c4fa343d888a0f64feed77101ab5abfa87c8a
-platform/prebuilts/abi-dumps/platform 1df4484f087f8e1d4f159c7f0ad8e816edc2378b
-platform/prebuilts/abi-dumps/vndk 1b572c9cc48556ccbe6599739909c866d79a6667
-platform/prebuilts/android-emulator 9906f5a3305f4d807f694dc6954fcc8788c3942b
-platform/prebuilts/asuite ce73a03a7d39d1b63826873c2aeab449c6c854ff
-platform/prebuilts/bazel/darwin-x86_64 37ab3775d66e0c8fa57d1771f5715a897ee5a5ee
-platform/prebuilts/bazel/linux-x86_64 41209f8fc507b5b90b818f9379a5227c0a22ab8d
-platform/prebuilts/build-tools f01743b63eca5a60067136dc2acd653321d3b37b
-platform/prebuilts/bundletool cc1aa0e0846ed4ed596b5271e7015e179e0f1124
-platform/prebuilts/checkcolor c708750c4957f00e894ee57a15a66beef3c91830
-platform/prebuilts/checkstyle 93ea40aaede34d2c97bbe88d33825a6723b9dc3a
-platform/prebuilts/clang-tools fafd01abe2738dafbb3634db392e26570d6c9be5
-platform/prebuilts/clang/host/darwin-x86 d4d72726fbeef41c9b73c0c92666329407ee895e
-platform/prebuilts/clang/host/linux-x86 36888804f25aad48a185b552eb2127595c09a774
-platform/prebuilts/cmdline-tools 89d253e72d78353fb9d38095e7bdda6799211070
+platform/packages/wallpapers/LivePicker eae0aac836282534ca854e9735dc1b0c78802601
+platform/pdk 133736302f60e91b85fee5ac384b520a94711e2b
+platform/platform_testing 062ea2b9f83e9a3b11a69b726658421d6c270c4a
+platform/prebuilts/abi-dumps/ndk e81e116652dc71e46be40625853dee9913ce261c
+platform/prebuilts/abi-dumps/platform 380beccdc39ffa9f5d3e6664b44c3d8082efa3af
+platform/prebuilts/abi-dumps/vndk 7cc8f8792aaa40185a074c3443fa3187e97d9da7
+platform/prebuilts/android-emulator d7d6ba95406ee5b1e6663d244506e853978ed6ba
+platform/prebuilts/asuite 353945d6b1dc1863f24aaafab8323058144d7461
+platform/prebuilts/bazel/darwin-x86_64 8d1420a705116a177d06dc377c25f843f8662df1
+platform/prebuilts/bazel/linux-x86_64 fa78ba3791c5d5cbdeedc273580f142e15c86e1b
+platform/prebuilts/build-tools 36ae1543a89bb3cfe505952dcaf0dc323c1fe1f3
+platform/prebuilts/bundletool c4be1ba89455d38cec926af2a3ecc661ecfb4caf
+platform/prebuilts/checkcolor 82b98e957b572c10217253e05385bd527d7c2805
+platform/prebuilts/checkstyle abb3bdfa43c710ec41696c3b3744a3d82d3f9875
+platform/prebuilts/clang-tools 61d224aa46a92145d5f4e25b8fa827690e7392f4
+platform/prebuilts/clang/host/darwin-x86 52d3a4e4f5d74db9e8bd1b76bcad7a99c063f5ce
+platform/prebuilts/clang/host/linux-x86 9fc4a12b3333ad67a548ebe5c3c01966dfe58262
+platform/prebuilts/cmdline-tools f555bd077da04a1d0796ec91567c67140566295b
 platform/prebuilts/devtools e60e2ac20eeaa2eac82da9ed75579e12d91a527d
-platform/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.17-4.8 725d3166b8d06ee7446f51fb2e503153efb9c990
-platform/prebuilts/gcc/linux-x86/host/x86_64-w64-mingw32-4.8 10fa1848c358b2048f9331cead2a06fc1f5ece15
-platform/prebuilts/go/darwin-x86 edb51c1cd5359c8c9937ba4d247b2d92bf9145c9
-platform/prebuilts/go/linux-x86 52dc46cdc6527d33daadf97794b7b3e6d2e59900
-platform/prebuilts/gradle-plugin 50bcbf3b094b53acf82f8e784e9313cf25dd736b
-platform/prebuilts/jdk/jdk11 35b63036ed92499b9611ec33ef7b7bc1749a9374
+platform/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.17-4.8 ee9a425063c7afee0e3e046a0bb48b18592f0357
+platform/prebuilts/gcc/linux-x86/host/x86_64-w64-mingw32-4.8 346b3d97861567694fbf3de0e226fb12a723852f
+platform/prebuilts/go/darwin-x86 b7273d61c4fa6da7189853ca2ecfa7df7940114a
+platform/prebuilts/go/linux-x86 2e9f50614ba9adad6359ed0e8d3d1b9276c2892e
+platform/prebuilts/gradle-plugin 3f21c515cf0ceb2e7b6ec1ab3932654de4661dff
+platform/prebuilts/jdk/jdk11 feb4abfd829d38a4f321fe33c4c71dd743109f97
+platform/prebuilts/jdk/jdk17 eedacfa5ba88d275c1e93ad499f32cd2ce4b1b12
 platform/prebuilts/jdk/jdk8 ebff3bab14fad9aefec53f8c1efa436be119ee80
 platform/prebuilts/jdk/jdk9 3035eb193e0bbc9006ac99a89d529aa3bca6bcbe
-platform/prebuilts/ktlint cc791ef6e67ce3f5b3b469bd6aecb2cddd37b842
-platform/prebuilts/manifest-merger eaaab63749f72476397218ec61ee0c743ce6424a
+platform/prebuilts/ktlint a457d53fcd951305c2f794c8575b19902958519c
+platform/prebuilts/manifest-merger 16232fd1c3bf1b1429b9ec91bd7b2fb4b4d32581
 platform/prebuilts/maven_repo/android dd52ad05c8c4b1e6f8d5a4e2d20264b958eb6051
 platform/prebuilts/maven_repo/bumptech 87b31fbf74ea1bd6516eeca03307b1f5c41cd2c2
-platform/prebuilts/misc 7e23b05a35531bdbe6020de24aaa02e0aa8597c8
-platform/prebuilts/module_sdk/Connectivity fa411ecb542c7693ad519efc8e0eced78dbba8d1
-platform/prebuilts/module_sdk/IPsec 38e928e9384cbbbddff4da1fcb701f6934e8c84b
-platform/prebuilts/module_sdk/Media 57a829009d8fffb366d32702ceb14198a2e95f4c
-platform/prebuilts/module_sdk/MediaProvider b60f518f9f90b264c34cb305bb04b789db42e59a
-platform/prebuilts/module_sdk/Permission a0b9c63a8dd8cf7cd8678f32d7ece53a3e77ee75
-platform/prebuilts/module_sdk/Scheduling bc1962ae89e0e2f76e904de8d86b64fe5700ca17
-platform/prebuilts/module_sdk/SdkExtensions dba57f11fc0c2066bb5042afa97d3398ff8fa594
-platform/prebuilts/module_sdk/StatsD 810ba7f05c6cb8e9766331edea124ae238c941e8
-platform/prebuilts/module_sdk/Wifi 973c645ff993140b613c08a7765a71e127d3a674
-platform/prebuilts/module_sdk/art 26b7886b951e71a5d2756e12391c787198a1921b
-platform/prebuilts/module_sdk/conscrypt aeea1b6069de9fa43d226e60b2914fe7f825438c
-platform/prebuilts/ndk 375596c9cd096774e7732148965616ce83ccfd25
+platform/prebuilts/misc 74054778583d7ec90b8823de10415162cd61cdac
+platform/prebuilts/module_sdk/Bluetooth 0dea0ed75f6fcf9a6c81c1dbca66daf4a9de1051
+platform/prebuilts/module_sdk/Connectivity 1210632f30e717a0b8bfdcbdb79fb5efee5ac2e0
+platform/prebuilts/module_sdk/IPsec fec3e5819be6877f72f3f7d030e55a1b38d11a3d
+platform/prebuilts/module_sdk/Media 0e15ce9890383c71a556e8d30d9673fbc0398bbb
+platform/prebuilts/module_sdk/MediaProvider ad76e1a77c3935f28662e936a18ee4670bd71e8c
+platform/prebuilts/module_sdk/Permission b39c4dda897c0ddacedceb1c53293a09ec4a0aad
+platform/prebuilts/module_sdk/Scheduling dcca01bd233a8c02d4fab2bf754f341b0e9cdd20
+platform/prebuilts/module_sdk/SdkExtensions c93c0817de34800195e365eba483281ea754a3d7
+platform/prebuilts/module_sdk/StatsD 1c3c33ab7db8268afef0e484372659749dd29c9b
+platform/prebuilts/module_sdk/Wifi 9f95f3a6f31951717b6a64781abb20a4d6333b30
+platform/prebuilts/module_sdk/art 3d324f6e870698d933a89457bc7ae686d7021f54
+platform/prebuilts/module_sdk/conscrypt 963dd9b661333e55ec824fb100f70bfbf63f1285
+platform/prebuilts/ndk 9a69459075f8301c37a7bbd5913a3f44ad4292f0
 platform/prebuilts/qemu-kernel 8b2cd291c5beedb4ea92f3c2c9ae0641e68692c0
-platform/prebuilts/r8 5eab22b17e1ed2d94ce05ce11f3ef068fea95441
-platform/prebuilts/remoteexecution-client 6f35440cdb89a8c20be58f7ba83aa417ce4ed176
-platform/prebuilts/runtime 854e4a0af9161e0925b57a86125dec5b7e323e73
-platform/prebuilts/rust bbc24a622571ff73c9d87bb33d8dab1131029838
-platform/prebuilts/sdk f18a6c22ed720880bfcb0f7aa81c9775d0a1a1e9
-platform/prebuilts/tools 4191c3434a40794f59b4149f3ba3074f2f79027d
-platform/prebuilts/vndk/v28 f4e8d368fa5e7814d5b326ad19857cd2417a072c
-platform/prebuilts/vndk/v29 427b06a0c38a917550d2748c6600c8ddacf2ba67
-platform/prebuilts/vndk/v30 6345402f8360b773aa11e304b14145ad9ac0f7d5
-platform/prebuilts/vndk/v31 77ccb588c2fe2f8cdf737c3e6d95a15423b399b9
-platform/sdk 96775befdc4af388b999c6233cb0dd8afed25989
-platform/system/apex c8e3ebd53f3c68422592653d9701cab0e1c2a2e0
-platform/system/bpf bb99aaf8549d56cf3f652a92b5bdbdb1d6c2ac07
-platform/system/bpfprogs 2f327fcdbc7854e283b7148b8f2e2c7e78099c81
-platform/system/ca-certificates 58429bacd8bbfd6e37a20a4bfd87471bbeb01e5f
-platform/system/chre 4e0ef40967ba2cf09dc46d72e2d2795c92bea531
-platform/system/connectivity/wificond 61623aac8e8a5ee5ec63c95da39e387ad3255a25
-platform/system/core 737b0d052e8a6872ef98c9b4e606944b515f4de0
-platform/system/extras a7ecf56f78240841f8c377507591d6787ddd1240
-platform/system/gatekeeper 52d8125fd18c2b63264938e76fcfbcee10508ad3
-platform/system/gsid 96e0c521b2a4013c3306dc3cc4fbb1d1218f893c
-platform/system/hardware/interfaces f605d6533e44bea138bd1a17c8f427e8f55002f3
-platform/system/hwservicemanager f5fbce83237a2aaa74ad9301642ab38cc638da37
-platform/system/incremental_delivery 8bc84ccd6e5d0fc404e47477754a05428461e4de
-platform/system/iorap ce9256af17bd11aa6ee8be787bfdf4e022cf1f32
-platform/system/keymaster 27f1f16f455cc8fb749ab08553e48bedfeaa799f
-platform/system/libartpalette 64bdfea82590875ddddce36e8fa15788dba3f95b
-platform/system/libbase d745968b7b0ee9134d5b1b23b3a092e678ca0f75
-platform/system/libfmq ab050a61e6158e14cbe3ac23c3d4c5b20a16bf91
-platform/system/libhidl abe71a603f8b4ef416825ace5244a4c2c04c7379
-platform/system/libhwbinder fd3dc09a1d900c70b3f200c64fda1984a6210029
-platform/system/libprocinfo 195f329a77b53a209a9c1ff1670f6b50bf3c1550
-platform/system/librustutils 6e2f3a9f4b4a8ba19b821235bdf881053884cf71
-platform/system/libsysprop 1ccd89675717fa3b3c63d7bf88a71ea4e8dddcb4
-platform/system/libufdt faeb1364def636b38a5964031111c244bcd6694a
-platform/system/libvintf 7958df9d820ffb416fcbf803a35b4a802323a51f
-platform/system/libziparchive efd810d7ec0e76761b816610c4e225d014c8a841
-platform/system/linkerconfig d4f700599681a0778198bfb10019372207d61a4c
-platform/system/logging 476948a3f0b18c48c49a7a6179065d14dabc1df7
-platform/system/media 3b86a02f6f66484aaedfc427fd5272ebcbcb6496
-platform/system/memory/libdmabufheap b63242026f706a06d73a5589c7d91a41944fbef3
-platform/system/memory/libion 1133ab49b30bfde4d035d9d6af2d92d79ea06f1a
-platform/system/memory/libmeminfo 434bd7d2c8311810caf9245e200d7647c67cc89c
-platform/system/memory/libmemtrack c9b49bb3c66f5c1c16793f025c7e28ce8e924ba3
-platform/system/memory/libmemunreachable 94293aecd8c1270371e1674bdc672b926b512277
-platform/system/memory/lmkd c1bbff35f14cd78c56b316e55316baf9cc25fd1b
-platform/system/netd fb3b479fa1268ee9ece1fdd89ef774d43cd5ef07
-platform/system/nfc 421acb393d9368c34a1294835fd8645895552a6d
+platform/prebuilts/r8 9cd4f073df204f705c5b05dcf8134caac08d6b5a
+platform/prebuilts/remoteexecution-client 583e645ed7df54bfe2a45e5a3c802de5eca68738
+platform/prebuilts/runtime a6926c70e14eed28700d125984269d90b8a5b091
+platform/prebuilts/rust dd28710d756075a7d78f623c60dcd257070d196e
+platform/prebuilts/sdk d21c70eb06198c405d8cbd6ce564d440ee7820c0
+platform/prebuilts/tools 37afe443c4c6842bb9c31113ef411fa381d889bd
+platform/prebuilts/vndk/v28 83686d53a7b81d045cf33caabde31fb16bc1c25b
+platform/prebuilts/vndk/v29 0cc916ac4ca80a723f56964188594297d3a78567
+platform/prebuilts/vndk/v30 bc4237ab9c7023e58d96ecd08e02969ef07e1790
+platform/prebuilts/vndk/v31 0bc971ccc6086731f4338a07fc75f7d590f6022f
+platform/prebuilts/vndk/v32 c7d53be054dd32e9d31f1b048982019fb61dd8c2
+platform/sdk eab33f930fa0238275810e4289b1b9583350eac5
+platform/system/apex d3a137fc6b8d3307507da872c5c2d96fc467676d
+platform/system/bpf 8f27d45a5bb8c7475b8bb1280f63ca1814a8dca1
+platform/system/bpfprogs 5a9f4a2909ef7fa17274738a50195a36ce973d18
+platform/system/ca-certificates 381a07c28d873595dfa3f2663eec59ae1e3d9121
+platform/system/chre 0ce3ad11b5be62eab826af92dd47fd9c727bcb42
+platform/system/connectivity/wificond c4273599c3df35f2f019696184e85f7de88e8fdb
+platform/system/core 69dc5af53f6c12c12db6d7bb0a547004a89bf29b
+platform/system/dmesgd 7e9ec3985cdbb0cb577e7667340bcd1f075431ca
+platform/system/extras c391b00964ce4c6ec0a31cd4945bf513708a2242
+platform/system/gatekeeper 5a5cd9a2ef75bdbd9043a26568147d1752589375
+platform/system/gsid b5a623d28aa7fcca4a82e47ab71d975dce0158ad
+platform/system/hardware/interfaces e38b21a64b744075f7198560b7fe1751ddfdeef5
+platform/system/hwservicemanager cfdedf8c5210afa1b54f5aa2d020df0e4654f7f0
+platform/system/incremental_delivery adf408ea71bc8b0b68308b99af5cece1c16f0f2d
+platform/system/iorap 1f2a9a9b30706289f7e6677138a025ba2da45516
+platform/system/keymaster 7488aff610abf46219dfcfb95a58ff5757e3fb25
+platform/system/libartpalette 6c9aa442cb72dedfea5c127258e55e453dbb5930
+platform/system/libbase 5a3457b8a3b50b5a556eaba8c3a4053698a8b896
+platform/system/libfmq b69e39b59e469fa96be12cf690f7b2040cbefea3
+platform/system/libhidl 9698ac06bebc7472f5fe3a439bcec696002caa7d
+platform/system/libhwbinder 9d2556680973e2b3f5f67c29bb218758576d35b8
+platform/system/libprocinfo 167a3c05819c48f084a5aa98471e4df4d0ea9952
+platform/system/librustutils 1a92c5d736063a84683b19d23888f89ede50615d
+platform/system/libsysprop cc35ff947b1a464ba99ed42d3454c181f83a77ae
+platform/system/libufdt 3e3db889eea0a57be6ea5e5ba1db5b336451d4e0
+platform/system/libvintf c445f55619f47ab05cc66ab15e9763c926569731
+platform/system/libziparchive e024b26cac041b0977be42e69788672671bbcc9f
+platform/system/linkerconfig 7adaf39b4a7f71c011f88c705127fb4a58edc6e1
+platform/system/logging af237252df837ced67d774928693e59d401a3ea8
+platform/system/media 422f372cb5e3e37184d2d0a88f30b0d86b4175d2
+platform/system/memory/libdmabufheap 8347bde083c5b33dcd5d6b947e236deefd7ccbda
+platform/system/memory/libion e55d9471f8506bd586ef4651c66d551b3bc61b53
+platform/system/memory/libmeminfo ba78af1faa42967c7f99a8c307055356eae95a26
+platform/system/memory/libmemtrack b78f69c988f4e929e49c73c762fb0358c203977e
+platform/system/memory/libmemunreachable 779442619a775bd5a0fea72c35d367351fca3f09
+platform/system/memory/lmkd 1cfd977d90581471f8bc344f132e78f3e9c50bf8
+platform/system/netd 151ed763ecf809df2610882e8a4965c1ee4f046c
+platform/system/nfc 28f7be091d8a29198605ef59496ae4252a4064ec
 platform/system/nvram b811d8ac36912c0074e9d0b2bf14cf46353065d2
-platform/system/security f454ec6503d2db9de06a88e323a4a8870953161a
-platform/system/sepolicy 7a0338c7fc75c1dac72fa9d08593d319fd0c2be0
-platform/system/server_configurable_flags e5256b359061fe5c8e01d05bab63a53b3e2929e5
-platform/system/teeui 6e42ae08968abedbf88ed193f8dee3b1c1ec7810
-platform/system/testing/gtest_extras 0145a6596b9ec091566db8a59a2d0e54657d6a63
-platform/system/timezone 5660cce0d324d0caea0ed700d4cce69d52baa37d
-platform/system/tools/aidl 8d0756ef211ad50c74a630a8583c00212f0560df
-platform/system/tools/hidl 7b22fd3327892a9eb74e8420cf2a9b0b08488eb4
-platform/system/tools/mkbootimg 020ec9dd872a9024eb8543f73aa36489d3c75a06
+platform/system/security 8661fdb523d66931c51993defe82cd45c31bc377
+platform/system/sepolicy c4aa882ad1e7c3d138958b80d99d30cd82d252eb
+platform/system/server_configurable_flags fe35faf5ccd4b237cee2bbd6b5a51234acae5c12
+platform/system/teeui 9f3d9c042a338f7561f51c10bc75f039873f5f75
+platform/system/testing/gtest_extras e9d959b31ca8457308b44eb71add860716f94021
+platform/system/timezone 08b645a677cff0809c0fb5467697168979925521
+platform/system/tools/aidl 42a629a91858a355231b8bed8f7401415b85051d
+platform/system/tools/hidl 3f472563d70047585385f5414c3b124cc8b7476c
+platform/system/tools/mkbootimg 9f59bc4b46cb6287a47f8187391c417bf8c2502e
 platform/system/tools/sysprop 06dd5ac24e0f124debad12ef7e5e5ce29aec10c8
-platform/system/tools/xsdc 8e449a1ab0cad82bf03c59c595242ce2e2d83045
-platform/system/unwinding 0f1eb32fa796acaa06282b12ce289c914a6072a2
-platform/system/update_engine 1a79c30fdc380447d365dd11c8d8ec419fe74ddd
-platform/system/vold 46002d7aa511ed8402534a90cae447e3ca4259f9
-platform/test/app_compat/csuite 3185f73662bef7b3546d73921d41d60448d212ef
-platform/test/catbox 7eb6b73e5bf0f2bc22a4231e04097f16cc7f1591
-platform/test/cts-root 7838c0edaade39752b6863656e44a46b8e2dbd46
-platform/test/framework 443de35b596c9b31c40dd9a95ff32b31c08bde1d
-platform/test/mlts/benchmark 8cdf5e445e7b0f533720967ee96ebd8af04f02b0
-platform/test/mlts/models 0fd20b4ce5d9a4419720be06b92cf248da08986f
-platform/test/mts 616ebc4e988c00bf041c47088bed5d2f2a316218
-platform/test/suite_harness aa18dffcbe901d8b72eb13173f8f869a1f234a82
-platform/test/vts 713a8c3ecfdc21b9b67b1e09c70a81f76c4dd0b7
-platform/test/vts-testcase/fuzz 7042132351aa82f26e0b7a1ccfdcecb5368a8096
-platform/test/vts-testcase/hal b4b2384b7b28dcd21481bbb593f951776ad0dd5f
+platform/system/tools/xsdc 3adefb0ac7723ff335d85362fa23d73a7a519e73
+platform/system/unwinding d4125a5a27c8028f81e47642d44df56ec8b1f12f
+platform/system/update_engine f99c28f6bdc7d964b3b650780acbaab3fca75efc
+platform/system/vold ed4f45382bb918f39950e8d9270e57fb350ec267
+platform/test/app_compat/csuite 5de62ab4e75a0aa2f9d0959f62c56c61d5df443f
+platform/test/catbox d956fdbbaf4cf090e51f5de91c8d42992a28e428
+platform/test/cts-root 7d630563a946d74a89acaabe15258fce10ef2743
+platform/test/framework 39ea010b8a18dc367a5979b76320ba69c678cbeb
+platform/test/mlts/benchmark a907ad0de138cc9c93a2957bb2a70facdb5ddff6
+platform/test/mlts/models 44713a93a6eecf0a42fd86913c544316a7c3adc9
+platform/test/mts 94938e43dd3c304f00e70b2904cdfa9a38fd9965
+platform/test/suite_harness a979937277be9fa88da9eea675a32cc9daba6ded
+platform/test/vts e3836cdfe0fca6fdcf41c275a881d87fccd1cbdb
+platform/test/vts-testcase/fuzz 38875fc5fe148d930e20156a4fc0b947efc97dd3
+platform/test/vts-testcase/hal 30fb7025d1aeb8d06518cb165c2d32e564ac56d3
 platform/test/vts-testcase/hal-trace 3782d14cb8ca24996b199e175525eeea47758632
-platform/test/vts-testcase/kernel f950f7b2927d801abc8914e9f77ba4b5ef22d3da
+platform/test/vts-testcase/kernel 3742a676b1c88d4bb6748aac43683e722d255e00
 platform/test/vts-testcase/nbu 0c003639f5e8043452092c65b8e45acff3bf62c9
 platform/test/vts-testcase/performance 341a2258803b9a601921c5c5c10e93a146820566
-platform/test/vts-testcase/security 755eb99ddc935414fc9b4d0067a1e70095803275
-platform/test/vts-testcase/vndk b54d3659f6b67891bc9cd97a943d6f0d92cc5cbb
-platform/tools/aadevtools d91faf464c1d1934cd92ba1c211a1bfcabc61c29
-platform/tools/acloud caf1765c0f89a77b90871a6730b3b7839cb06dfb
+platform/test/vts-testcase/security 82d1464713dff404408ce54d82fba70cd82fb912
+platform/test/vts-testcase/vndk e09ce00b803dfc7ac929bc99a5cf12c7424710f0
+platform/tools/aadevtools 5f98d3a98ca0f25ed861313b18817e7e88fe59a8
+platform/tools/acloud ac8344d087d287ddd1bea9100dfc585aa1a3e390
 platform/tools/adt/idea 8f0899f2350846adf5bce6b29a10d4d769926382
-platform/tools/apifinder 1ca5544180e8d8fb0878fb62a18b7b07d43ac1ac
-platform/tools/apksig 70a030aa75ad4fb445db99b7b0f59e0aaad43f08
-platform/tools/apkzlib cace7da96f431e6dce25c41a777a44baf5e3ced0
-platform/tools/asuite 49433e7bab0528b10a06c5cc2d6c77ceaf0a3f56
-platform/tools/base 489dbf4611996907750ae4f7cb8d998774838d64
-platform/tools/build 5defc4cb9033645cd4f5d77af604ac83e1e7b860
-platform/tools/carrier_settings 054ead4d7888404202d33e4bb49cf9b754210d08
+platform/tools/apifinder 4835eafa718b7a4e5afa65074481365b02823be8
+platform/tools/apksig 09251e2e9549cf3cbd42288387e2b37713e14ee0
+platform/tools/apkzlib 4aea6ad8c9770c29a8e5c6d60d9055fa43be9056
+platform/tools/asuite ccdad49cee64bd74fb00e74f3fd8e7d1ede97ccc
+platform/tools/base e870aa1371831e4f569279e19709348465699b32
+platform/tools/build 78af21c2de4a9c3b03a75e30c1e0b927c4c7a088
+platform/tools/carrier_settings f25a3f9d48ea48c9e7fb08dae6420f8902b349be
 platform/tools/currysrc 2649cdecea09c16ce766a9a0af08372e3513bd3c
-platform/tools/dexter 0aa8ad813098031cb87007fc5056f6341c99ff2b
-platform/tools/doc_generation cb29b083abc2e64c3f960d2afd0c17f3dfbafe63
+platform/tools/dexter 61181ba021c64cc1cc047af1a842b693e80c63c8
+platform/tools/doc_generation e92e111b186d47a7dd718d8197d575e3aabf52de
 platform/tools/external/fat32lib fba8d52fa395df15b2dd4c8dd3f31531ab691137
-platform/tools/external_updater f3e0e6b5f2c76915173860380022e5669a3a62c0
+platform/tools/external_updater b52dc180be67da807e74848b3aa86223899e0dbe
 platform/tools/idea 9b5d02ac8c92b1e71523cc15cb3d168d57fbd898
-platform/tools/loganalysis c09a15fb7397088109634815a8494b5ed1a3a69e
-platform/tools/metalava 27fe22b1fdebc1c8fcd8ead54769923a662b16f6
+platform/tools/loganalysis 5c4bfa62fa48afa6f406104e2d10a6c7cce2fcce
+platform/tools/metalava 56dbaf512a27aa0501292599e9474bdb77d9f533
 platform/tools/motodev 69989786cefbde82527960a1e100ec9afba46a98
-platform/tools/ndkports d8d24297de37f2601503b97d4b0cacd16c4b4b0e
+platform/tools/ndkports 86d8bf85950e6d799f44783a8470a20d92c59935
 platform/tools/repohooks ea49920ffbc43f18ed44dcc781fa835ed31380bc
-platform/tools/security f7fe6faf469758f6c7e36bed2da25c1d36569203
+platform/tools/security b23e3334a5ec843c3509610535e4c276c9947412
 platform/tools/studio/cloud 58f06e77e051fff3903adabca7acdaa9dd12ec2d
-platform/tools/swt 34d007477f9e381dab021fa482eb1956d756599f
-platform/tools/test/connectivity 62d5666e07045f95d7317d18c170cea829a9be0b
-platform/tools/test/graphicsbenchmark 2c7a76e97ccd80c37d17d6c739949e03eaf1a9d6
+platform/tools/swt 4b22bd808f72e47684621c21696eba9ee8db63e0
+platform/tools/test/connectivity 8e938e66994fa03fbd9ee8c2043858ad809dc157
+platform/tools/test/graphicsbenchmark e0030869c250bdb499e4394127886c03353ec34a
+platform/tools/test/mobly_snippets 5016186d11c5d51b684c6e93f773dd08e6100215
 platform/tools/test/openhst fbd5078caec1d7e4f250cc6b70dc9526a3bcf827
-platform/tools/tradefederation 23f20cff015803548c6edcd6ac1bdd5039293788
-platform/tools/tradefederation/contrib cbecd753fc60cdab58a7f8d6d705dfc0e4ebff0f
-platform/tools/tradefederation/prebuilts 8d18db597aa156626f9ce765d78b2138e34fb249
-platform/tools/treble 20c381ba13e50dbec17c1b5996ee6a50f49d7f47
+platform/tools/tradefederation 09a71d22f07e7da986c422870d18447a78c3c615
+platform/tools/tradefederation/contrib 8330afdadfe8845c35ee888a3296eb5cbef40ab7
+platform/tools/tradefederation/prebuilts a1c22bb63dd7d3c2078d43b53a0b6ad0fe79887a
+platform/tools/treble 50aa640ddc2df389acb0181dbe909cfcf6835e4a
 platform/tools/trebuchet 2db9343fbb0dcb5786110c45cf2adea190401130
 toolchain/benchmark cddc27e778f2696a4dad6298db28c042a43181ed
-toolchain/pgo-profiles 42610ca96ab12b5fc26ce87cc92355128e40e1ee
-tools/platform-compat 7759a6ca413e7bebd3ffbd61d13150fde10ad437
+toolchain/pgo-profiles ce07f43758aa6b8a4fb9e11957f619c5df791136
+tools/platform-compat b48065d40c6cf9c8282b0d33214c69952c75936d
diff --git a/report_html.py b/report_html.py
index 9de2f98..56f8dae 100755
--- a/report_html.py
+++ b/report_html.py
@@ -31,7 +31,7 @@
 from simpleperf_report_lib import ReportLib, SymbolStruct
 from simpleperf_utils import (
     Addr2Nearestline, BaseArgumentParser, BinaryFinder, get_script_dir, log_exit, Objdump,
-    open_report_in_browser, ReadElf, SourceFileSearcher)
+    open_report_in_browser, ReadElf, ReportLibOptions, SourceFileSearcher)
 
 MAX_CALLSTACK_LENGTH = 750
 
@@ -605,13 +605,10 @@
     def __init__(
             self, binary_cache_path: Optional[str],
             ndk_path: Optional[str],
-            build_addr_hit_map: bool, proguard_mapping_files: Optional[List[str]],
-            trace_offcpu: Optional[str]):
+            build_addr_hit_map: bool):
         self.binary_cache_path = binary_cache_path
         self.ndk_path = ndk_path
         self.build_addr_hit_map = build_addr_hit_map
-        self.proguard_mapping_files = proguard_mapping_files
-        self.trace_offcpu = trace_offcpu
         self.meta_info: Optional[Dict[str, str]] = None
         self.cmdline: Optional[str] = None
         self.arch: Optional[str] = None
@@ -623,23 +620,15 @@
         self.gen_addr_hit_map_in_record_info = False
         self.binary_finder = BinaryFinder(binary_cache_path, ReadElf(ndk_path))
 
-    def load_record_file(
-            self, record_file: str, show_art_frames: bool, sample_filter: Optional[str]):
+    def load_record_file(self, record_file: str, report_lib_options: ReportLibOptions):
         lib = ReportLib()
         lib.SetRecordFile(record_file)
         # If not showing ip for unknown symbols, the percent of the unknown symbol may be
         # accumulated to very big, and ranks first in the sample table.
         lib.ShowIpForUnknownSymbol()
-        if show_art_frames:
-            lib.ShowArtFrames()
         if self.binary_cache_path:
             lib.SetSymfs(self.binary_cache_path)
-        for file_path in self.proguard_mapping_files or []:
-            lib.AddProguardMappingFile(file_path)
-        if self.trace_offcpu:
-            lib.SetTraceOffCpuMode(self.trace_offcpu)
-        if sample_filter:
-            lib.SetSampleFilter(sample_filter)
+        lib.SetReportOptions(report_lib_options)
         self.meta_info = lib.MetaInfo()
         self.cmdline = lib.GetRecordCmd()
         self.arch = lib.GetArch()
@@ -987,16 +976,10 @@
         help='Use multithreading to speed up disassembly and source code annotation.')
     parser.add_argument('--ndk_path', nargs=1, help='Find tools in the ndk path.')
     parser.add_argument('--no_browser', action='store_true', help="Don't open report in browser.")
-    parser.add_argument('--show_art_frames', action='store_true',
-                        help='Show frames of internal methods in the ART Java interpreter.')
     parser.add_argument('--aggregate-by-thread-name', action='store_true', help="""aggregate
                         samples by thread name instead of thread id. This is useful for
                         showing multiple perf.data generated for the same app.""")
-    parser.add_argument(
-        '--proguard-mapping-file', nargs='+',
-        help='Add proguard mapping file to de-obfuscate symbols')
-    parser.add_trace_offcpu_option()
-    parser.add_sample_filter_options()
+    parser.add_report_lib_options()
     return parser.parse_args()
 
 
@@ -1022,10 +1005,9 @@
         log_exit('Invalid --jobs option.')
 
     # 2. Produce record data.
-    record_data = RecordData(binary_cache_path, ndk_path, build_addr_hit_map,
-                             args.proguard_mapping_file, args.trace_offcpu)
+    record_data = RecordData(binary_cache_path, ndk_path, build_addr_hit_map)
     for record_file in args.record_file:
-        record_data.load_record_file(record_file, args.show_art_frames, args.sample_filter)
+        record_data.load_record_file(record_file, args.report_lib_options)
     if args.aggregate_by_thread_name:
         record_data.aggregate_by_thread_name()
     record_data.limit_percents(args.min_func_percent, args.min_callchain_percent)
diff --git a/report_sample.py b/report_sample.py
index 7388442..dc5c4e2 100755
--- a/report_sample.py
+++ b/report_sample.py
@@ -19,7 +19,7 @@
 """
 
 from simpleperf_report_lib import ReportLib
-from simpleperf_utils import BaseArgumentParser, flatten_arg_list
+from simpleperf_utils import BaseArgumentParser, flatten_arg_list, ReportLibOptions
 from typing import List, Set, Optional
 
 
@@ -28,27 +28,19 @@
         symfs_dir: str,
         kallsyms_file: str,
         show_tracing_data: bool,
-        proguard_mapping_file: List[str],
         header: bool,
-        comm_filter: Set[str],
-        trace_offcpu: Optional[str],
-        sample_filter: Optional[str]):
+        report_lib_options: ReportLibOptions):
     """ read record_file, and print each sample"""
     lib = ReportLib()
 
     lib.ShowIpForUnknownSymbol()
-    for file_path in proguard_mapping_file:
-        lib.AddProguardMappingFile(file_path)
     if symfs_dir is not None:
         lib.SetSymfs(symfs_dir)
     if record_file is not None:
         lib.SetRecordFile(record_file)
     if kallsyms_file is not None:
         lib.SetKallsymsFile(kallsyms_file)
-    if trace_offcpu:
-        lib.SetTraceOffCpuMode(trace_offcpu)
-    if sample_filter:
-        lib.SetSampleFilter(sample_filter)
+    lib.SetReportOptions(report_lib_options)
 
     if header:
         print("# ========")
@@ -64,9 +56,6 @@
         if sample is None:
             lib.Close()
             break
-        if comm_filter:
-            if sample.thread_comm not in comm_filter:
-                continue
         event = lib.GetEventOfCurrentSample()
         symbol = lib.GetSymbolOfCurrentSample()
         callchain = lib.GetCallChainOfCurrentSample()
@@ -97,27 +86,17 @@
     parser.add_argument('-i', '--record_file', nargs='?', default='perf.data',
                         help='Default is perf.data.')
     parser.add_argument('--show_tracing_data', action='store_true', help='print tracing data.')
-    parser.add_argument(
-        '--proguard-mapping-file', nargs='+',
-        help='Add proguard mapping file to de-obfuscate symbols',
-        default=[])
     parser.add_argument('--header', action='store_true',
                         help='Show metadata header, like perf script --header')
-    parser.add_argument('--comm', nargs='+', action='append', help="""
-        Use samples only in threads with selected names.""")
-    parser.add_trace_offcpu_option()
-    parser.add_sample_filter_options()
+    parser.add_report_lib_options()
     args = parser.parse_args()
     report_sample(
         record_file=args.record_file,
         symfs_dir=args.symfs,
         kallsyms_file=args.kallsyms,
         show_tracing_data=args.show_tracing_data,
-        proguard_mapping_file=args.proguard_mapping_file,
         header=args.header,
-        comm_filter=set(flatten_arg_list(args.comm)),
-        trace_offcpu=args.trace_offcpu,
-        sample_filter=args.sample_filter)
+        report_lib_options=args.report_lib_options)
 
 
 if __name__ == '__main__':
diff --git a/run_simpleperf_without_usb_connection.py b/run_simpleperf_without_usb_connection.py
index 8beddcd..405deb4 100755
--- a/run_simpleperf_without_usb_connection.py
+++ b/run_simpleperf_without_usb_connection.py
@@ -45,6 +45,8 @@
     shell_cmd = 'cd /data/local/tmp && nohup ./simpleperf record ' + args.record_options
     if args.app:
         shell_cmd += ' --app ' + args.app
+    if args.pid:
+        shell_cmd += ' -p ' + args.pid
     if args.size_limit:
         shell_cmd += ' --size-limit ' + args.size_limit
     shell_cmd += ' >/data/local/tmp/simpleperf_output 2>&1'
@@ -85,6 +87,8 @@
                                       Default is `-e task-clock:u -g`.""")
     start_parser.add_argument('-p', '--app', help="""Profile an Android app, given the package
                               name. Like `-p com.example.android.myapp`.""")
+    start_parser.add_argument('--pid', help="""Profile an Android app, given the process id.
+                              Like `--pid 918`.""")
     start_parser.add_argument('--size_limit', type=str,
                               help="""Stop profiling when recording data reaches
                                       [size_limit][K|M|G] bytes. Like `--size_limit 1M`.""")
diff --git a/simpleperf_report_lib.py b/simpleperf_report_lib.py
index 5c2893c..48b3119 100644
--- a/simpleperf_report_lib.py
+++ b/simpleperf_report_lib.py
@@ -26,7 +26,8 @@
 import struct
 from typing import Any, Dict, List, Optional, Union
 
-from simpleperf_utils import bytes_to_str, get_host_binary_path, is_windows, str_to_bytes
+from simpleperf_utils import (bytes_to_str, get_host_binary_path, is_windows, str_to_bytes,
+                              ReportLibOptions)
 
 
 def _is_null(p: Optional[ct._Pointer]) -> bool:
@@ -297,6 +298,18 @@
             self._DestroyReportLibFunc(self._instance)
             self._instance = None
 
+    def SetReportOptions(self, options: ReportLibOptions):
+        """ Set report options in one call. """
+        if options.proguard_mapping_files:
+            for file_path in options.proguard_mapping_files:
+                self.AddProguardMappingFile(file_path)
+        if options.show_art_frames:
+            self.ShowArtFrames(True)
+        if options.trace_offcpu:
+            self.SetTraceOffCpuMode(options.trace_offcpu)
+        if options.sample_filters:
+            self.SetSampleFilter(options.sample_filters)
+
     def SetLogSeverity(self, log_level: str = 'info'):
         """ Set log severity of native lib, can be verbose,debug,info,error,fatal."""
         cond: bool = self._SetLogSeverityFunc(self.getInstance(), _char_pt(log_level))
@@ -362,7 +375,7 @@
         res: bool = self._SetTraceOffCpuModeFunc(self.getInstance(), _char_pt(mode))
         _check(res, f'Failed to call SetTraceOffCpuMode({mode})')
 
-    def SetSampleFilter(self, filter: str):
+    def SetSampleFilter(self, filters: List[str]):
         """ Set options used to filter samples. Available options are:
             --exclude-pid pid1,pid2,...   Exclude samples for selected processes.
             --exclude-tid tid1,tid2,...   Exclude samples for selected threads.
@@ -381,8 +394,10 @@
 
             The filter argument should be a concatenation of options.
         """
-        res: bool = self._SetSampleFilterFunc(self.getInstance(), _char_pt(filter))
-        _check(res, f'Failed to call SetSampleFilter({filter})')
+        filter_array = (ct.c_char_p * len(filters))()
+        filter_array[:] = [_char_pt(f) for f in filters]
+        res: bool = self._SetSampleFilterFunc(self.getInstance(), filter_array, len(filters))
+        _check(res, f'Failed to call SetSampleFilter({filters})')
 
     def GetNextSample(self) -> Optional[SampleStruct]:
         """ Return the next sample. If no more samples, return None. """
diff --git a/simpleperf_utils.py b/simpleperf_utils.py
index 755919c..2a7dfd3 100644
--- a/simpleperf_utils.py
+++ b/simpleperf_utils.py
@@ -21,6 +21,7 @@
 from __future__ import annotations
 import argparse
 from concurrent.futures import Future, ThreadPoolExecutor
+from dataclasses import dataclass
 import logging
 import os
 import os.path
@@ -999,14 +1000,33 @@
     pass
 
 
+@dataclass
+class ReportLibOptions:
+    show_art_frames: bool
+    trace_offcpu: str
+    proguard_mapping_files: List[str]
+    sample_filters: List[str]
+
+
 class BaseArgumentParser(argparse.ArgumentParser):
     def __init__(self, *args, **kwargs):
         super().__init__(*args, **kwargs, formatter_class=ArgParseFormatter)
         self.has_sample_filter_options = False
         self.sample_filter_with_pid_shortcut = False
+        self.has_report_lib_options = False
 
-    def add_trace_offcpu_option(self, subparser: Optional[Any] = None):
-        parser = subparser if subparser else self
+    def add_report_lib_options(self, group: Optional[Any] = None,
+                               default_show_art_frames: bool = False,
+                               sample_filter_group: Optional[Any] = None,
+                               sample_filter_with_pid_shortcut: bool = True):
+        self.has_report_lib_options = True
+        parser = group if group else self
+        parser.add_argument(
+            '--proguard-mapping-file', nargs='+',
+            help='Add proguard mapping file to de-obfuscate symbols')
+        parser.add_argument('--show-art-frames', '--show_art_frames',
+                            action=argparse.BooleanOptionalAction, default=default_show_art_frames,
+                            help='Show frames of internal methods in the ART Java interpreter.')
         parser.add_argument(
             '--trace-offcpu', choices=['on-cpu', 'off-cpu', 'on-off-cpu', 'mixed-on-off-cpu'],
             help="""Set report mode for profiles recorded with --trace-offcpu option. All possible
@@ -1015,8 +1035,9 @@
                     mixed-on-off-cpu (on-cpu and off-cpu samples using the same event name).
                     If not set, mixed-on-off-cpu mode is used.
                 """)
+        self._add_sample_filter_options(sample_filter_group, sample_filter_with_pid_shortcut)
 
-    def add_sample_filter_options(
+    def _add_sample_filter_options(
             self, group: Optional[Any] = None, with_pid_shortcut: bool = True):
         if not group:
             group = self.add_argument_group('Sample filter options')
@@ -1044,7 +1065,8 @@
             '--include-process-name', metavar='process_name_regex', nargs='+',
             help='only include samples for processes with name containing the regular expression')
         group.add_argument(
-            '--include-thread-name', metavar='thread_name_regex', nargs='+',
+            '--comm', '--include-thread-name', metavar='thread_name_regex',
+            dest='include_thread_name', nargs='+',
             help='only include samples for threads with name containing the regular expression')
         group.add_argument(
             '--filter-file', metavar='file',
@@ -1053,40 +1075,38 @@
         self.has_sample_filter_options = True
         self.sample_filter_with_pid_shortcut = with_pid_shortcut
 
-    def _build_sample_filter(self, args: argparse.Namespace) -> Optional[str]:
-        """ Convert sample filter options into a sample filter string, which can be passed to
-            ReportLib.SetSampleFilter().
-        """
+    def _build_sample_filter(self, args: argparse.Namespace) -> List[str]:
+        """ Build sample filters, which can be passed to ReportLib.SetSampleFilter(). """
         filters = []
         if args.exclude_pid:
-            filters.append('--exclude-pid ' + ','.join(str(pid) for pid in args.exclude_pid))
+            filters.extend(['--exclude-pid', ','.join(str(pid) for pid in args.exclude_pid)])
         if args.exclude_tid:
-            filters.append('--exclude-tid ' + ','.join(str(tid) for tid in args.exclude_tid))
+            filters.extend(['--exclude-tid', ','.join(str(tid) for tid in args.exclude_tid)])
         if args.exclude_process_name:
             for name in args.exclude_process_name:
-                filters.append('--exclude-process-name ' + name)
+                filters.extend(['--exclude-process-name', name])
         if args.exclude_thread_name:
             for name in args.exclude_thread_name:
-                filters.append('--exclude-thread-name ' + name)
+                filters.extend(['--exclude-thread-name', name])
 
         if args.include_pid:
-            filters.append('--include-pid ' + ','.join(str(pid) for pid in args.include_pid))
+            filters.extend(['--include-pid', ','.join(str(pid) for pid in args.include_pid)])
         if args.include_tid:
-            filters.append('--include-tid ' + ','.join(str(tid) for tid in args.include_tid))
+            filters.extend(['--include-tid', ','.join(str(tid) for tid in args.include_tid)])
         if self.sample_filter_with_pid_shortcut:
             if args.pid:
-                filters.append('--include-pid ' + ','.join(str(pid) for pid in args.pid))
+                filters.extend(['--include-pid', ','.join(str(pid) for pid in args.pid)])
             if args.tid:
-                filters.append('--include-tid ' + ','.join(str(pid) for pid in args.tid))
+                filters.extend(['--include-tid', ','.join(str(pid) for pid in args.tid)])
         if args.include_process_name:
             for name in args.include_process_name:
-                filters.append('--include-process-name ' + name)
+                filters.extend(['--include-process-name', name])
         if args.include_thread_name:
             for name in args.include_thread_name:
-                filters.append('--include-thread-name ' + name)
+                filters.extend(['--include-thread-name', name])
         if args.filter_file:
-            filters.append('--filter-file ' + args.filter_file)
-        return ' '.join(filters)
+            filters.extend(['--filter-file', args.filter_file])
+        return filters
 
     def parse_known_args(self, *args, **kwargs):
         self.add_argument(
@@ -1094,8 +1114,12 @@
             default='info', help='set log level')
         namespace, left_args = super().parse_known_args(*args, **kwargs)
 
-        if self.has_sample_filter_options:
-            setattr(namespace, 'sample_filter', self._build_sample_filter(namespace))
+        if self.has_report_lib_options:
+            sample_filters = self._build_sample_filter(namespace)
+            report_lib_options = ReportLibOptions(
+                namespace.show_art_frames, namespace.trace_offcpu, namespace.proguard_mapping_file,
+                sample_filters)
+            setattr(namespace, 'report_lib_options', report_lib_options)
 
         if not Log.initialized:
             Log.init(namespace.log)
diff --git a/stackcollapse.py b/stackcollapse.py
index 2574843..e0e1d86 100755
--- a/stackcollapse.py
+++ b/stackcollapse.py
@@ -26,7 +26,7 @@
 
 from collections import defaultdict
 from simpleperf_report_lib import ReportLib
-from simpleperf_utils import BaseArgumentParser, flatten_arg_list
+from simpleperf_utils import BaseArgumentParser, flatten_arg_list, ReportLibOptions
 from typing import DefaultDict, List, Optional, Set
 
 import logging
@@ -37,30 +37,25 @@
         record_file: str,
         symfs_dir: str,
         kallsyms_file: str,
-        proguard_mapping_file: List[str],
         event_filter: str,
         include_pid: bool,
         include_tid: bool,
         annotate_kernel: bool,
         annotate_jit: bool,
         include_addrs: bool,
-        comm_filter: Set[str],
-        sample_filter: Optional[str]):
+        report_lib_options: ReportLibOptions):
     """read record_file, aggregate per-stack and print totals per-stack"""
     lib = ReportLib()
 
     if include_addrs:
         lib.ShowIpForUnknownSymbol()
-    for file_path in proguard_mapping_file:
-        lib.AddProguardMappingFile(file_path)
     if symfs_dir is not None:
         lib.SetSymfs(symfs_dir)
     if record_file is not None:
         lib.SetRecordFile(record_file)
     if kallsyms_file is not None:
         lib.SetKallsymsFile(kallsyms_file)
-    if sample_filter:
-        lib.SetSampleFilter(sample_filter)
+    lib.SetReportOptions(report_lib_options)
 
     stacks: DefaultDict[str, int] = defaultdict(int)
     event_defaulted = False
@@ -70,9 +65,6 @@
         if sample is None:
             lib.Close()
             break
-        if comm_filter:
-            if sample.thread_comm not in comm_filter:
-                continue
         event = lib.GetEventOfCurrentSample()
         symbol = lib.GetSymbolOfCurrentSample()
         callchain = lib.GetCallChainOfCurrentSample()
@@ -123,30 +115,23 @@
     parser.add_argument('--jit', action='store_true', help='Annotate JIT functions with a _[j]')
     parser.add_argument('--addrs', action='store_true',
                         help='include raw addresses where symbols can\'t be found')
-    parser.add_argument(
-        '--proguard-mapping-file', nargs='+',
-        help='Add proguard mapping file to de-obfuscate symbols',
-        default=[])
     sample_filter_group = parser.add_argument_group('Sample filter options')
-    parser.add_sample_filter_options(sample_filter_group, False)
     sample_filter_group.add_argument('--event-filter', nargs='?', default='',
                                      help='Event type filter e.g. "cpu-cycles" or "instructions"')
-    sample_filter_group.add_argument('--comm', nargs='+', action='append', help="""
-      Use samples only in threads with selected names.""")
+    parser.add_report_lib_options(sample_filter_group=sample_filter_group,
+                                  sample_filter_with_pid_shortcut=False)
     args = parser.parse_args()
     collapse_stacks(
         record_file=args.record_file,
         symfs_dir=args.symfs,
         kallsyms_file=args.kallsyms,
-        proguard_mapping_file=args.proguard_mapping_file,
         event_filter=args.event_filter,
         include_pid=args.pid,
         include_tid=args.tid,
         annotate_kernel=args.kernel,
         annotate_jit=args.jit,
         include_addrs=args.addrs,
-        comm_filter=set(flatten_arg_list(args.comm)),
-        sample_filter=args.sample_filter)
+        report_lib_options=args.report_lib_options)
 
 
 if __name__ == '__main__':
diff --git a/test/annotate_test.py b/test/annotate_test.py
index eef5133..ce419f6 100644
--- a/test/annotate_test.py
+++ b/test/annotate_test.py
@@ -74,3 +74,10 @@
             filter_file.flush()
             get_report('--filter-file ' + filter_file.name)
         os.unlink(filter_file.name)
+
+    def test_show_art_frames(self):
+        self.run_cmd(
+            ['annotate.py', '-i', TestHelper.testdata_path('perf_with_interpreter_frames.data'),
+             '--show-art-frames'])
+        summary = Path('annotated_files') / 'summary'
+        self.check_strings_in_file(summary, 'total period: 9800649')
diff --git a/test/gecko_profile_generator_test.py b/test/gecko_profile_generator_test.py
index 54bde74..5a0d45e 100644
--- a/test/gecko_profile_generator_test.py
+++ b/test/gecko_profile_generator_test.py
@@ -18,20 +18,22 @@
 import os
 import re
 import tempfile
-from typing import Set
+from typing import List, Optional, Set
 
 from . test_utils import TestBase, TestHelper
 
 
 class TestGeckoProfileGenerator(TestBase):
-    def run_generator(self, testdata_file):
+    def run_generator(self, testdata_file: str, options: Optional[List[str]] = None) -> str:
         testdata_path = TestHelper.testdata_path(testdata_file)
-        gecko_profile_json = self.run_cmd(
-            ['gecko_profile_generator.py', '-i', testdata_path], return_output=True)
-        return json.loads(gecko_profile_json)
+        args = ['gecko_profile_generator.py', '-i', testdata_path]
+        if options:
+            args.extend(options)
+        return self.run_cmd(args, return_output=True)
 
     def test_golden(self):
-        got = self.run_generator('perf_with_interpreter_frames.data')
+        output = self.run_generator('perf_with_interpreter_frames.data')
+        got = json.loads(output)
         golden_path = TestHelper.testdata_path('perf_with_interpreter_frames.gecko.json')
         with open(golden_path) as f:
             want = json.load(f)
@@ -41,8 +43,7 @@
 
     def test_sample_filters(self):
         def get_threads_for_filter(filter: str) -> Set[int]:
-            report = self.run_cmd(['gecko_profile_generator.py', '-i', TestHelper.testdata_path(
-                'perf_display_bitmaps.data')] + filter.split(), return_output=True)
+            report = self.run_generator('perf_display_bitmaps.data', filter.split())
             pattern = re.compile(r'"tid":\s+(\d+),')
             threads = set()
             for m in re.finditer(pattern, report):
@@ -71,3 +72,10 @@
             self.assertIn(31881, threads)
             self.assertNotIn(31850, threads)
         os.unlink(filter_file.name)
+
+    def test_show_art_frames(self):
+        art_frame_str = 'art::interpreter::DoCall'
+        report = self.run_generator('perf_with_interpreter_frames.data')
+        self.assertNotIn(art_frame_str, report)
+        report = self.run_generator('perf_with_interpreter_frames.data', ['--show-art-frames'])
+        self.assertIn(art_frame_str, report)
diff --git a/test/inferno_test.py b/test/inferno_test.py
index bddb220..83fc7cf 100644
--- a/test/inferno_test.py
+++ b/test/inferno_test.py
@@ -81,3 +81,12 @@
             self.assertIn(31881, threads)
             self.assertNotIn(31850, threads)
         os.unlink(filter_file.name)
+
+    def test_show_art_frames(self):
+        art_frame_str = 'art::interpreter::DoCall'
+        options = ['--record_file',
+                   TestHelper.testdata_path('perf_with_interpreter_frames.data'), '-sc']
+        report = self.get_report(options)
+        self.assertNotIn(art_frame_str, report)
+        report = self.get_report(options + ['--show-art-frames'])
+        self.assertIn(art_frame_str, report)
diff --git a/test/pprof_proto_generator_test.py b/test/pprof_proto_generator_test.py
index 0d96484..cbeb8d6 100644
--- a/test/pprof_proto_generator_test.py
+++ b/test/pprof_proto_generator_test.py
@@ -24,6 +24,7 @@
 from binary_cache_builder import BinaryCacheBuilder
 from pprof_proto_generator import load_pprof_profile, PprofProfileGenerator
 from . test_utils import TestBase, TestHelper
+from simpleperf_utils import ReportLibOptions
 
 
 class TestPprofProtoGenerator(TestBase):
@@ -216,7 +217,8 @@
         binary_cache_builder.build_binary_cache(testdata_file, [TestHelper.testdata_dir])
 
         # Read recording file.
-        config = {'ndk_path': None, 'max_chain_length': 1000000, 'proguard_mapping_file': None}
+        config = {'ndk_path': None, 'max_chain_length': 1000000,
+                  'report_lib_options': ReportLibOptions(False, '', None, None)}
         generator = PprofProfileGenerator(config)
         generator.load_record_file(testdata_file)
 
diff --git a/test/purgatorio_test.py b/test/purgatorio_test.py
index e814c42..ff862f4 100644
--- a/test/purgatorio_test.py
+++ b/test/purgatorio_test.py
@@ -42,3 +42,11 @@
         # Show original method name with proguard mapping file.
         self.assertIn(original_methodname, self.get_report(
             ['--proguard-mapping-file', proguard_mapping_file, '-i', testdata_file]))
+
+    def test_show_art_frames(self):
+        art_frame_str = 'art::interpreter::DoCall'
+        options = ['-i', TestHelper.testdata_path('perf_with_interpreter_frames.data')]
+        report = self.get_report(options)
+        self.assertIn(art_frame_str, report)
+        report = self.get_report(options + ['--no-show-art-frames'])
+        self.assertNotIn(art_frame_str, report)
diff --git a/test/report_html_test.py b/test/report_html_test.py
index 0ae99e9..250ad03 100644
--- a/test/report_html_test.py
+++ b/test/report_html_test.py
@@ -84,6 +84,10 @@
         self.assertIn(original_methodname, json.dumps(record_data))
 
     def get_record_data(self, options: List[str]) -> Dict[str, Any]:
+        json_data = self.get_record_data_string(options)
+        return json.loads(json_data)
+
+    def get_record_data_string(self, options: List[str]) -> str:
         args = ['report_html.py'] + options
         if TestHelper.ndk_path:
             args += ['--ndk_path', TestHelper.ndk_path]
@@ -99,8 +103,7 @@
         start_pos += 1
         end_pos = data.find(end_str, start_pos)
         self.assertNotEqual(end_pos, -1)
-        json_data = data[start_pos:end_pos]
-        return json.loads(json_data)
+        return data[start_pos:end_pos]
 
     def test_add_source_code(self):
         """ Test --add_source_code option. """
@@ -243,3 +246,11 @@
             self.assertIn(31881, threads)
             self.assertNotIn(31850, threads)
         os.unlink(filter_file.name)
+
+    def test_show_art_frames(self):
+        art_frame_str = 'art::interpreter::DoCall'
+        options = ['-i', TestHelper.testdata_path('perf_with_interpreter_frames.data')]
+        report = self.get_record_data_string(options)
+        self.assertNotIn(art_frame_str, report)
+        report = self.get_record_data_string(options + ['--show-art-frames'])
+        self.assertIn(art_frame_str, report)
diff --git a/test/report_lib_test.py b/test/report_lib_test.py
index ba7ae46..1447c5a 100644
--- a/test/report_lib_test.py
+++ b/test/report_lib_test.py
@@ -16,7 +16,7 @@
 
 import os
 import tempfile
-from typing import Set
+from typing import List, Set
 
 from simpleperf_report_lib import ReportLib
 from . test_utils import TestBase, TestHelper
@@ -275,34 +275,39 @@
 
     def test_set_sample_filter(self):
         """ Test using ReportLib.SetSampleFilter(). """
-        def get_threads_for_filter(filter: str) -> Set[int]:
+        def get_threads_for_filter(filters: List[str]) -> Set[int]:
             self.report_lib.Close()
             self.report_lib = ReportLib()
             self.report_lib.SetRecordFile(TestHelper.testdata_path('perf_display_bitmaps.data'))
-            self.report_lib.SetSampleFilter(filter)
+            self.report_lib.SetSampleFilter(filters)
             threads = set()
             while self.report_lib.GetNextSample():
                 sample = self.report_lib.GetCurrentSample()
                 threads.add(sample.tid)
             return threads
 
-        self.assertNotIn(31850, get_threads_for_filter('--exclude-pid 31850'))
-        self.assertIn(31850, get_threads_for_filter('--include-pid 31850'))
-        self.assertNotIn(31881, get_threads_for_filter('--exclude-tid 31881'))
-        self.assertIn(31881, get_threads_for_filter('--include-tid 31881'))
+        self.assertNotIn(31850, get_threads_for_filter(['--exclude-pid', '31850']))
+        self.assertIn(31850, get_threads_for_filter(['--include-pid', '31850']))
+        self.assertNotIn(31881, get_threads_for_filter(['--exclude-tid', '31881']))
+        self.assertIn(31881, get_threads_for_filter(['--include-tid', '31881']))
         self.assertNotIn(31881, get_threads_for_filter(
-            '--exclude-process-name com.example.android.displayingbitmaps'))
+            ['--exclude-process-name', 'com.example.android.displayingbitmaps']))
         self.assertIn(31881, get_threads_for_filter(
-            '--include-process-name com.example.android.displayingbitmaps'))
+            ['--include-process-name', 'com.example.android.displayingbitmaps']))
         self.assertNotIn(31850, get_threads_for_filter(
-            '--exclude-thread-name com.example.android.displayingbitmaps'))
+            ['--exclude-thread-name', 'com.example.android.displayingbitmaps']))
         self.assertIn(31850, get_threads_for_filter(
-            '--include-thread-name com.example.android.displayingbitmaps'))
+            ['--include-thread-name', 'com.example.android.displayingbitmaps']))
+
+        # Check that thread name can have space.
+        self.assertNotIn(31856, get_threads_for_filter(
+            ['--exclude-thread-name', 'Jit thread pool']))
+        self.assertIn(31856, get_threads_for_filter(['--include-thread-name', 'Jit thread pool']))
 
         with tempfile.NamedTemporaryFile('w', delete=False) as filter_file:
             filter_file.write('GLOBAL_BEGIN 684943449406175\nGLOBAL_END 684943449406176')
             filter_file.flush()
-            threads = get_threads_for_filter('--filter-file ' + filter_file.name)
+            threads = get_threads_for_filter(['--filter-file', filter_file.name])
             self.assertIn(31881, threads)
             self.assertNotIn(31850, threads)
         os.unlink(filter_file.name)
diff --git a/test/report_sample_test.py b/test/report_sample_test.py
index 4b09f82..5b6681c 100644
--- a/test/report_sample_test.py
+++ b/test/report_sample_test.py
@@ -17,32 +17,27 @@
 import os
 import re
 import tempfile
-from typing import Set
+from typing import List, Optional, Set
 
 from . test_utils import TestBase, TestHelper
 
 
 class TestReportSample(TestBase):
+    def get_record_data_string(self, record_file: str, options: Optional[List[str]] = None):
+        args = ['report_sample.py', '-i', TestHelper.testdata_path(record_file)]
+        if options:
+            args += options
+        report = self.run_cmd(args, return_output=True)
+        return report.replace('\r', '')
 
     def test_no_flags(self):
-        got = self.run_cmd(
-            ['report_sample.py',
-             '-i',
-             TestHelper.testdata_path('perf_display_bitmaps.data')],
-            return_output=True)
-        got = got.replace('\r', '')
+        got = self.get_record_data_string('perf_display_bitmaps.data')
         with open(TestHelper.testdata_path('perf_display_bitmaps.perf-script')) as f:
             want = f.read()
         self.assertEqual(got, want)
 
     def test_comm_filter_to_renderthread(self):
-        got = self.run_cmd(
-            ['report_sample.py',
-             '-i',
-             TestHelper.testdata_path('perf_display_bitmaps.data'),
-             '--comm', 'RenderThread'],
-            return_output=True)
-        got = got.replace('\r', '')
+        got = self.get_record_data_string('perf_display_bitmaps.data', ['--comm', 'RenderThread'])
         self.assertIn('RenderThread', got)
         self.assertNotIn('com.example.android.displayingbitmaps', got)
 
@@ -51,13 +46,8 @@
         self.assertEqual(got, want)
 
     def test_comm_filter_to_ui_thread(self):
-        got = self.run_cmd(
-            ['report_sample.py',
-             '-i',
-             TestHelper.testdata_path('perf_display_bitmaps.data'),
-             '--comm', 'com.example.android.displayingbitmaps'],
-            return_output=True)
-        got = got.replace('\r', '')
+        got = self.get_record_data_string('perf_display_bitmaps.data', [
+                                          '--comm', 'com.example.android.displayingbitmaps'])
         self.assertIn('com.example.android.displayingbitmaps', got)
         self.assertNotIn('RenderThread', got)
         with open(TestHelper.testdata_path('perf_display_bitmaps.UiThread.perf-script')) as f:
@@ -65,29 +55,20 @@
         self.assertEqual(got, want)
 
     def test_header(self):
-        got = self.run_cmd(
-            ['report_sample.py',
-             '-i',
-             TestHelper.testdata_path('perf_display_bitmaps.data'),
-             '--header'],
-            return_output=True)
-        got = got.replace('\r', '')
+        got = self.get_record_data_string('perf_display_bitmaps.data', ['--header'])
         with open(TestHelper.testdata_path('perf_display_bitmaps.header.perf-script')) as f:
             want = f.read()
         self.assertEqual(got, want)
 
     def test_trace_offcpu(self):
-        got = self.run_cmd(
-            ['report_sample.py', '-i', TestHelper.testdata_path('perf_with_trace_offcpu_v2.data'),
-             '--trace-offcpu', 'on-cpu'], return_output=True)
+        got = self.get_record_data_string('perf_with_trace_offcpu_v2.data', [
+                                          '--trace-offcpu', 'on-cpu'])
         self.assertIn('cpu-clock:u', got)
         self.assertNotIn('sched:sched_switch', got)
 
     def test_sample_filters(self):
         def get_threads_for_filter(filter: str) -> Set[int]:
-            report = self.run_cmd(
-                ['report_sample.py', '-i', TestHelper.testdata_path('perf_display_bitmaps.data')] +
-                filter.split(), return_output=True)
+            report = self.get_record_data_string('perf_display_bitmaps.data', filter.split())
             pattern = re.compile(r'\s+31850/(\d+)\s+')
             threads = set()
             for m in re.finditer(pattern, report):
@@ -116,3 +97,11 @@
             self.assertIn(31881, threads)
             self.assertNotIn(31850, threads)
         os.unlink(filter_file.name)
+
+    def test_show_art_frames(self):
+        art_frame_str = 'art::interpreter::DoCall'
+        report = self.get_record_data_string('perf_with_interpreter_frames.data')
+        self.assertNotIn(art_frame_str, report)
+        report = self.get_record_data_string(
+            'perf_with_interpreter_frames.data', ['--show-art-frames'])
+        self.assertIn(art_frame_str, report)
diff --git a/test/stackcollapse_test.py b/test/stackcollapse_test.py
index fee3922..4b9cdbe 100644
--- a/test/stackcollapse_test.py
+++ b/test/stackcollapse_test.py
@@ -19,90 +19,57 @@
 from pathlib import Path
 import re
 import tempfile
-from typing import Set
+from typing import List, Optional, Set
 
 from . test_utils import TestBase, TestHelper
 
 
 class TestStackCollapse(TestBase):
+    def get_report(self, testdata_file: str, options: Optional[List[str]] = None) -> str:
+        args = ['stackcollapse.py', '-i', TestHelper.testdata_path(testdata_file)]
+        if options:
+            args.extend(options)
+        report = self.run_cmd(args, return_output=True)
+        return report.replace('\r', '')
 
     def test_jit_annotations(self):
-        got = self.run_cmd([
-            'stackcollapse.py',
-            '-i', TestHelper.testdata_path('perf_with_jit_symbol.data'),
-            '--jit',
-        ], return_output=True)
-        got = got.replace('\r', '')
+        got = self.get_report('perf_with_jit_symbol.data', ['--jit'])
         golden_path = TestHelper.testdata_path('perf_with_jit_symbol.foldedstack')
         self.assertEqual(got, Path(golden_path).read_text())
 
     def test_kernel_annotations(self):
-        got = self.run_cmd([
-            'stackcollapse.py',
-            '-i', TestHelper.testdata_path('perf_with_jit_symbol.data'),
-            '--kernel',
-        ], return_output=True)
-        got = got.replace('\r', '')
+        got = self.get_report('perf_with_jit_symbol.data', ['--kernel'])
         golden_path = TestHelper.testdata_path('perf_with_jit_symbol.foldedstack_with_kernel')
         self.assertEqual(got, Path(golden_path).read_text())
 
     def test_with_pid(self):
-        got = self.run_cmd([
-            'stackcollapse.py',
-            '-i', TestHelper.testdata_path('perf_with_jit_symbol.data'),
-            '--jit',
-            '--pid',
-        ], return_output=True)
-        got = got.replace('\r', '')
+        got = self.get_report('perf_with_jit_symbol.data', ['--jit', '--pid'])
         golden_path = TestHelper.testdata_path('perf_with_jit_symbol.foldedstack_with_pid')
         self.assertEqual(got, Path(golden_path).read_text())
 
     def test_with_tid(self):
-        got = self.run_cmd([
-            'stackcollapse.py',
-            '-i', TestHelper.testdata_path('perf_with_jit_symbol.data'),
-            '--jit',
-            '--tid',
-        ], return_output=True)
-        got = got.replace('\r', '')
+        got = self.get_report('perf_with_jit_symbol.data', ['--jit', '--tid'])
         golden_path = TestHelper.testdata_path('perf_with_jit_symbol.foldedstack_with_tid')
         self.assertEqual(got, Path(golden_path).read_text())
 
     def test_two_event_types_chooses_first(self):
-        got = self.run_cmd([
-            'stackcollapse.py',
-            '-i', TestHelper.testdata_path('perf_with_two_event_types.data'),
-        ], return_output=True)
-        got = got.replace('\r', '')
+        got = self.get_report('perf_with_two_event_types.data')
         golden_path = TestHelper.testdata_path('perf_with_two_event_types.foldedstack')
         self.assertEqual(got, Path(golden_path).read_text())
 
     def test_two_event_types_chooses_with_event_filter(self):
-        got = self.run_cmd([
-            'stackcollapse.py',
-            '-i', TestHelper.testdata_path('perf_with_two_event_types.data'),
-            '--event-filter', 'cpu-clock',
-        ], return_output=True)
-        got = got.replace('\r', '')
+        got = self.get_report('perf_with_two_event_types.data', ['--event-filter', 'cpu-clock'])
         golden_path = TestHelper.testdata_path('perf_with_two_event_types.foldedstack_cpu_clock')
         self.assertEqual(got, Path(golden_path).read_text())
 
     def test_unknown_symbol_addrs(self):
-        got = self.run_cmd([
-            'stackcollapse.py',
-            '-i', TestHelper.testdata_path('perf_with_jit_symbol.data'),
-            '--addrs',
-        ], return_output=True)
-        got = got.replace('\r', '')
+        got = self.get_report('perf_with_jit_symbol.data', ['--addrs'])
         golden_path = TestHelper.testdata_path('perf_with_jit_symbol.foldedstack_addrs')
         self.assertEqual(got, Path(golden_path).read_text())
 
     def test_sample_filters(self):
         def get_threads_for_filter(filter: str) -> Set[int]:
-            report = self.run_cmd(
-                ['stackcollapse.py', '-i', TestHelper.testdata_path('perf_display_bitmaps.data'),
-                 '--tid'] + filter.split(),
-                return_output=True)
+            report = self.get_report('perf_display_bitmaps.data', ['--tid'] + filter.split())
             pattern = re.compile(r'-31850/(\d+);')
             threads = set()
             for m in re.finditer(pattern, report):
@@ -129,3 +96,10 @@
             self.assertIn(31881, threads)
             self.assertNotIn(31850, threads)
         os.unlink(filter_file.name)
+
+    def test_show_art_frames(self):
+        art_frame_str = 'art::interpreter::DoCall'
+        report = self.get_report('perf_with_interpreter_frames.data')
+        self.assertNotIn(art_frame_str, report)
+        report = self.get_report('perf_with_interpreter_frames.data', ['--show-art-frames'])
+        self.assertIn(art_frame_str, report)