:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :******************************:::**********::::::***********: :*******************************::***********:::::***********: :********************************:************:::************: :::::*****::::::::*****::::*******:::*********::**********:::: :::::*****::::::::***************::::**********:*********::::: :::::*****::::::::**************:::::*********************:::: :::::*****::::::::**************:::::**************:******:::: :::::*****::::::::***************::::******:*******:*****::::: :::::*****::::::::*****::::*******:::******:******::******:::: :********************************:*********::****:::*********: :********************************:*********:::***:::*********: :******************************:::*********::::*::::*********: :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::