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