By Dmitry Zaharov. Source code was available on the website, but I can not find it anymore.
Archived Link