(cherry picked from commit 29f80967105380f32119b40e7b8547ad104c3ff5)
(cherry picked from commit 98ee9c02cef3e7689ca7cf302bb18a133cb117e2)
(cherry picked from commit dce5a02481d47e47fde1623cb95532480192e1f3)