(cherry picked from commit 3fade865ce84dcf68bcd7de5a5ed1c7d904796e9) (cherry picked from commit 64cb97fb4467513f73fde18f96f391ad34e3bb0a) (cherry picked from commit 5d532cfc6f23f942ed10edab55ed251eb99a0664) (cherry picked from commit 37082a664aaf99bc40522a8dfa231d71792dd976)