####    ######    ##########  ####  ####  ##########  
      #::#  ##########  #::::::::#  #::#  #::#  #::#######  
      #::#  ##      ##  ####::####  #::#  #::#  #::#        
      #::#          ##     #::#     #::####::#  #::#        
      #::#       ####      #::#     #::::::::#  #::#####    
      #::#       ####      #::#     ####::####  #::#####    
###   #::#          ##     #::#        #::#     #::#        
#:#   #::#  ##      ##     #::#        #::#     #::#        
 ####::##   ##########     #::#        #::#     #::#        
  ######      ######       ####        ####     ####