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