(cherry picked from commit 78917cd2be0d34dbbf4baab040f0cb83cec910ee)
(cherry picked from commit 7bef2409262a4075b51b5dbc14d275b5cc3f0a0e)
(cherry picked from commit f1735a4010ee1e873c4b07c1e0d222e4180fa27c)