(ported commits: cd3d317ebf74c4bd2b9a806e4463e2d0ae730a3b 01124c6f4e6d0e6cebbaa3741634a4d662992a9b and 86b516c3f27f155f267245fc27ae634a76bb1e2f
(ported commits: cd3d317ebf74c4bd2b9a806e4463e2d0ae730a3b 01124c6f4e6d0e6cebbaa3741634a4d662992a9b and 86b516c3f27f155f267245fc27ae634a76bb1e2f