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