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