,,oooooooooo,..
                                ,,ooo08888*""""**88ooooo..
                           ,,o880"   , ,   ,'.`. .  ."""*888. 
                        ,o8888"  ,;;;_;_,;;__;;_;;_`,_,, "8888
                     ,o88888888888888888888888888888888[ 888888o
                   ,o888888888888888888888*";;;";""8888[ "888888o.
                  ,o888888";";;;;:;;;;;;;;;;;;;;;;;;;;;;,;;,""*88o 
                 ,88888";;;;;;;;;;;: ::::o;;;oooo;;;;;;;;; ::;;`88o
                ,888";;;;;;:;',:::::::o;88o8;;8;@8oo::::::::::: `"8                   
               /88";;;;;;;;;:,::: ::::::88;8;88;o8;o8oo;:::::: | `                
               |8" :,.:::::::,,,, :::;: : :: :: ::: ::: :: ::;;; \_               
               /"  : :::::::::::::;,;;:::::::::: :: :: : : :;;;; \  -         
               \|  : .:::::;;; 88 #@@$//))8@(\ \@@@\";";;;;;;,:,::/|             
                |    . :''  '    ,,,,  \|;88 ;; ,- "    ";;,;;,;;/ |\___,    
                ,  :   :.::::.. ..  _\/|  ;;; | / ,,:;; .. ,;;,;;/ |\\==      
             __,/   :  ::::<#( ' )#> |   |;;;; : ;'o@{ ' }>;;;;;  |`\_-- 
             ==//    :::::::: :: :: :::   '::  \    :::'::::::,:,, \`-              
             _,///   : :;:: : :: ::;;:: ; ::: . ; o,, ::;; ;;;,,  ||\             
             =// /'  ; ;;;;;;; : :;8:   ' ;;  . ::.8b;,: ::;;,,',, \ ;               
              /// :. ; ;;;;;;;;;;;;8;    .;;;  \ :;:8;;;;\ :,;;,' \ \;     
                  :: ; ;;;:;;;::; :88;   ;;;;  \\ :::::::;: :::::,\\;;       
                  :: ; ;;;:;;;:; :88;;   ;;;;  \\ o::::::: ;: :,;,;;;;      
                  :::; ,;;;;;;; ;888:; / ;;;;',`# "8o;::: ,',','. ; ;'      
                  ':;  ;:;;;;;  :8"  /.\';;;@@;;o\ ;8o::::::',,'.;;;;       
                   ;' ;;;;;    :::   \""\\ ::::/=/ ':";;;;; ;;,'.;;;       
                    ;;;;;;   ,',;;; / , . ;""... :  'o;::; ,::;'; ;;         
                    ;;;;;;   ;;;;o8 ,'.'.'o'',";',', \8o,/ ::: ,,;;              
                    ; ;;:;;  ; o88/ ,' '.:o.'.o',','. ";  /::,:,' ;           
                    ; ;;;;;   d8; . .',";:8' ;8,,::,: \;;  :;:,:',;            
                    ';;;;;;; ;8/.  ,; ,. ;: ' ;  ,:,',  ':; ;;;,;,:     
                     ;.;';;; |8| ;.   _._===-===_=__'_'  8' ,,';,;         
                      :.. ::. 8   : ``-==****,***  ,;   8", :,';;'         
                       ':. .`  o8:  :::';';':;::;';    /": ;;,:;'           
                        ':. ::\::;:. ':::::::::::;; , :;;  :;;'            
                           ':'..'.:;;:':':::':':,:   ;;  ,;,'                
                             `\.::::;:  ,:"" ''""::    ,;;'                
                                `: ::,: :::"::'":::'  ;,;                     
                                 `\::;:. ::::_"::;:: ,,                      
                                    ' -- _ -___;,';'