d8b          888                    888                             888                  
              Y8P          888                    888                             888                  
                           888                    888                             888                  
88888b.d88b.  888 .d8888b  888888 .d88b.  888d888 88888b.   8888b.  88888b.   .d88888  .d88b.  888d888 
888 "888 "88b 888 88K      888   d8P  Y8b 888P"   888 "88b     "88b 888 "88b d88" 888 d8P  Y8b 888P"   
888  888  888 888 "Y8888b. 888   88888888 888     888  888 .d888888 888  888 888  888 88888888 888     
888  888  888 888      X88 Y88b. Y8b.     888     888 d88P 888  888 888  888 Y88b 888 Y8b.     888     
888  888  888 888  88888P'  "Y888 "Y8888  888     88888P"  "Y888888 888  888  "Y88888  "Y8888  888