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