$ od -c -N 50000 [IO]<DoradoLogic>routemwlb.dm!2
0000000  377  \0  \0   r   o   u   t   e   m   w   l   b   1   .   b   c
0000020    p   l  \0 373 235 256 350   _  \0  \0 376 001  \0 337 262   /
0000040    /   r   o   u   t   e   m   w   l   b   1   .   b   c   p   l
0000060   \r  \r   /   /       B   o   a   r   d   -   s   p   e   c   i
0000100    f   i   c       R   o   u   t   e       r   o   u   t   i   n
0000120    e   s       f   o   r       t   h   e       M   u   l   t   i
0000140    -   W   i   r   e       v   e   r   s   i   o   n       o   f
0000160        t   h   e  \r   /   /       D   o   r   a   d   o       M
0000200    a   i   n       L   o   g   i   c       B   o   a   r   d  \r
0000220   \r   /   /       p   a   r   t       1       o   f       2  \r
0000240   \r   /   /       l   a   s   t       m   o   d   i   f   i   e
0000260    d       b   y       D   .       R   u   m   p   h   ,       O
0000300    c   t   o   b   e   r       3   0   ,       1   9   8   4    
0000320        4   :   4   2       P   M  \r   /   /  \t  \t   t   o    
0000340    m   a   k   e       I   C   C   l   a   s   s       E   4   W
0000360        a       D   I   P   4   5       a   l   o   n   g       w
0000400    i   t   h       F   1   0   0   K      \r   /   /       l   a
0000420    s   t       m   o   d   i   f   i   e   d       b   y     376
0000440  001  \0   =   <   E   .       M   c   C   r   e   i   g   h   t
0000460    ,       J   u   l   y       7   ,       1   9   8   1        
0000500    2   :   4   6       P   M  \r   /   /  \t  \t   t   o       c
0000520    o   r   r   e   c   t       p   o   s   i   t   i   o   n    
0000540    o   f       G   N   D       p   i   n   s       a   t       c
0000560    o   n   n   e   c   t   o   r   s       t   o       5   0   -
0000600    m   i   l       c   t   r   s  \r   /   /       m   o   d   i
0000620    f   i   e   d       b   y       E   .       M   c   C   r   e
0000640    i   g   h   t   ,       J   u   l   y       2   4   ,       1
0000660    9   8   0           5   :   4   2       P   M  \r   /   /  \t
0000700   \t   t   o       f   i   x       m   u   l   t   i   w   i   r
0000720    e   -   f   o   r   m   a   t       s   t   i   t   c   h   w
0000740    e   l   d       b   o   a   r   d       c   o   n   n   e   c
0000760    t   o   r       m   i   s   a   l   i   g   n   m   e   n   t
0001000   \r  \r   /   /       S   o   m   e       g   e   n   e   r   a
0001020    l       c   o   m   m   e   n   t   s   :  \r  \r   /   /  \t
0001040    A       s   o 376 001  \0   o 247   c   k   e   t       p   o
0001060    s   i   t   i   o   n       i   s       m   a   d   e       u
0001100    p       o   f       a       l   o   w   e   r   -   c   a   s
0001120    e       l   e   t   t   e   r       f   o   l   l   o   w   e
0001140    d       b   y       a  \r   /   /  \t   n   u   m   b   e   r
0001160    ,       l   i   k   e       a   1   3       o   r       h   4
0001200    1   .       T   h   e       l   e   t   t   e   r       d   e
0001220    s   i   g   n   a   t   e   s       t   h   e       c   o   l
0001240    u   m   n   ,       o   r       t   h   e  \r   /   /  \t   x
0001260        o   r       f   i   r   s   t       c   o   -   o   r   d
0001300    i   n   a   t   e   .       I   n   c   r   e   a   s   i   n
0001320    g       l   e   t   t   e   r   s       c   o   r   r   e   s
0001340    p   o   n   d       t   o       i   n   c   r   e   a   s   i
0001360    n   g       x       v   a   l   u   e   s   .  \r   /   /  \t
0001400    T   h   e       n   u   m   b   e   r       i   n       a    
0001420    s   o   c   k   e   t       p   o   s   i   t   i   o   n    
0001440    d   e   s   i   g   n   a   t   e 376 001  \0 305   +   s    
0001460    t   h   e       r   o   w   ,       o   r       y   ,       o
0001500    r       s   e   c   o   n   d  \r   /   /  \t   c   o   -   o
0001520    r   d   i   n   a   t   e   .       I   n   c   r   e   a   s
0001540    i   n   g       n   u   m   b   e   r   s       c   o   r   r
0001560    e   s   p   o   n   d       t   o       i   n   c   r   e   a
0001600    s   i   n   g       y       v   a   l   u   e   s   .  \r  \r
0001620    /   /  \t   I   n       s   t   a   n   d   a   r   d       o
0001640    r   i   e   n   t   a   t   i   o   n       t   h   e       b
0001660    o   a   r   d       h   a   s       t   h   e       c   o   m
0001700    p   o   n   e   n   t       (   n   o   n   -   w   i   r   i
0001720    n   g   )       s   i   d   e  \r   /   /  \t   u   p   ,    
0001740    a   n   d       t   h   e       c   o   n   n   e   c   t   o
0001760    r       c   u   t   o   u   t   s       t   o       t   h   e
0002000        l   e   f   t   .       S   o   c   k   e   t       a   0
0002020    1       i   s       i   n       t   h   e       t   o   p    
0002040    l   e   f   t   ,  \r   /   /  \t   l   0   1       i 376 001
0002060   \0 333   %   n       t   h   e       t   o   p       r   i   g
0002100    h   t   ,       a   2   4       i   n       t   h   e       b
0002120    o   t   t   o   m       l   e   f   t   ,       a   n   d    
0002140    l   2   4       i   n       t   h   e       b   o   t   t   o
0002160    m       r   i   g   h   t   .  \r   /   /  \t   T   h   e    
0002200    x       c   o   -   o   r   d   i   n   a   t   e       i   n
0002220    c   r   e   a   s   e   s       t   o       t   h   e       r
0002240    i   g   h   t   ,       a   n   d       t   h   e       y    
0002260    c   o   -   o   r   d   i   n   a   t   e       i   n   c   r
0002300    e   a   s   e   s  \r   /   /  \t   d   o   w   n   w   a   r
0002320    d   .       I   n       s   t   a   n   d   a   r   d       o
0002340    r   i   e   n   t   a   t   i   o   n       p   i   n       1
0002360        o   f       e   a   c   h       s   o   c   k   e   t    
0002400    i   s       t   h   e       t   o   p       r   i   g   h   t
0002420   \r   /   /  \t   p   i   n       o   f       t   h   e       s
0002440    o   c   k   e   t   .       T   h   e       p   i   n       n
0002460    u   m   b 376 001  \0   p 377   e   r   i   n   g       g   o
0002500    e   s       l   e   f   t   w   a   r   d   ,       t   h   e
0002520    n       d   o   w   n   ,       t   h   e   n  \r   /   /  \t
0002540    r   i   g   h   t   w   a   r   d   .  \r  \r   /   /  \t   W
0002560    i   t   h       c   e   r   t   a   i   n       e   x   c   e
0002600    p   t   i   o   n   s   ,       a       g   i   v   e   n    
0002620    f   u   n   c   t   i   o   n   a   l   l   y       e   q   u
0002640    i   v   a   l   e   n   t       g   r   o   u   p       o   f
0002660        p   i   n   s  \r   /   /  \t   i   s       o   r   d   e
0002700    r   e   d       f   i   r   s   t       d   o   w   n   w   a
0002720    r   d       a   n   d       t   h   e   n       r   i   g   h
0002740    t   w   a   r   d   .       F   o   r       e   x   a   m   p
0002760    l   e   ,       i   f       w   e       h   a   d  \r   /   /
0003000   \t   G   N   D       p   i   n   s       o   f       a       c
0003020    e   r   t   a   i   n       k   i   n   d       a   t       {
0003040    x   0   ,   y   0   }   ,       {   x   1   ,   y   1   }   ,
0003060        {   x   1   ,   y   0   } 376 001  \0   w 256   ,       a
0003100    n   d       {   x   0   ,   y   1   }   ,      \r   /   /  \t
0003120    w   h   e   r   e       x   0   <   x   1       a   n   d    
0003140    y   0   <   y   1   ,       t   h   e   n       t   h   e   y
0003160        w   o   u   l   d       a   p   p   e   a   r       i   n
0003200        t   h   e       G   N   D       p   s   e   u   d   o   -
0003220   \r   /   /  \t   n   e   t       i   n       t   h   e       f
0003240    o   l   l   o   w   i   n   g       o   r   d   e   r   :  \r
0003260    /   /  \t  \t   .   .   .   {   x   0   ,   y   0   }   .   .
0003300    .   {   x   0   ,   y   1   }   .   .   .   {   x   1   ,   y
0003320    0   }   .   .   .   {   x   1   ,   y   1   }   .   .   .  \r
0003340   \r   /   /  \t   T   h   i   s       m   e   a   n   s       t
0003360    h   a   t       t   h   e       p   s   e   u   d   o   -   n
0003400    e   t       p   i   n       n   u   m   b   e   r       i   s
0003420        u   s   u   a   l   l   y       c   o   m   p   u   t   e
0003440    d       a   s  \r   /   /  \t  \t   (   x       (   h   o   r
0003460    i   z   o   n   t   a   l   )       r   e   p   e 376 001  \0
0003500   \t 374   a   t   )   *   (   p   i   n   s   P   e   r   C   o
0003520    l   u   m   n   )   +   (   y       (   v   e   r   t   i   c
0003540    a   l   )       r   e   p   e   a   t   )   +   f   i   r   s
0003560    t   P   i   n   N   o  \r  \r   /   /  \t   S   i   m   i   l
0003600    a   r   l   y       t   h   e       h   o   r   i   z   o   n
0003620    t   a   l       a   n   d       v   e   r   t   i   c   a   l
0003640        r   e   p   e   a   t   s       a   r   e       u   s   u
0003660    a   l   l   y       c   o   m   p   u   t   e   d       a   s
0003700   \r   /   /  \t  \t   c   o   l   u   m   n       =       x   R
0003720    e   p   e   a   t       =       (   p   s   e   u   d   o   -
0003740    n   e   t       p   i   n       n   u   m   b   e   r       -
0003760        f   i   r   s   t   P   i   n   N   o   )   /   p   i   n
0004000    s   P   e   r   C   o   l   u   m   n  \r   /   /  \t  \t   r
0004020    o   w       =       y   R   e   p   e   a   t       =       (
0004040    p   s   e   u   d   o   -   n   e   t       p   i   n       n
0004060    u   m   b   e   r       -       f   i   r   s   t   P   i   n
0004100    N   o 376 001  \0 236   0   )       r   e   m       p   i   n
0004120    s   P   e   r   C   o   l   u   m   n  \r  \r   g   e   t    
0004140    "   r   o   u   t   e   .   d   e   f   s   "  \r  \r   e   x
0004160    t   e   r   n   a   l       [       P   i   n   1   o   f   1
0004200    6       ]  \r  \r   m   a   n   i   f   e   s   t  \r   [ 032
0004220    (   6   3   5   )   \   f   1  \r   r   e   p   e   a   t   R
0004240    o   w   s       =       1   2  \r   r   e   p   e   a   t   C
0004260    o   l   s       =       6  \r   f   u   l   l   R   e   p   e
0004300    a   t   C   o   l   s       =       4  \r   r   e   p   e   a
0004320    t   s       =       r   e   p   e   a   t   R   o   w   s   *
0004340    r   e   p   e   a   t   C   o   l   s  \r   f   u   l   l   R
0004360    e   p   e   a   t   s       =       r   e   p   e   a   t   R
0004400    o   w   s   *   f   u   l   l   R   e   p   e   a   t   C   o
0004420    l   s  \r   r   o   w   O   f   f   s   e   t       =       1
0004440    6  \r   l   e   f   t   C   o   l   s   O   f   f   s   e   t
0004460        =       0  \r   r   i   g   h   t   C   o   l   s   O   f
0004500    f   s   e   t       =     376 001  \0 025 227   2   4   6  \r
0004520    r   o   w   H   e   i   g   h   t       =       4   2  \r   f
0004540    u   l   l   C   o   l   W   i   d   t   h       =       1   1
0004560    2  \r   p   a   t   t   e   r   n   G   r   o   u   n   d   s
0004600        =       3   *   r   e   p   e   a   t   s   +   6   *   f
0004620    u   l   l   R   e   p   e   a   t   s  \r   S   o   c   k   e
0004640    t   s   1   6   p   i   n       =       6   *   f   u   l   l
0004660    R   e   p   e   a   t   s  \r   S   o   c   k   e   t   s   2
0004700    4   p   i   n       =       2   *   f   u   l   l   R   e   p
0004720    e   a   t   s  \r   S   o   c   k   e   t   s   5   0   p   i
0004740    n       =       f   u   l   l   R   e   p   e   a   t   s  \r
0004760    S   o   c   k   e   t   s   S   i   p       =       3   *   f
0005000    u   l   l   R   e   p   e   a   t   s 032   l   4   2   6   9
0005020    \   f   1  \r   ]  \r  \r   s   t   a   t   i   c  \r   [ 032
0005040    \   f   1  \r   m   a   x   I   C   s       =       6   0   0
0005060   \r   b   o   a   r   d   I   n   t   e   r   f   a   c   e   V
0005100    e   r   s   i   o   n       =       i   n   t 376 001  \0 006
0005120  016   e   r   f   a   c   e   V   e   r   s   i   o   n  \r   V
0005140    C   C   C   a   p  \r   V   E   E   C   a   p 032   l   4   2
0005160    6   9   \   f   1  \r   ]  \r  \r   l   e   t       D   e   c
0005200    l   a   r   e   I   n   i   t   i   a   l   N   e   t   s   (
0005220    B   u   i   l   d   T   W   N   e   t   ,       B   u   i   l
0005240    d   T   e   r   m   N   e   t   ,       B   u   i   l   d   C
0005260    o   n   n   e   c   t   o   r   )       b   e  \r   [ 032   \
0005300    f   1  \r   B   u   i   l   d   C   o   n   n   e   c   t   o
0005320    r   (   "   E   "   ,       1   8   9   ,       E   P   i   n
0005340    P   o   s   )  \r   B   u   i   l   d   C   o   n   n   e   c
0005360    t   o   r   (   "   C   "   ,       1   8   9   ,       C   P
0005400    i   n   P   o   s   )  \r   B   u   i   l   d   T   W   N   e
0005420    t   (   "   G   N   D   "   ,       6   *   f   u   l   l   R
0005440    e   p   e   a   t   s   +   3   *   r   e   p   e   a   t   s
0005460    +   2   *   9   2   ,       G   N   D   P   i   n   P   o   s
0005500    )  \r   B   u   i   l   d   T   W   N   e   t   (   "   V   E
0005520    E 376 001  \0   * 340   "   ,       4   *   f   u   l   l   R
0005540    e   p   e   a   t   s   +   2   *   r   e   p   e   a   t   s
0005560    ,       V   E   E   P   i   n   P   o   s   )  \r   B   u   i
0005600    l   d   T   W   N   e   t   (   "   V   T   T   "   ,       3
0005620    *   f   u   l   l   R   e   p   e   a   t   s   ,       V   T
0005640    T   P   i   n   P   o   s   )  \r   B   u   i   l   d   T   W
0005660    N   e   t   (   "   V   C   C   "   ,       r   e   p   e   a
0005700    t   s   ,       V   C   C   P   i   n   P   o   s   )  \r   B
0005720    u   i   l   d   T   W   N   e   t   (   "   V   D   D   "   ,
0005740        r   e   p   e   a   t   s   ,       V   D   D   P   i   n
0005760    P   o   s   )  \r   V   C   C   C   a   p       =       D   e
0006000    f   i   n   e   B   y   p   a   s   s   T   y   p   e   (   "
0006020    V   C   C   B   y   p   a   s   s   C   a   p   "   ,       V
0006040    C   C   B   y   p   a   s   s   V   o   l   t   a   g   e   s
0006060    )  \r   V   E   E   C   a   p       =       D   e   f   i   n
0006100    e   B   y   p   a   s   s   T   y   p   e   (   "   V   E   E
0006120    B   y   p   a   s   s 376 001  \0 244 232   C   a   p   "   ,
0006140        V   E   E   B   y   p   a   s   s   V   o   l   t   a   g
0006160    e   s   )  \r   B   u   i   l   d   T   e   r   m   N   e   t
0006200    (   "   T   e   r   m   1   0   0   /   8   /   T   e   r   m
0006220    1   0   0   "   ,       8   ,       "   T   e   r   m   1   0
0006240    0   "   ,       1   0   0   8   ,       A   u   t   o   T   e
0006260    r   m   P   i   n   P   o   s   ,   "   T   "   )  \r   l   e
0006300    t       c       =       T   r   y   F   i   n   d   i   n   g
0006320    N   a   m   e   e   (   "   F   1   0   0   K   "   ,       t
0006340    y   p   e   I   c   c   l   a   s   s   )  \r   i   f       c
0006360        n   e       e   m   p   t   y       t   h   e   n       c
0006400    >   >   i   c   c   l   a   s   s   .   P   i   n   O   f   f
0006420    s   e   t       =       D   I   P   4   5   W   i   d   e 032
0006440    l   4   2   6   9   \   f   1  \r   c       =       T   r   y
0006460    F   i   n   d   i   n   g   N   a   m   e   e   (   "   E   4
0006500    W   "   ,       t   y   p   e   I   c   c   l   a   s   s   )
0006520   \r   i   f       c       n   e       e   m 376 001  \0   ^   ;
0006540    p   t   y       t   h   e   n       c   >   >   i   c   c   l
0006560    a   s   s   .   P   i   n   O   f   f   s   e   t       =    
0006600    D   I   P   4   5   W   i   d   e 032   l   4   2   6   9   \
0006620    f   1  \r   ]  \r  \r   a   n   d       D   I   P   4   5   W
0006640    i   d   e   (   i   c   i   n   s   t   ,       p   i   n   N
0006660    o   ,       p   v   ,       p   h   )       =       v   a   l
0006700    o   f  \r   [ 032   \   f   1  \r   l   e   t       r   e   s
0006720    u   l   t       =       D   I   P   3   W   i   d   e   (   i
0006740    c   i   n   s   t   ,       p   i   n   N   o   ,       p   v
0006760    ,       p   h   )  \r   i   f       @   p   h       n   e    
0007000    0       t   h   e   n       @   p   h       =       @   p   h
0007020    +   6  \r   r   e   s   u   l   t   i   s       r   e   s   u
0007040    l   t 032   l   4   2   6   9   \   f   1  \r   ]  \r  \r   a
0007060    n   d       Z   e   r   o   T   a   b   l   e   P   o   i   n
0007100    t   (   p   o   i   n   t   )       =       s   e   l   e   c
0007120    t   o   n       p   o   i   n   t       i   n   t   o  \r   [
0007140  376 001  \0   T 336 032   \   f   1  \r   c   a   s   e       0
0007160    :       "   L   "       /   /       b   o   a   r   d       t
0007200    y   p   e  \r   c   a   s   e       1   :       "   C   1   8
0007220    8   "  \r   c   a   s   e       2   :       "   E   6   "  \r
0007240    c   a   s   e       3   :       "   E   1   8   7   "  \r   c
0007260    a   s   e       4   :       "   C   5   "  \r   d   e   f   a
0007300    u   l   t   :       e   m   p   t   y 032   l   4   2   6   9
0007320    \   f   1  \r   ]  \r  \r   a   n   d       L   e   v   e   l
0007340    T   r   a   n   s   f   o   r   m   (   l   e   v   e   l   ,
0007360        x   ,       y   ,       p   x   ,       p   y   ,       p
0007400    N   a   m   e   ,       p   P   u   l   l   C   o   m   p   o
0007420    n   e   n   t   s   ,       p   W   i   r   e   ;       n   u
0007440    m   a   r   g   s       n   a   )       =       v   a   l   o
0007460    f  \r   [ 032   \   f   1  \r   D   e   f   a   u   l   t   A
0007500    r   g   s   (   l   v       n   a   ,       -   1   ,       0
0007520    ,       0   ,       l   v       n   a   ,       l   v       n
0007540    a   ,       l   v 376 001  \0 254   i       n   a   ,       l
0007560    v       n   a   ,       l   v       n   a   )  \r   s   w   i
0007600    t   c   h   o   n       l   e   v   e   l       i   n   t   o
0007620   \r   [ 032   l   4   2   6   9   \   f   1  \r   c   a   s   e
0007640        T   o   p   L   e   v   e   l   : 032   l   5   5   3   9
0007660    \   f   1  \r   @   p   x       =       x  \r   @   p   y    
0007700    =       5   2   4   -   y  \r   @   p   N   a   m   e       =
0007720        "   C   o   m   p   o   n   e   n   t       s   i   d   e
0007740    "  \r   @   p   P   u   l   l   C   o   m   p   o   n   e   n
0007760    t   s       =       t   r   u   e  \r   @   p   W   i   r   e
0010000        =       f   a   l   s   e  \r   r   e   s   u   l   t   i
0010020    s       t   r   u   e 032   l   6   8   0   9   \   f   1  \r
0010040   \r   c   a   s   e       B   o   t   t   o   m   L   e   v   e
0010060    l   : 032   l   5   5   3   9   \   f   1  \r   @   p   x    
0010100    =       x  \r   @   p   y       =       y  \r   @   p   N   a
0010120    m   e       =       "   W   i   r   i   n   g       s   i   d
0010140    e   "  \r   @   p   P   u   l   l   C 376 001  \0 255 234   o
0010160    m   p   o   n   e   n   t   s       =       f   a   l   s   e
0010200   \r   @   p   W   i   r   e       =       t   r   u   e  \r   r
0010220    e   s   u   l   t   i   s       t   r   u   e 032   l   6   8
0010240    0   9   \   f   1  \r  \r   d   e   f   a   u   l   t   :    
0010260    r   e   s   u   l   t   i   s       f   a   l   s   e 032   l
0010300    5   5   3   9   \   f   1  \r   ] 032   l   4   2   6   9   \
0010320    f   1  \r   ]  \r  \r   a   n   d       D   e   f   i   n   e
0010340    B   y   p   a   s   s   T   y   p   e   (   c   l   a   s   s
0010360    ,       I   n   i   t   i   a   l   W   i   r   i   n   g   )
0010400        =       v   a   l   o   f  \r   [ 032   \   f   1  \r   S
0010420    e   t   u   p   I   C   c   l   a   s   s   (   c   l   a   s
0010440    s   ,       p   r   i   n   t   U   s   e   d   L   i   s   t
0010460    ,       D   I   P   3   W   i   d   e   ,       N   u   l   l
0010500    A   t   t   r   i   b   u   t   e   s   ,       I   n   i   t
0010520    i   a   l   W   i   r   i   n   g   ,       2   )  \r   l   e
0010540    t       t   y   p   e       =       v   e   c       5   0 376
0010560  001  \0   m 351  \r   E   x   p   a   n   d   T   e   m   p   l
0010600    a   t   e   (   t   y   p   e   ,       "   $   S   /   2   /
0010620    $   S   "   ,       c   l   a   s   s   ,       c   l   a   s
0010640    s   )  \r   l   e   t       i   c   t   y   p   e       =    
0010660    D   e   f   i   n   e   N   a   m   e   e   (   t   y   p   e
0010700    ,       t   y   p   e   I   c   t   y   p   e   )  \r   i   c
0010720    t   y   p   e   >   >   i   c   t   y   p   e   .   i   c   c
0010740    l   a   s   s       =       M   u   s   t   F   i   n   d   N
0010760    a   m   e   e   (   c   l   a   s   s   ,       t   y   p   e
0011000    I   c   c   l   a   s   s   )  \r   i   c   t   y   p   e   >
0011020    >   i   c   t   y   p   e   .   n   p   i   n   s       =    
0011040    2  \r   r   e   s   u   l   t   i   s       i   c   t   y   p
0011060    e 032   l   4   2   6   9   \   f   1  \r   ]  \r  \r   a   n
0011100    d       V   C   C   B   y   p   a   s   s   V   o   l   t   a
0011120    g   e   s   (   i   c   i   n   s   t   )       b   e  \r   [
0011140  032   \   f   1  \r   l   e   t       s   t   r       =       F
0011160    i   n   d   N 376 001  \0 221 265   a   m   e   e   s   S   t
0011200    r   i   n   g   (   i   c   i   n   s   t   )  \r   P   u   t
0011220    T   e   m   p   l   a   t   e   (   I   m   p   l   i   c   i
0011240    t   F   i   l   e   ,       "   *   n   V   C   C   :       $
0011260    S   .   1   p   *   n   G   N   D   :       $   S   .   2   p
0011300    "   ,       s   t   r   ,       s   t   r   ) 032   l   4   2
0011320    6   9   \   f   1  \r   ]  \r  \r   a   n   d       V   E   E
0011340    B   y   p   a   s   s   V   o   l   t   a   g   e   s   (   i
0011360    c   i   n   s   t   )       b   e  \r   [ 032   \   f   1  \r
0011400    l   e   t       s   t   r       =       F   i   n   d   N   a
0011420    m   e   e   s   S   t   r   i   n   g   (   i   c   i   n   s
0011440    t   )  \r   P   u   t   T   e   m   p   l   a   t   e   (   I
0011460    m   p   l   i   c   i   t   F   i   l   e   ,       "   *   n
0011500    V   E   E   :       $   S   .   1   p   *   n   G   N   D   :
0011520        $   S   .   2   p   "   ,       s   t   r   ,       s   t
0011540    r   ) 032   l   4   2   6   9   \   f   1  \r   ]  \r  \r   a
0011560    n   d       A   d   d   D   e   c 376 001  \0 367 334   o   u
0011600    p   l   i   n   g   C   a   p   s   (   )       b   e  \r   [
0011620  032   \   f   1  \r   f   o   r       r   o   w       =       1
0011640        t   o       2   3       b   y       2       d   o  \r   [
0011660  032   l   4   2   6   9   \   f   1  \r   f   o   r       c   o
0011700    l       =       $   a       t   o       $   g       b   y    
0011720    (   $   g   -   $   a   )       d   o  \r   [ 032   l   5   5
0011740    3   9   \   f   1  \r   A   d   d   C   a   p   (   V   C   C
0011760    C   a   p   ,       9   ,       c   o   l   ,       r   o   w
0012000    )  \r   A   d   d   C   a   p   (   V   E   E   C   a   p   ,
0012020        8   ,       c   o   l   ,       r   o   w   ) 032   l   6
0012040    8   0   9   \   f   1  \r   ]  \r   f   o   r       c   o   l
0012060        =       $   c       t   o       $   l       b   y       (
0012100    $   f   -   $   c   )       d   o  \r   [ 032   l   5   5   3
0012120    9   \   f   1  \r   A   d   d   C   a   p   (   V   C   C   C
0012140    a   p   ,       -   1   ,       c   o   l   ,       r   o   w
0012160    )  \r   A   d   d   C   a   p   (   V   E   E   C   a 376 001
0012200   \0   \ 005   p   ,       -   2   ,       c   o   l   ,       r
0012220    o   w   ) 032   l   6   8   0   9   \   f   1  \r   ] 032   l
0012240    5   5   3   9   \   f   1  \r   ] 032   l   4   2   6   9   \
0012260    f   1  \r   ]  \r  \r   a   n   d       A   d   d   C   a   p
0012300    (   c   a   p   T   y   p   e   ,       v   e   r   t   O   f
0012320    f   s   e   t   ,       c   o   l   ,       r   o   w   )    
0012340    b   e  \r   [ 032   \   f   1  \r   l   e   t       s       =
0012360        v   e   c       2   0  \r   E   x   p   a   n   d   T   e
0012400    m   p   l   a   t   e   (   s   ,       "   #   $   D   $   C
0012420    $   2   F   0   D   "   ,       v   e   r   t   O   f   f   s
0012440    e   t   ,       c   o   l   ,       r   o   w   )  \r   I   n
0012460    s   e   r   t   D   e   v   i   c   e   I   f   P   o   s   s
0012500    i   b   l   e   (   s   ,       c   a   p   T   y   p   e   ,
0012520    t   r   u   e   )       /   /       s   u   p   p   r   e   s
0012540    s       w   a   r   n   i   n   g   s 032   l   4   2   6   9
0012560    \   f   1  \r   ]  \r  \r   a   n   d       E   P   i   n   P
0012600    o   s   ( 376 001  \0 311 337   i   c   i   n   s   t   ,    
0012620    p   i   n   ,       p   x   ,       p   y   )       =       v
0012640    a   l   o   f  \r   [ 032   \   f   1  \r   i   f       (   p
0012660    i   n       l   s       5   )       %       (   p   i   n    
0012700    g   r       1   8   8   )       t   h   e   n       r   e   s
0012720    u   l   t   i   s       i   l   l   e   g   a   l  \r   @   p
0012740    y       =       5   2   4  \r   l   e   t       p   g       =
0012760        (   p   i   n   -   1   )       r   e   m       4  \r   i
0013000    f       (   p   g       e   q       0   )   %   (   p   g    
0013020    e   q       3   )       t   h   e   n       r   e   s   u   l
0013040    t   i   s       i   l   l   e   g   a   l  \r   l   e   t    
0013060    x   C   o   l       =       (   p   i   n   -   5   )   /   2
0013100   \r   @   p   x       =       2   2   +   4   *   x   C   o   l
0013120    +   2   *   (   x   C   o   l   /   2   )  \r   r   e   s   u
0013140    l   t   i   s       a   b   s   o   l   u   t   e 032   l   4
0013160    2   6   9   \   f   1  \r   ]  \r  \r   a   n   d       C   P
0013200    i   n   P   o   s   (   i   c 376 001  \0 243 320   i   n   s
0013220    t   ,       p   i   n   ,       p   x   ,       p   y   )    
0013240    =       v   a   l   o   f  \r   [ 032   \   f   1  \r   i   f
0013260        (   p   i   n       l   s       5   )       %       (   p
0013300    i   n       g   r       1   8   8   )       t   h   e   n    
0013320    r   e   s   u   l   t   i   s       i   l   l   e   g   a   l
0013340   \r   @   p   y       =       0  \r   l   e   t       p   g    
0013360    =       (   p   i   n   -   1   )       r   e   m       4  \r
0013400    i   f       (   p   g       e   q       1   )   %   (   p   g
0013420        e   q       2   )       t   h   e   n       r   e   s   u
0013440    l   t   i   s       i   l   l   e   g   a   l  \r   l   e   t
0013460        x   C   o   l       =       (   1   8   8   -   p   i   n
0013500    )   /   2  \r   @   p   x       =       2   2   +   4   *   x
0013520    C   o   l   +   2   *   (   x   C   o   l   /   2   )  \r   r
0013540    e   s   u   l   t   i   s       a   b   s   o   l   u   t   e
0013560  032   l   4   2   6   9   \   f   1  \r   ]  \r  \r   a   n   d
0013600        G   N   D   P   i   n   P   o   s   (   i   c 376 001  \0
0013620    @   _   i   n   s   t   ,       p   i   n   ,       p   x   ,
0013640        p   y   ,       p   I   n   f   o   ;       n   u   m   a
0013660    r   g   s       n   a   )       =       v   a   l   o   f  \r
0013700    [ 032   \   f   1  \r   D   e   f   a   u   l   t   A   r   g
0013720    s   (   l   v       n   a   ,       -   4   ,       l   v    
0013740    n   a   )  \r   @   p   I   n   f   o       =       n   o   D
0013760    i   s   c   o   n   n   e   c   t   +   n   o   R   e   c   o
0014000    n   n   e   c   t   +   B   o   t   t   o   m   L   e   v   e
0014020    l  \r   i   f       p   i   n       l   e       0       t   h
0014040    e   n       r   e   s   u   l   t   i   s       i   l   l   e
0014060    g   a   l  \r   i   f       p   i   n       l   e       p   a
0014100    t   t   e   r   n   G   r   o   u   n   d   s       t   h   e
0014120    n  \r   [ 032   l   4   2   6   9   \   f   1  \r   R   e   p
0014140    e   a   t   (   l   v       p   i   n   ,       3   ,       6
0014160    ,       p   x   ,       p   y   )  \r   l   e   t       x   t
0014200    a   b   l   e       =       t   a   b   l   e       [       0
0014220    ;   0 376 001  \0 002 031   ;   4   ;   4   0   ;   4   0   ;
0014240    7   2   ;   7   6   ;   7   6   ;   1   0   8       ]  \r   @
0014260    p   x       =       @   p   x   +   x   t   a   b   l   e   !
0014300    p   i   n  \r   l   e   t       y   t   a   b   l   e       =
0014320        t   a   b   l   e       [       1   2   ;   2   4   ;   3
0014340    6   ;   0   ;   1   2   ;   1   2   ;   0   ;   1   2   ;   3
0014360    6       ]  \r   @   p   y       =       @   p   y   +   y   t
0014400    a   b   l   e   !   p   i   n  \r   r   e   s   u   l   t   i
0014420    s       a   b   s   o   l   u   t   e 032   l   5   5   3   9
0014440    \   f   1  \r   ]  \r   p   i   n       =       p   i   n   -
0014460    p   a   t   t   e   r   n   G   r   o   u   n   d   s  \r   i
0014500    f       p   i   n       l   e       2   *   9   2       t   h
0014520    e   n  \r   [ 032   l   4   2   6   9   \   f   1  \r   p   i
0014540    n       =       p   i   n   -   1  \r   @   p   y       =    
0014560    p   i   n       l   s       9   2   ?       0   +   4   ,    
0014600    5   2   4   -   4  \r   l   e   t       s   e   q       =    
0014620    p   i   n       r   e   m 376 001  \0 322 205       9   2  \r
0014640    @   p   x       =       2   2   +   4   *   s   e   q   +   2
0014660    *   (   s   e   q   /   2   )  \r   r   e   s   u   l   t   i
0014700    s       a   b   s   o   l   u   t   e 032   l   5   5   3   9
0014720    \   f   1  \r   ]  \r   r   e   s   u   l   t   i   s       i
0014740    l   l   e   g   a   l 032   l   4   2   6   9   \   f   1  \r
0014760    ]  \r  \r   a   n   d       V   E   E   P   i   n   P   o   s
0015000    (   i   c   i   n   s   t   ,       p   i   n   ,       p   x
0015020    ,       p   y   ,       p   I   n   f   o   ;       n   u   m
0015040    a   r   g   s       n   a   )       =       v   a   l   o   f
0015060   \r   [ 032   \   f   1  \r   D   e   f   a   u   l   t   A   r
0015100    g   s   (   l   v       n   a   ,       -   4   ,       l   v
0015120        n   a   )  \r   @   p   I   n   f   o       =       n   o
0015140    D   i   s   c   o   n   n   e   c   t   +   n   o   R   e   c
0015160    o   n   n   e   c   t   +   B   o   t   t   o   m   L   e   v
0015200    e   l  \r   i   f       p   i   n       l   e       0       t
0015220    h   e   n       r   e   s   u   l   t   i   s 376 001  \0 246
0015240  351       i   l   l   e   g   a   l  \r   i   f       p   i   n
0015260        l   e       4   *   f   u   l   l   R   e   p   e   a   t
0015300    s   +   2   *   r   e   p   e   a   t   s       t   h   e   n
0015320   \r   [ 032   l   4   2   6   9   \   f   1  \r   R   e   p   e
0015340    a   t   (   l   v       p   i   n   ,       2   ,       4   ,
0015360        p   x   ,       p   y   )  \r   l   e   t       x   t   a
0015400    b   l   e       =       t   a   b   l   e       [       4   ;
0015420    4   4   ;   8   0       ]  \r   @   p   x       =       @   p
0015440    x   +   x   t   a   b   l   e   !   (   p   i   n   /   2   )
0015460   \r   @   p   y       =       @   p   y   +   2   4   *   (   p
0015500    i   n       r   e   m       2   )  \r   r   e   s   u   l   t
0015520    i   s       a   b   s   o   l   u   t   e 032   l   5   5   3
0015540    9   \   f   1  \r   ]  \r   r   e   s   u   l   t   i   s    
0015560    i   l   l   e   g   a   l 032   l   4   2   6   9   \   f   1
0015600   \r   ]  \r  \r   a   n   d       V   T   T   P   i   n   P   o
0015620    s   (   i   c   i   n   s   t   ,       p   i   n   ,       p
0015640    x 376 001  \0   Q 034   ,       p   y   ,       p   I   n   f
0015660    o   ;       n   u   m   a   r   g   s       n   a   )       =
0015700        v   a   l   o   f  \r   [ 032   \   f   1  \r   D   e   f
0015720    a   u   l   t   A   r   g   s   (   l   v       n   a   ,    
0015740    -   4   ,       l   v       n   a   )  \r   @   p   I   n   f
0015760    o       =       n   o   D   i   s   c   o   n   n   e   c   t
0016000    +   n   o   R   e   c   o   n   n   e   c   t   +   B   o   t
0016020    t   o   m   L   e   v   e   l  \r   i   f       p   i   n    
0016040    l   e       0       t   h   e   n       r   e   s   u   l   t
0016060    i   s       i   l   l   e   g   a   l  \r   i   f       p   i
0016100    n       l   e       3   *   f   u   l   l   R   e   p   e   a
0016120    t   s       t   h   e   n  \r   [ 032   l   4   2   6   9   \
0016140    f   1  \r   R   e   p   e   a   t   (   l   v       p   i   n
0016160    ,       0   ,       3   ,       p   x   ,       p   y   )  \r
0016200    l   e   t       x   t   a   b   l   e       =       t   a   b
0016220    l   e       [       4   0   ;   7   6   ;   1   0   8       ]
0016240   \r   @   p   x       = 376 001  \0 372 217       @   p   x   +
0016260    x   t   a   b   l   e   !   p   i   n  \r   l   e   t       y
0016300    t   a   b   l   e       =       t   a   b   l   e       [    
0016320    2   4   ;   2   4   ;   1   8       ]  \r   @   p   y       =
0016340        @   p   y   +   y   t   a   b   l   e   !   p   i   n  \r
0016360    r   e   s   u   l   t   i   s       a   b   s   o   l   u   t
0016400    e 032   l   5   5   3   9   \   f   1  \r   ]  \r   r   e   s
0016420    u   l   t   i   s       i   l   l   e   g   a   l 032   l   4
0016440    2   6   9   \   f   1  \r   ]  \r  \r   a   n   d       V   D
0016460    D   P   i   n   P   o   s   (   i   c   i   n   s   t   ,    
0016500    p   i   n   ,       p   x   ,       p   y   ,       p   I   n
0016520    f   o   ;       n   u   m   a   r   g   s       n   a   )    
0016540    =       v   a   l   o   f  \r   [ 032   \   f   1  \r   D   e
0016560    f   a   u   l   t   A   r   g   s   (   l   v       n   a   ,
0016600        -   4   ,       l   v       n   a   )  \r   @   p   I   n
0016620    f   o       =       n   o   D   i   s   c   o   n   n   e   c
0016640    t   +   n   o   R   e   c   o   n   n   e 376 001  \0   A 267
0016660    c   t   +   B   o   t   t   o   m   L   e   v   e   l  \r   i
0016700    f       p   i   n       l   e       0       t   h   e   n    
0016720    r   e   s   u   l   t   i   s       i   l   l   e   g   a   l
0016740   \r   i   f       p   i   n       l   e       r   e   p   e   a
0016760    t   s       t   h   e   n  \r   [ 032   l   4   2   6   9   \
0017000    f   1  \r   R   e   p   e   a   t   (   l   v       p   i   n
0017020    ,       1   ,       0   ,       p   x   ,       p   y   )  \r
0017040    @   p   x       =       @   p   x   +   4  \r   @   p   y    
0017060    =       @   p   y   +   1   8  \r   r   e   s   u   l   t   i
0017100    s       a   b   s   o   l   u   t   e 032   l   5   5   3   9
0017120    \   f   1  \r   ]  \r   r   e   s   u   l   t   i   s       i
0017140    l   l   e   g   a   l 032   l   4   2   6   9   \   f   1  \r
0017160    ]  \r  \r   a   n   d       V   C   C   P   i   n   P   o   s
0017200    (   i   c   i   n   s   t   ,       p   i   n   ,       p   x
0017220    ,       p   y   ,       p   I   n   f   o   ;       n   u   m
0017240    a   r   g   s       n   a   )       =       v   a   l   o   f
0017260  376 001  \0   ' 350  \r   [ 032   \   f   1  \r   D   e   f   a
0017300    u   l   t   A   r   g   s   (   l   v       n   a   ,       -
0017320    4   ,       l   v       n   a   )  \r   @   p   I   n   f   o
0017340        =       n   o   D   i   s   c   o   n   n   e   c   t   +
0017360    n   o   R   e   c   o   n   n   e   c   t   +   B   o   t   t
0017400    o   m   L   e   v   e   l  \r   i   f       p   i   n       l
0017420    e       0       t   h   e   n       r   e   s   u   l   t   i
0017440    s       i   l   l   e   g   a   l  \r   i   f       p   i   n
0017460        l   e       r   e   p   e   a   t   s       t   h   e   n
0017500   \r   [ 032   l   4   2   6   9   \   f   1  \r   R   e   p   e
0017520    a   t   (   l   v       p   i   n   ,       1   ,       0   ,
0017540        p   x   ,       p   y   )  \r   @   p   y       =       @
0017560    p   y   +   3   6  \r   r   e   s   u   l   t   i   s       a
0017600    b   s   o   l   u   t   e 032   l   5   5   3   9   \   f   1
0017620   \r   ]  \r   r   e   s   u   l   t   i   s       i   l   l   e
0017640    g   a   l 032   l   4   2   6   9   \   f   1  \r   ]  \r  \r
0017660    a   n   d       A 376 001  \0   b   |   u   t   o   T   e   r
0017700    m   P   i   n   P   o   s   (   i   c   i   n   s   t   ,    
0017720    p   i   n   ,       p   x   ,       p   y   ,       p   I   n
0017740    f   o   ,       p   i   n   N   a   m   e   ;       n   u   m
0017760    a   r   g   s       n   a   )       =       v   a   l   o   f
0020000   \r   [ 032   \   f   1  \r   D   e   f   a   u   l   t   A   r
0020020    g   s   (   l   v       n   a   ,       -   4   ,       l   v
0020040        n   a   ,       0   )  \r   i   f       p   i   n       l
0020060    e       0       t   h   e   n       r   e   s   u   l   t   i
0020100    s       i   l   l   e   g   a   l  \r   i   f       p   i   n
0020120        l   e       1   0   0   8       t   h   e   n  \r   [ 032
0020140    l   4   2   6   9   \   f   1  \r   p   i   n   =   p   i   n
0020160    -   1  \r   l   e   t       p   a   c   k   a   g   e       =
0020200        p   i   n   /   7  \r   p   i   n       =       p   i   n
0020220        r   e   m       7  \r   P   i   n   1   o   f   8   (   p
0020240    a   c   k   a   g   e       r   e   m       1   2   ,       p
0020260    a   c   k   a   g   e   /   1   2   , 376 001  \0   o   '    
0020300    p   x   ,       p   y   )  \r   @   p   x       =       @   p
0020320    x   -   4   -   4   *   p   i   n  \r   i   f       p   i   n
0020340    N   a   m   e       n   e       0       t   h   e   n 032   l
0020360    5   5   3   9   \   f   1  \r   E   x   p   a   n   d   T   e
0020400    m   p   l   a   t   e   (   p   i   n   N   a   m   e   ,    
0020420    "   $   C   $   D   .   $   D   "   ,       $   a   +   p   a
0020440    c   k   a   g   e   /   1   2   ,  \r       4   1   +   (   p
0020460    a   c   k   a   g   e       r   e   m       1   2   )   ,    
0020500    p   i   n   +   2   )  \r   r   e   s   u   l   t   i   s    
0020520    a   b   s   o   l   u   t   e 032   l   5   5   3   9   \   f
0020540    1  \r   ]  \r   r   e   s   u   l   t   i   s       i   l   l
0020560    e   g   a   l 032   l   4   2   6   9   \   f   1  \r   ]  \r
0020600   \r   a   n   d       F   i   n   d   C   o   o   r   d   F   r
0020620    o   m   S   t   r   i   n   g   (   s   ,       p   x   ,    
0020640    p   y   ,       v   o   p   1   ,       h   o   p   1   ;    
0020660    n   u   m   a   r   g   s       n   a   )       =       v 376
0020700  001  \0   F   '   a   l   o   f  \r   [       /   /       v   o
0020720    p   1       i   s       t   h   e       "   v   e   r   t   i
0020740    c   a   l   "       f   r   o   m       p   i   n       1   ,
0020760        t   h   a   t       i   s   ,       t   h   e       o   f
0021000    f   s   e   t       a   l   o   n   g       t   h   e       0
0021020    .   1   "  \r   /   /       s   p   a   c   i   n   g   ;    
0021040    h   o   p   1       i   s       t   h   e       "   h   o   r
0021060    i   z   o   n   t   a   l       o   f   f   s   e   t   "    
0021100    f   r   o   m       p   i   n       1   .       I   n       a
0021120        s   t   a   n   d   a   r   d       1   6   -   p   i   n
0021140   \r   /   /       D   I   P   ,       f   o   r       p   i   n
0021160        2       v   o   p   1   =   4       a   n   d       h   o
0021200    p   1   =   0   ,       a   n   d       f   o   r       p   i
0021220    n       1   6   ,       v   o   p   1   =   0       a   n   d
0021240        h   o   p   1   =   1   2   .       F   o   r  \r   /   /
0021260        t   h   i   s       b   o   a   r   d   ,       v   o   p
0021300    1       g   r 376 001  \0 364   V   o   w   s       i   n    
0021320    t   h   e       -   x       d   i   r   e   c   t   i   o   n
0021340    ,       a   n   d       h   o   p   1       g   r   o   w   s
0021360        i   n       t   h   e       +   y       d   i   r   e   c
0021400    t   i   o   n   .  \r  \r   /   /       s       c   a   n    
0021420    b   e       o   f       t   h   e       f   o   r   m       <
0021440    l   o   w   e   r   -   c   a   s   e       l   e   t   t   e
0021460    r   >   <   n   u   m   b   e   r   >       o   r  \r   /   /
0021500   \t   <   n   u   m   b   e   r   >       s       (   m   e   a
0021520    n   i   n   g       v   e   r   t   i   c   a   l   l   y    
0021540    o   f   f   s   e   t       <   n   u   m   b   e   r   >   *
0021560    0   .   1   "   )       o   r  \r   /   /  \t   ^   <   n   u
0021600    m   b   e   r   >       s       (   m   e   a   n   i   n   g
0021620        v   e   r   t   i   c   a   l   l   y       o   f   f   s
0021640    e   t       <   n   u   m   b   e   r   >   *   0   .   1   "
0021660    )       o   r  \r   /   /       _   <   n   u   m   b   e   r
0021700    >       s       (   m   e   a   n 376 001  \0   P 030   i   n
0021720    g       h   o   r   i   z   o   n   t   a   l   l   y       o
0021740    f   f   s   e   t       <   n   u   m   b   e   r   >   *   0
0021760    .   1   "   )       o   r  \r   /   /       #       s  \r 032
0022000    \   f   1  \r   D   e   f   a   u   l   t   A   r   g   s   (
0022020    l   v       n   a   ,       -   3   ,       0   ,       0   )
0022040   \r  \r   l   e   t       b   p   V   O   f   f   s   e   t   ,
0022060        b   p   H   O   f   f   s   e   t       =       0   ,   0
0022100   \r   l   e   t       i   =   0  \r   l   e   t       c       =
0022120        $   #  \r   l   e   t       o   f   f   s   e   t   I   s
0022140    V   e   r   t   i   c   a   l       =       t   r   u   e  \r
0022160    l   e   t       s   i   g   n       =       1  \r  \r   w   h
0022200    i   l   e       i       l   e       s   >   >   s   t   r   .
0022220    l   e   n   g   t   h       &       (   c       l   s       $
0022240    a       %       c       g   r       $   z   )       d   o  \r
0022260    [ 032   l   4   2   6   9   \   f   1  \r   i   f       c    
0022300    e   q       $   ^       %       c       e   q       $ 376 001
0022320   \0 220   S   _       %       c       e   q       $   #       %
0022340        c       e   q       $   -       t   h   e   n  \r   [ 032
0022360    l   5   5   3   9   \   f   1  \r   t   e   s   t       c    
0022400    e   q       $   -  \r   i   f   s   o       s   i   g   n    
0022420    =       -   s   i   g   n  \r   i   f   n   o   t       o   f
0022440    f   s   e   t   I   s   V   e   r   t   i   c   a   l       =
0022460        n   o   t       (   c       e   q       $   _   )  \r  \r
0022500    i   =   i   +   1  \r   c       =       s   >   >   s   t   r
0022520    .   c   h   a   r   ^   i  \r   l   o   o   p 032   l   6   8
0022540    0   9   \   f   1  \r   ]  \r  \r   i   f       c       g   e
0022560        $   0       &       c       l   e       $   9       t   h
0022600    e   n  \r   [ 032   l   5   5   3   9   \   f   1  \r   l   e
0022620    t       b   p   O   f   f   s   e   t       =       0  \r   w
0022640    h   i   l   e       i       l   e       s   >   >   s   t   r
0022660    .   l   e   n   g   t   h       &       c       g   e       $
0022700    0       &       c       l   e       $   9       d   o  \r   [
0022720  032   l   6 376 001  \0   7   [   8   0   9   \   f   1  \r   b
0022740    p   O   f   f   s   e   t       =       1   0   *   b   p   O
0022760    f   f   s   e   t   +   c   -   $   0  \r   i       =       i
0023000    +   1  \r   c       =       s   >   >   s   t   r   .   c   h
0023020    a   r   ^   i 032   l   8   0   7   9   \   f   1  \r   ]  \r
0023040    @   (   o   f   f   s   e   t   I   s   V   e   r   t   i   c
0023060    a   l   ?       l   v       b   p   V   O   f   f   s   e   t
0023100    ,       l   v       b   p   H   O   f   f   s   e   t   )    
0023120    =  \r       s   i   g   n   *   b   p   O   f   f   s   e   t
0023140   \r   o   f   f   s   e   t   I   s   V   e   r   t   i   c   a
0023160    l       =       t   r   u   e  \r   s   i   g   n       =    
0023200    1  \r   l   o   o   p 032   l   6   8   0   9   \   f   1  \r
0023220    ]  \r  \r   r   e   s   u   l   t   i   s       i   l   l   e
0023240    g   a   l 032   l   5   5   3   9   \   f   1  \r   ]  \r  \r
0023260    v   o   p   1       =       v   o   p   1   +   4   *   b   p
0023300    V   O   f   f   s   e   t  \r   h   o   p   1       =       h
0023320    o   p   1   +   4   *   b   p 376 001  \0 225   L   H   O   f
0023340    f   s   e   t  \r  \r   /   /       I   C       p   o   s   i
0023360    t   i   o   n       o   f       t   h   e       f   o   r   m
0023400        <   l   e   t   t   e   r   >   <   n   u   m   b   e   r
0023420    >  \r  \r   i   f       i       g   r       s   >   >   s   t
0023440    r   .   l   e   n   g   t   h       %       c       l   s    
0023460    $   a       %       c       g   r       $   z       t   h   e
0023500    n       r   e   s   u   l   t   i   s       i   l   l   e   g
0023520    a   l  \r   l   e   t       a   l   p   h       =       c  \r
0023540   \r   l   e   t       n   u   m       =       0  \r   w   h   i
0023560    l   e       i       l   s       s   >   >   s   t   r   .   l
0023600    e   n   g   t   h       d   o  \r   [ 032   l   4   2   6   9
0023620    \   f   1  \r   i   =   i   +   1  \r   c       =       s   >
0023640    >   s   t   r   .   c   h   a   r   ^   i  \r   i   f       (
0023660    c       l   s       $   0   )       %       (   c       g   r
0023700        $   9   )       t   h   e   n       r   e   s   u   l   t
0023720    i   s       i   l   l   e   g   a   l  \r   n   u 376 001  \0
0023740  360 215   m       =       1   0   *   n   u   m   +   (   c   -
0023760    $   0   ) 032   l   5   5   3   9   \   f   1  \r   ]  \r  \r
0024000    i   f       (   n   u   m       g   e       1   )   &   (   n
0024020    u   m       l   e       2   4   )       t   h   e   n  \r   [
0024040  032   l   4   2   6   9   \   f   1  \r   u   n   l   e   s   s
0024060        P   i   n   1   o   f   1   6   (   n   u   m   -   1   ,
0024100        a   l   p   h   -   $   a   ,       p   x   ,       p   y
0024120    )       d   o       r   e   s   u   l   t   i   s       i   l
0024140    l   e   g   a   l  \r   @   p   x   =   @   p   x   -   v   o
0024160    p   1  \r   @   p   y       =       @   p   y   +   h   o   p
0024200    1  \r   r   e   s   u   l   t   i   s       a   b   s   o   l
0024220    u   t   e 032   l   5   5   3   9   \   f   1  \r   ]  \r  \r
0024240    i   f       (   n   u   m       g   e       4   1   )       &
0024260        (   n   u   m       l   e       5   2   )       t   h   e
0024300    n  \r   [ 032   l   4   2   6   9   \   f   1  \r   u   n   l
0024320    e   s   s       P   i   n   1   o   f   8   (   n   u   m   -
0024340    4   1 376 001  \0 236   4   ,       a   l   p   h   -   $   a
0024360    ,       p   x   ,       p   y   )       d   o       r   e   s
0024400    u   l   t   i   s       i   l   l   e   g   a   l  \r   @   p
0024420    x   =   @   p   x   -   v   o   p   1  \r   @   p   y   =   @
0024440    p   y   +   h   o   p   1  \r   r   e   s   u   l   t   i   s
0024460        a   b   s   o   l   u   t   e 032   l   5   5   3   9   \
0024500    f   1  \r   ]  \r  \r   l   e   t       c   o   l       =    
0024520    s   e   l   e   c   t   o   n       a   l   p   h       i   n
0024540    t   o  \r   [ 032   l   4   2   6   9   \   f   1  \r   c   a
0024560    s   e       $   b   :       0  \r   c   a   s   e       $   c
0024600    :       1  \r   c   a   s   e       $   e   :       2  \r   c
0024620    a   s   e       $   f   :       3  \r   c   a   s   e       $
0024640    h   :       4  \r   c   a   s   e       $   i   :       5  \r
0024660    c   a   s   e       $   k   :       6  \r   c   a   s   e    
0024700    $   l   :       7  \r   d   e   f   a   u   l   t   :       -
0024720    1 032   l   5   5   3   9   \   f   1  \r   ]  \r   l   e   t
0024740        r   o   w       =     376 001  \0   h 017   s   e   l   e
0024760    c   t   o   n       n   u   m       i   n   t   o  \r   [ 032
0025000    l   4   2   6   9   \   f   1  \r   c   a   s   e       6   0
0025020    :       1  \r   c   a   s   e       6   1   :       4  \r   c
0025040    a   s   e       6   2   :       7  \r   c   a   s   e       6
0025060    3   :       1   0  \r  \r   c   a   s   e       6   4   :    
0025100    0  \t   /   /       n   e   w       n   u   m   b   e   r   s
0025120   \r   c   a   s   e       6   5   :       2  \r   c   a   s   e
0025140        6   6   :       3  \r   c   a   s   e       6   7   :    
0025160    5  \r   c   a   s   e       6   8   :       6  \r   c   a   s
0025200    e       6   9   :       8  \r   c   a   s   e       7   0   :
0025220        9  \r   c   a   s   e       7   1   :       1   1  \r  \r
0025240    d   e   f   a   u   l   t   :       -   1 032   l   5   5   3
0025260    9   \   f   1  \r   ]  \r  \r   u   n   l   e   s   s       P
0025300    i   n   1   o   f   2   4   (   r   o   w   ,       c   o   l
0025320    ,       p   x   ,       p   y   )       d   o       r   e   s
0025340    u   l   t   i   s       i   l   l   e   g   a 376 001  \0 241
0025360  313   l  \r   @   p   x       =       @   p   x   -   v   o   p
0025400    1  \r   @   p   y       =       @   p   y   +   h   o   p   1
0025420  032   l   4   2   6   9   \   f   1  \r   r   e   s   u   l   t
0025440    i   s       a   b   s   o   l   u   t   e 032   l   4   2   6
0025460    9   \   f   1  \r   ]  \r  \r   a   n   d       P   i   n   1
0025500    o   f   1   6   (   r   o   w   ,       c   o   l   ,       p
0025520    x   ,       p   y   )       =       v   a   l   o   f  \r   [
0025540  032   \   f   1  \r   u   n   l   e   s   s       O   f   f   s
0025560    e   t   L   e   g   a   l   (   r   o   w   ,       1   ,    
0025600    0   ,       2   3   )   &   O   f   f   s   e   t   L   e   g
0025620    a   l   (   c   o   l   ,       1   ,       $   a   -   $   a
0025640    ,       $   l   -   $   a   )       d   o  \r       r   e   s
0025660    u   l   t   i   s       f   a   l   s   e  \r  \r   B   a   s
0025700    i   c   P   a   t   t   e   r   n   (   r   o   w   /   2   ,
0025720        c   o   l   /   3   +   c   o   l   /   6   ,       p   x
0025740    ,       p   y   )  \r   @   p   y   =   @   p   y   +   2   4
0025760    * 376 001  \0   # 351   (   r   o   w       r   e   m       2
0026000    )  \r   @   p   x   =   @   p   x   +   3   6   +   3   6   *
0026020    (   c   o   l       r   e   m       3   )  \r   r   e   s   u
0026040    l   t   i   s       t   r   u   e 032   l   4   2   6   9   \
0026060    f   1  \r   ]  \r  \r   a   n   d       P   i   n   1   o   f
0026100    8   (   r   o   w   ,       c   o   l   ,       p   x   ,    
0026120    p   y   )       =       v   a   l   o   f  \r   [ 032   \   f
0026140    1  \r   u   n   l   e   s   s       O   f   f   s   e   t   L
0026160    e   g   a   l   (   r   o   w   ,       1   ,       0   ,    
0026200    1   1   )   &   O   f   f   s   e   t   L   e   g   a   l   (
0026220    c   o   l   ,       1   ,       $   a   -   $   a   ,       $
0026240    l   -   $   a   )       d   o  \r       r   e   s   u   l   t
0026260    i   s       f   a   l   s   e  \r  \r   B   a   s   i   c   P
0026300    a   t   t   e   r   n   (   r   o   w   ,       c   o   l   /
0026320    3   +   c   o   l   /   6   ,       p   x   ,       p   y   )
0026340   \r   @   p   y   =   @   p   y   +   1   8  \r   @   p   x   =
0026360    @   p   x   +   3   6 376 001  \0 372   Q   +   3   6   *   (
0026400    c   o   l       r   e   m       3   )  \r   r   e   s   u   l
0026420    t   i   s       t   r   u   e 032   l   4   2   6   9   \   f
0026440    1  \r   ]  \r  \r   a   n   d       P   i   n   1   o   f   2
0026460    4   (   r   o   w   ,       c   o   l   ,       p   x   ,    
0026500    p   y   )       =       v   a   l   o   f  \r   [ 032   \   f
0026520    1  \r   u   n   l   e   s   s       O   f   f   s   e   t   L
0026540    e   g   a   l   (   r   o   w   ,       1   ,       0   ,    
0026560    1   1   )   &   O   f   f   s   e   t   L   e   g   a   l   (
0026600    c   o   l   ,       1   ,       0   ,       7   )       d   o
0026620        r   e   s   u   l   t   i   s       f   a   l   s   e  \r
0026640   \r   B   a   s   i   c   P   a   t   t   e   r   n   (   r   o
0026660    w   ,       c   o   l   /   2   +   c   o   l   /   4   ,    
0026700    p   x   ,       p   y   )  \r   @   p   y   =   @   p   y   +
0026720    6  \r   @   p   x   =   @   p   x   +   5   2   +   5   6   *
0026740    (   c   o   l       r   e   m       2   )  \r   r   e   s   u
0026760    l   t   i   s       t   r   u   e 032   l 376 001  \0 366   H
0027000    4   2   6   9   \   f   1  \r   ]  \r 032   \   f   1  \r   a
0027020    n   d       P   i   n   1   o   f   5   0   (   r   o   w   ,
0027040        c   o   l   ,       p   x   ,       p   y   )       =    
0027060    P   i   n   1   o   f   2   4   (   r   o   w   ,       2   *
0027100    c   o   l   ,       p   x   ,       p   y   )  \r  \r   a   n
0027120    d       R   e   p   e   a   t   (   p   p   i   n   ,       p
0027140    i   n   s   P   e   r   B   a   s   i   c   R   e   p   e   a
0027160    t   ,       e   x   t   r   a   P   i   n   s   P   e   r   F
0027200    u   l   l   R   e   p   e   a   t   ,       p   x   ,       p
0027220    y   )       b   e  \r   [ 032   \   f   1  \r   l   e   t    
0027240    p   i   n       =       @   p   p   i   n   -   1  \r   l   e
0027260    t       p   i   n   s   P   e   r   S   i   d   e       =    
0027300    r   e   p   e   a   t   R   o   w   s   *  \r       (   (   r
0027320    e   p   e   a   t   C   o   l   s   /   2   )   *   p   i   n
0027340    s   P   e   r   B   a   s   i   c   R   e   p   e   a   t   +
0027360   \r           (   f   u   l   l   R   e   p   e   a   t   C   o
0027400  376 001  \0 250 302   l   s   /   2   )   *   e   x   t   r   a
0027420    P   i   n   s   P   e   r   F   u   l   l   R   e   p   e   a
0027440    t   )  \r   l   e   t       s   i   d   e       =       p   i
0027460    n   /   p   i   n   s   P   e   r   S   i   d   e  \r   p   i
0027500    n       =       p   i   n       r   e   m       p   i   n   s
0027520    P   e   r   S   i   d   e  \r   l   e   t       p   i   n   s
0027540    P   e   r   F   u   l   l   C   o   l       =       r   e   p
0027560    e   a   t   R   o   w   s   *   (   p   i   n   s   P   e   r
0027600    B   a   s   i   c   R   e   p   e   a   t   +   e   x   t   r
0027620    a   P   i   n   s   P   e   r   F   u   l   l   R   e   p   e
0027640    a   t   )  \r   l   e   t       c   o   l       =       p   i
0027660    n   /   p   i   n   s   P   e   r   F   u   l   l   C   o   l
0027700   \r   p   i   n       =       p   i   n       r   e   m       p
0027720    i   n   s   P   e   r   F   u   l   l   C   o   l  \r   l   e
0027740    t       p   i   n   s   P   e   r   R   e   p   e   a   t    
0027760    =       p   i   n   s   P   e   r   B   a   s   i   c   R   e
0030000    p   e   a   t   + 376 001  \0   e 203  \r       (   c   o   l
0030020        l   s       f   u   l   l   R   e   p   e   a   t   C   o
0030040    l   s   /   2   ?       e   x   t   r   a   P   i   n   s   P
0030060    e   r   F   u   l   l   R   e   p   e   a   t   ,       0   )
0030100   \r   l   e   t       r   o   w       =       p   i   n   /   p
0030120    i   n   s   P   e   r   R   e   p   e   a   t  \r   @   p   p
0030140    i   n       =       p   i   n       r   e   m       p   i   n
0030160    s   P   e   r   R   e   p   e   a   t  \r   B   a   s   i   c
0030200    P   a   t   t   e   r   n   (   r   o   w   ,       3   *   s
0030220    i   d   e   +   c   o   l   ,       p   x   ,       p   y   )
0030240  032   l   4   2   6   9   \   f   1  \r   ]  \r  \r   a   n   d
0030260        B   a   s   i   c   P   a   t   t   e   r   n   (   r   o
0030300    w   ,       c   o   l   ,       p   x   ,       p   y   )    
0030320    b   e  \r   [ 032   \   f   1  \r   @   p   y       =       r
0030340    o   w   O   f   f   s   e   t   +   r   o   w   H   e   i   g
0030360    h   t   *   r   o   w  \r   @   p   x       =           (   c
0030400    o   l       l   s       3   ?       l 376  \0   K   [   )   e
0030420    f   t   C   o   l   s   O   f   f   s   e   t   ,       r   i
0030440    g   h   t   C   o   l   s   O   f   f   s   e   t   )   +  \r
0030460        f   u   l   l   C   o   l   W   i   d   t   h   *   (   c
0030500    o   l       r   e   m       3   ) 032   l   4   2   6   9   \
0030520    f   1  \r   ]  \r 032   \   f   1  \r 377  \0  \0   r   o   u
0030540    t   e   m   w   l   b   2   .   b   c   p   l  \0 373 225 247
0030560  220 222  \0  \0 376 001  \0 335   g   /   /   r   o   u   t   e
0030600    m   w   l   b   2   .   b   c   p   l  \r  \r   /   /       B
0030620    o   a   r   d   -   s   p   e   c   i   f   i   c       R   o
0030640    u   t   e       r   o   u   t   i   n   e   s       f   o   r
0030660        t   h   e       M   u   l   t   i   -   W   i   r   e    
0030700    v   e   r   s   i   o   n       o   f       t   h   e  \r   /
0030720    /       D   o   r   a   d   o       M   a   i   n       L   o
0030740    g   i   c       B   o   a   r   d  \r  \r   /   /       p   a
0030760    r   t       2       o   f       2  \r  \r   /   /       l   a
0031000    s   t       m   o   d   i   f   i   e   d       b   y       E
0031020    .       M   c   C   r   e   i   g   h   t   ,       J   u   l
0031040    y       2   4   ,       1   9   8   0           5   :   4   1
0031060        P   M  \r   /   /  \t  \t   t   o       f   i   x       m
0031100    u   l   t   i   w   i   r   e   -   f   o   r   m   a   t    
0031120    s   t   i   t   c   h   w   e   l   d       b   o   a   r   d
0031140        c   o   n   n   e   c   t   o   r       m   i   s   a   l
0031160    i   g   n   m   e   n   t  \r  \r 376 001  \0 356 234   /   /
0031200        a   l   l       c   o   -   o   r   d   i   n   a   t   e
0031220    s       a   r   e       d   e   s   c   r   i   b   e   d    
0031240    w   i   t   h       r   e   s   p   e   c   t       t   o    
0031260    t   h   e       b   o   t   t   o   m       o   r  \r   /   /
0031300        w   i   r   i   n   g       s   i   d   e       o   f    
0031320    t   h   e       b   o   a   r   d   .       L   e   v   e   l
0031340    T   r   a   n   s   f   o   r   m       f   i   x   e   s    
0031360    t   h   e   s   e       a   s       n   e   c   e   s   s   a
0031400    r   y   .  \r  \r   g   e   t       "   r   o   u   t   e   .
0031420    d   e   f   s   "  \r  \r   m   a   n   i   f   e   s   t  \r
0031440    [ 032   (   6   3   5   )   \   f   1  \r   r   e   p   e   a
0031460    t   R   o   w   s       =       1   2  \r   r   e   p   e   a
0031500    t   C   o   l   s   P   e   r   S   i   d   e       =       3
0031520   \r   r   e   p   e   a   t   C   o   l   s       =       2   *
0031540    r   e   p   e   a   t   C   o   l   s   P   e   r   S   i   d
0031560    e  \r   f   u   l   l   R   e   p   e   a   t   C   o 376 001
0031600   \0 246 304   l   s   P   e   r   S   i   d   e       =       2
0031620   \r   f   u   l   l   R   e   p   e   a   t   C   o   l   s    
0031640    =       2   *   f   u   l   l   R   e   p   e   a   t   C   o
0031660    l   s   P   e   r   S   i   d   e  \r   r   e   p   e   a   t
0031700    s       =       r   e   p   e   a   t   R   o   w   s   *   r
0031720    e   p   e   a   t   C   o   l   s  \r   f   u   l   l   R   e
0031740    p   e   a   t   s       =       r   e   p   e   a   t   R   o
0031760    w   s   *   f   u   l   l   R   e   p   e   a   t   C   o   l
0032000    s  \r   r   o   w   O   f   f   s   e   t       =       1   6
0032020   \r   l   e   f   t   C   o   l   s   O   f   f   s   e   t    
0032040    =       0  \r   r   i   g   h   t   C   o   l   s   O   f   f
0032060    s   e   t       =       2   4   6  \r   r   o   w   H   e   i
0032100    g   h   t       =       4   2  \r   f   u   l   l   C   o   l
0032120    W   i   d   t   h       =       1   1   2  \r   p   a   t   t
0032140    e   r   n   G   r   o   u   n   d   s       =       3   *   r
0032160    e   p   e   a   t   s   +   6   *   f   u   l   l   R   e   p
0032200    e   a   t 376 001  \0   u 230   s  \r   S   o   c   k   e   t
0032220    s   1   6   p   i   n       =       6   *   f   u   l   l   R
0032240    e   p   e   a   t   s  \r   S   o   c   k   e   t   s   2   4
0032260    p   i   n       =       2   *   f   u   l   l   R   e   p   e
0032300    a   t   s  \r   S   o   c   k   e   t   s   5   0   p   i   n
0032320        =       f   u   l   l   R   e   p   e   a   t   s  \r   S
0032340    o   c   k   e   t   s   S   i   p       =       3   *   f   u
0032360    l   l   R   e   p   e   a   t   s 032   l   4   2   6   9   \
0032400    f   1  \r   ]  \r  \r   s   t   a   t   i   c       [       b
0032420    o   a   r   d   I   n   t   e   r   f   a   c   e   V   e   r
0032440    s   i   o   n       =       i   n   t   e   r   f   a   c   e
0032460    V   e   r   s   i   o   n       ]  \r  \r   l   e   t       F
0032500    i   n   d   I   n   d   e   x   F   r   o   m   C   o   o   r
0032520    d   (   x   ,       y   ,       p   i   c   c   l   a   s   s
0032540    ,       p   P   i   n   N   o   ;       n   u   m   a   r   g
0032560    s       n   a   )       =       v   a   l   o   f  \r   [ 032
0032600    \   f   1  \r   s   t   a   t 376 001  \0 213   v   i   c    
0032620    [       h   o   t   I   n   d   e   x       =       -   1   ;
0032640        f   i   r   s   t   U   n   u   s   e   d   P   i   n    
0032660    =       0       ]  \r  \r   D   e   f   a   u   l   t   A   r
0032700    g   s   (   l   v       n   a   ,       -   2   ,       l   v
0032720        n   a   ,       l   v       n   a   )  \r  \r   i   f    
0032740    f   i   r   s   t   U   n   u   s   e   d   P   i   n       e
0032760    q       0       t   h   e   n       f   i   r   s   t   U   n
0033000    u   s   e   d   P   i   n       =       F   I   F   C   (   -
0033020    1   ,   -   1   )  \r   l   e   t       r   e   s   u   l   t
0033040        =       F   I   F   C   (   x   ,       y   ,       p   i
0033060    c   c   l   a   s   s   ,       p   P   i   n   N   o   )  \r
0033100    i   f       r   e   s   u   l   t       l   s       0       %
0033120        r   e   s   u   l   t       g   r       f   i   r   s   t
0033140    U   n   u   s   e   d   P   i   n       t   h   e   n       C
0033160    a   l   l   S   w   a   t   (   "   I   l   l   e   g   a   l
0033200        i   n   d   e   x   .   .   "   )  \r   i   f 376 001  \0
0033220    k 350       r   e   s   u   l   t       e   q       h   o   t
0033240    I   n   d   e   x       t   h   e   n       C   a   l   l   S
0033260    w   a   t   (   "   H   o   t       i   n   d   e   x       c
0033300    o   m   p   u   t   e   d   .   .   .   "   )  \r   r   e   s
0033320    u   l   t   i   s       r   e   s   u   l   t 032   l   4   2
0033340    6   9   \   f   1  \r   ]  \r  \r   a   n   d       F   I   F
0033360    C   (   x   ,       y   ,       p   i   c   c   l   a   s   s
0033400    ,       p   P   i   n   N   o   ;       n   u   m   a   r   g
0033420    s       n   a   )       =       v   a   l   o   f  \r   [ 032
0033440    \   f   1  \r   m   a   n   i   f   e   s   t  \r   [ 032   l
0033460    4   2   6   9   \   f   1  \r   f   i   r   s   t   E   P   i
0033500    n       =       1  \r   f   i   r   s   t   S   o   c   k   e
0033520    t   G   r   o   u   n   d       =       f   i   r   s   t   E
0033540    P   i   n   +   9   2   +   9   2  \r   f   i   r   s   t   P
0033560    a   t   t   e   r   n   P   i   n       =       f   i   r   s
0033600    t   S   o   c   k   e   t   G   r   o   u   n   d   +   9   2
0033620    +   9 376 001  \0 241 374   2  \r   f   i   r   s   t   U   n
0033640    u   s   e   d   P   i   n       =       f   i   r   s   t   P
0033660    a   t   t   e   r   n   P   i   n   +   r   e   p   e   a   t
0033700    R   o   w   s   *   (   f   u   l   l   R   e   p   e   a   t
0033720    C   o   l   s   *   7   *   2   6   +  \r       r   e   p   e
0033740    a   t   C   o   l   s   *   5   *   2   ) 032   l   5   5   3
0033760    9   \   f   1  \r   ]  \r  \r   i   f       x       e   q    
0034000    -   1       &       y       e   q       -   1       t   h   e
0034020    n       r   e   s   u   l   t   i   s       f   i   r   s   t
0034040    U   n   u   s   e   d   P   i   n  \r  \r   D   e   f   a   u
0034060    l   t   A   r   g   s   (   l   v       n   a   ,       -   2
0034100    ,       l   v       n   a   ,       l   v       n   a   )  \r
0034120   \r   u   n   l   e   s   s       O   f   f   s   e   t   L   e
0034140    g   a   l   (   x   ,       1   ,       0   ,       4   7   6
0034160    )   &   O   f   f   s   e   t   L   e   g   a   l   (   y   ,
0034200        1   ,       0   ,       5   2   4   )       d   o       r
0034220    e   s   u   l   t   i   s 376 001  \0   f 210       0  \r  \r
0034240    i   f       y       e   q       0       %       y       e   q
0034260        5   2   4       t   h   e   n       /   /       .   .   c
0034300    o   n   n   e   c   t   o   r       s   i   g   n   a   l    
0034320    p   i   n  \r   [ 032   l   4   2   6   9   \   f   1  \r   l
0034340    e   t       c   o   n   n   C   l   a   s   s       =       (
0034360    x   -   2   2   )       r   e   m       1   0  \r   i   f    
0034400    (   c   o   n   n   C   l   a   s   s       n   e       0   )
0034420        &       (   c   o   n   n   C   l   a   s   s       n   e
0034440        4   )       t   h   e   n       r   e   s   u   l   t   i
0034460    s       0  \r   l   e   t       v   p   i   n       =       2
0034500    *   (   (   x   -   2   2   )   /   1   0   )   +   (   c   o
0034520    n   n   C   l   a   s   s   /   4   )  \r   u   n   l   e   s
0034540    s       O   f   f   s   e   t   L   e   g   a   l   (   v   p
0034560    i   n   ,       1   ,       0   ,       9   1   )       d   o
0034600        r   e   s   u   l   t   i   s       0  \r   r   e   s   u
0034620    l   t   i   s       v   p   i   n   +   9   2 376 001  \0 315
0034640    R   *   (   y   /   5   2   4   )   +   f   i   r   s   t   E
0034660    P   i   n 032   l   5   5   3   9   \   f   1  \r   ]  \r  \r
0034700    i   f       y       e   q       4       %       y       e   q
0034720        5   2   0       t   h   e   n       /   /       .   .   c
0034740    o   n   n   e   c   t   o   r       g   r   o   u   n   d    
0034760    p   i   n  \r   [ 032   l   4   2   6   9   \   f   1  \r   l
0035000    e   t       c   o   n   n   C   l   a   s   s       =       (
0035020    x   -   2   2   )       r   e   m       1   0  \r   i   f    
0035040    (   c   o   n   n   C   l   a   s   s       n   e       0   )
0035060        &       (   c   o   n   n   C   l   a   s   s       n   e
0035100        4   )       t   h   e   n       r   e   s   u   l   t   i
0035120    s       0  \r   l   e   t       v   p   i   n       =       2
0035140    *   (   (   x   -   2   2   )   /   1   0   )   +   (   c   o
0035160    n   n   C   l   a   s   s   /   4   )  \r   u   n   l   e   s
0035200    s       O   f   f   s   e   t   L   e   g   a   l   (   v   p
0035220    i   n   ,       1   ,       0   ,       9   1   )       d   o
0035240      376 001  \0   [ 302   r   e   s   u   l   t   i   s       0
0035260   \r   l   e   t       c   g   p       =       v   p   i   n   +
0035300    9   2   *   (   y   /   5   2   0   )  \r   @   p   i   c   c
0035320    l   a   s   s       =       M   u   s   t   F   i   n   d   N
0035340    a   m   e   e   (   "   G   N   D   "   ,       t   y   p   e
0035360    I   c   c   l   a   s   s   )  \r   @   p   P   i   n   N   o
0035400        =       p   a   t   t   e   r   n   G   r   o   u   n   d
0035420    s   +   1   +   c   g   p  \r   r   e   s   u   l   t   i   s
0035440        c   g   p   +   f   i   r   s   t   S   o   c   k   e   t
0035460    G   r   o   u   n   d 032   l   5   5   3   9   \   f   1  \r
0035500    ]  \r  \r   l   e   t       s   i   d   e       =       0  \r
0035520    i   f       x       g   e       r   i   g   h   t   C   o   l
0035540    s   O   f   f   s   e   t       t   h   e   n  \r   [ 032   l
0035560    4   2   6   9   \   f   1  \r   s   i   d   e       =       1
0035600   \r   x       =       x   -   (   r   i   g   h   t   C   o   l
0035620    s   O   f   f   s   e   t   -   l   e   f   t   C   o   l   s
0035640    O   f   f   s   e   t 376 001  \0  \n 274   ) 032   l   5   5
0035660    3   9   \   f   1  \r   ]  \r   l   e   t       x   O   f   f
0035700    s   e   t       =       x   -   l   e   f   t   C   o   l   s
0035720    O   f   f   s   e   t  \r   u   n   l   e   s   s       O   f
0035740    f   s   e   t   L   e   g   a   l   (   x   O   f   f   s   e
0035760    t   ,       4   ,       0   ,       5   7   )       d   o    
0036000    r   e   s   u   l   t   i   s       0  \r   l   e   t       x
0036020    R   e   p   e   a   t       =       r   e   p   e   a   t   C
0036040    o   l   s   P   e   r   S   i   d   e   *   s   i   d   e   +
0036060    (   x   O   f   f   s   e   t   /   f   u   l   l   C   o   l
0036100    W   i   d   t   h   )  \r   x   O   f   f   s   e   t       =
0036120        x   O   f   f   s   e   t       r   e   m       f   u   l
0036140    l   C   o   l   W   i   d   t   h  \r   u   n   l   e   s   s
0036160        O   f   f   s   e   t   L   e   g   a   l   (   x   O   f
0036200    f   s   e   t   ,       4   ,       0   ,       2   7   )    
0036220    d   o       r   e   s   u   l   t   i   s       0  \r   l   e
0036240    t       y   O   f   f   s   e   t       = 376 001  \0 365   g
0036260        y   -   r   o   w   O   f   f   s   e   t  \r   l   e   t
0036300        y   R   e   p   e   a   t       =       y   O   f   f   s
0036320    e   t   /   r   o   w   H   e   i   g   h   t  \r   y   O   f
0036340    f   s   e   t       =       y   O   f   f   s   e   t       r
0036360    e   m       r   o   w   H   e   i   g   h   t  \r   u   n   l
0036400    e   s   s       O   f   f   s   e   t   L   e   g   a   l   (
0036420    y   R   e   p   e   a   t   ,       1   ,       0   ,       1
0036440    1   )   &   O   f   f   s   e   t   L   e   g   a   l   (   y
0036460    O   f   f   s   e   t   ,       6   ,       0   ,       6   )
0036500        d   o  \r       r   e   s   u   l   t   i   s       0  \r
0036520   \r   l   e   t       p   i   n   I   n   G   r   o   u   p    
0036540    =       1  \r   l   e   t       p   r   e   v   G   r   o   u
0036560    p   s       =       r   e   p   e   a   t   R   o   w   s   *
0036600    x   R   e   p   e   a   t   +   y   R   e   p   e   a   t  \r
0036620    l   e   t       p   r   e   v   F   u   l   l   G   r   o   u
0036640    p   s       =       r   e   p   e   a   t   R   o   w   s   *
0036660  376 001  \0   " 320   (   x   R   e   p   e   a   t   -   (   x
0036700    R   e   p   e   a   t   /   r   e   p   e   a   t   C   o   l
0036720    s   P   e   r   S   i   d   e   )   )   +  \r       (   x   R
0036740    e   p   e   a   t       r   e   m       r   e   p   e   a   t
0036760    C   o   l   s   P   e   r   S   i   d   e       n   e       f
0037000    u   l   l   R   e   p   e   a   t   C   o   l   s   P   e   r
0037020    S   i   d   e   ?       y   R   e   p   e   a   t   ,       0
0037040    )  \r  \r   s   w   i   t   c   h   o   n       y   O   f   f
0037060    s   e   t       i   n   t   o  \r   [ 032   l   4   2   6   9
0037100    \   f   1  \r   c   a   s   e       0   : 032   l   5   5   3
0037120    9   \   f   1  \r   s   w   i   t   c   h   o   n       x   O
0037140    f   f   s   e   t       i   n   t   o  \r   [ 032   l   6   8
0037160    0   9   \   f   1  \r   c   a   s   e       8   0   :       p
0037200    i   n   I   n   G   r   o   u   p       =       p   i   n   I
0037220    n   G   r   o   u   p   +   2  \r   c   a   s   e       4   4
0037240    :       p   i   n   I   n   G   r   o   u   p       =       p
0037260    i   n   I   n   G 376 001  \0   I 001   r   o   u   p   +   2
0037300   \r   c   a   s   e       4   : 032   l   8   0   7   9   \   f
0037320    1  \r   @   p   i   c   c   l   a   s   s       =       M   u
0037340    s   t   F   i   n   d   N   a   m   e   e   (   "   V   E   E
0037360    "   ,       t   y   p   e   I   c   c   l   a   s   s   )  \r
0037400    @   p   P   i   n   N   o       =       2   *   p   r   e   v
0037420    G   r   o   u   p   s   +   4   *   p   r   e   v   F   u   l
0037440    l   G   r   o   u   p   s   +  \r       p   i   n   I   n   G
0037460    r   o   u   p  \r   e   n   d   c   a   s   e 032   l   9   3
0037500    4   9   \   f   1  \r  \r   c   a   s   e       7   6   :    
0037520    p   i   n   I   n   G   r   o   u   p       =       p   i   n
0037540    I   n   G   r   o   u   p   +   3  \r   c   a   s   e       4
0037560    0   : 032   l   8   0   7   9   \   f   1  \r   p   i   n   I
0037600    n   G   r   o   u   p       =       p   i   n   I   n   G   r
0037620    o   u   p   +   3  \r   @   p   i   c   c   l   a   s   s    
0037640    =       M   u   s   t   F   i   n   d   N   a   m   e   e   (
0037660    "   G   N   D   "   ,       t   y   p 376 001  \0 023 030   e
0037700    I   c   c   l   a   s   s   )  \r   @   p   P   i   n   N   o
0037720        =       3   *   p   r   e   v   G   r   o   u   p   s   +
0037740    6   *   p   r   e   v   F   u   l   l   G   r   o   u   p   s
0037760    +  \r       p   i   n   I   n   G   r   o   u   p  \r   e   n
0040000    d   c   a   s   e  \r 032   l   9   3   4   9   \   f   1  \r
0040020    d   e   f   a   u   l   t   : 032   l   8   0   7   9   \   f
0040040    1  \r   ]  \r   e   n   d   c   a   s   e 032   l   6   8   0
0040060    9   \   f   1  \r  \r   c   a   s   e       6   :  \r   c   a
0040100    s   e       3   0   : 032   l   5   5   3   9   \   f   1  \r
0040120    i   f       x   O   f   f   s   e   t       l   s       8    
0040140    t   h   e   n       r   e   s   u   l   t   i   s       0  \r
0040160    e   n   d   c   a   s   e 032   l   6   8   0   9   \   f   1
0040200   \r  \r   c   a   s   e       1   2   : 032   l   5   5   3   9
0040220    \   f   1  \r   s   w   i   t   c   h   o   n       x   O   f
0040240    f   s   e   t       i   n   t   o  \r   [ 032   l   6   8   0
0040260    9   \   f   1  \r   c   a   s   e       7   6   :       p 376
0040300  001  \0 031 357   i   n   I   n   G   r   o   u   p       =    
0040320    p   i   n   I   n   G   r   o   u   p   +   2  \r   c   a   s
0040340    e       7   2   :       p   i   n   I   n   G   r   o   u   p
0040360        =       p   i   n   I   n   G   r   o   u   p   +   1  \r
0040400    c   a   s   e       4   0   :       p   i   n   I   n   G   r
0040420    o   u   p       =       p   i   n   I   n   G   r   o   u   p
0040440    +   4  \r   c   a   s   e       0   : 032   l   8   0   7   9
0040460    \   f   1  \r   @   p   i   c   c   l   a   s   s       =    
0040500    M   u   s   t   F   i   n   d   N   a   m   e   e   (   "   G
0040520    N   D   "   ,       t   y   p   e   I   c   c   l   a   s   s
0040540    )  \r   @   p   P   i   n   N   o       =       3   *   p   r
0040560    e   v   G   r   o   u   p   s   +   6   *   p   r   e   v   F
0040600    u   l   l   G   r   o   u   p   s   +  \r       p   i   n   I
0040620    n   G   r   o   u   p  \r   e   n   d   c   a   s   e  \r 032
0040640    l   9   3   4   9   \   f   1  \r   d   e   f   a   u   l   t
0040660    : 032   l   8   0   7   9   \   f   1  \r   ]  \r   e   n   d
0040700    c   a   s   e 376 001  \0   u 311 032   l   6   8   0   9   \
0040720    f   1  \r  \r   c   a   s   e       1   8   : 032   l   5   5
0040740    3   9   \   f   1  \r   s   w   i   t   c   h   o   n       x
0040760    O   f   f   s   e   t       i   n   t   o  \r   [ 032   l   6
0041000    8   0   9   \   f   1  \r   c   a   s   e       4   : 032   l
0041020    8   0   7   9   \   f   1  \r   @   p   i   c   c   l   a   s
0041040    s       =       M   u   s   t   F   i   n   d   N   a   m   e
0041060    e   (   "   V   D   D   "   ,       t   y   p   e   I   c   c
0041100    l   a   s   s   )  \r   @   p   P   i   n   N   o       =    
0041120    p   r   e   v   G   r   o   u   p   s   +   p   i   n   I   n
0041140    G   r   o   u   p  \r   e   n   d   c   a   s   e 032   l   9
0041160    3   4   9   \   f   1  \r  \r   c   a   s   e       1   0   8
0041200    : 032   l   8   0   7   9   \   f   1  \r   p   i   n   I   n
0041220    G   r   o   u   p       =       p   i   n   I   n   G   r   o
0041240    u   p   +   2  \r   @   p   i   c   c   l   a   s   s       =
0041260        M   u   s   t   F   i   n   d   N   a   m   e   e   (   "
0041300    V   T   T   "   ,       t   y   p 376 001  \0  \b 177   e   I
0041320    c   c   l   a   s   s   )  \r   @   p   P   i   n   N   o    
0041340    =       3   *   p   r   e   v   F   u   l   l   G   r   o   u
0041360    p   s   +   p   i   n   I   n   G   r   o   u   p  \r   e   n
0041400    d   c   a   s   e  \r 032   l   9   3   4   9   \   f   1  \r
0041420    d   e   f   a   u   l   t   : 032   l   8   0   7   9   \   f
0041440    1  \r   ]  \r   e   n   d   c   a   s   e 032   l   6   8   0
0041460    9   \   f   1  \r  \r   c   a   s   e       2   4   : 032   l
0041500    5   5   3   9   \   f   1  \r   s   w   i   t   c   h   o   n
0041520        x   O   f   f   s   e   t       i   n   t   o  \r   [ 032
0041540    l   6   8   0   9   \   f   1  \r   c   a   s   e       0   :
0041560  032   l   8   0   7   9   \   f   1  \r   p   i   n   I   n   G
0041600    r   o   u   p       =       p   i   n   I   n   G   r   o   u
0041620    p   +   1  \r   @   p   i   c   c   l   a   s   s       =    
0041640    M   u   s   t   F   i   n   d   N   a   m   e   e   (   "   G
0041660    N   D   "   ,       t   y   p   e   I   c   c   l   a   s   s
0041700    )  \r   @   p   P   i   n   N   o       =       3   * 376 001
0041720   \0 333 023   p   r   e   v   G   r   o   u   p   s   +   6   *
0041740    p   r   e   v   F   u   l   l   G   r   o   u   p   s   +  \r
0041760        p   i   n   I   n   G   r   o   u   p  \r   e   n   d   c
0042000    a   s   e 032   l   9   3   4   9   \   f   1  \r  \r   c   a
0042020    s   e       8   0   :       p   i   n   I   n   G   r   o   u
0042040    p       =       p   i   n   I   n   G   r   o   u   p   +   2
0042060   \r   c   a   s   e       4   4   :       p   i   n   I   n   G
0042100    r   o   u   p       =       p   i   n   I   n   G   r   o   u
0042120    p   +   2  \r   c   a   s   e       4   : 032   l   8   0   7
0042140    9   \   f   1  \r   p   i   n   I   n   G   r   o   u   p    
0042160    =       p   i   n   I   n   G   r   o   u   p   +   1  \r   @
0042200    p   i   c   c   l   a   s   s       =       M   u   s   t   F
0042220    i   n   d   N   a   m   e   e   (   "   V   E   E   "   ,    
0042240    t   y   p   e   I   c   c   l   a   s   s   )  \r   @   p   P
0042260    i   n   N   o       =       2   *   p   r   e   v   G   r   o
0042300    u   p   s   +   4   *   p   r   e   v   F   u   l   l   G   r
0042320    o   u   p 376 001  \0   | 360   s   +  \r       p   i   n   I
0042340    n   G   r   o   u   p  \r   e   n   d   c   a   s   e 032   l
0042360    9   3   4   9   \   f   1  \r  \r   c   a   s   e       7   6
0042400    :       p   i   n   I   n   G   r   o   u   p       =       p
0042420    i   n   I   n   G   r   o   u   p   +   1  \r   c   a   s   e
0042440        4   0   : 032   l   8   0   7   9   \   f   1  \r   @   p
0042460    i   c   c   l   a   s   s       =       M   u   s   t   F   i
0042500    n   d   N   a   m   e   e   (   "   V   T   T   "   ,       t
0042520    y   p   e   I   c   c   l   a   s   s   )  \r   @   p   P   i
0042540    n   N   o       =       3   *   p   r   e   v   F   u   l   l
0042560    G   r   o   u   p   s   +   p   i   n   I   n   G   r   o   u
0042600    p  \r   e   n   d   c   a   s   e  \r 032   l   9   3   4   9
0042620    \   f   1  \r   d   e   f   a   u   l   t   : 032   l   8   0
0042640    7   9   \   f   1  \r   ]  \r   e   n   d   c   a   s   e 032
0042660    l   6   8   0   9   \   f   1  \r  \r   c   a   s   e       3
0042700    6   : 032   l   5   5   3   9   \   f   1  \r   s   w   i   t
0042720    c   h   o   n       x   O   f 376 001  \0 343   O   f   s   e
0042740    t       i   n   t   o  \r   [ 032   l   6   8   0   9   \   f
0042760    1  \r   c   a   s   e       0   : 032   l   8   0   7   9   \
0043000    f   1  \r   @   p   i   c   c   l   a   s   s       =       M
0043020    u   s   t   F   i   n   d   N   a   m   e   e   (   "   V   C
0043040    C   "   ,       t   y   p   e   I   c   c   l   a   s   s   )
0043060   \r   @   p   P   i   n   N   o       =       p   r   e   v   G
0043100    r   o   u   p   s   +   p   i   n   I   n   G   r   o   u   p
0043120   \r   e   n   d   c   a   s   e 032   l   9   3   4   9   \   f
0043140    1  \r  \r   c   a   s   e       1   0   8   :       p   i   n
0043160    I   n   G   r   o   u   p       =       p   i   n   I   n   G
0043200    r   o   u   p   +   6  \r   c   a   s   e       4   : 032   l
0043220    8   0   7   9   \   f   1  \r   p   i   n   I   n   G   r   o
0043240    u   p       =       p   i   n   I   n   G   r   o   u   p   +
0043260    2  \r   @   p   i   c   c   l   a   s   s       =       M   u
0043300    s   t   F   i   n   d   N   a   m   e   e   (   "   G   N   D
0043320    "   ,       t   y   p   e   I   c   c   l   a   s 376 001  \0
0043340   \v   J   s   )  \r   @   p   P   i   n   N   o       =       3
0043360    *   p   r   e   v   G   r   o   u   p   s   +   6   *   p   r
0043400    e   v   F   u   l   l   G   r   o   u   p   s   +  \r       p
0043420    i   n   I   n   G   r   o   u   p  \r   e   n   d   c   a   s
0043440    e  \r 032   l   9   3   4   9   \   f   1  \r   d   e   f   a
0043460    u   l   t   : 032   l   8   0   7   9   \   f   1  \r   ]  \r
0043500    e   n   d   c   a   s   e 032   l   6   8   0   9   \   f   1
0043520   \r  \r   d   e   f   a   u   l   t   :       r   e   s   u   l
0043540    t   i   s       0 032   l   5   5   3   9   \   f   1  \r   ]
0043560   \r  \r   l   e   t       c   o   l   B   a   s   e       =    
0043600    (   x   R   e   p   e   a   t   /   3   )   *   r   e   p   e
0043620    a   t   R   o   w   s   *   (   (   f   u   l   l   R   e   p
0043640    e   a   t   C   o   l   s   /   2   )   *   7   *   2   6   +
0043660   \r       (   r   e   p   e   a   t   C   o   l   s   /   2   )
0043700    *   5   *   2   )   +   (   x   R   e   p   e   a   t       r
0043720    e   m       3   )   *   r   e   p   e   a   t   R   o   w   s
0043740    *   ( 376 001  \0 324 347   7   *   2   6   +   5   *   2   )
0043760   \r   l   e   t       r   o   w   B   a   s   e       =       y
0044000    R   e   p   e   a   t   *   (   (   x   R   e   p   e   a   t
0044020        r   e   m       3       e   q       2   )   ?       5   *
0044040    2   ,       7   *   2   6   +   5   *   2   )  \r  \r   r   e
0044060    s   u   l   t   i   s       f   i   r   s   t   P   a   t   t
0044100    e   r   n   P   i   n   +   c   o   l   B   a   s   e   +   r
0044120    o   w   B   a   s   e   +   (   x   O   f   f   s   e   t   /
0044140    4   )   +  \r       (   x   R   e   p   e   a   t       r   e
0044160    m       3       l   s       2   ?  \r           s   e   l   e
0044200    c   t   o   n       y   O   f   f   s   e   t       i   n   t
0044220    o  \r   [ 032   l   4   2   6   9   \   f   1  \r   c   a   s
0044240    e       0   :       0  \r   c   a   s   e       6   :       2
0044260    8   -   2  \r   c   a   s   e       1   2   :       2   8   +
0044300    2   6  \r   c   a   s   e       1   8   :       2   8   +   2
0044320    6   +   2   8  \r   c   a   s   e       2   4   :       2   8
0044340    +   2   6   +   2   8   + 376  \0 345 244 333   2   8  \r   c
0044360    a   s   e       3   0   :       2   8   +   2   6   +   2   8
0044400    +   2   8   +   2   8   -   2  \r   c   a   s   e       3   6
0044420    :       2   8   +   2   6   +   2   8   +   2   8   +   2   8
0044440    +   2   6 032   l   5   5   3   9   \   f   1  \r   ]   ,  \r
0044460            s   e   l   e   c   t   o   n       y   O   f   f   s
0044500    e   t       i   n   t   o  \r   [ 032   l   4   2   6   9   \
0044520    f   1  \r   c   a   s   e       0   :       0  \r   c   a   s
0044540    e       6   :       2   -   2  \r   c   a   s   e       1   2
0044560    :       2  \r   c   a   s   e       1   8   :       2   +   2
0044600   \r   c   a   s   e       2   4   :       2   +   2   +   2  \r
0044620    c   a   s   e       3   0   :       2   +   2   +   2   +   2
0044640    -   2  \r   c   a   s   e       3   6   :       2   +   2   +
0044660    2   +   2 032   l   5   5   3   9   \   f   1  \r   ]  \r   )
0044700  032   l   4   2   6   9   \   f   1  \r   ]  \r 032   \   f   1
0044720   \r 377  \0  \0   r   o   u   t   e   m   w   l   b   h   o   l
0044740    e   s   .   b   c   p   l  \0 373 223   b 004 351  \0  \0 376
0044760  001  \0  \r   k   /   /   r   o   u   t   e   m   w   l   b   h
0045000    o   l   e   s   .   b   c   p   l  \r  \r   /   /       B   o
0045020    a   r   d   -   s   p   e   c   i   f   i   c       R   o   u
0045040    t   e       e   x   t   r   a   -   h   o   l   e       r   o
0045060    u   t   i   n   e   s       f   o   r       t   h   e       M
0045100    u   l   t   i   -   W   i   r   e       v   e   r   s   i   o
0045120    n       o   f       t   h   e  \r   /   /       D   o   r   a
0045140    d   o       M   a   i   n       L   o   g   i   c       B   o
0045160    a   r   d  \r  \r   /   /       l   a   s   t       m   o   d
0045200    i   f   i   e   d       b   y       E   .       M   c   C   r
0045220    e   i   g   h   t   ,       M   a   y       1   0   ,       1
0045240    9   7   9           9   :   3   3       P   M  \r   /   /    
0045260        t   o       c   o   r   r   e   c   t       V   D   D   /
0045300    V   T   T       b   u   s       b   a   r       w   i   r   i
0045320    n   g       r   e   v   e   r   s   a   l  \r  \r   g   e   t
0045340        "   r   o   u   t   e   .   d   e   f   s   "  \r  \r   e
0045360    x   t   e   r 376 001  \0   6 307   n   a   l       [       P
0045400    i   n   1   o   f   1   6       ]  \r  \r   s   t   a   t   i
0045420    c       [       b   o   a   r   d   I   n   t   e   r   f   a
0045440    c   e   V   e   r   s   i   o   n       =       i   n   t   e
0045460    r   f   a   c   e   V   e   r   s   i   o   n       ]  \r  \r
0045500   \r   l   e   t       C   o   m   p   u   t   e   M   W   C   o
0045520    o   r   d   s   (   p   x   ,       p   y   ,       i   s   M
0045540    i   l   s   )       b   e  \r   [ 032   (   6   3   5   )   \
0045560    f   1  \r   u   n   l   e   s   s       i   s   M   i   l   s
0045600        d   o  \r   [ 032   l   4   2   6   9   \   f   1  \r   @
0045620    p   x       =       2   5   *   @   p   x  \r   @   p   y    
0045640    =       2   5   *   @   p   y 032   l   5   5   3   9   \   f
0045660    1  \r   ]  \r  \r   /   /       T   h   e       b   o   a   r
0045700    d   ,  \r   /   /       v   i   e   w   e   d       i   n    
0045720    s   t   a   n   d   a   r   d       o   r   i   e   n   t   a
0045740    t   i   o   n       w   i   t   h       a   0   1       a   t
0045760        t   o   p       l   e   f   t 376 001  \0 322 275       a
0046000    n   d       l   0   1       a   t       t   o   p  \r   /   /
0046020        r   i   g   h   t   ,       i   s       d   e   s   c   r
0046040    i   b   e   d       w   i   t   h       y       i   n   c   r
0046060    e   a   s   i   n   g       u   p   w   a   r   d       a   n
0046100    d       x       i   n   c   r   e   a   s   i   n   g  \r   /
0046120    /       t   o       t   h   e       r   i   g   h   t       a
0046140    n   d       t   h   e       0   ,   0       o   r   i   g   i
0046160    n       a   t       b   o   t   t   o   m       l   e   f   t
0046200        o   f   f       t   h   e       b   o   a   r   d   .    
0046220   \r  \r   @   p   x       =       1   1   0   0   +   @   p   x
0046240   \t   /   /       o   f   f   s   e   t       t   h   e       x
0046260        c   o   -   o   r   d   i   n   a   t   e       b   y    
0046300    1   .   1       i   n   c   h   e   s  \r   @   p   y       =
0046320        1   4   4   0   0   -   @   p   y  \t   /   /       r   e
0046340    v   e   r   s   e       t   h   e       y       c   o   -   o
0046360    r   d   i   n   a   t   e       a   n   d       o   f 376 001
0046400   \0 231   !   f   s   e   t       1   4   .   4       i   n   c
0046420    h   e   s      \r  \r   /   /       L   o   c   a   t   i   o
0046440    n       a   0   1       p   i   n       1       i   s       n
0046460    o   w       a   t       x   =   2   0   0   0   ,       y   =
0046500    1   4   0   0   0  \r  \r   @   p   x       =       @   p   x
0046520    +   2   5   -   (   (   @   p   x   +   2   5   )       r   e
0046540    m       5   0   )       /   /       r   o   u   n   d       t
0046560    o       n   e   a   r   e   s   t       o   n   -   g   r   i
0046600    d       p   o   i   n   t  \r   @   p   y       =       @   p
0046620    y   +   2   5   -   (   (   @   p   y   +   2   5   )       r
0046640    e   m       5   0   )     032   l   4   2   6   9   \   f   1
0046660   \r   ]  \r  \r   a   n   d       D   e   s   c   r   i   b   e
0046700    H   o   l   e   s   (   P   r   i   n   t   A   H   o   l   e
0046720    )       b   e  \r   [ 032   \   f   1  \r   m   a   n   i   f
0046740    e   s   t       [       p   l   a   t   e   d       =       t
0046760    r   u   e   ;       u   n   p   l   a   t   e   d       =    
0047000    n   o   t 376 001  \0 250 204       p   l   a   t   e   d    
0047020    ]  \r   m   a   n   i   f   e   s   t  \r   [ 032   l   4   2
0047040    6   9   \   f   1  \r   s   o   c   k   e   t   H   o   l   e
0047060    S   i   z   e       =       4   1       /   /       m   i   l
0047100    s   ,       a   f   t   e   r       p   l   a   t   i   n   g
0047120        &       s   o   l   d   e   r       c   o   a   t  \r   s
0047140    c   r   e   w   H   o   l   e   S   i   z   e       =       1
0047160    4   4       /   /       m   i   l   s   ,       u   n   p   l
0047200    a   t   e   d 032   l   5   5   3   9   \   f   1  \r   ]  \r
0047220    m   a   n   i   f   e   s   t       [       l   e   f   t   B
0047240    u   s   B   a   r   C   e   n   t   e   r   x       =       -
0047260    1   4   ;       r   i   g   h   t   B   u   s   B   a   r   C
0047300    e   n   t   e   r   x       =       4   8   8       ]  \r  \r
0047320    l   e   t       x   ,   y       =       n   i   l   ,   n   i
0047340    l  \r  \r   f   o   r       x   =   0       t   o       5   9
0047360    9       d   o       f   o   r       y   =   0       t   o    
0047400    5   9   9       d   o       i 376 001  \0  \f 222   f       F
0047420    i   n   d   I   n   d   e   x   F   r   o   m   C   o   o   r
0047440    d   (   x   ,   y   )       n   e       0       t   h   e   n
0047460   \r   [ 032   l   4   2   6   9   \   f   1  \r   l   e   t    
0047500    c   l   a   s   s   ,   p   i   n       =       e   m   p   t
0047520    y   ,   0  \r   F   i   n   d   I   n   d   e   x   F   r   o
0047540    m   C   o   o   r   d   (   x   ,       y   ,       l   v    
0047560    c   l   a   s   s   ,       l   v       p   i   n   )  \r   P
0047600    r   i   n   t   A   H   o   l   e   (   x   ,       y   ,    
0047620    s   o   c   k   e   t   H   o   l   e   S   i   z   e   ,    
0047640    p   l   a   t   e   d   ,       f   a   l   s   e   ,       c
0047660    l   a   s   s       n   e       e   m   p   t   y   ) 032   l
0047700    5   5   3   9   \   f   1  \r   ]  \r  \r   f   o   r       r
0047720    o   w   =   0       t   o       1   1       d   o  \r       P
0047740    r   i   n   t   A   H   o   l   e   (   r   i   g   h   t   B
0047760    u   s   B   a   r   C   e   n   t   e   r   x   -   1   0   ,
0050000        2   8   +   4   2   *   r   o   w   ,       s 376 001  \0
0050020    ] 237   o   c   k   e   t   H   o   l   e   S   i   z   e   ,
0050040        p   l   a   t   e   d   ,       f   a   l   s   e   ,    
0050060    t   r   u   e   )  \r       /   /       V   D   D       s   t
0050100    r   i   p       f   e   e   d   -   t   h   r   u       h   o
0050120    l   e   s  \r  \r   f   o   r       r   o   w   =   0       t
0050140    o       1   1       d   o  \r       P   r   i   n   t   A   H
0050160    o   l   e   (   l   e   f   t   B   u   s   B   a   r   C   e
0050200    n   t   e   r   x   +   1   0   ,       3   4   +   4   2   *
0050220    r   o   w   ,       s   o   c   k   e   t   H   o   l   e   S
0050240    i   z   e   ,       p   l   a   t   e   d   ,       f   a   l
0050260    s   e   ,       t   r   u   e   )  \r       /   /       V   T
0050300    T       s   t   r   i   p       f   e   e   d   -   t   h   r
0050320    u       h   o   l   e   s  \r  \r   f   o   r       x   =   l
0050340    e   f   t   B   u   s   B   a   r   C   e   n   t   e   r   x
0050360        t   o       r   i   g   h   t   B   u   s   B   a   r   C
0050400    e   n   t   e   r   x       b   y       (   r   i   g   h   t
0050420    B   u 376 001  \0 025 374   s   B   a   r   C   e   n   t   e
0050440    r   x   -   l   e   f   t   B   u   s   B   a   r   C   e   n
0050460    t   e   r   x   )       d   o  \r   [ 032   l   4   2   6   9
0050500    \   f   1  \r   f   o   r       r   o   w   =   0       t   o
0050520        1       d   o       f   o   r       h   o   l   e       =
0050540        0       t   o       1       d   o  \r       P   r   i   n
0050560    t   A   H   o   l   e   (   x   -   2   +   h   o   l   e   *
0050600    4   ,       r   o   w   *   5   2   4   ,       s   o   c   k
0050620    e   t   H   o   l   e   S   i   z   e   ,       p   l   a   t
0050640    e   d   ,       f   a   l   s   e   ,       t   r   u   e   )
0050660   \r       /   /       p   o   w   e   r       b   u   s       f
0050700    e   e   d   -   t   h   r   u       h   o   l   e   s  \r  \r
0050720    f   o   r       r   o   w   =   0       t   o       2       d
0050740    o  \r       P   r   i   n   t   A   H   o   l   e   (   x   ,
0050760        1   6   +   r   o   w   *   2   4   6   ,       s   c   r
0051000    e   w   H   o   l   e   S   i   z   e   ,       u   n   p   l
0051020    a   t   e   d   ,       f 376  \0   D 207 327   a   l   s   e
0051040    ,       t   r   u   e   )  \r       /   /       b   u   s    
0051060    b   a   r       m   o   u   n   t   i   n   g       s   c   r
0051100    e   w   s 032   l   5   5   3   9   \   f   1  \r   ] 032   l
0051120    4   2   6   9   \   f   1  \r   ]  \r  \r 032   \   f   1  \r
0051140  374                                                            
0051141