[Doc-SIG] reStructuredText-to-HTML XSLT

Alan Jaffray jaffray@pobox.com
Tue, 16 Oct 2001 00:17:17 -0400 (EDT)


  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.
  Send mail to mime@docserver.cac.washington.edu for more info.

--1195431321-104844362-1003205837=:22140
Content-Type: TEXT/PLAIN; charset=US-ASCII

Here's some XSLT to translate reStructuredText's XML output to HTML. 
It does a pretty good job with the exception of tables (which I haven't
attempted to handle) and some lingering gratuitous whitespace (which 
is contained from rST's output, and can't be safely stripped).

(It also leaves footnotes in the middle of the document; do we want them
all at the end?  I suppose so.  Hadn't thought about it.)

I'm not sure about the desired behavior for text which contains characters
which have to be escaped in the XML.  Leave them escaped, or unescape them
so the user can intersperse HTML markup with rST markup?  I chose the worst
of both worlds by co-opting the "interpreted" tag to mean "contains HTML
markup, should not be escaped when output to HTML".  Ideas welcome.

Alan


--1195431321-104844362-1003205837=:22140
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="rst.xsl"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.4.21.0110160017170.22140@starchild.astral.net>
Content-Description: 
Content-Disposition: attachment; filename="rst.xsl"

PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NDQo8IS0t
IGVkaXRlZCB3aXRoIFhNTCBTcHkgdjQuMCBVIChodHRwOi8vd3d3LnhtbHNw
eS5jb20pIGJ5IEFsYW4gSmFmZnJheSAobm9uZSkgLS0+DQ0KPCEtLVhYWCAt
IG5vdCB0b3VjaGluZyB0YWJsZXMuIGF0IGxlYXN0IG5vdCB5ZXQuIG90aGVy
IG9taXNzaW9ucyBhcyB3ZWxsLi0tPg0NCjx4c2w6c3R5bGVzaGVldCB2ZXJz
aW9uPSIxLjAiIHhtbG5zOnhzbD0iaHR0cDovL3d3dy53My5vcmcvMTk5OS9Y
U0wvVHJhbnNmb3JtIj4NDQoJPHhzbDpvdXRwdXQgbWV0aG9kPSJodG1sIi8+
DQ0KCTwhLS12YXJpYWJsZSBkZWZpbml0aW9ucyBmb3IgdXNlIGluIHRyYW5z
bGF0ZSgpLCBiZWNhdXNlIFhTTFQgMS4wIGlzIGR1bWIgYW5kIGRvZXNuJ3Qg
aGF2ZSBhIGxvd2VyY2FzZSgpIGZ1bmN0aW9uLi0tPg0NCgk8eHNsOnZhcmlh
YmxlIG5hbWU9InVwcGVyY2FzZSIgc2VsZWN0PSInQUJDREVGR0hJSktMTU5P
UFFSU1RVVldYWVonIi8+DQ0KCTx4c2w6dmFyaWFibGUgbmFtZT0ibG93ZXJj
YXNlIiBzZWxlY3Q9IidhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiciLz4N
DQoJPHhzbDp0ZW1wbGF0ZSBtYXRjaD0iZG9jdW1lbnQiPg0NCgkJPGh0bWw+
DQ0KCQkJPGhlYWQ+DQ0KCQkJCTx0aXRsZT4NDQoJCQkJCTx4c2w6dmFsdWUt
b2Ygc2VsZWN0PSJzZWN0aW9uL3RpdGxlIi8+DQ0KCQkJCTwvdGl0bGU+DQ0K
CQkJPC9oZWFkPg0NCgkJCTxib2R5Pg0NCgkJCQk8eHNsOmFwcGx5LXRlbXBs
YXRlcy8+DQ0KCQkJPC9ib2R5Pg0NCgkJPC9odG1sPg0NCgk8L3hzbDp0ZW1w
bGF0ZT4NDQoJPHhzbDp0ZW1wbGF0ZSBtYXRjaD0idGl0bGUiPg0NCgkJPGE+
DQ0KCQkJPHhzbDphdHRyaWJ1dGUgbmFtZT0ibmFtZSI+PHhzbDp2YWx1ZS1v
ZiBzZWxlY3Q9InRyYW5zbGF0ZShub3JtYWxpemUtc3BhY2UoLiksJHVwcGVy
Y2FzZSwkbG93ZXJjYXNlKSIvPjwveHNsOmF0dHJpYnV0ZT4NDQoJCTwvYT4N
DQoJCTx4c2w6dmFyaWFibGUgbmFtZT0iZGVwdGgiPg0NCgkJCTx4c2w6dmFs
dWUtb2Ygc2VsZWN0PSJjb3VudChhbmNlc3Rvcjo6c2VjdGlvbikiLz4NDQoJ
CTwveHNsOnZhcmlhYmxlPg0NCgkJPHhzbDplbGVtZW50IG5hbWU9Imh7JGRl
cHRofSI+DQ0KCQkJPHhzbDphcHBseS10ZW1wbGF0ZXMvPg0NCgkJPC94c2w6
ZWxlbWVudD4NDQoJPC94c2w6dGVtcGxhdGU+DQ0KCTwhLS1saXN0cy0tPg0N
Cgk8eHNsOnRlbXBsYXRlIG1hdGNoPSJidWxsZXRfbGlzdCI+DQ0KCQk8dWw+
DQ0KCQkJPHhzbDphcHBseS10ZW1wbGF0ZXMvPg0NCgkJPC91bD4NDQoJPC94
c2w6dGVtcGxhdGU+DQ0KCTx4c2w6dGVtcGxhdGUgbWF0Y2g9ImVudW1lcmF0
ZWRfbGlzdCI+DQ0KCQk8IS0tQ29weSB0aGUgc3RhcnQgYXR0cmlidXRlIGlm
IGl0J3MgdGhlcmUuICBVc2UgdGhlIGFwcHJvcHJpYXRlIEhUTUwgdHlwZSBh
dHRyaWJ1dGUgaWYgZW51bXR5cGUgZXhpc3RzLiAgKFllYWgsIHllYWgsIHR5
cGUgaXMgZGVwcmVjYXRlZC4pICBJZ25vcmUgc3VmZml4IGFuZCBwcmVmaXgg
c2luY2UgaXQncyB1bmNsZWFyIHdoYXQgdG8gZG8gd2l0aCB0aGVtLi0tPg0N
CgkJPHhzbDplbGVtZW50IG5hbWU9Im9sIj4NDQoJCQk8eHNsOmNob29zZT4N
DQoJCQkJPHhzbDp3aGVuIHRlc3Q9IkBlbnVtdHlwZT0nYXJhYmljJyI+DQ0K
CQkJCQk8eHNsOmF0dHJpYnV0ZSBuYW1lPSJ0eXBlIj4xPC94c2w6YXR0cmli
dXRlPg0NCgkJCQk8L3hzbDp3aGVuPg0NCgkJCQk8eHNsOndoZW4gdGVzdD0i
QGVudW10eXBlPSdsb3dlcmFscGhhJyI+DQ0KCQkJCQk8eHNsOmF0dHJpYnV0
ZSBuYW1lPSJ0eXBlIj5hPC94c2w6YXR0cmlidXRlPg0NCgkJCQk8L3hzbDp3
aGVuPg0NCgkJCQk8eHNsOndoZW4gdGVzdD0iQGVudW10eXBlPSd1cHBlcmFs
cGhhJyI+DQ0KCQkJCQk8eHNsOmF0dHJpYnV0ZSBuYW1lPSJ0eXBlIj5BPC94
c2w6YXR0cmlidXRlPg0NCgkJCQk8L3hzbDp3aGVuPg0NCgkJCQk8eHNsOndo
ZW4gdGVzdD0iQGVudW10eXBlPSdsb3dlcnJvbWFuJyI+DQ0KCQkJCQk8eHNs
OmF0dHJpYnV0ZSBuYW1lPSJ0eXBlIj5pPC94c2w6YXR0cmlidXRlPg0NCgkJ
CQk8L3hzbDp3aGVuPg0NCgkJCQk8eHNsOndoZW4gdGVzdD0iQGVudW10eXBl
PSd1cHBlcnJvbWFuJyI+DQ0KCQkJCQk8eHNsOmF0dHJpYnV0ZSBuYW1lPSJ0
eXBlIj5JPC94c2w6YXR0cmlidXRlPg0NCgkJCQk8L3hzbDp3aGVuPg0NCgkJ
CTwveHNsOmNob29zZT4NDQoJCQk8eHNsOmNvcHktb2Ygc2VsZWN0PSJAc3Rh
cnQiLz4NDQoJCQk8eHNsOmFwcGx5LXRlbXBsYXRlcy8+DQ0KCQk8L3hzbDpl
bGVtZW50Pg0NCgk8L3hzbDp0ZW1wbGF0ZT4NDQoJPHhzbDp0ZW1wbGF0ZSBt
YXRjaD0ibGlzdF9pdGVtIj4NDQoJCTxsaT4NDQoJCQk8eHNsOmFwcGx5LXRl
bXBsYXRlcy8+DQ0KCQk8L2xpPg0NCgk8L3hzbDp0ZW1wbGF0ZT4NDQoJPHhz
bDp0ZW1wbGF0ZSBtYXRjaD0iZmllbGRfbGlzdCI+DQ0KCQk8cD4NDQoJCQk8
eHNsOmFwcGx5LXRlbXBsYXRlcy8+DQ0KCQk8L3A+DQ0KCTwveHNsOnRlbXBs
YXRlPg0NCgk8eHNsOnRlbXBsYXRlIG1hdGNoPSJmaWVsZCI+DQ0KCQk8Yj4N
DQoJCQk8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9ImZpZWxkX25hbWUi
Lz4gOiA8L2I+DQ0KCQk8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9ImZp
ZWxkX2JvZHkiLz4NDQoJCTxici8+DQ0KCTwveHNsOnRlbXBsYXRlPg0NCgk8
eHNsOnRlbXBsYXRlIG1hdGNoPSJkZWZpbml0aW9uX2xpc3QiPg0NCgkJPGRs
Pg0NCgkJCTx4c2w6YXBwbHktdGVtcGxhdGVzLz4NDQoJCTwvZGw+DQ0KCTwv
eHNsOnRlbXBsYXRlPg0NCgk8eHNsOnRlbXBsYXRlIG1hdGNoPSJkZWZpbml0
aW9uX2xpc3RfaXRlbSI+DQ0KCQk8eHNsOmFwcGx5LXRlbXBsYXRlcy8+DQ0K
CTwveHNsOnRlbXBsYXRlPg0NCgk8eHNsOnRlbXBsYXRlIG1hdGNoPSJ0ZXJt
Ij4NDQoJCTxkdD4NDQoJCQk8eHNsOmFwcGx5LXRlbXBsYXRlcy8+DQ0KCQk8
L2R0Pg0NCgk8L3hzbDp0ZW1wbGF0ZT4NDQoJPHhzbDp0ZW1wbGF0ZSBtYXRj
aD0iZGVmaW5pdGlvbiI+DQ0KCQk8ZGQ+DQ0KCQkJPHhzbDphcHBseS10ZW1w
bGF0ZXMvPg0NCgkJPC9kZD4NDQoJPC94c2w6dGVtcGxhdGU+DQ0KCTx4c2w6
dGVtcGxhdGUgbWF0Y2g9Im9wdGlvbl9saXN0Ij4NDQoJCTx0YWJsZT4NDQoJ
CQk8eHNsOmFwcGx5LXRlbXBsYXRlcy8+DQ0KCQk8L3RhYmxlPg0NCgk8L3hz
bDp0ZW1wbGF0ZT4NDQoJPHhzbDp0ZW1wbGF0ZSBtYXRjaD0ib3B0aW9uX2xp
c3RfaXRlbSI+DQ0KCQk8dHI+DQ0KCQkJPHhzbDphcHBseS10ZW1wbGF0ZXMv
Pg0NCgkJPC90cj4NDQoJPC94c2w6dGVtcGxhdGU+DQ0KCTx4c2w6dGVtcGxh
dGUgbWF0Y2g9Im9wdGlvbiI+DQ0KCQk8IS0tWFhYIC0gbm90IHN1cmUgaG93
IG9wdGlvbl9hcmd1bWVudCBpcyBzdXBwb3NlZCB0byB3b3JrLCBvciBob3cg
dG8gaGFuZGxlIGl0LS0+DQ0KCQk8dGQ+DQ0KCQkJPGNvZGU+DQ0KCQkJCTx4
c2w6YXBwbHktdGVtcGxhdGVzLz4NDQoJCQk8L2NvZGU+DQ0KCQk8L3RkPg0N
Cgk8L3hzbDp0ZW1wbGF0ZT4NDQoJPHhzbDp0ZW1wbGF0ZSBtYXRjaD0iZGVz
Y3JpcHRpb24iPg0NCgkJPHRkPg0NCgkJCTx4c2w6YXBwbHktdGVtcGxhdGVz
Lz4NDQoJCTwvdGQ+DQ0KCTwveHNsOnRlbXBsYXRlPg0NCgk8eHNsOnRlbXBs
YXRlIG1hdGNoPSJsaXN0X2l0ZW0vcGFyYWdyYXBoWzFdIHwgZGVmaW5pdGlv
bl9saXN0X2l0ZW0vKi9wYXJhZ3JhcGhbMV0gfCBmaWVsZC8qL3BhcmFncmFw
aFsxXSB8IG9wdGlvbi8qL3BhcmFncmFwaFsxXSI+DQ0KCQk8IS0tWFhYIC0g
VW5jbGVhciBob3cgdG8gaGFuZGxlIG11bHRpLXBhcmFncmFwaCBsaXN0IGl0
ZW1zLiAgQ2VydGFpbmx5IHdoZW4gdGhleSdyZSBzaW5nbGUgcGFyYWdyYXBo
cywgd2UgZG9uJ3Qgd2FudCB0aGVtIHdyYXBwZWQgaW4gYSA8UD4gdGFnLiAg
VGhpcyBzZWVtcyB0byB3b3JrIG9rYXkuLS0+DQ0KCQk8eHNsOmFwcGx5LXRl
bXBsYXRlcy8+DQ0KCTwveHNsOnRlbXBsYXRlPg0NCgk8IS0tdGV4dCBzdHls
ZXMtLT4NDQoJPHhzbDp0ZW1wbGF0ZSBtYXRjaD0icGFyYWdyYXBoIj4NDQoJ
CTxwPg0NCgkJCTx4c2w6YXBwbHktdGVtcGxhdGVzLz4NDQoJCTwvcD4NDQoJ
PC94c2w6dGVtcGxhdGU+DQ0KCTx4c2w6dGVtcGxhdGUgbWF0Y2g9ImVtcGhh
c2lzIj4NDQoJCTxlbT4NDQoJCQk8eHNsOmFwcGx5LXRlbXBsYXRlcy8+DQ0K
CQk8L2VtPg0NCgk8L3hzbDp0ZW1wbGF0ZT4NDQoJPHhzbDp0ZW1wbGF0ZSBt
YXRjaD0ic3Ryb25nIj4NDQoJCTxzdHJvbmc+DQ0KCQkJPHhzbDphcHBseS10
ZW1wbGF0ZXMvPg0NCgkJPC9zdHJvbmc+DQ0KCTwveHNsOnRlbXBsYXRlPg0N
Cgk8eHNsOnRlbXBsYXRlIG1hdGNoPSJibG9ja19xdW90ZSI+DQ0KCQk8Ymxv
Y2txdW90ZT4NDQoJCQk8eHNsOmFwcGx5LXRlbXBsYXRlcy8+DQ0KCQk8L2Js
b2NrcXVvdGU+DQ0KCTwveHNsOnRlbXBsYXRlPg0NCgk8eHNsOnRlbXBsYXRl
IG1hdGNoPSJsaXRlcmFsIj4NDQoJCTxjb2RlPg0NCgkJCTx4c2w6YXBwbHkt
dGVtcGxhdGVzLz4NDQoJCTwvY29kZT4NDQoJPC94c2w6dGVtcGxhdGU+DQ0K
CTx4c2w6dGVtcGxhdGUgbWF0Y2g9ImxpdGVyYWxfYmxvY2siPg0NCgkJPHBy
ZT4NDQoJCQk8eHNsOmFwcGx5LXRlbXBsYXRlcy8+DQ0KCQk8L3ByZT4NDQoJ
PC94c2w6dGVtcGxhdGU+DQ0KCTx4c2w6dGVtcGxhdGUgbWF0Y2g9ImludGVy
cHJldGVkIj4NDQoJCTwhLS1YWFggLSBDaG9vc2luZyB0byB1c2UgImludGVy
cHJldGVkIiB0byBtZWFuICJwYXNzIHRocm91Z2ggSFRNTCBjb2RlIiAtIGlz
IHRoaXMgcmVhc29uYWJsZT8gc2hvdWxkIG90aGVyIGJsb2NrcyBkbyB0aGlz
IGJ5IGRlZmF1bHQ/LS0+DQ0KCQk8eHNsOnZhbHVlLW9mIHNlbGVjdD0iLiIg
ZGlzYWJsZS1vdXRwdXQtZXNjYXBpbmc9InllcyIvPg0NCgk8L3hzbDp0ZW1w
bGF0ZT4NDQoJPHhzbDp0ZW1wbGF0ZSBtYXRjaD0iY29tbWVudCIvPg0NCgk8
IS0tZm9vdG5vdGVzLiBYWFggLSBkb2Vzbid0IGhhbmRsZSBudW1iZXJpbmcg
bWl4ZWQgYmV0d2VlbiBhdXRvbnVtYmVyIGFuZCBub24tYXV0b251bWJlcj8t
LT4NDQoJPHhzbDp0ZW1wbGF0ZSBtYXRjaD0iZm9vdG5vdGUiPg0NCgkJPCEt
LUFkZCBhbmNob3JzIGZvciBmb290bm90ZSBhdXRvbnVtYmVyIGFuZC9vciBu
YW1lLCB0aGVuIG91dHB1dCBhdXRvbnVtYmVyIG9yIG5hbWUgZW5jbG9zZWQg
aW4gYnJhY2tldHMgZm9sbG93ZWQgYnkgYSBzcGFjZSBhcyB0aGUgdGV4dCwg
dGhlbiB0aGUgY29udGVudHMgb2YgdGhlIGZvb3Rub3RlLi0tPg0NCgkJPHhz
bDppZiB0ZXN0PSJAYXV0byI+DQ0KCQkJPGE+DQ0KCQkJCTx4c2w6YXR0cmli
dXRlIG5hbWU9Im5hbWUiPjx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJhdXRv
bnVtYmVyX3JlZm5hbWUiLz48L3hzbDphdHRyaWJ1dGU+DQ0KCQkJPC9hPg0N
CgkJPC94c2w6aWY+DQ0KCQk8eHNsOmNob29zZT4NDQoJCQk8eHNsOndoZW4g
dGVzdD0iQG5hbWUiPg0NCgkJCQk8YSBuYW1lPSJ7QG5hbWV9Ii8+DQ0KCQkJ
PC94c2w6d2hlbj4NDQoJCQk8eHNsOndoZW4gdGVzdD0iQHJlZm5hbWUiPg0N
CgkJCQk8YSBuYW1lPSJ7QHJlZm5hbWV9Ii8+DQ0KCQkJPC94c2w6d2hlbj4N
DQoJCTwveHNsOmNob29zZT5bPHhzbDpjaG9vc2U+DQ0KCQkJPHhzbDp3aGVu
IHRlc3Q9ImxhYmVsIj4NDQoJCQkJPHhzbDp2YWx1ZS1vZiBzZWxlY3Q9Imxh
YmVsIi8+DQ0KCQkJPC94c2w6d2hlbj4NDQoJCQk8eHNsOndoZW4gdGVzdD0i
QG5hbWUiPg0NCgkJCQk8eHNsOnZhbHVlLW9mIHNlbGVjdD0iQG5hbWUiLz4N
DQoJCQk8L3hzbDp3aGVuPg0NCgkJCTx4c2w6d2hlbiB0ZXN0PSJAYXV0byI+
DQ0KCQkJCTx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJhdXRvbnVtYmVyIi8+
DQ0KCQkJPC94c2w6d2hlbj4NDQoJCQk8eHNsOm90aGVyd2lzZT4NDQoJCQkJ
PHhzbDptZXNzYWdlIHRlcm1pbmF0ZT0ieWVzIj5ObyBmb290bm90ZSBsYWJl
bCE8L3hzbDptZXNzYWdlPg0NCgkJCTwveHNsOm90aGVyd2lzZT4NDQoJCTwv
eHNsOmNob29zZT5dIDx4c2w6YXBwbHktdGVtcGxhdGVzLz4NDQoJPC94c2w6
dGVtcGxhdGU+DQ0KCTx4c2w6dGVtcGxhdGUgbWF0Y2g9ImZvb3Rub3RlL3Bh
cmFncmFwaFsxXSI+DQ0KCQk8IS0tWFhYIC0gU2FtZSBhcyB3aXRoIGxpc3Qg
aXRlbSBrbHVkZ2UuLi4tLT4NDQoJCTx4c2w6YXBwbHktdGVtcGxhdGVzLz4N
DQoJPC94c2w6dGVtcGxhdGU+DQ0KCTx4c2w6dGVtcGxhdGUgbWF0Y2g9ImZv
b3Rub3RlX3JlZmVyZW5jZSI+DQ0KCQk8YT4NDQoJCQk8eHNsOmF0dHJpYnV0
ZSBuYW1lPSJocmVmIj4jPHhzbDpjaG9vc2U+PHhzbDp3aGVuIHRlc3Q9IkBy
ZWZuYW1lIj48eHNsOnZhbHVlLW9mIHNlbGVjdD0iQHJlZm5hbWUiLz48L3hz
bDp3aGVuPjx4c2w6d2hlbiB0ZXN0PSJAYXV0byI+PHhzbDpjYWxsLXRlbXBs
YXRlIG5hbWU9ImF1dG9udW1iZXJfcmVmbmFtZSIvPjwveHNsOndoZW4+PHhz
bDpvdGhlcndpc2U+PHhzbDptZXNzYWdlIHRlcm1pbmF0ZT0ieWVzIj5XaGF0
IGRvZXMgdGhpcyBmb290bm90ZSByZWZlcmVuY2UgcG9pbnQgdG8/ITwveHNs
Om1lc3NhZ2U+PC94c2w6b3RoZXJ3aXNlPjwveHNsOmNob29zZT48L3hzbDph
dHRyaWJ1dGU+Wzx4c2w6Y2hvb3NlPg0NCgkJCQk8eHNsOndoZW4gdGVzdD0i
QGF1dG8iPg0NCgkJCQkJPHhzbDpjYWxsLXRlbXBsYXRlIG5hbWU9ImF1dG9u
dW1iZXIiLz4NDQoJCQkJPC94c2w6d2hlbj4NDQoJCQkJPHhzbDpvdGhlcndp
c2U+DQ0KCQkJCQk8eHNsOmFwcGx5LXRlbXBsYXRlcy8+DQ0KCQkJCTwveHNs
Om90aGVyd2lzZT4NDQoJCQk8L3hzbDpjaG9vc2U+XSA8L2E+DQ0KCTwveHNs
OnRlbXBsYXRlPg0NCgk8eHNsOnRlbXBsYXRlIG5hbWU9ImF1dG9udW1iZXIi
Pg0NCgkJPHhzbDp2YXJpYWJsZSBuYW1lPSJteW5hbWUiIHNlbGVjdD0ibmFt
ZSgpIi8+DQ0KCQk8eHNsOmlmIHRlc3Q9IkBhdXRvIj4NDQoJCQk8eHNsOm51
bWJlciBjb3VudD0iKltuYW1lKCk9JG15bmFtZSBhbmQgQGF1dG9dIiBsZXZl
bD0iYW55Ii8+DQ0KCQk8L3hzbDppZj4NDQoJPC94c2w6dGVtcGxhdGU+DQ0K
CTx4c2w6dGVtcGxhdGUgbmFtZT0iYXV0b251bWJlcl9yZWZuYW1lIj4NDQoJ
CTx4c2w6cGFyYW0gbmFtZT0iYXV0b251bWJlciI+DQ0KCQkJPHhzbDpjYWxs
LXRlbXBsYXRlIG5hbWU9ImF1dG9udW1iZXIiLz4NDQoJCTwveHNsOnBhcmFt
PmF1dG9udW1iZXJlZF9mb290bm90ZV88eHNsOnZhbHVlLW9mIHNlbGVjdD0i
JGF1dG9udW1iZXIiLz4NDQoJPC94c2w6dGVtcGxhdGU+DQ0KCTwhLS1saW5r
cyBhbmQgdGFyZ2V0cyAtIGFzc29jaWF0ZSBpbmRpcmVjdCBleHRlcm5hbCB0
YXJnZXRzIHdpdGggbGlua3MgdmlhIGtleXMtLT4NDQoJPHhzbDprZXkgbmFt
ZT0iaW5kaXJlY3QtdGFyZ2V0IiBtYXRjaD0idGFyZ2V0W25vZGUoKV0iIHVz
ZT0iQG5hbWUiLz4NDQoJPHhzbDp0ZW1wbGF0ZSBtYXRjaD0ibGluayI+DQ0K
CQk8YT4NDQoJCQk8eHNsOmF0dHJpYnV0ZSBuYW1lPSJocmVmIj48eHNsOmNo
b29zZT48eHNsOndoZW4gdGVzdD0iQHJlZnVyaSI+PHhzbDp2YWx1ZS1vZiBz
ZWxlY3Q9IkByZWZ1cmkiLz48L3hzbDp3aGVuPjx4c2w6d2hlbiB0ZXN0PSJA
cmVmbmFtZSI+PHhzbDp2YXJpYWJsZSBuYW1lPSJhc3NvY2lhdGVkLXVybCIg
c2VsZWN0PSJrZXkoJ2luZGlyZWN0LXRhcmdldCcsQHJlZm5hbWUpIi8+PHhz
bDpjaG9vc2U+PHhzbDp3aGVuIHRlc3Q9IiRhc3NvY2lhdGVkLXVybCI+PHhz
bDp2YWx1ZS1vZiBzZWxlY3Q9IiRhc3NvY2lhdGVkLXVybCIvPjwveHNsOndo
ZW4+PHhzbDpvdGhlcndpc2U+PHhzbDp0ZXh0PiM8L3hzbDp0ZXh0Pjx4c2w6
dmFsdWUtb2Ygc2VsZWN0PSJ0cmFuc2xhdGUobm9ybWFsaXplLXNwYWNlKEBy
ZWZuYW1lKSwkdXBwZXJjYXNlLCRsb3dlcmNhc2UpIi8+PC94c2w6b3RoZXJ3
aXNlPjwveHNsOmNob29zZT48L3hzbDp3aGVuPjx4c2w6b3RoZXJ3aXNlPjx4
c2w6bWVzc2FnZSB0ZXJtaW5hdGU9InllcyI+Tm8gbGluayB0YXJnZXQ/ITwv
eHNsOm1lc3NhZ2U+PC94c2w6b3RoZXJ3aXNlPjwveHNsOmNob29zZT48L3hz
bDphdHRyaWJ1dGU+DQ0KCQkJPHhzbDphcHBseS10ZW1wbGF0ZXMvPg0NCgkJ
PC9hPg0NCgk8L3hzbDp0ZW1wbGF0ZT4NDQoJPHhzbDp0ZW1wbGF0ZSBtYXRj
aD0idGFyZ2V0Ij4NDQoJCTx4c2w6Y2hvb3NlPg0NCgkJCTx4c2w6d2hlbiB0
ZXN0PSJub2RlKCkiPg0NCgkJCQk8IS0tSXQncyBhbiBleHRlcm5hbCB0YXJn
ZXQuICBXZSBoYXZlIGEga2V5IHBvaW50aW5nIHRvIGl0IGZvciB1c2Ugd2hl
biB3ZSBmaW5kIGFuIGFzc29jaWF0ZWQgbGluay4gIFdlIGRvbid0IG5lZWQg
dG8gcHJpbnQgYW55dGhpbmcgbm93Li0tPg0NCgkJCTwveHNsOndoZW4+DQ0K
CQkJPHhzbDpvdGhlcndpc2U+DQ0KCQkJCTwhLS1JbnRlcm5hbCBsaW5rIHRh
cmdldCAtIHByaW50IGFuIGVtcHR5IGFuY2hvciwgdGhlbiB0aGUgbmFtZSBp
biBicmFja2V0cywgdGhlbiB0aGUgY29udGVudHMuLS0+DQ0KCQkJCTxhPg0N
CgkJCQkJPHhzbDp2YWx1ZS1vZiBzZWxlY3Q9InRyYW5zbGF0ZShub3JtYWxp
emUtc3BhY2UoQG5hbWUpLCR1cHBlcmNhc2UsJGxvd2VyY2FzZSkiLz4NDQoJ
CQkJPC9hPls8eHNsOnZhbHVlLW9mIHNlbGVjdD0iQG5hbWUiLz5dIDx4c2w6
YXBwbHktdGVtcGxhdGVzLz4NDQoJCQk8L3hzbDpvdGhlcndpc2U+DQ0KCQk8
L3hzbDpjaG9vc2U+DQ0KCTwveHNsOnRlbXBsYXRlPg0NCjwveHNsOnN0eWxl
c2hlZXQ+DQ0K
--1195431321-104844362-1003205837=:22140--