## ##  ### ## ###### ######  ##   ##    ###    ######  #####   ####   ####   
### ### ### ## ###### ######  ##   ##   #####  ######  ####### ###### ######  
### ### ### ### ###### ###### ### ###  ### ### ##      ### # #   ###    ###   
####### ### ### ###### ###### ### ###  ### ### #####   ##        ###    ###   
####### ####### ##     ##     #######  ### ###  #####  ##       ###    ###    
### ### ####### ##     ##     #######  #######     ### ### # #  ###    ###    
### ### ######  ###### ######  ######  ### ###  ###### ####### #####  #####   
 ## ##  ######  ###### ######  ######   ##  ## ######   #####   #####  #####