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