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