(cherry picked from commit 848685d68d8bf7b7a38fea221db5e474cd30ea79)
(cherry picked from commit e8021f281f905e4499db4e67c91326932bfd613f)
(cherry picked from commit 2a4b3a2a4327c8000f0b583d91575c800c6035c4)
(cherry picked from commit 22abd100cbab75673c53e4fb36fa574ada660aee)
(cherry picked from commit 4e2c30cb5bcd7a4e2b2385a774062492e741a9e9)
(cherry picked from commit 1ddc08747c8819e8967c95d54d3e273ef3831570)
(cherry picked from commit ba3df0131412c2eb41a3312558bc4df5881caad5)
(cherry picked from commit 644f7cb7338ae09b5ea7021132e93c70ba8fc771)