$ od -c -N 50000 [_CD8_]<dicentra>SCI>SCI.dm!3
0000000  377  \0  \0   S   C   I   .   d   e   c   l  \0 373 232 330 327
0000020    e  \0  \0 376 001  \0   U   y   /   /       S   C   I   .   d
0000040    e   c   l  \r   /   /       L   a   s   t       m   o   d   i
0000060    f   i   e   d       A   p   r   i   l       2   8   ,       1
0000100    9   8   3           1   1   :   4   3       P   M       b   y
0000120        B   o   g   g   s  \r  \r   s   t   r   u   c   t   u   r
0000140    e       S   t   r   i   n   g       [       l   e   n   g   t
0000160    h       b   y   t   e   ;       c   h   a   r   ^   1   ,   2
0000200    5   5       b   y   t   e       ]  \r  \r   s   t   r   u   c
0000220    t   u   r   e       B   y   t   e   ^   0   ,   8   0       b
0000240    y   t   e  \r   m   a   n   i   f   e   s   t  \r   [  \r   t
0000260    a   p   e   S   o   c   k   e   t       =       4   4   b  \r
0000300   \r   /   /       T   S   P       c   o   m   m   a   n   d   s
0000320   \r   c   m   d   Y   e   s       =       1  \r   c   m   d   N
0000340    o       =       2  \r   c   m   d   V   e   r   s   i   o   n
0000360        =       3  \r   c   m   d   O   p   e   n   D   r   i   v
0000400    e       =       6  \r   c   m   d   C   l   o   s   e   D   r
0000420    i   v   e       =       7  \r 376  \0   ]   ` 324   c   m   d
0000440    W   r   i   t   e   R   e   c   o   r   d       =       1   1
0000460    b  \r   c   m   d   W   r   i   t   e   E   O   F       =    
0000500    1   6   b  \r   c   m   d   R   e   w   i   n   d       =    
0000520    2   0   b  \r   c   m   d   U   n   l   o   a   d       =    
0000540    2   1   b  \r   c   m   d   S   e   t   S   t   a   t   u   s
0000560        =       2   3   b  \r  \r   ]  \r 377  \0  \0   S   C   I
0000600    .   b   c   p   l  \0 373 232 330 326   l  \0  \0 376 001  \0
0000620  204 215   /   /       S   C   I   .   b   c   p   l       -   -
0000640        T   r   a   n   s   l   a   t   e   s       R   o   u   t
0000660    e       o   u   t   p   u   t       t   o       S   C   I    
0000700    i   n   p   u   t       f   o   r   m   a   t       a   n   d
0000720        w   r   i   t   e   s       a       t   a   p   e   .  \r
0000740    /   /       L   a   s   t       m   o   d   i   f   i   e   d
0000760        A   p   r   i   l       2   8   ,       1   9   8   3    
0001000        7   :   3   3       P   M       b   y       B   o   g   g
0001020    s  \r  \r   g   e   t       "   S   C   I   .   d   e   c   l
0001040    "  \r   g   e   t       "   S   t   r   e   a   m   s   .   d
0001060    "  \r  \r   e   x   t   e   r   n   a   l  \r   [  \r   /   /
0001100        o   u   t   g   o   i   n   g       p   r   o   c   e   d
0001120    u   r   e       -   -       S   C   I  \r   T   S   P  \r  \r
0001140    /   /       i   n   c   o   m   i   n   g       p   r   o   c
0001160    e   d   u   r   e   s       -   -       S   C   I  \r   W   L
0001200    F   i   l   e   ;       O   t   h   e   r   F   i   l   e  \r
0001220    R   e 376 001  \0   I   U   a   d   T   o   k   e   n   ;    
0001240    O   u   t   P   u   t   ;       F   l   u   s   h   B   l   o
0001260    c   k  \r  \r   /   /       i   n   c   o   m   i   n   g    
0001300    p   r   o   c   e   d   u   r   e   s       -   -       p   a
0001320    c   k   a   g   e   s  \r   I   n   i   t   i   a   l   i   z
0001340    e   C   o   n   t   e   x   t   ;       B   l   o   c   k   ;
0001360        C   a   l   l   C   o   n   t   e   x   t   L   i   s   t
0001400   \r   E   x   t   r   a   c   t   S   u   b   s   t   r   i   n
0001420    g   ;       C   o   n   c   a   t   e   n   a   t   e   S   t
0001440    r   i   n   g   s  \r   I   n   i   t   P   u   p   L   e   v
0001460    e   l   1   ;       G   e   t   P   a   r   t   n   e   r   ;
0001500        E   n   q   u   e   u   e   ;       P   u   t   T   e   m
0001520    p   l   a   t   e   ;       B   y   t   e   B   l   t  \r   O
0001540    p   e   n   L   e   v   e   l   1   S   o   c   k   e   t   ;
0001560        O   p   e   n   R   T   P   S   o   c   k   e   t   ;    
0001600    C   r   e   a   t   e   B   S   P   S   t   r   e   a   m  \r
0001620    B   S   P   W   r   i   t 376 001  \0   ! 373   e   B   l   o
0001640    c   k   ;       B   S   P   R   e   a   d   B   l   o   c   k
0001660    ;       B   S   P   F   o   r   c   e   O   u   t   p   u   t
0001700   \r  \r   /   /       i   n   c   o   m   i   n   g       p   r
0001720    o   c   e   d   u   r   e   s       -   -       O   S  \r   O
0001740    p   e   n   F   i   l   e   ;       C   l   o   s   e   s   ;
0001760        P   u   t   s   ;       G   e   t   s  \r   I   n   i   t
0002000    i   a   l   i   z   e   Z   o   n   e   ;       A   d   d   T
0002020    o   Z   o   n   e   ;       A   l   l   o   c   a   t   e   ;
0002040        F   r   e   e  \r   N   o   o   p   ;       C   a   l   l
0002060    S   w   a   t   ;       M   y   F   r   a   m   e   ;       W
0002100    s   s  \r  \r   /   /       o   u   t   g   o   i   n   g    
0002120    s   t   a   t   i   c   s  \r   l   f   ;       i   n   ;    
0002140    o   u   t   ;       c   p   u   T   y   p   e  \r   t   o   k
0002160    e   n   ;       b   o   a   r   d   ;       n   u   m   B   l
0002200    o   c   k   s  \r   b   l   o   c   k   ;       b   l   o   c
0002220    k   C   n   t   ;       r   e   c   o   r   d 376 001  \0  \0
0002240  325   ;       r   e   c   o   r   d   C   n   t  \r  \r   /   /
0002260        i   n   c   o   m   i   n   g       s   t   a   t   i   c
0002300    s       -   -       O   S  \r   s   y   s   Z   o   n   e   ;
0002320        d   s   p   ;       k   e   y   s  \r   l   v   S   y   s
0002340    Z   o   n   e   ;       l   v   I   d   l   e   ;       l   v
0002360    U   s   e   r   F   i   n   i   s   h   P   r   o   c  \r  \r
0002400    /   /       i   n   c   o   m   i   n   g       s   t   a   t
0002420    i   c   s       -   -       P   u   p       p   a   c   k   a
0002440    g   e  \r   o   f   f   s   e   t   B   S   P   S   t   r   ;
0002460        l   B   S   P   S   o   c  \r   ]  \r  \r   m   a   n   i
0002500    f   e   s   t       s   t   a   c   k   L   i   m   i   t    
0002520    =       3   3   5   b  \r  \r   s   t   a   t   i   c  \r   [
0002540   \r   l   f   ;       i   n   ;       o   u   t   ;       c   p
0002560    u   T   y   p   e  \r   t   o   k   e   n   ;       b   o   a
0002600    r   d   ;       n   u   m   B   l   o   c   k   s  \r   b   l
0002620    o   c   k   ;       b   l   o   c   k   C   n   t   ;       r
0002640    e 376 001  \0   l 311   c   o   r   d   ;       r   e   c   o
0002660    r   d   C   n   t  \r  \r   t   s   ;       s   a   v   e   d
0002700    U   F   P   ;       v   e   r   s   i   o   n   T   e   x   t
0002720   \r   ]  \r  \f  \r   /   /   -   -   -   -   -   -   -   -   -
0002740    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0003040    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -  \r
0003060    l   e   t       S   C   I   (   )       b   e  \r   /   /   -
0003100    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0003220    -   -   -   -   -   -   -  \r   [  \r   v   e   r   s   i   o
0003240    n   T   e   x   t     376 001  \0 327   d   =       "   S   C
0003260    I       o   f       A   p   r   i   l       2   8   ,       1
0003300    9   8   3   "  \r   W   s   s   (   d   s   p   ,       v   e
0003320    r   s   i   o   n   T   e   x   t   )  \r  \r   s   a   v   e
0003340    d   U   F   P       =       @   l   v   U   s   e   r   F   i
0003360    n   i   s   h   P   r   o   c   ;       @   l   v   U   s   e
0003400    r   F   i   n   i   s   h   P   r   o   c       =       F   i
0003420    n   i   s   h   P   r   o   c  \r  \r   /   /       f   r   e
0003440    e       s   t   o   r   a   g   e  \r   l   e   t       f   r
0003460    e   e   B   e   g   i   n       =       @   s   t   a   c   k
0003500    L   i   m   i   t  \r   l   e   t       f   r   e   e   E   n
0003520    d       =       M   y   F   r   a   m   e   (   )       -   2
0003540    0   0   0  \r   l   e   t       l   e   n   g   t   h       =
0003560        f   r   e   e   E   n   d   -   f   r   e   e   B   e   g
0003600    i   n  \r   i   f       l   e   n   g   t   h       u   g   r
0003620        7   7   7   7   6   b       t   h   e   n       l   e   n
0003640    g   t   h       =       7   7   7   7   6 376 001  \0 016 201
0003660    b  \r   @   s   t   a   c   k   L   i   m   i   t       =    
0003700    f   r   e   e   B   e   g   i   n       +       l   e   n   g
0003720    t   h  \r   s   y   s   Z   o   n   e       =       I   n   i
0003740    t   i   a   l   i   z   e   Z   o   n   e   (   f   r   e   e
0003760    B   e   g   i   n   ,       l   e   n   g   t   h   )  \r   @
0004000    l   v   S   y   s   Z   o   n   e       =       s   y   s   Z
0004020    o   n   e  \r  \r   t   o   k   e   n       =       A   l   l
0004040    o   c   a   t   e   (   s   y   s   Z   o   n   e   ,       1
0004060    2   8   )  \t  \t   /   /       i   n   p   u   t       i   s
0004100        p   a   r   s   e   d       i   n   t   o       t   o   k
0004120    e   n   s  \r   r   e   c   o   r   d       =       A   l   l
0004140    o   c   a   t   e   (   s   y   s   Z   o   n   e   ,       1
0004160    2   8   )  \t  \t   /   /       t   o   k   e   n   s       a
0004200    r   e       p   a   c   k   e   d       i   n   t   o       r
0004220    e   c   o   r   d   s  \r   b   l   o   c   k       =       A
0004240    l   l   o   c   a   t   e   (   s   y   s   Z   o   n   e   ,
0004260  376 001  \0 033 233       2   0   4   8   )  \t  \t   /   /    
0004300    r   e   c   o   r   d   s       a   r   e       p   a   c   k
0004320    e   d       i   n   t   o       b   l   o   c   k   s  \r  \r
0004340    /   /       g   e   t       b   o   a   r   d       n   a   m
0004360    e  \r   i   n       =       k   e   y   s  \r               [
0004400   \r               W   s   s   (   d   s   p   ,       "   *   N
0004420    B   o   a   r   d       n   a   m   e       (   e   .   g   .
0004440        D   C   C   P   -   r   e   v   -   H       (   n   o    
0004460    e   x   t   e   n   s   i   o   n   )   )   :       "   )  \r
0004500                R   e   a   d   T   o   k   e   n   (   )  \r    
0004520            ]       r   e   p   e   a   t   u   n   t   i   l    
0004540    t   o   k   e   n   >   >   S   t   r   i   n   g   .   l   e
0004560    n   g   t   h       n   e       0  \r   b   o   a   r   d    
0004600    =       E   x   t   r   a   c   t   S   u   b   s   t   r   i
0004620    n   g   (   t   o   k   e   n   )  \r  \r   /   /       o   p
0004640    e   n       l   i   s   t   i   n   g       f   i   l   e  \r
0004660    l   e   t       l 376 001  \0   Z 333   f   N   a   m   e    
0004700    =       C   o   n   c   a   t   e   n   a   t   e   S   t   r
0004720    i   n   g   s   (   t   o   k   e   n   ,       "   .   l   s
0004740    "   )  \r   l   f       =       O   p   e   n   F   i   l   e
0004760    (   l   f   N   a   m   e   ,       k   s   T   y   p   e   W
0005000    r   i   t   e   O   n   l   y   ,       c   h   a   r   I   t
0005020    e   m   )  \r   i   f       l   f       e   q       0       t
0005040    h   e   n       C   a   l   l   S   w   a   t   (   "   F   a
0005060    i   l   e   d       t   o       o   p   e   n       l   i   s
0005100    t   i   n   g       f   i   l   e   "   )  \r   P   u   t   T
0005120    e   m   p   l   a   t   e   (   d   s   p   ,       "   *   N
0005140    L   i   s   t   i   n   g       t   o       f   i   l   e    
0005160    $   S   "   ,       l   f   N   a   m   e   )  \r   F   r   e
0005200    e   (   s   y   s   Z   o   n   e   ,       l   f   N   a   m
0005220    e   )  \r  \r   l   e   t       c   t   x   Q       =       v
0005240    e   c       1   ;       c   t   x   Q   !   0       =       0
0005260   \r   @   l   v   I   d   l   e       = 376 001  \0   ]  \a    
0005300    B   l   o   c   k  \r   I   n   i   t   P   u   p   L   e   v
0005320    e   l   1   (   s   y   s   Z   o   n   e   ,       c   t   x
0005340    Q   ,       1   0   )  \r   E   n   q   u   e   u   e   (   c
0005360    t   x   Q   ,       I   n   i   t   i   a   l   i   z   e   C
0005400    o   n   t   e   x   t   (   A   l   l   o   c   a   t   e   (
0005420    s   y   s   Z   o   n   e   ,       1   0   0   0   )   ,    
0005440    1   0   0   0   ,       M   a   i   n   C   t   x   )   )  \r
0005460    C   a   l   l   C   o   n   t   e   x   t   L   i   s   t   (
0005500    c   t   x   Q   !   0   )       r   e   p   e   a   t        
0005520    /   /   f   o   r   e   v   e   r  \r   ]  \r  \r   /   /   -
0005540    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0005660    -   -   -   -   -   -   -  \r   a   n   d       F   i   n 376
0005700  001  \0   * 241   i   s   h   P   r   o   c   (   )       b   e
0005720   \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -   -
0005740    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0006040    -   -   -   -   -   -   -   -   -   -   -  \r   [  \r   i   f
0006060        l   f       n   e       0       t   h   e   n       C   l
0006100    o   s   e   s   (   l   f   )  \r   @   l   v   I   d   l   e
0006120        =       N   o   o   p  \r   @   l   v   U   s   e   r   F
0006140    i   n   i   s   h   P   r   o   c       =       s   a   v   e
0006160    d   U   F   P  \r   ]  \r  \f  \r   /   /   -   -   -   -   -
0006200    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0006300    -   -   -   - 376 001  \0   t   !   -   -   -   -   -   -   -
0006320    -   -   -   -   -   -   -   -  \r   a   n   d       M   a   i
0006340    n   C   t   x   (   )       b   e           /   /   a       c
0006360    o   n   t   e   x   t  \r   /   /   -   -   -   -   -   -   -
0006400    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0006520    -  \r   [  \r   /   /       o   p   e   n       t   a   p   e
0006540   \r   l   e   t       p   o   r   t       =       v   e   c    
0006560    3  \r               [  \r               W   s   s   (   d   s
0006600    p   ,       "   *   N   T   a   p   e       s   e   r   v   e
0006620    r       n   a   m   e       (   <   D   E   L   >       =   >
0006640        n   o       t   a   p   e   )   :       "   )  \r        
0006660        R   e   a   d   T   o   k   e   n   (   )  \r            
0006700    t   e   s   t       t   o   k   e 376 001  \0   E   L   n   >
0006720    >   S   t   r   i   n   g   .   l   e   n   g   t   h       e
0006740    q       0  \r                           i   f   s   o       [
0006760        p   o   r   t       =       0   ;       b   r   e   a   k
0007000        ]  \r                           i   f   n   o   t       i
0007020    f       G   e   t   P   a   r   t   n   e   r   (   t   o   k
0007040    e   n   ,       d   s   p   ,       p   o   r   t   ,       0
0007060    ,       t   a   p   e   S   o   c   k   e   t   )       b   r
0007100    e   a   k  \r               ]       r   e   p   e   a   t  \r
0007120    i   f       p   o   r   t       n   e       0       t   h   e
0007140    n  \r               [  \r               W   s   s   (   d   s
0007160    p   ,       "   *   N   V   A   X       o   r       P   R   I
0007200    M   E       f   o   r   m   a   t       (   V       o   r    
0007220    P   )   :       "   )  \r               c   p   u   T   y   p
0007240    e       =       G   e   t   s   (   k   e   y   s   )       &
0007260        1   3   7   b   ;       P   u   t   s   (   d   s   p   ,
0007300        c   p   u   T   y   p   e   )  \r               l 376 001
0007320   \0 315   o   e   t       s   o   c       =       A   l   l   o
0007340    c   a   t   e   (   s   y   s   Z   o   n   e   ,       l   B
0007360    S   P   S   o   c   )  \r               O   p   e   n   L   e
0007400    v   e   l   1   S   o   c   k   e   t   (   s   o   c   ,    
0007420    0   ,       p   o   r   t   )  \r               i   f       O
0007440    p   e   n   R   T   P   S   o   c   k   e   t   (   s   o   c
0007460    )       t   h   e   n       t   s       =       C   r   e   a
0007500    t   e   B   S   P   S   t   r   e   a   m   (   s   o   c   )
0007520   \r               ]  \r  \r   /   /       i   n   i   t   i   a
0007540    l   i   z   e       t   h   e       t   a   p   e  \r   T   S
0007560    P   (   c   m   d   V   e   r   s   i   o   n   ,       1   ,
0007600        v   e   r   s   i   o   n   T   e   x   t   )  \r   i   f
0007620        t   s       n   e       0       t   h   e   n  \r        
0007640        [  \r               W   s   s   (   d   s   p   ,       "
0007660    *   N   T   a   p   e       u   n   i   t       n   u   m   b
0007700    e   r   :       "   )  \r               R   e   a   d   T   o
0007720    k   e   n 376 001  \0 372 031   (   )  \r               l   e
0007740    t       u   n   i   t       =       t   o   k   e   n   >   >
0007760    S   t   r   i   n   g   .   c   h   a   r   ^   1       -    
0010000    $   0  \r               i   f       t   o   k   e   n   >   >
0010020    S   t   r   i   n   g   .   l   e   n   g   t   h       e   q
0010040        1       &       u   n   i   t       g   e       0       &
0010060        u   n   i   t       l   e       1       t   h   e   n  \r
0010100                            [       T   S   P   (   c   m   d   O
0010120    p   e   n   D   r   i   v   e   ,       u   n   i   t   ,    
0010140    "   "   )   ;       b   r   e   a   k       ]  \r            
0010160    ]       r   e   p   e   a   t  \r   T   S   P   (   c   m   d
0010200    S   e   t   S   t   a   t   u   s   ,       1   ,       1   6
0010220    0   0   )  \r  \r   l   e   t       v   1       =       "   V
0010240    O   L   1   S   C   I                                        
0010260                                                                 
0010300                    D   %   C                                    
0010320        1                         376 001  \0 266 034            
0010340                                                                 
0010360                3   "  \r   l   e   t       h   1       =       "
0010400    H   D   R   1   S   C   I   .   D   A   T                    
0010420                        S   C   I               0   0   0   1   0
0010440    0   0   1   0   0   0   1   0   0       8   3   0   0   0    
0010460    0   0   0   0   0       0   0   0   0   0   0   D   E   C   F
0010500    I   L   E   1   1   A                                        
0010520    "  \r   l   e   t       h   2       =       "   H   D   R   2
0010540    D   0   2   0   4   8   0   0   0   7   9                    
0010560                                                                 
0010600    A                                                       0   0
0010620                                                                 
0010640                                                    "  \r   l   e
0010660    t       h   3       =       "   H   D   R   3   0   0   4   B
0010700    0   1   0   2   0   0   0   0   0   0   0   0   0   0   0   1
0010720    0   0   0   0   0   0   0   0   0   0   0   0   0 376 001  \0
0010740  331 211   0   0   0   0   0   0   0   0   0   0   0   0   0   0
0010760    0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
0011000    0                                                   "  \r   i
0011020    f       c   p   u   T   y   p   e       e   q       $   V    
0011040    t   h   e   n           /   /   w   r   i   t   e       A   N
0011060    S   I       h   e   a   d   e   r       l   a   b   e   l   s
0011100   \r               [  \r               T   S   P   (   c   m   d
0011120    W   r   i   t   e   R   e   c   o   r   d   ,       v   1   ,
0011140        1   ,       8   0   )  \r               T   S   P   (   c
0011160    m   d   W   r   i   t   e   R   e   c   o   r   d   ,       h
0011200    1   ,       1   ,       8   0   )  \r               T   S   P
0011220    (   c   m   d   W   r   i   t   e   R   e   c   o   r   d   ,
0011240        h   2   ,       1   ,       8   0   )  \r               T
0011260    S   P   (   c   m   d   W   r   i   t   e   R   e   c   o   r
0011300    d   ,       h   3   ,       1   ,       8   0   )  \r        
0011320        T   S   P   (   c   m   d   W   r   i   t   e   E   O   F
0011340    )  \r 376 001  \0 202   (               ]  \r  \r   /   /    
0011360    d   o       t   h   e       w   o   r   k  \r   o   u   t    
0011400    =       l   v       O   u   t   P   u   t       -       o   f
0011420    f   s   e   t       S   T   .   p   u   t   s   /   1   6  \r
0011440    W   L   F   i   l   e   (   )  \r   O   t   h   e   r   F   i
0011460    l   e   (   )  \r   F   l   u   s   h   B   l   o   c   k   (
0011500    )  \r  \r   i   f       c   p   u   T   y   p   e       e   q
0011520        $   V       t   h   e   n           /   /   w   r   i   t
0011540    e       A   N   S   I       t   r   a   i   l   e   r       l
0011560    a   b   e   l   s  \r               [  \r               T   S
0011600    P   (   c   m   d   W   r   i   t   e   E   O   F   )  \r    
0011620            B   y   t   e   B   l   t   (   h   1   ,       1   ,
0011640        "   E   O   F   "   ,       1   ,       3   )  \r        
0011660        B   y   t   e   B   l   t   (   h   2   ,       1   ,    
0011700    "   E   O   F   "   ,       1   ,       3   )  \r            
0011720    B   y   t   e   B   l   t   (   h   3   ,       1   ,       "
0011740    E   O   F   "   ,       1 376 001  \0 231 326   ,       3   )
0011760   \r               h   1   >   >   S   t   r   i   n   g   .   c
0012000    h   a   r   ^   5   9       =       n   u   m   B   l   o   c
0012020    k   s   /   1   0       +   $   0  \r               h   1   >
0012040    >   S   t   r   i   n   g   .   c   h   a   r   ^   6   0    
0012060    =       n   u   m   B   l   o   c   k   s       r   e   m    
0012100    1   0       +   $   0  \r               T   S   P   (   c   m
0012120    d   W   r   i   t   e   R   e   c   o   r   d   ,       h   1
0012140    ,       1   ,       8   0   )  \r               T   S   P   (
0012160    c   m   d   W   r   i   t   e   R   e   c   o   r   d   ,    
0012200    h   2   ,       1   ,       8   0   )  \r               T   S
0012220    P   (   c   m   d   W   r   i   t   e   R   e   c   o   r   d
0012240    ,       h   3   ,       1   ,       8   0   )  \r            
0012260    ]  \r  \r   T   S   P   (   c   m   d   W   r   i   t   e   E
0012300    O   F   )  \r   T   S   P   (   c   m   d   W   r   i   t   e
0012320    E   O   F   )  \r   T   S   P   (   c   m   d   U   n   l   o
0012340    a   d   )  \r   T   S   P   (   c   m   d   C 376 001  \0   A
0012360    d   l   o   s   e   D   r   i   v   e   )  \r   i   f       t
0012400    s       n   e       0       t   h   e   n       C   l   o   s
0012420    e   s   (   t   s   )  \r   f   i   n   i   s   h  \r   ]  \r
0012440   \f  \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -
0012460    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0012560    -   -   -   -   -   -   -   -   -   -   -   -  \r   a   n   d
0012600        T   S   P   (   c   m   d   ,       a   r   g   0   ,    
0012620    a   r   g   1   ,       a   r   g   2   ,       a   r   g   3
0012640    ;       n   u   m   a   r   g   s       n   a   )       =    
0012660    v   a   l   o   f  \r   /   /   -   -   -   -   -   -   -   -
0012700    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0012760    - 376 001  \0 232 320   -   -   -   -   -   -   -   -   -   -
0013000    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0013020    -   -   -   -   -  \r   /   /       T   a   p   e       S   e
0013040    r   v   e   r       P   r   o   t   o   c   o   l  \r   [  \r
0013060    i   f       t   s       e   q       0       r   e   s   u   l
0013100    t   i   s       t   r   u   e  \r  \r   /   /       s   e   n
0013120    d       c   o   m   m   a   n   d  \r   l   e   t       m   s
0013140    g       =       v   e   c       1   0   ;       m   s   g   !
0013160    0       =       2   ;       m   s   g   !   1       =       c
0013200    m   d  \r   s   w   i   t   c   h   o   n       c   m   d    
0013220    i   n   t   o  \r               [  \r               c   a   s
0013240    e       c   m   d   R   e   w   i   n   d   :       c   a   s
0013260    e       c   m   d   U   n   l   o   a   d   :       c   a   s
0013300    e       c   m   d   C   l   o   s   e   D   r   i   v   e   :
0013320        c   a   s   e       c   m   d   W   r   i   t   e   E   O
0013340    F   :  \r                           [  \r                    
0013360        B   S   P   W   r 376 001  \0 027 310   i   t   e   B   l
0013400    o   c   k   (   t   s   ,       m   s   g   ,       0   ,    
0013420    4   )  \r                           e   n   d   c   a   s   e
0013440   \r                           ]  \r               c   a   s   e
0013460        c   m   d   V   e   r   s   i   o   n   :       c   a   s
0013500    e       c   m   d   O   p   e   n   D   r   i   v   e   :  \r
0013520                            [  \r                           l   e
0013540    t       s   l       =       a   r   g   1   >   >   S   t   r
0013560    i   n   g   .   l   e   n   g   t   h       r   s   h   i   f
0013600    t       1       +   1  \r                           m   s   g
0013620    !   0       =       3       +       s   l  \r                
0013640            m   s   g   !   2       =       a   r   g   0  \r    
0013660                        B   S   P   W   r   i   t   e   B   l   o
0013700    c   k   (   t   s   ,       m   s   g   ,       0   ,       6
0013720    )  \r                           B   S   P   W   r   i   t   e
0013740    B   l   o   c   k   (   t   s   ,       a   r   g   1   ,    
0013760    0   ,       s   l       l   s   h   i   f 376 001  \0 267   |
0014000    t       1   )  \r                           e   n   d   c   a
0014020    s   e  \r                           ]  \r               c   a
0014040    s   e       c   m   d   W   r   i   t   e   R   e   c   o   r
0014060    d   :  \r                           [  \r                    
0014100        m   s   g   !   0       =       3       +       a   r   g
0014120    2       r   s   h   i   f   t       1  \r                    
0014140        m   s   g   !   2       =       a   r   g   2  \r        
0014160                    B   S   P   W   r   i   t   e   B   l   o   c
0014200    k   (   t   s   ,       m   s   g   ,       0   ,       6   )
0014220   \r                           B   S   P   W   r   i   t   e   B
0014240    l   o   c   k   (   t   s   ,       a   r   g   0   ,       a
0014260    r   g   1   ,       a   r   g   2   )  \r                    
0014300        e   n   d   c   a   s   e  \r                           ]
0014320   \r               c   a   s   e       c   m   d   S   e   t   S
0014340    t   a   t   u   s   :  \r                           [  \r    
0014360                        m   s   g   !   0       =       4  \r    
0014400  376 001  \0 366 204                       m   s   g   !   2    
0014420    =       a   r   g   0  \r                           m   s   g
0014440    !   3       =       a   r   g   1  \r                        
0014460    B   S   P   W   r   i   t   e   B   l   o   c   k   (   t   s
0014500    ,       m   s   g   ,       0   ,       8   )  \r            
0014520                e   n   d   c   a   s   e  \r                    
0014540        ]  \r               d   e   f   a   u   l   t   :       C
0014560    a   l   l   S   w   a   t   (   "   T   S   P   :       u   n
0014600    k   n   o   w   n       c   o   m   m   a   n   d   "   )  \r
0014620                ]  \r   B   S   P   F   o   r   c   e   O   u   t
0014640    p   u   t   (   t   s   -   o   f   f   s   e   t   B   S   P
0014660    S   t   r   )  \r  \r   /   /       g   e   t       r   e   s
0014700    p   o   n   s   e  \r   l   e   t       y   e   s   N   o    
0014720    =       v   e   c       (   4       +       1   2   8   )    
0014740        /   /   l   e   n   g   t   h   +   t   y   p   e   +   c
0014760    o   d   e   +   s   t   a   t   u   s   +   s   t   r   i   n
0015000    g  \r   B   S   P 376 001  \0 214 216   R   e   a   d   B   l
0015020    o   c   k   (   t   s   ,       y   e   s   N   o   ,       0
0015040    ,       2   )  \r   B   S   P   R   e   a   d   B   l   o   c
0015060    k   (   t   s   ,       y   e   s   N   o   +   1   ,       0
0015100    ,       (   y   e   s   N   o   !   0   -   1   )       l   s
0015120    h   i   f   t       1   )  \r  \r   i   f       c   m   d    
0015140    e   q       c   m   d   V   e   r   s   i   o   n       t   h
0015160    e   n  \r               [  \r               i   f       y   e
0015200    s   N   o   !   1       n   e       c   m   d   V   e   r   s
0015220    i   o   n       %       y   e   s   N   o   !   2       n   e
0015240        0       t   h   e   n       C   a   l   l   S   w   a   t
0015260    (   "   T   S   P       v   e   r   s   i   o   n       i   n
0015300    c   o   m   p   a   t   i   b   l   e   "   )  \r            
0015320    P   u   t   T   e   m   p   l   a   t   e   (   d   s   p   ,
0015340        "   *   N   $   S   "   ,       y   e   s   N   o   +   3
0015360    )  \r               r   e   s   u   l   t   i   s       t   r
0015400    u   e  \r               ]  \r   i   f 376  \0 246 246 021    
0015420    y   e   s   N   o   !   1       e   q       c   m   d   Y   e
0015440    s       r   e   s   u   l   t   i   s       t   r   u   e  \r
0015460    i   f       y   e   s   N   o   !   1       e   q       c   m
0015500    d   N   o       t   h   e   n  \r               P   u   t   T
0015520    e   m   p   l   a   t   e   (   d   s   p   ,       "   *   N
0015540    [   N   o   ]       c   m   d       $   O       c   a   u   s
0015560    e       $   O       s   t   a   t   u   s       $   O       $
0015600    S   "   ,       c   m   d   ,       y   e   s   N   o   !   2
0015620    ,       y   e   s   N   o   !   3   ,       y   e   s   N   o
0015640    +   4   )  \r   r   e   s   u   l   t   i   s       f   a   l
0015660    s   e  \r   ]  \r 377  \0  \0   S   C   I   1   .   b   c   p
0015700    l  \0 373 233 002   r 231  \0  \0 376 001  \0   j 272   /   /
0015720        S   C   I   1   .   b   c   p   l       -   -       c   o
0015740    m   p   a   n   i   o   n       t   o       S   C   I   .   b
0015760    c   p   l  \r   /   /       L   a   s   t       m   o   d   i
0016000    f   i   e   d       M   a   y       3   0   ,       1   9   8
0016020    3           1   :   5   0       P   M       b   y       B   o
0016040    g   g   s  \r  \r   g   e   t       "   S   C   I   .   d   e
0016060    c   l   "  \r   g   e   t       "   S   t   r   e   a   m   s
0016100    .   d   "  \r  \r   e   x   t   e   r   n   a   l  \r   [  \r
0016120    /   /       o   u   t   g   o   i   n   g       p   r   o   c
0016140    e   d   u   r   e   s  \r   W   L   F   i   l   e   ;       O
0016160    t   h   e   r   F   i   l   e  \r   R   e   a   d   T   o   k
0016200    e   n   ;       O   u   t   P   u   t   ;       F   l   u   s
0016220    h   B   l   o   c   k  \r  \r   /   /       i   n   c   o   m
0016240    i   n   g       p   r   o   c   e   d   u   r   e       -   -
0016260        S   C   I  \r   T   S   P  \r  \r   /   /       i   n   c
0016300    o   m   i   n   g       p   r   o   c   e   d   u   r 376 001
0016320   \0 262   D   e   s       -   -       p   a   c   k   a   g   e
0016340    s  \r   C   o   n   c   a   t   e   n   a   t   e   S   t   r
0016360    i   n   g   s   ;       S   t   r   i   n   g   C   o   m   p
0016400    a   r   e  \r   P   u   t   T   e   m   p   l   a   t   e   ;
0016420        E   x   t   r   a   c   t   S   u   b   s   t   r   i   n
0016440    g  \r  \r   /   /       i   n   c   o   m   i   n   g       p
0016460    r   o   c   e   d   u   r   e   s       -   -       O   S  \r
0016500    O   p   e   n   F   i   l   e   ;       C   l   o   s   e   s
0016520    ;       G   e   t   s   ;       P   u   t   s   ;       E   n
0016540    d   o   f   s  \r   E   r   a   s   e   B   i   t   s   ;    
0016560    C   h   a   r   W   i   d   t   h   ;       W   s   s  \r   A
0016600    l   l   o   c   a   t   e   ;       F   r   e   e   ;       C
0016620    a   l   l   S   w   a   t  \r  \r   /   /       i   n   c   o
0016640    m   i   n   g       s   t   a   t   i   c   s       -   -    
0016660    O   S  \r   s   y   s   Z   o   n   e   ;       d   s   p   ;
0016700        k   e   y   s  \r  \r   /   /       i   n   c   o   m   i
0016720    n   g     376 001  \0 276 377   s   t   a   t   i   c   s    
0016740    -   -       S   C   I  \r   l   f   ;       i   n   ;       o
0016760    u   t   ;       c   p   u   T   y   p   e  \r   t   o   k   e
0017000    n   ;       b   o   a   r   d   ;       n   u   m   B   l   o
0017020    c   k   s  \r   b   l   o   c   k   ;       b   l   o   c   k
0017040    C   n   t   ;       r   e   c   o   r   d   ;       r   e   c
0017060    o   r   d   C   n   t  \r   ]  \r  \r   s   t   a   t   i   c
0017100        t   e   r   m   C   h   a   r  \r  \f  \r   /   /   -   -
0017120    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0017240    -   -   -   -   -   -  \r   l   e   t       W   L   F   i   l
0017260    e   (   )       b   e  \r   /   /   -   -   -   -   -   -   -
0017300    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0017320    -   -   -   -   -   -   -   - 376 001  \0 263   2   -   -   -
0017340    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0017420    -   -   -   -   -   -  \r   /   /       R   e   a   d   s    
0017440    '   B   o   a   r   d   .   w   l   '   ,       t   h   e    
0017460    w   i   r   e   l   i   s   t       p   r   o   d   u   c   e
0017500    d       b   y       R   o   u   t   e   ,  \r   /   /        
0017520    a   n   d       g   e   n   e   r   a   t   e   s       t   h
0017540    e       P   A   R   T   S       &       N   E   T   L   I   S
0017560    T       s   u   b   f   i   l   e   s       f   o   r       S
0017600    C   I   .  \r   [  \r   l   e   t       w   l   N   a   m   e
0017620        =       C   o   n   c   a   t   e   n   a   t   e   S   t
0017640    r   i   n   g   s   (   b   o   a   r   d   ,       "   .   w
0017660    l   "   )  \r   l   e   t       w   l       =       O   p   e
0017700    n   F   i   l   e   (   w   l   N   a   m   e   ,       k   s
0017720    T   y   p   e   R   e   a   d   O   n   l   y   , 376 001  \0
0017740    h 311       c   h   a   r   I   t   e   m   )  \r   F   r   e
0017760    e   (   s   y   s   Z   o   n   e   ,       w   l   N   a   m
0020000    e   )  \r   t   e   s   t       w   l  \r               i   f
0020020    s   o       [       P   u   t   T   e   m   p   l   a   t   e
0020040    (   d   s   p   ,       "   *   N   R   e   a   d   i   n   g
0020060        $   S   .   w   l   "   ,       b   o   a   r   d   )   ;
0020100        i   n       =       w   l       ]  \r               i   f
0020120    n   o   t       [       P   u   t   T   e   m   p   l   a   t
0020140    e   (   d   s   p   ,       "   *   N   F   a   i   l   e   d
0020160        t   o       o   p   e   n       $   S   .   w   l   "   ,
0020200        b   o   a   r   d   )   ;       r   e   t   u   r   n    
0020220    ]  \r  \r   W   s   s   (   d   s   p   ,       "   *   N   M
0020240    u   l   t   i   b   u   s       o   r       D   a   n   d   e
0020260    l   i   o   n       b   o   a   r   d       (   M       o   r
0020300        D   )   :       "   )  \r   l   e   t       b   o   a   r
0020320    d   T   y   p   e       =       G   e   t   s   (   k   e   y
0020340    s   ) 376 001  \0   y 221       &       1   3   7   b   ;    
0020360    P   u   t   s   (   d   s   p   ,       b   o   a   r   d   T
0020400    y   p   e   )  \r   R   e   a   d   T   o   k   e   n   (   )
0020420            /   /   b   o   a   r   d       t   y   p   e   .    
0020440    d   i   s   c   a   r   d   .  \r  \r   /   /       M   a   k
0020460    e       p   a   r   t   s       l   i   s   t  \r   W   s   s
0020500    (   o   u   t   ,       "   *   N   P   A   R   T   S   "   )
0020520   \r   l   e   t       w   i   d   t   h   ,       l   e   n   g
0020540    t   h   ,       p   i   n   s       =       n   i   l   ,    
0020560    n   i   l   ,       n   i   l  \r               [  \r        
0020600        R   e   a   d   T   o   k   e   n   (   )           /   /
0020620    p   a   r   t       d   e   s   i   g   n   a   t   o   r  \r
0020640                i   f       t   o   k   e   n   >   >   S   t   r
0020660    i   n   g   .   l   e   n   g   t   h       e   q       0    
0020700    %  \r                   (   t   o   k   e   n   >   >   S   t
0020720    r   i   n   g   .   l   e   n   g   t   h       e   q       1
0020740        &       t   o   k   e 376 001  \0 331 304   n   >   >   S
0020760    t   r   i   n   g   .   c   h   a   r   ^   1       e   q    
0021000    $   @   )       b   r   e   a   k  \r               l   e   t
0021020        d   e   s   i   g       =       E   x   t   r   a   c   t
0021040    S   u   b   s   t   r   i   n   g   (   t   o   k   e   n   ,
0021060        (   t   o   k   e   n   >   >   S   t   r   i   n   g   .
0021100    c   h   a   r   ^   1       e   q       $   #   ?       2   ,
0021120        1   )   )  \r               R   e   a   d   T   o   k   e
0021140    n   (   )  \r               l   e   t       f   i   r   s   t
0021160    S   l   a   s   h   ,       l   a   s   t   S   l   a   s   h
0021200    ,       l   e   n       =       0   ,       0   ,       t   o
0021220    k   e   n   >   >   S   t   r   i   n   g   .   l   e   n   g
0021240    t   h  \r               f   o   r       i       =       1    
0021260    t   o       l   e   n       i   f       t   o   k   e   n   >
0021300    >   S   t   r   i   n   g   .   c   h   a   r   ^   i       e
0021320    q       $   /       t   e   s   t       f   i   r   s   t   S
0021340    l   a   s   h       e   q       0  \r         376 001  \0 367
0021360  302                   i   f   s   o       f   i   r   s   t   S
0021400    l   a   s   h       =       i  \r                           i
0021420    f   n   o   t       l   a   s   t   S   l   a   s   h       =
0021440        i  \r               w   i   d   t   h       =       3   ;
0021460        f   o   r       i       =       l   a   s   t   S   l   a
0021500    s   h   +   1       t   o       l   e   n       d   o  \r    
0021520                        i   f       I   s   N   u   m   b   e   r
0021540    (   i   ,       i   )       t   h   e   n       w   i   d   t
0021560    h       =       t   o   k   e   n   >   >   S   t   r   i   n
0021600    g   .   c   h   a   r   ^   i       -       $   0  \r        
0021620        p   i   n   s       =       0   ;       f   o   r       i
0021640        =       f   i   r   s   t   S   l   a   s   h   +   1    
0021660    t   o       l   a   s   t   S   l   a   s   h   -   1       d
0021700    o  \r                           p   i   n   s       =       p
0021720    i   n   s   *   1   0       +       (   t   o   k   e   n   >
0021740    >   S   t   r   i   n   g   .   c   h   a   r   ^   i       -
0021760      376 001  \0   T 264   $   0   )  \r               l   e   n
0022000    g   t   h       =       w   i   d   t   h       e   q       1
0022020    ?           p   i   n   s   ,       p   i   n   s   /   2  \r
0022040                P   u   t   T   e   m   p   l   a   t   e   (   o
0022060    u   t   ,       "   *   N   H   O   L   E       M   O   D   U
0022100    L   E       H   M   $   2   F   0   D   $   2   F   0   D   $
0022120    2   F   0   D       $   S   "   ,       w   i   d   t   h   ,
0022140        l   e   n   g   t   h   ,       p   i   n   s   ,       d
0022160    e   s   i   g   )  \r               F   r   e   e   (   s   y
0022200    s   Z   o   n   e   ,       d   e   s   i   g   )  \r        
0022220        ]       r   e   p   e   a   t  \r   W   s   s   (   o   u
0022240    t   ,       "   *   N   E   O   S   *   N   "   )  \r  \r   /
0022260    /       M   a   k   e       n   e   t       l   i   s   t  \r
0022300    W   s   s   (   o   u   t   ,       "   *   N   N   E   T    
0022320    L   I   S   T       C   O   N   T   I   N   U   E   "   )  \r
0022340    l   e   t       f   l   u   s   h   ,       n   o   d   e   C
0022360    n   t   ,       n   e 376 001  \0 020   _   t   N   a   m   e
0022400        =       f   a   l   s   e   ,       0   ,       0  \r    
0022420            [           /   /   m   a   i   n       l   o   o   p
0022440   \r               m   a   n   i   f   e   s   t  \t   /   /   t
0022460    o   k   e   n       t   y   p   e   s  \r                    
0022500        [  \r                           c   a   l   i   b   r   a
0022520    t   e       =       1   ;       s   i   g   n   a   l       =
0022540        2   ;       b   o   a   r   d   L   o   c       =       3
0022560   \r                           g   n   d       =       4   ;    
0022600    g   n   d   N   e   t       =       5   ;       g   n   d   N
0022620    u   b       =       6  \r                           v   c   c
0022640        =       7   ;       v   c   c   N   e   t       =       8
0022660    ;       v   c   c   N   u   b       =       9  \r            
0022700                p   o   i   n   t   y   B   r   a   c   k   e   t
0022720        =       1   0   ;       p   a   r   e   n   t   h   e   s
0022740    i   s       =       1   1   ;       c   u   r   l   y   B   r
0022760    a   c   k   e   t       =       1   2  \r 376 001  \0   ~   ^
0023000                            e   d   g   e   P   i   n       =    
0023020    1   3   ;       c   o   n   n   P   i   n       =       1   4
0023040   \r                           ]  \r               R   e   a   d
0023060    T   o   k   e   n   (   )  \r               l   e   t       l
0023100    e   n       =       t   o   k   e   n   >   >   S   t   r   i
0023120    n   g   .   l   e   n   g   t   h   ;       i   f       l   e
0023140    n       e   q       0       b   r   e   a   k  \r            
0023160    l   e   t       t   o   k   e   n   T   y   p   e       =    
0023200    s   i   g   n   a   l  \r               i   f       S   t   r
0023220    i   n   g   C   o   m   p   a   r   e   (   "   C   A   L   I
0023240    B   R   A   T   E   "   ,       t   o   k   e   n   )       e
0023260    q       0       t   h   e   n       t   o   k   e   n   T   y
0023300    p   e       =       c   a   l   i   b   r   a   t   e  \r    
0023320            i   f       S   t   r   i   n   g   C   o   m   p   a
0023340    r   e   (   "   G   N   D   "   ,       t   o   k   e   n   )
0023360        e   q       0       t   h   e   n       t   o   k   e   n
0023400  376 001  \0 356 331   T   y   p   e       =       g   n   d  \r
0023420                i   f       S   t   r   i   n   g   C   o   m   p
0023440    a   r   e   (   "   G   N   D   "   ,       t   o   k   e   n
0023460    )       e   q       -   2       t   e   s   t       t   o   k
0023500    e   n   >   >   S   t   r   i   n   g   .   c   h   a   r   ^
0023520    4       e   q       $   -  \r                           i   f
0023540    s   o       i   f       I   s   N   u   m   b   e   r   (   5
0023560    ,       l   e   n   )       t   h   e   n       t   o   k   e
0023600    n   T   y   p   e       =       g   n   d   N   e   t  \r    
0023620                        i   f   n   o   t       i   f       I   s
0023640    N   u   m   b   e   r   (   4   ,       l   e   n   )       t
0023660    h   e   n       t   o   k   e   n   T   y   p   e       =    
0023700    t   e   r   m   C   h   a   r       e   q       $   :   ?    
0023720    g   n   d   N   e   t   ,       g   n   d   N   u   b  \r    
0023740            i   f       S   t   r   i   n   g   C   o   m   p   a
0023760    r   e   (   "   V   C   C   "   ,       t   o   k   e   n   )
0024000        e   q       0 376 001  \0   . 020       t   h   e   n    
0024020    t   o   k   e   n   T   y   p   e       =       v   c   c  \r
0024040                i   f       S   t   r   i   n   g   C   o   m   p
0024060    a   r   e   (   "   V   C   C   "   ,       t   o   k   e   n
0024100    )       e   q       -   2       t   e   s   t       t   o   k
0024120    e   n   >   >   S   t   r   i   n   g   .   c   h   a   r   ^
0024140    4       e   q       $   -  \r                           i   f
0024160    s   o       i   f       I   s   N   u   m   b   e   r   (   5
0024200    ,       l   e   n   )       t   h   e   n       t   o   k   e
0024220    n   T   y   p   e       =       v   c   c   N   e   t  \r    
0024240                        i   f   n   o   t       i   f       I   s
0024260    N   u   m   b   e   r   (   4   ,       l   e   n   )       t
0024300    h   e   n       t   o   k   e   n   T   y   p   e       =    
0024320    t   e   r   m   C   h   a   r       e   q       $   :   ?    
0024340    v   c   c   N   e   t   ,       v   c   c   N   u   b  \r    
0024360            l   e   t       f   i   r   s   t   C   h   a   r   ,
0024400        l   a   s   t   C   h   a   r     376 001  \0 204 363   =
0024420        t   o   k   e   n   >   >   S   t   r   i   n   g   .   c
0024440    h   a   r   ^   1   ,       t   o   k   e   n   >   >   S   t
0024460    r   i   n   g   .   c   h   a   r   ^   l   e   n  \r        
0024500        i   f       f   i   r   s   t   C   h   a   r       e   q
0024520        $   (       &       l   a   s   t   C   h   a   r       e
0024540    q       $   )       t   h   e   n       t   o   k   e   n   T
0024560    y   p   e       =       p   a   r   e   n   t   h   e   s   i
0024600    s  \r               i   f       f   i   r   s   t   C   h   a
0024620    r       e   q       $   {       &       l   a   s   t   C   h
0024640    a   r       e   q       $   }       t   h   e   n       t   o
0024660    k   e   n   T   y   p   e       =       c   u   r   l   y   B
0024700    r   a   c   k   e   t  \r               i   f       f   i   r
0024720    s   t   C   h   a   r       e   q       $   <       &       l
0024740    a   s   t   C   h   a   r       e   q       $   >       t   h
0024760    e   n       t   o   k   e   n   T   y   p   e       =       p
0025000    o   i   n   t   y   B   r   a   c   k   e   t  \r         376
0025020  001  \0 027 246       i   f       (   f   i   r   s   t   C   h
0025040    a   r       e   q       $   E       %       f   i   r   s   t
0025060    C   h   a   r       e   q       $   C   )       &       I   s
0025100    N   u   m   b   e   r   (   2   ,       l   e   n   )       t
0025120    h   e   n  \r                           t   o   k   e   n   T
0025140    y   p   e       =       f   i   r   s   t   C   h   a   r    
0025160    e   q       $   E   ?       e   d   g   e   P   i   n   ,    
0025200    c   o   n   n   P   i   n  \r               i   f       t   o
0025220    k   e   n   T   y   p   e       e   q       s   i   g   n   a
0025240    l       &       (   t   e   r   m   C   h   a   r       e   q
0025260        $   *   S       %       f   i   r   s   t   C   h   a   r
0025300        e   q       $   #   )       t   h   e   n       t   o   k
0025320    e   n   T   y   p   e       =       b   o   a   r   d   L   o
0025340    c  \r  \f  \r               /   /       N   e   t   L   i   s
0025360    t       (   c   o   n   t   '   d   )  \r  \r               i
0025400    f       t   o   k   e   n   T   y   p   e       e   q       e
0025420    d   g   e   P 376 001  \0   / 245   i   n       %       t   o
0025440    k   e   n   T   y   p   e       e   q       c   o   n   n   P
0025460    i   n       %       t   o   k   e   n   T   y   p   e       e
0025500    q       b   o   a   r   d   L   o   c       t   h   e   n  \r
0025520                            [  \r                           i   f
0025540        f   l   u   s   h       l   o   o   p  \r                
0025560            i   f       n   o   d   e   C   n   t       r   e   m
0025600        5       e   q       0       t   e   s   t       n   o   d
0025620    e   C   n   t       n   e       0       &       n   o   d   e
0025640    C   n   t       r   e   m       5   0       n   e       0  \r
0025660                                        i   f   s   o       W   s
0025700    s   (   o   u   t   ,       "   $   *   N               "   )
0025720   \r                                       i   f   n   o   t    
0025740    P   u   t   T   e   m   p   l   a   t   e   (   o   u   t   ,
0025760        "   *   N   N   N       $   S       "   ,       n   e   t
0026000    N   a   m   e   )  \r                           n   o   d   e
0026020    C   n   t       =       n   o   d 376 001  \0   F 265   e   C
0026040    n   t       +   1  \r                           ]  \r  \r    
0026060            s   w   i   t   c   h   o   n       t   o   k   e   n
0026100    T   y   p   e       i   n   t   o  \r                        
0026120    [  \r                           c   a   s   e       c   a   l
0026140    i   b   r   a   t   e   :       [       f   l   u   s   h    
0026160    =       t   r   u   e   ;       e   n   d   c   a   s   e    
0026200    ]  \r                           c   a   s   e       s   i   g
0026220    n   a   l   :  \r                                       [  \r
0026240                                        i   f       n   e   t   N
0026260    a   m   e       n   e       0       t   h   e   n       F   r
0026300    e   e   (   s   y   s   Z   o   n   e   ,       n   e   t   N
0026320    a   m   e   )  \r                                       n   e
0026340    t   N   a   m   e       =       E   x   t   r   a   c   t   S
0026360    u   b   s   t   r   i   n   g   (   t   o   k   e   n   )  \r
0026400                                        f   l   u   s   h   ,    
0026420    n   o   d   e   C   n   t       =       f   a   l   s 376 001
0026440   \0   i   j   e   ,       0  \r                                
0026460        e   n   d   c   a   s   e  \r                            
0026500            ]  \r                           c   a   s   e       g
0026520    n   d   N   e   t   :       t   o   k   e   n   >   >   S   t
0026540    r   i   n   g   .   l   e   n   g   t   h       =       3  \r
0026560                            c   a   s   e       g   n   d   :    
0026600    t   e   s   t       S   t   r   i   n   g   C   o   m   p   a
0026620    r   e   (   "   G   N   D   "   ,       n   e   t   N   a   m
0026640    e   )       i   f   s   o       d   o   c   a   s   e       s
0026660    i   g   n   a   l       i   f   n   o   t       e   n   d   c
0026700    a   s   e  \r                           c   a   s   e       v
0026720    c   c   N   e   t   :       t   o   k   e   n   >   >   S   t
0026740    r   i   n   g   .   l   e   n   g   t   h       =       3  \r
0026760                            c   a   s   e       v   c   c   :    
0027000    t   e   s   t       S   t   r   i   n   g   C   o   m   p   a
0027020    r   e   (   "   V   C   C   "   ,       n   e   t   N   a   m
0027040    e   )     376 001  \0 277 337   i   f   s   o       d   o   c
0027060    a   s   e       s   i   g   n   a   l       i   f   n   o   t
0027100        e   n   d   c   a   s   e  \r                           c
0027120    a   s   e       e   d   g   e   P   i   n   :       c   a   s
0027140    e       c   o   n   n   P   i   n   :  \r                    
0027160                    [  \r                                       s
0027200    w   i   t   c   h   o   n       b   o   a   r   d   T   y   p
0027220    e       i   n   t   o  \r                                    
0027240                [  \r                                            
0027260        c   a   s   e       $   M   :       [       M   u   l   t
0027300    i   b   u   s   (   )   ;       e   n   d   c   a   s   e    
0027320    ]  \r                                                   c   a
0027340    s   e       $   D   :       t   e   s   t       t   o   k   e
0027360    n   T   y   p   e       e   q       e   d   g   e   P   i   n
0027400   \r                                                            
0027420    i   f   s   o       [       D   a   n   d   e   l   i   o   n
0027440    E   (   )   ;       e   n   d 376 001  \0   "   ~   c   a   s
0027460    e       ]  \r                                                
0027500                i   f   n   o   t       [       D   a   n   d   e
0027520    l   i   o   n   C   (   )   ;       e   n   d   c   a   s   e
0027540        ]  \r                                                   d
0027560    e   f   a   u   l   t   :       [       U   n   i   v   e   r
0027600    s   a   l   (   )   ;       e   n   d   c   a   s   e       ]
0027620   \r                                                   ]  \r    
0027640                                    e   n   d   c   a   s   e  \r
0027660                                        ]  \r                    
0027700        c   a   s   e       b   o   a   r   d   L   o   c   :  \r
0027720                                        [  \r                    
0027740                    l   e   t       d   o   t       =       0   ;
0027760        f   o   r       i       =       1       t   o       l   e
0030000    n       d   o  \r                                            
0030020        i   f       t   o   k   e   n   >   >   S   t   r   i   n
0030040    g   .   c   h   a   r   ^   i       e   q       $ 376 001  \0
0030060  274 003   .       t   h   e   n       [       d   o   t       =
0030100        i   ;       b   r   e   a   k       ]  \r                
0030120                        l   e   t       f   i   r   s   t   C   h
0030140    a   r       =       t   o   k   e   n   >   >   S   t   r   i
0030160    n   g   .   c   h   a   r   ^   1       e   q       $   #   ?
0030200        2   ,       1  \r                                       f
0030220    o   r       i       =       f   i   r   s   t   C   h   a   r
0030240        t   o       d   o   t   -   1       d   o       P   u   t
0030260    s   (   o   u   t   ,       t   o   k   e   n   >   >   S   t
0030300    r   i   n   g   .   c   h   a   r   ^   i   )  \r            
0030320                            P   u   t   s   (   o   u   t   ,    
0030340    $   *   S   )  \r                                       f   o
0030360    r       i       =       d   o   t   +   1       t   o       l
0030400    e   n   -   1       d   o       P   u   t   s   (   o   u   t
0030420    ,       t   o   k   e   n   >   >   S   t   r   i   n   g   .
0030440    c   h   a   r   ^   i   )  \r                                
0030460        P 376 001  \0 336 267   u   t   s   (   o   u   t   ,    
0030500    $   *   S   )  \r                                       e   n
0030520    d   c   a   s   e  \r                                       ]
0030540   \r                           ]  \r               ]       r   e
0030560    p   e   a   t  \r   W   s   s   (   o   u   t   ,       "   *
0030600    N   E   O   S   *   N   "   )  \r   C   l   o   s   e   s   (
0030620    w   l   )  \r   ]  \r  \f  \r   /   /   -   -   -   -   -   -
0030640    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0030760    -   -  \r   a   n   d       U   n   i   v   e   r   s   a   l
0031000    (   )       b   e  \r   /   /   -   -   -   -   -   -   -   -
0031020    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0031060    -   -   -   -   -   -   - 376 001  \0  \b   C   -   -   -   -
0031100    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0031140    -   -   -   -   -  \r   [  \r   P   u   t   s   (   o   u   t
0031160    ,       t   o   k   e   n   >   >   S   t   r   i   n   g   .
0031200    c   h   a   r   ^   1   )  \r   P   u   t   s   (   o   u   t
0031220    ,       $   *   S   )  \r   f   o   r       i       =       2
0031240        t   o       t   o   k   e   n   >   >   S   t   r   i   n
0031260    g   .   l   e   n   g   t   h       d   o  \r               P
0031300    u   t   s   (   o   u   t   ,       t   o   k   e   n   >   >
0031320    S   t   r   i   n   g   .   c   h   a   r   ^   i   )  \r   P
0031340    u   t   s   (   o   u   t   ,       $   *   S   )  \r   ]  \r
0031360   \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -   -
0031400    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0031460    -   -   -   -   -   -   -   -   -   -   -   - 376 001  \0 202
0031500  262   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0031520   \r   a   n   d       D   a   n   d   e   l   i   o   n   E   (
0031540    )       b   e  \r   /   /   -   -   -   -   -   -   -   -   -
0031560    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0031660    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -  \r
0031700    [  \r   l   e   t       n   u   m   b   e   r       =       0
0031720   \r   f   o   r       i       =       2       t   o       t   o
0031740    k   e   n   >   >   S   t   r   i   n   g   .   l   e   n   g
0031760    t   h       d   o  \r               n   u   m   b   e   r    
0032000    =       n   u   m   b   e   r   *   1   0       +       t   o
0032020    k   e   n   >   >   S   t   r   i   n   g   .   c   h   a   r
0032040    ^   i       -   $   0  \r  \r   l   e   t       c   o   n   n
0032060    ,       s   i   d   e   ,       p   i   n       =       n   i
0032100    l 376 001  \0 371   O   ,       n   i   l   ,       n   i   l
0032120   \r   i   f       n   u   m   b   e   r       g   e       1    
0032140    &       n   u   m   b   e   r       l   e       5   0       t
0032160    h   e   n  \r               [       c   o   n   n       =    
0032200    $   2   ;       s   i   d   e       =       $   T   ;       p
0032220    i   n       =       5   1   -   n   u   m   b   e   r       ]
0032240   \r   i   f       n   u   m   b   e   r       g   e       5   1
0032260        &       n   u   m   b   e   r       l   e       1   0   0
0032300        t   h   e   n  \r               [       c   o   n   n    
0032320    =       $   1   ;       s   i   d   e       =       $   T   ;
0032340        p   i   n       =       1   0   1   -   n   u   m   b   e
0032360    r       ]  \r   i   f       n   u   m   b   e   r       g   e
0032400        1   0   1       &       n   u   m   b   e   r       l   e
0032420        1   5   0       t   h   e   n  \r               [       c
0032440    o   n   n       =       $   2   ;       s   i   d   e       =
0032460        $   B   ;       p   i   n       =       1   5   1   -   n
0032500    u   m   b   e   r     376 001  \0 330 246   ]  \r   i   f    
0032520    n   u   m   b   e   r       g   e       1   5   1       &    
0032540    n   u   m   b   e   r       l   e       2   0   0       t   h
0032560    e   n  \r               [       c   o   n   n       =       $
0032600    1   ;       s   i   d   e       =       $   B   ;       p   i
0032620    n       =       2   0   1   -   n   u   m   b   e   r       ]
0032640   \r  \r   P   u   t   T   e   m   p   l   a   t   e   (   o   u
0032660    t   ,       "   P   $   C   -   $   C       $   D       "   ,
0032700        c   o   n   n   ,       s   i   d   e   ,       p   i   n
0032720    )  \r   ]  \r  \r   /   /   -   -   -   -   -   -   -   -   -
0032740    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0033040    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -  \r
0033060    a   n   d       D   a   n   d   e   l   i   o   n   C   (   )
0033100        b   e  \r   /   /   -   -   -   -   - 376 001  \0   & 003
0033120    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0033240    -   -   -  \r   [  \r   l   e   t       n   u   m   b   e   r
0033260        =       0  \r   f   o   r       i       =       2       t
0033300    o       t   o   k   e   n   >   >   S   t   r   i   n   g   .
0033320    l   e   n   g   t   h       d   o  \r               n   u   m
0033340    b   e   r       =       n   u   m   b   e   r   *   1   0    
0033360    +       t   o   k   e   n   >   >   S   t   r   i   n   g   .
0033400    c   h   a   r   ^   i       -   $   0  \r  \r   l   e   t    
0033420    c   o   n   n       =       n   u   m   b   e   r       l   s
0033440        1   0   0   ?       $   1   ,       $   2  \r   l   e   t
0033460        p   i   n       =       n   u   m   b   e   r       l   s
0033500        1   0   0   ?       n   u   m   b   e   r   ,       n   u
0033520  376 001  \0   A   d   m   b   e   r   -   1   0   0  \r  \r   P
0033540    u   t   T   e   m   p   l   a   t   e   (   o   u   t   ,    
0033560    "   J   $   C       $   D       "   ,       c   o   n   n   ,
0033600        p   i   n   )  \r   ]  \r  \r   /   /   -   -   -   -   -
0033620    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0033740    -   -   -  \r   a   n   d       M   u   l   t   i   b   u   s
0033760    (   )       b   e  \r   /   /   -   -   -   -   -   -   -   -
0034000    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0034120   \r   [  \r   t   e 376 001  \0 002 266   s   t       t   o   k
0034140    e   n   >   >   S   t   r   i   n   g   .   c   h   a   r   ^
0034160    1       e   q       $   C  \r               i   f   s   o    
0034200    [       P   u   t   s   (   o   u   t   ,       $   J   )   ;
0034220        P   u   t   s   (   o   u   t   ,       t   o   k   e   n
0034240    >   >   S   t   r   i   n   g   .   c   h   a   r   ^   2    
0034260    -   2   )       ]  \r               i   f   n   o   t       [
0034300        P   u   t   s   (   o   u   t   ,       $   P   )   ;    
0034320    P   u   t   s   (   o   u   t   ,       t   o   k   e   n   >
0034340    >   S   t   r   i   n   g   .   c   h   a   r   ^   2   )    
0034360    ]  \r   W   s   s   (   o   u   t   ,       (   t   o   k   e
0034400    n   >   >   S   t   r   i   n   g   .   c   h   a   r   ^   4
0034420        &       1   )       n   e       0   ?       "   -   T    
0034440    "   ,       "   -   B       "   )  \r   l   e   t       n    
0034460    =       (   (   1   0   *   (   t   o   k   e   n   >   >   S
0034500    t   r   i   n   g   .   c   h   a   r   ^   3       -   $   0
0034520    )   )       +       (   t   o   k   e 376 001  \0   i 236   n
0034540    >   >   S   t   r   i   n   g   .   c   h   a   r   ^   4    
0034560    -   $   0   )       +   1   )   /   2  \r   P   u   t   s   (
0034600    o   u   t   ,       $   0       +       n   /   1   0   )  \r
0034620    P   u   t   s   (   o   u   t   ,       $   0       +       n
0034640        r   e   m       1   0   )  \r   P   u   t   s   (   o   u
0034660    t   ,       $   *   S   )  \r   ]  \r  \f  \r   /   /   -   -
0034700    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0035020    -   -   -   -   -   -  \r   a   n   d       O   t   h   e   r
0035040    F   i   l   e   (   )       b   e  \r   /   /   -   -   -   -
0035060    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0035120    -   -   -   -   -   -   -   -   -   -   -   -   -   -   - 376
0035140  001  \0 273 022   -   -   -   -   -   -   -   -   -   -   -   -
0035160    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0035200    -   -   -   -   -   -   -   -   -  \r   /   /       R   e   a
0035220    d   s       B   o   a   r   d   .   o   t   h   e   r       a
0035240    n   d       w   r   i   t   e   s       i   t       u   n   m
0035260    o   d   i   f   i   e   d       t   o       t   a   p   e   .
0035300   \r   /   /       R   e   c   o   r   d   s       a   r   e    
0035320    d   e   l   i   m   i   t   e   d       b   y       b   a   r
0035340    e       c   a   r   r   i   a   g   e       r   e   t   u   r
0035360    n   s   .  \r   [  \r   l   e   t       o   t   h   e   r   N
0035400    a   m   e       =       C   o   n   c   a   t   e   n   a   t
0035420    e   S   t   r   i   n   g   s   (   b   o   a   r   d   ,    
0035440    "   .   o   t   h   e   r   "   )  \r   l   e   t       o   t
0035460    h   e   r       =       O   p   e   n   F   i   l   e   (   o
0035500    t   h   e   r   N   a   m   e   ,       k   s   T   y   p   e
0035520    R   e   a   d   O   n   l   y   ,       c   h   a   r   I   t
0035540    e   m   )  \r 376 001  \0 324   p   F   r   e   e   (   s   y
0035560    s   Z   o   n   e   ,       o   t   h   e   r   N   a   m   e
0035600    )  \r   t   e   s   t       o   t   h   e   r  \r            
0035620    i   f   s   o       [       P   u   t   T   e   m   p   l   a
0035640    t   e   (   d   s   p   ,       "   *   N   R   e   a   d   i
0035660    n   g       $   S   .   o   t   h   e   r   "   ,       b   o
0035700    a   r   d   )   ;       i   n       =       o   t   h   e   r
0035720        ]  \r               i   f   n   o   t       [       P   u
0035740    t   T   e   m   p   l   a   t   e   (   d   s   p   ,       "
0035760    *   N   F   a   i   l   e   d       t   o       o   p   e   n
0036000        $   S   .   o   t   h   e   r   "   ,       b   o   a   r
0036020    d   )   ;       r   e   t   u   r   n       ]  \r  \r   u   n
0036040    t   i   l       E   n   d   o   f   s   (   o   t   h   e   r
0036060    )       d   o       P   u   t   s   (   o   u   t   ,       G
0036100    e   t   s   (   o   t   h   e   r   )   )  \r  \r   P   u   t
0036120    s   (   o   u   t   ,       $   *   N   )  \r   C   l   o   s
0036140    e   s   (   o   t   h   e   r   ) 376 001  \0   8 366  \r   ]
0036160   \r  \f  \r   /   /   -   -   -   -   -   -   -   -   -   -   -
0036200    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0036300    -   -   -   -   -   -   -   -   -   -   -   -   -  \r   a   n
0036320    d       O   u   t   P   u   t   (   s   t   ,       c   h   a
0036340    r   )       b   e  \r   /   /   -   -   -   -   -   -   -   -
0036360    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0036500   \r   /   /       S   T   .   p   u   t   s       o   p   e   r
0036520    a   t   i   o   n       f   o   r       t   h   e       s   t
0036540    r   e   a   m       '   o   u   t   '   .  \r   /   / 376 001
0036560   \0   $ 275       I   t       f   e   e   d   s       c   h   a
0036600    r   a   c   t   e   r   s       t   o       a       p   l   a
0036620    i   n       t   e   x   t       l   i   s   t   i   n   g    
0036640    f   i   l   e       a   n   d       t   o       t   h   e    
0036660    t   a   p   e   .  \r   /   /       C   a   r   r   i   a   g
0036700    e       r   e   t   u   r   n   s       a   r   e       r   e
0036720    p   l   a   c   e   d       b   y       r   e   c   o   r   d
0036740        b   o   u   n   d   a   r   i   e   s       o   n       t
0036760    h   e       t   a   p   e   .  \r   [  \r   P   u   t   s   (
0037000    l   f   ,       c   h   a   r   )  \r   P   u   t   s   (   d
0037020    s   p   ,       c   h   a   r   )  \r   i   f       c   h   a
0037040    r       n   e       $   *   N       t   h   e   n  \r        
0037060        [  \r               r   e   c   o   r   d   >   >   B   y
0037100    t   e   ^   r   e   c   o   r   d   C   n   t       =       c
0037120    h   a   r  \r               r   e   c   o   r   d   C   n   t
0037140        =       r   e   c   o   r   d   C   n   t       +   1  \r
0037160              376 001  \0 032   y   i   f       r   e   c   o   r
0037200    d   C   n   t       e   q       (   c   p   u   T   y   p   e
0037220        e   q       $   V   ?       8   0   ,       8   1   )    
0037240    t   h   e   n       C   a   l   l   S   w   a   t   (   "   R
0037260    e   c   o   r   d       t   o   o       l   o   n   g   "   )
0037300   \r               r   e   t   u   r   n  \r               ]  \r
0037320   \r   /   /       e   n   d       o   f       r   e   c   o   r
0037340    d  \r   t   e   s   t       c   p   u   T   y   p   e       e
0037360    q       $   V  \r               i   f   s   o           /   /
0037400    R   e   c   L   e   n       =       v   a   r   ,       m   a
0037420    x       7   4   ,       B   l   k   L   e   n       =       2
0037440    0   4   8   ,       F   o   r   t   r   a   n       c   a   r
0037460    r   i   a   g   e       c   o   n   t   r   o   l  \r        
0037500                    [  \r                           i   f       r
0037520    e   c   o   r   d   C   n   t       e   q       5       t   h
0037540    e   n       r   e   c   o   r   d   C   n   t       =       4
0037560   \r                           i 376 001  \0 247 025   f       2
0037600    0   4   8   -   b   l   o   c   k   C   n   t       l   s    
0037620    r   e   c   o   r   d   C   n   t       t   h   e   n       F
0037640    l   u   s   h   B   l   o   c   k   (   )  \r                
0037660            r   e   c   o   r   d   >   >   B   y   t   e   ^   0
0037700        =       $   0  \r                           r   e   c   o
0037720    r   d   >   >   B   y   t   e   ^   1       =       $   0  \r
0037740                            r   e   c   o   r   d   >   >   B   y
0037760    t   e   ^   2       =       $   0       +       r   e   c   o
0040000    r   d   C   n   t   /   1   0  \r                           r
0040020    e   c   o   r   d   >   >   B   y   t   e   ^   3       =    
0040040    $   0       +       r   e   c   o   r   d   C   n   t       r
0040060    e   m       1   0  \r                           r   e   c   o
0040100    r   d   >   >   B   y   t   e   ^   4       =       $   *   S
0040120            /   /   F   o   r   t   r   a   n       c   a   r   r
0040140    i   a   g   e       c   o   n   t   r   o   l   !  \r        
0040160                    f   o   r       i       =       0 376 001  \0
0040200    ` 360       t   o       r   e   c   o   r   d   C   n   t   -
0040220    1       d   o  \r                                       b   l
0040240    o   c   k   >   >   B   y   t   e   ^   (   b   l   o   c   k
0040260    C   n   t   +   i   )       =       r   e   c   o   r   d   >
0040300    >   B   y   t   e   ^   i  \r                           b   l
0040320    o   c   k   C   n   t       =       b   l   o   c   k   C   n
0040340    t       +       r   e   c   o   r   d   C   n   t  \r        
0040360                    r   e   c   o   r   d   C   n   t       =    
0040400    5  \r                           ]  \r               i   f   n
0040420    o   t           /   /   R   e   c   L   e   n       =       8
0040440    0   ,       B   l   k   L   e   n       =       8   0   0    
0040460        (   P   r   i   m   e       c   o   m   p   u   t   e   r
0040500        s   y   s   t   e   m   )  \r                           [
0040520   \r                           i   f       b   l   o   c   k   C
0040540    n   t       e   q       8   0   0       t   h   e   n       F
0040560    l   u   s   h   B   l   o   c   k   (   )  \r                
0040600          376 001  \0 027  \0   f   o   r       i       =       0
0040620        t   o       r   e   c   o   r   d   C   n   t   -   1    
0040640    d   o  \r                                       b   l   o   c
0040660    k   >   >   B   y   t   e   ^   (   b   l   o   c   k   C   n
0040700    t   +   i   )       =       r   e   c   o   r   d   >   >   B
0040720    y   t   e   ^   i  \r                           f   o   r    
0040740    i       =       r   e   c   o   r   d   C   n   t       t   o
0040760        7   9       d   o  \r                                    
0041000    b   l   o   c   k   >   >   B   y   t   e   ^   (   b   l   o
0041020    c   k   C   n   t   +   i   )       =       $   *   S        
0041040    /   /   p   a   d       r   e   c   o   r   d       w   i   t
0041060    h       $   *   S  \r                           b   l   o   c
0041100    k   C   n   t       =       b   l   o   c   k   C   n   t    
0041120    +       8   0  \r                           r   e   c   o   r
0041140    d   C   n   t       =       0  \r                           ]
0041160   \r   ]  \r  \r   /   /   -   -   -   -   -   -   -   -   -   -
0041200    -   -   -   -   -   -   - 376 001  \0 322 254   -   -   -   -
0041220    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0041320    -   -   -  \r   a   n   d       F   l   u   s   h   B   l   o
0041340    c   k   (   )       b   e  \r   /   /   -   -   -   -   -   -
0041360    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0041500    -   -  \r   /   /       F   l   u   s   h   e   s       t   h
0041520    e       c   u   r   r   e   n   t       b   l   o   c   k    
0041540    t   o       t   a   p   e  \r   [  \r   i   f       b   l   o
0041560    c   k   C   n   t       e   q       0       r   e   t   u   r
0041600    n  \r   t   e   s   t       c   p   u   T   y 376 001  \0  \t
0041620  177   p   e       e   q       $   V  \r               i   f   s
0041640    o  \r                           [  \r                        
0041660    f   o   r       i       =       b   l   o   c   k   C   n   t
0041700        t   o       2   0   4   7       d   o       b   l   o   c
0041720    k   >   >   B   y   t   e   ^   i       =       1   3   6   b
0041740            /   /   p   a   d       b   l   o   c   k       w   i
0041760    t   h       $   *   1   3   6  \r                           T
0042000    S   P   (   c   m   d   W   r   i   t   e   R   e   c   o   r
0042020    d   ,       b   l   o   c   k   ,       0   ,       2   0   4
0042040    8   )  \r                           ]  \r               i   f
0042060    n   o   t  \r                           [  \r                
0042100            f   o   r       i       =       b   l   o   c   k   C
0042120    n   t       t   o       7   9   9       d   o       b   l   o
0042140    c   k   >   >   B   y   t   e   ^   i       =       $   *   S
0042160            /   /   p   a   d       b   l   o   c   k       w   i
0042200    t   h       $   *   S  \r                           T   S   P
0042220    ( 376 001  \0 025 365   c   m   d   W   r   i   t   e   R   e
0042240    c   o   r   d   ,       b   l   o   c   k   ,       0   ,    
0042260    8   0   0   )  \r                           ]  \r   n   u   m
0042300    B   l   o   c   k   s       =       n   u   m   B   l   o   c
0042320    k   s       +   1  \r   b   l   o   c   k   C   n   t       =
0042340        0  \r   ]  \r  \f  \r   /   /   -   -   -   -   -   -   -
0042360    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0042500    -  \r   a   n   d       R   e   a   d   T   o   k   e   n   (
0042520    )       b   e  \r   /   /   -   -   -   -   -   -   -   -   -
0042540    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0042620    -   -   -   -   -   - 376 001  \0 314   -   -   -   -   -   -
0042640    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0042660    -   -   -   -  \r   /   /       R   e   a   d   s       a    
0042700    t   o   k   e   n       f   r   o   m       t   h   e       '
0042720    i   n   '       s   t   r   e   a   m       a   n   d       p
0042740    u   t   s       i   t       i   n       '   t   o   k   e   n
0042760    '   .  \r   /   /       N   o   t   e       t   h   a   t    
0043000    i   t       m   a   y       h   a   v   e       0       c   h
0043020    a   r   a   c   t   e   r   s       i   f       E   O   F    
0043040    (   d   i   s   k       s   t   r   e   a   m   )       o   r
0043060        <   D   e   l   >       (   k   e   y       s   t   r   e
0043100    a   m   )   .  \r   /   /       T   e   r   m   i   n   a   t
0043120    i   n   g       c   h   a   r   a   c   t   e   r       i   s
0043140        l   e   f   t       i   n       s   t   a   t   i   c    
0043160    '   t   e   r   m   C   h   a   r   '   .  \r   [  \r   l   e
0043200    t       c   o   u   n   t       =       0  \r   u   n   t   i
0043220    l       E   n   d   o   f   s   (   i   n 376 001  \0   @ 204
0043240    )       &       i   n       n   e       k   e   y   s       d
0043260    o  \r               [  \r               t   e   r   m   C   h
0043300    a   r       =       G   e   t   s   (   i   n   )  \r        
0043320        s   w   i   t   c   h   o   n       t   e   r   m   C   h
0043340    a   r       i   n   t   o  \r                           [  \r
0043360                            c   a   s   e       $   *   0   0   1
0043400    :       c   a   s   e       $   *   0   1   0   :  \r        
0043420                                [  \r                            
0043440            i   f       c   o   u   n   t       n   e       0    
0043460    &       i   n       e   q       k   e   y   s       t   h   e
0043500    n  \r                                                   [  \r
0043520                                                    E   r   a   s
0043540    e   B   i   t   s   (   d   s   p   ,       -   C   h   a   r
0043560    W   i   d   t   h   (   d   s   p   ,       t   o   k   e   n
0043600    >   >   S   t   r   i   n   g   .   c   h   a   r   ^   c   o
0043620    u   n   t   )   )  \r                                        
0043640  376 001  \0   6   #           c   o   u   n   t       =       c
0043660    o   u   n   t       -   1  \r                                
0043700                    ]  \r                                       e
0043720    n   d   c   a   s   e  \r                                    
0043740    ]  \r                           c   a   s   e       $   ;   :
0043760   \t   /   /   f   l   u   s   h       i   n   p   u   t       s
0044000    t   r   e   a   m       u   n   t   i   l       C   R  \r    
0044020                                    u   n   t   i   l       E   n
0044040    d   o   f   s   (   i   n   )       %       G   e   t   s   (
0044060    i   n   )       e   q       $   *   N       l   o   o   p    
0044100        /   /   f   a   l   l       t   h   r   o   u   g   h  \r
0044120                            c   a   s   e       $   *   N   :    
0044140    c   a   s   e       $   *   S   :       c   a   s   e       $
0044160    *   T   :       c   a   s   e       $   :   :  \r            
0044200                            [  \r                                
0044220        i   f       c   o   u   n   t       n   e       0       b
0044240    r   e   a   k  \r 376 001  \0 314   z                        
0044260                e   n   d   c   a   s   e  \r                    
0044300                    ]  \r                           c   a   s   e
0044320        $   *   1   7   7   :  \r                                
0044340        i   f       i   n       e   q       k   e   y   s       t
0044360    h   e   n  \r                                                
0044400    [       W   s   s   (   d   s   p   ,       "       X   X   X
0044420        "   )   ;       c   o   u   n   t       =       0   ;    
0044440    b   r   e   a   k       ]  \r                           d   e
0044460    f   a   u   l   t   :  \r                                    
0044500    [  \r                                       c   o   u   n   t
0044520        =       c   o   u   n   t       +   1  \r                
0044540                        i   f       t   e   r   m   C   h   a   r
0044560        g   e       $   a       &       t   e   r   m   C   h   a
0044600    r       l   e       $   z       t   h   e   n       t   e   r
0044620    m   C   h   a   r       =       t   e   r   m   C   h   a   r
0044640        &       1   3   7   b  \r         376 001  \0 272   ]    
0044660                            i   f       t   e   r   m   C   h   a
0044700    r       e   q       $   _       t   h   e   n       t   e   r
0044720    m   C   h   a   r       =       $   <  \r                    
0044740                    t   o   k   e   n   >   >   S   t   r   i   n
0044760    g   .   c   h   a   r   ^   c   o   u   n   t       =       t
0045000    e   r   m   C   h   a   r  \r                                
0045020        i   f       i   n       e   q       k   e   y   s       t
0045040    h   e   n       P   u   t   s   (   d   s   p   ,       t   e
0045060    r   m   C   h   a   r   )  \r                                
0045100        e   n   d   c   a   s   e  \r                            
0045120            ]  \r                           ]  \r               ]
0045140   \r   t   o   k   e   n   >   >   S   t   r   i   n   g   .   l
0045160    e   n   g   t   h       =       c   o   u   n   t  \r   ]  \r
0045200   \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -   -
0045220    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0045240    -   -   -   -   -   -   -   -   -   -   -   -   -   -   - 376
0045260  001  \0 333  \f   -   -   -   -   -   -   -   -   -   -   -   -
0045300    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0045340   \r   a   n   d       I   s   N   u   m   b   e   r   (   f   i
0045360    r   s   t   ,       l   a   s   t   )       =       v   a   l
0045400    o   f  \r   /   /   -   -   -   -   -   -   -   -   -   -   -
0045420    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0045520    -   -   -   -   -   -   -   -   -   -   -   -   -  \r   [  \r
0045540    i   f       l   a   s   t       l   s       f   i   r   s   t
0045560        r   e   s   u   l   t   i   s       f   a   l   s   e  \r
0045600    f   o   r       i       =       f   i   r   s   t       t   o
0045620        l   a   s   t       d   o  \r               i   f       t
0045640    o   k   e   n   >   >   S   t   r   i   n   g   .   c   h   a
0045660    r   ^   i     376  \0   B 271 016   l   s       $   0       %
0045700        t   o   k   e   n   >   >   S   t   r   i   n   g   .   c
0045720    h   a   r   ^   i       g   r       $   9       r   e   s   u
0045740    l   t   i   s       f   a   l   s   e  \r   r   e   s   u   l
0045760    t   i   s       t   r   u   e  \r   ]  \r 377  \0  \0   L   o
0046000    a   d   S   C   I   .   c   m  \0 373 232   f   0   Z  \0  \0
0046020  376 001  \0   ( 222   B   L   D   R   /   L   V       S   C   I
0046040        S   C   I   1       ^  \r   ^  \r   P   u   p   B   S   P
0046060    O   p   e   n   C   l   o   s   e       P   u   p   B   S   P
0046100    S   t   r   e   a   m   s       P   u   p   B   S   P   P   r
0046120    o   t       P   u   p   B   S   P   A       P   u   p   B   S
0046140    P   B   l   o   c   k       ^  \r   P   u   p   R   T   P   O
0046160    p   e   n   C   l   o   s   e       P   u   p   R   T   P    
0046200    P   u   p   N   a   m   e   L   o   o   k   u   p       ^  \r
0046220    P   u   p   1   O   p   e   n   C   l   o   s   e       P   u
0046240    p   1   B       P   u   p   A   l   1   A       P   u   p   R
0046260    o   u   t   e       P   u   p   D   u   m   m   y   G   a   t
0046300    e       P   u   p   1   I   n   i   t       ^  \r   P   u   p
0046320    A   l   E   t   h   B       P   u   p   A   l   E   t   h   A
0046340        P   u   p   A   l   E   t   h   I   n   i   t       ^  \r
0046360    ^  \r   C   o   n   t   e   x   t   I   n   i   t       C   o
0046400    n   t   e   x   t       ^  \r   I   n   t   e   r   r   u   p
0046420    t   I   n   i   t 376  \0   C 232 325       I   n   t   e   r
0046440    r   u   p   t       ^  \r   A   l   t   o   B   y   t   e   B
0046460    l   t       A   l   t   o   Q   u   e   u   e       A   l   t
0046500    o   T   i   m   e   r       ^  \r   T   e   m   p   l   a   t
0046520    e       S   t   r   i   n   g   U   t   i   l  \r 377  \0  \0
0046540    S   C   I   .   c   m  \0 373 232 330 315   >  \0  \0 376  \0
0046560    - 240 023   S   C   I   .   d   e   c   l       S   C   I   .
0046600    b   c   p   l       S   C   I   1   .   b   c   p   l       L
0046620    o   a   d   S   C   I   .   c   m       S   C   I   .   c   m
0046640  374                                                            
0046641