(cherry picked from commit 8dc43bc9fe934a0b4729cb1c467e62a73a11ebad) (cherry picked from commit 6093cc06) (cherry picked from commit 21c7c65b)