(cherry picked from commit ea3b0a184405c3feca024a560807ea215b6858b9) (cherry picked from commit 9b61ecfcbeeb1d3c320f775b43c68d3e39a271a3) (cherry picked from commit b082628e5a39fc1bc9d6094beb9c253cc096c701) (cherry picked from commit 2b9c4fccf4a8930bfff99ab4928b9b3b4980d3b2)