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