MMMMMMMMMMMMMM                                                 
M"""""`'"""`YM oo                                              
M  mm.  mm.  M                                                 
M  MMM  MMM  M dP 88d888b. .d8888b. .d8888b. .d8888b. dP   .dP 
M  MMM  MMM  M 88 88'  `88 88'  `88 88'  `88 88ooood8 88   d8' 
M  MMM  MMM  M 88 88    88 88.  .88 88.  .88 88.  ... 88 .88'  
M  MMM  MMM  M dP dP    dP `8888P88 `88888P8 `88888P' 8888P'   
MMMMMMMMMMMMMM                  .88                            
                            d8888P                             
               MMMMMMMMMMM                      
               MM'""""'YMM dP          dP       
               M' .mmm. `M 88          88       
               M  MMMMMooM 88 dP    dP 88d888b. 
               M  MMMMMMMM 88 88    88 88'  `88 
               M. `MMM' .M 88 88.  .88 88.  .88 
               MM.     .dM dP `88888P' 88Y8888' 
               MMMMMMMMMMM