(cherry picked from commit 9f7eb6c4c11b445da0fcadb357e1c7ed053b0084) (cherry picked from commit c55bd24827398be6a2ef3fc48aae05d9f68ebb86)
(cherry picked from commit 12bdb2b4d04a7338a4687755967a3eaad25696b0) (cherry picked from commit f0b8fee88f4f37eecf0d16b146ff0171804298e7)