(cherry picked from commit a3b3b8a2dfb31f3b8000f1bfeae63ef3190c211f)
(cherry picked from commit de0fd2d2e459aec24dae1293cc1f8f04069dedac)
(cherry picked from commit e1bf4de211a92a2f4645b3f34039749456a10ea3)
(cherry picked from commit 60ffc88a47a158fe4920f05875ea8d156eecaa70)
(cherry picked from commit f62a7e4975)
(cherry picked from commit fdadfb478a7e8e6393f23b0f74ea9bc5903d52d5)
(cherry picked from commit ed68e8622c)
(cherry picked from commit 34ebbc500d)
(cherry picked from commit 873be0b63c)
(cherry picked from commit 5d5b1e5ca4)