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