---++--+-+++-+-++-++++-++-+-+++-+--++-- -+++--+-+-+++++---+--+---+++++-+-+--+++ ----+++-++--++++-+-++-+-++++--++-+++--- ---++-+-+++++-++--++++--++-+++++-+-++--
