Copyright (c) 2008 Nexedi SA and contributors