,d8       ,a8888a,             ,d8    
      ,d888     ,8P"'  `"Y8,         ,d888    
    ,d8" 88    ,8P        Y8,      ,d8" 88    
  ,d8"   88    88          88    ,d8"   88    
,d8"     88    88          88  ,d8"     88    
8888888888888  `8b        d8'  8888888888888  
         88     `8ba,  ,ad8'            88    
         88       "Y8888P"              88    

   _____                      _               _             _         _      
  / ____|                    | |             | |           | |       | |     
 | (___   ___  _ __ ___   ___| |__   ___   __| |_   _   ___| |_  ___ | | ___ 
  \___ \ / _ \| '_ ` _ \ / _ \ '_ \ / _ \ / _` | | | | / __| __|/ _ \| |/ _ \
  ____) | (_) | | | | | |  __/ |_) | (_) | (_| | |_| | \__ \ |_| (_) | |  __/
 |_____/ \___/|_| |_| |_|\___|_.__/ \___/ \__,_|\__, | |___/\__|\___/|_|\___|
                                                 __/ |                       
                                                |___/                        

  _   _     _                                                _          
 | | | |   (_)                                              | |         
 | |_| |__  _ ___   _ __   __ _  __ _  ___    __ _ _ __   __| |   __ _  
 | __| '_ \| / __| | '_ \ / _` |/ _` |/ _ \  / _` | '_ \ / _` |  / _` | 
 | |_| | | | \__ \ | |_) | (_| | (_| |  __/ | (_| | | | | (_| | | (_| | 
  \__|_| |_|_|___/ | .__/ \__,_|\__, |\___|  \__,_|_| |_|\__,_|  \__,_| 
                   | |           __/ |                                  
                   |_|          |___/                                   

             _         _ _          _   
            | |       | (_)        | |  
   ___  __ _| |_    __| |_  ___  __| |  
  / __|/ _` | __|  / _` | |/ _ \/ _` |  
 | (__| (_| | |_  | (_| | |  __/ (_| |_ 
  \___|\__,_|\__|  \__,_|_|\___|\__,_(_)