::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::–:::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::–:::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::.:::::::::::::–:::::::::::::.:::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::.-:::::::::::–::::::::::::.-:::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::.-::::::::::-.::::::::::-.:::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::.-:::::::::-.:::::::::-.::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::.-::::::::..::::::::-.:::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::-:::::::::::::::..:::::::..:::::::..:::::::::::::::-::::::::::::::::::::::
::::::::::::::::::::::::—-:::::::::::::..::::::..::::::..:::::::::::::—-::::::::::::::::::::::
::::::::::::::::::::::::::::–.-::::::::::-`:::::..:::::.-::::::::::—-::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::-..-::::::::-`-:::..:::-`-::::::::-..-:::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::-…-:::::-`-::..::-`-:::::-…-::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::-..-::::`-:..:-`::::-..-::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::-…-:`…-`:-…-:::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::-…““…-::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::———.….….….…..` `.….….….…..———::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::-…““…-::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::-..-::`-..-`-:-..-:::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::-…-:::-`-:..:-`-:::-…-:::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::-..-::::::-`-::..::-`-::::::-..-::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::-..-::::::::-`::::..::::`-::::::::-..-:::::::::::::::::::::::::::::
:::::::::::::::::::::::::::–.-:::::::::::..:::::..:::::..:::::::::::-.–:::::::::::::::::::::::::
::::::::::::::::::::::::—-:::::::::::::..::::::..::::::..:::::::::::::—-::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::..:::::::..:::::::-.::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::.-::::::::..::::::::-.:::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::.-:::::::::-.:::::::::-.::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::.-::::::::::-.:::::::::::.-::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::-.::::::::::::–::::::::::::.-:::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::.:::::::::::::–:::::::::::::.:::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::–:::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::–:::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::