(cherry picked from commit 597fa47ad125c0871f5c4deb3a883e5b3341c67b) (cherry picked from commit c6573562cbc43832e9332989996e5d07b8bce9b0) (cherry picked from commit ea1f0f282bee7ca64ce9fbe1a59bb5e231420d29) (cherry picked from commit aa7ff8552e0f1b9439926ae3476a3227dcf339f3)