(cherry picked from commit f24f577c89647dc80a84bfa76f3055d24ced55a5)
(cherry picked from commit 98b4f26e0972a2bea2d46f2c74c1db94ed087477)
(cherry picked from commit 2b47d8ea021a7b6e694c52fd8d74880f9a6b79a5)