$ od -c -N 50000 [Indigo]<Spruce>12>sources>SprucePrinSequoia.Sr!1
0000000    /   /       P       R       I       N       T              \r
0000020    /   /       e   r   r   o   r   s       1   0   0   0  \r   /
0000040    /  \r  \r   g   e   t       "   S   p   r   u   c   e   .   d
0000060    "  \r   g   e   t       "   S   p   r   u   c   e   F   i   l
0000100    e   s   .   d   "  \r   g   e   t       "   O   r   b   i   t
0000120    .   d   "  \r  \r   /   /       o   u   t   g   o   i   n   g
0000140        p   r   o   c   e   d   u   r   e   s  \r   e   x   t   e
0000160    r   n   a   l  \r  \t   [  \r  \t   D   r   i   v   e   P   r
0000200    i   n   t   e   r  \r  \t   ]  \r  \r  \r   /   /       i   n
0000220    c   o   m   i   n   g       p   r   o   c   e   d   u   r   e
0000240    s  \r   e   x   t   e   r   n   a   l  \r  \t   [  \r  \t   S
0000260    p   r   u   c   e   E   r   r   o   r  \r  \t   M   a   x  \r
0000300   \t   M   i   n  \r  \t   I   n   i   t   R   a   m  \r   /   /
0000320    S   p   r   u   c   e   P   r   i   n   t  \r  \t   A   d   d
0000340    T   o   B   i   n  \r  \t   A   n   n   o   u   n   c   e  \r
0000360   \t   A   w   a   i   t   P   a   g   e   S   y   n   c  \r  \t
0000400    P   r   i   n   t   N   e   x   t  \r  \t   R   e   a   d   B
0000420    a   n   d   s  \r  \t   R   e   a   d   C   l   o   c   k  \r
0000440   \t   R   e   a   d   F   o   n   t  \r   /   /   C   U   R   S
0000460    O   R  \r  \t   C   u   r   s   o   r   C   h   a   r  \r  \t
0000500    C   u   r   s   o   r   D   i   g   i   t  \r   /   /       S
0000520    p   r   u   c   e   P   r   i   n   t   R   e   s  \r  \t   D
0000540    o   F   u   n   c  \r  \t   R   O   S   S   t   a   t   u   s
0000560   \r   /   /       T   i   m   e   r       (   d   e   b   u   g
0000600        o   n   l   y   )  \r  \t   S   e   t   T   i   m   e   r
0000620   \r  \t   T   i   m   e   r   H   a   s   E   x   p   i   r   e
0000640    d  \r   /   /   O   S  \r  \t   Z   e   r   o  \r  \t   D   i
0000660    s   a   b   l   e   I   n   t   e   r   r   u   p   t   s  \r
0000700   \t   E   n   a   b   l   e   I   n   t   e   r   r   u   p   t
0000720    s  \r  \t   ]  \r  \r   /   /       i   n   c   o   m  \0 006
0000740  020   @ 377   v 037  \0  \a  \0 035  \0  \0   (      \0  \0   @
0000760   \0  \0 001 336  \0  \0  \0  \0   D 304  \0 304 366 357 370 366
0001000    i   n   g       s   t   a   t   i   c   s  \r   e   x   t   e
0001020    r   n   a   l  \r  \t   [  \r  \t   s   c   a   n   T   i   c
0001040    k   s  \t  \t   /   /       #       o   f       3   8       u
0001060    s   e   c   .       t   i   c   k   s       i   n       4    
0001100    p   r   i   n   t   e   r       s   c   a   n       l   i   n
0001120    e   s   .  \r  \t   l   o   g   B   a   n   d   R   e   c   o
0001140    r   d   S   i   z   e  \r  \t   b   a   n   d   R   e   c   o
0001160    r   d   S   i   z   e  \r  \t   n   P   a   g   e   s   P   r
0001200    i   n   t   e   d  \r  \t   p   r   i   n   t   e   r   F   o
0001220    r   w   a   r   d  \r  \t   D   e   b   u   g  \r  \t   D   e
0001240    b   u   g   S   y   s   t   e   m  \r  \t   s   i   g   n   a
0001260    l   B   a   n   d  \r  \t   F   u   n   c  \r  \t   d   e   b
0001300    u   g   T   r   a   i   l  \r  \r  \t   k   n   o   c   k   R
0001320    e   s   u   l   t  \r  \t   n   u   m   P   r   i   n   t   e
0001340    d  \r  \t   n   u   m   M   u   s   t   P   r   i   n   t  \r
0001360   \t   I   n   i   t   M   e   a   s   u   r   e       /   /    
0001400    D   o   v   e   r       e   n   g   i   n   e       c   o   n
0001420    t   r   o   l       m   o   n   i   t   o   r   i   n   g    
0001440    s   t   u   f   f  \r  \t   C   l   o   s   e   M   e   a   s
0001460    u   r   e  \r  \t   T   i   c   k   M   e   a   s   u   r   e
0001500   \r  \t   M   e   a   s   u   r   e  \r  \t   m   e   a   s   u
0001520    r   e   T   a   b   l   e  \r  \t   x   m   F   o   n   t   s
0001540   \t   /   /       F   o   n   t       d   a   t   a       w   i
0001560    l   l       b   e       r   e   a   d       i   n   t   o    
0001600    B   a   n   k       1       v   i   a       B   a   n   k    
0001620    0   ,       i   f       s   e   t  \r  \t   n   R   e   c   s
0001640   \r  \t   L   o   w   A   d   r  \r  \t   F   A   v   a   l   u
0001660    e  \r  \t   n   B   a   n   d   s  \r  \t   s   t   o   p   s
0001700    P   r   i   n   t   i   n   g  \r  \t   ]  \r  \r  \f  \r   /
0001720    /       i   n   t   e   r   n   a   l       s   t   a  \0 006
0001740  020   @ 377   v 037  \0  \a  \0 035  \0  \0   (      \0  \0   @
0001760   \0  \0 001 336 376  \0  \0  \0   B 304  \0 304 366 357 370 366
0002000    t   i   c   s  \r   s   t   a   t   i   c  \r  \t   [  \r  \t
0002020   \t   t   i   m   e   O   u   t   =   1   5   *   2   7  \r  \t
0002040    p   r   i   n   t   H   y   s   t   e   r   e   s   i   s    
0002060    =       1   5       /   /       p   r   i   n   t       t   h
0002100    i   s       m   a   n   y       b   e   f   o   r   e       a
0002120    l   l   o   w   i   n   g       s   u   s   p   e   n   s   i
0002140    o   n   ,       e   a   c   h       t   i   m   e       i   n
0002160   \r  \t           /   /       ~   ~       a   b   o   v   e    
0002200    n   u   m   b   e   r       m   a   y       w   a   n   t    
0002220    t   o       i   n   c   r   e   a   s   e       f   o   r    
0002240    l   a   r   g   e       r   u   n   s   ,       o   r       s
0002260    o   m   e   t   h   i   n   g   ?  \r   /   /       s   F   i
0002300    x       ~   ~   ~   ~   ~   ~   ~   ~   ~   ~   ~   ~   ~   ~
0002320    ~   ~   ~   ~   ~   ~   ~   ~   ~   ~   ~   ~   ~   ~   ~   ~
0002340    ~   ~   ~   ~   ~   ~   ~   ~   ~   ~   ~   ~   ~   ~  \r  \t
0002360    /   /       s   F   i   x       ~   ~       A   t       p   r
0002400    e   s   e   n   t   ,       S   e   q   u   o   i   a       "
0002420    n   o   t       r   e   a   d   y   "       b   i   t       n
0002440    e   v   e   r       p   r   e   s   e   n   t   s       i   t
0002460    s   e   l   f  \r  \t   /   /       s   F   i   x       ~   ~
0002500        S   o   m   e       p   r   i   n   t       s   e   q   u
0002520    e   n   c   e   s       r   e   q   u   i   r   e       a   n
0002540        e   n   g   i   n   e       r   u   n   o   u   t   ,    
0002560    f   o   l   l   o   w   e   d  \r  \t   /   /       s   F   i
0002600    x       ~   ~           b   y       a       r   e   s   t   a
0002620    r   t       -   -       t   h   i   s       d   e   l   a   y
0002640        w   a   i   t   s       f   o   r       s   h   u   t   d
0002660    o   w   n       b   e   f   o   r   e       c   o   n   t   i
0002700    n   u   i   n   g  \r  \t   r   e   a   d   y   T   i   m   e
0002720    O   u   t       /   /       s   F   i   x       ~   ~  \0 006
0002740  020   @ 377   v 037  \0  \a  \0 035  \0  \0   (      \0  \0   @
0002760   \0  \0 001 336 374  \0  \0  \0   @ 304  \0 304 366 357 370 366
0003000        s   e   t       0       a   t       s   t   a   r   t   ,
0003020        n   o   n   -   z   e   r   o       f   o   r       o   u
0003040    t   e   r       l   o   o   p       c   o   n   t   i   n   u
0003060    a   t   i   o   n  \r  \t   s   R   e   a   d   y   T   i   m
0003100    e   O   u   t   =   2   *   2   7   +   2   0       /   /    
0003120    s   F   i   x       ~   ~       c   a   n       t   u   n   e
0003140        t   h   i   s       f   r   o   m       S   w   a   t    
0003160    u   n   t   i   l       i   t   '   s       r   i   g   h   t
0003200   \r  \t   /   /       s   F   i   x       ~   ~   ~   ~   ~   ~
0003220    ~   ~   ~   ~   ~   ~   ~   ~   ~   ~   ~   ~   ~   ~   ~   ~
*
0003260    ~   ~   ~   ~   ~   ~   ~  \r  \t   /   /       d   e   l   a
0003300    y       ~   ~   ~   ~       d   e   b   u   g   g   i   n   g
0003320    :       d   e   l   a   y       p   e   r       p   a   g   e
0003340        t   o       s   i   m   u   l   a   t   e       p   r   i
0003360    n   t   i   n   g  \r  \t   d   e   b   D   e   l   a   y    
0003400    =       0       /   /       d   e   l   a   y       n   o    
0003420    d   e   l   a   y       s   t   d   .      \r  \t   /   /    
0003440    d   e   l   a   y       ~   ~   ~   ~  \r  \t   ]  \r  \r   /
0003460    /       F   i   l   e   -   w   i   d   e       s   t   r   u
0003500    c   t   u   r   e       a   n   d       m   a   n   i   f   e
0003520    s   t       d   e   c   l   a   r   a   t   i   o   n   s   .
0003540   \r  \r   m   a   n   i   f   e   s   t       [  \r  \t   R   T
0003560    C   =   #   4   3   0  \r  \t   d   e   b   u   g   T   r   a
0003600    i   l   S   i   z   e       =       1   0   *   3  \r  \r  \t
0003620    /   /       F   a   i   l   u   r   e       C   o   d   e    
0003640    r   a   n   g   e   s       -   -       s   e   e       R   O
0003660    S   C   h   e   c   k  \r  \t   m   a   x   N   o   t   R   e
0003700    a   d   y       =       9       /   /       n   o   t       r
0003720    e   a   d   y   ,       b   u   t       p   r   o   b  \0 006
0003740  020   @ 377   v 037  \0  \a  \0 035  \0  \0   (      \0  \0   @
0003760   \0  \0 001 336 372  \0  \0  \0   > 304  \0 304 366 357 370 366
0004000    a   b   l   y       w   i   l   l       b   e       s   o   o
0004020    n  \r  \t   m   a   x   M   a   n   u   a   l       =       1
0004040    9       /   /       M   a   n   u   a   l       i   n   t   e
0004060    r   v   e   n   t   i   o   n       r   e   q   u   i   r   e
0004100    d  \r  \t   m   a   x   J   a   m       =       9   9  \t   /
0004120    /       E   r   r   o   r       d   u   r   i   n   g       o
0004140    p   e   r   a   t   i   o   n  \r  \t   m   i   n   D   o   c
0004160    u   m   e   n   t   E   r   r   o   r       =       3   0   0
0004200        /   /       D   o   c   u   m   e   n   t       i   n   h
0004220    e   r   e   n   t   l   y       h   a   r   d       t   o    
0004240    p   r   i   n   t  \r  \r  \t  \t   ]  \r  \r   /   /       R
0004260    O   S   C   h   e   c   k       v   a   l   u   e   s  \r   s
0004300    t   r   u   c   t   u   r   e       C   T   :  \r      \t   [
0004320   \r      \t   i   n   v   e   r   t  \t  \t   b   i   t       1
0004340        /   /       b   i   t       i   s       o   n       w   h
0004360    e   n       t   h   i   n   g   s       a   r   e       g   o
0004400    o   d  \r      \t   m   a   l   F   n   R   e   q  \t   b   i
0004420    t       1       /   /       D   o   v   e   r       m   a   l
0004440    f   u   n   c   t   i   o   n       b   i   t       m   u   s
0004460    t       a   l   s   o       b   e       o   n       o   r    
0004500    n   o       e   r   r   o   r  \r      \t   f   a   i   l   u
0004520    r   e   C   o   d   e  \t   b   i   t       6  \r      \t   w
0004540    o   r   d   I   n   d   e   x  \t   b   i   t       4  \r    
0004560   \t   b   i   t   I   n   d   e   x  \t   b   i   t       4  \r
0004600       \t   ]  \r  \r   m   a   n   i   f   e   s   t       /   /
0004620        f   a   c   t   o   r   s       f   o   r       c   r   e
0004640    a   t   i   n   g       t   a   b   l   e       e   n   t   r
0004660    i   e   s  \r  \t   [  \r  \t   I   n   v   e   r   t  \t  \t
0004700    =       #   1   0   0   0   0   0  \r  \t   M   a   l   F   n
0004720    R   e   q  \t   =       #   4   0   0   0   0  \r  \t  \0 006
0004740  020   @ 377   v 037  \0  \a  \0 035  \0  \0   (      \0  \0   @
0004760   \0  \0 001 336 370  \0  \0  \0   < 304  \0 304 366 357 370 366
0005000    C   o   d   e  \t  \t   =       2   5   6  \r  \t   W   o   r
0005020    d  \t  \t   =       1   6  \r  \t   B   i   t  \t  \t   =    
0005040    1  \r  \t   ]  \r  \r  \r  \f  \r   /   /       -   -   -   -
0005060    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0005140    -   -   -   -   -   -   -  \r   /   /       P   r   i   n   t
0005160   \t  \t   I   n   i   t   i   a   l   i   z   a   t   i   o   n
0005200   \r   /   /       -   -   -   -   -   -   -   -   -   -   -   -
0005220    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0005260    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -  \r
0005300   \r   /   /       R   e   t   u   r   n   s       -   1       i
0005320    f       p   r   i   n   t   i   n   g       i   s       s   u
0005340    c   c   e   s   s   f   u   l   l   y       c   o   m   p   l
0005360    e   t   e   d   ,       e   l   s   e  \r   /   /       n   P
0005400    a   g   e   s   P   r   i   n   t   e   d   ,       s   o    
0005420    c   a   n       p   i   c   k       u   p       w   h   e   r
0005440    e       w   e       l   e   f   t       o   f   f   .  \r  \r
0005460    l   e   t       D   r   i   v   e   P   r   i   n   t   e   r
0005500    (   p   D   o   c   ,       n   P   a   g   e   s   A   l   r
0005520    e   a   d   y   P   r   i   n   t   e   d   ,       l   v   F
0005540    a   i   l   u   r   e   C   o   d   e   )       =       v   a
0005560    l   o   f  \r   [  \r   /   /       *   *   *   *   *   *   *
0005600    *       S   e   e       S   p   r   u   c   e   M   e   a   s
0005620    u   r   e       -   -       d   o   n   '   t       m   o   v
0005640    e       d   e   c   l   a   r   a   t   i   o   n   s       o
0005660    f       n   e   x   t       f   i   v   e       l   o   c   a
0005700    l       v   a   r   i   a   b   l   e   s       *   *   *   *
0005720    *   *   *   *  \r  \t   l   e   t       m   a   l   f  \0 006
0005740  020   @ 377   v 037  \0  \a  \0 035  \0  \0   (      \0  \0   @
0005760   \0  \0 001 336 366  \0  \0  \0   : 304  \0 304 366 357 370 366
0006000    u   n   c   t   i   o   n   ,       p   r   o   c   e   e   d
0006020    C   o   d   e   ,       n   o   n   F   ,       c   o   l   d
0006040    S   t   a   r   t   ,       c   o   n   s   e   c   u   t   i
0006060    v   e   E   r   r   o   r   s       =       0   ,       0   ,
0006100        0   ,       0   ,       0  \r   /   /       *   *   *   *
0006120    *   *   *   *  \r  \t   l   e   t       C   o   m   m   T   a
0006140    b   =   v   e   c       1   0  \r  \t   C   o   m   m   T   a
0006160    b   =   (   C   o   m   m   T   a   b   +   1   )   &   (   -
0006200    2   )  \r  \r  \t   /   /       I   f       m   o   n   i   t
0006220    o   r   i   n   g       p   e   r   f   o   r   m   a   n   c
0006240    e   ,       t   h   e   s   e       a   r   e       r   e   a
0006260    l  \r  \t   I   n   i   t   i   a   l   i   z   e   H   a   r
0006300    d   w   a   r   e   (   f   a   l   s   e   )  \r  \t   I   n
0006320    i   t   M   e   a   s   u   r   e   (   m   e   a   s   u   r
0006340    e   T   a   b   l   e   ,       2   0   0   0   ,       (   l
0006360    v       m   a   l   f   u   n   c   t   i   o   n   )   -   1
0006400    )  \r  \r  \t   c   o   n   s   e   c   u   t   i   v   e   E
0006420    r   r   o   r   s   =   0  \r  \t   l   e   t       k   n   o
0006440    c   k   K   n   o   c   k       =       f   a   l   s   e  \t
0006460   \t   /   /       t   i   m   e       t   o       l   e   t    
0006500    s   o   m   e   b   o   d   y       i   n       i   f       t
0006520    r   u   e  \r  \t   l   e   t       s   t   o   p   P   r   i
0006540    n   t   ,       o   k   P   r   i   n   t       =       #   6
0006560    0   0   0   0   ,       #   6   0   0   0   1      \r  \r  \f
0006600    /   /       P   r   i   n   t       (   c   o   n   t   .   )
0006620   \t  \t   S   l   o   w       L   o   o   p  \r  \r   /   /    
0006640    L   o   o   p       o   u   t       t   o       h   e   r   e
0006660        w   h   e   n       a       n   e   w       f   o   n   t
0006700        s   e   t       i   s       r   e   q   u   i   r   e   d
0006720    ,       o   r       w   h   e   n  \r   /   /       n  \0 006
0006740  020   @ 377   v 037  \0  \a  \0 035  \0  \0   (      \0  \0   @
0006760   \0  \0 001 336 364  \0  \0  \0   8 304  \0 304 366 357 370 366
0007000    e   e   d   i   n   g       t   o       c   o   m   p   l   e
0007020    t   e   l   y       r   e   s   t   a   r   t       t   h   e
0007040        p   r   i   n   t   e   r   .  \r   [   S   l   o   w  \r
0007060    /   /       F   i   n   d       o   u   t       w   h   i   c
0007100    h       p   a   g   e       t   o       p   r   i   n   t    
0007120    n   e   x   t   :  \r  \t   l   e   t       c   o   p   y    
0007140    =       n   i   l  \r  \t   l   e   t       p   a   g   e   =
0007160    P   r   i   n   t   N   e   x   t   (   p   D   o   c   ,    
0007200    l   v       c   o   p   y   ,       n   P   a   g   e   s   P
0007220    r   i   n   t   e   d   )  \r  \t   i   f       p   a   g   e
0007240        e   q       0       t   h   e   n       [       k   n   o
0007260    c   k   K   n   o   c   k       =       f   a   l   s   e   ;
0007300        b   r   e   a   k       ]  \r  \t   i   f       k   n   o
0007320    c   k   K   n   o   c   k       t   h   e   n       b   r   e
0007340    a   k       /   /       g   o       l   e   t       s   o   m
0007360    e   b   o   d   y       i   n  \r  \r   /   /       R   e   a
0007400    d       i   n       f   o   n   t       a   n   d       r   e
0007420    l   o   c   a   t   e       t   h   e       p   o   i   n   t
0007440    e   r   s       t   o       c   h   a   r   a   c   t   e   r
0007460    s   :  \r  \t   l   e   t       f   o   n   t   =   p   a   g
0007500    e   >   >   P   a   g   e   G   .   f   o   n   t   L   o   a
0007520    d   *   (   s   i   z   e       F   o   n   t   G   /   1   6
0007540    )   +   p   D   o   c   >   >   D   o   c   G   .   F   o   n
0007560    t   s  \r  \t   /   /       N   e   x   t       c   a   l   l
0007600        r   e   t   u   r   n   s       l   o   c   a   t   i   o
0007620    n       o   f       I   C   C       t   a   b   l   e   ,  \r
0007640   \t   l   e   t       F   o   n   t   T   a   b   l   e       =
0007660        R   e   a   d   F   o   n   t   (   f   o   n   t   ,    
0007700    L   o   w   A   d   r   ,       n   R   e   c   s   )  \r  \t
0007720    u   n   l   e   s   s       x   m   F   o   n   t   s  \0 006
0007740  020   @ 377   v 037  \0  \a  \0 035  \0  \0   (      \0  \0   @
0007760   \0  \0 001 336 362  \0  \0  \0   6 304  \0 304 366 357 370 366
0010000        d   o       f   o   r       i   =   0       t   o       p
0010020    D   o   c   >   >   D   o   c   G   .   I   C   C   t   o   t
0010040    a   l   -   1       d   o       /   /       i   f       r   a
0010060    s   t   e   r   s       a   r   e       i   n       b   a   n
0010100    k       1   ,       t   h   e   y       s   t   a   r   t    
0010120    a   t       0  \r  \t  \t   F   o   n   t   T   a   b   l   e
0010140    !   i   =   F   o   n   t   T   a   b   l   e   !   i       +
0010160        L   o   w   A   d   r  \r  \t   F   o   n   t   T   a   b
0010200    l   e   =   F   o   n   t   T   a   b   l   e   -   1   0   0
0010220    0   0   0   b  \r  \r   /   /       F   i   g   u   r   e    
0010240    o   u   t       w   h   e   r   e       b   u   f   f   e   r
0010260    s       a   r   e   .      \r  \t   l   e   t       n   R   e
0010300    c   o   r   d   s   =       x   m   F   o   n   t   s   ?    
0010320    (   p   D   o   c   >   >   D   o   c   G   .   I   C   C   t
0010340    o   t   a   l   +   b   a   n   d   R   e   c   o   r   d   S
0010360    i   z   e   -   1   )       r   s   h   i   f   t       l   o
0010400    g   B   a   n   d   R   e   c   o   r   d   S   i   z   e   ,
0010420   \r  \t  \t  \t  \t   f   o   n   t   >   >   F   o   n   t   G
0010440    .   n   R   e   c   o   r   d   s  \r  \t   l   e   t       n
0010460    f   R   e   c   s   =   (   n   R   e   c   s   -   n   R   e
0010500    c   o   r   d   s   )   /   2       /   /       m   a   x    
0010520    a   l   l   o   w   a   b   l   e       b   a   n   d       l
0010540    i   s   t       s   i   z   e       f   o   r       n   o   r
0010560    m   a   l       a   l   t   e   r   n   a   t   i   o   n  \r
0010600   \t   l   e   t       L   e   f   t   O   v   e   r       =    
0010620    L   o   w   A   d   r   +   (   n   R   e   c   o   r   d   s
0010640        l   s   h   i   f   t       l   o   g   B   a   n   d   R
0010660    e   c   o   r   d   S   i   z   e   )  \r  \t   l   e   t    
0010700    L   e   f   t   O   v   e   r   G   u   a   r   d       =    
0010720    L   e   f   t   O   v   e   r   +   (   l   o   S   i  \0 006
0010740  020   @ 377   v 037  \0  \a  \0 035  \0  \0   (      \0  \0   @
0010760   \0  \0 001 336 360  \0  \0  \0   4 304  \0 304 366 357 370 366
0011000    z   e   &   (   -   4   )   )   -   4  \r  \t   l   e   t    
0011020    b   u   f   1       =       (   L   e   f   t   O   v   e   r
0011040    +   l   o   S   i   z   e   +   8   )   &   (   -   2   )    
0011060    /   /       ~   ~       a   l   l       t   h   e       4   '
0011100    s   ,       8   '   s       a   n   d       1   0   '   s    
0011120    i   n       h   e   r   e       a   r   e       c   o   w   a
0011140    r   d   l   y       s   l   a   c   k  \r  \t   l   e   t    
0011160    b   u   f   2   =   b   u   f   1   +   n   f   R   e   c   s
0011200        l   s   h   i   f   t       l   o   g   B   a   n   d   R
0011220    e   c   o   r   d   S   i   z   e  \r  \t   l   e   t       c
0011240    u   r   b   u   f   =       b   u   f   1       /   /       f
0011260    i   r   s   t       r   e   a   l       d   a   t   a       i
0011300    m   a   g   e   d       f   r   o   m       b   u   f   1  \r
0011320   \r   /   /       N   o   w       r   e   a   d       i   n    
0011340    t   h   e       b   a   n   d   s       f   o   r       t   h
0011360    i   s       p   a   g   e  \r  \t   R   e   a   d   B   a   n
0011400    d   s   (   p   a   g   e   ,       c   u   r   b   u   f   ,
0011420        n   f   R   e   c   s   *   2   )  \r   /   /       I   n
0011440    i   t   i   a   l   i   z   e       t   h   e       O   r   b
0011460    i   t   ,           e   t   c   .  \r  \t   I   n   i   t   i
0011500    a   l   i   z   e   H   a   r   d   w   a   r   e   (   f   a
0011520    l   s   e   )  \r  \t   l   e   t       n   p       =       n
0011540    i   l  \r  \t   l   e   t       t   i   m       =       @   R
0011560    T   C  \r   /   /       C   h   e   c   k       f   o   r    
0011600    p   r   o   b   l   e   m   s   ,       w   a   i   t       f
0011620    o   r       r   e   a   d   y       i   n   d   i   c   a   t
0011640    i   o   n  \r           /   /       w   a   i   t       f   o
0011660    r       r   e   a   d   y       o   r       s   o   m   e    
0011700    s   e   r   i   o   u   s       c   o   n   d   i   t   i   o
0011720    n       o   r       f   o   r       l   o   n   g      \0 006
0011740  020   @ 377   v 037  \0  \a  \0 035  \0  \0   (      \0  \0   @
0011760   \0  \0 001 336 356  \0  \0  \0   2 304  \0 304 366 357 370 366
0012000    e   n   o   u   g   h  \r               u   n   l   e   s   s
0012020        D   e   b   u   g       d   o  \r  \t   /   /       s   F
0012040    i   x       ~   ~   ~   ~   ~       p   o   s   s   i   b   l
0012060    y       w   a   i   t       f   o   r       s   h   u   t   d
0012100    o   w   n       ~   ~   ~   ~   ~   ~   ~   ~   ~   ~   ~   ~
0012120    ~   ~   ~   ~   ~   ~  \r  \t   [       /   /       s   F   i
0012140    x       ~   ~   ~   ~   ~  \r  \t   w   h   i   l   e       (
0012160    @   R   T   C   -   t   i   m   )       <       r   e   a   d
0012200    y   T   i   m   e   O   u   t       l   o   o   p  \r  \t   r
0012220    e   a   d   y   T   i   m   e   O   u   t       =       s   R
0012240    e   a   d   y   T   i   m   e   O   u   t  \r  \t   /   /    
0012260    s   F   i   x       ~   ~   ~   ~   ~   ~   ~   ~   ~   ~   ~
0012300    ~   ~   ~   ~   ~   ~   ~   ~   ~   ~   ~   ~   ~   ~   ~   ~
0012320    ~   ~   ~   ~   ~   ~   ~   ~   ~   ~   ~   ~   ~   ~   ~  \r
0012340   \t   [  \r  \t   n   p       =       R   O   S   C   h   e   c
0012360    k   (   l   v   F   a   i   l   u   r   e   C   o   d   e   ,
0012400        n   P   a   g   e   s   A   l   r   e   a   d   y   P   r
0012420    i   n   t   e   d   ,       f   a   l   s   e   )  \r  \t   i
0012440    f       n   p       e   q       -   1       b   r   e   a   k
0012460        /   /       r   e   a   d   y  \r  \t   i   f       @   l
0012500    v   F   a   i   l   u   r   e   C   o   d   e       >       m
0012520    a   x   N   o   t   R   e   a   d   y       %       (   @   R
0012540    T   C   -   t   i   m   )       >       t   i   m   e   O   u
0012560    t       r   e   s   u   l   t   i   s       n   p  \r  \t   ]
0012600        r   e   p   e   a   t  \r  \t   ]       /   /       s   F
0012620    i   x       ~   ~   ~   ~   ~  \r  \r   /   /       T   r   y
0012640        t   o       e   m   p   t   y       O   r   b   i   t    
0012660    b   u   f   f   e   r   s       t   o       c   l   e   a   r
0012700        t   h   e   m   .           T   h   i   s       i   s    
0012720    t   o       m   i   n   i   m   i   z   e  \r   /   /  \0 006
0012740  020   @ 377   v 037  \0  \a  \0 035  \0  \0   (      \0  \0   @
0012760   \0  \0 001 336 354  \0  \0  \0   0 304  \0 304 366 357 370 366
0013000        t   o   n   e   r       d   u   m   p   i   n   g       o
0013020    n       f   i   r   s   t       (   b   l   a   n   k   )    
0013040    p   a   g   e   .  \r  \t   c   o   m   p   i   l   e   i   f
0013060        l   o   S   i   z   e       l   s       2   5   6       t
0013100    h   e   n       [       f   o   o   =   n   i   l       ]  \r
0013120   \t   f   o   r       i   =   0       t   o       3   1       d
0013140    o       D   o   F   u   n   c   (   f   R   e   a   d   B   l
0013160    o   c   k   ,       2   5   6   ,       L   e   f   t   O   v
0013200    e   r   )  \r  \r   /   /       N   o   w       f   e   e   d
0013220        f   i   r   s   t       s   h   e   e   t   :  \r  \t   D
0013240    o   F   u   n   c   (   f   C   o   n   t   r   o   l   ,    
0013260    2   1   b   )  \r  \t   D   o   F   u   n   c   (   f   R   O
0013300    S   C   o   m   m   a   n   d   ,       a   d   B   u   f   f
0013320    e   r   R   e   s   e   t   )  \r  \t   F   e   e   d   A   S
0013340    h   e   e   t   (   )  \r  \t   A   w   a   i   t   P   a   g
0013360    e   S   y   n   c   (   0   )  \t   /   /   W   a   i   t    
0013400    f   o   r       s   e   n   d   V   i   d   e   o       t   o
0013420        g   o       o   f   f   .  \r  \f   /   /       P   r   i
0013440    n   t       (   c   o   n   t   .   )  \t  \t   F   a   s   t
0013460        L   o   o   p  \r  \r   [   R   u   n   n   i   n   g   L
0013500    o   o   p  \r   /   /       C   a   l   c   u   l   a   t   e
0013520        a       R   O   S       c   o   m   m   a   n   d       t
0013540    a   b   l   e       f   o   r       t   h   e       d   e   v
0013560    i   c   e   :  \r  \t  \t   C   o   m   m   T   a   b   !   0
0013600    =   s   i   g   n   a   l   B   a   n   d  \r  \t  \t   C   o
0013620    m   m   T   a   b   !   1   =   s   t   o   p   P   r   i   n
0013640    t  \t  \t   /   /   S   t   o   p       u   n   l   e   s   s
0013660        p   r   o   v   e   n       o   t   h   e   r   w   i   s
0013700    e       (   b   e   l   o   w   )  \r  \t  \t   C   o   m   m
0013720    T   a   b   !   2   =   -   1  \r  \r   /   /       S  \0 006
0013740  020   @ 377   v 037  \0  \a  \0 035  \0  \0   (      \0  \0   @
0013760   \0  \0 001 336 352  \0  \0  \0   . 304  \0 304 366 357 370 366
0014000    t   a   r   t       O   r   b   i   t       w   o   r   k   i
0014020    n   g       o   n       t   h   e       p   r   e   s   e   n
0014040    t       p   a   g   e   .  \r  \t   D   o   F   u   n   c   (
0014060    f   C   o   n   t   r   o   l   ,       #   2   1   )  \t  \t
0014100    /   /   R   e   s   e   t   ,       c   l   e   a   r       b
0014120    e   h   i   n   d  \r  \t   D   o   F   u   n   c   (   f   R
0014140    O   S   C   o   m   m   a   n   d   ,       a   d   B   u   f
0014160    f   e   r   R   e   s   e   t   )  \r  \r  \t   L   e   f   t
0014200    O   v   e   r   !   0   =   0  \t  \t  \t   /   /   I   n   i
0014220    t   i   a   l   i   z   e       L   e   f   t   O   v   e   r
0014240        t   a   b   l   e  \r  \t   L   e   f   t   O   v   e   r
0014260    G   u   a   r   d   !   1   =   -   1  \r  \t   t   i   m   =
0014300    @   R   T   C  \r   /   /       S   t   a   r   t       t   h
0014320    e       m   i   c   r   o   c   o   d   e   !   !   !   !  \r
0014340   \t   D   o   F   u   n   c   (   f   S   l   o   t   ,       C
0014360    o   m   m   T   a   b   ,       2   0   0   0   0   ,       n
0014400    B   a   n   d   s   -   1   ,       F   A   v   a   l   u   e
0014420    ,       L   e   f   t   O   v   e   r   ,  \r  \t  \t  \t   F
0014440    o   n   t   T   a   b   l   e   ,       c   u   r   b   u   f
0014460    -   1   ,       n   i   l   ,       n   i   l   ,       (   c
0014500    o   p   y       l   s   h   i   f   t       5   )   +   4   )
0014520   \r  \r   i   f       D   e   b   u   g       t   h   e   n    
0014540    /   /       ~   ~   d   e   l   a   y  \r  \t   [       /   /
0014560        ~   ~   d   e   l   a   y  \r  \t   w   h   i   l   e    
0014600    (   @   R   T   C   -   t   i   m   )       <       d   e   b
0014620    D   e   l   a   y       l   o   o   p  \t   /   /       ~   ~
0014640    d   e   l   a   y  \r  \t   t   i   m       =       @   R   T
0014660    C       /   /       ~   ~   d   e   l   a   y       d   o   n
0014700    '   t       i   n   v   o   k   e       t   i   m   e   o   u
0014720    t       c   o   d   e       b   e   l   o   w  \r  \t  \0 006
0014740  020   @ 377   v 037  \0  \a  \0 035  \0  \0   (      \0  \0   @
0014760   \0  \0 001 336 350  \0  \0  \0   , 304  \0 304 366 357 370 366
0015000    ]       /   /       ~   ~   d   e   l   a   y  \r  \t  \r   /
0015020    /       P   r   o   c   e   e   d       c   o   d   e   :  \r
0015040    /   /       0   :       C   h   a   r   g   e       o   n    
0015060    a   h   e   a   d   ,       f   u   l   l       s   p   e   e
0015100    d  \r   /   /       1   :       P   a   u   s   e       b   e
0015120    c   a   u   s   e       c   a   n   n   o   t       f   i   t
0015140        b   a   n   d   s       o   r       f   o   n   t       f
0015160    o   r       n   e   x   t       p   a   g   e   ,  \r   /   /
0015200                        o   r       b   e   c   a   u   s   e    
0015220    p   r   i   n   t   i   n   g       i   s       d   o   n   e
0015240    .  \r  \r   /   /       A   s   s   u   m   e       t   h   e
0015260        p   a   g   e       w   e       a   r   e       p   r   i
0015300    n   t   i   n   g       w   i   l   l       b   e       O   K
0015320    :  \r  \t  \t   n   P   a   g   e   s   P   r   i   n   t   e
0015340    d   =   n   P   a   g   e   s   P   r   i   n   t   e   d   +
0015360    1  \r  \t  \t   C   u   r   s   o   r   D   i   g   i   t   (
0015400    n   P   a   g   e   s   P   r   i   n   t   e   d   )  \r   /
0015420    /       S   e   e       w   h   o   '   s       (   m   a   y
0015440    b   e   )       k   n   o   c   k   i   n   g       a   t    
0015460    m   y       d   o   o   r  \r   /   /       T   h   i   s    
0015500    l   o   g   i   c       i   s       c   o   p   i   e   d    
0015520    f   r   o   m       S   p   r   u   c   e   U   t   i   l   s
0015540    R   e   s   :       i   f       w   e       a   r   e       n
0015560    o   t       p   l   a   n   n   i   n   g       t   o       d
0015600    e   f   e   r       t   o       s   p   o   o   l   e   r   ,
0015620   \r   /   /           d   o   n   '   t       t   r   o   u   b
0015640    l   e       t   o       s   h   u   t       d   o   w   n    
0015660    h   e   r   e   ,       j   u   s   t       t   o       f   i
0015700    n   d       t   h   a   t       o   u   t       t   h   e   r
0015720    e   .       W   o   u   l   d       b   e       t   o  \0 006
0015740  020   @ 377   v 037  \0  \a  \0 035  \0  \0   (      \0  \0   @
0015760   \0  \0 001 336 346  \0  \0  \0   * 304  \0 304 366 357 370 366
0016000    o       e   x   p   e   n   s   i   v   e  \r  \t   i   f    
0016020    (   D   e   b   u   g   S   y   s   t   e   m   &   #   3   0
0016040    )       e   q       0       &       n   u   m   P   r   i   n
0016060    t   e   d       g   e       n   u   m   M   u   s   t   P   r
0016100    i   n   t       &       k   n   o   c   k   R   e   s   u   l
0016120    t       &  \r  \t   (   n   P   a   g   e   s   P   r   i   n
0016140    t   e   d   -   n   P   a   g   e   s   A   l   r   e   a   d
0016160    y   P   r   i   n   t   e   d   )       >       p   r   i   n
0016200    t   H   y   s   t   e   r   e   s   i   s      \t       t   h
0016220    e   n       k   n   o   c   k   K   n   o   c   k       =    
0016240    t   r   u   e  \r  \r   /   /       F   i   n   d       n   e
0016260    x   t       p   a   g   e       t   o       w   o   r   k    
0016300    o   n   :  \r  \t   p   r   o   c   e   e   d   C   o   d   e
0016320    =   1  \r  \t   l   e   t       n   e   x   t   b   u   f   =
0016340    c   u   r   b   u   f       x   o   r       b   u   f   1    
0016360    x   o   r       b   u   f   2  \r  \t   l   e   t       n   e
0016400    x   t   P   a   g   e   =   P   r   i   n   t   N   e   x   t
0016420    (   p   D   o   c   ,   l   v       c   o   p   y   ,       n
0016440    P   a   g   e   s   P   r   i   n   t   e   d   )  \r  \r  \t
0016460    i   f       (   n   o   t       k   n   o   c   k   K   n   o
0016500    c   k   )       &       n   e   x   t   P   a   g   e       t
0016520    h   e   n  \r  \t  \t   /   /   U   n   l   e   s   s       t
0016540    h   i   s       p   a   g   e       g   e   t   s       m   e
0016560    s   s   e   d       u   p       w   e       w   i   l   l    
0016600    c   o   n   t   i   n   u   e       p   r   i   n   t   i   n
0016620    g   .  \r  \t  \t   [  \r  \t  \t   i   f       (   n   e   x
0016640    t   P   a   g   e   >   >   P   a   g   e   G   .   f   o   n
0016660    t   L   o   a   d       e   q       p   a   g   e   >   >   P
0016700    a   g   e   G   .   f   o   n   t   L   o   a   d   )       &
0016720   \r  \t  \t   (   n   e   x   t   P   a   g   e   >   >  \0 006
0016740  020   @ 377   v 037  \0  \a  \0 035  \0  \0   (      \0  \0   @
0016760   \0  \0 001 336 344  \0  \0  \0   ( 304  \0 304 366 357 370 366
0017000    P   a   g   e   G   .   n   R   e   c   o   r   d   s       l
0017020    e       n   f   R   e   c   s   )       t   h   e   n  \r  \t
0017040   \t  \t   [  \r  \t  \t  \t   p   r   o   c   e   e   d   C   o
0017060    d   e       =       0  \r  \r   /   /       R   e   a   d    
0017100    i   n       t   h   e       b   a   n   d   s       f   o   r
0017120        t   h   e       n   e   x   t       p   a   g   e   :  \r
0017140   \t  \t  \t   C   o   m   m   T   a   b   !   1   =   o   k   P
0017160    r   i   n   t       /   /       d   o   n   '   t       s   t
0017200    o   p  \r  \t  \t  \t   R   e   a   d   B   a   n   d   s   (
0017220    n   e   x   t   P   a   g   e   ,       n   e   x   t   b   u
0017240    f   ,       n   f   R   e   c   s   )  \r  \t  \t  \t   ]  \r
0017260   \t  \t   ]  \r  \r  \f   /   /       P   r   i   n   t       (
0017300    c   o   n   t   .   )  \t  \t   W   a   i   t       f   o   r
0017320        c   o   m   p   l   e   t   i   o   n   ,       a   n   a
0017340    l   y   z   e       r   e   s   u   l   t   s  \r  \r   /   /
0017360        N   o   w       s   e   e       i   f       w   e       a
0017400    c   t   u   a   l   l   y       p   r   i   n   t   e   d    
0017420    t   h   i   s       p   a   g   e       p   r   o   p   e   r
0017440    l   y   .           F   i   r   s   t   ,  \r   /   /       w
0017460    a   i   t       f   o   r       O   r   b   i   t       t   o
0017500        a   n   n   o   u   n   c   e       i   t       i   s    
0017520    f   i   n   i   s   h   e   d   .  \r  \t   l   e   t       i
0017540    m   a   g   e   T   i   m   e   o   u   t       =       1   0
0017560    *   2   7  \r  \t   w   h   i   l   e       @   #   7   2   0
0017600        n   e       0       d   o       i   f       (   @   R   T
0017620    C   -   t   i   m   )       g   r       i   m   a   g   e   T
0017640    i   m   e   o   u   t       t   h   e   n  \r  \t  \t   [  \r
0017660   \t  \t   B   l   a   s   t   (   )  \t  \t   /   /       c   l
0017700    e   a   r       h   a   r   d   w   a   r   e   ,       #   7
0017720    2   0  \r  \t  \t       /   /       M   a   c   h   i  \0 006
0017740  020   @ 377   v 037  \0  \a  \0 035  \0  \0   (      \0  \0   @
0017760   \0  \0 001 336 342  \0  \0  \0   & 304  \0 304 366 357 370 366
0020000    n   e       d   e   a   d       o   r       O   r   b   i   t
0020020        g   o   t       b   e   h   i   n   d       a   n   d    
0020040    i   t       w   a   s   n   '   t       d   e   t   e   c   t
0020060    e   d  \r  \t  \t       /   /       W   i   l   l       g   e
0020100    n   e   r   a   l   l   y       b   e       o   v   e   r   r
0020120    i   d   e   n       b   y       m   o   r   e       s   p   e
0020140    c   i   f   i   c       a   n   a   l   y   s   i   s  \r  \t
0020160   \t   @   l   v   F   a   i   l   u   r   e   C   o   d   e    
0020200    =       1   9       /   /       M   a   n   u   a   l       i
0020220    n   t   e   r   v   e   n   t   i   o   n       r   e   q   u
0020240    i   r   e   d  \r  \t  \t   b   r   e   a   k  \r  \t  \t   ]
0020260   \r   /   /       C   h   e   c   k       O   r   b   i   t    
0020300    s   t   a   t   u   s  \r  \t   n   o   n   F       =       0
0020320   \r  \t   l   e   t       s   t   a   t   =   F   u   n   c   !
0020340    9  \t  \t   /   /   O   r   b   i   t       p   r   i   n   t
0020360    i   n   g       s   t   a   t   u   s   .  \r  \t   /   /    
0020400    F   a   t   a   l       e   r   r   o   r       d   e   t   e
0020420    c   t   e   d       b   y       m   i   c   r   o   c   o   d
0020440    e       -   -       i   n   v   a   l   i   d       B   a   n
0020460    d       e   n   t   r   y       -   -       p   o   s   s   i
0020500    b   l   y       b   r   o   k   e   n       p   r   o   c   e
0020520    s   s   o   r  \r  \t   i   f       s   t   a   t   <   <   S
0020540    T   A   T   U   S   .   i   n   v   a   l   i   d   B   a   n
0020560    d   E   n   t   r   y       t   h   e   n  \r  \t  \t   [    
0020600    I   n   i   t   i   a   l   i   z   e   H   a   r   d   w   a
0020620    r   e   (   t   r   u   e   )   ;      \r  \t  \t           i
0020640    f       L   e   f   t   O   v   e   r   G   u   a   r   d   !
0020660    1       e   q       -   1       t   h   e   n       S   p   r
0020700    u   c   e   E   r   r   o   r   (   1   0   1   0   ,       @
0020720    1   ,       @   2   )           /   /   e   l   s   e  \0 006
0020740  020   @ 377   v 037  \0  \a  \0 035  \0  \0   (      \0  \0   @
0020760   \0  \0 001 336 340  \0  \0  \0   $ 304  \0 304 366 357 370 366
0021000    ,       a   s   s   u   m   e       t   h   a   t  \r  \t  \t
0021020   \t   /   /   b   a   d       b   a   n   d       e   n   t   r
0021040    y       i   s       s   i   m   p   l   y       r   e   s   u
0021060    l   t       o   f       l   e   f   t   o   v   e   r       o
0021100    v   e   r   f   l   o   w  \r  \t  \t   ]  \r  \t   t   e   s
0021120    t       s   t   a   t   <   <   S   T   A   T   U   S   .   p
0021140    r   e   m   a   t   u   r   e   P   a   g   e   A   b   o   r
0021160    t       t   h   e   n       [       A   n   n   o   u   n   c
0021200    e   (   1   6   )   ;       n   o   n   F       =       3   0
0021220    1       ]  \r  \t           o   r       i   f       s   t   a
0021240    t   <   <   S   T   A   T   U   S   .   b   e   h   i   n   d
0021260        t   h   e   n       [       A   n   n   o   u   n   c   e
0021300    (   1   6   )   ;       n   o   n   F       =       3   0   0
0021320        ]  \r  \t   i   f       s   t   a   t   <   <   S   T   A
0021340    T   U   S   .   t   i   m   e   o   u   t       t   h   e   n
0021360        [       A   n   n   o   u   n   c   e   (   1   7   )   ;
0021400        @   l   v   F   a   i   l   u   r   e   C   o   d   e    
0021420    =       1   8       ]  \r  \t   i   f       L   e   f   t   O
0021440    v   e   r   G   u   a   r   d   !   1       n   e       -   1
0021460        t   h   e   n  \r  \t           [       A   n   n   o   u
0021500    n   c   e   (   1   8   )   ;       n   o   n   F       =    
0021520    3   1   0       /   /       t   h   e   n       c   h   e   c
0021540    k       p   o   s   s   i   b   l   e       n   e   x   t    
0021560    p   a   g   e       d   a   t   a       e   n   c   l   o   b
0021600    b   e   r   m   e   n   t  \r  \t               i   f       (
0021620    (   p   r   o   c   e   e   d   C   o   d   e   &   1   )    
0021640    e   q       0   )       &       n   e   x   t   b   u   f    
0021660    e   q       b   u   f   1       t   h   e   n       p   r   o
0021700    c   e   e   d   C   o   d   e       =       1       ]  \r  \t
0021720    i   f       n   o   n   F       t   h   e   n       @  \0 006
0021740  020   @ 377   v 037  \0  \a  \0 035  \0  \0   (      \0  \0   @
0021760   \0  \0 001 336 336  \0  \0  \0   " 304  \0 304 366 357 370 366
0022000    l   v   F   a   i   l   u   r   e   C   o   d   e       =    
0022020    n   o   n   F  \r  \t   i   f       (   s   t   o   p   s   P
0022040    r   i   n   t   i   n   g       e   q       b   i   n   F   u
0022060    l   l   )       &       (   @   l   v   F   a   i   l   u   r
0022100    e   C   o   d   e       e   q       n   o   n   F   )        
0022120    t   h   e   n       @   l   v   F   a   i   l   u   r   e   C
0022140    o   d   e       =       1   3   0  \r  \t   A   d   d   T   o
0022160    B   i   n   (   1   5   0   0   )  \r   /   /       N   o   w
0022200        t   r   y       f   o   r       m   o   r   e       s   p
0022220    e   c   i   f   i   c       e   n   g   i   n   e       s   t
0022240    a   t   u   s       c   h   e   c   k  \r  \r  \t   n   p   =
0022260    R   O   S   C   h   e   c   k   (   l   v   F   a   i   l   u
0022300    r   e   C   o   d   e   ,       n   P   a   g   e   s   A   l
0022320    r   e   a   d   y   P   r   i   n   t   e   d   ,       t   r
0022340    u   e   )  \r   /   /       N   o   w       w   a   i   t    
0022360    f   o   r       p   a   g   e       s   y   n   c       t   o
0022400        g   o       o   f   f  \r  \t   u   n   l   e   s   s    
0022420    A   w   a   i   t   P   a   g   e   S   y   n   c   (   0   )
0022440        t   h   e   n       @   l   v   F   a   i   l   u   r   e
0022460    C   o   d   e       =       1   6  \r  \r   /   /   N   o   w
0022500        d   e   c   i   d   e       w   h   a   t       t   o    
0022520    d   o   :  \r  \t   i   f       p   r   o   c   e   e   d   C
0022540    o   d   e       t   h   e   n       A   n   n   o   u   n   c
0022560    e   (   p   r   o   c   e   e   d   C   o   d   e   )  \r  \t
0022600    m   a   l   f   u   n   c   t   i   o   n       =       @   l
0022620    v   F   a   i   l   u   r   e   C   o   d   e  \r  \t   i   f
0022640        m   a   l   f   u   n   c   t   i   o   n       g   e    
0022660    m   i   n   D   o   c   u   m   e   n   t   E   r   r   o   r
0022700        t   h   e   n       m   a   l   f   u   n   c   t   i   o
0022720    n       =       0       /   /       w   i   l   l      \0 006
0022740  020   @ 377   v 037  \0  \a  \0 035  \0  \0   (      \0  \0   @
0022760   \0  \0 001 336 334  \0  \0  \0     304  \0 304 366 357 370 366
0023000    n   o   t       s   t   o   p  \r  \r   /   /       N   o   w
0023020        r   e   a   c   t       t   o       t   h   e       a   n
0023040    a   l   y   s   i   s   :       i   f       a   t       t   h
0023060    i   s       p   o   i   n   t       n   o   t   h   i   n   g
0023100        i   s       w   r   o   n   g       a   n   d       s   h
0023120    e   e   t   s       a   r   e  \r   /   /       f   e   e   d
0023140    i   n   g   ,       s   t   e   a   m       a   h   e   a   d
0023160    .       O   t   h   e   r   w   i   s   e   ,       r   e   t
0023200    u   r   n       t   o       t   h   e       s   l   o   w    
0023220    l   o   o   p       i   f       d   a   t   a       i   s    
0023240    n   o   t       a   v   a   i   l   a   b   l   e  \r   /   /
0023260        o   r       i   f       p   a   p   e   r       m   i   s
0023300    f   e   d   .       R   e   t   u   r   n       i   f       t
0023320    h   e   r   e       w   a   s       a       s   e   r   i   o
0023340    u   s       m   a   l   f   u   n   c   t   i   o   n   ,    
0023360    o   r       i   f       t   h   i   n   g   s       l   o   o
0023400    k  \r   /   /       o   d   d       s   e   v   e   r   a   l
0023420        t   i   m   e   s       c   o   n   s   e   c   u   t   i
0023440    v   e   l   y       (   p   a   p   e   r       f   a   i   l
0023460    e   d       t   o       f   e   e   d       i   s       t   h
0023500    e       o   n   l   y       c   a   s   e   ,       f   o   r
0023520        n   o   w   )  \r  \r  \t   M   e   a   s   u   r   e   (
0023540    #   2   3   ,   (   @   (   #   1   2   3   )   )   +   1   )
0023560        /   /       f   o   r   c   e       r   a   n   d   o   m
0023600        e   v   e   n   t  \r  \t   u   n   l   e   s   s       m
0023620    a   l   f   u   n   c   t   i   o   n       d   o  \r  \t    
0023640        [          \r  \t                   i   f       p   r   o
0023660    c   e   e   d   C   o   d   e       e   q       0           t
0023700    h   e   n  \r  \t  \t           [  \r  \t  \t           c   u
0023720    r   b   u   f   =   n   e   x   t   b   u   f  \r  \t  \0 006
0023740  020   @ 377   v 037  \0  \a  \0 035  \0  \0   (      \0  \0   @
0023760   \0  \0 001 336 332  \0  \0  \0 036 304  \0 304 366 357 370 366
0024000   \t           c   o   n   s   e   c   u   t   i   v   e   E   r
0024020    r   o   r   s   =   0  \r  \t  \t           l   o   o   p  \r
0024040   \t  \t           ]  \r  \t                   i   f       p   r
0024060    o   c   e   e   d   C   o   d   e       e   q       1       t
0024100    h   e   n           b   r   e   a   k           /   /   O   u
0024120    t       o   f       R   u   n   n   i   n   g   L   o   o   p
0024140   \r  \t           ]  \r  \t          \r  \t   M   e   a   s   u
0024160    r   e   (   #   2   3   ,   (   @   (   #   1   2   3   )   )
0024200    +   1   )       /   /       f   o   r   c   e       r   a   n
0024220    d   o   m       e   v   e   n   t  \r  \t  \t   I   n   i   t
0024240    i   a   l   i   z   e   H   a   r   d   w   a   r   e   (   t
0024260    r   u   e   )  \r  \t  \t   /   /       i   f       m   a   l
0024300    f   u   n   c   t   i   o   n       d   e   t   e   c   t   e
0024320    d       o   u   t   s   i   d   e       o   f       R   O   S
0024340    C   h   e   c   k   ,       s   e   t       n   p  \r  \t  \t
0024360    i   f       n   p       e   q       -   1       t   h   e   n
0024400        n   p       =       n   P   a   g   e   s   P   r   i   n
0024420    t   e   d   -   1  \r  \t  \t   /   /       a   c   c   o   u
0024440    n   t       f   o   r       p   r   e   v   i   o   u   s    
0024460    i   n   c   r   e   m   e   n   t  \r  \t  \t   n   p       =
0024500        M   a   x   (   n   p   -   1   ,       n   P   a   g   e
0024520    s   A   l   r   e   a   d   y   P   r   i   n   t   e   d   )
0024540   \r  \t  \t   C   l   o   s   e   M   e   a   s   u   r   e   (
0024560    )       /   /       i   f       m   e   a   s   u   r   e    
0024600    c   o   d   e       l   o   a   d   e   d   ,       t   h   i
0024620    s       i   s       r   e   a   l   ,       e   l   s   e    
0024640    d   u   m   m   y  \r  \t  \t   r   e   s   u   l   t   i   s
0024660        n   p  \r   ]   R   u   n   n   i   n   g   L   o   o   p
0024700        r   e   p   e   a   t  \r  \r   ]   S   l   o   w       r
0024720    e   p   e   a   t  \r  \r  \t   I   n   i   t   i   a  \0 006
0024740  020   @ 377   v 037  \0  \a  \0 035  \0  \0   (      \0  \0   @
0024760   \0  \0 001 336 330  \0  \0  \0 034 304  \0 304 366 357 370 366
0025000    l   i   z   e   H   a   r   d   w   a   r   e   (   t   r   u
0025020    e   )  \r  \t   C   l   o   s   e   M   e   a   s   u   r   e
0025040    (   )  \r  \t   r   e   s   u   l   t   i   s       (   k   n
0025060    o   c   k   K   n   o   c   k       %       @   l   v   F   a
0025100    i   l   u   r   e   C   o   d   e   )   ?       n   P   a   g
0025120    e   s   P   r   i   n   t   e   d   ,       -   1  \r   ]  \r
0025140   \r  \f  \r   /   /       -   -   -   -   -   -   -   -   -   -
0025160    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0025260   \r   /   /       n   P   a   g   e   s   P   r   i   n   t   e
0025300    d       =       R   O   S   C   h   e   c   k   (   l   v   F
0025320    a   i   l   u   r   e   C   o   d   e   ,       n   P   a   g
0025340    e   s   A   l   r   e   a   d   y   P   r   i   n   t   e   d
0025360    ,       r   u   n   n   i   n   g   ,       )  \r   /   /    
0025400    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0025500    -   -   -   -   -   -   -   -   -   -  \r  \r   /   /       a
0025520    n   a   l   y   z   e       R   O   S       s   t   a   t   u
0025540    s  \r   /   /       n   P   a   g   e   s   P   r   i   n   t
0025560    e   d       =       -   1       i   f       t   h   e   r   e
0025600        a   r   e       n   o       m   a   l   f   u   n   c   t
0025620    i   o   n   s   ,       R   O   S       i   s       r   e   a
0025640    d   y       t   o       p   r   i   n   t  \r   /   /  \t  \t
0025660   \t   o   t   h   e   r   w   i   s   e   ,       t   h   e    
0025700    n   u   m   b   e   r       o   f       p   a   g   e   s    
0025720    t   o       r   e   p   o   r   t       a   s       h  \0 006
0025740  020   @ 377   v 037  \0  \a  \0 035  \0  \0   (      \0  \0   @
0025760   \0  \0 001 336 326  \0  \0  \0 032 304  \0 304 366 357 370 366
0026000    a   v   i   n   g       b   e   e   n       p   r   i   n   t
0026020    e   d  \r   /   /       @   l   v   F   a   i   l   u   r   e
0026040    C   o   d   e       w   i   l   l       c   o   n   t   a   i
0026060    n       a   n       a   n   a   l   y   s   i   s       o   f
0026100        t   h   e       c   u   r   r   e   n   t       s   t   a
0026120    t   e   .       T   h   e       c   o   d   e       v   a   l
0026140    u   e   s       a   r   e  \r   /   /  \t  \t  \t   d   e   s
0026160    c   r   i   b   e   d       b   e   l   o   w   .  \r   /   /
0026200        n   P   a   g   e   s   A   l   r   e   a   d   y   P   r
0026220    i   n   t   e   d       p   l   a   c   e   s       a       l
0026240    o   w   e   r       b   o   u   n   d       o   n       t   h
0026260    e       n   P   a   g   e   s   P   r   i   n   t   e   d    
0026300    r   e   s   u   l   t   .       T   h   i   s      \r   /   /
0026320   \t  \t  \t   p   r   e   v   e   n   t   s       l   o   o   p
0026340    s       t   h   r   o   u   g   h       t   h   i   s       c
0026360    o   d   e       f   r   o   m       b   a   c   k   i   n   g
0026400        u   p       t   o   o       f   a   r   .  \r   /   /    
0026420    r   u   n   n   i   n   g  \t  \t   t   r   u   e       i   f
0026440        c   a   l   l   e   r       t   h   i   n   k   s       m
0026460    a   i   n       d   r   i   v   e       i   s       a   l   l
0026500    o   w   e   d       t   o       b   e       o   n       f   o
0026520    r       "   r   e   a   d   y   "  \r   /   /  \t  \t  \t   r
0026540    e   s   u   l   t   ,       f   a   l   s   e       o   t   h
0026560    e   r   w   i   s   e       (   w   a   i   t   i   n   g    
0026600    f   o   r       r   e   a   d   y   )   .  \r  \r   /   /    
0026620    R   O   S   C   h   e   c   k       f   i   r   s   t       s
0026640    c   r   e   e   n   s       t   h   e       c   u   r   r   e
0026660    n   t       s   t   a   t   u   s       f   o   r       a   n
0026700    y       m   a   l   f   u   n   c   t   i   o   n       i   n
0026720    d   i   c   a   t   i   o   n   s   ,       a   n   d  \0 006
0026740  020   @ 377   v 037  \0  \a  \0 035  \0  \0   (      \0  \0   @
0026760   \0  \0 001 336 324  \0  \0  \0 030 304  \0 304 366 357 370 366
0027000   \r   /   /       r   e   t   u   r   n   s       r   i   g   h
0027020    t       a   w   a   y       i   f       t   h   e   r   e    
0027040    a   r   e       n   o   n   e   .       O   t   h   e   r   w
0027060    i   s   e   ,       i   t       a   p   p   l   i   e   s    
0027100    t   h   e       c   u   r   r   e   n   t       s   t   a   t
0027120    u   s  \r   /   /       a   g   a   i   n   s   t       a    
0027140    p   r   i   n   t   e   r   -   d   e   p   e   n   d   e   n
0027160    t       t   a   b   l   e       o   f       p   o   s   s   i
0027200    b   l   e       c   o   n   d   i   t   i   o   n   s   ,    
0027220    y   i   e   l   d   i   n   g       a       f   a   i   l   u
0027240    r   e  \r   /   /       c   o   d   e       a   n   d       a
0027260        n   e   w       p   a   g   e       v   a   l   u   e    
0027300    -   -       t   h   e       l   a   s   t       p   a   g   e
0027320        c   e   r   t   a   i   n       t   o       h   a   v   e
0027340        b   e   e   n       r   e   l   i   a   b   l   y  \r   /
0027360    /       p   r   i   n   t   e   d   .       O   n   e       p
0027400    o   s   s   i   b   l   e       c   o   n   d   i   t   i   o
0027420    n       i   s       "   n   o       m   a   l   f   u   n   c
0027440    t   i   o   n       d   e   t   e   c   t   e   d   "   ,    
0027460    w   h   i   c   h       w   i   l   l       o   n   l   y  \r
0027500    /   /       b   e       i   s   s   u   e   d       f   o   r
0027520        p   r   i   n   t   e   r   s       t   h   a   t       g
0027540    i   v   e       n   o       p   o   s   i   t   i   v   e    
0027560    i   n   d   i   c   a   t   i   o   n       w   h   e   n    
0027600    t   h   e   y       a   r   e       m   e   r   e   l   y  \r
0027620    /   /       b   u   s   y       d   o   i   n   g       n   o
0027640    r   m   a   l       t   h   i   n   g   s   .  \r   /   /    
0027660    N   .   B   .       @   l   v   F   a   i   l   u   r   e   C
0027700    o   d   e       i   s       n   o   t       c   h   a   n   g
0027720    e   d       w   h   e   n       n   o       c   o   n  \0 006
0027740  020   @ 377   v 037  \0  \a  \0 035  \0  \0   (      \0  \0   @
0027760   \0  \0 001 336 322  \0  \0  \0 026 304  \0 304 366 357 370 366
0030000    d   i   t   i   o   n   s       a   r   e       f   o   u   n
0030020    d  \r  \r   /   /       T   h   e       f   a   i   l   u   r
0030040    e       c   o   d   e   s       d   i   v   i   d   e       i
0030060    n   t   o       r   a   n   g   e   s   :  \r   /   /       0
0030100    -   9  \t  \t   N   o   t       r   e   a   d   y   ,       b
0030120    u   t       n   o       i   n   d   i   c   a   t   i   o   n
0030140        o   f       p   r   o   b   l   e   m   s       o   r    
0030160    w   i   l   l       c   l   e   a   r       u   p       a   u
0030200    t   o   m   a   t   i   c   a   l   l   y  \r   /   /  \t  \t
0030220    (   i   n   c   l   u   d   e   s       f   u   s   e   r    
0030240    c   o   l   d   ,       w   a   r   m   u   p       m   o   d
0030260    e   ,       c   l   e   a   r   i   n   g       r   e   v   o
0030300    l   u   t   i   o   n   s   ,       e   t   c   .   )  \r   /
0030320    /       1   0   -   1   9  \t   M   a   n   u   a   l       i
0030340    n   t   e   r   v   e   n   t   i   o   n       r   e   q   u
0030360    i   r   e   d       b   e   f   o   r   e       m   a   c   h
0030400    i   n   e       c   a   n       b   e   c   o   m   e       r
0030420    e   a   d   y  \r   /   /  \t  \t   (   p   a   p   e   r    
0030440    l   o   w   ,       p   o   w   e   r       n   o   t       t
0030460    h   e   r   e   ,       e   t   c   .   )  \r   /   /       2
0030500    0   -   9   9  \t   J   a   m   s       a   n   d       o   t
0030520    h   e   r       o   p   e   r   a   t   i   o   n   a   l    
0030540    m   a   l   f   u   n   c   t   i   o   n   s       (   m   a
0030560    n   y       c   o   d   e   s       p   r   o   v   i   d   e
0030600    d       s   o       t   h   a   t  \r   /   /  \t  \t   e   a
0030620    c   h       d   e   v   i   c   e       c   a   n       r   e
0030640    p   o   r   t       m   a   c   h   i   n   e   -   d   e   p
0030660    e   n   d   e   n   t       j   a   m       e   x   p   l   a
0030700    n   a   t   i   o   n   s   )  \r   /   /       1   0   0   -
0030720    2   0   0  \t   I   n   h   e   r   e   n   t       p  \0 006
0030740  020   @ 377   v 037  \0  \a  \0 035  \0  \0   (      \0  \0   @
0030760   \0  \0 001 336 320  \0  \0  \0 024 304  \0 304 366 357 370 366
0031000    r   o   b   l   e   m   s       (   e   .   g   .   ,       i
0031020    n   s   u   f   f   i   c   i   e   n   t       b   a   n   d
0031040    w   i   d   t   h       s   o   m   e   w   h   e   r   e   )
0031060        t   h   a   t       a   r   e  \r   /   /  \t  \t   n   o
0031100    t       c   u   r   a   b   l   e       b   y       m   e   r
0031120    e       m   o   r   t   a   l   s   .       A   t   t   e   m
0031140    p   t   s       t   o       i   m   p   r   o   v   e       t
0031160    h   e       s   i   t   u   a   t   i   o   n       s   h   o
0031200    u   l   d       b   e  \r   /   /  \t  \t   a   b   a   n   d
0031220    o   n   e   d   .  \r   /   /       2   0   0   -   3   0   0
0031240   \t   I   n   h   e   r   e   n   t       p   r   o   b   l   e
0031260    m   s       e   n   c   o   u   n   t   e   r   e   d   ,    
0031300    b   u   t       t   h   e   y       d   i   d       n   o   t
0031320        t   e   r   m   i   n   a   t   e       p   r   i   n   t
0031340    i   n   g   .       O   n   e  \r   /   /  \t  \t   s   h   o
0031360    u   l   d       e   x   p   e   c   t       t   h   a   t    
0031400    o   n   e       o   r       m   o   r   e       p   a   g   e
0031420    s       w   e   r   e       i   m   p   r   o   p   e   r   l
0031440    y       i   m   a   g   e   d   .  \r  \r   /   /       T   h
0031460    e       m   a   c   h   i   n   e   -   d   e   p   e   n   d
0031500    e   n   t       c   o   n   t   r   o   l       t   a   b   l
0031520    e       i   s       c   o   n   s   t   r   u   c   t   e   d
0031540        u   s   i   n   g       t   h   i   s       p   a   t   t
0031560    e   r   n   :  \r  \r   /   /       s   t   r   u   c   t   u
0031600    r   e       C   T   :  \r   /   /      \t   [  \r   /   /    
0031620   \t   i   n   v   e   r   t  \t  \t   b   i   t       1  \r   /
0031640    /      \t   f   a   i   l   u   r   e   C   o   d   e  \t   b
0031660    i   t       7  \r   /   /      \t   w   o   r   d   I   n   d
0031700    e   x  \t   b   i   t       4  \r   /   /      \t   b   i   t
0031720    I   n   d   e   x  \t   b   i   t       4  \r   /   /  \0 006
0031740  020   @ 377   v 037  \0  \a  \0 035  \0  \0   (      \0  \0   @
0031760   \0  \0 001 336 316  \0  \0  \0 022 304  \0 304 366 357 370 366
0032000       \t   ]  \r  \r   /   /       i   n   v   e   r   t       m
0032020    e   a   n   s       t   h   a   t       t   h   e       b   i
0032040    t       i   s       o   n       w   h   e   n       t   h   e
0032060        c   o   n   d   i   t   i   o   n       i   s       n   o
0032100    t       a       p   r   o   b   l   e   m       (   e   .   g
0032120    .   ,       "   R   e   a   d   y   "   )  \r   /   /       f
0032140    a   i   l   u   r   e   C   o   d   e       s   h   o   u   l
0032160    d       b   e       r   e   p   o   r   t   e   d       w   h
0032200    e   n       t   h   e       c   o   n   d   i   t   i   o   n
0032220        s   p   e   c   i   f   i   e   d       b   y       t   h
0032240    e       b   i   t   I   n   d   e   x   '   t   h  \r   /   /
0032260   \t  \t   b   i   t       i   n   R   O   S       s   t   a   t
0032300    u   s       w   o   r   d       w   o   r   d   I   n   d   e
0032320    x       i   s       a       p   r   o   b   l   e   m   .  \r
0032340    /   /       (   P   i   m   l   i   c   o       a   n   d    
0032360    P   u   f   f   i   n       u   s   e       a       d   i   f
0032400    f   e   r   e   n   t       f   o   r   m   a   t   :  \r   /
0032420    /           r   i   g   h   t       b   y   t   e       i   s
0032440        s   t   a   t   u   s       c   o   d   e       r   e   t
0032460    u   r   n   e   d       f   r   o   m       m   a   c   h   i
0032500    n   e   ,  \r   /   /  \t   l   e   f   t       b   y   t   e
0032520        i   s       s   t   a   t   u   s       c   o   d   e    
0032540    r   e   t   u   r   n   e   d       f   r   o   m       R   O
0032560    S   C   h   e   c   k  \r  \r   /   /       A       c   h   e
0032600    c   k   ,       d   e   s   i   g   n   e   d       c   h   i
0032620    e   f   l   y       f   o   r       D   o   v   e   r   ,    
0032640    v   e   r   i   f   i   e   s       t   h   a   t       t   h
0032660    e       l   a   s   e   r       i   s       o   n       a   n
0032700    d       t   h   e       p   o   l   y   g   o   n       i   s
0032720   \r   /   /       s   c   a   n   n   i   n   g       (  \0 006
0032740  020   @ 377   v 037  \0  \a  \0 035  \0  \0   (      \0  \0   @
0032760   \0  \0 001 336 314  \0  \0  \0 020 304  \0 304 366 357 370 366
0033000    S   O   S   /   E   O   S       a   r   e       s   e   e   i
0033020    n   g       t   h   i   n   g   s   )   ,       b   y       m
0033040    a   k   i   n   g       s   u   r   e       t   h   a   t    
0033060    t   h   e       l   o   w       f   o   u   r       b   i   t
0033100    s       o   f       t   h   e       l   i   n   e  \r   /   /
0033120        c   o   u   n   t       (   i   n   d   i   c   a   t   e
0033140    d       i   n       s   t   a   t   u   s       w   o   r   d
0033160    )       a   r   e           c   h   a   n   g   i   n   g   .
0033200        T   h   e       c   o   d   e       r   e   a   d   s    
0033220    t   h   e       l   i   n   e       c   o   u   n   t   ,    
0033240    w   a   i   t   s  \r   /   /       a   p   p   r   o   x   i
0033260    m   a   t   e   l   y       t   h   e       t   i   m   e    
0033300    n   e   e   d   e   d       f   o   r       f   o   u   r    
0033320    s   c   a   n       l   i   n   e   s       (   g   e   n   e
0033340    r   o   u   s       m   a   r   g   i   n   )   ,       t   h
0033360    e   n       r   e   a   d   s       t   h   e  \r   /   /    
0033400    c   o   u   n   t       a   g   a   i   n   ,       r   e   p
0033420    o   r   t   i   n   g       a       p   r   o   b   l   e   m
0033440        i   f       t   h   e       v   a   l   u   e   s       a
0033460    r   e       e   q   u   a   l   .       T   h   i   s       t
0033500    e   s   t       h   a   p   p   e   n   s       o   n   l   y
0033520        w   h   e   n  \r   /   /       t   h   e       r   u   n
0033540    n   i   n   g       p   a   r   a   m   e   t   e   r       i
0033560    s       f   a   l   s   e   .       T   h   e       w   a   i
0033600    t       t   i   m   e       (   s   c   a   n   T   i   c   k
0033620    s   )       i   s       c   o   m   p   u   t   e   d       i
0033640    n       P   r   i   n   t   I   n   i   t   ,       a   s   :
0033660   \r  \r   /   /       R   e   s   o   l   u   t   i   o   n   S
0033700        i   s       s   c   a   l   e   d       b   y       1   0
0033720        a   s       s   t   o   r   e   d   ,       P   a  \0 006
0033740  020   @ 377   v 037  \0  \a  \0 035  \0  \0   (      \0  \0   @
0033760   \0  \0 001 336 312  \0  \0  \0 016 304  \0 304 366 357 370 366
0034000    p   e   r   S   p   e   e   d   I   n   c   h   e   s       b
0034020    y       1   0   0   .       T   h   e       (   f   a   s   t
0034040        1   0       b   i   t   s       o   f   )  \r   /   /    
0034060    t   h   e       R   T   C       t   i   c   k   s       a   t
0034100        3   8       u   s   e   c   .       i   n   t   e   r   v
0034120    a   l   s   .       T   h   u   s       t   h   e       #    
0034140    t   i   c   k   s       w   a   n   t   e   d       f   o   r
0034160        f   o   u   r       l   i   n   e   s       i   s   :  \r
0034200   \r   /   /               (       4       l   i   n   e   s    
0034220    x       1   0   ^   6       u   s   e   c   /   s   e   c    
0034240    x           1   /   3   8       t   i   c   k   /   u   s   e
0034260    c   .   )       /       (   (   P   a   p   e   r   S   p   e
0034300    e   d   I   n   c   h   e   s   /   1   0   0       x       R
0034320    e   s   o   l   u   t   i   o   n   S   /   1   0   )       l
0034340    i   n   e   s   /   s   e   c   )  \r  \r   /   /       o   r
0034360        a   b   o   u   t       (   1   0   6       x       1   0
0034400    ^   3   )       /       (   P   a   p   e   r   S   p   e   e
0034420    d   I   n   c   h   e   s   /   1   0   0       x       R   e
0034440    s   o   l   u   t   i   o   n   S   /   1   0   )            
0034460    t   i   c   k   s       -   -       a   b   o   u   t       3
0034500    0       f   o   r       D   o   v   e   r   .  \r  \r   /   /
0034520        T   h   i   s       i   s       o   n   l   y       a   p
0034540    p   r   o   x   i   m   a   t   e       b   e   c   a   u   s
0034560    e       R   O   S   S   t   a   t   u   s       t   i   m   e
0034600    ,       a   b   o   u   t       1   0       t   i   c   k   s
0034620        f   o   r       D   o   v   e   r   ,       i   s       n
0034640    o   t       i   n   c   l   u   d   e   d   .  \r   /   /    
0034660    P   a   r   t       o   f       t   h   e       r   e   a   s
0034700    o   n       f   o   r       w   a   i   t   i   n   g       f
0034720    o   u   r       l   i   n   e       t   i   m   e   s  \0 006
0034740  020   @ 377   v 037  \0  \a  \0 035  \0  \0   (      \0  \0   @
0034760   \0  \0 001 336 310  \0  \0  \0  \f 304  \0 304 366 357 370 366
0035000        i   s       t   o       a   c   c   o   u   n   t       f
0035020    o   r       p   o   s   s   i   b   l   e       d   e   l   a
0035040    y   s       i   n       o   b   t   a   i   n   i   n   g  \r
0035060    /   /       t   h   e       c   o   r   r   e   c   t       l
0035100    i   n   e       c   o   u   n   t       s   t   a   t   u   s
0035120    .       L   a   t   e   r   ,       t   h   i   s       m   e
0035140    t   h   o   d       c   a   n       b   e       u   s   e   d
0035160        t   o       c   h   e   c   k       f   o   r       c   o
0035200    r   r   e   c   t       p   o   l   y   g   o   n       s   p
0035220    e   e   d   .  \r   /   /       T   h   e       s   c   a   n
0035240    T   i   c   k   s       s   t   a   t   i   c       i   s    
0035260    s   h   i   f   t   e   d       l   e   f   t       b   y    
0035300    6       t   o       m   a   t   c   h       t   h   e       c
0035320    l   o   c   k       r   e   a   d   i   n   g       f   u   n
0035340    c   t   i   o   n   '   s       r   e   s   u   l   t   s  \r
0035360   \r  \f   /   /       R   O   S   C   h   e   c   k       (   c
0035400    o   n   t   )  \r  \r   a   n   d       R   O   S   C   h   e
0035420    c   k   (   l   v   F   a   i   l   u   r   e   C   o   d   e
0035440    ,       n   P   a   g   e   s   A   l   r   e   a   d   y   P
0035460    r   i   n   t   e   d   ,       r   u   n   n   i   n   g   )
0035500        =       v   a   l   o   f  \r   [  \r  \r   l   e   t    
0035520    r   o   s   8       =       R   O   S   S   t   a   t   u   s
0035540    (   8   )  \r   l   e   t       r   o   s   9       =       R
0035560    O   S   S   t   a   t   u   s   (   9   )  \r   l   e   t    
0035600    l   o   c   a   l   M   o   d   e   ,       s   c   a   n   n
0035620    i   n   g       =       n   i   l   ,       t   r   u   e  \r
0035640    l   e   t       s   e   q   S   t   a   t   u   s   ,       m
0035660    a   l   F   n   S   t   a   t   u   s       =       n   i   l
0035700    ,       n   i   l  \r  \r   /   /       r   e   a   d   y    
0035720    i   f       n   o   t       i   n       l   o   c   a  \0 006
0035740  020   @ 377   v 037  \0  \a  \0 035  \0  \0   (      \0  \0   @
0035760   \0  \0 001 336 306  \0  \0  \0  \n 304  \0 304 366 357 370 366
0036000    l       m   o   d   e       a   n   d       i   f       p   r
0036020    i   n   t   e   r   -   s   p   e   c   i   f   i   c       t
0036040    e   s   t   s       i   n   d   i   c   a   t   e       r   e
0036060    a   d   y  \r   l   e   t       r   e   a   d   y       =    
0036100        (   r   o   s   9   &   (   r   u   n   n   i   n   g   ?
0036120        #   1   0   0   ,       #   3   0   0   )   )       e   q
0036140        0  \r  \r   i   f       r   e   a   d   y       t   h   e
0036160    n  \r  \t   [  \r  \t   l   o   c   a   l   M   o   d   e    
0036200    =       (   R   O   S   S   t   a   t   u   s   (   0   )   &
0036220    #   2   0   0   0   0   )       n   e       0  \r  \t   u   n
0036240    l   e   s   s       r   u   n   n   i   n   g       d   o  \r
0036260   \t           [  \r  \t           l   e   t       l   i   n   e
0036300    C   o   u   n   t       =       R   O   S   S   t   a   t   u
0036320    s   (   7   )       &       #   1   7   0   0   0   0  \r  \t
0036340            l   e   t       r   t   c       =       R   e   a   d
0036360    C   l   o   c   k   (   )  \r  \t           u   n   t   i   l
0036400        (   R   e   a   d   C   l   o   c   k   (   )   -   r   t
0036420    c   )       g   e       s   c   a   n   T   i   c   k   s    
0036440    l   o   o   p  \r  \t           s   c   a   n   n   i   n   g
0036460        =       (   R   O   S   S   t   a   t   u   s   (   7   )
0036500    &   #   1   7   0   0   0   0   )       n   e       l   i   n
0036520    e   C   o   u   n   t  \r  \t           ]  \r  \t   i   f    
0036540    l   o   c   a   l   M   o   d   e       %       n   o   t    
0036560    s   c   a   n   n   i   n   g       t   h   e   n       r   e
0036600    a   d   y       =       f   a   l   s   e  \r  \t   ]  \r  \r
0036620    i   f       r   e   a   d   y       %       D   e   b   u   g
0036640        r   e   s   u   l   t   i   s       -   1  \r  \r   /   /
0036660        A   n   a   l   y   z   e       t   a   b   l   e   s    
0036700    t   o       i   d   e   n   t   i   f   y       t   h   e    
0036720    p   r   o   b   l   e   m       o   r       c   o   n  \0 006
0036740  020   @ 377   v 037  \0  \a  \0 035  \0  \0   (      \0  \0   @
0036760   \0  \0 001 336 304  \0  \0  \0  \b 304  \0 304 366 357 370 366
0037000    d   i   t   i   o   n       p   r   e   v   e   n   t   i   n
0037020    g       r   e   a   d   y  \r  \r   l   e   t       t   a   b
0037040        =           t   a   b   l   e       [  \r  \t       4   *
0037060    C   o   d   e               +               8   *   W   o   r
0037100    d       +       1   3   *   B   i   t       /   /       F   u
0037120    s   e   r       n   o   t       w   a   r   m  \r  \t   1   0
0037140    *   C   o   d   e               +               8   *   W   o
0037160    r   d       +           5   *   B   i   t       /   /       C
0037200    h   e   c   k       p   a   p   e   r       t   r   a   y  \r
0037220   \t   3   0   *   C   o   d   e               +               9
0037240    *   W   o   r   d       +           2   *   B   i   t       /
0037260    /       J   a   m  \r  \t   3   1   *   C   o   d   e        
0037300        +               9   *   W   o   r   d       +           9
0037320    *   B   i   t       /   /       U   n   e   x   p   l   a   i
0037340    n   e   d       M   a   l   f   u   n   c   t   i   o   n  \r
0037360   \t       1   *   C   o   d   e               +               9
0037400    *   W   o   r   d       +           8   *   B   i   t       /
0037420    /       N   o   t       r   e   a   d   y  \r  \t   0        
0037440    ]  \r  \r   l   e   t       b   i   t   s       =       t   a
0037460    b   l   e       [       #   1   0   0   0   0   0   ;  \r  \t
0037500            #   4   0   0   0   0   ;  \t           #   2   0   0
0037520    0   0   ;  \t           #   1   0   0   0   0  \r  \t        
0037540        #   4   0   0   0   ;  \t               #   2   0   0   0
0037560    ;  \t               #   1   0   0   0  \r  \t                
0037600    #   4   0   0   ;  \t                   #   2   0   0   ;  \t
0037620                    #   1   0   0  \r  \t                       #
0037640    4   0   ;  \t                       #   2   0   ;  \t        
0037660                #   1   0  \r  \t                           #   4
0037700    ;  \t                           #   2   ;  \t                
0037720            #   1  \t   ]  \r  \r   l   e   t       c   o  \0 006
0037740  020   @ 377   v 037  \0  \a  \0 035  \0  \0   (      \0  \0   @
0037760   \0  \0 001 336 302  \0  \0  \0 006 304  \0 304 366 357 370 366
0040000    d   e       =       0  \r  \r  \t  \t   w   h   i   l   e    
0040020    @   t   a   b       d   o  \r  \t  \t  \t   [  \r  \t  \t  \t
0040040    l   e   t       e   n   t   r   y       =       @   t   a   b
0040060   \r  \t  \t  \t   l   e   t       i   s   B   i   t       =    
0040100    (   R   O   S   S   t   a   t   u   s   (   e   n   t   r   y
0040120    <   <   C   T   .   w   o   r   d   I   n   d   e   x   )    
0040140    &       b   i   t   s   !   (   e   n   t   r   y   <   <   C
0040160    T   .   b   i   t   I   n   d   e   x   )   )       n   e    
0040200    0   ?       1   ,       0  \r  \t  \t               i   f    
0040220    i   s   B   i   t       n   e       e   n   t   r   y   <   <
0040240    C   T   .   i   n   v   e   r   t           &           (   e
0040260    n   t   r   y   <   <   C   T   .   m   a   l   F   n   R   e
0040300    q       e   q       0       %       (   r   o   s   9   &   #
0040320    1   0   0   )       n   e       0   )       t   h   e   n  \r
0040340   \t  \t  \t  \t   [       c   o   d   e       =       e   n   t
0040360    r   y   <   <   C   T   .   f   a   i   l   u   r   e   C   o
0040400    d   e   ;       b   r   e   a   k       ]  \r  \t  \t  \t   t
0040420    a   b       =       t   a   b       +       1  \r  \t  \t  \t
0040440    ]  \r  \r   /   /       N   o       o   t   h   e   r       e
0040460    x   p   l   i   c   i   t       p   r   o   b   l   e   m   s
0040500    ,       r   e   p   o   r   t       l   o   c   a   l       m
0040520    o   d   e   ,       o   r       l   a   s   e   r       o   f
0040540    f   ,       o   r       u   n   k   n   o   w   n       p   r
0040560    o   b   l   e   m  \r   u   n   l   e   s   s       c   o   d
0040600    e       d   o       c   o   d   e       =       l   o   c   a
0040620    l   M   o   d   e   ?       1   1   ,       s   c   a   n   n
0040640    i   n   g       e   q       0   ?       1   3   ,       7  \r
0040660    @   l   v   F   a   i   l   u   r   e   C   o   d   e       =
0040700        c   o   d   e  \r       l   e   t       b   a   c   k   u
0040720    p       =       c   o   d   e       l   e       m   a  \0 006
0040740  020   @ 377   v 037  \0  \a  \0 035  \0  \0   (      \0  \0   @
0040760   \0  \0 001 336 300  \0  \0  \0 004 304  \0 304 366 357 370 366
0041000    x   M   a   n   u   a   l   ?       0   ,       c   o   d   e
0041020        <       3   0   ?       2   ,       1  \r   r   e   s   u
0041040    l   t   i   s       M   a   x   (   n   P   a   g   e   s   A
0041060    l   r   e   a   d   y   P   r   i   n   t   e   d   ,       n
0041100    P   a   g   e   s   P   r   i   n   t   e   d   -   b   a   c
0041120    k   u   p   )  \r   ]  \r  \f   /   /       -   -   -   -   -
0041140    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0041200    -   -   -   -  \r   /   /       E   n   g   i   n   e       c
0041220    o   n   t   r   o   l   s       o   f       v   a   r   i   o
0041240    u   s       s   o   r   t   s   .  \r   /   /       -   -   -
0041260    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0041320    -   -   -   -   -   -  \r  \r   a   n   d       F   e   e   d
0041340    A   S   h   e   e   t   (   )       b   e      \r  \t   [  \r
0041360   \t  \t   D   o   F   u   n   c   (   f   R   O   S   C   o   m
0041400    m   a   n   d   ,       6   0   0   0   0   b   )  \r  \t  \t
0041420    D   o   F   u   n   c   (   f   R   O   S   C   o   m   m   a
0041440    n   d   ,       6   0   0   0   1   b   )  \r  \t   ]  \r  \r
0041460    a   n   d       I   n   i   t   i   a   l   i   z   e   H   a
0041500    r   d   w   a   r   e   (   s   t   o   p   )       b   e  \r
0041520    [  \t   i   f       D   e   b   u   g       r   e   t   u   r
0041540    n  \r  \t   I   n   i   t   R   a   m   (   0   )  \t  \t  \t
0041560    /   /   R   e   s   e   t       a   l   l       R   A   M    
0041600    t   a   s   k   s   ,       r   e   s   t   a   r   t       T
0041620    r   i   d   e   n   t       i   f       n   e   c   e   s   s
0041640    a   r   y  \r  \r  \t   D   o   F   u   n   c   (   f   C   o
0041660    n   t   r   o   l   ,       1   )  \t  \t   /   /   R   e   s
0041700    e   t       O   r   b   i   t  \r  \r  \t   i   f       s   t
0041720    o   p       t   h   e   n       D   o   F   u   n   c  \0 006
0041740  020   @ 377   v 037  \0  \a  \0 035  \0  \0   (      \0  \0   @
0041760   \0  \0 001 336 276  \0  \0  \0 002 304  \0 304 366 357 370 366
0042000    (   f   R   O   S   C   o   m   m   a   n   d   ,       6   0
0042020    0   0   0   b   )  \r   ]  \r  \r   a   n   d       B   l   a
0042040    s   t   (   )       b   e       I   n   i   t   i   a   l   i
0042060    z   e   H   a   r   d   w   a   r   e   (   f   a   l   s   e
0042100    )  \r  \r   /   /       M   a   y       2   2   ,       1   9
0042120    7   9           1   :   1   6       P   M       f   i   r   s
0042140    t       c   u   t  \r   /   /       F   e   b   r   u   a   r
0042160    y       2   ,       1   9   8   1           4   :   3   2    
0042200    P   M   ,           d   o   n   '   t       s   w   a   t    
0042220    i   f       b   a   d       b   a   n   d       e   n   t   r
0042240    y       p   r   o   b   a   b   l   y       d   u   e       t
0042260    o       l   e   f   t   o   v   e   r       o   v   e   r   f
0042300    l   o   w  \r  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0
0042320   \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0
*
0042720   \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0 006
0042740  020   @ 377   v 037  \0  \a  \0 035  \0  \0   (      \0  \0   @
0042760   \0  \0  \0 304 274  \0  \0  \0  \0 304  \0 304 366 357 370 366
0043000