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