copyright (c) Takushi Hashimoto All Rights Reserved