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