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