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