Author: Truong-ngoc-Giau.