(cherry picked from commit 387dbe587aa66ac99ec5f5b50827ec3e0a327613) (cherry picked from commit e58ccca3ce131c955ceb115cd0b75e452eea828b) (cherry picked from commit d951497f57cf6556b0916cad08576481dfe2ae06) (cherry picked from commit e23a448e0e32ce5139b76d47c73fce621ccb66bd)