tree 3ef0fde88b5c3364d911604955a7a206d305e5a4
parent f76febda81aa1d1a16867794ccaaa20254016b21
author Treehugger Robot <android-test-infra-autosubmit@system.gserviceaccount.com> 1690833154 +0000
committer Gerrit Code Review <noreply-gerritcodereview@google.com> 1690833154 +0000

Update git submodules

* Update platform/superproject from branch 'master'
  to 0328436469db6d95b4e8c841f6bab56ee45f2d93
  - Update git submodules
    
    * Update external/doclava from branch 'main'
      to b568f8d8da353a75bc57ae34fb29f5d9c3a83050
      - Merge "Remove unused doclava-no-guava" into main
      - Remove unused doclava-no-guava
        
        Bug: 293578003
        Test: T/H
        Change-Id: I75062043e999cc10e79aea8561568085da2c8122
        
  - Merge "[le audio] BassClient cleanup gatt for all disconnection cases" into main
  - Merge "Multicast list can be null in case of Contention based ranging." into main
  - Merge "Update Owners" into main
  - Merge "Merge "Adding in fix for flaky CTS test by clearing notifications" into android13-tests-dev am: 996c406dff" into main
  - Merge "Update MultiSimSettingController with carrier config change listener" into main
  - Merge "Revert "Enable CFI for riscv64"" into main
  - Merge "Update CarrierKeyDownloadManager with new CarrierConfigManager APIs" into main
  - Merge "Update PinStorage with new CarrierConfigManager APIs" into main
  - Merge "Update SignalStrengthController with new CarrierConfigManager APIs" into main
  - Merge "Update UiccProfile with new CarrierConfigManager APIs" into main
  - Merge "Enable_wifi only controls wifi" into main
  - Merge "SpAIBinder: allow comparison with pointers" into main
  - Revert "[scudo] seperate cache retrieval logic"
    
    RoundedSize is supposed to be used on directly mapping. To determine if
    a cached block is feasible, the size doesn't need to be rounded in
    advance. As a result, the use of RoundedSize may miss some chance of
    using cached blocks.
    
    This reverts commit 4c6b8bb87b3452d0bcef83cd0ea712d8426603b8.
    
    Reviewed By: frs513
    
    Differential Revision: https://reviews.llvm.org/D156583
    
    GitOrigin-RevId: 2fcfaeecfb3389decdc511ece532f905a14b2d8d
    Change-Id: I5c64f4c3ee9e164615325bb5356136ace36fc0b1
    
  - Autoupdate of 2 submodules
    
    *frameworks/base updated to a012db21561135999c852d619eea80bbd5f17baa
    Merge "Removed the obsolete code" into main
    *frameworks/opt/telephony updated to ad691920a0c973a2c64761d44ae4d80bab764e68
    Merge changes from topic "remove_obsolete" into main
    
    * changes:
      Fixed incorrect card name shown up
      Fixed inactive pSIM not shown in settings
      Fixed port index is not updated when iccid is active but slot is inactive
      Fixed eSIM subscription disappeared
      Support legacy cell broadcast fields
      Fixed inactive SIM removal not updated issue
      Broadcast subId upon service initialized
      Removed the obsolete code
      Fixed getAccessibleSubscriptionInfoList returns the non-embedded sub
      Adding Anamoly report to detect invalid portIndex
    
    
  - Roll ANGLE from 179924cbfaf3 to 2755f73a3461 (9 revisions)
    
    https://chromium.googlesource.com/angle/angle.git/+log/179924cbfaf3..2755f73a3461
    
    Please enable autosubmit on changes if possible when approving them.
    
    If this roll has caused a breakage, revert this CL and stop the roller
    using the controls here:
    https://autoroll.skia.org/r/angle-android-autoroll
    Please CC angle-team@google.com,rmistry@google.com,yuxinhu@google.com on the revert to ensure that a human
    is aware of the problem.
    
    To file a bug in ANGLE: https://bugs.chromium.org/p/angleproject/issues/entry
    
    To report a problem with the AutoRoller itself, please file a bug:
    https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug
    
    Documentation for the AutoRoller is here:
    https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
    
    Test: Presubmit checks will test this change.
    Exempt-From-Owner-Approval: The autoroll bot does not require owner approval.
    Bug: b/285124778
    Bug: b/285196249
    Bug: b/286224923
    Bug: b/287318431
    Change-Id: I9b200f296ad6c85dbaefe9e70a9a45d60e6d718c
    
  - Merge "Revert "rust: Add SCS sanitizer option for AArch64"" into main
  - Autoupdate of 2 submodules
    
    *build/bazel updated to 65b3b2574b743d0ea6a147369ce550860941048b
    Merge "Cleanup coverage dependencies in cc rules" into main
    *build/soong updated to 82c298c240f2598fb75599b523e27270796656a3
    Merge "Convert coverage libs as alwayslink" into main
    
  - Re-enable unix_socket_unittest on Windows
    
    The reasons listed on the github bug rechable from git blame
    https://github.com/google/perfetto/issues/347
    no longer seem to apply as the IPC layer is supported on Win.
    
    Change-Id: I85d985e30b1304968d97acbbac60a3449b1b2a75
    
  - Merge "pandora: remove flaky opp tests" into main
  - Clarify names in package bp2build progress test
    
    Previously names were 1 and 2 which didn't offer any clarity as to the
    differences. Adding the name clarifies the expected diffs between the
    types.
    
    Test: b test //build/bazel/sctips/bp2build_progress:all
    Change-Id: I2c86a5967db79f56fabdb3f19cb247bf33dbeaf1
    
  - Merge "Gen a header library when genrules export includes" into main
  - Fingerprint a whole partition.
    
    Features:
    * Added code to do a walk of a partition.
    * Added a few tests for it, along with dangling symlinks and unicode file
    names.
    
    Implementation changes:
    * Changed methods to take PathBuf instead of String.
    * Changed tests to not chdir() as I think this was causing flaky tests
      with relative path names and tests running in parallel.
      I'm not sure if this fixes 289238157 or if there is Tradefed issue
      with resolving links to /tmp
    
    Bug: 289238157
    Test: atest
    Change-Id: I460f488fe77988f29e0eeeb3e65bc5a153ca620f
    
  - Merge changes Ibb1f2b72,I96e19758 into main
    
    * changes:
      simpleperf: fix parsing tracing format for fuzzer
      simpleperf: Fix libsimpleperf_report_fuzzer
    
  - Merge "rust: Add SCS sanitizer option for AArch64" into main
  - Autoupdate of 2 submodules
    
    *external/uwb updated to 5ca6c6b419605642f57647fbbae25fe2b5c1c589
    Merge "Sequence Number field size correction in SESSION_DATA_TRANSFER_STATUS_NTF" into main
    *packages/modules/Uwb updated to 8fac54acaae87851b51e4b2cbe9d211b9ffa20ef
    Merge "uci_seq_num size correction in SESSION_DATA_TRANSFER_STATUS_NTF" into main
    
  - Merge changes from topic "am-bbb86f4c70364481aecab74fc059af97" into main
    
    * changes:
      Merge changes from topic "am-7d76ba14e88f42eebcde1c678d81dd11" into android13-tests-dev am: 4da6d8f823 -s ours
      [automerger skipped] Merge "Merge "CTS Verifier remove call to recordTestResults from loopback test" into android12-tests-dev am: 0fe2e9f465" into android12L-tests-dev am: 87db5c25ed -s ours am: 8d54b8ca74 -s ours
    
  - Merge "libbinder_ndk: remove dup clang-format rule" into main
  - Merge changes Iac40a00b,I28b3d590 into main
    
    * changes:
      Remove MVP gate in prep for outputing more flags
      Update unit tests to use assertion helpers
    
  - device FCM -= android.*
    
    Bug: 290408770
    Test: N/A
    Change-Id: Icc310923f39dfb56a621fe507f0233d76b3e68e0
    
  - Merge "rust: Add support for more cargo pkg version vars" into main
  - Merge "bass: Get subgroup number index from metadata" into main
  - Rename funtion shouldForceDowngradeFor
    
    shouldForceDowngradeFor -> ShouldForceDowngradeFor for consistancy with
    existing similar functions.
    
    Test: m
    Bug: 290265210
    Change-Id: I6079c4d6d597bf3bf6204cb0a03731293a7d84db
    
  - Merge "Add RemoteAuthService" into main
  - Merge "[stdlib]: Add util methods to generate monitor contention graphs" into main
  - Merge "Fix avrcp memleak in attr_response handler function" into main
  - Merge "Updating SDK version for rkpd to release" into main
  - Merge "Fix L2CAP PTS issue" into main
  - Merge changes If71cccb2,Iedceb55b into main
    
    * changes:
      Add missing AOSP module metadata to Libcore tests part of ART MTS.
      Add missing module metadata to Libcore tests part of ART MTS.
    
  - Merge "tp: move substr/traceback computation from parser to tokenizer" into main
  - Merge "sdk: allow cmake builds to be binary-size comaparable" into main
  - Support `art::membarrier()` on Linux 4.14+.
    
    Test: Rely on TreeHugger
    Bug: 38383823
    Change-Id: I575bb7136fc948c32cf6db465de018489ab41b7e
    
  - Merge "Import AndroidX from build 10573217" into main
  - Merge changes from topic "am-e20151168fd14bee87c206a7523e6539" into main
    
    * changes:
      Merge changes from topic "am-a6a0945475eb438493f97f66522906bc" into android13-tests-dev am: 38a6b79faa -s ours
      [automerger skipped] Merge "Merge "CtsVerifier: fix JSON file for upload to database" into android12-tests-dev am: 87733c3441" into android12L-tests-dev am: d1eaaefd68 -s ours am: 539751cfd2 -s ours
    
  - Merge "Add usage of test mode" into main
  - Merge "docs: Add v0 UI plugins doc page" into main
  - Autoupdate of 2 submodules
    
    *build/bazel updated to 1477a820856996102499a3a9a1bc8c8fe3c1ecf3
    Merge "Revert "Reroute rules_python repo to actual bazelbuild repo"" into main
    *build/soong updated to 60a2ca3332319b59a7435871f7e5161569efa0de
    Merge "Revert "Allowlist build files in rules_python"" into main
    
  - Merge "[vmbase] Check layout not empty during memory allocation" into main
  - Merge "tp: Use protozero_to_json for shell" into main
  - lite-tr: Implement FMV in lite-tr.
    
    Test: Tree-Hugger
    Bug: 290970051
    Change-Id: I25be52174bc06b079d4b38c8073ccd98908f5e33
    
  - Merge changes I8dc55684,I77573992,Ieb6e8a74,I38d4654a,Iedfff6d8 into main
    
    * changes:
      shared_lib: Improve PerfettoDsRegister()
      shared_lib/test: Test PerfettoProducerActivateTriggers
      shared_lib: Implement stop callback for tracing session
      shared_lib: Implement PerfettoProducerActivateTriggers
      shared_lib: Accept buffer exhausted policy for data source
    
  - Merge "docs: fix docs rendering issue" into main
  - Merge "Enable from-source vs from-text toggling for core.module_lib.stubs." into main
  - Add DEX magic to oat files.
    
    This makes it possible to know the type and version of dex file
    before we open it.
    
    Test: ./art/test.py -b --host --64
    Change-Id: Idf24fa42b311c78ade165b77bf44a4bafb128d17
    
  - arm64: Minor cleanup in code generator.
    
    Test: builbot-build.sh --target
    Change-Id: I241fc7a3b1f999bfcc985efd2c10fe2c2fab688b
    
  - Merge "rust: Pass ASAN/HWASAN flags alongside fuzzers" into main
  - Merge "Add missing AOSP module metadata to `ComposHostTestCases`." into main
  - Merge "ui: Move protos into /core" into main
  - riscv64: Add basic disassembler.
    
    Add a disassembler that differentiates between 16-bit and
    32-bit instructions and disassembles 32-bit LUI, AUIPC,
    branches, loads, stores and integral arithmetic operations.
    
    Test: m dump-oat  # and manually inspect output
    Bug: 283082089
    Change-Id: I0946aaf2bb99d5539efbcecabc111def2a512439
    
  - Merge "Project import generated by Copybara." into main
  - Merge "tp: Cleanup table related naming" into main
  - Merge "Add safety comments." into main
  - Merge changes from topic "Cuttlefish-sensor-injection" into main
    
    * changes:
      Implement Cuttlefish motion sensors UI
      Inject Accelerometer and magnetometer values.
    
  - Merge "[stdlib]: Add util methods to generate binder graphs" into main
  - Merge "Make hex_dec do what it claims to, and add TODO to fix unsoundness." into main
  - Merge "Revert onNetworkActive callback behavior on U+" into main
  - Merge "bass: Introduce dumpsys for module" into main
  - Merge "Deflake doTestPlatformVpnWithException related tests" into main
  - Merge "[le audio] Fix program info appended with unexpected character" into main
  - Merge "ci: Improve formatting" into main
  - Merge "ui: Stop base/ depending on core/" into main
  - Merge "Merge "Merge "Merge "Skip AutofillManagerTest if the feature is not supported" into android12-tests-dev am: 8a101321a6" into android12L-tests-dev am: 8b33b70559" into android13-tests-dev am: 5e1c44a7c7" into main
  - Merge "Metatracing: Trace actions." into main
  - Merge "Reduce unecessary canvas resizing & dom redraws." into main
  - Merge "Move CtsCallLogTestCases from 'framework' to 'telecom' component" into main
  - Ensure vendor seapp contexts can't use coredomain
    
    Bug: 280547417
    Test: build
    Change-Id: Iadff17523767f91f073c6569400e17f1da55fbdc
    
  - Merge "Move CtsGestureTestCases from 'framework' to 'uitoolkit' component" into main
  - Merge "[stdlib]: Expose debug track friendly critical paths" into main
  - Merge "Disable Hidden API Checks for ENG Builds" into main
  - Add prompt functionality.
    
    - Ask the user for some input. The omnibox turns into an input box.
    - Can optionally take a list of possible values, shown in a dropdown &
      fuzzy find functionality.
    - Designed to be used in commands mainly, but can be used from anywhere.
    - Used in SetTimestampFormat command to select timestamp format from a
      list of options.
    
    Change-Id: I0da490afbe3f2df0b7700b610e250b4b29d6ca17
  - doc: fix debug policy DT path
    
    Test: TH
    Change-Id: Ibb7ac263f592643995e2a798e38ae33eeb3e2ab1
    
  - Merge "Disable input encryption test on Wear" into main
  - Merge "Make libunwind available on ramdisk" into main
  - Merge "libbinder_ndk_unit_test: avoid race" into main
  - Merge "Don't assume size of functions." into main
  - Merge "Add Max/Maxu Min/Minu as intrinsics" into main
  - Merge "Fixed incorrect profile shown on Settings" into main
  - Merge changes from topic "gfxstream-logging" into main
    
    * changes:
      gfxstream: add compile time logging + metrics
      gfxstream: add default args to each meson build file
      gfxstream: add debug callback
    
  - Merge changes I069e633f,I8cac77d6 into main
    
    * changes:
      binderRpcTest: meet presubmit SLO time
      binderRpcTest: -= tuple += named values
    
  - Move socket transport service to Rust
    
    Bug: 274600496
    Test: ninja
    Test: avatar test
    Change-Id: I35b3572686de012b14ce18455dd8750ebe24871f
    
  - Merge "Increase connection timeout for phonepolicyTest" into main
  - Merge "Sanitize logging" into main
  - Autoupdate of 2 submodules
    
    *hardware/google/aemu updated to 3822509d683a5232a73b7a3a7a4beef21f58a16b
    Revert "multidisplay: add isPixelFold method"
    
    Revert submission 2680008-emulator-pixel-fold-isPixelFold
    
    Reason for revert: Cuttlefish failing to boot with Gfxstream
    
    Bug: b/293655301
    
    Reverted changes: /q/submissionid:2680008-emulator-pixel-fold-isPixelFold
    
    Change-Id: I85d3ede94caea14b6c19db15c13a2ecdcef57572
    
    *hardware/google/gfxstream updated to 7f3cf753d9e2c066870b329fc85b46ebaeb1b0ca
    Merge "Revert "foldable-gfxstream: always post when it is pixel_fold"" into main
    
  - Merge "riscv64: add <sys/hwprobe.h>." into main
  - Merge changes I8752aea9,I89d1d6a1 into main
    
    * changes:
      Added unit tests
      Moved UICC application enabled callback
    
  - Merge "Fixed remote SIM removal not working" into main
  - Merge changes I3a7cbcda,If99f0873,I8567714c,I35510311 into main
    
    * changes:
      Fixed crash when LPA is not available
      Fixed phone number showed in bugreport
      Fixed port index not updated on inactive eSIM
      Migrated unit test to the new subscription manager
    
  - Merge "libsnapshot: Verify the ordering of COW operations." into main
  - Merge changes from topic "add_unconverted_reasons_to_bp2buildprogress" into main
    
    * changes:
      Add unconverted reason(s) from metrics and heuristics to progress report
      Get bp2build metrics in bp2build_progress script
    
  - lmkd: check pgrefill vmstat when deciding active reclaim
    
    In rare cases it's possible that pgscan is not changing because inactive
    LRU is empty and can't be refilled from the active LRU due to all
    pages being hot. In such conditions pgscan_kswapd/pgscan_direct will
    not change while pgrefill will be increasing due to active LRU being
    scanned. Lmkd would incorrectly treat this situation as if no reclaim
    activity happened.
    Change lmkd to check pgrefill as well to detect such conditions.
    
    Bug: 288383787
    Change-Id: I6b49607429e2f673bba2645ccddff1a141afbcd1
    Signed-off-by: Suren Baghdasaryan <surenb@google.com>
    
  - Enable R8 compat for SdkSandbox app
    
    This explicitly preserves existing behavior, and should be a no-op
    with respect to current compilation. As R8 will soon be the global
    default, an explicit setting is required to avoid issues with
    optimizations in R8 full mode use of reflection with SandboxedSdkHolder
    These issues have been resolved elsewhere but not yet upstreamed.
    
    Bug: 293177283
    Test: atest SdkSandboxManagerTests
    Change-Id: I481c74db37e273f0feaa13d3ac94ca0c3f9d3bbb
    
  - Merge "Add handlers for 5G SA registration events" into main
  - Merge "Stabilize handover controller" into main
  - Merge "Move fd tranport service to Rust" into main
  - Add a presubmit that functions names are snake_case
    
    R=lalitm@google.com
    
    Change-Id: Ic55ba07d4307cd97d3d854f79b41c2927b81ce34
  - Merge "Basic create for beacons" into main
  - Merge "Fix memory leaks in Label management of Text Assembler." into main
  - Improve handling of the NAN math.h<->HIDL conflict
    
    Wifi HAL headers and math.h both declare NAN -- either as an enumerator
    or as a preprocessor macro. Currently the wifi non-auto-generated
    source in hardware/interfaces/wifi uses "#undef NAN" directives to
    make the code compile, but upgrading libc++ incidentally changes where
    math.h is included, breaking the parsing of the wifi HAL headers.
    
    To improve the situation, automatically #undef NAN in the
    auto-generated headers before declaring a NAN enumerator. This #undef
    ensures that the enumerator declaration will always be parseable,
    and that it's also always possible to include math.h before or after
    the HIDL header.
    
    It does not generally resolve the conflict, though, because include
    order determines which NAN is declared. Code trying to use the wifi NAN
    can use "#undef NAN" to guarantee that the math.h NAN is gone.
    
    Bug: http://b/175635923
    Test: treehugger
    Change-Id: Ib947867b439652b3bf1d23172f876b2418b544bf
    
  - Autoupdate of 2 submodules
    
    *hardware/google/aemu updated to 4199db78d15d4e3ea15fecc5ccd4dddcbcaf9dc9
    multidisplay: add isPixelFold method
    
    This is needed for gfxstream to do appropriate post
    action for pixel fold.
    
    Bug: 289373564
    
    Change-Id: I382db8a665b2dcbe28d35670ed970268fe1414ea
    
    *hardware/google/gfxstream updated to 2094f2121a66ece452cd7a38061f239e60df06b0
    Merge "foldable-gfxstream: always post when it is pixel_fold" into main
    
  - Merge "libhardware: make local_time_hal vendor only" into main
  - Merge "Merge "Merge "Merge "Merge "cts: Fix StorageTest#testClearSpace for TVs" into android11-tests-dev am: 14b67624b1" into android12-tests-dev am: f428933ce8" into android12L-tests-dev am: 6ad52799b8" into android13-tests-dev am: 18b4bf6609" into main
  - Add build target for kotlinx-coroutines-rx2
    
    Bug: 293507234
    Change-Id: Ie2b000146a2004a393ab8bb851dfff9b3a317091
    Test: m kotlinx-coroutines-rx2
    
  - Merge "lite-tr: Mirgating remaining Fp Test to shared." into main
  - Merge "Fix various issues with pvmfw's "baremetal" build" into main
  - Merge "Adding include to functional" into main
  - Merge "Replace injected OperationToBinsMap with a constant global" into main
  - Update viewport when zooming
    
    There is an zoom button in AEMU, which will temporarily change the
    size of the full content.
    
    Bug: 242103999
    Bug: 269584982
    Change-Id: I32031de0b2cf29b916cdf5c5b53cea1f1eca2b0d
    
  - Merge "mediapc: Release output in a separate thread to unblock queueing input" into main
  - Merge "Port setRadioCapability on dds change" into main
  - Merge "Change names of Perfetto SQL functions to hacker_style." into main
  - Clear settings before running periodic provisioner tests
    
    It's possible that the previous configuration was either wrong or that
    the error budget is exhausted before running the test.
    
    Clear the preferences before all tests so that we have a clean slate
    for each one.
    
    Bug: 293542049
    Test: RkpdAppUnitTests
    Change-Id: Idf8c152c518e09716263a1d0614e57a9a3daf1cf
    
  - Merge "Allow ramdisk targets to set cflags/exclude_srcs." into main
  - Merge "binder_rpc_fuzzer: improve speed by reducing the no of connections" into main
  - Merge "codec2 hal: AIDL type conversion, step 1" into main
  - [automerger skipped] Disable system certificate test. am: c98638933f am: 437f3f87e2 -s ours am: 5b3f0338c2 -s ours
    
    am skip reason: Merged-In I80200a6d9438ca0c3b66cc2393f5ad607d104830 with SHA-1 1e0263d872 is already in history
    
    Original change: https://android-review.googlesource.com/c/platform/external/conscrypt/+/2679053
    
    Change-Id: Ic5c625444ca5ee2a243b2528df43538b8258292b
    Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
    
  - Merge "[CTS] Add permissions module cts tests to visibility for libnativehelper_compat_libc++ lib" into main
  - Autoupdate of 3 submodules
    
    *device/google/redbull updated to eac9026602df111fb8fc32f8c5486537ea143a02
    Merge "redbull device FCM -= android.*" into main
    *device/google/redfin updated to f2a26753724359698d6afeecfacb7b1d7f51199c
    device FCM -= android.*
    
    Bug: 290408770
    Test: N/A
    Change-Id: I4b47171f62daebb85bb405e7a9713ef32c888913
    
    *device/google/sunfish updated to 419fec4120c78ad4258df01664e54d900904f31a
    Merge "device FCM -= android.*" into main
    
  - Merge "Add support for product_available and vendor_available flags." into main
  - Merge "Revert "[hwasan] remove workaround for fixed toolchain issue"" into main
  - Add publicly visible metalava-signature-reader library
    
    Packages up the metalava model api and text implementation into a
    single library that can be used by host side code that needs to parse
    an API signature file.
    
    Bug: 293578003
    Test: m metalava-signature-reader
    Change-Id: Ie9ff0ef0ef5f774c9993a017c45272c6ab4d66b3
    
  - Merge "Unregister transport before remove chip for fd, socket, and websocket" into main
  - Extract metalava-model-text as a separate library
    
    This does not move the source code as that would break `./gradlew` so
    for now this just uses globs to include the text model source into the
    new `metalava-model-text` library and exclude it from the `metalava`
    binary.
    
    Bug: 287241408
    Test: m checkapi
    Change-Id: I6784c95e68867cca1892733f0e3bb902b8a5f01e
    
  - Merge "Make sure to send HOVER_EXIT when starting touch exploration if we haven't sent it already." into main
  - Merge "Create py_test to support python_test_host" into main
  - Merge "Add test mode for java config modules" into main
  - Merge "Fix trace category parsing" into main
  - Merge changes Ib38b115b,I13fc1bc4 into main
    
    * changes:
      Add safety comments and TODO.
      Add safety comments, or temporarily allow them to be omitted.
    
  - Check that DRM device name corresponds to virtio-gpu
    
    ... to hopefully speed up the debug cycle when unexpected kernel
    modules are enabled.
    
    Bug: n/a
    Test: cvd start
    Change-Id: If8cca660b2dd5d077e06f04427510e12e56d08c6
    
  - Simple device-level patch and get for beacons
    
    * Implement patch and get for advertising interval parameter
    * Improve bluetooth mod.rs to handle mocking of specific functions
    * Re-export beacon from bluetooth module
    
    Bug: 291801326
    Test: atest libnetsim_cxx_tests
    Change-Id: Ia6b4aabdf2b7e03fbe28da6f5c8c994c6d815539
    
  - Autoupdate of 2 submodules
    
    *build/bazel updated to ff272a109705a81d5e9f46e37c73889270657321
    Merge "Disable cgo explicitly" into main
    *build/soong updated to 0cc3d672ce859de00e0089c9f5f8c361e9490d36
    Merge "Add GoStdlib mnemonic for special handling of ''" into main
    
  - Merge changes Ie292173d,I23f14f83 into main
    
    * changes:
      Panic if soongConfig and productConfig values do not match
      Check if soong_config_var propertystruct is zero before panicking
    
  - csis: Fix removing filtering after active scan
    
    If active scan was completed and no members was found,
    controlelr filtering was not properly cleared.
    This patch fixes that
    
    Bug: 274554241
    Test: atest --host bluetooth_csis_test
    Tag: #feature
    Change-Id: Idc71b3024aff21423a36dbed97106cbba79141f4
    
  - Merge "Delete the javac/classes directory after zipping it" into main
  - Merge changes Iab049f44,I35f76b0c,I1bbe9a27,I7e86c323 into main
    
    * changes:
      Replace `Validate*` funcs with generic version
      Utilize `Result` return for Init logic
      Add new generic InitConfig to replace others
      Make GenerateGflag length independent
    
  - Mark CtsPackageManagerTestCases as renamed.
    
    This would allow CtsPackageManagerTestCases in presubmit-large to mitigate suite timeouts.
    
    Bug: 292174535
    Test: presubmit
    Change-Id: I73e4082f6164589fece5d0b62ed9f41bea6c29d7
    
  - Merge "Import AndroidX from build 10571331" into main
  - RISCV: [Codegen] Add VisitInvokePolymorphic
    
    Test: m test-art-host-gtest
    Bug: 283082089
    Change-Id: I34f3efabc8efe2dc3115b1a5b20b357447a0de53
    Signed-off-by: Lifang Xia <lifang_xia@linux.alibaba.com>
    Signed-off-by: Wendong Wang <wangwd@xcvmbyte.com>
    
  - Merge "Add sysprop for identifying strict-run bugreports" into main
  - Revert "Merge libart and libart-compiler into a single library"
    
    This reverts commit 35cca3e296346277422aaee030edced697e09319.
    
    Reason for revert: perf regression b/293406139
    
    Change-Id: I34693a930a68c06300b51f75e60c8b724903f938
    
  - RISCV: [Codegen] Add VisitInvokeCustom
    
    Test: m test-art-host-gtest
    Bug: 283082089
    Change-Id: Iac5fb47d2e0273bd24f0ecdfcbb52d325456e380
    Signed-off-by: Lifang Xia <lifang_xia@linux.alibaba.com>
    Signed-off-by: Wendong Wang <wangwd@xcvmbyte.com>
    
  - Merge "Merge "CtsVerifier: fix JSON file for upload to database" into android13-tests-dev am: 3e8838d085" into main
  - Merge "leaudio: Fix disable LeAudio profile while getting into streaming" into main
  - Extract metalava-model-api as a separate library
    
    This does not move the source code as that would break `./gradlew` so
    for now this just uses globs to include the model source into the new
    `metalava-model-api` library and exclude it from the `metalava` binary.
    
    Bug: 287241408
    Test: m checkapi
    Change-Id: Ia89c1c1912367c42e6ab0c49cbda318179c9064f
    
  - Check Android.bp formatting before uploading
    
    Bug: 293578003
    Test: bpfmt -w Android.bp has no effect
    Change-Id: Ib157fab2c62c1cc4a32d68935bb1761523f25ee6
    
  - [automerger skipped] [DO NOT MERGE] Handle unavailable properties am: aeafec3db0 -s ours am: 373a052124 -s ours
    
    am skip reason: subject contains skip directive
    
    Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/2654145
    
    Change-Id: I3a400c1f5427cffca8e78ffebfa690d0a87cd42b
    Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
    
  - RISCV: [Codegen] Add VisitInvokeVirtual
    
    Test: m test-art-host-gtest
    Bug: 283082089
    Change-Id: Iba11242c634a401f9d797e81526d735bab66d6dc
    Signed-off-by: Lifang Xia <lifang_xia@linux.alibaba.com>
    Signed-off-by: Wendong Wang <wangwd@xcvmbyte.com>
    
  - Merge "Android.bp: Removed build instruction for ossfuzz-libldac-encode_fuzzer" into main
  - RISCV: [Codegen] Add VisitInvokeStaticOrDirect
    
    Test: m test-art-host-gtest
    Bug: 283082089
    Signed-off-by: Lifang Xia <lifang_xia@linux.alibaba.com>
    Signed-off-by: Wendong Wang <wangwd@xcvmbyte.com>
    Change-Id: If7ff995eb3a13785e6b524247ca951d3777baea7
    
  - RISCV: [Codegen] Define instrinsics but not implemented
    
    Test: m test-art-host-gtest
    Bug: 283082089
    Signed-off-by: Lifang Xia <lifang_xia@linux.alibaba.com>
    Signed-off-by: Wendong Wang <wangwd@xcvmbyte.com>
    Change-Id: I7180559a5c43ac89d5794e25275045d76a8a7e32
    
  - InvokeStatic: pass (nullptr, 0) when there are no args
    
    Previously, the behavior depended on how the STL implemented a
    std::array of zero length. libc++'s behavior changed in D80821 from a
    non-null data() to a null data().
    
    In InvokeInstance, vregs will always have at least the receiver, so
    data() will never be null.
    
    Bug: b/293402944
    Test: treehugger
    Change-Id: Ibd2c772baa14993b2fbdd2abdb6b58621dca0c5c
    
  - Accumulate locked memory in showmap
    
    This change updates showmap's add_mem_usage function to sum the 'locked'
    field so that the total locked-memory value is correctly reported.
    
    Test: Check that showmap's "Locked" total is non-zero if the individual
          VMAs report non-zero.
    Bug: 293153768
    Change-Id: I86a28f41ecc712a9ec0735b19744efdcae86486d
    
  - [reclient] Update live version to 0.111.0.1ccaa23.
    
    Bug: b/169675226
    Change-Id: I84e9f66372ad8bae98a429b0bc635c61b853881e
    
  - Merge "[stdlib]: Fix the broken monitor contention slice detection" into main
  - Merge remote-tracking branch 'aosp/metalava-main' into aosp/main
    
    Bug: 288550547
    Test: m checkapi
    Change-Id: I08f54c3233b3744949bdb174fb4d30e3e7a4b0ef
    
  - Update test name in test-mapping
    
    Following changes from aosp/2675954
    
    Bug: 293309721
    Change-Id: Ia1862c3330f02118c5c36696235de0810d578c2d
    
  - Merge changes Ia5fc3e53,Ie1ab6013,I1cd5acb3 into main
    
    * changes:
      Unregister BroadcastReceiver and OnSubscriptionsChangedListener.
      Disable KeepaliveStatsTracker before T.
      Disable KeepaliveStatsTracker instead of throwing.
    
  - Merge "Add, standardise or temporarily opt out of safety comments for keystore2." into main
  - Add internal API to bind devices to VFIO
    
    An app can specify devices to be assigned. VirtualizationService will
    handle unbinding devices and binding them to VFIO.
    VirtualizationService will also assemble a DTBO for VM.
    
    Bug: 287379025
    Test: TH
    Change-Id: Icd720aa5ebde6dc4b6fa2b36cc22af27183462a9
    
  - Merge "Add missing package statements to ojluni tests" into main
  - Merge changes from topic "openjdk17-formatter" into main
    
    * changes:
      Merge java.util from jdk-17.0.6-ga into the aosp/main branch
      Import java.util from jdk-17.0.6-ga
    
  - Merge "Simplify how Trusty gets assembly files" into main
  - Autoupdate of 2 submodules
    
    *external/open-dice updated to 503e8a69241b54f1fb32f939aa4eb0724ca18057
    Limit availability of baremetal libraries
    
    Rework the defaults to avoid enabling vendor_available, apex_available,
    or host_supported in the "baremetal" libraries, where they shouldn't be
    used as the static libraries built from these modules aren't distributed
    through APEXes or vendor code and are not expected to be compatible with
    the host.
    
    Bug: 293260907
    Test: mmma external/open-dice
    Change-Id: I920f426adbe5f1896b8a65dd0d1b302094768bae
    
    *system/security updated to 88e1231c3a9553957cb245703eefcef509f4844b
    Merge "diced: Limit availability of no_std libraries" into main
    
  - ASuite: update prebuilt atest by uploader.(10575467).
    
    The prebuilt atest was downloaded from:
        aosp-main/aosp_cf_x86_64_phone-trunk_staging-userdebug:10575467.
    SHA256:3ad853c3d946c0280f1cdafa90c187678d7f8c220833be07a9fa07cc5166d891
    
    Bug: 293537768
    Bug: 293262028
    Bug: 292034539
    Bug: 275768289
    Bug: 292173797
    Bug: 292051978
    Bug: 291681482
    Bug: 287136126
    
    aosp/2673057 6d5bdea: Fix type hint exception on python3.7
    aosp/2622820 c478af2: [Mobly+atest] Support --iterations, --rerun_until_failure, and --retry_any_failure
    aosp/2676763 94f521b: Fix atest_unittests failure
    aosp/2665740 76797d8: Not zip the test output when BES upload is not enabled.
    aosp/2675415 20c0cc8: Fix atest_unittests failure on CI
    aosp/2674835 d2aae41: Fix type hint exception on python3.7
    aosp/2674837 4863ae1: Fix type hint exception on python3.7
    aosp/2657038 2e96e1c: [Mobly+ATest] Run the test executable directly if no requirements declared
    aosp/2671077 3e2518d: Create symbolic link to Bazel test logs.
    aosp/2675426 283ee97: Switch using embedded launcher for unit test
    aosp/2677272 905a16f: Only customize PYTHONPATH if exist in environment
    aosp/2671338 a7b5bbb: Fix type hint exception on python3.7
    
    Test: source build/envsetup.sh && lunch
        atest atest_unittests
        $ANDROID_BUILD_TOP/prebuilts/asuite/atest/smoke_tests
        tools/asuite/atest/atest_integration_tests.py -cy
        tools/asuite/atest/atest_integration_tests.py -ce
    Change-Id: If9a277aa82d437b3c8c680f28d7ec90f51d6db2f
    
  - Support to report import paths
    
    Some test sources will be missed due to TestMapping doesn't report import
    paths to AnTS.
    
    Validate with test run:
    https://android-build.corp.google.com/test_investigate/?invocationId=I42000010181702967&testResultId=TR36728816837235866
    
    Bug: 238575327
    Test: run_tradefed_tests.sh --class com.android.tradefed.util.testmapping.TestMappingTest
    Test: run_tradefed_tests.sh --class com.android.tradefed.testtype.suite.TestMappingSuiteRunnerTest
    Change-Id: I0bfe6e1ab92c7e136e6a697b43cacca09759e5dc
    
  - Reland "Depend only on userfaultfd's SIGBUS feature to use it"
    
    This reverts commit fab50833f1787848002bb96a6033f08a8c5212d3.
    
    Reason for revert: Fix the features requested in uffd API ioctl.
    
    Bug: 160737021
    Bug: 291694105
    Bug: 292449808
    Test: On a host kernel < 5.14 run ART_USE_READ_BARRIER=false
    art/test/testrunner/testunner.py --host
    
    Change-Id: I41be8f1d080043558ac7125980fef599dadeb6d5
    
  - Merge "leaudio: Minor coding style fix and reduntant function remove" into main
  - Merge "LeAudio: Workaround VoIP calls not using Telecom API" into main
  - Merge "Convert build_api to a property of RemoteHostDeviceFactory" into main
  - Autoupdate of 3 submodules
    
    *build/make updated to 9997fdbacf90ba6a41a14e1bbc5b499dce7fd669
    Merge "aconfig: require exactly one bug field" into main
    *cts updated to e980c1533c0016249f539609793c87b013e29e62
    Merge "AconfigDemo: associate each flag with exactly one bug" into main
    *development updated to fcfc138048605bcf18558a12f6300950399fc3da
    Merge "AconfigDemo: associate each flag with exactly one bug" into main
    
  - Merge "Move CtsAdbManagerHostTestCases from 'framework' to 'devtools' component" into main
  - Merge "Stop using intent from HAP profile to ActiveDeviceManager" into main
  - Floss: Implements host of floss bluetooth test server
    
    Implements host and security.OnPairing of floss bluetooth test server.
    
    Bug: 289480188
    Test: mma packages/modules/Bluetooth && pts-bot GAP
    Tag: #floss
    Change-Id: Iddb56f21bd9b773bfc6870b7dbf99e73a5cd4f5a
    
  - Merge "Skip presubmit for flaky NetworkPolicy related tests due to Out of SLO" into main
  - Merge "Fix EtherentTetheringTest flaky" into main
  - Merge "[ICU] Disable JP phrase breaking test case" into main
  - Merge "Address comment from ag/12107302" into main
  - Merge "Skip presubmit for flaky tests" into main
  - Merge "Handle lsdump paths containing soong config hash" into main
  - Merge "Add 'packagemanager' component to KNOWN_COMPONENTS" into main
  - Merge "Add IPV6_PKTINFO constant in OsConstants" into main
  - Merge "Switch to use linux_musl-arm64 cuttlefish host tools" into main
  - Autoupdate of 2 submodules
    
    *frameworks/libs/net updated to e85f13216e9c9e2e0f2b6907ef5c331051900dfd
    Merge "Make SkipPresubmit annotation visible by HostsideVpnTests" into main
    *packages/modules/Connectivity updated to a6be6cd48aab3ffd60396bc27da9e4312695de1d
    Merge changes from topic "hostsidevpntestflaky" into main
    
    * changes:
      Skip presubmit for flaky tests in FrameworksNetTests due to Out of SLO
      Skip presubmit for flaky tests in HostsideVpnTests due to Out of SLO
    
    
  - Merge "clang-tools: Re-enable bindgen prebuilt" into main
  - Do not stop service discovery when stopping inquiry
    
    We already don't clear the service discovery *queue* when
    cancelDiscovery() is called, but we should also let the existing
    procedure keep on going.
    
    Bug: 273759359
    Test: m .
    Change-Id: I9ca8a5a11210ea4689be96813bd4a52f99a3aa0d
    
  - Update OWNERS
    
    Test: manual verification
    
    Change-Id: I0f70fcce1c0204b6b57fed397e3f644863a24342
    
  - Merge "Add Cpop/Cpopw as an intrinsic" into main
  - Merge "Revert "Revert "Stop using intent from HearingAid profile to ActiveDeviceManager""" into main
  - Add a debugging switch for trunk stable configuration
    
    It is important that clients and services both behave like the last
    frozen version of the interface, so both sides have protections.
    In order to test each side seperately, this switch is introduced.
    READ means only the parcel reads and the onTransact in the Stub/Bn*
    classes contain the protections.
    WRITE means only the parcel writes and sending the transactions
    contain the protections.
    
    Test: atest aidl_integration_test with all three options
    Bug: 290265210
    
    Change-Id: I4b097d5bcea47af3ff162e751a64d3e5eb6c6454
    
  - Merge "Increase timeout to deflake tests" into main
  - Merge "Return a Result from PrepareBootEnvImage" into main
  - Merge changes If146f3dd,I53d9c8d2 into main
    
    * changes:
      Added unit tests for SubscriptionManagerService
      Enhanced subscription database manager logs
    
  - Merge "Enable CFI for riscv64" into main
  - Merge "Emit gtest in BUILD files only if Android.bp sets it" into main
  - Tradefed ()
    
    Automatic import from tradefed_prebuilt_20230727_0201_RC00
    
    https://rapid.corp.google.com/#candidate/tradefed_prebuilt/tradefed_prebuilt_20230727_0201/tradefed_prebuilt_20230727_0201_RC00
    
    Tradefed
    This build IS suitable for public release.
    
    Bug: 178523691
    Test: None
    
    Change-Id: I27019cd5fb1d1e94e480559ae0ab9a5931af5b48
    
  - Merge "trusty: keymint: Statically link Rust deps" into main
  - Merge changes from topic "go-test-bp2build" into main
    
    * changes:
      Do not convert soong's tests in bp2build
      Create additional test target for go modules in bp2build
    
  - Autoupdate of 2 submodules
    
    *frameworks/opt/net/ims updated to 82845c3da780c14d1852d85ede6ff90aa3c70b1b
    Fixed NullPointException after SRVCC completed event
    
    If IImsCallSessionListener.callSessionProgressing() is called from
    ImsService right after receiving SRVCC complete state event from RIL, Framework tries to access CallProfile. However, NPE was observed because CallProfile is released by SRVCC completed event.
    
    Bug: 286447293
    Test: atest ImsCallTest
    Change-Id: I7e86d8b8190c65b757b753fab2ea4564a7fccf7c
    Merged-In: I7e86d8b8190c65b757b753fab2ea4564a7fccf7c
    
    *frameworks/opt/telephony updated to 7e9ac17a594678158672a589b11335679ff86f5a
    Merge "Add test function to verify abnormal case." into main
    
  - Merge changes I02e3046b,I5b33ca47 into main
    
    * changes:
      libprocessgroup: optimize SetAttributeAction::ExecuteForProcess performance
      libprocessgroup: fix reset of file_v2_name
    
  - Add information about the need for optimization flags for order files
    
    Change-Id: Ide74d5062352ce0881dc17ffa27b88726a527ab0
    
  - Merge "Support a reduced secure_env on Mac OS" into main
  - Merge "Continue screen recording when screens leave and come back" into main
  - Merge changes from topic "am-c7f6bc944a3846a1a7c446207caf94a7" into main
    
    * changes:
      Merge changes from topic "am-ec280093c2764028ac6b86efa8bf0627" into android13-tests-dev am: 6128884518
      [automerger skipped] Merge "RESTRICT AUTOMERGE Skip some tests in SplashscreenTests in Auto." into android12L-tests-dev am: be3145d57a -s ours am: ea660f99aa -s ours
    
  - Merge "Merge "Check LAST_KNOWN_CELL_IDENTITY only if network is registered." into android13-tests-dev am: 4178a02dd6" into main
  - Merge "Merge "Merge "[RESTRICT MERGE] Modify assist testcase-Add NULL check" into android12L-tests-dev am: 1832f79860" into android13-tests-dev am: 8f3fc05972" into main
  - Roll ANGLE from af5bf5b8245e to 179924cbfaf3 (5 revisions)
    
    https://chromium.googlesource.com/angle/angle.git/+log/af5bf5b8245e..179924cbfaf3
    
    Please enable autosubmit on changes if possible when approving them.
    
    If this roll has caused a breakage, revert this CL and stop the roller
    using the controls here:
    https://autoroll.skia.org/r/angle-android-autoroll
    Please CC angle-team@google.com,rmistry@google.com,romanl@google.com on the revert to ensure that a human
    is aware of the problem.
    
    To file a bug in ANGLE: https://bugs.chromium.org/p/angleproject/issues/entry
    
    To report a problem with the AutoRoller itself, please file a bug:
    https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug
    
    Documentation for the AutoRoller is here:
    https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
    
    Test: Presubmit checks will test this change.
    Exempt-From-Owner-Approval: The autoroll bot does not require owner approval.
    Bug: b/275102061
    Change-Id: I6e07fa5afb57a9f90e0e70e692e90655a7e13b08
    
  - Switch from 0/1 to true/false for has_side_effects.
    
    Test: compare generated files
    
    Change-Id: I01d3b18031a064eb34ae9315e42560e0873a8d3e
    
  - Return appropriate error code on failure.
    
    Weaver applet should return THROTTLE error if the
    remaining time is not zero, otherise  return INCORRECT_KEY
    
    Bug: 292464264
    Test: run vts -m VtsHalWeaverTargetTest
    Change-Id: Iccf65fc24835d42f2576ef556cca81287f5685c5
    
  - Merge "Fingerprint files/symlinks/dirs" into main
  - Merge "use mActiveDeviceManager instead of intent" into main
  - Use messages from model.proto to create beacons
    
    * Beacon devices can now be created from protobuf
    * Advertise data for beacons can now be created from protobuf
    
    Bug: 291287611
    Test: out/host/linux-x86/bin/netsimd -d
    Test: atest libnetsim_cxx_tests | grep adv_data
    Change-Id: I38f8335ed147d96d4a0dfd926007ee0c76b4cbd6
    
  - Autoupdate of 2 submodules
    
    *build/bazel updated to 6fb6d5b90be82762d3d29be5d3e545ca84b28325
    Merge "Reroute rules_python repo to actual bazelbuild repo" into main
    *build/soong updated to 4702ad9786a11ee881cc4c06784b60b3acf41e0c
    Merge "Allowlist build files in rules_python" into main
    
  - riscv64: integer opcodes
    
    Test: Run these opcodes against all interpreter
    tests on a Linux RISC-V VM.
    
    (1) setup
      lunch aosp_riscv64-userdebug
    
      export ART_TEST_SSH_USER=ubuntu
      export ART_TEST_SSH_HOST=localhost
      export ART_TEST_SSH_PORT=10001
      export ART_TEST_ON_VM=true
    
      . art/tools/buildbot-utils.sh
      art/tools/buildbot-build.sh --target
    
      # Create, boot and configure the VM.
      art/tools/buildbot-vm.sh create
      art/tools/buildbot-vm.sh boot
      art/tools/buildbot-vm.sh setup-ssh  # password: 'ubuntu'
    
      art/tools/buildbot-cleanup-device.sh
      art/tools/buildbot-setup-device.sh
      art/tools/buildbot-sync.sh
    
    (2) test
      art/test.py --target -r --no-prebuild --ndebug --64  -j 12 --cdex-none --interpreter
    
    Also exercised on cuttlefish boot. No SIGSEGV or SIGILL noted.
    
    Bug: 283082047
    
    Change-Id: Ib0f6a980d6bf19475a2d97e98b4bab98e98cca6e
    
  - Merge "Merge "Exclude testcases that cannot be run in unlocked device state" into android13-tests-dev am: 3634e94750" into main
  - Merge "Migrate shell-as to platform_testing/utils" into main
  - [Statsd] Added support getReport() via Pipe/FileDescriptor
    
    - double pipe approach
    - max report size enforced to be 20MB
    - added test to validate getReport() with over 1MB size
    - new implementation is flag guarded
    
    Bug: b/286473773
    Test: GtsStatsdHostTestCases
    
    Change-Id: I06bb2298cf5877bf440d3c7f8e64446e3106288a
    Merged-In: I06bb2298cf5877bf440d3c7f8e64446e3106288a
    
  - Allow scudo headers to be used in ramdisk
    
    This allows libdebuggerd to be used in ramdisk, as scudo header is a
    dependency of libdebuggerd
    
    Test: th
    Change-Id: I3f463c50590f287e6f752b64d35bd07e73cf7009
    
  - Merge changes I1138724f,I167a6a35 into main
    
    * changes:
      AVATAR: Run lint and fix it
      AVATAR: Run format | Remove import | Update json
    
  - Merge "Do not enable AFDO if the option is off, even if there is a profile file" into main
  - Merge "Pandora: Increase OPP timeout" into main
  - Merge "[hwasan] remove workaround for fixed toolchain issue" into main
  - Add lease retry to Oxygen lease failures
    
    Bug-Id: 214249088
    Test: Build passed
    Change-Id: I4e38df046ca7c838a3f0b9b2a281147809a3a7ca
    
  - Merge "Avoid extra copy of JNI libs zip" into main
  - Merge "Merge "Merge "Merge "Merge "CTS - Skip UsbIncidentTest if device doesn't support USB feature" into android11-tests-dev am: bd3252ab68" into android12-tests-dev am: 95d3906ef9" into android12L-tests-dev am: 839885fe6e" into android13-tests-dev am: 98066947c6" into main
  - Merge "Check given params for pause/resume APIs." into main
  - Replace session_id with session_handle in onDataReceive
    
    Bug: 292976096
    Test: Test data transfer
    Change-Id: I301cef792ed526b77f9163463273c370037d23a4
    
  - Manual roll ANGLE from 58cb5c8396a3 to af5bf5b8245e (2 revisions)
    
    Manual roll requested by romanl@google.com
    
    https://chromium.googlesource.com/angle/angle.git/+log/58cb5c8396a3..af5bf5b8245e
    
    Please enable autosubmit on changes if possible when approving them.
    
    If this roll has caused a breakage, revert this CL and stop the roller
    using the controls here:
    https://autoroll.skia.org/r/angle-android-autoroll
    Please CC angle-team@google.com,rmistry@google.com,romanl@google.com on the revert to ensure that a human
    is aware of the problem.
    
    To file a bug in ANGLE: https://bugs.chromium.org/p/angleproject/issues/entry
    
    To report a problem with the AutoRoller itself, please file a bug:
    https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug
    
    Documentation for the AutoRoller is here:
    https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
    
    Test: Presubmit checks will test this change.
    Exempt-From-Owner-Approval: The autoroll bot does not require owner approval.
    Change-Id: I7c8c8d7436afc5c304014525ec5c5668d63c1a51
    
  - Merge "RESTRICT AUTOMERGE [Safety Labels] Fix incorrect assumption in `BaseUsePermissionTest`" into main
  - Merge "Merge "Changed title resource id for SuspendPackageTest" into android13-tests-dev am: d9b3f66521" into main
  - Merge "[tp]: Fix runnable state after process fork" into main
  - Merge "interp: Update FSgnj to call Fmv when conditions are met." into main
  - Merge "Verify key characteristics of generated/imported keys." into main
  - Merge "Support launching multiple isolated devices with netsim" into main
  - Merge "Add bug component to cutils" into main
  - ui: Pass pid to pending deep-link args.
    
    Fixes a typo where the current pending deep-link 'pid' is filled using
    'args.dur' instead of 'args.pid'.
    
    Change-Id: I94e544c44c099887498e289f374535f98c9aa766
  - Merge "Linker: no demangle." into main
  - Autoupdate of 3 submodules
    
    *build/soong updated to db195fd4cb3be36a0a51dedc91dd60bf0ee3a8c3
    Merge changes from topic "reland-hack-rv64-libc++" into main
    
    * changes:
      Revert "Revert "Set VIC as minimum SDK version for riscv64""
      Revert "Revert "Use prebuilt NDK libc++ for rv64.""
    
    *packages/modules/common updated to dc63d0da62a3b87d80dfd4cc6cb6538fd0c4783a
    Add VIC crt files to allowed deps
    
    When building riscv64 targets, the minimum version is VIC, which
    includes the crt libraries when building mainline modules for riscv64.
    These dependencies do not appear when building for other architectures.
    
    Apex-Size-Increase: None, libs do not appear outside of riscv64 targets.
    Previous-Platform-Support: Not a new dep, just new SDK versions.
    Aosp-First: AOSP-first
    Test-Info: Verified build and launch of riscv64 targets.
    Bug: 291150284
    Merged-In: I340cc92af1c09b470e4a58259a843caf9022f6e9
    Change-Id: If11ef302026b99378f6be308b63217d4e08bd6da
    
    *prebuilts/ndk updated to 381452a359d7634cf296d40105451ccb29600100
    Merge "Reland "Add rv64 prebuilts directly from the toolchain."" into main
    
  - Merge "aconfig: improve error messages" into main
  - Merge "Fix test failures in releasetools" into main
  - Merge "Refactor cuttlefish::selector::ArgumentsLexer" into main
  - Autoupdate of 2 submodules
    
    *hardware/interfaces updated to fb54986369c5067734e62e90fe5fcd634ea82966
    Merge "Vts VR test -= vr.h - IWYU" into main
    *hardware/libhardware updated to 8998161fc50baeb124d1cde84ffa988373ebab11
    Merge "libhardware: make vr vendor only" into main
    
  - Autoupdate of 2 submodules
    
    *frameworks/base updated to e502678bd1723847d623d757259847742db48e60
    Merge "Cleaned up the usage of SubscriptionManger.getSubId" into main
    *frameworks/opt/telephony updated to 3b6346b4f62657bc4ccb8a0d195824a67e54e90f
    Merge changes from topic "sub_cleanup" into main
    
    * changes:
      Cleaned up the usage of SubscriptionManger.getSubId
      Fixed eSIM switch issue
      Added log to print slot/sub mapping
      Fixed eSIM deletion issue
    
    
  - Autoupdate of 2 submodules
    
    *system/core updated to 9d398af95c1e39c949725f436227da35331d61ef
    Merge "Create /data/misc/bootanim folder in init.rc." into main
    *system/sepolicy updated to db1535a09bc2ca76e6094579942cd86cae9a3eb4
    Merge "Label /data/misc/bootanim with bootanim_data_file." into main
    
  - Merge "simpleperf: check errors in CanSampleRegsFor32BitABI()" into main
  - Merge "tst_timer_test.c: Increase sleep timeout threshold for arm/arm64" into main
  - Merge "Move init_boot to system side when creating a mixed build" into main
  - Merge "change log level to loggable" into main
  - Merge changes I83e3cd14,I03330f82 into main
    
    * changes:
      Prevent EATT teardown from affecting ACL lifetime
      AVATAR: add test for gatt server timeout
    
  - Merge "update HeadsetNativeInterface's getByteAddress to match A2dpNativeInterface's" into main
  - Merge "[aosp-backend] Use addControlee() api to add controlee" into main
  - Remove unnecessary artifacts from PATH
    
    adb and other tradefed Jar files are included in one attribute, and
    all of them are added into PATH. But those Jar files don't need to be
    on the PATH. So that this change splits the Java dependencies and adb
    into two attributes and only adds adb into the PATH.
    
    Test: b test //platform_testing/tests/example/native:hello_world_test
    Test: b test //platform_testing/tests/example/jarhosttest:HelloWorldHostTest
    Bug: 293223828
    Change-Id: Ia6bae22a96b9e097a68a2f78432dd7f363080fbc
    
  - Merge "Fix drawable-state cache expired issue" into main
  - Merge "No need to include cutils/threads.h" into main
  - Added new rule to set volume
    
    This will enbale the test to set the volume to a default value before
    starting the test
    
    Bug: 273589668
    Test: Added unit tests
    Change-Id: I4e84bdf8a49308309744019ef4a1356031bae266
    
  - Merge "Import AndroidX from build 10557707" into main
  - Merge "Remove truth lib denpendency temporarily due to code coverage regression." into main
  - Merge "Pandora: Skip flaky pbap test" into main
  - Merge "Run scripts/format_code.sh" into main
  - Merge "Move App tests to -eng-only" into main
  - Merge "PandoraServer: use same scope to emit service into flow" into main
  - Merge "Pandora: Skip flaky avrcp test" into main
  - Merge "Unify Frontend Identifiers to u32" into main
  - Add VNDK 32
    
    To support mixed testing on sc-v2 / sc-qpr3 / API level 32 vendors.
    
    Bug: 291535640
    Bug: 290257919
    (cherry picked from https://googleplex-android-review.googlesource.com/q/commit:6ba4c41144edb0e8cb7fe61c1425cb663f496325)
    Merged-In: I9267167e033fa8c858494e5633af5164541c6b1b
    Change-Id: I9267167e033fa8c858494e5633af5164541c6b1b
    
  - Merge "Revert "rust: Add SCS sanitizer option."" into main
  - Merge "Floss: Return more specific error after listen timeout" into main
  - Autoupdate of 2 submodules
    
    *external/rust/crates/virtio-drivers updated to 508e25a11bd4e78a2de293e11fb1f2b35889bae9
    Upgrade virtio-drivers to 0.6.0
    
    This project was upgraded with external_updater.
    Usage: tools/external_updater/updater.sh update rust/crates/virtio-drivers
    For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
    
    Test: TreeHugger
    Change-Id: I43d6dda3d61c2268fb30af891a5e28b17f387e55
    
    *packages/modules/Virtualization updated to b27ec8f0320c300d18163789c0bf077777e09187
    Adjust virtio_blk API for virtio-drivers 0.6.0
    
    Bug: 291586508
    Test: atest vmbase_example.integration_test
    Test: m pvmfw_img
    Change-Id: Ie3c25a6524f3b7b2ca88ad303d11c86d4e49d44b
    
    
  - Merge "rust: Add SCS sanitizer option." into main
  - Merge "RootCanal: Tag HCI device logs with device id" into main
  - Merge "16k: core: Check that TARGET_MAX_PAGE_SIZE_SUPPORTED is greater than 4096 only for ARM archs." into main
  - Fix F2fs Metric tests
    
    Test: tools/diff_test_trace_processor.py <trace_processer_shell> --name-filter=.*f2fs_aggregate_write_stats*
    Change-Id: I2a1da5b4e936e71593db6680f3b991997b12b5e0
    
  - Merge "Revert "Make launch_cvd and stop_cvd exec cvd"" into main
  - Merge "Fix Feq/Fle/Flt instructions definitions." into main
  - Merge "Vertically align the first menu item of a sub-menu with its parent item." into main
  - Merge "Change command palette hotkey from Mod+P to Mod+Shift+P." into main
  - Merge "Disable side_effects for floating point moves." into main
  - Revert "Add rs zygote fd to bug_map"
    
    This reverts commit 072510935bae50adce1e95872a12c6ee9e151f62.
    
    Reason for revert: Merged dontaudit on aosp/2673701
    
    Test: Null
    
    Change-Id: I7841a88c09fddc89f54719b1b46ad8b9bca4f734
    
  - Autoupdate of 2 submodules
    
    *external/perfetto updated to 3c6c7ffbc3f7975e4e276aa21b5f9c65cf1bbeff
    Merge "Move atrace tags from atrace.rc to perfetto.rc" into main
    *frameworks/native updated to 945f3077c59a1737357b7fb49375e26ab812d4aa
    Merge "Clean up atrace.rc" into main
    
  - Merge "ui: group IRQs separately" into main
  - Set build flag RELEASE_DEFAULT_MODULE_BUILD_FROM_SOURCE.
    
    RELEASE_DEFAULT_MODULE_BUILD_FROM_SOURCE specifies the build behavior
    regarding using mainline module prebuilt or source. This also allows us
    to configure this value based on release target (e.g. next, trunk, etc).
    
    Bug: 293101517
    Test: m and presubmit and manually test with change in ag/24079383
    Change-Id: Ie547dec12251bbbe73ad508b8efb9cc66f407a76
    
  - Fix a typo in VectorizeIfCondition.
    
    This patch fixes an issue where the type of lhs operand was checked
    twice and rhs type was ignored when processing conditions during
    predicated vectorization.
    
    The issue doesn't affect the actual vectorization behaviour.
    
    Test: ./art/test.py --host --optimizing --jit
    Test: ./art/test.py --target --optimizing --jit
    Test: 661-checker-simd-cf-loops.
    
    Test: target tests on arm64 with SVE (for details see
          art/test/README.arm_fvp).
    Change-Id: I486f29579a307548c321024a41c7fd30bdb97258
    
  - Add F2fs Metrics for Counters and Writes
    
    Test: <trace_processer_shell> --run-metrics android_io_unagg <trace>
    Test: tools/diff_test_trace_processor.py <trace_processer_shell> --name-filter=.*f2fs_aggregate_write_stats*
    Change-Id: Icb9a420f9a05252bcaccf5dea635a6738ae98427
    
  - Specify a user for the art_boot service
    
    init complains:
     E init    : /apex/com.android.art/etc/init.rc: 26: No user specified for service 'art_boot'. Defaults to root.
    
    Change Icb0ff95e341a23cf452cfb803fb43f5f46ef316e should not have removed
    the 'user' directive. No functional change, but this silences the error.
    
    Test: Boot AOSP and check logcat for the error
    Change-Id: I3b44bd5454d878f16509782514c106ff9fd9ceaa
    
  - Enable ML phrase breaking
    
    Ignore-AOSP-First: verification
    Bug: 219529457
    Test: atest CtsIcuTestCases
    (cherry picked from commit 057ff88e93892db6ca6f2f3dc34e671be9c4f0a4)
    (cherry picked from https://googleplex-android-review.googlesource.com/q/commit:e80f41cd3090fd6cdf70c47eb50909df4fff5398)
    Merged-In: Ibd15d842d20d29f0235f27fa8f81873752a452a1
    Change-Id: Ibd15d842d20d29f0235f27fa8f81873752a452a1
    
  - Merge "Switch using embedded launcher for unit test" into main
  - [automerger skipped] [DO NOT MERGE] Skip ProtocolTest in CTS. am: 6b4d0dd5e1 -s ours am: d709292bd3 -s ours am: b75b841d84 -s ours
    
    am skip reason: subject contains skip directive
    
    Original change: https://android-review.googlesource.com/c/platform/external/conscrypt/+/2677615
    
    Change-Id: Ie5515ecd8f5cefc7dee42da08f81364bf6f830ba
    Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
    
  - [automerger skipped] [DO NOT MERGE] Disable system certificate test. am: 1e0263d872 -s ours
    
    am skip reason: skipped by user prb
    
    Original change: https://android-review.googlesource.com/c/platform/external/conscrypt/+/2677875
    
    Change-Id: Ic5a1625e21bf8dd7ca613cd1fbe4e493a3b9f727
    Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
    
  - Autoupdate of 3 submodules
    
    *external/rust/crates/pdl-compiler updated to 3f09ffba338db94c0f3b766cb9e6f610238a751b
    Upgrade pdl-compiler to 0.1.5
    
    This project was upgraded with external_updater.
    Usage: tools/external_updater/updater.sh update rust/crates/pdl-compiler
    For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
    
    Test: TreeHugger
    Change-Id: If0826903210e9b8b51ceebb3434ceedcf569e161
    
    *packages/modules/Bluetooth updated to d93d98415d9ff5dab8cd6f812a2198232ec94691
    Merge changes from topics "rootcanal-class-of-device", "rootcanal-pdl-migration" into main
    
    * changes:
      RootCanal: Migrate the pdl cxx generator to the new backend
      RootCanal: Remove custom PDL field for class of device
    
    *tools/netsim updated to ea0cf1f758bf24435dd5251da7ec6a175eff25d6
    Merge "Remove include paths into packages/modules/Bluetooth/system" into main
    
  - Use only one parameter for StopTracing
    
    We can stop tracing either when aborting where we don't want to flush
    the entries and stop immediately or when stopping tracing where we want
    to flush any data and then stop tracing. We used to use two parameters
    finish_tracing and flush_file but we just need one.
    
    Bug: 259258187
    Test: art/test.py
    Change-Id: I6d25a56790d82a55ecd679b7157bd1995fc5258d
    
  - Merge "Remove redundant allows" into main
  - Merge "Fix ConnectivityManagerTest#testFactoryReset flaky" into main
  - Merge "Revert "Diable ConnectivityManagerTest#testFactoryReset"" into main
  - Update D8 and R8 to 8.2.20-dev
    
    Version: 8.2.20-dev
    This build IS NOT suitable for preview or public release.
    
    Built here: go/r8-releases/raw/8.2.20-dev
    
    Test: TARGET_PRODUCT=aosp_arm64 m -j core-oj
    Change-Id: Id762a3b8ce2ad14c0f6b02e6ef6c3dc9dd24027f
    
  - Only customize PYTHONPATH if exist in environment
    
    If switch to embedded_launcher mode, there may have chance that no
    PYTHONPATH environment variable be defined which lead to exception.
    
    Bug: 293262028
    Test: m atest ; atest-dev atest_unittests --host --no-bazel-mode
    Change-Id: Iac761396f53ae3390b2767ce3ba8826db2f3812c
    
  - riscv64: Enable Optimizing compiler for some methods.
    
    Add a filter that allows empty methods (return-void),
    methods returning an argument and methods with empty
    infinite loops (testing SuspendCheck support).
    
    Test: run-gtests.sh
    Test: # Edit `run-test` to disable checker, then
          testrunner.py --target --64 --ndebug --optimizing --jit
          # Ignore pre-existing failures (7 for --optimizing,
          # 59 for --jit).
    Bug: 283082089
    Change-Id: Ie71afd85f79f6394d33364e1adf3dc50f8e4ebfa
    
  - Merge remote-tracking branch 'aosp/metalava-main' into aosp/main
    
    Bug: 287241408
    Test: ./gradlew
    Change-Id: Id361b0b6103a2e9cef32e88e15da74772559a3ed
    
  - Merge "Codec2Client: remove vendor_available and apex_available" into main
  - Merge "Include a platform implementation in libperfetto" into main
  - Replace CarrierConfigChange receiver with listener
    
    Using onCarrierConfigChanged() in CarrierConfigChangeListener
    to replace ACTION_CARRIER_CONFIG_CHANGED
    
    Bug: 264919227
    Test: atest
    Change-Id: I9f6ca502ff8f8b545bb85cc4a6a143ff37bdec79
    
  - Merge "dumpstate: avoid ':' in lshal files" into main
  - Merge changes I4c678302,If4b768c5,I4fdc9e7d into main
    
    * changes:
      Floss: Hcidoc: Display informational conn which init'd before snoop start
      Floss: Hcidoc: Attempt to identify Nocp for unknown handle
      Floss: hcidoc: Sort the addresses in informational rule
    
  - Merge "Use custom Android config." into main
  - Reland "Move coredomain seapp contexts to system_ext"
    
    This reverts commit 3fa5cf25d66c3e80cd82396115333f03fb7bda16.
    
    Reason for revert: fixed boot test breakage
    
    Change-Id: I38cd0f3a47a2b3abec09f9effb87b63422fe493a
    
  - addition fix for using jdk11 compatible APIs
    
    Bug: 292221588
    Test: make tradefed-all \
          tools/tradefederation/core/javatests/run_tradefed_tests.sh --class
          com.android.tradefed.invoker.shard.StrictShardHelperTest
    Change-Id: Id4d324ff3872b628d5e8fbd85d727039a8c70552
    
  - Merge "Make launch_cvd and stop_cvd exec cvd" into main
  - [scudo] Make Options a reference for functions.
    
    Modify all places that use the Options structure to be a const
    reference. The underlying structure is a u32 so making it a
    reference doesn't really do anything. However, if the structure
    changes in the future it already works and avoids future coders
    wondering why a structure is being passed by value. This also
    makes it clear that the Options should not be modified in those functions.
    
    Reviewed By: Chia-hungDuan
    
    Differential Revision: https://reviews.llvm.org/D156372
    
    GitOrigin-RevId: 867f2d9e5c9a736eb97fe5a51aa2850abfd02a96
    Change-Id: Icc7ec50f09eec85e0102c701d76e1d5c0084d130
    
  - guest_signal: Add guest signal handling
    
    GuestContext is left unimplemented for followup.
    
    Bug: 280551726
    Bug: 283499233
    Test: mmm frameworks/libs/binary_translation
    Change-Id: I231a9435db78c1ace8bde59c324db4a0b1a1cd7a
    
  - Merge "[BluetoothMetrics] Adding enums for Counter Metrics related to running in foreground" into main
  - Merge "Remove git calls from generator script." into main
  - Merge "GattServiceTest: Avoid directly assigning member variables as mocks" into main
  - Merge "Add an annotation for @SkipMainlinePresubmit" into main
  - Merge "Revert "Revert "Enable crashing fuzzer on infra""" into main
  - Merge "Fix atest_unittests failure" into main
  - Merge "libprocessgroup: UIDs in linux are unsigned" into main
  - Autoupdate of 2 submodules
    
    *build/soong updated to f97a42e5f2a5a9aea863660487d39c6b672a2fa4
    Merge "APEXes contain VNDK libraries when VNDK is deprecated" into main
    *system/linkerconfig updated to a5322f57ee2dd0ec7fd2d0089db7d9a6df2295e0
    Vendor APEX do not link to VNDK when it is deprecated
    
    From prior work, VNDK namespace was still active from Vendor APEXes
    because some of them relied on VNDK libraries by linking. However, this
    is not available when VNDK is deprecated. This change removes link from
    Vendor APEXes to the VNDK when the VNDK is deprecated.
    
    Bug: 290318998
    Test: Checked from AOSP CF x86_64 Phone build with KEEP_VNDK=false that
    VNDK namespace has been removed with vendor APEXes
    
    Change-Id: I3bcb9aee6a16e25cdaa428572f34d15c18bd7f14
    
    
  - Fix merge sequence failure due to XOR conversion
    
    During OTA install, we convert an XOR operation to REPLACE if this operation
    touches very last block on source partition, as the read request will
    fail with a partial read. This invalidates merge sequence, because all
    REPLACE operations are expected to show up after all XOR/COPY ops. To
    address this issue, fill partial read requests with 0s.
    
    Test: th
    Bug: 290159346
    Change-Id: Ie03c091aa893ab6302e2c2e012a8e78c8986b6a9
    
  - Merge "Run pyformat on scripts/bp2build_progress" into main
  - Bump Vulkan version to 1.3
    
    Let's check what new tests we will have.
    
    Bug: 293346694
    Change-Id: I7c33d51e52edaed2920cc88a03e468a61771beee
    
  - Revert^2 "Add DEX SHA1 to oat files."
    
    This reverts commit 0d59061cfaf5e60a4fe21f9031492b2a808bb37d.
    
    Add SHA1 since it is much more reliable then CRC32/Adler.
    
    CHECK that it matches with location checksum comparison.
    
    We sill rely on the location checksum, this just ensures
    that in the very unlikely case of CRC collision we crash,
    rather than accept the DEX and later mysteriously fail.
    
    Test: ./art/test.py -b --host --64
    Test: UNSAFE_DISABLE_HIDDENAPI_FLAGS=true m
    Change-Id: Idf2d9368205771169d577b1ba7ea1bce28b6b22e
    
  - Merge "Avoid color escape sequences in rootcanal log files." into main
  - Merge "Add APNs for Cricket 5G carrier_id 10029" into main
  - Merge "Add and change APNs for Myanmar (Burma) mcc414" into main
  - Merge remote-tracking branch 'aosp/upstream-master' into mymerge
    
    Fix: 283858728
    Test: local
    Change-Id: Ie1b8c4dda41241989d9785d825b49ef5564e08c2
    
  - Update METADATA to reflect recent version bump
    
    Test: n/a
    Bug: 290415485
    Change-Id: I816843ce59af2954157c06a63682369903a13a22
    
  - Merge "Add API getting list of assignable devices" into main
  - Autoupdate of 2 submodules
    
    *frameworks/base updated to 98811d90e639ae1e2bf6307eff7c35bc1dd32e61
    Merge "Correctly support restoring SIM specific settings" into main
    *frameworks/opt/telephony updated to cfa476746d480e73e17f447daccc2afed9845428
    Merge changes from topic "sub_restore" into main
    
    * changes:
      Correctly support restoring SIM specific settings
      Delayed registering as a system service
      Fixed crash in getPhoneNumber
    
    
  - Merge "Denylist new libart modules" into main
  - Merge "Adding compose.wear libraries" into main
  - 16k: Add AOSP page size agnostic targets for Oriole and Raven
    
    The new AOSP targets for Oriole and Raven will be:
    
    - Page size agnostic (will support kernels with 4k/16k page sizes)
    - 64k ELF aligned
    
    Test: source build/envsetup.sh
          lunch aosp_raven_pgagnostic_64-userdebug
          m -j$(nproc)
    
          source build/envsetup.sh
          lunch aosp_oriole_pgagnostic_64-userdebug
          m -j$(nproc)
    
    Bug: 289419664
    Change-Id: I9f5890c8297061169b63b9202aa112e33a191d53
    
  - Trace some partial download operations
    
    Test: presubmit
    Bug: 293317767
    Change-Id: Ibe9eb9c5ea814e52c22bbecdc870d6910603ac77
    
  - Add a check of device connection state to skip bugreport collection if possible
    
    Bug: 293281327
    Test: unittest
    Change-Id: I8e0c70400535381bdffacad8c59494073b143184
    
  - use jdk11 compatible APIs
    
    Bug: 292221588
    Test: make tradefed-all \
          tools/tradefederation/core/javatests/run_tradefed_tests.sh --class
          com.android.tradefed.invoker.shard.StrictShardHelperTest
    Change-Id: Id5ff55861dab5066a512f4ef308b305a47843d97
    
  - ANDROID: run cargo_embargo after merge plus fixes
    
    Fixes: add wire_format_derive_test_src_lib to cargo_embargo.json
    module_blocklist because its dependencies don't have any android
    variants.
    Remove the riscv64 Android.bp.pach because it failed to apply and was
    not needed.
    Remove the seccomp assignment of tgkill in jail_warden.policy because it
    was causing compilation to fail due to being assigned in two places
    (device_common.policy being the other place).
    Remove the perfetto directory and remove the .gitmodules file that the
    directory/module was added to.
    
    Test: m
    Bug: 292270337
    Change-Id: I6d1a3d7f19626ac2cd74c99e3f79f48ea70f7235
    
  - Merge "[backend] Add MachineRegKind definition" into main
  - Merge changes If65616da,Ia625e31b into main
    
    * changes:
      [backend] Add MachineRegClass definition
      [backend] Add MachineReg definition
    
  - Avoid rescheduling flake in func tests
    
    Avoid catching some flake due to rescheduling in the func
    test.
    
    Test: presubmit
    Bug: 292642748
    Change-Id: Ib7eeac949103d1faf9a752eb2b9e40e8db9160c3
    
  - mark iptables memory leak test as out of SLO
    
    We don't really care about this test enough to care about
    putting even more effort into the debugging it.
    
    Observed flakes:
    
    system/netd/server/IptablesRestoreControllerTest.cpp:382: Failure
    Expected: (38) >= (getRssPages(pid6) - pages6), actual: 38 vs 39
    ip6tables-restore leaked too many pages
    
    system/netd/server/IptablesRestoreControllerTest.cpp:381: Failure
    Expected: (38) >= (getRssPages(pid4) - pages4), actual: 38 vs 219
    iptables-restore leaked too many pages
    
    system/netd/server/IptablesRestoreControllerTest.cpp:381: Failure
    Expected: (38) >= (getRssPages(pid4) - pages4), actual: 38 vs 216
    iptables-restore leaked too many pages
    
    Test: TreeHugger
    Signed-off-by: Maciej Żenczykowski <maze@google.com>
    Change-Id: I74ed94b6623e870c5a83a76015c1fe965a9b4800
    
  - Merge branch 'upstream-master' into 'main'
    
    * aosp/upstream-master:
      ELF reader: do DWARF duplicates check only for public symbols
      naming: add direct include of graph.h in naming.cc
      test cases: update to current STG format
      DWARF processor: don't fail on variable-length arrays
      DWARF processor: ignore DW_TAG_imported_module as child of function
      ELF reader: speed up unification
      DWARF processor: ignore DW_TAG_imported_declaration as child of function
      DWARF processor: refactor parsing of child tags to switch/case
      stgdiff: optionally ignore type definition additions
      stgdiff test: add missing dependency on comparison
      unification: take start ID and split Reserve method out of constructor
      graph: split Reserve method out of DenseIdSet constructor
      graph: split Reserve method out of DenseIdMapping constructor
      graph: allow ForEach method to operate on ID ranges
      graph: allow DenseIdSet to have a starting offset
      graph: allow DenseIdMapping to have a starting offset
      Reporting: Fidelity: Remove severity from `stgdiff` fidelity reports
    
    Signed-off-by: Giuliano Procida <gprocida@google.com>
    Change-Id: Ief08bda89af6ae7e4289ac0b2608552690fbe22e
    
  - Use -Xjvm-default=all instead of -Xjvm-default=enable or @JvmDefault
    
    The @JvmDefault annotation and -Xjvm-default=enable argument are both
    removed from kotlinc 1.9.0 in favor of -Xjvm-default=all.
    
    Bug: 291335478
    Test: builds
    Change-Id: I1a6836a314f2b202600b5bdd449dd3d4445f4b99
    Merged-In: I1a6836a314f2b202600b5bdd449dd3d4445f4b99
    
  - Unwinder: use cached versions of dex_files_ and jit_debug_ if available.
    
    They may have already been set by eg AndroidLocalUnwinder::InternalUnwind.
    
    Test: perfetto trace doesn't show repeated dex file loads.
    Bug: 291133411
    Change-Id: I0f11f3e5d07b8b65d8c600a2984ebdac459920bd
    
  - Autoupdate of 4 submodules
    
    *build/make updated to 11db0915dfd68aca5142bc247ef02176b7441166
    Merge "Add new Release_aidl_use_unfrozen soong variable" into main
    *build/release updated to fd300df3b2bb7a643ff3f01122ff03ea5977c6af
    Add a release flag for AIDL interfaces
    
    This value will remain `true` on all release configurations outside
    of `next`, where it will be `false`.
    `true` keeps the current behavior we have today, where unfrozen
    interfaces can be freely used.
    It controls whether or not AIDL interface libraries behave like the
    latest unfrozen version of the interface, or like the last frozen
    version. This allows us to release Android between vendor interface
    bumps while teams are working on their AIDL interfaces.
    
    Test: atest aidl_integration_test aidl_unittests
    Bug: 290265210
    Change-Id: Ic10b5076786b48603b1ee482d46c62a9c5828d12
    
    *build/soong updated to 1579a72d782556470d8126baddf977f71889610c
    Merge "Add new Release_aidl_use_unfrozen soong variable" into main
    *system/tools/aidl updated to 8e99915422255fec29ea57454cfd76f5485fb39f
    Behave like previous frozen version with new flag
    
    A new flag is introduced for trunk stable. The new flag enables/disables
    the latest unfrozen runtime behavior of VINTF AIDL interface libraries.
    When it's disabled, the latest version of the generated AIDL libraries
    will behave like the last frozen version so we don't accidently expose
    new behavior to devices releasing before freezing all of the VINTF
    interfaces.
    
    Test: atest aidl_integration_test aidl_unittests
    Bug: 290265210
    Change-Id: I7adc5b7fa82f20aa66d3c0ad4740c086dc1cba51
    
    
  - Merge "Redirect GL RGB8 to VK RGBA8" into main
  - Merge "Update CtsToastLegacyTestCases bug component." into main
  - Merge "Disable flaky test testApksAbis" into main
  - Merge "RESTRICT AUTOMERGE: Explicitly ignore the result of std::async" into main
  - Add a CLI option to enable/disable puffdiff
    
    For fast OTA generation during development
    
    Test: th
    Change-Id: Idadace48a9533ba8597a826510dedc2ab3ac9d90
    
  - Lint: Initialize variables, log variables on error
    
    Test: th
    Change-Id: I47127424de63f708f099b9884f4823366d15a838
    
  - Merge "Handle xsd config more like other partitions" into main
  - Merge "Export LibFuzzer to vendor" into main
  - Merge "Add retry mechanism for flaky activity tests" into main
  - Merge "Convert absl_source_sets to cc_library_static instead of filegroup" into main
  - Autoupdate of 2 submodules
    
    *build/bazel updated to 4b4f356ad86432c24785627d75c7a63b0367a4e3
    Merge "Remove isolated property from cc_test macro." into main
    *build/soong updated to a263005e30566e7a84a383c24eb7398a36056a9e
    Merge changes from topic "support_libgtest_isolated" into main
    
    * changes:
      Support cc_test.isolated in bp2build
      Fix difference in default `cc_test.isolated` in soong and bp2build
    
    
  - Merge "RootCanal: Properly handle concurrent connection attempts" into main
  - Merge "Support multiple netsimd instances" into main
  - Modified NPE and typo of abbreviation of log tag
    
    There could be NPE issue when connecting LE audio device.
    And I've modified typo according to the policy of log tag abbreviation in Telecom.
    
    Test: When node is added after connecting to LE audio device
    Bug: 293220012
    
    Change-Id: I8b750fb58c1320101cac4116212f4b807b9b0d09
    Signed-off-by: Junyeong Bak <junyeong.bak@samsung.com>
    
  - Fix duplicate symbols error in external/igt-gpu-tools
    
    Symbol igt_subtest_jmpbuf is duplicate when switch -fcommon to -fno-common. Keep the old default for this project until we get a fixed version from upstream.@sadafebrahimi tried to update but lots of conflicts so we don't take the upstream fix.
    Upstream fix patch:
    https://gitlab.freedesktop.org/drm/igt-gpu-tools/-/commit/61ef576ea536d82776bd90af18cb6a590b22f520
    
    Bug: b/151457797
    Test: mm
    Change-Id: I8e13e3706597d89d2fabc3932b00c724ee897f1e
    
  - Remove rustc 1.68.0 prebuilts
    
    Test: TH
    Bug: 288268986
    Change-Id: I91c8899fd1be7c7a0f122a4447b098ba3f8ff366
    
  - Merge "rust: Add BTI/PAC for supported targets." into main
  - Merge "Check LAST_KNOWN_CELL_IDENTITY only if network is registered." into main
  - Autoupdate of 2 submodules
    
    *prebuilts/clang/host/linux-x86 updated to 732689de71f07d74b110cabcc3b69c7009529748
    Add libsimpleperf_readelf.a for musl from build 10553497
    
    Bug: 267670561
    Test: USE_HOST_MUSL=true make simpleperf_ndk
    Change-Id: I1faf92b952dca815c17d75aefb4e52f6cf87f6ba
    
    *system/extras updated to 3aa529b42a10e4f40506e8d80a2a9ae8657d0aca
    Merge "simpleperf: use libsimpleperf_readelf in host builds" into main
    
  - Autoupdate of 3 submodules
    
    *system/core updated to 428622bb7fe60cd4a342b843ddb103ef062d4722
    Merge "Revert "init.rc: stop calling 'fsverity_init --load-verified-keys'"" into main
    *system/security updated to 20b7b90f4000fee18ae29de0ca6da59b4047388b
    Merge "Revert "Remove fsverity_init"" into main
    *system/sepolicy updated to dfe3906e7b05c9881cb731b5ea7b3a18c33962e2
    Merge "Revert "Remove fsverity_init SELinux rules"" into main
    
  - Merge "Compute sha256 of a file." into main
  - Merge "Enable netsim websocket connection without -d flag" into main
  - Don't build libopen_dice_*_baremetal for the host
    
    This is a mistake in the pvmfw build. See aosp/2675375 for further
    discussion. Building for the host means picking up glibc headers and
    then swapping in a subset of bionic, which is an ABI error.
    
    Test: treehugger
    Change-Id: Ie0777bd7bafbd305e42bb8d76d79354badd24344
    
  - log pool id in dynamic sharding
    
    Test: presubmit
    Bug: 293205097
    Change-Id: I5ba4c3ab432cd960a0cb7725551af988cfc8e015
    
  - Merge "Move apex usages of product config to build settings" into main
  - Temporarily allow missing safety comments.
    
    These will soon be required by a lint. Please remove this workaround and
    add proper safety comments.
    
    Bug: 290018030
    Test: m rust
    Change-Id: I89e30ee35be795789efaa1d58488b6ead458a5e6
    
  - Merge "Disable RBE env variable when we cannot support RBE" into main
  - Merge "Enable Gyroscope sensor injection by AIDL flag" into main
  - Merge "Switch roboleaf mode to use up-to-date ATest scripts" into main
  - Merge "Send record_cvd commands to the cvd action receiver." into main
  - Merge "Added build_super_image into cvd_host_tools because some cases need this tool to rebuild super image." into main
  - Merge "simpleperf: Disable failed tests when running with a 32-bit translator" into main
  - LUCI: Enable Pixel 4a for two targets.
    
    Slowly re-enable the new bots to see if we get timeouts again.
    
    Test: ./tools/luci/config/main.star
    Change-Id: I462714d070b144c56414e39e29e9d23513d80e4a
    
  - [Cronet] Skip presumbit
    
    This test has been deflaked upstream via crrev/c/4507293 and will
    be added back to presubmit once this makes it downstream.
    
    Bug: b/293141085
    Bug: b/292298108
    Test: na
    Change-Id: I72fce3efb8cca2841990fca0e514fceeea0c01f9
    
  - Merge "Normalize test basenames by removing "__tf_internal"." into main
  - Merge changes I577dd4ec,I23db0581,I91993a8e,I05ad5e12 into main
    
    * changes:
      Support group disabled bit correctly
      Initialized allowed network types
      Fixed crash during eSIM activation
      Fixed display name not persisted
    
  - Only set ArtMethod as shared memory if we compile with a profile.
    
    The idea behind the optimization is that important methods will be
    AOTed. However, if we don't have a profile (like for mainline modules),
    we should skip this optimization.
    
    Test: test.py
    Bug: 265544352
    Change-Id: I63bde0a4afa21c60791ff8b1fde08c9e8b5f9eea
    
  - Merge "Enable Magnetometer sensor injection by AIDL flag" into main
  - Autoupdate of 2 submodules
    
    *art updated to 0eb638e59e26d99d1cc5bfa5af59d5797743c7c5
    Update tests to adapt the new ART boot image for host tests.
    
    This new ART boot image includes core-icu4j and consrypt.
    
    This CL also changes generate-boot-image to add core-icu4j and consrypt
    to the ART boot image generated on device for target tests, to keep host
    tests and target tests consistent with each other.
    
    Bug: 290583827
    Test: m test-art-host-gtest
    Test: m build-art-target-golem
    Test: m build-art-host-golem
    Test: atest ArtGtestsTargetChroot
    Change-Id: I6742c478bc9673b6185b346b5501f27fc62b68aa
    
    *build/make updated to c07b049aba2ed7093822004b99ec5951f610801e
    Merge "Add core-icu4j and consrypt to the ART boot image for testing." into main
    
  - Merge "Import AndroidX from build 10557291" into main
  - Fix duplicate symbols error in external/ltp
    
    Symbol use_the_ltp_clone_functions__do_not_use_clone is duplicate when
    switch -fcommon to -fno-common. Ltp calls <sched.h> in many files, but
    maybe they get away with this with glibc because of the __USE_GNU guard in glibc's <sched.h>.
    The best option may be fix those files which import <sched.h>, but now
    disable -fno-common is a way to keep moving.
    
    Bug: b/151457797
    Test: mm
    Change-Id: I661f738063131778e8d0459f1bc5ac9db5b564e6
    
  - Merge "wrap controller_properties in unique_ptr to avoid execution before main" into main
  - Merge "16k: PRODUCT_MAX_PAGE_SIZE_SUPPORTED must be greater than 4096 only for ARM archs" into main
  - Roll ANGLE from 5e21d7f02425 to 58cb5c8396a3 (14 revisions)
    
    https://chromium.googlesource.com/angle/angle.git/+log/5e21d7f02425..58cb5c8396a3
    
    Please enable autosubmit on changes if possible when approving them.
    
    If this roll has caused a breakage, revert this CL and stop the roller
    using the controls here:
    https://autoroll.skia.org/r/angle-android-autoroll
    Please CC angle-team@google.com,rmistry@google.com,romanl@google.com on the revert to ensure that a human
    is aware of the problem.
    
    To file a bug in ANGLE: https://bugs.chromium.org/p/angleproject/issues/entry
    
    To report a problem with the AutoRoller itself, please file a bug:
    https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug
    
    Documentation for the AutoRoller is here:
    https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
    
    Test: Presubmit checks will test this change.
    Exempt-From-Owner-Approval: The autoroll bot does not require owner approval.
    Bug: b/258207403
    Bug: b/292249127
    Bug: b/292249282
    Bug: b/292282210
    Bug: b/293136916
    Change-Id: I0a7667efeaf4464beb6062ac55d2de670fdbb660
    
  - Merge "Prevent some key system applications from losing storage permissions" into main
  - tradefed: make StrictShardHelper shard more evenly
    
    Added an alternative sharding strategy to fix an issue where for some combinations of test count and shard sizes, the shards would end up being very uneven. In particular, if totalCount%shardCount == shardCount-1, the sharder previously put shardSize-1 extra tests in the last shard.
    
    Bug: 292221588
    Test: make tradefed-all \
          tools/tradefederation/core/javatests/run_tradefed_tests.sh --class com.android.tradefed.invoker.shard.StrictShardHelperTest \
          tools/tradefederation/core/javatests/run_tradefed_tests.sh --class com.android.tradefed.testtype.suite.ITestSuiteIntegrationTest
    Change-Id: Ic0db6f881979ca97052c84e5a38a5acd1353d538
    
  - Merge "Add back BQR_EVENT registration to VendorSpecificEventManager" into main
  - Merge "Add bug component to system/core" into main
  - Merge "Add sqlite upgrade instructions" into main
  - Merge "Revert "Revert "add media.swcodec to Bazel prod allowlist""" into main
  - Merge libart and libart-compiler into a single library
    
    Rename old libart to libart-runtime.
    Build libart-runtime and libart-compiler separately as static libraries.
    This is required to support PGO (compiler) and AFDO (runtime) without
    mixing them.
    Combine libart-runtime and libart-compiler into libart with
    whole-archive linking.
    Remove JitLoadTest, since `jit_create` (previously `jit_load`) function
    is guaranteed to exist in `libart`.
    
    After this change libart-compiler will have access to all libart-runtime
    symbols. This will allow to hide more symbols from libart-runtime.
    
    ART APEX size before and after:
    X86   : 29,748.00 KiB -> 29,648.00 KiB (-100.00 KiB, -0.34%)
    X86_64: 49,148.00 KiB -> 48,928.00 KiB (-220.00 KiB, -0.45%)
    Arm32 : 23,440.00 KiB -> 23,268.00 KiB (-172.00 KiB, -0.73%)
    Arm64 : 44,472.00 KiB -> 43,884.00 KiB (-588.00 KiB, -1.32%)
    
    Bug: 186902856
    Test: art/test.py -b --host
    Test: atest art_standalone_\*_tests
    Test: art/tools/run-gtests.sh
    Test: art/test/testrunner/testrunner.py --target
    Test: art/tools/run-libcore-tests.sh --mode=device
    Test: art/tools/run-libjdwp-tests.sh --mode=device
    Test: m mts && mts-tradefed run commandAndExit mts-art
    Test: m libart-compiler libartd-compiler libart-runtime libartd-runtime libart libartd
    Test: art/build/apex/runtests.sh (no regressions)
    Test: atest art-apex-update-rollback (no regressions)
    Change-Id: I20bd2fcca26013963a48e933142c9f81883bdca4
    
  - Merge "Handle all variants in json graph traversal" into main
  - lite-tr: Add support for inline FCvtFloatToInteger
    
    Adding support for inling FcvtFloatToInteger when rm == DYN.
    
    Test: Tree-Hugger
    Bug: 290970051
    Change-Id: I1cf196dadd7799513cff517f3ba9536f0c62e717
    
  - Merge "UpdatableSharedLibsTest: set min_sdk_version of test APEX" into main
  - Merge "Add dontaudit for rs fd usage" into main
  - Optimize android_jank_cuj counters calculation time when having multiple cujs with the same time
    
    Test: tools/ninja -C out/linux_clang_debug && tools/diff_test_trace_processor.py --name-filter ".*android_jank_cuj.*" out/linux_clang_debug/trace_processor_shell
    Bug: 293261484
    Change-Id: I16c7f5ec55e6dc95166ca9561e228201c15f4a9c
  - Merge "Policy for virtual_camera" into main
  - Merge "SELinux allow listing core_experiements_team_internal namespace" into main
  - Merge "TV: Fix infinite mute/unmute cycle on connected AVR" into main
  - Autoupdate of 2 submodules
    
    *external/selinux updated to 51fde66c16fc4ec12ba2da47c43d618751ca9316
    Give priority to platform side seapp_contexts
    
    This is to remove duplicate errors while fixing seapp_contexts
    violations (because old vendors still have the entries).
    
    Bug: 280547417
    Test: TH
    Change-Id: I8c381dad6e8bf5e91148494b55278e124b845c13
    
    *system/sepolicy updated to 60b8c39abcf8796328da6a2ee2fb48ab0e0f3289
    Merge "Update seapp_contexts precedence documentation" into main
    
  - Merge "Move CtsSoundTriggerTestCases from 'framework' to 'media' component" into main
  - Merge changes I0186bbff,I821cd5a2 into main
    
    * changes:
      Add readme and owners, improve comments
      Add a macro to instrument the calling method
    
  - Merge "Skip presubmit for flaky tests in NetworkStackIntegrationTests due to Out of SLO" into main
  - Autoupdate of 2 submodules
    
    *art updated to 9ca7be960a291da42b27e6ee94b362cef9688427
    riscv64: buildbot-build.sh: copy local prebuilts of conscrypt and statsd
    
    This is a temporary workaround until mainline supports riscv64.
    
    Bug: 286551985
    
    Test: on master-art, run 001-HelloWorld on a Linux RISC-V VM:
      lunch riscv64
    
      export ART_TEST_SSH_USER=ubuntu
      export ART_TEST_SSH_HOST=localhost
      export ART_TEST_SSH_PORT=10001
      export ART_TEST_ON_VM=true
    
      . art/tools/buildbot-utils.sh
      art/tools/buildbot-build.sh --target
    
      # Create, boot and configure the VM.
      art/tools/buildbot-vm.sh create
      art/tools/buildbot-vm.sh boot
      art/tools/buildbot-vm.sh setup-ssh  # password: 'ubuntu'
    
      art/tools/buildbot-cleanup-device.sh
      art/tools/buildbot-setup-device.sh
      art/tools/buildbot-sync.sh
    
      art/test.py --target -r --ndebug --64 --interp-ac 001-HelloWorld
    
    Change-Id: I7d11e74db39afc46b6bcce00df2f01444a0bdb7a
    
    *prebuilts/runtime updated to 33766857444d5e3e603043a6658ea82ca6af0995
    Merge "Update riscv64 prebuilts from a local AOSP build." into main
    
  - Merge "Add README_riscv64.md with instructions how to update riscv64 prebuilts." into main
  - Autoupdate of 2 submodules
    
    *external/cronet updated to 49b251f71e2bcbf5e3c0fd2926dfbc677f086ddd
    [Cronet] Skip flaky tests from presubmit
    
    Tests that enable disk storage cache are prone to flakiness.
    If any test that enables disk storage cache does not shut down the
    cronetEngine due to flake or for some reason, other disk storage
    tests fail because the storage path is not freed up for the next
    cronet engine.
    
    This has been fixed upstream by making the CronetTestRule manage
    the engine's lifetimes. See crrev/c/4574363.
    
    This cl will be reverted once the fix makes it to downstream and
    the tests have been deflaked
    
    Bug: b/292298108
    Bug: b/293141085
    Test: atest NetHttpCoverageTests
    Change-Id: I9715bb8bda1e22f599cc84a1a1b263c81f9e5c9f
    
    *packages/modules/Connectivity updated to b868a462fd3c4b4692c1685cdd7e794e355308ec
    Merge "[Cronet] skip presubmit for flaky tests" into main
    
  - Merge "update.py: add --local-dist-riscv64 for updating riscv64 prebuilts." into main
  - Use LayoutHelper methods for all bin slot assignments
    
    Change-Id: I0669c944272739139d67dfc64a337f6b92d7b43e
    Bug: 276307224
    Test: art/tools/run-gtests.sh
    Test: art/test/testrunner/testrunner.py --target
    
  - RISCV: [Codegen] Add VisitClassTableGet
    
    Test: m test-art-host-gtest
    Bug: 283082089
    Signed-off-by: Lifang Xia <lifang_xia@linux.alibaba.com>
    Signed-off-by: Wendong Wang <wangwd@xcvmbyte.com>
    Change-Id: I6070ccf3bda62d15603ffe668f345daa07aaed77
    
  - RISCV: [Codegen] Add VisitInvokeUnresolved
    
    Test: m test-art-host-gtest
    Bug: 283082089
    Change-Id: I04918b7233cb8ab046605f9c72fe6f3d47a034dd
    
  - Revert "Revert "Disable ComposTestCase on Cuttlefish""
    
    This reverts commit 35e8751f27df2964c7f8547ae1a203c84c9c6f69.
    
    Reason for revert: Test is taking too long when run in presubmit on CF.
    
    Change-Id: Idedf0f01f8186612f3151777fbf0a5e0956453dd
    Bug: 292824951
    Bug: 289619867
    
  - Merge "Move CtsSharesheetTestCases from 'framework' to 'sysui' component" into main
  - Test: Deflake RepeatedSetup_NoRedundantPrivateDnsValidation
    
    The test is flaky because DoT validation threads might start too
    slow. Use PollForCondition(), which can keep checking a given
    statement for at most 1s until the statement is satisfied, to check
    the validation status.
    
    Bug: 293234142
    Test: run the test 300 times
    Change-Id: I2390915723954c3585d1d1e968f5af8fdfb58eba
    
  - Refactor trace writing into a different class
    
    In preperation for flushing the trace entries off thread move trace
    writer logic into a different class. This is a pure refactoring and
    doesn't (shouldn't) change any behaviour.
    
    Bug: 259258187
    Test: art/test.py --trace, art/test.py --trace --stream
    
    Change-Id: I7b3aba83148da3d670a43a33c1540188c41ad34d
    
  - Merge "Floss: add codec type parameter to |set_audio_config|" into main
  - Merge "Revert "libhardware: make memtrack vendor only"" into main
  - Autoupdate of 2 submodules
    
    *build/soong updated to f6d7cc94c6fb7b219fa35906acc69a28806008cc
    Merge "Revert "Set VIC as minimum SDK version for riscv64"" into main
    *prebuilts/ndk updated to 9f4bf52ac054949fa9b20676a7907a4582772c3f
    Merge "Revert "Add rv64 prebuilts directly from the toolchain."" into main
    
  - hiddenapi: Update SHA1 in the dex header
    
    Ensure that the SHA1 matches the file content.
    
    Test: UNSAFE_DISABLE_HIDDENAPI_FLAGS=true m
    Change-Id: I0f34442823b76835e983491e8dc1340b80101e0f
    
  - Track how many times to initialize ssh tunnel for device recovery
    
    This could help establish metrics about device recovered by re-initializing ssh tunnel.
    
    Bug: 291682235
    Test: presubmit
    Change-Id: Ia64c912e2dfa79e3a93cb26862637acf7e8f64a3
    
  - Merge "Add test for benchmarking NetworkStatsRecorder" into main
  - riscv64: Implement `art_quick_osr_stub`.
    
    And fix `CodeGeneratorRISCV64::GenerateFrameEntry()` to use
    the correct load for a method's declaring class.
    
    This allows run-tests to pass with
        https://android-review.googlesource.com/2658545 ,
        https://android-review.googlesource.com/2671455 ,
    without introducing any new failures.
    
    Test: m test-art-host-gtest
    Test: # Cherry-pick the two above changes,
          # edit `run-test` to disable checker, then
          testrunner.py --target --64 --ndebug --jit
          # Ignore pre-existing failures (7 for --optimizing,
          # 58 for --jit).
    Bug: 283082089
    Change-Id: I1ac104d549af71d78bc250b34bbd2c25d4fdcafc
    
  - Merge "Fix buildifier lint warnings in tradefed.bzl." into main
  - Merge "bass: Fix broken test cases" into main
  - Merge "Ignore duplicate entries from input modules.load file" into main
  - Merge "Extract process_monitor into a library" into main
  - Merge "installd: add missing <functional> for std::function." into main
  - Merge "Add preinstalled partition to seinfo" into main
  - Merge "Match APN types with ignoring the case" into main
  - Merge "Updated fuzz_config in Android.bp file" into main
  - Merge "Hold the loader mutex in linker_main once constructors are running" into main
  - Autoupdate of 2 submodules
    
    *frameworks/libs/net updated to 6505569da0d51a83de3399628249b57a856a31f7
    Merge "Add DnsResolverModuleTest annotation" into main
    *packages/modules/Connectivity updated to 2657ee261f7d52c201fc6ae106780817de7af5b8
    Merge "Exclude some DnsResolverTest tests from some CtsNetTestCasesLatestSdk" into main
    
  - Autoupdate of 2 submodules
    
    *build/bazel updated to b41d2da6b3b5995d5a2d4b2412c6cfba6d968ec8
    Merge "Create build settings for all product config variables" into main
    *build/soong updated to 8fbc42cfd7e1bd38fba8cc297b22742aafdbc06e
    Merge "Create build settings for all product config variables" into main
    
  - guest_thread: Implement InitStaticTls
    
    Bug: 277625454
    Test: mmm frameworks/libs/binary_translation
    Change-Id: I4600602bc1c791863f394ad614dac405ddbed086
    
  - Merge "Separate battey levels for dual mode devices" into main
  - Merge "Create directory for RemoteAuth module" into main
  - Merge changes from topic "am-0c32c61fe9f64a9797c01215da921938" into main
    
    * changes:
      [automerger skipped] Merge "EncoderTest: Remove multi-threading related code" into android13-tests-dev am: 587bbcb808 -s ours
      [automerger skipped] EncoderTest: Remove multi-threading related code am: cc6b6c094a -s ours
    
  - Merge changes from topic "am-0dc92be3e73542378196b19237cba98d" into main
    
    * changes:
      [automerger skipped] Merge "media CTS: Parameterize EncoderTest based on profile, sampleRate" into android13-tests-dev am: dc5d590e5e -s ours
      [automerger skipped] media CTS: Parameterize EncoderTest based on profile, sampleRate am: 7412820791 -s ours
    
  - Merge "Fix atest_unittests failure on CI" into main
  - Autoupdate of 2 submodules
    
    *device/google/cuttlefish updated to be15433d89c8640ecbb2d8591daf7853761cce3a
    Fix system_dlkm path for riscv64
    
    When system_dlkm support was added, the code incorrectly installed the
    vendor modules into system_dlkm again, and the system modules were not
    installed. This broke bluetooth. Fix it.
    
    Change-Id: I0ece80ba67f65f91c5132650d820de00c9ae3c3e
    
    *device/google/cuttlefish_prebuilts updated to 0411b3b0de081e29b0fc33db597972bab11c2b6d
    Flatten system_dlkm for riscv64
    
    The updater script copied the way we did GKI releases, but this wasn't
    correct for the fake GKI (w/ vendor modules) that we have for riscv64.
    
    Change-Id: I173502930ebd7c8390878744ec0a575a93c7ceb9
    
    
  - Make every shard attempt to seed the pool for dynamic sharding.
    
    This allows us eliminate the scenario where a shard tries to query the
    pool before it's ready, fails, and then needs to recycle to try again.
    It uses invocation id and attempt index to key the pool so that retries
    can be handled.
    
    Bug: b/293205097
    Test: TODO
    Change-Id: Ic217483c8a89e450d79cec87d4ee6726aabf6a5e
    
  - Merge "Fix flaky test testDhcp6Pd_dualstack." into main
  - Autoupdate of 2 submodules
    
    *build/soong updated to 5dbed51365f2fea41e85de4417a5e98dacad043e
    Merge changes from topic "hack-rv64-libc++" into main
    
    * changes:
      Use prebuilt NDK libc++ for rv64.
      Set VIC as minimum SDK version for riscv64
    
    *prebuilts/ndk updated to e364ea71a46778645d5c6ffbf38329deeb9e91d9
    Merge "Add rv64 prebuilts directly from the toolchain." into main
    
  - Merge "Support .(dot) files in root" into main
  - Merge "Floss: rework |codec_type| associated with SCO" into main
  - Merge "Avoid recursion for leaf task fragment in freeform mode" into main
  - Merge "Report registration metrics data" into main
  - Merge "Revert "Enable R8 full mode by default for apps"""" into main
  - Allow unsafe operations in unsafe functions in generated code.
    
    This will soon be denied by default, but we trust that cxx does is
    correct.
    
    Bug: 290018030
    Test: m rust
    Change-Id: Ie090e2013dd63d1edd366e4db29672ed72e39be1
    
  - Autoupdate of 2 submodules
    
    *build/make updated to 08d991834d7bef0d914feb8d2b5eefb256261abd
    Merge "Support transitive resource packages from Soong" into main
    *build/soong updated to 245482e03954ba4de430fda191ee512481cdc023
    Merge "Move android_library resource handling to Bazel's ResourceProcessorBusyBox" into main
    
  - Move VintfObject::isApexReady to Apex.cpp
    
    It should be internal to ApexInterface. This is a preparation step for
    follow-up changes.
    
    Bug: 292165819
    Test: atest vintf_object_test libvintf_test
    Change-Id: I41027d1b13d8b71c4d8a4e67b5909a4a6f4303e4
    
  - Merge "Remove RESTRICTED_VR_ACCESS permission from NFC manifest" into main
  - Merge "Create symbolic link to Bazel test logs." into main
  - Merge "Remove unnecessary local variable" into main
  - Fix preinstalled app partition check
    
    There is a bug on the code checking the partition, so it's printing
    wrong logcat messages. This fixes it by renaming the function name for
    better readability.
    
    Also it fixes a bug that the check only happens when levelFrom != NONE.
    
    Bug: 291005833
    Test: boot and see logcat
    Merged-In: I2dd51a995d76b2c50dae2b2c4af8e3a3a4599408
    Change-Id: I2dd51a995d76b2c50dae2b2c4af8e3a3a4599408
    (cherry picked from commit 321c0252599f525833bea20d9b3b7e3f1d0edee1)
    
  - Merge "keystore: Fix ID rotation window" into main
  - Merge "Remove libandroid_support." into main
  - Fix CTS testFiraRangingSessionPauseResume.
    
    1. Test should build the FiraSuspendRangingParams bundle that configures
       intention of pause/resume.
    2. Test should only be run on Fira 2.0+ devices since it uses a new
       AppConfig parameter SUSPEND_RANGING_ROUNDS.
    
    Bug: 293139823
    Test: atest CtsUwbTestCases
    Change-Id: I1e3fd8710d16b9ec8b488f1ca98aec0d77985fb8
    
  - Merge "Add a ZeroingAllocator::rebind<Other> for Other==char" into main
  - Merge "Add InlineStdAllocator::rebind struct member" into main
  - Merge "binderAllocationLimits: check remote binder null" into main
  - Merge "mediacts: adding parameterized test for rm" into main
  - [scudo] Acquire FLLock in mergeGroupsToReleaseBack
    
    This removes the need of ScopedUnlock and make the future use of
    condition variable easier to wake up waiting threads.
    
    Reviewed By: cferris
    
    Differential Revision: https://reviews.llvm.org/D156147
    
    GitOrigin-RevId: 774b61441725aeccca5e85f5e7378d1b7ada1ef2
    Change-Id: I0a2455a82641d64401c95f26a74d25d85c4e42a9
    
  - Autoupdate of 3 submodules
    
    *system/core updated to 5aade9ca04236141a6d30f47b3fa53c6eb7b9a65
    Merge "init.rc: stop calling 'fsverity_init --load-verified-keys'" into main
    *system/security updated to 50805a8b254ae17aec9adf1c6c10f34bc123a98e
    Merge "Remove fsverity_init" into main
    *system/sepolicy updated to 3a575356fa1a7226681e4f5e3212bf32ae76a0b5
    Merge "Remove fsverity_init SELinux rules" into main
    
  - Merge "Enable perfetto tracing for non-autogenerated AIDL names" into main
  - device FCM -= android.*
    
    Bug: 290408770
    Test: N/A
    Change-Id: Ic318a51f8e15832ffcc1539410b5e7c682eb7839
    
  - Use -Xjvm-default=all instead of -Xjvm-default=enable or @JvmDefault
    
    The @JvmDefault annotation and -Xjvm-default=enable argument are both
    removed from kotlinc 1.9.0 in favor of -Xjvm-default=all.
    
    Bug: 291335478
    Test: builds
    Change-Id: I431beadfb52d96970dfd7d1cbc7f101fb88c1749
    
  - pandora: clean forward port
    
    Test: atest pts-bot:GATT/SR
    Bug: 290416189
    Change-Id: Id087b17a8014973be83d632709fbbbfb70c510bd
    
  - Update riscv64 kernel to P59792257
    
    Local build of 6.5-rc1 with vector v20 patchset.
    
    Bug: 286415667
    Change-Id: I94eaf41c013b772ec8f60e9355afba1b9e09594f
    
  - Merge "Visualizer: Resolve multichannel capture" into main
  - riscv64: move opcodes
    
    Test: Run these opcodes against all interpreter
    tests on a Linux RISC-V VM.
    
    (1) setup
      lunch aosp_riscv64-userdebug
    
      export ART_TEST_SSH_USER=ubuntu
      export ART_TEST_SSH_HOST=localhost
      export ART_TEST_SSH_PORT=10001
      export ART_TEST_ON_VM=true
    
      . art/tools/buildbot-utils.sh
      art/tools/buildbot-build.sh --target
    
      # Create, boot and configure the VM.
      art/tools/buildbot-vm.sh create
      art/tools/buildbot-vm.sh boot
      art/tools/buildbot-vm.sh setup-ssh  # password: 'ubuntu'
    
      art/tools/buildbot-cleanup-device.sh
      art/tools/buildbot-setup-device.sh
      art/tools/buildbot-sync.sh
    
    (2) test
      art/test.py --target -r --no-prebuild --ndebug --64  -j 12 --cdex-none --interpreter
    
    Also exercised on cuttlefish boot. No SIGSEGV or SIGILL noted.
    
    Bug: 283082047
    
    Change-Id: I8c03765c204067f2f90e426c07450fe7c7ddf363
    
  - Merge "Add SQLite owners to database owners" into main
  - Merge "Add SQLite owners to database owners" into main
  - Upgrade f2fs-tools to bb8af9c06a1e7fcdbe60b61575b90f5b317e6c62
    
    This project was upgraded with external_updater.
    Usage: tools/external_updater/updater.sh update f2fs-tools
    For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
    
    Test: TreeHugger
    Change-Id: I970352b6cf531ca1b0591f2f4969c187388d3d6c
    
  - Merge "Add unittest for `ParseFetchCvdConfigs` logic" into main
  - Tradefed ()
    
    Automatic import from tradefed_prebuilt_20230725_0201_RC00
    
    https://rapid.corp.google.com/#candidate/tradefed_prebuilt/tradefed_prebuilt_20230725_0201/tradefed_prebuilt_20230725_0201_RC00
    
    Tradefed
    This build IS suitable for public release.
    
    Bug: 178523691
    Test: None
    
    Change-Id: I9aebd1c88ef8c0490111bceadfa1dcae8eb56311
    
  - Disable flaky test CommandSchedulerFuncTest#testShutdown_interruptible
    
    Necessary for complying with presubmit SLO. The flaky test itself will be addressed by b/292642748.
    
    Change-Id: I8291f5b563fc77bbb0fed7f3c853cd543e66575d
    Test: TH
    Bug: 292303816
    
  - Merge "Import AndroidX from build 10550258" into main
  - Merge "OnEncodedImage: hold lock until end of function" into main
  - [scudo] set/check invalid cache entries
    
    made checking for invalid cache entries and setting invalid cache
    entries more implicit and clear.
    
    Reviewed By: cferris
    
    Differential Revision: https://reviews.llvm.org/D155983
    
    GitOrigin-RevId: a0b9f1f84b33b9546795697b1fbce2951acdc81a
    Change-Id: I201b7ee98c7c65ec922ce41af4bff6819799fbf9
    
  - Check Android version for cert sources (properly).
    
    Original fix was https://android-review.git.corp.google.com/c/platform/external/conscrypt/+/2673380
    
    Test: atest TrustedCertificateStoreTest
    Change-Id: If4cc8921b93f552c210bacf2e69918b33c5a76f6
    
  - [scudo] seperate cache retrieval logic
    
    Split cache::retrieve() into separate functions. One that retrieves
    the cached block and another that sets the header and MTE environment.
    These were split so that the retrieve function could be more easily
    changed in the future and so that the retrieve function had the sole
    purpose of retrieving a CachedBlock.
    
    Reviewed By: cferris
    
    Differential Revision: https://reviews.llvm.org/D155660
    
    GitOrigin-RevId: 4c6b8bb87b3452d0bcef83cd0ea712d8426603b8
    Change-Id: Ic3f18065acd0d20f3361d4a802afb2540c62e92a
    
  - Merge "Add missing <cassert> and <functional> includes" into main
  - Merge "Add missing <functional> includes for std::function" into main
  - Add missing <functional> include for std::function
    
    Bug: b/175635923
    Test: treehugger
    Change-Id: I974faa37014b5ca713c4ac9aded926c77346ccc5
    
  - Add missing <cassert> include for assert
    
    Bug: b/175635923
    Test: treehugger
    Change-Id: I27474d887c1d1acd9bf00eb867374aec7d954052
    
  - Merge "Add missing <functional> include for std::function" into main
  - Merge "Revert "Revert "Enable R8 full mode by default for apps""" into main
  - Merge "Explicitly ignore the result of std::async" into main
  - Merge "mediav2 CTS: Skip validating audio decoder output in special cases" into main
  - Add missing <functional> include for std::function
    
    Bug: b/175635923
    Test: treehugger
    Change-Id: I0cd1cea3911e8f9bb975c4bdc93be77d6da64365
    
  - Add missing <functional> include for std::function
    
    Bug: b/175635923
    Test: treehugger
    Change-Id: I97c3ee373686dc5c2a75b319ed9b7aebe62bee6e
    
  - Accommodate [[nodiscard]] std::lock_guard in updated libc++
    
    A newer version of libc++ makes the std::lock_guard constructor
    [[nodiscard]] as an extension to the C++ standard, and a NOLINT comment
    is insufficient. Fix these errors:
    
    system/incremental_delivery/libdataloader/DataLoaderConnector.cpp:404:9: error: ignoring temporary created by a constructor declared with 'nodiscard' attribute [-Werror,-Wunused-value]
            std::lock_guard{mPendingReadsLooperBusy}; //NOLINT
            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    system/incremental_delivery/libdataloader/DataLoaderConnector.cpp:405:9: error: ignoring temporary created by a constructor declared with 'nodiscard' attribute [-Werror,-Wunused-value]
            std::lock_guard{mLogLooperBusy}; //NOLINT
            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    Bug: b/175635923
    Test: treehugger
    Change-Id: I6d43c136e80e203e726dd896913241b195e76af5
    
  - Merge "Include <functional> for std::function and std::placeholders" into main
  - Merge changes I9c181568,Ic0b08511 into main
    
    * changes:
      Add aligned_alloc to linker_memory.cpp
      Add missing assert.h include
    
  - Advertising data builder for configurable beacons
    
    Bug: 289542968
    Test: atest libnetsim_cxx_tests | grep adv_data
    DIFFBASE=2643312
    
    Change-Id: I2c9e7d2b8e21c8cacebb2115caa615ba10596ff9
    
  - product.prop: Update bluetooth properties
    
    Disable LeAudio related profile which are not supported.
    Fixes CtsBluetoothTestCases failures.
    
    Change-Id: I4eb615895c8dfcfba9a3fbd46d41ec49fcd057c1
    Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
    
  - Merge "No tombstones under normal bionic unit tests run." into main
  - Upgrade OpenCL-CTS to v2023-05-16-00
    
    This project was upgraded with external_updater.
    Usage: tools/external_updater/updater.sh update OpenCL-CTS
    For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
    
    Test: TreeHugger
    Change-Id: I3013d11c405781325c4c4f8397a46d596ef9938c
    
  - Autoupdate of 2 submodules
    
    *build/bazel updated to 85421d1cc95b1e4cb9f4960ba4709703342f7b4d
    Merge "Remove implicit addition of libgtest_*" into main
    *build/soong updated to 35448be86270c8d3cfe389320edd7a39a139bfdf
    Merge "Make libtest_* deps explicit in BUILD files" into main
    
  - Merge "Remove a bunch of stuff from the libc allowlist." into main
  - Merge "clatd.c - add support for UDPLITE" into main
  - Merge "[Cronet] Cancel stream before shutdown" into main
  - Merge "libhardware: make radio vendor only" into main
  - Merge "Revert "Check Android version for cert sources."" into main
  - Merge "libhardware: make thermal vendor only" into main
  - Merge "Fix init list order." into main
  - Revert "Revert "Revert "Upgrade kotlinx.coroutines to 1.7.2"""
    
    This reverts commit e4623ab71f5ce23ca9bef2033ad5241d16dfaac0.
    
    Reason for revert: b/292807808
    
    Bug: 290933559
    Bug: 292807808
    Change-Id: I5b57da1c3762ac28952a4ba18d2fe530f7b04010
    
  - Merge "Increase CtsInlineMockingTestCases timeout to 17 minutes" into main
  - Merge "Increase mockALot timeout to 17 minutes" into main
  - Remove stray local_include_dirs in Android.bp
    
    BoringSSL doesn't require this. We've, in the past, made some mistakes
    in include spelling, but it shouldn't be needed anymore.
    
    Test: treehugger, mm
    Change-Id: I19c4105fec933023c451363d40ffdcabab827572
    
  - Merge "Revert "TEST_MAPPING: Add networking test to kernel-presubmit"" into main
  - Autoupdate of 2 submodules
    
    *frameworks/native updated to c1c1e6e83e8d49161e85fc1f5ce8128aa47b1091
    Merge "Fix unimplemented codepath in conversion to async binder interface" into main
    *system/tools/aidl updated to 475fb8fe03aec5dbe7742e87932ea5b7eb0a5696
    Make aidl_test_rust_service_async run in CI
    
    Bug: 291764260
    Test: atest aidl_integration_test
    Change-Id: I481bc480e6d71ffc3cc949652e5176a8b2316984
    
    
  - Merge "Add timeline triggering triggerWaitVkQsri." into main
  - audio: Add a helper class to simplify legacy HALs migration
    
    Since in the C and HIDL APIs the method for opening a stream
    receives the device to connect to, some legacy HAL implementations
    took an advantage of that. In AIDL APIs device port connection
    process is more dynamic and independent of the stream creation.
    
    To simplify porting of legacy implementations to AIDL, a helper
    class StreamSwitcher is added. It emulates the legacy behavior
    by allowing to postpone the stream implementation creation until
    the connected device is known. Until that moment, it exposes
    to the client a stub implementation of the stream interface.
    
    Bug: 264712385
    Bug: 286914845
    Test: atest VtsHalAudioCoreTargetTest
    Change-Id: Ie8ae0338fd22f705e00a34e56a7fa235eda5ed9e
    
  - Merge changes from topic "am-2ad5fc02ce7a4d13bc835756c2b8b443" into main
    
    * changes:
      Merge changes from topic "am-c17d71b960b741f39665647c6c9afaf0" into android13-tests-dev am: bf0ad8ea56 -s ours
      [automerger skipped] Merge "Copy set of certificates from internal to AOSP." into android12L-tests-dev am: 8621595fb5 -s ours am: 346eb72452 -s ours
    
  - Merge "Merge "Merge "Skip "DeviceSuspendTestActivity" for battery less device" into android12L-tests-dev am: 08683eb419" into android13-tests-dev am: 4c119776ad" into main
  - Merge "Merge "Merge "Merge "Merge "Merge "Ensure buttons are not covered by keyboard" into android10-tests-dev am: cf741c0b27" into android11-tests-dev am: ef282de55b" into android12-tests-dev am: 65d0f93635" into android12L-tests-dev am: a0b5dfc9ad" into android13-tests-dev am: 14939d473d" into main
  - Merge "libhardware: make lights vendor only" into main
  - Merge "libhardware: make memtrack vendor only" into main
  - Pandora: refactor getUnusedPort
    
    use adb built-in method to get an unusedport instead of
    a custom method. The current method is leading to some flakiness.
    The socket might not be close when adb is trying to forward it.
    
    Bug: 290416189
    Test: atest pts-bot:GATT/SR/
    Change-Id: I2b984ce15d3485abad6575eaeb4df8a982c2ac13
    
  - Merge "[conflict] Merge "ImageDecoder: more strict checking criteria for 10-bit HEIF supportibility" into android13-tests-dev am: 2c678eb397" into main
  - Merge "Add safety comments." into main
  - Merge "Increase timeout for reboot to 4 mins." into main
  - Autoupdate of 2 submodules
    
    *device/google/cuttlefish updated to 6e906024c9ac8087b849488f6039691267bdd357
    Merge "add ot-cli-ftd to cuttlefish" into main
    *external/openthread updated to d1659f5db2435ae3916cbd97e05d850e077b6552
    add new ot-cli-ftd build target
    
    It's useful to test with simulation Thread devices in cuttlefish.
    We already have Thread HAL running with simulation RCP and adding
    the ot-cli-ftd will allow us to form networks of multiple devices.
    
    Bug: 291696259
    Test: can build and start ot-cli-ftd from shell and forms Thread network
    Change-Id: Ia172ab549a68d70436ac795f9c2bbf024f3799ae
    
    
  - Merge "Add MONO channel masks to the speaker and microphone" into main
  - Add libbolt_rt_instr.a to clang-r498229
    
    This CL adds the lib/libbolt_rt_instr.a to the clang-r498229 prebuilt.
    The archive was pulled from build aosp/aops-llvm-toolchain build 10550308
    https://android-build.corp.google.com/build_explorer/branch_dashboard/aosp-llvm-toolchain/build_id/10550308/?gridSize=20&activeBuildId=10550308&activeTarget=linux
    
    Test: ~/projects/android/aosp-plus-rust/prebuilts/clang/host/linux-x86/clang-r498229/bin/llvm-bolt --peepholes=all --instrument --instrumentation-file-append-pid --instrumentation-file=../profiles/libLLVM-16.fdata -o lib/libLLVM-16.bolt.so lib/libLLVM-16.so
    Bug: 239962209
    Change-Id: I227ea524cd7e2e11423951f3ea6e471af9e9cad1
    
  - [automerger skipped] Correct noIv cipherTest in conscrypt. am: e55e21900d am: 4800537a5e am: e8e98f5f48 -s ours
    
    am skip reason: Merged-In I5e4cf1e000c6b3d06ceaa2e3ea40e03ed8851a94 with SHA-1 818ccc7fbb is already in history
    
    Original change: https://android-review.googlesource.com/c/platform/external/conscrypt/+/2671819
    
    Change-Id: Ie2e6ae915e52cc063c0956ce7e420d3e967f39f6
    Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
    
  - Merge "Add missing <functional> for std::function" into main
  - Autoupdate of 2 submodules
    
    *frameworks/proto_logging updated to ec0663fa194aa441dbd61b86e4f76f477433f1ef
    Merge "Add enum items for BLE batch scan result bundle counter metrics" into main
    *packages/modules/Bluetooth updated to e9c0bd9f8df2299baca40cb8cf1c7f71ba358251
    Merge "Records LE Scan Activity Count" into main
    
  - [scudo] Return NULL when MAP_ALLOWNOMEM is set on Trusty
    
    Back-ported from https://r.android.com/2591905.
    
    Reviewed By: Chia-hungDuan
    
    Differential Revision: https://reviews.llvm.org/D155144
    
    GitOrigin-RevId: e4316a599727332a2332b89d28d40509d2c96ce0
    Change-Id: I283608f6096149e160a58190d9d23bab1634d352
    
  - Merge "Add safety comments, and fix functions incorrectly marked as safe." into main
  - Merge "[runtime] Add new entry and stub handler" into main
  - Merge "Fix soundness issue in keystore2." into main
  - Merge "intrinsics: Add support for macro insn FcvtFloatToInteger" into main
  - Merge "Import AndroidX from build 10541583" into main
  - Small cleanup in HLoadClass.
    
    Be consistent when checking bss kind.
    
    Test: m
    Change-Id: If6f6c06d79fba8caea8dded962c20f34f553dc7f
    
  - Add safety comment.
    
    These will soon be required by a lint.
    
    Bug: 290018030
    Test: m rust
    Change-Id: I7248d325c6017880fe6df0f9f5d40602bb7ec97a
    
  - Merge "Allow dex2oat access to symlinks in APEXes to find DCLA libs." into main
  - Merge "Check Android version for cert sources." into main
  - Merge "Log run_cvd version" into main
  - Upgrade google-smali to 3.0.3
    
    This project was upgraded with external_updater.
    Usage: tools/external_updater/updater.sh update google-smali
    For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
    
    Test: TreeHugger
    Change-Id: I8560427e52a675ecb7eb503db7048c82eafd5fad
    
  - Merge "Add two more fetch_cvd flags" into main
  - Merge "Clean up headers in files to be updated" into main
  - Ensure flip function is executed before another thread accesses stack
    
    Currently, it's possible that some thread running checkpoint or
    Thread::GetPeerFromOtherThread accesses another thread's thread-local
    data structures while the flip function is pending. This would result in
    accessing from-space referenes.
    
    Test: art/test/testrunner/testrunner.py --host
    Bug: 263557041
    Change-Id: Ib79fe7155f1e1345c72aa39f2a6eb742ed1265f1
    
  - Autoupdate of 2 submodules
    
    *build/make updated to a5043704ed45f45c7cfe16146dd283c341804882
    Merge "16k: core: Add flag to make AOSP page size agnostic" into main
    *build/soong updated to f7bd2592a1b6ec932ce9cac81f0e1ec66e938b94
    Merge "16k: soong: Add flag Device_page_size_agnostic" into main
    
  - [b test] Add configs --test_lang_filters flags to bazelrc.
    
    By default, b test //... will run both variants of the tests if the test
    supports it, like a cc_test.host_supported = True.
    
    This cl adds a config to filter that down by rule type.
    
    atest --host will map to --config=deviceless_tests.
    
    Test: b test //system/... --config=deviceless_tests
    Test: b test //system/... --config=device_tests
    Change-Id: I81a5b7b10d25347e3abf98e61cf99dde3ad807b5
    
  - RISCV: [Codegen] Add VisitDeoptimize
    
    Test: m test-art-host-gtest
    Bug: 283082089
    Signed-off-by: Lifang Xia <lifang_xia@linux.alibaba.com>
    Signed-off-by: Wendong Wang <wangwd@xcvmbyte.com>
    Change-Id: Ifd9fd86c09b50840d05e18cc4d4c9927b4be1b3f
    
  - Remove strip.keep_symbols from libart defaults
    
    Reduce libart.so file size by removing strip.keep_symbols attribute.
    With this change libart.so will no longer contain .strtab and .symtab
    sections. Symbol debug info should still be available from
    .gnu_debugdata section.
    
    ART APEX size:
    arm32 : 25,816.00 KiB -> 23,668.00 KiB (-2148.00 KiB, -8.32%)
    arm64 : 48,964.00 KiB -> 44,892.00 KiB (-4072.00 KiB, -8.32%)
    x86   : 31,516.00 KiB -> 30,136.00 KiB (-1380.00 KiB, -4.38%)
    x86_64: 52,652.00 KiB -> 49,752.00 KiB (-2900.00 KiB, -5.51%)
    
    Arm64 libart.so with strip.keep_symbols and without:
    File size: 9.81Mi -> 8.17Mi (-16%)
    VM size  : 6.74Mi -> 6.74Mi (-0%)
    .strtab and .symtab sections are not allocatable, so there is no runtime
    memory savings.
    
    Bug: 186902856
    Bug: 260881207
    Change-Id: Ibbb56299abd48b24379d4cdc72d35478bcd78c3f
    Test: art/test/testrunner/testrunner.py --target
    Test: art/tools/run-libcore-tests.sh --mode=device
    Test: art/tools/run-libjdwp-tests.sh --mode=device
    Test: ./system/extras/simpleperf/scripts/app_profiler.py -np system_server -r "-g --duration 10"
    
  - Merge "Update owner of CtsProvideTestCases" into main
  - RISCV: [Codegen] Add GenerateImplicitNullCheck
    
    Test: m test-art-host-gtest
    Bug: 283082089
    Signed-off-by: Lifang Xia <lifang_xia@linux.alibaba.com>
    Signed-off-by: Wendong Wang <wangwd@xcvmbyte.com>
    Change-Id: Id5e209b7a5458a98e66e1edb4d2e3bbcb90288db
    
  - Merge "[Thread] define Thread hardware feature" into main
  - Autoupdate of 3 submodules
    
    *build/bazel updated to 2d871c7b6affe5fbf0402b26f21e643e27537870
    Merge "Rename the top level tradefed_test_suite macro target to use the macro name." into main
    *build/soong updated to 6ee23ad2f7f977d006f24c372c3c8b0eb34b7411
    cc_test mixed builds: suffix bazel label with __tf_internal.
    
    To support `b test //path/to:my_test` command line, the actual
    executable in the cc_test macro now has the __tf_internal suffix in its
    name, so that the top level test suite target can be named without any suffixes.
    
    See other CLs in this topic for more info.
    
    Test: presubmits
    Fixes: 292159775
    Change-Id: I2d0bfc4276717ae881f6f3eb6aefa88bb47f25da
    
    *tools/asuite updated to 0f10d68d8018fd0b92ed11c7feeff4a15a6a5665
    Merge "Drop _suite suffix for the bazel test suite name." into main
    
  - RESTRICT AUTOMERGE: Merge branch 'khronos-1.3.1' into android13-tests-dev am: fcaca77d64
    
    Original change: https://android-review.googlesource.com/c/platform/external/deqp/+/2671256
    
    Change-Id: I20c1931505219a234a23bce7a9a868a803ec716e
    Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
    
  - Merge "Move libcore.java.net.SocketTest to JUnit4" into main
  - Merge "Merge "Merge "Merge "[conflict] Merge "Use tls 1.3 by default in TestSSLContext." into android11-tests-dev am: e6549ffe94" into android12-tests-dev am: 70664d6f3d" into android12L-tests-dev am: acba7b1a1c" into android13-tests-dev am: 8ab39322ac" into main
  - Change AD_SERVICES and EXT_SERVICES interdependence to start from v9
    
    Because EXT_SERVICES missed the v8 train, and an earlier version of
    EXT_SERVICES was used for that train, the dependency between AD_SERVICES
    and EXT_SERVICES doesn't start until the next SDK extension version
    bump (v9). Update the scripts accordingly.
    
    Bug: 290366486
    Test: atest gen_sdk_test
    Ignore-AOSP-first: SDKs are finalized outside of AOSP
    (cherry picked from https://googleplex-android-review.googlesource.com/q/commit:717e073bb47eb142fb01338ba4e5269e35f95731)
    Merged-In: I2f927650a0d9fc6ddfb580f7772156ccfdfc162a
    Change-Id: I2f927650a0d9fc6ddfb580f7772156ccfdfc162a
    
  - Fix type hint exception on python3.7
    
    Python 3.7 lot allow list format of hint, using List for type int to
    solve the breakage on the test node which is using python3.7
    
    Bug: 292173797
    Test: atest atest_unittests --host
    Test: Test by ATP
    Change-Id: I09a2c3a18e2999bd5ef917346e98b43f0e4cd5c1
    
  - Merge remote-tracking branch 'aosp/metalava-main' into aosp/main
    
    Bug: 292484829
    Test: ./gradlew
    Change-Id: I661770ef00b26534f644b785a9244da373d16edd
    
  - Merge "Reduce code duplication" into main
  - Fix the launch_cvd arguments error
    
    Update launch_cvd arguments with replacing \" as ".
    
    Bug: 286321583
    Test: acloud-dev create --local-boot-image ~/works/master/boot.img --branch aosp-android13-gsi --build-target aosp_cf_x86_64_phone-userdebug --build-id 10059754 -vv --launch-args \\\"-modem_simulator_sim_type=2\\\" --fetch_cvd_build_id 10176216
    Change-Id: Ic3911d18a8fbc7d942f2ef095b31c495181a9ef5
    
  - RISCV: [Codegen] Add VisitClinitCheck
    
    Test: m test-art-host-gtest
    Bug: 283082089
    Signed-off-by: Lifang Xia <lifang_xia@linux.alibaba.com>
    Signed-off-by: Wendong Wang <wangwd@xcvmbyte.com>
    Change-Id: I20a4e1437614ff393c10c495d7827b46cb37a1ce
    
  - Fix type hint exception on python3.7
    
    Python 3.7 lot allow set format of hint, using Set for type int to
    solve the breakage on the test node which is using python3.7
    
    Bug: 292173797
    Test: atest atest_unittests --host
    Test: Test by ATP
    Change-Id: I797cc46d81ff833bb8cf656351133c07c78088bb
    
  - Merge "Add polling and logging when launcher is settings" into main
  - Fix libstatspull.map.txt function names
    
    A recent CL (ag/21489712) introduced three new functions to
    libstatspull. The names of these functions were updated during the
    review of that CL. In the end the libstatspull.map.txt file ended
    up using the old names:
    - AStatsManager_subscribeToAtomEvents
    - AStatsManager_unsubscribeFromAtomEvents
    - AStatsManager_flushAtomEvents
    Where as the .h and .cc files use the newer names:
    - AStatsManager_addSubscription
    - AStatsManager_removeSubscription
    - AStatsManager_flushSubscription
    
    Update libstatspull.map.txt to use the new names.
    
    Ignore-AOSP-First: Adding #apex API that cannot be added to AOSP first
    as it automerges into tm-mainline-prod
    Test: Build with WIP CL that links libstatspull and uses the new APIs
    Bug: 268661096
    (cherry picked from https://googleplex-android-review.googlesource.com/q/commit:7d71ce02a1dae349398eb7d0efd36c18e272f8d4)
    Merged-In: Ic6139dba0fd24c232417aa872a3fbbdc49945a82
    Change-Id: Ic6139dba0fd24c232417aa872a3fbbdc49945a82
    
  - RISCV: [Codegen] Add GenerateStaticOrDirectCall
    
    Test: m test-art-host-gtest
    Bug: 283082089
    Signed-off-by: Lifang Xia <lifang_xia@linux.alibaba.com>
    Signed-off-by: Wendong Wang <wangwd@xcvmbyte.com>
    Change-Id: I550913475141db8b132180dc21ab18f90fe9dfc8
    
  - Fix type hint exception on python3.7
    
    Python 3.7 lot allow dict format of hint, using Dist for type int to
    solve the breakage on the test node which is using python3.7
    
    Bug: 292173797
    Test: atest atest_unittests --host
    Test: Test by ATP
    Change-Id: I729a0f29b5da1469b3578d8fe2cc4861876ca5aa
    
  - Merge "Mark ApacheXML tests as @FlakyTest" into main
  - Merge "Add safety comments." into main
  - DynamicSystemPreparer: Support target_files image source
    
    If image source is a target_files archive, or a directory of unzipped
    target_files archive, the image files would have a "IMAGES/" pathname
    prefix.
    
    Bug: 291535640
    Test: m tradefed-all && ./run_tradefed_tests.sh --class \
      com.android.tradefed.targetprep.DynamicSystemPreparerTest
    Change-Id: I763241cf40642560fb7216519480a9c41e638d66
    
  - Merge "Floss: Fork Floss D-Bus Clients from autotest_lib" into main
  - Merge "Remove reset usage to prevent flaky" into main
  - Merge "Add missing <functional> header for std::function" into main
  - Merge "Move QueryTaskConfig to a standalone class" into main
  - Autoupdate of 2 submodules
    
    *build/bazel updated to d19a465a34b793bb0e5f84d95bf254d90d01f20d
    Rename some paths to match the new hal/hidl change.
    
    Bug: 292568369
    Change-Id: I8e962e34dcaf25046712243ab0ecdce879770794
    Test: CI
    
    *build/soong updated to 41a58a97aec6a9b2b9a26af4d2854849ef322e4a
    Allowlist the newly added libcodec2_hal_common.
    
    Bug: 292568369
    Test: CI
    Change-Id: I5847b1c7530573cd7166bd0130d2b47c63cb9d90
    
    
  - Fix apexd_host to support no-vendor-dir
    
    Bug: 292638019
    Test: apexd_host --apex_path dir1 --vendor_path non_existing_dir
       # should work okay
    Change-Id: I6db2ab2e4833eb79a2d549a7e805419cacfab5f1
    
  - Upgrade turbine to 7c64f0447a967d4717adb7b1b40d8bb856f34186
    
    This project was upgraded with external_updater.
    Usage: tools/external_updater/updater.sh update turbine
    For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
    
    Test: TreeHugger
    Bug: 292639985
    Change-Id: Id7afe14197778d0dec6a746edfbd59c3a07e1795
    
  - Merge "Ensure the ServiceTypeClient Executor threads can be shutdown" into main
  - Merge "Add NsdManagerSampleApps to show how to usd NsdManager API" into main
  - Merge "Update acceleration/ & uirendering/ components" into main
  - Merge "Acloud supports build targets for main branch" into main
  - Merge "Fix duplicate symbols error in external/iproute2" into main
  - Revert "Revert "Upgrade kotlinx.coroutines to 1.7.2""
    
    This reverts commit 50152079bc0ae35465bab3fa5eb2d403ffb664b0.
    
    Reason for revert: test failures fixed by aosp/2663338
    
    Bug: 290933559
    Bug: 291780006
    Change-Id: I43aa20b8fc5cb44f21e2e10724aa9a31ca0554eb
    
  - Use -Xjvm-default=all instead of -Xjvm-default=enable or @JvmDefault
    
    The @JvmDefault annotation and -Xjvm-default=enable argument are both
    removed from kotlinc 1.9.0 in favor of -Xjvm-default=all.
    
    Bug: 291335478
    Test: builds
    Change-Id: I237387ed935733c9350f1be147875c1b4a2d74c8
    
  - Merge "Add a record_cvd binary that currently does nothing." into main
  - Add safety comments.
    
    These will soon be required by a lint.
    
    Bug: 290018030
    Test: m rust
    Change-Id: Id45cbdad0720323ed490dbd069b6bc0d1d965ad2
    
  - Merge "Mark death tests properly." into main
  - Merge "Initialize extension strings on snapshot restore" into main
  - Merge "Floss: remove flag check for SWB support" into main
  - Merge "Pandora: Skipped flaky L2cap test" into main
  - Merge "AdapterServiceTest: expect only one scan mode" into main
  - Merge "Catch IllegalStateException in Telecom when the Bluetooth process is down" into main
  - Update README.md for r498229
    
    Bug: 280683256
    Test: none
    Change-Id: I74f24640f69bc3383f5074e1468e9761abd4f681
    
  - Merge "Modify APNs for Nova Iceland" into main
  - Merge "libprocessgroup: UIDs in linux are unsigned" into main
  - Check deprecation for AIDL HALs.
    
    This is done by passing HalFormat properly in
    checkDeprecation impl functions.
    
    Also add rudimentary tests.
    
    Bug: 280314899
    Test: TH
    Change-Id: I87e156b7baf2d26b71845b40b51b21b48381d4ae
    
  - Merge "Fix typos/errors" into main
  - Merge "Upgrade libxml2 to 75693281389aab047b424d46df944b35ab4a3263" into main
  - Merge "Print browse tree in dump by default" into main
  - Add README on how to use order files in the soong build system.
    
    Change-Id: Ibeba6b878a741704b22b68cc0732142554dd2257
    
  - Merge "storageproxyd: Start only a single binder thread" into main
  - external/boringssl: Sync to 0ffd3658dcdc21a6c56d234cf2a6008487dcfaa7.
    
    This includes the following changes:
    
    https://boringssl.googlesource.com/boringssl/+log/32b51305debe43e38e7bf2c2b13c4ebf3b474e80..0ffd3658dcdc21a6c56d234cf2a6008487dcfaa7
    
    * Use a stub fopen implementation when OPENSSL_NO_FILESYSTEM is set
    * Link Googlers to the new porting policy doc
    * Make the parse_certificate_fuzzer from libpki work inside boring.
    * Fix the missing header issue for OPENSSL_NO_SOCK
    * Mark the old sk symbols as deprecated
    * Temporarily restore sk_pop_free_ex
    * Sync pki with chrome 6d4f9e7881fe07cf46eafd3245db2c8829e312f4
    * Add pki to generate_build_files.py
    * Silence -Wformat-truncation warning in crypto/err/err.c
    * Tidy up error handling for sockets vs fds
    * Test non-blocking socket BIOs
    * Unconditionally include BIO_set_fd and BIO_get_fd
    * Support Android's "baremetal" target
    * add pki test data to sources.cmake
    * remove duplicates that make bazel unhappy
    * Silence -Wformat-truncation in newer GCCs
    * Update RSATest.BadKey to use a plausible key size
    * Replace BIO_snprintf with snprintf within the library
    * Fix error handling in bssl_shim socket object
    * Define _DEFAULT_SOURCE for getentropy in musl
    * [ssci] Added Shipped field to READMEs
    * Add combined source lists to the other generators
    * Remove old style asm source lists for GN and Bazel
    Update-Note: I believe all GN and Bazel consumers have been migrated to
    the new style of asm source list, so this change should be a no-op. If
    any remain that still need the old ones, either migrate them to
    crypto_sources_asm and crypto_sources_nasm, or let us know.
    * Clarify what __TRUSTY__ and OPENSSL_NANOLIBC are
    * Temporarily disable the Trusty CRYPTO_sysrand implementation
    * Fix aarch64 build with GCC
    * Fix error condition in new iOS CRYPTO_sysrand
    * Make the old sk_* functions into full functions
    * Move file_test_gtest.cc to CRYPTO_TEST_SOURCES for now
    * Use constant curve-specific groups whenever possible
    * [acvptool] skip connection to the server if input json or regdump is on
    * Entropy changes for trusty and windows.
    Update-Note:
    Prior to API version 24, Trusty maintained their own CRYPTO_sysrand
    implementations outside of the BoringSSL tree.  With this change
    they are not expected to provide CRYPTO_sysrand, it is maintained
    inside the BoringSSL tree.
    * Use std::make_unique when possible
    * Make built-in curves static.
    * Update the documentation of RAND_cleanup
    * Resolve an old TODO in TestState::Deserialize
    * Fix truncation warnings with the iteration count
    * sync pki to chrome 6e6fa5a08b94199de10eea22845963baf548628b
    * Fix spelling nits
    * Clear some size_t truncations
    * Add Intel Indirect Branch Tracking support.
    * Embed the generator into EC_GROUP
    * Const-correct a handful of time functions
    * Don't include stdalign.h in refcount.c
    * Fuchsia has getentropy() via musl - use it and drop the custom file
    * Remove remnants of malloc.cc
    * Embed BN_MONT_CTX into EC_GROUP.
    * Move to preferring getentropy() for system provided entropy
    Update-Note: Non-macOS Apple platforms now use CCRandomGenerateBytes
    instead of /dev/urandom. Linux behavior remains unchanged. Platforms
    which were not explicitly supported with a different codepath will also
    switch from /dev/urandom to getentropy. If your platform specifically
    requires /dev/urandom, let us know.know
    * Use sources.cmake for the bssl tool
    * Fix Android shared library tests
    * Use sources.cmake for the test_support library
    Update-Note: If something odd happens with the test_support library in
    downstream builds, this CL is probably to blame.
    * Use sources.cmake for test binaries
    Update-Note: In the standalone CMake build, build/crypto/crypto_test is
    now build/crypto_test, etc. For now, the build still copies the outputs
    to the subdirectories (it's cheap and avoids some workflow turbulence),
    but I'm thinking we keep that for six months or so and then remove it.
    * Don't store a redundant copy of the EC_GROUP field modulus
    * Revert "Build with C11 on MSVC in the standalone Bazel build"
    * Configure explicitly whether to shard tests
    * Use sources.cmake for pki and pki_test
    * Remove field_minus_order from EC_GROUP.
    * Use file(STRINGS) to read go_tests.txt
    * Use individual files for lists of source files.
    * Sync pki to chrome 28e4a1b838b2ffbf9e2151ae5fcfffe5ab0ffac0
    * Build with C11 on MSVC in the standalone Bazel build
    * Replace byteBuilder and byteReader with cryptobyte
    * Don't store a redundant copy of the order in EC_GROUP
    * Make the curve compat APIs into real functions
    * Add pki test files for android, adapt PathService fillin.
    * Remove some unused fields
    * Temporarily add sk_new_null, etc., wrappers in bssl-sys
    * Fix libpki build
    * Fix the Windows fuzzer build
    * Consistently include BTI markers in every assembly file
    * Use ProcessPrng instead of RtlGenRandom on Windows
    * Bring in the core of  chromium certificate verifier as libpki
    * Slightly tidy BIO_C_SET_FILENAME logic
    * Credit CryptOpt in third_party/fiat/README.md
    * Start recognizing the OPENSSL_NANOLIBC define
    * Use a single TCP server port in runner
    * Simplify shimProcess accept and wait
    * Turn SocketCloser in bssl_shim into a proper owning type
    * Pass IPv6 vs IPv4 down to the shim
    * Add more tests for recognizing explicit forms of built-in curves
    * Log failure to create SSL objects in handshakers
    * Remove -D__ASSEMBLER__=1 when shelling out to the preprocessor
    * Remove p > q normalization in RSA keys
    * Implement BN_MONT_CTX_new_consttime with Montgomery reduction
    * Make bn_mod_lshift_consttime faster
    * Fix tests on Arm when NEON is unavailable
    * Fix fiat asm .private_extern declaration on Apple platforms
    * Don't expose EVP_PKEY internal representation through EVP_PKEY_assign
    * Add memcmp binding to bssl-crypto
    * Remove CRYPTO_MUTEX from public headers
    * Make RSA opaque
    Update-Note: Accessing the RSA struct directly is no longer supported.
    Use accessors instead.
    * Add target attributes to curve25519_64_adx.h
    * Add ASN1_TIME_set_string_X509
    * Don't allow timezone offsets in ASN1_UTCTIME_set_string
    Update-Note: ASN1_UTCTIME_set_string and ASN1_TIME_set_string will no
    longer accept times with timezone offsets, which is forbidden by RFC
    5280. These functions are used when minting new certificates, rather
    than parsing them. The parsing behavior is unchanged by this CL.
    * Add SSL_CIPHER_get_handshake_digest
    Update-Note: This change is backwards-compatible, but we should update
    the QUIC code to use this new function when OPENSSL_API_VERSION is
    high enough. It has the benefit of not pulling in random other hash
    functions like MD4.
    * Const-correct a few X509_PURPOSE and X509_TRUST functions
    * Tidy bssl-crypto documentation
    * Avoid another NULL+0 in BIO_s_mem
    * Remove a layer of indirection from fiat curve25519 assembly
    * Fix the combined asm source lists in generate_build_files.py
    * Update build tools
    * Give up on qsort for sk_FOO_sort
    * Remove a pointer indirection in STACK_OF(T) comparisons
    * Add fiat_curve25519_adx.S to generate_build_files.py
    * Prefix the private stack functions
    * Add .type, .hidden, and .size to the new fiat ADX assembly
    * Use ADX asm for Curve25519 base-point multiplication
    * Make DSA opaque
    Update-Note: Accessing the DSA struct directly is no longer supported.
    Use accessors instead.
    * Add saturated X25519 for x86_64+ADX running Linux
    * Handle ChaCha20 counter overflow consistently
    * Use packed representation for large Curve25519 table
    * Add SHA256 and SHA512 bindings to bssl-crypto
    * Make BN_mod_inverse() deal with repeated arguments
    * Remove BN_DEC_FMT2 and test the others
    * Define TLSEXT_nid_unknown
    * Constant-time test that X25519 has a single path.
    * Add a value barrier when checking for point doubling.
    * Align NIDs vs group IDs in TLS group APIs
    * Align remaining TLS ECDH APIs on "group" terminology
    * Align on using the "group" over "curve" for ECDH in TLS
    * Remove SSL_CIPHER_get_value
    Update-Note: SSL_CIPHER_get_value was our original name for the
    function. OpenSSL later called it SSL_CIPHER_get_protocol_id. I believe
    all external callers have since been updated to use the new function.
    (If I missed a few stragglers, replace with SSL_CIPHER_get_protocol_id
    to fix.)
    * add rust bindings for ed25519
    * Add an ABI test for x25519_NEON
    * Add constant-time validation for curve25519
    * Add prefetch to aes_hw_ctr32_encrypt_blocks
    * Remove variable expansion from CONF fuzzer
    Update-Note: NCONF_load and NCONF_load_bio no longer support the $foo
    variable expansion syntax. If you are using these functions in your
    project, remove them.
    * Remove some unreachable character types in the CONF parser
    * Remove some unnecessary NULL checks in conf.c.
    * Test the CONF parser more extensively
    * Miscellaneous size_t truncation fixes
    * Add int casts as needed around STACK_OF(T) sizes and indices
    * Bound STACK_OF(T) sizes by int
    * acvptool: clean up better.
    * Avoid locks in CRYPTO_free_ex_data
    * Disable TLS_RSA_WITH_3DES_EDE_CBC_SHA by default
    Update-Note: This CL disables TLS_RSA_WITH_3DES_EDE_CBC_SHA by default.
    Specifically, it will not be included unless explicitly listed in the
    cipher config, as "TLS_RSA_WITH_3DES_EDE_CBC_SHA", its legacy OpenSSL
    name "DES-CBC3-SHA", or the alias "3DES". To restore it, add one of the
    above to your cipher config.
    * Don't include <stdatomic.h> in C++
    * Add a comment about the Chromium sandbox for macOS sysctls
    * Update hkdf.c to avoid potentially vulnerable code pattern.
    * Fix RAND_enable_fork_unsafe_buffering when called after fork
    * Add a thread test for ex_data
    * Remove read locks from PRNG steady state
    * Add an atomics library to crypto/internal.h
    * Remove the lock-based atomics fallback
    Update-Note: On non-Windows platforms, we now require C11 atomics
    support. Note we already require C11 itself. If this affects your build,
    get in touch with BoringSSL maintainers.
    * Use Windows Interlocked* APIs for refcounts when C11 isn't available
    * Reject RSA keys under 512 bits
    Update-Note: We no longer accept 511-bit RSA and below. If you run into
    this, update test keys to more modern sizes as we plan to raise the
    limit beyond 512-bit RSA in the future. 512-bit RSA was factored in
    1999, so keys at or near this limit have been obsolete for a very, very
    long time.
    * Check public components in freeze_private_key
    Update-Note: Manually constructed RSA private keys with invalid n or e
    will now fail private key operations. Such keys would always fail at
    public key operations (so the signatures would never verify). They also
    already failed RSA_check_key and parsing.
    * Remove now redundant RSA test
    * Add documentation for X509_STORE_CTX_set_verify_cb and friends
    * Add a multi-threaded mode to bssl speed
    * Use a helper function to implement get_all_foo_names functions.
    * Cap the input size to the conf fuzzer
    * acvptool: implement pipelining.
    * Update googletest
    * Update build tools
    * OpenBSD Support
    Update-Note: Additionally, BoringSSL now requires macOS 10.12 or later
    for getentropy support. This is consistent with
    https://github.com/google/oss-policies-info/blob/main/foundational-cxx-support-matrix.md
    * Remove unions in BLAKE2b implementation
    * Bump the minimum supported MSVC version to VS2019
    Update-Note: BoringSSL now requires VS2019 or later and no longer
    supports VS2017. VS2017 has been past its "mainstream end date" for over
    a year now, per
    https://learn.microsoft.com/en-us/lifecycle/products/visual-studio-2017
    * Add APIs to query a list of possible strings for TLS features
    * Add back support for TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
    * Fix PKCS8Test to not rely on RSA-512
    * Add a more general mechanism for deprecating TLS ciphers
    * Add APIs to support RSA keys with large e.
    * Remove unions in GCM implementation
    * Rename EC_RAW_POINT to EC_JACOBIAN
    * Clarify that X25519 also supports EVP_PKEY_new_raw_private_key, etc
    * Align Kyber names with draft-tls-westerbaan-xyber768d00
    Update-Note: Update references to NID_X25519Kyber768 to
    NID_X25519Kyber768Draft00. For now, the old name is available as an
    alias.
    * Remove unions in polyval implementation
    * Remove H from GCM128_KEY
    * Don't make assumptions about GCM128_CONTEXT layout in aesni-gcm-x86_64.pl
    * Don't make assumptions about GCM128_CONTEXT layout in aesv8-gcm-armv8.pl
    * Implement the AuthEncap/AuthDecap HPKE modes
    * Update references to draft-irtf-cfrg-gcmsiv
    * Replace interface{} with any
    * Add new APIs for creating RSA keys
    * Disable BlindingCacheConcurrency on FreeBSD.
    * Add Kyber to runner tests
    * Invalidated cached RSA, DH, and DSA state when changing keys
    * Support WPA 3.1 "enterprise" mode.
    * runner: Remove an unnecessary use of AllCurves
    * Move the old SPKAC types to their own section
    * Remove unimplemented SSL BIO_ctrl values
    Update-Note: I found no code using those symbols (that we build). If
    anything was, they most likely were broken. Now they'll fail to build
    and the brokenness will be more obvious. (If we find something needs it,
    we can always go back and implement them.)
    * Don't copy all of bssl-sys into the CMake build directory
    * Remove go:build ignore from convert_wycheproof
    * X509_sign, etc., should return the length of the signature on success
    * Add some missing includes
    * Specify the TLS cipher order more straightforwardly
    * Squeeze a block at a time when computing the matrix in Kyber
    * Align TRUST_TOKEN_pst_v1_voprf with draft-21 of VOPRF
    * Re-add go:build ignore lines
    * Move convert_wycheproof into its own package
    * Allow passing extra flags to BoGo shim
    * Remove TLS_RSA_WITH_NULL_SHA
    Update-Note: TLS_RSA_WITH_NULL_SHA is no longer available. Nothing
    should be enabling it anymore. Callers using
    SSL_CTX_set_strict_cipher_list instead of SSL_CTX_set_cipher_list will
    notice if they're affected very quickly, because the functino will
    fail if this cipher is referenced. As a deprecated cipher suite, this
    cipher was already unavailable unless explicitly named, so if your
    configuration doesn't say "TLS_RSA_WITH_NULL_SHA" or "NULL-SHA", you
    were not using this cipher.
    * Only rerun bindgen when its dependencies change
    * Add mechanism for deprecated declarations.
    Update-Note: We are starting to mark some functions in
    boringssl as deprecated declarations which will cause the
    compiler to emit warnings if they are used. The intention
    is both to prevent accidental use in new code, and to to call
    attention to call sites in existing code so that the documentation
    for the deprecated function can be revisted and appropriate action
    taken.
    * Spell includes in wrapper.h like the rest of the project
    * Replace sort.Sort with sort.Slice
    * Fix allowlist regex in bindgen invocation
    * Update docs to recommend a much more convenient CMake invocation
    * Trim some unused XN_FLAG_* values
    Update-Note: Some seemingly unused XN_FLAG_* values were removed. If
    some project fails to build, we can put them back but one shouldn't be
    using this function in the first place.
    * Remove --size_t-is-usize from bindgen call
    * Clarify in ssl.h documentation not to use the verify callback
    * Move the X509 time functions under "Convenience functions"
    * Remove the X509at_* functions
    * Organize X509_ATTRIBUTE functions into sections.
    * Document a pile of X509 print functions
    * Generate 64-bit Curve25519 and P256 code for MSVC
    
    Test: treehugger
    Change-Id: Icc7cd1442674d75c0e5635cd133562fdf6110fc9
    
  - Merge changes Ib000e0c8,I3753638d,I66922bac into main
    
    * changes:
      disable USB passthrough support in crosvm
      adb_connector: better log when initial connect fails
      run_cvd: pass --full option to crosvm suspend/resume cmds
    
  - Merge "Fix typo in test" into main
  - Merge "fix BLE scan could be started even screen is off" into main
  - Merge "Add safety comments, and fix functions incorrectly marked as safe." into main
  - Add bug to TODO
    
    Bug: 292563629
    Test: Presubmits
    Change-Id: I18043678a28061651349fac02cfed3c07cb50e36
    
  - Autoupdate of 2 submodules
    
    *build/soong updated to 9081d142cb3911f1ec8641e7b020503b5fd330e2
    Merge "rustc-1.71.0 Build 10534657" into main
    *prebuilts/rust updated to 1db79348d47f631533f838d3fc4b7f48230e13ec
    rustc-1.71.0 Build 10534657
    
    Bug: https://issuetracker.google.com/issues/288268986
    Test: m rust
    Change-Id: If563beb499f016713951ed383a368ff3e3187fc7
    
    
  - Roll ANGLE from a18246ac1a78 to 5e21d7f02425 (40 revisions)
    
    https://chromium.googlesource.com/angle/angle.git/+log/a18246ac1a78..5e21d7f02425
    
    Please enable autosubmit on changes if possible when approving them.
    
    If this roll has caused a breakage, revert this CL and stop the roller
    using the controls here:
    https://autoroll.skia.org/r/angle-android-autoroll
    Please CC angle-team@google.com,rmistry@google.com,romanl@google.com on the revert to ensure that a human
    is aware of the problem.
    
    To file a bug in ANGLE: https://bugs.chromium.org/p/angleproject/issues/entry
    
    To report a problem with the AutoRoller itself, please file a bug:
    https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug
    
    Documentation for the AutoRoller is here:
    https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
    
    Test: Presubmit checks will test this change.
    Exempt-From-Owner-Approval: The autoroll bot does not require owner approval.
    Bug: b/257116399
    Bug: b/276742336
    Bug: b/284462263
    Bug: b/289125521
    Bug: b/290813597
    Bug: b/291604008
    Bug: b/292259684
    Change-Id: I71ff82ccb8f959fd4c23e4b51b864f42e56e6876
    
  - Merge "BpfClassic - add three more macros" into main
  - Merge "Verifier Streaming use a gloabally accessible link" into main
  - Merge "codec_metrics: change thread cpu usage time from us to ns" into main
  - Allow uninstantiated WeaverTest
    
    Add back GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST, which I had
    accidentally removed while merging the AIDL and HIDL tests.  I think
    this is still needed on devices that don't support Weaver at all.
    
    Bug: 291284381
    Test: atest VtsHalWeaverTargetTest
    Change-Id: Iac1b4476620e51c645e3ad57444ee386cb879029
    
  - Autoupdate of 2 submodules
    
    *device/google/cuttlefish updated to 61a4ebe6d1d0a74dd4d044773555d3517a55a95c
    Merge "Expect sensorservice HIDL interface to no longer be used" into main
    *system/libhidl updated to d767636b78cc54d467911184732bb521b641879a
    Merge "Stop serving frameworks.sensorservice on new devices" into main
    
  - Add -Wconversion to targets.
    
    In addition, remove the -Wno-unused warning flags for building the tests.
    
    Test: Builds and all unit tests pass.
    Change-Id: I08e4c16ece92fc4489aa0813e16874a0bc8bf945
    
  - Merge "Add missing markup for roundss/roundsd." into main
  - Revert "Make server maps concurrent"
    
    This reverts commit 4e8f157e3774a7d41386bdbcd81cc92082d1029d.
    
    Reason for revert: b/292266227
    
    Change-Id: I48033966e698e8b456e0caa6f45691d2c4c0184c
    
  - Merge "Standardize on Settings.java instead of View.java" into main
  - Fixing compiler warnings for PermissionController project
    
    Test: atest
    Bug: 195346174
    Change-Id: Ic1c1098dab6aed52695c31dc6632c38f8e2b0caf
    Merged-In: Ic1c1098dab6aed52695c31dc6632c38f8e2b0caf
    (cherry picked from commit d7b0dee474dd329fe265644571ed441c5c7d7fd7)
    
  - Merge "Allowlist hal_unit_tests and deps" into main
  - Fixed incorrect nullability
    
    Fix: 292303882
    Test: atest service-entitlement-tests
    Change-Id: Iac85a2088f2f1d10a57b953547b88de9f222ab1f
    
  - Merge changes I4012769d,I83807df8,I0a66239e,Icede80c6,I94be95f6, ... into main
    
    * changes:
      AdapterServiceTest: Fix flaky test
      Use TestLooper in AdapterService*Test
      static import of BluetoothAdapter State
      Remove binder tests from AdapterServiceTest + unification
      Move AdapterService*Test to truth assert
      AdapterService: getSystemService before initNative
      AdapterService: Add a constructor with a TestLooper parameter
    
  - Merge changes I9078e326,I95a1494a,I69e609d4,Ie893ae8c into main
    
    * changes:
      Add scoped event
      Wrap instant events and counters
      Wrap async ATrace events
      Wrap atrace utility methods
    
  - Autoupdate of 2 submodules
    
    *frameworks/av updated to d758be4c3f93841b2d5391cbcb115cdc2d562477
    Merge "codec2 hal: type conversion refactoring, step 2" into main
    *packages/modules/common updated to eabef208a7447903e9220ccc135c9185921f9403
    Add libcodec2_hal_common to allowed_deps
    
    Bug: 251850069
    Test: m
    Apex-Size-Increase: libcodec2_hal_common is a header lib
    Previous-Platform-Support: yes
    Aosp-First: yes
    Test-Info: m
    Change-Id: I79f9d42708eefc372c29defc232eff39f778040b
    
    
  - Merge "broadcaster: Remove spare logs" into main
  - Add system_server system_file file to bug_map
    
    The issue seems non-trivial, so I've added it to the bug map pending a
    fix.
    
    Bug: 291210768
    Test: Null
    Change-Id: I296c90f678f03083e68a44277bea7a74686fba08
    
  - Merge "[backend] Remove unused compiler_hooks_" into main
  - Update OWNERS
    
    ようこそ！
    
    Test: N/A
    
    NOTE FOR REVIEWERS - original patch and result patch are not identical.
    PLEASE REVIEW CAREFULLY.
    Diffs between the patches:
     -srhines@google.com
    +appujee@google.com
    -chh@google.com
    -yikong@google.com
    -ndesaulniers@google.com
    +srhines@google.com
    +yikong@google.com
    +zijunzhao@google.com
    +
    
    Original patch:
     diff a/OWNERS b/OWNERS
    --- a/OWNERS
    +++ b/OWNERS
    @@ -1,10 +1,11 @@
     # Default maintainers and code reviewers:
    +appujee@google.com
    +pirama@google.com
     srhines@google.com
    -pirama@google.com
    -chh@google.com
    +yabinc@google.com
     yikong@google.com
    -ndesaulniers@google.com
    -yabinc@google.com
    +zijunzhao@google.com
    +
     # mailing list cannot be a reviewer yet
     # android-llvm-dev+owners-review@google.com
    
    Change-Id: Ic773bc018c53b31c2b713951a090ae41d557a311
    
  - Remove some go_binaries from prebuilts/build-tools
    
    These tools were added for Roboleaf since rules_go had not been imported
    yet. Now that we can build go tools from source, we can delete them.
    These tools have no reverse deps in aosp.
    
    One exception that will *not* be removed in this CL is merge_zips. It
    was added for roboleaf, but the prebuilt is now being used in
    `tools/asuite/atest/bazel/scripts/gen_workspace_archive.sh`
    
    Bug: 248222296
    Test: Used grep to verify there are no rdeps to these prebuilts
    Change-Id: I95776a0d90a25bda7c317618d3ccff54c1ec0afa
    
  - Merge "[meson] More build fixing" into main
  - RISCV: [Codegen] Add LoadMethod
    
    Test: m test-art-host-gtest
    Bug: 283082089
    Signed-off-by: Lifang Xia <lifang_xia@linux.alibaba.com>
    Signed-off-by: Wendong Wang <wangwd@xcvmbyte.com>
    Change-Id: Ic11e0ff70a8d57c622759265471843d46252366a
    
  - Merge "Ensure buttons are not covered by keyboard" into main
  - Creating dir for libgbl
    
    Bug: 292263582
    Change-Id: I884dad9812877d6499e563263437188d213e67e8
    
  - Merge changes from topic "am-b6ecb1aa2e4e47d09ac53edfaaf78bf6" into main
    
    * changes:
      [automerger skipped] Merge "Merge "Fix process crash in CtsViewTestCases in slower devices" into android12L-tests-dev am: d7bcd58ee0" into android13-tests-dev am: c1e0f86da8 -s ours
      [automerger skipped] Merge "Fix process crash in CtsViewTestCases in slower devices" into android12L-tests-dev am: d7bcd58ee0 am: ec82e577bd -s ours
    
  - RISCV: [Codegen] Add VisitBoundsCheck
    
    Test: m test-art-host-gtest
    Bug: 283082089
    Signed-off-by: Lifang Xia <lifang_xia@linux.alibaba.com>
    Signed-off-by: Wendong Wang <wangwd@xcvmbyte.com>
    Change-Id: I59bdfe0ca20a08d4d4cc88cbf65a11a58aebaadf
    
  - Merge "Add rs zygote fd to bug_map" into main
  - Merge "Set non-servere error logs to warn logs" into main
  - Various fixes to the UPDATING file
    
    Extracting the UPDATING changes out of
    dd6fc180c92d5e54a62f470755b241b7e320e3b8 so I don't have to recreate
    them again if the reland gets reverted.
    
    - Run generate_build_files.py with python3, not python. python sometimes
      points to py2 and sometimes to py3 and sometimes doesn't exist. We
      want py3.
    
    - Automate the workaround for b/291253039
    
    - For now, exclude the new experimental PKI library. It's not yet ready
      for use by Android.
    
    Test: ran the update script
    Change-Id: I9786ad4be7bc6b507f89aa28a98998321f35ada1
    
  - Merge "rust: Enable Product support for dylibs." into main
  - Merge "Allowlist ModuleMetadata" into main
  - Merge changes I69f80d12,I40d48644 into main
    
    * changes:
      Merge META-INF/services/* files in merge_zips -jar
      Strip META-INF/services from implementation jars when using as header jars
    
  - Merge "Allow setting some build_broken out of boardconfig" into main
  - Use the same caller saves for the various bss class loads.
    
    Test: test.py
    Change-Id: I7bd396964368af6eee346bf8e9b00cafa26e9d45
    
  - Revert "Depend only on userfaultfd's SIGBUS feature to use it"
    
    This reverts commit b07839bf272f385cb61d762b43dc2952470a2218.
    
    Reason for revert: build breakage branch : git_trunk-release
    
    Change-Id: I9b089cb3f55ae9ef7b34f67ab98c483f396af611
    
  - Merge "aconfig: restructure integration tests" into main
  - Merge "Fix race between read/write" into main
  - Merge remote-tracking branch 'aosp/metalava-main' into 'aosp/main'
    
    Bug: 288396761
    Test: ./gradlew, m checkapi
    Change-Id: Ib5cc67bb55226aa08bc5e69c9a393e80c76b98e0
    
  - Merge "Skip SocketTest#testSocketTestAllAddresses" into main
  - Add a comment on arm64 suspend check slow path.
    
    Only suspend checks can see live SIMD registers.
    
    Test: m
    Change-Id: I1902ea24c282a405035463325505ccaef15d5ccd
    
  - Add RouteInformation option Struct.
    
    This structure is useful when building an RA with RIO for integration
    tests and verify the device's provisioning behavior, for example, check
    if devices in ULA networks can recover its IPv6 connectivity from
    receiving a normal RA after losing IPv6 default route (e.g. received RA
    with zero router lifetime).
    
    Bug: 183601771
    Test: m
    Change-Id: I13b85000ea1633f56edc74e3d62b7a38b9a851bf
    
  - Merge "Do not check GCE config for remote host instances" into main
  - Merge "bass: Clean up logging for service" into main
  - Autoupdate of 2 submodules
    
    *device/google/cuttlefish updated to 0a1525a15e8818790c23199bca25da3b85fb8d3d
    Merge "[Thread] enable ThreadNetwork hardware feature for cuttlefish" into main
    *frameworks/native updated to 32b511f4716244f0cf13ca0a1d5b8b2efe09d688
    Merge "[Thread] define the ThreadNetwork hardware feature" into main
    
  - Merge "Improve safety comment." into main
  - Use correct comparison operator when sampling for hidden API event log
    
    If eventLogSampleRate is 0xffff we should always log hidden API accesses. Without this fix there is a 1 in 65535 chance that it won't log.
    
    Bug: 279570993
    Test: abtd CtsHostsideHiddenapiTests
    Change-Id: I565115de90959755431fa8b96eb3f0b6f27b57e2
    
  - Merge "Add test for benchmarking NetworkStatsCollection" into main
  - Merge "Add safety comments." into main
  - Merge "[rialto] Enable the host and service VM vsock connection" into main
  - Merge "Fix soundness issue in microdroid manager." into main
  - Move GetOpenWrtInfoDict to cvd_utils
    
    Test: acloud-dev create --branch aosp-main \
          --build-target aosp_cf_x86_64_phone-trunk_staging-userdebug \
          --build-id 10506176 -vv --openwrt --report-file ~/report.json
    Bug: 218973230
    Change-Id: If9a50755e5e99fa28cca2cb08efaef832c6939b4
    
  - Merge "Add safety comments to prng_seeder." into main
  - Merge changes Ib9a1af0c,I807496ec into main
    
    * changes:
      Use OnceLock rather than Once.
      Add safety comments to binder tests.
    
  - Merge "BroadcastReceiveState: improve receive state logging" into main
  - Fix type hint exception on python3.7
    
    Python 3.7 lot allow list format of hint, using List for type int to
    solve the breakage on the test node which is using python3.7
    
    Bug: 292173797
    Test: atest atest_unittests --host
    Test: Test by ATP
    Change-Id: I8ba8fabfdfe8b7cbafc894ef97d63ab24170bb42
    
  - Merge "Standardise and add safety comments." into main
  - Revert "Update LUCI device filter"
    
    This reverts commit 80d8a59a9dfba3a7f40a4b97d2809ab1142ba999.
    
    Reason for revert: Causes timeouts
    
    Change-Id: I30146306ab987cfb034779b18232ea54ec72c4b4
    
  - Merge changes Id73cdfa8,I08951eec into main
    
    * changes:
      Don't call wrapped atrace_begin if tag is disabled
      Add the rest of static inline function wrappers
    
  - Merge changes I2581fd7c,I1ed57e6d into main
    
    * changes:
      fs_mgr: Refactor by inlining trivial helpers
      fs_mgr_overlayfs: Make all string constants constexpr
    
  - Move GetConfigFromAndroidInfo to cvd_utils
    
    Test: acloud-dev create --branch aosp-master \
          --build-target aosp_cf_x86_64_phone-userdebug \
          --build-id 10335116 -vv
    Bug: 218973230
    Change-Id: Ic1d3246b9aebc21d5c9d604ad69ffd2f1ed7d58a
    
  - Merge "Move CtsWifiBroadcastsHostTestCases from 'networking' to 'wifi' component" into main
  - Use vmovd/vmovq instead of movd/movq if CPU supports AVX
    
    Bug: 278812060
    
    Test: m berberis_all
    
    Change-Id: I603810a6ab573fca2f21952d08725c4017dc9237
    
  - Merge "Move CtsUsbTests from 'misc' to 'systems' component" into main
  - Merge "Limit max height of omnibar options list & reveal highlighted option." into main
  - Merge "Summon command palette with Ctrl+P and other omnibar UX improvements." into main
  - Merge "Remove redundant reset" into main
  - ASuite: update prebuilt atest by uploader.(10530435).
    
    The prebuilt atest was downloaded from:
        aosp-main/aosp_cf_x86_64_phone-trunk_staging-userdebug:10530435.
    SHA256:1e36f7944373ced23789ef86ea3f8ac83cbe7ca3e37e5085acd41c761e2ca876
    
    Bug: 292167714
    Bug: 290317853
    Bug: 279869944
    Bug: 289238157
    Bug: 179812544
    Bug: 290861109
    Bug: 275768289
    Bug: 290860969
    Bug: 290716347
    Bug: 278758359
    Bug: 291681482
    Bug: 290317432
    Bug: 289882784
    Bug: 290317267
    Bug: 289902671
    Bug: 290317271
    Bug: 291003989
    Bug: 289538639
    Bug: 288069169
    Bug: 249956928
    Bug: 280726231
    Bug: 291988425
    Bug: 288869073
    
    aosp/2654961 85e432a: Rename atest profilers explicitly
    aosp/2653340 8cfe628: ATest: Introduce method to filter invalid test reference
    aosp/2648524 53d665f: Ensure that cache files are valid
    aosp/2651877 fb5a867: Extend test-timeout option for LibcoreTest
    aosp/2624190 54eeae4: Install python modules in virtual environment for profilers
    aosp/2651647 8beb4a0: Fix error while checking file integrity
    aosp/2648210 795fe9b: [atest roboleaf] Automatically run compatible test variants and stop hardcoding host_driven_test.
    aosp/2651429 f86710d: Fix deprecation warning for oauth2client.contrib.multistore_file
    aosp/2660543 3c9acff: [Mobly+atest] Use type hint Optional[X] instead of X | None for older Python compatibility
    aosp/2653121 a36c794: Create cache files in atomic way
    aosp/2654967 b8e0ed0: Easily access test logs in Bazel mode like standard mode.
    aosp/2655326 88e6477: Fix invalid method annotation
    aosp/2654962 3411622: Move unrelated bash functions out of main
    aosp/2666078 346a2ba: Bypass the exec mode checks for roboleaf mode
    aosp/2661835 234e5f3: Fix atest_unittests failure on CI
    aosp/2481679 324fed7: Make get_build_out_dir return Path
    aosp/2661595 104c12d: Fix atest_unittests failure
    aosp/2653120 0d4501d: Fix KeyError when retrieve build targets
    aosp/2653339 6e08b7e: ATest: catch AttributeError when access cache
    aosp/2647381 d1335f8: Stop downloading artifacts during build time
    
    Test: source build/envsetup.sh && lunch
        atest atest_unittests
        $ANDROID_BUILD_TOP/prebuilts/asuite/atest/smoke_tests
        tools/asuite/atest/atest_integration_tests.py -cy
        tools/asuite/atest/atest_integration_tests.py -ce
    Change-Id: Ib9be603b3c92af0436afc8708a9cb12601009719
    
  - Fix NullPointerException thrown by AcloudShutdown
    
    A virtual device with preconfigured IP address does not require
    a configuration file.
    
    Test: ./run_tradefed_tests.sh
    Bug: 216591507
    Change-Id: I033d6cdf3c886f80b4428455df3ca2a4cfd814b1
    
  - Merge "Fix potential NPE in PbapClientStateMachine" into main
  - Merge "Updated fuzz_config in Android.bp file" into main
  - Merge "Updated fuzz_config in Android.bp file" into main
  - Merge changes from topic "am-d4be41b0c15946a08ec97970f8f3b64a" into main
    
    * changes:
      [automerger skipped] Merge "Make the WindowInsetsAnimationTests more repeatable" into android13-tests-dev am: e7ecd22513 -s ours
      [automerger skipped] Make the WindowInsetsAnimationTests more repeatable am: 695643aa4b -s ours
    
  - network_stack_utils_jni.cpp - switch to classic bpf macros - part 3
    
    easy changes to attachDhcpFilter() - though it probably could still use
    more work, as it's not fully L3 header relative yet.
    
    Test: TreeHugger, atest NetworkStackUtilsIntegrationTest
    Signed-off-by: Maciej Żenczykowski <maze@google.com>
    Change-Id: I6954e8959fe2eab8071b7c900039961381b34f3f
    
  - Merge "Use sendPointerSync in ViewUnbufferedTest" into main
  - Merge "Revert "Add workaround for a file with an mtime in the future"" into main
  - Merge "remove ia type for ATT mvnos" into main
  - Merge "Fix potential flakiness in android_mallopt test." into main
  - Merge "Updated OWNERS file with statsd team members" into main
  - Merge "Update offload ioHandle to effects" into main
  - Merge "Revert "Revert "Update pdl-compiler to 0.1.4""" into main
  - Merge "Improve the Form widget experience." into main
  - Merge "gfxstream: Random clang format" into main
  - Autoupdate of 2 submodules
    
    *external/crosvm updated to 131a4372e10f52a75d7c5547fabbf242f94295ba
    rutabaga_gfx: extensible submit cmd
    
    Fence passing API.
    
    BUG=291675505
    TEST=compile
    
    Change-Id: Ied4a05d1036a0d2ee30c2ba914f266db042df9a3
    
    *hardware/google/gfxstream updated to 773d949dd509c0994a9a2dc5792b7ec879fff1e9
    Merge "gfxstream: make SUBMIT_CMD extensible" into main
    
  - Merge "ui: Add chip for debuggable" into main
  - Merge "Skip parsing verifiedBootHash when attestation version < 3" into main
  - Merge "Skeleton code for adevice." into main
  - Add support for key agreement keys
    
    This change adds support for parsing key agreement keys for X25519,
    P256, and P384.
    
    Include equality traits for both PublicKey and KeyAgreementPublicKey.
    
    Test: libhwtrust_tests
    Bug: 280620556
    Change-Id: If0ee1a2f0bab219b4ae1c99be7a058ea6047b5af
    
  - Merge "Reduce reported battery temperature to 25°C." into main
  - [Mobly+atest] Support --iterations, --rerun_until_failure, and --retry_any_failure
    
    Bug: 275768289
    Test: atest mobly-hello-world-tests -c (with rerun flags)
    Test: atest atest_unittests --host
    Change-Id: If61b6a8ccf3ff6e17a39938b2b9390330d2efd41
    
  - Merge "snapuserd: use local buffers for xor processing during sync I/O" into main
  - Merge "Remove skip_preprocessed_apk_checks" into main
  - Sync protobuf for TypeScript
    
    The changes necessary for directory structure change in protobuf
    for ui
    
    Change-Id: I94ca520c93bb956899b5061f4a1fcdc5892cf705
    
  - Merge "Remove libandroid_support support." into main
  - Merge "[backend] Add code_emitter" into main
  - Merge "Allowlist additional deps of inputflinger" into main
  - Merge "ui: Clean up PanelContainer a little" into main
  - Merge "Format import." into main
  - Autoupdate of 2 submodules
    
    *frameworks/native updated to dc176d9931b37be327c1091744e4cb6b51b50245
    Merge "Make maximum sensor fusion rate tunable." into main
    *system/sepolicy updated to 1d68b1b2da6efcd599777474f19aaa53b911b612
    Merge "Add SELinux config for new SensorFusion property" into main
    
  - Autoupdate of 2 submodules
    
    *build/bazel updated to 38a1260847087d4f70de88032ec45e50878c5551
    Merge "Convert HelloWorldHostTest to b test" into main
    *build/soong updated to 8348ce92f5754c9e9df4c23347170162b03ff14c
    Merge "java_test macro needs srcs and deps to create .jar for tradefed_test_suite" into main
    
  - Merge "Fix the concurrency issue when 'linkToDeath' in AccountManagerService that leads to JE" into main
  - Merge "FCM: add c2 software, IConfigurable instances" into main
  - Merge changes from topic "am-113944dfcd434ac19776951c83ae12aa" into main
    
    * changes:
      Merge changes from topic "am-6d4b4a67bb2f41c2aef93e32a8b91072" into android13-tests-dev am: 3952321608 -s ours
      [automerger skipped] Merge changes from topic "am-6059c08d45744f5eb2350de24b5bd4cd" into android12L-tests-dev am: e02cf79ebe -s ours am: ad24c3d8c2 -s ours
    
  - Merge "Add missing OWNERS file." into main
  - Allow undocumented unsafe blocks in generated code.
    
    Bug: 290018030
    Test: m rust
    Change-Id: If090b1db099ddafbdbab17bed7639ff69ade8c47
    
  - gfxstream: fix Linux guest build
    
    After the move, various fixes are needed.
    
    - Need to re-order directories in top-level meson file
    - Need to add certain include dirs
    - Use internal Vulkan headers.  These unforunately define
      Android extensions even on Linux guests, so we need a
      (LINUX_GUEST_BUILD) guard until we can fix that.
    
    BUG=202552093
    TEST=compile
    
    Change-Id: If806502e19c40a727f16b011e37da98feaa1e9df
    
  - Merge changes I345e9c64,Id2821ef1,Iaccaa3b7 into main
    
    * changes:
      leaudio: Try to attach device which enable streaming contex type
      LeAudio: Decouple configuration mechanism from the available contexts
      LeAudio: Change the initial configuration
    
  - Added getPhoneNumber support
    
    Fix: 290953736
    Test: atest Ts43OperationTest
    Change-Id: I80db72039ecace9bd882734278fe2d89b729c204
    
  - riscv64: [codegen] Add VisitLongConstant
    
    Test: m test-art-host-gtest
    Bug: 283082089
    Change-Id: Ie296afacbd3e77a184d9226a4ecb0c46bbb6d478
    
  - Merge "LLCP clean up in the Service code" into main
  - Merge "Add aconfig flags and a generic generated library plugin module for cc" into main
  - Merge "Make aconfig c++ generate only one header and only one .cc file" into main
  - Merge "Add Ctz/Ctzw intrinsic and use in semantics_player" into main
  - mobly: Use alternative version of split that handle null `shardCountHint` for us.
    
    Change-Id: I301da10bfbbe9343c81f4abfc609f5943d765fee
    Fix: 292231335
    
  - Merge "Fix apex for runtime libs" into main
  - Autoupdate of 2 submodules
    
    *build/bazel updated to ec605303a8c66a678f0ca910fdc65b4823ef361b
    Merge "Add DeviceAbi product variable build setting." into main
    *build/soong updated to 66b27cb853cf9194e3a67cab89968a7fa392aebd
    Merge "Add DeviceAbi to product variable to build setting export" into main
    
  - RISCV: [Codegen] Add VisitCurrentMethod
    
    Test: m test-art-host-gtest
    Bug: 283082089
    Signed-off-by: Lifang Xia <lifang_xia@linux.alibaba.com>
    Signed-off-by: Wendong Wang <wangwd@xcvmbyte.com>
    Change-Id: I44318496ed4c7396f87ac71feaf578a5509131e0
    
  - Depend only on userfaultfd's SIGBUS feature to use it
    
    We don't use minor-fault feature and therefore there is no reason to
    depend on it. This is particularly important for riscv64 archs where
    minor-fault feature isn't implemented.
    
    Bug: 160737021
    Bug: 291694105
    Test: art/test/testrunner/testrunner.py --host
    Test: cuttlefish boots on riscv64 accepts dexpreopt artifacts:
      In one terminal:
        $ lunch aosp_cf_riscv64_phone-userdebug
        $ launch_cvd --gpu_mode=drm_virgl
      In another terminal:
        $ adb -s 0.0.0.0:6520 logcat | grep odrefresh
        I odrefresh: ART APEX version 339990000
        I odrefresh: No prior cache-info file: '/data/misc/apexdata/com.android.art/dalvik-cache/cache-info.xml'
        I odrefresh: Boot images on /system OK (riscv64)
        I odrefresh: system_server artifacts on /system OK
        I odrefresh: odrefresh terminated by exit(79)
        I odrefresh: ART APEX version 339990000
        I odrefresh: No prior cache-info file: '/data/misc/apexdata/com.android.art/dalvik-cache/cache-info.xml'
        I odrefresh: Boot images on /system OK (riscv64)
        I odrefresh: system_server artifacts on /system OK
        I odrefresh: odrefresh terminated by exit(80)
        I odsign  : odrefresh compiled all artifacts, returned 80
      Previously the boot rejected dexpreopt artifacts:
        $ adb -s 0.0.0.0:6520 logcat | grep odrefresh
        I odrefresh: Checking boot images /data (riscv64)
        I odsign  : /data/misc/odsign/odsign.info not found.
        I odrefresh: ART APEX version 339990000
        W odrefresh: Userfaultfd GC check failed (build-time: true, runtime: false).
    Change-Id: Ica8516d70c12448bd73d8491c52ba30f6179fa3e
    
  - Merge "Denylist genrules that fail to build with sandboxing" into main
  - PtsBotTest: Use alternative version of split that handle null `shardCountHint` for us.
    
    Change-Id: I4339373ae29e411edb9ada2ee3378cbdd9f2eccc
    
  - Merge "use assumption fails to skip the test cases" into main
  - Fix riscv64 build.
    
    These functions were obsolete when they were added, have never been
    exposed in our headers, and aren't available on riscv64.
    
    Test: mm -j
    Change-Id: Iad7d9178ea50d2e84519f2c4522cfbefe38c45fa
    
  - Merge "Revert "Import AndroidX from build 10514647"" into main
  - Merge "Make apex_available to com.android.extservices explicit." into main
  - Merge "Merge "Merge "Update testPasspointCapability() to handle Android S and S_V2 versions gracefully" into android12L-tests-dev am: e61546df4e" into android13-tests-dev am: f21bd62551" into main
  - Ensure we reset GceAvdInfo at tear down
    
    Multi-devices tests uses that override so we need to
    clean it up
    
    Test: presubmit
    Bug: 292185282
    Change-Id: I764149e028ffac19a0a58b8fd95b4f4f734066c6
    
  - Force compilation job to run
    
    The run command says "For historical reasons, some constraints, such
    as battery, are ignored when this command is called", and the -f
    option makes it "run the job even if technical constraints such as
    connectivity are not currently met."
    
    We've got evidence that in some environments the job is not getting
    scheduled, but the tests needs it to run. So it makes sense to ignore
    all the job constraints.
    
    Bug: 270528861
    Test: atest CompOsDenialHostTest
    Change-Id: I6c827f0a90c54df98b0ff4756016009bc9e10bd8
    
  - Merge "lite-tr: Add support for intrinsic FSub and Fdiv" into main
  - Merge "Keep old PriorityQueue.offer behavior for < U." into main
  - Disable mcDivideTests for gcstress
    
    Test: Treehugger
    Change-Id: I6ec969d32e844593cc65829921a97d371fc39d3e
    
  - Merge "Edit OWNERS file" into main
  - feature: add guest SupportPixelFold feature
    
    Bug: 289373564
    
    Change-Id: I48c34a75a42745a99945eddc3b7030fd86baed4e
    
  - Merge changes I20f52b07,Icc6fbf2a into main
    
    * changes:
      lite-tr: Add support for intrinsic Fmul 32 bit
      lite-tr: Refactor inline test.
    
  - Autoupdate of 3 submodules
    
    *build/make updated to 21e6105b79998725d8106714da175f6880206e85
    Merge "Combine aconfig cache files into per-partition dumps." into main
    *build/soong updated to e4d58523b64396e13b5ebba4e183f085255b1f67
    Merge "Ignore some new files added to partition images in sbom_test.sh." into main
    *frameworks/native updated to 2ef69194b2bd6c9cca45b2e1a60fdc3df05dbe85
    Merge "Add the build and aconfig default values to bugreports." into main
    
  - Merge "Reuse the libm scalbn() as ldexp()." into main
  - Merge "McpService: Fix not unregistering AudioManager callback" into main
  - Add script to validate orderfile.
    Added unit tests for validation too.
    
    More details can be found here:
    https://docs.google.com/document/d/1BVIwgpjZgAeJTXap6zrJjkZYRawpcuyDBfeuRbtpfBA/edit?usp=sharing
    
    Test: python -m unittest orderfile_unittest.py
    Output:
    ----------------------------------------------------------------------
    Ran 12 tests in 0.766s
    
    OK
    
    Change-Id: I5e3fdefb60631d6ddb656cd143210eb2ff55774c
    
  - Merge "Make genrule export_include_dirs more consistent" into main
  - Merge "[DO NOT MERGE] Update tests/tests/text/AndroidManifest.xml" into main
  - Merge "Update OWNERS to add new per-file line for script" into main
  - buildbot-build.sh: don't try to copy nonexistent 32-bit libraries.
    
    Test: in aosp-main:
        $ lunch aosp_riscv64-userdebug
        $ echo $ANDROID_PRODUCT_OUT/system/lib
        .../out/target/product/generic_riscv64/system/lib
        $ run 001-HelloWorld on a riscv64 VM
    
    Test: on aosp-master-art:
        $ lunch riscv64
        $ echo $ANDROID_PRODUCT_OUT/system/lib
        .../out/target/product/riscv64/system/lib
        $ run 001-HelloWorld on a riscv64 VM
    
    Change-Id: I90ca549cae4e3c84ba89827cb9e0ec9d3104f2e3
    
  - Merge "[stdlib] Fix first thread_executing_span in thread." into main
  - Autoupdate of 2 submodules
    
    *external/rust/crates/aarch64-paging updated to 0367f8f942d38f0342033d26d5de75a9845304fa
    Upgrade aarch64-paging to 0.4.1
    
    This project was upgraded with external_updater.
    Usage: tools/external_updater/updater.sh update rust/crates/aarch64-paging
    For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
    
    Test: TreeHugger
    Change-Id: I7268f52b98e99ffb124f694b02bf897414a41348
    
    *packages/modules/Virtualization updated to 1ab7363fd945bc690e0e929e3d1ff7d3f2051545
    Merge "Remove unsafe impl" into main
    
  - Merge "Project import generated by Copybara." into main
  - Merge "Remove git calls from generator script." into main
  - Revert "Move coredomain seapp contexts to system_ext"
    
    This reverts commit 821f3f5be787a278a629ce51b790b8af84f407b9.
    
    Reason for revert: breaking boot tests b/292204627
    
    Bug:292204627
    Change-Id: I8f2650a14b17650220d050d58fee4dda4834c30e
    
  - Merge "Don't allow vendor APEXes in Microdroid" into main
  - Update LeanbackIME to targetSdkVersion 33
    
    Fixes: 291583775
    Test: Build and check locally.
    Change-Id: I30932aecf9e5f95d13d9ffb91da0cbf94f909b1b
    
  - [Mobly+ATest] Run the test executable directly if no requirements declared
    
    This enables tests with embedded_launcher=true to correctly use
    the embedded interpreter, preventing host Python incompatibility.
    
    Bug: 287136126
    Bug: 275768289
    Test: atest-dev mobly-hello-world-test (with "mobly" test_options.tag)
    Test: atest-dev atest_unittests --host
    Change-Id: I996be2817d3e68da19fec67bdaaa9d5873631bd9
    
  - Merge "Move CtsUwbTestCases from 'framework' to 'systems' component" into main
  - Fix odrefresh's queries on system properties.
    
    Starting from r.android.com/2664820, odrefresh queries system properties
    from OdrConfig instead of querying them directly. This gives us the
    ability to mock system properties in unit tests.
    
    However, some system properties should be ignored during change
    detection, and they were excluded from OdrConfig, so querying them from
    OdrConfig would yield nothing.
    
    This CL fixes the problem by postponing the exclusion to later stages.
    Specifically, after this change, the ignored system properties are added
    to OdrConfig so that they can be read by odrefresh, and they are then
    excluded from cache info and skipped during change detection.
    
    Bug: 292079794
    Test: atest odsign_e2e_tests_full
    Change-Id: Iea81b0c51f60a24105d2211948219f8dbb8202ec
    
  - Move coredomain seapp contexts to system_ext
    
    Coredomain apps shouldn't be labeled with vendor sepolicy, due to Treble
    violation.
    
    Bug: 280547417
    Test: TH
    Change-Id: Iecce441a8fbd98b0e7f2bd3febb7aaa9d16a9e37
    
  - Merge "Move CtsLibnativehelperTestCases from 'libnativehelper' to 'art' component" into main
  - Merge "Fix Invalid Surface error" into main
  - Use Events to loosely connect Devices and Captures.
    
    Test: atest --host-unit-test-only --test-filter netsim
    Bug: 291094243
    Change-Id: I658eca9a8c23e822491e62ebee2543e42fe88687
    
  - Merge "MediaV2: Update to CtsMediaV2TestCases-3.5.zip" into main
  - cosmetic
    
     formatting only
    
    Bug: NA
    Test: NA
    Change-Id: I64d4bd22165e19b87c03d4c510b9228902ecf55f
    
  - Merge "init_first_stage: Disable ThinLTO" into main
  - Merge "Relax preprocessed apk check for non-privileged apps" into main
  - Merge "Explicitly set light idle timeouts for testing" into main
  - Merge "Fix a DimmingStage documentation typo by rewording the doc." into main
  - Merge "Address leftover comments" into main
  - Remove the superfluous isIpv6 check when deleteing delegated IPv6 address.
    
    Bug: 260934173
    Test: atest NetworkStackIntegrationTests
    Change-Id: Ie527f9e6e94b05005bfc73cb91c93c394ccdeccc
    
  - Merge "Enable restat for javac rules" into main
  - Merge "[uwb] Query UWBS timestamp to configure absolute UWB initiation time" into main
  - Merge "[magma] Fix meson.build" into main
  - Merge "Add StatsdTestUtilsTest to mts-statsd" into main
  - Merge "Disable uchar.start_state test for musl." into main
  - Merge "fixup! Set APNs for Orange markets" into main
  - Merge changes from topic "am-917f10ebe47f4c62b5fe29a9cba37f7c" into main
    
    * changes:
      Merge changes from topic "am-027a02d17f3943a289a59892b84aba48" into android13-tests-dev am: 8592b3288d -s ours
      [automerger skipped] Merge changes from topic "am-61f96398bfe34ffb8700378ce8450f83" into android12L-tests-dev am: 8cd804c75a -s ours am: 490eefbfa5 -s ours
    
  - Merge changes I8b15407d,I2667b6f5,I8c83c6b7 into main
    
    * changes:
      codec2 hal: type conversion refactoring, step 1
      RELAND "codec2 hal: move directories around"
      RELAND "codec2 hal: Codec2ConfigurableClient to take HIDL or AIDL base"
    
  - Autoupdate of 2 submodules
    
    *hardware/interfaces updated to 12c4bf6ba13f93f1053860fbac198e211b2058ef
    Merge changes from topic "fix-b-264712385-primary-module" into main
    
    * changes:
      audio: Move StreamContext ownership out from StreamCommonImpl
      audio: Use ChildInterface in StreamCommonImpl
      audio: Update StreamAlsa and alsa utils for built-in devices
      audio: Simplify and extend alsa::Mixer
    
    *system/media updated to 5cf5a0c9b7052ae3c1b99a964502b463a7fb720d
    Merge changes from topic "fix-b-264712385-primary-module" into main
    
    * changes:
      alsa_utils: Add support for built-in devices
      alsa_utils: Add versions with retries for proxy_read/_write.
    
    
  - Merge "Switch usages of go tools from prebuilts to source" into main
  - [scudo] Clean up tests.
    
    Modify the tests so that all clang warnings can be turned up to high.
    
    Fix all places flagged by -Wconversion.
    
    Fix a few unused variables not marked with UNUSED.
    
    For the memtag testing, only compile some tests for 64 bit since
    compiling them on 32 bit leads to warnings/errors. All of the tests
    are already skipped on 32 bit OSes, so this will not affect any
    real tests.
    
    Reviewed By: Chia-hungDuan
    
    Differential Revision: https://reviews.llvm.org/D155749
    
    GitOrigin-RevId: af41f79f40f454374f63747d4b53afde296189fe
    Change-Id: I3004f53ce495f8b0cc9e8838a277ec9bf6647379
    
  - Revert "Disable dylib generation for Rust vendor-only"
    
    This reverts commit 7ebf0315c43eb48e1a69f655d86fea928a9cd42c.
    
    Reason for revert: This was a workaround due to no vendor dylibs. Vendor dylibs are now supposed to be supported, so we should be able to turn this back on.
    
    Change-Id: Iaac20c71fbf0bf8f713eac6ced61d6efa168395f
    
  - Merge "Replace certificate property with presigned: true" into main
  - Merge "Disable CtsMemunreachableTestCases for instant mode" into main
  - Merge "Add zip2zip's dir to PATH in apex_aab" into main
  - Merge changes from topic "am-5df0cab2432747629261bfb7d4b45c6d" into main
    
    * changes:
      Merge changes from topic "am-75f93c3a4a7c4894a84695e4527bc1c1" into android13-tests-dev am: d2c83df1ca -s ours
      [automerger skipped] Merge changes from topic "cherrypicker-L92700000961971448:N66700001387743522" into android12L-tests-dev am: b5b665b527 -s ours am: fcdbfd2035 -s ours
    
  - Merge "Merge "Merge "Merge "cts(app): Exemption for kiosk devices to not support NFC HCE feature" into android12-tests-dev am: 9e7ae38fe9" into android12L-tests-dev am: 1feb09a890" into android13-tests-dev am: d9a768cf2a" into main
  - add a log to capture final build-id after unmount
    
    Test: presubmit
    Bug: 290951369
    Change-Id: I8179a3e5d0bf1dfcf491022eebb5f66305fc8432
    
  - Merge "Update codegen paths after move" into main
  - Merge "perf_metrics: also save build.trace.gz" into main
  - Merge "Highlight matching segments of commands while searching." into main
  - Include 'netsim artifact' command for opening netsimd_temp_dir
    
    1. Moved system/mod.rs from netsim-cxx to netsim-common
    2. Added args::Command::Artifact for opening netsimd_temp_dir
    
    This will be useful not only for QA team to open the artifacts using cli, but also
    external users as well.
    
    Test: netsimd && netsim artifact
    Bug: 289549443
    Change-Id: I4ed4c06d686a03ddd101c8cda21e2873c4775c0b
    
  - Merge "Revert "Protect accesses to TpmResourceManager::Esys() with a lock"" into main
  - Merge "Include tests.security in TEST_MAPPING" into main
  - [ui] Fix build
    
    Add a missing createTraceLink function.
    
    Change-Id: I1bb646a2cb2efcdfe10b16e322c5eb31b9355324
  - Merge changes I43d482c6,I9eae1a09 into main
    
    * changes:
      simpleperf: Only register needed commands in libsimpleperf_profcollect
      simpleperf: Reduce size introduced from libsimpleperf_readelf
    
  - Fix duplicate symbols error in external/squashfs-tools
    
    Two symbols bwriter_buffer and fwriter_buffer are duplicated when switch -fcommon to -fno-common. Keep the old default for this project until we get a fixed version from upstream.
    Upstream fix patch: https://github.com/plougher/squashfs-tools/commit/fe2f5da4b0f8994169c53e84b7cb8a0feefc97b5
    
    Bug: b/151457797
    Test: mm
    Change-Id: Ia233a947c217ba79129c576259594d9ec01f477a
    
  - Merge "Integrate table viewer wtith debug tracks" into main
  - Merge "Import AndroidX from build 10514647" into main
  - Merge changes from topic "am-f0d23dac60054726859b45cd70714c90" into main
    
    * changes:
      Merge changes from topic "am-30a02653d67147b58a6d9a32b391c9e8" into android13-tests-dev am: f881d39197 -s ours
      [automerger skipped] Merge changes from topic "am-5b54428530a34f3dbbf2fc39256f4fec" into android12L-tests-dev am: 5314537bbd -s ours am: f2138a9b7f -s ours
    
  - Merge "Fix BTLE percision mouse can not use issue" into main
  - Autoupdate of 2 submodules
    
    *device/generic/goldfish-opengl updated to 68bd3fc8b3b5ff404e05e7279963dac27047ab92
    Merge changes from topic "gfxstream-move-goldfish-opengl-guest-part-2" into main
    
    * changes:
      Regenerate CMakeLists after move
      Remove more Gfxstream guest components
    
    *hardware/google/gfxstream updated to 2343dff31fef6d7ba2b0af5b2629df60aa93804c
    Merge changes from topic "gfxstream-move-goldfish-opengl-guest-part-2" into main
    
    * changes:
      Regenerate CMakeLists after move
      Minor fix ups after move
      Merge remote-tracking branch 'aosp/temp-consolidate-gfxstream-projects' into 'aosp/master'
    
    
  - Merge "Floss: Re-enable HFP indicators" into main
  - Consider in parallel the existing files
    
    Test: presubmit
    Bug: 292083821
    Change-Id: I4862444401e523f47badecfd6ca24a9c0637859b
    
  - Merge "Edit OWNERS file" into main
  - Add helper script to package linux-x86 binaries
    
    Bug: 242716693
    Test: ./art/tools/build-linux-x86-host-tools.sh
    Change-Id: Ia4b58728d38720b2d3d4db4ee1196379b8629dca
    
  - Merge "Add missing setlocale calls in tests." into main
  - Merge "Detach on download pending with no results, don't send null" into main
  - Removed OdsaOperation to reduce confusion
    
    Moved the constants in OdsaOperation into EsimOdsaOperation to
    reduce naming confusion.
    
    Bug: 279132691
    Test: atest service-entitlement-tests
    
    Change-Id: I58de77ba88f1d3247ce40ce51317065c01532ba5
    
  - Merge changes from topic "am-dba3caf5bd274c22adf2dd4e999bb7be" into main
    
    * changes:
      Merge changes from topic "am-6b55cc8b447347959783dae62c8c5612" into android13-tests-dev am: bd8580a95e -s ours
      [automerger skipped] Merge changes from topic "am-ed86b8d5429f4e37a10effef8696c894" into android12L-tests-dev am: 24cc9c1328 -s ours am: a131bbe69d -s ours
    
  - Merge changes from topic "am-b1a6ed3f6ca34e22bf15af320d7f9bfc" into main
    
    * changes:
      Merge changes from topic "am-520d43d843b34f61ab7ddb2a7d2df64c" into android13-tests-dev am: 31e4148af6 -s ours
      [automerger skipped] Merge "RESTRICT AUTOMERGE [Safety Labels] Fix incorrect assumption in `BaseUsePermissionTest`" into android12L-tests-dev am: 0e276a9dcb -s ours am: be83793796 -s ours
    
  - Autoupdate of 2 submodules
    
    *build/bazel updated to b6269d0e449518fdb7965f4c2c255c673d3f5deb
    Merge "Don't directly load CFI product config variables" into main
    *build/soong updated to 00d0d7af7d8754ba88fc754862e467894ff355cc
    Merge "Add CFI product config variables to platform_mappings" into main
    
  - Merge "Disable tombstones related tests for HWASAN build" into main
  - mobly: enable sharding
    
    Bug: 288445683
    Test: abtd
    Change-Id: Ibc089f403138006f0d52a3b763ab5804ac737e0f
    
  - Merge "Fix handling of “small integer returns in XMM” case in gen_text_asm_intrinsics.cc" into main
  - Merge "Re-enable LTO for libcodec2_hidl_client" into main
  - Merge "[uwb] Fix error prone sussgestion from google3" into main
  - Merge "Repair the incorrect log of disableIms" into main
  - Merge "floss: Fix hal host startup race" into main
  - Merge "Import AndroidX from build 10526986" into main
  - Merge "Add “Macro” prefix for MacroCanonicalizeNan." into main
  - Merge "Add label for allocator 2 service" into main
  - Use tripple buffering for compose target
    
    Also add DrmSwapchain class for tripple buffering.
    
    Bug: 280014849
    Test: run goldfish emulator with -qt-hide-window and swiftshader
    Change-Id: Icb77a3201f14a3c979900b2a01afeec3be4d8e8e
    Merged-In: Icb77a3201f14a3c979900b2a01afeec3be4d8e8e
    
  - Make server maps concurrent
    
    Test: presubmit
    Bug: None
    Change-Id: Icce5f179fce83a45f70e4ba5753430feb8e0c698
    
  - ethernet: add null check before reporting server interface state
    
    If the tethering interface disappears while in server mode (i.e.
    tethering is enabled), registering a new InterfaceStateListener will
    trigger an NPE.
    
    Test: TH
    Bug: 290971780
    Change-Id: I1d10575e80e68c77ec4771ac37e5fbc07e03c708
    
  - Merge "audio: if device is change from none to new device, need get index from new device." into main
  - Merge "EffectProxy return the active sub-effect descriptor" into main
  - Use -Xjvm-default=all instead of -Xjvm-default=enable or @JvmDefault
    
    The @JvmDefault annotation and -Xjvm-default=enable argument are both
    removed from kotlinc 1.9.0 in favor of -Xjvm-default=all.
    
    Bug: 291335478
    Test: builds
    Change-Id: I65f61004ebb3e85271af2fce3b64e29bc403933d
    
  - Merge "[uwb-cts] Fix dl-tdoa cts tests with updated CRs" into main
  - Merge "Add HotkeyContext and improve hotkey operation." into main
  - Merge "remove uhd validation for vp8" into main
  - Merge "Remove dangling reference to LLVMgold.so" into main
  - Merge "Use -Xjvm-default=all instead of -Xjvm-default=enable or @JvmDefault" into main
  - Move v4l2_codec HAL from the manifest to a vintf fragment
    
    The code owner then owns the manifest the vintf fragment.
    
    Remove IConfigurable because it isn't declared in the compatibility
    matrix. It isn't registered to hwservice_manager either in the
    implementation.
    
    Bug: 291157411
    Test: ARC++ boots.
    Change-Id: I1616bf2ae90327e87bf13cc379e85927333eb0ed
    Merged-In: I1616bf2ae90327e87bf13cc379e85927333eb0ed
    
  - Merge changes from topic "am-0e12d4c68f9e4630b4cea98b2cf5d4cf" into main
    
    * changes:
      [automerger skipped] Merge "Merge "Make the WindowInsetsAnimationTests more repeatable" into android12L-tests-dev am: dec779c341" into android13-tests-dev am: 70bede734a -s ours
      [automerger skipped] Merge "Make the WindowInsetsAnimationTests more repeatable" into android12L-tests-dev am: dec779c341 am: eb4d53289e -s ours
    
  - Merge "Change the argument check for provisioned sts cts test." into main
  - Merge "Symlink to rules_java in soong integration test." into main
  - Merge "tp: support source replacement in SqlSource" into main
  - Merge "Fix another over-long UTF-8 sequence test." into main
  - Merge changes I0845fdee,I879de1e8 into main
    
    * changes:
      Fix mbrtoc16 reserved range test for musl.
      Fix surrogate pair deocding for musl/glibc.
    
  - Autoupdate of 2 submodules
    
    *build/make updated to 4c1bc5b9b7e51e0b78b1f1c8d7d3eb6a520d05a0
    Merge "Added haiku-presubmit phony rule to makefile" into main
    *build/soong updated to 26661d1bb014527655c02f69f3ee547d9c041bcb
    Merge "Added haiku presubmit packaging" into main
    
  - Merge changes from topic "weaver-vts-fix" into main
    
    * changes:
      Don't overwrite in-use Weaver slots during VTS
      Simplify Weaver VTS test
      Remove redundant HIDL Weaver VTS test
      Move VtsHalWeaverTargetTest to common directory
      Make VtsHalWeaverTargetTest test both HIDL and AIDL services
      Clarify the Weaver documentation
      Update weaver AIDL default to use V2
      Add WeaverReadStatus to WeaverReadResponse
    
  - Merge "Add metrics to scroll/jank details panels in Pefetto UI." into main
  - Merge changes Ic338a341,I022fb301 into main
    
    * changes:
      Remove unused fs-verity signature
      Stop using fs-verity signature
    
  - Merge "snapuserd: Fix ubsan when reading a single aligned sector." into main
  - Merge "ui: Add SimpleResizeObserver" into main
  - Merge "ui: the the -> the" into main
  - Merge "De-pessimize SigSetConverter usage." into main
  - Merge "cosmetic" into main
  - Merge "Merge "CTS: Update voice recognition OWNERS" into android13-tests-dev am: 1bd3505afb" into main
  - Merge changes from topic "am-8cd8ecef987a45699738eb0b6d7466fa" into main
    
    * changes:
      Merge changes from topic "cherrypicker-L74800000961971901:N23000001387737938" into android13-tests-dev am: ce9878b8ea
      [DO NOT MERGE] Increase delay before retrieving event atoms. am: 5cfb7c484f
      [DO NOT MERGE] Fix WifiLock CTS test cases am: 0f5c7e0fc3
    
  - Autoupdate of 2 submodules
    
    *cts updated to 5c3cee6873d4e48e33a72ceea12d25c16b1764a9
    Merge "Skipped non-default MGF_DIGEST for Keymint < V3" into main
    *external/wycheproof updated to 5c205f68b41024804da7b5dc3a19931ebdaa2760
    Skipped non-default MGF_DIGEST for Keymint < V3
    
    Although MGF_DIGEST is included in the KeyMint spec since V1, some
    implementations (notably the C++ reference implementation) did not
    correctly report its presence in key characteristics until V3.
    
    The framework layer decides whether to add the MGF_DIGEST tag to begin()
    parameters based on whether there are MGF_DIGEST values in the key
    characteristics. The situation above means that this check is only
    reliable for an underlying KeyMint implementation of v3 or above.
    
    Hence tests with non-default MGF_DIGEST are skipped for Keymint < V3.
    
    Bug: 289859292
    Bug: 289749312
    Bug: 287891167
    Bug: 287532460
    Bug: 290308127
    Test: atest  CtsKeystoreWycheproofTestCases:com.google.security.wycheproof.RsaOaepTest
    Test: atest CtsKeystoreTestCases:android.keystore.cts.CipherTest#testKatBasicWithDifferentProviders
    Change-Id: I40fdfb14c244be83c19287289603644605e20e94
    
    
  - Merge "Added a handful more commands." into main
  - Merge "[stdlib] Expose leaf thread_executing span parameters" into main
  - Merge "Import uiautomator 10508672" into main
  - Update missed comment.
    
    Change-Id: I45b1e96c18d7117669c6a59a8431c9ab441a8fee
    
  - Merge "Add drop_config TOML for use with new drop script" into main
  - Merge "Sync upstream NetBSD." into main
  - Merge "Sync upstream OpenBSD." into main
  - Merge "Sync upstream FreeBSD libm (trivial changes)." into main
  - Merge "Sync upstream FreeBSD libm (real changes)." into main
  - Autoupdate of 2 submodules
    
    *external/openthread updated to 6a6ba75217ba5c91b78703aefa1ac8d2a6adda4f
    enable 1.2 and 1.3 border router features
    
    Change-Id: I2d891919408697471534ebc6d7c673720b025733
    
    *external/ot-br-posix updated to bd1a4b2a83b1cfa03ffb5896d5806d8bc738e166
    enable 1.2 and 1.3 border router features
    
    Change-Id: If845317f73538f1003bee49d2281a7964cf1f296
    
    
  - Fix a bug in image generation due to default conflict methods.
    
    There were inconsistencies in HasCodeItem/IsInvokable which lead to the
    default conflict ArtMethod pointing to arbitrary data.
    
    Test: 845-data-image
    Bug: 290519059
    Change-Id: I980c3fdac0ebf29474b166d0acfe27eef1d566c8
    
  - RISCV: [Codegen] Add VisitBoundType, Unreachable
    
    Test: m test-art-host-gtest
    Bug: 283082089
    Signed-off-by: Lifang Xia <lifang_xia@linux.alibaba.com>
    Signed-off-by: Wendong Wang <wangwd@xcvmbyte.com>
    Change-Id: Ibb979fc27ac403b0454adb78c921a63837fb30bf
    
  - Merge "scripts: Add cargo2rulesmk.py to generate rules.mk" into main
  - Merge "[tp]: Fix runnable state for first slice in thread" into main
  - Merge "Add CriticalNative test failing on native-bridge" into main
  - Merge "Carrier ID table rollout all_sdk_carrier_list_Rollout_20230719 Publish the latest carrier id table. This build IS suitable for public release." into main
  - Merge "lite-tr: Check Rm before trying to inline." into main
  - Revert "Add DEX SHA1 to oat files."
    
    This reverts commit ba2222f1e114603b42dfdb6dd1d11012d32a2739.
    
    Reason for revert: breaking aosp cf targets b/292059778
    
    Bug:292059778
    Change-Id: Ia26f8e297a2eb8455df759e92490789f08b41906
    
  - Merge "Ignore slices outside cuj boundaries" into main
  - Update LUCI device filter
    
    Run tests on any ARM phone (don't hard-code specific models).
    
    Test: Run tools/luci/config/main.star to check syntax.
    Change-Id: Ibdb5159dc9d53e58d57b27ed71777d40a84159be
    
  - Merge changes from topic "aconfig-improve-dump-formats" into main
    
    * changes:
      aconfig: add 'verbose' dump format
      aconfig: improve the 'text' dump format
      aconfig: remove the 'debug' dump format
    
  - Merge "aconfig: fix broken auto-generated Rust code" into main
  - Pass the missing flags from odrefresh to dex2oat.
    
    After this changes, odrefresh reads relavent system properties and pass
    the flags accordingly to dex2oat. Added flags are:
    
    - --runtime-arg -Xms
    - --runtime-arg -Xmx
    - --instruction-set-variant
    - --instruction-set-features
    
    Bug: 291903090
    Test: atest art_standalone_odrefresh_tests
    Change-Id: I14b893ac11bee294d5552d5069026f10630c5dce
    
  - Merge "Use actually valid RSA parameters" into main
  - Adjust some tests which were relying on non-deterministic behavior.
    
    Test: gtests
    Bug: 291273982
    Change-Id: Ie8dbfa67c908df2209265680a904e21d77b3798d
    
  - apex: Fix license typo
    
    Fix a typo in license of prepare_device_vfio.sh script.
    
    Test: Not required
    Change-Id: I1124c6ca802bf788a167656fab317416b63f1259
    
  - Merge changes from topic "am-3a6fa397042247dd9e32310572580fc5" into main
    
    * changes:
      [automerger skipped] Merge "Merge "Merge "Merge "Force I/O when testing whether NSC allows TLS connections." into android11-tests-dev am: 9569ae57e4" into android12-tests-dev am: b7a9dbb2d3" into android12L-tests-dev am: f95644a4ad" into android13-tests-dev am: 6ca1c7e828 -s ours
      [automerger skipped] Merge "Merge "Merge "Force I/O when testing whether NSC allows TLS connections." into android11-tests-dev am: 9569ae57e4" into android12-tests-dev am: b7a9dbb2d3" into android12L-tests-dev am: f95644a4ad am: 4f510ecd4b -s ours
    
  - Merge "Move ticksToMilliSeconds to NetlinkUtils." into main
  - Merge "Merge "[conflict] Merge "Merge "HDMI: Fix failing HdmiCecPhysicalAddressTest CTS" into android12-tests-dev am: ca64f8e635" into android12L-tests-dev am: deb9c32d52" into android13-tests-dev am: b781e9f81f" into main
  - RISCV: [Codegen] Add VisitArrayLength
    
    Test: m test-art-host-gtest
    Bug: 283082089
    Signed-off-by: Lifang Xia <lifang_xia@linux.alibaba.com>
    Signed-off-by: Wendong Wang <wangwd@xcvmbyte.com>
    Change-Id: Icda3fe0a2d503fd1dd4c197df61abd95be78f86b
    
  - Merge "@FlaggedApi: improve ergonomics" into main
  - Merge "Print adb output if pushing gdbserver fails" into main
  - Merge "Add bug component to services/vibratorservice" into main
  - Merge "Correct the bug component for CtsNdkBinderTestCases" into main
  - Add DEX SHA1 to oat files.
    
    Add SHA1 since it is much more reliable then CRC32/Adler.
    
    CHECK that it matches with location checksum comparison.
    
    We sill rely on the location checksum, this just ensures
    that in the very unlikely case of CRC collision we crash,
    rather than accept the DEX and later mysteriously fail.
    
    Test: ./art/test.py -b --host --64
    Change-Id: I51af02f63c9ce8b858e4e8b4363bb75f8774d477
    
  - Merge "Floss: metrics: extend hfp pkt loss metrics for LC3" into main
  - Merge "Floss: Initialize folder for floss pandora server" into main
  - Merge "Add NetworkNsdReportedMetrics" into main
  - Merge "Add a benchmark for libatrace_rust" into main
  - Merge "Revert "external/boringssl: Sync to 26ecb2a275ca7444d10899b8a3fe76d84831fca4."" into main
  - Merge "ueventd: Fix creation of VFIO dev nodes" into main
  - Merge "apex: Add prepare_device_vfio script" into main
  - Merge "Include missing IWYU headers in intrinsics_args.h" into main
  - Merge "Add DomainsUtils class to encode/decode domain names." into main
  - Merge "SnoopLogger socket: filter data on socket fix" into main
  - Merge changes from topic "am-be4feadce422450196e0957686114bf4" into main
    
    * changes:
      Merge "DO NOT MERGE Mark locale extension test as NonCts." into android13-tests-dev am: e478885a69
      [automerger skipped] DO NOT MERGE Mark locale extension test as NonCts. am: 16eb8c3598 -s ours
    
  - Force LoadBootImage to take APEX versions from an argument.
    
    When a boot image is being loaded, the APEX versions on device are
    checked against the APEX versions stored in the boot image. Before this
    change, the APEX versions on device were taken from the runtime
    instance. However, some tests use LoadBootImage with a bootclasspath
    different from the one that the runtime uses, so the APEX versions
    calculated by the runtime shouldn't be used. The APEX version check
    happened to pass because of many coincidences, but it will no longer
    pass once we add core-icu4j and consrypt to the boot image. This CL
    fixes the issue with APEX versions, to prepare for the boot image
    change.
    
    Bug: 290583827
    Test: atest ArtGtestsTargetChroot
    Change-Id: Ia7680ac328cf7d996b8fefd1816f1175268918c9
    
  - Merge changes from topic "am-f21b83c061934eed814af67c54b2ecf3" into main
    
    * changes:
      [automerger skipped] Merge "RESTRICT AUTOMERGE [Safety Labels] Fix incorrect assumption in `BaseUsePermissionTest`" into android13-tests-dev am: b62abc9ee0 -s ours
      [automerger skipped] RESTRICT AUTOMERGE [Safety Labels] Fix incorrect assumption in `BaseUsePermissionTest` am: 42fbd83588 -s ours
    
  - Merge changes from topic "am-87740df79b6241818839fa3efe6f3689" into main
    
    * changes:
      Merge changes from topic "am-eb1246767ad04361b877fb79c8e97dc9" into android13-tests-dev am: 5c127ab76b
      [automerger skipped] Merge "RESTRICT AUTOMERGE [Safety Labels] Fix incorrect assumption in `BaseUsePermissionTest`" into android11-tests-dev am: 43cc1dd735 -s ours am: 5612594e01 -s ours am: 224d045b42 -s ours am: 617d01a40f -s ours
    
  - Merge "gd: stack: use new start/stop timeout properties" into main
  - Merge "Remove gd_hal_snoop_logger_socket feature flag" into main
  - Merge "Remove gd_hal_snoop_logger_filtering feature flag" into main
  - Merge "Aconfig: sort the parsed flag order in create-cache" into main
  - Load shared libs in DCLA into the correct linker namespace am: d686e3bc44
    
    Original change: https://android-review.googlesource.com/c/platform/system/apex/+/2658315
    
    Change-Id: I2b83130b7552764562cce7f306eda0d49b4fa7f6
    Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
    
  - add sepolicy owners on sepolicy files
    
    Bug: 256065208
    Test: build pass
    Change-Id: Idf1af9f76c0c1c71fcb1c729a8ee5e28c2e1b86c
    Merged-In: I9e41474b729ca066444b811ec559f9cec4e203ef
    
  - Merge "Add Andn, Orn, Xnor, Clz, Rori, Clzw, Roriw" into main
  - Merge "Handle ArrayIndexOutOfBoundsException for install_sessions.xml" into main
  - Use -Xjvm-default=all instead of -Xjvm-default=enable or @JvmDefault
    
    The @JvmDefault annotation and -Xjvm-default=enable argument are both
    removed from kotlinc 1.9.0 in favor of -Xjvm-default=all.
    
    Bug: 291335478
    Test: builds
    Change-Id: Iaa6015d5e9b23fc8605da08260d22500eef23147
    
  - Merge "Create v4 mapped v6 correctly" into main
  - Merge "Bypass the exec mode checks for roboleaf mode" into main
  - Merge "denylist boringssl_test_support before we fully support cc_test_library" into main
  - Merge "Move CtsSeccompHostTestCases from 'misc' to 'security' component" into main
  - Merge "Move CtsIntentSignatureTestCases from 'systems' to 'framework' component" into main
  - Merge "Share Events resource with resource.rs mod and add skeleton to use." into main
  - Merge "Merge "Change StorageHostTest#testFullDisk to case-insensitive match." into android13-tests-dev am: 6fa6b57324" into main
  - Merge "CodecDecoderValidationTest: Update AV1 resolution requirements" into main
  - Merge "Sync upstream FreeBSD (qsort)." into main
  - Autoupdate of 2 submodules
    
    *device/google/gs101-sepolicy updated to e2aaff8d5ef58e55f531024cccd4eded2990e955
    Move file context on vendor libdmabufheap to system/sepolicy
    
    libdmabufheap is former VNDK-SP library, and will be marked as sp-hal
    sepolicy label by default. Current definition on gs-101 creates conflict
    with generic sepolicy update. This change removes label on libdmabufheap
    from gs101 and move it to generic sepolicy.
    
    Bug: 291673098
    Test: N/A
    Change-Id: Ida23dc71e9794aa86e8b50ed927dc6b5fa57ea91
    
    *system/sepolicy updated to 4b6eabed21af436f46619b6037cf96678b14bb17
    Merge "Label former VNDK-SP libraries in vendor as sphal" into main
    
  - Merge "ui: Support fragments" into main
  - ui: Release canary
    
    Change-Id: Ie9d2830804661cea35e262256ceb61413be548f3
  - Merge "Fix typo in mutator name" into main
  - Merge "ui: don't throw if webusb is disallowed in iframes" into main
  - ui: Release stable
    
    Change-Id: I26ec6d4090bc28136f0171be6f53ecdcb8834c10
  - Merge "Add test utility to convert StatsEvent to Atom" into main
  - Merge changes Iac46bc9c,I4f853107 into main
    
    * changes:
      Invert over-long UTF-8 bool for readability.
      Add musl handling in run-on-host.sh.
    
  - Merge "Temporary Revert "Use java Jpeg encoding instead of native codes / fix some issues."" into main
  - RESTRICT AUTOMERGE Do not run RebootReadinessManagerTest on watch form factors am: f69f8e0598
    
    Original change: https://android-review.googlesource.com/c/platform/packages/modules/Scheduling/+/2663015
    
    Change-Id: I75b2a1659392cbb8c24650bbfd365fe9a5d48aed
    Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
    
  - Merge "Fix at-clause typo for Handler." into main
  - Capture full summary of md5 comparison
    
    Test: presubmit
    Bug: 290951369
    Change-Id: I8bd349534b949e40752366d7cfb4d4a9468f24ae
    
  - Turn on hide-error to true
    
    Change-Id: Id66d65dbc5b011cf7f25eb65034d4945d15d04a4
    Test: presubmit
    Bug: 290671133
    
  - Merge "Add exclusion for zeroed tests." into main
  - Snap for 8656240 from 70366eb8055bfaa2ebebb504b42011c2222ce80a to tm-release am: 0f1eb61cce
    
    Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/modules/Scheduling/+/18641569
    
    Change-Id: I7b3af4b472dd9efdb5a286ed3830fd9699812ba0
    Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
    
  - Snap for 8581162 from b5395abbb6920fad5fb32a751218da3b82f10d8e to tm-release am: 68c8563148
    
    Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/modules/Scheduling/+/18356859
    
    Change-Id: I26d5de34d12fa5c678ee811ac726ab187b77fd4f
    Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
    
  - Snap for 8401211 from 5965946243ee42a378b29ebc47850e8ab59eb2bf to tm-release am: 6fc2db26bd
    
    Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/modules/Scheduling/+/17564031
    
    Change-Id: I9135c11d11361a6db3166fe9f67cfd4649a75d64
    Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
    
  - Remove -language-version flags from dokka
    
    -language-version 1.3 is no longer supported by kotlinc 1.9.0.  Remove
    the flags and fix a compile error.
    
    Bug: 291335478
    Test: dokka -J--add-opens=java.base/java.lang=ALL-UNNAMED
    Change-Id: I7e25b3b68cd75be802a3d92034f22e24cf800396
    
  - NetworkCapabilities: initialize ALL_VALID_CAPABILITIES without loop
    
    This change also removes the MIN_NET_CAPABILITY constant that is not
    actually used and can always be re-added in the future (though, I would
    imagine that NetworkCapabilities will not be deprecated / removed in
    numerical order).
    
    Test: TH
    Change-Id: I97ccbc9e915eb74a0ef52c576e16fc8ce8d5b646
    
  - Autoupdate of 2 submodules
    
    *build/bazel updated to 06d401050ca95035a7922ed04be414db69b36052
    Use the vendored rules_java repository.
    
    Bug:291828210
    Bug: 287596254
    Test: CI
    Change-Id: If0dcdf994f363a3eed2da3ff3c8ce0f2a8715b7b
    
    *build/soong updated to 0ccd94cefa634f17dd85cb047119b5f0fa8fcace
    Merge "Keep rules_java vendored repository BUILD files" into main
    
  - Merge "Sync with upstream FreeBSD." into main
  - Merge "Rename make_intrinsics.cc -> gen_text_asm_intrinsics.cc" into main
  - Snap for 8397960 from 66ddb58ef4b0b235ff5dff3513713515ed19e0db to tm-release am: 9a635b4aef
    
    Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/modules/Scheduling/+/17539922
    
    Change-Id: I4c3d08dddd292a49c1b3281d750b50acc0cd4034
    Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
    
  - Snap for 8391568 from 5d771f9fce40d0987e2492f2963214913d13438b to tm-release am: 845a8576fe
    
    Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/modules/Scheduling/+/17530487
    
    Change-Id: I53e18be81715cc80a1cb2297776fff260c9e0453
    Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
    
  - Snap for 8283941 from d7cdc80005b12a2d939078964aa43c4381d79074 to tm-release am: 8ca3439f8e
    
    Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/modules/Scheduling/+/17147504
    
    Change-Id: Ie9d1081ab2dc8720f43d1ed2c8d7fc4700097050
    Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
    
  - Snap for 8273439 from 9a7b4d8d27e7647be3f14b0cd168021de887d629 to tm-release am: ad2b9a1393
    
    Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/modules/Scheduling/+/17129965
    
    Change-Id: Ib6845ddb643724e9cf31fa36b4718fb47a3e1c84
    Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
    
  - Snap for 8191477 from a531931eb82cb3c7ba9af06871cd896ce6742b59 to tm-release am: 0ab3e4b093
    
    Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/modules/Scheduling/+/16911144
    
    Change-Id: Ib48488dfeaab228903cc631800991665e5d92cee
    Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
    
  - Snap for 8183382 from 2d2d9e2ff3593d38c7e41a6643a854156e8def52 to tm-release am: 31b34e2ee4
    
    Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/modules/Scheduling/+/16875829
    
    Change-Id: If9a52aa58f70e66969dc807f30acd2ffb23cebdc
    Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
    
  - Snap for 8090552 from fe416a305c0f75de7cc1870a992131d9a303cd69 to tm-release am: 4af25da97b
    
    Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/modules/Scheduling/+/16667812
    
    Change-Id: I2af7228d0996fb5f8ea82f9e102b9e2b7611266b
    Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
    
  - Snap for 8055626 from 8089574704118b81e06783eb0dc76adf6f228c48 to tm-release am: b36d58a406
    
    Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/modules/Scheduling/+/16586893
    
    Change-Id: I8d6c5e614739de8b3abf669314b6c9d6263352c8
    Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
    
  - Snap for 8016676 from 67f8d84496261bdb904750472e6b45e0adcb543c to tm-release am: 8ed5b713a8
    
    Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/modules/Scheduling/+/16511801
    
    Change-Id: I58a174dfbb2b8c3c7cf13c1c5d971bad1229e45f
    Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
    
  - Snap for 7809064 from d136bdc4739c322e2c734251467fbbccce913dd6 to tm-release am: 5c8cb378fb
    
    Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/modules/Scheduling/+/16021988
    
    Change-Id: I4bb487f36e25aa6d66cef3abcb206f2ae71c4de6
    Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
    
  - Snap for 7787597 from d2daf721274511b6698513ab53f032c5856412ad to tm-release am: 423ea81c50
    
    Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/modules/Scheduling/+/15962352
    
    Change-Id: I0d1c009f9fccb9f7c296277700cc5e9253040884
    Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
    
  - Snap for 7776027 from c40034cd5328dc60b21498e36ae6f38f46a0ad90 to tm-release am: 6cb925f94e
    
    Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/modules/Scheduling/+/15937593
    
    Change-Id: Ifa03f10a5570a77bafccb93baceb70c97f4dbb7e
    Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
    
  - Snap for 7761793 from fe8d7b8bf0b514a0dd92b3442aedd33317ac7ab3 to tm-release am: c149c43b64
    
    Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/modules/Scheduling/+/15902479
    
    Change-Id: I5d72f657a26412bd3eede742d8a6edba872e2d86
    Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
    
  - Snap for 7741087 from a7b822209d764044c57f135534fd104a711ebcdc to tm-release am: dfb8fd84bf
    
    Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/modules/Scheduling/+/15850492
    
    Change-Id: I191bd63c31a74b58abe59e5a9b62549cf409676e
    Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
    
  - Snap for 7579631 from 0fcc55a445a346d142906a5240874d5cfe9df7a6 to tm-release am: 0eeb795132
    
    Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/modules/Scheduling/+/15381454
    
    Change-Id: Iaded60611ae41f1ede504c31d0e5ce5dfda79e7d
    Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
    
  - Snap for 7558420 from 1c78aac5762c50b7053325394fb1cda0cbcad6d6 to tm-release am: e83d65c87b
    
    Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/modules/Scheduling/+/15318862
    
    Change-Id: I78219e4cc06dc53faa0515c8769880e76ced2f4d
    Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
    
  - Snap for 7520154 from be12a7370ca2dcf18538a4157a0cb6ece5b481ed to tm-release am: 607235dda8
    
    Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/modules/Scheduling/+/15196239
    
    Change-Id: I61d375e4501cbaff23a563f03dfd76d54f9df606
    Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
    
  - Snap for 7506946 from ca41486155741f114deaa102c16dc96815326613 to tm-release am: 812f9aa2f9
    
    Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/modules/Scheduling/+/15151193
    
    Change-Id: I088e19dc8aebc1a0e16751c64cc12105302a3baa
    Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
    
  - Snap for 7464528 from 3a47636906dee55b4beb4f19cb58d15db79b60d8 to tm-release am: a8bbf6ba85
    
    Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/modules/Scheduling/+/15007846
    
    Change-Id: I3b3570888c0b626e7164bf2deda3aa8951448214
    Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
    
  - Snap for 7450497 from 538bcaa742197ab0605d4e92647d3fb22ecd3dd5 to tm-release am: af068ffaac
    
    Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/modules/Scheduling/+/14951471
    
    Change-Id: I772fba76f6340fc5c62e00ff6db20fd230558ebb
    Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
    
  - Snap for 7439290 from ae554918a12b6a22a33240e5b8fbadd404e51693 to tm-release am: a01342e0c8
    
    Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/modules/Scheduling/+/14912042
    
    Change-Id: Ida3f3d35e92a941653db720887cf28e18a3598bd
    Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
    
  - Snap for 7430111 from ae16bbbddf3c37e2b2a21b0ea688a0e611e937a9 to tm-release am: d85fae1d31
    
    Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/modules/Scheduling/+/14860406
    
    Change-Id: I48335075d1af07aaf80f09afd33ef7e51edabec7
    Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
    
  - Snap for 7422738 from 92ef14970fdcec4730ebe0a4a5237f4e98487cdb to tm-release am: 58be406d68
    
    Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/modules/Scheduling/+/14836307
    
    Change-Id: If29477813f5211fa49f2550b3c2e74e1c50ed9fa
    Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
    
  - Snap for 7418644 from 84867cb7b48c47edf335f37a8f68ee025ef42943 to tm-release am: 28d29c054b
    
    Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/modules/Scheduling/+/14811224
    
    Change-Id: I0e77ae59b455ed5107ccb2b6189b87e76cb824a8
    Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
    
  - Snap for 7372391 from 39c0e119c4718c1e331bce688b730faf1bc07219 to tm-release am: a160dfd948
    
    Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/modules/Scheduling/+/14612237
    
    Change-Id: I441b2de0035a4be6f2a18db83cb67684dafa473c
    Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
    
  - Snap for 7367778 from bbd3895f9c787aa66093ae4c4c0b720b7576bb12 to tm-release am: 7f903ba9bc
    
    Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/modules/Scheduling/+/14594115
    
    Change-Id: Icd280e3257ba18da963fd3bf113fc6a41504ec1a
    Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
    
  - Snap for 7357278 from 2e99d268d6920724ff0aec8dd6191f7340fb50c2 to tm-release am: 8d5ce2bd89
    
    Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/modules/Scheduling/+/14525291
    
    Change-Id: I4743a2626527664428a1919f0fce88a57a706372
    Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
    
  - Snap for 7354730 from 9abacacd7a56b86734c950f0ca8652239572fc0a to tm-release am: e889166860
    
    Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/modules/Scheduling/+/14511971
    
    Change-Id: I1485af803321c461b82ba905c5f7c0a1b790ce7e
    Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
    
  - Snap for 7328846 from 35164746d1c453bbd43ed3814f59539ac63d0465 to tm-release am: 0526b2002a
    
    Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/modules/Scheduling/+/14396651
    
    Change-Id: I7cde35cf3d522f9cdd8d5e07cdfb34a653b6016b
    Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
    
  - Snap for 7321797 from 77b96c221d40f88998fa2b57793c4ec560b425a0 to tm-release am: 3691470c74
    
    Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/modules/Scheduling/+/14346751
    
    Change-Id: I232bdc21abe49fe319ac41b3c9947635e188b106
    Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
    
  - Snap for 7318350 from 7063c4fb6236ca0b3ac2b4d69a66b9010205e36a to tm-release am: 69a6addfdd
    
    Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/modules/Scheduling/+/14335892
    
    Change-Id: I8505a3ad350a78061090e9e19fc7b251134cb2ea
    Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
    
  - Snap for 7299523 from a753967bd00ebead4f7d99e151d524b78d45a75f to tm-release am: 0390a0a9d9
    
    Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/modules/Scheduling/+/14259651
    
    Change-Id: Id2d3b040b66e468665ea17e432c843965bd9885c
    Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
    
  - Snap for 7283972 from 98dc385d206378def59499a094863876a0ee9d49 to tm-release am: faac2e7fcc
    
    Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/modules/Scheduling/+/14192533
    
    Change-Id: I965c64dfce5962a1090dddccfdf014d23447350c
    Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
    
  - Snap for 7272906 from f90d5928cbec280ee72a6e14c596a48805f7508f to tm-release am: 382fa5ccb5
    
    Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/modules/Scheduling/+/14149753
    
    Change-Id: I3ac6502fa892831e17c814f98ebb21e9dbf4f120
    Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
    
  - Snap for 7253336 from 601a5adcd277cb0bdfdfc583de3203e0b3b5dc68 to tm-release am: 5fff0785f2
    
    Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/modules/Scheduling/+/14071886
    
    Change-Id: Ib75049b53d28e55fefb82388551e9823f61260f4
    Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
    
  - Snap for 7241048 from 0724024a0a5863b5df880697bc60b8b7ed7ceed8 to tm-release am: 0388df7e9d
    
    Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/modules/Scheduling/+/14015600
    
    Change-Id: I03185fee6d74993fa157c6a995d5066342fe4c35
    Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
    
  - Snap for 7239324 from cb6e2e3fe8319bc5457aaf8b5a8c75bd60825c0a to tm-release am: 387815104d
    
    Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/modules/Scheduling/+/14009350
    
    Change-Id: I9c84d3f64ab82edc8dc5b9ad9481401f7c6ca90e
    Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
    
  - Snap for 7230858 from d0e6a515cd0bc4393208d296914cd56b3638c2a9 to tm-release am: 73f15cacf8
    
    Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/modules/Scheduling/+/13978781
    
    Change-Id: I9dd8f67ed873ce66e42feaa9b72330b1aec089e9
    Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
    
  - Snap for 7227488 from 1dd862a90e32500715c5d02f7854624982ccaa5a to tm-release am: 3198cd6ebd
    
    Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/modules/Scheduling/+/13961168
    
    Change-Id: Id046e55d4d29cf321c47480c2a72deedc758c85b
    Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
    
  - Snap for 7219695 from 64e64f48ef788e24c8bae9c62459c8723f093906 to tm-release am: 40d021f3ef
    
    Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/modules/Scheduling/+/13927035
    
    Change-Id: I0040168f6d9a205cd5f7279519338b29420e9371
    Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
    
  - Snap for 7206841 from 7533755a047788254f69fb4f29e24572ee0597bc to tm-release am: 76428d6c1a
    
    Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/modules/Scheduling/+/13864232
    
    Change-Id: I765d3f9da4e2f5c5ab18da8a33b8224337d41905
    Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
    
  - Snap for 7199154 from b32a11fb7ae7b922ed08b3531745775845a819a9 to tm-release am: acb17e7ccd
    
    Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/modules/Scheduling/+/13834677
    
    Change-Id: I66058e351182bf1588752bec7f9f02ae4f6cd04e
    Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
    
  - Snap for 7188507 from 7133af1e3fd75ef25b8b38f4d13e45f2d91039a4 to tm-release am: 57d4803ac2
    
    Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/modules/Scheduling/+/13794162
    
    Change-Id: I99f64df81f157cc69320a21334a8c10f5781d11a
    Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
    
  - Snap for 7183434 from 0df8dcce29b6002f9b999ad1b7ed7b0d930669b0 to tm-release am: 6e8e944166
    
    Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/modules/Scheduling/+/13767945
    
    Change-Id: I51f7f2fb91782daa3b8a6a5d4e49caf9a25d6e08
    Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
    
  - Snap for 7175162 from f51f7a76201070d18263bf5223ca2e024a927c36 to tm-release am: 33e6c91336
    
    Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/modules/Scheduling/+/13719630
    
    Change-Id: I1483857f94e3f862f2dc74d4c902b6d1b535fe8d
    Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
    
  - Snap for 7171433 from 7e8872024dee7f9bc24a42973515d0631364eb6d to tm-release am: ebb41ea555
    
    Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/modules/Scheduling/+/13705035
    
    Change-Id: I8ac10e56a810f3706280dc5814c434302651a4f8
    Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
    
  - Snap for 7160100 from 669e93851b44b35483b39e7516f1f7b4c2b57ec2 to tm-release am: 4313a3cace
    
    Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/modules/Scheduling/+/13648553
    
    Change-Id: I2f0916e6eb755f6aa4b3d72d6a67ea6b598a9296
    Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
    
  - Snap for 7151881 from 8134b8cde0b58489ad22a24ac2d432fe4508fa87 to tm-release am: f4db20185d
    
    Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/modules/Scheduling/+/13612867
    
    Change-Id: I6b4a67e49fb93670d2d8c6236945ca79a1a46689
    Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
    
  - Snap for 7150039 from 1d393e2c5dc94142af45f12ea01a8f2bd34e5b7f to tm-release am: 35d274dab5
    
    Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/modules/Scheduling/+/13596105
    
    Change-Id: I0f3ac0b7d71a4dfd8c505af92407e48e8922d3c9
    Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
    
  - Snap for 7088030 from 741942e418a78c45287f0604c9d9aa962df1d77c to tm-release am: f8e738ae98
    
    Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/modules/Scheduling/+/13365674
    
    Change-Id: I5ebad01d7bbd237f5e64ba746e4ec9728da8aeac
    Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
    

[...]