$ od -c -N 50000 [Indigo]<Spruce>12>eftp>eftpsources.dm!1
0000000  377  \0  \0   P   u   p   E   F   T   P   .   d   e   c   l  \0
0000020  373 226  \0 376   E  \0  \0 376 001  \0 343   `   /   /       P
0000040    u   p   E   F   T   P   .   d   e   c   l       -   -       D
0000060    e   c   l   a   r   a   t   i   o   n   s       f   o   r    
0000100    E   F   T   P       p   a   c   k   a   g   e  \r   /   /    
0000120    C   o   p   y   r   i   g   h   t       X   e   r   o   x    
0000140    C   o   r   p   o   r   a   t   i   o   n       1   9   7   9
0000160    ,       1   9   8   0  \r  \r   /   /       L   a   s   t    
0000200    m   o   d   i   f   i   e   d       S   e   p   t   e   m   b
0000220    e   r       3   0   ,       1   9   8   0           1   :   4
0000240    4       P   M       b   y       S   w   i   n   e   h   a   r
0000260    t  \r  \r   g   e   t       "   P   u   p   0   .   d   e   c
0000300    l   "  \r   g   e   t       "   P   u   p   1   .   d   e   c
0000320    l   "  \r  \r   /   /   -   -   -   -   -   -   -   -   -   -
0000340    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0000420    -   -   -   -   -   -   -   -   -   -   -   - 376 001  \0 217
0000440   \a   -   -   -   -   -   -  \r   s   t   r   u   c   t   u   r
0000460    e       E   F   T   P   S   o   c   :  \r   /   /   -   -   -
0000500    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0000600    -   -   -   -   -   -   -   -   -  \r   [  \r   @   P   u   p
0000620    S   o   c  \r   S   e   q   N   u   m       w   o   r   d  \r
0000640    A   b   o   r   t   P   B   I       w   o   r   d  \t  \t   /
0000660    /       p   r   o   v   i   d   e   s       a       t   e   m
0000700    p   o   r   a   r   y       p   o   i   n   t   e   r       t
0000720    o       m   o   s   t       r   e   c   e   n   t       o   n
0000740    e  \r   S   o   m   e   o   n   e   E   l   s   e   W   a   i
0000760    t   i   n   g       w   o   r   d  \r   T   r   a   n   s   f
0001000    e   r   N   o   t   S   t   a   r   t   e   d       w   o   r
0001020    d  \t   /   /       t   r   u   e       w   h   i   l   e    
0001040    f 376 001  \0 273 326   o   r   e   i   g   n       s   o   c
0001060    k   e   t       n   o   t       c   o   m   p   l   e   t   e
0001100    d  \r   c   u   r   r   e   n   t   T   i   m   e   o   u   t
0001120        w   o   r   d  \t   /   /       c   u   r   r   e   n   t
0001140        r   e   t   r   a   n   s   m   i   s   s   i   o   n    
0001160    t   i   m   e   o   u   t  \r   s   t   a   r   t   T   i   m
0001200    e       w   o   r   d  \t  \t   /   /       t   i   m   e    
0001220    a   t       w   h   i   c   h       l   a   s   t       D   a
0001240    t   a       w   a   s       s   e   n   t  \r   ]  \r   m   a
0001260    n   i   f   e   s   t       l   e   n   E   F   T   P   S   o
0001300    c       =       s   i   z   e       E   F   T   P   S   o   c
0001320    /   1   6  \r  \r   /   /   -   -   -   -   -   -   -   -   -
0001340    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0001440    -   -   -  \r   s   t 376 001  \0   O 377   r   u   c   t   u
0001460    r   e       B   y   t   e   ^   1   ,   1   :       b   y   t
0001500    e  \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -
0001520    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0001620   \r  \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -
0001640    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0001740   \r   m   a   n   i   f   e   s   t  \r   /   /   -   -   -   -
0001760    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0002040    -   -   -   -   -   -   -   -   -   -   - 376 001  \0 257   2
0002060    -   -   -   -   -   -   -   -   -   -   -   -   -  \r   [  \r
0002100    /   /       W   e   l   l   -   k   n   o   w   n       s   o
0002120    c   k   e   t  \r   s   o   c   k   e   t   E   F   T   P   R
0002140    e   c   e   i   v   e       =       2   0   b  \r  \r   /   /
0002160        E   F   T   P       p   r   o   t   o   c   o   l       p
0002200    a   c   k   e   t       t   y   p   e   s  \r   t   y   p   e
0002220    E   F   T   P   D   a   t   a       =       3   0   b  \r   t
0002240    y   p   e   E   F   T   P   A   c   k       =       3   1   b
0002260   \r   t   y   p   e   E   F   T   P   E   n   d       =       3
0002300    2   b  \r   t   y   p   e   E   F   T   P   A   b   o   r   t
0002320        =       3   3   b  \r  \r   /   /       R   e   t   u   r
0002340    n       v   a   l   u   e   s       f   r   o   m       R   e
0002360    c   e   i   v   e   E   F   T   P   B   l   o   c   k       a
0002400    n   d       S   e   n   d   E   F   T   P   B   l   o   c   k
0002420   \r   E   F   T   P   E   n   d   R   e   c   e   i   v   e   d
0002440        =       0  \t   /   /       t   h   a   t       i   s   ,
0002460  376 001  \0 305 021       a       z   e   r   o       b   y   t
0002500    e       c   o   u   n   t  \r   E   F   T   P   T   i   m   e
0002520    o   u   t       =       -   1  \r   E   F   T   P   A   b   o
0002540    r   t   R   e   c   e   i   v   e   d       =       -   2  \r
0002560    E   F   T   P   A   b   o   r   t   S   e   n   t       =    
0002600    -   3  \r   E   F   T   P   R   e   s   e   t   R   e   c   e
0002620    i   v   e   d       =       -   4  \r   E   F   T   P   N   o
0002640    t   F   i   r   s   t   S   y   n   c   h       =       -   5
0002660   \r  \r   /   /       S   o   m   e       r   e   t   r   a   n
0002700    s   m   i   s   s   i   o   n       t   i   m   e   o   u   t
0002720    s       i   n       u   n   i   t   s       o   f       1   0
0002740        m   i   l   l   i   s   e   c   o   n   d   s  \r   s   t
0002760    a   r   t   i   n   g   T   i   m   e   o   u   t       =    
0003000    1   0   0  \t   /   /       ~   1       s   e   c   .  \r   m
0003020    a   x   T   i   m   e   o   u   t       =       1   0   0   0
0003040   \t   /   /       ~   1   0       s   e   c   .  \r   m   i   n
0003060    T   i   m   e   o 376 001  \0 323   Y   u   t       =       5
0003100   \t  \t   /   /       ~   5   0       m   s   .  \r   d   a   l
0003120    l   y   T   i   m   e   o   u   t       =       5   0   0  \t
0003140    /   /       ~   5       s   e   c       d   a   l   l   y    
0003160    p   e   r   i   o   d   .  \r   l   o   n   g   B   l   o   c
0003200    k   T   i   m   e   o   u   t       =       3   0   0   0  \t
0003220    /   /       ~   3   0       s   e   c   ,       f   o   r    
0003240    a       l   o   n   g       w   a   i   t  \r  \r   /   /    
0003260    A   b   o   r   t       c   o   d   e   s   ,       f   o   r
0003300        u   s   e       w   i   t   h   i   n       a   n       E
0003320    F   T   P   A   b   o   r   t       p   a   c   k   e   t  \r
0003340    E   x   t   e   r   n   a   l   S   e   n   d   e   r   A   b
0003360    o   r   t       =       1  \r   E   x   t   e   r   n   a   l
0003400    R   e   c   e   i   v   e   r   A   b   o   r   t       =    
0003420    2  \r   R   e   c   e   i   v   e   r   B   u   s   y   A   b
0003440    o   r   t       =       3  \r   O   u   t   O   f   S   y   n
0003460    c   h   A   b   o   r   t       =     376  \0   e 374   m   4
0003500   \r   M   i   s   c   A   b   o   r   t       =       5  \r  \r
0003520    /   /       N   o       s   u   c   h       p   o   r   t    
0003540    e   r   r   o   r       c   o   d   e   ,       c   a   u   s
0003560    e   s       c   o   n   n   e   c   t   i   o   n       t   o
0003600        a   b   o   r   t       i   n       r   e   c   e   i   v
0003620    e   r  \r   e   c   N   o   S   u   c   h   P   o   r   t   =
0003640    2  \r   ]  \r 377  \0  \0   E   F   T   P   .   b   c   p   l
0003660   \0 373 223 361 363 350  \0  \0 376 001  \0 004 327   /   /    
0003700    E   F   T   P   .   b   c   p   l       -   -       t   o   p
0003720        l   e   v   e   l       r   o   u   t   i   n   e       a
0003740    n   d       u   s   e   r       i   n   t   e   r   f   a   c
0003760    e       f   o   r  \r   /   /       t   h   e       E   F   T
0004000    P       s   u   b   s   y   s   t   e   m  \r   /   /       J
0004020    u   n   e       1   7   ,       1   9   7   6           3   :
0004040    4   4       P   M           a   p   ,   b   a   k   ,   j   f
0004060    s  \r   /   /       l   a   s   t       m   o   d   i   f   i
0004100    e   d       o   n       J   u   n   e       3   ,       1   9
0004120    7   9           1   1   :   5   2       A   M       b   y    
0004140    T   a   f   t  \r   /   /       C   o   p   y   r   i   g   h
0004160    t       X   e   r   o   x       C   o   r   p   o   r   a   t
0004200    i   o   n       1   9   7   9  \r  \r   g   e   t       "   P
0004220    u   p   E   F   T   P   .   d   e   c   l   "           /   /
0004240    t   h   a   t       w   i   l   l       a   l   s   o       g
0004260    e   t       p   u   p   -   r   e   l   a   t   e 376 001  \0
0004300    K 200   d       s   t   u   f   f  \r   g   e   t       "   S
0004320    t   r   e   a   m   s   .   d   "  \r  \r   e   x   t   e   r
0004340    n   a   l  \r   [  \r   /   /   o   u   t   g   o   i   n   g
0004360        p   r   o   c   e   d   u   r   e   s  \r   M   s   g  \r
0004400   \r   /   /   i   n   c   o   m   i   n   g       p   r   o   c
0004420    e   d   u   r   e   s  \r   I   n   i   t   E   F   T   P   P
0004440    a   c   k   a   g   e   ;       E   F   T   P   S   e   n   d
0004460    F   i   l   e   ;       E   F   T   P   R   e   c   e   i   v
0004500    e   F   i   l   e  \r   F   i   x   e   d   L   e   f   t   ;
0004520        G   e   t   F   i   x   e   d   ;       I   n   i   t   i
0004540    a   l   i   z   e   Z   o   n   e   ;       A   l   l   o   c
0004560    a   t   e  \r   I   n   i   t   i   a   l   i   z   e   C   o
0004600    n   t   e   x   t   ;       C   a   l   l   C   o   n   t   e
0004620    x   t   L   i   s   t   ;       B   l   o   c   k  \r   I   n
0004640    i   t   P   u   p   L   e   v   e   l   1   ;       I   n   i
0004660    t   i   a   l   i   z   e   T   i   m   e   r   ;       E   n
0004700    q   u 376 001  \0   { 356   e   u   e   ;       G   e   t   P
0004720    a   r   t   n   e   r  \r   O   p   e   n   F   i   l   e   ;
0004740        C   l   o   s   e   s   ;       E   n   d   o   f   s   ;
0004760        G   e   t   s   ;       P   u   t   s  \r   W   s   ;    
0005000    W   l   ;       W   o   ;       W   n   s   ;       C   a   l
0005020    l   S   w   a   t  \r   S   e   t   u   p   R   e   a   d   P
0005040    a   r   a   m   ;       R   e   a   d   P   a   r   a   m   ;
0005060        E   v   a   l   P   a   r   a   m  \r  \r   /   /   o   u
0005100    t   g   o   i   n   g       s   t   a   t   i   c   s  \r   E
0005120    F   T   P   Z   o   n   e   ;       E   F   T   P   C   t   x
0005140    q  \r   E   F   T   P   F   r   n   P   o   r   t   ;       E
0005160    F   T   P   L   c   l   P   o   r   t   ;       E   F   T   P
0005200    S   o   c   k   e   t  \r  \r   /   /   i   n   c   o   m   i
0005220    n   g       s   t   a   t   i   c   s  \r   k   e   y   s   ;
0005240    d   s   p  \r   ]  \r  \r   c   o   m   p   i   l   e   i   f
0005260        n   o   v   a       t   h   e   n       [       e   x   t
0005300    e   r   n   a   l       [ 376 001  \0 005 353       I   n   i
0005320    t   N   o   v   a   A   l   t   o       ]       ]  \r  \r   s
0005340    t   a   t   i   c  \r   [  \r   E   F   T   P   Z   o   n   e
0005360    ;   E   F   T   P   C   t   x   q  \r   E   F   T   P   F   r
0005400    n   P   o   r   t   ;   E   F   T   P   L   c   l   P   o   r
0005420    t   ;   E   F   T   P   S   o   c   k   e   t  \r  \r   t   e
0005440    m   p   f   i   l   e   ;       t   e   m   p   s   t   r   i
0005460    n   g  \r   D   e   b   u   g   S   w   i   t   c   h       =
0005500        f   a   l   s   e  \r   D   e   b   u   g   C   o   n   f
0005520    i   r   m   S   w   i   t   c   h       =       f   a   l   s
0005540    e  \r   c   l   i   B   o   d   y   ;       c   l   i   S   w
0005560    i   t   c   h   e   s              \r   ]  \r  \r   m   a   n
0005600    i   f   e   s   t  \r   [  \r   c   l   i   S   t   a   c   k
0005620    S   i   z   e       =       3   0   0   0  \r   k   b   d   S
0005640    t   a   c   k   S   i   z   e       =       3   0   0   0  \r
0005660    ]  \r  \r  \r   /   /   -   -   -   -   -   -   -   -   -   -
0005700    -   -   -   -   -   -   -   -   -   -   -   - 376 001  \0 313
0005720    j   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0005740    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0005760    -   -   -   -   -   -   -   -   -   -   -   -  \r   l   e   t
0006000        E   F   T   P   (   )       b   e  \r   /   /   -   -   -
0006020    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0006100    -   -   -   -   -   -   -   -   -   -   -   -   -   -  \r   [
0006120   \r   l   e   t       v   e   r   s   i   o   n   T   e   x   t
0006140        =       "   E   F   T   P       o   f       J   u   n   e
0006160        3   ,       1   9   7   9   "  \r  \r   /   /   F   o   r
0006200        t   h   e       t   i   m   e       b   e   i   n   g   ,
0006220        a   l   l   o   c   a   t   e       e   v   e   r   y   t
0006240    h   i   n   g       h   e   r   e  \r   l   e   t       f   r
0006260    n   P   o   r   t       =       v   e   c       l   e   n   P
0006300    o   r   t   ;       E   F   T   P   F   r   n   P   o   r   t
0006320      376 001  \0 034 317   =       f   r   n   P   o   r   t  \r
0006340    l   e   t       l   c   l   P   o   r   t       =       v   e
0006360    c       l   e   n   P   o   r   t   ;       E   F   T   P   L
0006400    c   l   P   o   r   t       =       l   c   l   P   o   r   t
0006420   \r   l   e   t       s   o   c   k   e   t       =       v   e
0006440    c       l   e   n   E   F   T   P   S   o   c   ;       E   F
0006460    T   P   S   o   c   k   e   t       =       s   o   c   k   e
0006500    t  \r   l   e   t       t   e   m   p   S   t   r   i   n   g
0006520        =       v   e   c       1   2   8   ;       t   e   m   p
0006540    s   t   r   i   n   g       =       t   e   m   p   S   t   r
0006560    i   n   g  \r  \r   c   o   m   p   i   l   e   i   f       a
0006600    l   t   o       t   h   e   n       [       M   s   g   (   "
0006620    I   n   i   t   i   a   l   i   z   e       z   o   n   e   s
0006640    "   )       ]  \r   l   e   t       z   o   n   e   S   i   z
0006660    e       =       F   i   x   e   d   L   e   f   t   (   )   -
0006700    1   5   0   0               /   /   S   e   t       u   p    
0006720    a       z   o   n   e 376 001  \0 021 312   ,       f   o   r
0006740        l   a   t   e   r       u   s   e  \r   i   f       z   o
0006760    n   e   S   i   z   e       l   s       0       t   h   e   n
0007000        z   o   n   e   S   i   z   e       =       #   7   7   7
0007020    7   7           /   /   b   i   g   g   e   s   t       A   l
0007040    l   o   c       c   a   n       h   a   n   d   l   e  \r   E
0007060    F   T   P   Z   o   n   e       =       G   e   t   F   i   x
0007100    e   d   (   z   o   n   e   S   i   z   e   )  \r   I   n   i
0007120    t   i   a   l   i   z   e   Z   o   n   e   (   E   F   T   P
0007140    Z   o   n   e   ,       z   o   n   e   S   i   z   e   )  \r
0007160    c   o   m   p   i   l   e   i   f       n   o   v   a       t
0007200    h   e   n       [       I   n   i   t   N   o   v   a   A   l
0007220    t   o   (   E   F   T   P   Z   o   n   e   )       ]  \r   W
0007240    l   (   v   e   r   s   i   o   n   T   e   x   t   )  \r   /
0007260    /       W   s   (   "   [   "   )   ;       W   n   s   (   d
0007300    s   p   ,       z   o   n   e   S   i   z   e   ,       0   ,
0007320        1   0   )   ;       W   s   (   "     376 001  \0   4  \n
0007340    -       (   "   )  \r   /   /       W   n   s   (   d   s   p
0007360    ,       z   o   n   e   S   i   z   e   ,       0   ,       1
0007400    0   )   ;       W   s   (   "   +   1   )       =       "   )
0007420   \r   /   /       W   n   s   (   d   s   p   ,       F   i   x
0007440    e   d   L   e   f   t   (   )   ,       0   ,       1   0   )
0007460   \r   /   /       W   l   (   "   ]   "   )  \r  \r   /   /    
0007500    C   h   e   c   k       f   o   r       a   n   y       g   l
0007520    o   b   a   l       f   l   a   g   s   .   .   .           W
0007540    e       w   i   l   l       s   e   t       i   t       u   p
0007560        h   e   r   e   ,       o   t   h   e   r   s  \r   /   /
0007600        c   a   n       r   e   a   d       m   o   r   e       o
0007620    f       i   t       l   a   t   e   r  \r   l   e   t       c
0007640    l   i       =       f   a   l   s   e  \r   l   e   t       b
0007660    o   d   y       =       v   e   c       2   5   6   ;       c
0007700    l   i   B   o   d   y       =       b   o   d   y  \r   l   e
0007720    t       s   w   i   t   c   h   e   s       =       v   e   c
0007740  376 001  \0 001 225       1   2   8   ;       c   l   i   S   w
0007760    i   t   c   h   e   s       =       s   w   i   t   c   h   e
0010000    s  \r  \r   /   /       R   e   a   d       f   r   o   m    
0010020    t   h   e       d   e   f   a   u   l   t   ,       f   i   l
0010040    e       C   O   M   .   C   M  \r   S   e   t   u   p   R   e
0010060    a   d   P   a   r   a   m   (   c   l   i   B   o   d   y   ,
0010100        c   l   i   S   w   i   t   c   h   e   s   ,       0   ,
0010120        0   )  \r   /   /   S   c   a   n       t   h   e       g
0010140    l   o   b   a   l       s   w   i   t   c   h   e   s  \r   f
0010160    o   r       i       =       1       t   o       c   l   i   S
0010200    w   i   t   c   h   e   s   !   0       s   w   i   t   c   h
0010220    o   n       c   l   i   S   w   i   t   c   h   e   s   !   i
0010240        i   n   t   o  \r               [   G   l   o   b   a   l
0010260    S   w   i   t   c   h   B   l   o   c   k  \r               c
0010300    a   s   e       $   d   :       c   a   s   e       $   D   :
0010320   \r                           [  \r                           D
0010340    e   b   u   g   S 376 001  \0 310   d   w   i   t   c   h    
0010360    =       t   r   u   e  \r                           e   n   d
0010400    c   a   s   e  \r                           ]  \r            
0010420    c   a   s   e       $   c   :       c   a   s   e       $   C
0010440    :  \r                           [  \r                        
0010460    D   e   b   u   g   C   o   n   f   i   r   m   S   w   i   t
0010500    c   h       =       t   r   u   e  \r                        
0010520    D   e   b   u   g   S   w   i   t   c   h       =       t   r
0010540    u   e  \r                           e   n   d   c   a   s   e
0010560   \r                           ]  \r               c   a   s   e
0010600        $   s   :       c   a   s   e       $   S   :  \r        
0010620                    [  \r                           C   a   l   l
0010640    S   w   a   t   (   "   S   c   a   n   n   i   n   g       g
0010660    l   o   b   a   l       s   w   i   t   c   h   e   s   "   )
0010700   \r                           e   n   d   c   a   s   e  \r    
0010720                        ]  \r               d   e   f   a   u   l
0010740    t   :  \r                           [ 376 001  \0   5   x  \r
0010760                            W   s   (   "   U   n   k   n   o   w
0011000    n       g   l   o   b   a   l       s   w   i   t   c   h   :
0011020        "   )  \r                           P   u   t   s   (   d
0011040    s   p   ,       c   l   i   S   w   i   t   c   h   e   s   !
0011060    i   )  \r                           W   l   (   "   "   )  \r
0011100                            ]  \r               ]   G   l   o   b
0011120    a   l   S   w   i   t   c   h   B   l   o   c   k  \r  \r   /
0011140    /       S   e   e       i   f       t   h   e   r   e       i
0011160    s       a   n   y   t   h   i   n   g       e   l   s   e    
0011200    l   e   f   t       i   n       C   O   M   .   C   M   ,    
0011220    g   e   t       u   n   p   a   c   k   e   d       s   t   r
0011240    i   n   g  \r   R   e   a   d   P   a   r   a   m   (   0   ,
0011260        0   ,       0   ,       0   ,       t   r   u   e   )    
0011300            /   /   p   u   t   s       f   i   l   e       n   a
0011320    m   e       i   n   t   o       c   l   i   B   o   d   y  \r
0011340    i   f       c   l   i   B   o   d   y   !   0       n   e 376
0011360  001  \0   6 331       0       t   h   e   n       c   l   i    
0011400    =       t   r   u   e  \r  \r   /   /       M   a   j   o   r
0011420        t   a   s   k       h   e   r   e       i   s       t   o
0011440        i   n   i   t   i   a   l   i   z   e       s   t   o   r
0011460    a   g   e       a   n   d       c   o   n   t   e   x   t    
0011500    l   i   s   t   ,  \r   /   /       s   t   a   r   t       l
0011520    e   v   e   l   1       r   u   n   n   i   n   g   ,       d
0011540    e   c   i   d   e       w   h   a   t       o   t   h   e   r
0011560        p   r   o   c   e   s   s   e   s       (   c   o   n   t
0011600    e   x   t   s   )  \r   /   /       t   o       e   n   a   b
0011620    l   e   ,       a   n   d       t   h   e   n       l   e   t
0011640        t   h   e   m       a   l   l       r   u   n  \r  \r   M
0011660    s   g   (   "   I   n   i   t   i   a   l   i   z   e       c
0011700    o   n   t   e   x   t   s   "   )  \r   E   F   T   P   C   t
0011720    x   q       =       A   l   l   o   c   a   t   e   (   E   F
0011740    T   P   Z   o   n   e   ,       2   )               /   /   M
0011760    a   i   n     376 001  \0 216 316   c   o   n   t   e   x   t
0012000        q   u   e   u   e  \r   E   F   T   P   C   t   x   q   !
0012020    0       =       0  \r  \r   M   s   g   (   "   I   n   i   t
0012040    i   a   l   i   z   e       p   u   p       s   t   u   f   f
0012060    "   )  \r   /   /   I   n   i   t   i   a   l   i   z   a   t
0012100    i   o   n   s  \r   I   n   i   t   P   u   p   L   e   v   e
0012120    l   1   (   E   F   T   P   Z   o   n   e   ,       E   F   T
0012140    P   C   t   x   q   ,       1   0   )               /   /   u
0012160    p       t   o       1   0       b   u   f   f   e   r   s  \r
0012200    I   n   i   t   E   F   T   P   P   a   c   k   a   g   e   (
0012220    )  \r  \r  \r   /   /       D   e   c   i   d   e       i   f
0012240        w   e       s   h   o   u   l   d       s   c   h   e   d
0012260    u   l   e       t   h   e       i   n   t   e   r   a   c   t
0012300    i   v   e       i   n   p   u   t       h   a   n   d   l   e
0012320    r   ,  \r   /   /       o   r       t   h   e       c   o   m
0012340    m   a   n   d       l   i   n   e       i   n   t   e   r   p
0012360    r   e   t   e   r  \r  \r   t   e 376 001  \0 213   ,   s   t
0012400        c   l   i              \r               i   f   s   o    
0012420    I   n   i   t   E   F   T   P   C   l   i   (   )  \r        
0012440        i   f   n   o   t       I   n   i   t   E   F   T   P   K
0012460    b   d   (   )  \r  \r   M   s   g   (   "   S   t   a   r   t
0012500        c   o   n   t   e   x   t       m   e   c   h   a   n   i
0012520    s   m   "   )  \r   /   /   N   o   w       p   a   s   s    
0012540    o   f   f       c   o   n   t   r   o   l   ,       a   n   d
0012560        n   e   v   e   r       r   e   t   u   r   n       h   e
0012600    r   e  \r   C   a   l   l   C   o   n   t   e   x   t   L   i
0012620    s   t   (   E   F   T   P   C   t   x   q   !   0   )       r
0012640    e   p   e   a   t                   /   /   l   o   o   p    
0012660    f   o   r   e   v   e   r  \r   ]  \r  \r  \r   /   /       T
0012700    h   e   s   e       n   e   x   t       t   w   o       r   o
0012720    u   t   i   n   e   s       r   u   n       i   n       t   h
0012740    e       c   o   n   t   e   x   t       (   a   n   d       s
0012760    t   a   c   k   )       o   f  \r   /   /       E   F 376 001
0013000   \0   4 207   T   P   (   )   ,       b   u   t       m   e   r
0013020    e   l   y       e   s   t   a   b   l   i   s   h       a   n
0013040    d       e   n   q   u   e   u   e       a       c   o   n   t
0013060    e   x   t       i   n       w   h   i   c   h  \r   /   /    
0013100    t   h   e       r   e   a   l       r   o   u   t   i   n   e
0013120    s       c   a   n       r   u   n   .           A   c   t   u
0013140    a   l       r   o   u   t   i   n   e   s       c   a   n    
0013160    l   i   v   e       e   l   s   e   w   h   e   r   e   .  \r
0013200    /   /   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0013220    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0013300    -   -   -  \r   a   n   d       I   n   i   t   E   F   T   P
0013320    C   l   i   (   )       b   e  \r   /   /   -   -   -   -   -
0013340    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0013400    -   -   - 376 001  \0   ^ 366   -   -   -   -   -   -   -   -
0013420    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0013440    -  \r   E   n   q   u   e   u   e   (   E   F   T   P   C   t
0013460    x   q   ,       I   n   i   t   i   a   l   i   z   e   C   o
0013500    n   t   e   x   t   (   A   l   l   o   c   a   t   e   (   E
0013520    F   T   P   Z   o   n   e   ,       c   l   i   S   t   a   c
0013540    k   S   i   z   e   )   ,  \r       c   l   i   S   t   a   c
0013560    k   S   i   z   e   ,       E   F   T   P   C   l   i   )   )
0013600   \r  \r  \r   /   /   -   -   -   -   -   -   -   -   -   -   -
0013620    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0013700    -   -   -   -   -   -  \r   a   n   d       I   n   i   t   E
0013720    F   T   P   K   b   d   (   )       b   e  \r   /   /   -   -
0013740    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0014000    -   -   -   -   -   -   -   - 376 001  \0 273 022   -   -   -
0014020    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0014040    -   -   -   -  \r   E   n   q   u   e   u   e   (   E   F   T
0014060    P   C   t   x   q   ,       I   n   i   t   i   a   l   i   z
0014100    e   C   o   n   t   e   x   t   (   A   l   l   o   c   a   t
0014120    e   (   E   F   T   P   Z   o   n   e   ,       k   b   d   S
0014140    t   a   c   k   S   i   z   e   )   ,  \r       k   b   d   S
0014160    t   a   c   k   S   i   z   e   ,       E   F   T   P   K   b
0014200    d   )   )  \r  \r  \r   /   /   -   -   -   -   -   -   -   -
0014220    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0014300    -   -   -   -   -   -   -   -   -  \r   a   n   d       M   s
0014320    g   (   s   t   r   )       b   e  \r   /   /   -   -   -   -
0014340    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0014400    -   -   -   -   -   -   -   -   -   -   -   -   - 376 001  \0
0014420  262  \r   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0014440    -   -  \r   [  \r   u   n   l   e   s   s       D   e   b   u
0014460    g   S   w   i   t   c   h       r   e   t   u   r   n  \r   W
0014500    s   (   s   t   r   )  \r   t   e   s   t       D   e   b   u
0014520    g   C   o   n   f   i   r   m   S   w   i   t   c   h        
0014540   \r               i   f   s   o       [       W   l   (   "   [
0014560    O   K   ?   ?   ]   "   )   ;       G   e   t   s   (   k   e
0014600    y   s   )       ]  \r               i   f   n   o   t       W
0014620    l   (   "   "   )  \r   ]  \r  \r  \r   /   /       O   n   e
0014640        o   f       t   h   e   s   e       r   o   u   t   i   n
0014660    e   s       w   i   l   l       h   a   v   e       b   e   e
0014700    n       p   l   a   c   e   d       o   n       t   h   e    
0014720    c   o   n   t   e   x   t       l   i   s   t   ,  \r   /   /
0014740        a   n   d       w   i   l   l       t   h   e   r   e   f
0014760    o   r   e       b   e       r   u   n   n   i   n   g  \r   /
0015000    /   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0015020    -   - 376 001  \0   G 350   -   -   -   -   -   -   -   -   -
0015040    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0015100    -   -   -   -   -   -   -  \r   a   n   d       E   F   T   P
0015120    C   l   i   (   )       b   e  \r   /   /   -   -   -   -   -
0015140    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0015220    -   -   -   -   -   -   -   -   -   -   -   -  \r   [  \r   /
0015240    /       P   i   c   k       o   f   f       t   h   e       r
0015260    e   l   e   v   e   n   t       i   n   f   o   r   m   a   t
0015300    i   o   n       f   r   o   m       t   h   e       f   i   l
0015320    e       C   O   M   .   C   M  \r   /   /       f   o   r   m
0015340    a   t       i   s   :       e   f   t   p       <   f   i   l
0015360    e   n   a   m   e   >       t   o   /   f   r   o   m       <
0015400    m   a   c   h   i   n   e       n   a   m   e       o   r    
0015420    n   u   m   b   e   r   > 376 001  \0  \v 364  \r   /   /    
0015440    I   f       w   e       g   e   t       h   e   r   e   ,    
0015460    t   h   e       f   i   l   e       n   a   m   e       i   s
0015500        a   l   r   e   a   d   y       i   n       c   l   i   B
0015520    o   d   y  \r   R   e   a   d   P   a   r   a   m   (   0   ,
0015540        0   ,       t   e   m   p   s   t   r   i   n   g   )    
0015560            /   /   g   e   t       t   h   e       d   i   r   e
0015600    c   t   i   o   n  \r   s   w   i   t   c   h   o   n       t
0015620    e   m   p   s   t   r   i   n   g   !   1       i   n   t   o
0015640   \r               [   C   l   i   C   m   d  \r               c
0015660    a   s   e       $   t   :       c   a   s   e       $   T   :
0015700   \r                           [  \r                           t
0015720    e   m   p   f   i   l   e       =  \r                        
0015740                E   v   a   l   P   a   r   a   m   (   c   l   i
0015760    B   o   d   y   ,       "   I   "   ,       "   F   i   l   e
0016000        d   o   e   s       n   o   t       e   x   i   s   t   ,
0016020        t   r   y       a   g   a   i   n   :   " 376 001  \0  \a
0016040  257   )  \r                           u   n   l   e   s   s    
0016060    G   e   t   P   a   r   t   n   e   r   (   R   e   a   d   P
0016100    a   r   a   m   (   "   P   "   )   ,       d   s   p   ,    
0016120    E   F   T   P   F   r   n   P   o   r   t   ,  \r            
0016140                    0   ,       s   o   c   k   e   t   E   F   T
0016160    P   R   e   c   e   i   v   e   )       d   o  \r            
0016200                            [  \r                                
0016220        C   l   i   E   r   r   o   r   (   )  \r                
0016240                        e   n   d   c   a   s   e  \r            
0016260                            ]  \r                           R   e
0016300    p   o   r   t   R   e   s   u   l   t   (   E   F   T   P   S
0016320    e   n   d   F   i   l   e   (   t   e   m   p   f   i   l   e
0016340    ,       E   F   T   P   F   r   n   P   o   r   t   )   )  \r
0016360                            C   l   o   s   e   s   (   t   e   m
0016400    p   f   i   l   e   )  \r                           e   n   d
0016420    c   a   s   e  \r                           ]  \r            
0016440    c 376 001  \0   $  \a   a   s   e       $   f   :       c   a
0016460    s   e       $   F   :  \r                           [  \r    
0016500                        t   e   m   p   f   i   l   e   =       E
0016520    v   a   l   P   a   r   a   m   (   c   l   i   B   o   d   y
0016540    ,       "   O   "   )  \r                           u   n   l
0016560    e   s   s       G   e   t   P   a   r   t   n   e   r   (   R
0016600    e   a   d   P   a   r   a   m   (   "   P   "   )   ,       d
0016620    s   p   ,       E   F   T   P   F   r   n   P   o   r   t   )
0016640        d   o  \r                                       [  \r    
0016660                                    C   l   i   E   r   r   o   r
0016700    (   )  \r                                       e   n   d   c
0016720    a   s   e  \r                                       ]  \r    
0016740                        R   e   p   o   r   t   R   e   s   u   l
0016760    t   (   E   F   T   P   R   e   c   e   i   v   e   F   i   l
0017000    e   (   t   e   m   p   f   i   l   e   ,       E   F   T   P
0017020    F   r   n   P   o   r   t   )   )  \r                        
0017040    C   l   o   s   e   s 376 001  \0   b   Z   (   t   e   m   p
0017060    f   i   l   e   )  \r                           e   n   d   c
0017100    a   s   e  \r                           ]  \r               d
0017120    e   f   a   u   l   t   :  \r                           [  \r
0017140                            C   l   i   E   r   r   o   r   (   )
0017160   \r                           e   n   d   c   a   s   e  \r    
0017200                        ]  \r               ]   C   l   i   C   m
0017220    d  \r   f   i   n   i   s   h               /   /       w   e
0017240        d   o       n   o   t       h   a   n   g       a   r   o
0017260    u   n   d   .   .   .   .   .  \r   ]  \r  \r   /   /   -   -
0017300    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0017360    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -  \r
0017400    a   n   d       C   l   i   E   r   r   o   r   (   )       b
0017420    e  \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -
0017440    -   -   -   -   -   -   -   -   -   -   - 376 001  \0   ? 255
0017460    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0017520    -   -   -   -   -   -   -   -   -   -  \r   [  \r   W   l   (
0017540    "   T   a   k   e       c   a   r   e   ,       t   h   e    
0017560    s   y   n   t   a   x       f   o   r       c   o   m   m   a
0017600    n   d       l   i   n   e       s   h   o   u   l   d       b
0017620    e   :   "   )  \r   W   s   (   "   e   f   t   p       <   f
0017640    i   l   e   n   a   m   e   >       t   o   /   f   r   o   m
0017660        <   m   a   c   h   i   n   e       n   a   m   e       o
0017700    r       n   u   m   b   e   r   >   "   )  \r   ]  \r  \r   /
0017720    /   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0017740    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0020020    -   -  \r   a   n   d       E   F   T   P   K   b   d   (   )
0020040        b   e  \r   /   /   -   -   -   -   -   -   -   -   -   -
0020060  376 001  \0   s 220   -   -   -   -   -   -   -   -   -   -   -
0020100    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0020140    -   -   -   -   -   -   -   -   -   -   -   -  \r   [  \r   [
0020160    C   m   d   L   o   o   p  \r   l   e   t       a   b   o   r
0020200    t   C   m   d       =       f   a   l   s   e  \r   M   s   g
0020220    (   "   G   e   t       c   o   m   m   a   n   d       f   r
0020240    o   m       k   b   d   "   )  \r   W   s   (   "   -   >   "
0020260    )  \r   l   e   t       c   m   d       =       G   e   t   K
0020300    e   y   s   (   )  \r   s   w   i   t   c   h   o   n       c
0020320    m   d       i   n   t   o  \r               [   C   o   m   m
0020340    a   n   d   B   l   o   c   k  \r               c   a   s   e
0020360        $   S   :       c   a   s   e       $   s   :  \r        
0020400                    [  \r                           W   s   (   "
0020420    S   e   n   d       f   i   l   e       -   -       n   a   m
0020440    e       o   r       n   u   m   b   e   r       o   f       r
0020460    e   m   o   t   e 376 001  \0 367 246       h   o   s   t   :
0020500        "   )  \r                                       [  \r    
0020520                                    u   n   l   e   s   s       G
0020540    e   t   S   t   r   i   n   g   (   t   e   m   p   s   t   r
0020560    i   n   g   )       t   h   e   n      \r                    
0020600                                [  \r                            
0020620                        a   b   o   r   t   C   m   d       =    
0020640    t   r   u   e  \r                                            
0020660        b   r   e   a   k  \r                                    
0020700                ]  \r                                       i   f
0020720        t   e   m   p   s   t   r   i   n   g   >   >   S   t   r
0020740    i   n   g   .   l   e   n   g   t   h       e   q       0    
0020760    t   h   e   n       l   o   o   p  \r                        
0021000                i   f       G   e   t   P   a   r   t   n   e   r
0021020    (   t   e   m   p   s   t   r   i   n   g   ,       d   s   p
0021040    ,       E   F   T   P   F   r   n   P   o   r   t   ,  \r    
0021060                                        0 376 001  \0   c 320   ,
0021100        s   o   c   k   e   t   E   F   T   P   R   e   c   e   i
0021120    v   e   )       t   h   e   n       b   r   e   a   k  \r    
0021140                                    W   s   (   "   .   .   .   t
0021160    r   y       a   g   a   i   n   :       "   )  \r            
0021200                            ]       r   e   p   e   a   t  \r    
0021220                        i   f       a   b   o   r   t   C   m   d
0021240        t   h   e   n       l   o   o   p  \r                    
0021260        W   s   (   "   l   o   c   a   l       f   i   l   e    
0021300    n   a   m   e   :       "   )  \r                            
0021320            [  \r                                       u   n   l
0021340    e   s   s       G   e   t   S   t   r   i   n   g   (   t   e
0021360    m   p   s   t   r   i   n   g   )       t   h   e   n      \r
0021400                                                    [  \r        
0021420                                            a   b   o   r   t   C
0021440    m   d       =       t   r   u   e  \r                        
0021460                            b   r   e   a   k  \r             376
0021500  001  \0   c 233                                       ]  \r    
0021520                                    t   e   m   p   f   i   l   e
0021540        =       O   p   e   n   F   i   l   e   (   t   e   m   p
0021560    s   t   r   i   n   g   ,       k   s   T   y   p   e   R   e
0021600    a   d   O   n   l   y   ,       c   h   a   r   I   t   e   m
0021620    )      \r                                       i   f       t
0021640    e   m   p   f   i   l   e       n   e       0       t   h   e
0021660    n       b   r   e   a   k  \r                                
0021700        W   s   (   "   F   i   l   e       "   )   ;       W   s
0021720    (   t   e   m   p   s   t   r   i   n   g   )  \r            
0021740                            W   s   (   "       d   o   e   s    
0021760    n   o   t       e   x   i   s   t   ,       t   r   y       a
0022000    g   a   i   n   :       "   )  \r                            
0022020            ]       r   e   p   e   a   t  \r                    
0022040        i   f       a   b   o   r   t   C   m   d       t   h   e
0022060    n       l   o   o   p  \r                           R   e   p
0022100    o   r   t   R 376 001  \0 323 276   e   s   u   l   t   (   E
0022120    F   T   P   S   e   n   d   F   i   l   e   (   t   e   m   p
0022140    f   i   l   e   ,       E   F   T   P   F   r   n   P   o   r
0022160    t   )   )  \r                           C   l   o   s   e   s
0022200    (   t   e   m   p   f   i   l   e   )  \r                    
0022220        e   n   d   c   a   s   e  \r                           ]
0022240   \r               c   a   s   e       $   R   :       c   a   s
0022260    e       $   r   :  \r                           [  \r        
0022300                    W   s   (   "   R   e   c   e   i   v   e    
0022320    a       f   i   l   e       -   -       n   a   m   e       o
0022340    r       n   u   m   b   e   r       o   f       r   e   m   o
0022360    t   e       h   o   s   t   :       "   )  \r                
0022400                        [  \r                                    
0022420    u   n   l   e   s   s       G   e   t   S   t   r   i   n   g
0022440    (   t   e   m   p   s   t   r   i   n   g   )       t   h   e
0022460    n      \r                                                   [
0022500   \r                                 376 001  \0   ] 351        
0022520            a   b   o   r   t   C   m   d       =       t   r   u
0022540    e  \r                                                   b   r
0022560    e   a   k  \r                                                
0022600    ]  \r                                       i   f       t   e
0022620    m   p   s   t   r   i   n   g   >   >   S   t   r   i   n   g
0022640    .   l   e   n   g   t   h       e   q       0       t   h   e
0022660    n       l   o   o   p  \r                                    
0022700    i   f       G   e   t   P   a   r   t   n   e   r   (   t   e
0022720    m   p   s   t   r   i   n   g   ,       d   s   p   ,       E
0022740    F   T   P   F   r   n   P   o   r   t   )       t   h   e   n
0022760        b   r   e   a   k  \r                                    
0023000    W   s   (   "   .   .   .   t   r   y       a   g   a   i   n
0023020    :       "   )  \r                                       ]    
0023040    r   e   p   e   a   t  \r                           i   f    
0023060    a   b   o   r   t   C   m   d       t   h   e   n       l   o
0023100    o   p  \r                                       [  \r 376 001
0023120   \0   j  \b                                       W   s   (   "
0023140    l   o   c   a   l       f   i   l   e       n   a   m   e   :
0023160        "   )  \r                                       u   n   l
0023200    e   s   s       G   e   t   S   t   r   i   n   g   (   t   e
0023220    m   p   s   t   r   i   n   g   )       t   h   e   n      \r
0023240                                                    [  \r        
0023260                                            a   b   o   r   t   C
0023300    m   d       =       t   r   u   e  \r                        
0023320                            b   r   e   a   k  \r                
0023340                                    ]  \r                        
0023360                t   e   m   p   f   i   l   e       =       O   p
0023400    e   n   F   i   l   e   (   t   e   m   p   s   t   r   i   n
0023420    g   ,       k   s   T   y   p   e   R   e   a   d   O   n   l
0023440    y   ,       c   h   a   r   I   t   e   m   )  \r            
0023460                            i   f       t   e   m   p   f   i   l
0023500    e       n   e       0       t   h   e   n  \r                
0023520              376 001  \0   } 246                       [  \r    
0023540                                                /   /   F   i   l
0023560    e       o   p   e   n   e   d   ,       i   t       a   l   r
0023600    e   a   d   y       e   x   i   s   t   s  \r                
0023620                                    C   l   o   s   e   s   (   t
0023640    e   m   p   f   i   l   e   )  \r                            
0023660                        u   n   l   e   s   s       C   o   n   f
0023700    i   r   m   (   "   F   i   l   e       e   x   i   s   t   s
0023720    ,       O   K       t   o       O   v   e   r   w   r   i   t
0023740    e   ?   "   )           l   o   o   p  \r                    
0023760                                ]      \r                        
0024000                /   /   N   o   w       o   p   e   n       a    
0024020    n   e   w       f   i   l   e   ,       f   o   r       w   r
0024040    i   t   i   n   g  \r                                       t
0024060    e   m   p   f   i   l   e       =       O   p   e   n   F   i
0024100    l   e   (   t   e   m   p   s   t   r   i   n   g   ,       k
0024120    s   T   y   p   e   W   r   i 376 001  \0   ~   [   t   e   O
0024140    n   l   y   ,       c   h   a   r   I   t   e   m   )  \r    
0024160                                    b   r   e   a   k  \r        
0024200                                ]       r   e   p   e   a   t  \r
0024220                            i   f       a   b   o   r   t   C   m
0024240    d       t   h   e   n       l   o   o   p  \r  \r            
0024260                R   e   p   o   r   t   R   e   s   u   l   t   (
0024300    E   F   T   P   R   e   c   e   i   v   e   F   i   l   e   (
0024320    t   e   m   p   f   i   l   e   ,       E   F   T   P   F   r
0024340    n   P   o   r   t   )   )  \r                           C   l
0024360    o   s   e   s   (   t   e   m   p   f   i   l   e   )  \r    
0024400                        e   n   d   c   a   s   e  \r            
0024420                ]  \r               c   a   s   e       #   1   5
0024440    :                           /   /   C   R       i   s       a
0024460        n   o   -   o   p  \r                           [  \r    
0024500                        W   l   (   "   "   )  \r                
0024520            e   n   d   c   a   s   e  \r             376 001  \0
0024540  214 337               ]  \r               c   a   s   e       $
0024560    Q   :       c   a   s   e       $   q   :  \r                
0024600            [  \r                           W   s   (   "   Q   u
0024620    i   t   .   .   .   "   )  \r                           i   f
0024640        C   o   n   f   i   r   m   (   "   C   o   n   f   i   r
0024660    m   ?   "   )       t   h   e   n       f   i   n   i   s   h
0024700   \r                           e   n   d   c   a   s   e        
0024720        /   /   p   r   o   g   r   a   m       t   e   r   m   i
0024740    n   a   t   e   s       h   e   r   e   !   !   !   !  \r    
0024760                        ]  \r               c   a   s   e       $
0025000    ?   :      \r                           [  \r                
0025020            W   l   (   "   S   e   n   d   ,       R   e   c   e
0025040    i   v   e   ,       Q   u   i   t   .   .   .   "   )  \r    
0025060                        e   n   d   c   a   s   e  \r            
0025100                ]  \r               d   e   f   a   u   l   t   :
0025120   \r                           [  \r                           P
0025140    u   t 376 001  \0   0 240   s   (   d   s   p   ,   c   m   d
0025160    )  \r                           W   l   (   "       ?   ?   ?
0025200        S   e   n   d   ,       R   e   c   e   i   v   e   ,    
0025220    Q   u   i   t   .   .   .   "   )  \r                        
0025240    e   n   d   c   a   s   e  \r                           ]  \r
0025260                ]   C   o   m   m   a   n   d   B   l   o   c   k
0025300   \r   B   l   o   c   k   (   )  \r   ]   C   m   d   L   o   o
0025320    p       r   e   p   e   a   t                                
0025340        /   /   w   i   l   l       r   u   n       u   n   t   i
0025360    l       a       q   u   i   t  \r   ]  \r  \r  \r   /   /   -
0025400    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0025500   \r   a   n   d       R   e   p   o   r   t   R   e   s   u   l
0025520    t   (   b   o   o   l   e   a   n   )       b   e  \r   /   /
0025540    -   -   -   -   -   -   - 376 001  \0   )   /   -   -   -   -
0025560    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0025640    -   -   -   -   -   -  \r   [  \r   t   e   s   t       b   o
0025660    o   l   e   a   n  \r               i   f   s   o       W   l
0025700    (   "   .   .   .   a   l   l       d   o   n   e   "   )  \r
0025720                i   f   n   o   t       W   l   (   "   .   .   .
0025740    f   i   l   e       t   r   a   n   s   f   e   r       f   a
0025760    i   l   e   d   "   )  \r   ]  \r  \r  \r   /   /   -   -   -
0026000    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0026060    -   -   -   -   -   -   -   -   -   -   -   -   -   -  \r   a
0026100    n   d       G   e   t   K   e   y   s   (   )       =       v
0026120    a   l   o   f  \r   /   /   -   -   -   -   -   -   -   -   -
0026140    -   -   -   -   -   -   -   -   -   -   -   - 376 001  \0   &
0026160  224   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0026200    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0026220    -   -   -   -   -   -   -   -   -   -   -   -   -  \r   [  \r
0026240    w   h   i   l   e       E   n   d   o   f   s   (   k   e   y
0026260    s   )       d   o       B   l   o   c   k   (   )  \r   r   e
0026300    s   u   l   t   i   s       G   e   t   s   (   k   e   y   s
0026320    )  \r   ]  \r  \r  \r   /   /   -   -   -   -   -   -   -   -
0026340    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0026420    -   -   -   -   -   -   -   -   -  \r   a   n   d       G   e
0026440    t   S   t   r   i   n   g   (   s   t   r   )       =       v
0026460    a   l   o   f  \r   /   /   -   -   -   -   -   -   -   -   -
0026500    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0026560    - 376 001  \0 220 304   -   -   -   -   -   -   -  \r   [  \r
0026600    /   /       C   a   l   l   e   r       m   u   s   t       p
0026620    r   o   v   i   d   e       t   h   e       p   l   a   c   e
0026640        t   o       p   u   t       t   h   e       s   t   r   i
0026660    n   g  \r   /   /       R   e   t   u   r   n   s       f   a
0026700    l   s   e       i   f       D   E   L       i   s       h   i
0026720    t   .           U   s   e   s       d   e   f   a   u   l   t
0026740        s   t   r   e   a   m   s       d   s   p       a   n   d
0026760        k   e   y   s  \r   l   e   t       d   e   l   e   t   i
0027000    n   g   F   l   a   g   ,       c   h   a   r       =       f
0027020    a   l   s   e   ,       0  \r   s   t   r   >   >   S   t   r
0027040    i   n   g   .   l   e   n   g   t   h       =       0  \r  \r
0027060                [   c   h   a   r   L   o   o   p  \r            
0027100    i   f       s   t   r   >   >   S   t   r   i   n   g   .   l
0027120    e   n   g   t   h       e   q       2   5   5       t   h   e
0027140    n       r   e   s   u   l   t   i   s       t   r   u   e  \r
0027160                c   h   a 376 001  \0 261   W   r       =       G
0027200    e   t   K   e   y   s   (   )               /   /   t   h   i
0027220    s       w   i   l   l       b   l   o   c   k       f   o   r
0027240        a       b   i   t  \r               s   w   i   t   c   h
0027260    o   n       c   h   a   r       i   n   t   o  \r            
0027300                [   C   h   a   r   B   l   o   c   k  \r        
0027320                    c   a   s   e       #   1   5   :            
0027340                /   /   C   R  \r                                
0027360        [  \r                                       W   l   (   "
0027400    "   )  \r                                       r   e   s   u
0027420    l   t   i   s       t   r   u   e  \r                        
0027440                ]  \r                           c   a   s   e    
0027460    #   2   1   :                           /   /   ^   Q   ,    
0027500    r   e   s   e   t       t   h   e       l   i   n   e  \r    
0027520                                    [  \r                        
0027540                W   l   (   "       x   x   x   "   )  \r        
0027560                                d   e   l   e 376 001  \0   Z 307
0027600    t   i   n   g   F   l   a   g   =   f   a   l   s   e  \r    
0027620                                    c   h   a   r   =   0  \r    
0027640                                    s   t   r   >   >   S   t   r
0027660    i   n   g   .   l   e   n   g   t   h   =   0  \r            
0027700                            e   n   d   c   a   s   e  \r        
0027720                                ]  \r                           c
0027740    a   s   e       #   1   0   :       c   a   s   e       #   1
0027760    :                           /   /   B   S       o   r       ^
0030000    A  \r                                       [  \r            
0030020                            i   f       s   t   r   >   >   S   t
0030040    r   i   n   g   .   l   e   n   g   t   h       e   q       0
0030060        t   h   e   n       e   n   d   c   a   s   e  \r        
0030100                                u   n   l   e   s   s       d   e
0030120    l   e   t   i   n   g   F   l   a   g       t   h   e   n  \r
0030140                                                    [  \r        
0030160                                            d   e   l   e   t   i
0030200  376 001  \0 371 263   n   g   F   l   a   g   =   t   r   u   e
0030220   \r                                                   W   s   (
0030240    "   [   "   )  \r                                            
0030260        ]  \r                                       P   u   t   s
0030300    (   d   s   p   ,   s   t   r   >   >   S   t   r   i   n   g
0030320    .   c   h   a   r   ^   (   s   t   r   >   >   S   t   r   i
0030340    n   g   .   l   e   n   g   t   h   )   )  \r                
0030360                        s   t   r   >   >   S   t   r   i   n   g
0030400    .   l   e   n   g   t   h       =       s   t   r   >   >   S
0030420    t   r   i   n   g   .   l   e   n   g   t   h       -       1
0030440   \r                                       e   n   d   c   a   s
0030460    e  \r                                       ]  \r            
0030500                c   a   s   e       #   2   2   :                
0030520            /   /   ^   R   ,       r   e   t   y   p   e       t
0030540    h   e       l   i   n   e  \r                                
0030560        [  \r                                       W   l   (   "
0030600    "   )   ;       W 376 001  \0 200   Z   s   (   s   t   r   )
0030620    ;       d   e   l   e   t   i   n   g   F   l   a   g   =   f
0030640    a   l   s   e  \r                                       e   n
0030660    d   c   a   s   e  \r                                       ]
0030700   \r                           c   a   s   e       #   1   7   7
0030720    :               /   /   D   E   L   ,   d   e   l   e   t   e
0030740        t   h   e       l   i   n   e       a   n   d       r   e
0030760    t   u   r   n       f   a   l   s   e  \r                    
0031000                    [  \r                                       W
0031020    l   (   "       X   X   X   "   )  \r                        
0031040                r   e   s   u   l   t   i   s       f   a   l   s
0031060    e  \r                                       ]  \r            
0031100                d   e   f   a   u   l   t   :                    
0031120       \r                                       [  \r            
0031140                            i   f       d   e   l   e   t   i   n
0031160    g   F   l   a   g       t   h   e   n  \r                    
0031200                                [  \r     376 001  \0   j 215    
0031220                                            d   e   l   e   t   i
0031240    n   g   F   l   a   g   =   f   a   l   s   e  \r            
0031260                                        W   s   (   "   ]   "   )
0031300   \r                                                   ]  \r    
0031320                                    s   t   r   >   >   S   t   r
0031340    i   n   g   .   l   e   n   g   t   h       =       s   t   r
0031360    >   >   S   t   r   i   n   g   .   l   e   n   g   t   h    
0031400    +       1  \r                                       s   t   r
0031420    >   >   S   t   r   i   n   g   .   c   h   a   r   ^   (   s
0031440    t   r   >   >   S   t   r   i   n   g   .   l   e   n   g   t
0031460    h   )       =       c   h   a   r  \r                        
0031500                P   u   t   s   (   d   s   p   ,       c   h   a
0031520    r   )  \r                                       ]  \r        
0031540                    ]   C   h   a   r   B   l   o   c   k  \r    
0031560            ]   c   h   a   r   L   o   o   p           r   e   p
0031600    e   a   t  \r  \r   ]  \r  \r  \r   /   /   -   -   -   - 376
0031620  001  \0 030 006   -   -   -   -   -   -   -   -   -   -   -   -
0031640    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0031720    -  \r   a   n   d       C   o   n   f   i   r   m   (   c   o
0031740    n   f   i   r   m   S   t   r   i   n   g   )       =       v
0031760    a   l   o   f  \r   /   /   -   -   -   -   -   -   -   -   -
0032000    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0032060    -   -   -   -   -   -   -   -  \r   [  \r   /   /       A    
0032100    g   e   n   e   r   a   l       g   u   y   ,       f   o   r
0032120        c   o   n   f   i   r   m   i   n   g       s   o   m   e
0032140        a   c   t   i   o   n  \r   P   u   t   s   (   d   s   p
0032160    ,   $   [   )   ;       W   s   (   c   o   n   f   i   r   m
0032200    S   t   r   i   n   g   )   ;       P   u   t   s   (   d   s
0032220    p   ,   $   ] 376  \0 314   & 273   )  \r   s   w   i   t   c
0032240    h   o   n       G   e   t   K   e   y   s   (   )       i   n
0032260    t   o  \r               [  \r               c   a   s   e    
0032300    $   y   :       c   a   s   e       $   Y   :       c   a   s
0032320    e       $   *   N   :  \r                           [       W
0032340    l   (   "       Y   e   s   .   "   )   ;       r   e   s   u
0032360    l   t   i   s       t   r   u   e       ]  \r               c
0032400    a   s   e       $   n   :       c   a   s   e       $   N   :
0032420        c   a   s   e       $   *   1   7   7   :  \r            
0032440                [       W   l   (   "       N   o   .   "   )   ;
0032460        r   e   s   u   l   t   i   s       f   a   l   s   e    
0032500    ]  \r               d   e   f   a   u   l   t   :       W   l
0032520    (   "       ?   "   )  \r               ]       r   e   p   e
0032540    a   t  \r   ]  \r 377  \0  \0   E   F   T   P   F   i   l   e
0032560    .   b   c   p   l  \0 373 223 361 363 350  \0  \0 376 001  \0
0032600    c   H   /   /       E   F   T   P   F   i   l   e   .   b   c
0032620    p   l  \r   /   /       J   u   n   e       1   7   ,       1
0032640    9   7   6           1   0   :   5   7       P   M           b
0032660    k   ,       j   f   s  \r   /   /       l   a   s   t       m
0032700    o   d   i   f   i   e   d       o   n       J   u   n   e    
0032720    3   ,       1   9   7   9           1   1   :   4   7       A
0032740    M       b   y       T   a   f   t  \r   /   /       C   o   p
0032760    y   r   i   g   h   t       X   e   r   o   x       C   o   r
0033000    p   o   r   a   t   i   o   n       1   9   7   9  \r  \r   g
0033020    e   t       "   P   u   p   E   F   T   P   .   d   e   c   l
0033040    "           /   /       t   h   a   t       w   i   l   l    
0033060    a   l   s   o       g   e   t       p   u   p   -   r   e   l
0033100    a   t   e   d       s   t   u   f   f  \r  \r   e   x   t   e
0033120    r   n   a   l  \r   [  \r   /   /   i   n   c   o   m   i   n
0033140    g       p   r   o   c   e   d   u   r   e   s  \r   I   n   i
0033160    t   E   F   T   P   P   a   c   k   a   g   e   ;       O   p
0033200    e   n 376 001  \0 342 023   E   F   T   P   S   o   c   ;    
0033220    C   l   o   s   e   E   F   T   P   S   o   c  \r   R   e   c
0033240    e   i   v   e   E   F   T   P   B   l   o   c   k   ;       S
0033260    e   n   d   E   F   T   P   B   l   o   c   k   ;       S   e
0033300    n   d   E   F   T   P   E   n   d   ;       G   e   t   E   F
0033320    T   P   A   b   o   r   t  \r   E   n   d   o   f   s   ;    
0033340    R   e   a   d   B   l   o   c   k   ;       W   r   i   t   e
0033360    B   l   o   c   k   ;       P   u   t   s   ;       F   i   l
0033400    e   P   o   s  \r   W   s   ;       W   o   ;       W   n   s
0033420    ;       W   l   ;       Z   e   r   o  \r  \r   /   /       i
0033440    n   c   o   m   i   n   g       s   t   a   t   i   c   s   ,
0033460        f   o   r       c   o   m   m   o   n       u   s   e   ,
0033500        s   p   a   c   e       a   l   l   o   c   a   t   e   d
0033520        e   l   s   e   w   h   e   r   e  \r   E   F   T   P   L
0033540    c   l   P   o   r   t   ;       E   F   T   P   F   r   n   P
0033560    o   r   t   ;       E   F   T   P   S   o   c   k   e   t   ;
0033600        d   s   p  \r  \r   / 376 001  \0 332   R   /   o   u   t
0033620    g   o   i   n   g       p   r   o   c   e   d   u   r   e   s
0033640   \r   E   F   T   P   S   e   n   d   F   i   l   e   ;       E
0033660    F   T   P   R   e   c   e   i   v   e   F   i   l   e  \r   ]
0033700   \r  \r   s   t   a   t   i   c  \r   [  \r   /   /       f   o
0033720    r       u   s   e       i   n       t   h   i   s       p   r
0033740    o   g   r   a   m   ,       a   l   l   o   c   a   t   e   d
0033760        i   n       t   h   i   s       m   o   d   u   l   e  \r
0034000    b   y   t   e   c   o   u   n   t   ;       t   o   t   a   l
0034020    b   y   t   e   c   o   u   n   t  \r   p   a   c   k   e   t
0034040    c   o   u   n   t   ;       b   l   o   c   k   c   o   u   n
0034060    t  \r   ]  \r  \r   /   /       T   h   e   s   e       r   o
0034100    u   t   i   n   e   s       w   i   l   l       b   e       c
0034120    a   l   l   e   d       f   r   o   m       t   h   e       F
0034140    r   o   n   t   E   n   d   ,       a   n   d       m   a   y
0034160        b   e  \r   /   /       c   a   l   l   e   d       m   o
0034200    r   e       t   h   a   n       o   n   c   e 376 001  \0   U
0034220    *       i   n       t   h   e       l   i   f   e       o   f
0034240        a       p   r   o   g   r   a   m  \r  \r   /   /   -   -
0034260    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0034340    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -  \r
0034360    l   e   t       E   F   T   P   S   e   n   d   F   i   l   e
0034400    (   d   i   s   k   s   t   r   e   a   m   ,       f   o   r
0034420    e   i   g   n   p   o   r   t   )       =       v   a   l   o
0034440    f  \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -
0034460    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0034540    -   -   -   -   -  \r   [  \r   O   p   e   n   E   F   T   P
0034560    S   o   c   (   E   F   T   P   S   o   c   k   e   t   ,    
0034600    0   ,       f   o   r   e   i   g   n   p   o   r   t   )  \r
0034620    p 376 001  \0 034   2   a   c   k   e   t   c   o   u   n   t
0034640        =       0  \r   t   o   t   a   l   b   y   t   e   c   o
0034660    u   n   t       =       0  \r  \r   l   e   t       m   a   x
0034700    B   u   f   f   e   r   B   y   t   e   s       =       2   *
0034720    2   5   6   *   6               /   /   e   n   o   u   g   h
0034740        t   o       b   u   f   f   e   r       6       d   i   s
0034760    k       p   a   g   e   s  \r   l   e   t       t   e   m   p
0035000    v   e   c       =       v   e   c       2   5   6   *   6    
0035020                        /   /   i   n       w   o   r   d   s  \r
0035040    l   e   t       b   y   t   e   s   L   e   f   t   I   n   B
0035060    u   f   f   e   r       =       0  \r   l   e   t       n   e
0035100    x   t   A   d   d   r       =       t   e   m   p   v   e   c
0035120   \r  \r   l   e   t       r   e   s   u   l   t       =       n
0035140    i   l  \r  \r   /   /       A       l   o   o   p   ,       t
0035160    o       r   e   a   d       p   a   g   e   s       a   n   d
0035200        s   e   n   d       o   f   f       b   l   o   c   k   s
0035220   \r               [   S 376 001  \0 253 306   e   n   d   l   o
0035240    o   p  \r               /   /   S   e   e       i   f       w
0035260    e       n   e   e   d       m   o   r   e       i   n   p   u
0035300    t  \r               i   f       b   y   t   e   s   L   e   f
0035320    t   I   n   B   u   f   f   e   r       e   q       0       t
0035340    h   e   n      \r                           [  \r            
0035360                /   /   S   e   e       i   f           t   i   m
0035400    e       t   o       q   u   i   t  \r                        
0035420    i   f           E   n   d   o   f   s   (   d   i   s   k   s
0035440    t   r   e   a   m   )       t   h   e   n       b   r   e   a
0035460    k  \r                           b   y   t   e   s   L   e   f
0035500    t   I   n   B   u   f   f   e   r       =  \r                
0035520            F   i   l   l   F   r   o   m   D   i   s   k   (   d
0035540    i   s   k   s   t   r   e   a   m   ,       t   e   m   p   v
0035560    e   c   ,       m   a   x   B   u   f   f   e   r   B   y   t
0035600    e   s   )  \r                           t   o   t   a   l   b
0035620    y   t   e   c   o   u   n   t       =     376 001  \0   7 022
0035640    t   o   t   a   l   b   y   t   e   c   o   u   n   t       +
0035660        b   y   t   e   s   L   e   f   t   I   n   B   u   f   f
0035700    e   r  \r                           n   e   x   t   A   d   d
0035720    r       =       t   e   m   p   v   e   c               /   /
0035740    r   e   s   e   t       a   d   d   r   e   s   s       p   o
0035760    i   n   t   e   r  \r                           ]  \r        
0036000        /   /   d   a   t   a       r   e   m   a   i   n   s    
0036020    t   o       b   e       s   e   n   t   ,       a   t       n
0036040    e   x   t   A   d   d   r  \r               p   a   c   k   e
0036060    t   c   o   u   n   t       =       p   a   c   k   e   t   c
0036100    o   u   n   t       +       1  \r               t   e   s   t
0036120        b   y   t   e   s   L   e   f   t   I   n   B   u   f   f
0036140    e   r       l   s       5   1   2  \r               i   f   s
0036160    o       b   y   t   e   c   o   u   n   t       =       b   y
0036200    t   e   s   L   e   f   t   I   n   B   u   f   f   e   r  \r
0036220                i   f   n   o   t       b   y   t   e   c   o   u
0036240  376 001  \0   q   }   n   t       =       5   1   2  \r  \r    
0036260            [   d   u   m   m   y   L   o   o   p  \r            
0036300    r   e   s   u   l   t       =      \r                        
0036320    S   e   n   d   E   F   T   P   B   l   o   c   k   (   E   F
0036340    T   P   S   o   c   k   e   t   ,       n   e   x   t   A   d
0036360    d   r   ,       b   y   t   e   c   o   u   n   t   ,       l
0036400    o   n   g   B   l   o   c   k   T   i   m   e   o   u   t   )
0036420   \r               i   f       r   e   s   u   l   t       e   q
0036440        E   F   T   P   T   i   m   e   o   u   t       &      \r
0036460                                        E   F   T   P   S   o   c
0036500    k   e   t   >   >   E   F   T   P   S   o   c   .   T   r   a
0036520    n   s   f   e   r   N   o   t   S   t   a   r   t   e   d    
0036540    t   h   e   n  \r                                       [  \r
0036560                                        W   l   (   "   N   o    
0036600    a   n   s   w   e   r       y   e   t   ,       w   i   l   l
0036620        k   e   e   p       t   r   y   i   n   g   .   .   .   "
0036640    )  \r             376 001  \0 360   m                        
0036660    l   o   o   p  \r                                       ]  \r
0036700                b   r   e   a   k  \r               ]   d   u   m
0036720    m   y   L   o   o   p       r   e   p   e   a   t  \r  \r    
0036740            /   /   S   o   m   e   t   h   i   n   g       h   a
0036760    p   p   e   n   e   d   .   .   .  \r               i   f    
0037000    r   e   s   u   l   t       g   e       0       t   h   e   n
0037020       \r                           [  \r                        
0037040    b   y   t   e   s   L   e   f   t   I   n   B   u   f   f   e
0037060    r       =       b   y   t   e   s   L   e   f   t   I   n   B
0037100    u   f   f   e   r       -       b   y   t   e   c   o   u   n
0037120    t  \r                           n   e   x   t   A   d   d   r
0037140        =       n   e   x   t   A   d   d   r       +       b   y
0037160    t   e   c   o   u   n   t   /   2  \r                        
0037200    l   o   o   p               /   /   i   t       w   e   n   t
0037220        p   r   o   p   e   r   l   y  \r                        
0037240    ]  \r  \r               /   /   I   f 376 001  \0 306 343    
0037260    w   e       g   e   t       h   e   r   e   ,       h   a   d
0037300        a       r   e   a   l       f   a   i   l   u   r   e   .
0037320    .   .   .  \r               s   w   i   t   c   h   o   n    
0037340    r   e   s   u   l   t       i   n   t   o  \r                
0037360            [   r   e   s   u   l   t   C   a   s   e  \r        
0037400                    c   a   s   e       E   F   T   P   T   i   m
0037420    e   o   u   t   :  \r                                       [
0037440   \r                                       W   s   (   "   E   F
0037460    T   P   S   e   n   d       t   i   m   e   d       o   u   t
0037500        w   h   i   l   e       s   e   n   d   i   n   g   .   .
0037520    .   .   "   )  \r                                       e   n
0037540    d   c   a   s   e  \r                                       ]
0037560   \r                           c   a   s   e       E   F   T   P
0037600    A   b   o   r   t   S   e   n   t   :  \r                    
0037620                    [  \r                                       W
0037640    s   (   "   E   F   T   P   A   b   o   r   t       h   a 376
0037660  001  \0 217 223   d       t   o       b   e       s   e   n   t
0037700    .   .   .   .   "   )  \r                                    
0037720    e   n   d   c   a   s   e  \r                                
0037740        ]  \r                           c   a   s   e       E   F
0037760    T   P   A   b   o   r   t   R   e   c   e   i   v   e   d   :
0040000   \r                                       [  \r                
0040020                        W   s   (   "   E   F   T   P   A   b   o
0040040    r   t       r   e   c   e   i   v   e   d       w   h   i   l
0040060    e       s   e   n   d   i   n   g   .   .   .   .   "   )  \r
0040100                                        l   e   t       t   e   m
0040120    p   p   b   i       =       G   e   t   E   F   T   P   A   b
0040140    o   r   t   (   E   F   T   P   S   o   c   k   e   t   )  \r
0040160                                        P   r   i   n   t   A   b
0040200    o   r   t   P   B   I   (   t   e   m   p   p   b   i   )  \r
0040220                                        e   n   d   c   a   s   e
0040240   \r                                       ]  \r                
0040260            d   e 376 001  \0   i 304   f   a   u   l   t   :  \r
0040300                                        [  \r                    
0040320                    W   s   (   "   U   n   k   n   o   w   n    
0040340    e   r   r   o   r       f   r   o   m       E   F   T   P   S
0040360    e   n   d   .   .   .   .   "   )  \r                        
0040400                ]  \r                           ]   r   e   s   u
0040420    l   t   C   a   s   e  \r               C   l   o   s   e   E
0040440    F   T   P   S   o   c   (   E   F   T   P   S   o   c   k   e
0040460    t   )  \r               r   e   s   u   l   t   i   s       f
0040500    a   l   s   e               /   /   b   a   i   l       o   u
0040520    t  \r               ]   S   e   n   d   l   o   o   p       r
0040540    e   p   e   a   t               /   /   k   e   e   p       g
0040560    o   i   n   g   ,       t   i   l       y   o   u       b   r
0040600    e   a   k       o   u   t  \r  \r   /   /       A   l   l    
0040620    o   f       t   h   e       d   a   t   a       h   a   s    
0040640    b   e   e   n       s   e   n   t   ;       n   o   w       d
0040660    o       a   n       e   n   d     376 001  \0 367   R   s   e
0040700    q   u   e   n   c   e  \r   r   e   s   u   l   t       =    
0040720    S   e   n   d   E   F   T   P   E   n   d   (   E   F   T   P
0040740    S   o   c   k   e   t   ,       l   o   n   g   B   l   o   c
0040760    k   T   i   m   e   o   u   t   )  \r   C   l   o   s   e   E
0041000    F   T   P   S   o   c   (   E   F   T   P   S   o   c   k   e
0041020    t   )  \r   t   e   s   t       r   e   s   u   l   t  \r    
0041040            i   f   s   o       [       W   n   s   (   d   s   p
0041060    ,       t   o   t   a   l   b   y   t   e   c   o   u   n   t
0041100    ,       0   ,       1   0   )   ;       W   s   (   "       b
0041120    y   t   e   s       s   e   n   t   .           "   )       ]
0041140   \r               i   f   n   o   t       W   s   (   "   S   e
0041160    n   d   E   n   d       s   e   q   u   e   n   c   e       f
0041200    a   i   l   e   d   .   .   .   .   .   "   )  \r   r   e   s
0041220    u   l   t   i   s       r   e   s   u   l   t  \r   ]  \r  \r
0041240   \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -   -
0041260    -   -   -   -   -   -   -   -   -   -   -   -   -   - 376 001
0041300   \0 032 277   -   -   -   -   -   -   -   -   -   -   -   -   -
0041320    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0041340    -   -   -   -   -   -   -  \r   a   n   d       F   i   l   l
0041360    F   r   o   m   D   i   s   k   (   d   i   s   k   s   t   r
0041400    e   a   m   ,       a   d   d   r   ,       m   a   x   b   y
0041420    t   e   s   )       =       v   a   l   o   f  \r   /   /   -
0041440    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0041520    -   -   -   -   -   -   -   -   -   -   -   -   -   -  \r   [
0041540   \r   /   /   R   e   t   u   r   n   s       t   h   e       n
0041560    u   m   b   e   r       o   f       b   y   t   e   s       r
0041600    e   a   d       i   n   t   o       t   h   e       b   u   f
0041620    f   e   r  \r   /   /       W   a   t   c   h       o   u   t
0041640    ,       R   e   a   d   b   l   o   c   k       r   e   t   u
0041660    r   n   s       a       w   o   r   d       c   o   u   n   t
0041700   \r   l   e 376 001  \0   z 234   t       b   y   t   e   c   o
0041720    u   n   t       =  \r       R   e   a   d   B   l   o   c   k
0041740    (   d   i   s   k   s   t   r   e   a   m   ,       a   d   d
0041760    r   ,       m   a   x   b   y   t   e   s       r   s   h   i
0042000    f   t       1   )       l   s   h   i   f   t       1      \r
0042020    i   f       b   y   t   e   c   o   u   n   t       e   q    
0042040    0       t   h   e   n       r   e   s   u   l   t   i   s    
0042060    0       /   /       h   i   t       e   o   f   ,       q   u
0042100    i   t       e   a   r   l   y  \r   i   f       b   y   t   e
0042120    c   o   u   n   t       <       m   a   x   b   y   t   e   s
0042140        t   h   e   n  \r               [  \r               /   /
0042160        g   o   t       t   h   e       l   a   s   t       p   a
0042200    g   e   ;       w   e       h   a   v   e       t   o       d
0042220    o       s   o   m   e       h   a   c   k   i   n   g       h
0042240    e   r   e  \r               l   e   t       f   i   l   e   p
0042260    o   s       =       v   e   c       1  \r               F   i
0042300    l   e   P   o   s   (   d   i 376 001  \0 356 244   s   k   s
0042320    t   r   e   a   m   ,       f   i   l   e   p   o   s   )  \r
0042340                /   /   s   e   e       i   f       t   h   e    
0042360    f   i   l   e   s       t   o   t   a   l       b   y   t   e
0042400        c   o   u   n   t       i   s       o   d   d  \r        
0042420        i   f       (   (   f   i   l   e   p   o   s   !   1   )
0042440        &       1   )       e   q       1       t   h   e   n    
0042460    b   y   t   e   c   o   u   n   t   =   b   y   t   e   c   o
0042500    u   n   t   -   1  \r               ]  \r   r   e   s   u   l
0042520    t   i   s       b   y   t   e   c   o   u   n   t  \r   ]  \r
0042540   \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -   -
0042560    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0042640    -   -  \r   a   n   d       D   u   m   p   T   o   D   i   s
0042660    k   (   d   i   s   k   s   t   r   e   a   m   ,       a   d
0042700    d   r   ,       b   y   t   e   c   o   u   n   t 376 001  \0
0042720  234 246   )       =       v   a   l   o   f  \r   /   /   -   -
0042740    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0043020    -   -   -   -   -   -   -   -   -   -   -   -   -  \r   [  \r
0043040    /   /       W   a   t   c   h       o   u   t       f   o   r
0043060        a   n       o   d   d       b   y   t   e   c   o   u   n
0043100    t  \r   W   r   i   t   e   B   l   o   c   k   (   d   i   s
0043120    k   s   t   r   e   a   m   ,       a   d   d   r   ,       b
0043140    y   t   e   c   o   u   n   t       r   s   h   i   f   t    
0043160    1   )  \r   /   /       M   a   y       h   a   v   e       f
0043200    a   i   l   e   d       t   o       w   r   i   t   e       o
0043220    n   e       b   y   t   e  \r   i   f       (   b   y   t   e
0043240    c   o   u   n   t       &       1   )       e   q       1    
0043260    t   h   e   n       P   u   t   s   (   d   i   s   k   s   t
0043300    r   e   a   m   ,       a   d   d   r   >   >   B   y   t   e
0043320    ^   b 376 001  \0   Y   ;   y   t   e   c   o   u   n   t   )
0043340   \r   ]  \r  \r  \r   /   /   -   -   -   -   -   -   -   -   -
0043360    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0043440    -   -   -   -   -   -  \r   a   n   d       E   F   T   P   R
0043460    e   c   e   i   v   e   F   i   l   e   (   d   i   s   k   s
0043500    t   r   e   a   m   ,       f   o   r   e   i   g   n   p   o
0043520    r   t   )       =       v   a   l   o   f  \r   /   /   -   -
0043540    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0043620    -   -   -   -   -   -   -   -   -   -   -   -   -  \r  \r   [
0043640   \r   /   /   u   s   e       E   F   T   P   L   c   l   P   o
0043660    r   t   ,       a   l   l   o   c   a   t   e   d       e   l
0043700    s   e   w   h   e   r   e  \r   Z   e   r   o   (   E   F   T
0043720    P   L   c   l   P   o   r 376 001  \0   [ 225   t   ,       l
0043740    e   n   P   o   r   t   )  \r   E   F   T   P   L   c   l   P
0043760    o   r   t   >   >   P   o   r   t   .   s   o   c   k   e   t
0044000    ^   2       =       s   o   c   k   e   t   E   F   T   P   R
0044020    e   c   e   i   v   e  \r  \r   O   p   e   n   E   F   T   P
0044040    S   o   c   (   E   F   T   P   S   o   c   k   e   t   ,    
0044060    E   F   T   P   L   c   l   P   o   r   t   ,       f   o   r
0044100    e   i   g   n   p   o   r   t   )  \r   p   a   c   k   e   t
0044120    c   o   u   n   t       =       0  \r   t   o   t   a   l   b
0044140    y   t   e   c   o   u   n   t       =       0  \r  \r   l   e
0044160    t       m   a   x   B   u   f   f   e   r   B   y   t   e   s
0044200        =       2   *   2   5   6   *   6               /   /   6
0044220        d   i   s   k       p   a   g   e   s  \r   l   e   t    
0044240    t   e   m   p   v   e   c       =       v   e   c       2   5
0044260    6   *   6               /   /   i   n       w   o   r   d   s
0044300   \r   l   e   t       b   y   t   e   s   L   e   f   t   I   n
0044320    B   u   f   f   e   r       =       0  \r   l 376 001  \0   z
0044340    )   e   t       n   e   x   t   A   d   d   r       =       t
0044360    e   m   p   v   e   c  \r  \r   /   /       a       l   o   o
0044400    p       t   o       g   e   t       b   l   o   c   k   s   ,
0044420        a   n   d       w   r   i   t   e       t   o       t   h
0044440    e       d   i   s   k  \r               [   R   e   c   e   i
0044460    v   e   l   o   o   p  \r               /   /   M   a   k   e
0044500        s   u   r   e       t   h   e   r   e       i   s       e
0044520    n   o   u   g   h       f   r   e   e       s   p   a   c   e
0044540   \r               i   f       m   a   x   B   u   f   f   e   r
0044560    B   y   t   e   s   -   b   y   t   e   s   L   e   f   t   I
0044600    n   B   u   f   f   e   r       l   s       5   1   2       t
0044620    h   e   n  \r                           [  \r                
0044640            t   o   t   a   l   b   y   t   e   c   o   u   n   t
0044660        =       t   o   t   a   l   b   y   t   e   c   o   u   n
0044700    t       +       b   y   t   e   s   L   e   f   t   I   n   B
0044720    u   f   f   e   r  \r                           D   u   m   p
0044740    T 376 001  \0 025  \n   o   D   i   s   k   (   d   i   s   k
0044760    s   t   r   e   a   m   ,       t   e   m   p   v   e   c   ,
0045000        b   y   t   e   s   L   e   f   t   I   n   B   u   f   f
0045020    e   r   )  \r                           n   e   x   t   A   d
0045040    d   r       =       t   e   m   p   v   e   c  \r            
0045060                b   y   t   e   s   L   e   f   t   I   n   B   u
0045100    f   f   e   r       =       0  \r                           ]
0045120   \r               l   e   t       b   y   t   e   c   o   u   n
0045140    t   =  \r                           R   e   c   e   i   v   e
0045160    E   F   T   P   B   l   o   c   k   (   E   F   T   P   S   o
0045200    c   k   e   t   ,       n   e   x   t   A   d   d   r   ,    
0045220    l   o   n   g   B   l   o   c   k   T   i   m   e   o   u   t
0045240    )  \r               i   f       b   y   t   e   c   o   u   n
0045260    t       e   q       0       t   h   e   n      \r            
0045300                [  \r                           /   /   R   e   c
0045320    e   i   v   e   d       a   n       E   n   d   .   .   .   .
0045340   \r                     376 001  \0 262 234       i   f       b
0045360    y   t   e   s   L   e   f   t   I   n   B   u   f   f   e   r
0045400        g   r       0       t   h   e   n  \r                    
0045420                    D   u   m   p   T   o   D   i   s   k   (   d
0045440    i   s   k   s   t   r   e   a   m   ,       t   e   m   p   v
0045460    e   c   ,       b   y   t   e   s   L   e   f   t   I   n   B
0045500    u   f   f   e   r   )  \r                           t   o   t
0045520    a   l   b   y   t   e   c   o   u   n   t       =       t   o
0045540    t   a   l   b   y   t   e   c   o   u   n   t       +       b
0045560    y   t   e   s   L   e   f   t   I   n   B   u   f   f   e   r
0045600   \r                           b   r   e   a   k           /   /
0045620        e   n   d       h   a   s       b   e   e   n       p   r
0045640    o   p   e   r   l   y       r   e   c   e   i   v   e   d  \r
0045660                            ]  \r               i   f       b   y
0045700    t   e   c   o   u   n   t       g   r       0       t   h   e
0045720    n  \r                           [  \r                        
0045740    /   /       o   d   d       b   y   t   e 376 001  \0 270   n
0045760    c   o   u   n   t   s       a   r   e       n   o   t       l
0046000    e   g   a   l   ,       e   x   c   e   p   t       i   n    
0046020    t   h   e       l   a   s   t       p   a   c   k   e   t  \r
0046040                            b   y   t   e   s   L   e   f   t   I
0046060    n   B   u   f   f   e   r       =       b   y   t   e   s   L
0046100    e   f   t   I   n   B   u   f   f   e   r       +       b   y
0046120    t   e   c   o   u   n   t  \r                           n   e
0046140    x   t   A   d   d   r       =       n   e   x   t   A   d   d
0046160    r       +       b   y   t   e   c   o   u   n   t       r   s
0046200    h   i   f   t       1  \r                           p   a   c
0046220    k   e   t   c   o   u   n   t       =       p   a   c   k   e
0046240    t   c   o   u   n   t       +       1  \r                    
0046260        l   o   o   p  \r                           ]  \r  \r    
0046300            /   /   S   o   m   e       f   o   r   m       o   f
0046320        e   r   r   o   r       r   e   t   u   r   n   ,       f
0046340    i   g   u   r   e       i   t       o   u   t       h   e   r
0046360  376 001  \0   t 264   e       a   n   d       p   u   n   t  \r
0046400                s   w   i   t   c   h   o   n       b   y   t   e
0046420    c   o   u   n   t       i   n   t   o  \r                    
0046440        [   R   e   c   e   i   v   e   C   a   s   e   B   l   o
0046460    c   k  \r                           c   a   s   e       E   F
0046500    T   P   T   i   m   e   o   u   t   :  \r                    
0046520                    [  \r                                       i
0046540    f       E   F   T   P   S   o   c   k   e   t   >   >   E   F
0046560    T   P   S   o   c   .   T   r   a   n   s   f   e   r   N   o
0046600    t   S   t   a   r   t   e   d       t   h   e   n      \r    
0046620                                                [  \r            
0046640                                        W   l   (   "   N   o   t
0046660    h   i   n   g       r   e   c   e   i   v   e   d       y   e
0046700    t   ,       w   i   l   l       k   e   e   p       l   i   s
0046720    t   e   n   i   n   g   .   .   .   "   )  \r                
0046740                                    l   o   o   p  \r            
0046760                      376 001  \0   g 003                   ]  \r
0047000                                        W   s   (   "   R   e   c
0047020    e   i   v   e   r       t   i   m   e   d       o   u   t   .
0047040    .   .   .   "   )  \r                                       e
0047060    n   d   c   a   s   e  \r                                    
0047100    ]  \r                           c   a   s   e       E   F   T
0047120    P   A   b   o   r   t   S   e   n   t   :  \r                
0047140                        [  \r                                    
0047160    W   s   (   "   A   b   o   r   t       h   a   d       t   o
0047200        b   e       s   e   n   t       f   r   o   m       r   e
0047220    c   e   i   v   e   r   .   .   .   .   "   )  \r            
0047240                            e   n   d   c   a   s   e  \r        
0047260                                ]  \r                           c
0047300    a   s   e       E   F   T   P   A   b   o   r   t   R   e   c
0047320    e   i   v   e   d   :  \r                                    
0047340    [  \r                                       W   s   (   "   E
0047360    F   T   P   A   b   o   r   t       r 376 001  \0 314   S   e
0047400    c   e   i   v   e   d       w   h   i   l   e       r   e   c
0047420    e   i   v   i   n   g   .   .   .   .   "   )  \r            
0047440                            l   e   t       t   e   m   p   p   b
0047460    i       =       G   e   t   E   F   T   P   A   b   o   r   t
0047500    (   E   F   T   P   S   o   c   k   e   t   )  \r            
0047520                            P   r   i   n   t   A   b   o   r   t
0047540    P   B   I   (   t   e   m   p   p   b   i   )  \r            
0047560                            e   n   d   c   a   s   e  \r        
0047600                                ]  \r                           c
0047620    a   s   e       E   F   T   P   R   e   s   e   t   R   e   c
0047640    e   i   v   e   d   :  \r                                    
0047660    [  \r                                       W   s   (   "   A
0047700    s   k   e   d       t   o       r   e   s   e   t   .   .   .
0047720    .   [   N   o   t       i   m   p   l   e   m   e   n   t   e
0047740    d       h   e   r   e   ]   "   )  \r                        
0047760                e   n   d   c   a   s   e  \r                 376
0050000  001  \0   _   V                       ]  \r                    
0050020        ]   R   e   c   e   i   v   e   C   a   s   e   B   l   o
0050040    c   k  \r               C   l   o   s   e   E   F   T   P   S
0050060    o   c   (   E   F   T   P   S   o   c   k   e   t   )  \r    
0050100            r   e   s   u   l   t   i   s       f   a   l   s   e
0050120   \r               ]   R   e   c   e   i   v   e   l   o   o   p
0050140        r   e   p   e   a   t  \r  \r   /   /   E   n   d       h
0050160    a   s       b   e   e   n       r   e   c   e   i   v   e   d
0050200    ,       t   i   m   e       t   o       c   l   e   a   n    
0050220    u   p       a   n   d       l   e   a   v   e  \r   C   l   o
0050240    s   e   E   F   T   P   S   o   c   (   E   F   T   P   S   o
0050260    c   k   e   t   )  \r   W   n   s   (   d   s   p   ,       t
0050300    o   t   a   l   b   y   t   e   c   o   u   n   t   ,       0
0050320    ,       1   0   )   ;       W   s   (   "       b   y   t   e
0050340    s       r   e   c   e   i   v   e   d   .       "   )  \r   r
0050360    e   s   u   l   t   i   s       t   r   u   e  \r   ]  \r  \r
0050400    /   /   -   - 376 001  \0   Y   e   -   -   -   -   -   -   -
0050420    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0050500    -   -   -   -   -   -  \r   a   n   d       P   r   i   n   t
0050520    A   b   o   r   t   P   B   I   (   p   b   i   )       b   e
0050540   \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -   -
0050560    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0050640    -   -  \r   [  \r   P   u   t   s   (   d   s   p   ,       $
0050660    *   N   )   ;       W   o   (   p   b   i   >   >   P   B   I
0050700    .   p   u   p   .   w   o   r   d   s   ^   1   )   ;       W
0050720    s   (   "       -       A   b   o   r   t   :       "   )  \r
0050740    f   o   r       i       =       3       t   o       (   3    
0050760    +       (   p   b   i   >   >   P   B   I   .   p   u   p   .
0051000    l   e   n   g   t   h   -   (   p 376  \0   ;   1 304   u   p
0051020    O   v   B   y   t   e   s   +   2   )   )       -       1   )
0051040        d   o  \r               P   u   t   s   (   d   s   p   ,
0051060        p   b   i   >   >   P   B   I   .   p   u   p   .   b   y
0051100    t   e   s   ^   i   )  \r   ]  \r 377  \0  \0   P   u   p   E
0051120    F   T   P   S   e   n   d   .   b   c   p   l  \0 373 223 361
0051140  363 350  \0  \0 376 001  \0   4   Q   /   /       P   u   p   E
0051160    F   T   P   S   e   n   d   .   b   c   p   l       -   -    
0051200    b   y       J   .       S   h   o   c   h  \r   /   /       C
0051220    o   p   y   r   i   g   h   t       X   e   r   o   x       C
0051240    o   r   p   o   r   a   t   i   o   n       1   9   7   9  \r
0051260   \r   /   /       L   a   s   t       m   o   d   i   f   i   e
0051300    d       J   u   n   e       3   ,       1   9   7   9        
0051320    1   2   :   4   5       P   M       b   y       T   a   f   t
0051340   \r  \r   g   e   t       "   P   u   p   E   F   T   P   .   d
0051360    e   c   l   "  \r  \r   e   x   t   e   r   n   a   l  \r   [
0051400   \r   /   /       o   u   t   g   o   i   n   g       p   r   o
0051420    c   e   d   u   r   e   s  \r   S   e   n   d   E   F   T   P
0051440    B   l   o   c   k   ;       S   e   n   d   E   F   T   P   E
0051460    n   d  \r  \r   /   /       i   n   c   o   m   i   n   g    
0051500    p   r   o   c   e   d   u   r   e   s  \r   S   e   n   d   E
0051520    F   T   P   A   b   o   r   t  \r   G   e   t   P   B   I   ;
0051540        R   e   l   e   a   s   e   P 376 001  \0   1 026   B   I
0051560    ;       C   o   m   p   l   e   t   e   P   u   p  \r   S   e
0051600    t   T   i   m   e   r   ;       T   i   m   e   r   H   a   s
0051620    E   x   p   i   r   e   d   ;       B   l   o   c   k  \r   D
0051640    e   q   u   e   u   e   ;       M   u   l   t   E   q   ;    
0051660    M   a   x   ;       M   i   n   ;       M   o   v   e   B   l
0051700    o   c   k  \r   ]  \r  \r  \r   /   /   -   -   -   -   -   -
0051720    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0052020    -   -   -   -   -   -  \r   l   e   t       S   e   n   d   E
0052040    F   T   P   B   l   o   c   k   (   s   o   c   ,       a   d
0052060    d   r   ,       b   y   t   e   C   n   t   ,       t   i   m
0052100    e   o   u   t   )       =       v   a   l   o   f  \r   /   /
0052120    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0052140    -   -   -   -   -   -   -   -   -   -   -   -   -   - 376 001
0052160   \0   0 207   -   -   -   -   -   -   -   -   -   -   -   -   -
0052200    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0052240    -  \r   [  \r   l   e   t       r   e   s   u   l   t       =
0052260        S   e   n   d   E   F   T   P   P   a   c   k   e   t   (
0052300    s   o   c   ,       a   d   d   r   ,       b   y   t   e   C
0052320    n   t   ,       t   i   m   e   o   u   t   ,       t   y   p
0052340    e   E   F   T   P   D   a   t   a   )  \r   i   f       r   e
0052360    s   u   l   t       g   e       0       t   h   e   n       s
0052400    o   c   >   >   E   F   T   P   S   o   c   .   S   e   q   N
0052420    u   m       =       s   o   c   >   >   E   F   T   P   S   o
0052440    c   .   S   e   q   N   u   m       +   1  \r   r   e   s   u
0052460    l   t   i   s       r   e   s   u   l   t  \r   ]  \r  \r  \r
0052500    /   /   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0052520    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0052560    -   -   - 376 001  \0   J 321   -   -   -   -   -   -   -   -
0052600    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0052620    -   -   -  \r   a   n   d       S   e   n   d   E   F   T   P
0052640    E   n   d   (   s   o   c   ,       t   i   m   e   o   u   t
0052660    )       =       v   a   l   o   f  \r   /   /   -   -   -   -
0052700    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0053000    -   -   -   -   -   -   -   -  \r   /   /   T   h   e       e
0053020    n   d       s   e   q   u   e   n   c   e       r   e   q   u
0053040    i   r   e   s       a       c   o   m   p   l   e   t   e    
0053060    a   c   k       f   o   r       t   h   e       f   i   r   s
0053100    t  \r   /   /       o   u   t   g   o   i   n   g       e   n
0053120    d   ,       a   n   d       t   h   e   n       a   n       e
0053140    x   t   r   a       e   n   d       i   s       s   e   n   t
0053160    ,       a   s       p   a   r 376 001  \0 307   X   t       o
0053200    f       t   h   e  \r   /   /       t   h   r   e   e       w
0053220    a   y       h   a   n   d   s   h   a   k   e   .  \r   [  \r
0053240    i   f       S   e   n   d   E   F   T   P   P   a   c   k   e
0053260    t   (   s   o   c   ,       0   ,       0   ,       t   i   m
0053300    e   o   u   t   ,       t   y   p   e   E   F   T   P   E   n
0053320    d   )       l   s       0       r   e   s   u   l   t   i   s
0053340        f   a   l   s   e  \r  \r   /   /   f   i   r   s   t    
0053360    e   n   d       s   e   n   t       a   n   d       a   c   k
0053400    e   d       o   k   .       S   e   n   d       s   e   c   o
0053420    n   d       E   n   d       b   u   t       d   o   n   '   t
0053440        w   a   i   t       f   o   r       a   c   k  \r   s   o
0053460    c   >   >   E   F   T   P   S   o   c   .   S   e   q   N   u
0053500    m       =       s   o   c   >   >   E   F   T   P   S   o   c
0053520    .   S   e   q   N   u   m       +   1  \r   S   e   n   d   E
0053540    F   T   P   P   a   c   k   e   t   (   s   o   c   ,       0
0053560    ,       0   ,       0   ,       t   y   p   e   E 376 001  \0
0053600  032 273   F   T   P   E   n   d   )  \r   r   e   s   u   l   t
0053620    i   s       t   r   u   e  \r   ]  \r  \f  \r   /   /   -   -
0053640    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0053740    -   -   -   -   -   -   -   -   -   -  \r   a   n   d       S
0053760    e   n   d   E   F   T   P   P   a   c   k   e   t   (   s   o
0054000    c   ,       a   d   d   r   ,       d   a   t   a   B   y   t
0054020    e   s   ,       t   i   m   e   o   u   t   ,       t   y   p
0054040    e   )       =       v   a   l   o   f  \r   /   /   -   -   -
0054060    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0054160    -   -   -   -   -   -   -   -   -  \r   /   /       T   h   i
0054200    s     376 001  \0 372 277   i   s       a       g   e   n   e
0054220    r   a   l       r   o   u   t   i   n   e   ,       u   s   a
0054240    b   l   e       f   o   r       d   a   t   a       o   r    
0054260    e   n   d       p   a   c   k   e   t   s  \r   /   /       W
0054300    i   l   l       h   a   n   d   l   e       r   e   t   r   a
0054320    n   s   m   i   s   s   i   o   n   s       h   e   r   e   .
0054340        P   a   s   s   e   s       i   n       a       l   o   n
0054360    g       t   i   m   e   o   u   t  \r   /   /       R   e   t
0054400    u   r   n   s       t   h   e       n   u   m   b   e   r    
0054420    o   f       d   a   t   a       b   y   t   e   s       s   e
0054440    n   t       (   >   =   0   )       i   f       O   K   ;  \r
0054460    /   /       R   e   t   u   r   n   s       a   n       e   r
0054500    r   o   r       c   o   d   e       (   <       0   )       i
0054520    f       t   h   e   r   e       w   a   s       a   n       e
0054540    r   r   o   r  \r   [  \r   S   e   t   T   i   m   e   r   (
0054560    l   v       s   o   c   >   >   E   F   T   P   S   o   c   .
0054600    s   t   a   r   t   T   i 376 001  \0 267 342   m   e   ,    
0054620    0   )           /   /   r   e   m   e   m   b   e   r       s
0054640    t   a   r   t       t   i   m   e  \r   l   e   t       l   o
0054660    n   g   T   i   m   e   r       =       n   i   l   ;       S
0054700    e   t   T   i   m   e   r   (   l   v       l   o   n   g   T
0054720    i   m   e   r   ,       t   i   m   e   o   u   t   )  \r  \r
0054740                [       /   /       r   e   p   e   a   t  \r    
0054760            /   /       c   o   n   s   t   r   u   c   t       t
0055000    h   e       o   u   t   g   o   i   n   g       p   a   c   k
0055020    e   t  \r               l   e   t       p   b   i       =    
0055040    G   e   t   P   B   I   (   s   o   c   )  \r               p
0055060    b   i   >   >   P   B   I   .   p   u   p   .   i   d   ^   2
0055100        =       s   o   c   >   >   E   F   T   P   S   o   c   .
0055120    S   e   q   N   u   m  \r               M   o   v   e   B   l
0055140    o   c   k   (   l   v       p   b   i   >   >   P   B   I   .
0055160    p   u   p   .   w   o   r   d   s   ^   1   ,       a   d   d
0055200    r   ,       (   d   a   t   a   B   y   t   e 376 001  \0 221
0055220  314   s   +   1   )       r   s   h   i   f   t       1   )  \r
0055240                C   o   m   p   l   e   t   e   P   u   p   (   p
0055260    b   i   ,       t   y   p   e   ,       d   a   t   a   B   y
0055300    t   e   s   +   p   u   p   O   v   B   y   t   e   s   )  \r
0055320                l   e   t       s   h   o   r   t   T   i   m   e
0055340    r       =       n   i   l  \r               S   e   t   T   i
0055360    m   e   r   (   l   v       s   h   o   r   t   T   i   m   e
0055400    r   ,       s   o   c   >   >   E   F   T   P   S   o   c   .
0055420    c   u   r   r   e   n   t   T   i   m   e   o   u   t   )  \r
0055440   \r                           [       /   /       r   e   p   e
0055460    a   t  \r                           B   l   o   c   k   (   )
0055500   \r                           i   f       t   i   m   e   o   u
0055520    t       n   e       -   1       &       T   i   m   e   r   H
0055540    a   s   E   x   p   i   r   e   d   (   l   v       l   o   n
0055560    g   T   i   m   e   r   )       t   h   e   n  \r            
0055600                            r   e   s   u   l   t   i   s       E
0055620    F 376 001  \0 277 177   T   P   T   i   m   e   o   u   t    
0055640            /   /   h   e       i   s       n   o   t       a   n
0055660    s   w   e   r   i   n   g       n   o   w  \r                
0055700            i   f       T   i   m   e   r   H   a   s   E   x   p
0055720    i   r   e   d   (   l   v       s   h   o   r   t   T   i   m
0055740    e   r   )       t   h   e   n  \r                            
0055760            [  \r                                       /   /   e
0056000    x   p   o   n   e   n   t   i   a   l   l   y       a   g   e
0056020        r   e   t   r   a   n   s   m   i   s   s   i   o   n    
0056040    i   n   t   e   r   v   a   l  \r                            
0056060            A   g   e   T   i   m   e   o   u   t   (   s   o   c
0056100    )   ;       b   r   e   a   k                   /   /   r   e
0056120    -   t   r   a   n   s   m   i   t  \r                        
0056140                ]  \r                           p   b   i       =
0056160        D   e   q   u   e   u   e   (   l   v       s   o   c   >
0056200    >   E   F   T   P   S   o   c   .   i   Q   )   ;       i   f
0056220        p   b   i       e 376 001  \0   0 224   q       0       l
0056240    o   o   p  \r  \r                           /   /   C   h   e
0056260    c   k       t   h   e       s   o   u   r   c   e       o   f
0056300        t   h   i   s       p   a   c   k   e   t  \r            
0056320                u   n   l   e   s   s       M   u   l   t   E   q
0056340    (   l   v       s   o   c   >   >   E   F   T   P   S   o   c
0056360    .   f   r   n   P   o   r   t   .   s   o   c   k   e   t   ,
0056400   \r                               l   v       p   b   i   >   >
0056420    P   B   I   .   p   u   p   .   s   P   o   r   t   .   s   o
0056440    c   k   e   t   )       d   o  \r                            
0056460            [       R   e   l   e   a   s   e   P   B   I   (   p
0056500    b   i   )   ;       l   o   o   p       ]  \r  \r            
0056520                /   /   G   o   t       a       p   a   c   k   e
0056540    t       r   e   a   l   l   y       f   o   r       u   s    
0056560    f   r   o   m       o   u   r       p   a   r   t   n   e   r
0056600   \r                           A   g   e   T   i   m   e   o   u
0056620    t   (   s   o   c   )  \r                 376 001  \0  \n  \0
0056640            s   w   i   t   c   h   o   n       p   b   i   >   >
0056660    P   B   I   .   p   u   p   .   t   y   p   e       i   n   t
0056700    o  \r                                       [  \r            
0056720                            c   a   s   e       t   y   p   e   E
0056740    F   T   P   A   c   k   :  \r                                
0056760                    [  \r                                        
0057000            i   f       p   b   i   >   >   P   B   I   .   p   u
0057020    p   .   i   d   ^   2       e   q       s   o   c   >   >   E
0057040    F   T   P   S   o   c   .   S   e   q   N   u   m       t   h
0057060    e   n  \r                                                    
0057100            [       R   e   l   e   a   s   e   P   B   I   (   p
0057120    b   i   )   ;       r   e   s   u   l   t   i   s       d   a
0057140    t   a   B   y   t   e   s       ]  \r                        
0057160                            i   f       p   b   i   >   >   P   B
0057200    I   .   p   u   p   .   i   d   ^   2       g   r       s   o
0057220    c   >   >   E   F   T   P   S   o   c   .   S   e   q   N   u
0057240  376 001  \0   * 343   m       t   h   e   n  \r                
0057260                                                [  \r            
0057300                                                    S   e   n   d
0057320    E   F   T   P   A   b   o   r   t   (   s   o   c   ,       O
0057340    u   t   O   f   S   y   n   c   h   A   b   o   r   t   ,  \r
0057360                                                                 
0057400    "   Y   o   u   r       r   e   c   e   i   v   e   r       h
0057420    a   s       g   o   t   t   e   n       o   u   t       o   f
0057440        s   y   n   c   h   .   "   ,       p   b   i   )  \r    
0057460                                                            R   e
0057500    l   e   a   s   e   P   B   I   (   p   b   i   )  \r        
0057520                                                        r   e   s
0057540    u   l   t   i   s       E   F   T   P   A   b   o   r   t   S
0057560    e   n   t  \r                                                
0057600                ]  \r                                            
0057620        R   e   l   e   a   s   e   P   B   I   (   p   b   i   )
0057640   \r                 376 001  \0 362 233                        
0057660            e   n   d   c   a   s   e  \r                        
0057700                            ]  \r                                
0057720        c   a   s   e       t   y   p   e   E   F   T   P   A   b
0057740    o   r   t   :  \r                                            
0057760        [  \r                                                   i
0060000    f       s   o   c   >   >   E   F   T   P   S   o   c   .   A
0060020    b   o   r   t   P   B   I       n   e       0       t   h   e
0060040    n  \r                                                        
0060060        R   e   l   e   a   s   e   P   B   I   (   s   o   c   >
0060100    >   E   F   T   P   S   o   c   .   A   b   o   r   t   P   B
0060120    I   )  \r                                                   s
0060140    o   c   >   >   E   F   T   P   S   o   c   .   A   b   o   r
0060160    t   P   B   I       =       p   b   i  \r                    
0060200                                r   e   s   u   l   t   i   s    
0060220    E   F   T   P   A   b   o   r   t   R   e   c   e   i   v   e
0060240    d       /   /       b   a   i   l     376 001  \0 035   &   o
0060260    u   t  \r                                                   ]
0060300   \r                                       d   e   f   a   u   l
0060320    t   :       R   e   l   e   a   s   e   P   B   I   (   p   b
0060340    i   )  \r                                       ]            
0060360   \r                           ]       r   e   p   e   a   t  \r
0060400                ]       r   e   p   e   a   t  \r   ]  \r  \f  \r
0060420    /   /   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0060440    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0060520    -   -   -   -   -   -   -   -   -   -   -   -   -   -  \r   a
0060540    n   d       A   g   e   T   i   m   e   o   u   t   (   s   o
0060560    c   )       b   e  \r   /   /   -   -   -   -   -   -   -   -
0060600    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0060640    -   -   -   -   -   -   -   -   -   -   -   -   -   -   - 376
0060660  001  \0   o 226   -   -   -   -   -   -   -   -   -   -   -   -
0060700    -   -   -   -   -   -   -   -   -  \r   /   /   u   p   d   a
0060720    t   e       t   h   e       a   d   a   p   t   i   v   e    
0060740    t   i   m   e   o   u   t  \r   /   /       =       2       t
0060760    i   m   e   s       t   h   e       a   v   e   r   a   g   e
0061000        r   e   s   p   o   n   s   e       t   i   m   e   ,    
0061020    e   x   p   o   n   e   n   t   i   a   l   l   y       a   g
0061040    e   d       o   v   e   r  \r   /   /       t   h   e       l
0061060    a   s   t       8       s   a   m   p   l   e   s   .  \r   [
0061100   \r   l   e   t       t       =       n   i   l   ;       S   e
0061120    t   T   i   m   e   r   (   l   v       t   ,       0   )  \r
0061140    c   o   m   p   i   l   e   t   e   s   t       a   l   t   o
0061160   \r               i   f   s   o       [       t       =       (
0061200    t   -   s   o   c   >   >   E   F   T   P   S   o   c   .   s
0061220    t   a   r   t   T   i   m   e   )       l   s   h   i   f   t
0061240        3       +   4       ]  \r               i   f   n   o   t
0061260        [       t 376  \0 234 220   `       =       (   t   -   s
0061300    o   c   >   >   E   F   T   P   S   o   c   .   s   t   a   r
0061320    t   T   i   m   e   )       l   s   h   i   f   t       1    
0061340    +   1       ]  \r   s   o   c   >   >   E   F   T   P   S   o
0061360    c   .   c   u   r   r   e   n   t   T   i   m   e   o   u   t
0061400        =       (   7   *   s   o   c   >   >   E   F   T   P   S
0061420    o   c   .   c   u   r   r   e   n   t   T   i   m   e   o   u
0061440    t       +  \r       M   a   x   (   m   i   n   T   i   m   e
0061460    o   u   t   ,       M   i   n   (   m   a   x   T   i   m   e
0061500    o   u   t   ,       t   )   )   )       r   s   h   i   f   t
0061520        3  \r   ]  \r 377  \0  \0   P   u   p   E   F   T   P   R
0061540    e   c   e   i   v   e   .   b   c   p   l  \0 373 226  \0 376
0061560    ~  \0  \0 376 001  \0 303   X   /   /       P   u   p   E   F
0061600    T   P   R   e   c   e   i   v   e   .   b   c   p   l       -
0061620    -       b   y       J   .       S   h   o   c   h  \r   /   /
0061640        C   o   p   y   r   i   g   h   t       X   e   r   o   x
0061660        C   o   r   p   o   r   a   t   i   o   n       1   9   7
0061700    9   ,       1   9   8   0  \r  \r   /   /       L   a   s   t
0061720        m   o   d   i   f   i   e   d       S   e   p   t   e   m
0061740    b   e   r       3   0   ,       1   9   8   0           1   :
0061760    4   5       P   M   ,       b   y       S   w   i   n   e   h
0062000    a   r   t  \r  \r   g   e   t       "   P   u   p   E   F   T
0062020    P   .   d   e   c   l   "  \r  \r   e   x   t   e   r   n   a
0062040    l  \r   [  \r   /   /       o   u   t   g   o   i   n   g    
0062060    p   r   o   c   e   d   u   r   e   s  \r   R   e   c   e   i
0062100    v   e   E   F   T   P   B   l   o   c   k   ;       R   e   c
0062120    e   i   v   e   E   F   T   P   P   a   c   k   e   t  \r  \r
0062140    /   /       i   n   c   o   m   i   n   g       p   r   o   c
0062160    e   d   u   r   e   s  \r   S 376 001  \0 322 024   e   n   d
0062200    E   F   T   P   A   b   o   r   t  \r   G   e   t   P   B   I
0062220    ;       R   e   l   e   a   s   e   P   B   I   ;       C   o
0062240    m   p   l   e   t   e   P   u   p  \r   S   e   t   T   i   m
0062260    e   r   ;       T   i   m   e   r   H   a   s   E   x   p   i
0062300    r   e   d   ;       B   l   o   c   k   ;       D   e   q   u
0062320    e   u   e   ;       M   u   l   t   E   q  \r   M   o   v   e
0062340    B   l   o   c   k  \r   ]  \r  \r  \r   /   /   -   -   -   -
0062360    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0062460    -   -   -   -   -   -   -   -  \r   l   e   t       R   e   c
0062500    e   i   v   e   E   F   T   P   B   l   o   c   k   (   s   o
0062520    c   ,       a   d   d   r   ,       t   i   m   e   o   u   t
0062540    )       =       v   a   l   o   f  \r   /   /   -   -   -   -
0062560    -   -   -   -   -   -   -   -   -   -   -   -   - 376 001  \0
0062600    ) 365   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0062620    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0062660    -   -   -   -   -   -   -   -   -   -   -   -   -  \r   /   /
0062700        R   e   t   u   r   n   s       a       b   y   t   e    
0062720    c   o   u   n   t       (   >   =   0   )       o   r       a
0062740    n       e   r   r   o   r       c   o   d   e       (   <   0
0062760    )  \r   [  \r   l   e   t       i   n   P   b   i       =    
0063000    0  \r   l   e   t       r   e   c   e   i   v   e   R   e   s
0063020    u   l   t       =       R   e   c   e   i   v   e   E   F   T
0063040    P   P   a   c   k   e   t   (   s   o   c   ,       t   i   m
0063060    e   o   u   t   ,       l   v       i   n   P   b   i   )  \r
0063100    i   f       r   e   c   e   i   v   e   R   e   s   u   l   t
0063120        g   e       0       t   h   e   n       /   /       s   u
0063140    c   c   e   e   d   e   d  \r               [  \r            
0063160    M   o   v   e   B   l   o   c   k   (   a   d   d   r   ,    
0063200    l   v 376 001  \0 366   8       i   n   P   b   i   >   >   P
0063220    B   I   .   p   u   p   .   w   o   r   d   s   ^   1   ,    
0063240    (   r   e   c   e   i   v   e   R   e   s   u   l   t   +   1
0063260    )       r   s   h   i   f   t       1   )  \r               i
0063300    f       i   n   P   b   i       t   h   e   n           /   /
0063320        i   g   n   o   r   e       z   e   r   o   -   l   e   n
0063340    g   t   h       p   a   c   k   e   t   s  \r                
0063360            [       R   e   l   e   a   s   e   P   B   I   (   i
0063400    n   P   b   i   )   ;       i   f       r   e   c   e   i   v
0063420    e   R   e   s   u   l   t       e   q       0       l   o   o
0063440    p       ]  \r               r   e   s   u   l   t   i   s    
0063460    r   e   c   e   i   v   e   R   e   s   u   l   t       /   /
0063500        c   o   u   n   t       o   f       d   a   t   a   B   y
0063520    t   e   s  \r               ]  \r   u   n   l   e   s   s    
0063540    r   e   c   e   i   v   e   R   e   s   u   l   t       e   q
0063560        E   F   T   P   N   o   t   F   i   r   s   t   S   y   n
0063600    c   h       r   e   s   u 376 001  \0 215 306   l   t   i   s
0063620        r   e   c   e   i   v   e   R   e   s   u   l   t  \r   ]
0063640        r   e   p   e   a   t  \r  \f  \r   /   /   -   -   -   -
0063660    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0063760    -   -   -   -   -   -   -   -  \r   a   n   d       R   e   c
0064000    e   i   v   e   E   F   T   P   P   a   c   k   e   t   (   s
0064020    o   c   ,       t   i   m   e   o   u   t   ,       l   v   P
0064040    b   i   )       =       v   a   l   o   f  \r   /   /   -   -
0064060    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0064160    -   -   -   -   -   -   -   -   -   -  \r   /   /       R   e
0064200    t   u   r   n   s       a       b   y   t   e 376 001  \0   o
0064220    7       c   o   u   n   t       (   >   =   0   )       o   r
0064240        a   n       e   r   r   o   r       c   o   d   e       (
0064260    <   0   )  \r   /   /       I   f       a       b   y   t   e
0064300        c   o   u   n   t   ,       @   l   v   P   b   i       c
0064320    o   n   t   a   i   n   s       t   h   e       p   b   i    
0064340    w   i   t   h       t   h   e       d   a   t   a  \r   /   /
0064360        N   o   t   e       t   h   a   t       w   h   e   n    
0064400    w   e       s   t   a   r   t   ,       w   e       m   a   y
0064420        n   o   t       y   e   t       k   n   o   w       t   h
0064440    e       s   o   c   k   e   t  \r   /   /           n   u   m
0064460    b   e   r       o   f       t   h   e       f   o   r   e   i
0064500    g   n       s   o   c   k   e   t   .   .   .   .   .  \r   [
0064520   \r   l   e   t       s   y   n   c   M   s   g       =       "
0064540    Y   o   u   r       s   e   n   d   e   r       i   s       o
0064560    u   t       o   f       s   y   n   c   .   "  \r   l   e   t
0064600        b   u   s   y   M   s   g       =       "   R   e   c   e
0064620    i 376 001  \0 342 340   v   e   r       b   u   s   y   ,    
0064640    p   l   e   a   s   e       t   r   y       a   g   a   i   n
0064660        l   a   t   e   r   .   "  \r   l   e   t       l   o   n
0064700    g   T   i   m   e   r       =       n   i   l   ;       S   e
0064720    t   T   i   m   e   r   (   l   v       l   o   n   g   T   i
0064740    m   e   r   ,       t   i   m   e   o   u   t   )  \r        
0064760        [       /   /       r   e   p   e   a   t  \r            
0065000    /   /       w   a   i   t       f   o   r       a   n       i
0065020    n   c   o   m   i   n   g       p   a   c   k   e   t  \r    
0065040            B   l   o   c   k   (   )  \r               i   f    
0065060    t   i   m   e   o   u   t       n   e       -   1       &    
0065100    T   i   m   e   r   H   a   s   E   x   p   i   r   e   d   (
0065120    l   v       l   o   n   g   T   i   m   e   r   )       r   e
0065140    s   u   l   t   i   s       E   F   T   P   T   i   m   e   o
0065160    u   t  \r               l   e   t       i   n   P   b   i    
0065200    =       D   e   q   u   e   u   e   (   l   v       s   o   c
0065220    >   >   E   F   T   P 376 001  \0   n 376   S   o   c   .   i
0065240    Q   )  \r               i   f       i   n   P   b   i       e
0065260    q       0       l   o   o   p  \r               l   e   t    
0065300    f   i   r   s   t   P   a   c   k   e   t       =       i   n
0065320    P   b   i   >   >   P   B   I   .   p   u   p   .   i   d   ^
0065340    2       e   q       0  \r               l   e   t       d   a
0065360    t   a   P   u   p   =       i   n   P   b   i   >   >   P   B
0065400    I   .   p   u   p   .   t   y   p   e       e   q       t   y
0065420    p   e   E   F   T   P   D   a   t   a  \r  \r               /
0065440    /       S   e   e       i   f       w   e       a   r   e    
0065460    a   l   r   e   a   d   y       c   o   m   m   i   t   t   e
0065500    d       t   o       a       f   i   l   e       t   r   a   n
0065520    s   f   e   r  \r               i   f       s   o   c   >   >
0065540    E   F   T   P   S   o   c   .   T   r   a   n   s   f   e   r
0065560    N   o   t   S   t   a   r   t   e   d       t   h   e   n  \r
0065600                            [  \r                           /   /
0065620        N   o       e   s   t   a   b   l   i 376 001  \0   w   2
0065640    s   h   e   d       f   i   l   e       t   r   a   n   s   f
0065660    e   r       i   s       i   n       p   r   o   g   r   e   s
0065700    s   .  \r                           /   /       T   o       s
0065720    t   a   r   t       a       f   i   l   e       t   r   a   n
0065740    s   f   e   r   ,       (   1   )       h   i   s       m   u
0065760    s   t       b   e       a       v   a   l   i   d       p   a
0066000    c   k   e   t       0   ,  \r                           /   /
0066020            a   n   d       e   i   t   h   e   r       (   2   )
0066040        i   t   s       s   o   u   r   c   e       m   u   s   t
0066060        m   a   t   c   h       o   u   r       s   o   c   k   e
0066100    t   '   s       f   o   r   e   i   g   n       p   o   r   t
0066120   \r                           /   /           o   r       (   3
0066140    )       w   e       m   u   s   t       b   e       p   r   o
0066160    m   i   s   c   u   o   u   s   .  \r                        
0066200    i   f       d   a   t   a   P   u   p       &       f   i   r
0066220    s   t   P   a   c   k   e   t       &  \r                    
0066240  376 001  \0 244 244           (   s   o   c   >   >   E   F   T
0066260    P   S   o   c   .   f   r   n   P   o   r   t   .   h   o   s
0066300    t       e   q       0       %       /   /       (   2   )  \r
0066320                                (   s   o   c   >   >   E   F   T
0066340    P   S   o   c   .   f   r   n   P   o   r   t   .   h   o   s
0066360    t       e   q       i   n   P   b   i   >   >   P   B   I   .
0066400    p   u   p   .   s   P   o   r   t   .   h   o   s   t       &
0066420        /   /       (   3   )  \r                               s
0066440    o   c   >   >   E   F   T   P   S   o   c   .   f   r   n   P
0066460    o   r   t   .   n   e   t       e   q       i   n   P   b   i
0066500    >   >   P   B   I   .   p   u   p   .   s   P   o   r   t   .
0066520    n   e   t   )   )       t   h   e   n       /   /       (   3
0066540    )  \r                                       [       /   /    
0066560    e   s   t   a   b   l   i   s   h       a       "   c   o   n
0066600    n   e   c   t   i   o   n   "  \r                            
0066620            s   o   c   >   >   E   F   T   P   S   o   c   .   T
0066640    r   a   n   s   f 376 001  \0 260 214   e   r   N   o   t   S
0066660    t   a   r   t   e   d       =       f   a   l   s   e  \r    
0066700                                    s   o   c   >   >   E   F   T
0066720    P   S   o   c   .   S   e   q   N   u   m       =       0  \r
0066740                                        M   o   v   e   B   l   o
0066760    c   k   (   l   v       s   o   c   >   >   E   F   T   P   S
0067000    o   c   .   f   r   n   P   o   r   t   ,       l   v       i
0067020    n   P   b   i   >   >   P   B   I   .   p   u   p   .   s   P
0067040    o   r   t   ,       l   e   n   P   o   r   t   )  \r        
0067060                                ]  \r                           ]
0067100   \r  \r               /   /       D   o       s   o   u   r   c
0067120    e       f   i   l   t   e   r   i   n   g  \r               u
0067140    n   l   e   s   s       M   u   l   t   E   q   (   l   v    
0067160    s   o   c   >   >   E   F   T   P   S   o   c   .   f   r   n
0067200    P   o   r   t   ,       l   v       i   n   P   b   i   >   >
0067220    P   B   I   .   p   u   p   .   s   P   o   r   t   ,       l
0067240    e   n   P   o   r   t   )       d   o 376 001  \0   ! 354  \r
0067260                    [       /   /       D   i   d       n   o   t
0067300        p   a   s   s       s   o   u   r   c   e       f   i   l
0067320    t   e   r   ,       g   e   n   e   r   a   t   e       A   b
0067340    o   r   t  \r                   i   f       d   a   t   a   P
0067360    u   p       t   h   e   n  \r                           [  \r
0067400                            t   e   s   t       f   i   r   s   t
0067420    P   a   c   k   e   t  \r                                    
0067440    i   f   s   o  \r                                            
0067460        [  \r                                                   /
0067500    /       A   t   t   e   m   p   t   e   d       f   i   r   s
0067520    t       p   a   c   k   e   t       o   f       t   r   a   n
0067540    s   f   e   r   .  \r                                        
0067560            /   /       E   i   t   h   e   r       w   e       a
0067600    r   e       b   u   s   y       o   r       w   e       a   r
0067620    e       l   i   s   t   e   n   i   n   g       a   n   d    
0067640    n   o   t       p   r   o   m   i   s   c   u   o   u   s 376
0067660  001  \0   O   :   .  \r                                        
0067700            S   e   n   d   E   F   T   P   A   b   o   r   t   (
0067720    s   o   c   ,       R   e   c   e   i   v   e   r   B   u   s
0067740    y   A   b   o   r   t   ,       b   u   s   y   M   s   g   ,
0067760        i   n   P   b   i   )  \r                                
0070000                    s   o   c   >   >   E   F   T   P   S   o   c
0070020    .   S   o   m   e   o   n   e   E   l   s   e   W   a   i   t
0070040    i   n   g       =       t   r   u   e  \r                    
0070060                                ]  \r                            
0070100            i   f   n   o   t  \r                                
0070120                    [  \r                                        
0070140            /   /       N   o   t       l   e   g   a   l       f
0070160    i   r   s   t       p   a   c   k   e   t       o   f       t
0070200    r   a   n   s   f   e   r   .  \r                            
0070220                        S   e   n   d   E   F   T   P   A   b   o
0070240    r   t   (   s   o   c   ,       O   u   t   O   f   S   y   n
0070260    c   h   A   b 376 001  \0 302 210   o   r   t   ,       s   y
0070300    n   c   M   s   g   ,       i   n   P   b   i   )  \r        
0070320                                            ]  \r                
0070340            ]  \r                   R   e   l   e   a   s   e   P
0070360    B   I   (   i   n   P   b   i   )  \r                   i   f
0070400        s   o   c   >   >   E   F   T   P   S   o   c   .   T   r
0070420    a   n   s   f   e   r   N   o   t   S   t   a   r   t   e   d
0070440        r   e   s   u   l   t   i   s       E   F   T   P   N   o
0070460    t   F   i   r   s   t   S   y   n   c   h  \r                
0070500    l   o   o   p               /   /   w   a   i   t       f   o
0070520    r       n   e   x   t       i   n   p   u   t  \r            
0070540        ]  \r  \r   /   /       R   e   c   e   i   v   e   E   F
0070560    T   P   P   a   c   k   e   t       (   c   o   n   t   '   d
0070600    )  \r  \r               /   /       P   a   c   k   e   t    
0070620    h   a   s       p   a   s   s   e   d       a   l   l       f
0070640    i   l   t   e   r   s   .           N   o   w       p   r   o
0070660    c   e   s   s       i   t   .  \r 376 001  \0   D 207        
0070700        s   w   i   t   c   h   o   n       i   n   P   b   i   >
0070720    >   P   B   I   .   p   u   p   .   t   y   p   e       i   n
0070740    t   o  \r                           [  \r                    
0070760        c   a   s   e       t   y   p   e   E   F   T   P   D   a
0071000    t   a   :  \r                                       [  \r    
0071020                                    l   e   t       s   e   q   =
0071040    C   h   e   c   k   S   e   q   u   e   n   c   e   (   s   o
0071060    c   ,       i   n   P   b   i   )  \r                        
0071100                s   w   i   t   c   h   o   n       s   e   q    
0071120    i   n   t   o  \r                                            
0071140            [       c   a   s   e       1   :       l   o   o   p
0071160    ;       c   a   s   e       0   :       e   n   d   c   a   s
0071200    e   ;       d   e   f   a   u   l   t   :       r   e   s   u
0071220    l   t   i   s       s   e   q       ]  \r                    
0071240                    s   o   c   >   >   E   F   T   P   S   o   c
0071260    .   S   e   q   N   u   m       =       s   o   c   > 376 001
0071300   \0   p   ,   >   E   F   T   P   S   o   c   .   S   e   q   N
0071320    u   m   +   1  \r                                       @   l
0071340    v   P   b   i       =       i   n   P   b   i  \r            
0071360                            r   e   s   u   l   t   i   s       i
0071400    n   P   b   i   >   >   P   B   I   .   p   u   p   .   l   e
0071420    n   g   t   h       -       p   u   p   O   v   B   y   t   e
0071440    s               /   /   a   n   d       r   e   t   u   r   n
0071460   \r                                       ]  \r                
0071500            c   a   s   e       t   y   p   e   E   F   T   P   E
0071520    n   d   :  \r                                       [  \r    
0071540                                    l   e   t       s   e   q   =
0071560    C   h   e   c   k   S   e   q   u   e   n   c   e   (   s   o
0071600    c   ,       i   n   P   b   i   )  \r                        
0071620                s   w   i   t   c   h   o   n       s   e   q    
0071640    i   n   t   o  \r                                            
0071660            [       c   a   s   e       1   :       l   o   o   p
0071700    ;       c 376 001  \0 353   B   a   s   e       0   :       e
0071720    n   d   c   a   s   e   ;       d   e   f   a   u   l   t   :
0071740        r   e   s   u   l   t   i   s       s   e   q       ]  \r
0071760                                        R   e   l   e   a   s   e
0072000    P   B   I   (   i   n   P   b   i   )  \r                    
0072020                    s   o   c   >   >   E   F   T   P   S   o   c
0072040    .   S   e   q   N   u   m       =       s   o   c   >   >   E
0072060    F   T   P   S   o   c   .   S   e   q   N   u   m   +   1  \r
0072100                                        l   e   t       d   a   l
0072120    l   y   T   i   m   e   r       =       n   i   l   ;       S
0072140    e   t   T   i   m   e   r   (   l   v       d   a   l   l   y
0072160    T   i   m   e   r   ,       d   a   l   l   y   T   i   m   e
0072200    o   u   t   )  \r                                            
0072220        [       /   /       r   e   p   e   a   t  \r            
0072240                                        B   l   o   c   k   (   )
0072260   \r                                                   i   f    
0072300    T   i   m   e   r   H   a   s 376 001  \0 327 327   E   x   p
0072320    i   r   e   d   (   l   v       d   a   l   l   y   T   i   m
0072340    e   r   )       r   e   s   u   l   t   i   s       E   F   T
0072360    P   E   n   d   R   e   c   e   i   v   e   d  \r            
0072400                                        i   n   P   b   i       =
0072420        D   e   q   u   e   u   e   (   l   v       s   o   c   >
0072440    >   E   F   T   P   S   o   c   .   i   Q   )  \r            
0072460                                        i   f       i   n   P   b
0072500    i       e   q       0       l   o   o   p  \r  \r            
0072520                                        i   f       i   n   P   b
0072540    i   >   >   P   B   I   .   p   u   p   .   t   y   p   e    
0072560    n   e       t   y   p   e   E   F   T   P   E   n   d       t
0072600    h   e   n  \r                                                
0072620                [       R   e   l   e   a   s   e   P   B   I   (
0072640    i   n   P   b   i   )   ;       l   o   o   p       ]  \r    
0072660                                                i   f       s   o
0072700    c   >   >   E   F   T   P   S   o   c   .   S   e 376 001  \0
0072720    I   z   q   N   u   m       e   q       i   n   P   b   i   >
0072740    >   P   B   I   .   p   u   p   .   i   d   ^   2       t   h
0072760    e   n              \r                                        
0073000                        [       R   e   l   e   a   s   e   P   B
0073020    I   (   i   n   P   b   i   )   ;       r   e   s   u   l   t
0073040    i   s       E   F   T   P   E   n   d   R   e   c   e   i   v
0073060    e   d       ]  \r  \r                                        
0073100            /   /       W   a   s       a       r   e   t   r   a
0073120    n   s   m   i   s   s   i   o   n       o   f       f   i   r
0073140    s   t       e   n   d   ,       a   c   k       i   t  \r    
0073160                                                A   c   k   E   F
0073200    T   P   P   a   c   k   e   t   (   s   o   c   ,       i   n
0073220    P   b   i   )   ;       R   e   l   e   a   s   e   P   B   I
0073240    (   i   n   P   b   i   )  \r                                
0073260                    ]       r   e   p   e   a   t  \r            
0073300                            e   n   d   c   a   s   e  \r        
0073320          376 001  \0 311 257                       ]  \r        
0073340                    c   a   s   e       t   y   p   e   E   F   T
0073360    P   A   b   o   r   t   :  \r                           c   a
0073400    s   e       t   y   p   e   E   r   r   o   r   :       /   /
0073420        l   o   w   -   l   e   v   e   l       e   r   r   o   r
0073440        p   u   p   ,       i   f       "   n   o       s   u   c
0073460    h       p   o   r   t   "       t   r   e   a   t       a   s
0073500        a   b   o   r   t       e   l   s   e       i   g   n   o
0073520    r   e  \r                                       [  \r  \t    
0073540                    i   f       i   n   P   b   i   >   >   P   B
0073560    I   .   p   u   p   .   w   o   r   d   s   ^   1   1       n
0073600    e       e   c   N   o   S   u   c   h   P   o   r   t       e
0073620    n   d   c   a   s   e       /   /       i   g   n   o   r   e
0073640        t   h   e       p   a   c   k   e   t  \r                
0073660                        i   f       s   o   c   >   >   E   F   T
0073700    P   S   o   c   .   A   b   o   r   t   P   B   I       n   e
0073720        0       t   h   e   n 376 001  \0   N   i       R   e   l
0073740    e   a   s   e   P   B   I   (   s   o   c   >   >   E   F   T
0073760    P   S   o   c   .   A   b   o   r   t   P   B   I   )  \r    
0074000                                    s   o   c   >   >   E   F   T
0074020    P   S   o   c   .   A   b   o   r   t   P   B   I       =    
0074040    i   n   P   b   i       /   /       i   n   c   l   u   d   e
0074060    s       e   r   r   o   r       P   u   p   s   ?  \r        
0074100                                r   e   s   u   l   t   i   s    
0074120    E   F   T   P   A   b   o   r   t   R   e   c   e   i   v   e
0074140    d  \r                                       ]  \r            
0074160                    d   e   f   a   u   l   t   :       /   /    
0074200    u   n   r   e   c   o   g   n   i   z   e   d       P   u   p
0074220        o   n       c   u   r   r   e   n   t       c   o   n   n
0074240    e   c   t   i   o   n   ,       a   b   o   r   t  \r        
0074260                                [  \r                            
0074300            S   e   n   d   E   F   T   P   A   b   o   r   t   (
0074320    s   o   c   ,       E   x   t   e   r   n   a 376 001  \0   1
0074340  345   l   S   e   n   d   e   r   A   b   o   r   t   ,  \r    
0074360                                                    "   U   n   r
0074400    e   c   o   g   n   i   z   e   d       P   u   p       t   y
0074420    p   e       o   n       E   F   T   P       c   o   n   n   e
0074440    c   t   i   o   n   "   ,       i   n   P   b   i   )  \r    
0074460                                    R   e   l   e   a   s   e   P
0074500    B   I   (   i   n   P   b   i   )   ;  \r                    
0074520                    r   e   s   u   l   t   i   s       E   F   T
0074540    P   A   b   o   r   t   S   e   n   t  \r                    
0074560                    ]  \r                           ]  \r        
0074600        R   e   l   e   a   s   e   P   B   I   (   i   n   P   b
0074620    i   )  \r               ]       r   e   p   e   a   t  \r   ]
0074640   \r              \r  \r       a   n   d       C   h   e   c   k
0074660    S   e   q   u   e   n   c   e   (   s   o   c   ,       i   n
0074700    P   b   i   )       =       v   a   l   o   f  \r            
0074720    [  \r               l   e   t       i   n   S   e   q   N   u
0074740    m 376 001  \0   q   S   =   i   n   P   b   i   >   >   P   B
0074760    I   .   p   u   p   .   i   d   ^   2  \r               /   /
0075000        C   h   e   c   k       t   h   e       s   e   q   u   e
0075020    n   c   e       n   u   m   b   e   r       -   -       s   h
0075040    o   u   l   d       b   e       e   x   p   e   c   t   e   d
0075060        o   r       e   x   p   e   c   t   e   d   -   1  \r    
0075100            /   /       A   c   k   n   o   w   l   e   d   g   e
0075120        i   t   .           T   h   e   n   ,       i   f       e
0075140    x   p   e   c   t   e   d   -   1   ,       r   e   l   e   a
0075160    s   e       a   n   d       r   e   t   u   r   n       1  \r
0075200                /   /                                           I
0075220    f       e   x   p   e   c   t   e   d   ,       r   e   t   u
0075240    r   n       0       -   -       n   e   x   t       d   a   t
0075260    a       p   a   c   k   e   t  \r               /   /       I
0075300    f       n   o   t       e   x   p   e   c   t   e   d       s
0075320    e   q   u   e   n   c   e   ,       i   s   s   u   e       a
0075340    p   p   r   o   p   r 376 001  \0 221   A   i   a   t   e    
0075360    a   b   o   r   t       a   n   d       r   e   t   u   r   n
0075400        i   t   s       c   o   d   e   .  \r               l   e
0075420    t       d   i   f   =   (   s   o   c   >   >   E   F   T   P
0075440    S   o   c   .   S   e   q   N   u   m   -   i   n   S   e   q
0075460    N   u   m   )  \r               i   f       (   d   i   f    
0075500    r   s   h   i   f   t       1   )       e   q       0       t
0075520    h   e   n  \r                           [  \r                
0075540            A   c   k   E   F   T   P   P   a   c   k   e   t   (
0075560    s   o   c   ,       i   n   P   b   i   )  \r                
0075600            i   f       d   i   f       e   q       1       t   h
0075620    e   n       R   e   l   e   a   s   e   P   B   I   (   i   n
0075640    P   b   i   )  \r                           r   e   s   u   l
0075660    t   i   s       d   i   f       /   /       0       i   f    
0075700    e   x   p   e   c   t   e   d       s   e   q   u   e   n   c
0075720    e       #   ,       1       i   f       p   r   e   v   i   o
0075740    u   s       o   n   e  \r                 376 001  \0 307 275
0075760            ]  \r               /   /       S   e   q   u   e   n
0076000    c   e       n   u   m   b   e   r       i   n   c   o   r   r
0076020    e   c   t   .  \r               /   /       I   f       w   e
0076040        r   e   c   e   i   v   e       a       d   a   t   a    
0076060    p   a   c   k   e   t       w   i   t   h       s   e   q   u
0076100    e   n   c   e       n   u   m   b   e   r       0  \r        
0076120        /   /                   f   r   o   m       o   u   r    
0076140    p   a   r   t   n   e   r   ,       t   h   e   n       a   s
0076160    s   u   m   e       h   e       w   a   n   t   s       t   o
0076200        r   e   s   t   a   r   t   .  \r               /   /    
0076220    O   t   h   e   r   w   i   s   e       a   b   o   r   t    
0076240    t   h   e       t   r   a   n   s   f   e   r       a   n   d
0076260        r   e   t   u   r   n       a   n       e   r   r   o   r
0076300    .  \r               u   n   l   e   s   s       i   n   S   e
0076320    q   N   u   m       e   q       0       d   o  \r            
0076340                            S   e   n   d   E   F   T   P   A   b
0076360  376 001  \0   E  \a   o   r   t   (   s   o   c   ,       O   u
0076400    t   O   f   S   y   n   c   h   A   b   o   r   t   ,  \r    
0076420                                                                 
0076440        "   Y   o   u   r       s   e   n   d   e   r       i   s
0076460        o   u   t       o   f       s   y   n   c   .   "   ,    
0076500    i   n   P   b   i   )  \r               R   e   l   e   a   s
0076520    e   P   B   I   (   i   n   P   b   i   )  \r               r
0076540    e   s   u   l   t   i   s       i   n   S   e   q   N   u   m
0076560        e   q       0   ?       E   F   T   P   R   e   s   e   t
0076600    R   e   c   e   i   v   e   d   ,       E   F   T   P   A   b
0076620    o   r   t   S   e   n   t  \r               ]  \r  \f  \r  \r
0076640    /   /   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0076660    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0076740    -   -   -   -   -   -   -   -   -   -   -   -   -   -  \r   a
0076760    n   d       A   c 376 001  \0 253 313   k   E   F   T   P   P
0077000    a   c   k   e   t   (   s   o   c   ,       p   b   i   )    
0077020    b   e  \r   /   /   -   -   -   -   -   -   -   -   -   -   -
0077040    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0077140    -  \r   [  \r   /   /       c   o   n   s   t   r   u   c   t
0077160        t   h   e       o   u   t   g   o   i   n   g       a   c
0077200    k       p   a   c   k   e   t  \r   l   e   t       a   c   k
0077220    P   b   i       =       G   e   t   P   B   I   (   s   o   c
0077240    )  \r   a   c   k   P   b   i   >   >   P   B   I   .   p   u
0077260    p   .   i   d   ^   2       =       p   b   i   >   >   P   B
0077300    I   .   p   u   p   .   i   d   ^   2  \r   C   o   m   p   l
0077320    e   t   e   P   u   p   (   a   c   k   P   b   i   ,       t
0077340    y   p   e   E   F   T   P   A   c   k   ,       p   u   p   O
0077360    v   B   y   t   e   s   )  \r   ]  \r 377  \0  \0   P   u   p
0077400    E   F   T   P   C   o   m   m   o   n   .   b   c   p   l  \0
0077420  373 223 361 363 350  \0  \0 376 001  \0   ] 212   /   /       P
0077440    u   p   E   F   T   P   C   o   m   m   o   n   .   b   c   p
0077460    l       -   -       b   y       J   .       S   h   o   c   h
0077500   \r   /   /       C   o   p   y   r   i   g   h   t       X   e
0077520    r   o   x       C   o   r   p   o   r   a   t   i   o   n    
0077540    1   9   7   9  \r  \r   /   /       L   a   s   t       m   o
0077560    d   i   f   i   e   d       J   u   n   e       3   ,       1
0077600    9   7   9           1   2   :   0   0       P   M       b   y
0077620        T   a   f   t  \r  \r   g   e   t       "   P   u   p   E
0077640    F   T   P   .   d   e   c   l   "  \r  \r   e   x   t   e   r
0077660    n   a   l  \r   [  \r   /   /       o   u   t   g   o   i   n
0077700    g       p   r   o   c   e   d   u   r   e   s  \r   I   n   i
0077720    t   E   F   T   P   P   a   c   k   a   g   e   ;       O   p
0077740    e   n   E   F   T   P   S   o   c   ;       C   l   o   s   e
0077760    E   F   T   P   S   o   c   ;       G   e   t   E   F   T   P
0100000    A   b   o   r   t   ;       S   e   n   d   E   F   T   P   A
0100020    b   o   r   t  \r  \r   /   /       i   n   c 376 001  \0 365
0100040  003   o   m   i   n   g       p   r   o   c   e   d   u   r   e
0100060    s  \r   O   p   e   n   L   e   v   e   l   1   S   o   c   k
0100100    e   t   ;       C   l   o   s   e   L   e   v   e   l   1   S
0100120    o   c   k   e   t   ;       G   e   t   P   B   I   ;       R
0100140    e   l   e   a   s   e   P   B   I  \r   S   e   t   P   u   p
0100160    D   P   o   r   t   ;       A   p   p   e   n   d   S   t   r
0100200    i   n   g   T   o   P   u   p   ;       C   o   m   p   l   e
0100220    t   e   P   u   p  \r   D   e   f   a   u   l   t   A   r   g
0100240    s   ;       Z   e   r   o  \r  \r   /   /       o   u   t   g
0100260    o   i   n   g       s   t   a   t   i   c   s  \r   l   E   F
0100300    T   P   S   o   c  \r   ]  \r  \r   s   t   a   t   i   c    
0100320    [       l   E   F   T   P   S   o   c       =       l   e   n
0100340    E   F   T   P   S   o   c       ]  \r  \r  \r   /   /   -   -
0100360    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0100440    - 376 001  \0 226 260   -   -   -   -   -   -   -   -   -   -
0100460    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -  \r
0100500    l   e   t       I   n   i   t   E   F   T   P   P   a   c   k
0100520    a   g   e   (   p   a   c   k   a   g   e   Z   o   n   e   )
0100540        b   e       [       ]  \r   /   /   -   -   -   -   -   -
0100560    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0100660    -   -   -   -   -   -  \r  \r   /   /   -   -   -   -   -   -
0100700    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0101000    -   -   -   -   -   -  \r   a   n   d       O   p   e   n   E
0101020    F   T   P   S   o   c   (   s   o   c   ,       l   c   l   p
0101040    o   r   t   ,       f 376 001  \0 375 255   r   n   p   o   r
0101060    t   ;       n   u   m   a   r   g   s       n   a   )       b
0101100    e  \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -
0101120    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0101220   \r   [  \r   D   e   f   a   u   l   t   A   r   g   s   (   l
0101240    v       n   a   ,       -   1   ,       0   ,       0   )  \r
0101260    Z   e   r   o   (   s   o   c   ,       l   e   n   E   F   T
0101300    P   S   o   c   )  \r   s   o   c   >   >   E   F   T   P   S
0101320    o   c   .   T   r   a   n   s   f   e   r   N   o   t   S   t
0101340    a   r   t   e   d       =       t   r   u   e  \r   s   o   c
0101360    >   >   E   F   T   P   S   o   c   .   c   u   r   r   e   n
0101400    t   T   i   m   e   o   u   t       =       s   t   a   r   t
0101420    i   n   g   T   i   m   e   o   u   t  \r   O   p   e   n   L
0101440    e   v   e   l   1   S   o   c   k   e   t 376 001  \0 356 224
0101460    (   s   o   c   ,       l   c   l   p   o   r   t   ,       f
0101500    r   n   p   o   r   t   )  \r   ]  \r  \r   /   /   -   -   -
0101520    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0101620    -   -   -   -   -   -   -   -   -  \r   a   n   d       C   l
0101640    o   s   e   E   F   T   P   S   o   c   (   s   o   c   )    
0101660    b   e  \r   /   /   -   -   -   -   -   -   -   -   -   -   -
0101700    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0102000    -  \r   [  \r   i   f       s   o   c   >   >   E   F   T   P
0102020    S   o   c   .   A   b   o   r   t   P   B   I       n   e    
0102040    0       t   h   e   n       R   e   l   e   a   s   e   P   B
0102060  376 001  \0 334  \f   I   (   s   o   c   >   >   E   F   T   P
0102100    S   o   c   .   A   b   o   r   t   P   B   I   )  \r   C   l
0102120    o   s   e   L   e   v   e   l   1   S   o   c   k   e   t   (
0102140    s   o   c   )  \r   ]  \r  \r   /   /   -   -   -   -   -   -
0102160    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0102260    -   -   -   -   -   -  \r   a   n   d       G   e   t   E   F
0102300    T   P   A   b   o   r   t   (   s   o   c   )       =       s
0102320    o   c   >   >   E   F   T   P   S   o   c   .   A   b   o   r
0102340    t   P   B   I  \r   /   /   -   -   -   -   -   -   -   -   -
0102360    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0102460    -   -   -  \r  \r 376 001  \0  \t   C   /   /   -   -   -   -
0102500    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0102600    -   -   -   -   -   -   -   -  \r   a   n   d       S   e   n
0102620    d   E   F   T   P   A   b   o   r   t   (   s   o   c   ,    
0102640    a   b   o   r   t   C   o   d   e   ,       a   b   o   r   t
0102660    S   t   r   i   n   g   ,       p   b   i   ;       n   u   m
0102700    a   r   g   s       n   a   )       b   e  \r   /   /   -   -
0102720    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0103020    -   -   -   -   -   -   -   -   -   -  \r   /   /       c   o
0103040    n   s   t   r   u   c   t       t   h   e       o   u   t   g
0103060    o   i   n   g       a   b   o   r   t 376 001  \0 324 224    
0103100    p   a   c   k   e   t   ,  \r   /   /       w   i   l   l    
0103120    g   e   t       s   e   n   t       t   o       s   o   u   r
0103140    c   e       o   f       p   b   i       i   f       s   u   p
0103160    p   l   i   e   d   ,  \r   /   /       w   i   l   l       g
0103200    e   t       s   e   n   t       t   o       y   o   u   r    
0103220    c   u   r   r   e   n   t       f   o   r   e   i   g   n    
0103240    p   o   r   t       o   t   h   e   r   w   i   s   e  \r   [
0103260   \r   l   e   t       a   b   o   r   t   P   b   i       =    
0103300    G   e   t   P   B   I   (   s   o   c   )  \r   i   f       n
0103320    a       g   r       3       t   h   e   n  \r               [
0103340   \r               a   b   o   r   t   P   b   i   >   >   P   B
0103360    I   .   p   u   p   .   i   d   ^   2       =       p   b   i
0103400    >   >   P   B   I   .   p   u   p   .   i   d   ^   2  \r    
0103420            S   e   t   P   u   p   D   P   o   r   t   (   a   b
0103440    o   r   t   P   b   i   ,       l   v       p   b   i   >   >
0103460    P   B   I   .   p   u   p   .   s   P   o   r   t   )  \r 376
0103500   \0 253   L   ]               ]  \r   a   b   o   r   t   P   b
0103520    i   >   >   P   B   I   .   p   u   p   .   i   d   ^   2    
0103540    =       s   o   c   >   >   E   F   T   P   S   o   c   .   S
0103560    e   q   N   u   m  \r   a   b   o   r   t   P   b   i   >   >
0103600    P   B   I   .   p   u   p   .   w   o   r   d   s   ^   1    
0103620    =       a   b   o   r   t   C   o   d   e  \r   A   p   p   e
0103640    n   d   S   t   r   i   n   g   T   o   P   u   p   (   a   b
0103660    o   r   t   P   b   i   ,       3   ,       a   b   o   r   t
0103700    S   t   r   i   n   g   )  \r   C   o   m   p   l   e   t   e
0103720    P   u   p   (   a   b   o   r   t   P   b   i   ,       t   y
0103740    p   e   E   F   T   P   A   b   o   r   t   )  \r   ]  \r 377
0103760   \0  \0   C   o   m   p   i   l   e   E   F   T   P   .   c   m
0104000   \0 373 223 361 363 350  \0  \0 376  \0   s 353 250   B   c   p
0104020    l   /   f       E   F   T   P   .   b   c   p   l  \r   B   c
0104040    p   l   /   f       E   F   T   P   F   i   l   e   .   b   c
0104060    p   l  \r   B   c   p   l   /   f       P   u   p   E   F   T
0104100    P   S   e   n   d   .   b   c   p   l  \r   B   c   p   l   /
0104120    f       P   u   p   E   F   T   P   R   e   c   e   i   v   e
0104140    .   b   c   p   l  \r   B   c   p   l   /   f       P   u   p
0104160    E   F   T   P   C   o   m   m   o   n   .   b   c   p   l  \r
0104200  377  \0  \0   L   o   a   d   E   F   T   P   .   c   m  \0 373
0104220  223 361 363 350  \0  \0 376  \0 355 243 033   B   L   D   R   /
0104240    L   /   V       E   F   T   P       E   F   T   P   F   i   l
0104260    e       P   u   p   E   F   T   P   S   e   n   d       P   u
0104300    p   E   F   T   P   R   e   c   e   i   v   e       P   u   p
0104320    E   F   T   P   C   o   m   m   o   n       P   u   p   A   l
0104340    E   t   h   b       P   u   p   A   l   E   t   h   a       P
0104360    u   p   A   l   E   t   h   I   n   i   t       P   u   p   1
0104400    b       P   u   p   A   l   1   a       P   u   p   D   u   m
0104420    m   y   G   a   t   e       P   u   p   R   o   u   t   e    
0104440    P   u   p   1   I   n   i   t       P   u   p   1   O   p   e
0104460    n   C   l   o   s   e       P   u   p   N   a   m   e   L   o
0104500    o   k   u   p       C   o   n   t   e   x   t       C   o   n
0104520    t   e   x   t   I   n   i   t       I   n   t   e   r   r   u
0104540    p   t       I   n   t   e   r   r   u   p   t   I   n   i   t
0104560        A   l   t   o   Q   u   e   u   e       A   l   t   o   T
0104600    i   m   e   r       G   P  \r 377  \0  \0   R   e   l   e   a
0104620    s   e   E   F   T   P   .   c   m  \0 373 223 361 363 350  \0
0104640   \0 376  \0 273 227 362   F   t   p       M   a   x   c       c
0104660    o   n   n   /   c       A   l   t   o       s   t   o   r   e
0104700    /   c       E   F   T   P   .   r   u   n       E   F   T   P
0104720    .   s   y   m   s       ^  \r   d   u   m   p   /   c       E
0104740    F   T   P   p   a   c   k   a   g   e   .   d   m       P   u
0104760    p   E   F   T   P   .   d   e   c   l       P   u   p   E   F
0105000    T   P   S   e   n   d   .   b   r       P   u   p   E   F   T
0105020    P   R   e   c   e   i   v   e   .   b   r       P   u   p   E
0105040    F   T   P   C   o   m   m   o   n   .   b   r       ^  \r   c
0105060    o   n   n   /   c       A   l   t   o   S   o   u   r   c   e
0105100        d   u   m   p   /   c       E   F   T   P   S   o   u   r
0105120    c   e   s   .   d   m       @   E   F   T   P   .   c   m   @
0105140   \r 377  \0  \0   E   F   T   P   .   c   m  \0 373 223 361 363
0105160  350  \0  \0 376  \0 216 032   _   P   u   p   E   F   T   P   .
0105200    d   e   c   l       E   F   T   P   .   b   c   p   l       E
0105220    F   T   P   F   i   l   e   .   b   c   p   l       P   u   p
0105240    E   F   T   P   S   e   n   d   .   b   c   p   l       P   u
0105260    p   E   F   T   P   R   e   c   e   i   v   e   .   b   c   p
0105300    l       P   u   p   E   F   T   P   C   o   m   m   o   n   .
0105320    b   c   p   l       C   o   m   p   i   l   e   E   F   T   P
0105340    .   c   m       L   o   a   d   E   F   T   P   .   c   m    
0105360    R   e   l   e   a   s   e   E   F   T   P   .   c   m       E
0105400    F   T   P   .   c   m 374                                    
0105407