From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jonathan Leech-Pepin Subject: Re: pxref in texinfo export Date: Mon, 25 Feb 2013 15:29:57 -0500 Message-ID: References: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=f46d043d64af890e6504d69267c9 Return-path: Received: from eggs.gnu.org ([208.118.235.92]:53045) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UA4gS-0004yl-1y for emacs-orgmode@gnu.org; Mon, 25 Feb 2013 15:30:04 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UA4gQ-00084m-1p for emacs-orgmode@gnu.org; Mon, 25 Feb 2013 15:29:59 -0500 Received: from mail-ve0-f169.google.com ([209.85.128.169]:46535) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UA4gP-00084V-SA for emacs-orgmode@gnu.org; Mon, 25 Feb 2013 15:29:57 -0500 Received: by mail-ve0-f169.google.com with SMTP id 15so2643126vea.28 for ; Mon, 25 Feb 2013 12:29:57 -0800 (PST) In-Reply-To: List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: Subhan Tindall Cc: Org-mode --f46d043d64af890e6504d69267c9 Content-Type: multipart/alternative; boundary=f46d043d64af890e5f04d69267c7 --f46d043d64af890e5f04d69267c7 Content-Type: text/plain; charset=UTF-8 (Here are the attached files, forgot to add them) On 25 February 2013 15:24, Jonathan Leech-Pepin < jonathan.leechpepin@gmail.com> wrote: > Hello, > > On 25 February 2013 14:01, Subhan Tindall wrote: > >> The point being that compiling .texinfo source into an Info file >> treats references differently. For example: >> (@pxref{my_node_name}). will compile just fine. >> (@ref{my_node_name}). will not. > > > Both work perfectly fine for me. > makeinfo (GNU texinfo) 5.0 > > >> There are also differences in case >> (see v. See, note v. Note), and differences in output by ref type >> depending on target output of file (info, DVI, HTML,...). For example, >> @pxref generates different punctuation for typeset v. info files, @ref >> does not generate a 'See ' in printed material while @xref does, etc. >> >> Although the differences are subtle, they really are not equivalent >> and should not be treated as such. >> > > With a slight amount of work on the user's part, they can be made > functionally equivalent on export. > > Using the two attached minimal .texi files (good-ref.texi is using > @xref/@pxref as is preferred while ref.texi is using @ref with > appropriate See/see added in the text) and disregarding filename > differences (since they are noted in the info output) I get the > following differences: > > > makeinfo --html --no-split good-ref.texi ref.texi > 0 Diffs > > > makeinfo --docbook --no-split good-ref.texi ref.texi > Filename ID appears in diff > > > makeinfo --xml --no-split good-ref.texi ref.texi > Filename difference. > > Links are different since TexinfoML does still distinguish xref/pxref > and ref in how they create the links. > > > makeinfo --no-split good-ref.texi ref.texi > > The info file does show the expected differences between the two > documents, notably that the "@xref{}" becomes "*Note" while the > equivalent "See @ref{}" becomes "See *note" with @pxref{}->*note vs > see @ref{} -> see *note. > > However once they are viewed within the *info* buffer (C-u C-h i > good-ref.info/ref-only.info) the lines in question are visually > identical since *Note becomes "See" and *note becomes "see" if there > is not already "see" present. > > I will not disagree that @ref, @pxref and @xref are subtly different, > however with slight user intervention @ref can be used in the same > above locations by simply replacing: > > @xref{} -> "See @ref{}" > @pxref{} -> "see @ref{}" > > I had to compare these possible outcomes when working on the texinfo > exporter. Since links are parsed before being included in their > paragraphs, I did not have a way to obtain context and therefore > attempt to guess (and be successful) at which type of reference was > intended by a link in Org. Restricting it to @ref{} in all cases, > even if it added a slight burden to the user (4 additional characters > to type in Org) if they wanted to emulate @xref or @pxref was in my > opinion the best choice. > > Regards, > > -- > Jon > > [...] > > --f46d043d64af890e5f04d69267c7 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable (Here are the attached files, forgot to add them)

On 25 February 2013 15:24, Jonathan Leech-Pepin = <jona= than.leechpepin@gmail.com> wrote:
Hello,

On 25 February 2013 14:01, Subhan Tindall = <sub= han.tindall@rentrakmail.com> wrote:
The point being that compiling .texinfo source into an Info file
treats references differently. For example:
(@pxref{my_node_name}). =C2=A0will compile just fine.
(@ref{my_node_name}). will not. =C2=A0

Both work= perfectly fine for me.
makeinfo (GNU texinfo) 5.0
=C2=A0
There are also differences in case
(see v. See, note v. Note), and differences in output by ref type
depending on target output of file (info, DVI, HTML,...). For example,
@pxref generates different punctuation for typeset v. info files, @ref
does not generate a 'See ' in printed material while @xref does, et= c.

Although the differences are subtle, they really are not equivalent
and should not be treated as such.
=C2=A0
<= div>With a slight amount of work on the user's part, they can be madefunctionally equivalent on export.

Using the two attached minimal = .texi files (good-ref.texi is using
@xref/@pxref as is preferred while ref.texi is using @ref with
appropria= te See/see added in the text) and disregarding filename
differences (sin= ce they are noted in the info output) I get the
following differences:
> makeinfo --html --no-split good-ref.texi ref.texi
0 Diffs
> makeinfo --docbook --no-split good-ref.texi ref.texi
Filename ID = appears in diff

> makeinfo --xml --no-split good-ref.texi ref.tex= i
Filename difference.

Links are different since TexinfoML does still = distinguish xref/pxref
and ref in how they create the links.

>= makeinfo --no-split good-ref.texi ref.texi

The info file does show = the expected differences between the two
documents, notably that the "@xref{}" becomes "*Note" w= hile the
equivalent "See @ref{}" becomes "See *note"= with @pxref{}->*note vs
see @ref{} -> see *note.

However o= nce they are viewed within the *info* buffer (C-u C-h i
good-ref.i= nfo/ref-only.info) the lines in question are visually
identical sinc= e *Note becomes "See" and *note becomes "see" if there<= br> is not already "see" present.

I will not disagree that @ref, @pxref and @xref are subtly different,however with slight user intervention @ref can be used in the same
abo= ve locations by simply replacing:

@xref{}=C2=A0 -> "See @ref= {}"
@pxref{} -> "see @ref{}"

I had to compare these possibl= e outcomes when working on the texinfo
exporter.=C2=A0 Since links are p= arsed before being included in their
paragraphs, I did not have a way to= obtain context and therefore
attempt to guess (and be successful) at which type of reference was
inte= nded by a link in Org.=C2=A0 Restricting it to @ref{} in all cases,
even= if it added a slight burden to the user (4 additional characters
to typ= e in Org) if they wanted to emulate @xref or @pxref was in my
opinion the best choice.

Regards,

--
Jon

[...]
<= /div>


--f46d043d64af890e5f04d69267c7-- --f46d043d64af890e6504d69267c9 Content-Type: application/x-texinfo; name="good-ref.texi" Content-Disposition: attachment; filename="good-ref.texi" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hdls8ry10 XGlucHV0IHRleGluZm8gICBAYyAtKi10ZXhpbmZvLSotCkBjICUqKnN0YXJ0IG9mIGhlYWRlcgpA c2V0ZmlsZW5hbWUgZ29vZC1yZWYuaW5mbwpAc2V0dGl0bGUgT25seSBSZWZlcmVuY2VzCkBjICUq KmVuZCBvZiBoZWFkZXIKQGNvcHlpbmcKVGVzdC4KCkNvcHlyaWdodCBAY29weXJpZ2h0e30gMjAx MyAgSm9uYXRoYW4gTGVlY2gtUGVwaW4KCkBxdW90YXRpb24KUGVybWlzc2lvbiBpcyBncmFudGVk IHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kL29yIG1vZGlmeSB0aGlzIGRvY3VtZW50CnVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIEZyZWUgRG9jdW1lbnRhdGlvbiBMaWNlbnNlLCBWZXJzaW9uIDEu MwpvciBhbnkgbGF0ZXIgdmVyc2lvbiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbjsKd2l0aCBubyBJbnZhcmlhbnQgU2VjdGlvbnMsIG5vIEZyb250LUNvdmVyIFRleHRz LCBhbmQgbm8gQmFjay1Db3ZlciBUZXh0cy4KQSBjb3B5IG9mIHRoZSBsaWNlbnNlIGlzIGluY2x1 ZGVkIGluIHRoZSBzZWN0aW9uIGVudGl0bGVkIGBgR05VCkZyZWUgRG9jdW1lbnRhdGlvbiBMaWNl bnNlJycuCgpBIGNvcHkgb2YgdGhlIGxpY2Vuc2UgaXMgYWxzbyBhdmFpbGFibGUgZnJvbSB0aGUg RnJlZSBTb2Z0d2FyZQpGb3VuZGF0aW9uIFdlYiBzaXRlIGF0IEB1cmx7aHR0cDovL3d3dy5nbnUu b3JnL2xpY2Vuc2VzL2ZkbC5odG1sfS4KCkBlbmQgcXVvdGF0aW9uCgpUaGUgZG9jdW1lbnQgd2Fz IHR5cGVzZXQgd2l0aApAdXJlZntodHRwOi8vd3d3LnRleGluZm8ub3JnLywgR05VIFRleGluZm99 LgoKQGVuZCBjb3B5aW5nCgpAdGl0bGVwYWdlCkB0aXRsZSBPbmx5IFJlZmVyZW5jZXMKQHN1YnRp dGxlIFRlc3QKQGF1dGhvciBKb25hdGhhbiBMZWVjaC1QZXBpbiA8am9uYXRoYW5AQGxlZWNocGVw aW4uY29tPgpAcGFnZQpAdnNraXAgMHB0IHBsdXMgMWZpbGwKQGluc2VydGNvcHlpbmcKQGVuZCB0 aXRsZXBhZ2UKCkBjIE91dHB1dCB0aGUgdGFibGUgb2YgdGhlIGNvbnRlbnRzIGF0IHRoZSBiZWdp bm5pbmcuCkBjb250ZW50cwoKQGlmbm90dGV4CkBub2RlIFRvcCwgTG9yZSBJcHN1bSwgKGRpciks IChkaXIpCkB0b3AgT25seSBSZWZlcmVuY2VzCgpAaW5zZXJ0Y29weWluZwpAZW5kIGlmbm90dGV4 CgpAYyBHZW5lcmF0ZSB0aGUgbm9kZXMgZm9yIHRoaXMgbWVudSB3aXRoIGBDLWMgQy11IEMtbScu CkBtZW51CiogTG9yZSBJcHN1bTo6CiogUmVmZXJlbmNlczo6CkBlbmQgbWVudQoKQGMgVXBkYXRl IGFsbCBub2RlIGVudHJpZXMgd2l0aCBgQy1jIEMtdSBDLW4nLgpAYyBJbnNlcnQgbmV3IG5vZGVz IHdpdGggYEMtYyBDLWMgbicuCkBub2RlIExvcmUgSXBzdW0sIFJlZmVyZW5jZXMsIFRvcCwgVG9w CkBjaGFwdGVyIExvcmUgSXBzdW0KCiBMb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2Vj dGV0dXIgYWRpcGlzY2luZyBlbGl0LiBRdWlzcXVlIGEgY29uc2VxdWF0IG1ldHVzLiBQaGFzZWxs dXMgZXQgdGluY2lkdW50IG9kaW8uIFZlc3RpYnVsdW0gbmVjIGxpYmVybyBsZW8uIFZlc3RpYnVs dW0gdXQgbGFvcmVldCBlbmltLiBJbiB2YXJpdXMgcHJldGl1bSBvcmNpLCBhYyBkaWN0dW0gdGVs bHVzIGZhdWNpYnVzIGV0LiBTZWQgYWNjdW1zYW4gYW50ZSB2aXRhZSBwdXJ1cyBkaWN0dW0gYXQg dm9sdXRwYXQgdXJuYSBwb3J0dGl0b3IuIEN1cmFiaXR1ciBudW5jIG51bmMsIHBvcnRhIHNpdCBh bWV0IGF1Y3RvciBldCwgZGlnbmlzc2ltIHZpdGFlIGxvcmVtLiBOdWxsYW0gcG9ydHRpdG9yIG1l dHVzIHB1bHZpbmFyIG9kaW8gaGVuZHJlcml0IGFjIHBsYWNlcmF0IGFudGUgdGluY2lkdW50LiBQ cm9pbiBjdXJzdXMgbGFjaW5pYSB2YXJpdXMuIEluIHNvZGFsZXMgY3Vyc3VzIGxpYmVybywgaW4g ZXVpc21vZCBhcmN1IGNvbmd1ZSBhLgoKQ3VyYWJpdHVyIHF1YW0gbGVjdHVzLCB0cmlzdGlxdWUg Z3JhdmlkYSB2b2x1dHBhdCBpZCwgZGljdHVtIHZlbCBudW5jLiBBZW5lYW4gc2l0IGFtZXQgbGli ZXJvIGRvbG9yLiBOdWxsYW0gbHVjdHVzIGJpYmVuZHVtIHNjZWxlcmlzcXVlLiBNYWVjZW5hcyB2 ZWwgbGFjdXMgbGlndWxhLCBxdWlzIGRhcGlidXMgZGlhbS4gQ3VyYWJpdHVyIHBvcnR0aXRvciBl bGVpZmVuZCBlcm9zIGEgc29kYWxlcy4gQWxpcXVhbSBncmF2aWRhIGVsaXQgZWdlc3RhcyBudW5j IHVsbGFtY29ycGVyIHJob25jdXMuIFN1c3BlbmRpc3NlIHVybmEgbGlndWxhLCBtYWxlc3VhZGEg bm9uIHBlbGxlbnRlc3F1ZSBldCwgdGVtcHVzIG5vbiBhdWd1ZS4gTmFtIGltcGVyZGlldCBsYWNp bmlhIGZyaW5naWxsYS4gTWFlY2VuYXMgYWMgc2FwaWVuIG5pc2ksIGNvbmd1ZSB0aW5jaWR1bnQg bWF1cmlzLiBOYW0gbm9uIG1hdHRpcyBudWxsYS4gUXVpc3F1ZSBpbiB1bHRyaWNlcyBlc3QuIERv bmVjIHJpc3VzIHR1cnBpcywgdmFyaXVzIGF0IHZlbmVuYXRpcyBhLCB2ZWhpY3VsYSB2YXJpdXMg ZXJhdC4gTWFlY2VuYXMgc2l0IGFtZXQgc2VtIHNlZCBkaWFtIGFkaXBpc2NpbmcgY29tbW9kby4g UXVpc3F1ZSBldCBhcmN1IGF0IHNlbSB2aXZlcnJhIGFsaXF1YW0gdml0YWUgdmVsIGxlY3R1cy4g Q3VtIHNvY2lpcyBuYXRvcXVlIHBlbmF0aWJ1cyBldCBtYWduaXMgZGlzIHBhcnR1cmllbnQgbW9u dGVzLCBuYXNjZXR1ciByaWRpY3VsdXMgbXVzLiAKCkBub2RlIFJlZmVyZW5jZXMsICAsIExvcmUg SXBzdW0sIFRvcApAY2hhcHRlciBSZWZlcmVuY2VzCgpAeHJlZntMb3JlIElwc3VtfSwgaXMgYW4g eHJlZiB0byB0aGUgcHJldmlvdXMgY2hhcHRlci4KClBsZWFzZSBAcHhyZWZ7TG9yZSBJcHN1bX0s IHdoZW4gbG9va2luZyBmb3IgdGV4dC4KClRoZXJlIHdhcyB0ZXh0IGluIHRoZSBwcmV2aW91cyBj aGFwdGVyIChAcHhyZWZ7TG9yZSBJcHN1bX0pLgoKQGJ5ZQoKQGMgcmVmLnRleGkgZW5kcyBoZXJl Cg== --f46d043d64af890e6504d69267c9 Content-Type: application/x-texinfo; name="ref.texi" Content-Disposition: attachment; filename="ref.texi" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hdls8vk71 XGlucHV0IHRleGluZm8gICBAYyAtKi10ZXhpbmZvLSotCkBjICUqKnN0YXJ0IG9mIGhlYWRlcgpA c2V0ZmlsZW5hbWUgcmVmLW9ubHkuaW5mbwpAc2V0dGl0bGUgT25seSBSZWZlcmVuY2VzCkBjICUq KmVuZCBvZiBoZWFkZXIKQGNvcHlpbmcKVGVzdC4KCkNvcHlyaWdodCBAY29weXJpZ2h0e30gMjAx MyAgSm9uYXRoYW4gTGVlY2gtUGVwaW4KCkBxdW90YXRpb24KUGVybWlzc2lvbiBpcyBncmFudGVk IHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kL29yIG1vZGlmeSB0aGlzIGRvY3VtZW50CnVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIEZyZWUgRG9jdW1lbnRhdGlvbiBMaWNlbnNlLCBWZXJzaW9uIDEu MwpvciBhbnkgbGF0ZXIgdmVyc2lvbiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbjsKd2l0aCBubyBJbnZhcmlhbnQgU2VjdGlvbnMsIG5vIEZyb250LUNvdmVyIFRleHRz LCBhbmQgbm8gQmFjay1Db3ZlciBUZXh0cy4KQSBjb3B5IG9mIHRoZSBsaWNlbnNlIGlzIGluY2x1 ZGVkIGluIHRoZSBzZWN0aW9uIGVudGl0bGVkIGBgR05VCkZyZWUgRG9jdW1lbnRhdGlvbiBMaWNl bnNlJycuCgpBIGNvcHkgb2YgdGhlIGxpY2Vuc2UgaXMgYWxzbyBhdmFpbGFibGUgZnJvbSB0aGUg RnJlZSBTb2Z0d2FyZQpGb3VuZGF0aW9uIFdlYiBzaXRlIGF0IEB1cmx7aHR0cDovL3d3dy5nbnUu b3JnL2xpY2Vuc2VzL2ZkbC5odG1sfS4KCkBlbmQgcXVvdGF0aW9uCgpUaGUgZG9jdW1lbnQgd2Fz IHR5cGVzZXQgd2l0aApAdXJlZntodHRwOi8vd3d3LnRleGluZm8ub3JnLywgR05VIFRleGluZm99 LgoKQGVuZCBjb3B5aW5nCgpAdGl0bGVwYWdlCkB0aXRsZSBPbmx5IFJlZmVyZW5jZXMKQHN1YnRp dGxlIFRlc3QKQGF1dGhvciBKb25hdGhhbiBMZWVjaC1QZXBpbiA8am9uYXRoYW5AQGxlZWNocGVw aW4uY29tPgpAcGFnZQpAdnNraXAgMHB0IHBsdXMgMWZpbGwKQGluc2VydGNvcHlpbmcKQGVuZCB0 aXRsZXBhZ2UKCkBjIE91dHB1dCB0aGUgdGFibGUgb2YgdGhlIGNvbnRlbnRzIGF0IHRoZSBiZWdp bm5pbmcuCkBjb250ZW50cwoKQGlmbm90dGV4CkBub2RlIFRvcCwgTG9yZSBJcHN1bSwgKGRpciks IChkaXIpCkB0b3AgT25seSBSZWZlcmVuY2VzCgpAaW5zZXJ0Y29weWluZwpAZW5kIGlmbm90dGV4 CgpAYyBHZW5lcmF0ZSB0aGUgbm9kZXMgZm9yIHRoaXMgbWVudSB3aXRoIGBDLWMgQy11IEMtbScu CkBtZW51CiogTG9yZSBJcHN1bTo6CiogUmVmZXJlbmNlczo6CkBlbmQgbWVudQoKQGMgVXBkYXRl IGFsbCBub2RlIGVudHJpZXMgd2l0aCBgQy1jIEMtdSBDLW4nLgpAYyBJbnNlcnQgbmV3IG5vZGVz IHdpdGggYEMtYyBDLWMgbicuCkBub2RlIExvcmUgSXBzdW0sIFJlZmVyZW5jZXMsIFRvcCwgVG9w CkBjaGFwdGVyIExvcmUgSXBzdW0KCiBMb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2Vj dGV0dXIgYWRpcGlzY2luZyBlbGl0LiBRdWlzcXVlIGEgY29uc2VxdWF0IG1ldHVzLiBQaGFzZWxs dXMgZXQgdGluY2lkdW50IG9kaW8uIFZlc3RpYnVsdW0gbmVjIGxpYmVybyBsZW8uIFZlc3RpYnVs dW0gdXQgbGFvcmVldCBlbmltLiBJbiB2YXJpdXMgcHJldGl1bSBvcmNpLCBhYyBkaWN0dW0gdGVs bHVzIGZhdWNpYnVzIGV0LiBTZWQgYWNjdW1zYW4gYW50ZSB2aXRhZSBwdXJ1cyBkaWN0dW0gYXQg dm9sdXRwYXQgdXJuYSBwb3J0dGl0b3IuIEN1cmFiaXR1ciBudW5jIG51bmMsIHBvcnRhIHNpdCBh bWV0IGF1Y3RvciBldCwgZGlnbmlzc2ltIHZpdGFlIGxvcmVtLiBOdWxsYW0gcG9ydHRpdG9yIG1l dHVzIHB1bHZpbmFyIG9kaW8gaGVuZHJlcml0IGFjIHBsYWNlcmF0IGFudGUgdGluY2lkdW50LiBQ cm9pbiBjdXJzdXMgbGFjaW5pYSB2YXJpdXMuIEluIHNvZGFsZXMgY3Vyc3VzIGxpYmVybywgaW4g ZXVpc21vZCBhcmN1IGNvbmd1ZSBhLgoKQ3VyYWJpdHVyIHF1YW0gbGVjdHVzLCB0cmlzdGlxdWUg Z3JhdmlkYSB2b2x1dHBhdCBpZCwgZGljdHVtIHZlbCBudW5jLiBBZW5lYW4gc2l0IGFtZXQgbGli ZXJvIGRvbG9yLiBOdWxsYW0gbHVjdHVzIGJpYmVuZHVtIHNjZWxlcmlzcXVlLiBNYWVjZW5hcyB2 ZWwgbGFjdXMgbGlndWxhLCBxdWlzIGRhcGlidXMgZGlhbS4gQ3VyYWJpdHVyIHBvcnR0aXRvciBl bGVpZmVuZCBlcm9zIGEgc29kYWxlcy4gQWxpcXVhbSBncmF2aWRhIGVsaXQgZWdlc3RhcyBudW5j IHVsbGFtY29ycGVyIHJob25jdXMuIFN1c3BlbmRpc3NlIHVybmEgbGlndWxhLCBtYWxlc3VhZGEg bm9uIHBlbGxlbnRlc3F1ZSBldCwgdGVtcHVzIG5vbiBhdWd1ZS4gTmFtIGltcGVyZGlldCBsYWNp bmlhIGZyaW5naWxsYS4gTWFlY2VuYXMgYWMgc2FwaWVuIG5pc2ksIGNvbmd1ZSB0aW5jaWR1bnQg bWF1cmlzLiBOYW0gbm9uIG1hdHRpcyBudWxsYS4gUXVpc3F1ZSBpbiB1bHRyaWNlcyBlc3QuIERv bmVjIHJpc3VzIHR1cnBpcywgdmFyaXVzIGF0IHZlbmVuYXRpcyBhLCB2ZWhpY3VsYSB2YXJpdXMg ZXJhdC4gTWFlY2VuYXMgc2l0IGFtZXQgc2VtIHNlZCBkaWFtIGFkaXBpc2NpbmcgY29tbW9kby4g UXVpc3F1ZSBldCBhcmN1IGF0IHNlbSB2aXZlcnJhIGFsaXF1YW0gdml0YWUgdmVsIGxlY3R1cy4g Q3VtIHNvY2lpcyBuYXRvcXVlIHBlbmF0aWJ1cyBldCBtYWduaXMgZGlzIHBhcnR1cmllbnQgbW9u dGVzLCBuYXNjZXR1ciByaWRpY3VsdXMgbXVzLiAKCkBub2RlIFJlZmVyZW5jZXMsICAsIExvcmUg SXBzdW0sIFRvcApAY2hhcHRlciBSZWZlcmVuY2VzCgpTZWUgQHJlZntMb3JlIElwc3VtfSwgaXMg YW4geHJlZiB0byB0aGUgcHJldmlvdXMgY2hhcHRlci4KClBsZWFzZSBzZWUgQHJlZntMb3JlIElw c3VtfSwgd2hlbiBsb29raW5nIGZvciB0ZXh0LgoKVGhlcmUgd2FzIHRleHQgaW4gdGhlIHByZXZp b3VzIGNoYXB0ZXIgKEByZWZ7TG9yZSBJcHN1bX0pLgoKQGJ5ZQoKQGMgcmVmLnRleGkgZW5kcyBo ZXJlCg== --f46d043d64af890e6504d69267c9--