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