(cherry picked from commit baab8b0a69c821c9bcb796ef4a952149a017674e) (cherry picked from commit 0504ef10edddb317f30ef8ea96cc66480e532b3e) (cherry picked from commit 4158c1a1f08c862ad1d6695300ebc75fe5888c63)