Skip to main content.
home | support | download

Back to List Archive

PowerPoint and swish.cgi

From: <adivey1(at)not-real.cox.net>
Date: Wed Jun 16 2004 - 11:50:57 GMT
This is a multi-part message in MIME format.

------=____1087386605729_kV-A2mGXeZ
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

[in case my e-mail's webmail foobar's the formatting, I included a text f=
ile with the content below. Thanks so much in advance for the help!]

After indexing my sites via spider.pl and I run a search via the web from=
 swish.cgi, I get the follow in the results page

NewEmployeeOrientation.ppt -- rank: 1000
    =D0=CF=E0=A1=B1=E1>=FE=FF ,u=D4=FE=FF=FF=FFNOPQRSTUVWXYZ[\]^_`abcdefg=
hijklmnopqrstwx}=FA{=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=
=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=
=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=
=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=
=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=
=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=
=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=
=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=
=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=
=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=
=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF`!=F0=D7=B5=DE=D6 n=E5=
=E3=B6]=EFbwJ(=C0p`$=8A=E8=A9^=A5=FEx=9C=EDWMHA=9E=DD=FCT3=DB=EE=ACH=94 i=
=FD=B9XR=A2`)=82=94j=DACk Z=E8=A1=3D-=EC=D5@O =E8)=E81=E6j=CE=F6=E4=A1=9A=
=BB7!=D7=A14=84b=D9=89m=8Du=FA=DE=DB=8D=F8SE3 =AC=9D=B1@=A1 >X7=C3=CB=F4=87=
m=98)=B8l,E=C0=BB(c!=C1=F0=F2h#f]=BE=E5&Y=82=AC=87=3D{=92Lv=B2=8F=DFX5;=AE=
=A6=99wE|=EFy1f=B2=81=C3=9A=98=D9=BE=A5=93=BC=82=CCbX_#=E0frCf=99=F6=C3(=C1=
~=9B=A1}=9F `&W ... ...

    Last Modified Date: 2004-06-09 12:33:59 EDT
    Document Size: 2834432
    Document Path: http://cfo.thissite.net/NewEmployeeOrientation.ppt

I had seen this before and I thought I had removed .ppt files from being =
indexed. That's not my ideal situation though; I would like to be able to=
 index them because we have a lot of PowerPoint files on our servers (peo=
ple are too lazy to make HTML... *sigh*). I've included as much informati=
on as possible because I don't know what information is or isn't relevant=
=2E

What I don't understand, is why that, I don't have .ppt as part of the De=
fault Contents, yet .ppt files are still being indexed.

Here's all of my settings...

--16.conf--

IndexDir		/usr/local/lib/swish-e/spider.pl
SwishProgParameters 	16.pl
DefaultContents 	HTML* .htm .html .shtml .doc .pdf .cfm
StoreDescription 	HTML* <body> 20000
IgnoreWords		www http a an the of and or
MetaNames		swishdocpath swishtitle swishdescription swishlastmodified

--16.pl--

@servers =3D (
    {
    base_url	=3D> 'http://cfo.thissite.net/',
    same_hosts  =3D> 'www.cfo.thissite.net',
    email	=3D> 'cfo-comments@thissite.net',
    },
);

1;

--Swish-e command from terminal--
swish-e -c 16.conf -f 16.index -v 3 -S prog -e

I'll do other sites, in my case, I did sites 1-20 and then I combined the=
m into one index with...
swish-e -M 1.conf 2.conf (and so on) 16.conf (etc) 20.conf combined.index=
 -e

--swish.cgi--
The only thing I have to user config is...

my $DEFAULT_CONFIG_FILE =3D 'swishcgi.conf';

sub default_config {
    return {
        # By default, this script tries to read a config file.  You shoul=
d probably
        # comment this out if not used save a disk stat
        config_file     =3D> $DEFAULT_CONFIG_FILE,	# Default config file
    };

}

--swishcgi.conf--
(sorry for the length, I don't know what's relevant)

return {
    title           =3D> 'Search the websites',	# Title of your choice.  =
Displays on the search page
    swish_binary    =3D> '/usr/local/bin/swish-e',	# Location of swish-e =
binary

    swish_index     =3D> 'swishdb/combined.index',	# Location of your ind=
ex file
                           				# See "select_indexes" below for how to
                           				# select more than one index.

    page_size       =3D> 15,				# Number of results per page  - default 1=
5

    title_property =3D> 'swishtitle',

    description_prop    =3D> 'swishdescription',

    display_props   =3D> [qw/swishlastmodified swishdocsize swishdocpath/=
],

    sorts           =3D> [qw/swishrank swishlastmodified swishtitle swish=
docpath/],

    secondary_sort  =3D> [qw/swishlastmodified desc/],

    metanames       =3D> [qw/ swishdefault swishtitle swishdocpath swishl=
astmodified /],

    meta_groups =3D> {
        all =3D>  [qw/swishdefault swishtitle swishdocpath/],
    },

    name_labels =3D> {
        swishdefault        =3D> 'Title & Body',
        swishtitle          =3D> 'Title',
        swishrank           =3D> 'Rank',
        swishlastmodified   =3D> 'Last Modified Date',
        swishdocpath        =3D> 'Document Path',
        swishdocsize        =3D> 'Document Size',
        all                 =3D> 'All',              # group of metanames=

        subject             =3D> 'Message Subject',  # other examples
        name                =3D> "Poster's Name",
        email               =3D> "Poster's Email",
        sent                =3D> 'Message Date',
    },


    timeout         =3D> 10,    # limit time used by swish when fetching =
results - DoS protection.
                                  # does not work under Windows

    max_query_length =3D> 100,  # limit length of query string.  Swish al=
so has a limit (default is 40)
                                  # You might want to set swish-e's limit=
 higher, and use this to get a
                                  # somewhat more friendly message.

    max_chars       =3D> 500,   # Limits the size of the description_prop=
 if it is not highlighted

    highlight       =3D> {

        package         =3D> 'SWISH::PhraseHighlight',
        show_words      =3D> 10,    # Number of "swish words" words to sh=
ow around highlighted word
        max_words       =3D> 100,   # If no words are found to highlighte=
d then show this many words =

        occurrences     =3D> 6,     # Limit number of occurrences of high=
lighted words
        #highlight_on   =3D> '<b>', # HTML highlighting codes
        #highlight_off  =3D> '</b>',
        highlight_on    =3D> '<font style=3D"background:#FFFF99">',
        highlight_off   =3D> '</font>',

        meta_to_prop_map =3D> {
            swishdefault    =3D> [ qw/swishtitle swishdescription/ ],
            swishtitle      =3D> [ qw/swishtitle/ ],
            swishdocpath    =3D> [ qw/swishdocpath/ ],
        },
    },

    template =3D> {
        package         =3D> 'SWISH::TemplateHTMLTemplate',
        options         =3D> {
            filename            =3D> 'swish.tmpl',
            path                =3D> '/usr/local/apache2/cgi-bin/swish.tm=
pl', # point to folder that filname is in
            die_on_bad_params   =3D> 0,
            loop_context_vars   =3D> 1,
            cache               =3D> 1,
        },
    },

    on_intranet =3D> 0,

    no_first_page_navigation   =3D> 0,
    no_last_page_navigation    =3D> 0,
    num_pages_to_show          =3D> 12,  # number of pages to offer

    date_ranges     =3D> {
        property_name   =3D> 'swishlastmodified',      # property name to=
 limit by

        # what you specify here depends on the DateRanges.pm module.
        time_periods    =3D> [  =

            'All',
            'Today',
            'Yesterday',
            'This Week',
            'Last Week',
            'Last 90 Days',
            'This Month',
            'Last Month',
        ],

        line_break      =3D> 0,
        default         =3D> 'All',
        date_range      =3D> 1,
    },

    # Set max number of swish-e binaries and ps command to run
    limit_procs     =3D> 0,  # max number of swish process to run (zero t=
o not limit)
    ps_prog         =3D> '/bin/ps -Unobody -ocommand',  # command to list=
 number of swish binaries

};

--swish.tmpl--
For what it's worth, here's the template file, slightly modified...


<html>
    <head>
       <title>
          <TMPL_IF RESULTS>Results for: <TMPL_VAR QUERY_SIMPLE><TMPL_ELSE=
><TMPL_VAR TITLE></TMPL_IF>
       </title>
    </head>
    <body>
        <table align=3D"center" border=3D"0" cellpadding=3D"0" cellspacin=
g=3D"0">
        <tr><td>
            <a href=3D"http://www.nasa.gov">
            <img border=3D"0" alt=3D"NASA home page" src=3D"../nasalogo.g=
if"></a>
            <br><br>
        </td><td valign=3D"middle">
            <font face=3D"Arial" size=3D"+1"><TMPL_VAR TITLE></font>
        </td></tr>
        </table>

        <TMPL_IF MESSAGE>
            <font face=3D"Arial" size=3D"3" color=3D"red"><TMPL_VAR MESSA=
GE></font>
        </TMPL_IF>
    <div align=3D"center">
        <form method=3D"GET" action=3D"<TMPL_VAR MY_URL>" enctype=3D"appl=
ication/x-www-form-urlencoded" class=3D"form">
            <input type=3D"text" name=3D"query"  size=3D32 maxlength=3D20=
0 />
            <input type=3D"submit" name=3D"submit" value=3D"Search!" /><b=
r>

            <TMPL_IF METANAMES>
                <font face=3D"Arial" size=3D2>Limit search to:
                <TMPL_LOOP METANAMES>
                    <input type=3D"radio" name=3D"metaname" value=3D"<TMP=
L_VAR NAME>"><TMPL_VAR LABEL>
                </TMPL_LOOP>
                <br>
            </TMPL_IF>



            <TMPL_IF SORTS>
                Sort by:
                <select name=3D"sort">
                    <TMPL_LOOP SORTS>
                        <option  value=3D"<TMPL_VAR NAME>" ><TMPL_VAR LAB=
EL></option>
                    </TMPL_LOOP>
                </select>
                <input type=3D"checkbox" name=3D"reverse" value=3D1>Rever=
se Sort
            </TMPL_IF>
    </div>


            <TMPL_IF INDEX_SELECT>
                <!-- not implemented -- see Template Tool kit example -->=

            </TMPL_IF>


            <TMPL_IF LIMITS>
                <!-- not really implemented -->
                <br><TMPL_VAR LIMIT_TITLE>
                <TMPL_LOOP LIMITS>
                    <input type=3D"checkbox" name=3D"sbm" value=3D"<TMPL_=
VAR VALUE>" /><TMPL_VAR LABEL>
                </TMPL_LOOP>
            </TMPL_IF>


            <TMPL_VAR DATE_RANGES>

            =


        </form>


        <TMPL_IF FILES>
            <table cellpadding=3D0 cellspacing=3D0 border=3D0 width=3D"10=
0%">
                <tr>
                    <td height=3D20 bgcolor=3D"blue">
                        <font face=3D"Arial" size=3D"-1" color=3D"white">=

                        &nbsp;Results for <b><TMPL_VAR QUERY_SIMPLE></b>
                        &nbsp; <TMPL_VAR FROM> to <TMPL_VAR TO> of <TMPL_=
VAR HITS> results.
                        </font>
                    </td>
                    <td align=3Dright bgcolor=3D"blue">
                        <font face=3D"Arial" size=3D"-2" color=3D"white">=

                        Run time: <TMPL_VAR RUN_TIME> |
                        Search time: <TMPL_VAR SEARCH_TIME> &nbsp; &nbsp;=

                        </font>
                    </td>
                </tr>

                <TMPL_IF PAGES>
                    <tr>
                        <td colspan=3D2 bgcolor=3D"#EEEEEE">

                    <TMPL_IF REPLACE_WITH_DEFINED_VAR_TO_USE>
                            &nbsp;
                            <TMPL_IF PREV_COUNT>
                                <a style=3D"text-decoration:none" href=3D=
"<TMPL_VAR QUERY_HREF>&amp;start=3D<TMPL_VAR PREV>">&lt;&lt;</a>
                            </TMPL_IF>
    =

                            <TMPL_LOOP NAME=3DPAGE_ARRAY>
                                <TMPL_IF NAME=3DCUR_PAGE>
                                    [<TMPL_VAR NAME=3DPAGE_NUMBER>]
                                <TMPL_ELSE>
                                    <a style=3D"text-decoration:none" hre=
f=3D"<TMPL_VAR QUERY_HREF>&amp;start=3D<TMPL_VAR NAME=3DPAGE_START>">
                                    <TMPL_VAR NAME=3DPAGE_NUMBER></a>
                                </TMPL_IF>

                            </TMPL_LOOP>

                            <TMPL_IF NEXT_COUNT>
                                <a style=3D"text-decoration:none" href=3D=
"<TMPL_VAR QUERY_HREF>&amp;start=3D<TMPL_VAR NEXT>">&gt;&gt;</a>
                            </TMPL_IF>

                    <TMPL_ELSE>
                            <font size=3D"-1" face=3D"Arial">&nbsp;Page:<=
/font>
                            <TMPL_VAR PAGES>

                            <TMPL_IF PREV_COUNT>
                                <a href=3D"<TMPL_VAR QUERY_HREF>&amp;star=
t=3D<TMPL_VAR PREV>">
                                Previous <TMPL_VAR PREV_COUNT></a>
                            </TMPL_IF>
    =

                            <TMPL_IF NEXT_COUNT>
                                <a href=3D"<TMPL_VAR QUERY_HREF>&amp;star=
t=3D<TMPL_VAR NEXT>">
                                Next <TMPL_VAR NEXT_COUNT></a>
                            </TMPL_IF>
                    </TMPL_IF>


                        </td>
                    </tr>
                </TMPL_IF>

            </table>
        =

            <p>



            <TMPL_LOOP FILES>
                <dl>
                    <dt><a href=3D"<TMPL_VAR swishdocpath_href>"><TMPL_VA=
R swishtitle></a> <small>-- rank: <b><TMPL_VAR swishrank></b></small></dt=
>
                    <dd><TMPL_VAR swishdescription>...<br>

                    <TMPL_IF PROPERTIES>
                        <p>
                        <TMPL_LOOP PROPERTIES>
                            <b><TMPL_VAR PROP_NAME></b>: <TMPL_VAR PROP_V=
ALUE><br>
                        </TMPL_LOOP>
                    </TMPL_IF>

                <TMPL_IF JUST_A_COMMENT>
                <!-- example of how to explicitly list display properties=
 -->
                    <small>
                        <TMPL_VAR swishdocpath>
                        <TMPL_VAR swishlastmodified>
                        <TMPL_VAR swishdocsize> bytes.
                    </small>
                 </TMPL_IF>
                    </dd>
                </dl>
                    =

            </TMPL_LOOP>

            <p>
            <TMPL_IF PAGES><br>Pages: <TMPL_VAR PAGES></TMPL_IF>

            <TMPL_IF PREV_COUNT>
                <a href=3D"<TMPL_VAR QUERY_HREF>&amp;start=3D<TMPL_VAR PR=
EV>">Previous <TMPL_VAR PREV_COUNT></a>
            </TMPL_IF>
            =

            <TMPL_IF NEXT>
                <a href=3D"<TMPL_VAR QUERY_HREF>&amp;start=3D<TMPL_VAR NE=
XT>">Next <TMPL_VAR NEXT_COUNT></a>
            </TMPL_IF>

        </TMPL_IF>

        <hr>
        <small>Powered by <em>Swish-e</em> <a href=3D"http://swish-e.org"=
>swish-e.org</a></small>
        <TMPL_IF MOD_PERL>
            Powered by: <img src=3D"http://perl.apache.org/logos/mod_perl=
=2Egif">
        </TMPL_IF>
        <p>
          <a href=3D"http://www.nasa.gov"><img border=3D"0"
              src=3D"../nasalogo.gif" alt=3D"NASA"></a>
        </p>

        =

        =

    </body>
</html>




------=____1087386605729_kV-A2mGXeZ
Content-Transfer-Encoding: base64
Content-Type: text/plain;
	name="swishhelp.txt"
Content-Disposition: inline;
	filename="swishhelp.txt"

QWZ0ZXIgaW5kZXhpbmcgbXkgc2l0ZXMgdmlhIHNwaWRlci5wbCBhbmQgSSBydW4gYSBzZWFy
Y2ggdmlhIHRoZSB3ZWIgZnJvbSBzd2lzaC5jZ2ksIEkgZ2V0IHRoZSBmb2xsb3cgaW4gdGhl
IHJlc3VsdHMgcGFnZQoKTmV3RW1wbG95ZWVPcmllbnRhdGlvbi5wcHQgLS0gcmFuazogMTAw
MAogICAgw5DDj8OgwqHCscOhPsO+w78gLHXDlMO+w7/Dv8O/Tk9QUVJTVFVWV1hZWltcXV5f
YGFiY2RlZmdoaWprbG1ub3BxcnN0d3h9w7p7w7/Dv8O/w7/Dv8O/w7/Dv8O/w7/Dv8O/w7/D
v8O/w7/Dv8O/w7/Dv8O/w7/Dv8O/w7/Dv8O/w7/Dv8O/w7/Dv8O/w7/Dv8O/w7/Dv8O/w7/D
v8O/w7/Dv8O/w7/Dv8O/w7/Dv8O/w7/Dv8O/w7/Dv8O/w7/Dv8O/w7/Dv8O/w7/Dv8O/w7/D
v8O/w7/Dv8O/w7/Dv8O/w7/Dv8O/w7/Dv8O/w7/Dv8O/w7/Dv8O/w7/Dv8O/w7/Dv8O/w7/D
v8O/w7/Dv8O/w7/Dv8O/w7/Dv8O/w7/Dv8O/w7/Dv8O/w7/Dv8O/w7/Dv8O/w7/Dv8O/w7/D
v8O/w7/Dv8O/w7/Dv8O/w7/Dv8O/w7/Dv8O/w7/Dv8O/w7/Dv8O/w7/Dv8O/w7/Dv8O/w7/D
v8O/w7/Dv8O/w7/Dv8O/w7/Dv8O/w7/Dv8O/w7/Dv8O/w7/Dv8O/w7/Dv8O/w7/Dv8O/w7/D
v8O/w7/Dv8O/w7/Dv8O/w7/Dv8O/w7/Dv8O/w7/Dv8O/w7/Dv8O/w7/Dv8O/w7/Dv8O/w7/D
v8O/w7/Dv8O/w7/Dv8O/w7/Dv8O/w7/Dv8O/w7/Dv8O/w7/Dv8O/w7/Dv8O/w7/Dv8O/w7/D
v8O/w7/Dv8O/w7/Dv8O/w7/Dv8O/w7/Dv8O/w7/Dv8O/w7/Dv8O/w7/Dv8O/w7/Dv8O/w7/D
v8O/w7/Dv2Ahw7DDl8K1w57DliBuw6XDo8K2XcOvYndKKMOAcGAkxaDDqMKpXsKlw754xZPD
rVdNSEHFvsOdw7xUM8Obw67CrEjigJ0gacO9wrlYUsKiYCnigJrigJ1qw5pDayBaw6jCoT0t
w6zDlUBPIMOoKcOoMcOmasOOw7bDpMKhxaHCuzchw5fCoTTigJ5iw5nigLBtwo11w7rDnsOb
wo3DuFNFMyDCrMKdwrFAwqEgPlg3w4PDi8O04oChbcucKcK4bCxFw4DCuyhjIcOBw7DDsmgj
Zl3CvsOlJlnigJrCrOKAoT174oCZTHbCssKPw59YNTvCrsKm4oSid0V8w695MWbCssKBw4PF
ocucw5nCvsKl4oCcwrzigJrDjGJYXyPDoGZyQ2bihKLDtsODKMOBfuKAusKhfcW4IGAmVyAu
Li4gLi4uCgogICAgTGFzdCBNb2RpZmllZCBEYXRlOiAyMDA0LTA2LTA5IDEyOjMzOjU5IEVE
VAogICAgRG9jdW1lbnQgU2l6ZTogMjgzNDQzMgogICAgRG9jdW1lbnQgUGF0aDogaHR0cDov
L2Nmby50aGlzc2l0ZS5uZXQvTmV3RW1wbG95ZWVPcmllbnRhdGlvbi5wcHQKCkkgaGFkIHNl
ZW4gdGhpcyBiZWZvcmUgYW5kIEkgdGhvdWdodCBJIGhhZCByZW1vdmVkIC5wcHQgZmlsZXMg
ZnJvbSBiZWluZyBpbmRleGVkLiBUaGF0J3Mgbm90IG15IGlkZWFsIHNpdHVhdGlvbiB0aG91
Z2g7IEkgd291bGQgbGlrZSB0byBiZSBhYmxlIHRvIGluZGV4IHRoZW0gYmVjYXVzZSB3ZSBo
YXZlIGEgbG90IG9mIFBvd2VyUG9pbnQgZmlsZXMgb24gb3VyIHNlcnZlcnMgKHBlb3BsZSBh
cmUgdG9vIGxhenkgdG8gbWFrZSBIVE1MLi4uICpzaWdoKikuIEkndmUgaW5jbHVkZWQgYXMg
bXVjaCBpbmZvcm1hdGlvbiBhcyBwb3NzaWJsZSBiZWNhdXNlIEkgZG9uJ3Qga25vdyB3aGF0
IGluZm9ybWF0aW9uIGlzIG9yIGlzbid0IHJlbGV2YW50LgoKV2hhdCBJIGRvbid0IHVuZGVy
c3RhbmQsIGlzIHdoeSB0aGF0LCBJIGRvbid0IGhhdmUgLnBwdCBhcyBwYXJ0IG9mIHRoZSBE
ZWZhdWx0IENvbnRlbnRzLCB5ZXQgLnBwdCBmaWxlcyBhcmUgc3RpbGwgYmVpbmcgaW5kZXhl
ZC4KCkhlcmUncyBhbGwgb2YgbXkgc2V0dGluZ3MuLi4KCi0tMTYuY29uZi0tCgpJbmRleERp
cgkJL3Vzci9sb2NhbC9saWIvc3dpc2gtZS9zcGlkZXIucGwKU3dpc2hQcm9nUGFyYW1ldGVy
cyAJMTYucGwKRGVmYXVsdENvbnRlbnRzIAlIVE1MKiAuaHRtIC5odG1sIC5zaHRtbCAuZG9j
IC5wZGYgLmNmbQpTdG9yZURlc2NyaXB0aW9uIAlIVE1MKiA8Ym9keT4gMjAwMDAKSWdub3Jl
V29yZHMJCXd3dyBodHRwIGEgYW4gdGhlIG9mIGFuZCBvcgpNZXRhTmFtZXMJCXN3aXNoZG9j
cGF0aCBzd2lzaHRpdGxlIHN3aXNoZGVzY3JpcHRpb24gc3dpc2hsYXN0bW9kaWZpZWQKCi0t
MTYucGwtLQoKQHNlcnZlcnMgPSAoCiAgICB7CiAgICBiYXNlX3VybAk9PiAnaHR0cDovL2Nm
by50aGlzc2l0ZS5uZXQvJywKICAgIHNhbWVfaG9zdHMgID0+ICd3d3cuY2ZvLnRoaXNzaXRl
Lm5ldCcsCiAgICBlbWFpbAk9PiAnY2ZvLWNvbW1lbnRzQHRoaXNzaXRlLm5ldCcsCiAgICB9
LAopOwoKMTsKCi0tU3dpc2gtZSBjb21tYW5kIGZyb20gdGVybWluYWwtLQpzd2lzaC1lIC1j
IDE2LmNvbmYgLWYgMTYuaW5kZXggLXYgMyAtUyBwcm9nIC1lCgpJJ2xsIGRvIG90aGVyIHNp
dGVzLCBpbiBteSBjYXNlLCBJIGRpZCBzaXRlcyAxLTIwIGFuZCB0aGVuIEkgY29tYmluZWQg
dGhlbSBpbnRvIG9uZSBpbmRleCB3aXRoLi4uCnN3aXNoLWUgLU0gMS5jb25mIDIuY29uZiAo
YW5kIHNvIG9uKSAxNi5jb25mIChldGMpIDIwLmNvbmYgY29tYmluZWQuaW5kZXggLWUKCi0t
c3dpc2guY2dpLS0KVGhlIG9ubHkgdGhpbmcgSSBoYXZlIHRvIHVzZXIgY29uZmlnIGlzLi4u
CgpteSAkREVGQVVMVF9DT05GSUdfRklMRSA9ICdzd2lzaGNnaS5jb25mJzsKCnN1YiBkZWZh
dWx0X2NvbmZpZyB7CiAgICByZXR1cm4gewogICAgICAgICMgQnkgZGVmYXVsdCwgdGhpcyBz
Y3JpcHQgdHJpZXMgdG8gcmVhZCBhIGNvbmZpZyBmaWxlLiAgWW91IHNob3VsZCBwcm9iYWJs
eQogICAgICAgICMgY29tbWVudCB0aGlzIG91dCBpZiBub3QgdXNlZCBzYXZlIGEgZGlzayBz
dGF0CiAgICAgICAgY29uZmlnX2ZpbGUgICAgID0+ICRERUZBVUxUX0NPTkZJR19GSUxFLAkj
IERlZmF1bHQgY29uZmlnIGZpbGUKICAgIH07Cgp9CgotLXN3aXNoY2dpLmNvbmYtLQooc29y
cnkgZm9yIHRoZSBsZW5ndGgsIEkgZG9uJ3Qga25vdyB3aGF0J3MgcmVsZXZhbnQpCgpyZXR1
cm4gewogICAgdGl0bGUgICAgICAgICAgID0+ICdTZWFyY2ggdGhlIHdlYnNpdGVzJywJIyBU
aXRsZSBvZiB5b3VyIGNob2ljZS4gIERpc3BsYXlzIG9uIHRoZSBzZWFyY2ggcGFnZQogICAg
c3dpc2hfYmluYXJ5ICAgID0+ICcvdXNyL2xvY2FsL2Jpbi9zd2lzaC1lJywJIyBMb2NhdGlv
biBvZiBzd2lzaC1lIGJpbmFyeQoKICAgIHN3aXNoX2luZGV4ICAgICA9PiAnc3dpc2hkYi9j
b21iaW5lZC5pbmRleCcsCSMgTG9jYXRpb24gb2YgeW91ciBpbmRleCBmaWxlCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgIAkJCQkjIFNlZSAic2VsZWN0X2luZGV4ZXMiIGJlbG93IGZv
ciBob3cgdG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgCQkJCSMgc2VsZWN0IG1vcmUg
dGhhbiBvbmUgaW5kZXguCgogICAgcGFnZV9zaXplICAgICAgID0+IDE1LAkJCQkjIE51bWJl
ciBvZiByZXN1bHRzIHBlciBwYWdlICAtIGRlZmF1bHQgMTUKCiAgICB0aXRsZV9wcm9wZXJ0
eSA9PiAnc3dpc2h0aXRsZScsCgogICAgZGVzY3JpcHRpb25fcHJvcCAgICA9PiAnc3dpc2hk
ZXNjcmlwdGlvbicsCgogICAgZGlzcGxheV9wcm9wcyAgID0+IFtxdy9zd2lzaGxhc3Rtb2Rp
ZmllZCBzd2lzaGRvY3NpemUgc3dpc2hkb2NwYXRoL10sCgogICAgc29ydHMgICAgICAgICAg
ID0+IFtxdy9zd2lzaHJhbmsgc3dpc2hsYXN0bW9kaWZpZWQgc3dpc2h0aXRsZSBzd2lzaGRv
Y3BhdGgvXSwKCiAgICBzZWNvbmRhcnlfc29ydCAgPT4gW3F3L3N3aXNobGFzdG1vZGlmaWVk
IGRlc2MvXSwKCiAgICBtZXRhbmFtZXMgICAgICAgPT4gW3F3LyBzd2lzaGRlZmF1bHQgc3dp
c2h0aXRsZSBzd2lzaGRvY3BhdGggc3dpc2hsYXN0bW9kaWZpZWQgL10sCgogICAgbWV0YV9n
cm91cHMgPT4gewogICAgICAgIGFsbCA9PiAgW3F3L3N3aXNoZGVmYXVsdCBzd2lzaHRpdGxl
IHN3aXNoZG9jcGF0aC9dLAogICAgfSwKCiAgICBuYW1lX2xhYmVscyA9PiB7CiAgICAgICAg
c3dpc2hkZWZhdWx0ICAgICAgICA9PiAnVGl0bGUgJiBCb2R5JywKICAgICAgICBzd2lzaHRp
dGxlICAgICAgICAgID0+ICdUaXRsZScsCiAgICAgICAgc3dpc2hyYW5rICAgICAgICAgICA9
PiAnUmFuaycsCiAgICAgICAgc3dpc2hsYXN0bW9kaWZpZWQgICA9PiAnTGFzdCBNb2RpZmll
ZCBEYXRlJywKICAgICAgICBzd2lzaGRvY3BhdGggICAgICAgID0+ICdEb2N1bWVudCBQYXRo
JywKICAgICAgICBzd2lzaGRvY3NpemUgICAgICAgID0+ICdEb2N1bWVudCBTaXplJywKICAg
ICAgICBhbGwgICAgICAgICAgICAgICAgID0+ICdBbGwnLCAgICAgICAgICAgICAgIyBncm91
cCBvZiBtZXRhbmFtZXMKICAgICAgICBzdWJqZWN0ICAgICAgICAgICAgID0+ICdNZXNzYWdl
IFN1YmplY3QnLCAgIyBvdGhlciBleGFtcGxlcwogICAgICAgIG5hbWUgICAgICAgICAgICAg
ICAgPT4gIlBvc3RlcidzIE5hbWUiLAogICAgICAgIGVtYWlsICAgICAgICAgICAgICAgPT4g
IlBvc3RlcidzIEVtYWlsIiwKICAgICAgICBzZW50ICAgICAgICAgICAgICAgID0+ICdNZXNz
YWdlIERhdGUnLAogICAgfSwKCgogICAgdGltZW91dCAgICAgICAgID0+IDEwLCAgICAjIGxp
bWl0IHRpbWUgdXNlZCBieSBzd2lzaCB3aGVuIGZldGNoaW5nIHJlc3VsdHMgLSBEb1MgcHJv
dGVjdGlvbi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZG9lcyBub3Qg
d29yayB1bmRlciBXaW5kb3dzCgogICAgbWF4X3F1ZXJ5X2xlbmd0aCA9PiAxMDAsICAjIGxp
bWl0IGxlbmd0aCBvZiBxdWVyeSBzdHJpbmcuICBTd2lzaCBhbHNvIGhhcyBhIGxpbWl0IChk
ZWZhdWx0IGlzIDQwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBZb3Ug
bWlnaHQgd2FudCB0byBzZXQgc3dpc2gtZSdzIGxpbWl0IGhpZ2hlciwgYW5kIHVzZSB0aGlz
IHRvIGdldCBhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHNvbWV3aGF0
IG1vcmUgZnJpZW5kbHkgbWVzc2FnZS4KCiAgICBtYXhfY2hhcnMgICAgICAgPT4gNTAwLCAg
ICMgTGltaXRzIHRoZSBzaXplIG9mIHRoZSBkZXNjcmlwdGlvbl9wcm9wIGlmIGl0IGlzIG5v
dCBoaWdobGlnaHRlZAoKICAgIGhpZ2hsaWdodCAgICAgICA9PiB7CgogICAgICAgIHBhY2th
Z2UgICAgICAgICA9PiAnU1dJU0g6OlBocmFzZUhpZ2hsaWdodCcsCiAgICAgICAgc2hvd193
b3JkcyAgICAgID0+IDEwLCAgICAjIE51bWJlciBvZiAic3dpc2ggd29yZHMiIHdvcmRzIHRv
IHNob3cgYXJvdW5kIGhpZ2hsaWdodGVkIHdvcmQKICAgICAgICBtYXhfd29yZHMgICAgICAg
PT4gMTAwLCAgICMgSWYgbm8gd29yZHMgYXJlIGZvdW5kIHRvIGhpZ2hsaWdodGVkIHRoZW4g
c2hvdyB0aGlzIG1hbnkgd29yZHMgCiAgICAgICAgb2NjdXJyZW5jZXMgICAgID0+IDYsICAg
ICAjIExpbWl0IG51bWJlciBvZiBvY2N1cnJlbmNlcyBvZiBoaWdobGlnaHRlZCB3b3Jkcwog
ICAgICAgICNoaWdobGlnaHRfb24gICA9PiAnPGI+JywgIyBIVE1MIGhpZ2hsaWdodGluZyBj
b2RlcwogICAgICAgICNoaWdobGlnaHRfb2ZmICA9PiAnPC9iPicsCiAgICAgICAgaGlnaGxp
Z2h0X29uICAgID0+ICc8Zm9udCBzdHlsZT0iYmFja2dyb3VuZDojRkZGRjk5Ij4nLAogICAg
ICAgIGhpZ2hsaWdodF9vZmYgICA9PiAnPC9mb250PicsCgogICAgICAgIG1ldGFfdG9fcHJv
cF9tYXAgPT4gewogICAgICAgICAgICBzd2lzaGRlZmF1bHQgICAgPT4gWyBxdy9zd2lzaHRp
dGxlIHN3aXNoZGVzY3JpcHRpb24vIF0sCiAgICAgICAgICAgIHN3aXNodGl0bGUgICAgICA9
PiBbIHF3L3N3aXNodGl0bGUvIF0sCiAgICAgICAgICAgIHN3aXNoZG9jcGF0aCAgICA9PiBb
IHF3L3N3aXNoZG9jcGF0aC8gXSwKICAgICAgICB9LAogICAgfSwKCiAgICB0ZW1wbGF0ZSA9
PiB7CiAgICAgICAgcGFja2FnZSAgICAgICAgID0+ICdTV0lTSDo6VGVtcGxhdGVIVE1MVGVt
cGxhdGUnLAogICAgICAgIG9wdGlvbnMgICAgICAgICA9PiB7CiAgICAgICAgICAgIGZpbGVu
YW1lICAgICAgICAgICAgPT4gJ3N3aXNoLnRtcGwnLAogICAgICAgICAgICBwYXRoICAgICAg
ICAgICAgICAgID0+ICcvdXNyL2xvY2FsL2FwYWNoZTIvY2dpLWJpbi9zd2lzaC50bXBsJywg
IyBwb2ludCB0byBmb2xkZXIgdGhhdCBmaWxuYW1lIGlzIGluCiAgICAgICAgICAgIGRpZV9v
bl9iYWRfcGFyYW1zICAgPT4gMCwKICAgICAgICAgICAgbG9vcF9jb250ZXh0X3ZhcnMgICA9
PiAxLAogICAgICAgICAgICBjYWNoZSAgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgfSwK
ICAgIH0sCgogICAgb25faW50cmFuZXQgPT4gMCwKCiAgICBub19maXJzdF9wYWdlX25hdmln
YXRpb24gICA9PiAwLAogICAgbm9fbGFzdF9wYWdlX25hdmlnYXRpb24gICAgPT4gMCwKICAg
IG51bV9wYWdlc190b19zaG93ICAgICAgICAgID0+IDEyLCAgIyBudW1iZXIgb2YgcGFnZXMg
dG8gb2ZmZXIKCiAgICBkYXRlX3JhbmdlcyAgICAgPT4gewogICAgICAgIHByb3BlcnR5X25h
bWUgICA9PiAnc3dpc2hsYXN0bW9kaWZpZWQnLCAgICAgICMgcHJvcGVydHkgbmFtZSB0byBs
aW1pdCBieQoKICAgICAgICAjIHdoYXQgeW91IHNwZWNpZnkgaGVyZSBkZXBlbmRzIG9uIHRo
ZSBEYXRlUmFuZ2VzLnBtIG1vZHVsZS4KICAgICAgICB0aW1lX3BlcmlvZHMgICAgPT4gWyAg
CiAgICAgICAgICAgICdBbGwnLAogICAgICAgICAgICAnVG9kYXknLAogICAgICAgICAgICAn
WWVzdGVyZGF5JywKICAgICAgICAgICAgJ1RoaXMgV2VlaycsCiAgICAgICAgICAgICdMYXN0
IFdlZWsnLAogICAgICAgICAgICAnTGFzdCA5MCBEYXlzJywKICAgICAgICAgICAgJ1RoaXMg
TW9udGgnLAogICAgICAgICAgICAnTGFzdCBNb250aCcsCiAgICAgICAgXSwKCiAgICAgICAg
bGluZV9icmVhayAgICAgID0+IDAsCiAgICAgICAgZGVmYXVsdCAgICAgICAgID0+ICdBbGwn
LAogICAgICAgIGRhdGVfcmFuZ2UgICAgICA9PiAxLAogICAgfSwKCiAgICAjIFNldCBtYXgg
bnVtYmVyIG9mIHN3aXNoLWUgYmluYXJpZXMgYW5kIHBzIGNvbW1hbmQgdG8gcnVuCiAgICBs
aW1pdF9wcm9jcyAgICAgPT4gMCwgICMgbWF4IG51bWJlciBvZiBzd2lzaCBwcm9jZXNzIHRv
IHJ1biAoemVybyB0byBub3QgbGltaXQpCiAgICBwc19wcm9nICAgICAgICAgPT4gJy9iaW4v
cHMgLVVub2JvZHkgLW9jb21tYW5kJywgICMgY29tbWFuZCB0byBsaXN0IG51bWJlciBvZiBz
d2lzaCBiaW5hcmllcwoKfTsKCi0tc3dpc2gudG1wbC0tCkZvciB3aGF0IGl0J3Mgd29ydGgs
IGhlcmUncyB0aGUgdGVtcGxhdGUgZmlsZSwgc2xpZ2h0bHkgbW9kaWZpZWQuLi4KCgo8aHRt
bD4KICAgIDxoZWFkPgogICAgICAgPHRpdGxlPgogICAgICAgICAgPFRNUExfSUYgUkVTVUxU
Uz5SZXN1bHRzIGZvcjogPFRNUExfVkFSIFFVRVJZX1NJTVBMRT48VE1QTF9FTFNFPjxUTVBM
X1ZBUiBUSVRMRT48L1RNUExfSUY+CiAgICAgICA8L3RpdGxlPgogICAgPC9oZWFkPgogICAg
PGJvZHk+CiAgICAgICAgPHRhYmxlIGFsaWduPSJjZW50ZXIiIGJvcmRlcj0iMCIgY2VsbHBh
ZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICAgICAgICA8dHI+PHRkPgogICAgICAgICAg
ICA8YSBocmVmPSJodHRwOi8vd3d3LnRoaXNzaXRlLm5ldCI+CiAgICAgICAgICAgIDxpbWcg
Ym9yZGVyPSIwIiBhbHQ9IlRoaXMgU2l0ZSBob21lIHBhZ2UiIHNyYz0iLi4vVGhpc1NpdGVs
b2dvLmdpZiI+PC9hPgogICAgICAgICAgICA8YnI+PGJyPgogICAgICAgIDwvdGQ+PHRkIHZh
bGlnbj0ibWlkZGxlIj4KICAgICAgICAgICAgPGZvbnQgZmFjZT0iQXJpYWwiIHNpemU9Iisx
Ij48VE1QTF9WQVIgVElUTEU+PC9mb250PgogICAgICAgIDwvdGQ+PC90cj4KICAgICAgICA8
L3RhYmxlPgoKICAgICAgICA8VE1QTF9JRiBNRVNTQUdFPgogICAgICAgICAgICA8Zm9udCBm
YWNlPSJBcmlhbCIgc2l6ZT0iMyIgY29sb3I9InJlZCI+PFRNUExfVkFSIE1FU1NBR0U+PC9m
b250PgogICAgICAgIDwvVE1QTF9JRj4KICAgIDxkaXYgYWxpZ249ImNlbnRlciI+CiAgICAg
ICAgPGZvcm0gbWV0aG9kPSJHRVQiIGFjdGlvbj0iPFRNUExfVkFSIE1ZX1VSTD4iIGVuY3R5
cGU9ImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIgY2xhc3M9ImZvcm0iPgog
ICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0icXVlcnkiICBzaXplPTMyIG1h
eGxlbmd0aD0yMDAgLz4KICAgICAgICAgICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0i
c3VibWl0IiB2YWx1ZT0iU2VhcmNoISIgLz48YnI+CgogICAgICAgICAgICA8VE1QTF9JRiBN
RVRBTkFNRVM+CiAgICAgICAgICAgICAgICA8Zm9udCBmYWNlPSJBcmlhbCIgc2l6ZT0yPkxp
bWl0IHNlYXJjaCB0bzoKICAgICAgICAgICAgICAgIDxUTVBMX0xPT1AgTUVUQU5BTUVTPgog
ICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0ibWV0YW5hbWUi
IHZhbHVlPSI8VE1QTF9WQVIgTkFNRT4iPjxUTVBMX1ZBUiBMQUJFTD4KICAgICAgICAgICAg
ICAgIDwvVE1QTF9MT09QPgogICAgICAgICAgICAgICAgPGJyPgogICAgICAgICAgICA8L1RN
UExfSUY+CgoKCiAgICAgICAgICAgIDxUTVBMX0lGIFNPUlRTPgogICAgICAgICAgICAgICAg
U29ydCBieToKICAgICAgICAgICAgICAgIDxzZWxlY3QgbmFtZT0ic29ydCI+CiAgICAgICAg
ICAgICAgICAgICAgPFRNUExfTE9PUCBTT1JUUz4KICAgICAgICAgICAgICAgICAgICAgICAg
PG9wdGlvbiAgdmFsdWU9IjxUTVBMX1ZBUiBOQU1FPiIgPjxUTVBMX1ZBUiBMQUJFTD48L29w
dGlvbj4KICAgICAgICAgICAgICAgICAgICA8L1RNUExfTE9PUD4KICAgICAgICAgICAgICAg
IDwvc2VsZWN0PgogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1l
PSJyZXZlcnNlIiB2YWx1ZT0xPlJldmVyc2UgU29ydAogICAgICAgICAgICA8L1RNUExfSUY+
CiAgICA8L2Rpdj4KCgogICAgICAgICAgICA8VE1QTF9JRiBJTkRFWF9TRUxFQ1Q+CiAgICAg
ICAgICAgICAgICA8IS0tIG5vdCBpbXBsZW1lbnRlZCAtLSBzZWUgVGVtcGxhdGUgVG9vbCBr
aXQgZXhhbXBsZSAtLT4KICAgICAgICAgICAgPC9UTVBMX0lGPgoKCiAgICAgICAgICAgIDxU
TVBMX0lGIExJTUlUUz4KICAgICAgICAgICAgICAgIDwhLS0gbm90IHJlYWxseSBpbXBsZW1l
bnRlZCAtLT4KICAgICAgICAgICAgICAgIDxicj48VE1QTF9WQVIgTElNSVRfVElUTEU+CiAg
ICAgICAgICAgICAgICA8VE1QTF9MT09QIExJTUlUUz4KICAgICAgICAgICAgICAgICAgICA8
aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9InNibSIgdmFsdWU9IjxUTVBMX1ZBUiBWQUxV
RT4iIC8+PFRNUExfVkFSIExBQkVMPgogICAgICAgICAgICAgICAgPC9UTVBMX0xPT1A+CiAg
ICAgICAgICAgIDwvVE1QTF9JRj4KCgogICAgICAgICAgICA8VE1QTF9WQVIgREFURV9SQU5H
RVM+CgogICAgICAgICAgICAKCiAgICAgICAgPC9mb3JtPgoKCiAgICAgICAgPFRNUExfSUYg
RklMRVM+CiAgICAgICAgICAgIDx0YWJsZSBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTAg
Ym9yZGVyPTAgd2lkdGg9IjEwMCUiPgogICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAg
ICAgICAgICAgIDx0ZCBoZWlnaHQ9MjAgYmdjb2xvcj0iYmx1ZSI+CiAgICAgICAgICAgICAg
ICAgICAgICAgIDxmb250IGZhY2U9IkFyaWFsIiBzaXplPSItMSIgY29sb3I9IndoaXRlIj4K
ICAgICAgICAgICAgICAgICAgICAgICAgJm5ic3A7UmVzdWx0cyBmb3IgPGI+PFRNUExfVkFS
IFFVRVJZX1NJTVBMRT48L2I+CiAgICAgICAgICAgICAgICAgICAgICAgICZuYnNwOyA8VE1Q
TF9WQVIgRlJPTT4gdG8gPFRNUExfVkFSIFRPPiBvZiA8VE1QTF9WQVIgSElUUz4gcmVzdWx0
cy4KICAgICAgICAgICAgICAgICAgICAgICAgPC9mb250PgogICAgICAgICAgICAgICAgICAg
IDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPXJpZ2h0IGJnY29sb3I9ImJs
dWUiPgogICAgICAgICAgICAgICAgICAgICAgICA8Zm9udCBmYWNlPSJBcmlhbCIgc2l6ZT0i
LTIiIGNvbG9yPSJ3aGl0ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIFJ1biB0aW1lOiA8
VE1QTF9WQVIgUlVOX1RJTUU+IHwKICAgICAgICAgICAgICAgICAgICAgICAgU2VhcmNoIHRp
bWU6IDxUTVBMX1ZBUiBTRUFSQ0hfVElNRT4gJm5ic3A7ICZuYnNwOwogICAgICAgICAgICAg
ICAgICAgICAgICA8L2ZvbnQ+CiAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAg
ICAgICAgIDwvdHI+CgogICAgICAgICAgICAgICAgPFRNUExfSUYgUEFHRVM+CiAgICAgICAg
ICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0y
IGJnY29sb3I9IiNFRUVFRUUiPgoKICAgICAgICAgICAgICAgICAgICA8VE1QTF9JRiBSRVBM
QUNFX1dJVEhfREVGSU5FRF9WQVJfVE9fVVNFPgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJm5ic3A7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VE1QTF9JRiBQUkVWX0NP
VU5UPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIHN0eWxlPSJ0ZXh0LWRl
Y29yYXRpb246bm9uZSIgaHJlZj0iPFRNUExfVkFSIFFVRVJZX0hSRUY+JmFtcDtzdGFydD08
VE1QTF9WQVIgUFJFVj4iPiZsdDsmbHQ7PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPC9UTVBMX0lGPgogICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VE1QTF9M
T09QIE5BTUU9UEFHRV9BUlJBWT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8
VE1QTF9JRiBOQU1FPUNVUl9QQUdFPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBbPFRNUExfVkFSIE5BTUU9UEFHRV9OVU1CRVI+XQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDxUTVBMX0VMU0U+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDxhIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246bm9uZSIgaHJlZj0iPFRNUExfVkFS
IFFVRVJZX0hSRUY+JmFtcDtzdGFydD08VE1QTF9WQVIgTkFNRT1QQUdFX1NUQVJUPiI+CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUTVBMX1ZBUiBOQU1FPVBBR0Vf
TlVNQkVSPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1RNUExfSUY+
CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9UTVBMX0xPT1A+CgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPFRNUExfSUYgTkVYVF9DT1VOVD4KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA8YSBzdHlsZT0idGV4dC1kZWNvcmF0aW9uOm5vbmUiIGhyZWY9
IjxUTVBMX1ZBUiBRVUVSWV9IUkVGPiZhbXA7c3RhcnQ9PFRNUExfVkFSIE5FWFQ+Ij4mZ3Q7
Jmd0OzwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVE1QTF9JRj4KCiAgICAg
ICAgICAgICAgICAgICAgPFRNUExfRUxTRT4KICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDxmb250IHNpemU9Ii0xIiBmYWNlPSJBcmlhbCI+Jm5ic3A7UGFnZTo8L2ZvbnQ+CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8VE1QTF9WQVIgUEFHRVM+CgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPFRNUExfSUYgUFJFVl9DT1VOVD4KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA8YSBocmVmPSI8VE1QTF9WQVIgUVVFUllfSFJFRj4mYW1wO3N0YXJ0
PTxUTVBMX1ZBUiBQUkVWPiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJl
dmlvdXMgPFRNUExfVkFSIFBSRVZfQ09VTlQ+PC9hPgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPC9UTVBMX0lGPgogICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VE1Q
TF9JRiBORVhUX0NPVU5UPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhy
ZWY9IjxUTVBMX1ZBUiBRVUVSWV9IUkVGPiZhbXA7c3RhcnQ9PFRNUExfVkFSIE5FWFQ+Ij4K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXh0IDxUTVBMX1ZBUiBORVhUX0NP
VU5UPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVE1QTF9JRj4KICAgICAg
ICAgICAgICAgICAgICA8L1RNUExfSUY+CgoKICAgICAgICAgICAgICAgICAgICAgICAgPC90
ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC9UTVBMX0lG
PgoKICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAKICAgICAgICAgICAgPHA+CgoKCiAg
ICAgICAgICAgIDxUTVBMX0xPT1AgRklMRVM+CiAgICAgICAgICAgICAgICA8ZGw+CiAgICAg
ICAgICAgICAgICAgICAgPGR0PjxhIGhyZWY9IjxUTVBMX1ZBUiBzd2lzaGRvY3BhdGhfaHJl
Zj4iPjxUTVBMX1ZBUiBzd2lzaHRpdGxlPjwvYT4gPHNtYWxsPi0tIHJhbms6IDxiPjxUTVBM
X1ZBUiBzd2lzaHJhbms+PC9iPjwvc21hbGw+PC9kdD4KICAgICAgICAgICAgICAgICAgICA8
ZGQ+PFRNUExfVkFSIHN3aXNoZGVzY3JpcHRpb24+Li4uPGJyPgoKICAgICAgICAgICAgICAg
ICAgICA8VE1QTF9JRiBQUk9QRVJUSUVTPgogICAgICAgICAgICAgICAgICAgICAgICA8cD4K
ICAgICAgICAgICAgICAgICAgICAgICAgPFRNUExfTE9PUCBQUk9QRVJUSUVTPgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPGI+PFRNUExfVkFSIFBST1BfTkFNRT48L2I+OiA8VE1Q
TF9WQVIgUFJPUF9WQUxVRT48YnI+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvVE1QTF9M
T09QPgogICAgICAgICAgICAgICAgICAgIDwvVE1QTF9JRj4KCiAgICAgICAgICAgICAgICA8
VE1QTF9JRiBKVVNUX0FfQ09NTUVOVD4KICAgICAgICAgICAgICAgIDwhLS0gZXhhbXBsZSBv
ZiBob3cgdG8gZXhwbGljaXRseSBsaXN0IGRpc3BsYXkgcHJvcGVydGllcyAtLT4KICAgICAg
ICAgICAgICAgICAgICA8c21hbGw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxUTVBMX1ZB
UiBzd2lzaGRvY3BhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDxUTVBMX1ZBUiBzd2lz
aGxhc3Rtb2RpZmllZD4KICAgICAgICAgICAgICAgICAgICAgICAgPFRNUExfVkFSIHN3aXNo
ZG9jc2l6ZT4gYnl0ZXMuCiAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD4KICAgICAgICAg
ICAgICAgICA8L1RNUExfSUY+CiAgICAgICAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAg
ICAgICAgIDwvZGw+CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgIDwvVE1QTF9M
T09QPgoKICAgICAgICAgICAgPHA+CiAgICAgICAgICAgIDxUTVBMX0lGIFBBR0VTPjxicj5Q
YWdlczogPFRNUExfVkFSIFBBR0VTPjwvVE1QTF9JRj4KCiAgICAgICAgICAgIDxUTVBMX0lG
IFBSRVZfQ09VTlQ+CiAgICAgICAgICAgICAgICA8YSBocmVmPSI8VE1QTF9WQVIgUVVFUllf
SFJFRj4mYW1wO3N0YXJ0PTxUTVBMX1ZBUiBQUkVWPiI+UHJldmlvdXMgPFRNUExfVkFSIFBS
RVZfQ09VTlQ+PC9hPgogICAgICAgICAgICA8L1RNUExfSUY+CiAgICAgICAgICAgIAogICAg
ICAgICAgICA8VE1QTF9JRiBORVhUPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iPFRNUExf
VkFSIFFVRVJZX0hSRUY+JmFtcDtzdGFydD08VE1QTF9WQVIgTkVYVD4iPk5leHQgPFRNUExf
VkFSIE5FWFRfQ09VTlQ+PC9hPgogICAgICAgICAgICA8L1RNUExfSUY+CgogICAgICAgIDwv
VE1QTF9JRj4KCiAgICAgICAgPGhyPgogICAgICAgIDxzbWFsbD5Qb3dlcmVkIGJ5IDxlbT5T
d2lzaC1lPC9lbT4gPGEgaHJlZj0iaHR0cDovL3N3aXNoLWUub3JnIj5zd2lzaC1lLm9yZzwv
YT48L3NtYWxsPgogICAgICAgIDxUTVBMX0lGIE1PRF9QRVJMPgogICAgICAgICAgICBQb3dl
cmVkIGJ5OiA8aW1nIHNyYz0iaHR0cDovL3BlcmwuYXBhY2hlLm9yZy9sb2dvcy9tb2RfcGVy
bC5naWYiPgogICAgICAgIDwvVE1QTF9JRj4KICAgICAgICA8cD4KICAgICAgICAgIDxhIGhy
ZWY9Imh0dHA6Ly93d3cudGhpc3NpdGUubmV0Ij48aW1nIGJvcmRlcj0iMCIKICAgICAgICAg
ICAgICBzcmM9Ii4uL1RoaXNTaXRlbG9nby5naWYiIGFsdD0iVGhpcyBTaXRlIj48L2E+CiAg
ICAgICAgPC9wPgoKICAgICAgICAKICAgICAgICAKICAgIDwvYm9keT4KPC9odG1sPgoKCg==

------=____1087386605729_kV-A2mGXeZ--
Received on Wed Jun 16 11:51:09 2004