$ od -c -N 50000 [Indigo]<Alto-1822>PupTest.dm!1
0000000  377  \0  \0   P   u   p   T   e   s   t   .   d   e   c   l  \0
0000020  373 224 024 026 327  \0  \0 376 001  \0 373 260   /   /       P
0000040    u   p   T   e   s   t   .   d   e   c   l       -       c   o
0000060    m   m   o   n       s   t   u   f   f       w   i   t   h    
0000100    P   u   p   C   o   n   t   r   o   l  \r   /   /       C   o
0000120    p   y   r   i   g   h   t       X   e   r   o   x       C   o
0000140    r   p   o   r   a   t   i   o   n       1   9   7   9  \r   /
0000160    /       L   a   s   t       m   o   d   i   f   i   e   d    
0000200    D   e   c   e   m   b   e   r       2   6   ,       1   9   7
0000220    8           1   0   :   0   4       P   M       b   y       B
0000240    o   g   g   s  \r  \r   /   /   -   -   -   -   -   -   -   -
0000260    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0000360    -   -   -   -  \r   m   a   n   i   f   e   s   t  \r   /   /
0000400    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0000420    -   -   -   -   -   -   -   -   -   -   -   - 376 001  \0 274
0000440  016   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0000460    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0000520    -  \r   [  \r   s   o   c   k   e   t   P   u   p   C   o   n
0000540    t   r   o   l       =       2   6   b  \r  \r   t   y   p   e
0000560    C   m   m   d       =       2   0   0   b  \r   t   y   p   e
0000600    O   K       =       2   0   1   b  \r   t   y   p   e   K   i
0000620    s   s   O   f   D   e   a   t   h       =       2   4   7   b
0000640   \r  \r   s   t   a   t   e   S   t   o   p       =       0  \r
0000660    s   t   a   t   e   B   S   P       =       4  \r   s   t   a
0000700    t   e   E   F   T   P       =       5  \r  \r   t   r   y   H
0000720    a   r   d       =       2   5  \r   t   r   y   S   o   f   t
0000740        =       1  \r  \r   m   a   x   H   o   s   t   s       =
0000760        2   4  \r  \r   c   o   l   N   e   t   H   o   s   t    
0001000    =  \t   2   b   1   4       +       6   b   1   0       +    
0001020    1   0  \r   c   o   l   P   a   r   t   n   e   r       =  \t
0001040    2 376 001  \0 352 357   b   1   4       +       6   b   1   0
0001060        +       7   0  \r   c   o   l   D   e   a   d       =  \t
0001100    1   b   1   4       +       1   b   1   0       +       1   3
0001120    0  \r   c   o   l   S   t   a   t   e       =  \t   1   b   1
0001140    4       +       6   b   1   0       +       1   4   0  \r   c
0001160    o   l   C   h   k   s   m       =  \t   3   b   1   4       +
0001200        5   b   1   0       +       2   0   0  \r   c   o   l   D
0001220    a   t   a       =  \t   3   b   1   4       +       5   b   1
0001240    0       +       2   5   0  \r   c   o   l   O   v   l   p    
0001260    =      \t   3   b   1   4       +       5   b   1   0       +
0001300        3   0   0  \r   c   o   l   T   h   r   u   p   u   t    
0001320    =  \t   0   b   1   4       +       7   b   1   0       +    
0001340    4   0   0  \r   c   o   l   A   T   h   r   u   p   u   t    
0001360    =  \t   0   b   1   4       +       7   b   1   0       +    
0001400    4   7   0  \r  \r   b   f   n   D   M   T       =       1   7
0001420    7   7   7   6   b  \r   b   f   n   P   u   p   T   e   s   t
0001440        =       1   7   7 376 001  \0 371 342   7   7   7   b  \r
0001460   \r   m   u   l       =       (   a   l   t   o   ?       6   1
0001500    0   2   0   b   ,       7   3   3   0   1   b   )  \r   d   i
0001520    v       =       (   a   l   t   o   ?       6   1   0   2   1
0001540    b   ,       7   3   1   0   1   b   )  \r   ]  \r  \r   /   /
0001560    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0001660    -   -   -   -   -   -   -   -   -   -   -   -  \r   s   t   r
0001700    u   c   t   u   r   e       C   o   l   :       [       t   y
0001720    p   e       b   i   t       2   ;       w   i   d   t   h    
0001740    b   i   t       4   ;       s   t   a   r   t       b   i   t
0001760        1   0       ]  \r   /   /   -   -   -   -   -   -   -   -
0002000    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0002040    -   -   -   -   -   -   -   -   -   -   - 376 001  \0 256 351
0002060    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0002100    -   -   -   -   -   -   -   -   -  \r  \r   /   /   -   -   -
0002120    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0002220    -   -   -   -   -   -   -   -   -  \r   s   t   r   u   c   t
0002240    u   r   e       S   t   a   t   F   i   l   e   :  \t   /   /
0002260    u   s   e   d       b   y       P   u   p   C   o   n   t   r
0002300    o   l  \r   /   /   -   -   -   -   -   -   -   -   -   -   -
0002320    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0002420    -  \r   [  \r   v   a   l   i   d       w   o   r   d  \r   n
0002440    a   m   e   :       @   S   t   r   i   n   g           /   /
0002460  376 001  \0 244 310   f   i   l   e       n   a   m   e  \r   ]
0002500   \r   m   a   n   i   f   e   s   t       l   e   n   S   t   a
0002520    t   F   i   l   e       =       s   i   z   e       S   t   a
0002540    t   F   i   l   e   /   1   6  \r  \r   /   /   -   -   -   -
0002560    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0002660    -   -   -   -   -   -   -   -  \r   s   t   r   u   c   t   u
0002700    r   e       T   P   :  \t  \t   /   /   T   h   r   u   p   u
0002720    t       -       u   s   e   d       o   n   l   y       b   y
0002740        P   u   p   T   e   s   t  \r   /   /   -   -   -   -   -
0002760    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0003060    -   -   -   -   - 376 001  \0 241   !   -   -  \r   [  \r   t
0003100    i   m   e   r       w   o   r   d  \r   b   i   g   C   o   u
0003120    n   t       w   o   r   d  \t  \t   /   /   c   o   u   n   t
0003140    s       t   o       5   0  \r   c   o   u   n   t       w   o
0003160    r   d  \t  \t   /   /   c   o   u   n   t   s       t   o    
0003200    1   0   K  \r   t   h   r   u   p   u   t       w   o   r   d
0003220   \r   a   v   e   T   h   r   u   p   u   t       w   o   r   d
0003240   \r   ]  \r   m   a   n   i   f   e   s   t       l   e   n   T
0003260    P       =       s   i   z   e       T   P   /   1   6  \r  \r
0003300    /   /   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0003320    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0003400    -   -   -   -   -   -   -   -   -   -   -   -   -   -  \r   s
0003420    t   r   u   c   t   u   r   e       S   t   a   t   s   :  \t
0003440    /   /   P   u   p   T   e   s   t       -   >       P   u   p
0003460    C   o   n   t   r   o   l  \r   /   / 376 001  \0 372 204   -
0003500    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0003600    -   -   -   -   -   -   -   -   -   -   -  \r   [  \r   t   h
0003620    r   u   p   u   t       w   o   r   d  \r   a   v   e   t   h
0003640    r   u   p   u   t       w   o   r   d  \r   s   t   a   t   e
0003660        b   y   t   e  \r   f   l   a   g   s       b   y   t   e
0003700        =      \r               [  \r               b   l   a   n
0003720    k       b   i   t       5  \r               c   h   e   c   k
0003740    s   u   m   s       b   i   t       1  \r               d   a
0003760    t   a       b   i   t       1  \r               o   v   e   r
0004000    l   a   p   D   a   t   a   W   i   t   h   A   c   k       b
0004020    i   t       1  \r               ]  \r   ]  \r   m   a   n   i
0004040    f   e   s   t       l   e   n   S   t   a   t   s       =    
0004060    s   i   z   e       S   t   a   t   s   /   1   6  \r  \r 376
0004100  001  \0       .   /   /   -   -   -   -   -   -   -   -   -   -
0004120    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0004220    -   -  \r   s   t   r   u   c   t   u   r   e       C   m   m
0004240    d   :  \t  \t   /   /   P   u   p   C   o   n   t   r   o   l
0004260        -   >       P   u   p   T   e   s   t  \r   /   /   -   -
0004300    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0004400    -   -   -   -   -   -   -   -   -   -  \r   [  \r   s   e   n
0004420    d   p   o   r   t   :       @   P   o   r   t  \r   c   m   m
0004440    d       b   y   t   e  \r   f   l   a   g   s       b   y   t
0004460    e       =      \r               [  \r               b   l   a
0004500    n   k       b 376 001  \0 025   (   i   t       5  \r        
0004520        c   h   e   c   k   s   u   m   s       b   i   t       1
0004540   \r               d   a   t   a       b   i   t       1  \r    
0004560            o   v   e   r   l   a   p   D   a   t   a   W   i   t
0004600    h   A   c   k       b   i   t       1  \r               ]  \r
0004620    ]  \r   m   a   n   i   f   e   s   t       l   e   n   C   m
0004640    m   d       =       s   i   z   e       C   m   m   d   /   1
0004660    6  \r  \r   m   a   n   i   f   e   s   t  \r   [  \r   c   h
0004700    k   s   F   l   a   g       =       1   b   2  \r   d   a   t
0004720    a   F   l   a   g       =       1   b   1  \r   o   v   l   p
0004740    F   l   a   g       =       1   b   0  \r   ]  \r  \r   /   /
0004760    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0005060    -   -   -   -   -   -   -   -   -   -   -   -  \r   s   t   r
0005100    u   c   t   u   r   e       H   T 376 001  \0 373   r   :  \t
0005120   \t   /   /   H   o   s   t       T   a   b   l   e       -    
0005140    u   s   e   d       o   n   l   y       b   y       P   u   p
0005160    C   o   n   t   r   o   l  \r   /   /   -   -   -   -   -   -
0005200    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0005300    -   -   -   -   -   -  \r   [  \r   d   s       w   o   r   d
0005320   \r   i   d       w   o   r   d  \r   y   M   a   x       w   o
0005340    r   d  \r   y   M   i   n       w   o   r   d  \r   s   e   l
0005360    e   c   t   e   d       w   o   r   d  \r   d   e   a   d    
0005400    w   o   r   d  \r   s   o   c   :       @   P   u   p   S   o
0005420    c  \r   c   b   :       @   C   m   m   d  \r   s   t   a   t
0005440    s   :       @   S   t   a   t   s  \r   ]       ^   1   ,   m
0005460    a   x   H   o   s   t   s  \r   m   a   n   i   f   e   s   t
0005500        l   e   n   H   T       =       s   i   z   e     376  \0
0005520  006 255 230   H   T   /   1   6  \r 377  \0  \0   P   u   p   T
0005540    e   s   t   .   b   c   p   l  \0 373 230 230   { 021  \0  \0
0005560  376 001  \0 254 270   /   /       P   u   p   T   e   s   t   .
0005600    b   c   p   l       -       P   u   p       p   a   c   k   a
0005620    g   e       t   e   s   t       p   r   o   g   r   a   m  \r
0005640    /   /       C   o   p   y   r   i   g   h   t       X   e   r
0005660    o   x       C   o   r   p   o   r   a   t   i   o   n       1
0005700    9   7   9   ,       1   9   8   2  \r   /   /       L   a   s
0005720    t       m   o   d   i   f   i   e   d       F   e   b   r   u
0005740    a   r   y       1   5   ,       1   9   8   2           5   :
0005760    1   0       P   M       b   y       B   o   g   g   s  \r  \r
0006000    g   e   t       "   P   u   p   0   .   d   e   c   l   "  \r
0006020    g   e   t       "   P   u   p   1   .   d   e   c   l   "  \r
0006040    g   e   t       "   P   u   p   T   e   s   t   .   d   e   c
0006060    l   "  \r  \r   e   x   t   e   r   n   a   l  \r   [  \r   /
0006100    /       o   u   t   g   o   i   n   g       p   r   o   c   e
0006120    d   u   r   e   s  \r   C   o   m   m   a   n   d   ;       R
0006140    e   m   o   t   e   C   o   n   t   r   o   l   ;       P   u
0006160    p   T   e   s   t 376 001  \0 303   c   F   i   n   i   s   h
0006200    ;       S   y   s   E   r   r  \r  \r   /   /       i   n   c
0006220    o   m   i   n   g       p   r   o   c   e   d   u   r   e   s
0006240   \r   I   n   i   t   P   u   p   T   e   s   t   ;       C   r
0006260    e   a   t   e   K   e   y   b   o   a   r   d   S   t   r   e
0006300    a   m  \r   E   t   h   e   r   B   o   o   t   ;       J   u
0006320    n   t   a   ;       M   y   F   r   a   m   e   ;       Z   e
0006340    r   o   ;       M   o   v   e   B   l   o   c   k  \r   W   s
0006360    ;       W   s   s   ;       C   o   n   f   i   r   m   ;    
0006400    P   u   t   T   e   m   p   l   a   t   e  \r   G   e   t   s
0006420    ;       P   u   t   s   ;       E   n   d   o   f   s   ;    
0006440    C   l   o   s   e   s  \r   B   l   o   c   k   ;       C   a
0006460    l   l   C   o   n   t   e   x   t   L   i   s   t   ;       D
0006500    i   s   m   i   s   s  \r   A   d   d   T   o   Z   o   n   e
0006520    ;       F   r   e   e   ;       A   l   l   o   c   a   t   e
0006540    ;       E   n   q   u   e   u   e   ;       D   e   q   u   e
0006560    u   e   ;       F   l   u   s   h   Q 376 001  \0   L 341   u
0006600    e   u   e  \r   O   p   e   n   L   e   v   e   l   1   S   o
0006620    c   k   e   t   ;       C   l   o   s   e   L   e   v   e   l
0006640    1   S   o   c   k   e   t   ;       E   x   c   h   a   n   g
0006660    e   P   o   r   t   s  \r   C   o   m   p   l   e   t   e   P
0006700    u   p   ;       S   e   t   A   l   l   o   c   a   t   i   o
0006720    n   ;       G   e   t   P   B   I   ;       R   e   l   e   a
0006740    s   e   P   B   I  \r  \r   E   c   h   o   U   s   e   r   ;
0006760        M   i   s   c   S   e   r   v   i   c   e   s   ;       B
0007000    S   P   S   e   n   d   ;       E   F   T   P   S   e   n   d
0007020   \r   P   r   i   n   t   P   u   p   R   T   ;       P   r   i
0007040    n   t   S   t   a   t   i   s   t   i   c   s  \r  \r   /   /
0007060        o   u   t   g   o   i   n   g       s   t   a   t   i   c
0007100    s  \r   S   t   a   t   e   ;       C   m   m   d   ;       c
0007120    h   e   c   k   s   u   m   s   ;       c   h   e   c   k   d
0007140    a   t   a   ;       p   b   i   C   o   u   n   t  \r  \r   /
0007160    /       i   n   c   o   m   i   n   g       s   t   a   t 376
0007200  001  \0 356   x   i   c   s  \r   k   e   y   s   ;       d   s
0007220    p   ;       s   y   s   Z   o   n   e   ;       s   p   y   B
0007240    u   f   f   e   r  \r   l   v   U   s   e   r   F   i   n   i
0007260    s   h   P   r   o   c   ;       s   a   v   e   d   F   i   n
0007300    i   s   h  \r   c   h   e   c   k   B   u   f   f   e   r   ;
0007320        c   t   x   Q   ;       s   e   n   d   P   o   r   t   ;
0007340        t   p   ;       b   o   o   t   F   l   a   g  \r   n   u
0007360    m   N   e   t   s   ;       s   o   c   k   e   t   Q   ;    
0007400    p   b   i   F   r   e   e   Q   ;       d   P   S   I   B   ;
0007420        p   u   p   R   T  \r   l   e   n   P   u   p   ;       l
0007440    e   n   P   B   I   ;       m   a   x   P   u   p   D   a   t
0007460    a   B   y   t   e   s   ;       o   v   e   r   l   a   p   D
0007500    a   t   a   W   i   t   h   A   c   k  \r   ]  \r  \r   m   a
0007520    n   i   f   e   s   t       [       l   e   v   B   c   p   l
0007540        =       3   ;       s   t   k   L   i   m       =       3
0007560    3   5   b       ]  \r  \r   s   t   a   t   i   c  \r   [  \r
0007600    S   t   a   t 376 001  \0   Y   E   e   ;       C   m   m   d
0007620    ;       c   o   d   e   E   n   d   ;       p   b   i   C   o
0007640    u   n   t  \r   c   h   e   c   k   s   u   m   s       =    
0007660    f   a   l   s   e  \r   c   h   e   c   k   d   a   t   a    
0007700    =       f   a   l   s   e  \r   ]  \r  \r   s   t   r   u   c
0007720    t   u   r   e       B   y   t   e   ^   0   ,   0       b   y
0007740    t   e  \r  \f  \r   /   /   -   -   -   -   -   -   -   -   -
0007760    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0010060    -   -   -  \r   l   e   t       P   u   p   T   e   s   t   (
0010100    b   l   v   )       b   e  \r   /   /   -   -   -   -   -   -
0010120    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0010200    -   -   -   -   -   -   -   -   - 376 001  \0  \t 370   -   -
0010220    -   -   -   -   -   -   -   -   -   -   -  \r   [  \r   c   o
0010240    d   e   E   n   d       =       b   l   v   !   2   9  \r   I
0010260    n   i   t   P   u   p   T   e   s   t   (   )  \r   J   u   n
0010300    t   a   (   l   e   v   B   c   p   l   ,       A   f   t   e
0010320    r   J   u   n   t   a   )  \r   ]  \r  \r   /   /   -   -   -
0010340    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0010440    -   -   -   -   -   -   -   -   -  \r   a   n   d       A   f
0010460    t   e   r   J   u   n   t   a   (   )       b   e  \r   /   /
0010500    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0010600    -   -   -   -   -   -   -   -   -   -   -   -  \r   [ 376 001
0010620   \0   v 205  \r   C   r   e   a   t   e   K   e   y   b   o   a
0010640    r   d   S   t   r   e   a   m   (   )  \r   /   /   A   d   d
0010660        t   h   e       r   e   m   a   i   n   i   n   g       s
0010700    t   a   c   k       a   n   d       t   h   e       J   u   n
0010720    t   a   e   d       O   S       p   a   r   t   s       t   o
0010740        s   y   s   Z   o   n   e  \r   l   e   t       f   r   e
0010760    e   B   e   g   i   n       =       @   s   t   k   L   i   m
0011000   \r   @   s   t   k   L   i   m       =       M   y   F   r   a
0011020    m   e   (   )       -   1   2   0  \r   A   d   d   T   o   Z
0011040    o   n   e   (   s   y   s   Z   o   n   e   ,       f   r   e
0011060    e   B   e   g   i   n   ,       @   s   t   k   L   i   m   -
0011100    f   r   e   e   B   e   g   i   n   )  \r   A   d   d   T   o
0011120    Z   o   n   e   (   s   y   s   Z   o   n   e   ,       I   n
0011140    i   t   P   u   p   T   e   s   t   ,       c   o   d   e   E
0011160    n   d   -   I   n   i   t   P   u   p   T   e   s   t   )    
0011200        /   /   I   n   i   t       c   o   d   e  \r   l   e   t
0011220        f   r 376 001  \0   _ 271   e   e   S   l   o   p       =
0011240        A   l   l   o   c   a   t   e   (   s   y   s   Z   o   n
0011260    e   ,       1   2   5   0   )       /   /   l   a   t   e   r
0011300        d   y   n   a   m   i   c       a   l   l   o   c   a   t
0011320    i   o   n       n   e   e   d   s  \r   p   b   i   C   o   u
0011340    n   t       =       0  \r               [           /   /   a
0011360    l   l   o   c   a   t   e       a   s       m   a   n   y    
0011400    a   d   d   i   t   i   o   n   a   l       p   b   i   s    
0011420    a   s       w   e       c   a   n  \r               l   e   t
0011440        p   b   i       =       A   l   l   o   c   a   t   e   (
0011460    s   y   s   Z   o   n   e   ,       l   e   n   P   B   I   ,
0011500        t   r   u   e   )  \r               i   f       p   b   i
0011520        e   q       0       b   r   e   a   k  \r               E
0011540    n   q   u   e   u   e   (   p   b   i   F   r   e   e   Q   ,
0011560        p   b   i   )  \r               p   b   i   C   o   u   n
0011600    t       =       p   b   i   C   o   u   n   t       +   1  \r
0011620                ]       r   e   p 376 001  \0   F   ~   e   a   t
0011640    w   h   i   l   e       p   b   i   C   o   u   n   t       l
0011660    s       3   2   7   6   7   /   m   a   x   P   u   p   D   a
0011700    t   a   B   y   t   e   s  \r   F   r   e   e   (   s   y   s
0011720    Z   o   n   e   ,       f   r   e   e   S   l   o   p   )  \r
0011740    p   b   i   C   o   u   n   t       =       p   b   i   C   o
0011760    u   n   t   -   n   u   m   N   e   t   s  \r   l   e   t    
0012000    s   o   c       =       s   o   c   k   e   t   Q   !   0  \r
0012020    w   h   i   l   e       s   o   c       n   e       0       d
0012040    o  \r               [  \r               S   e   t   A   l   l
0012060    o   c   a   t   i   o   n   (   s   o   c   ,       p   b   i
0012100    C   o   u   n   t   ,       p   b   i   C   o   u   n   t   -
0012120    1   ,       p   b   i   C   o   u   n   t   -   1   )  \r    
0012140            s   o   c       =       s   o   c   !   0  \r        
0012160        ]  \r   l   e   t       f   a   k   e   S   o   c       =
0012200        d   P   S   I   B       -       o   f   f   s   e   t    
0012220    P   u   p   S   o   c   .   p   s   i   b   /   1 376 001  \0
0012240  231 031   6  \r   S   e   t   A   l   l   o   c   a   t   i   o
0012260    n   (   f   a   k   e   S   o   c   ,       p   b   i   C   o
0012300    u   n   t   ,       p   b   i   C   o   u   n   t   -   1   ,
0012320        p   b   i   C   o   u   n   t   -   1   )  \r  \r   C   a
0012340    l   l   C   o   n   t   e   x   t   L   i   s   t   (   c   t
0012360    x   Q   !   0   )       r   e   p   e   a   t  \r   ]  \r  \r
0012400    /   /   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0012420    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0012500    -   -   -   -   -   -   -   -   -   -   -   -   -   -  \r   a
0012520    n   d       P   u   p   T   e   s   t   F   i   n   i   s   h
0012540    (   )       b   e  \r   /   /   -   -   -   -   -   -   -   -
0012560    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0012640    -   - 376 001  \0  \n 324   -   -   -   -   -   -   -   -   -
0012660    -   -   -   -   -   -   -   -   -  \r   [  \r   @   4   2   0
0012700    b       =       0   ;       f   o   r       i       =       0
0012720        t   o       3   0   0   0   0       l   o   o   p  \r   (
0012740    t   a   b   l   e       [       6   3   0   0   0   b   ;    
0012760    1   4   0   1   b       ]   )   (   1   7   7   7   7   6   b
0013000    )  \r   @   l   v   U   s   e   r   F   i   n   i   s   h   P
0013020    r   o   c       =       s   a   v   e   d   F   i   n   i   s
0013040    h  \r   i   f       b   o   o   t   F   l   a   g       t   h
0013060    e   n       E   t   h   e   r   B   o   o   t   (   1   0   b
0013100    )  \r   ]  \r  \r   /   /   -   -   -   -   -   -   -   -   -
0013120    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0013220    -   -   -  \r   a   n   d       S   y   s   E   r   r   (   p
0013240    1   ,       e   r   r   N 376 001  \0 311 023   o   ,       p
0013260    2   ,       p   3   ,       p   4   ,       p   5   )       b
0013300    e  \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -
0013320    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0013420   \r   [  \r   l   e   t       t       =       p   1   ;       p
0013440    1       =       e   r   r   N   o   ;       e   r   r   N   o
0013460        =       t  \r   (   t   a   b   l   e       [       7   7
0013500    4   0   3   b   ;       1   4   0   1   b       ]   )   (   "
0013520    S   y   s   .   e   r   r   o   r   s   "   ,       l   v    
0013540    p   1   )  \r   ]  \r  \f  \r   /   /   -   -   -   -   -   -
0013560    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0013640    -   -   -   -   -   -   -   -   -   -   -   - 376 001  \0 235
0013660    d   -   -   -   -   -   -   -   -   -   -  \r   a   n   d    
0013700    C   o   m   m   a   n   d   (   )       b   e  \r   /   /   -
0013720    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0014020    -   -   -   -   -   -   -   -   -   -   -  \r   [  \r   C   m
0014040    m   d       =       0  \r               [  \r               W
0014060    s   (   "   *   N   >       "   )  \r               S   t   a
0014100    t   e       =       s   t   a   t   e   S   t   o   p  \r    
0014120            B   l   o   c   k   (   )       r   e   p   e   a   t
0014140    w   h   i   l   e       E   n   d   o   f   s   (   k   e   y
0014160    s   )       &       C   m   m   d       e   q       0  \r    
0014200            l   e   t       c   h   a   r       =       E   n   d
0014220    o   f   s   (   k   e   y   s   )       ?       C   m   m   d
0014240    ,       G   e   t   s   (   k   e   y   s   )  \r            
0014260    s 376 001  \0   B 233   w   i   t   c   h   o   n       c   h
0014300    a   r       i   n   t   o  \r                           [  \r
0014320                            c   a   s   e       $   *   S   :  \r
0014340                                        [       C   m   m   d    
0014360    =       0   ;       l   o   o   p       ]  \r                
0014400            c   a   s   e       $   C   :       c   a   s   e    
0014420    $   c   :  \r                                       [  \r    
0014440                                    W   s   (   "   P   u   p    
0014460    c   h   e   c   k   s   u   m   s       "   )  \r            
0014500                            W   s   (   c   h   e   c   k   s   u
0014520    m   s       ?       "   d   i   s   a   b   l   e   d   "   ,
0014540        "   e   n   a   b   l   e   d   "   )  \r                
0014560                        c   h   e   c   k   s   u   m   s       =
0014600        n   o   t       c   h   e   c   k   s   u   m   s  \r    
0014620                                    e   n   d   c   a   s   e  \r
0014640                                        ]  \r                    
0014660        c   a   s   e     376 001  \0   q 377   $   D   :       c
0014700    a   s   e       $   d   :  \r                                
0014720        [  \r                                       W   s   (   "
0014740    D   a   t   a       C   h   e   c   k   i   n   g       "   )
0014760   \r                                       W   s   (   c   h   e
0015000    c   k   d   a   t   a       ?       "   d   i   s   a   b   l
0015020    e   d   "   ,       "   e   n   a   b   l   e   d   "   )  \r
0015040                                        c   h   e   c   k   d   a
0015060    t   a       =       n   o   t       c   h   e   c   k   d   a
0015100    t   a  \r                                       e   n   d   c
0015120    a   s   e  \r                                       ]  \r    
0015140                        c   a   s   e       $   E   :       c   a
0015160    s   e       $   e   :  \r                                    
0015200    [       E   c   h   o   U   s   e   r   (   )   ;       e   n
0015220    d   c   a   s   e       ]  \r                           c   a
0015240    s   e       $   S   :       c   a   s   e       $   s   :  \r
0015260                                        [     376 001  \0 211 273
0015300    B   S   P   S   e   n   d   (   )   ;       e   n   d   c   a
0015320    s   e       ]  \r                           c   a   s   e    
0015340    $   Q   :       c   a   s   e       $   q   :  \r            
0015360                            [  \r                                
0015400        i   f       C   m   m   d       e   q       0       t   h
0015420    e   n       u   n   l   e   s   s       C   o   n   f   i   r
0015440    m   (   "   Q   u   i   t       "   )       e   n   d   c   a
0015460    s   e  \r                                       f   i   n   i
0015500    s   h  \r                                       ]  \r        
0015520                    c   a   s   e       $   R   :       c   a   s
0015540    e       $   r   :  \r                                       [
0015560        E   F   T   P   S   e   n   d   (   )   ;       e   n   d
0015600    c   a   s   e       ]  \r                           c   a   s
0015620    e       $   P   :       c   a   s   e       $   p   :  \r    
0015640                                    [  \r                        
0015660                W   s   (   "   P   r   i   n   t       "   )  \r
0015700  376 001  \0 307 232                                       s   w
0015720    i   t   c   h   o   n       G   e   t   s   (   k   e   y   s
0015740    )       i   n   t   o  \r                                    
0015760                [  \r                                            
0016000        c   a   s   e       $   R   :       c   a   s   e       $
0016020    r   :  \r                                                    
0016040            [       P   r   i   n   t   P   u   p   R   T   (   )
0016060    ;       e   n   d   c   a   s   e       ]  \r                
0016100                                    c   a   s   e       $   S   :
0016120        c   a   s   e       $   s   :  \r                        
0016140                                        [       P   r   i   n   t
0016160    S   t   a   t   i   s   t   i   c   s   (   )   ;       e   n
0016200    d   c   a   s   e       ]  \r                                
0016220                    c   a   s   e       $   ?   :  \r            
0016240                                                    [       W   s
0016260    (   "   ?   *   N   R   o   u   t   i   n   g   T   a   b   l
0016300    e   ,       S   t 376 001  \0 302   c   a   t   i   s   t   i
0016320    c   s   "   )   ;       e   n   d   c   a   s   e       ]  \r
0016340                                                    d   e   f   a
0016360    u   l   t   :       [       P   u   t   s   (   d   s   p   ,
0016400        $   ?   )   ;       e   n   d   c   a   s   e       ]  \r
0016420                                                    ]  \r        
0016440                                e   n   d   c   a   s   e  \r    
0016460                                    ]  \r                        
0016500    c   a   s   e       $   M   :       c   a   s   e       $   m
0016520    :  \r                                       [       M   i   s
0016540    c   S   e   r   v   i   c   e   s   (   )   ;       e   n   d
0016560    c   a   s   e       ]  \r                           c   a   s
0016600    e       $   ?   :  \r                                       [
0016620   \r                                       W   s   (   "   ?   *
0016640    N   E   c   h   o   ,       S   e   n   d   B   S   P   ,    
0016660    M   i   s   c       s   e   r   v   i   c   e   s   ,       Q
0016700    u   i   t   "   )  \r                 376 001  \0   u 027    
0016720                    W   s   (   "   *   N   P   r   i   n   t   ,
0016740        C   h   e   c   k   s   u   m   s   ,       D   a   t   a
0016760    C   h   e   c   k   i   n   g   ,       R   =   E   F   T   P
0017000    "   )  \r                                       e   n   d   c
0017020    a   s   e  \r                                       ]  \r    
0017040                        ]  \r               ]       r   e   p   e
0017060    a   t  \r   ]  \r  \f  \r   /   /   -   -   -   -   -   -   -
0017100    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0017200    -   -   -   -   -  \r   a   n   d       R   e   m   o   t   e
0017220    C   o   n   t   r   o   l   (   )       b   e  \t   /   /   t
0017240    h   e       c   o   n   t   e   x   t       b   y       w   h
0017260    i   c   h       P   u   p   C   o   n   t   r   o   l       c
0017300    o   n   t   r   o   l   s       P   u   p   T   e   s   t 376
0017320  001  \0 373 001  \r   /   /   -   -   -   -   -   -   -   -   -
0017340    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0017440    -   -   -  \r   [  \r   l   e   t       l   a   s   t   I   D
0017460        =       0  \r   l   e   t       c   o   n   t   r   o   l
0017500    S   o   c       =       v   e   c       l   e   n   P   u   p
0017520    S   o   c  \r   O   p   e   n   L   e   v   e   l   1   S   o
0017540    c   k   e   t   (   c   o   n   t   r   o   l   S   o   c   ,
0017560        t   a   b   l   e       [       0   ;       0   ;       s
0017600    o   c   k   e   t   P   u   p   C   o   n   t   r   o   l    
0017620    ]   )  \r               [  \r               B   l   o   c   k
0017640    (   )       r   e   p   e   a   t   w   h   i   l   e       c
0017660    o   n   t   r   o   l   S   o   c   >   >   P   u   p   S   o
0017700    c   .   i   Q   .   h   e   a   d       e   q       0  \r    
0017720            l   e 376 001  \0 326   &   t       p   b   i       =
0017740        D   e   q   u   e   u   e   (   l   v       c   o   n   t
0017760    r   o   l   S   o   c   >   >   P   u   p   S   o   c   .   i
0020000    Q   )  \r               u   n   l   e   s   s       p   b   i
0020020    >   >   P   B   I   .   p   u   p   .   t   y   p   e       e
0020040    q       t   y   p   e   C   m   m   d       d   o  \r        
0020060                    [       R   e   l   e   a   s   e   P   B   I
0020100    (   p   b   i   )   ;       l   o   o   p       ]  \r        
0020120        i   f       p   b   i   >   >   P   B   I   .   p   u   p
0020140    .   i   d   ^   2       n   e       l   a   s   t   I   D    
0020160    t   h   e   n  \r                           [  \r            
0020200                l   a   s   t   I   D       =       p   b   i   >
0020220    >   P   B   I   .   p   u   p   .   i   d   ^   2  \r        
0020240                    l   e   t       c   b       =       l   v    
0020260    p   b   i   >   >   P   B   I   .   p   u   p   .   w   o   r
0020300    d   s   ^   1  \r                           M   o   v   e   B
0020320    l   o   c   k   (   s   e   n   d 376 001  \0 267 267   P   o
0020340    r   t   ,       l   v       c   b   >   >   C   m   m   d   .
0020360    s   e   n   d   p   o   r   t   ,       l   e   n   P   o   r
0020400    t   )  \r                           C   m   m   d       =    
0020420    c   b   >   >   C   m   m   d   .   c   m   m   d  \r        
0020440                    c   h   e   c   k   s   u   m   s       =    
0020460    c   b   >   >   C   m   m   d   .   c   h   e   c   k   s   u
0020500    m   s       n   e       0  \r                           c   h
0020520    e   c   k   d   a   t   a       =       c   b   >   >   C   m
0020540    m   d   .   d   a   t   a       n   e       0  \r            
0020560                o   v   e   r   l   a   p   D   a   t   a   W   i
0020600    t   h   A   c   k       =       c   b   >   >   C   m   m   d
0020620    .   o   v   e   r   l   a   p   D   a   t   a   W   i   t   h
0020640    A   c   k       n   e       0  \r                           ]
0020660   \r               l   e   t       s   t   a   t       =       l
0020700    v       p   b   i   >   >   P   B   I   .   p   u   p   .   w
0020720    o   r   d   s   ^   1   ;       Z   e   r   o   (   s 376 001
0020740   \0 224   t   t   a   t   ,       l   e   n   S   t   a   t   s
0020760    )  \r               s   t   a   t   >   >   S   t   a   t   s
0021000    .   t   h   r   u   p   u   t       =       t   p   >   >   T
0021020    P   .   t   h   r   u   p   u   t  \r               s   t   a
0021040    t   >   >   S   t   a   t   s   .   a   v   e   t   h   r   u
0021060    p   u   t       =       t   p   >   >   T   P   .   a   v   e
0021100    T   h   r   u   p   u   t  \r               s   t   a   t   >
0021120    >   S   t   a   t   s   .   s   t   a   t   e       =       S
0021140    t   a   t   e  \r               s   t   a   t   >   >   S   t
0021160    a   t   s   .   c   h   e   c   k   s   u   m   s       =    
0021200    c   h   e   c   k   s   u   m   s  \r               s   t   a
0021220    t   >   >   S   t   a   t   s   .   d   a   t   a       =    
0021240    c   h   e   c   k   d   a   t   a  \r               s   t   a
0021260    t   >   >   S   t   a   t   s   .   o   v   e   r   l   a   p
0021300    D   a   t   a   W   i   t   h   A   c   k       =       o   v
0021320    e   r   l   a   p   D   a   t   a   W   i   t   h   A   c   k
0021340   \r         376  \0   U 310 250       E   x   c   h   a   n   g
0021360    e   P   o   r   t   s   (   p   b   i   )  \r               C
0021400    o   m   p   l   e   t   e   P   u   p   (   p   b   i   ,    
0021420    t   y   p   e   O   K   ,       l   e   n   S   t   a   t   s
0021440    *   2   +   p   u   p   O   v   B   y   t   e   s   )  \r    
0021460            ]       r   e   p   e   a   t  \r   ]  \r 377  \0  \0
0021500    P   u   p   T   e   s   t   I   n   i   t   .   b   c   p   l
0021520   \0 373 233   m   K 307  \0  \0 376 001  \0 247 337   /   /    
0021540    P   u   p   T   e   s   t   I   n   i   t   .   b   c   p   l
0021560   \r   /   /       C   o   p   y   r   i   g   h   t       X   e
0021600    r   o   x       C   o   r   p   o   r   a   t   i   o   n    
0021620    1   9   7   9   ,       1   9   8   2  \r   /   /       L   a
0021640    s   t       m   o   d   i   f   i   e   d       A   u   g   u
0021660    s   t       1   9   ,       1   9   8   3           2   :   2
0021700    7       P   M       b   y       T   a   f   t  \r  \r   g   e
0021720    t       "   P   u   p   0   .   d   e   c   l   "  \r   g   e
0021740    t       "   P   u   p   1   .   d   e   c   l   "  \r   g   e
0021760    t       "   P   u   p   T   e   s   t   .   d   e   c   l   "
0022000   \r   g   e   t       "   S   t   r   e   a   m   s   .   d   "
0022020   \r   g   e   t       "   A   l   t   o   D   e   f   s   .   d
0022040    "  \r  \r   e   x   t   e   r   n   a   l  \r   [  \r   /   /
0022060        o   u   t   g   o   i   n   g       p   r   o   c   e   d
0022100    u   r   e   s  \r   I   n   i   t   P   u   p   T   e   s   t
0022120   \r  \r   /   /       i   n   c   o   m   i   n   g 376 001  \0
0022140  006 213       p   r   o   c   e   d   u   r   e   s  \r   C   r
0022160    e   a   t   e   D   i   s   p   l   a   y   S   t   r   e   a
0022200    m   ;       S   h   o   w   D   i   s   p   l   a   y   S   t
0022220    r   e   a   m  \r   C   h   a   r   W   i   d   t   h   ;    
0022240    I   n   v   e   r   t   L   i   n   e   ;       G   e   t   L
0022260    i   n   e   P   o   s   ;       S   e   t   B   i   t   P   o
0022300    s  \r   M   y   F   r   a   m   e   ;       U   s   c   ;    
0022320    L   o   a   d   R   a   m   ;       I   n   i   t   B   c   p
0022340    l   R   u   n   t   i   m   e   ;       S   t   a   r   t   I
0022360    O   ;       Z   e   r   o  \r   P   u   p   C   h   e   c   k
0022400    s   u   m   ;       U   P   u   p   C   h   e   c   k   s   u
0022420    m   ;       B   l   o   c   k   E   q   ;       U   B   l   o
0022440    c   k   E   q  \r   I   n   i   t   i   a   l   i   z   e   Z
0022460    o   n   e   ;       A   d   d   T   o   Z   o   n   e   ;    
0022500    A   l   l   o   c   a   t   e   ;       I   d   l   e  \r   I
0022520    n   i   t   P   u   p   L   e   v   e   l   1   ;       E   n
0022540    q   u 376 001  \0  \r 262   e   u   e   ;       I   n   i   t
0022560    i   a   l   i   z   e   C   o   n   t   e   x   t   ;       B
0022600    l   o   c   k  \r   D   e   f   a   u   l   t   O   t   h   e
0022620    r   P   u   p   P   r   o   c   ;       O   t   h   e   r   S
0022640    p   i   g   o   t   ;       I   n   i   t   S   t   a   t   S
0022660    e   r   v  \r   B   S   P   R   e   c   e   i   v   e   ;    
0022700    E   F   T   P   R   e   c   e   i   v   e   ;       E   c   h
0022720    o   S   e   r   v   e   r   ;       P   u   p   T   e   s   t
0022740    P   a   r   a   m   s  \r   C   o   m   m   a   n   d   ;    
0022760    R   e   m   o   t   e   C   o   n   t   r   o   l   ;       O
0023000    t   h   e   r   S   p   i   g   o   t   P   r   o   c   e   s
0023020    s  \r   P   u   t   T   e   m   p   l   a   t   e   ;       W
0023040    s   ;       W   s   s   ;       C   o   n   f   i   r   m  \r
0023060   \r   /   /       o   u   t   g   o   i   n   g       s   t   a
0023100    t   i   c   s  \r   s   e   n   d   P   o   r   t   ;       t
0023120    p   ;       c   h   e   c   k   B   u   f   f   e   r  \r   s
0023140    a   v   e   d   F   i   n 376 001  \0 213 311   i   s   h   ;
0023160        s   p   i   g   o   t   Q   ;       c   t   x   Q   ;    
0023200    b   o   o   t   F   l   a   g  \r   s   p   y   B   u   f   f
0023220    e   r   ;       s   y   s   Z   o   n   e   ;       d   s   p
0023240   \r  \r   /   /       i   n   c   o   m   i   n   g       s   t
0023260    a   t   i   c   s  \r   P   u   p   T   e   s   t   F   i   n
0023300    i   s   h   ;       m   a   x   P   u   p   D   a   t   a   B
0023320    y   t   e   s  \r   l   v   U   s   e   r   F   i   n   i   s
0023340    h   P   r   o   c   ;       s   y   s   F   o   n   t   ;    
0023360    P   u   p   T   e   s   t   I   m   p   M   c  \r   ]  \r  \r
0023400    m   a   n   i   f   e   s   t  \r   [  \r   s   t   k   L   i
0023420    m       =       #   3   3   5  \r   b   l   a   c   k       =
0023440        -   1  \r   w   h   i   t   e       =       0  \r   ]  \r
0023460   \r   s   t   a   t   i   c  \r   [  \r   l   a   s   t   S   h
0023500    o   w   n   S   t   r   e   a   m   ;       s   a   v   e   d
0023520    S   w   a   t   C   P  \r   s   p   y   B   u   f   f   e   r
0023540    ;       s   y   s   Z   o   n   e   ;       d 376 001  \0 320
0023560    m   s   p  \r   s   e   n   d   P   o   r   t   ;       t   p
0023600    ;       c   h   e   c   k   B   u   f   f   e   r  \r   s   a
0023620    v   e   d   F   i   n   i   s   h   ;       s   p   i   g   o
0023640    t   Q   ;       c   t   x   Q   ;       b   o   o   t   F   l
0023660    a   g  \r   ]  \r  \r   s   t   r   u   c   t   u   r   e    
0023700    B   y   t   e   ^   0   ,   0       b   y   t   e  \r  \f  \r
0023720    /   /   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0023740    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0024020    -   -   -   -   -   -   -   -   -   -   -   -   -   -  \r   l
0024040    e   t       I   n   i   t   P   u   p   T   e   s   t   (   )
0024060        b   e  \r   /   /   -   -   -   -   -   -   -   -   -   -
0024100    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0024160    - 376 001  \0   O 005   -   -   -   -   -   -   -   -   -   -
0024200    -   -   -   -   -   -   -  \r   [  \r   b   o   o   t   F   l
0024220    a   g       =       P   u   p   T   e   s   t   P   a   r   a
0024240    m   s       e   q       0           /   /   h   a   c   k   .
0024260    .   .   s   h   o   u   l   d       b   e       d   o   n   e
0024300        i   n       a       c   l   e   a   n   e   r       w   a
0024320    y  \r   l   e   t       v   e   r   s   i   o   n   T   e   x
0024340    t       =       "   P   u   p   T   e   s   t       o   f    
0024360    A   u   g   u   s   t       1   9   ,       1   9   8   3   "
0024400   \r  \r   l   e   t       f   r   e   e   B   e   g   i   n    
0024420    =       @   s   t   k   L   i   m  \r   @   s   t   k   L   i
0024440    m       =       M   y   F   r   a   m   e   (   )       -   1
0024460    0   0   0  \r   l   e   t       l   e   n   g   t   h       =
0024500        @   s   t   k   L   i   m       -       f   r   e   e   B
0024520    e   g   i   n  \r   l   e   t       l   e   n   I   n   i   t
0024540        =       l   e   n   g   t   h       l   s       0   ?    
0024560    #   7   7   7   7   7 376 001  \0 314 244   ,       l   e   n
0024600    g   t   h  \r   s   y   s   Z   o   n   e       =       I   n
0024620    i   t   i   a   l   i   z   e   Z   o   n   e   (   f   r   e
0024640    e   B   e   g   i   n   ,       l   e   n   I   n   i   t   )
0024660   \r   f   r   e   e   B   e   g   i   n       =       f   r   e
0024700    e   B   e   g   i   n       +       l   e   n   I   n   i   t
0024720   \r   l   e   n   g   t   h       =       l   e   n   g   t   h
0024740        -       l   e   n   I   n   i   t  \r   i   f       l   e
0024760    n   g   t   h       g   r       1   0       t   h   e   n    
0025000    A   d   d   T   o   Z   o   n   e   (   s   y   s   Z   o   n
0025020    e   ,       f   r   e   e   B   e   g   i   n   ,       l   e
0025040    n   g   t   h   )  \r  \r   /   /   N   o   w       l   o   a
0025060    d       t   h   e       m   i   c   r   o   c   o   d   e  \r
0025100    i   f       L   o   a   d   R   a   m   (   P   u   p   T   e
0025120    s   t   I   m   p   M   c   ,       t   r   u   e   )       e
0025140    q       0       t   h   e   n  \r               [  \r        
0025160        I   n   i   t   B   c   p   l   R   u 376 001  \0 223   J
0025200    n   t   i   m   e   (   )  \r               P   u   p   C   h
0025220    e   c   k   s   u   m       =       U   P   u   p   C   h   e
0025240    c   k   s   u   m  \r               B   l   o   c   k   E   q
0025260        =       U   B   l   o   c   k   E   q  \r               ]
0025300   \r  \r   /   /   S   e   t       u   p       t   h   e       d
0025320    i   s   p   l   a   y  \r   l   a   s   t   S   h   o   w   n
0025340    S   t   r   e   a   m       =       M   a   k   e   B   a   r
0025360    (   w   h   i   t   e   ,       2   4   )  \r   S   h   o   w
0025400    D   i   s   p   l   a   y   S   t   r   e   a   m   (   l   a
0025420    s   t   S   h   o   w   n   S   t   r   e   a   m   ,       D
0025440    S   a   l   o   n   e   )  \r   S   h   o   w   D   i   s   p
0025460    l   a   y   S   t   r   e   a   m   (   M   a   k   e   B   a
0025500    r   (   w   h   i   t   e   ,       1   )   ,       D   S   b
0025520    e   l   o   w   ,       l   a   s   t   S   h   o   w   n   S
0025540    t   r   e   a   m   )  \r   l   e   t       l   e   n   D   S
0025560        =       l   D   C   B       +       3   8   *   (   (   s
0025600  376 001  \0 252 255   y   s   F   o   n   t   !   -   2       +
0025620    1   )       &       -   2   )       +   1  \r   l   e   t    
0025640    t   i   t   l   e       =       C   r   e   a   t   e   D   i
0025660    s   p   l   a   y   S   t   r   e   a   m   (   1   ,   A   l
0025700    l   o   c   a   t   e   (   s   y   s   Z   o   n   e   ,   l
0025720    e   n   D   S   )   ,   l   e   n   D   S   ,   s   y   s   F
0025740    o   n   t   )  \r   W   s   s   (   t   i   t   l   e   ,    
0025760    v   e   r   s   i   o   n   T   e   x   t   )  \r   S   e   t
0026000    B   i   t   P   o   s   (   t   i   t   l   e   ,       4   5
0026020    0   )  \r   P   u   t   T   e   m   p   l   a   t   e   (   t
0026040    i   t   l   e   ,       "   A   l   t   o       $   U   O   #
0026060    "   ,       S   t   a   r   t   I   O   (   0   )       &    
0026100    #   3   7   7   )  \r   I   n   v   e   r   t   L   i   n   e
0026120    (   t   i   t   l   e   ,       G   e   t   L   i   n   e   P
0026140    o   s   (   t   i   t   l   e   )   )  \r   G   C   S   h   o
0026160    w   D   i   s   p   l   a   y   S   t   r   e   a   m   (   M
0026200    a   k   e   B   a 376 001  \0 006   Y   r   (   b   l   a   c
0026220    k   ,       2   )   )  \r   G   C   S   h   o   w   D   i   s
0026240    p   l   a   y   S   t   r   e   a   m   (   t   i   t   l   e
0026260    )  \r   G   C   S   h   o   w   D   i   s   p   l   a   y   S
0026300    t   r   e   a   m   (   M   a   k   e   B   a   r   (   b   l
0026320    a   c   k   ,       1   )   )  \r   d   s   p       =       C
0026340    r   e   a   t   e   D   i   s   p   l   a   y   S   t   r   e
0026360    a   m   (   2   0   ,       A   l   l   o   c   a   t   e   (
0026400    s   y   s   Z   o   n   e   ,       7   0   0   0   )   ,    
0026420    7   0   0   0   ,       s   y   s   F   o   n   t   )  \r   G
0026440    C   S   h   o   w   D   i   s   p   l   a   y   S   t   r   e
0026460    a   m   (   d   s   p   )  \r   G   C   S   h   o   w   D   i
0026500    s   p   l   a   y   S   t   r   e   a   m   (   M   a   k   e
0026520    B   a   r   (   b   l   a   c   k   ,       1   )   )  \r  \r
0026540    /   /   m   o   r   e       i   n   i   t   i   a   l   i   z
0026560    a   t   i   o   n   !  \r   s   a   v   e   d   F   i   n   i
0026600    s   h       =       @   l   v   U   s 376 001  \0   7   j   e
0026620    r   F   i   n   i   s   h   P   r   o   c  \r   @   l   v   U
0026640    s   e   r   F   i   n   i   s   h   P   r   o   c       =    
0026660    P   u   p   T   e   s   t   F   i   n   i   s   h  \r   s   p
0026700    y   B   u   f   f   e   r       =       A   l   l   o   c   a
0026720    t   e   (   s   y   s   Z   o   n   e   ,       1   0   0   0
0026740    )  \r   s   e   n   d   P   o   r   t       =       A   l   l
0026760    o   c   a   t   e   (   s   y   s   Z   o   n   e   ,       l
0027000    e   n   P   o   r   t   )  \r   c   t   x   Q       =       A
0027020    l   l   o   c   a   t   e   (   s   y   s   Z   o   n   e   ,
0027040        2   )   ;       c   t   x   Q   !   0       =       0  \r
0027060    I   d   l   e       =       B   l   o   c   k  \r   s   p   i
0027100    g   o   t   Q       =       A   l   l   o   c   a   t   e   (
0027120    s   y   s   Z   o   n   e   ,       2   )   ;       s   p   i
0027140    g   o   t   Q   !   0       =       0  \r   D   e   f   a   u
0027160    l   t   O   t   h   e   r   P   u   p   P   r   o   c       =
0027200        O   t   h   e   r   S   p   i   g   o   t  \r   I   n 376
0027220  001  \0   u   w   i   t   P   u   p   L   e   v   e   l   1   (
0027240    s   y   s   Z   o   n   e   ,       c   t   x   Q   ,       0
0027260    )  \r   I   n   i   t   S   t   a   t   S   e   r   v   (   s
0027300    y   s   Z   o   n   e   ,       c   t   x   Q   )  \r   u   n
0027320    l   e   s   s       b   o   o   t   F   l   a   g       d   o
0027340        P   u   p   T   e   s   t   P   a   r   a   m   s   (   )
0027360   \r   t   p       =       A   l   l   o   c   a   t   e   (   s
0027400    y   s   Z   o   n   e   ,       l   e   n   T   P   )  \r   c
0027420    h   e   c   k   B   u   f   f   e   r       =       A   l   l
0027440    o   c   a   t   e   (   s   y   s   Z   o   n   e   ,       (
0027460    m   a   x   P   u   p   D   a   t   a   B   y   t   e   s   +
0027500    1   )   /   2   )  \r   f   o   r       i       =       0    
0027520    t   o       m   a   x   P   u   p   D   a   t   a   B   y   t
0027540    e   s   -   1       d   o       c   h   e   c   k   B   u   f
0027560    f   e   r   >   >   B   y   t   e   ^   i       =       i  \r
0027600   \r   E   n   q   u   e   u   e   (   c   t   x   Q   ,   I   n
0027620    i   t   i   a 376 001  \0   #   z   l   i   z   e   C   o   n
0027640    t   e   x   t   (   A   l   l   o   c   a   t   e   (   s   y
0027660    s   Z   o   n   e   ,       (   a   l   t   o   ?       4   0
0027700    0   ,       3   0   0   )   )   ,  \r       (   a   l   t   o
0027720    ?       4   0   0   ,       3   0   0   )   ,       C   o   m
0027740    m   a   n   d   )   )  \r   E   n   q   u   e   u   e   (   c
0027760    t   x   Q   ,   I   n   i   t   i   a   l   i   z   e   C   o
0030000    n   t   e   x   t   (   A   l   l   o   c   a   t   e   (   s
0030020    y   s   Z   o   n   e   ,       (   a   l   t   o   ?       2
0030040    0   0   ,       1   5   0   )   )   ,  \r       (   a   l   t
0030060    o   ?       2   0   0   ,       1   5   0   )   ,       R   e
0030100    m   o   t   e   C   o   n   t   r   o   l   )   )  \r   E   n
0030120    q   u   e   u   e   (   c   t   x   Q   ,   I   n   i   t   i
0030140    a   l   i   z   e   C   o   n   t   e   x   t   (   A   l   l
0030160    o   c   a   t   e   (   s   y   s   Z   o   n   e   ,       (
0030200    a   l   t   o   ?       2   0   0   ,       1   5   0   )   )
0030220    ,  \r       (   a   l   t   o   ? 376 001  \0 232   g       2
0030240    0   0   ,       1   5   0   )   ,       E   c   h   o   S   e
0030260    r   v   e   r   )   )  \r   E   n   q   u   e   u   e   (   c
0030300    t   x   Q   ,   I   n   i   t   i   a   l   i   z   e   C   o
0030320    n   t   e   x   t   (   A   l   l   o   c   a   t   e   (   s
0030340    y   s   Z   o   n   e   ,       (   a   l   t   o   ?       2
0030360    0   0   ,       1   0   0   )   )   ,  \r       (   a   l   t
0030400    o   ?       2   0   0   ,       1   0   0   )   ,       O   t
0030420    h   e   r   S   p   i   g   o   t   P   r   o   c   e   s   s
0030440    )   )  \r   E   n   q   u   e   u   e   (   c   t   x   Q   ,
0030460    I   n   i   t   i   a   l   i   z   e   C   o   n   t   e   x
0030500    t   (   A   l   l   o   c   a   t   e   (   s   y   s   Z   o
0030520    n   e   ,       (   a   l   t   o   ?       4   0   0   ,    
0030540    3   0   0   )   )   ,  \r       (   a   l   t   o   ?       4
0030560    0   0   ,       3   0   0   )   ,       B   S   P   R   e   c
0030600    e   i   v   e   )   )  \r   E   n   q   u   e   u   e   (   c
0030620    t   x   Q   ,   I   n   i   t   i   a   l   i   z   e 376 001
0030640   \0 317   /   C   o   n   t   e   x   t   (   A   l   l   o   c
0030660    a   t   e   (   s   y   s   Z   o   n   e   ,       (   a   l
0030700    t   o   ?       4   0   0   ,       3   0   0   )   )   ,  \r
0030720        (   a   l   t   o   ?       4   0   0   ,       3   0   0
0030740    )   ,       E   F   T   P   R   e   c   e   i   v   e   )   )
0030760   \r   ]  \r  \f  \r   /   /   -   -   -   -   -   -   -   -   -
0031000    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0031100    -   -  \r   a   n   d       G   C   S   h   o   w   D   i   s
0031120    p   l   a   y   S   t   r   e   a   m   (   s   t   )       b
0031140    e  \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -
0031160    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0031240    -   -   - 376 001  \0   t   8   -   -   -   -   -   -   -   -
0031260    -   -   -   -  \r   [  \r   S   h   o   w   D   i   s   p   l
0031300    a   y   S   t   r   e   a   m   (   s   t   ,       D   S   b
0031320    e   l   o   w   ,       l   a   s   t   S   h   o   w   n   S
0031340    t   r   e   a   m   )  \r   l   a   s   t   S   h   o   w   n
0031360    S   t   r   e   a   m       =       s   t  \r   ]  \r  \r   /
0031400    /   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0031420    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0031500    -   -   -   -   -   -   -   -   -   -   -   -  \r   a   n   d
0031520        M   a   k   e   B   a   r   (   b   a   c   k   g   r   o
0031540    u   n   d   ,       n   L   i   n   e   s   )       =       v
0031560    a   l   o   f  \r   /   /   -   -   -   -   -   -   -   -   -
0031600    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0031640    -   -   -   -   -   -   -   - 376 001  \0 263 036   -   -   -
0031660    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0031700    -   -   -   -   -   -   -  \r   [  \r   s   t   r   u   c   t
0031720    u   r   e       B   a   r   :       [       f   d   c   b    
0031740    w   o   r   d   ;       l   d   c   b       w   o   r   d   ;
0031760        @   D   C   B       ]  \r   m   a   n   i   f   e   s   t
0032000        l   e   n   B   a   r       =       s   i   z   e       B
0032020    a   r   /   1   6  \r   l   e   t       b   a   r       =    
0032040    A   l   l   o   c   a   t   e   (   s   y   s   Z   o   n   e
0032060    ,       l   e   n   B   a   r   ,       f   a   l   s   e   ,
0032100        t   r   u   e   )  \r   Z   e   r   o   (   b   a   r   ,
0032120        l   e   n   B   a   r   )  \r   b   a   r   >   >   B   a
0032140    r   .   f   d   c   b       =       l   v       b   a   r   >
0032160    >   B   a   r   .   n   e   x   t  \r   b   a   r   >   >   B
0032200    a   r   .   l   d   c   b       =       l   v       b   a   r
0032220    >   >   B   a   r   .   n   e   x   t  \r   b   a   r   >   >
0032240    B   a   r   .   b   a   c   k   g   r   o   u   n 376  \0   J
0032260  036 272   d       =       b   a   c   k   g   r   o   u   n   d
0032300   \r   b   a   r   >   >   B   a   r   .   w   i   d   t   h    
0032320    =       0  \r   b   a   r   >   >   B   a   r   .   h   e   i
0032340    g   h   t       =       n   L   i   n   e   s  \r   r   e   s
0032360    u   l   t   i   s       b   a   r  \r   ]  \r 377  \0  \0   P
0032400    u   p   T   e   s   t   B   o   o   t   .   b   c   p   l  \0
0032420  373 224 024 027   X  \0  \0 376 001  \0   D   O   /   /       P
0032440    u   p   T   e   s   t   B   o   o   t   .   b   c   p   l    
0032460    -   -       g   r   o   u   n   d       o   u   t       s   o
0032500    m   e       u   n   d   e   f   s  \r   /   /       C   o   p
0032520    y   r   i   g   h   t       X   e   r   o   x       C   o   r
0032540    p   o   r   a   t   i   o   n       1   9   7   9  \r   /   /
0032560        L   a   s   t       m   o   d   i   f   i   e   d       J
0032600    a   n   u   a   r   y       6   ,       1   9   7   9        
0032620    4   :   3   6       P   M       b   y       B   o   g   g   s
0032640   \r  \r   e   x   t   e   r   n   a   l  \r   [  \r   /   /   o
0032660    u   t   g   o   i   n   g       p   r   o   c   e   d   u   r
0032700    e   s  \r   I   n   i   t   A   l   t   o   C   o   m   P   r
0032720    o   c   ;       I   n   i   t   A   l   t   o   E   I   A  \r
0032740   \r   /   /   o   u   t   g   o   i   n   g       s   t   a   t
0032760    i   c   s  \r   e   i   a   M   c   L   o   a   d   e   d   ;
0033000        c   p   M   c   L   o   a   d   e   d   ;       P   u   p
0033020    T   e   s   t   C   P   M   c  \r   ]  \r  \r 376 001  \0   R
0033040  266   s   t   a   t   i   c       [       e   i   a   M   c   L
0033060    o   a   d   e   d   ;       c   p   M   c   L   o   a   d   e
0033100    d   ;       P   u   p   T   e   s   t   C   P   M   c       ]
0033120   \r  \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -
0033140    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0033240   \r   l   e   t       I   n   i   t   A   l   t   o   C   o   m
0033260    P   r   o   c   (   )       b   e       [       ]  \r   /   /
0033300    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0033400    -   -   -   -   -   -   -   -   -   -   -   -  \r  \r   /   /
0033420    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0033440    - 376  \0 245 275 256   -   -   -   -   -   -   -   -   -   -
0033460    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0033540    -  \r   a   n   d       I   n   i   t   A   l   t   o   E   I
0033560    A   (   )       b   e       [       ]  \r   /   /   -   -   -
0033600    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0033700    -   -   -   -   -   -   -   -   -  \r  \r 377  \0  \0   P   u
0033720    p   T   e   s   t   B   S   P   .   b   c   p   l  \0 373 230
0033740  230   c 003  \0  \0 376 001  \0 272   }   /   /       P   u   p
0033760    T   e   s   t   B   S   P   .   b   c   p   l       -       P
0034000    u   p       p   a   c   k   a   g   e       t   e   s   t    
0034020    p   r   o   g   r   a   m  \r   /   /       C   o   p   y   r
0034040    i   g   h   t       X   e   r   o   x       C   o   r   p   o
0034060    r   a   t   i   o   n       1   9   7   9   ,       1   9   8
0034100    2  \r   /   /       L   a   s   t       m   o   d   i   f   i
0034120    e   d       F   e   b   r   u   a   r   y       1   5   ,    
0034140    1   9   8   2           5   :   2   7       P   M       b   y
0034160        B   o   g   g   s  \r  \r   g   e   t       "   P   u   p
0034200    0   .   d   e   c   l   "  \r   g   e   t       "   P   u   p
0034220    1   .   d   e   c   l   "  \r   g   e   t       "   P   u   p
0034240    R   T   P   .   d   e   c   l   "  \r   g   e   t       "   P
0034260    u   p   B   S   P   .   d   e   c   l   "  \r   g   e   t    
0034300    "   P   u   p   T   e   s   t   .   d   e   c   l   "  \r  \r
0034320    e   x   t   e   r   n   a   l  \r   [  \r   /   /   o   u   t
0034340    g   o   i   n   g       p   r   o   c 376 001  \0   a 310   e
0034360    d   u   r   e   s  \r   B   S   P   R   e   c   e   i   v   e
0034400    ;       B   S   P   S   e   n   d  \r  \r   /   /   i   n   c
0034420    o   m   i   n   g       p   r   o   c   e   d   u   r   e   s
0034440   \r   Z   e   r   o   ;       M   o   v   e   B   l   o   c   k
0034460    ;       B   l   o   c   k   E   q  \r   P   u   t   s   ;    
0034500    E   n   d   o   f   s   ;       C   l   o   s   e   s   ;    
0034520    B   l   o   c   k   ;       F   r   e   e   ;       A   l   l
0034540    o   c   a   t   e  \r   O   p   e   n   L   e   v   e   l   1
0034560    S   o   c   k   e   t   ;       C   l   o   s   e   L   e   v
0034600    e   l   1   S   o   c   k   e   t   ;       S   e   t   A   l
0034620    l   o   c   a   t   i   o   n  \r   O   p   e   n   R   T   P
0034640    S   o   c   k   e   t   ;       C   l   o   s   e   R   T   P
0034660    S   o   c   k   e   t   ;       C   o   m   p   u   t   e   T
0034700    h   r   u   p   u   t  \r   B   S   P   R   e   a   d   B   l
0034720    o   c   k   ;       B   S   P   W   r   i   t   e   B   l   o
0034740    c   k   ;       C   r   e   a   t   e   B   S   P   S   t 376
0034760  001  \0 006   3   r   e   a   m  \r   O   p   e   n   P   o   r
0035000    t   ;       P   u   t   T   e   m   p   l   a   t   e   ;    
0035020    G   e   t   S   t   r   i   n   g   ;       G   e   t   P   a
0035040    r   t   n   e   r   ;       W   s   ;       W   s   s  \r  \r
0035060    /   /   i   n   c   o   m   i   n   g       s   t   a   t   i
0035100    c   s  \r   S   t   a   t   e   ;       C   m   m   d   ;    
0035120    c   h   e   c   k   s   u   m   s   ;       c   h   e   c   k
0035140    d   a   t   a  \r   k   e   y   s   ;       d   s   p   ;    
0035160    s   y   s   Z   o   n   e   ;       p   b   i   C   o   u   n
0035200    t  \r   c   h   e   c   k   B   u   f   f   e   r   ;       s
0035220    e   n   d   P   o   r   t   ;       t   p   ;       c   t   x
0035240    Q  \r   ]  \r  \r   m   a   n   i   f   e   s   t  \r   [  \r
0035260    s   o   c   k   e   t   B   S   P   T   e   s   t       =    
0035300    6  \r   r   e   a   l   T   i   m   e   C   l   o   c   k    
0035320    =       4   3   0   b  \r   ]  \r  \r   s   t   r   u   c   t
0035340    u   r   e       B   y   t   e   ^   0   ,   0       b   y   t
0035360    e  \r  \f  \r 376 001  \0   # 304   /   /   -   -   -   -   -
0035400    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0035500    -   -   -   -   -   -   -  \r   l   e   t       B   S   P   R
0035520    e   c   e   i   v   e   (   )       b   e  \t   /   /   a    
0035540    c   o   n   t   e   x   t  \r   /   /   -   -   -   -   -   -
0035560    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0035660    -   -   -   -   -   -  \r   [  \r   l   e   t       i   n   B
0035700    u   f   f   e   r       =       A   l   l   o   c   a   t   e
0035720    (   s   y   s   Z   o   n   e   ,       2   5   6   )  \r   l
0035740    e   t       s   o   c       =       v   e   c       l   e   n
0035760    B   S   P   S   o   c  \r         376 001  \0   < 213       [
0036000   \r               O   p   e   n   L   e   v   e   l   1   S   o
0036020    c   k   e   t   (   s   o   c   ,       t   a   b   l   e    
0036040    [       0   ;       0   ;       s   o   c   k   e   t   B   S
0036060    P   T   e   s   t       ]   )  \r               l   e   t    
0036100    t   o   t   a   l       =       p   b   i   C   o   u   n   t
0036120    /   2  \r               S   e   t   A   l   l   o   c   a   t
0036140    i   o   n   (   s   o   c   ,       t   o   t   a   l   ,    
0036160    t   o   t   a   l   -   1   ,       t   o   t   a   l   -   1
0036200    )  \r               s   o   c   >   >   P   u   p   S   o   c
0036220    .   d   o   C   h   e   c   k   s   u   m       =       c   h
0036240    e   c   k   s   u   m   s  \r               O   p   e   n   R
0036260    T   P   S   o   c   k   e   t   (   s   o   c   ,       0   ,
0036300        m   o   d   e   L   i   s   t   e   n   A   n   d   R   e
0036320    t   u   r   n   )  \r               B   l   o   c   k   (   )
0036340        r   e   p   e   a   t   u   n   t   i   l       s   o   c
0036360    >   >   B   S   P   S   o   c   .   s   t   a   t   e 376 001
0036400   \0 261  \a       e   q       s   t   a   t   e   O   p   e   n
0036420   \r               l   e   t       s   t   r       =       C   r
0036440    e   a   t   e   B   S   P   S   t   r   e   a   m   (   s   o
0036460    c   )  \r                           [  \r                    
0036500        i   f       B   S   P   R   e   a   d   B   l   o   c   k
0036520    (   s   t   r   ,       i   n   B   u   f   f   e   r   ,    
0036540    0   ,       5   1   2   ,       1   2   0   0   0   )       l
0036560    s       5   1   2       b   r   e   a   k           /   /   2
0036600        m   i   n  \r                           i   f       c   h
0036620    e   c   k   d   a   t   a       t   h   e   n       u   n   l
0036640    e   s   s       B   l   o   c   k   E   q   (   c   h   e   c
0036660    k   B   u   f   f   e   r   ,       i   n   B   u   f   f   e
0036700    r   ,       2   5   6   )       d   o  \r                    
0036720                    [       W   s   (   "   *   N   R   c   v   r
0036740        D   a   t   a       C   o   m   p   a   r   e       E   r
0036760    r   o   r   .   "   )   ;       b   r   e   a   k       ]  \r
0037000              376 001  \0 311 340               ]       r   e   p
0037020    e   a   t  \r               C   l   o   s   e   s   (   s   t
0037040    r   )  \r               ]       r   e   p   e   a   t  \r   ]
0037060   \r  \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -
0037100    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0037200   \r   a   n   d       B   S   P   S   e   n   d   (   )       b
0037220    e  \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -
0037240    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0037340   \r   [  \r   W   s   (   "   B   S   P       S   e   n   d   .
0037360            "   )  \r   l   e   t       s   o   c       =       v
0037400    e   c       l   e   n   B   S 376 001  \0   b 274   P   S   o
0037420    c  \r   t   e   s   t       C   m   m   d       e   q       0
0037440   \r               i   f   n   o   t       [       C   m   m   d
0037460        =       0   ;       O   p   e   n   L   e   v   e   l   1
0037500    S   o   c   k   e   t   (   s   o   c   ,       0   ,       s
0037520    e   n   d   P   o   r   t   )       ]  \r               i   f
0037540    s   o       u   n   l   e   s   s       O   p   e   n   P   o
0037560    r   t   (   "   R   e   c   e   i   v   e       P   o   r   t
0037600    :       "   ,       s   o   c   ,       0   ,       s   o   c
0037620    k   e   t   B   S   P   T   e   s   t   )       r   e   t   u
0037640    r   n  \r   l   e   t       t   o   t   a   l       =       p
0037660    b   i   C   o   u   n   t   /   2  \r   S   e   t   A   l   l
0037700    o   c   a   t   i   o   n   (   s   o   c   ,       t   o   t
0037720    a   l   ,       t   o   t   a   l   -   1   ,       t   o   t
0037740    a   l   -   1   )  \r   W   s   (   "   -       C   h   e   c
0037760    k   s   u   m   s       "   )   ;       W   s   (   c   h   e
0040000    c   k   s   u   m   s       ?       "   e   n   a 376 001  \0
0040020    R   "   b   l   e   d   *   N   "   ,       "   d   i   s   a
0040040    b   l   e   d   *   N   "   )  \r   s   o   c   >   >   P   u
0040060    p   S   o   c   .   d   o   C   h   e   c   k   s   u   m    
0040100    =       c   h   e   c   k   s   u   m   s  \r   t   e   s   t
0040120        O   p   e   n   R   T   P   S   o   c   k   e   t   (   s
0040140    o   c   )  \r               i   f   s   o       W   s   (   "
0040160    C   o   n   n   e   c   t   i   o   n       o   p   e   n   .
0040200            '   !   '       =       1   0   ,   0   0   0       b
0040220    y   t   e   s   *   N   "   )  \r               i   f   n   o
0040240    t       [       W   s   (   "   F   a   i   l   e   d   .   "
0040260    )   ;       C   l   o   s   e   L   e   v   e   l   1   S   o
0040300    c   k   e   t   (   s   o   c   )   ;       r   e   t   u   r
0040320    n       ]  \r   S   t   a   t   e       =       s   t   a   t
0040340    e   B   S   P  \r   l   e   t       s   t   r       =       C
0040360    r   e   a   t   e   B   S   P   S   t   r   e   a   m   (   s
0040400    o   c   )  \r   Z   e   r   o   (   t   p   ,       l   e   n
0040420    T   P 376 001  \0 274 315   )  \r   t   p   >   >   T   P   .
0040440    t   i   m   e   r       =       @   r   e   a   l   T   i   m
0040460    e   C   l   o   c   k  \r               [  \r               u
0040500    n   l   e   s   s       B   S   P   W   r   i   t   e   B   l
0040520    o   c   k   (   s   t   r   ,       c   h   e   c   k   B   u
0040540    f   f   e   r   ,       0   ,       5   1   2   )       t   h
0040560    e   n  \r                           [       W   s   (   "   *
0040600    N   B   S   P   W   r   i   t   e   B   l   o   c   k       F
0040620    a   i   l   e   d   "   )   ;       b   r   e   a   k       ]
0040640   \r               t   p   >   >   T   P   .   c   o   u   n   t
0040660        =       t   p   >   >   T   P   .   c   o   u   n   t    
0040700    +       5   1   2  \r               i   f       t   p   >   >
0040720    T   P   .   c   o   u   n   t       g   e       1   0   0   0
0040740    0       t   h   e   n  \r                           [  \r    
0040760                        t   p   >   >   T   P   .   c   o   u   n
0041000    t       =       t   p   >   >   T   P   .   c   o   u   n   t
0041020        -       1   0   0   0 376 001  \0 203 376   0  \r        
0041040                    P   u   t   s   (   d   s   p   ,       $   !
0041060    )  \r                           t   p   >   >   T   P   .   b
0041100    i   g   C   o   u   n   t       =       t   p   >   >   T   P
0041120    .   b   i   g   C   o   u   n   t   +   1  \r                
0041140            i   f       t   p   >   >   T   P   .   b   i   g   C
0041160    o   u   n   t       e   q       5   0       t   h   e   n    
0041200        /   /   5   0   0   ,   0   0   0       b   y   t   e   s
0041220   \r                                       [  \r                
0041240                        C   o   m   p   u   t   e   T   h   r   u
0041260    p   u   t   (   t   p   )  \r                                
0041300        t   p   >   >   T   P   .   b   i   g   C   o   u   n   t
0041320        =       0  \r                                       t   p
0041340    >   >   T   P   .   t   i   m   e   r       =       @   r   e
0041360    a   l   T   i   m   e   C   l   o   c   k  \r                
0041400                        ]  \r                           ]  \r    
0041420            ]       r   e   p   e   a   t   w   h 376  \0 222 240
0041440  373   i   l   e       E   n   d   o   f   s   (   k   e   y   s
0041460    )       &       s   o   c   >   >   B   S   P   S   o   c   .
0041500    s   t   a   t   e       e   q       s   t   a   t   e   O   p
0041520    e   n       &       C   m   m   d       e   q       0  \r   t
0041540    e   s   t       C   l   o   s   e   s   (   s   t   r   )  \r
0041560                i   f   s   o       W   s   (   "   *   N   C   l
0041600    o   s   e   d       c   l   e   a   n   l   y   "   )  \r    
0041620            i   f   n   o   t       W   s   (   "   *   N   C   l
0041640    o   s   e   d       u   n   c   l   e   a   n   l   y   "   )
0041660   \r   ]  \r 377  \0  \0   P   u   p   T   e   s   t   E   F   T
0041700    P   .   b   c   p   l  \0 373 230 230   c   _  \0  \0 376 001
0041720   \0   8 263   /   /       P   u   p   T   e   s   t   E   F   T
0041740    P   .   b   c   p   l       -       P   u   p       p   a   c
0041760    k   a   g   e       t   e   s   t       p   r   o   g   r   a
0042000    m  \r   /   /       C   o   p   y   r   i   g   h   t       X
0042020    e   r   o   x       C   o   r   p   o   r   a   t   i   o   n
0042040        1   9   7   9   ,       1   9   8   2  \r   /   /       L
0042060    a   s   t       m   o   d   i   f   i   e   d       F   e   b
0042100    r   u   a   r   y       1   5   ,       1   9   8   2        
0042120    5   :   2   8       P   M       b   y       B   o   g   g   s
0042140   \r  \r   g   e   t       "   P   u   p   E   F   T   P   .   d
0042160    e   c   l   "  \r   g   e   t       "   P   u   p   T   e   s
0042200    t   .   d   e   c   l   "  \r  \r   e   x   t   e   r   n   a
0042220    l  \r   [  \r   /   /   o   u   t   g   o   i   n   g       p
0042240    r   o   c   e   d   u   r   e   s  \r   E   F   T   P   R   e
0042260    c   e   i   v   e   ;       E   F   T   P   S   e   n   d  \r
0042300   \r   /   /   i   n   c   o   m   i   n   g       p   r   o   c
0042320    e   d   u 376 001  \0   @   }   r   e   s  \r   G   e   t   S
0042340    t   r   i   n   g   ;       G   e   t   P   a   r   t   n   e
0042360    r  \r   Z   e   r   o   ;       M   o   v   e   B   l   o   c
0042400    k   ;       B   l   o   c   k   E   q   ;       B   l   o   c
0042420    k  \r   P   u   t   s   ;       E   n   d   o   f   s   ;    
0042440    F   r   e   e   ;       A   l   l   o   c   a   t   e  \r   S
0042460    e   t   A   l   l   o   c   a   t   i   o   n   ;       C   o
0042500    m   p   u   t   e   T   h   r   u   p   u   t  \r   O   p   e
0042520    n   P   o   r   t   ;       P   u   t   T   e   m   p   l   a
0042540    t   e   ;       W   s   ;       W   s   s  \r   O   p   e   n
0042560    E   F   T   P   S   o   c   ;       C   l   o   s   e   E   F
0042600    T   P   S   o   c   ;       S   e   n   d   E   F   T   P   E
0042620    n   d  \r   S   e   n   d   E   F   T   P   B   l   o   c   k
0042640    ;       R   e   c   e   i   v   e   E   F   T   P   B   l   o
0042660    c   k  \r  \r   /   /   i   n   c   o   m   i   n   g       s
0042700    t   a   t   i   c   s  \r   S   t   a   t   e   ;       C   m
0042720    m   d   ;       c   h   e   c 376 001  \0 370 211   k   s   u
0042740    m   s   ;       c   h   e   c   k   d   a   t   a  \r   k   e
0042760    y   s   ;       d   s   p   ;       s   y   s   Z   o   n   e
0043000    ;       p   b   i   C   o   u   n   t  \r   c   h   e   c   k
0043020    B   u   f   f   e   r   ;       s   e   n   d   P   o   r   t
0043040    ;       t   p  \r   ]  \r  \r   m   a   n   i   f   e   s   t
0043060        r   e   a   l   T   i   m   e   C   l   o   c   k       =
0043100        4   3   0   b  \r  \f  \r   /   /   -   -   -   -   -   -
0043120    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0043220    -   -   -   -   -   -  \r   l   e   t       E   F   T   P   R
0043240    e   c   e   i   v   e   (   )       b   e  \t   /   /   a    
0043260    c   o   n   t   e   x   t  \r   /   /   -   -   -   -   -   -
0043300    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0043320    -   -   -   -   -   -   -   -   -   -   -   -   - 376 001  \0
0043340  362 027   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0043360    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0043400    -   -   -   -   -   -   -   -   -   -   -  \r   [  \r   l   e
0043420    t       i   n   B   u   f   f   e   r       =       A   l   l
0043440    o   c   a   t   e   (   s   y   s   Z   o   n   e   ,       2
0043460    5   6   )  \r   l   e   t       s   o   c       =       v   e
0043500    c       l   e   n   E   F   T   P   S   o   c  \r            
0043520    [  \r               O   p   e   n   E   F   T   P   S   o   c
0043540    (   s   o   c   ,       t   a   b   l   e       [       0   ;
0043560        0   ;       s   o   c   k   e   t   E   F   T   P   R   e
0043600    c   e   i   v   e       ]   ,       0   )  \r               l
0043620    e   t       t   o   t   a   l       =       p   b   i   C   o
0043640    u   n   t   /   2  \r               S   e   t   A   l   l   o
0043660    c   a   t   i   o   n   (   s   o   c   ,       t   o   t   a
0043700    l   ,       t   o   t   a   l   -   1   ,       t   o   t   a
0043720    l   -   1   )  \r               s   o   c   >   >   P   u   p
0043740    S   o 376 001  \0 005 216   c   .   d   o   C   h   e   c   k
0043760    s   u   m       =       c   h   e   c   k   s   u   m   s  \r
0044000                w   h   i   l   e       R   e   c   e   i   v   e
0044020    E   F   T   P   B   l   o   c   k   (   s   o   c   ,       i
0044040    n   B   u   f   f   e   r   ,       5   1   2   ,       -   1
0044060    )       e   q       5   1   2       d   o  \r                
0044100            i   f       c   h   e   c   k   d   a   t   a       t
0044120    h   e   n       u   n   l   e   s   s       B   l   o   c   k
0044140    E   q   (   c   h   e   c   k   B   u   f   f   e   r   ,    
0044160    i   n   B   u   f   f   e   r   ,       2   5   6   )       d
0044200    o  \r                                       [       W   s   (
0044220    "   *   N   R   c   v   r       D   a   t   a       C   o   m
0044240    p   a   r   e       E   r   r   o   r   .   "   )   ;       b
0044260    r   e   a   k       ]  \r               C   l   o   s   e   E
0044300    F   T   P   S   o   c   (   s   o   c   )  \r               ]
0044320        r   e   p   e   a   t  \r   ]  \r  \r   /   /   -   -   -
0044340    -   -   -   -   -   -   - 376 001  \0 375  \0   -   -   -   -
0044360    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0044440    -   -   -   -   -   -   -   -   -   -   -   -   -   -  \r   a
0044460    n   d       E   F   T   P   S   e   n   d   (   )       b   e
0044500   \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -   -
0044520    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0044600    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -  \r
0044620    [  \r   W   s   (   "   E   F   T   P       S   e   n   d   .
0044640            "   )  \r   l   e   t       s   o   c       =       v
0044660    e   c       l   e   n   E   F   T   P   S   o   c  \r   t   e
0044700    s   t       C   m   m   d       e   q       0  \r            
0044720    i   f   s   o  \r                           [  \r            
0044740                l   e   t       n   a   m   e     376 001  \0   y
0044760    6   =       v   e   c       4   0  \r                        
0045000    u   n   l   e   s   s       G   e   t   S   t   r   i   n   g
0045020    (   "   R   e   c   e   i   v   e       P   o   r   t   :    
0045040    "   ,       n   a   m   e   ,       t   r   u   e   ,       f
0045060    a   l   s   e   )       r   e   t   u   r   n  \r            
0045100                i   f       G   e   t   P   a   r   t   n   e   r
0045120    (   n   a   m   e   ,       d   s   p   ,       s   e   n   d
0045140    P   o   r   t   ,       0   ,       s   o   c   k   e   t   E
0045160    F   T   P   R   e   c   e   i   v   e   )       b   r   e   a
0045200    k  \r                           ]       r   e   p   e   a   t
0045220   \r               i   f   n   o   t  \r                        
0045240    [  \r                           s   e   n   d   P   o   r   t
0045260    >   >   P   o   r   t   .   s   o   c   k   e   t   ^   1    
0045300    =       0  \r                           s   e   n   d   P   o
0045320    r   t   >   >   P   o   r   t   .   s   o   c   k   e   t   ^
0045340    2       =       s   o   c   k   e   t   E   F   T   P   R   e
0045360    c 376 001  \0   " 325   e   i   v   e  \r                    
0045400        ]  \r   O   p   e   n   E   F   T   P   S   o   c   (   s
0045420    o   c   ,       0   ,       s   e   n   d   P   o   r   t   )
0045440   \r   l   e   t       t   o   t   a   l       =       p   b   i
0045460    C   o   u   n   t   /   2  \r   S   e   t   A   l   l   o   c
0045500    a   t   i   o   n   (   s   o   c   ,       t   o   t   a   l
0045520    ,       t   o   t   a   l   -   1   ,       t   o   t   a   l
0045540    -   1   )  \r   W   s   (   "   -       C   h   e   c   k   s
0045560    u   m   s       "   )   ;       W   s   (   c   h   e   c   k
0045600    s   u   m   s       ?       "   e   n   a   b   l   e   d   .
0045620    *   N   "   ,       "   d   i   s   a   b   l   e   d   .   *
0045640    N   "   )  \r   s   o   c   >   >   P   u   p   S   o   c   .
0045660    d   o   C   h   e   c   k   s   u   m       =       c   h   e
0045700    c   k   s   u   m   s  \r   t   e   s   t       S   e   n   d
0045720    E   F   T   P   B   l   o   c   k   (   s   o   c   ,       c
0045740    h   e   c   k   B   u   f   f   e   r   ,       5   1   2   ,
0045760        1   2   0   0   0 376 001  \0  \v 272   )       e   q    
0046000    5   1   2  \r               i   f   s   o       W   s   (   "
0046020    C   o   n   n   e   c   t   i   o   n       o   p   e   n   .
0046040            '   !   '       =       1   0   ,   0   0   0       b
0046060    y   t   e   s   *   N   "   )  \r               i   f   n   o
0046100    t       [       W   s   (   "   F   a   i   l   e   d   .   "
0046120    )   ;       C   l   o   s   e   E   F   T   P   S   o   c   (
0046140    s   o   c   )   ;       r   e   t   u   r   n       ]  \r   S
0046160    t   a   t   e       =       s   t   a   t   e   E   F   T   P
0046200   \r   Z   e   r   o   (   t   p   ,       l   e   n   T   P   )
0046220   \r   t   p   >   >   T   P   .   t   i   m   e   r       =    
0046240    @   r   e   a   l   T   i   m   e   C   l   o   c   k  \r    
0046260            [  \r               i   f       S   e   n   d   E   F
0046300    T   P   B   l   o   c   k   (   s   o   c   ,       c   h   e
0046320    c   k   B   u   f   f   e   r   ,       5   1   2   ,       1
0046340    2   0   0   0   )       n   e       5   1   2       t   h   e
0046360    n  \r                           [       W 376 001  \0 024  \a
0046400    s   (   "   *   N   S   e   n   d   E   F   T   P   B   l   o
0046420    c   k       F   a   i   l   e   d   "   )   ;       b   r   e
0046440    a   k       ]  \r               t   p   >   >   T   P   .   c
0046460    o   u   n   t       =       t   p   >   >   T   P   .   c   o
0046500    u   n   t       +       5   1   2  \r               i   f    
0046520    t   p   >   >   T   P   .   c   o   u   n   t       g   e    
0046540    1   0   0   0   0       t   h   e   n  \r                    
0046560        [  \r                           t   p   >   >   T   P   .
0046600    c   o   u   n   t       =       t   p   >   >   T   P   .   c
0046620    o   u   n   t       -       1   0   0   0   0  \r            
0046640                P   u   t   s   (   d   s   p   ,   $   !   )  \r
0046660                            t   p   >   >   T   P   .   b   i   g
0046700    C   o   u   n   t       =       t   p   >   >   T   P   .   b
0046720    i   g   C   o   u   n   t   +   1  \r                        
0046740    i   f       t   p   >   >   T   P   .   b   i   g   C   o   u
0046760    n   t       e   q       5   0       t   h   e   n           /
0047000  376 001  \0 367 017   /   5   0   0   ,   0   0   0       b   y
0047020    t   e   s  \r                                       [  \r    
0047040                                    C   o   m   p   u   t   e   T
0047060    h   r   u   p   u   t   (   t   p   )  \r                    
0047100                    t   p   >   >   T   P   .   b   i   g   C   o
0047120    u   n   t       =       0  \r                                
0047140        t   p   >   >   T   P   .   t   i   m   e   r       =    
0047160    @   r   e   a   l   T   i   m   e   C   l   o   c   k  \r    
0047200                                    ]  \r                        
0047220    ]  \r               ]       r   e   p   e   a   t   w   h   i
0047240    l   e       E   n   d   o   f   s   (   k   e   y   s   )    
0047260    &       C   m   m   d       e   q       0  \r   t   e   s   t
0047300        S   e   n   d   E   F   T   P   E   n   d   (   s   o   c
0047320    ,       3   0   0   0   )  \r               i   f   s   o    
0047340    W   s   (   "   *   N   C   l   o   s   e   d       c   l   e
0047360    a   n   l   y   "   )  \r               i   f   n   o   t    
0047400    W   s   (   "   * 376  \0   ( 035   S   N   C   l   o   s   e
0047420    d       u   n   c   l   e   a   n   l   y   "   )  \r   C   l
0047440    o   s   e   E   F   T   P   S   o   c   (   s   o   c   )  \r
0047460    ]  \r 377  \0  \0   P   u   p   T   e   s   t   E   c   h   o
0047500    .   b   c   p   l  \0 373 230 230   c 247  \0  \0 376 001  \0
0047520  224 253   /   /       P   u   p   T   e   s   t   E   c   h   o
0047540    .   b   c   p   l  \r   /   /       C   o   p   y   r   i   g
0047560    h   t       X   e   r   o   x       C   o   r   p   o   r   a
0047600    t   i   o   n       1   9   7   9   ,       1   9   8   2  \r
0047620    /   /       L   a   s   t       m   o   d   i   f   i   e   d
0047640        F   e   b   r   u   a   r   y       1   5   ,       1   9
0047660    8   2           5   :   3   0       P   M       b   y       B
0047700    o   g   g   s  \r  \r   g   e   t       "   P   u   p   0   .
0047720    d   e   c   l   "  \r   g   e   t       "   P   u   p   1   .
0047740    d   e   c   l   "  \r   g   e   t       "   P   u   p   T   e
0047760    s   t   .   d   e   c   l   "  \r  \r   e   x   t   e   r   n
0050000    a   l  \r   [  \r   /   /   o   u   t   g   o   i   n   g    
0050020    p   r   o   c   e   d   u   r   e   s  \r   E   c   h   o   S
0050040    e   r   v   e   r   ;       E   c   h   o   U   s   e   r  \r
0050060   \r   /   /   i   n   c   o   m   i   n   g       p   r   o   c
0050100    e   d   u   r   e   s  \r   P   u   t   s   ;       E   n   d
0050120    o   f 376 001  \0 370 036   s   ;       M   o   v   e   B   l
0050140    o   c   k   ;       Z   e   r   o  \r   G   e   t   P   B   I
0050160    ;       R   e   l   e   a   s   e   P   B   I   ;       E   x
0050200    c   h   a   n   g   e   P   o   r   t   s   ;       H   L   o
0050220    o   k   u   p  \r   O   p   e   n   L   e   v   e   l   1   S
0050240    o   c   k   e   t   ;       C   o   m   p   l   e   t   e   P
0050260    u   p   ;       C   l   o   s   e   L   e   v   e   l   1   S
0050300    o   c   k   e   t  \r   S   e   t   T   i   m   e   r   ;    
0050320    T   i   m   e   r   H   a   s   E   x   p   i   r   e   d   ;
0050340        E   n   q   u   e   u   e   ;       D   e   q   u   e   u
0050360    e   ;       B   l   o   c   k  \r   O   t   h   e   r   S   p
0050400    i   g   o   t   ;       P   r   i   n   t   P   o   r   t   ;
0050420        O   p   e   n   P   o   r   t  \r   D   i   v   i   d   e
0050440    3   2   x   1   6   ;       B   l   o   c   k   E   q   ;    
0050460    D   o   u   b   l   e   I   n   c   r   e   m   e   n   t  \r
0050500    P   u   t   T   e   m   p   l   a   t   e   ;       W   s  \r
0050520   \r   /   /   i   n   c   o 376 001  \0 341   M   m   i   n   g
0050540        s   t   a   t   i   c   s  \r   d   s   p   ;       k   e
0050560    y   s  \r   p   u   p   R   T   ;       m   a   x   P   u   p
0050600    D   a   t   a   B   y   t   e   s  \r   C   m   m   d   ;    
0050620    c   h   e   c   k   s   u   m   s   ;       c   h   e   c   k
0050640    d   a   t   a   ;       s   e   n   d   P   o   r   t   ;    
0050660    c   h   e   c   k   B   u   f   f   e   r  \r   ]  \r  \r   m
0050700    a   n   i   f   e   s   t  \r   [  \r   s   o   c   k   e   t
0050720    E   c   h   o       =       5  \r   t   y   p   e   E   c   h
0050740    o   M   e       =       1  \r   t   y   p   e   I   m   A   n
0050760    E   c   h   o       =       2  \r   ]  \r  \r   s   t   r   u
0051000    c   t   u   r   e       B   y   t   e   ^   0   ,   0       b
0051020    y   t   e  \r  \f  \r   /   /   -   -   -   -   -   -   -   -
0051040    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0051120    -   -   -   -   -   -   -   -   -   -   -   - 376 001  \0 202
0051140   \b   -   -   -   -   -   -   -   -  \r   l   e   t       E   c
0051160    h   o   S   e   r   v   e   r   (   )       b   e  \t   /   /
0051200    a       c   o   n   t   e   x   t  \r   /   /   -   -   -   -
0051220    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0051320    -   -   -   -   -   -   -   -  \r   [  \r   l   e   t       s
0051340    e   r   v   e   r   S   o   c       =       v   e   c       l
0051360    e   n   P   u   p   S   o   c  \r   O   p   e   n   L   e   v
0051400    e   l   1   S   o   c   k   e   t   (   s   e   r   v   e   r
0051420    S   o   c   ,       t   a   b   l   e       [       0   ;    
0051440    0   ;       s   o   c   k   e   t   E   c   h   o       ]   )
0051460   \r               [  \r               B   l   o   c   k   (   )
0051500        r   e   p   e   a   t   u   n   t   i   l       s   e   r
0051520    v   e   r   S   o   c   >   >   P   u   p   S   o   c   .   i
0051540    Q 376 001  \0   T 365   .   h   e   a   d       n   e       0
0051560   \r               l   e   t       p   b   i       =       D   e
0051600    q   u   e   u   e   (   l   v       s   e   r   v   e   r   S
0051620    o   c   >   >   P   u   p   S   o   c   .   i   Q   )  \r    
0051640            t   e   s   t       p   b   i   >   >   P   B   I   .
0051660    p   u   p   .   t   y   p   e       e   q       t   y   p   e
0051700    E   c   h   o   M   e  \r                           i   f   n
0051720    o   t       O   t   h   e   r   S   p   i   g   o   t   (   p
0051740    b   i   )  \r                           i   f   s   o  \r    
0051760                                    [  \r                        
0052000                E   x   c   h   a   n   g   e   P   o   r   t   s
0052020    (   p   b   i   )  \r                                       /
0052040    /   c   o   m   p   u   t   e       c   h   e   c   k   s   u
0052060    m       o   n       o   u   t   g   o   i   n   g       p   a
0052100    c   k   e   t  \r                                       /   /
0052120        i   f       i   n   c   o   m   i   n   g       p   a   c
0052140    k   e   t       c   o 376 001  \0 304 264   m   p   u   t   e
0052160    d       i   t   .  \r                                       s
0052200    e   r   v   e   r   S   o   c   >   >   P   u   p   S   o   c
0052220    .   d   o   C   h   e   c   k   s   u   m       =  \r        
0052240                                    p   b   i   !   (   l   e   n
0052260    P   B   I   O   v   e   r   h   e   a   d   +   (   p   b   i
0052300    >   >   P   B   I   .   p   u   p   .   l   e   n   g   t   h
0052320    -   1   )       r   s   h   i   f   t       1   )       n   e
0052340        -   1  \r                                       C   o   m
0052360    p   l   e   t   e   P   u   p   (   p   b   i   ,       t   y
0052400    p   e   I   m   A   n   E   c   h   o   )  \r                
0052420                        s   e   r   v   e   r   S   o   c   >   >
0052440    P   u   p   S   o   c   .   d   o   C   h   e   c   k   s   u
0052460    m       =       t   r   u   e  \r                            
0052500            P   u   t   s   (   d   s   p   ,       $   $   )  \r
0052520                                        ]  \r               ]    
0052540    r   e   p   e   a   t  \r   ]  \r  \r   / 376 001  \0 273 263
0052560    /   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0052600    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0052660    -   -   -   -   -   -   -   -   -   -   -   -   -  \r   a   n
0052700    d       E   c   h   o   U   s   e   r   (   )       b   e  \r
0052720    /   /   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0052740    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0053020    -   -   -   -   -   -   -   -   -   -   -   -   -   -  \r   [
0053040   \r   l   e   t       u   s   e   r   S   o   c       =       v
0053060    e   c       l   e   n   P   u   p   S   o   c  \r   t   e   s
0053100    t       C   m   m   d       e   q       0  \r               i
0053120    f   n   o   t       [       C   m   m   d       =       0   ;
0053140        O   p   e   n   L   e   v   e   l   1   S   o   c   k   e
0053160  376 001  \0   M 267   t   (   u   s   e   r   S   o   c   ,    
0053200    0   ,       s   e   n   d   P   o   r   t   )       ]  \r    
0053220            i   f   s   o       u   n   l   e   s   s       O   p
0053240    e   n   P   o   r   t   (   "   E   c   h   o       t   o   :
0053260        "   ,       u   s   e   r   S   o   c   ,       0   ,    
0053300    s   o   c   k   e   t   E   c   h   o   )       r   e   t   u
0053320    r   n  \r  \r   W   s   (   "   -       C   h   e   c   k   s
0053340    u   m   s       "   )   ;       W   s   (   c   h   e   c   k
0053360    s   u   m   s       ?       "   e   n   a   b   l   e   d   "
0053400    ,       "   d   i   s   a   b   l   e   d   "   )  \r   W   s
0053420    (   "   ,       D   a   t   a       c   h   e   c   k   i   n
0053440    g       "   )   ;       W   s   (   c   h   e   c   k   d   a
0053460    t   a   ?       "   e   n   a   b   l   e   d   *   N   "   ,
0053500        "   d   i   s   a   b   l   e   d   *   N   "   )  \r   u
0053520    s   e   r   S   o   c   >   >   P   u   p   S   o   c   .   d
0053540    o   C   h   e   c   k   s   u   m       =       c   h   e   c
0053560    k   s   u   m   s 376 001  \0 365 342  \r  \r   P   r   i   n
0053600    t   P   o   r   t   (   l   v       u   s   e   r   S   o   c
0053620    >   >   P   u   p   S   o   c   .   l   c   l   P   o   r   t
0053640    )   ;       W   s   (   "       -   >       "   )  \r   l   e
0053660    t       r   t   e       =       H   L   o   o   k   u   p   (
0053700    p   u   p   R   T   ,       u   s   e   r   S   o   c   >   >
0053720    P   u   p   S   o   c   .   f   r   n   P   o   r   t   .   n
0053740    e   t   )  \r   i   f       r   t   e       n   e       0    
0053760    &       r   t   e   >   >   R   T   E   .   h   o   p   s    
0054000    n   e       0       t   h   e   n  \r               P   u   t
0054020    T   e   m   p   l   a   t   e   (   d   s   p   ,       "   [
0054040    $   U   O   #   $   U   O   #   ]       -   >       "   ,  \r
0054060                    r   t   e   >   >   R   T   E   .   n   d   b
0054100    >   >   N   D   B   .   l   o   c   a   l   N   e   t   ,    
0054120    r   t   e   >   >   R   T   E   .   h   o   s   t   )  \r   P
0054140    r   i   n   t   P   o   r   t   (   l   v       u   s   e   r
0054160    S   o   c   >   >   P   u   p   S   o 376 001  \0  \f 020   c
0054200    .   f   r   n   P   o   r   t   )  \r  \r   l   e   t       o
0054220    u   t       =       v   e   c       6   ;       Z   e   r   o
0054240    (   o   u   t   ,       6   )  \r   l   e   t       i   n   ,
0054260        i   n   T   i   m   e   s   1   0   0       =       o   u
0054300    t   +   2   ,       o   u   t   +   4  \r   l   e   t       n
0054320    u   m   D   a   t   a   B   y   t   e   s   ,       n   u   m
0054340    D   a   t   a   W   o   r   d   s   ,       p   u   p   i   d
0054360        =       m   a   x   P   u   p   D   a   t   a   B   y   t
0054400    e   s   ,       0   ,       0  \r  \r   w   h   i   l   e    
0054420    E   n   d   o   f   s   (   k   e   y   s   )       &       C
0054440    m   m   d       e   q       0       d   o  \r               [
0054460   \r               l   e   t       p   b   i       =       G   e
0054500    t   P   B   I   (   u   s   e   r   S   o   c   )  \r        
0054520        /   /   p   a   c   k   e   t   s       g   e   t       l
0054540    o   n   g   e   r       b   y       1       b   y   t   e    
0054560    e   a   c   h       t   i   m   e   .  \r               n 376
0054600  001  \0 205 271   u   m   D   a   t   a   B   y   t   e   s    
0054620    =       n   u   m   D   a   t   a   B   y   t   e   s       +
0054640    1  \r               i   f       n   u   m   D   a   t   a   B
0054660    y   t   e   s       g   r       m   a   x   P   u   p   D   a
0054700    t   a   B   y   t   e   s       t   h   e   n       n   u   m
0054720    D   a   t   a   B   y   t   e   s       =       0  \r        
0054740        n   u   m   D   a   t   a   W   o   r   d   s       =    
0054760    (   n   u   m   D   a   t   a   B   y   t   e   s       +   1
0055000    )   /   2  \r               p   u   p   i   d       =       p
0055020    u   p   i   d       +   1  \r               p   b   i   >   >
0055040    P   B   I   .   p   u   p   .   i   d   ^   1       =       0
0055060   \r               p   b   i   >   >   P   B   I   .   p   u   p
0055100    .   i   d   ^   2       =       p   u   p   i   d  \r        
0055120        M   o   v   e   B   l   o   c   k   (   l   v       p   b
0055140    i   >   >   P   B   I   .   p   u   p   .   b   y   t   e   s
0055160    ,       c   h   e   c   k   B   u   f   f   e   r   ,       n
0055200    u   m   D   a 376 001  \0 227 366   t   a   W   o   r   d   s
0055220    )  \r               C   o   m   p   l   e   t   e   P   u   p
0055240    (   p   b   i   ,       t   y   p   e   E   c   h   o   M   e
0055260    ,       n   u   m   D   a   t   a   B   y   t   e   s   +   p
0055300    u   p   O   v   B   y   t   e   s   )  \r               D   o
0055320    u   b   l   e   I   n   c   r   e   m   e   n   t   (   o   u
0055340    t   )  \r              \r               l   e   t       t   i
0055360    m   e   O   u   t       =       n   i   l   ;       S   e   t
0055400    T   i   m   e   r   (   l   v       t   i   m   e   O   u   t
0055420    ,       1   5   0   )           /   /   1   .   5       s   e
0055440    c   o   n   d   s  \r                           [  \r        
0055460                    B   l   o   c   k   (   )       r   e   p   e
0055500    a   t   u   n   t   i   l       u   s   e   r   S   o   c   >
0055520    >   P   u   p   S   o   c   .   i   Q   .   h   e   a   d    
0055540    %  \r                               T   i   m   e   r   H   a
0055560    s   E   x   p   i   r   e   d   (   l   v       t   i   m   e
0055600    O   u   t   )  \r                 376 001  \0 211 263        
0055620    p   b   i       =       D   e   q   u   e   u   e   (   l   v
0055640        u   s   e   r   S   o   c   >   >   P   u   p   S   o   c
0055660    .   i   Q   )  \r                           i   f       p   b
0055700    i       e   q       0       t   h   e   n       [       P   u
0055720    t   s   (   d   s   p   ,       $   ?   )   ;       b   r   e
0055740    a   k       ]  \r                           i   f       p   b
0055760    i   >   >   P   B   I   .   p   u   p   .   t   y   p   e    
0056000    n   e       t   y   p   e   I   m   A   n   E   c   h   o    
0056020    t   h   e   n  \r                                       [    
0056040    O   t   h   e   r   S   p   i   g   o   t   (   p   b   i   )
0056060    ;       l   o   o   p       ]  \r                           D
0056100    o   u   b   l   e   I   n   c   r   e   m   e   n   t   (   i
0056120    n   )   ;       D   o   u   b   l   e   I   n   c   r   e   m
0056140    e   n   t   (   i   n   T   i   m   e   s   1   0   0   ,    
0056160    1   0   0   )  \r                           /   /   n   o   t
0056200    e       t   h   a   t       i   f       t   h   e   r 376 001
0056220   \0 303   @   e       i   s       a       '   g   a   r   b   a
0056240    g   e   '       b   y   t   e       a   t       t   h   e    
0056260    e   n   d       o   f       t   h   e       p   a   c   k   e
0056300    t   ,  \r                           /   /       i   t       h
0056320    a   s       a       k   n   o   w   n       v   a   l   u   e
0056340        a   n   d       w   e       c   h   e   c   k       i   t
0056360    .  \r                           i   f       c   h   e   c   k
0056400    d   a   t   a       &       n   u   m   D   a   t   a   B   y
0056420    t   e   s       g   r       0       t   h   e   n  \r        
0056440                                u   n   l   e   s   s       B   l
0056460    o   c   k   E   q   (   c   h   e   c   k   B   u   f   f   e
0056500    r   ,       l   v       p   b   i   >   >   P   B   I   .   p
0056520    u   p   .   b   y   t   e   s   ,       n   u   m   D   a   t
0056540    a   W   o   r   d   s   )       d   o  \r                    
0056560                                W   s   (   "   D   a   t   a    
0056600    c   o   m   p   a   r   e       e   r   r   o   r   *   N   "
0056620    )  \r     376 001  \0 321  \v                       t   e   s
0056640    t       p   b   i   >   >   P   B   I   .   p   u   p   .   i
0056660    d   ^   2       e   q       p   u   p   i   d  \r            
0056700                            i   f   n   o   t       [       P   u
0056720    t   s   (   d   s   p   ,       $   #   )   ;       R   e   l
0056740    e   a   s   e   P   B   I   (   p   b   i   )       ]  \r    
0056760                                    i   f   s   o       [       P
0057000    u   t   s   (   d   s   p   ,       $   !   )   ;       R   e
0057020    l   e   a   s   e   P   B   I   (   p   b   i   )   ;       b
0057040    r   e   a   k       ]  \r                           ]       r
0057060    e   p   e   a   t  \r               ]  \r  \r   C   l   o   s
0057100    e   L   e   v   e   l   1   S   o   c   k   e   t   (   u   s
0057120    e   r   S   o   c   )  \r   P   u   t   T   e   m   p   l   a
0057140    t   e   (   d   s   p   ,       "   *   n   O   u   t   :    
0057160    $   E   D   ,       I   n   :       $   E   D   "   ,       o
0057200    u   t   ,       i   n   )  \r   w   h   i   l   e       o   u
0057220    t   !   0       n   e       0 376  \0 252 254 341       d   o
0057240            /   /   s   c   a   l   e       s   o       d   e   n
0057260    o   m   i   n   a   t   o   r       i   s       l   s       2
0057300    ^   1   6  \r               [       D   i   v   i   d   e   3
0057320    2   x   1   6   (   i   n   T   i   m   e   s   1   0   0   ,
0057340        1   0   )   ;       D   i   v   i   d   e   3   2   x   1
0057360    6   (   o   u   t   ,       1   0   )       ]  \r   D   i   v
0057400    i   d   e   3   2   x   1   6   (   i   n   T   i   m   e   s
0057420    1   0   0   ,       o   u   t   !   1   )  \r   P   u   t   T
0057440    e   m   p   l   a   t   e   (   d   s   p   ,       "   ,    
0057460    $   U   D   %   "   ,       i   n   T   i   m   e   s   1   0
0057500    0   !   1   )  \r   ]  \r 377  \0  \0   P   u   p   T   e   s
0057520    t   M   i   s   c   .   b   c   p   l  \0 373 230 230   |   J
0057540   \0  \0 376 001  \0 245  \b   /   /       P   u   p   T   e   s
0057560    t   M   i   s   c   .   b   c   p   l  \r   /   /       C   o
0057600    p   y   r   i   g   h   t       X   e   r   o   x       C   o
0057620    r   p   o   r   a   t   i   o   n       1   9   8   0   ,    
0057640    1   9   8   2  \r   /   /       L   a   s   t       m   o   d
0057660    i   f   i   e   d       F   e   b   r   u   a   r   y       1
0057700    5   ,       1   9   8   2           5   :   3   6       P   M
0057720        b   y       B   o   g   g   s  \r  \r   g   e   t       "
0057740    p   u   p   .   d   e   c   l   "  \r   g   e   t       "   p
0057760    u   p   t   e   s   t   .   d   e   c   l   "  \r  \r   e   x
0060000    t   e   r   n   a   l  \r   [  \r   /   /       o   u   t   g
0060020    o   i   n   g       p   r   o   c   e   d   u   r   e   s  \r
0060040    M   i   s   c   S   e   r   v   i   c   e   s  \r  \r   /   /
0060060        i   n   c   o   m   i   n   g       p   r   o   c   e   d
0060100    u   r   e   s  \r   W   s   ;       P   u   t   s   ;       G
0060120    e   t   s   ;       P   u   t   T   e   m   p   l   a   t   e
0060140    ;       U   N   P   A   C 376 001  \0 345 256   K   D   T   ;
0060160        W   R   I   T   E   U   D   T  \r   G   e   t   P   B   I
0060200    ;       R   e   l   e   a   s   e   P   B   I   ;       C   o
0060220    m   p   l   e   t   e   P   u   p   ;       A   p   p   e   n
0060240    d   S   t   r   i   n   g   T   o   P   u   p  \r   O   p   e
0060260    n   L   e   v   e   l   1   S   o   c   k   e   t   ;       C
0060300    l   o   s   e   L   e   v   e   l   1   S   o   c   k   e   t
0060320   \r   S   e   t   T   i   m   e   r   ;       T   i   m   e   r
0060340    H   a   s   E   x   p   i   r   e   d   ;       E   n   q   u
0060360    e   u   e   ;       D   e   q   u   e   u   e   ;       B   l
0060400    o   c   k   ;       M   u   l   t   E   q  \r   C   o   n   f
0060420    i   r   m   ;       G   e   t   S   t   r   i   n   g  \r   O
0060440    p   e   n   P   o   r   t   ;       R   T   T   i   t   l   e
0060460    ;       R   T   E   n   t   r   y   ;       P   r   i   n   t
0060500    P   o   r   t  \r   O   t   h   e   r   S   p   i   g   o   t
0060520   \r  \r   /   /       i   n   c   o   m   i   n   g       s   t
0060540    a   t   i   c   s  \r   d   s   p   ;       k 376 001  \0 035
0060560  332   e   y   s  \r   ]  \r  \r   m   a   n   i   f   e   s   t
0060600   \r   [  \r   /   /       m   i   s   c       s   e   r   v   i
0060620    c   e   s       p   r   o   t   o   c   o   l   s  \r   p   s
0060640    M   i   s   c   S   e   r   v       =       4  \r  \r   p   t
0060660    S   t   r   i   n   g   T   i   m   e   R   e   q   u   e   s
0060700    t       =       2   0   0   b  \r   p   t   S   t   r   i   n
0060720    g   T   i   m   e   R   e   p   l   y       =       2   0   1
0060740    b  \r   p   t   T   e   n   e   x   T   i   m   e   R   e   q
0060760    u   e   s   t       =       2   0   2   b  \r   p   t   T   e
0061000    n   e   x   T   i   m   e   R   e   p   l   y       =       2
0061020    0   3   b  \r   p   t   A   l   t   o   T   i   m   e   R   e
0061040    q   u   e   s   t       =       2   0   6   b  \r   p   t   A
0061060    l   t   o   T   i   m   e   R   e   p   l   y       =       2
0061100    0   7   b  \r  \r   p   t   M   a   i   l   C   h   e   c   k
0061120    R   e   q   u   e   s   t       =       2   1   4   b  \r   p
0061140    t   M   a   i   l   C   h   e   c   k   Y   e   s       =    
0061160    2 376 001  \0   k 376   1   1   b  \r   p   t   M   a   i   l
0061200    C   h   e   c   k   N   o       =       2   1   2   b  \r   p
0061220    t   M   a   i   l   C   h   e   c   k   E   r   r   o   r    
0061240    =       2   1   3   b  \r  \r   p   t   N   a   m   e   R   e
0061260    q   u   e   s   t       =       2   2   0   b  \r   p   t   N
0061300    a   m   e   R   e   p   l   y       =       2   2   1   b  \r
0061320    p   t   N   a   m   e   A   d   d   r   E   r   r   o   r    
0061340    =       2   2   2   b  \r   p   t   A   d   d   r   e   s   s
0061360    R   e   q   u   e   s   t       =       2   2   3   b  \r   p
0061400    t   A   d   d   r   e   s   s   R   e   p   l   y       =    
0061420    2   2   4   b  \r   p   t   N   e   t   D   i   r   V   e   r
0061440    s   i   o   n       =       2   4   0   b  \r  \r   p   t   W
0061460    h   e   r   e   U   s   e   r   R   e   q   u   e   s   t    
0061500    =       2   3   0   b  \r   p   t   W   h   e   r   e   U   s
0061520    e   r   R   e   p   l   y       =       2   3   1   b  \r   p
0061540    t   W   h   e   r   e   U   s   e   r   E   r   r   o   r    
0061560    =       2   3   2   b 376 001  \0 177   q  \r  \r   p   t   A
0061600    u   t   h   R   e   q   u   e   s   t       =       2   5   0
0061620    b  \r   p   t   A   u   t   h   Y   e   s       =       2   5
0061640    1   b  \r   p   t   A   u   t   h   N   o       =       2   5
0061660    2   b  \r  \r   p   t   V   a   l   i   d   R   e   c   i   p
0061700    R   e   q   u   e   s   t       =       2   6   6   b  \r   p
0061720    t   V   a   l   i   d   R   e   c   i   p   Y   e   s       =
0061740        2   6   7   b  \r   p   t   V   a   l   i   d   R   e   c
0061760    i   p   N   o       =       2   7   0   b  \r  \r   /   /    
0062000    R   o   u   t   i   n   g       i   n   f   o       p   r   o
0062020    t   o   c   o   l  \r   p   s   R   o   u   t   e   I   n   f
0062040    o       =       2  \r  \r   p   t   R   o   u   t   e   I   n
0062060    f   o   R   e   q   u   e   s   t       =       2   0   0   b
0062100   \r   p   t   R   o   u   t   e   I   n   f   o   R   e   p   l
0062120    y       =       2   0   1   b  \r   ]  \r  \r   s   t   a   t
0062140    i   c       [       m   i   s   c   I   D   ;       m   i   s
0062160    c   S   o   c       ]  \r  \f  \r   /   / 376 001  \0   L 004
0062200    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0062300    -   -   -   -   -   -   -   -   -   -   -   -  \r   l   e   t
0062320        M   i   s   c   S   e   r   v   i   c   e   s   (   q   u
0062340    i   t   )       b   e  \r   /   /   -   -   -   -   -   -   -
0062360    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0062460    -   -   -   -   -  \r   [  \r   l   e   t       s   o   c    
0062500    =       v   e   c       l   e   n   P   u   p   S   o   c   ;
0062520        m   i   s   c   S   o   c       =       s   o   c  \r   u
0062540    n   l   e   s   s       O   p   e   n   P   o   r   t   (   "
0062560    M   i   s   c       s   e   r   v   i   c   e   s       h   o
0062600  376 001  \0 037 020   s   t   :       "   ,       s   o   c   ,
0062620        0   ,       p   s   M   i   s   c   S   e   r   v   )    
0062640    r   e   t   u   r   n  \r               [  \r               W
0062660    s   (   "   *   N   >   >   "   )  \r               s   w   i
0062700    t   c   h   o   n       G   e   t   s   (   k   e   y   s   )
0062720        i   n   t   o  \r                           [  \r        
0062740                    c   a   s   e       $   A   :       c   a   s
0062760    e       $   a   :  \r                                       [
0063000        A   u   t   h   e   n   t   i   c   a   t   e   (   )   ;
0063020        e   n   d   c   a   s   e       ]  \r                    
0063040        c   a   s   e       $   D   :       c   a   s   e       $
0063060    d   :  \r                                       [       D   a
0063100    t   e   A   n   d   T   i   m   e   (   )   ;       e   n   d
0063120    c   a   s   e       ]  \r                           c   a   s
0063140    e       $   H   :       c   a   s   e       $   h   :  \r    
0063160                                    [       q   u   i   t       =
0063200        f   a   l   s 376 001  \0 267   X   e   ;       b   r   e
0063220    a   k       ]  \r                           c   a   s   e    
0063240    $   N   :       c   a   s   e       $   n   :  \r            
0063260                            [       N   e   t   D   i   r   e   c
0063300    t   o   r   y   (   )   ;       e   n   d   c   a   s   e    
0063320    ]  \r                           c   a   s   e       $   M   :
0063340        c   a   s   e       $   m   :  \r                        
0063360                [       M   a   i   l   C   h   e   c   k   (   )
0063400    ;       e   n   d   c   a   s   e       ]  \r                
0063420            c   a   s   e       $   Q   :       c   a   s   e    
0063440    $   q   :  \r                                       [       q
0063460    u   i   t       =       C   o   n   f   i   r   m   (   "   Q
0063500    u   i   t       "   )   ;       b   r   e   a   k       ]  \r
0063520                            c   a   s   e       $   R   :       c
0063540    a   s   e       $   r   :  \r                                
0063560        [       R   o   u   t   i   n   g   I   n   f   o   (   )
0063600    ;       e   n   d   c   a   s   e     376 001  \0 341   O   ]
0063620   \r                           c   a   s   e       $   V   :    
0063640    c   a   s   e       $   v   :  \r                            
0063660            [       V   a   l   i   d   a   t   e   R   e   c   i
0063700    p   (   )   ;       e   n   d   c   a   s   e       ]  \r    
0063720                        c   a   s   e       $   W   :       c   a
0063740    s   e       $   w   :  \r                                    
0063760    [       W   h   e   r   e   I   s   U   s   e   r   (   )   ;
0064000        e   n   d   c   a   s   e       ]  \r                    
0064020        c   a   s   e       $   ?   :  \r                        
0064040                [  \r                                       W   s
0064060    (   "   ?       O   n   e       o   f       t   h   e       f
0064100    o   l   l   o   w   i   n   g   :   "   )  \r                
0064120                        W   s   (   "   *   n   A   u   t   h   e
0064140    n   t   i   c   a   t   e   ,       D   a   t   e       a   n
0064160    d       t   i   m   e   ,       H   o   s   t   ,   "   )  \r
0064200                                        W   s   (   "   *   n 376
0064220  001  \0   = 244   N   e   t       D   i   r   e   c   t   o   r
0064240    y   ,       M   a   i   l       c   h   e   c   k   ,       Q
0064260    u   i   t   ,   "   )  \r                                    
0064300    W   s   (   "   *   n   R   o   u   t   i   n   g       i   n
0064320    f   o   ,       V   a   l   i   d   a   t   e       r   e   c
0064340    i   p   i   e   n   t   ,       W   h   e   r   e       i   s
0064360        U   s   e   r   .   "   )  \r                            
0064400            l   o   o   p  \r                                    
0064420    ]  \r                           ]  \r               ]       r
0064440    e   p   e   a   t  \r   C   l   o   s   e   L   e   v   e   l
0064460    1   S   o   c   k   e   t   (   s   o   c   )  \r   ]       r
0064500    e   p   e   a   t   u   n   t   i   l       q   u   i   t  \r
0064520   \f  \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -
0064540    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0064620    -   -   -   - 376 001  \0 371   T   -   -   -   -   -   -   -
0064640    -   -   -   -   -  \r   a   n   d       D   a   t   e   A   n
0064660    d   T   i   m   e   (   )       b   e  \r   /   /   -   -   -
0064700    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0065000    -   -   -   -   -   -   -   -   -  \r   [  \r   W   s   (   "
0065020    D   a   t   e       a   n   d       t   i   m   e       p   r
0065040    o   t   o   c   o   l       "   )  \r               [  \r    
0065060            l   e   t       p   b   i       =       G   e   t   P
0065100    B   I   (   m   i   s   c   S   o   c   )  \r              \r
0065120                            [  \r                           W   s
0065140    (   "   *   N   >   >   >   "   )  \r                        
0065160    s   w   i   t   c   h   o   n       G   e   t   s   (   k   e
0065200    y   s   )       i   n   t   o  \r                            
0065220            [  \r                     376 001  \0   m 214        
0065240            c   a   s   e       $   T   :       c   a   s   e    
0065260    $   t   :  \r                                                
0065300    [  \r                                                   W   s
0065320    (   "   T   e   n   e   x       f   o   r   m   a   t   :    
0065340    "   )  \r                                                   p
0065360    b   i   >   >   P   B   I   .   p   u   p   .   t   y   p   e
0065400        =       p   t   T   e   n   e   x   T   i   m   e   R   e
0065420    q   u   e   s   t  \r                                        
0065440            b   r   e   a   k  \r                                
0065460                    ]  \r                                       c
0065500    a   s   e       $   A   :       c   a   s   e       $   a   :
0065520   \r                                                   [  \r    
0065540                                                W   s   (   "   A
0065560    l   t   o       f   o   r   m   a   t   :       "   )  \r    
0065600                                                p   b   i   >   >
0065620    P   B   I   .   p   u   p   .   t   y   p   e       = 376 001
0065640   \0 360 277       p   t   A   l   t   o   T   i   m   e   R   e
0065660    q   u   e   s   t  \r                                        
0065700            b   r   e   a   k  \r                                
0065720                    ]  \r                                       c
0065740    a   s   e       $   S   :       c   a   s   e       $   s   :
0065760   \r                                                   [  \r    
0066000                                                W   s   (   "   S
0066020    t   r   i   n   g       f   o   r   m   a   t   :       "   )
0066040   \r                                                   p   b   i
0066060    >   >   P   B   I   .   p   u   p   .   t   y   p   e       =
0066100        p   t   S   t   r   i   n   g   T   i   m   e   R   e   q
0066120    u   e   s   t  \r                                            
0066140        b   r   e   a   k  \r                                    
0066160                ]  \r                                       c   a
0066200    s   e       $   Q   :       c   a   s   e       $   q   :    
0066220    W   s   (   "   Q   u   i   t   "   )       /   /   f   a   l
0066240    l   s     376 001  \0   _   l   t   h   r   o   u   g   h  \r
0066260                                        c   a   s   e       $   *
0066300    1   7   7   :       [       R   e   l   e   a   s   e   P   B
0066320    I   (   p   b   i   )   ;       r   e   t   u   r   n       ]
0066340   \r                                       c   a   s   e       $
0066360    ?   :  \r                                                   [
0066400   \r                                                   W   s   (
0066420    "   A   l   t   o   ,       T   e   n   e   x   ,       S   t
0066440    r   i   n   g   :       "   )  \r                            
0066460                        l   o   o   p  \r                        
0066500                            ]  \r                                
0066520        ]  \r                           ]       r   e   p   e   a
0066540    t  \r              \r               p   b   i   >   >   P   B
0066560    I   .   p   u   p   .   l   e   n   g   t   h       =       p
0066600    u   p   O   v   B   y   t   e   s  \r               p   b   i
0066620        =       S   e   n   d   C   o   m   m   a   n   d   (   p
0066640    b   i   )   ;       i   f     376 001  \0   J 330   p   b   i
0066660        e   q       0       l   o   o   p  \r              \r    
0066700            s   w   i   t   c   h   o   n       p   b   i   >   >
0066720    P   B   I   .   p   u   p   .   t   y   p   e       i   n   t
0066740    o  \r                           [  \r                        
0066760    c   a   s   e       p   t   S   t   r   i   n   g   T   i   m
0067000    e   R   e   p   l   y   :  \r                                
0067020        [       P   r   i   n   t   C   o   n   t   e   n   t   s
0067040    (   p   b   i   )   ;       e   n   d   c   a   s   e       ]
0067060   \r                           c   a   s   e       p   t   T   e
0067100    n   e   x   T   i   m   e   R   e   p   l   y   :  \r        
0067120                                [  \r                            
0067140            f   o   r       i       =       1       t   o       p
0067160    b   i   >   >   P   B   I   .   p   u   p   .   l   e   n   g
0067200    t   h   -   p   u   p   O   v   B   y   t   e   s       d   o
0067220   \r                                                   P   u   t
0067240    T   e   m   p   l   a   t   e   (   d   s   p   , 376 001  \0
0067260    > 035   "   $   U   O       "   ,       p   b   i   >   >   P
0067300    B   I   .   p   u   p   .   b   y   t   e   s   ^   i   )  \r
0067320                                        e   n   d   c   a   s   e
0067340   \r                                       ]  \r                
0067360            c   a   s   e       p   t   A   l   t   o   T   i   m
0067400    e   R   e   p   l   y   :  \r                                
0067420        [  \r                                       f   o   r    
0067440    i       =       1       t   o       p   b   i   >   >   P   B
0067460    I   .   p   u   p   .   l   e   n   g   t   h   -   p   u   p
0067500    O   v   B   y   t   e   s       d   o  \r                    
0067520                                P   u   t   T   e   m   p   l   a
0067540    t   e   (   d   s   p   ,   "   $   U   O       "   ,       p
0067560    b   i   >   >   P   B   I   .   p   u   p   .   b   y   t   e
0067600    s   ^   i   )  \r                                       l   e
0067620    t       u   v       =       v   e   c       6  \r            
0067640                            U   N   P   A   C   K   D   T   (   l
0067660    v     376 001  \0   T 005   p   b   i   >   >   P   B   I   .
0067700    p   u   p   .   b   y   t   e   s   ^   1   ,       u   v   )
0067720   \r                                       W   s   (   "   =    
0067740    "   )  \r                                       W   R   I   T
0067760    E   U   D   T   (   d   s   p   ,       u   v   )  \r        
0070000                                e   n   d   c   a   s   e  \r    
0070020                                    ]  \r                        
0070040    ]  \r              \r               R   e   l   e   a   s   e
0070060    P   B   I   (   p   b   i   )  \r               ]       r   e
0070100    p   e   a   t  \r   ]  \r  \f  \r   /   /   -   -   -   -   -
0070120    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0070220    -   -   -   -   -   -   -  \r   a   n   d       N   e   t   D
0070240    i   r   e   c   t   o   r   y   (   )       b   e  \r   /   /
0070260    -   -   -   -   -   -   - 376 001  \0 310 317   -   -   -   -
0070300    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0070400    -  \r   [  \r   W   s   (   "   N   e   t       d   i   r   e
0070420    c   t   o   r   y       p   r   o   t   o   c   o   l       "
0070440    )  \r               [  \r               l   e   t       p   b
0070460    i       =       G   e   t   P   B   I   (   m   i   s   c   S
0070500    o   c   )  \r              \r                           [  \r
0070520                            W   s   (   "   *   N   >   >   >   "
0070540    )  \r                           s   w   i   t   c   h   o   n
0070560        G   e   t   s   (   k   e   y   s   )       i   n   t   o
0070600   \r                                       [  \r                
0070620                        c   a   s   e       $   A   :       c   a
0070640    s   e       $   a   :  \r                                    
0070660                [  \r                             376 001  \0 246
0070700    3                       b   r   e   a   k  \r                
0070720                                    ]  \r                        
0070740                c   a   s   e       $   N   :       c   a   s   e
0070760        $   n   :  \r                                            
0071000        [  \r                                                   l
0071020    e   t       s   t   r   i   n   g       =       v   e   c    
0071040    4   0  \r                                                   u
0071060    n   l   e   s   s       G   e   t   S   t   r   i   n   g   (
0071100    "   N   a   m   e   :       "   ,       s   t   r   i   n   g
0071120    ,       t   r   u   e   ,       f   a   l   s   e   )       r
0071140    e   t   u   r   n  \r                                        
0071160            A   p   p   e   n   d   S   t   r   i   n   g   T   o
0071200    P   u   p   (   p   b   i   ,       1   ,       s   t   r   i
0071220    n   g   )           /   /   s   e   t   s       P   u   p   .
0071240    l   e   n   g   t   h  \r                                    
0071260                p   b   i   >   >   P   B   I   .   p   u   p   .
0071300    t 376 001  \0   }   ;   y   p   e       =       p   t   N   a
0071320    m   e   R   e   q   u   e   s   t  \r                        
0071340                            b   r   e   a   k  \r                
0071360                                    ]  \r                        
0071400                c   a   s   e       $   V   :       c   a   s   e
0071420        $   v   :  \r                                            
0071440        [  \r                                                   W
0071460    s   (   "   V   e   r   s   i   o   n       o   f       n   e
0071500    t       d   i   r       =       "   )  \r                    
0071520                                p   b   i   >   >   P   B   I   .
0071540    p   u   p   .   w   o   r   d   s   ^   1       =       1  \r
0071560                                                    p   b   i   >
0071600    >   P   B   I   .   p   u   p   .   w   o   r   d   s   ^   2
0071620        =       0  \r                                            
0071640        p   b   i   >   >   P   B   I   .   p   u   p   .   t   y
0071660    p   e       =       p   t   N   e   t   D   i   r   V   e   r
0071700    s   i   o   n  \r     376 001  \0  \f   ;                    
0071720                            p   b   i   >   >   P   B   I   .   p
0071740    u   p   .   l   e   n   g   t   h       =       p   u   p   O
0071760    v   B   y   t   e   s   +   4  \r                            
0072000                        b   r   e   a   k  \r                    
0072020                                ]  \r                            
0072040            c   a   s   e       $   Q   :       c   a   s   e    
0072060    $   q   :       W   s   (   "   Q   u   i   t   "   )        
0072100    /   /       f   a   l   l   s       t   h   r   o   u   g   h
0072120   \r                                       c   a   s   e       $
0072140    *   1   7   7   :       [       R   e   l   e   a   s   e   P
0072160    B   I   (   p   b   i   )   ;       r   e   t   u   r   n    
0072200    ]  \r                                       c   a   s   e    
0072220    $   ?   :  \r                                                
0072240    [  \r                                                   W   s
0072260    (   "   N   a   m   e   -   >   A   d   d   r   e   s   s   ,
0072300        V   e   r   s   i   o   n       o   f 376 001  \0 226 350
0072320        N   e   t   D   i   r   :       "   )  \r                
0072340                                    l   o   o   p  \r            
0072360                                        ]  \r                    
0072400                    ]  \r                           ]       r   e
0072420    p   e   a   t  \r              \r               p   b   i    
0072440    =       S   e   n   d   C   o   m   m   a   n   d   (   p   b
0072460    i   )   ;       i   f       p   b   i       e   q       0    
0072500    r   e   t   u   r   n  \r              \r               s   w
0072520    i   t   c   h   o   n       p   b   i   >   >   P   B   I   .
0072540    p   u   p   .   t   y   p   e       i   n   t   o  \r        
0072560                    [  \r                           c   a   s   e
0072600        p   t   N   a   m   e   A   d   d   r   E   r   r   o   r
0072620    :  \r                                       [       P   r   i
0072640    n   t   C   o   n   t   e   n   t   s   (   p   b   i   )   ;
0072660        e   n   d   c   a   s   e       ]  \r                    
0072700        c   a   s   e       p   t   N   a   m   e   R   e   p   l
0072720  376 001  \0 001 307   y   :  \r                                
0072740        [  \r                                       f   o   r    
0072760    i       =       1       t   o       p   b   i   >   >   P   B
0073000    I   .   p   u   p   .   l   e   n   g   t   h   -   p   u   p
0073020    O   v   B   y   t   e   s       b   y       6       d   o  \r
0073040                                                    [       P   r
0073060    i   n   t   P   o   r   t   (   l   v       p   b   i   >   >
0073100    P   B   I   .   p   u   p   .   b   y   t   e   s   ^   i   )
0073120    ;       W   s   (   "           "   )       ]  \r            
0073140                            e   n   d   c   a   s   e  \r        
0073160                                ]  \r                           c
0073200    a   s   e       p   t   N   e   t   D   i   r   V   e   r   s
0073220    i   o   n   :  \r                                       [  \r
0073240                                        P   u   t   T   e   m   p
0073260    l   a   t   e   (   d   s   p   ,       "   $   U   D   "   ,
0073300        p   b   i   >   >   P   B   I   .   p   u   p   .   w   o
0073320    r   d   s   ^   1 376 001  \0 200 357   )  \r                
0073340                        e   n   d   c   a   s   e  \r            
0073360                            ]  \r                           ]  \r
0073400               \r               R   e   l   e   a   s   e   P   B
0073420    I   (   p   b   i   )  \r               ]       r   e   p   e
0073440    a   t  \r   ]  \r  \f  \r   /   /   -   -   -   -   -   -   -
0073460    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0073560    -   -   -   -   -  \r   a   n   d       W   h   e   r   e   I
0073600    s   U   s   e   r   (   )       b   e  \r   /   /   -   -   -
0073620    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0073720    -   -   -   -   -   -   -   -   -  \r 376 001  \0   6 370   [
0073740   \r   l   e   t       s   t   r   i   n   g       =       v   e
0073760    c       4   0  \r   u   n   l   e   s   s       G   e   t   S
0074000    t   r   i   n   g   (   "   W   h   e   r   e       i   s    
0074020    u   s   e   r   :       "   ,       s   t   r   i   n   g   ,
0074040        t   r   u   e   ,       f   a   l   s   e   )       r   e
0074060    t   u   r   n  \r   l   e   t       p   b   i       =       G
0074100    e   t   P   B   I   (   m   i   s   c   S   o   c   )  \r   A
0074120    p   p   e   n   d   S   t   r   i   n   g   T   o   P   u   p
0074140    (   p   b   i   ,       1   ,       s   t   r   i   n   g   )
0074160   \r   p   b   i       =       S   e   n   d   C   o   m   m   a
0074200    n   d   (   p   b   i   ,       p   t   W   h   e   r   e   U
0074220    s   e   r   R   e   q   u   e   s   t   )  \r   i   f       p
0074240    b   i       e   q       0       r   e   t   u   r   n  \r   s
0074260    w   i   t   c   h   o   n       p   b   i   >   >   P   B   I
0074300    .   p   u   p   .   t   y   p   e       i   n   t   o  \r    
0074320            [  \r               c   a   s   e       p   t   W 376
0074340  001  \0 246   .   h   e   r   e   U   s   e   r   E   r   r   o
0074360    r   :  \r                           [       W   s   (   "   -
0074400        N   o       s   u   c   h       u   s   e   r   "   )   ;
0074420        e   n   d   c   a   s   e       ]  \r               c   a
0074440    s   e       p   t   W   h   e   r   e   U   s   e   r   R   e
0074460    p   l   y   :  \r                           [  \r            
0074500                t   e   s   t       p   b   i   >   >   P   B   I
0074520    .   p   u   p   .   l   e   n   g   t   h       e   q       p
0074540    u   p   O   v   B   y   t   e   s  \r                        
0074560                i   f   s   o       W   s   (   "   -       N   o
0074600    t       l   o   g   g   e   d       i   n   "   )  \r        
0074620                                i   f   n   o   t       f   o   r
0074640        i       =       1       t   o       p   b   i   >   >   P
0074660    B   I   .   p   u   p   .   l   e   n   g   t   h   -   p   u
0074700    p   O   v   B   y   t   e   s       b   y       2       d   o
0074720   \r                                                   [  \r    
0074740                  376 001  \0 230   }                            
0074760    P   u   t   T   e   m   p   l   a   t   e   (   d   s   p   ,
0075000        "   -       J   o   b       $   D   "   ,       p   b   i
0075020    >   >   P   B   I   .   p   u   p   .   b   y   t   e   s   ^
0075040    i   )  \r                                                   t
0075060    e   s   t       p   b   i   >   >   P   B   I   .   p   u   p
0075100    .   b   y   t   e   s   ^   (   i   +   1   )       e   q    
0075120    #   3   7   7  \r                                            
0075140                    i   f   s   o       W   s   (   "   ,       D
0075160    e   t   a   c   h   e   d   "   )  \r                        
0075200                                        i   f   n   o   t       P
0075220    u   t   T   e   m   p   l   a   t   e   (   d   s   p   ,    
0075240    "   ,       T   T   Y       $   0   "   ,       p   b   i   >
0075260    >   P   B   I   .   p   u   p   .   b   y   t   e   s   ^   (
0075300    i   +   1   )   )  \r                                        
0075320            ]  \r                           e   n   d   c   a   s
0075340    e  \r                           ] 376 001  \0  \n   =  \r    
0075360            ]  \r   R   e   l   e   a   s   e   P   B   I   (   p
0075400    b   i   )  \r   ]  \r  \f  \r   /   /   -   -   -   -   -   -
0075420    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0075520    -   -   -   -   -   -  \r   a   n   d       R   o   u   t   i
0075540    n   g   I   n   f   o   (   )       b   e  \r   /   /   -   -
0075560    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0075660    -   -   -   -   -   -   -   -   -   -  \r   /   /       N   o
0075700    t   e       t   h   a   t       t   h   i   s       o   n   e
0075720        g   o   e   s       t   o       t   h   e       g   a   t
0075740    e   w   a   y       i   n   f   o       s   o   c   k 376 001
0075760   \0   T 246   e   t       i   n   s   t   e   a   d       o   f
0076000        m   i   s   c       s   e   r   v   i   c   e   s  \r   [
0076020   \r   l   e   t       p   b   i       =       G   e   t   P   B
0076040    I   (   m   i   s   c   S   o   c   )  \r   p   b   i   >   >
0076060    P   B   I   .   p   u   p   .   d   P   o   r   t   .   s   o
0076100    c   k   e   t   ^   1       =       0  \r   p   b   i   >   >
0076120    P   B   I   .   p   u   p   .   d   P   o   r   t   .   s   o
0076140    c   k   e   t   ^   2       =       p   s   R   o   u   t   e
0076160    I   n   f   o  \r   p   b   i       =       S   e   n   d   C
0076200    o   m   m   a   n   d   (   p   b   i   ,       p   t   R   o
0076220    u   t   e   I   n   f   o   R   e   q   u   e   s   t   ,    
0076240    p   u   p   O   v   B   y   t   e   s   ,       1   )  \r   i
0076260    f       p   b   i       t   h   e   n  \r               [  \r
0076300                E   n   q   u   e   u   e   (   l   v       m   i
0076320    s   c   S   o   c   >   >   P   u   p   S   o   c   .   i   Q
0076340    ,       p   b   i   )  \r               R   T   T   i   t   l
0076360    e   (   " 376 001  \0 263 006   F   o   r   e   i   g   n    
0076400    r   o   u   t   i   n   g       t   a   b   l   e   :       "
0076420    )  \r               ]  \r   l   e   t       c   o   u   n   t
0076440        =       0  \r   l   e   t       t   i   m   e   r       =
0076460        n   i   l   ;       S   e   t   T   i   m   e   r   (   l
0076500    v       t   i   m   e   r   ,       5   0   0   )           /
0076520    /       5       s   e   c   o   n   d   s  \r               [
0076540   \r               B   l   o   c   k   (   )       r   e   p   e
0076560    a   t   u   n   t   i   l       m   i   s   c   S   o   c   >
0076600    >   P   u   p   S   o   c   .   i   Q   .   h   e   a   d    
0076620    %       T   i   m   e   r   H   a   s   E   x   p   i   r   e
0076640    d   (   l   v       t   i   m   e   r   )  \r               l
0076660    e   t       p   b   i       =       D   e   q   u   e   u   e
0076700    (   l   v       m   i   s   c   S   o   c   >   >   P   u   p
0076720    S   o   c   .   i   Q   .   h   e   a   d   )   ;       i   f
0076740        p   b   i       e   q       0       b   r   e   a   k  \r
0076760                i   f       p   b 376 001  \0   E 227   i   >   >
0077000    P   B   I   .   p   u   p   .   t   y   p   e       e   q    
0077020    p   t   R   o   u   t   e   I   n   f   o   R   e   p   l   y
0077040        t   h   e   n  \r                           f   o   r    
0077060    i       =       1       t   o       p   b   i   >   >   P   B
0077100    I   .   p   u   p   .   l   e   n   g   t   h   -   p   u   p
0077120    O   v   B   y   t   e   s       b   y       4       d   o  \r
0077140                                        R   T   E   n   t   r   y
0077160    (   p   b   i   >   >   P   B   I   .   p   u   p   .   b   y
0077200    t   e   s   ^   i   ,       p   b   i   >   >   P   B   I   .
0077220    p   u   p   .   b   y   t   e   s   ^   (   i   +   1   )   ,
0077240   \r                                           p   b   i   >   >
0077260    P   B   I   .   p   u   p   .   b   y   t   e   s   ^   (   i
0077300    +   2   )   ,       p   b   i   >   >   P   B   I   .   p   u
0077320    p   .   b   y   t   e   s   ^   (   i   +   3   )   ,       l
0077340    v       c   o   u   n   t   )  \r               R   e   l   e
0077360    a   s   e   P   B   I   (   p   b   i   )  \r     376 001  \0
0077400  211 261           ]       r   e   p   e   a   t  \r   ]  \r  \f
0077420   \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -   -
0077440    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0077520    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -  \r
0077540    a   n   d       A   u   t   h   e   n   t   i   c   a   t   e
0077560    (   )       b   e  \r   /   /   -   -   -   -   -   -   -   -
0077600    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0077700    -   -   -   -  \r   [  \r   l   e   t       n   a   m   e    
0077720    =       v   e   c       4   0  \r   u   n   l   e   s   s    
0077740    G   e   t   S   t   r   i   n   g   (   "   A   u   t   h   e
0077760    n   t   i   c   a   t   e       u   s   e   r   :       "   ,
0100000        n 376 001  \0 036 373   a   m   e   ,       t   r   u   e
0100020    ,       f   a   l   s   e   )       r   e   t   u   r   n  \r
0100040    l   e   t       p   s   w       =       v   e   c       4   0
0100060   \r   u   n   l   e   s   s       G   e   t   S   t   r   i   n
0100100    g   (   "       p   a   s   s   w   o   r   d   :       "   ,
0100120        p   s   w   ,       f   a   l   s   e   ,       f   a   l
0100140    s   e   )       r   e   t   u   r   n  \r   l   e   t       p
0100160    b   i       =       G   e   t   P   B   I   (   m   i   s   c
0100200    S   o   c   )  \r   A   p   p   e   n   d   M   e   s   a   S
0100220    t   r   i   n   g   T   o   P   u   p   (   p   b   i   ,    
0100240    1   ,       n   a   m   e   )  \r   A   p   p   e   n   d   M
0100260    e   s   a   S   t   r   i   n   g   T   o   P   u   p   (   p
0100300    b   i   ,       (   n   a   m   e   >   >   S   t   r   i   n
0100320    g   .   l   e   n   g   t   h   +   7   )   /   2   ,       p
0100340    s   w   )  \r   p   b   i       =       S   e   n   d   C   o
0100360    m   m   a   n   d   (   p   b   i   ,       p   t   A   u   t
0100400    h   R   e   q   u   e   s 376 001  \0 304 332   t   )  \r   i
0100420    f       p   b   i       e   q       0       r   e   t   u   r
0100440    n  \r   s   w   i   t   c   h   o   n       p   b   i   >   >
0100460    P   B   I   .   p   u   p   .   t   y   p   e       i   n   t
0100500    o  \r               [  \r               c   a   s   e       p
0100520    t   A   u   t   h   Y   e   s   :  \r                        
0100540    [       W   s   (   "   -       G   o   o   d   "   )   ;    
0100560    e   n   d   c   a   s   e       ]  \r               c   a   s
0100600    e       p   t   A   u   t   h   N   o   :  \r                
0100620            [       W   s   (   "   -       N   o       "   )   ;
0100640        P   r   i   n   t   C   o   n   t   e   n   t   s   (   p
0100660    b   i   )   ;       e   n   d   c   a   s   e       ]  \r    
0100700            ]  \r   R   e   l   e   a   s   e   P   B   I   (   p
0100720    b   i   )  \r   ]  \r  \r   /   /   -   -   -   -   -   -   -
0100740    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0101000    -   -   -   -   -   -   -   -   -   -   -   - 376 001  \0   |
0101020  036   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0101040    -   -   -   -   -   -   -   -   -   -  \r   a   n   d       V
0101060    a   l   i   d   a   t   e   R   e   c   i   p   (   )       b
0101100    e  \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -
0101120    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0101220   \r   [  \r   l   e   t       s   t   r   i   n   g       =    
0101240    v   e   c       4   0  \r   u   n   l   e   s   s       G   e
0101260    t   S   t   r   i   n   g   (   "   V   a   l   i   d   a   t
0101300    e       r   e   c   i   p   i   e   n   t   :       "   ,    
0101320    s   t   r   i   n   g   ,       t   r   u   e   ,       f   a
0101340    l   s   e   )       r   e   t   u   r   n  \r   l   e   t    
0101360    p   b   i       =       G   e   t   P   B   I   (   m   i   s
0101400    c   S   o   c   )  \r   A   p   p   e   n   d   M   e   s   a
0101420    S 376 001  \0 004   ^   t   r   i   n   g   T   o   P   u   p
0101440    (   p   b   i   ,       1   ,       s   t   r   i   n   g   )
0101460   \r   p   b   i       =       S   e   n   d   C   o   m   m   a
0101500    n   d   (   p   b   i   ,       p   t   V   a   l   i   d   R
0101520    e   c   i   p   R   e   q   u   e   s   t   )  \r   i   f    
0101540    p   b   i       e   q       0       r   e   t   u   r   n  \r
0101560    s   w   i   t   c   h   o   n       p   b   i   >   >   P   B
0101600    I   .   p   u   p   .   t   y   p   e       i   n   t   o  \r
0101620                [  \r               c   a   s   e       p   t   V
0101640    a   l   i   d   R   e   c   i   p   Y   e   s   :  \r        
0101660                    [       W   s   (   "   -       G   o   o   d
0101700    "   )   ;       e   n   d   c   a   s   e       ]  \r        
0101720        c   a   s   e       p   t   V   a   l   i   d   R   e   c
0101740    i   p   N   o   :  \r                           [       W   s
0101760    (   "   -       B   a   d   "   )   ;       e   n   d   c   a
0102000    s   e       ]  \r               ]  \r   R   e   l   e   a   s
0102020    e   P   B   I   (   p 376 001  \0 252   P   b   i   )  \r   ]
0102040   \r  \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -
0102060    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0102160   \r   a   n   d       M   a   i   l   C   h   e   c   k   (   )
0102200        b   e  \r   /   /   -   -   -   -   -   -   -   -   -   -
0102220    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0102320    -   -  \r   [  \r   l   e   t       s   t   r   i   n   g    
0102340    =       v   e   c       4   0  \r   u   n   l   e   s   s    
0102360    G   e   t   S   t   r   i   n   g   (   "   M   a   i   l    
0102400    c   h   e   c   k       f   o   r       u   s   e   r   :    
0102420    "   ,       s   t   r   i   n   g   ,     376 001  \0 272   %
0102440    t   r   u   e   ,       f   a   l   s   e   )       r   e   t
0102460    u   r   n  \r   l   e   t       p   b   i       =       G   e
0102500    t   P   B   I   (   m   i   s   c   S   o   c   )  \r   A   p
0102520    p   e   n   d   S   t   r   i   n   g   T   o   P   u   p   (
0102540    p   b   i   ,       1   ,       s   t   r   i   n   g   )  \r
0102560    p   b   i       =       S   e   n   d   C   o   m   m   a   n
0102600    d   (   p   b   i   ,       p   t   M   a   i   l   C   h   e
0102620    c   k   R   e   q   u   e   s   t   )  \r   i   f       p   b
0102640    i       e   q       0       r   e   t   u   r   n  \r   s   w
0102660    i   t   c   h   o   n       p   b   i   >   >   P   B   I   .
0102700    p   u   p   .   t   y   p   e       i   n   t   o  \r        
0102720        [  \r               c   a   s   e       p   t   M   a   i
0102740    l   C   h   e   c   k   E   r   r   o   r   :  \r            
0102760                [       W   s   (   "   -       N   o       s   u
0103000    c   h       u   s   e   r   "   )   ;       e   n   d   c   a
0103020    s   e       ]  \r               c   a   s   e       p   t   M
0103040  376 001  \0 331   v   a   i   l   C   h   e   c   k   N   o   :
0103060   \r                           [       W   s   (   "   -       N
0103100    o       n   e   w       m   a   i   l   "   )   ;       e   n
0103120    d   c   a   s   e       ]  \r               c   a   s   e    
0103140    p   t   M   a   i   l   C   h   e   c   k   Y   e   s   :  \r
0103160                            [       W   s   (   "   -       N   e
0103200    w       m   a   i   l       w   a   i   t   i   n   g       "
0103220    )   ;       P   r   i   n   t   C   o   n   t   e   n   t   s
0103240    (   p   b   i   )   ;       e   n   d   c   a   s   e       ]
0103260   \r               ]  \r   R   e   l   e   a   s   e   P   B   I
0103300    (   p   b   i   )  \r   ]  \r  \f  \r   /   /   -   -   -   -
0103320    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0103420    -   -   -   -   -   -   -   -  \r   a   n   d       S   e   n
0103440    d   C   o   m   m 376 001  \0 026 372   a   n   d   (   o   p
0103460    b   i   ,       t   y   p   e   ,       l   e   n   g   t   h
0103500    ,       r   e   t   r   i   e   s   ;       n   u   m   a   r
0103520    g   s       n   a   )       =       v   a   l   o   f  \r   /
0103540    /   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0103560    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0103640    -   -   -   -   -   -   -   -   -   -   -   -   -  \r   /   /
0103660        r   e   t   u   r   n   s       r   e   s   p   o   n   s
0103700    e       p   b   i       o   r       0       i   f       t   i
0103720    m   e   o   u   t  \r   [  \r   i   f       n   a       l   s
0103740        4       t   h   e   n       r   e   t   r   i   e   s    
0103760    =       3  \r   i   f       n   a       g   e       3       t
0104000    h   e   n       o   p   b   i   >   >   P   B   I   .   p   u
0104020    p   .   l   e   n   g   t   h       =       l   e   n   g   t
0104040    h  \r   i   f       n   a       g   e 376 001  \0 305 354    
0104060    2       t   h   e   n       o   p   b   i   >   >   P   B   I
0104100    .   p   u   p   .   t   y   p   e       =       t   y   p   e
0104120   \r  \r   o   p   b   i   >   >   P   B   I   .   p   u   p   .
0104140    i   d   ^   2       =       m   i   s   c   I   D  \r   m   i
0104160    s   c   I   D       =       m   i   s   c   I   D   +   1  \r
0104200    l   e   t       s   o   c       =       o   p   b   i   >   >
0104220    P   B   I   .   s   o   c   k   e   t  \r   l   e   t       t
0104240    Q       =       v   e   c       1   ;       t   Q   !   0    
0104260    =       0  \r   o   p   b   i   >   >   P   B   I   .   q   u
0104300    e   u   e       =       t   Q  \r   E   n   q   u   e   u   e
0104320    (   t   Q   ,       o   p   b   i   )  \r   l   e   t       i
0104340    p   b   i       =       0  \r  \r   f   o   r       i       =
0104360        1       t   o       r   e   t   r   i   e   s       d   o
0104400   \r               [  \r               B   l   o   c   k   (   )
0104420        r   e   p   e   a   t   w   h   i   l   e       t   Q   !
0104440    0       e   q       0  \r               C   o   m   p   l 376
0104460  001  \0 252 331   e   t   e   P   u   p   (   D   e   q   u   e
0104500    u   e   (   t   Q   )   )  \r  \r               l   e   t    
0104520    t   i   m   e   r       =       n   i   l   ;       S   e   t
0104540    T   i   m   e   r   (   l   v       t   i   m   e   r   ,    
0104560    2   0   0   )           /   /   2       s   e   c  \r        
0104600                    [  \r                           B   l   o   c
0104620    k   (   )       r   e   p   e   a   t   u   n   t   i   l    
0104640    T   i   m   e   r   H   a   s   E   x   p   i   r   e   d   (
0104660    l   v       t   i   m   e   r   )       %       s   o   c   >
0104700    >   P   u   p   S   o   c   .   i   Q   .   h   e   a   d    
0104720    n   e       0  \r                           i   p   b   i    
0104740    =       D   e   q   u   e   u   e   (   l   v       s   o   c
0104760    >   >   P   u   p   S   o   c   .   i   Q   )  \r            
0105000                i   f       i   p   b   i       e   q       0    
0105020    b   r   e   a   k           /   /   t   i   m   e   o   u   t
0105040        -       r   e   t   r   a   n   s   m   i   t  \r        
0105060                  376 001  \0   S   ^   i   f       M   u   l   t
0105100    E   q   (   l   v       i   p   b   i   >   >   P   B   I   .
0105120    p   u   p   .   i   d   ,       l   v       o   p   b   i   >
0105140    >   P   B   I   .   p   u   p   .   i   d   )       t   h   e
0105160    n  \r                                       i   f       i   p
0105200    b   i   >   >   P   B   I   .   p   u   p   .   t   y   p   e
0105220        n   e       t   y   p   e   E   r   r   o   r       b   r
0105240    e   a   k  \r                           O   t   h   e   r   S
0105260    p   i   g   o   t   (   i   p   b   i   )   ;       i   p   b
0105300    i       =       0  \r                           ]       r   e
0105320    p   e   a   t  \r               i   f       i   p   b   i    
0105340    n   e       0       b   r   e   a   k  \r               ]  \r
0105360   \r   B   l   o   c   k   (   )       r   e   p   e   a   t   w
0105400    h   i   l   e       t   Q   !   0       e   q       0  \r   R
0105420    e   l   e   a   s   e   P   B   I   (   D   e   q   u   e   u
0105440    e   (   t   Q   )   )  \r   r   e   s   u   l   t   i   s    
0105460    i   p   b   i  \r   ]  \r  \r   / 376 001  \0 330  \a   /   -
0105500    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0105600    -   -   -   -   -   -   -   -   -   -   -  \r   a   n   d    
0105620    P   r   i   n   t   C   o   n   t   e   n   t   s   (   p   b
0105640    i   )       b   e  \r   /   /   -   -   -   -   -   -   -   -
0105660    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0105760    -   -   -   -  \r   [  \r   f   o   r       i       =       1
0106000        t   o       p   b   i   >   >   P   B   I   .   p   u   p
0106020    .   l   e   n   g   t   h   -   p   u   p   O   v   B   y   t
0106040    e   s       d   o  \r                   P   u   t   s   (   d
0106060    s   p   ,       p   b   i   >   >   P   B   I   .   p 376 001
0106100   \0 342   1   u   p   .   b   y   t   e   s   ^   i   )  \r   ]
0106120   \r  \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -
0106140    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0106240   \r   a   n   d       A   p   p   e   n   d   M   e   s   a   S
0106260    t   r   i   n   g   T   o   P   u   p   (   p   b   i   ,    
0106300    f   i   r   s   t   W   o   r   d   ,       s   t   r   i   n
0106320    g   )       b   e  \r   /   /   -   -   -   -   -   -   -   -
0106340    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0106440    -   -   -   -  \r   [  \r   s   t   r   u   c   t   u   r   e
0106460        M   e   s   a   S   t   r   i   n   g   :  \r            
0106500    [  \r     376 001  \0   8 234           l   e   n   g   t   h
0106520        w   o   r   d  \r               m   a   x   L   e   n   g
0106540    t   h       w   o   r   d  \r               c   h   a   r   ^
0106560    1   ,   1       b   y   t   e  \r               ]  \r   l   e
0106600    t       m   s       =       l   v       p   b   i   >   >   P
0106620    B   I   .   p   u   p   .   w   o   r   d   s       +       f
0106640    i   r   s   t   W   o   r   d       -   1  \r   m   s   >   >
0106660    M   e   s   a   S   t   r   i   n   g   .   l   e   n   g   t
0106700    h       =       s   t   r   i   n   g   >   >   S   t   r   i
0106720    n   g   .   l   e   n   g   t   h  \r   m   s   >   >   M   e
0106740    s   a   S   t   r   i   n   g   .   m   a   x   L   e   n   g
0106760    t   h       =       (   s   t   r   i   n   g   >   >   S   t
0107000    r   i   n   g   .   l   e   n   g   t   h   +   1   )       &
0107020        -   2  \r   f   o   r       i       =       1       t   o
0107040        s   t   r   i   n   g   >   >   S   t   r   i   n   g   .
0107060    l   e   n   g   t   h       d   o  \r               m   s   >
0107100    >   M   e   s   a   S   t   r 376  \0   m 263 025   i   n   g
0107120    .   c   h   a   r   ^   i       =       s   t   r   i   n   g
0107140    >   >   S   t   r   i   n   g   .   c   h   a   r   ^   i  \r
0107160    p   b   i   >   >   P   B   I   .   p   u   p   .   l   e   n
0107200    g   t   h       =       p   u   p   O   v   B   y   t   e   s
0107220    +   f   i   r   s   t   W   o   r   d   *   2   +   m   s   >
0107240    >   M   e   s   a   S   t   r   i   n   g   .   m   a   x   L
0107260    e   n   g   t   h   +   2  \r   ]  \r 377  \0  \0   P   u   p
0107300    T   e   s   t   I   O   .   b   c   p   l  \0 373 230 230   {
0107320    u  \0  \0 376 001  \0 330 021   /   /       P   u   p   T   e
0107340    s   t   I   O   .   b   c   p   l  \r   /   /       C   o   p
0107360    y   r   i   g   h   t       X   e   r   o   x       C   o   r
0107400    p   o   r   a   t   i   o   n       1   9   7   9   ,       1
0107420    9   8   2  \r   /   /       L   a   s   t       m   o   d   i
0107440    f   i   e   d       F   e   b   r   u   a   r   y       1   5
0107460    ,       1   9   8   2           5   :   4   9       P   M    
0107500    b   y       B   o   g   g   s  \r  \r   g   e   t       "   P
0107520    u   p   .   d   e   c   l   "  \r   g   e   t       "   P   u
0107540    p   S   t   a   t   s   .   d   e   c   l   "  \r   g   e   t
0107560        "   P   u   p   T   e   s   t   .   d   e   c   l   "  \r
0107600   \r   e   x   t   e   r   n   a   l  \r   [  \r   /   /   o   u
0107620    t   g   o   i   n   g       p   r   o   c   e   d   u   r   e
0107640    s  \r   G   e   t   S   t   r   i   n   g   ;       G   e   t
0107660    N   u   m   b   e   r   ;       P   r   i   n   t   P   o   r
0107700    t   ;       C   o   n   f   i   r   m  \r   O   p   e   n   P
0107720    o   r   t   ;       C   o   m 376 001  \0 327 004   p   u   t
0107740    e   T   h   r   u   p   u   t   ;       W   s   ;       W   s
0107760    s  \r   O   t   h   e   r   S   p   i   g   o   t   ;       O
0110000    t   h   e   r   S   p   i   g   o   t   P   r   o   c   e   s
0110020    s  \r   P   r   i   n   t   P   u   p   R   T   ;       R   T
0110040    T   i   t   l   e   ;       R   T   E   n   t   r   y   ;    
0110060    P   r   i   n   t   S   t   a   t   i   s   t   i   c   s  \r
0110100   \r   /   /   i   n   c   o   m   i   n   g       p   r   o   c
0110120    e   d   u   r   e   s  \r   P   u   t   s   ;       G   e   t
0110140    s   ;       E   n   d   o   f   s   ;       R   e   s   e   t
0110160    s  \r   M   o   v   e   B   l   o   c   k   ;       Z   e   r
0110200    o   ;       D   e   f   a   u   l   t   A   r   g   s  \r   E
0110220    n   q   u   e   u   e   ;       D   e   q   u   e   u   e   ;
0110240        B   l   o   c   k  \r   P   u   t   T   e   m   p   l   a
0110260    t   e   ;       E   r   a   s   e   B   i   t   s   ;       C
0110300    h   a   r   W   i   d   t   h  \r   O   p   e   n   L   e   v
0110320    e   l   1   S   o   c   k   e   t   ;       R   e 376 001  \0
0110340    "   }   l   e   a   s   e   P   B   I   ;       G   e   t   P
0110360    a   r   t   n   e   r  \r   H   L   o   o   k   u   p   ;    
0110400    H   E   n   u   m   e   r   a   t   e  \r   U   p   d   a   t
0110420    e   A   v   e   r   a   g   e   ;       D   i   v   i   d   e
0110440    3   2   x   1   6  \r  \r   /   /   s   t   a   t   i   c   s
0110460   \r   d   s   p   ;       k   e   y   s  \r   s   p   i   g   o
0110500    t   Q   ;       p   u   p   R   T   ;       p   b   i   F   r
0110520    e   e   Q  \r   ]  \r  \r   m   a   n   i   f   e   s   t    
0110540    r   e   a   l   T   i   m   e   C   l   o   c   k       =    
0110560    4   3   0   b  \r  \f  \r   /   /   -   -   -   -   -   -   -
0110600    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0110700    -   -   -   -   -  \r   l   e   t       G   e   t   S   t   r
0110720    i   n   g   (   p   r   o   m   p   t   ,       a   d   d   r
0110740    ,     376 001  \0 275 236   e   c   h   o   ,       c   r   ;
0110760        n   u   m   a   r   g   s       n   a   )       =       v
0111000    a   l   o   f  \r   /   /   -   -   -   -   -   -   -   -   -
0111020    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0111120    -   -   -  \r   [  \r   /   /   m   a   k   e       a       b
0111140    c   p   l       s   t   r   i   n   g       f   r   o   m    
0111160    t   h   e       k   e   y   b   o   a   r   d  \r   /   /   i
0111200    f       e   c   h   o       i   s       t   r   u   e   ,    
0111220    e   c   h   o       t   h   e       t   y   p   e   d       c
0111240    h   a   r   a   c   t   e   r   s       t   o       t   h   e
0111260        d   i   s   p   l   a   y  \r   /   /   r   e   t   u   r
0111300    n   s       f   a   l   s   e       i   f       d   e   l    
0111320    i   s       t   y   p   e   d       (   r   e   t   u   r   n
0111340        t   o       c   o   m 376 001  \0   5 231   m   a   n   d
0111360        l   e   v   e   l   )  \r   /   /   a   d   d   r       i
0111400    s       t   h   e       a   d   d   r   e   s   s       o   f
0111420        t   h   e       s   t   r   i   n   g       t   h   a   t
0111440        s   h   o   u   l   d       g   e   t       t   h   e    
0111460    r   e   s   u   l   t   .  \r   /   /   p   r   o   m   p   t
0111500        i   s       a       p   r   o   m   p   t       s   t   r
0111520    i   n   g       p   r   i   n   t   e   d       i   n       t
0111540    h   e       o   b   v   i   o   u   s       p   l   a   c   e
0111560    s  \r   i   f       n   a       l   s       3       t   h   e
0111600    n       e   c   h   o       =       t   r   u   e  \r   i   f
0111620        n   a       l   s       4       t   h   e   n       c   r
0111640        =       t   r   u   e  \r   W   s   (   p   r   o   m   p
0111660    t   )  \r   l   e   t       c   o   u   n   t       =       0
0111700   \r               [  \r               l   e   t       c   h   a
0111720    r       =       G   e   t   s   (   k   e   y   s   )  \r    
0111740            s   w   i   t   c   h   o   n       c 376 001  \0   !
0111760    \   h   a   r       i   n   t   o  \r                        
0112000    [  \r                           c   a   s   e       $   *   S
0112020    :       c   a   s   e       $   *   N   :       c   a   s   e
0112040        $   *   0   3   3   :  \r                                
0112060        [  \r                                       P   u   t   s
0112100    (   d   s   p   ,       (   c   r       ?       $   *   N   ,
0112120        $   *   S   )   )  \r                                    
0112140    a   d   d   r   >   >   S   t   r   i   n   g   .   l   e   n
0112160    g   t   h       =       c   o   u   n   t  \r                
0112200                        r   e   s   u   l   t   i   s       c   o
0112220    u   n   t       n   e       0  \r                            
0112240            ]  \r                           c   a   s   e       $
0112260    *   1   7   7   :  \r                                       [
0112300        W   s   (   "   X   X   X   "   )   ;       P   u   t   s
0112320    (   d   s   p   ,       (   c   r       ?       $   *   N   ,
0112340        $   *   S   )   )   ;       r   e   s   u   l   t   i   s
0112360      376 001  \0 346   $   f   a   l   s   e       ]  \r        
0112400                    c   a   s   e       $   *   0   0   1   :    
0112420    c   a   s   e       $   *   0   1   0   :  \r                
0112440                        [  \r                                    
0112460    i   f       c   o   u   n   t       t   h   e   n  \r        
0112500                                            [  \r                
0112520                                    i   f       e   c   h   o    
0112540    t   h   e   n  \r                                            
0112560                    E   r   a   s   e   B   i   t   s   (   d   s
0112600    p   ,       -   C   h   a   r   W   i   d   t   h   (   d   s
0112620    p   ,       a   d   d   r   >   >   S   t   r   i   n   g   .
0112640    c   h   a   r   ^   c   o   u   n   t   )   )  \r            
0112660                                        c   o   u   n   t       =
0112700        c   o   u   n   t       -   1  \r                        
0112720                            ]  \r                                
0112740        e   n   d   c   a   s   e  \r                            
0112760            ]  \r         376 001  \0 244   w                   d
0113000    e   f   a   u   l   t   :  \r                                
0113020        [  \r                                       i   f       c
0113040    o   u   n   t       l   e       2   5   5       &       c   h
0113060    a   r       g   e       $   *   S       &       c   h   a   r
0113100        l   e       $   *   1   7   7       t   h   e   n  \r    
0113120                                                [  \r            
0113140                                        c   o   u   n   t       =
0113160        c   o   u   n   t       +       1  \r                    
0113200                                a   d   d   r   >   >   S   t   r
0113220    i   n   g   .   c   h   a   r   ^   c   o   u   n   t       =
0113240        c   h   a   r  \r                                        
0113260            i   f       e   c   h   o       t   h   e   n       P
0113300    u   t   s   (   d   s   p   ,       c   h   a   r   )  \r    
0113320                                                ]  \r            
0113340                            e   n   d   c   a   s   e  \r        
0113360                                ]  \r         376 001  \0   $ 251
0113400                    ]  \r               ]       r   e   p   e   a
0113420    t  \r   ]  \r  \f  \r   /   /   -   -   -   -   -   -   -   -
0113440    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0113540    -   -   -   -  \r   a   n   d       G   e   t   N   u   m   b
0113560    e   r   (   s   t   r   i   n   g   )       =       v   a   l
0113600    o   f  \r   /   /   -   -   -   -   -   -   -   -   -   -   -
0113620    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0113720    -  \r   [  \r   W   s   (   s   t   r   i   n   g   )  \r   l
0113740    e   t       r   e   s       =       0  \r               [  \r
0113760                l   e   t       c   h   a   r       =       G   e
0114000  376 001  \0   f 373   t   s   (   k   e   y   s   )  \r        
0114020        s   w   i   t   c   h   o   n       c   h   a   r       i
0114040    n   t   o  \r                           [  \r                
0114060            c   a   s   e       $   0   :       c   a   s   e    
0114100    $   1   :       c   a   s   e       $   2   :       c   a   s
0114120    e       $   3   :  \r                           c   a   s   e
0114140        $   4   :       c   a   s   e       $   5   :       c   a
0114160    s   e       $   6   :       c   a   s   e       $   7   :  \r
0114200                                        [  \r                    
0114220                    P   u   t   s   (   d   s   p   ,       c   h
0114240    a   r   )  \r                                       r   e   s
0114260        =       (   r   e   s       l   s   h   i   f   t       3
0114300    )       +       (   c   h   a   r       &       7   )  \r    
0114320                                    e   n   d   c   a   s   e  \r
0114340                                        ]  \r                    
0114360        c   a   s   e       $   *   0   0   1   :       c   a   s
0114400    e       $   *   0 376 001  \0 360   #   1   0   :  \r        
0114420                                [  \r                            
0114440            E   r   a   s   e   B   i   t   s   (   d   s   p   ,
0114460        -   C   h   a   r   W   i   d   t   h   (   d   s   p   ,
0114500        $   0   +   (   r   e   s   &   7   )   )   )  \r        
0114520                                r   e   s       =       r   e   s
0114540        r   s   h   i   f   t       3  \r                        
0114560                e   n   d   c   a   s   e  \r                    
0114600                    ]  \r                           c   a   s   e
0114620        $   *   N   :       c   a   s   e       $   *   S   :    
0114640    c   a   s   e       $   *   1   7   7   :       r   e   s   u
0114660    l   t   i   s       r   e   s  \r                           ]
0114700   \r               ]       r   e   p   e   a   t  \r   ]  \r  \r
0114720    /   /   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0114740    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0115000    -   -   -   -   -   -   -   -   -   - 376 001  \0   #   :   -
0115020    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0115040    -   -   -  \r   a   n   d       C   o   n   f   i   r   m   (
0115060    p   r   o   m   p   t   ;       n   u   m   a   r   g   s    
0115100    n   a   )       =       v   a   l   o   f  \r   /   /   -   -
0115120    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0115220    -   -   -   -   -   -   -   -   -   -  \r   [  \r   i   f    
0115240    n   a       g   r       0       t   h   e   n       W   s   (
0115260    p   r   o   m   p   t   )   ;       W   s   (   "   [   C   o
0115300    n   f   i   r   m   ]       "   )  \r   s   w   i   t   c   h
0115320    o   n       G   e   t   s   (   k   e   y   s   )       i   n
0115340    t   o  \r               [  \r               c   a   s   e    
0115360    $   Y   :       c   a   s   e       $   y   :       c   a   s
0115400    e       $   *   N   :  \r                           [     376
0115420  001  \0 321   m   W   s   (   "   Y   e   s   .   *   N   "   )
0115440    ;       r   e   s   u   l   t   i   s       t   r   u   e    
0115460    ]  \r               c   a   s   e       $   N   :       c   a
0115500    s   e       $   n   :       c   a   s   e       $   *   1   7
0115520    7   :  \r                           [       W   s   (   "   N
0115540    o   .   *   N   "   )   ;       r   e   s   u   l   t   i   s
0115560        f   a   l   s   e       ]  \r               d   e   f   a
0115600    u   l   t   :  \r                           [       W   s   (
0115620    "   Y   e   s       o   r       N   o   *   N   "   )   ;    
0115640    e   n   d   c   a   s   e       ]  \r               ]  \r   ]
0115660        r   e   p   e   a   t  \r  \r   /   /   -   -   -   -   -
0115700    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0116000    -   -   -   -   -   -   -  \r   a   n   d       P   r   i   n
0116020    t   P   o   r 376 001  \0 205 262   t   (   p   o   r   t   )
0116040        b   e  \r   /   /   -   -   -   -   -   -   -   -   -   -
0116060    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0116160    -   -  \r               P   u   t   T   e   m   p   l   a   t
0116200    e   (   d   s   p   ,   "   [   $   U   O   #   $   U   O   #
0116220    $   U   E   O   ]   "   ,       p   o   r   t   >   >   P   o
0116240    r   t   .   n   e   t   ,       p   o   r   t   >   >   P   o
0116260    r   t   .   h   o   s   t   ,  \r                   l   v    
0116300    p   o   r   t   >   >   P   o   r   t   .   s   o   c   k   e
0116320    t   )  \r  \r   /   /   -   -   -   -   -   -   -   -   -   -
0116340    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0116420    -   -   -   -   -   -   -   -   - 376 001  \0 270 207   -   -
0116440    -   -   -   -   -   -   -  \r   a   n   d       O   p   e   n
0116460    P   o   r   t   (   s   t   r   i   n   g   ,       s   o   c
0116500    ,       f   s   1   ,       f   s   2   ,       l   c   l   P
0116520    o   r   t   ;       n   u   m   a   r   g   s       n   a   )
0116540        =       v   a   l   o   f  \r   /   /   -   -   -   -   -
0116560    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0116660    -   -   -   -   -   -   -  \r   [  \r   D   e   f   a   u   l
0116700    t   A   r   g   s   (   l   v       n   a   ,       -   2   ,
0116720        0   ,       0   ,       0   )  \r   l   e   t       f   r
0116740    n   P   o   r   t       =       v   e   c       l   e   n   P
0116760    o   r   t  \r   l   e   t       n   a   m   e       =       v
0117000    e   c       4   0  \r               [  \r               u   n
0117020    l   e   s   s       G   e   t   S   t   r   i   n   g 376 001
0117040   \0 206   A   (   s   t   r   i   n   g   ,       n   a   m   e
0117060    ,       t   r   u   e   ,       f   a   l   s   e   )       r
0117100    e   s   u   l   t   i   s       f   a   l   s   e  \r        
0117120        i   f       G   e   t   P   a   r   t   n   e   r   (   n
0117140    a   m   e   ,       d   s   p   ,       f   r   n   P   o   r
0117160    t   ,       f   s   1   ,       f   s   2   )       b   r   e
0117200    a   k  \r               ]       r   e   p   e   a   t  \r   O
0117220    p   e   n   L   e   v   e   l   1   S   o   c   k   e   t   (
0117240    s   o   c   ,       l   c   l   P   o   r   t   ,       f   r
0117260    n   P   o   r   t   )  \r   r   e   s   u   l   t   i   s    
0117300    t   r   u   e  \r   ]  \r  \r   /   /   -   -   -   -   -   -
0117320    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0117420    -   -   -   -   -   -  \r   a   n   d       W   s   (   s   t
0117440    r   i   n 376 001  \0 325 307   g   )       b   e       W   s
0117460    s   (   d   s   p   ,       s   t   r   i   n   g   )  \r   /
0117500    /   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0117520    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0117600    -   -   -   -   -   -   -   -   -   -   -   -   -  \r  \r   /
0117620    /   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0117640    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0117720    -   -   -   -   -   -   -   -   -   -   -   -   -  \r   a   n
0117740    d       W   s   s   (   s   t   r   e   a   m   ,       s   t
0117760    r   i   n   g   )       b   e  \r   /   /   -   -   -   -   -
0120000    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0120040    -   -   -   -   -   -   -   - 376 001  \0 331 301   -   -   -
0120060    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0120100    -   -   -   -   -   -   -   -   -   -   -   -  \r            
0120120    f   o   r       i       =       1       t   o       s   t   r
0120140    i   n   g   >   >   S   t   r   i   n   g   .   l   e   n   g
0120160    t   h       d   o  \r                           P   u   t   s
0120200    (   s   t   r   e   a   m   ,       s   t   r   i   n   g   >
0120220    >   S   t   r   i   n   g   .   c   h   a   r   ^   i   )  \r
0120240   \f  \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -
0120260    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0120360   \r   a   n   d       C   o   m   p   u   t   e   T   h   r   u
0120400    p   u   t   (   t   p   )       =       v   a   l   o   f  \r
0120420    /   /   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0120440    -   -   -   -   -   -   -   -   -   -   -   -   - 376 001  \0
0120460  234 256   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0120500    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0120540    -   -   -  \r   [  \r   l   e   t       n   u   m       =    
0120560    v   e   c       1  \r   M   o   v   e   B   l   o   c   k   (
0120600    n   u   m   ,       (   a   l   t   o   ?       t   a   b   l
0120620    e       [       1   9   ;       -   2   8   4   6   8   ]   ,
0120640        t   a   b   l   e       [       7   6   ;       1   9   2
0120660    6   4   ]   )   ,       2   )  \r   D   i   v   i   d   e   3
0120700    2   x   1   6   (   n   u   m   ,       @   r   e   a   l   T
0120720    i   m   e   C   l   o   c   k   -   t   p   >   >   T   P   .
0120740    t   i   m   e   r   )  \r   P   u   t   T   e   m   p   l   a
0120760    t   e   (   d   s   p   ,       "       [       $   U   D   0
0121000        b   y   t   e   s   /   s   e   c       ]   *   N   "   ,
0121020        n   u   m   !   1   )  \r   t   p   >   >   T   P   .   t
0121040    h   r   u   p   u   t       =       n   u   m   !   1  \r   t
0121060    p   > 376 001  \0   G 266   >   T   P   .   a   v   e   T   h
0121100    r   u   p   u   t       =       t   p   >   >   T   P   .   a
0121120    v   e   T   h   r   u   p   u   t       e   q       0   ?    
0121140    t   p   >   >   T   P   .   t   h   r   u   p   u   t   ,  \r
0121160        U   p   d   a   t   e   A   v   e   r   a   g   e   (   t
0121200    p   >   >   T   P   .   t   h   r   u   p   u   t   ,       t
0121220    p   >   >   T   P   .   a   v   e   T   h   r   u   p   u   t
0121240    ,       8   )  \r   ]  \r  \f  \r   /   /   -   -   -   -   -
0121260    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0121360    -   -   -   -   -   -  \r   a   n   d       P   r   i   n   t
0121400    P   u   p   R   T   (   )       b   e  \r   /   /   -   -   -
0121420    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0121460    -   -   -   -   -   -   - 376 001  \0   0   _   -   -   -   -
0121500    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0121520    -   -   -   -   -   -   -   -   -   -   -   -   -  \r   [  \r
0121540    l   e   t       P   e   r   N   e   t   (   r   t   e   ,    
0121560    l   v   C   o   u   n   t   )       b   e  \r               R
0121600    T   E   n   t   r   y   (   r   t   e   >   >   R   T   E   .
0121620    n   e   t   ,       r   t   e   >   >   R   T   E   .   n   d
0121640    b   >   >   N   D   B   .   l   o   c   a   l   N   e   t   ,
0121660   \r                   r   t   e   >   >   R   T   E   .   h   o
0121700    s   t   ,       r   t   e   >   >   R   T   E   .   h   o   p
0121720    s   ,       l   v   C   o   u   n   t   )  \r   l   e   t    
0121740    c   o   u   n   t       =       0  \r   R   T   T   i   t   l
0121760    e   (   "   L   o   c   a   l       r   o   u   t   i   n   g
0122000        t   a   b   l   e   :   "   )  \r   H   E   n   u   m   e
0122020    r   a   t   e   (   p   u   p   R   T   ,       P   e   r   N
0122040    e   t   ,       l   v       c   o   u   n   t   )  \r   P   u
0122060    t   s   (   d   s   p   ,       $   *   N   ) 376 001  \0   #
0122100  277  \r   ]  \r  \r   /   /   -   -   -   -   -   -   -   -   -
0122120    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0122220    -   -   -  \r   a   n   d       R   T   T   i   t   l   e   (
0122240    s   t   r   i   n   g   )       b   e  \r   /   /   -   -   -
0122260    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0122360    -   -   -   -   -   -   -   -   -  \r   [  \r   W   s   (   s
0122400    t   r   i   n   g   )  \r   W   s   (   "   *   N       N   e
0122420    t               V   i   a               H   o   p   s       |
0122440        N   e   t               V   i   a               H   o   p
0122460    s       |       N   e   t               V   i   a            
0122500    H 376 001  \0 272 257   o   p   s       |       N   e   t    
0122520            V   i   a               H   o   p   s   "   )  \r   W
0122540    s   (   "   *   N       -   -   -   -   -   -   -   -   -   -
0122560    -   -   -   -   -   -   -   |   -   -   -   -   -   -   -   -
0122600    -   -   -   -   -   -   -   -   -   -   |   -   -   -   -   -
0122620    -   -   -   -   -   -   -   -   -   -   -   -   -   |   -   -
0122640    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   "
0122660    )  \r   ]  \r  \r   /   /   -   -   -   -   -   -   -   -   -
0122700    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0123000    -   -   -  \r   a   n   d       R   T   E   n   t   r   y   (
0123020    d   N   e   t   ,       v   i   a   N   e   t   ,       v   i
0123040    a   H   o   s   t   ,       h   o   p   s   ,       l   v   C
0123060    o   u   n   t   )       b   e  \r   /   /   -   -   -   -   -
0123100    -   -   -   -   -   - 376 001  \0 325   j   -   -   -   -   -
0123120    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0123200    -   -   -   -   -   -   -   -   -   -   -   -  \r   [  \r   i
0123220    f       @   l   v   C   o   u   n   t       r   e   m       4
0123240        e   q       0       t   h   e   n       W   s   (   "   *
0123260    N       "   )  \r   P   u   t   T   e   m   p   l   a   t   e
0123300    (   d   s   p   ,       "   $   U   3   O       $   U   3   O
0123320    #   $   U   3   F   0   O   #       $   U   2   O       "   ,
0123340        d   N   e   t   ,       v   i   a   N   e   t   ,       v
0123360    i   a   H   o   s   t   ,       h   o   p   s   )  \r   u   n
0123400    l   e   s   s       @   l   v   C   o   u   n   t       r   e
0123420    m       4       e   q       3       d   o       W   s   (   "
0123440        |       "   )  \r   @   l   v   C   o   u   n   t       =
0123460        @   l   v   C   o   u   n   t       +   1  \r   ]  \r  \f
0123500   \r   /   /   -   -   -   -   -   -   -   - 376 001  \0   P   ]
0123520    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0123620    -   -   -   -  \r   a   n   d       P   r   i   n   t   S   t
0123640    a   t   i   s   t   i   c   s   (   )       b   e  \r   /   /
0123660    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0123760    -   -   -   -   -   -   -   -   -   -   -   -  \r   [  \r   l
0124000    e   t       n   e   t       =       G   e   t   N   u   m   b
0124020    e   r   (   "   s   t   a   t   i   s   t   i   c   s       f
0124040    o   r       n   e   t   w   o   r   k       "   )  \r   l   e
0124060    t       r   t   e       =       H   L   o   o   k   u   p   (
0124100    p   u   p   R   T   ,       n   e   t   )  \r   i   f       r
0124120  376 001  \0 201 362   t   e       n   e       0       t   h   e
0124140    n  \r               [  \r               l   e   t       p   b
0124160    i       =       D   e   q   u   e   u   e   (   p   b   i   F
0124200    r   e   e   Q   )  \r               i   f       r   t   e   >
0124220    >   R   T   E   .   n   d   b   >   >   N   D   B   .   l   e
0124240    v   e   l   0   S   t   a   t   s   (   p   b   i   ,       r
0124260    t   e   >   >   R   T   E   .   n   d   b   )       t   h   e
0124300    n  \r                           i   f       r   t   e   >   >
0124320    R   T   E   .   h   o   p   s       e   q       0       t   h
0124340    e   n  \r                                       s   w   i   t
0124360    c   h   o   n       p   b   i   >   >   P   B   I   .   p   u
0124400    p   .   w   o   r   d   s   ^   1       i   n   t   o  \r    
0124420                                                [  \r            
0124440                                        c   a   s   e       n   e
0124460    t   T   y   p   e   E   t   h   e   r   :  \r                
0124500                                                [       P   r   i
0124520    n   t   E   t   h 376 001  \0 310 234   e   r   S   t   a   t
0124540    s   (   p   b   i   )   ;       e   n   d   c   a   s   e    
0124560    ]  \r                                                   c   a
0124600    s   e       n   e   t   T   y   p   e   S   L   A   :  \r    
0124620                                                            [    
0124640    P   r   i   n   t   S   L   A   S   t   a   t   s   (   p   b
0124660    i   )   ;       e   n   d   c   a   s   e       ]  \r        
0124700                                            ]  \r               E
0124720    n   q   u   e   u   e   (   p   b   i   F   r   e   e   Q   ,
0124740        p   b   i   )  \r               ]  \r   ]  \r  \r   /   /
0124760    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0125060    -   -   -   -   -   -   -   -   -   -   -   -  \r   a   n   d
0125100        P   r   i   n   t   E   t   h   e   r   S   t   a   t   s
0125120    (   p   b   i   )       b   e  \r   / 376 001  \0 025 260   /
0125140    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0125240    -   -   -   -   -   -   -   -   -   -   -   -  \r   [  \r   W
0125260    s   (   "   *   N   E   t   h   e   r   n   e   t       S   t
0125300    a   t   i   s   t   i   c   s   :   "   )  \r   l   e   t    
0125320    e   s       =       l   v       p   b   i   >   >   P   B   I
0125340    .   p   u   p   .   w   o   r   d   s   ^   2  \r   P   u   t
0125360    T   e   m   p   l   a   t   e   (   d   s   p   ,       "   *
0125400    n   R   c   v   :       g   o   o   d       $   U   D   ,    
0125420    b   a   d       $   U   D   ,       o   f   f       $   U   D
0125440    "   ,  \r       e   s   >   >   E   t   h   e   r   S   t   a
0125460    t   s   .   p   a   c   k   e   t   s   R   c   v   d   ,    
0125500    e   s   >   >   E   t   h   e   r   S   t   a   t   s   .   n
0125520    u   m   B   a   d   R   c   v   S   t   a   t   u   s   , 376
0125540  001  \0 306 264  \r       e   s   >   >   E   t   h   e   r   S
0125560    t   a   t   s   .   i   n   p   u   t   O   f   f   )  \r   P
0125600    u   t   T   e   m   p   l   a   t   e   (   d   s   p   ,    
0125620    "   ;       X   m   t   :       g   o   o   d       $   U   D
0125640    ,       b   a   d       $   U   D   ;       I   |   O       $
0125660    U   D   "   ,  \r       e   s   >   >   E   t   h   e   r   S
0125700    t   a   t   s   .   p   a   c   k   e   t   s   S   e   n   t
0125720    ,       e   s   >   >   E   t   h   e   r   S   t   a   t   s
0125740    .   n   u   m   B   a   d   X   m   t   S   t   a   t   u   s
0125760    ,  \r       e   s   >   >   E   t   h   e   r   S   t   a   t
0126000    s   .   n   u   m   I   n   U   n   d   e   r   O   u   t   )
0126020   \r   W   s   (   "   *   N   L   d   s   :   "   )  \r   f   o
0126040    r       i       =       0       t   o       1   5       d   o
0126060   \r               P   u   t   T   e   m   p   l   a   t   e   (
0126100    d   s   p   ,       "       $   U   D   "   ,       e   s   >
0126120    >   E   t   h   e   r   S   t   a   t   s   .   l   o   a   d
0126140    T   a   b   l 376 001  \0  \a 350   e   ^   i   )  \r   P   u
0126160    t   T   e   m   p   l   a   t   e   (   d   s   p   ,       "
0126200    ;       O   v   f   :       $   U   D   "   ,       e   s   >
0126220    >   E   t   h   e   r   S   t   a   t   s   .   l   o   a   d
0126240    T   a   b   l   e   ^   1   6   )  \r   ]  \r  \r   /   /   -
0126260    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0126360    -   -   -   -   -   -   -   -   -   -   -  \r   a   n   d    
0126400    P   r   i   n   t   S   L   A   S   t   a   t   s   (   p   b
0126420    i   )       b   e  \r   /   /   -   -   -   -   -   -   -   -
0126440    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0126540    -   -   -   -  \r   [  \r   W   s 376 001  \0 273 364   (   "
0126560    *   N   S   L   A       S   t   a   t   i   s   t   i   c   s
0126600    :   *   N   "   )  \r   W   s   (   "                        
0126620            -   -   -   -   P   a   c   k   e   t   s   -   -   -
0126640                        -   -   -   -   -   B   y   t   e   s   -
0126660    -   -   -   -                   -   -   -   -   -   -   E   r
0126700    r   o   r   s   -   -   -   -   -   -   *   n   "   )  \r   W
0126720    s   (   "   L   i   n   e                   S   e   n   t    
0126740        R   e   c   e   i   v   e   d                       S   e
0126760    n   t               R   e   c   e   i   v   e   d            
0127000        C   R   C               S   y   n   c       C   o   n   t
0127020    r   o   l               S   t   a   t   e   *   n   "   )  \r
0127040    l   e   t       m   a   x   S   L   A   H   o   s   t       =
0127060        p   b   i   >   >   P   B   I   .   p   u   p   .   w   o
0127100    r   d   s   ^   2  \r   l   e   t       m   a   x   S   L   A
0127120    L   i   n   e       =       p   b   i   >   >   P   B   I   .
0127140    p   u   p   .   w   o   r   d   s   ^   (   m   a   x 376 001
0127160   \0 332 026   S   L   A   H   o   s   t   +   3   )  \r   f   o
0127200    r       l   i   n   e       =       0       t   o       m   a
0127220    x   S   L   A   L   i   n   e       d   o  \r               [
0127240   \r               l   e   t       s   s       =       l   v    
0127260    p   b   i   >   >   P   B   I   .   p   u   p   .   w   o   r
0127300    d   s   ^   (   m   a   x   S   L   A   H   o   s   t   +   4
0127320    +   l   e   n   S   L   A   S   t   a   t   s   *   l   i   n
0127340    e   )  \r               i   f       s   s   >   >   S   L   A
0127360    S   t   a   t   s   .   s   t   a   t   e       e   q       s
0127400    l   a   L   i   n   e   M   i   s   s   i   n   g       l   o
0127420    o   p  \r               P   u   t   T   e   m   p   l   a   t
0127440    e   (   d   s   p   ,       "   $   3   O   $   9   E   D   $
0127460    9   E   D   $   1   0   E   D   $   1   0   E   D           $
0127500    6   D   $   6   D   $   6   D                           $   S
0127520    *   n   "   ,  \r                   l   i   n   e   ,       l
0127540    v       s   s   >   >   S   L   A   S   t   a   t   s   .   t
0127560    r   a   n 376 001  \0 312   ]   s   m   i   t   P   a   c   k
0127600    e   t   s   ,       l   v       s   s   >   >   S   L   A   S
0127620    t   a   t   s   .   r   e   c   e   i   v   e   P   a   c   k
0127640    e   t   s   ,  \r                   l   v       s   s   >   >
0127660    S   L   A   S   t   a   t   s   .   t   r   a   n   s   m   i
0127700    t   B   y   t   e   s   ,       l   v       s   s   >   >   S
0127720    L   A   S   t   a   t   s   .   r   e   c   e   i   v   e   B
0127740    y   t   e   s   ,  \r                   s   s   >   >   S   L
0127760    A   S   t   a   t   s   .   b   a   d   C   R   C   ,       s
0130000    s   >   >   S   L   A   S   t   a   t   s   .   i   n   p   u
0130020    t   O   v   e   r   r   u   n   ,  \r                   s   s
0130040    >   >   S   L   A   S   t   a   t   s   .   l   i   n   e   C
0130060    o   n   t   r   o   l   E   r   r   o   r   ,  \r            
0130100        s   e   l   e   c   t   o   n       s   s   >   >   S   L
0130120    A   S   t   a   t   s   .   s   t   a   t   e       i   n   t
0130140    o  \r                           [  \r                        
0130160    c   a   s   e       s   l   a 376 001  \0 023 346   L   i   n
0130200    e   D   o   w   n   :       "   D   o   w   n   "  \r        
0130220                    c   a   s   e       s   l   a   L   i   n   e
0130240    U   p   :       "   U   p   "  \r                           c
0130260    a   s   e       s   l   a   L   i   n   e   L   o   o   p   e
0130300    d   B   a   c   k   :       "   L   o   o   p   e   d       b
0130320    a   c   k   "  \r                           d   e   f   a   u
0130340    l   t   :       "   ?   "  \r                           ]   )
0130360   \r               ]  \r   W   s   (   "   *   n   R   o   u   t
0130400    i   n   g       t   a   b   l   e   :   *   n   "   )  \r   f
0130420    o   r       i       =       1       t   o       4       d   o
0130440        W   s   (   "   H   o   s   t       L   i   n   e       H
0130460    o   p   s                   "   )  \r   l   e   t       c   o
0130500    u   n   t       =       0  \r   f   o   r       i       =    
0130520    1       t   o       m   a   x   S   L   A   H   o   s   t    
0130540    d   o  \r               [  \r               l   e   t       r
0130560    t   e       =       l   v       p   b   i   >   > 376 001  \0
0130600  216 371   P   B   I   .   p   u   p   .   w   o   r   d   s   ^
0130620    (   2   +   i   )  \r               i   f       r   t   e   >
0130640    >   S   L   A   R   T   E   .   h   o   p   C   n   t       n
0130660    e       #   3   7   7       t   h   e   n  \r                
0130700            [  \r                           P   u   t   T   e   m
0130720    p   l   a   t   e   (   d   s   p   ,       "   $   S   $   3
0130740    O           $   3   O           $   3   D   "   ,       (   c
0130760    o   u   n   t       r   e   m       4       e   q       0   ?
0131000        "   *   n   "   ,       "                       "   )   ,
0131020   \r                               i   ,       r   t   e   >   >
0131040    S   L   A   R   T   E   .   l   i   n   e   ,       r   t   e
0131060    >   >   S   L   A   R   T   E   .   h   o   p   C   n   t   )
0131100   \r                           c   o   u   n   t       =       c
0131120    o   u   n   t       +   1  \r                           ]  \r
0131140                ]  \r   P   u   t   s   (   d   s   p   ,       $
0131160    *   n   )  \r   ]  \r  \f  \r   /   /   -   -   -   -   -   -
0131200    -   - 376 001  \0 321 335   -   -   -   -   -   -   -   -   -
0131220    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0131300    -   -   -   -   -   -   -   -   -   -  \r   a   n   d       O
0131320    t   h   e   r   S   p   i   g   o   t   (   p   b   i   )    
0131340    b   e       E   n   q   u   e   u   e   (   s   p   i   g   o
0131360    t   Q   ,       p   b   i   )  \r   /   /   -   -   -   -   -
0131400    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0131500    -   -   -   -   -   -  \r  \r   /   /   -   -   -   -   -   -
0131520    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0131600    -   -   -   -   -   -   - 376 001  \0   < 340   -   -   -   -
0131620    -   -   -   -   -   -   -   -   -   -  \r   a   n   d       O
0131640    t   h   e   r   S   p   i   g   o   t   P   r   o   c   e   s
0131660    s   (   )       b   e  \r   /   /   -   -   -   -   -   -   -
0131700    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0132000    -   -   -   -  \r   [  \r   w   h   i   l   e       s   p   i
0132020    g   o   t   Q   !   0       e   q       0       d   o       B
0132040    l   o   c   k   (   )  \r   l   e   t       p   b   i       =
0132060        D   e   q   u   e   u   e   (   s   p   i   g   o   t   Q
0132100    )  \r   l   e   t       s   t   a   r   t   B   y   t   e    
0132120    =       0  \r   s   w   i   t   c   h   o   n       p   b   i
0132140    >   >   P   B   I   .   p   u   p   .   t   y   p   e       i
0132160    n   t   o  \r               [  \r               c   a   s   e
0132200        t   y   p   e   A   b   o   r   t   :  \r 376 001  \0   a
0132220  330                           [  \r                           W
0132240    s   (   "   [   A   b   o   r   t   ]       "   )  \r        
0132260                    s   t   a   r   t   B   y   t   e       =    
0132300    3  \r                           e   n   d   c   a   s   e  \r
0132320                            ]  \r               c   a   s   e    
0132340    t   y   p   e   E   r   r   o   r   :  \r                    
0132360        [  \r                           W   s   (   "   [   E   r
0132400    r   o   r   ]       "   )  \r                           s   t
0132420    a   r   t   B   y   t   e       =       2   5  \r            
0132440                e   n   d   c   a   s   e  \r                    
0132460        ]  \r               c   a   s   e       t   y   p   e   I
0132500    n   t   e   r   r   u   p   t   :  \r                        
0132520    [  \r                           W   s   (   "   [   I   n   t
0132540    e   r   r   u   p   t   ]       "   )  \r                    
0132560        s   t   a   r   t   B   y   t   e       =       3  \r    
0132600                        e   n   d   c   a   s   e  \r            
0132620      376  \0 264  \r 204           ]  \r               ]  \r   i
0132640    f       s   t   a   r   t   B   y   t   e       n   e       0
0132660        t   h   e   n  \r               [  \r               f   o
0132700    r       i       =       s   t   a   r   t   B   y   t   e    
0132720    t   o       p   b   i   >   >   P   B   I   .   p   u   p   .
0132740    l   e   n   g   t   h   -   p   u   p   O   v   B   y   t   e
0132760    s       d   o  \r                           P   u   t   s   (
0133000    d   s   p   ,   p   b   i   >   >   P   B   I   .   p   u   p
0133020    .   b   y   t   e   s   ^   i   )  \r               P   u   t
0133040    s   (   d   s   p   ,       $   *   N   )  \r               ]
0133060   \r   R   e   l   e   a   s   e   P   B   I   (   p   b   i   )
0133100   \r   ]       r   e   p   e   a   t  \r 377  \0  \0   P   u   p
0133120    T   e   s   t   A   l   A   .   a   s   m  \0 373 224 024 030
0133140    B  \0  \0 376 001  \0 207   g   ;       P   u   p   T   e   s
0133160    t   A   l   a   .   a   s   m       -       A   l   t   o    
0133200    V   e   r   s   i   o   n  \r   ;       C   o   p   y   r   i
0133220    g   h   t       X   e   r   o   x       C   o   r   p   o   r
0133240    a   t   i   o   n       1   9   7   9  \r   ;       L   a   s
0133260    t       m   o   d   i   f   i   e   d       J   u   l   y    
0133300    2   7   ,       1   9   7   8           2   :   3   1       P
0133320    M       b   y       B   o   g   g   s  \r  \r   .   e   n   t
0133340        U   B   l   o   c   k   E   q  \r   .   e   n   t       B
0133360    l   o   c   k   E   q  \r   .   e   n   t       U   P   u   p
0133400    C   h   e   c   k   s   u   m  \r  \r   .   e   n   t       M
0133420    u   l   D   i   v  \r   .   e   n   t       D   o   u   b   l
0133440    e   U   s   c  \r   .   e   n   t       M   u   l   P   l   u
0133460    s   3   2   x   1   6  \r   .   e   n   t       D   i   v   i
0133500    d   e   3   2   x   1   6  \r   .   e   n   t       U   p   d
0133520    a   t   e   A   v   e   r   a   g   e  \r  \r   ;       B   c
0133540    p   l       r   u   n   t   i 376 001  \0 262 314   m   e    
0133560    s   t   a   t   i   c   s  \r   g   e   t   f   r   a   m   e
0133600        =       3   7   0  \r   s   t   o   r   e   a   r   g   s
0133620        =       3   6   7  \r   r   e   t   u   r   n       =    
0133640    3   6   6  \r  \r  \t   .   s   r   e   l  \r  \r   U   B   l
0133660    o   c   k   E   q   :  \t   .   U   B   l   o   c   k   E   q
0133700   \r   B   l   o   c   k   E   q   :  \t   .   B   l   o   c   k
0133720    E   q  \r   U   P   u   p   C   h   e   c   k   s   u   m   :
0133740   \t   .   U   P   u   p   C   h   e   c   k   s   u   m  \r  \r
0133760    M   u   l   D   i   v   :  \t  \t   .   M   u   l   D   i   v
0134000   \r   D   o   u   b   l   e   U   s   c   :  \t   .   D   o   u
0134020    b   l   e   U   s   c  \r   M   u   l   P   l   u   s   3   2
0134040    x   1   6   :  \t   .   M   u   l   P   l   u   s   3   2   x
0134060    1   6  \r   D   i   v   i   d   e   3   2   x   1   6   :  \t
0134100    .   D   i   v   i   d   e   3   2   x   1   6  \r   U   p   d
0134120    a   t   e   A   v   e   r   a   g   e   :  \t   .   U   p   d
0134140    a   t   e   A   v   e   r   a   g   e  \r  \r  \t 376 001  \0
0134160  214 232   .   n   r   e   l  \r  \r   ;       U   B   l   o   c
0134200    k   E   q   (   a   d   r   1   ,   a   d   r   2   ,   c   o
0134220    u   n   t   )       -       M   i   c   r   o   c   o   d   e
0134240        v   e   r   s   i   o   n  \r   ;       C   o   m   p   a
0134260    r   e       t   h   e       c   o   u   n   t       w   o   r
0134300    d   s       s   t   a   r   t   i   n   g       a   t       a
0134320    d   r   1       w   i   t   h       t   h   e       c   o   r
0134340    r   e   s   p   o   n   d   i   n   g  \r   ;       w   o   r
0134360    d   s       s   t   a   r   t   i   n   g       a   t       a
0134400    d   r   2   ,       a   n   d       r   e   t   u   r   n    
0134420    t   r   u   e       i   f   f       a   l   l       t   h   e
0134440        c   o   r   r   e   s   p   o   n   d   i   n   g  \r   ;
0134460        w   o   r   d   s       a   r   e       e   q   u   a   l
0134500    .  \r  \r   .   U   B   l   o   c   k   E   q   :  \r  \t   s
0134520    t   a       3       1       2  \r  \t   l   d   a       3    
0134540    3       2  \t  \t   ;       g   e   t       c   o   u   n   t
0134560   \r  \t 376 001  \0   9   <   #   6   6   0   0   0  \t  \t  \t
0134600    ;       c   a   l   l       m   i   c   r   o   c   o   d   e
0134620   \r  \t   m   o   v       3       3       s   z   r  \t  \t   ;
0134640        a   c   3       =       0       i   f       a   l   l    
0134660    i   s       w   e   l   l  \r  \t   s   u   b       0       0
0134700        s   k   p  \r  \t       a   d   c       0       0  \r  \t
0134720    l   d   a       3       1       2  \r  \t   j   m   p       1
0134740        3  \r  \r   ;       B   l   o   c   k   E   q   (   a   d
0134760    r   1   ,   a   d   r   2   ,   c   o   u   n   t   )       -
0135000        A   s   s   e   m   b   l   y       l   a   n   g   u   a
0135020    g   e       v   e   r   s   i   o   n  \r   ;       C   o   m
0135040    p   a   r   e       t   h   e       c   o   u   n   t       w
0135060    o   r   d   s       s   t   a   r   t   i   n   g       a   t
0135100        a   d   r   1       w   i   t   h       t   h   e       c
0135120    o   r   r   e   s   p   o   n   d   i   n   g  \r   ;       w
0135140    o   r   d   s       s   t   a   r   t   i   n   g       a   t
0135160        a   d   r   2   ,     376 001  \0 362 372   a   n   d    
0135200    r   e   t   u   r   n       t   r   u   e       i   f   f    
0135220    a   l   l       t   h   e       c   o   r   r   e   s   p   o
0135240    n   d   i   n   g  \r   ;       w   o   r   d   s       a   r
0135260    e       e   q   u   a   l   .  \r  \r   .   B   l   o   c   k
0135300    E   q   :  \r  \t   s   t   a       3       1       2  \r  \t
0135320    s   t   a       0       2       2  \t  \t   ;       S   t   o
0135340    r   e       a   d   r   1  \r  \t   m   o   v       1       3
0135360   \t  \t  \t   ;       a   c   3       _       a   d   r   2  \r
0135400   \r   ;       C   o   m   p   a   r   e       t   h   e       f
0135420    i   r   s   t       (   c   o   u   n   t       m   o   d    
0135440    8   )       w   o   r   d   s       o   n   e       a   t    
0135460    a       t   i   m   e  \r   b   l   e   q   1   :  \t   l   d
0135500    a       0       3       2  \t  \t   ;       S   e   e       i
0135520    f       c   o   u   n   t       m   o   d       8       =    
0135540    0  \r  \t   l   d   a       1       c   7  \r  \t   a   n   d
0135560    #       0       1       s   n   r  \r  \t     376 001  \0   4
0135600  357   j   m   p       b   l   e   q   2  \t  \t   ;       Y   e
0135620    s   ,       g   o       t   o       f   a   s   t       l   o
0135640    o   p  \r  \t   l   d   a       0       @   2       2  \t  \t
0135660    ;       N   o   ,       d   o       s   l   o   w       c   o
0135700    m   p   a   r   e       o   f       o   n   e       w   o   r
0135720    d  \r  \t   l   d   a       1       0       3  \r  \t   s   e
0135740        0       1  \r  \t       j   m   p       b   l   e   q   5
0135760   \t  \t   ;       N   o   t       e   q   u   a   l   ,       r
0136000    e   t   u   r   n       f   a   l   s   e  \r  \t   i   s   z
0136020        2       2  \t  \t  \t   ;       E   q   u   a   l   ,    
0136040    i   n   c   r   e   m   e   n   t       a   d   d   r   e   s
0136060    s   e   s  \r  \t   i   n   c       3       3  \r  \t   d   s
0136100    z       3       2  \t  \t  \t   ;       D   e   c   r   e   m
0136120    e   n   t       a   n   d       t   e   s   t       c   o   u
0136140    n   t  \r  \t       j   m   p       b   l   e   q   1  \r  \r
0136160    ;       S   e   t       u   p       f   o   r       f   a   s
0136200    t 376 001  \0   ^   ]       l   o   o   p  \r   b   l   e   q
0136220    2   :  \t   l   d   a       0       3       2  \t  \t   ;    
0136240    C   o   m   p   u   t   e       c   o   u   n   t   /   8  \r
0136260   \t   m   o   v   z   r       0       0  \r  \t   m   o   v   z
0136300    r       0       0  \r  \t   m   o   v   z   r       0       0
0136320        s   n   r  \r  \t       j   m   p       b   l   e   q   4
0136340   \t  \t   ;       L   e   s   s       t   h   a   n       8    
0136360    w   o   r   d   s       i   n       b   l   o   c   k  \r  \t
0136400    s   t   a       0       3       2  \t  \t   ;       S   t   o
0136420    r   e       c   o   u   n   t   /   8  \r  \t   l   d   a    
0136440    0       2       2  \t  \t   ;       G   e   t       c   u   r
0136460    r   e   n   t       a   d   r   1  \r  \f  \r   ;       F   a
0136500    s   t       l   o   o   p   .           a   c   0   /       a
0136520    d   r   1   ,       a   c   3   /       a   d   r   2   ,    
0136540    c   o   u   n   t       i   n       f   r   a   m   e       t
0136560    e   m   p       3   .  \r   ;       T   h   e       p   o   r
0136600    t   i   o   n       i 376 001  \0   9  \n   n   s   i   d   e
0136620        d   i   r   .   .   .   e   i   r       i   s       n   o
0136640    n   -   r   e   e   n   t   r   a   n   t       d   u   e    
0136660    t   o       t   h   e       u   s   e  \r   ;       o   f    
0136700    s   a   v   e   2   .  \r   b   l   e   q   3   :  \t   d   i
0136720    r  \t  \t  \t   ;       I   n   t   e   r   l   o   c   k    
0136740    n   o   n   -   r   e   e   n   t   r   a   n   t       p   o
0136760    r   t   i   o   n  \r  \t   s   t   a       2       s   a   v
0137000    e   2  \t  \t   ;       S   a   v   e       f   r   a   m   e
0137020        p   o   i   n   t   e   r  \r  \t   m   o   v       0    
0137040    2  \t  \t  \t   ;       a   c   2       _       a   d   r   1
0137060   \r  \r  \t   l   d   a       0       0       2  \t  \t   ;    
0137100    C   o   m   p   a   r   e       8       w   o   r   d   s   ,
0137120        t   o       b   l   e   q   6       i   f       f   a   i
0137140    l  \r  \t   l   d   a       1       0       3  \r  \t   s   e
0137160        0       1  \r  \t       j   m   p       b   l   e   q   6
0137200   \r  \r  \t   l   d   a       0       1     376 001  \0 226 212
0137220    2  \r  \t   l   d   a       1       1       3  \r  \t   s   e
0137240        0       1  \r  \t       j   m   p       b   l   e   q   6
0137260   \r  \r  \t   l   d   a       0       2       2  \r  \t   l   d
0137300    a       1       2       3  \r  \t   s   e       0       1  \r
0137320   \t       j   m   p       b   l   e   q   6  \r  \r  \t   l   d
0137340    a       0       3       2  \r  \t   l   d   a       1       3
0137360        3  \r  \t   s   e       0       1  \r  \t       j   m   p
0137400        b   l   e   q   6  \r  \r  \t   l   d   a       0       4
0137420        2  \r  \t   l   d   a       1       4       3  \r  \t   s
0137440    e       0       1  \r  \t       j   m   p       b   l   e   q
0137460    6  \r  \r  \t   l   d   a       0       5       2  \r  \t   l
0137500    d   a       1       5       3  \r  \t   s   e       0       1
0137520   \r  \t       j   m   p       b   l   e   q   6  \r  \r  \t   l
0137540    d   a       0       6       2  \r  \t   l   d   a       1    
0137560    6       3  \r  \t   s   e       0       1  \r  \t       j   m
0137600    p       b   l   e   q   6  \r  \r  \t   l   d   a       0    
0137620  376 001  \0   L 325   7       2  \r  \t   l   d   a       1    
0137640    7       3  \r  \t   s   e       0       1  \r  \t       j   m
0137660    p       b   l   e   q   6  \r  \r  \t   l   d   a       0    
0137700    c   1   0  \r  \t   a   d   d       0       3  \t  \t  \t   ;
0137720        I   n   c   r   e   m   e   n   t       a   d   r   2    
0137740    b   y       8  \r  \t   a   d   d       2       0  \t  \t  \t
0137760    ;       I   n   c   r   e   m   e   n   t       a   d   r   1
0140000        b   y       8   ,       m   o   v   e       t   o       a
0140020    c   0  \r  \t   l   d   a       2       s   a   v   e   2  \t
0140040   \t   ;       R   e   c   o   v   e   r       f   r   a   m   e
0140060        p   o   i   n   t   e   r  \r  \t   e   i   r  \t  \t  \t
0140100    ;       N   o   w       r   e   e   n   t   r   a   n   t  \r
0140120   \t   d   s   z       3       2  \t  \t  \t   ;       D   e   c
0140140    r   e   m   e   n   t       a   n   d       t   e   s   t    
0140160    c   o   u   n   t  \r  \t       j   m   p       b   l   e   q
0140200    3  \t  \t   ;       M   o   r   e       t   o       d   o  \r
0140220   \r   b   l   e   q 376 001  \0   !   *   4   :  \t   m   k   m
0140240    i   n   u   s   o   n   e       0       0       s   k   p  \t
0140260    ;       H   e   r   e       t   o       r   e   t   u   r   n
0140300        t   r   u   e  \r   b   l   e   q   5   :  \t       m   k
0140320    z   e   r   o       0       0  \t  \t   ;       H   e   r   e
0140340        t   o       r   e   t   u   r   n       f   a   l   s   e
0140360   \r  \t   l   d   a       3       1       2  \r  \t   j   m   p
0140400        1       3  \r  \r   b   l   e   q   6   :  \t   l   d   a
0140420        2       s   a   v   e   2  \t  \t   ;       H   e   r   e
0140440        t   o       r   e   t   u   r   n       f   a   l   s   e
0140460        w   h   e   n  \r  \t   e   i   r  \t  \t  \t   ;        
0140500    i   n   s   i   d   e       f   a   s   t       l   o   o   p
0140520   \r  \t   j   m   p       b   l   e   q   5  \r  \r   c   7   :
0140540   \t   7  \r   c   1   0   :  \t   1   0  \r   s   a   v   e   2
0140560    :  \t   0  \r  \r   ;       P   u   p   C   h   e   c   k   s
0140600    u   m       m   i   c   r   o   c   o   d   e       i   n   t
0140620    e   r   f   a   c   e  \r   ;       m 376 001  \0   ~  \0   i
0140640    c   r   o   c   o   d   e   d       r   e   p   l   a   c   e
0140660    m   e   n   t       f   o   r       P   u   p   C   h   e   c
0140700    k   s   u   m       p   r   o   c   e   d   u   r   e       i
0140720    n       P   u   p   A   l   1   a   .   a   s   m  \r  \r   .
0140740    U   P   u   p   C   h   e   c   k   s   u   m   :  \r  \t   s
0140760    t   a       3       1       2  \r  \t   m   o   v       0    
0141000    1  \t  \t  \t   ;       a   d   d   r   e   s   s       i   n
0141020        A   C   1       f   o   r       m   i   c   r   o   c   o
0141040    d   e  \r  \t   m   o   v       0       3  \r  \t   l   d   a
0141060        3       0       3  \t  \t   ;       g   e   t       p   u
0141100    p       l   e   n   g   t   h       i   n       b   y   t   e
0141120    s  \r  \t   n   e   g       3       3  \t  \t  \t   ;       c
0141140    o   m   p   u   t   e       #       w   o   r   d   s       e
0141160    x   c   l   u   s   i   v   e       o   f       c   h   e   c
0141200    k   s   u   m  \r  \t   c   o   m   z   r       3       3  \t
0141220   \t   ;           =       (   #       b   y   t   e   s     376
0141240  001  \0   u   :   -   1   )   /   2  \r  \t   m   k   z   e   r
0141260    o       0       0  \t  \t   ;       i   n   i   t       c   h
0141300    e   c   k   s   u   m  \r  \t   #   6   4   0   0   0  \t  \t
0141320   \t   ;       c   a   l   l       m   i   c   r   o   c   o   d
0141340    e  \r  \t   l   d   a       3       1       2  \r  \t   j   m
0141360    p       1       3  \r  \r  \r   ;       M   u   l   D   i   v
0141400    (   a   ,       b   ,       c   )  \r   ;       r   e   t   u
0141420    r   n   s       t   h   e       u   n   s   i   g   n   e   d
0141440        v   a   l   u   e       (   a   *   b   )   /   c  \r  \r
0141460    .   M   u   l   D   i   v   :  \r  \t   s   t   a       3    
0141500    1       2  \r  \t   m   o   v       2       3  \r  \t   m   o
0141520