(cherry picked from commit f34744603ee93e082e7ba148df1400af5ac7c30c) (cherry picked from commit 7e655b642d0ed5b85e0e8c212e004d067318ed4c) (cherry picked from commit d1dcc39222b6d1d8ba10f38a3f2fb69e4d6548b3)
(cherry picked from commit f34744603ee93e082e7ba148df1400af5ac7c30c) (cherry picked from commit 7e655b642d0ed5b85e0e8c212e004d067318ed4c) (cherry picked from commit d1dcc39222b6d1d8ba10f38a3f2fb69e4d6548b3)