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