oooooooooo  oooooooo.    .ooooooo  oooooo.       .ooooo    .ooooooo
  8888888888  888888888b  d88888888  8888888b     d888888   d88888888
  888    888  888   .88P d8P    888  888 .88P    .8P  888  d8P    888
  888    888  888 .d8P'  88~~~~~888  888d888b.   88   888  88~~~~~888
  888    888  8888P~'    8888888888  888'  `88b o88ooo888o 8888888888
  888    888  888        Y8b    888  888888888P 888P~~Y888 Y8b    888
  ~~~    ~~~  ~~~         ~~'   ~~~  ~~~~~~~~'  ~~~    ~~~  ~~'   ~~~   =W.L.=
88~~~~~~~~~~88~~~~~~~~Y8888P~~~~~~~88~~~~~~Y8888888P~~~~~8888P~~~~~~~88
88          88         `88'        88       `88888'      888'        88
88   8888   88   888P  .8' .8888   88   8P  .8888P .88   88' .8888   88
88   8888   88   8P' .d88  ooooo   88   '   `Y888  888   88  ooooo   88
88   8888   88    .od8888          88   d88b  `8~  ~~~   ~8          88
88   8888   88   88888888. `8888   88         .8   .oo.   8. `8888   88
88ooo8888ooo88ooo888888888ood888ooo88ooooooood88ooo8888ooo88ood888ooo88