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