(cherry picked from commit 57659422abbf6d9bf52e6e27fca775254bb77a56) (cherry picked from commit e3a52804b03d646f15048c078f8c5292d5cbecfa) (cherry picked from commit 54599b177c46ed511e096909bed0c4f17bca1fe0)
(cherry picked from commit 57659422abbf6d9bf52e6e27fca775254bb77a56) (cherry picked from commit e3a52804b03d646f15048c078f8c5292d5cbecfa) (cherry picked from commit 54599b177c46ed511e096909bed0c4f17bca1fe0)