`-/:--.                                             
                                            `-+ohmNNNmmho-                                          
                                         `-++/:/shmNNNNNmmy-                                        
                                        :sy+-.`-sdmNNNNNNNmd/                                       
                                      `+ys+::::ohmmmNNNMNNNmd/                                      
                                     .+ysso/:+hmNNNNNNMMNNNNNm+                                     
                                    .:yoososhNNNNNNNNNNNNNNNmmd/                                    
                                    -sooooydmNNmmddhhyhhhdNNmmmh-                                   
                                   `+oysshdNNmdhyooo++///odMNmNdy`                                  
                                   -oyyhdmNmmhyso+++//////odMMmmd:                                  
                                   /shdmmNNmdysso++///+++//sNMNmds                                  
                                  -shddmmNMmdhyso+++shhys+/sNMmNmh:                                 
                                 `odmhmmmMMmNNmhy+/+yyhys//sNNmNmms`                                
                                 -ymddmmmMNNmdhhhs::/++///+dNmNMNmh-                                
                                 -ddhmmmmMNNmhyyhy:::++///sNNmNMNmds`                               
                                `/hyddmmmNMMmhyyhs/::/+++odNmNMMNmhy-                               
                                `/shhmmmmNMMMmyhdho+++osoymNNMMMNmhy+......``                       
                               ``/sydmmmmNMMMMmhddho+ososdNNMMNNNmdhyso+++++/:-`                    
                                `-+sdmmmmNMMMMMNmhyyso+sdmNNMMNNNmdhhsoooo+++///.                   
                                ` :sdmmmmNNMNMMMMNdyyyhmNNNMMMNmNmdds/ossso++//::`                  
                                  `+sydmmNNNMNMMMMMMMMMMMMNNMMNNddds/+ooooo++++//`                  
                                   `/syddNNNNMNMMNNNNMMNMNNNNNNNdhhyooo+ooo++++//`                  
                                  `-+osyddmNNNNNNmmdddNMMNNNNNmNmhysso//++++++///`                  
                                 `-/+oossyyhdmmNmmdhyyhmNNNNNmmmhso+//////++++///`                  
                                `-/+++ooooosshhhhhyssyyhmmmmdhdhyo+////////+o++//`                  
                                .:/+++//++++oysssssssssssyyyoos++++///::::/oo+++/`                  
                                -/+++////++osyoooooooooooooo+////////::::::so+++/`                  
                               `:/+++////+yyyyoooooooooo++//////////////::/so+++/`                  
                               .:/+++////oyhhyysooooooo++////////////////:+yoo++/`                  
                              `-/+++////+shhhhyyssooooo++///////+++++++////oso++/`                  
                              `:/++/////oyhhhhhysssoo++++//////++ooo+++///:::+++/`                  
                              ./+++/////syyyhdmyoo++++++//////+ooooo++++//::::///`                  
                             `:/++/////+yhdddmmmy+//++oo++/::/+sysooo+++//::++://                   
                             ./+++/////ymNmmdNyNmy+++oooo+/::/+syysoo+++//:/+o+:/                   
                            `-/+++////:yhmydmmhdmdhsoosooo+::/oyhysoo+++////+o/:/                   
                            `-/+++////`+yhhddNhhhdddhhyys++/+shmNmysoo++//////:+:                   
                           `.:/++////: :hddhhddhhdhmmmmddhhhho+dNNmhsoo+++++++o+:                   
                           `-:///////. .ydmddddddddddmmmmmdhyoohmNNmdhhysooosso/-                   
                            .///////:  :ohmmmmmmdmmmmmdddhyysooshmmNNmNNmhyyss+/.                   
                            .://////.  :hddyhhhmmmdmmdyysoo+oosooshdmmmmyssyss+/`                   
                          ``-///////   /yddyhdmNmdhhdhssssso+/++oosydhhyosysso//                    
                          `.://////-  ./osyyhhdmhhhhdhyyssssossoooshyyy/syyss+/.                    
                         ..-://////` -++yo+ohhdNmddhddysso++//+ossyhhd++yhyy++:                     
                         --://////:`-/sssyyddmmmhhddmmhssyyysoooshyyy+.syyss+/                      
                         .-:/++///++ohhsshdmhdhhhhhdddhyysoosssohhyyo`/yhys+/`                      
                         `://+++//+yddhdmmysyhhhhhhhhhhyyyyysshhhyyy/-yhhs+/.                       
                         `://+++///dhyysyyyydhhhhhhhhhhyyhyhyhdmhyyh`:yhs+/.  ``+-...`           `  
                          -//+++///+osyhhhhhhdmmdhhyhhhsshyyhhyddhhd.oyy+/-    -NNNNNh+:``   /:  d/ 
                          -//+++///+oooosydddhhmmmyhdmmyysyhdyyyyhyNsyyo//:::+ymMMMMMMMNNdyo/sNo:Nm-
                          .:/+++///oosssshmysymmmdhdddhysyhmhyyyydhhyyo+/ssssmMMMMMMMMMMMMMMMMMMMMMM
                          .://++///osssshdysoooshdddddhhyydmdhhhhdyhy+//oyyyhMMMMMMMMMMMMMMMMMMMMMMM
                          `-///////ossyhhysooo+++sdmNmyyhmmddmddmyyyy+:/hhyNNNMMMMNddhyyyyhdMMMMMMMM
                          `.://////syyysyyysooo+//+ydhyhdmhhyysosmshd+:+Mmhdyyyo+/////////:::omMMMMM
                       .-:/-://+///+sssssyyyssoo++++yhyhhysosssssddds++/yoo++///++++++/////:/::oNMMM
                     `:+++/--://////osoosyhhhyssoossosysssssssssssoo++++++++++++++++++++//////::+MMM
                   `..--:----://////osssssyhhhyyyhhysyyyysssoooooooooooooooooo+++++++/+//////::::mMM
                  ``..-://+/:://////osyyyyhhhhhdmmdhhyssoooooooooooooooo++/++++++++++++//+/+//::/NMM
                    ```-/+oss:://///+syyyyhddmmNNmhysssooooooosssoo++//////+++++++++++++++++++//dMMM
                    ``.-:/osh+:::///+syyhhdmNNMNmhyysssoooo+oso+//////////+++++++++++++++++oo+:+NMMM
                   ``---:/+oh+://///+yyhdNNNNMNddhhyyyssssso+///////+++++++++++oooooo++oooo+/.``.odM
            `   ```..:///++oh/::://++yhmMMMNMNmmdddhhhhhyo///////+++++++++++ooooooooooooo+:.`     `:
                ``..-:/++++oy:://///+ymMMNNNNNNmmmmmmhy+///////+++++++ooooooooossssyyso/-````       
              ```..-:/+++++so:///////yNNmmmmmmdddddyo+///////+++++++oooooossssyyyyys+:-..``````     
             ``...-:/++++++so/////://omdmmdddddhyo+////////+++++++ooooossyyyhhhdhs+:----...`````    
          ```.--:://+++++++yo+++//////hmmmmddhso////////++++++++ooosssyhhddhhhhhhyysso/:--....````  
     `````.::///+++++++ooooyoos+++++//sNmmdys++++///+++++++++oossyhhhhhhhhhhhhhhyyyyyyyys+/-...```` 
     `.-:/++++++++++++oooosy+yo/o+/++/omhyo+++++++++++++++oosyhhddhhhhhhhhhhhhhhhhhhyyyyyyyo:-..````
     .:+ooooooo++++++ooooshssh++y+/s+/oyso+++++++++++++osyhddhhhhhhhhhhhhyhhyhhhhhhhhhhhhyyyys/..```
    `-+ooooooooo++ooooooshhsmyooy+/h++oso++++++++++oosyhddhhhhhhhhhhhhhhhhhhhhhhhhyyyhhhdhhyyhys:.``
    .:ossooooooooooooooydmyyms+ho++d+/oo+++++ooossyhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhyyyyyhhhhdhyy:.`
   `-/osooooooooooooosyhyysyysodo+sy+/o+ooosyhdmmdddhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhyyyhhhhdddhyyy..
   :/+osoooooooooooosyyyssosy+yyooss+ooosydmNNNNNmmmmddddddhhhhhhhhhhhhhhhhhhhhhhhhhyyyyhhhhddhhyd/-
  `/+oosooooooooooossssssooss+oo+sssosyhddddddmmmmmmmmmddddhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhyyyhdhhhy-
  ./ooosoooooooooosssssssssssyhyyhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhddhys
 `-/oossooooo+oooossssyyhhhhhddddddhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhyyyyhddhhy
 `-+osssoooo++ooooyhhddddddhhhhhddddddhhdddddddhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhyyyyhhhyhhhh
 .:oossoooooooooooddddddddddddhhhhdddddddhddddddddhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhyhhhhyyhhhh