::: ::: :::::::::: ::: :::::::: :::::::: ::: ::: ::::::::::
:+: :+: :+: :+: :+: :+: :+: :+: :+:+: :+:+: :+:
+:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+:+ +:+ +:+
+#+ +:+ +#+ +#++:++# +#+ +#+ +#+ +:+ +#+ +:+ +#+ +#++:++#
+#+ +#+#+ +#+ +#+ +#+ +#+ +#+ +#+ +#+ +#+ +#+
#+#+# #+#+# #+# #+# #+# #+# #+# #+# #+# #+# #+#
### ### ########## ########## ######## ######## ### ### ##########