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