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