(cherry picked from commit 47279c3228185548ed09c36579b420225e4894f5) (cherry picked from commit 4045c41afe440b773d006e962bf8a5eae3fdc284) (cherry picked from commit 6f2cc0dfa8f21984ecdab59dc087ccf525934930)
(cherry picked from commit 47279c3228185548ed09c36579b420225e4894f5) (cherry picked from commit 4045c41afe440b773d006e962bf8a5eae3fdc284) (cherry picked from commit 6f2cc0dfa8f21984ecdab59dc087ccf525934930)