text: #!/usr/bin/env python3
  
  # Copyright (c) Facebook, Inc. and its affiliates.
  # This source code is licensed under the MIT license found in the
  # LICENSE file in the root directory of this source tree.
  
  import sys
  import time
  from parlai.scripts.script import ParlaiScript
  from parlai.core.params import ParlaiParser
  
  RESET = '\u001b[0m'
  CLEAR_SCREEN = "\u001b[2J\u001b[H"
  COLORS = [
      '\033[1;38;5;210m',  # peach
      '\033[1;38;5;222m',  # orange
      '\033[1;38;5;120m',  # green
      '\033[1;38;5;123m',  # cyan
      '\033[1;38;5;111m',  # blue
      '\033[1;38;5;134m',  # purple
      '\033[1;38;5;177m',  # pink
      '\033[1;38;5;207m',  # fuschia
      '\033[1;38;5;206m',  # magenta
      '\033[1;38;5;204m',  # red
  ]
  
  # Frames from https://github.com/jmhobbs/terminal-parrot/blob/master/data.go,
  # The MIT License (MIT)
  #
  # Copyright (c) 2016 John Hobbs
  #
  # Permission is hereby granted, free of charge, to any person obtaining a copy
  # of this software and associated documentation files (the "Software"), to deal
  # in the Software without restriction, including without limitation the rights
  # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  # copies of the Software, and to permit persons to whom the Software is
  # furnished to do so, subject to the following conditions:
  #
  # The above copyright notice and this permission notice shall be included in all
  # copies or substantial portions of the Software.
  #
  # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
  # SOFTWARE.
  
  
  FRAMES = """
                         .cccc;;cc;';c.
                        .,:dkdc:;;:c:,:d:.
                       .loc'.,cc::::::,..,:.
                     .cl;....;dkdccc::,...c;
                    .c:,';:'..ckc',;::;....;c.
                  .c:'.,dkkoc:ok:;llllc,,c,';:.
                 .;c,';okkkkkkkk:,lllll,:kd;.;:,.
                 co..:kkkkkkkkkk:;llllc':kkc..oNc
               .cl;.,okkkkkkkkkkc,:cll;,okkc'.cO;
               ;k:..ckkkkkkkkkkkl..,;,.;xkko:',l'
              .,...';dkkkkkkkkkkd;.....ckkkl'.cO;
           .,,:,.;oo:ckkkkkkkkkkkdoc;;cdkkkc..cd,
        .cclo;,ccdkkl;llccdkkkkkkkkkkkkkkkd,.c;
       .lol:;;okkkkkxooc::loodkkkkkkkkkkkko'.oc
     .c:'..lkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkd,.oc
    .lo;,ccdkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkd,.c;
  ,dx:..;lllllllllllllllllllllllllllllllloc'...
  cNO;........................................`,
  Z
                   .ckx;'........':c.
               .,:c:c:::oxxocoo::::,',.
              .odc'..:lkkoolllllo;..;d,
              ;c..:o:..;:..',;'.......;.
             ,c..:0Xx::o:.,cllc:,'::,.,c.
             ;c;lkXXXXXXl.;lllll;lXXOo;':c.
           ,dc.oXXXXXXXXl.,lllll;lXXXXx,c0:
           ;Oc.oXXXXXXXXo.':ll:;'oXXXXO;,l'
           'l;;OXXXXXXXXd'.'::'..dXXXXO;,l'
           'l;:0XXXXXXXX0x:...,:o0XXXXk,:x,
           'l;;kXXXXXXKXXXkol;oXXXXXXXO;oNc
          ,c'..ckk0XXXXXXXXXX00XXXXXXX0:;o:.
        .':;..:dd::ooooOXXXXXXXXXXXXXXXo..c;
      .',',:co0XX0kkkxx0XXXXXXXXXXXXXXX0c..;l.
    .:;'..oXXXXXXXXXXXXXXXXXXXXXXXXXXXXXko;';:.
  .cdc..:oOXXXXXXXXKXXXXXXXXXXXXXXXXXXXXXXo..oc
  :0o...:dxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxo,.:,
  cNo........................................;'`,
  Z
               .cc;.  ...  .;c.
           .,,cc:cc:lxxxl:ccc:;,.
          .lo;...lKKklllookl..cO;
        .cl;.,;'.okl;...'.;,..';:.
       .:o;;dkx,.ll..,cc::,..,'.;:,.
       co..lKKKkokl.':lllo;''ol..;dl.
     .,c;.,xKKKKKKo.':llll;.'oOxo,.cl,.
     cNo..lKKKKKKKo'';llll;;okKKKl..oNc
     cNo..lKKKKKKKko;':c:,'lKKKKKo'.oNc
     cNo..lKKKKKKKKKl.....'dKKKKKxc,l0:
     .c:'.lKKKKKKKKKk;....oKKKKKKo'.oNc
       ,:.,oxOKKKKKKKOxxxxOKKKKKKxc,;ol:.
       ;c..'':oookKKKKKKKKKKKKKKKKKk:.'clc.
     ,dl'.,oxo;'';oxOKKKKKKKKKKKKKKKOxxl::;,,.
    .dOc..lKKKkoooookKKKKKKKKKKKKKKKKKKKxl,;ol.
    cx,';okKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKl..;lc.
    co..:dddddddddddddddddddddddddddddddddl:;''::.
    co..........................................."`,
  Z
              .ccccccc.
        .,,,;cooolccol;;,,.
       .dOx;..;lllll;..;xOd.
     .cdo,',loOXXXXXkll;';odc.
    ,oo:;c,':oko:cccccc,...ckl.
    ;c.;kXo..::..;c::'.......oc
  ,dc..oXX0kk0o.':lll;..cxxc.,ld,
  kNo.'oXXXXXXo'':lll;..oXXOd;cOd.
  KOc;oOXXXXXXo.':lol,..dXXXXl';xc
  Ol,:k0XXXXXX0c.,clc'.:0XXXXx,.oc
  KOc;dOXXXXXXXl..';'..lXXXXXd..oc
  dNo..oXXXXXXXOx:..'lxOXXXXXk,.:; ..
  cNo..lXXXXXXXXXOolkXXXXXXXXXkl;..;:.;.
  .,;'.,dkkkkk0XXXXXXXXXXXXXXXXXOxxl;,;,;l:.
    ;c.;:''''':doOXXXXXXXXXXXXXXXXXXOdo;';clc.
    ;c.lOdood:'''oXXXXXXXXXXXXXXXXXXXXXk,..;ol.
    ';.:xxxxxocccoxxxxxxxxxxxxxxxxxxxxxxl::'.';;.
    ';........................................;l'`,
  Z
  
          .;:;;,.,;;::,.
       .;':;........'co:.
     .clc;'':cllllc::,.':c.
    .lo;;o:coxdlooollc;',::,,.
  .c:'.,cl,.'lc',,;;'......cO;
  do;';oxoc::l;;llllc'.';;'.';.
  c..ckkkkkkkd,;llllc'.:kkd;.':c.
  '.,okkkkkkkkc;llllc,.:kkkdl,cO;
  ..;xkkkkkkkkc,ccll:,;okkkkk:,cl,
  ..,dkkkkkkkkc..,;,'ckkkkkkkc;ll.
  ..'okkkkkkkko,....'okkkkkkkc,:c.
  c..ckkkkkkkkkdl;,:okkkkkkkkd,.',';.
  d..':lxkkkkkkkkxxkkkkkkkkkkkdoc;,;'..'.,.
  o...'';llllldkkkkkkkkkkkkkkkkkkdll;..'cdo.
  o..,l;'''''';dkkkkkkkkkkkkkkkkkkkkdlc,..;lc.
  o..;lc;;;;;;,,;clllllllllllllllllllllc'..,:c.
  o..........................................;'`,
  Z
  
             .,,,,,,,,,.
           .ckKxodooxOOdcc.
        .cclooc'....';;cool.
       .loc;;;;clllllc;;;;;:;,.
     .c:'.,okd;;cdo:::::cl,..oc
    .:o;';okkx;';;,';::;'....,;,.
    co..ckkkkkddk:,cclll;.,c:,:o:.
    co..ckkkkkkkk:,cllll;.:kkd,.':c.
  .,:;.,okkkkkkkk:,cclll;.:kkkdl;;o:.
  cNo..ckkkkkkkkko,.;llc,.ckkkkkc..oc
  ,dd;.:kkkkkkkkkx;..;:,.'lkkkkko,.:,
    ;c.ckkkkkkkkkkc.....;ldkkkkkk:.,'
  ,dc..'okkkkkkkkkxoc;;cxkkkkkkkkc..,;,.
  kNo..':lllllldkkkkkkkkkkkkkkkkkdcc,.;l.
  KOc,l;''''''';lldkkkkkkkkkkkkkkkkkc..;lc.
  xx:':;;;;,.,,...,;;cllllllllllllllc;'.;oo,
  cNo.....................................oc`,
  Z
  
  
                     .ccccccc.
                 .ccckNKOOOOkdcc.
              .;;cc:ccccccc:,::::,,.
           .c;:;.,cccllxOOOxlllc,;ol.
          .lkc,coxo:;oOOxooooooo;..:,
        .cdc.,dOOOc..cOd,.',,;'....':c.
        cNx'.lOOOOxlldOl..;lll;.....cO;
       ,do;,:dOOOOOOOOOl'':lll;..:d:.'c,
       co..lOOOOOOOOOOOl'':lll;.'lOd,.cd.
       co.,dOOOOOOOOOOOo,.;llc,.,dOOc..dc
       co..lOOOOOOOOOOOOc.';:,..cOOOl..oc
     .,:;.'::lxOOOOOOOOOo:'...,:oOOOc..dc
     ;Oc..cl'':llxOOOOOOOOdcclxOOOOx,.cd.
    .:;';lxl''''':lldOOOOOOOOOOOOOOc..oc
  ,dl,.'cooc:::,....,::coooooooooooc'.c:
  cNo.................................oc`,
  Z
  
  
  
                          .cccccccc.
                    .,,,;;cc:cccccc:;;,.
                  .cdxo;..,::cccc::,..;l.
                 ,oo:,,:c:cdxxdllll:;,';:,.
               .cl;.,oxxc'.,cc,.',;;'...oNc
               ;Oc..cxxxc'.,c;..;lll;...cO;
             .;;',:ldxxxdoldxc..;lll:'...'c,
             ;c..cxxxxkxxkxxxc'.;lll:'','.cdc.
           .c;.;odxxxxxxxxxxxd;.,cll;.,l:.'dNc
          .:,''ccoxkxxkxxxxxxx:..,:;'.:xc..oNc
        .lc,.'lc':dxxxkxxxxxxxdl,...',lx:..dNc
       .:,',coxoc;;ccccoxxxxxxxxo:::oxxo,.cdc.
    .;':;.'oxxxxxc''''';cccoxxxxxxxxxkxc..oc
  ,do:'..,:llllll:;;;;;;,..,;:lllllllll;..oc
  cNo.....................................oc`,
  Z
  
  
                                .ccccc.
                           .cc;'coooxkl;.
                       .:c:::c:,;,,,;c;;,.'.
                     .clc,',:,..:xxocc;...c;
                    .c:,';:ox:..:c,,,,,,...cd,
                  .c:'.,oxxxxl::l:.;loll;..;ol.
                  ;Oc..:xxxxxxxxx:.,llll,....oc
               .,;,',:loxxxxxxxxx:.,llll;.,;.'ld,
              .lo;..:xxxxxxxxxxxx:.'cllc,.:l:'cO;
             .:;...'cxxxxxxxxxxxxol;,::,..cdl;;l'
           .cl;':;'';oxxxxxxxxxxxxx:....,cooc,cO;
       .,,,::;,lxoc:,,:lxxxxxxxxxxxo:,,;lxxl;'oNc
     .cdxo;':lxxxxxxc'';cccccoxxxxxxxxxxxxo,.;lc.
    .loc'.'lxxxxxxxxocc;''''';ccoxxxxxxxxx:..oc
  occ'..',:cccccccccccc:;;;;;;;;:ccccccccc,.'c,
  Ol;......................................;l'`,
  Z
  
                                ,ddoodd,
                           .cc' ,ooccoo,'cc.
                        .ccldo;....,,...;oxdc.
                     .,,:cc;.''..;lol;;,'..lkl.
                    .dkc';:ccl;..;dl,.''.....oc
                  .,lc',cdddddlccld;.,;c::'..,cc:.
                  cNo..:ddddddddddd;':clll;,c,';xc
                 .lo;,clddddddddddd;':clll;:kc..;'
               .,:;..:ddddddddddddd:';clll;;ll,..
               ;Oc..';:ldddddddddddl,.,c:;';dd;..
             .''',:lc,'cdddddddddddo:,'...'cdd;..
           .cdc';lddd:';lddddddddddddd;.';lddl,..
        .,;::;,cdddddol;;lllllodddddddlcodddd:.'l,
       .dOc..,lddddddddlccc;'';cclddddddddddd;,ll.
     .coc,;::ldddddddddddddl:ccc:ldddddddddlc,ck;
  ,dl::,..,cccccccccccccccccccccccccccccccc:;':xx,
  cNd.........................................;lOc
  """.split(
      'Z'
  )
  
  
  class Party(ParlaiScript):
      @classmethod
      def setup_args(cls):
          return ParlaiParser(False, False)
  
      def run(self):
          i = 0
          while True:
              try:
                  frame = FRAMES[i % len(FRAMES)]
                  color = COLORS[i % len(COLORS)]
                  i += 1
                  sys.stdout.write(CLEAR_SCREEN)
                  sys.stdout.write(color)
                  sys.stdout.write('\n\n    ')
                  sys.stdout.write(frame.replace('\n', '\n    '))
                  sys.stdout.write(COLORS[(i * 3 + 1) % len(COLORS)])
                  sys.stdout.write('\n\n              P A R T Y    P A R R O T\n')
                  sys.stdout.write(RESET)
                  time.sleep(75 / 1000)
              except KeyboardInterrupt:
                  sys.stdout.write(RESET + '\n')
                  break
  
  
  if __name__ == '__main__':
      Party.main()
  