Contributed by Florian Hardwig
Contributed by Benoît Bodhuin
Contributed by Jon Ternent
Contributed by Soimadou Ibrahim-Aliamane