Created by Sebastien Castiel. Code available on GitHub.