i i:i:i:::i:i:i:i:i:i:i:::i:i:i:::i:i:i:::i:::i:i:i:i:i:i:i:i:i:::::i:i:i:i:i:i:i:i:::::i:i:i:::i:i:i:::i:i:i:::i:i:i:i:i:i:::::i:i:i:i:i:::i:::i:i:i.
:                                                                                                                                        .   .        
: i::::::::::::,:::,:::::::::,:,:::::,:,:,:,:::::::::::,:::::::::::::::::::::::,:,:::::,:::::::::::::,:,:::,:,:::::::::,::::i:i:i:iii:i:, i:.: ,i,,:i 
: ::::,:,:,:::::,:,:::::,:::::::::::,:,:,:,:,:::::::,:,:,:::::,:,:::,:,:::,:,:::,:,:,:,:,:,:,:,:,:,:::,:,:::,:::::::,:::::,    ,.......:, :, . .:. .:.
i :,:,:::,,,:,:,:,:,::,,,::::,:,,::::,:,:,:::,:::::,:,:,:,:,:,::,::,:,:,::,,:,:,:,,,,::,,,:,,::,,,::,,:::,::::,:::,,:,,::,: . , . . .. ,i   ...   . i 
: ::,,::::::,::,,:,,,::,,:,:::,:,:,:,:,:,,,:::,:,:,:,:,:::::,:,,::::,:,,::,:::,:::,:::,:,,::::,:::,:,:,,:::,,:,:,:,:,::::::::i::::::::,:::::::::::::: 
: ::,,:,:,:,,,,,:,,,:::,:,:::,:::::,:,:,:::,:::::,,,:,:,,,::,::,:,:,:,:,:::::::::,:,:,:::,:,:::,:::,:,:,:::,,,:,:,:,:,:,:,:,:,:,:,:,:::,:,::::::::::: 
: ,:,:,:,:,::,::::,,,:,,,:::,:,::,,:,:,:,::,,::,,:,::,,:,:::,:::,::,,:,:,:::::,:::,:,::,,::,,,,:,:,,,:,:,,,:,,,,,:,:,,,::,,:,:,:,:,:,:,:,:,:,::::::::.
: :,:,:::,:,,,:::,,,,::::,:,:,:,,::,:::,:::,:,:,,,:,:,:::,::,:::,,:,,,::,::,:::,:::,:,,,:::,:,:::,:,:,:::,:,:,:,:,:,:,,:::,,,,:,:::,:::::::,:,,,::::: 
: ::::::::::,:::,:,:,:::,::::,,:,:,:,::,,:::,:,,,:::,:::,:,:,,,,::::,:,:::,:::::::,:,:::,,::::,:::,,::,:::,,::::,:::,:::::,::,::::,:,:::::,,::,:,:,::.
: :,:::,:::::,:,:,:,:,:,::,,:,,,:::,:,:,:,:,::,::,,,:::::,:,:,:,:,:,,,:,,,:,:,:::,:,:,:,:,:,,,:::,:,::,::::,,::::::,,,,,:,:,:::,:,:,,,:,::,,:,:,:,:,: 
: ,:::,:,::::,,:::,:,,,:,::,:,,,:,,,,:,:,:,:,:,:::,:,:,:,:,:,:::,,,,::,,,::,,:::::,:,:,:,,::::::::::,:::,:::::,,::,:,:,:,:,,::,:,:,:,:::,:::,:,:,,,:,.
: :,:,:::,:::,:::::,:,:::,:,:::,:,::,,:,:,:,:,:,:,:::::,:::,:::,:,:,,,,,:,:::,::,,:,:::::::,:,:,:,:,:,:,:,:::,:,:,:::,,::,:,,::::,:,:,::,,:,,,::,,:,: 
: ,:,,,:,,,:,:,:,,,,::::::,:,:::::,::::,,:,:,:::,:,:,:::,:,:,:::,:,:,,::::::,:::,:,:,:,:,,,:,:,:::,,,:::,,,:,:::::::::,:,:::,:,:,:,,:,::,:,:,:,:,:,::.
i :,:,:,:::,:::,:,:,:,:,::,,:,:,:,:,:,:,::::,,,,:,:,:,:,:::::,:::,,,:::,:,:,:,:,:,:,::,::::,,::::,::::,::::,:::,::,,:,:::,::,::::,:,:,::::,,:,:,:,:,: 
: ,:::,::::::,,,::,:::,:::,:,::::,,:,::,::,:,,::,:,,::::::,:::,:::,,:,,,,:,::,:::,:,:,,:,:::,:,:,:,:::::,:,:,:,:,:,,,:,::,:,,:,:,:,:,:::,:::,:::,::::.
: :,:::::::,:,:,:::,,,:::::,,::,:::,:,:,:,:,:,:,,,::,,:,:,:,:::,:,,:::::::,::,:,:::,,,:,:,:,,::,:,:::,,,:,:,:,:,:::::,:,:,:,:::::::,:::,,,,,:,:::,:,: 
: ,::,,:::,:,:::,,,:::::,:,:::,:,:::::::,:,::::::,,:,:,:::,:,,::,,::,:::::,::::,,:,:,,,,::,:,:::,:,,,:,:,:,:,:::,:,:,::::,:,,:,:,:,:,:,,::::,,,:,::::.
: :,:,:,,::::,:,:,:,:,:,::::,,::,,:,:,:,:,:,:,:,:::,:,,::::,:,::::,::,:,:,:,:::,:::,:,,,:::,:::,::::::,,:,::,::,:,:,:,:,,,:::::,:,,::::,:,:::::,:,:,: 
: ,:::::::,:,:,:,:,::::::,,:,:,:,:,:,:::,:,:,:,:,:::,:,:::,,,:::,:::,:,:,:::,:,:,::,,:,:::,,,:,:::::,:,:::::,:,:,:,,,,::,:,:::,:,:,::,,:,:,,,:,:,:,::.
: ::,,,::,:::,:,:::,:,,:,,:,,::,:,,,,,,::,,::,:,,,,,:,:,:,:,,,:::,:,:,:,,,:,:,:,:,::,,::,,:::,:,:,:,:::::,::,::::,,,:::,,,:,:,:,:,,::,:,,:::,,:,,,:,: 
: ,:,:::,:,:,:,:,:::,:::,:,:,:,:,,::,:,:::::,:::::,:::::,:::,::,,,::,,,:,:,,,,.,,,,,,:,:,,::,:,:,,,::::,,:,::,,:,,,:,:,:,:,:,:,:,:::,,,:,:,:::,:,,::: 
i :,:,:,,::,:,:,:,:::::,::,,:,:,:,,,,,,,:,:,:,:,:::,:,:,:,:,:,,,:,:,,.,               ..,.:,:,:,:,::,::,:::,,,,,:,,,,:,,:,,,:,:,:,::,,:,:,:,:,,,:,:,: 
: ::,::::,,:::,::,,:::,:,,,:,:,:::::,,,:,:,,::::::::::,:,:,:.          ,;a80Za2aB8aX;,        .:,:,:::,:,:,:,:,:,:,:,:,,:,,:,:,:,,,:,:,,,:,:,:,,,:,::.
: :,:::::::,:,:,:,:,:::::::,,,:,:,:::,,,::::,,,,:::,:,:::,,.r2SSa2Z0MMMM0X, SMM8X r2@MMM@BB80BX.,,:,:::,,::,:::,,,:,:::,,,:,:,,::,:,:,:::::,:,:::,:,: 
: ::,:::,:,,,:,:,:,:,,:,:,,:,:::,:::,:,:::,:,:::,:::,:,,,:,.7Z22SXXS2Z2ZZ08ZBMM@Z888aXi..i;777:,,:,:,:,:,:,,::,,,:::::,:::,:,:,:::,:::::,,,:,,::,::::.
: :,:,:::,,,:::,,,:,,,:::::,,,:,:,::,::,:,:,::,::,:,,,:,:,,,.            .:ii,:i;:,     . .   .,:::,,,:::,:::::,:,:,:,:,:,:,:::::::,::::::,,:,,,:,:,: 
: ::::,::::,::,:::::::,:,::::,::,:,:,:::,:,:,:,:,:,:,,::,:::,,,,,:,:,:,,.,..     ..,,:,,,:,:,:,:::,:::,:::::,:,,::::::,,,:::,:,:,,::,:,:,,,:,,::,::::.
: :,:,::,,:,:,:,:,,,:::,:,:::,:,:::::::,:,:,:::,:,:::::,:,:,:,::,::,:,:::,:,:,,,:,,,:,:,,:,,:,:::,:::::,:::,:,,,:::,,,:,:,:,:::,:,:,:,:,:,:::,::,,::: 
: ,:,:::,,,:,:::,::,,:,:,:,:,,,:,:,:::,:,:::,:,::::,::::,:,:,:::::::,:::,:,:::,:::,:,:::,:,:,:::,:,:::,:,:,:,:,:,:,,,:,:::::,::::,,:,:::::,:::,,,:,:: 
i :::,:,:,:,:,:,,::,,::::,,,:,:,:,:,:::,:,:,:,:::,::::,,:,:,:,,:,,:,:,:::,:,::,::,:,,,,,:,,,:,:,:::::::::,:,:,:::,:,,,,,:::,:,:::,:,:,:::,:,:,:::,::: 
: ::::::,:,:,::,,:,:,:::,:,,,:,:,:::,:,:::,:,:,:::::,:,:,:,::,,:::,:,:,:,:,:::,,,:,:,:,,,:,:,:,:::,:,:::::,:,:,:,:::::,:,:,:,:,:,::::,,,,:,:::::,:::: 
: :,:::,:,:::,,::,,:,,:::,:,:,:,:,,::,:::,:,,,:,,,:::,,,:::,:,:::,:,:::,:,::,,:,:,:,::,::,:::,:,,,:::,:::,:::,:,,,:,:::,:::::,:,:::,:,:,:::,:,:,:,,,: 
: ,:,,,:,,,:,:,::,,:,,,:,:,:,:,:,:,::,::::,:::::,:,,,:,:::::,:,:,,::,:,,,,::::::,,:,,:,::::,::,:,::,,:,:::::,:::,:::,:,,::,:::::,:,:,:,:::,,::,:,::::.
i :,:,:,:,:,,,:,:,:,:::,:,:,:,:,:::::,:,::,::::,,,,::,,,:,,::,:,:,:::,:,::::,,:,:,:,:::,:::,:::::::,,,:,:,:,:::,:,:::,:,:,,,:,:,,,:,:::,::,,,,:,:,::: 
: ,:,:::,:,:,:,:,:::,:,::,,:,,,:::::,,,:,:,,,:,:,:::,:::,,,:,:,:::::,:,:,,,:::,:,:,,,:,:::,:::::,:,:,:,,,:,:::,:::::::,:,:,,,:::,:,:,:::,:::::,:,:,::.
: :,:,::,,:,:,:,:,:,:,:,::,::::,:,:,,,:,:::,,,:,:,:,:,,:,,:,:,:,:,,,:::,:,::,,:,:,:::::::,:,:,:,:,:::,:,,:,::,:::,:,:,:,,,:,:,:,:,:,,,,::,,,:,:,:::,: 
: :::::,::,:,,,:::,:::,,::,:::::,:::::::,:,:,:,,,:,,,:::,,::,:,:,::,,:::,::::,::,:,:,:,:,:,,,:,:,:::,:::,:,:,:,:,:,:,:,:,:,::,,:,:,:,:::::,::::::::::.
: :,::,,:,:::::::,,::,:,:,:,,::,:,,,,::::::::::,,:,::,:::,:,,,:,:,:::,,,:,,::,,::,:,:,:,:,:,:,,,:::::,:,,,:,:,:,:::,:,:::,:,:,:::::,:,:,:,:,:::,:,,:: 
: ,:,:,,::,:,:,:,:,:,:::::,:,:,,,:::,:,:::,:,:,:,:,:::,,,,,:,:,:::,:::,:::::::::::::,:,,,:,:,:,:,:,:,:,,::,:,:,:::,,,:,:::,:,,,,,:,:,:,:,:,::,:,,,,::.
i :::::,:::,:::,:,:,::::,::,:,:,:,:,,,:,:,:,:,:::,:,:,:,:::,:,:,:,,,:::,,::,:,:::::,:,:,::,,,::,::,::,:,:,:,:,:,::,,:::,:,,::,:,,,:,:::,,,:::,,,:,:,: 
: ,:,:,:,,,:::,:,:,:,:::,:,:,:,:::,:,:::,:::,:,:,:,,,:,:,:,:::::,:,:::::,:,:,:,:,:,:,:::,:::,:,:,:::,:,:,:,:,:,:,:,:,:,:::,:::::,,,,::,:,:,:,:,:,:,:: 
i :,:,:,:::,:,:,:,:::,:::,:,,,:::,,:,,::,,:,::::,,:,:,:::,:,,,:,:,:::::::,,::::::::::::,:,::,,,::,:,:,:,:,:,:::::::,:,:::,:,:,,,:,:,:,:,:,:,::::,,,,: 
: ,:::,:,:,::,,:,:,:::::,:,:,:,,,:,:,:,,::,:,:,:,:::,:,:,:,:,,,:,:::,:,:::::,:,:,,,:,:,:::,:::,,,:::,::::,,:::,:,:::::::,:,:,:,:::::,:::,:,:,:,:,::::.
i :::,:,:::,:,:::,:,:,:,:,:,:::,:,,::::,:,:,:,:,:,:,:,,,:,:,:,:,:,:::,,,:,:,:,:,:,:::,:,:,:::::,:,:,,,:,:::,:::,:,:::,:::,:,,,:,:,,,:::,,,:,:,:,,,,,: 
: ::,,,:,:::,::,,,,:::,:::,:,:,,:::,::,:,::::,::,,::::,:,:::,:,:,,,:,,,:,:::::,,,:::::,:,:::,:,:,:,,,:,:::::,,,:,:,:,:::,:,:,:,,,:,:,:,:::,:,:::::,:,.
: :,:,:::,:,:,:,:::,:::::::,:,:,:,:,:,:::::::,:,:,:,:::,:,:::::,:,:,:::::,:,:::,:::::::::,:::,:,:::,:::,:::,:::::::::,:,:::::::,:,:,:::,:::,:::,:,::: 
: ::::::::::::::::::::::::::::::::,:::::::::::,:::::::::::,:::::::::::::::::::::::::::::::::::::,:::::::::::::::::::::::::::::,:::::,:,:::::::,::::::.
i . . . .     . . . . .     . . .   . . . . . . .       .   . .   . .   . . . . .   .   .     . .   . .   . . .     . . .   . .   .   . .   . . . . . 
