(cherry picked from commit be5a757096246d5c4ef73da9d233adda67bd3d69) (cherry picked from commit 20c544d117cefb804bd8d11764302b9d64a07196)
(cherry picked from commit da074771977fe3de8acea441b096291c96cf59d9) (cherry picked from commit 03c6854c3064b2035b3ba3b1c5f5fd0d76c495f8)