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