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