Законченная версия поста) : https://reactor.cc/post/6000184