.::ccccccocooooocococc::c::::::::::::::::cccccocoococcc:::::::::::::  ::ccccooooc ::c:::::::::::::::c:c:ccccocococcccc:::::.       
                     :cocoCCoCCoooooCooocccccccc:::::cccccccccooooooooooocc:::c:::::ccc. ::::cccoooc cccc::::::::::::::ccccocooCooooooc:cc::.         
   :::::::::c:c:ccccooooooCoCoCCC:.oooooc.  .:cccooccccoooc:cccooooCC..oocccc::::.  .:cc:.::::ccooooocc.   :c::cccc::. ::cccccoooCC. :::::            
   ...::::::::::::c:ccccooooooCCC..oo. .:::::::::::::ccccccc:c:cooooo. :c::::. :cooccccc:.:::::cccoccccccoooc .oooooc: ::::cccooooo. :::.             
   .:..:::.:::::::::::ccccooooooC..o .::::::::::::::::::::::::cccoooo. :::. .:ccccccc:::::::::::cccc::cccccooooc .occ: :::::cccoooo. :.               
   ::::::::::::::::::::::ccoooooo.   ...::::::cccc:  .... .::::cccccc..:: .:::::::::::::::.::::::ccc::::::cccooCCc cc: ::::::ccccoo.                  
    .::::::::ccc:................   ..:::::cccccoo :cc::. .::::::cccc. :  .::::::::::::.:..:::::cccc:::::::cccoooCC :: .:::::::cccc.                  
       :::::ccccoo:.             ..  ..:::ccccoooo:..ccc. .c:::::::cc.   ...::::::::::::.:::::::cccc..:::::ccoooCCCC.   ...::::::cc.                  
        .:::cccoooCCC                ..:::::ccccoooooooccccc::::::ccc. ...::::::::c:::   .:::::cccoc  .::::cccooooCCc.     .:::::::.                  
           :ccoooooCCCo:               .:::::::cccccccccccc:::::::ccc. ..::::::cccc:  :  ::::cccoooc o. ..:::cccoooooc     .:::::::                   
             :ccoooooCCCo                 :::::::c::::::::::::::c:ccc. ..::::::cccc :::  ::c:cccooCc coc .::::ccccooo:     .:::::::                   
              :::ccooooCoc.               :::. .:::c:ccoccccc::c:ccco. .:::::ccccoc ::c. .:::cccoooc co:   ::::c:cccc: .  ...::::::                   
           ..:::cccocooc                   .  :::::ccocooocc:c::cocoo. .::::ccooooo :oo. :::::cccco: :::   .::::::::c: .  .::::::::.                  
          :::::ccccoc:.                     .:::ccccccoCoocc:::ccccoo. .::::c:ccoooo. c. .::::::cco: c.    .:::::::c::  ..:::::::ccc:                 
       ..::::::ccoc:                       ::::::cccooo..cocc::::ccoo. ..::::::ccooCoc   ....::::c::     ...:::::c:::.    ::::::cccocc.               
      ..:::::ccccc                        ::::::cccooo. .ccc::::::cco.  .::::::cccooCCCc:...::::::::     ...::::ccc:       .:::::cccooo:              
   .....:::::cccoooooCCoCCCCoCCoo.      .:::::::cccoc : .cc:::::::ccc. . .:::::ccccoooooc.....::::::    ..:::::cccc          :::::ccccoooocc::::::::. 
   .. ..::::::ccccooooooooooooooo.     ..:::::::ccc.  : .::::::::cccc. :. .::::::ccoccoc::.:..::::c:   ..:::::cccc.           ::::::::::::::::::::::. 
   .   ..:::::c::ccccccccoccccccc.   ....:::::::::       :::::::::::: .::.. .:::::c::ccc:..:::::::c:  ..::::cccc.              .:::::::::::::::::::.. 
   .    ...::::c:::c::c:c:c::::::.  ...  ..:::::.        .:::..::::::  :::cc:...:::::::c:..::::::cc: ...:::::......  .........:  ::::.::::.:::::..    
           ....::::::::::::::::::  ..     ..:::          ...  ....:::  ::ccccccc:.  ..::::::::::cccc:....      ..  . .:.     ..   .::::::........     
                                                                       ::::ccccccccc:::  .:::::cccoc.                                                 
                                                                :::::::::::::::c::::c::  :::::ccoooc                                                  
                                                                 ::cc::::::::::::::::::. :::ccccoooc                                                  
                                                                    ccccccccc:cc::::::ccccoooc.                                                       
                                                                     :oooooocccc:::c:::cccc::                                                         
                                                                       .oooooooccc::::::::.                                                           
                                                                         :cCooooccc:::::.                                                             
                                                                           .cooooccc::.                                                               
                                                                             .oocc::                                                                  
                                                                               .::.