(cherry picked from commit f8b8bd53c4797d406bea5b1b0cdb179e209169cc) (cherry picked from commit 6658018410defe3d7e4ea2a465e68d1cfdde6ada) (cherry picked from commit 9cb378f5c762f3b26598d3ade448219e5801fa2f)
(cherry picked from commit f8b8bd53c4797d406bea5b1b0cdb179e209169cc) (cherry picked from commit 6658018410defe3d7e4ea2a465e68d1cfdde6ada) (cherry picked from commit 9cb378f5c762f3b26598d3ade448219e5801fa2f)