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