*********** **************** *** ******** *** ****** ******** ******** ** ********* ************ ***************** ** ************
********** ****** **** ** ***** ****** *** ***** ********** ** ****** *** ** ***** ** ****************** ******* ********* *** *** ***** ********** ** ******** ** *** ********* ***** ** **************** ***************
*** ******* *********** *** ** ******* *** *** **** *** ****** ******* ** ** ***** *** ******** ** ********** ** ************ ****** ****** ******** ******** ***********
*** ****** ******* ************ ****** ******* ********* ***** ******** *** *** ********** **** ** ******* ************** ** ******** ****** ** ************ *** ** ******* ** *************