$ od -c -N 50000 [Indigo]<Casaba>7.0>Saffron2.0>Shared-Derived>SaffronCG5Impl.Mesa!4
0000000    -   -       S   a   f   f   r   o   n   C   G   5   I   m   p
0000020    l   .   m   e   s   a  \r       -   -       C   o   p   y   r
0000040    i   g   h   t     323       1   9   8   7       b   y       X
0000060    e   r   o   x       C   o   r   p   o   r   a   t   i   o   n
0000100    .           A   l   l       r   i   g   h   t   s       r   e
0000120    s   e   r   v   e   d   .  \r       -   -       G   e   n   e
0000140    r   a   t   e   d       b   y       h   e   d   e   r   m   a
0000160    n   .   p   a       a   t       A   u   g   u   s   t       1
0000200    7   ,       1   9   8   7       3   :   5   7   :   2   5    
0000220    p   m       P   D   T  \r       -   -           u   s   i   n
0000240    g       T   h   r   e   e   C   a   s   a   b   a   F   o   u
0000260    r       [   1   .   2   ]       o   f       J   u   n   e    
0000300    1   ,       1   9   8   7       6   :   0   0   :   0   0    
0000320    p   m       P   D   T  \r  \r   D   I   R   E   C   T   O   R
0000340    Y  \r  \t   S   a   f   f   r   o   n   A   G   7   D   e   f
0000360    ,  \r  \t   S   a   f   f   r   o   n   A   G   2   D   e   f
0000400    ,  \r  \t   S   a   f   f   r   o   n   A   G   3   D   e   f
0000420    ,  \r  \t   S   a   f   f   r   o   n   A   G   1   D   e   f
0000440    ,  \r  \t   S   a   f   f   r   o   n   A   G   4   D   e   f
0000460    ,  \r  \t   S   a   f   f   r   o   n   A   G   5   D   e   f
0000500    ,  \r  \t   S   a   f   f   r   o   n   G   e   n   e   r   i
0000520    c   D   e   f   ,  \r  \t   T   h   r   e   e   C   4   S   u
0000540    p   p   o   r   t   ,  \r  \t   S   a   f   f   r   o   n   C
0000560    G   5   D   e   f       U   S   I   N   G   [   ]   ,  \r  \t
0000600    S   a   f   f   r   o   n   A   T   D   e   f   ;  \r  \r   S
0000620    a   f   f   r   o   n   C   G   5   I   m   p   l   :       C
0000640    E   D   A   R       P   R   O   G   R   A   M       I   M   P
0000660    O   R   T   S       S   a   f   f   r   o   n   A   G   7   D
0000700    e   f   ,       S   a   f   f   r   o   n   A   G   2   D   e
0000720    f   ,       S   a   f   f   r   o   n   A   G   3   D   e   f
0000740    ,       S   a   f   f   r   o   n   A   G   1   D   e   f   ,
0000760        S   a   f   f   r   o   n   A   G   4   D   e   f   ,    
0001000    S   a   f   f   r   o   n   A   G   5   D   e   f       E   X
0001020    P   O   R   T   S       S   a   f   f   r   o   n   C   G   5
0001040    D   e   f   =      \r   B   E   G   I   N  \r   O   P   E   N
0001060        S   a   f   f   r   o   n   A   G   7   D   e   f   ,    
0001100    S   a   f   f   r   o   n   A   G   2   D   e   f   ,       S
0001120    a   f   f   r   o   n   A   G   3   D   e   f   ,       S   a
0001140    f   f   r   o   n   A   G   1   D   e   f   ,       S   a   f
0001160    f   r   o   n   A   G   4   D   e   f   ,       S   a   f   f
0001200    r   o   n   A   G   5   D   e   f   ,       S   a   f   f   r
0001220    o   n   G   e   n   e   r   i   c   D   e   f   ,       T   h
0001240    r   e   e   C   4   S   u   p   p   o   r   t   ,       S   a
0001260    f   f   r   o   n   A   T   D   e   f   ;  \r   S   a   f   f
0001300    r   o   n   C   G   5   L   i   n   k   P   r   o   c   :    
0001320    P   U   B   L   I   C       P   R   O   C   [   p   r   o   d
0001340    L   i   n   k   A   r   r   a   y   :       S   e   e   P   r
0001360    o   d   L   i   n   k   A   r   r   a   y   ,       t   k   n
0001400    L   i   n   k   A   r   r   a   y   :       T   o   k   e   n
0001420    L   i   n   k   A   r   r   a   y   ]       =  \r   B   E   G
0001440    I   N  \r   p   r   o   d   L   i   n   k   A   r   r   a   y
0001460    [   2   6   2   ]       _       S   e   e   d   o   t   e   s
0001500    t   u   n   t   i   l   ;  \r   p   r   o   d   L   i   n   k
0001520    A   r   r   a   y   [   2   6   3   ]       _       S   e   e
0001540    d   o   t   e   s   t   w   h   i   l   e   ;  \r   p   r   o
0001560    d   L   i   n   k   A   r   r   a   y   [   2   6   4   ]    
0001600    _       S   e   e   d   o   t   e   s   t   e   m   p   t   y
0001620    ;  \r   p   r   o   d   L   i   n   k   A   r   r   a   y   [
0001640    2   6   5   ]       _       S   e   e   o   p   t   a   r   g
0001660    s   e   x   p   l   i   s   t   ;  \r   p   r   o   d   L   i
0001700    n   k   A   r   r   a   y   [   2   6   6   ]       _       S
0001720    e   e   o   p   t   a   r   g   s   e   m   p   t   y   ;  \r
0001740    p   r   o   d   L   i   n   k   A   r   r   a   y   [   2   6
0001760    7   ]       _       S   e   e   o   p   t   a   r   g   s   e
0002000    x   p   ;  \r   p   r   o   d   L   i   n   k   A   r   r   a
0002020    y   [   2   6   8   ]       _       S   e   e   f   r   e   e
0002040    p   l   a   i   n   ;  \r   p   r   o   d   L   i   n   k   A
0002060    r   r   a   y   [   2   6   9   ]       _       S   e   e   f
0002100    r   e   e   z   o   n   e   d   ;  \r   p   r   o   d   L   i
0002120    n   k   A   r   r   a   y   [   2   7   0   ]       _       S
0002140    e   e   c   a   s   e   s   t   m   t   l   i   s   t   e   m
0002160    p   t   y   ;  \r   p   r   o   d   L   i   n   k   A   r   r
0002200    a   y   [   2   7   1   ]       _       S   e   e   c   a   s
0002220    e   s   t   m   t   l   i   s   t   b   ;  \r   p   r   o   d
0002240    L   i   n   k   A   r   r   a   y   [   2   7   2   ]       _
0002260        S   e   e   c   a   s   e   s   t   m   t   l   i   s   t
0002300    c   ;  \r   p   r   o   d   L   i   n   k   A   r   r   a   y
0002320    [   2   7   3   ]       _       S   e   e   c   a   s   e   s
0002340    t   m   t   l   i   s   t   P   a   ;  \r   p   r   o   d   L
0002360    i   n   k   A   r   r   a   y   [   2   7   4   ]       _    
0002400    S   e   e   c   a   s   e   s   t   m   t   l   i   s   t   P
0002420    b   ;  \r   p   r   o   d   L   i   n   k   A   r   r   a   y
0002440    [   2   7   5   ]       _       S   e   e   c   a   s   e   s
0002460    t   m   t   i   t   e   m   ;  \r   p   r   o   d   L   i   n
0002500    k   A   r   r   a   y   [   2   7   6   ]       _       S   e
0002520    e   d   e   c   l   i   s   t   o   n   e   ;  \r   p   r   o
0002540    d   L   i   n   k   A   r   r   a   y   [   2   7   7   ]    
0002560    _       S   e   e   d   e   c   l   i   s   t   m   a   n   y
0002600    ;  \r   p   r   o   d   L   i   n   k   A   r   r   a   y   [
0002620    2   7   8   ]       _       S   e   e   d   e   c   l   a   r
0002640    a   t   i   o   n   v   a   l   u   e   ;  \r   p   r   o   d
0002660    L   i   n   k   A   r   r   a   y   [   2   7   9   ]       _
0002700        S   e   e   d   e   c   l   a   r   a   t   i   o   n   t
0002720    y   p   e   ;  \r   p   r   o   d   L   i   n   k   A   r   r
0002740    a   y   [   2   8   0   ]       _       S   e   e   d   e   c
0002760    l   a   r   a   t   i   o   n   o   p   a   q   u   e   t   y
0003000    p   e   ;  \r   p   r   o   d   L   i   n   k   A   r   r   a
0003020    y   [   2   8   1   ]       _       S   e   e   e   n   t   r
0003040    y   e   n   t   r   y   ;  \r   p   r   o   d   L   i   n   k
0003060    A   r   r   a   y   [   2   8   2   ]       _       S   e   e
0003100    e   n   t   r   y   i   n   t   e   r   n   a   l   ;  \r   p
0003120    r   o   d   L   i   n   k   A   r   r   a   y   [   2   8   3
0003140    ]       _       S   e   e   e   n   t   r   y   e   m   p   t
0003160    y   ;  \r   p   r   o   d   L   i   n   k   A   r   r   a   y
0003200    [   2   8   4   ]       _       S   e   e   o   p   t   s   i
0003220    z   e   p   r   e   s   e   n   t   ;  \r   p   r   o   d   L
0003240    i   n   k   A   r   r   a   y   [   2   8   5   ]       _    
0003260    S   e   e   o   p   t   s   i   z   e   a   b   s   e   n   t
0003300    ;  \r   p   r   o   d   L   i   n   k   A   r   r   a   y   [
0003320    2   8   6   ]       _       S   e   e   p   r   i   m   a   r
0003340    y   e   x   p   l   i   s   t   ;  \r   p   r   o   d   L   i
0003360    n   k   A   r   r   a   y   [   2   8   7   ]       _       S
0003400    e   e   p   r   i   m   a   r   y   p   r   e   f   i   x   o
0003420    p   ;  \r   p   r   o   d   L   i   n   k   A   r   r   a   y
0003440    [   2   8   8   ]       _       S   e   e   p   r   i   m   a
0003460    r   y   v   a   l   ;  \r   p   r   o   d   L   i   n   k   A
0003500    r   r   a   y   [   2   8   9   ]       _       S   e   e   p
0003520    r   i   m   a   r   y   a   l   l   ;  \r   p   r   o   d   L
0003540    i   n   k   A   r   r   a   y   [   2   9   0   ]       _    
0003560    S   e   e   p   r   i   m   a   r   y   n   e   w   ;  \r   p
0003600    r   o   d   L   i   n   k   A   r   r   a   y   [   2   9   1
0003620    ]       _       S   e   e   p   r   i   m   a   r   y   c   o
0003640    n   s   ;  \r   p   r   o   d   L   i   n   k   A   r   r   a
0003660    y   [   2   9   2   ]       _       S   e   e   p   r   i   m
0003700    a   r   y   l   i   s   t   c   o   n   s   ;  \r   p   r   o
0003720    d   L   i   n   k   A   r   r   a   y   [   2   9   3   ]    
0003740    _       S   e   e   p   r   i   m   a   r   y   n   i   l   ;
0003760   \r   p   r   o   d   L   i   n   k   A   r   r   a   y   [   2
0004000    9   4   ]       _       S   e   e   p   r   i   m   a   r   y
0004020    t   y   p   e   o   p   ;  \r   p   r   o   d   L   i   n   k
0004040    A   r   r   a   y   [   2   9   5   ]       _       S   e   e
0004060    p   r   i   m   a   r   y   s   i   z   e   ;  \r   p   r   o
0004100    d   L   i   n   k   A   r   r   a   y   [   2   9   6   ]    
0004120    _       S   e   e   p   r   i   m   a   r   y   s   i   z   e
0004140    2   ;  \r   p   r   o   d   L   i   n   k   A   r   r   a   y
0004160    [   2   9   7   ]       _       S   e   e   p   r   i   m   a
0004200    r   y   b   i   t   s   ;  \r   p   r   o   d   L   i   n   k
0004220    A   r   r   a   y   [   2   9   8   ]       _       S   e   e
0004240    p   r   i   m   a   r   y   b   i   t   s   2   ;  \r   p   r
0004260    o   d   L   i   n   k   A   r   r   a   y   [   2   9   9   ]
0004300        _       S   e   e   p   r   i   m   a   r   y   b   y   t
0004320    e   s   ;  \r   p   r   o   d   L   i   n   k   A   r   r   a
0004340    y   [   3   0   0   ]       _       S   e   e   p   r   i   m
0004360    a   r   y   b   y   t   e   s   2   ;  \r   p   r   o   d   L
0004400    i   n   k   A   r   r   a   y   [   3   0   1   ]       _    
0004420    S   e   e   p   r   i   m   a   r   y   u   n   i   t   s   ;
0004440   \r   p   r   o   d   L   i   n   k   A   r   r   a   y   [   3
0004460    0   2   ]       _       S   e   e   p   r   i   m   a   r   y
0004500    u   n   i   t   s   2   ;  \r   p   r   o   d   L   i   n   k
0004520    A   r   r   a   y   [   3   0   3   ]       _       S   e   e
0004540    p   r   i   m   a   r   y   w   o   r   d   s   ;  \r   p   r
0004560    o   d   L   i   n   k   A   r   r   a   y   [   3   0   4   ]
0004600        _       S   e   e   p   r   i   m   a   r   y   w   o   r
0004620    d   s   2   ;  \r   p   r   o   d   L   i   n   k   A   r   r
0004640    a   y   [   3   0   5   ]       _       S   e   e   p   r   i
0004660    m   a   r   y   i   s   t   y   p   e   ;  \r   p   r   o   d
0004700    L   i   n   k   A   r   r   a   y   [   3   0   6   ]       _
0004720        S   e   e   p   r   i   m   a   r   y   a   d   d   r   e
0004740    s   s   ;  \r   p   r   o   d   L   i   n   k   A   r   r   a
0004760    y   [   3   0   7   ]       _       S   e   e   p   r   i   m
0005000    a   r   y   d   e   s   c   r   i   p   t   o   r   ;  \r   p
0005020    r   o   d   L   i   n   k   A   r   r   a   y   [   3   0   8
0005040    ]       _       S   e   e   p   r   i   m   a   r   y   l   h
0005060    s   ;  \r   p   r   o   d   L   i   n   k   A   r   r   a   y
0005100    [   3   0   9   ]       _       S   e   e   n   e   w   p   l
0005120    a   i   n   ;  \r   p   r   o   d   L   i   n   k   A   r   r
0005140    a   y   [   3   1   0   ]       _       S   e   e   n   e   w
0005160    z   o   n   e   d   ;  \r   p   r   o   d   L   i   n   k   A
0005200    r   r   a   y   [   3   1   1   ]       _       S   e   e   c
0005220    o   n   s   p   l   a   i   n   ;  \r   p   r   o   d   L   i
0005240    n   k   A   r   r   a   y   [   3   1   2   ]       _       S
0005260    e   e   c   o   n   s   z   o   n   e   d   ;  \r   p   r   o
0005300    d   L   i   n   k   A   r   r   a   y   [   3   1   3   ]    
0005320    _       S   e   e   l   i   s   t   c   o   n   s   p   l   a
0005340    i   n   ;  \r   p   r   o   d   L   i   n   k   A   r   r   a
0005360    y   [   3   1   4   ]       _       S   e   e   l   i   s   t
0005400    c   o   n   s   z   o   n   e   d   ;  \r   p   r   o   d   L
0005420    i   n   k   A   r   r   a   y   [   3   1   5   ]       _    
0005440    S   e   e   d   e   s   c   l   i   s   t   e   x   p   l   i
0005460    c   i   t   ;  \r   p   r   o   d   L   i   n   k   A   r   r
0005500    a   y   [   3   1   6   ]       _       S   e   e   d   e   s
0005520    c   l   i   s   t   d   e   f   a   u   l   t   ;  \r   p   r
0005540    o   d   L   i   n   k   A   r   r   a   y   [   3   1   7   ]
0005560        _       S   e   e   o   p   t   c   a   t   c   h   c   a
0005600    t   c   h   l   i   s   t   ;  \r   p   r   o   d   L   i   n
0005620    k   A   r   r   a   y   [   3   1   8   ]       _       S   e
0005640    e   o   p   t   c   a   t   c   h   e   m   p   t   y   ;  \r
0005660    p   r   o   d   L   i   n   k   A   r   r   a   y   [   3   1
0005700    9   ]       _       S   e   e   i   d   e   n   t   l   i   s
0005720    t   ;  \r   p   r   o   d   L   i   n   k   A   r   r   a   y
0005740    [   3   2   0   ]       _       S   e   e   i   d   e   n   t
0005760    l   i   s   t   P   a   ;  \r   p   r   o   d   L   i   n   k
0006000    A   r   r   a   y   [   3   2   1   ]       _       S   e   e
0006020    i   d   e   n   t   l   i   s   t   P   b   ;  \r   p   r   o
0006040    d   L   i   n   k   A   r   r   a   y   [   3   2   2   ]    
0006060    _       S   e   e   i   d   e   n   t   l   i   s   t   P   c
0006100    ;  \r   p   r   o   d   L   i   n   k   A   r   r   a   y   [
0006120    3   2   3   ]       _       S   e   e   i   d   e   n   t   l
0006140    i   s   t   P   d   ;  \r   p   r   o   d   L   i   n   k   A
0006160    r   r   a   y   [   3   2   4   ]       _       S   e   e   p
0006200    r   e   f   i   x   o   p   l   o   n   g   ;  \r   p   r   o
0006220    d   L   i   n   k   A   r   r   a   y   [   3   2   5   ]    
0006240    _       S   e   e   p   r   e   f   i   x   o   p   a   b   s
0006260    ;  \r   p   r   o   d   L   i   n   k   A   r   r   a   y   [
0006300    3   2   6   ]       _       S   e   e   p   r   e   f   i   x
0006320    o   p   p   r   e   d   ;  \r   p   r   o   d   L   i   n   k
0006340    A   r   r   a   y   [   3   2   7   ]       _       S   e   e
0006360    p   r   e   f   i   x   o   p   s   u   c   c   ;  \r   p   r
0006400    o   d   L   i   n   k   A   r   r   a   y   [   3   2   8   ]
0006420        _       S   e   e   p   r   e   f   i   x   o   p   o   r
0006440    d   ;  \r   p   r   o   d   L   i   n   k   A   r   r   a   y
0006460    [   3   2   9   ]       _       S   e   e   p   r   e   f   i
0006500    x   o   p   m   i   n   ;  \r   p   r   o   d   L   i   n   k
0006520    A   r   r   a   y   [   3   3   0   ]       _       S   e   e
0006540    p   r   e   f   i   x   o   p   m   a   x   ;  \r   p   r   o
0006560    d   L   i   n   k   A   r   r   a   y   [   3   3   1   ]    
0006600    _       S   e   e   p   r   e   f   i   x   o   p   b   a   s
0006620    e   ;  \r   p   r   o   d   L   i   n   k   A   r   r   a   y
0006640    [   3   3   2   ]       _       S   e   e   p   r   e   f   i
0006660    x   o   p   l   e   n   g   t   h   ;  \r   E   N   D   ;  \r
0006700   \r   S   e   e   d   o   t   e   s   t   u   n   t   i   l   :
0006720        P   R   O   C       [   n   o   d   e   s   :       L   I
0006740    S   T       O   F       R   E   F       A   N   Y   ,       p
0006760    o   s   i   t   i   o   n   :       I   N   T   ,       l   e
0007000    n   g   t   h   :       I   N   T   ]  \r  \t   R   E   T   U
0007020    R   N   S       [   L   I   S   T       O   F       R   E   F
0007040        A   N   Y   ]       =  \r   B   E   G   I   N  \r   s   t
0007060    a   c   k   :       L   I   S   T       O   F       R   E   F
0007100        A   N   Y       _       n   o   d   e   s   ;  \r   e   x
0007120    p   :       E   x   p   N   o   d   e   ;  \r   e   x   p    
0007140    _       N   A   R   R   O   W   [   s   t   a   c   k   .   f
0007160    i   r   s   t   ]   ;  \r   s   t   a   c   k       _       s
0007200    t   a   c   k   .   r   e   s   t   ;  \r   s   t   a   c   k
0007220        _       C   O   N   S   [   B   u   i   l   d   D   o   T
0007240    e   s   t   u   n   t   i   l   P   r   o   d   N   o   d   e
0007260    [   p   o   s   i   t   i   o   n   ,       l   e   n   g   t
0007300    h   ,       e   x   p   ]   ,       s   t   a   c   k   ]   ;
0007320   \r   R   E   T   U   R   N       [   s   t   a   c   k   ]  \r
0007340    E   N   D   ;  \r  \r   S   e   e   d   o   t   e   s   t   w
0007360    h   i   l   e   :       P   R   O   C       [   n   o   d   e
0007400    s   :       L   I   S   T       O   F       R   E   F       A
0007420    N   Y   ,       p   o   s   i   t   i   o   n   :       I   N
0007440    T   ,       l   e   n   g   t   h   :       I   N   T   ]  \r
0007460   \t   R   E   T   U   R   N   S       [   L   I   S   T       O
0007500    F       R   E   F       A   N   Y   ]       =  \r   B   E   G
0007520    I   N  \r   s   t   a   c   k   :       L   I   S   T       O
0007540    F       R   E   F       A   N   Y       _       n   o   d   e
0007560    s   ;  \r   e   x   p   :       E   x   p   N   o   d   e   ;
0007600   \r   e   x   p       _       N   A   R   R   O   W   [   s   t
0007620    a   c   k   .   f   i   r   s   t   ]   ;  \r   s   t   a   c
0007640    k       _       s   t   a   c   k   .   r   e   s   t   ;  \r
0007660    s   t   a   c   k       _       C   O   N   S   [   B   u   i
0007700    l   d   D   o   T   e   s   t   w   h   i   l   e   P   r   o
0007720    d   N   o   d   e   [   p   o   s   i   t   i   o   n   ,    
0007740    l   e   n   g   t   h   ,       e   x   p   ]   ,       s   t
0007760    a   c   k   ]   ;  \r   R   E   T   U   R   N       [   s   t
0010000    a   c   k   ]  \r   E   N   D   ;  \r  \r   S   e   e   d   o
0010020    t   e   s   t   e   m   p   t   y   :       P   R   O   C    
0010040    [   n   o   d   e   s   :       L   I   S   T       O   F    
0010060    R   E   F       A   N   Y   ,       p   o   s   i   t   i   o
0010100    n   :       I   N   T   ,       l   e   n   g   t   h   :    
0010120    I   N   T   ]  \r  \t   R   E   T   U   R   N   S       [   L
0010140    I   S   T       O   F       R   E   F       A   N   Y   ]    
0010160    =  \r   B   E   G   I   N  \r   s   t   a   c   k   :       L
0010200    I   S   T       O   F       R   E   F       A   N   Y       _
0010220        n   o   d   e   s   ;  \r   s   t   a   c   k       _    
0010240    C   O   N   S   [   B   u   i   l   d   D   o   T   e   s   t
0010260    e   m   p   t   y   P   r   o   d   N   o   d   e   [   p   o
0010300    s   i   t   i   o   n   ,       l   e   n   g   t   h   ]   ,
0010320        s   t   a   c   k   ]   ;  \r   R   E   T   U   R   N    
0010340    [   s   t   a   c   k   ]  \r   E   N   D   ;  \r  \r   S   e
0010360    e   o   p   t   a   r   g   s   e   x   p   l   i   s   t   :
0010400        P   R   O   C       [   n   o   d   e   s   :       L   I
0010420    S   T       O   F       R   E   F       A   N   Y   ,       p
0010440    o   s   i   t   i   o   n   :       I   N   T   ,       l   e
0010460    n   g   t   h   :       I   N   T   ]  \r  \t   R   E   T   U
0010500    R   N   S       [   L   I   S   T       O   F       R   E   F
0010520        A   N   Y   ]       =  \r   B   E   G   I   N  \r   s   t
0010540    a   c   k   :       L   I   S   T       O   F       R   E   F
0010560        A   N   Y       _       n   o   d   e   s   ;  \r   e   x
0010600    p   l   i   s   t   :       E   x   p   L   i   s   t   N   o
0010620    d   e   ;  \r   e   x   p   l   i   s   t       _       N   A
0010640    R   R   O   W   [   s   t   a   c   k   .   f   i   r   s   t
0010660    ]   ;  \r   s   t   a   c   k       _       s   t   a   c   k
0010700    .   r   e   s   t   ;  \r   s   t   a   c   k       _       C
0010720    O   N   S   [   B   u   i   l   d   O   p   t   A   r   g   s
0010740    e   x   p   l   i   s   t   P   r   o   d   N   o   d   e   [
0010760    p   o   s   i   t   i   o   n   ,       l   e   n   g   t   h
0011000    ,       e   x   p   l   i   s   t   ]   ,       s   t   a   c
0011020    k   ]   ;  \r   R   E   T   U   R   N       [   s   t   a   c
0011040    k   ]  \r   E   N   D   ;  \r  \r   S   e   e   o   p   t   a
0011060    r   g   s   e   m   p   t   y   :       P   R   O   C       [
0011100    n   o   d   e   s   :       L   I   S   T       O   F       R
0011120    E   F       A   N   Y   ,       p   o   s   i   t   i   o   n
0011140    :       I   N   T   ,       l   e   n   g   t   h   :       I
0011160    N   T   ]  \r  \t   R   E   T   U   R   N   S       [   L   I
0011200    S   T       O   F       R   E   F       A   N   Y   ]       =
0011220   \r   B   E   G   I   N  \r   s   t   a   c   k   :       L   I
0011240    S   T       O   F       R   E   F       A   N   Y       _    
0011260    n   o   d   e   s   ;  \r   s   t   a   c   k       _       C
0011300    O   N   S   [   B   u   i   l   d   O   p   t   A   r   g   s
0011320    e   m   p   t   y   P   r   o   d   N   o   d   e   [   p   o
0011340    s   i   t   i   o   n   ,       l   e   n   g   t   h   ]   ,
0011360        s   t   a   c   k   ]   ;  \r   R   E   T   U   R   N    
0011400    [   s   t   a   c   k   ]  \r   E   N   D   ;  \r  \r   S   e
0011420    e   o   p   t   a   r   g   s   e   x   p   :       P   R   O
0011440    C       [   n   o   d   e   s   :       L   I   S   T       O
0011460    F       R   E   F       A   N   Y   ,       p   o   s   i   t
0011500    i   o   n   :       I   N   T   ,       l   e   n   g   t   h
0011520    :       I   N   T   ]  \r  \t   R   E   T   U   R   N   S    
0011540    [   L   I   S   T       O   F       R   E   F       A   N   Y
0011560    ]       =  \r   B   E   G   I   N  \r   s   t   a   c   k   :
0011600        L   I   S   T       O   F       R   E   F       A   N   Y
0011620        _       n   o   d   e   s   ;  \r   l   h   s   :       E
0011640    x   p   N   o   d   e   ;  \r   l   h   s       _       N   A
0011660    R   R   O   W   [   s   t   a   c   k   .   f   i   r   s   t
0011700    ]   ;  \r   s   t   a   c   k       _       s   t   a   c   k
0011720    .   r   e   s   t   ;  \r   s   t   a   c   k       _       C
0011740    O   N   S   [   B   u   i   l   d   O   p   t   A   r   g   s
0011760    e   x   p   P   r   o   d   N   o   d   e   [   p   o   s   i
0012000    t   i   o   n   ,       l   e   n   g   t   h   ,       l   h
0012020    s   ]   ,       s   t   a   c   k   ]   ;  \r   R   E   T   U
0012040    R   N       [   s   t   a   c   k   ]  \r   E   N   D   ;  \r
0012060   \r   S   e   e   f   r   e   e   p   l   a   i   n   :       P
0012100    R   O   C       [   n   o   d   e   s   :       L   I   S   T
0012120        O   F       R   E   F       A   N   Y   ,       p   o   s
0012140    i   t   i   o   n   :       I   N   T   ,       l   e   n   g
0012160    t   h   :       I   N   T   ]  \r  \t   R   E   T   U   R   N
0012200    S       [   L   I   S   T       O   F       R   E   F       A
0012220    N   Y   ]       =  \r   B   E   G   I   N  \r   s   t   a   c
0012240    k   :       L   I   S   T       O   F       R   E   F       A
0012260    N   Y       _       n   o   d   e   s   ;  \r   s   t   a   c
0012300    k       _       C   O   N   S   [   B   u   i   l   d   F   r
0012320    e   e   p   l   a   i   n   P   r   o   d   N   o   d   e   [
0012340    p   o   s   i   t   i   o   n   ,       l   e   n   g   t   h
0012360    ]   ,       s   t   a   c   k   ]   ;  \r   R   E   T   U   R
0012400    N       [   s   t   a   c   k   ]  \r   E   N   D   ;  \r  \r
0012420    S   e   e   f   r   e   e   z   o   n   e   d   :       P   R
0012440    O   C       [   n   o   d   e   s   :       L   I   S   T    
0012460    O   F       R   E   F       A   N   Y   ,       p   o   s   i
0012500    t   i   o   n   :       I   N   T   ,       l   e   n   g   t
0012520    h   :       I   N   T   ]  \r  \t   R   E   T   U   R   N   S
0012540        [   L   I   S   T       O   F       R   E   F       A   N
0012560    Y   ]       =  \r   B   E   G   I   N  \r   s   t   a   c   k
0012600    :       L   I   S   T       O   F       R   E   F       A   N
0012620    Y       _       n   o   d   e   s   ;  \r   l   h   s   :    
0012640    E   x   p   N   o   d   e   ;  \r   l   h   s       _       N
0012660    A   R   R   O   W   [   s   t   a   c   k   .   f   i   r   s
0012700    t   ]   ;  \r   s   t   a   c   k       _       s   t   a   c
0012720    k   .   r   e   s   t   ;  \r   s   t   a   c   k       _    
0012740    C   O   N   S   [   B   u   i   l   d   F   r   e   e   z   o
0012760    n   e   d   P   r   o   d   N   o   d   e   [   p   o   s   i
0013000    t   i   o   n   ,       l   e   n   g   t   h   ,       l   h
0013020    s   ]   ,       s   t   a   c   k   ]   ;  \r   R   E   T   U
0013040    R   N       [   s   t   a   c   k   ]  \r   E   N   D   ;  \r
0013060   \r   S   e   e   c   a   s   e   s   t   m   t   l   i   s   t
0013100    e   m   p   t   y   :       P   R   O   C       [   n   o   d
0013120    e   s   :       L   I   S   T       O   F       R   E   F    
0013140    A   N   Y   ,       p   o   s   i   t   i   o   n   :       I
0013160    N   T   ,       l   e   n   g   t   h   :       I   N   T   ]
0013200   \r  \t   R   E   T   U   R   N   S       [   L   I   S   T    
0013220    O   F       R   E   F       A   N   Y   ]       =  \r   B   E
0013240    G   I   N  \r   s   t   a   c   k   :       L   I   S   T    
0013260    O   F       R   E   F       A   N   Y       _       n   o   d
0013300    e   s   ;  \r   s   t   a   c   k       _       C   O   N   S
0013320    [   B   u   i   l   d   S   e   l   e   c   t   S   t   m   t
0013340    L   i   s   t   e   m   p   t   y   P   r   o   d   N   o   d
0013360    e   [   p   o   s   i   t   i   o   n   ,       l   e   n   g
0013400    t   h   ]   ,       s   t   a   c   k   ]   ;  \r   R   E   T
0013420    U   R   N       [   s   t   a   c   k   ]  \r   E   N   D   ;
0013440   \r  \r   S   e   e   c   a   s   e   s   t   m   t   l   i   s
0013460    t   b   :       P   R   O   C       [   n   o   d   e   s   :
0013500        L   I   S   T       O   F       R   E   F       A   N   Y
0013520    ,       p   o   s   i   t   i   o   n   :       I   N   T   ,
0013540        l   e   n   g   t   h   :       I   N   T   ]  \r  \t   R
0013560    E   T   U   R   N   S       [   L   I   S   T       O   F    
0013600    R   E   F       A   N   Y   ]       =  \r   B   E   G   I   N
0013620   \r   s   t   a   c   k   :       L   I   S   T       O   F    
0013640    R   E   F       A   N   Y       _       n   o   d   e   s   ;
0013660   \r   c   a   s   e   s   t   m   t   l   i   s   t   P   :    
0013700    S   e   l   e   c   t   S   t   m   t   L   i   s   t   N   o
0013720    d   e   ;  \r   c   a   s   e   s   t   m   t   l   i   s   t
0013740    P       _       N   A   R   R   O   W   [   s   t   a   c   k
0013760    .   f   i   r   s   t   ]   ;  \r   s   t   a   c   k       _
0014000        s   t   a   c   k   .   r   e   s   t   ;  \r   s   t   a
0014020    c   k       _       C   O   N   S   [   c   a   s   e   s   t
0014040    m   t   l   i   s   t   P   ,       s   t   a   c   k   ]   ;
0014060   \r   R   E   T   U   R   N       [   s   t   a   c   k   ]  \r
0014100    E   N   D   ;  \r  \r   S   e   e   c   a   s   e   s   t   m
0014120    t   l   i   s   t   c   :       P   R   O   C       [   n   o
0014140    d   e   s   :       L   I   S   T       O   F       R   E   F
0014160        A   N   Y   ,       p   o   s   i   t   i   o   n   :    
0014200    I   N   T   ,       l   e   n   g   t   h   :       I   N   T
0014220    ]  \r  \t   R   E   T   U   R   N   S       [   L   I   S   T
0014240        O   F       R   E   F       A   N   Y   ]       =  \r   B
0014260    E   G   I   N  \r   s   t   a   c   k   :       L   I   S   T
0014300        O   F       R   E   F       A   N   Y       _       n   o
0014320    d   e   s   ;  \r   c   a   s   e   s   t   m   t   l   i   s
0014340    t   P   :       S   e   l   e   c   t   S   t   m   t   L   i
0014360    s   t   N   o   d   e   ;  \r   c   a   s   e   s   t   m   t
0014400    l   i   s   t   P       _       N   A   R   R   O   W   [   s
0014420    t   a   c   k   .   f   i   r   s   t   ]   ;  \r   s   t   a
0014440    c   k       _       s   t   a   c   k   .   r   e   s   t   ;
0014460   \r   s   t   a   c   k       _       C   O   N   S   [   c   a
0014500    s   e   s   t   m   t   l   i   s   t   P   ,       s   t   a
0014520    c   k   ]   ;  \r   R   E   T   U   R   N       [   s   t   a
0014540    c   k   ]  \r   E   N   D   ;  \r  \r   S   e   e   c   a   s
0014560    e   s   t   m   t   l   i   s   t   P   a   :       P   R   O
0014600    C       [   n   o   d   e   s   :       L   I   S   T       O
0014620    F       R   E   F       A   N   Y   ,       p   o   s   i   t
0014640    i   o   n   :       I   N   T   ,       l   e   n   g   t   h
0014660    :       I   N   T   ]  \r  \t   R   E   T   U   R   N   S    
0014700    [   L   I   S   T       O   F       R   E   F       A   N   Y
0014720    ]       =  \r   B   E   G   I   N  \r   s   t   a   c   k   :
0014740        L   I   S   T       O   F       R   E   F       A   N   Y
0014760        _       n   o   d   e   s   ;  \r   c   a   s   e   s   t
0015000    m   t   i   t   e   m   :       S   e   l   e   c   t   S   t
0015020    m   t   I   t   e   m   N   o   d   e   ;  \r   c   a   s   e
0015040    s   t   m   t   i   t   e   m       _       N   A   R   R   O
0015060    W   [   s   t   a   c   k   .   f   i   r   s   t   ]   ;  \r
0015100    s   t   a   c   k       _       s   t   a   c   k   .   r   e
0015120    s   t   ;  \r   s   t   a   c   k       _       C   O   N   S
0015140    [   B   u   i   l   d   S   e   l   e   c   t   S   t   m   t
0015160    L   i   s   t   m   o   r   e   P   r   o   d   N   o   d   e
0015200    [   p   o   s   i   t   i   o   n   ,       l   e   n   g   t
0015220    h   ,       B   u   i   l   d   S   e   l   e   c   t   S   t
0015240    m   t   L   i   s   t   e   m   p   t   y   P   r   o   d   N
0015260    o   d   e   [   c   a   s   e   s   t   m   t   i   t   e   m
0015300    .   p   o   s   i   t   i   o   n   ,       c   a   s   e   s
0015320    t   m   t   i   t   e   m   .   p   o   s   i   t   i   o   n
0015340        -       c   a   s   e   s   t   m   t   i   t   e   m   .
0015360    l   e   n   g   t   h   ]   ,       c   a   s   e   s   t   m
0015400    t   i   t   e   m   ]   ,       s   t   a   c   k   ]   ;  \r
0015420    R   E   T   U   R   N       [   s   t   a   c   k   ]  \r   E
0015440    N   D   ;  \r  \r   S   e   e   c   a   s   e   s   t   m   t
0015460    l   i   s   t   P   b   :       P   R   O   C       [   n   o
0015500    d   e   s   :       L   I   S   T       O   F       R   E   F
0015520        A   N   Y   ,       p   o   s   i   t   i   o   n   :    
0015540    I   N   T   ,       l   e   n   g   t   h   :       I   N   T
0015560    ]  \r  \t   R   E   T   U   R   N   S       [   L   I   S   T
0015600        O   F       R   E   F       A   N   Y   ]       =  \r   B
0015620    E   G   I   N  \r   s   t   a   c   k   :       L   I   S   T
0015640        O   F       R   E   F       A   N   Y       _       n   o
0015660    d   e   s   ;  \r   c   a   s   e   s   t   m   t   l   i   s
0015700    t   P   :       S   e   l   e   c   t   S   t   m   t   L   i
0015720    s   t   N   o   d   e   ;  \r   c   a   s   e   s   t   m   t
0015740    i   t   e   m   :       S   e   l   e   c   t   S   t   m   t
0015760    I   t   e   m   N   o   d   e   ;  \r   c   a   s   e   s   t
0016000    m   t   i   t   e   m       _       N   A   R   R   O   W   [
0016020    s   t   a   c   k   .   f   i   r   s   t   ]   ;  \r   s   t
0016040    a   c   k       _       s   t   a   c   k   .   r   e   s   t
0016060    ;  \r   c   a   s   e   s   t   m   t   l   i   s   t   P    
0016100    _       N   A   R   R   O   W   [   s   t   a   c   k   .   f
0016120    i   r   s   t   ]   ;  \r   s   t   a   c   k       _       s
0016140    t   a   c   k   .   r   e   s   t   ;  \r   s   t   a   c   k
0016160        _       C   O   N   S   [   B   u   i   l   d   S   e   l
0016200    e   c   t   S   t   m   t   L   i   s   t   m   o   r   e   P
0016220    r   o   d   N   o   d   e   [   p   o   s   i   t   i   o   n
0016240    ,       l   e   n   g   t   h   ,       c   a   s   e   s   t
0016260    m   t   l   i   s   t   P   ,       c   a   s   e   s   t   m
0016300    t   i   t   e   m   ]   ,       s   t   a   c   k   ]   ;  \r
0016320    R   E   T   U   R   N       [   s   t   a   c   k   ]  \r   E
0016340    N   D   ;  \r  \r   S   e   e   c   a   s   e   s   t   m   t
0016360    i   t   e   m   :       P   R   O   C       [   n   o   d   e
0016400    s   :       L   I   S   T       O   F       R   E   F       A
0016420    N   Y   ,       p   o   s   i   t   i   o   n   :       I   N
0016440    T   ,       l   e   n   g   t   h   :       I   N   T   ]  \r
0016460   \t   R   E   T   U   R   N   S       [   L   I   S   T       O
0016500    F       R   E   F       A   N   Y   ]       =  \r   B   E   G
0016520    I   N  \r   s   t   a   c   k   :       L   I   S   T       O
0016540    F       R   E   F       A   N   Y       _       n   o   d   e
0016560    s   ;  \r   c   a   s   e   l   a   b   e   l   :       S   e
0016600    l   e   c   t   L   a   b   e   l   N   o   d   e   ;  \r   s
0016620    t   a   t   e   m   e   n   t   :       S   t   a   t   e   m
0016640    e   n   t   N   o   d   e   ;  \r   s   t   a   t   e   m   e
0016660    n   t       _       N   A   R   R   O   W   [   s   t   a   c
0016700    k   .   f   i   r   s   t   ]   ;  \r   s   t   a   c   k    
0016720    _       s   t   a   c   k   .   r   e   s   t   ;  \r   c   a
0016740    s   e   l   a   b   e   l       _       N   A   R   R   O   W
0016760    [   s   t   a   c   k   .   f   i   r   s   t   ]   ;  \r   s
0017000    t   a   c   k       _       s   t   a   c   k   .   r   e   s
0017020    t   ;  \r   s   t   a   c   k       _       C   O   N   S   [
0017040    B   u   i   l   d   S   e   l   e   c   t   S   t   m   t   I
0017060    t   e   m   P   r   o   d   N   o   d   e   [   p   o   s   i
0017100    t   i   o   n   ,       l   e   n   g   t   h   ,       c   a
0017120    s   e   l   a   b   e   l   ,       s   t   a   t   e   m   e
0017140    n   t   ]   ,       s   t   a   c   k   ]   ;  \r   R   E   T
0017160    U   R   N       [   s   t   a   c   k   ]  \r   E   N   D   ;
0017200   \r  \r   S   e   e   d   e   c   l   i   s   t   o   n   e   :
0017220        P   R   O   C       [   n   o   d   e   s   :       L   I
0017240    S   T       O   F       R   E   F       A   N   Y   ,       p
0017260    o   s   i   t   i   o   n   :       I   N   T   ,       l   e
0017300    n   g   t   h   :       I   N   T   ]  \r  \t   R   E   T   U
0017320    R   N   S       [   L   I   S   T       O   F       R   E   F
0017340        A   N   Y   ]       =  \r   B   E   G   I   N  \r   s   t
0017360    a   c   k   :       L   I   S   T       O   F       R   E   F
0017400        A   N   Y       _       n   o   d   e   s   ;  \r   d   e
0017420    c   l   a   r   a   t   i   o   n   :       D   e   c   l   a
0017440    r   a   t   i   o   n   N   o   d   e   ;  \r   d   e   c   l
0017460    a   r   a   t   i   o   n       _       N   A   R   R   O   W
0017500    [   s   t   a   c   k   .   f   i   r   s   t   ]   ;  \r   s
0017520    t   a   c   k       _       s   t   a   c   k   .   r   e   s
0017540    t   ;  \r   s   t   a   c   k       _       C   O   N   S   [
0017560    B   u   i   l   d   D   e   c   L   i   s   t   o   n   e   P
0017600    r   o   d   N   o   d   e   [   p   o   s   i   t   i   o   n
0017620    ,       l   e   n   g   t   h   ,       d   e   c   l   a   r
0017640    a   t   i   o   n   ]   ,       s   t   a   c   k   ]   ;  \r
0017660    R   E   T   U   R   N       [   s   t   a   c   k   ]  \r   E
0017700    N   D   ;  \r  \r   S   e   e   d   e   c   l   i   s   t   m
0017720    a   n   y   :       P   R   O   C       [   n   o   d   e   s
0017740    :       L   I   S   T       O   F       R   E   F       A   N
0017760    Y   ,       p   o   s   i   t   i   o   n   :       I   N   T
0020000    ,       l   e   n   g   t   h   :       I   N   T   ]  \r  \t
0020020    R   E   T   U   R   N   S       [   L   I   S   T       O   F
0020040        R   E   F       A   N   Y   ]       =  \r   B   E   G   I
0020060    N  \r   s   t   a   c   k   :       L   I   S   T       O   F
0020100        R   E   F       A   N   Y       _       n   o   d   e   s
0020120    ;  \r   d   e   c   l   i   s   t   :       D   e   c   L   i
0020140    s   t   N   o   d   e   ;  \r   d   e   c   l   a   r   a   t
0020160    i   o   n   :       D   e   c   l   a   r   a   t   i   o   n
0020200    N   o   d   e   ;  \r   d   e   c   l   a   r   a   t   i   o
0020220    n       _       N   A   R   R   O   W   [   s   t   a   c   k
0020240    .   f   i   r   s   t   ]   ;  \r   s   t   a   c   k       _
0020260        s   t   a   c   k   .   r   e   s   t   ;  \r   d   e   c
0020300    l   i   s   t       _       N   A   R   R   O   W   [   s   t
0020320    a   c   k   .   f   i   r   s   t   ]   ;  \r   s   t   a   c
0020340    k       _       s   t   a   c   k   .   r   e   s   t   ;  \r
0020360    s   t   a   c   k       _       C   O   N   S   [   B   u   i
0020400    l   d   D   e   c   L   i   s   t   m   a   n   y   P   r   o
0020420    d   N   o   d   e   [   p   o   s   i   t   i   o   n   ,    
0020440    l   e   n   g   t   h   ,       d   e   c   l   i   s   t   ,
0020460        B   u   i   l   d   D   e   c   L   i   s   t   o   n   e
0020500    P   r   o   d   N   o   d   e   [   d   e   c   l   a   r   a
0020520    t   i   o   n   .   p   o   s   i   t   i   o   n   ,       d
0020540    e   c   l   a   r   a   t   i   o   n   .   l   e   n   g   t
0020560    h   ,       d   e   c   l   a   r   a   t   i   o   n   ]   ]
0020600    ,       s   t   a   c   k   ]   ;  \r   R   E   T   U   R   N
0020620        [   s   t   a   c   k   ]  \r   E   N   D   ;  \r  \r   S
0020640    e   e   d   e   c   l   a   r   a   t   i   o   n   v   a   l
0020660    u   e   :       P   R   O   C       [   n   o   d   e   s   :
0020700        L   I   S   T       O   F       R   E   F       A   N   Y
0020720    ,       p   o   s   i   t   i   o   n   :       I   N   T   ,
0020740        l   e   n   g   t   h   :       I   N   T   ]  \r  \t   R
0020760    E   T   U   R   N   S       [   L   I   S   T       O   F    
0021000    R   E   F       A   N   Y   ]       =  \r   B   E   G   I   N
0021020   \r   s   t   a   c   k   :       L   I   S   T       O   F    
0021040    R   E   F       A   N   Y       _       n   o   d   e   s   ;
0021060   \r   i   d   e   n   t   l   i   s   t   :       I   d   e   n
0021100    t   L   i   s   t   N   o   d   e   ;  \r   p   u   b   l   i
0021120    c   :       A   c   c   e   s   s   N   o   d   e   ;  \r   e
0021140    n   t   r   y   :       E   n   t   r   y   N   o   d   e   ;
0021160   \r   r   e   a   d   o   n   l   y   :       R   e   a   d   O
0021200    n   l   y   N   o   d   e   ;  \r   t   y   p   e   e   x   p
0021220    :       T   y   p   e   E   x   p   N   o   d   e   ;  \r   i
0021240    n   i   t   i   a   l   i   z   a   t   i   o   n   :       I
0021260    n   i   t   i   a   l   i   z   a   t   i   o   n   N   o   d
0021300    e   ;  \r   i   n   i   t   i   a   l   i   z   a   t   i   o
0021320    n       _       N   A   R   R   O   W   [   s   t   a   c   k
0021340    .   f   i   r   s   t   ]   ;  \r   s   t   a   c   k       _
0021360        s   t   a   c   k   .   r   e   s   t   ;  \r   t   y   p
0021400    e   e   x   p       _       N   A   R   R   O   W   [   s   t
0021420    a   c   k   .   f   i   r   s   t   ]   ;  \r   s   t   a   c
0021440    k       _       s   t   a   c   k   .   r   e   s   t   ;  \r
0021460    r   e   a   d   o   n   l   y       _       N   A   R   R   O
0021500    W   [   s   t   a   c   k   .   f   i   r   s   t   ]   ;  \r
0021520    s   t   a   c   k       _       s   t   a   c   k   .   r   e
0021540    s   t   ;  \r   e   n   t   r   y       _       N   A   R   R
0021560    O   W   [   s   t   a   c   k   .   f   i   r   s   t   ]   ;
0021600   \r   s   t   a   c   k       _       s   t   a   c   k   .   r
0021620    e   s   t   ;  \r   p   u   b   l   i   c       _       N   A
0021640    R   R   O   W   [   s   t   a   c   k   .   f   i   r   s   t
0021660    ]   ;  \r   s   t   a   c   k       _       s   t   a   c   k
0021700    .   r   e   s   t   ;  \r   i   d   e   n   t   l   i   s   t
0021720        _       N   A   R   R   O   W   [   s   t   a   c   k   .
0021740    f   i   r   s   t   ]   ;  \r   s   t   a   c   k       _    
0021760    s   t   a   c   k   .   r   e   s   t   ;  \r   s   t   a   c
0022000    k       _       C   O   N   S   [   B   u   i   l   d   D   e
0022020    c   l   a   r   a   t   i   o   n   v   a   l   u   e   P   r
0022040    o   d   N   o   d   e   [   p   o   s   i   t   i   o   n   ,
0022060        l   e   n   g   t   h   ,       i   d   e   n   t   l   i
0022100    s   t   ,       p   u   b   l   i   c   ,       e   n   t   r
0022120    y   ,       r   e   a   d   o   n   l   y   ,       t   y   p
0022140    e   e   x   p   ,       i   n   i   t   i   a   l   i   z   a
0022160    t   i   o   n   ]   ,       s   t   a   c   k   ]   ;  \r   R
0022200    E   T   U   R   N       [   s   t   a   c   k   ]  \r   E   N
0022220    D   ;  \r  \r   S   e   e   d   e   c   l   a   r   a   t   i
0022240    o   n   t   y   p   e   :       P   R   O   C       [   n   o
0022260    d   e   s   :       L   I   S   T       O   F       R   E   F
0022300        A   N   Y   ,       p   o   s   i   t   i   o   n   :    
0022320    I   N   T   ,       l   e   n   g   t   h   :       I   N   T
0022340    ]  \r  \t   R   E   T   U   R   N   S       [   L   I   S   T
0022360        O   F       R   E   F       A   N   Y   ]       =  \r   B
0022400    E   G   I   N  \r   s   t   a   c   k   :       L   I   S   T
0022420        O   F       R   E   F       A   N   Y       _       n   o
0022440    d   e   s   ;  \r   i   d   e   n   t   l   i   s   t   :    
0022460    I   d   e   n   t   L   i   s   t   N   o   d   e   ;  \r   p
0022500    u   b   l   i   c   i   d   :       A   c   c   e   s   s   N
0022520    o   d   e   ;  \r   t   i   l   d   e   :       J   u   n   k
0022540    N   o   d   e   ;  \r   p   u   b   l   i   c   t   y   p   e
0022560    :       A   c   c   e   s   s   N   o   d   e   ;  \r   t   y
0022600    p   e   e   x   p   :       T   y   p   e   E   x   p   N   o
0022620    d   e   ;  \r   d   e   f   a   u   l   t   :       D   e   f
0022640    a   u   l   t   N   o   d   e   ;  \r   d   e   f   a   u   l
0022660    t       _       N   A   R   R   O   W   [   s   t   a   c   k
0022700    .   f   i   r   s   t   ]   ;  \r   s   t   a   c   k       _
0022720        s   t   a   c   k   .   r   e   s   t   ;  \r   t   y   p
0022740    e   e   x   p       _       N   A   R   R   O   W   [   s   t
0022760    a   c   k   .   f   i   r   s   t   ]   ;  \r   s   t   a   c
0023000    k       _       s   t   a   c   k   .   r   e   s   t   ;  \r
0023020    p   u   b   l   i   c   t   y   p   e       _       N   A   R
0023040    R   O   W   [   s   t   a   c   k   .   f   i   r   s   t   ]
0023060    ;  \r   s   t   a   c   k       _       s   t   a   c   k   .
0023100    r   e   s   t   ;  \r   t   i   l   d   e       _       N   A
0023120    R   R   O   W   [   s   t   a   c   k   .   f   i   r   s   t
0023140    ]   ;  \r   s   t   a   c   k       _       s   t   a   c   k
0023160    .   r   e   s   t   ;  \r   p   u   b   l   i   c   i   d    
0023200    _       N   A   R   R   O   W   [   s   t   a   c   k   .   f
0023220    i   r   s   t   ]   ;  \r   s   t   a   c   k       _       s
0023240    t   a   c   k   .   r   e   s   t   ;  \r   i   d   e   n   t
0023260    l   i   s   t       _       N   A   R   R   O   W   [   s   t
0023300    a   c   k   .   f   i   r   s   t   ]   ;  \r   s   t   a   c
0023320    k       _       s   t   a   c   k   .   r   e   s   t   ;  \r
0023340    s   t   a   c   k       _       C   O   N   S   [   B   u   i
0023360    l   d   D   e   c   l   a   r   a   t   i   o   n   t   y   p
0023400    e   P   r   o   d   N   o   d   e   [   p   o   s   i   t   i
0023420    o   n   ,       l   e   n   g   t   h   ,       i   d   e   n
0023440    t   l   i   s   t   ,       p   u   b   l   i   c   i   d   ,
0023460        p   u   b   l   i   c   t   y   p   e   ,       t   y   p
0023500    e   e   x   p   ,       d   e   f   a   u   l   t   ]   ,    
0023520    s   t   a   c   k   ]   ;  \r   R   E   T   U   R   N       [
0023540    s   t   a   c   k   ]  \r   E   N   D   ;  \r  \r   S   e   e
0023560    d   e   c   l   a   r   a   t   i   o   n   o   p   a   q   u
0023600    e   t   y   p   e   :       P   R   O   C       [   n   o   d
0023620    e   s   :       L   I   S   T       O   F       R   E   F    
0023640    A   N   Y   ,       p   o   s   i   t   i   o   n   :       I
0023660    N   T   ,       l   e   n   g   t   h   :       I   N   T   ]
0023700   \r  \t   R   E   T   U   R   N   S       [   L   I   S   T    
0023720    O   F       R   E   F       A   N   Y   ]       =  \r   B   E
0023740    G   I   N  \r   s   t   a   c   k   :       L   I   S   T    
0023760    O   F       R   E   F       A   N   Y       _       n   o   d
0024000    e   s   ;  \r   i   d   e   n   t   l   i   s   t   :       I
0024020    d   e   n   t   L   i   s   t   N   o   d   e   ;  \r   p   u
0024040    b   l   i   c   :       A   c   c   e   s   s   N   o   d   e
0024060    ;  \r   o   p   t   s   i   z   e   :       O   p   t   S   i
0024100    z   e   N   o   d   e   ;  \r   o   p   t   s   i   z   e    
0024120    _       N   A   R   R   O   W   [   s   t   a   c   k   .   f
0024140    i   r   s   t   ]   ;  \r   s   t   a   c   k       _       s
0024160    t   a   c   k   .   r   e   s   t   ;  \r   p   u   b   l   i
0024200    c       _       N   A   R   R   O   W   [   s   t   a   c   k
0024220    .   f   i   r   s   t   ]   ;  \r   s   t   a   c   k       _
0024240        s   t   a   c   k   .   r   e   s   t   ;  \r   i   d   e
0024260    n   t   l   i   s   t       _       N   A   R   R   O   W   [
0024300    s   t   a   c   k   .   f   i   r   s   t   ]   ;  \r   s   t
0024320    a   c   k       _       s   t   a   c   k   .   r   e   s   t
0024340    ;  \r   s   t   a   c   k       _       C   O   N   S   [   B
0024360    u   i   l   d   D   e   c   l   a   r   a   t   i   o   n   o
0024400    p   a   q   u   e   t   y   p   e   P   r   o   d   N   o   d
0024420    e   [   p   o   s   i   t   i   o   n   ,       l   e   n   g
0024440    t   h   ,       i   d   e   n   t   l   i   s   t   ,       p
0024460    u   b   l   i   c   ,       o   p   t   s   i   z   e   ]   ,
0024500        s   t   a   c   k   ]   ;  \r   R   E   T   U   R   N    
0024520    [   s   t   a   c   k   ]  \r   E   N   D   ;  \r  \r   S   e
0024540    e   e   n   t   r   y   e   n   t   r   y   :       P   R   O
0024560    C       [   n   o   d   e   s   :       L   I   S   T       O
0024600    F       R   E   F       A   N   Y   ,       p   o   s   i   t
0024620    i   o   n   :       I   N   T   ,       l   e   n   g   t   h
0024640    :       I   N   T   ]  \r  \t   R   E   T   U   R   N   S    
0024660    [   L   I   S   T       O   F       R   E   F       A   N   Y
0024700    ]       =  \r   B   E   G   I   N  \r   s   t   a   c   k   :
0024720        L   I   S   T       O   F       R   E   F       A   N   Y
0024740        _       n   o   d   e   s   ;  \r   s   t   a   c   k    
0024760    _       C   O   N   S   [   B   u   i   l   d   E   n   t   r
0025000    y   e   n   t   r   y   P   r   o   d   N   o   d   e   [   p
0025020    o   s   i   t   i   o   n   ,       l   e   n   g   t   h   ]
0025040    ,       s   t   a   c   k   ]   ;  \r   R   E   T   U   R   N
0025060        [   s   t   a   c   k   ]  \r   E   N   D   ;  \r  \r   S
0025100    e   e   e   n   t   r   y   i   n   t   e   r   n   a   l   :
0025120        P   R   O   C       [   n   o   d   e   s   :       L   I
0025140    S   T       O   F       R   E   F       A   N   Y   ,       p
0025160    o   s   i   t   i   o   n   :       I   N   T   ,       l   e
0025200    n   g   t   h   :       I   N   T   ]  \r  \t   R   E   T   U
0025220    R   N   S       [   L   I   S   T       O   F       R   E   F
0025240        A   N   Y   ]       =  \r   B   E   G   I   N  \r   s   t
0025260    a   c   k   :       L   I   S   T       O   F       R   E   F
0025300        A   N   Y       _       n   o   d   e   s   ;  \r   s   t
0025320    a   c   k       _       C   O   N   S   [   B   u   i   l   d
0025340    E   n   t   r   y   i   n   t   e   r   n   a   l   P   r   o
0025360    d   N   o   d   e   [   p   o   s   i   t   i   o   n   ,    
0025400    l   e   n   g   t   h   ]   ,       s   t   a   c   k   ]   ;
0025420   \r   R   E   T   U   R   N       [   s   t   a   c   k   ]  \r
0025440    E   N   D   ;  \r  \r   S   e   e   e   n   t   r   y   e   m
0025460    p   t   y   :       P   R   O   C       [   n   o   d   e   s
0025500    :       L   I   S   T       O   F       R   E   F       A   N
0025520    Y   ,       p   o   s   i   t   i   o   n   :       I   N   T
0025540    ,       l   e   n   g   t   h   :       I   N   T   ]  \r  \t
0025560    R   E   T   U   R   N   S       [   L   I   S   T       O   F
0025600        R   E   F       A   N   Y   ]       =  \r   B   E   G   I
0025620    N  \r   s   t   a   c   k   :       L   I   S   T       O   F
0025640        R   E   F       A   N   Y       _       n   o   d   e   s
0025660    ;  \r   s   t   a   c   k       _       C   O   N   S   [   B
0025700    u   i   l   d   E   n   t   r   y   e   m   p   t   y   P   r
0025720    o   d   N   o   d   e   [   p   o   s   i   t   i   o   n   ,
0025740        l   e   n   g   t   h   ]   ,       s   t   a   c   k   ]
0025760    ;  \r   R   E   T   U   R   N       [   s   t   a   c   k   ]
0026000   \r   E   N   D   ;  \r  \r   S   e   e   o   p   t   s   i   z
0026020    e   p   r   e   s   e   n   t   :       P   R   O   C       [
0026040    n   o   d   e   s   :       L   I   S   T       O   F       R
0026060    E   F       A   N   Y   ,       p   o   s   i   t   i   o   n
0026100    :       I   N   T   ,       l   e   n   g   t   h   :       I
0026120    N   T   ]  \r  \t   R   E   T   U   R   N   S       [   L   I
0026140    S   T       O   F       R   E   F       A   N   Y   ]       =
0026160   \r   B   E   G   I   N  \r   s   t   a   c   k   :       L   I
0026200    S   T       O   F       R   E   F       A   N   Y       _    
0026220    n   o   d   e   s   ;  \r   e   x   p   :       E   x   p   N
0026240    o   d   e   ;  \r   e   x   p       _       N   A   R   R   O
0026260    W   [   s   t   a   c   k   .   f   i   r   s   t   ]   ;  \r
0026300    s   t   a   c   k       _       s   t   a   c   k   .   r   e
0026320    s   t   ;  \r   s   t   a   c   k       _       C   O   N   S
0026340    [   B   u   i   l   d   O   p   t   S   i   z   e   p   r   e
0026360    s   e   n   t   P   r   o   d   N   o   d   e   [   p   o   s
0026400    i   t   i   o   n   ,       l   e   n   g   t   h   ,       e
0026420    x   p   ]   ,       s   t   a   c   k   ]   ;  \r   R   E   T
0026440    U   R   N       [   s   t   a   c   k   ]  \r   E   N   D   ;
0026460   \r  \r   S   e   e   o   p   t   s   i   z   e   a   b   s   e
0026500    n   t   :       P   R   O   C       [   n   o   d   e   s   :
0026520        L   I   S   T       O   F       R   E   F       A   N   Y
0026540    ,       p   o   s   i   t   i   o   n   :       I   N   T   ,
0026560        l   e   n   g   t   h   :       I   N   T   ]  \r  \t   R
0026600    E   T   U   R   N   S       [   L   I   S   T       O   F    
0026620    R   E   F       A   N   Y   ]       =  \r   B   E   G   I   N
0026640   \r   s   t   a   c   k   :       L   I   S   T       O   F    
0026660    R   E   F       A   N   Y       _       n   o   d   e   s   ;
0026700   \r   s   t   a   c   k       _       C   O   N   S   [   B   u
0026720    i   l   d   O   p   t   S   i   z   e   a   b   s   e   n   t
0026740    P   r   o   d   N   o   d   e   [   p   o   s   i   t   i   o
0026760    n   ,       l   e   n   g   t   h   ]   ,       s   t   a   c
0027000    k   ]   ;  \r   R   E   T   U   R   N       [   s   t   a   c
0027020    k   ]  \r   E   N   D   ;  \r  \r   S   e   e   p   r   i   m
0027040    a   r   y   e   x   p   l   i   s   t   :       P   R   O   C
0027060        [   n   o   d   e   s   :       L   I   S   T       O   F
0027100        R   E   F       A   N   Y   ,       p   o   s   i   t   i
0027120    o   n   :       I   N   T   ,       l   e   n   g   t   h   :
0027140        I   N   T   ]  \r  \t   R   E   T   U   R   N   S       [
0027160    L   I   S   T       O   F       R   E   F       A   N   Y   ]
0027200        =  \r   B   E   G   I   N  \r   s   t   a   c   k   :    
0027220    L   I   S   T       O   F       R   E   F       A   N   Y    
0027240    _       n   o   d   e   s   ;  \r   e   x   p   l   i   s   t
0027260    :       E   x   p   L   i   s   t   N   o   d   e   ;  \r   e
0027300    x   p   l   i   s   t       _       N   A   R   R   O   W   [
0027320    s   t   a   c   k   .   f   i   r   s   t   ]   ;  \r   s   t
0027340    a   c   k       _       s   t   a   c   k   .   r   e   s   t
0027360    ;  \r   s   t   a   c   k       _       C   O   N   S   [   B
0027400    u   i   l   d   E   x   p   e   x   p   l   i   s   t   P   r
0027420    o   d   N   o   d   e   [   p   o   s   i   t   i   o   n   ,
0027440        l   e   n   g   t   h   ,       e   x   p   l   i   s   t
0027460    ]   ,       s   t   a   c   k   ]   ;  \r   R   E   T   U   R
0027500    N       [   s   t   a   c   k   ]  \r   E   N   D   ;  \r  \r
0027520    S   e   e   p   r   i   m   a   r   y   p   r   e   f   i   x
0027540    o   p   :       P   R   O   C       [   n   o   d   e   s   :
0027560        L   I   S   T       O   F       R   E   F       A   N   Y
0027600    ,       p   o   s   i   t   i   o   n   :       I   N   T   ,
0027620        l   e   n   g   t   h   :       I   N   T   ]  \r  \t   R
0027640    E   T   U   R   N   S       [   L   I   S   T       O   F    
0027660    R   E   F       A   N   Y   ]       =  \r   B   E   G   I   N
0027700   \r   s   t   a   c   k   :       L   I   S   T       O   F    
0027720    R   E   F       A   N   Y       _       n   o   d   e   s   ;
0027740   \r   p   r   e   f   i   x   o   p   :       P   r   e   f   i
0027760    x   O   p   N   o   d   e   ;  \r   o   r   d   e   r   l   i
0030000    s   t   :       O   r   d   e   r   L   i   s   t   N   o   d
0030020    e   ;  \r   o   r   d   e   r   l   i   s   t       _       N
0030040    A   R   R   O   W   [   s   t   a   c   k   .   f   i   r   s
0030060    t   ]   ;  \r   s   t   a   c   k       _       s   t   a   c
0030100    k   .   r   e   s   t   ;  \r   p   r   e   f   i   x   o   p
0030120        _       N   A   R   R   O   W   [   s   t   a   c   k   .
0030140    f   i   r   s   t   ]   ;  \r   s   t   a   c   k       _    
0030160    s   t   a   c   k   .   r   e   s   t   ;  \r   s   t   a   c
0030200    k       _       C   O   N   S   [   B   u   i   l   d   E   x
0030220    p   p   r   e   f   i   x   o   p   P   r   o   d   N   o   d
0030240    e   [   p   o   s   i   t   i   o   n   ,       l   e   n   g
0030260    t   h   ,       p   r   e   f   i   x   o   p   ,       o   r
0030300    d   e   r   l   i   s   t   ]   ,       s   t   a   c   k   ]
0030320    ;  \r   R   E   T   U   R   N       [   s   t   a   c   k   ]
0030340   \r   E   N   D   ;  \r  \r   S   e   e   p   r   i   m   a   r
0030360    y   v   a   l   :       P   R   O   C       [   n   o   d   e
0030400    s   :       L   I   S   T       O   F       R   E   F       A
0030420    N   Y   ,       p   o   s   i   t   i   o   n   :       I   N
0030440    T   ,       l   e   n   g   t   h   :       I   N   T   ]  \r
0030460   \t   R   E   T   U   R   N   S       [   L   I   S   T       O
0030500    F       R   E   F       A   N   Y   ]       =  \r   B   E   G
0030520    I   N  \r   s   t   a   c   k   :       L   I   S   T       O
0030540    F       R   E   F       A   N   Y       _       n   o   d   e
0030560    s   ;  \r   o   r   d   e   r   l   i   s   t   :       O   r
0030600    d   e   r   L   i   s   t   N   o   d   e   ;  \r   o   r   d
0030620    e   r   l   i   s   t       _       N   A   R   R   O   W   [
0030640    s   t   a   c   k   .   f   i   r   s   t   ]   ;  \r   s   t
0030660    a   c   k       _       s   t   a   c   k   .   r   e   s   t
0030700    ;  \r   s   t   a   c   k       _       C   O   N   S   [   B
0030720    u   i   l   d   E   x   p   v   a   l   P   r   o   d   N   o
0030740    d   e   [   p   o   s   i   t   i   o   n   ,       l   e   n
0030760    g   t   h   ,       o   r   d   e   r   l   i   s   t   ]   ,
0031000        s   t   a   c   k   ]   ;  \r   R   E   T   U   R   N    
0031020    [   s   t   a   c   k   ]  \r   E   N   D   ;  \r  \r   S   e
0031040    e   p   r   i   m   a   r   y   a   l   l   :       P   R   O
0031060    C       [   n   o   d   e   s   :       L   I   S   T       O
0031100    F       R   E   F       A   N   Y   ,       p   o   s   i   t
0031120    i   o   n   :       I   N   T   ,       l   e   n   g   t   h
0031140    :       I   N   T   ]  \r  \t   R   E   T   U   R   N   S    
0031160    [   L   I   S   T       O   F       R   E   F       A   N   Y
0031200    ]       =  \r   B   E   G   I   N  \r   s   t   a   c   k   :
0031220        L   I   S   T       O   F       R   E   F       A   N   Y
0031240        _       n   o   d   e   s   ;  \r   o   r   d   e   r   l
0031260    i   s   t   :       O   r   d   e   r   L   i   s   t   N   o
0031300    d   e   ;  \r   o   r   d   e   r   l   i   s   t       _    
0031320    N   A   R   R   O   W   [   s   t   a   c   k   .   f   i   r
0031340    s   t   ]   ;  \r   s   t   a   c   k       _       s   t   a
0031360    c   k   .   r   e   s   t   ;  \r   s   t   a   c   k       _
0031400        C   O   N   S   [   B   u   i   l   d   E   x   p   a   l
0031420    l   P   r   o   d   N   o   d   e   [   p   o   s   i   t   i
0031440    o   n   ,       l   e   n   g   t   h   ,       o   r   d   e
0031460    r   l   i   s   t   ]   ,       s   t   a   c   k   ]   ;  \r
0031500    R   E   T   U   R   N       [   s   t   a   c   k   ]  \r   E
0031520    N   D   ;  \r  \r   S   e   e   p   r   i   m   a   r   y   n
0031540    e   w   :       P   R   O   C       [   n   o   d   e   s   :
0031560        L   I   S   T       O   F       R   E   F       A   N   Y
0031600    ,       p   o   s   i   t   i   o   n   :       I   N   T   ,
0031620        l   e   n   g   t   h   :       I   N   T   ]  \r  \t   R
0031640    E   T   U   R   N   S       [   L   I   S   T       O   F    
0031660    R   E   F       A   N   Y   ]       =  \r   B   E   G   I   N
0031700   \r   s   t   a   c   k   :       L   I   S   T       O   F    
0031720    R   E   F       A   N   Y       _       n   o   d   e   s   ;
0031740   \r   n   e   w   :       N   e   w   N   o   d   e   ;  \r   t
0031760    y   p   e   e   x   p   :       T   y   p   e   E   x   p   N
0032000    o   d   e   ;  \r   i   n   i   t   i   a   l   i   z   a   t
0032020    i   o   n   :       I   n   i   t   i   a   l   i   z   a   t
0032040    i   o   n   N   o   d   e   ;  \r   o   p   t   c   a   t   c
0032060    h   :       C   a   t   c   h   N   o   d   e   ;  \r   o   p
0032100    t   c   a   t   c   h       _       N   A   R   R   O   W   [
0032120    s   t   a   c   k   .   f   i   r   s   t   ]   ;  \r   s   t
0032140    a   c   k       _       s   t   a   c   k   .   r   e   s   t
0032160    ;  \r   i   n   i   t   i   a   l   i   z   a   t   i   o   n
0032200        _       N   A   R   R   O   W   [   s   t   a   c   k   .
0032220    f   i   r   s   t   ]   ;  \r   s   t   a   c   k       _    
0032240    s   t   a   c   k   .   r   e   s   t   ;  \r   t   y   p   e
0032260    e   x   p       _       N   A   R   R   O   W   [   s   t   a
0032300    c   k   .   f   i   r   s   t   ]   ;  \r   s   t   a   c   k
0032320        _       s   t   a   c   k   .   r   e   s   t   ;  \r   n
0032340    e   w       _       N   A   R   R   O   W   [   s   t   a   c
0032360    k   .   f   i   r   s   t   ]   ;  \r   s   t   a   c   k    
0032400    _       s   t   a   c   k   .   r   e   s   t   ;  \r   s   t
0032420    a   c   k       _       C   O   N   S   [   B   u   i   l   d
0032440    E   x   p   n   e   w   P   r   o   d   N   o   d   e   [   p
0032460    o   s   i   t   i   o   n   ,       l   e   n   g   t   h   ,
0032500        n   e   w   ,       t   y   p   e   e   x   p   ,       i
0032520    n   i   t   i   a   l   i   z   a   t   i   o   n   ,       o
0032540    p   t   c   a   t   c   h   ]   ,       s   t   a   c   k   ]
0032560    ;  \r   R   E   T   U   R   N       [   s   t   a   c   k   ]
0032600   \r   E   N   D   ;  \r  \r   S   e   e   p   r   i   m   a   r
0032620    y   c   o   n   s   :       P   R   O   C       [   n   o   d
0032640    e   s   :       L   I   S   T       O   F       R   E   F    
0032660    A   N   Y   ,       p   o   s   i   t   i   o   n   :       I
0032700    N   T   ,       l   e   n   g   t   h   :       I   N   T   ]
0032720   \r  \t   R   E   T   U   R   N   S       [   L   I   S   T    
0032740    O   F       R   E   F       A   N   Y   ]       =  \r   B   E
0032760    G   I   N  \r   s   t   a   c   k   :       L   I   S   T    
0033000    O   F       R   E   F       A   N   Y       _       n   o   d
0033020    e   s   ;  \r   c   o   n   s   :       C   o   n   s   N   o
0033040    d   e   ;  \r   e   x   p   l   i   s   t   :       E   x   p
0033060    L   i   s   t   N   o   d   e   ;  \r   o   p   t   c   a   t
0033100    c   h   :       C   a   t   c   h   N   o   d   e   ;  \r   o
0033120    p   t   c   a   t   c   h       _       N   A   R   R   O   W
0033140    [   s   t   a   c   k   .   f   i   r   s   t   ]   ;  \r   s
0033160    t   a   c   k       _       s   t   a   c   k   .   r   e   s
0033200    t   ;  \r   e   x   p   l   i   s   t       _       N   A   R
0033220    R   O   W   [   s   t   a   c   k   .   f   i   r   s   t   ]
0033240    ;  \r   s   t   a   c   k       _       s   t   a   c   k   .
0033260    r   e   s   t   ;  \r   c   o   n   s       _       N   A   R
0033300    R   O   W   [   s   t   a   c   k   .   f   i   r   s   t   ]
0033320    ;  \r   s   t   a   c   k       _       s   t   a   c   k   .
0033340    r   e   s   t   ;  \r   s   t   a   c   k       _       C   O
0033360    N   S   [   B   u   i   l   d   E   x   p   c   o   n   s   P
0033400    r   o   d   N   o   d   e   [   p   o   s   i   t   i   o   n
0033420    ,       l   e   n   g   t   h   ,       c   o   n   s   ,    
0033440    e   x   p   l   i   s   t   ,       o   p   t   c   a   t   c
0033460    h   ]   ,       s   t   a   c   k   ]   ;  \r   R   E   T   U
0033500    R   N       [   s   t   a   c   k   ]  \r   E   N   D   ;  \r
0033520   \r   S   e   e   p   r   i   m   a   r   y   l   i   s   t   c
0033540    o   n   s   :       P   R   O   C       [   n   o   d   e   s
0033560    :       L   I   S   T       O   F       R   E   F       A   N
0033600    Y   ,       p   o   s   i   t   i   o   n   :       I   N   T
0033620    ,       l   e   n   g   t   h   :       I   N   T   ]  \r  \t
0033640    R   E   T   U   R   N   S       [   L   I   S   T       O   F
0033660        R   E   F       A   N   Y   ]       =  \r   B   E   G   I
0033700    N  \r   s   t   a   c   k   :       L   I   S   T       O   F
0033720        R   E   F       A   N   Y       _       n   o   d   e   s
0033740    ;  \r   l   i   s   t   c   o   n   s   :       L   i   s   t
0033760    C   o   n   s   N   o   d   e   ;  \r   e   x   p   l   i   s
0034000    t   :       E   x   p   L   i   s   t   N   o   d   e   ;  \r
0034020    e   x   p   l   i   s   t       _       N   A   R   R   O   W
0034040    [   s   t   a   c   k   .   f   i   r   s   t   ]   ;  \r   s
0034060    t   a   c   k       _       s   t   a   c   k   .   r   e   s
0034100    t   ;  \r   l   i   s   t   c   o   n   s       _       N   A
0034120    R   R   O   W   [   s   t   a   c   k   .   f   i   r   s   t
0034140    ]   ;  \r   s   t   a   c   k       _       s   t   a   c   k
0034160    .   r   e   s   t   ;  \r   s   t   a   c   k       _       C
0034200    O   N   S   [   B   u   i   l   d   E   x   p   l   i   s   t
0034220    c   o   n   s   P   r   o   d   N   o   d   e   [   p   o   s
0034240    i   t   i   o   n   ,       l   e   n   g   t   h   ,       l
0034260    i   s   t   c   o   n   s   ,       e   x   p   l   i   s   t
0034300    ]   ,       s   t   a   c   k   ]   ;  \r   R   E   T   U   R
0034320    N       [   s   t   a   c   k   ]  \r   E   N   D   ;  \r  \r
0034340    S   e   e   p   r   i   m   a   r   y   n   i   l   :       P
0034360    R   O   C       [   n   o   d   e   s   :       L   I   S   T
0034400        O   F       R   E   F       A   N   Y   ,       p   o   s
0034420    i   t   i   o   n   :       I   N   T   ,       l   e   n   g
0034440    t   h   :       I   N   T   ]  \r  \t   R   E   T   U   R   N
0034460    S       [   L   I   S   T       O   F       R   E   F       A
0034500    N   Y   ]       =  \r   B   E   G   I   N  \r   s   t   a   c
0034520    k   :       L   I   S   T       O   F       R   E   F       A
0034540    N   Y       _       n   o   d   e   s   ;  \r   s   t   a   c
0034560    k       _       C   O   N   S   [   B   u   i   l   d   E   x
0034600    p   n   i   l   P   r   o   d   N   o   d   e   [   p   o   s
0034620    i   t   i   o   n   ,       l   e   n   g   t   h   ]   ,    
0034640    s   t   a   c   k   ]   ;  \r   R   E   T   U   R   N       [
0034660    s   t   a   c   k   ]  \r   E   N   D   ;  \r  \r   S   e   e
0034700    p   r   i   m   a   r   y   t   y   p   e   o   p   :       P
0034720    R   O   C       [   n   o   d   e   s   :       L   I   S   T
0034740        O   F       R   E   F       A   N   Y   ,       p   o   s
0034760    i   t   i   o   n   :       I   N   T   ,       l   e   n   g
0035000    t   h   :       I   N   T   ]  \r  \t   R   E   T   U   R   N
0035020    S       [   L   I   S   T       O   F       R   E   F       A
0035040    N   Y   ]       =  \r   B   E   G   I   N  \r   s   t   a   c
0035060    k   :       L   I   S   T       O   F       R   E   F       A
0035100    N   Y       _       n   o   d   e   s   ;  \r   t   y   p   e
0035120    o   p   :       T   y   p   e   O   p   N   o   d   e   ;  \r
0035140    t   y   p   e   e   x   p   :       T   y   p   e   E   x   p
0035160    N   o   d   e   ;  \r   t   y   p   e   e   x   p       _    
0035200    N   A   R   R   O   W   [   s   t   a   c   k   .   f   i   r
0035220    s   t   ]   ;  \r   s   t   a   c   k       _       s   t   a
0035240    c   k   .   r   e   s   t   ;  \r   t   y   p   e   o   p    
0035260    _       N   A   R   R   O   W   [   s   t   a   c   k   .   f
0035300    i   r   s   t   ]   ;  \r   s   t   a   c   k       _       s
0035320    t   a   c   k   .   r   e   s   t   ;  \r   s   t   a   c   k
0035340        _       C   O   N   S   [   B   u   i   l   d   E   x   p
0035360    t   y   p   e   o   p   P   r   o   d   N   o   d   e   [   p
0035400    o   s   i   t   i   o   n   ,       l   e   n   g   t   h   ,
0035420        t   y   p   e   o   p   ,       t   y   p   e   e   x   p
0035440    ]   ,       s   t   a   c   k   ]   ;  \r   R   E   T   U   R
0035460    N       [   s   t   a   c   k   ]  \r   E   N   D   ;  \r  \r
0035500    S   e   e   p   r   i   m   a   r   y   s   i   z   e   :    
0035520    P   R   O   C       [   n   o   d   e   s   :       L   I   S
0035540    T       O   F       R   E   F       A   N   Y   ,       p   o
0035560    s   i   t   i   o   n   :       I   N   T   ,       l   e   n
0035600    g   t   h   :       I   N   T   ]  \r  \t   R   E   T   U   R
0035620    N   S       [   L   I   S   T       O   F       R   E   F    
0035640    A   N   Y   ]       =  \r   B   E   G   I   N  \r   s   t   a
0035660    c   k   :       L   I   S   T       O   F       R   E   F    
0035700    A   N   Y       _       n   o   d   e   s   ;  \r   t   y   p
0035720    e   e   x   p   :       T   y   p   e   E   x   p   N   o   d
0035740    e   ;  \r   t   y   p   e   e   x   p       _       N   A   R
0035760    R   O   W   [   s   t   a   c   k   .   f   i   r   s   t   ]
0036000    ;  \r   s   t   a   c   k       _       s   t   a   c   k   .
0036020    r   e   s   t   ;  \r   s   t   a   c   k       _       C   O
0036040    N   S   [   B   u   i   l   d   E   x   p   s   i   z   e   P
0036060    r   o   d   N   o   d   e   [   p   o   s   i   t   i   o   n
0036100    ,       l   e   n   g   t   h   ,       t   y   p   e   e   x
0036120    p   ]   ,       s   t   a   c   k   ]   ;  \r   R   E   T   U
0036140    R   N       [   s   t   a   c   k   ]  \r   E   N   D   ;  \r
0036160   \r   S   e   e   p   r   i   m   a   r   y   s   i   z   e   2
0036200    :       P   R   O   C       [   n   o   d   e   s   :       L
0036220    I   S   T       O   F       R   E   F       A   N   Y   ,    
0036240    p   o   s   i   t   i   o   n   :       I   N   T   ,       l
0036260    e   n   g   t   h   :       I   N   T   ]  \r  \t   R   E   T
0036300    U   R   N   S       [   L   I   S   T       O   F       R   E
0036320    F       A   N   Y   ]       =  \r   B   E   G   I   N  \r   s
0036340    t   a   c   k   :       L   I   S   T       O   F       R   E
0036360    F       A   N   Y       _       n   o   d   e   s   ;  \r   t
0036400    y   p   e   e   x   p   :       T   y   p   e   E   x   p   N
0036420    o   d   e   ;  \r   e   x   p   :       E   x   p   N   o   d
0036440    e   ;  \r   e   x   p       _       N   A   R   R   O   W   [
0036460    s   t   a   c   k   .   f   i   r   s   t   ]   ;  \r   s   t
0036500    a   c   k       _       s   t   a   c   k   .   r   e   s   t
0036520    ;  \r   t   y   p   e   e   x   p       _       N   A   R   R
0036540    O   W   [   s   t   a   c   k   .   f   i   r   s   t   ]   ;
0036560   \r   s   t   a   c   k       _       s   t   a   c   k   .   r
0036600    e   s   t   ;  \r   s   t   a   c   k       _       C   O   N
0036620    S   [   B   u   i   l   d   E   x   p   s   i   z   e   2   P
0036640    r   o   d   N   o   d   e   [   p   o   s   i   t   i   o   n
0036660    ,       l   e   n   g   t   h   ,       t   y   p   e   e   x
0036700    p   ,       e   x   p   ]   ,       s   t   a   c   k   ]   ;
0036720   \r   R   E   T   U   R   N       [   s   t   a   c   k   ]  \r
0036740    E   N   D   ;  \r  \r   S   e   e   p   r   i   m   a   r   y
0036760    b   i   t   s   :       P   R   O   C       [   n   o   d   e
0037000    s   :       L   I   S   T       O   F       R   E   F       A
0037020    N   Y   ,       p   o   s   i   t   i   o   n   :       I   N
0037040    T   ,       l   e   n   g   t   h   :       I   N   T   ]  \r
0037060   \t   R   E   T   U   R   N   S       [   L   I   S   T       O
0037100    F       R   E   F       A   N   Y   ]       =  \r   B   E   G
0037120    I   N  \r   s   t   a   c   k   :       L   I   S   T       O
0037140    F       R   E   F       A   N   Y       _       n   o   d   e
0037160    s   ;  \r   t   y   p   e   e   x   p   :       T   y   p   e
0037200    E   x   p   N   o   d   e   ;  \r   t   y   p   e   e   x   p
0037220        _       N   A   R   R   O   W   [   s   t   a   c   k   .
0037240    f   i   r   s   t   ]   ;  \r   s   t   a   c   k       _    
0037260    s   t   a   c   k   .   r   e   s   t   ;  \r   s   t   a   c
0037300    k       _       C   O   N   S   [   B   u   i   l   d   E   x
0037320    p   b   i   t   s   P   r   o   d   N   o   d   e   [   p   o
0037340    s   i   t   i   o   n   ,       l   e   n   g   t   h   ,    
0037360    t   y   p   e   e   x   p   ]   ,       s   t   a   c   k   ]
0037400    ;  \r   R   E   T   U   R   N       [   s   t   a   c   k   ]
0037420   \r   E   N   D   ;  \r  \r   S   e   e   p   r   i   m   a   r
0037440    y   b   i   t   s   2   :       P   R   O   C       [   n   o
0037460    d   e   s   :       L   I   S   T       O   F       R   E   F
0037500        A   N   Y   ,       p   o   s   i   t   i   o   n   :    
0037520    I   N   T   ,       l   e   n   g   t   h   :       I   N   T
0037540    ]  \r  \t   R   E   T   U   R   N   S       [   L   I   S   T
0037560        O   F       R   E   F       A   N   Y   ]       =  \r   B
0037600    E   G   I   N  \r   s   t   a   c   k   :       L   I   S   T
0037620        O   F       R   E   F       A   N   Y       _       n   o
0037640    d   e   s   ;  \r   t   y   p   e   e   x   p   :       T   y
0037660    p   e   E   x   p   N   o   d   e   ;  \r   e   x   p   :    
0037700    E   x   p   N   o   d   e   ;  \r   e   x   p       _       N
0037720    A   R   R   O   W   [   s   t   a   c   k   .   f   i   r   s
0037740    t   ]   ;  \r   s   t   a   c   k       _       s   t   a   c
0037760    k   .   r   e   s   t   ;  \r   t   y   p   e   e   x   p    
0040000    _       N   A   R   R   O   W   [   s   t   a   c   k   .   f
0040020    i   r   s   t   ]   ;  \r   s   t   a   c   k       _       s
0040040    t   a   c   k   .   r   e   s   t   ;  \r   s   t   a   c   k
0040060        _       C   O   N   S   [   B   u   i   l   d   E   x   p
0040100    b   i   t   s   2   P   r   o   d   N   o   d   e   [   p   o
0040120    s   i   t   i   o   n   ,       l   e   n   g   t   h   ,    
0040140    t   y   p   e   e   x   p   ,       e   x   p   ]   ,       s
0040160    t   a   c   k   ]   ;  \r   R   E   T   U   R   N       [   s
0040200    t   a   c   k   ]  \r   E   N   D   ;  \r  \r   S   e   e   p
0040220    r   i   m   a   r   y   b   y   t   e   s   :       P   R   O
0040240    C       [   n   o   d   e   s   :       L   I   S   T       O
0040260    F       R   E   F       A   N   Y   ,       p   o   s   i   t
0040300    i   o   n   :       I   N   T   ,       l   e   n   g   t   h
0040320    :       I   N   T   ]  \r  \t   R   E   T   U   R   N   S    
0040340    [   L   I   S   T       O   F       R   E   F       A   N   Y
0040360    ]       =  \r   B   E   G   I   N  \r   s   t   a   c   k   :
0040400        L   I   S   T       O   F       R   E   F       A   N   Y
0040420        _       n   o   d   e   s   ;  \r   t   y   p   e   e   x
0040440    p   :       T   y   p   e   E   x   p   N   o   d   e   ;  \r
0040460    t   y   p   e   e   x   p       _       N   A   R   R   O   W
0040500    [   s   t   a   c   k   .   f   i   r   s   t   ]   ;  \r   s
0040520    t   a   c   k       _       s   t   a   c   k   .   r   e   s
0040540    t   ;  \r   s   t   a   c   k       _       C   O   N   S   [
0040560    B   u   i   l   d   E   x   p   b   y   t   e   s   P   r   o
0040600    d   N   o   d   e   [   p   o   s   i   t   i   o   n   ,    
0040620    l   e   n   g   t   h   ,       t   y   p   e   e   x   p   ]
0040640    ,       s   t   a   c   k   ]   ;  \r   R   E   T   U   R   N
0040660        [   s   t   a   c   k   ]  \r   E   N   D   ;  \r  \r   S
0040700    e   e   p   r   i   m   a   r   y   b   y   t   e   s   2   :
0040720        P   R   O   C       [   n   o   d   e   s   :       L   I
0040740    S   T       O   F       R   E   F       A   N   Y   ,       p
0040760    o   s   i   t   i   o   n   :       I   N   T   ,       l   e
0041000    n   g   t   h   :       I   N   T   ]  \r  \t   R   E   T   U
0041020    R   N   S       [   L   I   S   T       O   F       R   E   F
0041040        A   N   Y   ]       =  \r   B   E   G   I   N  \r   s   t
0041060    a   c   k   :       L   I   S   T       O   F       R   E   F
0041100        A   N   Y       _       n   o   d   e   s   ;  \r   t   y
0041120    p   e   e   x   p   :       T   y   p   e   E   x   p   N   o
0041140    d   e   ;  \r   e   x   p   :       E   x   p   N   o   d   e
0041160    ;  \r   e   x   p       _       N   A   R   R   O   W   [   s
0041200    t   a   c   k   .   f   i   r   s   t   ]   ;  \r   s   t   a
0041220    c   k       _       s   t   a   c   k   .   r   e   s   t   ;
0041240   \r   t   y   p   e   e   x   p       _       N   A   R   R   O
0041260    W   [   s   t   a   c   k   .   f   i   r   s   t   ]   ;  \r
0041300    s   t   a   c   k       _       s   t   a   c   k   .   r   e
0041320    s   t   ;  \r   s   t   a   c   k       _       C   O   N   S
0041340    [   B   u   i   l   d   E   x   p   b   y   t   e   s   2   P
0041360    r   o   d   N   o   d   e   [   p   o   s   i   t   i   o   n
0041400    ,       l   e   n   g   t   h   ,       t   y   p   e   e   x
0041420    p   ,       e   x   p   ]   ,       s   t   a   c   k   ]   ;
0041440   \r   R   E   T   U   R   N       [   s   t   a   c   k   ]  \r
0041460    E   N   D   ;  \r  \r   S   e   e   p   r   i   m   a   r   y
0041500    u   n   i   t   s   :       P   R   O   C       [   n   o   d
0041520    e   s   :       L   I   S   T       O   F       R   E   F    
0041540    A   N   Y   ,       p   o   s   i   t   i   o   n   :       I
0041560    N   T   ,       l   e   n   g   t   h   :       I   N   T   ]
0041600   \r  \t   R   E   T   U   R   N   S       [   L   I   S   T    
0041620    O   F       R   E   F       A   N   Y   ]       =  \r   B   E
0041640    G   I   N  \r   s   t   a   c   k   :       L   I   S   T    
0041660    O   F       R   E   F       A   N   Y       _       n   o   d
0041700    e   s   ;  \r   t   y   p   e   e   x   p   :       T   y   p
0041720    e   E   x   p   N   o   d   e   ;  \r   t   y   p   e   e   x
0041740    p       _       N   A   R   R   O   W   [   s   t   a   c   k
0041760    .   f   i   r   s   t   ]   ;  \r   s   t   a   c   k       _
0042000        s   t   a   c   k   .   r   e   s   t   ;  \r   s   t   a
0042020    c   k       _       C   O   N   S   [   B   u   i   l   d   E
0042040    x   p   u   n   i   t   s   P   r   o   d   N   o   d   e   [
0042060    p   o   s   i   t   i   o   n   ,       l   e   n   g   t   h
0042100    ,       t   y   p   e   e   x   p   ]   ,       s   t   a   c
0042120    k   ]   ;  \r   R   E   T   U   R   N       [   s   t   a   c
0042140    k   ]  \r   E   N   D   ;  \r  \r   S   e   e   p   r   i   m
0042160    a   r   y   u   n   i   t   s   2   :       P   R   O   C    
0042200    [   n   o   d   e   s   :       L   I   S   T       O   F    
0042220    R   E   F       A   N   Y   ,       p   o   s   i   t   i   o
0042240    n   :       I   N   T   ,       l   e   n   g   t   h   :    
0042260    I   N   T   ]  \r  \t   R   E   T   U   R   N   S       [   L
0042300    I   S   T       O   F       R   E   F       A   N   Y   ]    
0042320    =  \r   B   E   G   I   N  \r   s   t   a   c   k   :       L
0042340    I   S   T       O   F       R   E   F       A   N   Y       _
0042360        n   o   d   e   s   ;  \r   t   y   p   e   e   x   p   :
0042400        T   y   p   e   E   x   p   N   o   d   e   ;  \r   e   x
0042420    p   :       E   x   p   N   o   d   e   ;  \r   e   x   p    
0042440    _       N   A   R   R   O   W   [   s   t   a   c   k   .   f
0042460    i   r   s   t   ]   ;  \r   s   t   a   c   k       _       s
0042500    t   a   c   k   .   r   e   s   t   ;  \r   t   y   p   e   e
0042520    x   p       _       N   A   R   R   O   W   [   s   t   a   c
0042540    k   .   f   i   r   s   t   ]   ;  \r   s   t   a   c   k    
0042560    _       s   t   a   c   k   .   r   e   s   t   ;  \r   s   t
0042600    a   c   k       _       C   O   N   S   [   B   u   i   l   d
0042620    E   x   p   u   n   i   t   s   2   P   r   o   d   N   o   d
0042640    e   [   p   o   s   i   t   i   o   n   ,       l   e   n   g
0042660    t   h   ,       t   y   p   e   e   x   p   ,       e   x   p
0042700    ]   ,       s   t   a   c   k   ]   ;  \r   R   E   T   U   R
0042720    N       [   s   t   a   c   k   ]  \r   E   N   D   ;  \r  \r
0042740    S   e   e   p   r   i   m   a   r   y   w   o   r   d   s   :
0042760        P   R   O   C       [   n   o   d   e   s   :       L   I
0043000    S   T       O   F       R   E   F       A   N   Y   ,       p
0043020    o   s   i   t   i   o   n   :       I   N   T   ,       l   e
0043040    n   g   t   h   :       I   N   T   ]  \r  \t   R   E   T   U
0043060    R   N   S       [   L   I   S   T       O   F       R   E   F
0043100        A   N   Y   ]       =  \r   B   E   G   I   N  \r   s   t
0043120    a   c   k   :       L   I   S   T       O   F       R   E   F
0043140        A   N   Y       _       n   o   d   e   s   ;  \r   t   y
0043160    p   e   e   x   p   :       T   y   p   e   E   x   p   N   o
0043200    d   e   ;  \r   t   y   p   e   e   x   p       _       N   A
0043220    R   R   O   W   [   s   t   a   c   k   .   f   i   r   s   t
0043240    ]   ;  \r   s   t   a   c   k       _       s   t   a   c   k
0043260    .   r   e   s   t   ;  \r   s   t   a   c   k       _       C
0043300    O   N   S   [   B   u   i   l   d   E   x   p   w   o   r   d
0043320    s   P   r   o   d   N   o   d   e   [   p   o   s   i   t   i
0043340    o   n   ,       l   e   n   g   t   h   ,       t   y   p   e
0043360    e   x   p   ]   ,       s   t   a   c   k   ]   ;  \r   R   E
0043400    T   U   R   N       [   s   t   a   c   k   ]  \r   E   N   D
0043420    ;  \r  \r   S   e   e   p   r   i   m   a   r   y   w   o   r
0043440    d   s   2   :       P   R   O   C       [   n   o   d   e   s
0043460    :       L   I   S   T       O   F       R   E   F       A   N
0043500    Y   ,       p   o   s   i   t   i   o   n   :       I   N   T
0043520    ,       l   e   n   g   t   h   :       I   N   T   ]  \r  \t
0043540    R   E   T   U   R   N   S       [   L   I   S   T       O   F
0043560        R   E   F       A   N   Y   ]       =  \r   B   E   G   I
0043600    N  \r   s   t   a   c   k   :       L   I   S   T       O   F
0043620        R   E   F       A   N   Y       _       n   o   d   e   s
0043640    ;  \r   t   y   p   e   e   x   p   :       T   y   p   e   E
0043660    x   p   N   o   d   e   ;  \r   e   x   p   :       E   x   p
0043700    N   o   d   e   ;  \r   e   x   p       _       N   A   R   R
0043720    O   W   [   s   t   a   c   k   .   f   i   r   s   t   ]   ;
0043740   \r   s   t   a   c   k       _       s   t   a   c   k   .   r
0043760    e   s   t   ;  \r   t   y   p   e   e   x   p       _       N
0044000    A   R   R   O   W   [   s   t   a   c   k   .   f   i   r   s
0044020    t   ]   ;  \r   s   t   a   c   k       _       s   t   a   c
0044040    k   .   r   e   s   t   ;  \r   s   t   a   c   k       _    
0044060    C   O   N   S   [   B   u   i   l   d   E   x   p   w   o   r
0044100    d   s   2   P   r   o   d   N   o   d   e   [   p   o   s   i
0044120    t   i   o   n   ,       l   e   n   g   t   h   ,       t   y
0044140    p   e   e   x   p   ,       e   x   p   ]   ,       s   t   a
0044160    c   k   ]   ;  \r   R   E   T   U   R   N       [   s   t   a
0044200    c   k   ]  \r   E   N   D   ;  \r  \r   S   e   e   p   r   i
0044220    m   a   r   y   i   s   t   y   p   e   :       P   R   O   C
0044240        [   n   o   d   e   s   :       L   I   S   T       O   F
0044260        R   E   F       A   N   Y   ,       p   o   s   i   t   i
0044300    o   n   :       I   N   T   ,       l   e   n   g   t   h   :
0044320        I   N   T   ]  \r  \t   R   E   T   U   R   N   S       [
0044340    L   I   S   T       O   F       R   E   F       A   N   Y   ]
0044360        =  \r   B   E   G   I   N  \r   s   t   a   c   k   :    
0044400    L   I   S   T       O   F       R   E   F       A   N   Y    
0044420    _       n   o   d   e   s   ;  \r   e   x   p   :       E   x
0044440    p   N   o   d   e   ;  \r   t   y   p   e   e   x   p   :    
0044460    T   y   p   e   E   x   p   N   o   d   e   ;  \r   t   y   p
0044500    e   e   x   p       _       N   A   R   R   O   W   [   s   t
0044520    a   c   k   .   f   i   r   s   t   ]   ;  \r   s   t   a   c
0044540    k       _       s   t   a   c   k   .   r   e   s   t   ;  \r
0044560    e   x   p       _       N   A   R   R   O   W   [   s   t   a
0044600    c   k   .   f   i   r   s   t   ]   ;  \r   s   t   a   c   k
0044620        _       s   t   a   c   k   .   r   e   s   t   ;  \r   s
0044640    t   a   c   k       _       C   O   N   S   [   B   u   i   l
0044660    d   E   x   p   i   s   t   y   p   e   P   r   o   d   N   o
0044700    d   e   [   p   o   s   i   t   i   o   n   ,       l   e   n
0044720    g   t   h   ,       e   x   p   ,       t   y   p   e   e   x
0044740    p   ]   ,       s   t   a   c   k   ]   ;  \r   R   E   T   U
0044760    R   N       [   s   t   a   c   k   ]  \r   E   N   D   ;  \r
0045000   \r   S   e   e   p   r   i   m   a   r   y   a   d   d   r   e
0045020    s   s   :       P   R   O   C       [   n   o   d   e   s   :
0045040        L   I   S   T       O   F       R   E   F       A   N   Y
0045060    ,       p   o   s   i   t   i   o   n   :       I   N   T   ,
0045100        l   e   n   g   t   h   :       I   N   T   ]  \r  \t   R
0045120    E   T   U   R   N   S       [   L   I   S   T       O   F    
0045140    R   E   F       A   N   Y   ]       =  \r   B   E   G   I   N
0045160   \r   s   t   a   c   k   :       L   I   S   T       O   F    
0045200    R   E   F       A   N   Y       _       n   o   d   e   s   ;
0045220   \r   l   h   s   :       E   x   p   N   o   d   e   ;  \r   l
0045240    h   s       _       N   A   R   R   O   W   [   s   t   a   c
0045260    k   .   f   i   r   s   t   ]   ;  \r   s   t   a   c   k    
0045300    _       s   t   a   c   k   .   r   e   s   t   ;  \r   s   t
0045320    a   c   k       _       C   O   N   S   [   B   u   i   l   d
0045340    E   x   p   a   d   d   r   e   s   s   P   r   o   d   N   o
0045360    d   e   [   p   o   s   i   t   i   o   n   ,       l   e   n
0045400    g   t   h   ,       l   h   s   ]   ,       s   t   a   c   k
0045420    ]   ;  \r   R   E   T   U   R   N       [   s   t   a   c   k
0045440    ]  \r   E   N   D   ;  \r  \r   S   e   e   p   r   i   m   a
0045460    r   y   d   e   s   c   r   i   p   t   o   r   :       P   R
0045500    O   C       [   n   o   d   e   s   :       L   I   S   T    
0045520    O   F       R   E   F       A   N   Y   ,       p   o   s   i
0045540    t   i   o   n   :       I   N   T   ,       l   e   n   g   t
0045560    h   :       I   N   T   ]  \r  \t   R   E   T   U   R   N   S
0045600        [   L   I   S   T       O   F       R   E   F       A   N
0045620    Y   ]       =  \r   B   E   G   I   N  \r   s   t   a   c   k
0045640    :       L   I   S   T       O   F       R   E   F       A   N
0045660    Y       _       n   o   d   e   s   ;  \r   d   e   s   c   l
0045700    i   s   t   :       D   e   s   c   L   i   s   t   N   o   d
0045720    e   ;  \r   d   e   s   c   l   i   s   t       _       N   A
0045740    R   R   O   W   [   s   t   a   c   k   .   f   i   r   s   t
0045760    ]   ;  \r   s   t   a   c   k       _       s   t   a   c   k
0046000    .   r   e   s   t   ;  \r   s   t   a   c   k       _       C
0046020    O   N   S   [   B   u   i   l   d   E   x   p   d   e   s   c
0046040    r   i   p   t   o   r   P   r   o   d   N   o   d   e   [   p
0046060    o   s   i   t   i   o   n   ,       l   e   n   g   t   h   ,
0046100        d   e   s   c   l   i   s   t   ]   ,       s   t   a   c
0046120    k   ]   ;  \r   R   E   T   U   R   N       [   s   t   a   c
0046140    k   ]  \r   E   N   D   ;  \r  \r   S   e   e   p   r   i   m
0046160    a   r   y   l   h   s   :       P   R   O   C       [   n   o
0046200    d   e   s   :       L   I   S   T       O   F       R   E   F
0046220        A   N   Y   ,       p   o   s   i   t   i   o   n   :    
0046240    I   N   T   ,       l   e   n   g   t   h   :       I   N   T
0046260    ]  \r  \t   R   E   T   U   R   N   S       [   L   I   S   T
0046300        O   F       R   E   F       A   N   Y   ]       =  \r   B
0046320    E   G   I   N  \r   s   t   a   c   k   :       L   I   S   T
0046340        O   F       R   E   F       A   N   Y       _       n   o
0046360    d   e   s   ;  \r   l   h   s   :       E   x   p   N   o   d
0046400    e   ;  \r   l   h   s       _       N   A   R   R   O   W   [
0046420    s   t   a   c   k   .   f   i   r   s   t   ]   ;  \r   s   t
0046440    a   c   k       _       s   t   a   c   k   .   r   e   s   t
0046460    ;  \r   s   t   a   c   k       _       C   O   N   S   [   l
0046500    h   s   ,       s   t   a   c   k   ]   ;  \r   R   E   T   U
0046520    R   N       [   s   t   a   c   k   ]  \r   E   N   D   ;  \r
0046540   \r   S   e   e   n   e   w   p   l   a   i   n   :       P   R
0046560    O   C       [   n   o   d   e   s   :       L   I   S   T    
0046600    O   F       R   E   F       A   N   Y   ,       p   o   s   i
0046620    t   i   o   n   :       I   N   T   ,       l   e   n   g   t
0046640    h   :       I   N   T   ]  \r  \t   R   E   T   U   R   N   S
0046660        [   L   I   S   T       O   F       R   E   F       A   N
0046700    Y   ]       =  \r   B   E   G   I   N  \r   s   t   a   c   k
0046720    :       L   I   S   T       O   F       R   E   F       A   N
0046740    Y       _       n   o   d   e   s   ;  \r   s   t   a   c   k
0046760        _       C   O   N   S   [   B   u   i   l   d   N   e   w
0047000    p   l   a   i   n   P   r   o   d   N   o   d   e   [   p   o
0047020    s   i   t   i   o   n   ,       l   e   n   g   t   h   ]   ,
0047040        s   t   a   c   k   ]   ;  \r   R   E   T   U   R   N    
0047060    [   s   t   a   c   k   ]  \r   E   N   D   ;  \r  \r   S   e
0047100    e   n   e   w   z   o   n   e   d   :       P   R   O   C    
0047120    [   n   o   d   e   s   :       L   I   S   T       O   F    
0047140    R   E   F       A   N   Y   ,       p   o   s   i   t   i   o
0047160    n   :       I   N   T   ,       l   e   n   g   t   h   :    
0047200    I   N   T   ]  \r  \t   R   E   T   U   R   N   S       [   L
0047220    I   S   T       O   F       R   E   F       A   N   Y   ]    
0047240    =  \r   B   E   G   I   N  \r   s   t   a   c   k   :       L
0047260    I   S   T       O   F       R   E   F       A   N   Y       _
0047300        n   o   d   e   s   ;  \r   l   h   s   :       E   x   p
0047320    N   o   d   e   ;  \r   l   h   s       _       N   A   R   R
0047340    O   W   [   s   t   a   c   k   .   f   i   r   s   t   ]   ;
0047360   \r   s   t   a   c   k       _       s   t   a   c   k   .   r
0047400    e   s   t   ;  \r   s   t   a   c   k       _       C   O   N
0047420    S   [   B   u   i   l   d   N   e   w   z   o   n   e   d   P
0047440    r   o   d   N   o   d   e   [   p   o   s   i   t   i   o   n
0047460    ,       l   e   n   g   t   h   ,       l   h   s   ]   ,    
0047500    s   t   a   c   k   ]   ;  \r   R   E   T   U   R   N       [
0047520    s   t   a   c   k   ]  \r   E   N   D   ;  \r  \r   S   e   e
0047540    c   o   n   s   p   l   a   i   n   :       P   R   O   C    
0047560    [   n   o   d   e   s   :       L   I   S   T       O   F    
0047600    R   E   F       A   N   Y   ,       p   o   s   i   t   i   o
0047620    n   :       I   N   T   ,       l   e   n   g   t   h   :    
0047640    I   N   T   ]  \r  \t   R   E   T   U   R   N   S       [   L
0047660    I   S   T       O   F       R   E   F       A   N   Y   ]    
0047700    =  \r   B   E   G   I   N  \r   s   t   a   c   k   :       L
0047720    I   S   T       O   F       R   E   F       A   N   Y       _
0047740        n   o   d   e   s   ;  \r   s   t   a   c   k       _    
0047760    C   O   N   S   [   B   u   i   l   d   C   o   n   s   p   l
0050000    a   i   n   P   r   o   d   N   o   d   e   [   p   o   s   i
0050020    t   i   o   n   ,       l   e   n   g   t   h   ]   ,       s
0050040    t   a   c   k   ]   ;  \r   R   E   T   U   R   N       [   s
0050060    t   a   c   k   ]  \r   E   N   D   ;  \r  \r   S   e   e   c
0050100    o   n   s   z   o   n   e   d   :       P   R   O   C       [
0050120    n   o   d   e   s   :       L   I   S   T       O   F       R
0050140    E   F       A   N   Y   ,       p   o   s   i   t   i   o   n
0050160    :       I   N   T   ,       l   e   n   g   t   h   :       I
0050200    N   T   ]  \r  \t   R   E   T   U   R   N   S       [   L   I
0050220    S   T       O   F       R   E   F       A   N   Y   ]       =
0050240   \r   B   E   G   I   N  \r   s   t   a   c   k   :       L   I
0050260    S   T       O   F       R   E   F       A   N   Y       _    
0050300    n   o   d   e   s   ;  \r   l   h   s   :       E   x   p   N
0050320    o   d   e   ;  \r   l   h   s       _       N   A   R   R   O
0050340    W   [   s   t   a   c   k   .   f   i   r   s   t   ]   ;  \r
0050360    s   t   a   c   k       _       s   t   a   c   k   .   r   e
0050400    s   t   ;  \r   s   t   a   c   k       _       C   O   N   S
0050420    [   B   u   i   l   d   C   o   n   s   z   o   n   e   d   P
0050440    r   o   d   N   o   d   e   [   p   o   s   i   t   i   o   n
0050460    ,       l   e   n   g   t   h   ,       l   h   s   ]   ,    
0050500    s   t   a   c   k   ]   ;  \r   R   E   T   U   R   N       [
0050520    s   t   a   c   k   ]  \r   E   N   D   ;  \r  \r   S   e   e
0050540    l   i   s   t   c   o   n   s   p   l   a   i   n   :       P
0050560    R   O   C       [   n   o   d   e   s   :       L   I   S   T
0050600        O   F       R   E   F       A   N   Y   ,       p   o   s
0050620    i   t   i   o   n   :       I   N   T   ,       l   e   n   g
0050640    t   h   :       I   N   T   ]  \r  \t   R   E   T   U   R   N
0050660    S       [   L   I   S   T       O   F       R   E   F       A
0050700    N   Y   ]       =  \r   B   E   G   I   N  \r   s   t   a   c
0050720    k   :       L   I   S   T       O   F       R   E   F       A
0050740    N   Y       _       n   o   d   e   s   ;  \r   s   t   a   c
0050760    k       _       C   O   N   S   [   B   u   i   l   d   L   i
0051000    s   t   C   o   n   s   p   l   a   i   n   P   r   o   d   N
0051020    o   d   e   [   p   o   s   i   t   i   o   n   ,       l   e
0051040    n   g   t   h   ]   ,       s   t   a   c   k   ]   ;  \r   R
0051060    E   T   U   R   N       [   s   t   a   c   k   ]  \r   E   N
0051100    D   ;  \r  \r   S   e   e   l   i   s   t   c   o   n   s   z
0051120    o   n   e   d   :       P   R   O   C       [   n   o   d   e
0051140    s   :       L   I   S   T       O   F       R   E   F       A
0051160    N   Y   ,       p   o   s   i   t   i   o   n   :       I   N
0051200    T   ,       l   e   n   g   t   h   :       I   N   T   ]  \r
0051220   \t   R   E   T   U   R   N   S       [   L   I   S   T       O
0051240    F       R   E   F       A   N   Y   ]       =  \r   B   E   G
0051260    I   N  \r   s   t   a   c   k   :       L   I   S   T       O
0051300    F       R   E   F       A   N   Y       _       n   o   d   e
0051320    s   ;  \r   l   h   s   :       E   x   p   N   o   d   e   ;
0051340   \r   l   h   s       _       N   A   R   R   O   W   [   s   t
0051360    a   c   k   .   f   i   r   s   t   ]   ;  \r   s   t   a   c
0051400    k       _       s   t   a   c   k   .   r   e   s   t   ;  \r
0051420    s   t   a   c   k       _       C   O   N   S   [   B   u   i
0051440    l   d   L   i   s   t   C   o   n   s   z   o   n   e   d   P
0051460    r   o   d   N   o   d   e   [   p   o   s   i   t   i   o   n
0051500    ,       l   e   n   g   t   h   ,       l   h   s   ]   ,    
0051520    s   t   a   c   k   ]   ;  \r   R   E   T   U   R   N       [
0051540    s   t   a   c   k   ]  \r   E   N   D   ;  \r  \r   S   e   e
0051560    d   e   s   c   l   i   s   t   e   x   p   l   i   c   i   t
0051600    :       P   R   O   C       [   n   o   d   e   s   :       L
0051620    I   S   T       O   F       R   E   F       A   N   Y   ,    
0051640    p   o   s   i   t   i   o   n   :       I   N   T   ,       l
0051660    e   n   g   t   h   :       I   N   T   ]  \r  \t   R   E   T
0051700    U   R   N   S       [   L   I   S   T       O   F       R   E
0051720    F       A   N   Y   ]       =  \r   B   E   G   I   N  \r   s
0051740    t   a   c   k   :       L   I   S   T       O   F       R   E
0051760    F       A   N   Y       _       n   o   d   e   s   ;  \r   e
0052000    x   p   b   a   s   e   :       E   x   p   N   o   d   e   ;
0052020   \r   e   x   p   l   e   n   g   t   h   :       E   x   p   N
0052040    o   d   e   ;  \r   o   p   t   t   y   p   e   :       O   p
0052060    t   T   y   p   e   N   o   d   e   ;  \r   o   p   t   t   y
0052100    p   e       _       N   A   R   R   O   W   [   s   t   a   c
0052120    k   .   f   i   r   s   t   ]   ;  \r   s   t   a   c   k    
0052140    _       s   t   a   c   k   .   r   e   s   t   ;  \r   e   x
0052160    p   l   e   n   g   t   h       _       N   A   R   R   O   W
0052200    [   s   t   a   c   k   .   f   i   r   s   t   ]   ;  \r   s
0052220    t   a   c   k       _       s   t   a   c   k   .   r   e   s
0052240    t   ;  \r   e   x   p   b   a   s   e       _       N   A   R
0052260    R   O   W   [   s   t   a   c   k   .   f   i   r   s   t   ]
0052300    ;  \r   s   t   a   c   k       _       s   t   a   c   k   .
0052320    r   e   s   t   ;  \r   s   t   a   c   k       _       C   O
0052340    N   S   [   B   u   i   l   d   D   e   s   c   L   i   s   t
0052360    e   x   p   l   i   c   i   t   l   e   n   g   t   h   P   r
0052400    o   d   N   o   d   e   [   p   o   s   i   t   i   o   n   ,
0052420        l   e   n   g   t   h   ,       e   x   p   b   a   s   e
0052440    ,       e   x   p   l   e   n   g   t   h   ,       o   p   t
0052460    t   y   p   e   ]   ,       s   t   a   c   k   ]   ;  \r   R
0052500    E   T   U   R   N       [   s   t   a   c   k   ]  \r   E   N
0052520    D   ;  \r  \r   S   e   e   d   e   s   c   l   i   s   t   d
0052540    e   f   a   u   l   t   :       P   R   O   C       [   n   o
0052560    d   e   s   :       L   I   S   T       O   F       R   E   F
0052600        A   N   Y   ,       p   o   s   i   t   i   o   n   :    
0052620    I   N   T   ,       l   e   n   g   t   h   :       I   N   T
0052640    ]  \r  \t   R   E   T   U   R   N   S       [   L   I   S   T
0052660        O   F       R   E   F       A   N   Y   ]       =  \r   B
0052700    E   G   I   N  \r   s   t   a   c   k   :       L   I   S   T
0052720        O   F       R   E   F       A   N   Y       _       n   o
0052740    d   e   s   ;  \r   e   x   p   :       E   x   p   N   o   d
0052760    e   ;  \r   e   x   p       _       N   A   R   R   O   W   [
0053000    s   t   a   c   k   .   f   i   r   s   t   ]   ;  \r   s   t
0053020    a   c   k       _       s   t   a   c   k   .   r   e   s   t
0053040    ;  \r   s   t   a   c   k       _       C   O   N   S   [   B
0053060    u   i   l   d   D   e   s   c   L   i   s   t   d   e   f   a
0053100    u   l   t   l   e   n   g   t   h   P   r   o   d   N   o   d
0053120    e   [   p   o   s   i   t   i   o   n   ,       l   e   n   g
0053140    t   h   ,       e   x   p   ]   ,       s   t   a   c   k   ]
0053160    ;  \r   R   E   T   U   R   N       [   s   t   a   c   k   ]
0053200   \r   E   N   D   ;  \r  \r   S   e   e   o   p   t   c   a   t
0053220    c   h   c   a   t   c   h   l   i   s   t   :       P   R   O
0053240    C       [   n   o   d   e   s   :       L   I   S   T       O
0053260    F       R   E   F       A   N   Y   ,       p   o   s   i   t
0053300    i   o   n   :       I   N   T   ,       l   e   n   g   t   h
0053320    :       I   N   T   ]  \r  \t   R   E   T   U   R   N   S    
0053340    [   L   I   S   T       O   F       R   E   F       A   N   Y
0053360    ]       =  \r   B   E   G   I   N  \r   s   t   a   c   k   :
0053400        L   I   S   T       O   F       R   E   F       A   N   Y
0053420        _       n   o   d   e   s   ;  \r   c   a   t   c   h   l
0053440    i   s   t   :       C   a   t   c   h   N   o   d   e   ;  \r
0053460    c   a   t   c   h   l   i   s   t       _       N   A   R   R
0053500    O   W   [   s   t   a   c   k   .   f   i   r   s   t   ]   ;
0053520   \r   s   t   a   c   k       _       s   t   a   c   k   .   r
0053540    e   s   t   ;  \r   s   t   a   c   k       _       C   O   N
0053560    S   [   c   a   t   c   h   l   i   s   t   ,       s   t   a
0053600    c   k   ]   ;  \r   R   E   T   U   R   N       [   s   t   a
0053620    c   k   ]  \r   E   N   D   ;  \r  \r   S   e   e   o   p   t
0053640    c   a   t   c   h   e   m   p   t   y   :       P   R   O   C
0053660        [   n   o   d   e   s   :       L   I   S   T       O   F
0053700        R   E   F       A   N   Y   ,       p   o   s   i   t   i
0053720    o   n   :       I   N   T   ,       l   e   n   g   t   h   :
0053740        I   N   T   ]  \r  \t   R   E   T   U   R   N   S       [
0053760    L   I   S   T       O   F       R   E   F       A   N   Y   ]
0054000        =  \r   B   E   G   I   N  \r   s   t   a   c   k   :    
0054020    L   I   S   T       O   F       R   E   F       A   N   Y    
0054040    _       n   o   d   e   s   ;  \r   s   t   a   c   k       _
0054060        C   O   N   S   [   B   u   i   l   d   C   a   t   c   h
0054100    P   r   o   d   N   o   d   e   [   p   o   s   i   t   i   o
0054120    n   ,       l   e   n   g   t   h   ,       B   u   i   l   d
0054140    C   a   t   c   h   C   a   s   e   L   i   s   t   e   m   p
0054160    t   y   P   r   o   d   N   o   d   e   [   p   o   s   i   t
0054200    i   o   n   ,       l   e   n   g   t   h   ]   ,       B   u
0054220    i   l   d   C   a   t   c   h   A   n   y   a   b   s   e   n
0054240    t   P   r   o   d   N   o   d   e   [   p   o   s   i   t   i
0054260    o   n   ,       l   e   n   g   t   h   ]   ]   ,       s   t
0054300    a   c   k   ]   ;  \r   R   E   T   U   R   N       [   s   t
0054320    a   c   k   ]  \r   E   N   D   ;  \r  \r   S   e   e   i   d
0054340    e   n   t   l   i   s   t   :       P   R   O   C       [   n
0054360    o   d   e   s   :       L   I   S   T       O   F       R   E
0054400    F       A   N   Y   ,       p   o   s   i   t   i   o   n   :
0054420        I   N   T   ,       l   e   n   g   t   h   :       I   N
0054440    T   ]  \r  \t   R   E   T   U   R   N   S       [   L   I   S
0054460    T       O   F       R   E   F       A   N   Y   ]       =  \r
0054500    B   E   G   I   N  \r   s   t   a   c   k   :       L   I   S
0054520    T       O   F       R   E   F       A   N   Y       _       n
0054540    o   d   e   s   ;  \r   i   d   e   n   t   l   i   s   t   P
0054560    :       I   d   e   n   t   L   i   s   t   N   o   d   e   ;
0054600   \r   i   d   e   n   t   l   i   s   t   P       _       N   A
0054620    R   R   O   W   [   s   t   a   c   k   .   f   i   r   s   t
0054640    ]   ;  \r   s   t   a   c   k       _       s   t   a   c   k
0054660    .   r   e   s   t   ;  \r   s   t   a   c   k       _       C
0054700    O   N   S   [   i   d   e   n   t   l   i   s   t   P   ,    
0054720    s   t   a   c   k   ]   ;  \r   R   E   T   U   R   N       [
0054740    s   t   a   c   k   ]  \r   E   N   D   ;  \r  \r   S   e   e
0054760    i   d   e   n   t   l   i   s   t   P   a   :       P   R   O
0055000    C       [   n   o   d   e   s   :       L   I   S   T       O
0055020    F       R   E   F       A   N   Y   ,       p   o   s   i   t
0055040    i   o   n   :       I   N   T   ,       l   e   n   g   t   h
0055060    :       I   N   T   ]  \r  \t   R   E   T   U   R   N   S    
0055100    [   L   I   S   T       O   F       R   E   F       A   N   Y
0055120    ]       =  \r   B   E   G   I   N  \r   s   t   a   c   k   :
0055140        L   I   S   T       O   F       R   E   F       A   N   Y
0055160        _       n   o   d   e   s   ;  \r   I   d   :       I   d
0055200    N   o   d   e   ;  \r   I   d       _       N   A   R   R   O
0055220    W   [   s   t   a   c   k   .   f   i   r   s   t   ]   ;  \r
0055240    s   t   a   c   k       _       s   t   a   c   k   .   r   e
0055260    s   t   ;  \r   s   t   a   c   k       _       C   O   N   S
0055300    [   B   u   i   l   d   I   d   e   n   t   L   i   s   t   o
0055320    n   e   P   r   o   d   N   o   d   e   [   p   o   s   i   t
0055340    i   o   n   ,       l   e   n   g   t   h   ,       B   u   i
0055360    l   d   I   d   e   n   t   i   d   P   r   o   d   N   o   d
0055400    e   [   I   d   .   p   o   s   i   t   i   o   n   ,       I
0055420    d   .   l   e   n   g   t   h   ,       I   d   ]   ]   ,    
0055440    s   t   a   c   k   ]   ;  \r   R   E   T   U   R   N       [
0055460    s   t   a   c   k   ]  \r   E   N   D   ;  \r  \r   S   e   e
0055500    i   d   e   n   t   l   i   s   t   P   b   :       P   R   O
0055520    C       [   n   o   d   e   s   :       L   I   S   T       O
0055540    F       R   E   F       A   N   Y   ,       p   o   s   i   t
0055560    i   o   n   :       I   N   T   ,       l   e   n   g   t   h
0055600    :       I   N   T   ]  \r  \t   R   E   T   U   R   N   S    
0055620    [   L   I   S   T       O   F       R   E   F       A   N   Y
0055640    ]       =  \r   B   E   G   I   N  \r   s   t   a   c   k   :
0055660        L   I   S   T       O   F       R   E   F       A   N   Y
0055700        _       n   o   d   e   s   ;  \r   I   d   :       I   d
0055720    N   o   d   e   ;  \r   p   o   s   i   t   i   o   n   P   :
0055740        P   o   s   i   t   i   o   n   N   o   d   e   ;  \r   p
0055760    o   s   i   t   i   o   n   P       _       N   A   R   R   O
0056000    W   [   s   t   a   c   k   .   f   i   r   s   t   ]   ;  \r
0056020    s   t   a   c   k       _       s   t   a   c   k   .   r   e
0056040    s   t   ;  \r   I   d       _       N   A   R   R   O   W   [
0056060    s   t   a   c   k   .   f   i   r   s   t   ]   ;  \r   s   t
0056100    a   c   k       _       s   t   a   c   k   .   r   e   s   t
0056120    ;  \r   s   t   a   c   k       _       C   O   N   S   [   B
0056140    u   i   l   d   I   d   e   n   t   L   i   s   t   o   n   e
0056160    P   r   o   d   N   o   d   e   [   p   o   s   i   t   i   o
0056200    n   ,       l   e   n   g   t   h   ,       B   u   i   l   d
0056220    I   d   e   n   t   i   d   p   o   s   i   t   i   o   n   P
0056240    r   o   d   N   o   d   e   [   I   d   .   p   o   s   i   t
0056260    i   o   n   ,       p   o   s   i   t   i   o   n   P   .   p
0056300    o   s   i   t   i   o   n       +       p   o   s   i   t   i
0056320    o   n   P   .   l   e   n   g   t   h       -       I   d   .
0056340    p   o   s   i   t   i   o   n   ,       I   d   ,       p   o
0056360    s   i   t   i   o   n   P   ]   ]   ,       s   t   a   c   k
0056400    ]   ;  \r   R   E   T   U   R   N       [   s   t   a   c   k
0056420    ]  \r   E   N   D   ;  \r  \r   S   e   e   i   d   e   n   t
0056440    l   i   s   t   P   c   :       P   R   O   C       [   n   o
0056460    d   e   s   :       L   I   S   T       O   F       R   E   F
0056500        A   N   Y   ,       p   o   s   i   t   i   o   n   :    
0056520    I   N   T   ,       l   e   n   g   t   h   :       I   N   T
0056540    ]  \r  \t   R   E   T   U   R   N   S       [   L   I   S   T
0056560        O   F       R   E   F       A   N   Y   ]       =  \r   B
0056600    E   G   I   N  \r   s   t   a   c   k   :       L   I   S   T
0056620        O   F       R   E   F       A   N   Y       _       n   o
0056640    d   e   s   ;  \r   I   d   :       I   d   N   o   d   e   ;
0056660   \r   i   d   e   n   t   l   i   s   t   P   :       I   d   e
0056700    n   t   L   i   s   t   N   o   d   e   ;  \r   i   d   e   n
0056720    t   l   i   s   t   P       _       N   A   R   R   O   W   [
0056740    s   t   a   c   k   .   f   i   r   s   t   ]   ;  \r   s   t
0056760    a   c   k       _       s   t   a   c   k   .   r   e   s   t
0057000    ;  \r   I   d       _       N   A   R   R   O   W   [   s   t
0057020    a   c   k   .   f   i   r   s   t   ]   ;  \r   s   t   a   c
0057040    k       _       s   t   a   c   k   .   r   e   s   t   ;  \r
0057060    s   t   a   c   k       _       C   O   N   S   [   B   u   i
0057100    l   d   I   d   e   n   t   L   i   s   t   m   a   n   y   P
0057120    r   o   d   N   o   d   e   [   p   o   s   i   t   i   o   n
0057140    ,       l   e   n   g   t   h   ,       B   u   i   l   d   I
0057160    d   e   n   t   L   i   s   t   o   n   e   P   r   o   d   N
0057200    o   d   e   [   I   d   .   p   o   s   i   t   i   o   n   ,
0057220        I   d   .   l   e   n   g   t   h   ,       B   u   i   l
0057240    d   I   d   e   n   t   i   d   P   r   o   d   N   o   d   e
0057260    [   I   d   .   p   o   s   i   t   i   o   n   ,       I   d
0057300    .   l   e   n   g   t   h   ,       I   d   ]   ]   ,       i
0057320    d   e   n   t   l   i   s   t   P   ]   ,       s   t   a   c
0057340    k   ]   ;  \r   R   E   T   U   R   N       [   s   t   a   c
0057360    k   ]  \r   E   N   D   ;  \r  \r   S   e   e   i   d   e   n
0057400    t   l   i   s   t   P   d   :       P   R   O   C       [   n
0057420    o   d   e   s   :       L   I   S   T       O   F       R   E
0057440    F       A   N   Y   ,       p   o   s   i   t   i   o   n   :
0057460        I   N   T   ,       l   e   n   g   t   h   :       I   N
0057500    T   ]  \r  \t   R   E   T   U   R   N   S       [   L   I   S
0057520    T       O   F       R   E   F       A   N   Y   ]       =  \r
0057540    B   E   G   I   N  \r   s   t   a   c   k   :       L   I   S
0057560    T       O   F       R   E   F       A   N   Y       _       n
0057600    o   d   e   s   ;  \r   I   d   :       I   d   N   o   d   e
0057620    ;  \r   p   o   s   i   t   i   o   n   P   :       P   o   s
0057640    i   t   i   o   n   N   o   d   e   ;  \r   i   d   e   n   t
0057660    l   i   s   t   P   :       I   d   e   n   t   L   i   s   t
0057700    N   o   d   e   ;  \r   i   d   e   n   t   l   i   s   t   P
0057720        _       N   A   R   R   O   W   [   s   t   a   c   k   .
0057740    f   i   r   s   t   ]   ;  \r   s   t   a   c   k       _    
0057760    s   t   a   c   k   .   r   e   s   t   ;  \r   p   o   s   i
0060000    t   i   o   n   P       _       N   A   R   R   O   W   [   s
0060020    t   a   c   k   .   f   i   r   s   t   ]   ;  \r   s   t   a
0060040    c   k       _       s   t   a   c   k   .   r   e   s   t   ;
0060060   \r   I   d       _       N   A   R   R   O   W   [   s   t   a
0060100    c   k   .   f   i   r   s   t   ]   ;  \r   s   t   a   c   k
0060120        _       s   t   a   c   k   .   r   e   s   t   ;  \r   s
0060140    t   a   c   k       _       C   O   N   S   [   B   u   i   l
0060160    d   I   d   e   n   t   L   i   s   t   m   a   n   y   P   r
0060200    o   d   N   o   d   e   [   p   o   s   i   t   i   o   n   ,
0060220        l   e   n   g   t   h   ,       B   u   i   l   d   I   d
0060240    e   n   t   L   i   s   t   o   n   e   P   r   o   d   N   o
0060260    d   e   [   I   d   .   p   o   s   i   t   i   o   n   ,    
0060300    p   o   s   i   t   i   o   n   P   .   p   o   s   i   t   i
0060320    o   n       +       p   o   s   i   t   i   o   n   P   .   l
0060340    e   n   g   t   h       -       I   d   .   p   o   s   i   t
0060360    i   o   n   ,       B   u   i   l   d   I   d   e   n   t   i
0060400    d   p   o   s   i   t   i   o   n   P   r   o   d   N   o   d
0060420    e   [   I   d   .   p   o   s   i   t   i   o   n   ,       p
0060440    o   s   i   t   i   o   n   P   .   p   o   s   i   t   i   o
0060460    n       +       p   o   s   i   t   i   o   n   P   .   l   e
0060500    n   g   t   h       -       I   d   .   p   o   s   i   t   i
0060520    o   n   ,       I   d   ,       p   o   s   i   t   i   o   n
0060540    P   ]   ]   ,       i   d   e   n   t   l   i   s   t   P   ]
0060560    ,       s   t   a   c   k   ]   ;  \r   R   E   T   U   R   N
0060600        [   s   t   a   c   k   ]  \r   E   N   D   ;  \r  \r   S
0060620    e   e   p   r   e   f   i   x   o   p   l   o   n   g   :    
0060640    P   R   O   C       [   n   o   d   e   s   :       L   I   S
0060660    T       O   F       R   E   F       A   N   Y   ,       p   o
0060700    s   i   t   i   o   n   :       I   N   T   ,       l   e   n
0060720    g   t   h   :       I   N   T   ]  \r  \t   R   E   T   U   R
0060740    N   S       [   L   I   S   T       O   F       R   E   F    
0060760    A   N   Y   ]       =  \r   B   E   G   I   N  \r   s   t   a
0061000    c   k   :       L   I   S   T       O   F       R   E   F    
0061020    A   N   Y       _       n   o   d   e   s   ;  \r   s   t   a
0061040    c   k       _       C   O   N   S   [   B   u   i   l   d   P
0061060    r   e   f   i   x   O   p   l   o   n   g   P   r   o   d   N
0061100    o   d   e   [   p   o   s   i   t   i   o   n   ,       l   e
0061120    n   g   t   h   ]   ,       s   t   a   c   k   ]   ;  \r   R
0061140    E   T   U   R   N       [   s   t   a   c   k   ]  \r   E   N
0061160    D   ;  \r  \r   S   e   e   p   r   e   f   i   x   o   p   a
0061200    b   s   :       P   R   O   C       [   n   o   d   e   s   :
0061220        L   I   S   T       O   F       R   E   F       A   N   Y
0061240    ,       p   o   s   i   t   i   o   n   :       I   N   T   ,
0061260        l   e   n   g   t   h   :       I   N   T   ]  \r  \t   R
0061300    E   T   U   R   N   S       [   L   I   S   T       O   F    
0061320    R   E   F       A   N   Y   ]       =  \r   B   E   G   I   N
0061340   \r   s   t   a   c   k   :       L   I   S   T       O   F    
0061360    R   E   F       A   N   Y       _       n   o   d   e   s   ;
0061400   \r   s   t   a   c   k       _       C   O   N   S   [   B   u
0061420    i   l   d   P   r   e   f   i   x   O   p   a   b   s   P   r
0061440    o   d   N   o   d   e   [   p   o   s   i   t   i   o   n   ,
0061460        l   e   n   g   t   h   ]   ,       s   t   a   c   k   ]
0061500    ;  \r   R   E   T   U   R   N       [   s   t   a   c   k   ]
0061520   \r   E   N   D   ;  \r  \r   S   e   e   p   r   e   f   i   x
0061540    o   p   p   r   e   d   :       P   R   O   C       [   n   o
0061560    d   e   s   :       L   I   S   T       O   F       R   E   F
0061600        A   N   Y   ,       p   o   s   i   t   i   o   n   :    
0061620    I   N   T   ,       l   e   n   g   t   h   :       I   N   T
0061640    ]  \r  \t   R   E   T   U   R   N   S       [   L   I   S   T
0061660        O   F       R   E   F       A   N   Y   ]       =  \r   B
0061700    E   G   I   N  \r   s   t   a   c   k   :       L   I   S   T
0061720        O   F       R   E   F       A   N   Y       _       n   o
0061740    d   e   s   ;  \r   s   t   a   c   k       _       C   O   N
0061760    S   [   B   u   i   l   d   P   r   e   f   i   x   O   p   p
0062000    r   e   d   P   r   o   d   N   o   d   e   [   p   o   s   i
0062020    t   i   o   n   ,       l   e   n   g   t   h   ]   ,       s
0062040    t   a   c   k   ]   ;  \r   R   E   T   U   R   N       [   s
0062060    t   a   c   k   ]  \r   E   N   D   ;  \r  \r   S   e   e   p
0062100    r   e   f   i   x   o   p   s   u   c   c   :       P   R   O
0062120    C       [   n   o   d   e   s   :       L   I   S   T       O
0062140    F       R   E   F       A   N   Y   ,       p   o   s   i   t
0062160    i   o   n   :       I   N   T   ,       l   e   n   g   t   h
0062200    :       I   N   T   ]  \r  \t   R   E   T   U   R   N   S    
0062220    [   L   I   S   T       O   F       R   E   F       A   N   Y
0062240    ]       =  \r   B   E   G   I   N  \r   s   t   a   c   k   :
0062260        L   I   S   T       O   F       R   E   F       A   N   Y
0062300        _       n   o   d   e   s   ;  \r   s   t   a   c   k    
0062320    _       C   O   N   S   [   B   u   i   l   d   P   r   e   f
0062340    i   x   O   p   s   u   c   c   P   r   o   d   N   o   d   e
0062360    [   p   o   s   i   t   i   o   n   ,       l   e   n   g   t
0062400    h   ]   ,       s   t   a   c   k   ]   ;  \r   R   E   T   U
0062420    R   N       [   s   t   a   c   k   ]  \r   E   N   D   ;  \r
0062440   \r   S   e   e   p   r   e   f   i   x   o   p   o   r   d   :
0062460        P   R   O   C       [   n   o   d   e   s   :       L   I
0062500    S   T       O   F       R   E   F       A   N   Y   ,       p
0062520    o   s   i   t   i   o   n   :       I   N   T   ,       l   e
0062540    n   g   t   h   :       I   N   T   ]  \r  \t   R   E   T   U
0062560    R   N   S       [   L   I   S   T       O   F       R   E   F
0062600        A   N   Y   ]       =  \r   B   E   G   I   N  \r   s   t
0062620    a   c   k   :       L   I   S   T       O   F       R   E   F
0062640        A   N   Y       _       n   o   d   e   s   ;  \r   s   t
0062660    a   c   k       _       C   O   N   S   [   B   u   i   l   d
0062700    P   r   e   f   i   x   O   p   o   r   d   P   r   o   d   N
0062720    o   d   e   [   p   o   s   i   t   i   o   n   ,       l   e
0062740    n   g   t   h   ]   ,       s   t   a   c   k   ]   ;  \r   R
0062760    E   T   U   R   N       [   s   t   a   c   k   ]  \r   E   N
0063000    D   ;  \r  \r   S   e   e   p   r   e   f   i   x   o   p   m
0063020    i   n   :       P   R   O   C       [   n   o   d   e   s   :
0063040        L   I   S   T       O   F       R   E   F       A   N   Y
0063060    ,       p   o   s   i   t   i   o   n   :       I   N   T   ,
0063100        l   e   n   g   t   h   :       I   N   T   ]  \r  \t   R
0063120    E   T   U   R   N   S       [   L   I   S   T       O   F    
0063140    R   E   F       A   N   Y   ]       =  \r   B   E   G   I   N
0063160   \r   s   t   a   c   k   :       L   I   S   T       O   F    
0063200    R   E   F       A   N   Y       _       n   o   d   e   s   ;
0063220   \r   s   t   a   c   k       _       C   O   N   S   [   B   u
0063240    i   l   d   P   r   e   f   i   x   O   p   m   i   n   P   r
0063260    o   d   N   o   d   e   [   p   o   s   i   t   i   o   n   ,
0063300        l   e   n   g   t   h   ]   ,       s   t   a   c   k   ]
0063320    ;  \r   R   E   T   U   R   N       [   s   t   a   c   k   ]
0063340   \r   E   N   D   ;  \r  \r   S   e   e   p   r   e   f   i   x
0063360    o   p   m   a   x   :       P   R   O   C       [   n   o   d
0063400    e   s   :       L   I   S   T       O   F       R   E   F    
0063420    A   N   Y   ,       p   o   s   i   t   i   o   n   :       I
0063440    N   T   ,       l   e   n   g   t   h   :       I   N   T   ]
0063460   \r  \t   R   E   T   U   R   N   S       [   L   I   S   T    
0063500    O   F       R   E   F       A   N   Y   ]       =  \r   B   E
0063520    G   I   N  \r   s   t   a   c   k   :       L   I   S   T    
0063540    O   F       R   E   F       A   N   Y       _       n   o   d
0063560    e   s   ;  \r   s   t   a   c   k       _       C   O   N   S
0063600    [   B   u   i   l   d   P   r   e   f   i   x   O   p   m   a
0063620    x   P   r   o   d   N   o   d   e   [   p   o   s   i   t   i
0063640    o   n   ,       l   e   n   g   t   h   ]   ,       s   t   a
0063660    c   k   ]   ;  \r   R   E   T   U   R   N       [   s   t   a
0063700    c   k   ]  \r   E   N   D   ;  \r  \r   S   e   e   p   r   e
0063720    f   i   x   o   p   b   a   s   e   :       P   R   O   C    
0063740    [   n   o   d   e   s   :       L   I   S   T       O   F    
0063760    R   E   F       A   N   Y   ,       p   o   s   i   t   i   o
0064000    n   :       I   N   T   ,       l   e   n   g   t   h   :    
0064020    I   N   T   ]  \r  \t   R   E   T   U   R   N   S       [   L
0064040    I   S   T       O   F       R   E   F       A   N   Y   ]    
0064060    =  \r   B   E   G   I   N  \r   s   t   a   c   k   :       L
0064100    I   S   T       O   F       R   E   F       A   N   Y       _
0064120        n   o   d   e   s   ;  \r   s   t   a   c   k       _    
0064140    C   O   N   S   [   B   u   i   l   d   P   r   e   f   i   x
0064160    O   p   b   a   s   e   P   r   o   d   N   o   d   e   [   p
0064200    o   s   i   t   i   o   n   ,       l   e   n   g   t   h   ]
0064220    ,       s   t   a   c   k   ]   ;  \r   R   E   T   U   R   N
0064240        [   s   t   a   c   k   ]  \r   E   N   D   ;  \r  \r   S
0064260    e   e   p   r   e   f   i   x   o   p   l   e   n   g   t   h
0064300    :       P   R   O   C       [   n   o   d   e   s   :       L
0064320    I   S   T       O   F       R   E   F       A   N   Y   ,    
0064340    p   o   s   i   t   i   o   n   :       I   N   T   ,       l
0064360    e   n   g   t   h   :       I   N   T   ]  \r  \t   R   E   T
0064400    U   R   N   S       [   L   I   S   T       O   F       R   E
0064420    F       A   N   Y   ]       =  \r   B   E   G   I   N  \r   s
0064440    t   a   c   k   :       L   I   S   T       O   F       R   E
0064460    F       A   N   Y       _       n   o   d   e   s   ;  \r   s
0064500    t   a   c   k       _       C   O   N   S   [   B   u   i   l
0064520    d   P   r   e   f   i   x   O   p   l   e   n   g   t   h   P
0064540    r   o   d   N   o   d   e   [   p   o   s   i   t   i   o   n
0064560    ,       l   e   n   g   t   h   ]   ,       s   t   a   c   k
0064600    ]   ;  \r   R   E   T   U   R   N       [   s   t   a   c   k
0064620    ]  \r   E   N   D   ;  \r  \r   E   N   D   .   .  \r        
0064636