.d88+"" .d88888888P"         "8888b.      `88.       88  .d88bn.    ...
.d88"   .88' .d88P"              `+888b.     `88.      88  88 `q88  ,d888bn.
888'   dP" .d8P"   ..nnd8888888b.. `"+88b.    `+8b.    88  88. ,88  88"" `88.
888   d8'.d8"   .d88888888888888888b. `"+8b.    `+8b.  88  "+8888P  88.   d88.
888   888p"  .d8888+"                    `"+8b.   `+8b.88     "b.   `88. d8888
888   88"  .d888P"   ..nd8888888888b .nn..   "8b.   `"888 b.   `8b.  `88 `888P
`88.  8'  .888P"  ,d8888888888888+"  88888bn.  `+b.   `88 `8b.  `88.  88  `""
 `"q  '   888"   d8888P"              `"+8888b.  `+b.  88  `88.  `88. 88
  ...     8P'   d888"  .d888n. d888bn.   `"+888b.  `8b.88   888.  `8b.p'
d8888b  . 8    d888' .d8888888b `"+8888b.   `8888.  `8888   8888.  `8b  ,d8n.
88""888 ,8.    .888'  8888"          `"888b.  `8888.  `888   8888b   88  88888b
88  `8' 888.   888'   888' .nd88888bn.  "888.  `8888   888   88888   88  888' 8
88.     8888   88'    888  88888888888b  `888   8888   888   8888P   88  888  8
`88.    8888   8'     888  `888   `"888   888   8888   888   888P   d88  888.dP
`88.   8888   P .    888.   "8    .888   888   8888   888   8P'  .d88'  `88p'
 `88.  8888    ,8b.  `888b     .nd888P  .88'   8888   888   "   d888P    d8 ,d
d. `88. `888    8888.  `+888  d888888"  .8+'    8888   888     .d888'    .8'.8P
88. `8b. `q' b  `8888b..  `"' "+88+"  ..        8888   888   .d888P'     88 8P'
888. `88.    8b. `+88888bn..       ,d888.    .  888'  .888  .8888"  b.   88.j'
8888. `88.   888.  `"888888888888888888"   .d8  88'  .8888  8888'   8b.  `88.
'8888. `88b. `888b.    `"+8888888888+"'  .nd88  '   .8888'  8888    888   `88.
`+888  `888. `8888b..                ..d8888'    .d8888'   8888.   888    888
  `+8   8888  `+888888888888'    ..nd88888+'   .d88888'  d.`8888.  `88   .888
    `   8888     `"+88888+"  .nd888888++"    .d88888P' .88b `8888.  `q  .888'
        8888                              .d8888888' .n8888. `8888.   .d888'