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