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