(cherry picked from commit 874ddbf0b5b1d34aca70ee7fc303cbffdde67236) (cherry picked from commit 9625a030dee1f567f3b91d74acccb8b15fe25428)
(cherry picked from commit cd9db822f0c1efc52005b1c069d52910d88038d9) (cherry picked from commit 3e1dc7ece0303f4d06816b8c3c1f2fae14db8eff)