From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.io/gmane.comp.tex.context/94589 Path: news.gmane.org!not-for-mail From: "Meer, Hans van der" Newsgroups: gmane.comp.tex.context Subject: evaluation of != and ~= Date: Fri, 29 Apr 2016 15:26:12 +0000 Message-ID: <7E62C0D8-6E69-4870-9057-7F76580CE5E6@uva.nl> Reply-To: mailing list for ConTeXt users NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="_004_7E62C0D86E69487090577F76580CE5E6uvanl_" X-Trace: ger.gmane.org 1461943619 5550 80.91.229.3 (29 Apr 2016 15:26:59 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Fri, 29 Apr 2016 15:26:59 +0000 (UTC) To: NTG ConTeXt Original-X-From: ntg-context-bounces@ntg.nl Fri Apr 29 17:26:46 2016 Return-path: Envelope-to: gctc-ntg-context-518@m.gmane.org Original-Received: from zapf.boekplan.nl ([5.39.185.232] helo=zapf.ntg.nl) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1awAJZ-0006jC-Kh for gctc-ntg-context-518@m.gmane.org; Fri, 29 Apr 2016 17:26:45 +0200 Original-Received: from localhost (localhost [127.0.0.1]) by zapf.ntg.nl (Postfix) with ESMTP id 15BC2B4FB; Fri, 29 Apr 2016 17:26:26 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at zapf.boekplan.nl Original-Received: from zapf.ntg.nl ([127.0.0.1]) by localhost (zapf.ntg.nl [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id iMgsW6zlryzN; Fri, 29 Apr 2016 17:26:25 +0200 (CEST) Original-Received: from zapf.ntg.nl (localhost [IPv6:::1]) by zapf.ntg.nl (Postfix) with ESMTP id 6A43AB4FE; Fri, 29 Apr 2016 17:26:25 +0200 (CEST) Original-Received: from localhost (localhost [127.0.0.1]) by zapf.ntg.nl (Postfix) with ESMTP id 8D25EB4F8 for ; Fri, 29 Apr 2016 17:26:23 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at zapf.boekplan.nl Original-Received: from zapf.ntg.nl ([127.0.0.1]) by localhost (zapf.ntg.nl [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id WoiiMR1qO5qY for ; Fri, 29 Apr 2016 17:26:22 +0200 (CEST) Original-Received: from HUB02.uva.nl (hub02.uva.nl [146.50.108.231]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by zapf.ntg.nl (Postfix) with ESMTPS id EC0B0B4F7 for ; Fri, 29 Apr 2016 17:26:12 +0200 (CEST) Original-Received: from MBX02.uva.nl ([169.254.2.73]) by HUB02.uva.nl ([2002:9232:6ce7::9232:6ce7]) with mapi id 14.03.0266.001; Fri, 29 Apr 2016 17:26:12 +0200 Thread-Topic: evaluation of != and ~= Thread-Index: AQHRoit2qYE9nAwkI0yZ31RwVrXaLg== Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-originating-ip: [84.106.134.200] x-endpointsecurity-0xde81-ev: v:6.2.7.719, d:out, a:y, w:t, t:15, sv:1461926747, ts:1461943572 X-BeenThere: ntg-context@ntg.nl X-Mailman-Version: 2.1.16 Precedence: list List-Id: mailing list for ConTeXt users List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: ntg-context-bounces@ntg.nl Original-Sender: "ntg-context" Xref: news.gmane.org gmane.comp.tex.context:94589 Archived-At: --_004_7E62C0D86E69487090577F76580CE5E6uvanl_ Content-Type: multipart/alternative; boundary="_000_7E62C0D86E69487090577F76580CE5E6uvanl_" --_000_7E62C0D86E69487090577F76580CE5E6uvanl_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable This one took the better part of an afternoon from me, but I finally found = the (unexpected) culprit. In the xml documentation on page 31 it is said: The given expression between [] is converted to a LUA expression so you ca= n use the use operators: =3D=3D ~=3D <=3D >=3D < > not and or () In addition, =3D equals =3D=3D and !=3D is the same as ~=3D. This is not true as the following demonstrates. The use of !=3D is as expec= ted but the ~=3D leads to an error and this should not be: xml> lpath > error in expression: number(@atta) ~=3D 1 =3D> expr.number((ll= .at and ll.at['atta'])) ~=3D=3D 1 Hans van der Meer % failure of test on inequality. \startxmlsetups demo:comparefail \xmlsetsetup{#1}{root|node}{demo:comparefail:*} \stopxmlsetups \xmlregisterdocumentsetup{demo}{demo:comparefail} \startxmlsetups demo:comparefail:root compare \type{!=3D}\crlf \xmlfilter{#1}{/[number(@atta) !=3D 1]/command(demo:comparefail:node)} compare \type{~=3D}\crlf \xmlfilter{#1}{/[number(@atta) ~=3D 1]/command(demo:comparefail:node)} \stopxmlsetups \startxmlsetups demo:comparefail:node node: attribute atta =3D \xmlatt{#1}{atta}\crlf \stopxmlsetups \startbuffer[comparefail] \stopbuffer \starttext \xmlprocessbuffer{demo}{comparefail}{} Note the absence of output in the second \tex{xmlfilter}. \stoptext --_000_7E62C0D86E69487090577F76580CE5E6uvanl_ Content-Type: text/html; charset="us-ascii" Content-ID: Content-Transfer-Encoding: quoted-printable
This one took the better par= t of an afternoon from me, but I finally found the (unexpected) culprit.
In the xml documentation on page 31 it is said:
 The given expression between [] is converted to a LUA= expression so you can use the use operators: =3D=3D ~=3D <=3D >=3D &= lt; > not and or ()
In addition, =3D equals =3D=3D and !=3D is the same as ~=3D= .

This is not true as the following demonstrates. The use of = !=3D is as expected but the ~=3D leads to an error and this should not be:<= /div>

xml> lpath > error in expression: number(@atta) ~=3D = 1 =3D> expr.number((ll.at and ll.at['atta'])) ~=3D=3D 1


Hans van der Meer


% failure of test on ineq= uality.
\startxmlsetups demo:comp= arefail
\xmlsetsetup{#1}{root|node}{demo:c= omparefail:*}
\stopxmlsetups
\xmlregisterdocumentsetup= {demo}{demo:comparefail}
\startxmlsetups demo:comp= arefail:root
compare \type{!=3D}\crlf
\xmlfilter{#1}{/[number(@atta) != =3D 1]/command(demo:comparefail:node)}
compare \type{~=3D}\crlf
\xmlfilter{#1}{/[number(@atta) ~= =3D 1]/command(demo:comparefail:node)}
\stopxmlsetups
\startxmlsetups demo:comp= arefail:node
node: attribute atta =3D \xmlatt{#= 1}{atta}\crlf
\stopxmlsetups
\startbuffer[comparefail]=
<root>
<node atta=3D"2&q= uot;/>
<node atta=3D"1&q= uot;/>
</root>
\stopbuffer
\starttext
\xmlprocessbuffer{demo}{c= omparefail}{}
Note the absence of outpu= t in the second \tex{xmlfilter}.
\stoptext

--_000_7E62C0D86E69487090577F76580CE5E6uvanl_-- --_004_7E62C0D86E69487090577F76580CE5E6uvanl_ Content-Type: application/pdf; name="xml-compare.pdf" Content-Description: xml-compare.pdf Content-Disposition: attachment; filename="xml-compare.pdf"; size=8931; creation-date="Fri, 29 Apr 2016 15:26:12 GMT"; modification-date="Fri, 29 Apr 2016 15:26:12 GMT" Content-ID: <9A4A45FE50FFE047959C53FD6FB5594B@uva.nl> Content-Transfer-Encoding: base64 JVBERi0xLjcKJdDUxdgKOSAwIG9iago8PC9MZW5ndGggMzA5ICAgICAgIC9GaWx0ZXIvRmxhdGVE ZWNvZGU+PgpzdHJlYW0KeF6lUrtOBDEM7Pcr8gObsx3bSSS0xd6xSNTbIVqo+P8WO/sAbo8TEkXe Y3tmYgjvAcJTB+s6zt1pwoAYqwhqCfNbQEOAzVQgSmKWkBWiMhGF+SO8PAAIDa/zc7chM8SiOWSg mAoLbjAaDYoA7CsD4BlAASAt4adJbldGzFGrMB1TJrFwXsN/Ib7S0ZJNVYadDl+cztBTNgk0OQ9b z0PPie2msavrMJbsr8nOFub3xrpPpFdItPjl1mitOx1v2aM5RaEqu4v/t+eQEl3VH+2RGhEIdjps +v23fmptp+bVd/XNF/PHHXRbXcoXwrOkvOFbztVD74Jlv726y3zZnTtU26rsZnm16X7/UJEoBSsF vRZJRiDb8Jbk4jSXj/b9Itxb9H5/Jc4RBaoe00tpoY9z9wkdObMKCmVuZHN0cmVhbQplbmRvYmoK MTQgMCBvYmoKPDwvU3VidHlwZSAvWE1MIC9UeXBlIC9NZXRhZGF0YQovTGVuZ3RoIDE3OTEgICAg ICA+PgpzdHJlYW0KPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJ1aHRjcnRtcWJ2aXBoc3ltY2Z4 bGNjdW0iPz48eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIj48cmRmOlJERiB4bWxu czpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPjxyZGY6 RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxl bWVudHMvMS4xLyI+PGRjOmZvcm1hdD5hcHBsaWNhdGlvbi9wZGY8L2RjOmZvcm1hdD48ZGM6Y3Jl YXRvcj48cmRmOlNlcT48cmRmOmxpIHhtbDpsYW5nPSJ4LWRlZmF1bHQiLz48L3JkZjpTZXE+PC9k YzpjcmVhdG9yPjxkYzpkZXNjcmlwdGlvbj48cmRmOkFsdD48cmRmOmxpIHhtbDpsYW5nPSJ4LWRl ZmF1bHQiLz48L3JkZjpBbHQ+PC9kYzpkZXNjcmlwdGlvbj48ZGM6dGl0bGU+PHJkZjpBbHQ+PHJk ZjpsaSB4bWw6bGFuZz0ieC1kZWZhdWx0Ij54bWwtY29tcGFyZTwvcmRmOmxpPjwvcmRmOkFsdD48 L2RjOnRpdGxlPjwvcmRmOkRlc2NyaXB0aW9uPjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIi IHhtbG5zOnBkZng9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGRmeC8xLjMvIj48cGRmeDpDb25UZVh0 LkpvYm5hbWU+eG1sLWNvbXBhcmU8L3BkZng6Q29uVGVYdC5Kb2JuYW1lPjxwZGZ4OkNvblRlWHQu VGltZT4yMDE2LTA0LTI5IDE3OjE4PC9wZGZ4OkNvblRlWHQuVGltZT48cGRmeDpDb25UZVh0LlVy bD53d3cucHJhZ21hLWFkZS5jb208L3BkZng6Q29uVGVYdC5Vcmw+PHBkZng6Q29uVGVYdC5WZXJz aW9uPjIwMTYuMDQuMTAgMjM6NTI8L3BkZng6Q29uVGVYdC5WZXJzaW9uPjxwZGZ4OklEPnhtbC1j b21wYXJlLjIwMTYtMDQtMjlUMTc6MTg6NTQrMDI6MDA8L3BkZng6SUQ+PHBkZng6UFRFWC5GdWxs YmFubmVyPlRoaXMgaXMgTHVhVGVYLCBWZXJzaW9uIGJldGEtMC45NS4wIChUZVggTGl2ZSAyMDE2 KTwvcGRmeDpQVEVYLkZ1bGxiYW5uZXI+PC9yZGY6RGVzY3JpcHRpb24+PHJkZjpEZXNjcmlwdGlv biByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIj48 eG1wOkNyZWF0ZURhdGU+MjAxNi0wNC0yOVQxNzoxODo1NCswMjowMDwveG1wOkNyZWF0ZURhdGU+ PHhtcDpDcmVhdG9yVG9vbD5MdWFUZVggKyBDb25UZVh0IE1rSVY8L3htcDpDcmVhdG9yVG9vbD48 eG1wOk1vZGlmeURhdGU+MjAxNi0wNC0yOVQxNzoxODo1NCswMjowMDwveG1wOk1vZGlmeURhdGU+ PHhtcDpNZXRhZGF0YURhdGU+MjAxNi0wNC0yOVQxNzoxODo1NCswMjowMDwveG1wOk1ldGFkYXRh RGF0ZT48L3JkZjpEZXNjcmlwdGlvbj48cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxu czpwZGY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGRmLzEuMy8iPjxwZGY6S2V5d29yZHMvPjxwZGY6 UHJvZHVjZXI+THVhVGVYLTAuOTUuMDwvcGRmOlByb2R1Y2VyPjxwZGY6VHJhcHBlZD5GYWxzZTwv cGRmOlRyYXBwZWQ+PC9yZGY6RGVzY3JpcHRpb24+PHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9 IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iPjx4bXBNTTpE b2N1bWVudElEPnV1aWQ6OWNiMTIwMGUtNDdmMy04ZGYxLWRkY2UtMTVjOGVjNmUzYjNhPC94bXBN TTpEb2N1bWVudElEPjx4bXBNTTpJbnN0YW5jZUlEPnV1aWQ6M2MxMmEwNzUtNDZjMi05NDA5LWEy NzEtYmQ4ZjIwYTY2OWUwPC94bXBNTTpJbnN0YW5jZUlEPjwvcmRmOkRlc2NyaXB0aW9uPjwvcmRm OlJERj48L3g6eG1wbWV0YT48P3hwYWNrZXQgZW5kPSJ3Ij8+CmVuZHN0cmVhbQplbmRvYmoKMTYg MCBvYmoKPDwvTGVuZ3RoIDIzICAgICAgICAvRmlsdGVyL0ZsYXRlRGVjb2RlPj4Kc3RyZWFtCnhe Y2BgYORg0GVQmMDA0ODAAQAIUAGvCmVuZHN0cmVhbQplbmRvYmoKMTcgMCBvYmoKPDwvU3VidHlw ZS9DSURGb250VHlwZTBDL0xlbmd0aCAxMzY4ICAgICAgL0ZpbHRlci9GbGF0ZURlY29kZT4+CnN0 cmVhbQp4Xn1VC0xTVxi+l7YXGQUGtdFYvffO4GtIYagMN+czOmGAm8AGTqdVLrS0tOX2lgKDIZb6 4BQoFkWQ90sGnXMmm5mRxKlNNu1G9so0asBtZFlm5lyM57Djkt1KEbbEndyce/5z/vP9//+d7+SQ hFRKkCQ5N2tHdvqb2TGpaWkmo+mFhNjtXL7VoOH9a1vRfLQAyGlEE4ghERuEnpOghVKnnMQ75ZIb cumj1/G1id1/1csWEATZHOHvz0fCEPlCcUTtk0f7J87KFxGzggiSmEssIBYRzxMTZAgZSc55StwN uaa9XHIuZxR0QmmCOj5+5SaTuZTX5WsFNiE+fsVyf7+a3ahmUzT79CabRa9jNcZcNkXNpqnZdJNN nNWxS01Gdi+n1RjyWFMem8lls1YLx1vYfN5kNVuWqdlMrc7C2ky8nhX/PGfgNBYul7UaczmeFbQc +2pWRia7xWQU2FTdPs5o4djYWJa1cByrFQTzS3FxgjVfbeLz4/JEH0ucYdLJEuffF7tlW3pmbGry ps3pGZvVQonA5pl4NpcTNDqDRf1foqfsdBNfqDEQYmOIaCKBWEmsIl4kNhJbideIPYSOECQih2IL I8L8bEqJbKKRgORaspr8LSglqE6SKOmRSqQAesJRE1oPf1K2VDSX768+eMBOg90ai93hclfTg+aS JrNKV1Bkr2L4EqGsdF55c0XL8aOuRjcNzn3c4244aD9KG/rbK/tVH3j63MeY3vbu1rZ5ImZa8USb jbyCoiVoV47SfaT+cAONb0+kydrsjuM2VXlZZbG99lCdg4G3/94mq3K5yzpVLa1NnYy41+EduwQu QZU36vIIbP9ScQvthKSy4UiXocRRXe6g3+BTDpaokpKvXt/PwE+pznZwBoYk/4oj8Sz1EhyOo/5Y BiOg8vzPfUwypJWKNbidGjvhG76quteZmFPvDwFzfD/6yDMoVYKKUKTSUwDKaXyXKi8ABfpB0MTA h9SJ98EQg2OkQwZQSeOH1HuFQF/gAS0MvEu1eIDHDwPGHxSjLBsJteMSeAl9pRzOrztQpT20g3bj UVmG03ngtMpTe6LDydTDzTIX/kXZa+vgeZuN5ztsvb0dHb20H8ULR7xwtpeEKb77NyVoA7qivLIO lK97eU8CnbU0uMIMjMY+0MzcwyPLqYqigAXdVHMfGBgoAhXMcjgCw6ZNHDZM3fgaDNHAnes52d10 6kmYm+NRYrIpPsXnKG1A6d9LL4Vj1KDjmI7Gc6fBH+IRTFGPI/eLkeHgY3BGEY8Z1POUKpBdLMHq k6DsADIOR40B6CUz8g5/ZMfhM+wvJrGnmHjLG3XxMpzl/2bPV1xA9SKaAAw0PBLcBaB0hVb3bp6Z bnFYP3pb9Y7BeMDOKG4N1RSDUlXhJGg3GGTwSLDeGiBqdJIYEYOBqcGKC6MfXjx3yq3dSWN7cNlU hd/9y+l/XGbmCWN8D3zNNxRJiEfhyk80J3O2bi/M2EWfDVZcf0zp4ukyf8Aj62YUXTN9WgvhHEoR DUNHvxlzNYAaF51fd+rwUVX3ydauyesAv/fCCFFlMT64QqQ3FUYoO0BXgR5Yi+ltNdurBNUrYLiH gQAmBj+RBE68TbWBbn0BEErp1YnTKrqDXZT6mu7bz37vv/9EFyQqCxyalsJKmASDYYzs9AxFSSZz 7wE9zProtX/KunsC0sOBFb9AT1MwFMeIFzFJppshnqApbs3MHRg1jqNkvGVKxJLA4fufkGeRSr5Y fAaIVf4nwRZV2YQ2NcE1zXVOik7JNMTJQ4A81PuML3SgsdVZ63Q665wdLrnc0y0OXU5n7fHaRnnY P2xu58cKZW5kc3RyZWFtCmVuZG9iagoxOSAwIG9iago8PC9MZW5ndGggNDMwICAgICAgIC9GaWx0 ZXIvRmxhdGVEZWNvZGU+PgpzdHJlYW0KeF6Fkk9r4zAQxe/6FLOHQHpwLTt/2oZg2CYNGDZpabIl 7M2RxllBLBnZPuTb70iyW1g2rCE4P8+b55knj7697aPv0pwwmtxzeMfGdFZgtNoWNRuN1kZ0Fep2 hyhRDtVmAW/WiD22MF7l61yr9o7EuRaXTuKg+rfoGc9Kf0nce2B8wGP089dx93GMfmy3Rpskjd7x 3F0KG3FnfVDtBRf/EQLZwA0b8DYfaBtl9AKSe845PXjRcmUqt2HD4n4ViIflSqWl7ROBkxucJSlI Jdqe/DNRUVSueX9tWqxyXRq2XEJMC6imtVc/9R2LX61Eq/QZxjdmJM2+q+sLunmAsywDiSVZU0a7 okKIXU65pKpqr7cC++o5XGsEmpc8kjCwMBKbuhBoC31GtqQQeAbLDV0ZQy3/qvPQdSqDnATDX4qh L4nfhXVGyYaMOH94yRylU0+zladJ6mk+CxRqk3Wgmac0CfQQlHNP077vKdBjqAXP6XOg4DJ3a9Db 00BPgaae6Obp0a94Kv3Ebll3bp/Zis5aCtYfrk/c5aY0fp5/bWrX5X/+wxk+YkevG/YH4FL9NQpl bmRzdHJlYW0KZW5kb2JqCjIyIDAgb2JqCjw8L0xlbmd0aCAyMiAgICAgICAgL0ZpbHRlci9GbGF0 ZURlY29kZT4+CnN0cmVhbQp4XmNgYOAQkNRkVJDJaFgQAgAJNgJ0CmVuZHN0cmVhbQplbmRvYmoK MjMgMCBvYmoKPDwvU3VidHlwZS9DSURGb250VHlwZTBDL0xlbmd0aCAyMzc5ICAgICAgL0ZpbHRl ci9GbGF0ZURlY29kZT4+CnN0cmVhbQp4Xq2We1QTVx7HJwQyoaRZlyHVZujM0NquqDzUtrZut1at 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 JwUGqW8rUAV1/DcFvp/QNxWAqm4vQVTh/0+C28W5ZSjPa6oP/LeyaKdB81TpNqBjh8JQz0Mlb1+q J0PN7lyBGVR9WsDC9Jm794uW7e8zfrFetqFck3HN+Aj/8MEODlCs8Rfw53SB+U3rL+oKnVvftGVd MS4jGwjs0Msx8XdddFrfVyiEbPC0XAxn9XKFWr5LzPtpumR107HBjF6ap27ucBOrqPLdFmhS0gZK yGQozFBlqGF7Mt0C3DQLNnh8fIxWjZsv3dAVPoKvLcSGYdglEibCs6H0XqwI03jXgf7IdXAz2iOI MCqTVqax+SrUFyG+bHB1w/Yf/MODEEYLkaBNvBCxQRujTYWw6CuBr+hbjT9AhZb4EowBH2zCUZ/G Cb/BwtAOH/bTCgkfj95kL3pNxCQkYi+Q3BMCHHEwn4WB17FYz3zDBmdrh0MYiggvNy2elB2ekJfw LEJJEEIy60NJNuGib0E1AW0LzkkMipPGrVa+YPzELVq/Aw38DRDOdpIKZW5kc3RyZWFtCmVuZG9i agoyOSAwIG9iago8PC9UeXBlL1hSZWYvSW5kZXhbMCAzMF0vU2l6ZSAzMC9XWzEgMiAxXS9Sb290 IDI3IDAgUi9JbmZvIDI4IDAgUi9JRFs8ODlDRThCOTgyOUE4QjkxMTEzQ0VFQTAzMkVBN0NBNjA+ IDw4OUNFOEI5ODI5QThCOTExMTNDRUVBMDMyRUE3Q0E2MD5dL0xlbmd0aCA4OCAgICAgICAgL0Zp bHRlci9GbGF0ZURlY29kZT4+CnN0cmVhbQp4XhXIyxFAQBCE4e592bUUzspBBsIQhZTEIDhZqFo9 h6/+6QHYACdegkRJguYwUkBMULME6bkdIG/7OeYXLKfdnpOzRkmcP3C5bHdcq7VIlYH7gx/GUwzI CmVuZHN0cmVhbQplbmRvYmoKc3RhcnR4cmVmCjg2MDkKJSVFT0YK --_004_7E62C0D86E69487090577F76580CE5E6uvanl_ Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KSWYgeW91ciBxdWVzdGlvbiBpcyBvZiBpbnRlcmVz dCB0byBvdGhlcnMgYXMgd2VsbCwgcGxlYXNlIGFkZCBhbiBlbnRyeSB0byB0aGUgV2lraSEKCm1h aWxsaXN0IDogbnRnLWNvbnRleHRAbnRnLm5sIC8gaHR0cDovL3d3dy5udGcubmwvbWFpbG1hbi9s aXN0aW5mby9udGctY29udGV4dAp3ZWJwYWdlICA6IGh0dHA6Ly93d3cucHJhZ21hLWFkZS5ubCAv IGh0dHA6Ly90ZXguYWFuaGV0Lm5ldAphcmNoaXZlICA6IGh0dHA6Ly9mb3VuZHJ5LnN1cGVsZWMu ZnIvcHJvamVjdHMvY29udGV4dHJldi8Kd2lraSAgICAgOiBodHRwOi8vY29udGV4dGdhcmRlbi5u ZXQKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18= --_004_7E62C0D86E69487090577F76580CE5E6uvanl_--