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