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