Copyright Fedor Indutny 2019; Released under MIT license