$ od -c -N 50000 [Indigo]<Chipmonk>XPLAmaker>PLAmaker-sources.dm!2
0000000  377  \0  \0   P   L   A   M   a   k   e   r   I   m   p   l   .
0000020    m   e   s   a  \0 373 234 266 263 020  \0  \0 376 001  \0 334
0000040  300   -   -       P   l   a   M   a   k   e   r   I   m   p   l
0000060    .   m   e   s   a  \r   -   -       a       p   r   o   g   r
0000100    a   m       t   o       r   u   n       w   i   t   h   i   n
0000120        C   h   i   p   m   o   n   k  \r  \r   -   -       w   r
0000140    i   t   t   e   n       b   y       E   .       M   c   C   r
0000160    e   i   g   h   t   ,       A   u   g   u   s   t       7   ,
0000200        1   9   8   1           3   :   5   2       P   M  \r   -
0000220    -       m   o   d   i   f   i   e   d       b   y       C   a
0000240    r   y       K   o   r   n   f   e   l   d   ,       O   c   t
0000260    o   b   e   r       1   ,       1   9   8   1           1   0
0000300    :   1   1       A   M  \r   -   -       m   o   d   i   f   i
0000320    e   d       b   y       E   .       M   c   C   r   e   i   g
0000340    h   t   ,       A   p   r   i   l       2   5   ,       1   9
0000360    8   4       1   0   :   3   6   :   2   8       a   m       P
0000400    S   T  \r  \r   D   I   R   E   C   T   O   R   Y  \r        
0000420    I   O   D   e   f   s   ,  \r           I   n   l   i   n   e
0000440    D 376 001  \0 016   8   e   f   s   ,  \r           p   p   d
0000460    d   e   f   s   ,  \r           p   p   d   e   f   s   ,  \r
0000500            p   p   d   d   d   e   f   s   ,  \r           S   e
0000520    g   m   e   n   t   D   e   f   s   ,  \r           S   t   r
0000540    e   a   m   D   e   f   s   ,  \r           S   t   r   i   n
0000560    g   D   e   f   s   ,  \r           S   y   s   t   e   m   D
0000600    e   f   s   ,  \r           Z   o   n   e   A   l   l   o   c
0000620    D   e   f   s   ;  \r  \r   P   l   a   M   a   k   e   r   I
0000640    m   p   l   :       P   R   O   G   R   A   M  \r           I
0000660    M   P   O   R   T   S  \r                   I   n   l   i   n
0000700    e   D   e   f   s   ,       p   p   d   d   d   e   f   s   ,
0000720        p   p   d   d   e   f   s   ,       p   p   d   e   f   s
0000740    ,       S   e   g   m   e   n   t   D   e   f   s   ,       S
0000760    t   r   e   a   m   D   e   f   s   ,  \r                   I
0001000    O   D   e   f   s   ,       S   t   r   i   n   g   D   e   f
0001020    s   ,       Z   o   n   e   A   l   l   o   c   D   e   f   s
0001040        =  \r           B 376 001  \0   G 275   E   G   I   N    
0001060    O   P   E   N       p   p   d   d   d   e   f   s   ,       p
0001100    p   d   d   e   f   s   ,       p   p   d   e   f   s   ,    
0001120    i   o   :       I   O   D   e   f   s   ;  \r  \r  \r        
0001140    Z   :       U   N   C   O   U   N   T   E   D       Z   O   N
0001160    E       _       Z   o   n   e   A   l   l   o   c   D   e   f
0001200    s   .   G   e   t   A   n   X   M   Z   o   n   e   [   ]   ;
0001220   \r  \r           P   u   n   t   :       S   I   G   N   A   L
0001240        =       C   O   D   E   ;  \r  \r  \r           -   -    
0001260    A   l   l       o   f       t   h   e       p   e   r   i   p
0001300    h   e   r   a   l       c   e   l   l   s       m   u   s   t
0001320        c   o   n   t   a   i   n       a   n       a   d   j   a
0001340    c   e   n   t       p   a   i   r       o   f       b   i   t
0001360    s   ,       a   n   d  \r           -   -       a   l   l    
0001400    o   f       t   h   e       c   e   n   t   e   r       c   e
0001420    l   l   s       m   u   s   t       c   o   n   t   a   i   n
0001440        a       r   e   c   t   a   n   g   u 376 001  \0 260  \n
0001460    l   a   r       q   u   a   d       o   f       b   i   t   s
0001500   \r  \r           C   e   l   l   :       T   Y   P   E       =
0001520        L   O   N   G       P   O   I   N   T   E   R       T   O
0001540        o   b   j   e   c   t       _       N   I   L   ;  \r    
0001560        D   C   e   l   l   :       T   Y   P   E       =       A
0001600    R   R   A   Y       B   O   O   L   E   A   N       -   -   d
0001620    a   t   a       i   n       c   e   l   l   -   -       O   F
0001640        C   e   l   l   ;  \r           D   C   e   l   l   P   r
0001660    :       T   Y   P   E       =       A   R   R   A   Y       B
0001700    O   O   L   E   A   N       -   -       d   a   t   a       i
0001720    n       e   v   e   n       c   e   l   l       -   -       O
0001740    F       D   C   e   l   l   ;  \r  \r           M   A   X   I
0001760    D   L   E   N   G   T   H   :       C   A   R   D   I   N   A
0002000    L       =       1   0   0   ;  \r           S   t   o   p   C
0002020    O   D   E   :       C   H   A   R   A   C   T   E   R       =
0002040        '   *       ;  \r           H   A   S   H   S   I   Z   E
0002060  376 001  \0 227 305   :       C   A   R   D   I   N   A   L    
0002100    =       2   9   ;       -   -   M   a   y       b   e       s
0002120    m   a   l   l       f   o   r       b   i   g       P   L   A
0002140    '   s  \r  \r           n   a   m   e   I   n   d   e   x   :
0002160        T   Y   P   E       =       [   0   .   .   M   A   X   I
0002200    D   L   E   N   G   T   H   )   ;  \r           h   a   s   h
0002220    I   n   d   e   x   :       T   Y   P   E       =       [   0
0002240    .   .   H   A   S   H   S   I   Z   E   )   ;  \r  \r        
0002260    I   O   L   i   n   k   :       T   Y   P   E       =       L
0002300    O   N   G       P   O   I   N   T   E   R       T   O       I
0002320    O   ;  \r           P   T   e   r   m   L   i   n   k   :    
0002340    T   Y   P   E       =       L   O   N   G       P   O   I   N
0002360    T   E   R       T   O       P   r   o   d   u   c   t   T   e
0002400    r   m   ;  \r           I   O   T   e   r   m   L   i   n   k
0002420    :       T   Y   P   E       =       L   O   N   G       P   O
0002440    I   N   T   E   R       T   O       I   O   T   e   r   m   ;
0002460   \r  \r           S 376 001  \0   > 224   t   a   t   e   s   :
0002500        T   Y   P   E       =       {   A   b   s   e   n   t   ,
0002520        A   s   s   e   r   t   ,       I   n   v   e   r   t   }
0002540    ;  \r           T   B   S   t   a   t   e   s   :       T   Y
0002560    P   E       =       {   b   o   t   t   o   m   ,       t   o
0002600    p   }   ;  \r           D   i   r   e   c   t   i   o   n   :
0002620        T   Y   P   E       =       {   v   e   r   t   i   c   a
0002640    l   ,       h   o   r   i   z   o   n   t   a   l   ,       d
0002660    i   a   g   o   n   a   l   ,       u   p   ,       d   o   w
0002700    n   ,       l   e   f   t   ,       r   i   g   h   t   ,  \r
0002720   \t   u   p   A   n   d   L   e   f   t   ,       u   p   A   n
0002740    d   R   i   g   h   t   ,       d   o   w   n   A   n   d   L
0002760    e   f   t   ,       d   o   w   n   A   n   d   R   i   g   h
0003000    t   }   ;  \r  \r           I   O   :       T   Y   P   E    
0003020    =       R   E   C   O   R   D   [  \r  \t   n   e   x   t   :
0003040        I   O   L   i   n   k   ,  \r  \t   T   o   p   B   o   t
0003060    t   o   m   :       T   B   S   t   a 376 001  \0 372 273   t
0003100    e   s   ,  \r  \t   p   o   s   i   t   i   o   n   :       C
0003120    A   R   D   I   N   A   L   ,  \r  \t   n   a   m   e   :    
0003140    S   E   Q   U   E   N   C   E       l   e   n   g   t   h   :
0003160        C   A   R   D   I   N   A   L       O   F       C   H   A
0003200    R   A   C   T   E   R   ]   ;  \r  \r           P   r   o   d
0003220    u   c   t   T   e   r   m   :       T   Y   P   E       =    
0003240    R   E   C   O   R   D   [  \r  \t   n   e   x   t   :       P
0003260    T   e   r   m   L   i   n   k   ,  \r  \t   o   u   t   p   u
0003300    t   :       I   O   T   e   r   m   L   i   n   k   ,  \r  \t
0003320    i   n   p   u   t   :       I   O   T   e   r   m   L   i   n
0003340    k   ]   ;  \r  \r           I   O   T   e   r   m   :       T
0003360    Y   P   E       =       R   E   C   O   R   D   [  \r  \t   t
0003400    e   r   m   :       S   E   Q   U   E   N   C   E       t   c
0003420    o   u   n   t   :       C   A   R   D   I   N   A   L       O
0003440    F       S   t   a   t   e   s   ]   ;  \r  \r           I   O
0003460    L   I   S   T   :       T   Y   P   E       =       R   E 376
0003500  001  \0 233   G   C   O   R   D   [   n   o   d   e   :       S
0003520    E   Q   U   E   N   C   E       I   O   c   o   u   n   t   :
0003540        C   A   R   D   I   N   A   L       O   F       I   O   L
0003560    i   n   k   ]   ;  \r  \r           H   a   s   h   T   a   b
0003600    l   e   :       T   Y   P   E       =       A   R   R   A   Y
0003620        h   a   s   h   I   n   d   e   x       O   F       I   O
0003640    L   i   n   k   ;  \r           h   a   s   h   P   T   e   r
0003660    m   :       A   R   R   A   Y       h   a   s   h   I   n   d
0003700    e   x       O   F       P   T   e   r   m   L   i   n   k   ;
0003720   \r  \r           i   n   p   u   t   s   ,       o   u   t   p
0003740    u   t   s   :       H   a   s   h   T   a   b   l   e   ;  \r
0003760            i   n   C   o   u   n   t   ,       o   u   t   C   o
0004000    u   n   t   :       C   A   R   D   I   N   A   L   ;  \r    
0004020        i   n   p   u   t   L   i   s   t   ,       o   u   t   p
0004040    u   t   L   i   s   t   :       L   O   N   G       P   O   I
0004060    N   T   E   R       T   O       I   O   L   I   S   T   ;  \r
0004100            S   c 376 001  \0   2 242   o   u   n   t   :       I
0004120    N   T   E   G   E   R       _       0   ;  \r           P   T
0004140    e   r   m   C   o   u   n   t   ,       b   o   i   s   t   C
0004160    o   u   n   t   ,       m   i   n   B   o   i   s   t   S   p
0004200    a   c   e   :       C   A   R   D   I   N   A   L   ;  \r  \r
0004220   \r           -   -   i   n   :       S   t   r   e   a   m   D
0004240    e   f   s   .   S   t   r   e   a   m   H   a   n   d   l   e
0004260    ;  \r           l   i   n   e   :       S   T   R   I   N   G
0004300        _       [   M   A   X   I   D   L   E   N   G   T   H   ]
0004320    ;  \r           l   i   n   e   I   n   :       S   T   R   I
0004340    N   G       _       [   M   A   X   I   D   L   E   N   G   T
0004360    H   ]   ;  \r           e   o   l   :       B   O   O   L   E
0004400    A   N   ;  \r  \r           P   L   A   D   e   c   o   d   e
0004420    r   ,       P   L   A   D   a   t   a   :       D   C   e   l
0004440    l   P   r   ;  \r           P   L   A   D   e   c   o   d   e
0004460    r   D   a   t   a   ,       P   L   A   D   e   c   o   d   e
0004500    r   D   a   t   a   T   o   p   , 376 001  \0  \n   1       P
0004520    L   A   D   e   c   o   d   e   r   D   a   t   a   B   o   t
0004540    t   o   m   ,  \r                   P   L   A   D   e   c   o
0004560    d   e   r   T   o   p   L   e   f   t   C   o   r   n   e   r
0004600    ,       P   L   A   D   e   c   o   d   e   r   B   o   t   t
0004620    o   m   L   e   f   t   C   o   r   n   e   r   ,  \r        
0004640            P   L   A   D   e   c   o   d   e   r   L   e   f   t
0004660    G   n   d   ,       P   L   A   D   e   c   o   d   e   r   G
0004700    n   d   ,       P   L   A   D   e   c   o   d   e   r   D   a
0004720    t   a   G   n   d   ,  \r                   P   L   A   D   a
0004740    t   a   H   G   n   d   ,       P   L   A   D   a   t   a   V
0004760    G   n   d   ,       P   L   A   D   a   t   a   G   n   d   ,
0005000        P   L   A   D   a   t   a   T   o   p   G   n   d   ,  \r
0005020                    P   L   A   D   a   t   a   B   o   t   t   o
0005040    m   G   n   d   ,       P   L   A   D   a   t   a   R   i   g
0005060    h   t   G   n   d   ,  \r                   P   L   A   D   a
0005100    t   a   T   o   p   R   i   g   h   t   C   o   r   n 376 001
0005120   \0   ^   r   e   r   ,       P   L   A   D   a   t   a   R   i
0005140    g   h   t   ,       P   L   A   D   a   t   a   B   o   t   t
0005160    o   m   R   i   g   h   t   C   o   r   n   e   r   :       C
0005200    e   l   l   ;  \r           P   L   A   D   e   c   o   d   e
0005220    r   L   e   f   t   ,       P   L   A   D   a   t   a   T   o
0005240    p   ,       P   L   A   D   a   t   a   B   o   t   t   o   m
0005260    ,       P   L   A   D   e   c   o   d   e   r   T   o   p   ,
0005300       \r                   P   L   A   D   e   c   o   d   e   r
0005320    B   o   t   t   o   m   ,       P   L   A   O   u   t   M   u
0005340    x   :       D   C   e   l   l   ;  \r           -   -       c
0005360    o   l   u   m   n   :       F   A   L   S   E       =   >    
0005400    e   v   e   n       c   o   l   u   m   n   ,       T   R   U
0005420    E       =   >       o   d   d       c   o   l   u   m   n  \r
0005440            d   e   c   o   d   e   C   e   l   l   ,       d   a
0005460    t   a   C   e   l   l   :       C   e   l   l   ;           -
0005500    -       s   a   m   p   l   e   s       f   o   r       m   e
0005520    a   s   u 376 001  \0   o 222   r   e   m   e   n   t   s  \r
0005540   \r  \r           R   d   I   D   :       P   R   O   C   E   D
0005560    U   R   E       [   i   d   :       S   T   R   I   N   G   ]
0005600        =  \r                   B   E   G   I   N  \r            
0005620        i   n   C   o   m   m   e   n   t   :       B   O   O   L
0005640    E   A   N       _       F   A   L   S   E   ;  \r            
0005660        i   :       n   a   m   e   I   n   d   e   x       _    
0005700    0   ;  \r                   p   r   e   v   C   h   a   r   :
0005720        C   H   A   R   A   C   T   E   R       _       '       ;
0005740   \r                   c   h   a   r   :       C   H   A   R   A
0005760    C   T   E   R       _       i   o   .   R   e   a   d   C   h
0006000    a   r   [   ]   ;  \r                   W   H   I   L   E    
0006020    c   h   a   r       =       i   o   .   S   P       O   R    
0006040    c   h   a   r       =       i   o   .   T   A   B       O   R
0006060        c   h   a   r       =       i   o   .   C   R       O   R
0006100        c   h   a   r       =       i   o   .   L   F       D   O
0006120   \r                           c 376 001  \0   1 375   h   a   r
0006140        _       i   o   .   R   e   a   d   C   h   a   r   [   ]
0006160    ;  \r                           E   N   D   L   O   O   P   ;
0006200   \r                   W   H   I   L   E       c   h   a   r    
0006220    #       i   o   .   C   R       D   O  \r                    
0006240        S   E   L   E   C   T       T   R   U   E       F   R   O
0006260    M  \r                                       i   n   C   o   m
0006300    m   e   n   t       A   N   D       c   h   a   r       =    
0006320    '   -       A   N   D       p   r   e   v   C   h   a   r    
0006340    =       '   -       =   >  \r                                
0006360                {   c   h   a   r       _       '       ;       i
0006400    n   C   o   m   m   e   n   t       _       F   A   L   S   E
0006420    }   ;  \r                                       i   n   C   o
0006440    m   m   e   n   t       =   >       N   U   L   L   ;  \r    
0006460                                    c   h   a   r       =       i
0006500    o   .   S   P       O   R       c   h   a   r       =       i
0006520    o   .   L   F       O   R       c   h   a   r     376 001  \0
0006540  273 372   =       i   o   .   T   A   B       =   >       E   X
0006560    I   T   ;  \r                                       c   h   a
0006600    r       =       '   -       A   N   D       p   r   e   v   C
0006620    h   a   r       =       '   -       =   >  \r                
0006640                                {   c   h   a   r       _       '
0006660        ;       i   n   C   o   m   m   e   n   t       _       T
0006700    R   U   E   ;       i       _       i   -   1   }   ;  \r    
0006720                                    E   N   D   C   A   S   E    
0006740    =   >       {   i   d   [   i   ]       _       c   h   a   r
0006760    ;       i       _       i       +       1   }   ;  \r        
0007000                    p   r   e   v   C   h   a   r       _       c
0007020    h   a   r   ;  \r                           c   h   a   r    
0007040    _       i   o   .   R   e   a   d   C   h   a   r   [   ]   ;
0007060   \r                           E   N   D   L   O   O   P   ;  \r
0007100                    i   d   ^   .   l   e   n   g   t   h       _
0007120        i   ;  \r                   e   o   l       _       (   c
0007140    h   a 376 001  \0   J   :   r       =       i   o   .   C   R
0007160        O   R       c   h   a   r       =       i   o   .   L   F
0007200    )   ;  \r                   E   N   D   ;  \r  \r           R
0007220    e   a   d   I   O   :       P   R   O   C   E   D   U   R   E
0007240        [   S   t   o   p   C   o   d   e   :       C   H   A   R
0007260    A   C   T   E   R   ]       R   E   T   U   R   N   S       [
0007300    c   o   u   n   t   :       C   A   R   D   I   N   A   L    
0007320    _       0   ,  \r  \t  \t  \t  \t  \t  \t               h   a
0007340    s   h   T   a   b   l   e   :       H   a   s   h   T   a   b
0007360    l   e   ]       =  \r                   B   E   G   I   N  \r
0007400                    T   e   r   m   :       I   O   L   i   n   k
0007420    ;  \r                   i   d   :       S   T   R   I   N   G
0007440        _       [   M   A   X   I   D   L   E   N   G   T   H   ]
0007460    ;  \r                   i   d   2   :       S   T   R   I   N
0007500    G       _       [   M   A   X   I   D   L   E   N   G   T   H
0007520    ]   ;  \r                   T   B   :       T   B   S   t   a
0007540    t   e   s   ;  \r         376 001  \0   9 364           k   ,
0007560        i   ,       h   a   s   h   :       C   A   R   D   I   N
0007600    A   L   ;  \r  \r                   F   O   R       i       I
0007620    N       h   a   s   h   I   n   d   e   x       D   O       h
0007640    a   s   h   T   a   b   l   e   [   i   ]       _       N   I
0007660    L       E   N   D   L   O   O   P   ;  \r  \r                
0007700    D   O  \r  \r                   -   -       g   e   t       t
0007720    h   e       n   a   m   e       o   f       t   h   e       I
0007740    O       t   e   r   m       a   n   d       i   t   s       p
0007760    o   s   i   t   i   o   n  \r                   R   d   I   D
0010000    [   i   d   ]   ;  \r                   I   F       i   d   [
0010020    0   ]       =       S   t   o   p   C   o   d   e       T   H
0010040    E   N       E   X   I   T   ;  \r                   h   a   s
0010060    h       _       h   a   s   h   C   o   d   e   [   i   d   ]
0010100    ;  \r                   R   d   I   D   [   i   d   2   ]   ;
0010120   \r                   I   F       i   d   2   [   0   ]       =
0010140        '   t       O   R       i   d   2   [   0 376 001  \0 265
0010160   \v   ]       =       '   T      \r  \t   T   H   E   N       T
0010200    B       _       t   o   p  \r                  \t   E   L   S
0010220    E       T   B       _       b   o   t   t   o   m   ;  \r  \r
0010240   \r                   -   -       c   r   e   a   t   e       a
0010260    n       I   O       n   o   d   e  \r                   T   e
0010300    r   m       _       Z   .   N   E   W   [   I   O   [   i   d
0010320    .   l   e   n   g   t   h   ]   ]   ;  \r                   S
0010340    c   o   u   n   t       _       S   c   o   u   n   t       +
0010360        1   ;  \r                   B   E   G   I   N       O   P
0010400    E   N       T   e   r   m   ;  \r  \t   T   o   p   B   o   t
0010420    t   o   m       _       T   B   ;  \r  \t   p   o   s   i   t
0010440    i   o   n       _       c   o   u   n   t   ;  \r  \t   c   o
0010460    u   n   t       _       c   o   u   n   t       +       1   ;
0010500   \r  \t   F   O   R       k       I   N       [   0   .   .   i
0010520    d   .   l   e   n   g   t   h   )       D   O  \r  \t        
0010540    n   a   m   e   [   k   ]       _       i   d   [   k   ]   ;
0010560   \r 376 001  \0   I 232  \t   E   N   D   L   O   O   P   ;  \r
0010600   \t   n   e   x   t       _       h   a   s   h   T   a   b   l
0010620    e   [   h   a   s   h   ]   ;  \r  \t   h   a   s   h   T   a
0010640    b   l   e   [   h   a   s   h   ]       _       T   e   r   m
0010660    ;  \r                   E   N   D   ;  \r  \r                
0010700    E   N   D   L   O   O   P   ;  \r  \r                   R   E
0010720    T   U   R   N   [   c   o   u   n   t   ,       h   a   s   h
0010740    T   a   b   l   e   ]   ;  \r  \r           E   N   D   ;  \r
0010760   \r  \r           R   e   a   d   P   T   e   r   m   s   :    
0011000    P   R   O   C   E   D   U   R   E       [   ]           =  \r
0011020                    B   E   G   I   N  \r                   P   T
0011040    e   r   m   ,       P   T   :       P   T   e   r   m   L   i
0011060    n   k       _       N   I   L   ;  \r                   i   d
0011100    :       S   T   R   I   N   G       _       [   M   A   X   I
0011120    D   L   E   N   G   T   H   ]   ;  \r                   a   l
0011140    l   o   c   :       B   O   O   L   E   A   N       _       T
0011160    R   U   E   ;  \r     376 001  \0 241 366               d   o
0011200    n   e   ,       f   o   u   n   d   :       B   O   O   L   E
0011220    A   N       _       F   A   L   S   E   ;  \r                
0011240    k   ,       o   u   t   I   D   ,       h   a   s   h   :    
0011260    C   A   R   D   I   N   A   L       _       0   ;  \r  \r    
0011300                P   T   e   r   m   C   o   u   n   t       _    
0011320    0   ;  \r  \r                   D   O  \r  \r  \t   -   -    
0011340    a   l   l   o   c   a   t   e       a       n   e   w       P
0011360    r   o   d   u   c   t       T   e   r   m       N   o   d   e
0011400   \r  \t   I   F       a   l   l   o   c       T   H   E   N    
0011420    B   E   G   I   N  \r  \t               a   l   l   o   c    
0011440    _       F   A   L   S   E   ;  \r  \t               P   T   e
0011460    r   m       _       Z   .   N   E   W   [   P   r   o   d   u
0011500    c   t   T   e   r   m   ]   ;  \r  \t               P   T   e
0011520    r   m   .   i   n   p   u   t       _       Z   .   N   E   W
0011540    [   I   O   T   e   r   m   [   i   n   C   o   u   n   t   ]
0011560    ]   ;  \r  \t               P   T   e   r 376 001  \0 313 226
0011600    m   .   o   u   t   p   u   t       _       Z   .   N   E   W
0011620    [   I   O   T   e   r   m   [   o   u   t   C   o   u   n   t
0011640    ]   ]   ;  \r  \t               S   c   o   u   n   t       _
0011660        S   c   o   u   n   t       +       3   ;  \r  \t        
0011700        P   T   e   r   m   C   o   u   n   t       _       P   T
0011720    e   r   m   C   o   u   n   t       +       1   ;  \r  \t    
0011740        E   N   D   ;  \r  \t   F   O   R       k       I   N    
0011760    [   0   .   .   i   n   C   o   u   n   t   )       D   O  \r
0012000   \t                   P   T   e   r   m   .   i   n   p   u   t
0012020    .   t   e   r   m   [   k   ]       _       A   b   s   e   n
0012040    t   ;  \r  \t           E   N   D   L   O   O   P   ;  \r  \t
0012060    F   O   R       k       I   N       [   0   .   .   o   u   t
0012100    C   o   u   n   t   )       D   O  \r  \t                   P
0012120    T   e   r   m   .   o   u   t   p   u   t   .   t   e   r   m
0012140    [   k   ]       _       A   b   s   e   n   t   ;  \r  \t    
0012160        E   N   D   L   O   O   P   ;  \r  \r  \t   -   -       g
0012200  376 001  \0 224   <   e   t       t   h   e       o   u   t   p
0012220    u   t       t   e   r   m  \r  \t   R   d   I   D   [   i   d
0012240    ]   ;  \r  \t   I   F       i   d   [   0   ]       =       '
0012260    *       T   H   E   N       E   X   I   T   ;  \r  \t   o   u
0012300    t   I   D       _       l   o   o   k   U   p   [   i   d   ,
0012320        o   u   t   p   u   t   s   ]   ;  \r  \t   P   T   e   r
0012340    m   .   o   u   t   p   u   t   .   t   e   r   m   [   o   u
0012360    t   I   D   ]       _       A   s   s   e   r   t   ;  \r  \r
0012400   \t   -   -       d   i   s   c   a   r   d       t   h   e    
0012420    s   y   n   t   a   c   t   i   c       s   e   p   a   r   a
0012440    t   o   r       '   =   '  \r  \t   R   d   I   D   [   i   d
0012460    ]   ;  \r  \r  \t   -   -       g   e   t       t   h   e    
0012500    i   n   p   u   t       t   e   r   m   s  \r  \t   h   a   s
0012520    h       _       0   ;  \r  \t   d   o   n   e       _       F
0012540    A   L   S   E   ;  \r  \t   W   H   I   L   E       N   O   T
0012560        d   o   n   e       D   O  \r  \t           R   d   I   D
0012600    [   i   d   ]   ; 376 001  \0 332 225  \r  \t           k    
0012620    _       l   o   o   k   U   p   [   i   d   ,       i   n   p
0012640    u   t   s   ]   ;  \r  \t           h   a   s   h       _    
0012660    h   a   s   h       +       k   ;  \r  \t           I   F    
0012700    i   d   [   0   ]       =       '   -  \r  \t                
0012720    T   H   E   N       P   T   e   r   m   .   i   n   p   u   t
0012740    .   t   e   r   m   [   k   ]       _       I   n   v   e   r
0012760    t  \r  \t                   E   L   S   E       P   T   e   r
0013000    m   .   i   n   p   u   t   .   t   e   r   m   [   k   ]    
0013020    _       A   s   s   e   r   t   ;  \r  \r  \t           -   -
0013040        d   i   s   c   a   r   d       s   y   n   t   a   c   t
0013060    i   c       s   e   p   a   r   a   t   o   r  \r  \t        
0013100    R   d   I   D   [   i   d   ]   ;  \r  \t           d   o   n
0013120    e       _       i   d   [   0   ]       =       '   ;       ;
0013140   \r  \t   E   N   D   L   O   O   P   ;  \r  \r  \t   -   -    
0013160    i   n   s   e   r   t       t   h   e       P   r   o   d   u
0013200    c   t       T   e   r   m       i   n 376 001  \0   z 310   t
0013220    o       t   h   e       P   T   e   r   m       m   a   t   r
0013240    i   x  \r  \t   I   F       h   a   s   h       >   =       H
0013260    A   S   H   S   I   Z   E       T   H   E   N       h   a   s
0013300    h       _       h   a   s   h       M   O   D       H   A   S
0013320    H   S   I   Z   E   ;  \r  \t   P   T       _       h   a   s
0013340    h   P   T   e   r   m   [   h   a   s   h   ]   ;  \r  \t   f
0013360    o   u   n   d       _       F   A   L   S   E   ;  \r  \t   D
0013400    O  \r  \t           I   F       P   T   =   N   I   L      \r
0013420   \t                       T   H   E   N       E   X   I   T    
0013440   \r  \t                       E   L   S   E       f   o   u   n
0013460    d       _       T   R   U   E   ;  \r  \t           F   O   R
0013500        k       I   N       [   0   .   .   i   n   C   o   u   n
0013520    t   )       U   N   T   I   L       N   O   T       f   o   u
0013540    n   d       D   O  \r  \t                   f   o   u   n   d
0013560        _       P   T   .   i   n   p   u   t   .   t   e   r   m
0013600    [   k   ]       =       P   T   e   r   m   .   i   n   p 376
0013620  001  \0 316 327   u   t   .   t   e   r   m   [   k   ]   ;  \r
0013640   \t               E   N   D   L   O   O   P   ;  \r  \t        
0013660    I   F       f   o   u   n   d      \r  \t                    
0013700    T   H   E   N       E   X   I   T  \r  \t                    
0013720    E   L   S   E       P   T       _       P   T   .   n   e   x
0013740    t   ;  \r  \t           E   N   D   L   O   O   P   ;  \r  \r
0013760   \t   I   F       f   o   u   n   d       T   H   E   N       P
0014000    T   .   o   u   t   p   u   t   .   t   e   r   m   [   o   u
0014020    t   I   D   ]       _       A   s   s   e   r   t  \r  \t    
0014040                E   L   S   E       B   E   G   I   N  \r  \t  \t
0014060    P   T   e   r   m   .   n   e   x   t       _       h   a   s
0014100    h   P   T   e   r   m   [   h   a   s   h   ]   ;  \r  \t  \t
0014120    h   a   s   h   P   T   e   r   m   [   h   a   s   h   ]    
0014140    _       P   T   e   r   m   ;  \r  \t  \t   a   l   l   o   c
0014160        _       T   R   U   E   ;  \r  \t                       E
0014200    N   D   ;  \r  \r                   E   N   D   L   O   O   P
0014220    ;  \r  \r     376 001  \0 260 027               -   -       r
0014240    e   l   e   a   s   e       u   n   u   s   e   d       P   T
0014260    e   r   m       n   o   d   e       s   p   a   c   e  \r    
0014300                I   F       N   O   T       a   l   l   o   c    
0014320   \r  \t   T   H   E   N       B   E   G   I   N  \r  \t        
0014340        Z   .   F   R   E   E   [   @   P   T   e   r   m   .   i
0014360    n   p   u   t   ]   ;  \r  \t               Z   .   F   R   E
0014400    E   [   @   P   T   e   r   m   .   o   u   t   p   u   t   ]
0014420    ;  \r  \t               Z   .   F   R   E   E   [   @   P   T
0014440    e   r   m   ]   ;  \r  \t               S   c   o   u   n   t
0014460        _       S   c   o   u   n   t       -       3   ;  \r  \t
0014500                P   T   e   r   m   C   o   u   n   t       _    
0014520    P   T   e   r   m   C   o   u   n   t       -       1   ;  \r
0014540   \t           E   N   D   ;  \r  \r           E   N   D   ;  \r
0014560   \r  \r           F   r   e   e   B   l   o   c   k   s   :    
0014600    P   R   O   C   E   D   U   R   E   [   ]       =  \r        
0014620            B   E   G   I   N  \r     376 001  \0   O 262        
0014640        I   O   P   t   r   ,       I   O   T   e   m   p   :    
0014660    I   O   L   i   n   k   ;  \r                   p   ,       p
0014700    T   e   m   p   :       P   T   e   r   m   L   i   n   k   ;
0014720   \r                   i   :       h   a   s   h   I   n   d   e
0014740    x   ;  \r  \r                   -   -       r   e   l   e   a
0014760    s   e       s   p   a   c   e       f   o   r       i   n   p
0015000    u   t       a   n   d       o   u   t   p   u   t       n   o
0015020    d   e       l   i   s   t   s  \r                   Z   .   F
0015040    R   E   E   [   @   i   n   p   u   t   L   i   s   t   ]   ;
0015060   \r                   Z   .   F   R   E   E   [   @   o   u   t
0015100    p   u   t   L   i   s   t   ]   ;  \r                   S   c
0015120    o   u   n   t       _       S   c   o   u   n   t       -    
0015140    2   ;  \r  \r                   -   -       r   e   l   e   a
0015160    s   e       n   o   d   e       s   p   a   c   e       f   o
0015200    r       i   n   p   u   t       t   e   r   m   s  \r        
0015220            F   O   R       i       I   N       h   a   s 376 001
0015240   \0  \f 233   h   I   n   d   e   x       D   O      \r        
0015260                    F   O   R       I   O   P   t   r   _   i   n
0015300    p   u   t   s   [   i   ]   ,       I   O   T   e   m   p    
0015320    U   N   T   I   L       I   O   P   t   r   =   N   I   L    
0015340    D   O  \r  \t   I   O   T   e   m   p       _       I   O   P
0015360    t   r   .   n   e   x   t   ;  \r  \t   Z   .   F   R   E   E
0015400    [   @   I   O   P   t   r   ]   ;  \r  \t   S   c   o   u   n
0015420    t       _       S   c   o   u   n   t       -       1   ;  \r
0015440                            E   N   D   L   O   O   P   ;  \r    
0015460                E   N   D   L   O   O   P   ;  \r  \r            
0015500        -   -       r   e   l   e   a   s   e       n   o   d   e
0015520        s   p   a   c   e       f   o   r       o   u   t   p   u
0015540    t       t   e   r   m   s  \r                   F   O   R    
0015560    i       I   N       h   a   s   h   I   n   d   e   x       D
0015600    O      \r                           F   O   R       I   O   P
0015620    t   r   _   o   u   t   p   u   t   s   [   i   ]   ,       I
0015640    O   T   e 376 001  \0 355 226   m   p       U   N   T   I   L
0015660        I   O   P   t   r   =   N   I   L       D   O  \r  \t   I
0015700    O   T   e   m   p       _       I   O   P   t   r   .   n   e
0015720    x   t   ;  \r  \t   Z   .   F   R   E   E   [   @   I   O   P
0015740    t   r   ]   ;  \r  \t   S   c   o   u   n   t       _       S
0015760    c   o   u   n   t       -       1   ;  \r                    
0016000        E   N   D   L   O   O   P   ;  \r                   E   N
0016020    D   L   O   O   P   ;  \r  \r                   -   -       r
0016040    e   l   e   a   s   e       n   o   d   e       s   p   a   c
0016060    e       f   o   r       p   r   o   d   u   c   t       t   e
0016100    r   m   s  \r                   F   O   R       i       I   N
0016120        h   a   s   h   I   n   d   e   x       D   O      \r    
0016140                        F   O   R       p       _       h   a   s
0016160    h   P   T   e   r   m   [   i   ]   ,       p   T   e   m   p
0016200        U   N   T   I   L       p   =   N   I   L       D   O  \r
0016220   \t   p   T   e   m   p       _       p   .   n   e   x   t   ;
0016240   \r  \t   Z   .   F   R   E   E 376 001  \0   | 377   [   @   p
0016260    .   o   u   t   p   u   t   ]   ;  \r  \t   Z   .   F   R   E
0016300    E   [   @   p   .   i   n   p   u   t   ]   ;  \r  \t   Z   .
0016320    F   R   E   E   [   @   p   ]   ;  \r  \t   S   c   o   u   n
0016340    t       _       S   c   o   u   n   t       -       3   ;  \r
0016360                            E   N   D   L   O   O   P   ;  \r    
0016400                E   N   D   L   O   O   P   ;  \r  \r           E
0016420    N   D   ;  \r  \r           h   a   s   h   C   o   d   e   :
0016440        P   R   O   C   E   D   U   R   E       [   n   a   m   e
0016460    :       S   T   R   I   N   G   ]       R   E   T   U   R   N
0016500    S       [   h   a   s   h   I   n   d   e   x   ]       =  \r
0016520                    B   E   G   I   N  \r                   j   :
0016540        n   a   m   e   I   n   d   e   x   ;  \r                
0016560    i   :       I   N   T   E   G   E   R   ;  \r                
0016600    S   t   a   r   t   :       C   A   R   D   I   N   A   L   ;
0016620   \r  \r                   S   t   a   r   t       _       i    
0016640    _       0   ;  \r                   I   F       n 376 001  \0
0016660    ) 207   a   m   e   [   0   ]       =       '   -       T   H
0016700    E   N       S   t   a   r   t       _       1   ;  \r        
0016720            F   O   R       j       I   N       [   S   t   a   r
0016740    t   .   .   n   a   m   e   ^   .   l   e   n   g   t   h   )
0016760        D   O  \r                           i       _       i   *
0017000    1   0       +       (   n   a   m   e   [   j   ]       -    
0017020    '   0   )   ;  \r                           I   F       n   a
0017040    m   e   [   j   ]       >   =       '   a       T   H   E   N
0017060        i       _       i       -       3   2   ;       -   -   h
0017100    a   s   h       o   n       u   p   p   e   r       c   a   s
0017120    e       o   n   l   y  \r                           E   N   D
0017140    L   O   O   P   ;  \r                   i       _       i    
0017160    M   O   D       H   A   S   H   S   I   Z   E   ;  \r        
0017200            R   E   T   U   R   N   [   I   F       i       <    
0017220    0       T   H   E   N       i       +       H   A   S   H   S
0017240    I   Z   E       E   L   S   E       i   ]   ;  \r            
0017260        E 376 001  \0   W 221   N   D   ;  \r  \r           s   t
0017300    r   c   m   p   :       P   R   O   C   E   D   U   R   E    
0017320    [   s   :       S   T   R   I   N   G   ,       n   :       I
0017340    O   L   i   n   k   ]       R   E   T   U   R   N   S       [
0017360    B   O   O   L   E   A   N   ]       =  \r                   B
0017400    E   G   I   N  \r                   i   :       I   N   T   E
0017420    G   E   R   ;  \r                   O   f   f   ,       j   :
0017440        n   a   m   e   I   n   d   e   x   ;  \r  \r            
0017460        O   f   f       _       0   ;  \r                   I   F
0017500        s   [   0   ]       =       '   -       T   H   E   N    
0017520    O   f   f       _       1   ;  \r                   F   O   R
0017540        j       _       0   ,       j       +       1       U   N
0017560    T   I   L       j       =       s   .   l   e   n   g   t   h
0017600    -   O   f   f       D   O  \r                           i    
0017620    _       n   .   n   a   m   e   [   j   ]       -       s   [
0017640    j   +   O   f   f   ]   ;       -   -   c   h   e   c   k    
0017660    f   o   r       e   q   u 376 001  \0 036 005   a   l   i   t
0017700    y       r   e   g   a   r   d   l   e   s   s       o   f    
0017720    c   a   s   e  \r                           I   F       i    
0017740    =       0       T   H   E   N       L   O   O   P   ;  \r    
0017760                        I   F       i       =       3   2       A
0020000    N   D       s   [   j   ]       >   =       '   A       T   H
0020020    E   N       L   O   O   P   ;  \r                           I
0020040    F       i       =       -   3   2       A   N   D       s   [
0020060    j   ]       >   =       '   a       T   H   E   N       L   O
0020100    O   P   ;  \r                           R   E   T   U   R   N
0020120    [   F   A   L   S   E   ]   ;  \r                           R
0020140    E   P   E   A   T       F   I   N   I   S   H   E   D       =
0020160    >       R   E   T   U   R   N   [   T   R   U   E   ]  \r    
0020200                        E   N   D   L   O   O   P   ;  \r        
0020220            E   N   D   ;  \r  \r           l   o   o   k   U   p
0020240    :       P   R   O   C   E   D   U   R   E       [   s   :    
0020260    S   T   R   I   N   G   ,       h   a   s   h 376 001  \0 242
0020300    ?   T   a   b   l   e   :       H   a   s   h   T   a   b   l
0020320    e   ]       R   E   T   U   R   N   S       [   C   A   R   D
0020340    I   N   A   L   ]       =  \r                   B   E   G   I
0020360    N  \r                   n   :       I   O   L   i   n   k   ;
0020400   \r                   h   :       h   a   s   h   I   n   d   e
0020420    x   ;  \r  \r                   h       _       h   a   s   h
0020440    C   o   d   e   [   s   ]   ;  \r                   F   O   R
0020460        n       _       h   a   s   h   T   a   b   l   e   [   h
0020500    ]   ,       n   ^   .   n   e   x   t       U   N   T   I   L
0020520        n       =       N   I   L       D   O  \r                
0020540            I   F       s   t   r   c   m   p   [   s   ,       n
0020560    ]       T   H   E   N       R   E   T   U   R   N   [   n   .
0020600    p   o   s   i   t   i   o   n   ]       E   N   D   L   O   O
0020620    P   ;  \r                   R   E   T   U   R   N   [   0   ]
0020640    ;  \r                   E   N   D   ;  \r  \r  \t          \r
0020660            B   u   i   l   d   P   r   o   d   u   c   t   T   e
0020700    r 376 001  \0 273   H   m   s   :       P   R   O   C   E   D
0020720    U   R   E       [   s   i   :       S   t   r   e   a   m   D
0020740    e   f   s   .   S   t   r   e   a   m   H   a   n   d   l   e
0020760    ]       =  \r                   B   E   G   I   N       -   -
0021000        c   a   l   l   e   d       o   n   c   e       i   n    
0021020    m   a   i   n  \r                   l   i   n   e   :       S
0021040    T   R   I   N   G       _       [   M   A   X   I   D   L   E
0021060    N   G   T   H   ]   ;  \r                   i   :       h   a
0021100    s   h   I   n   d   e   x   ;  \r                   I   O   P
0021120    t   r   :       I   O   L   i   n   k   ;  \r                
0021140    e   c   h   o   :       B   O   O   L   E   A   N   ;  \r    
0021160                s   a   v   e   I   n   :       S   t   r   e   a
0021200    m   D   e   f   s   .   S   t   r   e   a   m   H   a   n   d
0021220    l   e   ;  \r  \r                   F   O   R       i       I
0021240    N       h   a   s   h   I   n   d   e   x       D   O       h
0021260    a   s   h   P   T   e   r   m   [   i   ]       _       N   I
0021300    L       E   N   D   L 376 001  \0 343   |   O   O   P   ;  \r
0021320                    e   o   l       _       F   A   L   S   E   ;
0021340   \r                   s   a   v   e   I   n       _       i   o
0021360    .   G   e   t   I   n   p   u   t   S   t   r   e   a   m   [
0021400    ]   ;  \r                   i   o   .   S   e   t   I   n   p
0021420    u   t   S   t   r   e   a   m   [   s   i   ]   ;  \r        
0021440            e   c   h   o       _       i   o   .   S   e   t   E
0021460    c   h   o   [   F   A   L   S   E   ]   ;  \r  \r            
0021500        -   -       r   e   a   d       I   n   p   u   t       t
0021520    e   r   m   s       a   n   d       b   u   i   l   d       i
0021540    n   p   u   t       t   e   r   m       h   a   s   h       t
0021560    a   b   l   e  \r                   [   i   n   C   o   u   n
0021600    t   ,       i   n   p   u   t   s   ]       _       R   e   a
0021620    d   I   O   [   S   t   o   p   C   O   D   E   ]   ;  \r  \r
0021640                    -   -       r   e   a   d       o   u   t   p
0021660    u   t       t   e   r   m   s       a   n   d       b   u   i
0021700    l   d       o   u   t   p   u   t       t 376 001  \0 002  \0
0021720    e   r   m       h   a   s   h       t   a   b   l   e  \r    
0021740                [   o   u   t   C   o   u   n   t   ,       o   u
0021760    t   p   u   t   s   ]       _       R   e   a   d   I   O   [
0022000    S   t   o   p   C   O   D   E   ]   ;  \r  \r                
0022020    -   -       b   u   i   l   d       I   O       L   i   s   t
0022040        o   f       I   O       d   e   s   c   r   i   p   t   o
0022060    r   s       a   r   r   a   n   g   e   d       b   y       p
0022100    o   s   i   t   i   o   n  \r                   i   n   p   u
0022120    t   L   i   s   t       _       Z   .   N   E   W   [   I   O
0022140    L   I   S   T   [   i   n   C   o   u   n   t   ]   ]   ;  \r
0022160                    o   u   t   p   u   t   L   i   s   t       _
0022200        Z   .   N   E   W   [   I   O   L   I   S   T   [   o   u
0022220    t   C   o   u   n   t   ]   ]   ;  \r                   S   c
0022240    o   u   n   t       _       S   c   o   u   n   t       +    
0022260    2   ;  \r                   F   O   R       i       I   N    
0022300    h   a   s   h   I   n   d   e   x       D   O      \r        
0022320  376 001  \0 034 362                   F   O   R       I   O   P
0022340    t   r   _   i   n   p   u   t   s   [   i   ]   ,       I   O
0022360    P   t   r   .   n   e   x   t       U   N   T   I   L       I
0022400    O   P   t   r   =   N   I   L       D   O  \r  \t   i   n   p
0022420    u   t   L   i   s   t   [   I   O   P   t   r   .   p   o   s
0022440    i   t   i   o   n   ]       _       I   O   P   t   r   ;  \r
0022460                            E   N   D   L   O   O   P   ;  \r    
0022500                E   N   D   L   O   O   P   ;  \r  \r            
0022520        F   O   R       i       I   N       h   a   s   h   I   n
0022540    d   e   x       D   O      \r                           F   O
0022560    R       I   O   P   t   r   _   o   u   t   p   u   t   s   [
0022600    i   ]   ,       I   O   P   t   r   .   n   e   x   t       U
0022620    N   T   I   L       I   O   P   t   r   =   N   I   L       D
0022640    O  \r  \t   o   u   t   p   u   t   L   i   s   t   [   I   O
0022660    P   t   r   .   p   o   s   i   t   i   o   n   ]       _    
0022700    I   O   P   t   r   ;  \r                           E   N   D
0022720    L   O   O   P   ; 376 001  \0 355  \v  \r                   E
0022740    N   D   L   O   O   P   ;  \r  \r  \r  \r                   -
0022760    -       i   n   p   u   t       t   h   e       p   r   o   d
0023000    u   c   t       t   e   r   m   s       a   n   d       b   u
0023020    i   l   d       t   h   e       p   r   o   d   u   c   t    
0023040    t   e   r   m       m   a   t   r   i   x  \r                
0023060    R   e   a   d   P   T   e   r   m   s   ;  \r  \r            
0023100        i   o   .   S   e   t   I   n   p   u   t   S   t   r   e
0023120    a   m   [   s   a   v   e   I   n   ]   ;  \r                
0023140    [   ]       _       i   o   .   S   e   t   E   c   h   o   [
0023160    e   c   h   o   ]   ;  \r  \r                   E   N   D   ;
0023200   \r  \r           F   i   n   d   P   L   A   C   e   l   l   s
0023220    :       P   R   O   C   E   D   U   R   E       [   c   e   l
0023240    l   F   a   m   i   l   y   :       S   T   R   I   N   G   ]
0023260        =  \r                   B   E   G   I   N  \r            
0023300        P   L   A   D   e   c   o   d   e   r       _       F   i
0023320    n   d   D   C   e   l   l   P   r   [ 376 001  \0 312 022   c
0023340    e   l   l   F   a   m   i   l   y   :       c   e   l   l   F
0023360    a   m   i   l   y   ,       r   e   q   u   i   r   e   d   :
0023400        T   R   U   E   ,  \r                           m   e   m
0023420    b   e   r   P   r   e   f   i   x   :       "   D   e   c   o
0023440    d   e   r   "   L   ]   ;  \r                   d   e   c   o
0023460    d   e   C   e   l   l       _       P   L   A   D   e   c   o
0023500    d   e   r   [   T   R   U   E   ]   [   F   A   L   S   E   ]
0023520    ;  \r                   P   L   A   D   e   c   o   d   e   r
0023540    T   o   p       _       F   i   n   d   D   C   e   l   l   [
0023560   \r                           c   e   l   l   F   a   m   i   l
0023600    y   :       c   e   l   l   F   a   m   i   l   y   ,       m
0023620    e   m   b   e   r   P   r   e   f   i   x   :       "   D   e
0023640    c   o   d   e   r   T   o   p   "   L   ]   ;  \r            
0023660        P   L   A   D   e   c   o   d   e   r   B   o   t   t   o
0023700    m       _       F   i   n   d   D   C   e   l   l   [  \r    
0023720                        c   e   l   l   F   a   m   i   l   y 376
0023740  001  \0   -   {   :       c   e   l   l   F   a   m   i   l   y
0023760    ,       m   e   m   b   e   r   P   r   e   f   i   x   :    
0024000    "   D   e   c   o   d   e   r   B   o   t   t   o   m   "   L
0024020    ]   ;  \r                   P   L   A   D   e   c   o   d   e
0024040    r   L   e   f   t       _       F   i   n   d   D   C   e   l
0024060    l   [  \r                           c   e   l   l   F   a   m
0024100    i   l   y   :       c   e   l   l   F   a   m   i   l   y   ,
0024120        m   e   m   b   e   r   P   r   e   f   i   x   :       "
0024140    D   e   c   o   d   e   r   L   e   f   t   "   L   ,       v
0024160    C   o   m   p   a   t   :       d   e   c   o   d   e   C   e
0024200    l   l   ]   ;  \r                   P   L   A   D   e   c   o
0024220    d   e   r   T   o   p   L   e   f   t   C   o   r   n   e   r
0024240        _       F   i   n   d   C   e   l   l   [  \r            
0024260                c   e   l   l   F   a   m   i   l   y   :       c
0024300    e   l   l   F   a   m   i   l   y   ,       m   e   m   b   e
0024320    r   :       "   D   e   c   o   d   e   r   T   o   p   L   e
0024340    f   t   C   o 376 001  \0 307   $   r   n   e   r   "   L   ]
0024360    ;  \r                   P   L   A   D   e   c   o   d   e   r
0024400    B   o   t   t   o   m   L   e   f   t   C   o   r   n   e   r
0024420        _       F   i   n   d   C   e   l   l   [  \r            
0024440                c   e   l   l   F   a   m   i   l   y   :       c
0024460    e   l   l   F   a   m   i   l   y   ,       m   e   m   b   e
0024500    r   :       "   D   e   c   o   d   e   r   B   o   t   t   o
0024520    m   L   e   f   t   C   o   r   n   e   r   "   L   ]   ;  \r
0024540                    P   L   A   D   a   t   a       _       F   i
0024560    n   d   D   C   e   l   l   P   r   [   c   e   l   l   F   a
0024600    m   i   l   y   :       c   e   l   l   F   a   m   i   l   y
0024620    ,       r   e   q   u   i   r   e   d   :       T   R   U   E
0024640    ,  \r                           m   e   m   b   e   r   P   r
0024660    e   f   i   x   :       "   D   a   t   a   "   L   ]   ;  \r
0024700                    d   a   t   a   C   e   l   l       _       P
0024720    L   A   D   a   t   a   [   F   A   L   S   E   ]   [   F   A
0024740    L   S   E   ]   ;  \r             376 001  \0   0  \t       C
0024760    h   e   c   k   P   i   t   c   h   C   o   m   p   a   t   a
0025000    b   i   l   i   t   y   [   d   e   c   o   d   e   C   e   l
0025020    l   ,       d   a   t   a   C   e   l   l   ,       v   e   r
0025040    t   i   c   a   l   ,       [   1   ,       2   ]   ,       [
0025060    1   ,       1   ]   ]   ;  \r                   P   L   A   D
0025100    e   c   o   d   e   r   D   a   t   a       _       F   i   n
0025120    d   C   e   l   l   [  \r                           c   e   l
0025140    l   F   a   m   i   l   y   :       c   e   l   l   F   a   m
0025160    i   l   y   ,       m   e   m   b   e   r   :       "   D   e
0025200    c   o   d   e   r   D   a   t   a   "   L   ,       v   C   o
0025220    m   p   a   t   :       d   a   t   a   C   e   l   l   ]   ;
0025240   \r                   P   L   A   D   e   c   o   d   e   r   D
0025260    a   t   a   T   o   p       _       F   i   n   d   C   e   l
0025300    l   [  \r                           c   e   l   l   F   a   m
0025320    i   l   y   :       c   e   l   l   F   a   m   i   l   y   ,
0025340        m   e   m   b   e   r   :       "   D   e   c   o 376 001
0025360   \0   k   (   d   e   r   D   a   t   a   T   o   p   "   L   ,
0025400        h   C   o   m   p   a   t   :       P   L   A   D   e   c
0025420    o   d   e   r   D   a   t   a   ]   ;  \r                   P
0025440    L   A   D   e   c   o   d   e   r   D   a   t   a   B   o   t
0025460    t   o   m       _       F   i   n   d   C   e   l   l   [  \r
0025500                            c   e   l   l   F   a   m   i   l   y
0025520    :       c   e   l   l   F   a   m   i   l   y   ,       m   e
0025540    m   b   e   r   :       "   D   e   c   o   d   e   r   D   a
0025560    t   a   B   o   t   t   o   m   "   L   ,  \r                
0025600            h   C   o   m   p   a   t   :       P   L   A   D   e
0025620    c   o   d   e   r   D   a   t   a   ]   ;  \r                
0025640    P   L   A   D   a   t   a   T   o   p       _       F   i   n
0025660    d   D   C   e   l   l   [  \r                           c   e
0025700    l   l   F   a   m   i   l   y   :       c   e   l   l   F   a
0025720    m   i   l   y   ,       m   e   m   b   e   r   P   r   e   f
0025740    i   x   :       "   D   a   t   a   T   o   p   "   L   ,    
0025760    h   C   o 376 001  \0 215 337   m   p   a   t   :       d   a
0026000    t   a   C   e   l   l   ]   ;  \r   -   -                   P
0026020    L   A   D   a   t   a   B   o   t   t   o   m       _       F
0026040    i   n   d   D   C   e   l   l   [  \r   -   -                
0026060            c   e   l   l   F   a   m   i   l   y   :       c   e
0026100    l   l   F   a   m   i   l   y   ,       m   e   m   b   e   r
0026120    P   r   e   f   i   x   :       "   D   a   t   a   B   o   t
0026140    t   o   m   "   L   ]   ;  \r                   P   L   A   O
0026160    u   t   M   u   x       _       F   i   n   d   D   C   e   l
0026200    l   [   c   e   l   l   F   a   m   i   l   y   :       c   e
0026220    l   l   F   a   m   i   l   y   ,       m   e   m   b   e   r
0026240    P   r   e   f   i   x   :       "   O   u   t   M   u   x   "
0026260    L   ]   ;  \r                   C   h   e   c   k   P   i   t
0026300    c   h   C   o   m   p   a   t   a   b   i   l   i   t   y   [
0026320    d   a   t   a   C   e   l   l   ,       P   L   A   O   u   t
0026340    M   u   x   [   F   A   L   S   E   ]   ,       h   o   r   i
0026360    z   o   n   t   a   l   ,     376 001  \0 336   M   [   1   ,
0026400        1   ]   ,       [   1   ,       1   ]   ]   ;  \r        
0026420            P   L   A   D   a   t   a   R   i   g   h   t       _
0026440        F   i   n   d   C   e   l   l   [  \r                    
0026460        c   e   l   l   F   a   m   i   l   y   :       c   e   l
0026500    l   F   a   m   i   l   y   ,       m   e   m   b   e   r   :
0026520        "   D   a   t   a   R   i   g   h   t   "   L   ,       v
0026540    C   o   m   p   a   t   :       d   a   t   a   C   e   l   l
0026560    ]   ;  \r                   P   L   A   D   a   t   a   T   o
0026600    p   R   i   g   h   t   C   o   r   n   e   r       _       F
0026620    i   n   d   C   e   l   l   [  \r                           c
0026640    e   l   l   F   a   m   i   l   y   :       c   e   l   l   F
0026660    a   m   i   l   y   ,       m   e   m   b   e   r   :       "
0026700    D   a   t   a   T   o   p   R   i   g   h   t   C   o   r   n
0026720    e   r   "   L   ]   ;  \r                   P   L   A   D   a
0026740    t   a   B   o   t   t   o   m   R   i   g   h   t   C   o   r
0026760    n   e   r       _       F   i   n   d   C   e   l 376 001  \0
0027000  275 002   l   [  \r                           c   e   l   l   F
0027020    a   m   i   l   y   :       c   e   l   l   F   a   m   i   l
0027040    y   ,       m   e   m   b   e   r   :       "   D   a   t   a
0027060    B   o   t   t   o   m   R   i   g   h   t   C   o   r   n   e
0027100    r   "   L   ]   ;  \r                   P   L   A   D   e   c
0027120    o   d   e   r   L   e   f   t   G   n   d       _       F   i
0027140    n   d   C   e   l   l   [  \r                           c   e
0027160    l   l   F   a   m   i   l   y   :       c   e   l   l   F   a
0027200    m   i   l   y   ,       m   e   m   b   e   r   :       "   D
0027220    e   c   o   d   e   r   L   e   f   t   G   n   d   "   L   ]
0027240    ;  \r                   P   L   A   D   e   c   o   d   e   r
0027260    G   n   d       _       F   i   n   d   C   e   l   l   [  \r
0027300                            c   e   l   l   F   a   m   i   l   y
0027320    :       c   e   l   l   F   a   m   i   l   y   ,       m   e
0027340    m   b   e   r   :       "   D   e   c   o   d   e   r   G   n
0027360    d   "   L   ,       v   C   o   m   p   a   t   :       P   L
0027400    A   D 376 001  \0 201 340   e   c   o   d   e   r   L   e   f
0027420    t   G   n   d   ,       h   C   o   m   p   a   t   :       d
0027440    e   c   o   d   e   C   e   l   l   ]   ;  \r                
0027460    P   L   A   D   e   c   o   d   e   r   D   a   t   a   G   n
0027500    d       _       F   i   n   d   C   e   l   l   [  \r        
0027520                    c   e   l   l   F   a   m   i   l   y   :    
0027540    c   e   l   l   F   a   m   i   l   y   ,       m   e   m   b
0027560    e   r   :       "   D   e   c   o   d   e   r   D   a   t   a
0027600    G   n   d   "   L   ,       h   C   o   m   p   a   t   :    
0027620    P   L   A   D   e   c   o   d   e   r   D   a   t   a   ]   ;
0027640   \r                   P   L   A   D   a   t   a   H   G   n   d
0027660        _       F   i   n   d   C   e   l   l   [  \r            
0027700                c   e   l   l   F   a   m   i   l   y   :       c
0027720    e   l   l   F   a   m   i   l   y   ,       m   e   m   b   e
0027740    r   :       "   D   a   t   a   H   G   n   d   "   L   ,    
0027760    v   C   o   m   p   a   t   :       P   L   A   D   e   c   o
0030000    d   e   r   G   n   d   , 376 001  \0   Q 206       h   C   o
0030020    m   p   a   t   :       d   a   t   a   C   e   l   l   ]   ;
0030040   \r                   P   L   A   D   a   t   a   G   n   d    
0030060    _       F   i   n   d   C   e   l   l   [  \r                
0030100            c   e   l   l   F   a   m   i   l   y   :       c   e
0030120    l   l   F   a   m   i   l   y   ,       m   e   m   b   e   r
0030140    :       "   D   a   t   a   G   n   d   "   L   ,       v   C
0030160    o   m   p   a   t   :       P   L   A   D   a   t   a   H   G
0030200    n   d   ]   ;  \r                   P   L   A   D   a   t   a
0030220    V   G   n   d       _       F   i   n   d   C   e   l   l   [
0030240   \r                           c   e   l   l   F   a   m   i   l
0030260    y   :       c   e   l   l   F   a   m   i   l   y   ,       m
0030300    e   m   b   e   r   :       "   D   a   t   a   V   G   n   d
0030320    "   L   ,       v   C   o   m   p   a   t   :       d   a   t
0030340    a   C   e   l   l   ,       h   C   o   m   p   a   t   :    
0030360    P   L   A   D   a   t   a   G   n   d   ]   ;  \r            
0030400        P   L   A   D   a   t   a   T   o   p   G 376 001  \0 364
0030420  342   n   d       _       F   i   n   d   C   e   l   l   [  \r
0030440                            c   e   l   l   F   a   m   i   l   y
0030460    :       c   e   l   l   F   a   m   i   l   y   ,       m   e
0030500    m   b   e   r   :       "   D   a   t   a   T   o   p   G   n
0030520    d   "   L   ,       h   C   o   m   p   a   t   :       P   L
0030540    A   D   a   t   a   V   G   n   d   ]   ;  \r                
0030560    P   L   A   D   a   t   a   B   o   t   t   o   m   G   n   d
0030600        _       F   i   n   d   C   e   l   l   [  \r            
0030620                c   e   l   l   F   a   m   i   l   y   :       c
0030640    e   l   l   F   a   m   i   l   y   ,       m   e   m   b   e
0030660    r   :       "   D   a   t   a   B   o   t   t   o   m   G   n
0030700    d   "   L   ,       h   C   o   m   p   a   t   :       P   L
0030720    A   D   a   t   a   V   G   n   d   ]   ;  \r                
0030740    P   L   A   D   a   t   a   R   i   g   h   t   G   n   d    
0030760    _       F   i   n   d   C   e   l   l   [  \r                
0031000            c   e   l   l   F   a   m   i   l   y   :       c   e
0031020    l 376 001  \0 227 267   l   F   a   m   i   l   y   ,       m
0031040    e   m   b   e   r   :       "   D   a   t   a   R   i   g   h
0031060    t   G   n   d   "   L   ,       v   C   o   m   p   a   t   :
0031100        P   L   A   D   a   t   a   H   G   n   d   ]   ;  \r    
0031120                E   N   D   ;  \r  \r           F   i   n   d   C
0031140    e   l   l   :       P   R   O   C   E   D   U   R   E       [
0031160   \r                   c   e   l   l   F   a   m   i   l   y   :
0031200        S   T   R   I   N   G   ,       m   e   m   b   e   r   :
0031220        S   T   R   I   N   G   ,       r   e   q   u   i   r   e
0031240    d   :       B   O   O   L   E   A   N       _       F   A   L
0031260    S   E   ,  \r                   v   C   o   m   p   a   t   :
0031300        C   e   l   l       _       N   I   L   ,       h   C   o
0031320    m   p   a   t   :       C   e   l   l       _       N   I   L
0031340    ]       R   E   T   U   R   N   S       [   C   e   l   l   ]
0031360        =  \r                   B   E   G   I   N       O   P   E
0031400    N       S   t   r   i   n   g   D   e   f   s   ;  \r        
0031420            s   :       S 376 001  \0 303   j   T   R   I   N   G
0031440        _       [   1   0   0   ]   ;  \r                   s   .
0031460    l   e   n   g   t   h       _       0   ;  \r                
0031500    A   p   p   e   n   d   S   t   r   i   n   g   [   t   o   :
0031520        s   ,       f   r   o   m   :       c   e   l   l   F   a
0031540    m   i   l   y   ]   ;  \r                   A   p   p   e   n
0031560    d   S   t   r   i   n   g   [   t   o   :       s   ,       f
0031600    r   o   m   :       m   e   m   b   e   r   ]   ;  \r        
0031620            F   O   R       c   p   :       L   O   N   G       P
0031640    O   I   N   T   E   R       T   O       c   L   i   s   t    
0031660    _       c   e   l   l   L   i   s   t   ,       c   p   .   n
0031700    x   t       W   H   I   L   E       c   p       #       N   I
0031720    L       D   O  \r                           I   F       S   t
0031740    r   i   n   g   D   e   f   s   .   E   q   u   i   v   a   l
0031760    e   n   t   S   t   r   i   n   g   [   c   p   .   n   a   m
0032000    e   ,       s   ]       T   H   E   N  \r                    
0032020                B   E   G   I   N  \r         376 001  \0   u 206
0032040                            c   :       C   e   l   l       _    
0032060    c   p   .   o   b   ;  \r                                   I
0032100    F       v   C   o   m   p   a   t       #       N   I   L    
0032120    T   H   E   N       C   h   e   c   k   P   i   t   c   h   C
0032140    o   m   p   a   t   a   b   i   l   i   t   y   [   c   ,    
0032160    v   C   o   m   p   a   t   ,       v   e   r   t   i   c   a
0032200    l   ]   ;  \r                                   I   F       h
0032220    C   o   m   p   a   t       #       N   I   L       T   H   E
0032240    N       C   h   e   c   k   P   i   t   c   h   C   o   m   p
0032260    a   t   a   b   i   l   i   t   y   [   c   ,       h   C   o
0032300    m   p   a   t   ,       h   o   r   i   z   o   n   t   a   l
0032320    ]   ;  \r                                   R   E   T   U   R
0032340    N   [   c   ]   ;  \r                                   E   N
0032360    D   ;  \r                           E   N   D   L   O   O   P
0032400    ;  \r                   I   F       r   e   q   u   i   r   e
0032420    d       T   H   E   N       {   E   x   p   l   a   i   n   [
0032440  376 001  \0 035 361   "   M   i   s   s   i   n   g       c   e
0032460    l   l       i   n       f   a   m   i   l   y   "   L   ,    
0032500    s   ]   ;       S   I   G   N   A   L       P   u   n   t   }
0032520    ;  \r                   R   E   T   U   R   N   [   N   I   L
0032540    ]   ;  \r                   E   N   D   ;  \r  \r           F
0032560    i   n   d   D   C   e   l   l   :       P   R   O   C   E   D
0032600    U   R   E       [  \r                   c   e   l   l   F   a
0032620    m   i   l   y   ,       m   e   m   b   e   r   P   r   e   f
0032640    i   x   :       S   T   R   I   N   G   ,       r   e   q   u
0032660    i   r   e   d   :       B   O   O   L   E   A   N       _    
0032700    F   A   L   S   E   ,  \r                   v   C   o   m   p
0032720    a   t   :       C   e   l   l       _       N   I   L   ,    
0032740    h   C   o   m   p   a   t   :       C   e   l   l       _    
0032760    N   I   L   ]       R   E   T   U   R   N   S       [   d   :
0033000        D   C   e   l   l   ]       =  \r                   B   E
0033020    G   I   N       O   P   E   N       S   t   r   i   n   g   D
0033040    e   f   s   ;  \r 376 001  \0   Y   2                   o   r
0033060    i   g   i   n   a   l   L   e   n   g   t   h   :       C   A
0033100    R   D   I   N   A   L       _       m   e   m   b   e   r   P
0033120    r   e   f   i   x   .   l   e   n   g   t   h   ;  \r        
0033140            m   e   m   b   e   r   :       S   T   R   I   N   G
0033160        _       [   5   0   ]   ;  \r                   m   e   m
0033200    b   e   r   .   l   e   n   g   t   h       _       0   ;  \r
0033220                    A   p   p   e   n   d   S   t   r   i   n   g
0033240    [   t   o   :       m   e   m   b   e   r   ,       f   r   o
0033260    m   :       m   e   m   b   e   r   P   r   e   f   i   x   ]
0033300    ;  \r                   A   p   p   e   n   d   S   t   r   i
0033320    n   g   [   t   o   :       m   e   m   b   e   r   ,       f
0033340    r   o   m   :       "   0   "   L   ]   ;  \r                
0033360    d   [   F   A   L   S   E   ]       _       F   i   n   d   C
0033400    e   l   l   [   c   e   l   l   F   a   m   i   l   y   ,    
0033420    m   e   m   b   e   r   ,       r   e   q   u   i   r   e   d
0033440    ,       v   C   o   m   p   a   t   , 376 001  \0  \v   '    
0033460    h   C   o   m   p   a   t   ]   ;  \r                   m   e
0033500    m   b   e   r   .   l   e   n   g   t   h       _       o   r
0033520    i   g   i   n   a   l   L   e   n   g   t   h   ;  \r        
0033540            A   p   p   e   n   d   S   t   r   i   n   g   [   t
0033560    o   :       m   e   m   b   e   r   ,       f   r   o   m   :
0033600        "   1   "   L   ]   ;  \r                   d   [   T   R
0033620    U   E   ]       _       F   i   n   d   C   e   l   l   [   c
0033640    e   l   l   F   a   m   i   l   y   ,       m   e   m   b   e
0033660    r   ,       r   e   q   u   i   r   e   d   ,       v   C   o
0033700    m   p   a   t   ,       h   C   o   m   p   a   t   ]   ;  \r
0033720                    I   F       v   C   o   m   p   a   t       #
0033740        N   I   L       O   R       h   C   o   m   p   a   t    
0033760    #       N   I   L  \r  \t   T   H   E   N       C   h   e   c
0034000    k   P   i   t   c   h   C   o   m   p   a   t   a   b   i   l
0034020    i   t   y   [   d   [   F   A   L   S   E   ]   ,       d   [
0034040    T   R   U   E   ]   ,       d   i   a   g   o   n   a   l 376
0034060  001  \0   l   ;   ]   ;  \r                   E   N   D   ;    
0034100        -   -       o   f       F   i   n   d   D   C   e   l   l
0034120   \r  \r           F   i   n   d   D   C   e   l   l   P   r   :
0034140        P   R   O   C   E   D   U   R   E       [  \r            
0034160        c   e   l   l   F   a   m   i   l   y   ,       m   e   m
0034200    b   e   r   P   r   e   f   i   x   :       S   T   R   I   N
0034220    G   ,       r   e   q   u   i   r   e   d   :       B   O   O
0034240    L   E   A   N       _       F   A   L   S   E   ,  \r        
0034260            v   C   o   m   p   a   t   :       C   e   l   l    
0034300    _       N   I   L   ,       h   C   o   m   p   a   t   :    
0034320    C   e   l   l       _       N   I   L   ]       R   E   T   U
0034340    R   N   S       [   p   :       D   C   e   l   l   P   r   ]
0034360        =  \r                   B   E   G   I   N       O   P   E
0034400    N       S   t   r   i   n   g   D   e   f   s   ;  \r        
0034420            o   r   i   g   i   n   a   l   L   e   n   g   t   h
0034440    :       C   A   R   D   I   N   A   L       _       m   e   m
0034460    b   e   r   P 376 001  \0 242   c   r   e   f   i   x   .   l
0034500    e   n   g   t   h   ;  \r                   m   e   m   b   e
0034520    r   :       S   T   R   I   N   G       _       [   5   0   ]
0034540    ;  \r                   m   e   m   b   e   r   .   l   e   n
0034560    g   t   h       _       0   ;  \r                   A   p   p
0034600    e   n   d   S   t   r   i   n   g   [   t   o   :       m   e
0034620    m   b   e   r   ,       f   r   o   m   :       m   e   m   b
0034640    e   r   P   r   e   f   i   x   ]   ;  \r                   A
0034660    p   p   e   n   d   S   t   r   i   n   g   [   t   o   :    
0034700    m   e   m   b   e   r   ,       f   r   o   m   :       "   0
0034720    "   L   ]   ;  \r                   p   [   F   A   L   S   E
0034740    ]       _       F   i   n   d   D   C   e   l   l   [   c   e
0034760    l   l   F   a   m   i   l   y   ,       m   e   m   b   e   r
0035000    ,       r   e   q   u   i   r   e   d   ,       v   C   o   m
0035020    p   a   t   ,       h   C   o   m   p   a   t   ]   ;  \r    
0035040                m   e   m   b   e   r   .   l   e   n   g   t   h
0035060        _       o   r   i   g   i   n 376 001  \0 271 307   a   l
0035100    L   e   n   g   t   h   ;  \r                   A   p   p   e
0035120    n   d   S   t   r   i   n   g   [   t   o   :       m   e   m
0035140    b   e   r   ,       f   r   o   m   :       "   1   "   L   ]
0035160    ;  \r                   p   [   T   R   U   E   ]       _    
0035200    F   i   n   d   D   C   e   l   l   [   c   e   l   l   F   a
0035220    m   i   l   y   ,       m   e   m   b   e   r   ,       r   e
0035240    q   u   i   r   e   d   ,       v   C   o   m   p   a   t   ,
0035260        h   C   o   m   p   a   t   ]   ;  \r                   I
0035300    F       v   C   o   m   p   a   t       #       N   I   L    
0035320    O   R       h   C   o   m   p   a   t       #       N   I   L
0035340   \r  \t   T   H   E   N       C   h   e   c   k   P   i   t   c
0035360    h   C   o   m   p   a   t   a   b   i   l   i   t   y   [   p
0035400    [   F   A   L   S   E   ]   [   F   A   L   S   E   ]   ,    
0035420    p   [   T   R   U   E   ]   [   F   A   L   S   E   ]   ,    
0035440    d   i   a   g   o   n   a   l   ]   ;  \r                   E
0035460    N   D   ;           -   -       o   f       F   i   n 376 001
0035500   \0   T 322   d   D   C   e   l   l  \r  \r           C   h   e
0035520    c   k   P   i   t   c   h   C   o   m   p   a   t   a   b   i
0035540    l   i   t   y   :       P   R   O   C   E   D   U   R   E    
0035560    [  \r                   c   1   ,       c   2   :       C   e
0035600    l   l   ,       d   i   r   :       D   i   r   e   c   t   i
0035620    o   n   ,       r   e   p   1   :       P   o   i   n   t    
0035640    _       [   1   ,       1   ]   ,       r   e   p   2   :    
0035660    P   o   i   n   t       _       [   1   ,       1   ]   ]    
0035700    =  \r                   B   E   G   I   N       O   P   E   N
0035720        S   t   r   i   n   g   D   e   f   s   ;  \r  \r        
0035740            F   i   n   d   C   e   l   l   N   a   m   e   :    
0035760    P   R   O   C   E   D   U   R   E       [   c   :       C   e
0036000    l   l   ]       R   E   T   U   R   N   S       [   S   T   R
0036020    I   N   G   ]       =  \r                           B   E   G
0036040    I   N  \r                           F   O   R       c   p   :
0036060        L   O   N   G       P   O   I   N   T   E   R       T   O
0036100        c   L 376 001  \0   g 036   i   s   t       _       c   e
0036120    l   l   L   i   s   t   ,       c   p   .   n   x   t       W
0036140    H   I   L   E       c   p       #       N   I   L       D   O
0036160   \r                                   I   F       c       =    
0036200    c   p   .   o   b       T   H   E   N       R   E   T   U   R
0036220    N   [   c   p   .   n   a   m   e   ]       E   N   D   L   O
0036240    O   P   ;  \r                           R   E   T   U   R   N
0036260    [   "   "   ]   ;  \r                           E   N   D   ;
0036300   \r  \r                   I   F       S   t   e   p   P   [   ,
0036320        c   1   ,       d   i   r   ,       r   e   p   1   ]    
0036340    #       S   t   e   p   P   [   ,       c   2   ,       d   i
0036360    r   ,       r   e   p   2   ]       T   H   E   N  \r        
0036400                    B   E   G   I   N  \r                        
0036420    c   e   l   l   N   a   m   e   s   :       S   T   R   I   N
0036440    G       _       [   5   0   ]   ;  \r                        
0036460    c   e   l   l   N   a   m   e   s   .   l   e   n   g   t   h
0036500        _       0   ;  \r         376 001  \0   / 031            
0036520        A   p   p   e   n   d   S   t   r   i   n   g   [   t   o
0036540    :       c   e   l   l   N   a   m   e   s   ,       f   r   o
0036560    m   :       F   i   n   d   C   e   l   l   N   a   m   e   [
0036600    c   1   ]   ]   ;  \r                           A   p   p   e
0036620    n   d   S   t   r   i   n   g   [   t   o   :       c   e   l
0036640    l   N   a   m   e   s   ,       f   r   o   m   :       "    
0036660    -       "   L   ]   ;  \r                           A   p   p
0036700    e   n   d   S   t   r   i   n   g   [   t   o   :       c   e
0036720    l   l   N   a   m   e   s   ,       f   r   o   m   :       F
0036740    i   n   d   C   e   l   l   N   a   m   e   [   c   2   ]   ]
0036760    ;  \r                           S   E   L   E   C   T       d
0037000    i   r       F   R   O   M  \r                                
0037020    v   e   r   t   i   c   a   l   ,       u   p   ,       d   o
0037040    w   n       =   >  \r                                        
0037060    E   x   p   l   a   i   n   [   "   I   n   c   o   m   p   a
0037100    t   i   b   l   e       c   e   l   l       v   e 376 001  \0
0037120    l 220   r   t   i   c   a   l       p   i   t   c   h   e   s
0037140    "   L   ,       c   e   l   l   N   a   m   e   s   ]   ;  \r
0037160                                    h   o   r   i   z   o   n   t
0037200    a   l   ,       l   e   f   t   ,       r   i   g   h   t    
0037220    =   >  \r                                           E   x   p
0037240    l   a   i   n   [   "   I   n   c   o   m   p   a   t   i   b
0037260    l   e       c   e   l   l       h   o   r   i   z   o   n   t
0037300    a   l       p   i   t   c   h   e   s   "   L   ,       c   e
0037320    l   l   N   a   m   e   s   ]   ;  \r                        
0037340            E   N   D   C   A   S   E       =   >       E   x   p
0037360    l   a   i   n   [   "   I   n   c   o   m   p   a   t   i   b
0037400    l   e       c   e   l   l       s   i   z   e   s   "   L   ,
0037420        c   e   l   l   N   a   m   e   s   ]   ;  \r            
0037440                -   -       S   I   G   N   A   L       P   u   n
0037460    t   ;  \r                           E   N   D   ;  \r        
0037500            E   N   D   ;           -   -       o   f       C   h
0037520    e   c 376 001  \0 227 254   k   P   i   t   c   h   C   o   m
0037540    p   a   t   a   b   i   l   i   t   y  \r  \r           R   e
0037560    p   l   i   c   a   t   e   :       P   R   O   C   E   D   U
0037600    R   E       [   c   :       C   e   l   l   ,       p   :    
0037620    P   o   i   n   t   ,       n   :       C   A   R   D   I   N
0037640    A   L       _       1   ,       d   i   r   :       D   i   r
0037660    e   c   t   i   o   n       _       d   o   w   n   ]  \r    
0037700                R   E   T   U   R   N   S       [   P   o   i   n
0037720    t   ]       =  \r                   B   E   G   I   N  \r    
0037740                I   F       c       =       N   I   L       T   H
0037760    E   N       R   E   T   U   R   N   [   p   ]   ;           -
0040000    -       n   o       c   e   l   l  \r                   F   O
0040020    R       i   :       C   A   R   D   I   N   A   L       I   N
0040040        [   0   .   .   n   )       D   O  \r                    
0040060        S   E   L   E   C   T       d   i   r       F   R   O   M
0040100   \r                                   v   e   r   t   i   c   a
0040120    l   ,       d   o   w   n 376 001  \0 306 255   ,       h   o
0040140    r   i   z   o   n   t   a   l   ,       r   i   g   h   t    
0040160    =   >  \r                                           B   E   G
0040200    I   N  \r                                           l   p   p
0040220        _       i   n   s   e   r   t   L   i   s   t   [   l   p
0040240    p   ,       m   a   k   e   L   i   s   t   [   c   .   p   .
0040260    a   n   o   t   h   e   r   m   e   [   c   ]   ,       p   .
0040300    x   ,       p   .   y   ,       0   ,       0   ]   ]   ;  \r
0040320                                            p       _       S   t
0040340    e   p   P   [   p   ,       c   ,       d   i   r   ]   ;  \r
0040360                                            E   N   D   ;  \r    
0040400                                l   e   f   t   ,       u   p    
0040420    =   >  \r                                           B   E   G
0040440    I   N  \r                                           p       _
0040460        S   t   e   p   P   [   p   ,       c   ,       d   i   r
0040500    ]   ;  \r                                           l   p   p
0040520        _       i   n   s   e   r   t   L   i   s 376 001  \0 237
0040540  002   t   [   l   p   p   ,       m   a   k   e   L   i   s   t
0040560    [   c   .   p   .   a   n   o   t   h   e   r   m   e   [   c
0040600    ]   ,       p   .   x   ,       p   .   y   ,       0   ,    
0040620    0   ]   ]   ;  \r                                           E
0040640    N   D   ;  \r                                   E   N   D   C
0040660    A   S   E       =   >       N   U   L   L   ;  \r            
0040700                E   N   D   L   O   O   P   ;  \r                
0040720    R   E   T   U   R   N   [   p   ]   ;  \r                   E
0040740    N   D   ;  \r  \r           R   e   p   l   i   c   a   t   e
0040760    E   v   e   n   O   d   d   :       P   R   O   C   E   D   U
0041000    R   E       [   d   :       D   C   e   l   l   ,       p   :
0041020        P   o   i   n   t   ,       n   :       C   A   R   D   I
0041040    N   A   L   ,       d   i   r   :       D   i   r   e   c   t
0041060    i   o   n   ]  \r                   R   E   T   U   R   N   S
0041100        [   P   o   i   n   t   ]       =  \r                   B
0041120    E   G   I   N  \r                   I   F       d   [   F   A
0041140    L 376 001  \0 323 317   S   E   ]       =       N   I   L    
0041160    A   N   D       d   [   T   R   U   E   ]       =       N   I
0041200    L       T   H   E   N       R   E   T   U   R   N   [   p   ]
0041220    ;           -   -       n   o       c   e   l   l   s  \r    
0041240                F   O   R       i   :       C   A   R   D   I   N
0041260    A   L       I   N       [   0   .   .   n   )       D   O  \r
0041300                            I   F       d   [   i       M   O   D
0041320        2       =       0   ]   #   N   I   L       T   H   E   N
0041340        S   E   L   E   C   T       d   i   r       F   R   O   M
0041360   \r                                   v   e   r   t   i   c   a
0041400    l   ,       d   o   w   n   ,       h   o   r   i   z   o   n
0041420    t   a   l   ,       r   i   g   h   t       =   >  \r        
0041440                                    B   E   G   I   N  \r        
0041460                                    l   p   p       _       i   n
0041500    s   e   r   t   L   i   s   t   [   l   p   p   ,       m   a
0041520    k   e   L   i   s   t   [   d   [   i       M   O   D       2
0041540        =       0   ]   . 376 001  \0 310 250   p   .   a   n   o
0041560    t   h   e   r   m   e   [   d   [   i       M   O   D       2
0041600        =       0   ]   ]   ,       p   .   x   ,       p   .   y
0041620    ,       0   ,       0   ]   ]   ;  \r                        
0041640                    p       _       S   t   e   p   P   [   p   ,
0041660        d   [   i       M   O   D       2       =       0   ]   ,
0041700        d   i   r   ]   ;  \r                                    
0041720        E   N   D   ;  \r                                   l   e
0041740    f   t   ,       u   p       =   >  \r                        
0041760                    B   E   G   I   N  \r                        
0042000                    p       _       S   t   e   p   P   [   p   ,
0042020        d   [   i       M   O   D       2       =       0   ]   ,
0042040        d   i   r   ]   ;  \r                                    
0042060        l   p   p       _       i   n   s   e   r   t   L   i   s
0042100    t   [   l   p   p   ,       m   a   k   e   L   i   s   t   [
0042120    d   [   i       M   O   D       2       =       0   ]   .   p
0042140    .   a   n   o   t   h   e   r   m   e   [ 376 001  \0 025   I
0042160    d   [   i       M   O   D       2       =       0   ]   ]   ,
0042200        p   .   x   ,       p   .   y   ,       0   ,       0   ]
0042220    ]   ;  \r                                           E   N   D
0042240    ;  \r                                   E   N   D   C   A   S
0042260    E       =   >       N   U   L   L  \r                        
0042300    E   L   S   E       p       _       S   t   e   p   P   [   p
0042320    ,       d   [   N   O   T   (   i       M   O   D       2    
0042340    =       0   )   ]   ,       d   i   r   ]   ;  \r            
0042360                E   N   D   L   O   O   P   ;  \r                
0042400    R   E   T   U   R   N   [   p   ]   ;  \r                   E
0042420    N   D   ;  \r  \r           S   t   e   p   P   :       P   R
0042440    O   C   E   D   U   R   E       [  \r                   p   :
0042460        P   o   i   n   t       _       [   0   ,       0   ]   ,
0042500        c   :       C   e   l   l   ,       d   i   r   :       D
0042520    i   r   e   c   t   i   o   n   ,       r   e   p   :       P
0042540    o   i   n   t       _       [   1   ,       1   ]   ]  \r    
0042560  376 001  \0 031  \n               R   E   T   U   R   N   S    
0042600    [   P   o   i   n   t   ]       =  \r                   B   E
0042620    G   I   N  \r                   I   F       c       =       N
0042640    I   L       T   H   E   N       R   E   T   U   R   N   [   p
0042660    ]  \r                   E   L   S   E  \r                    
0042700        S   E   L   E   C   T       d   i   r       F   R   O   M
0042720   \r                                   u   p       =   >       R
0042740    E   T   U   R   N   [   [   p   .   x   ,       p   .   y    
0042760    -       r   e   p   .   y   *   c   .   s   i   z   e   [   1
0043000    ]   ]   ]   ;  \r                                   v   e   r
0043020    t   i   c   a   l   ,       d   o   w   n       =   >       R
0043040    E   T   U   R   N   [   [   p   .   x   ,       p   .   y    
0043060    +       r   e   p   .   y   *   c   .   s   i   z   e   [   1
0043100    ]   ]   ]   ;  \r                                   h   o   r
0043120    i   z   o   n   t   a   l   ,       r   i   g   h   t       =
0043140    >       R   E   T   U   R   N   [   [   p   .   x       +    
0043160    r   e   p   .   x 376 001  \0 206   )   *   c   .   s   i   z
0043200    e   [   0   ]   ,       p   .   y   ]   ]   ;  \r            
0043220                        l   e   f   t       =   >       R   E   T
0043240    U   R   N   [   [   p   .   x       -       r   e   p   .   x
0043260    *   c   .   s   i   z   e   [   0   ]   ,       p   .   y   ]
0043300    ]   ;  \r                                   u   p   A   n   d
0043320    L   e   f   t       =   >       R   E   T   U   R   N   [   [
0043340    p   .   x       -       r   e   p   .   x   *   c   .   s   i
0043360    z   e   [   0   ]   ,       p   .   y       -       r   e   p
0043400    .   y   *   c   .   s   i   z   e   [   1   ]   ]   ]   ;  \r
0043420                                    u   p   A   n   d   R   i   g
0043440    h   t       =   >       R   E   T   U   R   N   [   [   p   .
0043460    x       -       r   e   p   .   x   *   c   .   s   i   z   e
0043500    [   0   ]   ,       p   .   y       +       r   e   p   .   y
0043520    *   c   .   s   i   z   e   [   1   ]   ]   ]   ;  \r        
0043540                            d   o   w   n   A   n   d   L   e   f
0043560    t       =   >       R   E   T   U   R 376 001  \0 204  \a   N
0043600    [   [   p   .   x       -       r   e   p   .   x   *   c   .
0043620    s   i   z   e   [   0   ]   ,       p   .   y       +       r
0043640    e   p   .   y   *   c   .   s   i   z   e   [   1   ]   ]   ]
0043660    ;  \r                                   E   N   D   C   A   S
0043700    E       -   -       d   o   w   n   A   n   d   R   i   g   h
0043720    t   ,       d   i   a   g   o   n   a   l       -   -       =
0043740    >  \r                                           R   E   T   U
0043760    R   N   [   [   p   .   x       +       r   e   p   .   x   *
0044000    c   .   s   i   z   e   [   0   ]   ,       p   .   y       +
0044020        r   e   p   .   y   *   c   .   s   i   z   e   [   1   ]
0044040    ]   ]   ;  \r                   E   N   D   ;  \r  \r        
0044060    H   a   l   f   :       P   R   O   C   E   D   U   R   E    
0044100    [   x   :       C   A   R   D   I   N   A   L   ]       R   E
0044120    T   U   R   N   S       [   C   A   R   D   I   N   A   L   ]
0044140        =       I   N   L   I   N   E       {   R   E   T   U   R
0044160    N   [   (   x       +       1   )   /   2   ]   }   ;  \r 376
0044200  001  \0 233   _  \r           M   a   k   e   N   e   w   C   e
0044220    l   l   :       P   R   O   C   E   D   U   R   E       [   n
0044240    a   m   e   :       S   T   R   I   N   G   ,       l   p   p
0044260    :       L   O   N   G       P   O   I   N   T   E   R       T
0044300    O       l   i   s   t   ]  \r                   R   E   T   U
0044320    R   N   S       [   c   p   :       L   O   N   G       P   O
0044340    I   N   T   E   R       T   O       c   L   i   s   t   ]    
0044360    =  \r                   B   E   G   I   N  \r                
0044400    m   i   n   :       P   o   i   n   t       _       [   L   A
0044420    S   T   [   l   o   c   N   u   m   ]   ,       L   A   S   T
0044440    [   l   o   c   N   u   m   ]   ]   ;  \r                   m
0044460    a   x   :       P   o   i   n   t       _       [   F   I   R
0044500    S   T   [   l   o   c   N   u   m   ]   ,       F   I   R   S
0044520    T   [   l   o   c   N   u   m   ]   ]   ;  \r                
0044540    F   O   R       l   p   :       L   O   N   G       P   O   I
0044560    N   T   E   R       T   O       l   i   s   t       _       l
0044600    p   p   ,     376 001  \0 313 261   l   p   .   n   x   t    
0044620    W   H   I   L   E       l   p       #       N   I   L       D
0044640    O  \r                           i   i   :       [   0   .   .
0044660    1   ]       _       I   F       I   n   l   i   n   e   D   e
0044700    f   s   .   B   I   T   A   N   D   [   l   p   .   i   d   x
0044720    ,       4   ]       =       0       T   H   E   N       0    
0044740    E   L   S   E       1   ;  \r                           m   i
0044760    n       _       [   M   I   N   [   m   i   n   .   x   ,    
0045000    l   p   .   l   x   ]   ,       M   I   N   [   m   i   n   .
0045020    y   ,       l   p   .   l   y   ]   ]   ;  \r                
0045040            m   a   x       _       [  \r                        
0045060            M   A   X   [   m   a   x   .   x   ,       l   p   .
0045100    l   x       +       l   p   .   o   b   .   s   i   z   e   [
0045120    i   i   ]   ]   ,       M   A   X   [  \r                    
0045140                m   a   x   .   y   ,       l   p   .   l   y    
0045160    +       l   p   .   o   b   .   s   i   z   e   [   i   i    
0045200    +       1   ]   ]   ]   ;  \r     376 001  \0 327 365        
0045220                E   N   D   L   O   O   P   ;  \r                
0045240    F   O   R       l   p   :       L   O   N   G       P   O   I
0045260    N   T   E   R       T   O       l   i   s   t       _       l
0045300    p   p   ,       l   p   .   n   x   t       W   H   I   L   E
0045320        l   p       #       N   I   L       D   O  \r            
0045340                l   p   .   l   x       _       l   p   .   l   x
0045360        -       m   i   n   .   x   ;       l   p   .   l   y    
0045400    _       l   p   .   l   y       -       m   i   n   .   y   ;
0045420        l   p   .   s   e   l   e   c   t   e   d       _       F
0045440    A   L   S   E   ;       E   N   D   L   O   O   P   ;  \r    
0045460                c   p       _       a   l   o   c   C   L   i   s
0045500    t   [   ]   ;  \r                   c   p   .   n   x   t    
0045520    _       c   e   l   l   L   i   s   t   ;  \r                
0045540    c   e   l   l   L   i   s   t       _       c   p   ;  \r    
0045560                c   p   .   o   b       _       m   a   k   e   C
0045600    e   l   l   [   m   a   x   .   x       -       m   i 376 001
0045620   \0 204 002   n   .   x   ,       m   a   x   .   y       -    
0045640    m   i   n   .   y   ,       0   ,       l   p   p   ]   ;  \r
0045660                    c   p   .   n   a   m   e       _       n   a
0045700    m   e   ;  \r                   E   N   D   ;           -   -
0045720        o   f       M   a   k   e   N   e   w   C   e   l   l  \r
0045740   \r           D   r   a   w   C   e   l   l   :       P   R   O
0045760    C   E   D   U   R   E       [   o   b   p   :       L   O   N
0046000    G       P   O   I   N   T   E   R       T   O       o   b   j
0046020    e   c   t   ]       =  \r                   B   E   G   I   N
0046040   \r                   l   p   :       L   O   N   G       P   O
0046060    I   N   T   E   R       T   O       l   i   s   t       _    
0046100    m   a   k   e   L   i   s   t   [   o   b   p   .   p   .   a
0046120    n   o   t   h   e   r   m   e   [   o   b   p   ]   ,       x
0046140    x   ,       y   y   ,       0   ,       0   ]   ;  \r        
0046160            o   b   p   .   r   e   t   u   r   n   a   b   l   e
0046200        _       F   A   L   S   E   ;  \r                   m   a
0046220    s   t   e 376 001  \0 355   <   r   L   i   s   t       _    
0046240    i   n   s   e   r   t   L   i   s   t   [   m   a   s   t   e
0046260    r   L   i   s   t   ,       l   p   ]   ;  \r                
0046300    a   n   y   C   h   a   n   g   e   s       _       s   i   n
0046320    c   e   I   O   c   h   a   n   g   e   s       _       T   R
0046340    U   E   ;  \r                   s   e   l   N   e   w   T   h
0046360    i   n   g   [   m   a   s   t   e   r   L   i   s   t   ,    
0046400    l   p   ,       T   R   U   E   ]   ;  \r                   p
0046420    u   t   M   a   r   k   [   x   x   ,       y   y   ]   ;  \r
0046440                    r   e   D   r   a   w   R   e   c   t   [   g
0046460    e   t   R   e   c   t   [   l   p   ]   ,       0   ,       T
0046500    R   U   E   ,       T   R   U   E   ,       F   A   L   S   E
0046520    ]   ;  \r                   E   N   D   ;           -   -    
0046540    o   f       D   r   a   w   C   e   l   l  \r  \r           E
0046560    x   p   l   a   i   n   :       P   R   O   C   E   D   U   R
0046600    E       [   w   h   y   ,       e   x   p   l   a   n   a   t
0046620    i   o   n   :       S   T   R 376 001  \0   9 234   I   N   G
0046640    ]       =  \r                   B   E   G   I   N  \r        
0046660            I   F       e   x   p   l   a   n   a   t   i   o   n
0046700        =       N   I   L       T   H   E   N       e   x   p   l
0046720    a   n   a   t   i   o   n       _       "   "   L   ;  \r    
0046740                [   ]       _       t   y   p   e   I   n   C   [
0046760    "   C   a   n   '   t       r   u   n       P   L   A   m   a
0047000    k   e   r       [   C   o   n   f   i   r   m   ]   "   L   ,
0047020        w   h   y   ,       e   x   p   l   a   n   a   t   i   o
0047040    n   ]  \r                   E   N   D   ;  \r  \r           F
0047060    i   x   E   x   t   e   n   s   i   o   n   :       P   R   O
0047100    C   E   D   U   R   E       [   s   ,       e   x   t   :    
0047120    S   T   R   I   N   G   ]       R   E   T   U   R   N   S    
0047140    [   s   e   :       S   T   R   I   N   G   ]       =  \r    
0047160                B   E   G   I   N  \r                   F   O   R
0047200        i   :       C   A   R   D   I   N   A   L       I   N    
0047220    [   0   .   .   s   .   l   e   n   g   t   h   ) 376 001  \0
0047240  354 371       D   O       I   F       s   [   i   ]       =    
0047260    '   .       T   H   E   N       R   E   T   U   R   N   [   s
0047300    ]       E   N   D   L   O   O   P   ;  \r                   s
0047320    e       _       G   e   t   S   t   r   i   n   g   [   s   .
0047340    l   e   n   g   t   h       +       e   x   t   .   l   e   n
0047360    g   t   h   ]   ;  \r                   S   t   r   i   n   g
0047400    D   e   f   s   .   A   p   p   e   n   d   S   t   r   i   n
0047420    g   [   t   o   :       s   e   ,       f   r   o   m   :    
0047440    s   ]   ;  \r                   S   t   r   i   n   g   D   e
0047460    f   s   .   A   p   p   e   n   d   S   t   r   i   n   g   [
0047500    t   o   :       s   e   ,       f   r   o   m   :       e   x
0047520    t   ]   ;  \r                   F   r   e   e   S   t   r   i
0047540    n   g   [   s   ]   ;  \r                   E   N   D   ;  \r
0047560   \r           R   e   q   u   e   s   t   S   t   r   i   n   g
0047600    :       P   R   O   C   E   D   U   R   E   [   s   1   :    
0047620    S   T   R   I   N   G       _       N   I   L   ,       s   2
0047640    :     376 001  \0   ^   /   S   T   R   I   N   G       _    
0047660    N   I   L   ,       s   3   :       S   T   R   I   N   G    
0047700    _       N   I   L   ]  \r                   R   E   T   U   R
0047720    N   S   [   s   R   e   s   u   l   t   :       S   T   R   I
0047740    N   G   ]       =  \r                   B   E   G   I   N  \r
0047760                    o   k   :       B   O   O   L   E   A   N   ;
0050000   \r                   [   o   k   ,       s   R   e   s   u   l
0050020    t   ,       ]       _       t   y   p   e   I   n   [  \r    
0050040                        I   F       s   1   #   N   I   L       T
0050060    H   E   N       s   1       E   L   S   E       "   "   L   ,
0050100   \r                           I   F       s   2   #   N   I   L
0050120        T   H   E   N       s   2       E   L   S   E       "   "
0050140    L   ,  \r                           I   F       s   3   #   N
0050160    I   L       T   H   E   N       s   3       E   L   S   E    
0050200    "   "   L   ]   ;  \r                   I   F       N   O   T
0050220        o   k       T   H   E   N       S   I   G   N   A   L    
0050240    P   u   n   t   ;  \r     376 001  \0   % 266               E
0050260    N   D   ;  \r  \r           R   e   q   u   e   s   t   I   n
0050300    t   e   g   e   r   :       P   R   O   C   E   D   U   R   E
0050320    [   s   1   :       S   T   R   I   N   G       _       N   I
0050340    L   ,       s   2   :       S   T   R   I   N   G       _    
0050360    N   I   L   ]  \r                   R   E   T   U   R   N   S
0050400    [   I   N   T   E   G   E   R   ]       =  \r                
0050420    B   E   G   I   N  \r                   D   O  \r            
0050440                s   :       S   T   R   I   N   G       _       R
0050460    e   q   u   e   s   t   S   t   r   i   n   g   [   s   1   ,
0050500        s   2   ]   ;  \r                           n   :       I
0050520    N   T   E   G   E   R       _       S   t   r   i   n   g   D
0050540    e   f   s   .   S   t   r   i   n   g   T   o   D   e   c   i
0050560    m   a   l   [   s   :       s  \r                            
0050600        !       S   t   r   i   n   g   D   e   f   s   .   I   n
0050620    v   a   l   i   d   N   u   m   b   e   r       =   >       {
0050640    F   r   e   e   S   t   r   i   n   g   [   s 376 001  \0 233
0050660    ;   ]   ;       L   O   O   P   }   ]   ;  \r                
0050700            F   r   e   e   S   t   r   i   n   g   [   s   ]   ;
0050720   \r                           R   E   T   U   R   N   [   n   ]
0050740    ;  \r                           E   N   D   L   O   O   P   ;
0050760   \r                   E   N   D   ;  \r  \r           l   a   y
0051000    d   o   w   n   T   o   p   :       P   R   O   C   E   D   U
0051020    R   E       [   p   :       P   o   i   n   t       _       [
0051040    0   ,       0   ]   ]       R   E   T   U   R   N   S       [
0051060    h   p   :       P   o   i   n   t   ]       =  \r            
0051100        B   E   G   I   N  \r                   O   r   B   ,    
0051120    k   :       C   A   R   D   I   N   A   L   ;  \r            
0051140        f   l   a   g   :       B   O   O   L   E   A   N       _
0051160        T   R   U   E   ;  \r  \r                   -   -       p
0051200    l   a   c   e       t   h   e       t   o   p       l   e   f
0051220    t       c   o   r   n   e   r       c   e   l   l   ,       l
0051240    e   a   v   e       m   a   r   k       a   t       b   o   t
0051260    t 376 001  \0 217   X   o   m       r   i   g   h   t       c
0051300    o   r   n   e   r  \r                   h   p       _       S
0051320    t   e   p   P   [   S   t   e   p   P   [   p   ,       P   L
0051340    A   D   e   c   o   d   e   r   D   a   t   a   T   o   p   ,
0051360        d   o   w   n   ]   ,       P   L   A   D   e   c   o   d
0051400    e   r   T   o   p   L   e   f   t   C   o   r   n   e   r   ,
0051420        u   p   ]   ;  \r                   h   p       _       R
0051440    e   p   l   i   c   a   t   e   [   P   L   A   D   e   c   o
0051460    d   e   r   T   o   p   L   e   f   t   C   o   r   n   e   r
0051500    ,       h   p   ,       1   ,       r   i   g   h   t   ]   ;
0051520   \r                   h   p       _       S   t   e   p   P   [
0051540    h   p   ,       P   L   A   D   e   c   o   d   e   r   T   o
0051560    p   L   e   f   t   C   o   r   n   e   r   ,       d   o   w
0051600    n   ]   ;  \r  \r                   -   -       p   l   a   c
0051620    e       t   h   e       d   e   c   o   d   e   r       c   e
0051640    l   l   s   ,       l   e   a   v   e       m   a   r   k    
0051660    a   t       b   o   t 376 001  \0 024   Z   t   o   m       r
0051700    i   g   h   t       c   o   r   n   e   r  \r                
0051720    F   O   R       k       I   N       [   0   .   .   i   n   C
0051740    o   u   n   t   )       D   O  \r  \t   f   l   a   g       _
0051760        i   n   p   u   t   L   i   s   t   [   k   ]   .   T   o
0052000    p   B   o   t   t   o   m   =   b   o   t   t   o   m   ;  \r
0052020   \t   h   p       _       S   t   e   p   P   [   h   p   ,    
0052040    P   L   A   D   e   c   o   d   e   r   T   o   p   [   f   l
0052060    a   g   ]   ,       u   p   ]   ;  \r  \t   h   p       _    
0052100    R   e   p   l   i   c   a   t   e   [   P   L   A   D   e   c
0052120    o   d   e   r   T   o   p   [   f   l   a   g   ]   ,       h
0052140    p   ,       1   ,       r   i   g   h   t   ]   ;  \r  \t   h
0052160    p       _       S   t   e   p   P   [   h   p   ,       P   L
0052200    A   D   e   c   o   d   e   r   T   o   p   [   f   l   a   g
0052220    ]   ,       d   o   w   n   ]   ;  \r                        
0052240    E   N   D   L   O   O   P   ;  \r  \r                   -   -
0052260        p   l   a   c   e       t   h   e     376 001  \0 025 243
0052300    i   n   t   e   r   f   a   c   e       c   e   l   l       b
0052320    e   t   w   e   e   n       t   h   e       A   N   D       a
0052340    n   d       O   R       p   l   a   n   e   s  \r            
0052360        h   p       _       S   t   e   p   P   [   h   p   ,    
0052400    P   L   A   D   e   c   o   d   e   r   D   a   t   a   T   o
0052420    p   ,       u   p   ]   ;  \r                   h   p       _
0052440        R   e   p   l   i   c   a   t   e   [   P   L   A   D   e
0052460    c   o   d   e   r   D   a   t   a   T   o   p   ,       h   p
0052500    ,       1   ,       r   i   g   h   t   ]   ;  \r            
0052520        h   p       _       S   t   e   p   P   [   h   p   ,    
0052540    P   L   A   D   e   c   o   d   e   r   D   a   t   a   T   o
0052560    p   ,       d   o   w   n   ]   ;  \r  \r                   -
0052600    -       p   l   a   c   e       t   h   e       d   a   t   a
0052620        c   e   l   l   s   ,       l   e   a   v   e       m   a
0052640    r   k       a   t       b   o   t   t   o   m       r   i   g
0052660    h   t       c   o   r   n   e   r  \r                   O   r
0052700  376 001  \0   x 262   B       _       0   ;  \r                
0052720    F   O   R       k       I   N       [   0   .   .   o   u   t
0052740    C   o   u   n   t   )       D   O  \r  \t   f   l   a   g    
0052760    _       o   u   t   p   u   t   L   i   s   t   [   k   ]   .
0053000    T   o   p   B   o   t   t   o   m   =   b   o   t   t   o   m
0053020    ;  \r  \t   h   p       _       S   t   e   p   P   [   h   p
0053040    ,       P   L   A   D   a   t   a   T   o   p   [   f   l   a
0053060    g   ]   ,       u   p   ]   ;  \r  \t   h   p       _       R
0053100    e   p   l   i   c   a   t   e   [   P   L   A   D   a   t   a
0053120    T   o   p   [   f   l   a   g   ]   ,       h   p   ,       1
0053140    ,       r   i   g   h   t   ]   ;  \r  \t   h   p       _    
0053160    S   t   e   p   P   [   h   p   ,       P   L   A   D   a   t
0053200    a   T   o   p   [   f   l   a   g   ]   ,       d   o   w   n
0053220    ]   ;  \r  \t   O   r   B       _       O   r   B       +    
0053240    1   ;  \r  \t   I   F       (   O   r   B       =       b   o
0053260    i   s   t   C   o   u   n   t   )       A   N   D       (   o
0053300    u   t   C   o   u 376 001  \0 314 366   n   t       -       k
0053320    )       >       m   i   n   B   o   i   s   t   S   p   a   c
0053340    e  \r  \t               T   H   E   N       B   E   G   I   N
0053360   \r  \t  \t   O   r   B       _       0   ;  \r  \t  \t   h   p
0053400        _       S   t   e   p   P   [   h   p   ,       P   L   A
0053420    D   a   t   a   T   o   p   G   n   d   ,       u   p   ]   ;
0053440   \r  \t  \t   h   p       _       R   e   p   l   i   c   a   t
0053460    e   [   P   L   A   D   a   t   a   T   o   p   G   n   d   ,
0053500        h   p   ,       1   ,       r   i   g   h   t   ]   ;  \r
0053520   \t  \t   h   p       _       S   t   e   p   P   [   h   p   ,
0053540        P   L   A   D   a   t   a   T   o   p   G   n   d   ,    
0053560    d   o   w   n   ]   ;  \r  \t                           E   N
0053600    D   ;  \r                           E   N   D   L   O   O   P
0053620    ;  \r  \r                   -   -       p   l   a   c   e    
0053640    t   o   p       r   i   g   h   t       c   o   r   n   e   r
0053660        c   e   l   l   ,       l   e   a   v   e       m   a   r
0053700    k       a   t       l   e   f   t     376 001  \0 260 262   b
0053720    o   t   t   o   m       o   f       r   o   w  \r            
0053740        h   p       _       S   t   e   p   P   [   h   p   ,    
0053760    P   L   A   D   a   t   a   T   o   p   R   i   g   h   t   C
0054000    o   r   n   e   r   ,       u   p   ]   ;  \r                
0054020    h   p       _       R   e   p   l   i   c   a   t   e   [   P
0054040    L   A   D   a   t   a   T   o   p   R   i   g   h   t   C   o
0054060    r   n   e   r   ,       h   p   ,       1   ,       r   i   g
0054100    h   t   ]   ;  \r                   h   p       _       S   t
0054120    e   p   P   [   p   ,       P   L   A   D   e   c   o   d   e
0054140    r   D   a   t   a   T   o   p   ,       d   o   w   n   ]   ;
0054160   \r  \r                   E   N   D   ;  \r  \r  \r           l
0054200    a   y   d   o   w   n   B   o   d   y   :       P   R   O   C
0054220    E   D   U   R   E       [   p   :       P   o   i   n   t    
0054240    _       [   0   ,       0   ]   ]       R   E   T   U   R   N
0054260    S       [   h   p   :       P   o   i   n   t   ]       =  \r
0054300   \r                   B   E   G   I   N  \r                 376
0054320  001  \0 024 304   i   ,       j   ,       k   :       C   A   R
0054340    D   I   N   A   L       _       0   ;  \r                   A
0054360    n   d   B   ,       O   r   B   :       C   A   R   D   I   N
0054400    A   L       _       0   ;  \r                   P   T   ,    
0054420    P   T   0   ,       P   T   1   :       P   T   e   r   m   L
0054440    i   n   k   ;  \r                   f   l   a   g   :       B
0054460    O   O   L   E   A   N       _       T   R   U   E   ;  \r  \r
0054500                    F   O   R       i       I   N       h   a   s
0054520    h   I   n   d   e   x       D   O  \r                        
0054540    F   O   R       P   T       _       h   a   s   h   P   T   e
0054560    r   m   [   i   ]   ,       P   T   .   n   e   x   t       U
0054600    N   T   I   L       P   T   =   N   I   L       D   O  \r  \r
0054620   \t   h   p       _       p   ;  \r  \t   j       _       j    
0054640    +       1   ;  \r  \r  \t   -   -       l   a   y   d   o   w
0054660    n       t   h   e       D   e   c   o   d   e   r       P   u
0054700    l   l   u   p  \r  \t   h   p       _       R   e   p   l   i
0054720    c   a   t   e 376 001  \0 353 021   [   P   L   A   D   e   c
0054740    o   d   e   r   L   e   f   t   [   f   l   a   g   ]   ,    
0054760    h   p   ,       1   ,       r   i   g   h   t   ]   ;  \r  \r
0055000   \t   -   -       l   a   y   d   o   w   n       t   h   e    
0055020    p   r   o   d   u   c   t       t   e   r   m       i   n   p
0055040    u   t   s  \r  \t   F   O   R       k       I   N       [   0
0055060    .   .   i   n   C   o   u   n   t   )       D   O  \r  \t    
0055100        S   E   L   E   C   T       P   T   .   i   n   p   u   t
0055120    .   t   e   r   m   [   k   ]       F   R   O   M  \r  \t    
0055140                A   s   s   e   r   t       =   >  \r  \t  \t   h
0055160    p       _       R   e   p   l   i   c   a   t   e   [   P   L
0055200    A   D   e   c   o   d   e   r   [   T   R   U   E   ]   [   F
0055220    A   L   S   E   ]   ,       h   p   ,       1   ,       r   i
0055240    g   h   t   ]   ;  \r  \t                   I   n   v   e   r
0055260    t       =   >  \r  \t  \t   h   p       _       R   e   p   l
0055300    i   c   a   t   e   [   P   L   A   D   e   c   o   d   e   r
0055320    [   F   A   L   S   E   ]   [   T 376 001  \0 256  \n   R   U
0055340    E   ]   ,       h   p   ,       1   ,       r   i   g   h   t
0055360    ]   ;  \r  \t                   A   b   s   e   n   t       =
0055400    >  \r  \t  \t   h   p       _       R   e   p   l   i   c   a
0055420    t   e   [   P   L   A   D   e   c   o   d   e   r   [   F   A
0055440    L   S   E   ]   [   F   A   L   S   E   ]   ,       h   p   ,
0055460        1   ,       r   i   g   h   t   ]   ;  \r  \t            
0055500    E   N   D   C   A   S   E   ;  \r  \t   E   N   D   L   O   O
0055520    P   ;  \r  \t   I   F       f   l   a   g      \r  \t        
0055540        T   H   E   N       P   T   0       _       P   T      \r
0055560   \t               E   L   S   E       P   T   1       _       P
0055600    T   ;  \r  \r  \t   -   -       l   a   y   d   o   w   n    
0055620    t   h   e       O   R       p   l   a   n   e       i   n    
0055640    p   a   i   r   s  \r  \t   f   l   a   g       _       N   O
0055660    T       f   l   a   g   ;  \r  \t   I   F       f   l   a   g
0055700        T   H   E   N       B   E   G   I   N  \r  \r  \t        
0055720        -   -       l   a   y   d   o   w   n       t   h 376 001
0055740   \0 251   \   e       i   n   t   e   r   f   a   c   e       b
0055760    l   o   c   k  \r  \t               h   p       _       S   t
0056000    e   p   P   [   h   p   ,       P   L   A   D   e   c   o   d
0056020    e   r   [   F   A   L   S   E   ]   [   F   A   L   S   E   ]
0056040    ,       u   p   ]   ;  \r  \t               h   p       _    
0056060    R   e   p   l   i   c   a   t   e   [   P   L   A   D   e   c
0056100    o   d   e   r   D   a   t   a   ,       h   p   ,       1   ,
0056120        r   i   g   h   t   ]   ;  \r  \r  \t               -   -
0056140        l   a   y   d   o   w   n       t   h   e       o   u   t
0056160    p   u   t   s       t   h   a   t       t   h   e       p   r
0056200    o   d   u   c   t       t   e   r   m       d   r   i   v   e
0056220    s  \r  \t               O   r   B       _       0   ;  \r  \t
0056240                F   O   R       k       I   N       [   0   .   .
0056260    o   u   t   C   o   u   n   t   )       D   O  \r  \t        
0056300                h   p       _       R   e   p   l   i   c   a   t
0056320    e   [   P   L   A   D   a   t   a   [   P   T   1   .   o   u
0056340    t   p   u 376 001  \0   a 213   t   .   t   e   r   m   [   k
0056360    ]   =   A   s   s   e   r   t   ]  \r  \t              \t  \t
0056400    [   P   T   0   .   o   u   t   p   u   t   .   t   e   r   m
0056420    [   k   ]   =   A   s   s   e   r   t   ]   ,       h   p   ,
0056440        1   ,       r   i   g   h   t   ]   ;  \r  \t            
0056460            O   r   B       _       O   r   B       +       1   ;
0056500   \r  \t                       I   F       O   r   B       =    
0056520    b   o   i   s   t   C   o   u   n   t       A   N   D       (
0056540    o   u   t   C   o   u   n   t   -   k   )       >       m   i
0056560    n   B   o   i   s   t   S   p   a   c   e  \r  \t            
0056600                    T   H   E   N       B   E   G   I   N  \r  \t
0056620   \t       h   p       _       R   e   p   l   i   c   a   t   e
0056640    [   P   L   A   D   a   t   a   V   G   n   d   ,       h   p
0056660    ,       1   ,       r   i   g   h   t   ]   ;  \r  \t  \t    
0056700    O   r   B       _       0   ;  \r  \t  \t   E   N   D   ;  \r
0056720   \t                       E   N   D   L   O   O   P   ;  \r  \r
0056740   \t               -   -       l 376 001  \0   . 247   a   y   d
0056760    o   w   n       t   h   e       r   i   g   h   t       e   n
0057000    d       c   e   l   l  \r  \t               h   p       _    
0057020    R   e   p   l   i   c   a   t   e   [   P   L   A   D   a   t
0057040    a   R   i   g   h   t   ,       h   p   ,       1   ,       r
0057060    i   g   h   t   ]   ;  \r  \r  \t       E   N   D   ;  \r  \r
0057100   \t       -   -       S   t   e   p       d   o   w   n       t
0057120    o       t   h   e       n   e   w       l   a   y   e   r  \r
0057140   \t       p       _       S   t   e   p   P   [   p   ,       P
0057160    L   A   D   e   c   o   d   e   r   [   F   A   L   S   E   ]
0057200    [   F   A   L   S   E   ]   ,       d   o   w   n   ]   ;  \r
0057220   \r  \t       -   -       l   a   y   d   o   w   n       t   h
0057240    e       b   o   i   s   t   e   r       s   t   r   i   p    
0057260    e   v   e   r   y       b   o   i   s   t   C   o   u   n   t
0057300        l   a   y   e   r   s  \r  \t       A   n   d   B       _
0057320        A   n   d   B       +       1   ;  \r  \t       I   F    
0057340    A   n   d   B       =       b   o   i   s   t   C 376 001  \0
0057360  016   K   o   u   n   t       A   N   D       (   P   T   e   r
0057400    m   C   o   u   n   t       -       j   )       >       m   i
0057420    n   B   o   i   s   t   S   p   a   c   e  \r  \t            
0057440        T   H   E   N       B   E   G   I   N  \r  \t  \t   A   n
0057460    d   B       _       0   ;  \r  \t  \t   h   p       _       R
0057500    e   p   l   i   c   a   t   e   [   P   L   A   D   e   c   o
0057520    d   e   r   L   e   f   t   G   n   d   ,       p   ,       1
0057540    ,       r   i   g   h   t   ]   ;  \r  \t  \t   F   O   R    
0057560    k       I   N       [   0       .   .       i   n   C   o   u
0057600    n   t   )       D   O  \r  \t  \t           h   p       _    
0057620    R   e   p   l   i   c   a   t   e   [   P   L   A   D   e   c
0057640    o   d   e   r   G   n   d   ,       h   p   ,       1   ,    
0057660    r   i   g   h   t   ]   ;  \r  \t  \t       E   N   D   L   O
0057700    O   P   ;  \r  \t  \t   h   p       _       R   e   p   l   i
0057720    c   a   t   e   [   P   L   A   D   e   c   o   d   e   r   D
0057740    a   t   a   G   n   d   ,       h   p   ,       1   ,       r
0057760    i   g 376 001  \0 243 222   h   t   ]   ;  \r  \t  \t   O   r
0060000    B       _       0   ;  \r  \t  \t   F   O   R       k       I
0060020    N       [   0   .   .   o   u   t   C   o   u   n   t   )    
0060040    D   O  \r  \t  \t               h   p       _       R   e   p
0060060    l   i   c   a   t   e   [   P   L   A   D   a   t   a   H   G
0060100    n   d   ,       h   p   ,       1   ,       r   i   g   h   t
0060120    ]   ;  \r  \t  \t               O   r   B       _       O   r
0060140    B       +       1   ;  \r  \t  \t               I   F       (
0060160    O   r   B       =       b   o   i   s   t   C   o   u   n   t
0060200    )       A   N   D       (   o   u   t   C   o   u   n   t   -
0060220    k   )       >       m   i   n   B   o   i   s   t   S   p   a
0060240    c   e  \r  \t  \t                       T   H   E   N       B
0060260    E   G   I   N  \r  \t  \t  \t   h   p       _       R   e   p
0060300    l   i   c   a   t   e   [   P   L   A   D   a   t   a   G   n
0060320    d   ,       h   p   ,       1   ,       r   i   g   h   t   ]
0060340    ;  \r  \t  \t  \t   O   r   B       _       0   ;  \r  \t  \t
0060360                            E 376 001  \0 237 021   N   D   ;  \r
0060400   \t  \t               E   N   D   L   O   O   P   ;  \r  \t  \t
0060420    h   p       _       R   e   p   l   i   c   a   t   e   [   P
0060440    L   A   D   a   t   a   R   i   g   h   t   G   n   d   ,    
0060460    h   p   ,       1   ,       r   i   g   h   t   ]   ;  \r  \t
0060500   \t   p       _       S   t   e   p   P   [   p   ,       P   L
0060520    A   D   e   c   o   d   e   r   L   e   f   t   G   n   d   ,
0060540        d   o   w   n   ]   ;  \r  \t                   E   N   D
0060560    ;  \r  \r                       E   N   D   L   O   O   P   ;
0060600   \r               E   N   D   L   O   O   P   ;  \r  \r        
0060620        -   -       c   h   e   c   k       f   o   r       o   d
0060640    d       n   u   m   b   e   r       o   f       p   r   o   d
0060660    u   c   t       t   e   r   m   s       a   n   d       f   i
0060700    n   i   s   h       l   a   y   o   u   t      \r            
0060720    -   -       i   f       n   e   c   e   s   s   a   r   y  \r
0060740                I   F       N   O   T       f   l   a   g       T
0060760    H   E   N       B   E   G   I   N  \r  \r  \t 376 001  \0 227
0061000  265   -   -       l   a   y   d   o   w   n       a       N   U
0061020    L   L       A   N   D       t   e   r   m       r   o   w  \r
0061040   \t   h   p       _       p   ;  \r  \t   h   p       _       R
0061060    e   p   l   i   c   a   t   e   [   P   L   A   D   e   c   o
0061100    d   e   r   L   e   f   t   [   f   l   a   g   ]   ,       h
0061120    p   ,       1   ,       r   i   g   h   t   ]   ;  \r  \t   h
0061140    p       _       R   e   p   l   i   c   a   t   e   [   P   L
0061160    A   D   e   c   o   d   e   r   [   F   A   L   S   E   ]   [
0061200    F   A   L   S   E   ]   ,       h   p   ,       i   n   C   o
0061220    u   n   t   ,       r   i   g   h   t   ]   ;  \r  \r  \t   -
0061240    -       l   a   y   d   o   w   n       t   h   e       i   n
0061260    t   e   r   f   a   c   e       b   l   o   c   k  \r  \t    
0061300            h   p       _       S   t   e   p   P   [   h   p   ,
0061320        P   L   A   D   e   c   o   d   e   r   [   F   A   L   S
0061340    E   ]   [   F   A   L   S   E   ]   ,       u   p   ]   ;  \r
0061360   \t               h   p       _       R   e   p   l   i   c   a
0061400    t 376 001  \0   [   {   e   [   P   L   A   D   e   c   o   d
0061420    e   r   D   a   t   a   ,       h   p   ,       1   ,       r
0061440    i   g   h   t   ]   ;  \r  \r  \t               -   -       l
0061460    a   y   d   o   w   n       t   h   e       o   u   t   p   u
0061500    t   s       t   h   a   t       t   h   e       p   r   o   d
0061520    u   c   t       t   e   r   m       d   r   i   v   e   s  \r
0061540   \t               O   r   B       _       0   ;  \r  \t        
0061560        F   O   R       k       I   N       [   0   .   .   o   u
0061600    t   C   o   u   n   t   )       D   O  \r  \t                
0061620        h   p       _       R   e   p   l   i   c   a   t   e   [
0061640    P   L   A   D   a   t   a   [   F   A   L   S   E   ]  \r  \t
0061660               \t  \t   [   P   T   0   .   o   u   t   p   u   t
0061700    .   t   e   r   m   [   k   ]   =   A   s   s   e   r   t   ]
0061720    ,       h   p   ,       1   ,       r   i   g   h   t   ]   ;
0061740   \r  \t                       O   r   B       _       O   r   B
0061760        +       1   ;  \r  \t                       I   F       O
0062000    r   B       =       b 376 001  \0   i 201   o   i   s   t   C
0062020    o   u   n   t       A   N   D       (   o   u   t   C   o   u
0062040    n   t   -   k   )       >       m   i   n   B   o   i   s   t
0062060    S   p   a   c   e  \r  \t                               T   H
0062100    E   N       B   E   G   I   N  \r  \t  \t       h   p       _
0062120        R   e   p   l   i   c   a   t   e   [   P   L   A   D   a
0062140    t   a   V   G   n   d   ,       h   p   ,       1   ,       r
0062160    i   g   h   t   ]   ;  \r  \t  \t       O   r   B       _    
0062200    0   ;  \r  \t  \t   E   N   D   ;  \r  \t                    
0062220    E   N   D   L   O   O   P   ;  \r  \r  \t               -   -
0062240        l   a   y   d   o   w   n       t   h   e       r   i   g
0062260    h   t       e   n   d       c   e   l   l  \r  \t            
0062300    h   p       _       R   e   p   l   i   c   a   t   e   [   P
0062320    L   A   D   a   t   a   R   i   g   h   t   ,       h   p   ,
0062340        1   ,       r   i   g   h   t   ]   ;  \r  \r  \t        
0062360        -   -       S   t   e   p       d   o   w   n       t   o
0062400        t   h   e       n   e   w       l   a 376 001  \0   ( 273
0062420    y   e   r  \r  \t               p       _       S   t   e   p
0062440    P   [   p   ,       P   L   A   D   e   c   o   d   e   r   [
0062460    F   A   L   S   E   ]   [   F   A   L   S   E   ]   ,       d
0062500    o   w   n   ]   ;  \r  \r  \t   E   N   D   ;  \r  \r        
0062520            h   p       _       p   ;  \r  \r                   E
0062540    N   D   ;  \r  \r           l   a   y   d   o   w   n   B   o
0062560    t   t   o   m   :       P   R   O   C   E   D   U   R   E    
0062600    [   p   :       P   o   i   n   t       _       [   0   ,    
0062620    0   ]   ]       R   E   T   U   R   N   S       [   h   p   :
0062640        P   o   i   n   t   ]       =  \r  \r                   B
0062660    E   G   I   N  \r                       O   r   B   ,       k
0062700    :       C   A   R   D   I   N   A   L       _       0   ;  \r
0062720                        f   l   a   g   :       B   O   O   L   E
0062740    A   N       _       T   R   U   E   ;  \r  \r                
0062760        h   p       _       p   ;  \r                       h   p
0063000        _       R   e   p   l   i   c   a   t   e   [   P   L   A
0063020  376 001  \0 267 202   D   e   c   o   d   e   r   B   o   t   t
0063040    o   m   L   e   f   t   C   o   r   n   e   r   ,       h   p
0063060    ,       1   ,       r   i   g   h   t   ]   ;  \r            
0063100            F   O   R       k       I   N       [   0   .   .   i
0063120    n   C   o   u   n   t   )       D   O  \r  \t   f   l   a   g
0063140        _       i   n   p   u   t   L   i   s   t   [   k   ]   .
0063160    T   o   p   B   o   t   t   o   m   =   b   o   t   t   o   m
0063200    ;  \r  \t   h   p       _       R   e   p   l   i   c   a   t
0063220    e   [   P   L   A   D   e   c   o   d   e   r   B   o   t   t
0063240    o   m   [   f   l   a   g   ]   ,       h   p   ,       1   ,
0063260        r   i   g   h   t   ]   ;  \r                           E
0063300    N   D   L   O   O   P   ;  \r                       h   p    
0063320    _       R   e   p   l   i   c   a   t   e   [   P   L   A   D
0063340    e   c   o   d   e   r   D   a   t   a   B   o   t   t   o   m
0063360    ,       h   p   ,       1   ,       r   i   g   h   t   ]   ;
0063400   \r                       F   O   R       k       I   N       [
0063420    0   .   .   o   u 376 001  \0   I 322   t   C   o   u   n   t
0063440    )       D   O  \r  \t   f   l   a   g       _       o   u   t
0063460    p   u   t   L   i   s   t   [   k   ]   .   T   o   p   B   o
0063500    t   t   o   m   =   b   o   t   t   o   m   ;  \r  \t   h   p
0063520        _       R   e   p   l   i   c   a   t   e   [   P   L   A
0063540    O   u   t   M   u   x   [   f   l   a   g   ]   ,       h   p
0063560    ,       1   ,       r   i   g   h   t   ]   ;  \r  \t   O   r
0063600    B       _       O   r   B       +       1   ;  \r  \t   I   F
0063620        O   r   B       =       b   o   i   s   t   C   o   u   n
0063640    t       A   N   D       (   o   u   t   C   o   u   n   t   -
0063660    k   )       >       m   i   n   B   o   i   s   t   S   p   a
0063700    c   e  \r  \t           T   H   E   N       B   E   G   I   N
0063720   \r  \t  \t       h   p       _       R   e   p   l   i   c   a
0063740    t   e   [   P   L   A   D   a   t   a   B   o   t   t   o   m
0063760    G   n   d   ,       h   p   ,       1   ,       r   i   g   h
0064000    t   ]   ;  \r  \t  \t       O   r   B       _       0   ;  \r
0064020   \t  \t   E   N   D   ;  \r             376 001  \0  \n 241    
0064040            E   N   D   L   O   O   P   ;  \r                   h
0064060    p       _       R   e   p   l   i   c   a   t   e   [   P   L
0064100    A   D   a   t   a   B   o   t   t   o   m   R   i   g   h   t
0064120    C   o   r   n   e   r   ,       h   p   ,       1   ,       r
0064140    i   g   h   t   ]   ;  \r                   E   N   D   ;  \r
0064160   \r  \r           o   k   :       B   O   O   L   E   A   N   ;
0064200   \r           -   -   b   o   d   y   H   e   i   g   h   t   ,
0064220        d   e   c   o   d   e   r   D   a   t   a   X   ,       d
0064240    a   t   a   X   ,       d   a   t   a   R   i   g   h   t   X
0064260    :       l   o   c   N   u   m   ;  \r           -   -   c   u
0064300    r   P   t   :       P   o   i   n   t   ;  \r           -   -
0064320    d   e   c   o   d   e   r   W   i   d   t   h   ,       w   o
0064340    r   d   s   P   e   r   D   a   t   a   R   o   w   ,       w
0064360    o   r   d   C   o   u   n   t   ,       w   o   r   d   W   i
0064400    d   t   h   :       C   A   R   D   I   N   A   L   ;  \r    
0064420        -   -   l   o   g   W   o   r   d   s   P   e   r   D 376
0064440  001  \0   ` 024   a   t   a   R   o   w   :       I   N   T   E
0064460    G   E   R   ;  \r           f   i   l   e   N   a   m   e   ,
0064500        m   e   m   N   a   m   e   ,       c   e   l   l   F   a
0064520    m   i   l   y   ,       P   L   A   N   a   m   e   ,       w
0064540    d   P   e   r   R   o   w   S   t   r   :       S   T   R   I
0064560    N   G       _       N   I   L   ;  \r           s   :       S
0064600    t   r   e   a   m   D   e   f   s   .   S   t   r   e   a   m
0064620    H   a   n   d   l   e       _       N   I   L   ;  \r        
0064640    l   p   p   :       L   O   N   G       P   O   I   N   T   E
0064660    R       T   O       l   i   s   t       _       N   I   L   ;
0064700            -   -       l   i   s   t       o   f       c   e   l
0064720    l   s       a   l   r   e   a   d   y       p   l   a   c   e
0064740    d  \r  \r           -   -       M       a       i       n    
0064760            B       o       d       y  \r  \r           B   E   G
0065000    I   N  \r           E   N   A   B   L   E       P   u   n   t
0065020        =   >       G   O   T   O       E   x   i   t   ;        
0065040    -   -       f 376 001  \0   d   [   o   r       e   x   i   t
0065060    s  \r           [   o   k   ,       f   i   l   e   N   a   m
0065100    e   ,       ]       _       t   y   p   e   I   n   [   "   "
0065120    L   ,       "   D   a   t   a       f   i   l   e   :   "   L
0065140    ,       "   .   s   l   i   m       f   o   r   m   a   t   "
0065160    L   ]   ;  \r           I   F       N   O   T       o   k    
0065200    T   H   E   N       G   O   T   O       E   x   i   t   ;  \r
0065220            f   i   l   e   N   a   m   e       _       F   i   x
0065240    E   x   t   e   n   s   i   o   n   [   f   i   l   e   N   a
0065260    m   e   ,       "   .   s   l   i   m   "   L   ]   ;  \r    
0065300        s       _       S   t   r   e   a   m   D   e   f   s   .
0065320    N   e   w   B   y   t   e   S   t   r   e   a   m   [  \r    
0065340                f   i   l   e   N   a   m   e   ,       S   t   r
0065360    e   a   m   D   e   f   s   .   R   e   a   d       !  \r    
0065400                S   e   g   m   e   n   t   D   e   f   s   .   F
0065420    i   l   e   N   a   m   e   E   r   r   o   r       =   >    
0065440    {  \r                           E 376 001  \0 317 210   x   p
0065460    l   a   i   n   [   "   C   a   n   '   t       f   i   n   d
0065500        .   s   l   i   m       f   i   l   e   "   L   ,       n
0065520    a   m   e   ]   ;       G   O   T   O       E   x   i   t   }
0065540    ]   ;  \r  \r           [   o   k   ,       c   e   l   l   F
0065560    a   m   i   l   y   ,       ]       _       t   y   p   e   I
0065600    n   [   "   C   e   l   l       f   a   m   i   l   y   :   "
0065620    L   ,       "   "   L   ,       "   "   L   ]   ;  \r        
0065640    I   F       N   O   T       o   k       T   H   E   N       G
0065660    O   T   O       E   x   i   t   ;  \r           [   o   k   ,
0065700        P   L   A   N   a   m   e   ,       ]       _       t   y
0065720    p   e   I   n   [   "   N   a   m   e       o   f       c   o
0065740    m   p   l   e   t   e   d       P   L   A       c   e   l   l
0065760    :   "   L   ,       "   "   L   ,       "   "   L   ]   ;  \r
0066000            I   F       N   O   T       o   k       T   H   E   N
0066020        G   O   T   O       E   x   i   t   ;  \r           F   i
0066040    n   d   P   L   A   C   e   l   l   s   [   c   e   l 376 001
0066060   \0   i 352   l   F   a   m   i   l   y   ]   ;  \r  \r        
0066100    -   -       B   u   i   l   d       t   h   e       P   L   A
0066120    '   s       P   r   o   d   u   c   t       T   e   r   m    
0066140    M   a   t   r   i   x  \r           B   u   i   l   d   P   r
0066160    o   d   u   c   t   T   e   r   m   s   [   s   ]   ;  \r  \r
0066200            -   -       C   o   n   s   t   r   u   c   t       t
0066220    h   e       P   L   A       s   y   m   b   o   l  \r        
0066240    B   E   G   I   N  \r                   f   l   a   g   :    
0066260    B   O   O   L   E   A   N       _       T   R   U   E   ;  \r
0066300                    p   ,       h   p   :       P   o   i   n   t
0066320    ;  \r  \r                   p       _       h   p       _    
0066340    [   0   ,       0   ]   ;  \r                   b   o   i   s
0066360    t   C   o   u   n   t       _       R   e   q   u   e   s   t
0066400    I   n   t   e   g   e   r   [   "   N   u   m   b   e   r    
0066420    o   f       M   i   n       T   e   r   m   s       b   e   t
0066440    w   e   e   n       G   N   D       L   i   n   e   s   :   "
0066460    L   ]   ; 376 001  \0   7   k  \r                   m   i   n
0066500    B   o   i   s   t   S   p   a   c   e       _       R   e   q
0066520    u   e   s   t   I   n   t   e   g   e   r   [   "   M   i   n
0066540    i   m   u   m       n   u   m   b   e   r       o   f       M
0066560    i   n       T   e   r   m   s       b   e   t   w   e   e   n
0066600        G   N   D       l   i   n   e   s   "   L   ]   ;  \r  \r
0066620                    -   -       l   a   y   d   o   w   n       t
0066640    h   e       t   o   p       o   f       t   h   e       P   L
0066660    A  \r                   p       _       l   a   y   d   o   w
0066700    n   T   o   p   [   p   ]   ;  \r  \r                   -   -
0066720        l   a   y   d   o   w   n       t   h   e       b   o   d
0066740    y       o   f       t   h   e       P   L   A  \r            
0066760        p       _       l   a   y   d   o   w   n   B   o   d   y
0067000    [   p   ]   ;  \r  \r                   -   -       l   a   y
0067020    d   o   w   n       t   h   e       b   o   t   t   o   m    
0067040    o   f       t   h   e       P   L   A  \r                   p
0067060        _       l   a   y   d   o 376 001  \0   e 262   w   n   B
0067100    o   t   t   o   m   [   p   ]   ;  \r  \r           E   N   D
0067120    ;  \r  \r           D   r   a   w   C   e   l   l   [   M   a
0067140    k   e   N   e   w   C   e   l   l   [   P   L   A   N   a   m
0067160    e   ,       l   p   p   ]   .   o   b   ]   ;  \r           P
0067200    L   A   N   a   m   e       _       N   I   L   ;           -
0067220    -       w   e       g   a   v   e       t   h   e       n   a
0067240    m   e       t   o       t   h   e       c   e   l   l  \r  \r
0067260   \r  \r  \r   -   -   w   o   r   d   s   P   e   r   D   a   t
0067300    a   R   o   w       _       1   ;       l   o   g   W   o   r
0067320    d   s   P   e   r   D   a   t   a   R   o   w       _       0
0067340    ;  \r   -   -   I   F       P   L   A   O   u   t   M   u   x
0067360    [   F   A   L   S   E   ]   #   N   I   L       T   H   E   N
0067400   \r   -   -           B   E   G   I   N  \r   -   -           t
0067420    :       C   A   R   D   I   N   A   L   ;  \r   -   -        
0067440    [   o   k   ,       w   d   P   e   r   R   o   w   S   t   r
0067460    ,       ]       _       t   y   p   e   I   n   [ 376 001  \0
0067500    o 006   "   "   L   ,       "   W   o   r   d   s       p   e
0067520    r       r   o   w   :   "   L   ,       "   (   p   o   w   e
0067540    r       o   f       2   )   "   L   ]   ;  \r   -   -        
0067560    I   F       N   O   T       o   k       T   H   E   N       G
0067600    O   T   O       E   x   i   t   ;  \r   -   -           t    
0067620    _       S   t   r   i   n   g   D   e   f   s   .   S   t   r
0067640    i   n   g   T   o   N   u   m   b   e   r   [   s   :       w
0067660    d   P   e   r   R   o   w   S   t   r   ,       r   a   d   i
0067700    x   :       1   0   ]   ;  \r   -   -           F   O   R    
0067720    w   o   r   d   s   P   e   r   D   a   t   a   R   o   w    
0067740    _       1   ,       2   *   w   o   r   d   s   P   e   r   D
0067760    a   t   a   R   o   w       W   H   I   L   E       w   o   r
0070000    d   s   P   e   r   D   a   t   a   R   o   w   <   t       D
0070020    O  \r   -   -                   l   o   g   W   o   r   d   s
0070040    P   e   r   D   a   t   a   R   o   w       _       l   o   g
0070060    W   o   r   d   s   P   e   r   D   a   t   a   R   o   w   +
0070100    1   ; 376 001  \0 366   ]  \r   -   -                   E   N
0070120    D   L   O   O   P   ;  \r   -   -           E   N   D   ;  \r
0070140   \r   -   -   M   B   .   R   e   C   a   s   t   [   m   e   m
0070160    :       m   b   M   e   m   ,       n   e   w   W   o   r   d
0070200    W   i   d   t   h   :       m   b   M   e   m   .   w   i   d
0070220    t   h   *   w   o   r   d   s   P   e   r   D   a   t   a   R
0070240    o   w   ]   ;  \r   -   -   M   B   .   S   u   p   p   r   e
0070260    s   s   D   e   f   a   u   l   t   W   o   r   d   s   [   m
0070300    e   m   :       m   b   M   e   m   ,       d   e   f   a   u
0070320    l   t   :       F   A   L   S   E   ]   ;  \r   -   -   [   d
0070340    e   c   o   d   e   r   W   i   d   t   h   ,       w   o   r
0070360    d   C   o   u   n   t   ,       w   o   r   d   W   i   d   t
0070400    h   ]       _       M   B   .   A   n   a   l   y   z   e   M
0070420    e   m   o   r   y   [   m   b   M   e   m   ]   ;  \r  \r   -
0070440    -   d   e   c   o   d   e   r   W   i   d   t   h       _    
0070460    d   e   c   o   d   e   r   W   i   d   t   h   +   l   o   g
0070500    W   o   r   d   s   P   e 376 001  \0 322   `   r   D   a   t
0070520    a   R   o   w   ;  \r   -   -   w   o   r   d   C   o   u   n
0070540    t       _       w   o   r   d   C   o   u   n   t       +    
0070560    (   w   o   r   d   C   o   u   n   t       M   O   D       2
0070600    )   +   2   *   l   o   g   W   o   r   d   s   P   e   r   D
0070620    a   t   a   R   o   w   ;  \r  \r   -   -   b   o   d   y   H
0070640    e   i   g   h   t       _       S   t   e   p   P   [   ,    
0070660    d   e   c   o   d   e   C   e   l   l   ,       d   o   w   n
0070700    A   n   d   R   i   g   h   t   ,       [   x   :       1   ,
0070720        y   :       w   o   r   d   C   o   u   n   t   ]   ]   .
0070740    y   ;  \r   -   -   d   e   c   o   d   e   r   D   a   t   a
0070760    X       _       S   t   e   p   P   [   ,       d   e   c   o
0071000    d   e   C   e   l   l   ,       d   o   w   n   A   n   d   R
0071020    i   g   h   t   ,       [   x   :       d   e   c   o   d   e
0071040    r   W   i   d   t   h   ,       y   :       1   ]   ]   .   x
0071060    ;  \r   -   -   d   a   t   a   X       _       S   t   e   p
0071100    P   [   [   d   e   c   o   d   e   r   D   a 376 001  \0 304
0071120  257   t   a   X   ,       0   ]   ,       P   L   A   D   e   c
0071140    o   d   e   r   D   a   t   a   ,       r   i   g   h   t   ]
0071160    .   x   ;  \r   -   -   d   a   t   a   R   i   g   h   t   X
0071200        _       S   t   e   p   P   [  \r   -   -           [   d
0071220    a   t   a   X   ,       0   ]   ,       P   L   A   D   a   t
0071240    a   [   F   A   L   S   E   ]   [   F   A   L   S   E   ]   ,
0071260        r   i   g   h   t   ,       [   x   :       w   o   r   d
0071300    W   i   d   t   h   ,       y   :       1   ]   ]   .   x   ;
0071320   \r  \r   -   -   [   ]       _       R   e   p   l   i   c   a
0071340    t   e   E   v   e   n   O   d   d   [  \r   -   -           P
0071360    L   A   D   e   c   o   d   e   r   L   e   f   t   ,       S
0071400    t   e   p   P   [   [   0   ,       0   ]   ,       P   L   A
0071420    D   e   c   o   d   e   r   L   e   f   t   [   F   A   L   S
0071440    E   ]   ,       l   e   f   t   ]   ,       w   o   r   d   C
0071460    o   u   n   t   ,       d   o   w   n   ]   ;  \r   -   -   [
0071500    ]       _       R   e   p   l   i   c   a   t   e   [  \r   -
0071520    - 376 001  \0 002 231           P   L   A   D   e   c   o   d
0071540    e   r   T   o   p   L   e   f   t   C   o   r   n   e   r   ,
0071560        S   t   e   p   P   [   [   0   ,       0   ]   ,       P
0071600    L   A   D   e   c   o   d   e   r   T   o   p   L   e   f   t
0071620    C   o   r   n   e   r   ,       u   p   A   n   d   L   e   f
0071640    t   ]   ]   ;  \r   -   -   [   ]       _       R   e   p   l
0071660    i   c   a   t   e   [  \r   -   -           P   L   A   D   e
0071700    c   o   d   e   r   B   o   t   t   o   m   L   e   f   t   C
0071720    o   r   n   e   r   ,       S   t   e   p   P   [  \r   -   -
0071740            [   0   ,       b   o   d   y   H   e   i   g   h   t
0071760    ]   ,       P   L   A   D   e   c   o   d   e   r   B   o   t
0072000    t   o   m   L   e   f   t   C   o   r   n   e   r   ,       l
0072020    e   f   t   ]   ]   ;  \r   -   -   [   ]       _       R   e
0072040    p   l   i   c   a   t   e   [  \r   -   -           P   L   A
0072060    D   e   c   o   d   e   r   T   o   p   ,       S   t   e   p
0072100    P   [   [   0   ,       0   ]   ,       P   L   A   D   e   c
0072120    o   d   e   r   T   o 376 001  \0   3   1   p   ,       u   p
0072140    ]   ,       d   e   c   o   d   e   r   W   i   d   t   h   ,
0072160        r   i   g   h   t   ]   ;  \r   -   -   [   ]       _    
0072200    R   e   p   l   i   c   a   t   e   [   P   L   A   D   e   c
0072220    o   d   e   r   B   o   t   t   o   m   ,       [   0   ,    
0072240    b   o   d   y   H   e   i   g   h   t   ]   ,       d   e   c
0072260    o   d   e   r   W   i   d   t   h   ,       r   i   g   h   t
0072300    ]   ;  \r   -   -   [   ]       _       R   e   p   l   i   c
0072320    a   t   e   [  \r   -   -           P   L   A   D   e   c   o
0072340    d   e   r   D   a   t   a   T   o   p   ,       S   t   e   p
0072360    P   [   [   d   e   c   o   d   e   r   D   a   t   a   X   ,
0072400        0   ]   ,       P   L   A   D   e   c   o   d   e   r   D
0072420    a   t   a   T   o   p   ,       u   p   ]   ]   ;  \r   -   -
0072440    c   u   r   P   t       _       R   e   p   l   i   c   a   t
0072460    e   [   P   L   A   D   e   c   o   d   e   r   D   a   t   a
0072500    ,       [   d   e   c   o   d   e   r   D   a   t   a   X   ,
0072520        0   ]   ,       w   o   r   d   C   o 376 001  \0 301 343
0072540    u   n   t   /   2   ,       d   o   w   n   ]   ;  \r   -   -
0072560    [   ]       _       R   e   p   l   i   c   a   t   e   [   P
0072600    L   A   D   e   c   o   d   e   r   D   a   t   a   B   o   t
0072620    t   o   m   ,       c   u   r   P   t   ]   ;  \r   -   -   [
0072640    ]       _       R   e   p   l   i   c   a   t   e   E   v   e
0072660    n   O   d   d   [  \r   -   -           P   L   A   D   a   t
0072700    a   T   o   p   ,       S   t   e   p   P   [   [   d   a   t
0072720    a   X   ,       0   ]   ,       P   L   A   D   a   t   a   T
0072740    o   p   [   F   A   L   S   E   ]   ,       u   p   ]   ,  \r
0072760    -   -                   w   o   r   d   W   i   d   t   h   ,
0073000        r   i   g   h   t   ]   ;  \r   -   -   [   ]       _    
0073020    R   e   p   l   i   c   a   t   e   [  \r   -   -           P
0073040    L   A   D   a   t   a   T   o   p   R   i   g   h   t   C   o
0073060    r   n   e   r   ,       S   t   e   p   P   [   [   d   a   t
0073100    a   R   i   g   h   t   X   ,       0   ]   ,       P   L   A
0073120    D   a   t   a   T   o   p   R   i   g   h   t   C   o   r   n
0073140  376 001  \0   ' 256   e   r   ,       u   p   ]   ]   ;  \r   -
0073160    -   [   ]       _       R   e   p   l   i   c   a   t   e   [
0073200    P   L   A   D   a   t   a   R   i   g   h   t   ,       [   d
0073220    a   t   a   R   i   g   h   t   X   ,       0   ]   ,       w
0073240    o   r   d   C   o   u   n   t   /   2   ,       d   o   w   n
0073260    ]   ;  \r   -   -   [   ]       _       R   e   p   l   i   c
0073300    a   t   e   [   P   L   A   D   a   t   a   B   o   t   t   o
0073320    m   R   i   g   h   t   C   o   r   n   e   r   ,       [   d
0073340    a   t   a   R   i   g   h   t   X   ,       b   o   d   y   H
0073360    e   i   g   h   t   ]   ]   ;  \r   -   -   I   F       w   o
0073400    r   d   s   P   e   r   D   a   t   a   R   o   w   =   1    
0073420    T   H   E   N  \r   -   -           [   ]       _       R   e
0073440    p   l   i   c   a   t   e   E   v   e   n   O   d   d   [   P
0073460    L   A   D   a   t   a   B   o   t   t   o   m   ,       [   d
0073500    a   t   a   X   ,       b   o   d   y   H   e   i   g   h   t
0073520    ]   ,       w   o   r   d   W   i   d   t   h   ,       r   i
0073540    g   h   t   ]  \r 376 001  \0 330   a   -   -   E   L   S   E
0073560   \r   -   -           B   E   G   I   N  \r   -   -           c
0073600    u   r   P   t       _       [   d   a   t   a   X   ,       b
0073620    o   d   y   H   e   i   g   h   t   ]   ;  \r   -   -        
0073640    F   O   R       i   :       C   A   R   D   I   N   A   L    
0073660    I   N       [   0   .   .   w   o   r   d   W   i   d   t   h
0073700    /   w   o   r   d   s   P   e   r   D   a   t   a   R   o   w
0073720    )       D   O  \r   -   -                   c   u   r   P   t
0073740        _       R   e   p   l   i   c   a   t   e   [   P   L   A
0073760    O   u   t   M   u   x   [   F   A   L   S   E   ]   ,       c
0074000    u   r   P   t   ,       1   ,       r   i   g   h   t   ]   ;
0074020   \r   -   -                   c   u   r   P   t       _       R
0074040    e   p   l   i   c   a   t   e   [   P   L   A   O   u   t   M
0074060    u   x   [   T   R   U   E   ]   ,       c   u   r   P   t   ,
0074100        w   o   r   d   s   P   e   r   D   a   t   a   R   o   w
0074120    /   2   -   1   ,       r   i   g   h   t   ]   ;  \r   -   -
0074140                    E   N   D   L   O   O 376 001  \0 304 312   P
0074160    ;  \r   -   -           E   N   D   ;  \r   -   -   M   a   k
0074200    e   D   e   c   o   d   e   r   B   l   o   c   k   [   P   L
0074220    A   D   e   c   o   d   e   r   ,       [   0   ,       0   ]
0074240    ,       [   d   e   c   o   d   e   r   W   i   d   t   h   ,
0074260        w   o   r   d   C   o   u   n   t   ]   ,       m   b   M
0074300    e   m   ]   ;  \r   -   -   M   a   k   e   D   a   t   a   B
0074320    l   o   c   k   [   P   L   A   D   a   t   a   ,       [   d
0074340    a   t   a   X   ,       0   ]   ,       [   w   o   r   d   W
0074360    i   d   t   h   ,       w   o   r   d   C   o   u   n   t   /
0074400    2   ]   ,       m   b   M   e   m   ]   ;  \r  \r   -   -   D
0074420    r   a   w   C   e   l   l   [   M   a   k   e   N   e   w   C
0074440    e   l   l   [   P   L   A   N   a   m   e   ,       l   p   p
0074460    ]   .   o   b   ]   ;  \r           E   X   I   T   S       E
0074500    x   i   t       =   >       N   U   L   L   ;  \r           E
0074520    N   D   ;  \r  \r           -   -       g   i   v   e       b
0074540    a   c   k       a   l   l       t   h   e       s   t   o 376
0074560  001  \0 367   `   r   a   g   e       w   e       a   l   l   o
0074600    c   a   t   e   d  \r  \r   -   -   F   r   e   e   B   l   o
0074620    c   k   s   [   ]   ;  \r           Z       _       Z   o   n
0074640    e   A   l   l   o   c   D   e   f   s   .   D   e   s   t   r
0074660    o   y   A   n   X   M   Z   o   n   e   [   Z   ]   ;  \r    
0074700        I   F       f   i   l   e   N   a   m   e       #       N
0074720    I   L       T   H   E   N       F   r   e   e   S   t   r   i
0074740    n   g   [   f   i   l   e   N   a   m   e   ]   ;  \r        
0074760    I   F       m   e   m   N   a   m   e       #       N   I   L
0075000        T   H   E   N       F   r   e   e   S   t   r   i   n   g
0075020    [   m   e   m   N   a   m   e   ]   ;  \r           I   F    
0075040    c   e   l   l   F   a   m   i   l   y       #       N   I   L
0075060        T   H   E   N       F   r   e   e   S   t   r   i   n   g
0075100    [   c   e   l   l   F   a   m   i   l   y   ]   ;  \r        
0075120    I   F       P   L   A   N   a   m   e       #       N   I   L
0075140        T   H   E   N       F   r   e   e   S   t   r   i   n   g
0075160    [   P   L   A 376  \0 235 313 222   N   a   m   e   ]   ;  \r
0075200            I   F       w   d   P   e   r   R   o   w   S   t   r
0075220        #       N   I   L       T   H   E   N       F   r   e   e
0075240    S   t   r   i   n   g   [   w   d   P   e   r   R   o   w   S
0075260    t   r   ]   ;  \r           I   F       s       #       N   I
0075300    L       T   H   E   N       s   .   d   e   s   t   r   o   y
0075320    [   s   ]   ;  \r           a   n   y   C   h   a   n   g   e
0075340    s       _       s   i   n   c   e   I   O   c   h   a   n   g
0075360    e   s       _       T   R   U   E   ;  \r  \r           E   N
0075400    D   .       -   -       o   f       P   L   A   M   a   k   e
0075420    r   I   m   p   l  \r 377  \0  \0   P   L   A   M   a   k   e
0075440    r   .   c   o   n   f   i   g  \0 373 230   [ 250 354  \0  \0
0075460  376 001  \0   [   N   -   -       P   L   A   M   a   k   e   r
0075500    .   c   o   n   f   i   g  \r   -   -       m   o   d   i   f
0075520    i   e   d       b   y       C   a   r   y       K   o   r   n
0075540    f   e   l   d   :           O   c   t   o   b   e   r       1
0075560    ,       1   9   8   1           1   0   :   0   6       A   M
0075600   \r   -   -       w   r   i   t   t   e   n       b   y       M
0075620    c   C   r   e   i   g   h   t   :           A   u   g   u   s
0075640    t       7   ,       1   9   8   1           5   :   0   2    
0075660    P   M  \r  \r   P   L   A   M   a   k   e   r   :       C   O
0075700    N   F   I   G   U   R   A   T   I   O   N  \r   I   M   P   O
0075720    R   T   S  \r           p   p   d   d   d   e   f   s   ,   p
0075740    p   d   d   e   f   s   ,   p   p   d   e   f   s   ,   S   e
0075760    g   m   e   n   t   D   e   f   s   ,   I   O   D   e   f   s
0076000    ,   Z   o   n   e   A   l   l   o   c   D   e   f   s   ,  \r
0076020            S   t   r   e   a   m   D   e   f   s   ,   S   t   r
0076040    i   n   g   D   e   f   s  \r   C   O   N   T   R   O   L  \r
0076060            P   l   a 376  \0   8 205   ;   M   a   k   e   r   I
0076100    m   p   l       =  \r   B   E   G   I   N  \r   P   l   a   M
0076120    a   k   e   r   I   m   p   l   ;  \r   E   N   D   .  \r 032
0076140    (   1   7   9   2   )   \   3   b   8   B   1   1   6   b   8
0076160    B  \r 377  \0  \0   P   L   A   m   a   k   e   r   -   s   o
0076200    u   r   c   e   s   .   c   m  \0 373 227 343   O 327  \0  \0
0076220  376  \0 021 246   @   P   L   A   M   a   k   e   r   I   m   p
0076240    l   .   m   e   s   a 377  \0  \0   P   L   A   m   a   k   e
0076260    r   -   s   a   v   e   .   c   m  \0 373 234 266 331 221  \0
0076300   \0 376  \0 313 220 250   f   t   p       i   n   d   i   g   o
0076320        c   o   n   n   /   c       c   h   i   p   m   o   n   k
0076340        d   i   r   /   c       >   X   P   L   A   m   a   k   e
0076360    r       s   t   /   c       P   L   A   M   a   k   e   r   .
0076400    c   h   i   p   b   c   d       P   L   A   M   a   k   e   r
0076420    .   s   y   m   b   o   l   s       d   u   m   p   /   c    
0076440    P   L   A   m   a   k   e   r   -   s   o   u   r   c   e   s
0076460    .   d   m       @   P   L   A   m   a   k   e   r   -   s   o
0076500    u   r   c   e   s   .   c   m   @       P   L   A   M   a   k
0076520    e   r   .   c   o   n   f   i   g       P   L   A   m   a   k
0076540    e   r   -   s   o   u   r   c   e   s   .   c   m       P   L
0076560    A   m   a   k   e   r   -   s   a   v   e   .   c   m       P
0076600    L   A   m   a   k   e   r   -   d   e   l   e   t   e   .   c
0076620    m 377  \0  \0   P   L   A   m   a   k   e   r   -   d   e   l
0076640    e   t   e   .   c   m  \0 373 234 266 331 221  \0  \0 376  \0
0076660  234 271 274   d   e   l   e   t   e       @   P   L   A   m   a
0076700    k   e   r   -   s   o   u   r   c   e   s   .   c   m   @    
0076720    M   a   k   e   P   L   A   .   c   o   n   f   i   g       P
0076740    L   A   m   a   k   e   r   -   s   a   v   e   .   c   m    
0076760    P   L   A   m   a   k   e   r   -   d   e   l   e   t   e   .
0077000    c   m  \r   @   .   s   y   m   b   o   l   s   .   .   .   @
0077020        d   e   l   e   t   e       P   L   A   m   a   k   e   r
0077040    .   s   y   m   b   o   l   s  \r   @   .   c   h   i   p   b
0077060    c   d   .   .   .   @       d   e   l   e   t   e       P   L
0077100    A   m   a   k   e   r   .   c   h   i   p   b   c   d  \r 374
0077120