$ od -c -N 50000 [Indigo]<Spruce>ISF.DM!1
0000000  377  \0  \0   i   s   f   .   d  \0 376 001  \0   F   T   /   /
0000020        I   S   F   .   D       -   -       d   e   f   i   n   i
0000040    t   i   o   n   s       f   o   r       I   S   F       a   n
0000060    d       I   S   F   I   N   I   T  \r   /   /       l   a   s
0000100    t       m   o   d   i   f   i   e   d       N   o   v   e   m
0000120    b   e   r       1   2   ,       1   9   7   6           1   2
0000140    :   3   8       P   M  \r   /   /       C   o   p   y   r   i
0000160    g   h   t       X   e   r   o   x       C   o   r   p   o   r
0000200    a   t   i   o   n       1   9   7   9  \r  \r  \t   g   e   t
0000220        "   a   l   t   o   f   i   l   e   s   y   s   .   d   "
0000240   \r  \t   g   e   t       "   d   i   s   k   s   .   d   "  \r
0000260   \r   s   t   r   u   c   t   u   r   e       F   M   0   :  \t
0000300    /   /       f   i   l   e   m   a   p       s   t   r   u   c
0000320    t   u   r   e       p   r   e   f   i   x  \r   [  \t   f   p
0000340        @   F   P  \t   /   /       f   p       f   o   r       f
0000360    i   l   e  \r  \t   D   A   s       w   o   r   d       3    
0000400    =  \t   /   /       f   i   r   s   t       3       p 376 001
0000420   \0   $ 342   a   g   e       D   A   s  \r  \t       [       D
0000440    A   0       w   o   r   d  \r  \t               D   A   1    
0000460    w   o   r   d  \r  \t               D   A   2       w   o   r
0000500    d  \r  \t       ]  \r  \t   s   e   a   l       w   o   r   d
0000520   \t   /   /       f   o   r       c   h   e   c   k   i   n   g
0000540        m   a   p  \r  \t   d   i   s   k       w   o   r   d  \t
0000560    /   /       p   o   i   n   t   s       t   o       D   S   K
0000600        s   t   r   u   c   t   u   r   e       f   o   r       f
0000620    i   l   e  \r  \t   z   o   n   e       w   o   r   d  \t   /
0000640    /       a   l   l   o   c   a   t   i   o   n       z   o   n
0000660    e       f   o   r       t   e   m   p   o   r   a   r   y    
0000700    p   a   g   e       b   u   f   f   e   r   s  \r  \t   l   a
0000720    s   t       w   o   r   d  \t   /   /       i   n   d   e   x
0000740        o   f       l   a   s   t       w   o   r   d       (   a
0000760        d   a   )  \r  \t   e   n   d       w   o   r   d  \t   /
0001000    /       i   n   d   e   x       o   f       e   n   d       o
0001020    f       a 376 001  \0   U 270   v   a   i   l   a   b   l   e
0001040        s   p   a   c   e  \r  \t   o   n   e   r   n       w   o
0001060    r   d  \t   /   /       l   a   s   t       r   n       a   d
0001100    d   e   d  \r  \t   o   n   e   d   a       w   o   r   d  \t
0001120    /   /       c   o   r   r   e   s   p   o   n   d   i   n   g
0001140        d   a  \r  \t   r   e   w   r   i   t   e       w   o   r
0001160    d  \t   /   /       i   f       t   r   u   e   ,       r   e
0001200    w   r   i   t   e       i   n   d   e   x  \r  \t   e   x   t
0001220    e   n   d       w   o   r   d  \t   /   /       e   x   t   e
0001240    n   d       f   i   l   e       i   n       c   h   u   n   k
0001260    s       o   f       t   h   i   s       m   a   n   y       p
0001300    a   g   e   s  \r   ]  \r   s   t   r   u   c   t   u   r   e
0001320        F   M   :  \t   /   /       f   u   l   l       f   i   l
0001340    e   m   a   p       s   t   r   u   c   t   u   r   e  \r   [
0001360   \t   @   F   M   0  \r  \t   b   l   a   n   k       w   o   r
0001400    d       (   s   i   z   e       F   M   0   /   1   6   )   &
0001420    1  \t   /   /       p   a   d 376 001  \0   ^ 247   d   i   n
0001440    g       t   o       e   n   s   u   r   e       m   a   p    
0001460    i   s       e   v   e   n  \r  \t   m   a   p       w   o   r
0001500    d       0  \t   /   /       b   e   g   i   n   n   i   n   g
0001520        o   f       m   a   p  \r   ]  \r   m   a   n   i   f   e
0001540    s   t       m   a   p   o   f   f   s   e   t       =       (
0001560    o   f   f   s   e   t       F   M   .   m   a   p   )   /   1
0001600    6  \r   m   a   n   i   f   e   s   t       c   h   e   c   k
0001620    s   i   z   e       =       (   o   f   f   s   e   t       F
0001640    M   .   s   e   a   l   )   /   1   6   +   1  \t   /   /    
0001660    n   u   m   b   e   r       o   f       l   e   a   d   i   n
0001700    g       w   o   r   d   s       t   o       c   h   e   c   k
0001720   \r  \r   m   a   n   i   f   e   s   t  \r   [  \t   p   p   c
0001740        =       5   0  \t  \t   /   /       m   a   x       p   a
0001760    g   e   s       p   e   r       B   F   S       c   a   l   l
0002000   \r  \t   v   e   r   s   i   o   n       =       1   1       l
0002020    s   h   i   f   t       1   2       +       1   2 376  \0   %
0002040  035 204       l   s   h   i   f   t       7       +       7   6
0002060   \t   /   /       m   o   n   t   h   ,       d   a   y   ,    
0002100    y   e   a   r  \r   ]  \r 377  \0  \0   i   s   f   i   n   i
0002120    t   .   b   c   p   l  \0 376 001  \0 355 314   /   /       I
0002140    S   F   I   N   I   T       -   -       i   n   i   t   i   a
0002160    l   i   z   e       i   n   d   e   x   e   d       s   e   q
0002200    u   e   n   t   i   a   l       f   i   l   e  \r   /   /    
0002220    l   a   s   t       e   d   i   t   e   d       N   o   v   e
0002240    m   b   e   r       1   2   ,       1   9   7   6           1
0002260    2   :   4   2       P   M  \r   /   /       C   o   p   y   r
0002300    i   g   h   t       X   e   r   o   x       C   o   r   p   o
0002320    r   a   t   i   o   n       1   9   7   9  \r  \r  \t   g   e
0002340    t       "   i   s   f   .   d   "  \r  \r   e   x   t   e   r
0002360    n   a   l  \t   /   /       e   n   t   r   y       p   r   o
0002400    c   e   d   u   r   e   s  \r   [  \t   I   n   i   t   F   m
0002420    a   p  \t   /   /       (   f   m   a   p   ,       l   e   n
0002440    ,       f   p   [   ,       c   h   e   c   k   ,       x   t
0002460    n   d   ,       z   o   n   e   ,       d   i   s   k   ]   )
0002500        -   >       o   k  \r   ]  \r  \r   e   x   t   e   r   n
0002520    a   l  \r   [  \t  \t   /   /       O   .   S 376 001  \0 204
0002540  335   .  \r  \t   M   o   v   e   B   l   o   c   k  \r  \t   A
0002560    c   t   O   n   D   i   s   k   P   a   g   e   s  \r  \t   D
0002600    e   f   a   u   l   t   A   r   g   s  \r  \t   A   l   l   o
0002620    c   a   t   e   ;       F   r   e   e  \r  \t   D   v   e   c
0002640   \r  \t   s   y   s   D   i   s   k  \r  \t   s   y   s   Z   o
0002660    n   e  \r   ]  \r  \r  \r   l   e   t       I   n   i   t   F
0002700    m   a   p   (   f   m   a   p   ,       l   e   n   ,       f
0002720    p   ,       c   h   e   c   k   ,       x   t   n   d   ,    
0002740    z   o   n   e   ,       d   i   s   k   ;       n   u   m   a
0002760    r   g   s       n   )       =       v   a   l   o   f  \r   [
0003000   \t   D   e   f   a   u   l   t   A   r   g   s   (   l   v    
0003020    n   ,       -   3   ,       f   a   l   s   e   ,       1   0
0003040    ,       -   1   ,       s   y   s   D   i   s   k   )  \r  \t
0003060    i   f       l   e   n       l   s       m   a   p   o   f   f
0003100    s   e   t   +   3       t   h   e   n       r   e   s   u   l
0003120    t   i   s       f   a   l   s   e  \r  \t   f   m   a   p   >
0003140    > 376 001  \0 350 255   F   M   .   s   e   a   l       =    
0003160    v   e   r   s   i   o   n  \r  \t   M   o   v   e   B   l   o
0003200    c   k   (   l   v       f   m   a   p   >   >   F   M   .   f
0003220    p   ,       f   p   ,       l   F   P   )  \r  \t   l   e   t
0003240        l   e   a   d   e   r   V   d   a       =       f   p   >
0003260    >   F   P   .   l   e   a   d   e   r   V   i   r   t   u   a
0003300    l   D   a  \r  \t   f   m   a   p   >   >   F   M   .   D   A
0003320    0       =       l   e   a   d   e   r   V   d   a  \r  \t   f
0003340    m   a   p   >   >   F   M   .   D   A   1   ,       f   m   a
0003360    p   >   >   F   M   .   D   A   2       =       f   i   l   l
0003400    I   n   D   A   ,       f   i   l   l   I   n   D   A  \r  \t
0003420    f   m   a   p   >   >   F   M   .   l   a   s   t       =    
0003440    m   a   p   o   f   f   s   e   t   +   2  \r  \t   l   e   t
0003460        e   n   d       =       (   l   e   n   -   2   )   &   -
0003500    2  \r  \t   f   m   a   p   >   >   F   M   .   o   n   e   r
0003520    n   ,       f   m   a   p   >   >   F   M   .   o   n   e   d
0003540    a       =       0   , 376 001  \0 372 361       f   m   a   p
0003560    >   >   F   M   .   D   A   0  \r  \t   l   e   t       m   a
0003600    p       =       f   m   a   p   +   m   a   p   o   f   f   s
0003620    e   t  \r  \t   m   a   p   !   0   ,       m   a   p   !   1
0003640    ,       m   a   p   !   2       =       0   ,       l   e   a
0003660    d   e   r   V   d   a   ,       1  \r  \t   f   m   a   p   >
0003700    >   F   M   .   r   e   w   r   i   t   e       =       c   h
0003720    e   c   k  \r  \t   f   m   a   p   >   >   F   M   .   e   x
0003740    t   e   n   d       =       (   x   t   n   d       l   s    
0003760    p   p   c   ?       x   t   n   d   ,       p   p   c   )  \r
0004000   \t   i   f       z   o   n   e       e   q       0       t   h
0004020    e   n       z   o   n   e       =       s   y   s   Z   o   n
0004040    e  \r  \t   i   f       c   h   e   c   k       t   h   e   n
0004060   \r  \t       [       l   e   t       p   a   g   e   s   i   z
0004100    e       =       1       l   s   h   i   f   t       d   i   s
0004120    k   >   >   D   S   K   .   l   n   P   a   g   e   S   i   z
0004140    e  \r  \t               l   e   t       s 376 001  \0 237   M
0004160    c   r   a   t   c   h   ,       n   c   h       =       p   a
0004200    g   e   s   i   z   e   ,       0  \r  \t               t   e
0004220    s   t       z   o   n   e       e   q       -   1  \r  \t    
0004240                i   f   s   o       D   v   e   c   (   I   n   i
0004260    t   F   m   a   p   ,       l   v       s   c   r   a   t   c
0004300    h   )  \r  \t                   i   f   n   o   t       s   c
0004320    r   a   t   c   h       =       A   l   l   o   c   a   t   e
0004340    (   z   o   n   e   ,       s   c   r   a   t   c   h   )  \r
0004360   \t               A   c   t   O   n   D   i   s   k   P   a   g
0004400    e   s   (   d   i   s   k   ,       0   ,       l   v       f
0004420    m   a   p   >   >   F   M   .   D   A   0   ,       f   p   ,
0004440        0   ,       1   ,       D   C   r   e   a   d   D   ,    
0004460    l   v       n   c   h   ,       D   C   r   e   a   d   D   ,
0004500        s   c   r   a   t   c   h   )  \r  \t               i   f
0004520        (   n   c   h       e   q       2   *   p   a   g   e   s
0004540    i   z   e   )       &       (   s   c   r   a   t   c   h   >
0004560  376 001  \0   H   8   >   F   M   .   l   a   s   t       g   e
0004600        m   a   p   o   f   f   s   e   t   +   2   )       &    
0004620    (   s   c   r   a   t   c   h   !   m   a   p   o   f   f   s
0004640    e   t       e   q       0   )       t   h   e   n  \t   /   /
0004660        o   l   d       m   a   p       m   a   y       b   e    
0004700    O   K  \r  \t                   [       f   o   r       i    
0004720    =       0       t   o       c   h   e   c   k   s   i   z   e
0004740    -   1       d   o  \r  \t                                    
0004760    i   f       s   c   r   a   t   c   h   !   i       n   e    
0005000    f   m   a   p   !   i       g   o   t   o       f   a   i   l
0005020   \r  \t                           l   e   t       l   a   s   t
0005040        =       s   c   r   a   t   c   h   >   >   F   M   .   l
0005060    a   s   t  \r  \t                           i   f       l   a
0005100    s   t       g   r       e   n   d       t   h   e   n       l
0005120    a   s   t       =       e   n   d  \r  \t                    
0005140        i   f       l   a   s   t       g   e       p   a   g   e
0005160    s   i   z   e     376  \0 310 213 257   t   h   e   n       l
0005200    a   s   t       =       p   a   g   e   s   i   z   e   -   2
0005220   \r  \t                           M   o   v   e   B   l   o   c
0005240    k   (   f   m   a   p   ,       s   c   r   a   t   c   h   ,
0005260        l   a   s   t   +   1   )  \r  \t                   ]  \r
0005300    f   a   i   l   :  \t   i   f       z   o   n   e       n   e
0005320        -   1       t   h   e   n       F   r   e   e   (   z   o
0005340    n   e   ,       s   c   r   a   t   c   h   )  \r  \t       ]
0005360   \r  \t   f   m   a   p   >   >   F   M   .   e   n   d       =
0005400        e   n   d  \r  \t   f   m   a   p   >   >   F   M   .   d
0005420    i   s   k       =       d   i   s   k  \r  \t   f   m   a   p
0005440    >   >   F   M   .   z   o   n   e       =       z   o   n   e
0005460   \r  \t   r   e   s   u   l   t   i   s       t   r   u   e  \r
0005500    ]  \r 377  \0  \0   i   s   f   .   b   c   p   l  \0 376 001
0005520   \0   > 207   /   /       I   S   F   .   B   C   P   L       -
0005540    -       i   m   p   l   e   m   e   n   t       i   n   d   e
0005560    x   e   d       s   e   q   u   e   n   t   i   a   l       f
0005600    i   l   e   s  \r   /   /       l   a   s   t       m   o   d
0005620    i   f   i   e   d       M   a   r   c   h       2   8   ,    
0005640    1   9   7   7           1   1   :   2   2       A   M  \r   /
0005660    /       C   o   p   y   r   i   g   h   t       X   e   r   o
0005700    x       C   o   r   p   o   r   a   t   i   o   n       1   9
0005720    7   9  \r  \r  \t   g   e   t       "   i   s   f   .   d   "
0005740   \r  \r   e   x   t   e   r   n   a   l  \t   /   /       e   n
0005760    t   r   y       p   r   o   c   e   d   u   r   e   s  \r   [
0006000   \t   I   n   d   e   x   e   d   P   a   g   e   I   O  \t   /
0006020    /       (   f   m   a   p   ,       f   i   r   s   t   r   n
0006040    ,       c   o   r   e   ,       n   p   g   ,       w   f   l
0006060    a   g   [   ,       l   a   s   t   n   c   ]   )       -   >
0006100        l   a   s   t   n   c  \r  \t   W   r   i   t   e   F   m
0006120    a   p  \t 376 001  \0   8   Y   /   /       (   f   m   a   p
0006140    )  \r   ]  \r  \r   e   x   t   e   r   n   a   l  \r   [  \t
0006160   \t   /   /       O   .   S   .  \r  \t   S   e   t   B   l   o
0006200    c   k   ;       Z   e   r   o  \r  \t   C   a   l   l   S   w
0006220    a   t  \r  \t   A   c   t   O   n   D   i   s   k   P   a   g
0006240    e   s  \r  \t   W   r   i   t   e   D   i   s   k   P   a   g
0006260    e   s  \r  \t   A   l   l   o   c   a   t   e   ;       F   r
0006300    e   e  \r  \t   U   s   c  \r  \t   D   v   e   c  \r   ]  \r
0006320   \r  \r   l   e   t       I   n   d   e   x   e   d   P   a   g
0006340    e   I   O   (   f   m   a   p   ,       f   i   r   s   t   r
0006360    n   ,       c   o   r   e   ,       n   p   g   ,       w   f
0006400    l   a   g   ,       l   a   s   t   n   c   ;       n   u   m
0006420    a   r   g   s       n   a   )       =       v   a   l   o   f
0006440   \r   /   /       w   f   l   a   g   =   -   1       f   o   r
0006460        w   r   i   t   e   ,       0       f   o   r       r   e
0006500    a   d   ,       1       f   o   r       r   e   a   d       +
0006520        e   x   t   e   n   d  \r 376 001  \0   ? 356   /   /    
0006540    r   e   t   u   r   n   s       n   u   m   c   h   a   r   s
0006560        o   f       l   a   s   t       p   a   g   e       t   r
0006600    a   n   s   f   e   r   r   e   d  \r   [  \t   l   e   t    
0006620    a   c   t   i   o   n       =       (   w   f   l   a   g    
0006640    l   s       0   ?       D   C   w   r   i   t   e   D   ,    
0006660    D   C   r   e   a   d   D   )  \r  \t   l   e   t       p   a
0006700    g   e   s   i   z   e       =       1       l   s   h   i   f
0006720    t       f   m   a   p   >   >   F   M   .   d   i   s   k   >
0006740    >   D   S   K   .   l   n   P   a   g   e   S   i   z   e  \r
0006760   \t   i   f       n   a       l   s       6       t   h   e   n
0007000        l   a   s   t   n   c       =       p   a   g   e   s   i
0007020    z   e   *   2  \r  \t   i   f       U   s   c   (   f   i   r
0007040    s   t   r   n   +   n   p   g   ,       N   e   x   t   F   m
0007060    a   p   (   f   m   a   p   )   )       g   e       0       t
0007100    h   e   n       m   o   r   e   p   a   g   e   i   o   (   f
0007120    m   a   p   ,       f   i   r   s   t   r   n   , 376 001  \0
0007140    + 275       c   o   r   e   ,       n   p   g   ,       w   f
0007160    l   a   g   )  \r  \t   l   e   t       C   A   s       =    
0007200    v   e   c       p   p   c  \r  \t   l   e   t       D   A   s
0007220        =       v   e   c       p   p   c  \t   /   /       p   p
0007240    c   +   1       w   o   r   d   s   !  \r  \t   l   e   t    
0007260    c   a   ,       r   n   0   ,       p   a   g   e   s   l   e
0007300    f   t       =       c   o   r   e   ,       f   i   r   s   t
0007320    r   n   ,       n   p   g  \r  \t   l   e   t       n   c   h
0007340        =       n   i   l  \r  \t   w   h   i   l   e       p   a
0007360    g   e   s   l   e   f   t       g   r       0       d   o  \r
0007400   \t       [       l   e   t       n   p       =       m   i   n
0007420    (   p   a   g   e   s   l   e   f   t   ,       p   p   c   )
0007440   \r  \t               f   o   r       j       =       0       t
0007460    o       n   p   -   1       d   o  \r  \t                   [
0007500        C   A   s   !   j       =       c   a   ;       c   a    
0007520    =       c   a   +   p   a   g   e   s   i   z   e  \r  \t    
0007540          376 001  \0 257 222               D   A   s   !   j    
0007560    =       L   o   o   k   u   p   F   m   a   p   (   f   m   a
0007600    p   ,       r   n   0   +   j   )  \r  \t                   ]
0007620   \r  \t               D   A   s   !   n   p       =       f   i
0007640    l   l   I   n   D   A  \r  \t               p   a   g   e   s
0007660    l   e   f   t       =       p   a   g   e   s   l   e   f   t
0007700    -   n   p  \r  \t               n   c   h       =       (   p
0007720    a   g   e   s   l   e   f   t       e   q       0   ?       l
0007740    a   s   t   n   c   ,       p   a   g   e   s   i   z   e   *
0007760    2   )  \r  \t               A   c   t   O   n   D   i   s   k
0010000    P   a   g   e   s   (   f   m   a   p   >   >   F   M   .   d
0010020    i   s   k   ,       C   A   s   -   r   n   0   ,       D   A
0010040    s   -   r   n   0   ,       l   v       f   m   a   p   >   >
0010060    F   M   .   f   p   ,       r   n   0   ,       r   n   0   +
0010100    n   p   -   1   ,       a   c   t   i   o   n   ,       l   v
0010120        n   c   h   )  \r  \t               r   n   0       =    
0010140    r   n   0   +   n   p  \r 376 001  \0 027 344  \t       ]  \r
0010160   \t   r   e   s   u   l   t   i   s       n   c   h  \r   ]  \r
0010200   \r   a   n   d       m   o   r   e   p   a   g   e   i   o   (
0010220    f   m   a   p   ,       f   i   r   s   t   r   n   ,       s
0010240    c   r   a   t   c   h   ,       n   p   g   ,       w   f   l
0010260    a   g   )       b   e  \r   [  \t   l   e   t       p   a   g
0010300    e   s   i   z   e   ,       f   i   r   s   t   d   a       =
0010320        1       l   s   h   i   f   t       f   m   a   p   >   >
0010340    F   M   .   d   i   s   k   >   >   D   S   K   .   l   n   P
0010360    a   g   e   S   i   z   e   ,       L   o   o   k   u   p   F
0010400    m   a   p   (   f   m   a   p   ,       f   i   r   s   t   r
0010420    n   )  \r  \t   l   e   t       z   o   n   e       =       f
0010440    m   a   p   >   >   F   M   .   z   o   n   e  \r  \t   i   f
0010460        w   f   l   a   g       e   q       -   1       t   h   e
0010500    n  \r  \t       t   e   s   t       z   o   n   e       e   q
0010520        -   1  \r  \t           i   f   s   o       [       s   c
0010540    r   a   t   c   h       =       p   a   g   e 376 001  \0 325
0010560    >   s   i   z   e   ;       D   v   e   c   (   m   o   r   e
0010600    p   a   g   e   i   o   ,       l   v       s   c   r   a   t
0010620    c   h   )       ]  \r  \t           i   f   n   o   t       s
0010640    c   r   a   t   c   h       =       A   l   l   o   c   a   t
0010660    e   (   z   o   n   e   ,       p   a   g   e   s   i   z   e
0010700    )  \r  \t   l   e   t       l   a   s   t   r   n   ,       l
0010720    a   s   t   m   a   p   r   n       =       f   i   r   s   t
0010740    r   n   +   n   p   g   ,       N   e   x   t   F   m   a   p
0010760    (   f   m   a   p   )  \r  \t   l   e   t       r   n       =
0011000        l   a   s   t   m   a   p   r   n   -   1  \r  \t   l   e
0011020    t       D   A   s       =       v   e   c       p   p   c   +
0011040    2  \t   /   /       p   p   c   +   3       w   o   r   d   s
0011060    !  \r  \t   D   A   s   !   0       =       (   r   n       e
0011100    q       0   ?       e   o   f   D   A   ,       L   o   o   k
0011120    u   p   F   m   a   p   (   f   m   a   p   ,       r   n   -
0011140    1   )   )  \r  \t   l   e   t       n   c   h       =       n
0011160    i 376 001  \0   J   M   l  \r  \t   w   h   i   l   e       r
0011200    n       l   s       l   a   s   t   r   n       d   o  \r  \t
0011220        [       D   A   s   !   1       =       L   o   o   k   u
0011240    p   F   m   a   p   (   f   m   a   p   ,       r   n   )  \r
0011260   \t               l   e   t       n   p       =       m   i   n
0011300    (   p   p   c   ,       l   a   s   t   r   n   -   r   n   )
0011320   \r  \t               S   e   t   B   l   o   c   k   (   D   A
0011340    s   +   2   ,       f   i   l   l   I   n   D   A   ,       n
0011360    p   +   1   )  \r  \t               l   e   t       n   r   n
0011400        =       A   c   t   O   n   D   i   s   k   P   a   g   e
0011420    s   (   f   m   a   p   >   >   F   M   .   d   i   s   k   ,
0011440        0   ,       D   A   s   +   1   -   r   n   ,       l   v
0011460        f   m   a   p   >   >   F   M   .   f   p   ,       r   n
0011500    ,       r   n   +   n   p   -   1   ,       D   C   r   e   a
0011520    d   D   ,       l   v       n   c   h   ,       D   C   r   e
0011540    a   d   D   ,       s   c   r   a   t   c   h   )  \r  \t    
0011560            i   f       n 376 001  \0 270 303   c   h       e   q
0011600        0       t   h   e   n  \t   /   /       e   x   t   e   n
0011620    d       f   i   l   e  \r  \t                   t   e   s   t
0011640        n   r   n       e   q       r   n  \r  \t                
0011660    i   f   n   o   t  \t   /   /       t   o   o       h   a   r
0011700    d       t   o       p   i   c   k       u   p  \r  \t  \t   n
0011720    p       =       n   r   n   -   r   n  \r  \t                
0011740    i   f   s   o  \r  \t                   [       l   e   t    
0011760    n   x   p       =       f   m   a   p   >   >   F   M   .   e
0012000    x   t   e   n   d  \r  \t                           u   n   l
0012020    e   s   s       (   n   x   p       g   r       0   )       &
0012040        (   w   f   l   a   g       n   e       0   )       d   o
0012060        C   a   l   l   S   w   a   t   (   "   A   t   t   e   m
0012100    p   t       t   o       a   c   c   e   s   s       n   o   n
0012120    -   e   x   i   s   t   e   n   t       p   a   g   e   "   )
0012140   \r  \t                           i   f       n   p       l   s
0012160        n   x   p       t   h   e   n       n 376 001  \0 226 254
0012200    p       =       n   x   p  \r  \t                           Z
0012220    e   r   o   (   s   c   r   a   t   c   h   ,       p   a   g
0012240    e   s   i   z   e   )  \r  \t                           S   e
0012260    t   B   l   o   c   k   (   D   A   s   +   2   ,       f   i
0012300    l   l   I   n   D   A   ,       n   p   +   1   )  \r  \t    
0012320                        D   A   s   !   (   n   p   +   2   )    
0012340    =       e   o   f   D   A  \r  \t                           W
0012360    r   i   t   e   D   i   s   k   P   a   g   e   s   (   f   m
0012400    a   p   >   >   F   M   .   d   i   s   k   ,       0   ,    
0012420    D   A   s   +   1   -   r   n   ,       l   v       f   m   a
0012440    p   >   >   F   M   .   f   p   ,       r   n   ,       r   n
0012460    +   n   p   ,       D   C   w   r   i   t   e   D   ,       0
0012500    ,       0   ,       s   c   r   a   t   c   h   )  \r  \t    
0012520                ]  \r  \t               f   o   r       j       =
0012540        1       t   o       n   p       d   o  \r  \t            
0012560        [       l   e   t       x   r   n   ,       x   d   a    
0012600  376 001  \0   M   V   =       r   n   +   j   ,       D   A   s
0012620    !   (   j   +   1   )  \r  \t                           E   x
0012640    t   e   n   d   F   m   a   p   (   f   m   a   p   ,       x
0012660    r   n   ,       x   d   a   )  \r  \t                        
0012700    i   f       x   r   n       e   q       f   i   r   s   t   r
0012720    n       t   h   e   n       f   i   r   s   t   d   a       =
0012740        x   d   a  \r  \t                   ]  \r  \t            
0012760    D   A   s   !   0       =       D   A   s   !   n   p  \r  \t
0013000                r   n       =       r   n   +   n   p  \r  \t    
0013020    ]  \r  \t   E   x   t   e   n   d   F   m   a   p   (   f   m
0013040    a   p   ,       f   i   r   s   t   r   n   ,       f   i   r
0013060    s   t   d   a   )  \t   /   /       j   u   s   t       i   n
0013100        c   a   s   e       m   a   p       i   s       f   u   l
0013120    l  \r  \t   i   f       N   e   x   t   F   m   a   p   (   f
0013140    m   a   p   )       g   r       l   a   s   t   m   a   p   r
0013160    n       t   h   e   n       W   r   i   t   e   F   m   a   p
0013200    (   f   m   a   p 376 001  \0 241   d   )  \r  \t   i   f    
0013220    (   w   f   l   a   g       e   q       -   1   )       &    
0013240    (   z   o   n   e       n   e       -   1   )       t   h   e
0013260    n       F   r   e   e   (   z   o   n   e   ,       s   c   r
0013300    a   t   c   h   )  \r   ]  \r  \r   a   n   d       m   i   n
0013320    (   x   ,       y   )       =       (   x       l   s       y
0013340    ?       x   ,       y   )  \r  \r   a   n   d       W   r   i
0013360    t   e   F   m   a   p   (   f   m   a   p   )       b   e  \r
0013400    [  \t   i   f       f   m   a   p   >   >   F   M   .   r   e
0013420    w   r   i   t   e       t   h   e   n  \r  \t       [       A
0013440    c   t   O   n   D   i   s   k   P   a   g   e   s   (   f   m
0013460    a   p   >   >   F   M   .   d   i   s   k   ,       0   ,    
0013500    l   v       f   m   a   p   >   >   F   M   .   D   A   0   ,
0013520        l   v       f   m   a   p   >   >   F   M   .   f   p   ,
0013540        1   ,       1   ,       D   C   w   r   i   t   e   D   ,
0013560        0   ,       D   C   w   r   i   t   e   D   ,       f   m
0013600    a   p   )  \r  \t       ]  \r   ]  \r 376 001  \0   :   2  \r
0013620    a   n   d       L   o   o   k   u   p   F   m   a   p   (   f
0013640    m   a   p   ,       r   n   ,       f   o   r   c   e   ;    
0013660    n   u   m   a   r   g   s       n   )       =       v   a   l
0013700    o   f  \r   [  \t   i   f       (   r   n       e   q       f
0013720    m   a   p   >   >   F   M   .   o   n   e   r   n   )       &
0013740        (   (   n       l   s       3   )       %       (   n   o
0013760    t       f   o   r   c   e   )   )       t   h   e   n  \r  \t
0014000                r   e   s   u   l   t   i   s       f   m   a   p
0014020    >   >   F   M   .   o   n   e   d   a  \r  \t   l   e   t    
0014040    h   i       =       f   m   a   p   >   >   F   M   .   l   a
0014060    s   t  \r  \t   i   f       U   s   c   (   r   n   ,       f
0014100    m   a   p   !   h   i   )       g   e       0       t   h   e
0014120    n       r   e   s   u   l   t   i   s       f   i   l   l   I
0014140    n   D   A  \r  \t   l   e   t       l   o       =       m   a
0014160    p   o   f   f   s   e   t  \r  \t   w   h   i   l   e       h
0014200    i   -   l   o       g   r       2       d   o  \r  \t     376
0014220  001  \0   Y 001   [       l   e   t       m   i   d       =    
0014240    (   (   l   o   +   h   i   )       r   s   h   i   f   t    
0014260    1   )       &       -   2  \r  \t               t   e   s   t
0014300        U   s   c   (   r   n   ,       f   m   a   p   !   m   i
0014320    d   )       g   e       0  \r  \t                   i   f   s
0014340    o       l   o       =       m   i   d  \r  \t                
0014360    i   f   n   o   t       h   i       =       m   i   d  \r  \t
0014400        ]  \r  \t   l   e   t       l   p       =       l   v    
0014420    (   f   m   a   p   !   l   o   )  \r  \t   r   e   s   u   l
0014440    t   i   s       (   l   p   !   1   +   r   n   -   @   l   p
0014460    )  \r   ]  \r  \r   a   n   d       E   x   t   e   n   d   F
0014500    m   a   p   (   f   m   a   p   ,       r   n   ,       d   a
0014520    )       =       v   a   l   o   f  \r   [  \t   f   m   a   p
0014540    >   >   F   M   .   o   n   e   r   n   ,       f   m   a   p
0014560    >   >   F   M   .   o   n   e   d   a       =       r   n   ,
0014600        d   a  \r  \t   l   e   t       l   a   s   t       =    
0014620    f   m   a   p 376 001  \0 302 030   >   >   F   M   .   l   a
0014640    s   t  \r  \t   l   e   t       l   a   s   t   p       =    
0014660    l   v       (   f   m   a   p   !   l   a   s   t   )  \r  \t
0014700    i   f       r   n       n   e       @   l   a   s   t   p    
0014720    t   h   e   n       r   e   s   u   l   t   i   s       f   a
0014740    l   s   e  \r  \t   l   e   t       c   u   r   v   a       =
0014760        d   a  \r  \t   t   e   s   t       c   u   r   v   a    
0015000    e   q       (   l   a   s   t   p   !   -   1   )   +   @   l
0015020    a   s   t   p   -   (   l   a   s   t   p   !   -   2   )  \r
0015040   \t       i   f   s   o  \t   /   /       s   t   i   l   l    
0015060    i   n       s   a   m   e       c   h   u   n   k  \r  \t    
0015100            @   l   a   s   t   p       =       @   l   a   s   t
0015120    p   +   1  \r  \t       i   f   n   o   t  \t   /   /       s
0015140    t   a   r   t       n   e   w       c   h   u   n   k  \r  \t
0015160                t   e   s   t       l   a   s   t       e   q    
0015200    f   m   a   p   >   >   F   M   .   e   n   d  \r  \t        
0015220            i   f   s   o  \t   /   / 376  \0 272   ( 355       o
0015240    u   t       o   f       s   p   a   c   e  \r  \t            
0015260                r   e   s   u   l   t   i   s       f   a   l   s
0015300    e  \r  \t                   i   f   n   o   t  \r  \t        
0015320            [       l   a   s   t   p   !   1   ,       l   a   s
0015340    t   p   !   2       =       c   u   r   v   a   ,       @   l
0015360    a   s   t   p   +   1  \r  \t                           f   m
0015400    a   p   >   >   F   M   .   l   a   s   t       =       l   a
0015420    s   t   +   2  \r  \t                   ]  \r  \t   r   e   s
0015440    u   l   t   i   s       t   r   u   e  \r   ]  \r  \r   a   n
0015460    d       N   e   x   t   F   m   a   p   (   f   m   a   p   )
0015500        =       f   m   a   p   !   (   f   m   a   p   >   >   F
0015520    M   .   l   a   s   t   )  \r 377  \0  \0   c   o   m   p   i
0015540    l   e   i   s   f   .   c   m  \0 376  \0   $ 272 214   B   c
0015560    p   l   /   F       i   s   f   i   n   i   t   .   b   c   p
0015600    l  \r   B   c   p   l   /   F       i   s   f   .   b   c   p
0015620    l  \r 377  \0  \0   s   e   n   d   i   s   f   .   c   m  \0
0015640  376  \0 266  \v 363   F   t   p   /   N       M   a   x   c    
0015660    C   o   n   n   e   c   t   /   C       a   l   t   o   s   o
0015700    u   r   c   e       @   A   l   t   o   S   o   u   r   c   e
0015720    P   a   s   s   w   o   r   d   @       D   u   m   p   /   C
0015740        i   s   f   .   d   m       i   s   f   .   d       i   s
0015760    f   i   n   i   t   .   b   c   p   l       i   s   f   .   b
0016000    c   p   l       c   o   m   p   i   l   e   i   s   f   .   c
0016020    m       s   e   n   d   i   s   f   .   c   m       C   o   n
0016040    n   e   c   t   /   C       a   l   t   o       @   A   l   t
0016060    o   P   a   s   s   w   o   r   d   @       D   u   m   p   /
0016100    C       i   s   f   .   d   m       i   s   f   i   n   i   t
0016120    .   B   R       i   s   f   .   B   R  \r 374                
0016134