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