Permission to use, copy, modify, and/or distribute this code
for any purpose with or without fee is hereby granted.
There is no warranty.