oooooooo dP""""""" d88888b. oooo d8b oooo oooo ooo ooo. .oo. .oo. `Y88b `888""8P `88. `88. .8' `888P"Y88bP"Y88b ]88 888 `88..]88..8' 888 888 888 o. .88P 888 `888'`888' 888 888 888 `8bd88P' d888b `8' `8' o888o o888o o888o