Copyright (c) Dan Abramov and the contributors. All rights reserved.