------------***---------***----------------------------
-----------*****-------*****----------------------------
----------*******-----*******---------------------------
---------*********---*********--------------------------
--------**********-**********--------------------------
--------*********************--------------------------
---------*******************---------------------------
----------*****************----------------------------
-----------***************-----------------------------
------------*************------------------------------
-------------***********-------------------------------
--------------*********--------------------------------
---------------*******---------------------------------
----------------*****----------------------------------
-----------------***-----------------------------------
------------------*------------------------------------