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