Sync from 088b52f
Sync from c9f5b61
Sync from 77a4bf3
Sync from 823e236
Sync from 6753fbe
Sync from 96f1459
Sync from e36ad8c
Sync from 8456dad
Sync from c019758
Sync from a358b5e