(cherry picked from commit 3833c616e087518196bcb77ac2479c66a0b188d8) (cherry picked from commit 370efc6d95fde8065dd5ba742446d0e9e570a5e9) (cherry picked from commit 1e33696bc8fa74fbb00248c5de485e951a692814)
(cherry picked from commit 3833c616e087518196bcb77ac2479c66a0b188d8) (cherry picked from commit 370efc6d95fde8065dd5ba742446d0e9e570a5e9) (cherry picked from commit 1e33696bc8fa74fbb00248c5de485e951a692814)