(cherry picked from commit 23854443efa62aa70a1c30c32c3816750e5d7a5b) (cherry picked from commit b38649c59a70b3112811443464b3b3180f4b9873) (cherry picked from commit 4b606eb9fd5dde5629e791d3338886a70b5aa57c)
(cherry picked from commit 23854443efa62aa70a1c30c32c3816750e5d7a5b) (cherry picked from commit b38649c59a70b3112811443464b3b3180f4b9873) (cherry picked from commit 4b606eb9fd5dde5629e791d3338886a70b5aa57c)