Hex Artifact Content
Not logged in

Artifact ad2b90ec831114bc4ef12d0e84c79bce1858b897:


0000: 23 21 2f 62 69 6e 2f 62 61 73 68 0a 47 46 4f 52  #!/bin/bash.GFOR
0010: 54 48 3d 24 7b 47 46 4f 52 54 48 3a 2d 67 66 6f  TH=${GFORTH:-gfo
0020: 72 74 68 7d 0a 63 6f 75 6e 74 3d 24 7b 63 6f 75  rth}.count=${cou
0030: 6e 74 3a 2d 31 30 30 7d 0a 77 68 69 6c 65 20 5b  nt:-100}.while [
0040: 20 22 24 31 22 20 21 3d 20 22 24 7b 31 23 2b 7d   "$1" != "${1#+}
0050: 22 20 5d 0a 64 6f 0a 20 20 20 20 64 65 62 75 67  " ].do.    debug
0060: 73 3d 22 24 64 65 62 75 67 73 20 24 31 22 0a 20  s="$debugs $1". 
0070: 20 20 20 73 68 69 66 74 0a 64 6f 6e 65 0a 72 6d     shift.done.rm
0080: 20 2d 72 66 20 63 68 61 74 2d 74 65 73 74 2e 64   -rf chat-test.d
0090: 0a 6d 6b 64 69 72 20 2d 70 20 63 68 61 74 2d 74  .mkdir -p chat-t
00a0: 65 73 74 2e 64 2f 2e 6e 65 74 32 6f 0a 63 64 20  est.d/.net2o.cd 
00b0: 63 68 61 74 2d 74 65 73 74 2e 64 0a 63 61 74 20  chat-test.d.cat 
00c0: 3e 2e 6e 65 74 32 6f 2f 63 6f 6e 66 69 67 20 3c  >.net2o/config <
00d0: 3c 45 4f 46 0a 2e 6e 65 74 32 6f 3d 22 24 50 57  <EOF..net2o="$PW
00e0: 44 2f 2e 6e 65 74 32 6f 22 0a 6b 65 79 73 3d 22  D/.net2o".keys="
00f0: 24 50 57 44 2f 2e 6e 65 74 32 6f 2f 6b 65 79 73  $PWD/.net2o/keys
0100: 22 0a 63 68 61 74 73 3d 22 24 50 57 44 2f 2e 6e  ".chats="$PWD/.n
0110: 65 74 32 6f 2f 63 68 61 74 73 22 0a 6f 62 6a 65  et2o/chats".obje
0120: 63 74 73 3d 22 24 50 57 44 2f 2e 6e 65 74 32 6f  cts="$PWD/.net2o
0130: 2f 6f 62 6a 65 63 74 73 22 0a 64 61 74 65 3d 5c  /objects".date=\
0140: 24 37 35 0a 68 6f 73 74 3d 22 74 65 73 74 2d 68  $75.host="test-h
0150: 6f 73 74 22 0a 70 72 69 6f 3d 31 30 0a 72 6f 6f  ost".prio=10.roo
0160: 74 64 69 72 73 3d 22 24 50 57 44 22 0a 45 4f 46  tdirs="$PWD".EOF
0170: 0a 65 78 70 6f 72 74 20 4e 45 54 32 4f 5f 43 4f  .export NET2O_CO
0180: 4e 46 3d 24 50 57 44 2f 2e 6e 65 74 32 6f 2f 63  NF=$PWD/.net2o/c
0190: 6f 6e 66 69 67 0a 50 41 53 53 50 48 52 41 53 45  onfig.PASSPHRASE
01a0: 3d 31 32 33 34 20 24 47 46 4f 52 54 48 20 2e 2e  =1234 $GFORTH ..
01b0: 2f 6e 32 6f 20 24 64 65 62 75 67 73 20 2d 79 65  /n2o $debugs -ye
01c0: 73 20 6b 65 79 67 65 6e 20 63 68 61 74 2d 74 65  s keygen chat-te
01d0: 73 74 31 0a 50 41 53 53 50 48 52 41 53 45 3d 32  st1.PASSPHRASE=2
01e0: 33 34 35 20 24 47 46 4f 52 54 48 20 2e 2e 2f 6e  345 $GFORTH ../n
01f0: 32 6f 20 24 64 65 62 75 67 73 20 2d 79 65 73 20  2o $debugs -yes 
0200: 6b 65 79 67 65 6e 20 63 68 61 74 2d 74 65 73 74  keygen chat-test
0210: 32 0a 50 41 53 53 50 48 52 41 53 45 3d 33 34 35  2.PASSPHRASE=345
0220: 36 20 24 47 46 4f 52 54 48 20 2e 2e 2f 6e 32 6f  6 $GFORTH ../n2o
0230: 20 24 64 65 62 75 67 73 20 2d 79 65 73 20 6b 65   $debugs -yes ke
0240: 79 67 65 6e 20 63 68 61 74 2d 74 65 73 74 33 0a  ygen chat-test3.
0250: 50 41 53 53 50 48 52 41 53 45 3d 34 35 36 37 20  PASSPHRASE=4567 
0260: 24 47 46 4f 52 54 48 20 2e 2e 2f 6e 32 6f 20 24  $GFORTH ../n2o $
0270: 64 65 62 75 67 73 20 2d 79 65 73 20 6b 65 79 67  debugs -yes keyg
0280: 65 6e 20 63 68 61 74 2d 74 65 73 74 34 0a 50 41  en chat-test4.PA
0290: 53 53 50 48 52 41 53 45 3d 34 33 32 31 20 24 47  SSPHRASE=4321 $G
02a0: 46 4f 52 54 48 20 2e 2e 2f 6e 32 6f 20 24 64 65  FORTH ../n2o $de
02b0: 62 75 67 73 20 2d 79 65 73 20 6b 65 79 67 65 6e  bugs -yes keygen
02c0: 20 63 68 61 74 2d 74 65 73 74 35 0a 50 41 53 53   chat-test5.PASS
02d0: 50 48 52 41 53 45 3d 35 34 33 32 20 24 47 46 4f  PHRASE=5432 $GFO
02e0: 52 54 48 20 2e 2e 2f 6e 32 6f 20 24 64 65 62 75  RTH ../n2o $debu
02f0: 67 73 20 2d 79 65 73 20 6b 65 79 67 65 6e 20 63  gs -yes keygen c
0300: 68 61 74 2d 74 65 73 74 36 0a 50 41 53 53 50 48  hat-test6.PASSPH
0310: 52 41 53 45 3d 36 35 34 33 20 24 47 46 4f 52 54  RASE=6543 $GFORT
0320: 48 20 2e 2e 2f 6e 32 6f 20 24 64 65 62 75 67 73  H ../n2o $debugs
0330: 20 2d 79 65 73 20 6b 65 79 67 65 6e 20 63 68 61   -yes keygen cha
0340: 74 2d 74 65 73 74 37 0a 50 41 53 53 50 48 52 41  t-test7.PASSPHRA
0350: 53 45 3d 37 36 35 34 20 24 47 46 4f 52 54 48 20  SE=7654 $GFORTH 
0360: 2e 2e 2f 6e 32 6f 20 24 64 65 62 75 67 73 20 2d  ../n2o $debugs -
0370: 79 65 73 20 6b 65 79 67 65 6e 20 63 68 61 74 2d  yes keygen chat-
0380: 74 65 73 74 38 0a 0a 50 41 53 53 50 48 52 41 53  test8..PASSPHRAS
0390: 45 3d 31 32 33 34 20 24 47 46 4f 52 54 48 20 2e  E=1234 $GFORTH .
03a0: 2e 2f 6e 32 6f 20 24 64 65 62 75 67 73 20 6b 65  ./n2o $debugs ke
03b0: 79 69 6e 20 7e 2f 63 68 61 74 2d 74 65 73 74 5b  yin ~/chat-test[
03c0: 32 2d 38 5d 2e 6e 32 6f 0a 50 41 53 53 50 48 52  2-8].n2o.PASSPHR
03d0: 41 53 45 3d 32 33 34 35 20 24 47 46 4f 52 54 48  ASE=2345 $GFORTH
03e0: 20 2e 2e 2f 6e 32 6f 20 24 64 65 62 75 67 73 20   ../n2o $debugs 
03f0: 6b 65 79 69 6e 20 7e 2f 63 68 61 74 2d 74 65 73  keyin ~/chat-tes
0400: 74 5b 31 33 2d 38 5d 2e 6e 32 6f 0a 50 41 53 53  t[13-8].n2o.PASS
0410: 50 48 52 41 53 45 3d 33 34 35 36 20 24 47 46 4f  PHRASE=3456 $GFO
0420: 52 54 48 20 2e 2e 2f 6e 32 6f 20 24 64 65 62 75  RTH ../n2o $debu
0430: 67 73 20 6b 65 79 69 6e 20 7e 2f 63 68 61 74 2d  gs keyin ~/chat-
0440: 74 65 73 74 5b 31 32 34 2d 38 5d 2e 6e 32 6f 0a  test[124-8].n2o.
0450: 50 41 53 53 50 48 52 41 53 45 3d 34 35 36 37 20  PASSPHRASE=4567 
0460: 24 47 46 4f 52 54 48 20 2e 2e 2f 6e 32 6f 20 24  $GFORTH ../n2o $
0470: 64 65 62 75 67 73 20 6b 65 79 69 6e 20 7e 2f 63  debugs keyin ~/c
0480: 68 61 74 2d 74 65 73 74 5b 31 2d 33 35 2d 38 5d  hat-test[1-35-8]
0490: 2e 6e 32 6f 0a 50 41 53 53 50 48 52 41 53 45 3d  .n2o.PASSPHRASE=
04a0: 34 33 32 31 20 24 47 46 4f 52 54 48 20 2e 2e 2f  4321 $GFORTH ../
04b0: 6e 32 6f 20 24 64 65 62 75 67 73 20 6b 65 79 69  n2o $debugs keyi
04c0: 6e 20 7e 2f 63 68 61 74 2d 74 65 73 74 5b 31 2d  n ~/chat-test[1-
04d0: 34 36 2d 38 5d 2e 6e 32 6f 0a 50 41 53 53 50 48  46-8].n2o.PASSPH
04e0: 52 41 53 45 3d 35 34 33 32 20 24 47 46 4f 52 54  RASE=5432 $GFORT
04f0: 48 20 2e 2e 2f 6e 32 6f 20 24 64 65 62 75 67 73  H ../n2o $debugs
0500: 20 6b 65 79 69 6e 20 7e 2f 63 68 61 74 2d 74 65   keyin ~/chat-te
0510: 73 74 5b 31 2d 35 37 38 5d 2e 6e 32 6f 0a 50 41  st[1-578].n2o.PA
0520: 53 53 50 48 52 41 53 45 3d 36 35 34 33 20 24 47  SSPHRASE=6543 $G
0530: 46 4f 52 54 48 20 2e 2e 2f 6e 32 6f 20 24 64 65  FORTH ../n2o $de
0540: 62 75 67 73 20 6b 65 79 69 6e 20 7e 2f 63 68 61  bugs keyin ~/cha
0550: 74 2d 74 65 73 74 5b 31 2d 36 38 5d 2e 6e 32 6f  t-test[1-68].n2o
0560: 0a 50 41 53 53 50 48 52 41 53 45 3d 37 36 35 34  .PASSPHRASE=7654
0570: 20 24 47 46 4f 52 54 48 20 2e 2e 2f 6e 32 6f 20   $GFORTH ../n2o 
0580: 24 64 65 62 75 67 73 20 6b 65 79 69 6e 20 7e 2f  $debugs keyin ~/
0590: 63 68 61 74 2d 74 65 73 74 5b 31 2d 37 5d 2e 6e  chat-test[1-7].n
05a0: 32 6f 0a 0a 66 75 6e 63 74 69 6f 6e 20 6b 69 6c  2o..function kil
05b0: 6c 67 66 6f 72 74 68 20 7b 0a 20 20 20 20 6b 69  lgforth {.    ki
05c0: 6c 6c 61 6c 6c 20 24 47 46 4f 52 54 48 0a 20 20  llall $GFORTH.  
05d0: 20 20 75 73 6c 65 65 70 20 31 30 30 30 30 30 0a    usleep 100000.
05e0: 20 20 20 20 6b 69 6c 6c 61 6c 6c 20 2d 39 20 24      killall -9 $
05f0: 47 46 4f 52 54 48 0a 7d 0a 74 72 61 70 20 6b 69  GFORTH.}.trap ki
0600: 6c 6c 67 66 6f 72 74 68 20 45 58 49 54 0a 0a 65  llgforth EXIT..e
0610: 78 70 6f 72 74 20 50 41 53 53 50 48 52 41 53 45  xport PASSPHRASE
0620: 3d 31 32 33 34 0a 65 78 65 63 20 33 3e 20 3e 28  =1234.exec 3> >(
0630: 24 47 46 4f 52 54 48 20 2e 2e 2f 6e 32 6f 20 24  $GFORTH ../n2o $
0640: 64 65 62 75 67 73 20 24 2a 20 63 68 61 74 20 74  debugs $* chat t
0650: 65 73 74 20 3e 6d 73 67 2d 74 65 73 74 2e 6f 75  est >msg-test.ou
0660: 74 2e 31 29 0a 65 78 70 6f 72 74 20 47 46 4f 52  t.1).export GFOR
0670: 54 48 50 49 44 31 3d 24 5b 24 21 2b 31 5d 0a 73  THPID1=$[$!+1].s
0680: 6c 65 65 70 20 35 0a 65 78 70 6f 72 74 20 50 41  leep 5.export PA
0690: 53 53 50 48 52 41 53 45 3d 32 33 34 35 0a 65 78  SSPHRASE=2345.ex
06a0: 65 63 20 34 3e 20 3e 28 24 47 46 4f 52 54 48 20  ec 4> >($GFORTH 
06b0: 2e 2e 2f 6e 32 6f 20 24 64 65 62 75 67 73 20 31  ../n2o $debugs 1
06c0: 30 25 20 24 2a 20 63 68 61 74 20 74 65 73 74 40  0% $* chat test@
06d0: 63 68 61 74 2d 74 65 73 74 31 20 3e 6d 73 67 2d  chat-test1 >msg-
06e0: 74 65 73 74 2e 6f 75 74 2e 32 29 0a 65 78 70 6f  test.out.2).expo
06f0: 72 74 20 47 46 4f 52 54 48 50 49 44 32 3d 24 5b  rt GFORTHPID2=$[
0700: 24 21 2b 31 5d 0a 73 6c 65 65 70 20 32 0a 0a 78  $!+1].sleep 2..x
0710: 3d 22 22 0a 0a 66 6f 72 20 69 20 69 6e 20 24 28  =""..for i in $(
0720: 73 65 71 20 31 20 24 63 6f 75 6e 74 29 0a 64 6f  seq 1 $count).do
0730: 0a 20 20 20 20 65 63 68 6f 20 22 50 68 61 73 65  .    echo "Phase
0740: 20 31 3a 20 54 65 73 74 20 4d 65 73 73 61 67 65   1: Test Message
0750: 20 24 69 20 6f 6e 20 31 2f 32 20 24 78 22 20 3e   $i on 1/2 $x" >
0760: 26 33 0a 20 20 20 20 75 73 6c 65 65 70 20 32 30  &3.    usleep 20
0770: 30 30 30 0a 20 20 20 20 65 63 68 6f 20 22 50 68  000.    echo "Ph
0780: 61 73 65 20 31 3a 20 54 65 73 74 20 4d 65 73 73  ase 1: Test Mess
0790: 61 67 65 20 24 69 20 6f 6e 20 32 2f 32 20 24 78  age $i on 2/2 $x
07a0: 22 20 3e 26 34 0a 20 20 20 20 75 73 6c 65 65 70  " >&4.    usleep
07b0: 20 32 30 30 30 30 0a 20 20 20 20 78 3d 22 78 24   20000.    x="x$
07c0: 78 22 0a 20 20 20 20 63 61 73 65 20 24 69 20 69  x".    case $i i
07d0: 6e 0a 09 2a 30 29 0a 09 20 20 20 20 73 6c 65 65  n..*0)..    slee
07e0: 70 20 32 0a 09 20 20 20 20 3b 3b 0a 20 20 20 20  p 2..    ;;.    
07f0: 65 73 61 63 0a 64 6f 6e 65 0a 0a 65 78 65 63 20  esac.done..exec 
0800: 35 3e 20 3e 28 50 41 53 53 50 48 52 41 53 45 3d  5> >(PASSPHRASE=
0810: 33 34 35 36 20 24 47 46 4f 52 54 48 20 2e 2e 2f  3456 $GFORTH ../
0820: 6e 32 6f 20 24 64 65 62 75 67 73 20 35 25 20 24  n2o $debugs 5% $
0830: 2a 20 63 68 61 74 20 74 65 73 74 40 63 68 61 74  * chat test@chat
0840: 2d 74 65 73 74 31 20 3e 6d 73 67 2d 74 65 73 74  -test1 >msg-test
0850: 2e 6f 75 74 2e 33 29 0a 65 78 70 6f 72 74 20 47  .out.3).export G
0860: 46 4f 52 54 48 50 49 44 33 3d 24 5b 24 21 2b 31  FORTHPID3=$[$!+1
0870: 5d 0a 65 78 65 63 20 36 3e 20 3e 28 50 41 53 53  ].exec 6> >(PASS
0880: 50 48 52 41 53 45 3d 34 35 36 37 20 24 47 46 4f  PHRASE=4567 $GFO
0890: 52 54 48 20 2e 2e 2f 6e 32 6f 20 24 64 65 62 75  RTH ../n2o $debu
08a0: 67 73 20 31 35 25 20 24 2a 20 63 68 61 74 20 74  gs 15% $* chat t
08b0: 65 73 74 40 63 68 61 74 2d 74 65 73 74 32 20 3e  est@chat-test2 >
08c0: 6d 73 67 2d 74 65 73 74 2e 6f 75 74 2e 34 29 0a  msg-test.out.4).
08d0: 65 78 70 6f 72 74 20 47 46 4f 52 54 48 50 49 44  export GFORTHPID
08e0: 34 3d 24 5b 24 21 2b 31 5d 0a 65 78 65 63 20 37  4=$[$!+1].exec 7
08f0: 3e 20 3e 28 50 41 53 53 50 48 52 41 53 45 3d 34  > >(PASSPHRASE=4
0900: 33 32 31 20 24 47 46 4f 52 54 48 20 2e 2e 2f 6e  321 $GFORTH ../n
0910: 32 6f 20 24 64 65 62 75 67 73 20 35 25 20 24 2a  2o $debugs 5% $*
0920: 20 63 68 61 74 20 74 65 73 74 40 63 68 61 74 2d   chat test@chat-
0930: 74 65 73 74 31 20 3e 6d 73 67 2d 74 65 73 74 2e  test1 >msg-test.
0940: 6f 75 74 2e 35 29 0a 65 78 70 6f 72 74 20 47 46  out.5).export GF
0950: 4f 52 54 48 50 49 44 35 3d 24 5b 24 21 2b 31 5d  ORTHPID5=$[$!+1]
0960: 0a 65 78 65 63 20 38 3e 20 3e 28 50 41 53 53 50  .exec 8> >(PASSP
0970: 48 52 41 53 45 3d 35 34 33 32 20 24 47 46 4f 52  HRASE=5432 $GFOR
0980: 54 48 20 2e 2e 2f 6e 32 6f 20 24 64 65 62 75 67  TH ../n2o $debug
0990: 73 20 31 35 25 20 24 2a 20 63 68 61 74 20 74 65  s 15% $* chat te
09a0: 73 74 40 63 68 61 74 2d 74 65 73 74 32 20 3e 6d  st@chat-test2 >m
09b0: 73 67 2d 74 65 73 74 2e 6f 75 74 2e 36 29 0a 65  sg-test.out.6).e
09c0: 78 70 6f 72 74 20 47 46 4f 52 54 48 50 49 44 36  xport GFORTHPID6
09d0: 3d 24 5b 24 21 2b 31 5d 0a 65 78 65 63 20 39 3e  =$[$!+1].exec 9>
09e0: 20 3e 28 50 41 53 53 50 48 52 41 53 45 3d 36 35   >(PASSPHRASE=65
09f0: 34 33 20 24 47 46 4f 52 54 48 20 2e 2e 2f 6e 32  43 $GFORTH ../n2
0a00: 6f 20 24 64 65 62 75 67 73 20 35 25 20 24 2a 20  o $debugs 5% $* 
0a10: 63 68 61 74 20 74 65 73 74 40 63 68 61 74 2d 74  chat test@chat-t
0a20: 65 73 74 31 20 3e 6d 73 67 2d 74 65 73 74 2e 6f  est1 >msg-test.o
0a30: 75 74 2e 37 29 0a 65 78 70 6f 72 74 20 47 46 4f  ut.7).export GFO
0a40: 52 54 48 50 49 44 37 3d 24 5b 24 21 2b 31 5d 0a  RTHPID7=$[$!+1].
0a50: 65 78 65 63 20 31 30 3e 20 3e 28 50 41 53 53 50  exec 10> >(PASSP
0a60: 48 52 41 53 45 3d 37 36 35 34 20 24 47 46 4f 52  HRASE=7654 $GFOR
0a70: 54 48 20 2e 2e 2f 6e 32 6f 20 24 64 65 62 75 67  TH ../n2o $debug
0a80: 73 20 31 35 25 20 24 2a 20 63 68 61 74 20 74 65  s 15% $* chat te
0a90: 73 74 40 63 68 61 74 2d 74 65 73 74 32 20 3e 6d  st@chat-test2 >m
0aa0: 73 67 2d 74 65 73 74 2e 6f 75 74 2e 38 29 0a 65  sg-test.out.8).e
0ab0: 78 70 6f 72 74 20 47 46 4f 52 54 48 50 49 44 38  xport GFORTHPID8
0ac0: 3d 24 5b 24 21 2b 31 5d 0a 73 6c 65 65 70 20 32  =$[$!+1].sleep 2
0ad0: 0a 0a 23 65 63 68 6f 20 22 2f 73 79 6e 63 22 20  ..#echo "/sync" 
0ae0: 3e 26 35 0a 0a 23 73 6c 65 65 70 20 31 0a 0a 66  >&5..#sleep 1..f
0af0: 6f 72 20 6a 20 69 6e 20 24 28 73 65 71 20 31 20  or j in $(seq 1 
0b00: 34 29 0a 64 6f 0a 20 20 20 20 78 3d 22 22 0a 20  4).do.    x="". 
0b10: 20 20 20 0a 20 20 20 20 66 6f 72 20 69 20 69 6e     .    for i in
0b20: 20 24 28 73 65 71 20 31 20 24 63 6f 75 6e 74 29   $(seq 1 $count)
0b30: 0a 20 20 20 20 64 6f 0a 09 65 63 68 6f 20 22 50  .    do..echo "P
0b40: 68 61 73 65 20 32 3a 20 54 65 73 74 20 4d 65 73  hase 2: Test Mes
0b50: 73 61 67 65 20 24 69 2f 24 6a 20 6f 6e 20 31 2f  sage $i/$j on 1/
0b60: 34 20 24 78 22 20 3e 26 33 0a 09 75 73 6c 65 65  4 $x" >&3..uslee
0b70: 70 20 32 30 30 30 30 0a 09 65 63 68 6f 20 22 50  p 20000..echo "P
0b80: 68 61 73 65 20 32 3a 20 54 65 73 74 20 4d 65 73  hase 2: Test Mes
0b90: 73 61 67 65 20 24 69 2f 24 6a 20 6f 6e 20 32 2f  sage $i/$j on 2/
0ba0: 34 20 24 78 22 20 3e 26 34 0a 09 75 73 6c 65 65  4 $x" >&4..uslee
0bb0: 70 20 32 30 30 30 30 0a 09 65 63 68 6f 20 22 50  p 20000..echo "P
0bc0: 68 61 73 65 20 32 3a 20 54 65 73 74 20 4d 65 73  hase 2: Test Mes
0bd0: 73 61 67 65 20 24 69 2f 24 6a 20 6f 6e 20 33 2f  sage $i/$j on 3/
0be0: 34 20 24 78 22 20 3e 26 35 0a 09 75 73 6c 65 65  4 $x" >&5..uslee
0bf0: 70 20 32 30 30 30 30 0a 09 65 63 68 6f 20 22 50  p 20000..echo "P
0c00: 68 61 73 65 20 32 3a 20 54 65 73 74 20 4d 65 73  hase 2: Test Mes
0c10: 73 61 67 65 20 24 69 2f 24 6a 20 6f 6e 20 34 2f  sage $i/$j on 4/
0c20: 34 20 24 78 22 20 3e 26 36 0a 09 75 73 6c 65 65  4 $x" >&6..uslee
0c30: 70 20 32 30 30 30 30 0a 09 78 3d 22 78 24 78 22  p 20000..x="x$x"
0c40: 0a 09 63 61 73 65 20 24 69 20 69 6e 0a 09 20 20  ..case $i in..  
0c50: 20 20 2a 5b 30 35 5d 29 0a 09 09 73 6c 65 65 70    *[05])...sleep
0c60: 20 32 0a 09 09 3b 3b 0a 09 65 73 61 63 0a 20 20   2...;;..esac.  
0c70: 20 20 64 6f 6e 65 0a 20 20 20 20 0a 20 20 20 20    done.    .    
0c80: 65 63 68 6f 20 22 2f 62 79 65 22 20 3e 26 36 0a  echo "/bye" >&6.
0c90: 20 20 20 20 73 6c 65 65 70 20 33 0a 20 20 20 20      sleep 3.    
0ca0: 0a 20 20 20 20 78 3d 22 22 0a 0a 20 20 20 20 66  .    x=""..    f
0cb0: 6f 72 20 69 20 69 6e 20 24 28 73 65 71 20 31 20  or i in $(seq 1 
0cc0: 24 63 6f 75 6e 74 29 0a 20 20 20 20 64 6f 0a 09  $count).    do..
0cd0: 65 63 68 6f 20 22 50 68 61 73 65 20 33 3a 20 54  echo "Phase 3: T
0ce0: 65 73 74 20 4d 65 73 73 61 67 65 20 24 69 2f 24  est Message $i/$
0cf0: 6a 20 6f 6e 20 31 2f 33 20 24 78 22 20 3e 26 33  j on 1/3 $x" >&3
0d00: 0a 09 75 73 6c 65 65 70 20 32 30 30 30 30 0a 09  ..usleep 20000..
0d10: 65 63 68 6f 20 22 50 68 61 73 65 20 33 3a 20 54  echo "Phase 3: T
0d20: 65 73 74 20 4d 65 73 73 61 67 65 20 24 69 2f 24  est Message $i/$
0d30: 6a 20 6f 6e 20 32 2f 33 20 24 78 22 20 3e 26 34  j on 2/3 $x" >&4
0d40: 0a 09 75 73 6c 65 65 70 20 32 30 30 30 30 0a 09  ..usleep 20000..
0d50: 65 63 68 6f 20 22 50 68 61 73 65 20 33 3a 20 54  echo "Phase 3: T
0d60: 65 73 74 20 4d 65 73 73 61 67 65 20 24 69 2f 24  est Message $i/$
0d70: 6a 20 6f 6e 20 33 2f 33 20 24 78 22 20 3e 26 35  j on 3/3 $x" >&5
0d80: 0a 09 75 73 6c 65 65 70 20 32 30 30 30 30 0a 09  ..usleep 20000..
0d90: 78 3d 22 79 24 78 22 0a 09 63 61 73 65 20 24 69  x="y$x"..case $i
0da0: 20 69 6e 0a 09 20 20 20 20 2a 5b 30 35 5d 29 0a   in..    *[05]).
0db0: 09 09 73 6c 65 65 70 20 32 0a 09 09 3b 3b 0a 09  ..sleep 2...;;..
0dc0: 65 73 61 63 0a 20 20 20 20 64 6f 6e 65 0a 0a 20  esac.    done.. 
0dd0: 20 20 20 65 78 65 63 20 36 3e 20 3e 28 24 47 46     exec 6> >($GF
0de0: 4f 52 54 48 20 2e 2e 2f 6e 32 6f 20 24 64 65 62  ORTH ../n2o $deb
0df0: 75 67 73 20 31 35 25 20 24 2a 20 63 68 61 74 20  ugs 15% $* chat 
0e00: 74 65 73 74 40 63 68 61 74 2d 74 65 73 74 32 20  test@chat-test2 
0e10: 3e 3e 6d 73 67 2d 74 65 73 74 2e 6f 75 74 2e 34  >>msg-test.out.4
0e20: 29 0a 20 20 20 20 65 78 70 6f 72 74 20 47 46 4f  ).    export GFO
0e30: 52 54 48 50 49 44 35 3d 24 5b 24 21 2b 31 5d 0a  RTHPID5=$[$!+1].
0e40: 20 20 20 20 73 6c 65 65 70 20 35 0a 64 6f 6e 65      sleep 5.done
0e50: 0a 0a 65 63 68 6f 20 22 4c 61 73 74 20 4d 65 73  ..echo "Last Mes
0e60: 73 61 67 65 20 24 69 20 6f 6e 20 31 2f 38 20 24  sage $i on 1/8 $
0e70: 78 22 20 3e 26 33 0a 75 73 6c 65 65 70 20 32 30  x" >&3.usleep 20
0e80: 30 30 30 0a 65 63 68 6f 20 22 4c 61 73 74 20 4d  000.echo "Last M
0e90: 65 73 73 61 67 65 20 24 69 20 6f 6e 20 32 2f 38  essage $i on 2/8
0ea0: 20 24 78 22 20 3e 26 34 0a 75 73 6c 65 65 70 20   $x" >&4.usleep 
0eb0: 32 30 30 30 30 0a 65 63 68 6f 20 22 4c 61 73 74  20000.echo "Last
0ec0: 20 4d 65 73 73 61 67 65 20 24 69 20 6f 6e 20 33   Message $i on 3
0ed0: 2f 38 20 24 78 22 20 3e 26 35 0a 75 73 6c 65 65  /8 $x" >&5.uslee
0ee0: 70 20 32 30 30 30 30 0a 65 63 68 6f 20 22 4c 61  p 20000.echo "La
0ef0: 73 74 20 4d 65 73 73 61 67 65 20 24 69 20 6f 6e  st Message $i on
0f00: 20 34 2f 38 20 24 78 22 20 3e 26 36 0a 75 73 6c   4/8 $x" >&6.usl
0f10: 65 65 70 20 32 30 30 30 30 0a 65 63 68 6f 20 22  eep 20000.echo "
0f20: 4c 61 73 74 20 4d 65 73 73 61 67 65 20 24 69 20  Last Message $i 
0f30: 6f 6e 20 35 2f 38 20 24 78 22 20 3e 26 37 0a 75  on 5/8 $x" >&7.u
0f40: 73 6c 65 65 70 20 32 30 30 30 30 0a 65 63 68 6f  sleep 20000.echo
0f50: 20 22 4c 61 73 74 20 4d 65 73 73 61 67 65 20 24   "Last Message $
0f60: 69 20 6f 6e 20 36 2f 38 20 24 78 22 20 3e 26 38  i on 6/8 $x" >&8
0f70: 0a 75 73 6c 65 65 70 20 32 30 30 30 30 0a 65 63  .usleep 20000.ec
0f80: 68 6f 20 22 4c 61 73 74 20 4d 65 73 73 61 67 65  ho "Last Message
0f90: 20 24 69 20 6f 6e 20 37 2f 38 20 24 78 22 20 3e   $i on 7/8 $x" >
0fa0: 26 39 0a 75 73 6c 65 65 70 20 32 30 30 30 30 0a  &9.usleep 20000.
0fb0: 65 63 68 6f 20 22 4c 61 73 74 20 4d 65 73 73 61  echo "Last Messa
0fc0: 67 65 20 24 69 20 6f 6e 20 38 2f 38 20 24 78 22  ge $i on 8/8 $x"
0fd0: 20 3e 26 31 30 0a 75 73 6c 65 65 70 20 32 30 30   >&10.usleep 200
0fe0: 30 30 0a 0a 65 63 68 6f 20 22 2f 73 79 6e 63 22  00..echo "/sync"
0ff0: 20 3e 26 36 0a 65 63 68 6f 20 22 2f 63 68 61 74   >&6.echo "/chat
1000: 73 22 20 3e 26 31 30 0a 73 6c 65 65 70 20 33 0a  s" >&10.sleep 3.
1010: 65 63 68 6f 20 22 2f 62 79 65 22 20 3e 26 31 30  echo "/bye" >&10
1020: 0a 65 63 68 6f 20 22 2f 63 68 61 74 73 22 20 3e  .echo "/chats" >
1030: 26 39 0a 73 6c 65 65 70 20 33 0a 65 63 68 6f 20  &9.sleep 3.echo 
1040: 22 2f 62 79 65 22 20 3e 26 39 0a 65 63 68 6f 20  "/bye" >&9.echo 
1050: 22 2f 63 68 61 74 73 22 20 3e 26 38 0a 73 6c 65  "/chats" >&8.sle
1060: 65 70 20 33 0a 65 63 68 6f 20 22 2f 62 79 65 22  ep 3.echo "/bye"
1070: 20 3e 26 38 0a 65 63 68 6f 20 22 2f 63 68 61 74   >&8.echo "/chat
1080: 73 22 20 3e 26 37 0a 73 6c 65 65 70 20 33 0a 65  s" >&7.sleep 3.e
1090: 63 68 6f 20 22 2f 62 79 65 22 20 3e 26 37 0a 65  cho "/bye" >&7.e
10a0: 63 68 6f 20 22 2f 63 68 61 74 73 22 20 3e 26 35  cho "/chats" >&5
10b0: 0a 73 6c 65 65 70 20 33 0a 65 63 68 6f 20 22 2f  .sleep 3.echo "/
10c0: 62 79 65 22 20 3e 26 35 0a 65 63 68 6f 20 22 2f  bye" >&5.echo "/
10d0: 63 68 61 74 73 22 20 3e 26 34 0a 73 6c 65 65 70  chats" >&4.sleep
10e0: 20 33 0a 65 63 68 6f 20 22 2f 62 79 65 22 20 3e   3.echo "/bye" >
10f0: 26 34 0a 65 63 68 6f 20 22 2f 63 68 61 74 73 22  &4.echo "/chats"
1100: 20 3e 26 33 0a 73 6c 65 65 70 20 33 0a 65 63 68   >&3.sleep 3.ech
1110: 6f 20 22 2f 62 79 65 22 20 3e 26 33 0a 65 63 68  o "/bye" >&3.ech
1120: 6f 20 22 2f 63 68 61 74 73 22 20 3e 26 36 0a 73  o "/chats" >&6.s
1130: 6c 65 65 70 20 33 0a 65 63 68 6f 20 22 2f 62 79  leep 3.echo "/by
1140: 65 22 20 3e 26 36 0a 73 6c 65 65 70 20 35 0a     e" >&6.sleep 5.