:::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::