(cherry picked from commit 7c98a4c54e)
(cherry picked from commit 1ec4a8e6cf23691a595259d3d3e66a6b4b3962fa)
(cherry picked from commit 79de60a5d814ff8a0d475a3ce24bfe20c4e56ceb)
(cherry picked from commit e7fbfb34a900fa09f0828a5fa3cc6e93762d355a)
(cherry picked from commit 5ad6bd26c2dbad57672b56eeb37296a3da016efd)
(cherry picked from commit a1e51272f2)
(cherry picked from commit ee319d6b64587cc50ec47495833d514848f902c3)
(cherry picked from commit b930a6be12)
(cherry picked from commit c51fed698a)