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