(cherry picked from commit e36b27260845c2eeb2211d01235cc6d3578b1942) (cherry picked from commit 8a55178f4983f95e207656a6f81142f510c0cd7a) (cherry picked from commit 57783e7e249f366bac55ce5e9eb6998330e2eef4)
(cherry picked from commit e36b27260845c2eeb2211d01235cc6d3578b1942) (cherry picked from commit 8a55178f4983f95e207656a6f81142f510c0cd7a) (cherry picked from commit 57783e7e249f366bac55ce5e9eb6998330e2eef4)