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