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