From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.io/gmane.text.pandoc/10553 Path: news.gmane.org!not-for-mail From: Jesse Rosenthal Newsgroups: gmane.text.pandoc Subject: Re: Please give the Docx reader a test drive Date: Wed, 13 Aug 2014 00:27:30 -0400 Message-ID: References: <871tsmwv2h.fsf@jhu.edu> <72E1556B-D515-4519-9E9A-20F7EBDBD240@gmail.com> Reply-To: pandoc-discuss-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Trace: ger.gmane.org 1407904078 4648 80.91.229.3 (13 Aug 2014 04:27:58 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Wed, 13 Aug 2014 04:27:58 +0000 (UTC) To: Andrew Dunning , "pandoc-discuss\@googlegroups.com" Original-X-From: pandoc-discuss+bncBDF7DMU574PBBRWSVOPQKGQEJKKAMJQ-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org Wed Aug 13 06:27:52 2014 Return-path: Envelope-to: gtp-pandoc-discuss@m.gmane.org Original-Received: from mail-ig0-f184.google.com ([209.85.213.184]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1XHQAB-0005nk-Jr for gtp-pandoc-discuss@m.gmane.org; Wed, 13 Aug 2014 06:27:52 +0200 Original-Received: by mail-ig0-f184.google.com with SMTP id uq10sf46742igb.11 for ; Tue, 12 Aug 2014 21:27:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlegroups.com; s=20120806; h=from:to:subject:in-reply-to:references:user-agent:date:message-id :mime-version:x-original-sender:x-original-authentication-results :reply-to:precedence:mailing-list:list-id:list-post:list-help :list-archive:sender:list-subscribe:list-unsubscribe:content-type; bh=WNRUEkmAZfZiAX4InNU8tOpcBkvgdZG2Ti+75Prj7O4=; b=H/5QUUb1nj5ellthlr7NauBUwLyAP7Fj3wRcLMYAT8O3HlqIQjxO12W72Y3Px4l/my Ry7m5fCE2WKOIufa5nGURi8xa9+486cpyhQYN8OIxM9SwNd6oNddySEoOqPQtBsJMGSF l2UFo0kYIFpz4GqVtg/jKd/8RM7sYMxogQLi/K990ChM0aM9P1vsZOAQXg4bb1grl5ja Gvb7PrUU+Ao6kx1U4PT7sZ9+sEcwlqhHEarzPMjw71iFYnVJsmE50Oij2qg9HeU6KQnF y38g0uI5egoA7FoDNCzJvoP6DxM0I98ME54meGrt/+JCkY+Z+1LWz6kv+2vlFIjbd9Pv BE8w== X-Received: by 10.140.25.162 with SMTP id 31mr9134qgt.9.1407904070703; Tue, 12 Aug 2014 21:27:50 -0700 (PDT) X-BeenThere: pandoc-discuss-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org Original-Received: by 10.140.89.231 with SMTP id v94ls423013qgd.14.gmail; Tue, 12 Aug 2014 21:27:50 -0700 (PDT) X-Received: by 10.236.63.67 with SMTP id z43mr730857yhc.11.1407904070305; Tue, 12 Aug 2014 21:27:50 -0700 (PDT) Original-Received: from smtpauth.johnshopkins.edu (smtpauth.johnshopkins.edu. [162.129.8.200]) by gmr-mx.google.com with ESMTPS id hq8si89065qcb.2.2014.08.12.21.27.50 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Tue, 12 Aug 2014 21:27:50 -0700 (PDT) Received-SPF: none (google.com: prvs=295d4c24c=jrosenthal-4GNroTWusrE@public.gmane.org does not designate permitted sender hosts) client-ip=162.129.8.200; X-IronPort-AV: E=Sophos;i="5.01,854,1400040000"; d="md'?scan'208";a="403531366" Original-Received: from c-69-137-43-192.hsd1.md.comcast.net (HELO localhost) ([69.137.43.192]) by ipex1.johnshopkins.edu with ESMTP/TLS/DHE-RSA-AES256-SHA; 13 Aug 2014 00:27:32 -0400 In-Reply-To: <72E1556B-D515-4519-9E9A-20F7EBDBD240-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> User-Agent: Notmuch/0.18.1+65~g9f0f30f (http://notmuchmail.org) Emacs/24.3.1 (x86_64-apple-darwin) X-Original-Sender: jrosenthal-4GNroTWusrE@public.gmane.org X-Original-Authentication-Results: gmr-mx.google.com; spf=neutral (google.com: prvs=295d4c24c=jrosenthal-4GNroTWusrE@public.gmane.org does not designate permitted sender hosts) smtp.mail=prvs=295d4c24c=jrosenthal-4GNroTWusrE@public.gmane.org Precedence: list Mailing-list: list pandoc-discuss-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org; contact pandoc-discuss+owners-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org List-ID: X-Google-Group-Id: 1007024079513 List-Post: , List-Help: , List-Archive: , List-Unsubscribe: , Xref: news.gmane.org gmane.text.pandoc:10553 Archived-At: --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Dear Andrew, Thanks so much -- this was *extremely* helpful. I haven't solved all the issues you brought up, but I've solved a number of them (I hope you don't mind, but they're on my "dunning-fixes" branch). I've attached a markdown version of the new and improved output, in case you want to compare without pulling and building. Almost all of the issues have, I think, been fixed. (Individual notes below, including why a couple probably can't be fixed.) May I ask your permission to cut out chunks of this to use for test cases? On the individual issues: > - 18/19, 1123, 1130: Not quite sure what ' class=3D"anchor">=E2=80=99 is for. Has to do with how docx does header anchors. I had been ignoring anchor spans with no id. Fixed. > - 83 to 120: Not sure if there=E2=80=99s a better way of dealing with this > list. It=E2=80=99s pretty non-standard (should be a definition list), so > probably not. I don't quite see how. It's not a list, or at least docx doesn't think it is, so it just ends up being treaated like weird paragraphs. And, unfortunately, we currently collapse tabs into spaces. That could be rethought if it's clear that tabs are used as you use them here. > - 188/89 (line in the output file): 'De uiris illustribus' italicized > in Word, but reduced to the colon; something similar happens at lines > 934 and 944. It looks as if italics are not applied if an =E2=80=98Italic= =E2=80=99 > character style is applied? I hadn't been interpreting this sort of character style before, since it usually just uses the ctrl-i italic setting. I now interpret "Italic" and "Bold". I'll keep an eye out for others to support as well. > - 191=E2=80=93205, 568=E2=80=9370, 576=E2=80=9379: A block quotation is n= ot picked up, but > that=E2=80=99s my fault for using a non-standard style name. I only bring= it > up because it seems odd that the one block quotation that was picked > up was the one that didn=E2=80=99t use my =E2=80=98Block Quotation=E2=80= =99 style. I had previously picked up "Quote" and "BlockQuote." I've now added "BlockQuotatation" to the list. > - 211, 706: Unexpected phrases italicized. I hadn't taken into account all the options for the italics tags (the tag is there, but just to tell me not to use it?) Anyway, now it should work > - 300: Adjacent styles for small capitals should perhaps be combined? Bug, plain and simple. > - 349, 376, 557, 558 (etc.): Space after a word set in small caps: > this is surely a problem in the original file and fixing it may have > issues, but it would be really neat if this could be cleaned up. Cleaned up now. This was a symptom of the above bug. > - The reader sometimes applies italics to headings (704, 880, etc.) > and sometimes doesn=E2=80=99t (it=E2=80=99s part of the paragraph style),= but I > imagine this is an inconsistency in the source document. I don't know if there's a way to solve this. The text is manually italicized, so I couldn't know that it's not a foreign word, or a book title, or something. Were it *just* the paragraph style, I think it would come out unitalicized. Thanks again, Jesse --=-=-= Content-Type: text/plain e --=-=-= Content-Type: application/octet-stream Content-Disposition: attachment; filename=collecta.md Content-Transfer-Encoding: base64 U2FtdWVsIFByZXNiaXRlcgoKTm90ZXMgZnJvbSB0aGUgU2Nob29sIG9mIFdpbGxpYW0gZGUgTW9u dGlidXMKCi0tLQoKQ29sbGVjdGEgZXggZGl1ZXJzaXMgYXVkaXRpcyBpbiBzY29sYSBtYWdpc3Ry aSBXaWxsZWxtaSBkZSBNb250ZQoKKmVkaXRlZCBmcm9tKgoKT3hmb3JkLCBCb2RsZWlhbiBMaWJy YXJ5LCA8c3BhbgpzdHlsZT0iZm9udC12YXJpYW50OnNtYWxsLWNhcHM7Ij5tczwvc3Bhbj4gQm9k bGV5IDg2MAoKKmJ5KgoKQW5kcmV3IER1bm5pbmcKCkNvbnRlbnRzCj09PT09PT09CgpQcmVmYWNl IGlpaQoKQWNrbm93bGVkZ2VtZW50cyBpdgoKQWJicmV2aWF0aW9ucyB2CgpJbnRyb2R1Y3Rpb24g dmlpCgpUaGUgU2Nob29sIG9mIFdpbGxpYW0gZGUgTW9udGlidXMgdmlpCgpTYW11ZWwgUHJlc2Jp dGVyIGFuZCBoaXMgQ29sbGVjdGEgeGlpCgpXaG8gd3JvdGUgU2FtdWVsJ3MgYm9va3M/IHh2aWlp CgpUaGUgTWFudXNjcmlwdDogT3hmb3JkLCBCb2RsZWlhbiBMaWJyYXJ5IDxzcGFuCnN0eWxlPSJm b250LXZhcmlhbnQ6c21hbGwtY2FwczsiPm1zPC9zcGFuPiBCb2RsZXkgODYwICg8c3BhbgpzdHls ZT0iZm9udC12YXJpYW50OnNtYWxsLWNhcHM7Ij4qc2MqPC9zcGFuPiAyNzIzKSB4eAoKU291cmNl cyB4eGl2CgpNZXRyZSBhbmQgUmh5bWUgeHh2aWlpCgpFZGl0b3JpYWwgUHJhY3RpY2UgeHhpeAoK Q29sbGVjdGEgZXggZGl1ZXJzaXMgYXVkaXRpcyBpbiBzY29sYSBtYWdpc3RyaSBXaWxsZWxtaSBk ZSBNb250ZQoKQmlibGlvZ3JhcGh5IFhYXAoKUHJlZmFjZQo9PT09PT09CgpbVG8gYmUgc3VwcGxp ZWQgYnkgRGF2aWQgVG93bnNlbmRdCgpcCgpBY2tub3dsZWRnZW1lbnRzCj09PT09PT09PT09PT09 PT0KClRoaXMgcHJvamVjdCBiZWdhbiBhdCBhIHN1Z2dlc3Rpb24gZnJvbSBKb3NlcGggR29lcmlu Zywgd2hvc2UgdGFjdGZ1bAphZHZpY2UgYWx3YXlzIHR1cm5zIG91dCB0byBiZSBldmVuIG1vcmUg YXN0dXRlIHRoYW4gb25lIGZpcnN0IHJlYWxpemVzLgpIZSBnZW5lcm91c2x5IHJlYWQgdGhlIHRl eHQgYXQgc2V2ZXJhbCBzdGFnZXMgb2YgaXRzIGRldmVsb3BtZW50IGFuZAptYWRlIG1hbnkgYXN0 dXRlIHN1Z2dlc3Rpb25zLiBBbGV4YW5kZXIgQW5kcsOpZSBhbmQgR3JldGkgRGlua292YS1CcnV1 bgphbHNvIGV4YW1pbmVkIHRoZSB0ZXh0IGF0IGFuIGVhcmx5IHN0YWdlIGFuZCBpbiBwYXJ0aWN1 bGFyIG9mZmVyZWQKaGVscGZ1bCBjb21tZW50cyBvbiBpbXByb3ZpbmcgdGhlIGxheW91dC4gQSBn cmFudCBmcm9tIHRoZSBTb2NpYWwKU2NpZW5jZXMgYW5kIEh1bWFuaXRpZXMgUmVzZWFyY2ggQ291 bmNpbCBvZiBDYW5hZGEgYWxsb3dlZCBtZSB0byB2aWV3CnRoZSBtYW51c2NyaXB0IGluIHBlcnNv biBpbiBPeGZvcmQuIFdoaWxlIHRoZXJlLCBKYW1lcyBXaWxsb3VnaGJ5IHdhcyBvZgpncmVhdCBo ZWxwIGluIGFjdGluZyBhcyBhIHNvdW5kaW5nIGJvYXJkIGluIG15IGF0dGVtcHRzIHRvIHdyZXN0 IGFzIG11Y2gKaW5mb3JtYXRpb24gYXMgcG9zc2libGUgZnJvbSB0aGUgbWFudXNjcmlwdDsgSmFt ZXMgQ2FybGV5IGFuZCBBbm4KSHV0Y2hpc29uIG1vc3QgZ2VuZXJvdXNseSBwcm92aWRlZCB0aGVp ciBob21lIGFzIGEgYmFzZSBmb3Igc3R1ZGllcy4KVGhhbmtzIGFyZSBhbHNvIGR1ZSB0byB0aGUg S2VlcGVyIG9mIFNwZWNpYWwgQ29sbGVjdGlvbnMgZm9yIHBlcm1pc3Npb24KdG8gY29uc3VsdCB0 aGUgbWFudXNjcmlwdCBhdCB0aGUgQm9kbGVpYW4gTGlicmFyeSBhbmQgdG8gcHVibGlzaCB0aGUK dGV4dC4gVGhlIGNvbW1lbnRzIG9mIERhdmlkIFRvd25zZW5kIGFuZCB0aGUgbWVtYmVycyBvZiB0 aGUgPHNwYW4Kc3R5bGU9ImZvbnQtdmFyaWFudDpzbWFsbC1jYXBzOyI+dG1sdDwvc3Bhbj4gZWRp dG9yaWFsIGJvYXJkIGltcHJvdmVkCnRoZSBib29rIGltbWVuc2VseS4gTXkgd2lmZSBTdXNhbiBC aWx5bnNreWogRHVubmluZyBzYXcgdG8gaXQgdGhhdCBJCnJlbWVtYmVyZWQgdG8gZWF0IGluIHRo ZSBtaWRzdCBvZiBjaGVja2luZyByZWZlcmVuY2VzLCBhbmQgaW4gaGVyCmZhdGhvbWxlc3MgcGF0 aWVuY2Ugc3BlbnQgbWFueSBob3VycyBkaXNjdXNzaW5nIG1lZGlldmFsIGhpc3RvcnksCnR5cG9n cmFwaHksIGFuZCBwb2ludHMgb2YgTGF0aW4gZ3JhbW1hci4KCjxzcGFuIHN0eWxlPSJmb250LXZh cmlhbnQ6c21hbGwtY2FwczsiPmEubi5qLmQuPC9zcGFuPgoKXAoKQWJicmV2aWF0aW9ucwo9PT09 PT09PT09PT09Cgo8c3BhbiBzdHlsZT0iZm9udC12YXJpYW50OnNtYWxsLWNhcHM7Ij5jY2NtPC9z cGFuPiBDb3JwdXMgQ2hyaXN0aWFub3J1bSwKQ29udGludWF0aW8gTWVkaWFldmFsaXMuIFR1cm5o b3V0OiBCcmVwb2xzLCAxOTY2LS0uCgo8c3BhbiBzdHlsZT0iZm9udC12YXJpYW50OnNtYWxsLWNh cHM7Ij5jY3NsPC9zcGFuPiBDb3JwdXMgQ2hyaXN0aWFub3J1bSwKU2VyaWVzIExhdGluYS4gVHVy bmhvdXQ6IEJyZXBvbHMsIDE5NTMtLS4KCjxzcGFuIHN0eWxlPSJmb250LXZhcmlhbnQ6c21hbGwt Y2FwczsiPmNzZWw8L3NwYW4+IENvcnB1cyBzY3JpcHRvcnVtCmVjY2xlc2lhc3RpY29ydW0gTGF0 aW5vcnVtLiBWaWVubmE6IDE4NjYtLS4KCjxzcGFuIHN0eWxlPSJmb250LXZhcmlhbnQ6c21hbGwt Y2FwczsiPipkbWxicyo8L3NwYW4+IFIuRS4gTGF0aGFtLCBELlIuCkhvd2xldHQsIGFuZCBSLksu IEFzaGRvd25lLCBlZHMuICpEaWN0aW9uYXJ5IG9mIE1lZGlldmFsIExhdGluIGZyb20KQnJpdGlz aCBTb3VyY2VzKi4gT3hmb3JkOiBQdWJsaXNoZWQgZm9yIHRoZSBCcml0aXNoIEFjYWRlbXkgYnkg T3hmb3JkClVuaXZlcnNpdHkgUHJlc3MsIDE5NzUtLTIwMTMuCgoqR2xvc2EqIE1hcmdhcmV0IFQu IEdpYnNvbiBhbmQgS2FybGZyaWVkIEZyb2VobGljaCwgZWRzLiAqQmlibGlhIGxhdGluYQpjdW0g Z2xvc3NhIG9yZGluYXJpYTogRmFjc2ltaWxlIHJlcHJpbnQgb2YgdGhlIGVkaXRpbyBwcmluY2Vw cywgQWRvbHBoClJ1c2NoIG9mIFN0cmFzc2J1cmcgMTQ4MC84MSouIDQgdm9scy4gVHVybmhvdXQ6 IEJyZXBvbHMsIDE5OTIuXAoqR2xvc2EgaW50ZXJsLiogcmVmZXJzIHRvIHRoZSBpbnRlcmxpbmVh ciBnbG9zczsgKkdsb3NhIG1hcmcuKiB0byB0aGUKbWFyZ2luYWwuCgo8c3BhbiBzdHlsZT0iZm9u dC12YXJpYW50OnNtYWxsLWNhcHM7Ij5wbDwvc3Bhbj4gUGF0cm9sb2dpYWUgY3Vyc3VzCmNvbXBs ZXR1cywgc2VyaWVzIExhdGluYS4gMjIxIGluIDIyMiB2b2xzLiBQYXJpczogTWlnbmUsIDE4NDEt LTY1LgoKUm9sbHMgU2VyaWVzIFJlcnVtIEJyaXRhbm5pY2FydW0gbWVkaWkgYWV2aSBzY3JpcHRv cmVzLiA5OSBpbiAyNTMgdm9scy4KTG9uZG9uOiAxODU4LS0xOTExLgoKPHNwYW4gc3R5bGU9ImZv bnQtdmFyaWFudDpzbWFsbC1jYXBzOyI+KnNjKjwvc3Bhbj4gUi5XLiBIdW50LCBGYWxjb25lcgpN YWRhbiwgYW5kIFAuRC4gUmVjb3JkLiAqQSBTdW1tYXJ5IENhdGFsb2d1ZSBvZiBXZXN0ZXJuIE1h bnVzY3JpcHRzIGluCnRoZSBCb2RsZWlhbiBMaWJyYXJ5IGF0IE94Zm9yZCouIDcgaW4gOCB2b2xz LiBPeGZvcmQ6IENsYXJlbmRvbiBQcmVzcywKMTg5NS0tMTk1My4KClZ1bGcuIFJvYmVydCBXZWJl ciBhbmQgUm9nZXIgR3J5c29uLCBlZHMuICpCaWJsaWEgU2FjcmEgaXV4dGEgdnVsZ2F0YW0KdmVy c2lvbmVtKi4gNXRoIGVkLiBTdHV0dGdhcnQ6IERldXRzY2hlIEJpYmVsZ2VzZWxsc2NoYWZ0LCAy MDA3LgoKV29ya3Mgb2YgU2FtdWVsIFByZXNiaXRlcgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CgoqQWQgaGFiZW5kYW0gbWVtb3JpYW0gQ29sbGVjdGEgYWQgaGFiZW5kYW0gbWVtb3JpYW0gcXVv cnVtZGFtIHV0aWxpdW0gaW4Kc2FjcmEgc2NyaXB0dXJhKgoKKkV4IGRpdWVyc2lzIGF1ZGl0aXMq ICpDb2xsZWN0YSBleCBkaXVlcnNpcyBhdWRpdGlzIGluIHNjb2xhIG1hZ2lzdHJpCldpbGxlbG1p IGRlIE1vbnRlKgoKKkV4IHNwZWN1bG8gY3VtIHVlcnNpYnVzIENvbGxlY3RhIGV4IHNwZWN1bG8g YmVhdGkgR3JlZ29yaWkgY3VtCnVlcnNpYnVzKgoKKkV4IHNwZWN1bG8gc2luZSB1ZXJzaWJ1cyBD b2xsZWN0YSBleCBzcGVjdWxvIGJlYXRpIEdyZWdvcmlpIHNpbmUKdWVyc2lidXMqCgoqU3VwZXIg cHNhbG1vcyBDb2xsZWN0YSBleCBhdWRpdGlzIHN1cGVyIHBzYWxtb3MgaW4gc2NvbGEgbWFnaXN0 cmkKV2lsbGVsbWkgZGUgTW9udGUqCgpPdGhlciBBYmJyZXZpYXRpb25zCi0tLS0tLS0tLS0tLS0t LS0tLS0KCiphZGQuIGFkZGl0aW9uL2FkZGVkKgoKKmNvcnIuIGNvcnJlY3Rvci9jb3JyZWN0aW9u L2NvcnJlY3RlZCoKCiplcmFzLiBlcmFzZWQvZXJhc3VyZSoKCipmb2wuL2ZvbHMuIGZvbGlvL2Zv bGlvcyoKCiptYXJnLiBtYXJnaW4qCgo8c3BhbiBzdHlsZT0iZm9udC12YXJpYW50OnNtYWxsLWNh cHM7Ij5tczwvc3Bhbj4gbWFudXNjcmlwdAoKKm9tLiBvbWl0dGVkKgoKKnN1YnN0Liogc3Vic3Rp dHV0ZWQKCkVkaXRvcmlhbCBzaWducwotLS0tLS0tLS0tLS0tLS0KCuKfqCDin6kgc2lnbmFsIGxl dHRlcnMgc3VwcGxpZWQgYnkgdGhlIGVkaXRvcgoKXCpcKlwqIGluZGljYXRlIHVucmVhZGFibGUg bGV0dGVycwoKXAoKSW50cm9kdWN0aW9uCj09PT09PT09PT09PQoKJ0hlYyBzdW50IGNvbGxlY3Rh IGV4IGRpdWVyc2lzIGF1ZGl0aXMgaW4gc2NvbGEgbWFnaXN0cmkgV2lsbGVsbWkgZGUKTW9udGUn IC0tICdUaGVzZSBhcmUgY29sbGVjdGVkIGZyb20gdmFyaW91cyB0aGluZ3MgaGVhcmQgaW4gdGhl IHNjaG9vbApvZiBtYXN0ZXIgV2lsbGlhbSBkZSBNb250aWJ1cycuIFRoZSBoZWFkaW5nIHRvIHRo aXMgd29yayAoY2FsbGVkICpFeApkaXVlcnNpcyBhdWRpdGlzKiBoZXJlYWZ0ZXIpIGV4cGxhaW5z IG11Y2ggYWJvdXQgdGhlIHdvcmsncyBvcmlnaW4sCnVuaXF1ZWx5IHByZXNlcnZlZCBpbiBPeGZv cmQsIEJvZGxlaWFuIExpYnJhcnksIDxzcGFuCnN0eWxlPSJmb250LXZhcmlhbnQ6c21hbGwtY2Fw czsiPm1zPC9zcGFuPiBCb2RsZXkgODYwLCB0aG91Z2ggaXRzCmNvbXBpbGVyLCBTYW11ZWwgUHJl c2JpdGVyLCByZW1haW5zIG9ic2N1cmUuIEl0IGNvbnNpc3RzIG9mIGEgY29sbGVjdGlvbgpvZiBs ZXNzb25zIG9uIGEgd2lkZSByYW5nZSBvZiBjb25jZXJucyByZWdhcmRpbmcgdGhlIHByYWN0aWNh bAphcHBsaWNhdGlvbiBvZiB0aGVvbG9neSwgaW50ZXJzcGVyc2VkIHdpdGggYSBzZXJpZXMgb2Yg cGxheWZ1bCB2ZXJzZXMgdG8KYWlkIG1lbW9yaXphdGlvbiBvZiB0aGUgbWF0ZXJpYWwuCgpUaGUg U2Nob29sIG9mIFdpbGxpYW0gZGUgTW9udGlidXMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCgpXaWxsaWFtIGRlIE1vbnRpYnVzIHdhcyBib3JuIGluIExpbmNvbG4sIGFuZCwgbGlr ZSBtb3N0IGxlYXJuZWQKRW5nbGlzaG1lbiBvZiBoaXMgZGF5LCBzdHVkaWVkIHRoZW9sb2d5IGlu IFBhcmlzLCB3aGVyZSBQZXRlciBDb21lc3Rvcgp3YXMgYW1vbmcgaGlzIHRlYWNoZXJzLCBhbmQg aGUgbWV0IGJvdGggQWxleGFuZGVyIE5lY2thbSBhbmQgR2VyYWxkIG9mCldhbGVzLiBJbiB0aGUg MTE4MHMsIEJpc2hvcCBIdWdoIGludml0ZWQgaGltIHRvIHRlYWNoIGF0IHRoZSBjYXRoZWRyYWwK c2Nob29sIG9mIExpbmNvbG4sIHdoZXJlIGhlIHdhcyBjaGFuY2VsbG9yIGZyb20gYXQgbGVhc3Qg MTE5NCB1bnRpbCBoaXMKZGVhdGggaW4gQXByaWwgMTIxMyBpbiBTY290bGFuZCwgd2hpbGUgRW5n bGFuZCB3YXMgdW5kZXIgaW50ZXJkaWN0LlteMV0KSGUgd2FzIGEgYmVsb3ZlZCB0ZWFjaGVyLCBh bmQgTGluY29sbidzIGx1bWluYXJ5IHVudGlsIHRoZSByaXNlIG9mClJvYmVydCBHcm9zc2V0ZXN0 ZS4gVGhlIHNpeHRlZW50aC1jZW50dXJ5IGFudGlxdWFyeSBKb2huIExlbGFuZCBwcm92aWRlcwph IHN1Y2NpbmN0IGFuZCBjb2xvdXJmdWwgZGVzY3JpcHRpb24gb2YgaGlzIHdvcmsgaW4gKkRlIHVp cmlzCmlsbHVzdHJpYnVzOioKCj4gR3VsaWVsbXVzIE1vbnRhbnVzLCB0aGVvbG9naWNhZSBjb2du aXRpb25pcyBwcm9mZXNzb3IsIGludGVyIGNhbm9uaWNvcwo+IHN1cHJlbWFlIExpbmRpb3J1bSB1 cmJpcyBjZWxlYmVycmltdXMgdWl4aXQsIGV0IGNhbmNlbGxhcmlpIGluIGVhZGVtCj4gZWNjbGVz aWEgZGlnbml0YXRlIGZ1bmN0dXMgZXN0LiBFcmF0IHNhZWN1bHVtIGluIHF1b2QgaW5jaWRpdCBz cGlub3Npcwo+IHNvcGhpc3RhcnVtIGFyZ3V0aWlzIG1pc2VycmltZSBvYm5veGl1bTsgaW50ZXIg cXVhcyB0YW1lbiBpbGxlIGl0YQo+IGVsdWN0YXR1cyBlc3QgZGlmZmljdWx0YXRlcyB1dCwgc2kg bm9uIGVsb3F1ZW50aWFtIHByb2ZsdWVudGVtIGlsbGFtLAo+IGF0IG5lcnVvcyBpbnRlcmltIGV0 IHBvbmR1cyByZXJ1bSBzaWJpIGNvbnF1aXNpdWVyaXQsIGFjIGFsaWlzIHRhbnF1YW0KPiBwZXIg bWFudXMgc3R1ZGlvc2UgdHJhZGlkZXJpdC4KCj4gKldpbGxpYW0gZGUgTW9udGlidXMsIGEgbW9z dCBmYW1vdXMgdGVhY2hlciBvZiB0aGVvbG9neSwgbGl2ZWQgYW1vbmcKPiB0aGUgY2Fub25zIG9m IHRoZSBjaGllZiBjaXR5IG9mIExpbmNvbG5zaGlyZSBhbmQgd2FzIGNoYW5jZWxsb3IgaW4gdGhl Cj4gc2FtZSBjaHVyY2guIFRoZSBhZ2UgaW4gd2hpY2ggaGUgbGl2ZWQgd2FzIHNvcmVseSBwbGFn dWVkIGJ5IHRoZQo+IHRob3JueSBzdWJ0bGV0aWVzIG9mIHRoZSBzb3BoaXN0cywgYnV0IGhlIHN1 cm1vdW50ZWQgdGhlc2UKPiBkaWZmaWN1bHRpZXMgc28gd2VsbCB0aGF0IGhlIGdhaW5lZCBmb3Ig aGltc2VsZiwgaWYgbm90IHRydWx5IGZsb3dpbmcKPiBlbG9xdWVuY2UsIHRoZW4gYXQgbGVhc3Qg dGhlIHN0eWxpc3RpYyB2aWdvdXIgYW5kIHN1YnN0YW5jZSBvZiB0aGluZ3MsCj4gd2hpY2ggaGUg c3R1ZGlvdXNseSBwYXNzZWQgc3RyYWlnaHQgb24gdG8gb3RoZXJzLipbXjJdCgpLZWVwaW5nIGlu IG1pbmQgTGVsYW5kJ3MgdGVuZGVuY3kgdG8gbGlvbml6ZSBldmVyeSBFbmdsaXNoIGF1dGhvciB0 aGF0CnByZWNlZGVkIGhpbSwgaGlzIGNvcmUgcG9pbnQgaGFzIG5vdCBiZWVuIG92ZXJ0dXJuZWQg YnkgbW9kZXJuCnNjaG9sYXJzaGlwOiBXaWxsaWFtIHdhcyBvbmUgb2YgdGhlIHByZS1lbWluZW50 IHRlYWNoZXJzIG9mIGhpcyBkYXksIGFuZAp0aG91Z2ggaGlzIHdyaXRpbmdzIGFyZSBub3QgaGln aCBsaXRlcmF0dXJlLCB0aGV5IGFyZSBldmlkZW5jZSBvZiBhCmNyZWF0aXZlIGFuZCBoaWdobHkg ZWZmZWN0aXZlIHBlZGFnb2dpY2FsIHByb2dyYW1tZS4gVGhlIHByZXNlbnQgd29yayBpcwpvbmUg b2YgdGhlIGltcG9ydGFudCB3aXRuZXNzZXMgdG8gd2hhdCBXaWxsaWFtIHBhc3NlZCBvbiB0byBo aXMKc3R1ZGVudHMsIGFuZCBvZiB0aGUgY2F0aGVkcmFsIHNjaG9vbHMgaW4gZ2VuZXJhbDsgYWx0 aG91Z2ggdGhlcmUgYXJlIGEKbnVtYmVyIG9mIHN0dWRlbnQgKnJlcG9ydGF0aW9uZXMqIGZyb20g UGFyaXMgYW5kIHRoZSBsYXRlciB1bml2ZXJzaXRpZXMsCnRob3NlIGZyb20gY2F0aGVkcmFsIHNj aG9vbHMgYXJlIG1vcmUgc2NhcmNlLCBhbmQgdGhvc2UgcmVwcmVzZW50aW5nCnNvbWV0aGluZyBv dGhlciB0aGFuIGEgc3RyYWlnaHRmb3J3YXJkIGxlY3R1cmUgYXJlIGV2ZW4gbW9yZSB1bnVzdWFs LgoKKkV4IGRpdWVyc2lzIGF1ZGl0aXMqIGlzIHN0cnVjdHVyZWQgdW5kZXIgYSBzZXJpZXMgb2Yg aGVhZGluZ3MsIHRvIGVhY2gKb2Ygd2hpY2ggaXMgYXR0YWNoZWQgYSBwb2VtIG9mIG9uZSB0byBl bGV2ZW4gbGluZXMsIHdpdGggYSBjb21tZW50YXJ5IHRvCmV4cGxhaW4gaXRzIGNvbnRlbnRzLiBT aXggb2YgdGhlc2UgcG9lbXMgKDIsIDQsIDUsIDYsIDE4LCAzNCkgYWxzbwphcHBlYXIgaW4gV2ls bGlhbSBkZSBNb250aWJ1cydzIHNpbWlsYXIgd29yayAqVmVyc2FyaXVzLCogd2hlcmUgdGhleQpo YXZlIGEgbXVjaCBzcGFyc2VyIGNvbW1lbnRhcnkuIEluIGJvdGggY2FzZXMsIGl0IGFwcGVhcnMg dGhhdCB0aGUgcG9lbXMKYXJlIGludGVuZGVkIHRvIGJlIG1lbW9yaXplZCBpbiBvcmRlciB0byBs ZWFybiBzb21ldGhpbmcgYWJvdXQgdGhlCnN1YmplY3QgYXQgaGFuZC4gTWFueSBzcGVjaWZpY2Fs bHkgZGlyZWN0IHRoaXM6ICdtZW1vcmF0bycgKDAwMCwgMDAwLAowMDApOyAnY29tbWVtb3JhdG8n ICgwMDApOyAnbWVtb3JhJyAoMDAwLCAwMDAsIDAwMCksICdwb3RlcmlzIHJlbWluaXNjaScKKDAw MCkuIFZlcnNlIHdhcyB3aWRlbHkgdXNlZCBhcyBhIGRpZGFjdGljIHRvb2wgaW4gdGhpcyBwZXJp b2QsIGFzIG90aGVyCnNjaG9sYXJzIGhhdmUgYWxyZWFkeSBkaXNjdXNzZWQgaW4gZGV0YWlsLlte M10KCkdvZXJpbmcgaGFzIHByb3Bvc2VkIHRoYXQgdGhlIGNvbnRleHQgb2YgKkV4IGRpdWVyc2lz IGF1ZGl0aXMqIHdhcyB0aGF0Cm9mIHRoZSBzY2hvbGFzdGljICpjb2xsYXRpb25lcyogb3IgKnJl cGV0aXRpb25lcy4qW140XSBUaGVzZSBvY2N1cnJlZCBhdAp0aGUgZW5kIG9mIHRoZSBzY2hvb2wg ZGF5LCBhbmQgc2VlbSB0byBoYXZlIGludm9sdmVkIGEgZGlzY3Vzc2lvbiBvZgp3aGF0IGhhZCBw cmV2aW91c2x5IGJlZW4gc3RhdGVkIGJ5IHRoZSBtYXN0ZXIsIHJhdGhlciBsaWtlIGEgbW9kZXJu CnN0dWRlbnQncyBzZW1pbmFyLlteNV0gVGhlIHByZXNlbnQgdGV4dCBoYXMgbm90aGluZyBvZiBk ZWJhdGUsIHRob3VnaCBpdApkb2VzIGluY2x1ZGUgbWFueSBwYXNzYWdlcyByZXBlYXRlZCBmcm9t IFdpbGxpYW0gZGUgTW9udGlidXMncyBsZWN0dXJlcwpvbiB0aGUgUHNhbG1zIHByZXNlcnZlZCBi eSBTYW11ZWwgaW4gKkNvbGxlY3RhIGV4IGF1ZGl0aXMgc3VwZXIgcHNhbG1vcyoKKGhlcmVhZnRl ciAqU3VwZXIgcHNhbG1vcyopKiwqIGJ1dCBpbiBhIGRpZmZlcmVudCBjb250ZXh0LApyZWNhcGl0 dWxhdGluZyB0aGUgbWF0ZXJpYWwgb24gaXRzIG93biB0ZXJtcyByYXRoZXIgdGhhbiBhcyBhIG1l YW5zIG9mCnVuZGVyc3RhbmRpbmcgYW5vdGhlciB0ZXh0LiBUaGUgc3R5bGUgb2YgdGhlIGNvbW1l bnRhcnkgaXMgYWRhcHRlZCwKaG93ZXZlciwgYW5kIGluIGEgZm9ybWF0IHJlbWluaXNjZW50IGlu IHNvbWUgd2F5cyBvZiBBbGV4YW5kZXIgTmVja2FtJ3MKKlNhY2VyZG9zIGFkIGFsdGFyZSwqIHRo ZSBhdXRob3IgcHJvdmlkZXMgaGlzIG93biwgc2xpZ2h0bHkgZGVuc2UgdGV4dAphcyBhIHN0YXJ0 aW5nIHBvaW50IGZvciBhbiBhY2Nlc3NpYmxlIGRpc2N1c3Npb24uW142XQoKVW5saWtlIHdoYXQg b25lIG1pZ2h0IGV4cGVjdCBmcm9tIGEgbm90ZWJvb2ssIHRoaXMgaXMgYSB2ZXJ5IHBvbGlzaGVk CnRleHQsIGFuZCBpdCBtYXkgaGF2ZSBlaXRoZXIgYmVlbiBjb3BpZWQgZnJvbSB3cml0dGVuIG5v dGVzIGJlbG9uZ2luZyB0bwpXaWxsaWFtIG9yIHJlY2VpdmVkIGhpcyBhcHByb3ZhbCwgYXMgb3Ro ZXIgdGVhY2hlcnMgYXJlIGtub3duIHRvIGhhdmUKZG9uZSBvbiBvY2Nhc2lvbiBmb3Igc3R1ZGVu dCByZXBvcnRlcnMuIE11Y2ggYXMgdGhlIHRpdGxlIG1pZ2h0IGxlYWQgdXMKdG8gdGhpbmsgb2Yg YSBjbGVhbmVkLXVwIHZlcnNpb24gb2YgYSBzdHVkZW50J3MgbGVjdHVyZSBub3RlcywgdGhlIHRl eHQKaXRzZWxmIGluZGljYXRlcyBhIHdyaXR0ZW4gcmF0aGVyIHRoYW4gYW4gb3JhbCB0cmFuc21p c3Npb24uIEZvciB0aGUgc2l4CnBvZW1zIHRoYXQgYWxzbyBhcHBlYXIgaW4gV2lsbGlhbSdzICpW ZXJzYXJpdXMqLCBpdHMgdGV4dCBpcyBqdXN0IGFzCmdvb2QgYXMgd2hhdCBjb21lcyB0aHJvdWdo IHRoZSByZXN0IG9mIHRoZSBtYW51c2NyaXB0IHRyYWRpdGlvbi4gVGhlCnN0eWxlIG9mIHRoZSB2 ZXJzZXMgaXMgcXVpdGUgY29uc2lzdGVudCB0aHJvdWdob3V0LCB3aXRoIHRoZSBleGNlcHRpb24K b2Ygbm8uIDU0LCB3aGljaCBpcyBwcm9iYWJseSBieSBTYW11ZWw7IGEgbWl4dHVyZSBvZiByaHlt aW5nIHNjaGVtZXMgYXJlCnVzZWQgaGVyZSB0aGF0IGlzIGNvbnNpc3RlbnQgd2l0aCBTYW11ZWwn cyBvdGhlciB3b3JrIChhcyBub3RlZCBpbiBNZXRyZQphbmQgUmh5bWUsIGJlbG93KSwgYW5kIHRo ZSBzdHlsZSBvZiB0aGUgY29tbWVudGFyeSBpbiB0aGlzIHNlY3Rpb24gaXMKcXVpdGUgZGlmZmVy ZW50IGZyb20gdGhlIHJlc3Qgb2YgdGhlIHdvcmssIHdyaXR0ZW4gYXMgb3V0bGluZXMgb3JnYW5p emVkCnVzaW5nIHNjaGVtYXRpYyAqZGlzdGluY3Rpb25lcyogcmF0aGVyIHRoYW4gZm9ybWFsIHBy b3NlLlteN10KQ29udmVyc2VseSwgaXQgc2VlbXMgc2FmZSB0byBhc3N1bWUgdGhhdCB0aGUgdmVy c2VzIGZvdW5kIGhlcmUgdGhhdCBkbwpub3QgYXBwZWFyIGluICpWZXJzYXJpdXMqIGFyZSBub3Qg ZnJvbSBTYW11ZWwsIGZvciBlbHNld2hlcmUgaGUKZnJlcXVlbnRseSB3cml0ZXMgbG9uZ2VyIHBv ZW1zIHRoYW4gdGhvc2UgZm91bmQgaW4gKkV4IGRpdWVyc2lzIGF1ZGl0aXMqCmFuZCBicmVha3Mg dGhlbSB1cCBpbnRvIHNtYWxsZXIgc2VjdGlvbnMgd2l0aCBwYXJhcGggbWFya3MgKMK2KSwgYSBk ZXZpY2UKbmV2ZXIgdXNlZCBpbiB0aGUgcHJlc2VudCB3b3JrLgoKVGhlIHN0eWxlIG9mIHRoZSBj b21tZW50YXJ5IGZvdW5kIGluICpWZXJzYXJpdXMqIGlzIHJhdGhlciBkaWZmZXJlbnQKZnJvbSB3 aGF0IGlzIGZvdW5kIGhlcmU7IGl0IGlzIHRodXMgbW9yZSBkaWZmaWN1bHQgdG8gYXR0cmlidXRl IHRoaXMKZGlyZWN0bHkgdG8gV2lsbGlhbS4gTm9uZXRoZWxlc3MsIGl0IGlzIHVubGlrZWx5IHRo YXQgaXQgc2ltcGx5CnJlcHJlc2VudHMgU2FtdWVsJ3MgbWVtb3JpZXMgYWJvdXQgd2hhdCB3YXMg c2FpZCBhYm91dCB0aGUgbWF0ZXJpYWwsIGZvcgp0aGVyZSBhcmUgYSBudW1iZXIgb2YgcGFzc2Fn ZXMgdGhhdCBhcHBlYXIgaW4gdGhlIHNhbWUgd29yZHMgaW4gKlN1cGVyCnBzYWxtb3MqLCBqdXN0 IGRpZmZlcmVudCBlbm91Z2ggaW4gbWFueSBjYXNlcyB0byBwcmVjbHVkZSBkaXJlY3QKY29weWlu Zywgd2hpbGUgdGhlcmUgYXJlIG90aGVyIHBhc3NhZ2VzIG9yaWdpbmF0aW5nIHdpdGggUGV0ZXIg TG9tYmFyZCwKR3JhdGlhbiwgYW5kIHRoZSAqR2xvc2EqIHRoYXQgc2VlbSB0byBoYXZlIGJlZW4g Y29waWVkIGZyb20gdGhlc2Ugd29ya3MKZGlyZWN0bHkuIFRoaXMgY291bGQgZWl0aGVyIGluZGlj YXRlIHRoYXQgU2FtdWVsIGNhcmVmdWxseSBhc3NlbWJsZWQgdGhlCm1hdGVyaWFsIGZyb20gdmFy aW91cyBzb3VyY2VzLCBvciB0aGF0IGhlIGhhZCBhIHNvdXJjZSBmcm9tIFdpbGxpYW0gZnJvbQp3 aGljaCBoZSBjb3VsZCBjb3B5IGRpcmVjdGx5OyBwZXJoYXBzIGl0IHdhcyBhIG1peHR1cmUgb2Yg Ym90aC4gVGhlCm9yZGVyIG9mIHRoZSB2YXJpb3VzIHN1YmplY3RzIGRpc2N1c3NlZCBpbiB0aGUg Y29sbGVjdGlvbiBpcyBub3QKZW50aXJlbHkgcmFuZG9tLCB0aG91Z2ggaXQgZG9lcyBub3QgaGF2 ZSB0aGUgc29ydCBvZiBvcmdhbml6YXRpb25hbApzY2hlbWUgdGhhdCBXaWxsaWFtIGRlIE1vbnRp YnVzIG1pZ2h0IGhhdmUgYXBwbGllZCB0byBpdCBpZiBoZSBoYWQKcHVibGlzaGVkIGl0IGhpbXNl bGYuIEhpcyAqVmVyc2FyaXVzKiBpcyBvcmdhbml6ZWQgdW5kZXIgYW4gYWxwaGFiZXRpY2FsCnNj aGVtZSwgd2hpbGUgaGlzICpOdW1lcmFsZSogZm9sbG93cyBhIG51bWVyaWNhbCBzY2hlbWUuICpF eCBkaXVlcnNpcwphdWRpdGlzKiBiZWFycyBtb3JlIHJlc2VtYmxhbmNlIHRvIHRoZSBvcmdhbml6 YXRpb24gb2YgYSB3b3JrIHRoYXQgaGFzIGEKbnVtYmVyIG9mIHBhcmFsbGVscywgUGV0ZXIgdGhl IENoYW50ZXIncyAqVmVyYnVtIGFkYnJldWlhdHVtKiwgd2hpY2gKZm9sbG93cyBzb21lIGxvZ2lj IGluIHRoZSBwcm9ncmVzc2lvbiBvZiBpdHMgc3ViamVjdHMgYnV0IGhhcyBubyBzdHJpY3QKb3Jn YW5pemF0aW9uYWwgc2NoZW1lLgoKVGhlIHZlcnNlcyByZWNvcmRlZCBpbiAqRXggZGl1ZXJzaXMg YXVkaXRpcyogYXJlIG5vdCBhcyB1dGlsaXRhcmlhbiBhcwpzb21lIG90aGVyIGxpdGVyYXR1cmUg ZnJvbSB0aGUgcGVyaW9kIGRlc2lnbmVkIHRvIGFpZCBpbiBsZWFybmluZywgc29tZQpvZiB3aGlj aCBzaW1wbHkgY2Fubm90IGJlIHVuZGVyc3Rvb2Qgd2l0aG91dCBhZGRpdGlvbmFsIHRleHRzLiBT b21lCnZlcnNpZmljYXRpb25zIG9mIHRoZSBHb3NwZWwsIGZvciBpbnN0YW5jZSwgc2ltcGx5IGNy YW1tZWQgdG9nZXRoZXIKcmVsZXZhbnQgd29yZHMgYW5kIHBocmFzZXMgaW50byBhIGhleGFtZXRl ciBsaW5lLCBhbmQgYXJlIGVudGlyZWx5CmluY29tcHJlaGVuc2libGUgd2l0aG91dCBrbm93bGVk Z2Ugb2YgdGhlIGJpYmxpY2FsIHRleHQuW144XSBFdmVuIGhlcmUsCmhvd2V2ZXIsIHRoZSB2ZXJz ZXMgY2Fubm90IGNvbXBsZXRlbHkgc3RhbmQgb24gdGhlaXIgb3duIGR1ZSB0byB0aGUgdXNlCm9m IG1uZW1vbmljcyB0aGF0IGFyZSBleHBsYWluZWQgaW4gdGhlIGNvbW1lbnRhcnkuW145XSBFdmVy eSBtb2Rlcm4Kc3R1ZGVudCBpcyBmYW1pbGlhciB3aXRoIHRoZSBzZXF1ZW5jZSAnd2hvLCB3aGF0 LCB3aGVuLCB3aGVyZSwgd2h5LApob3cnOiBpdHMgbWVkaWV2YWwgZm9ybSAtLSAncXVpZCwgY3Vp LCBjdXIsIHF1b21vZG8sIHF1YW5kbywgcXVhbnR1bScKKDEyLiAwMDAsIGxpdGVyYWxseSAnd2hh dCwgdG8gd2hvbSwgd2h5LCBob3csIHdoZW4sIGhvdyBtdWNoJykgLS0gaXMKaGVyZSB1c2VkIGZv ciByZW1lbWJlcmluZyB0aGUgcHVycG9zZSBvZiB3b3JrcyBvZiBjaGFyaXR5LlteMTBdIE1vcmUK Y29tbW9uIGlzIHRoZSB1c2Ugb2YgYWNyb255bXMuIFRoZXNlIGFyZSB0eXBpY2FsbHkgaW1wZXJh dGl2ZXMgd2l0aCBhCnZlcnkgZGlyZWN0IGFjdGlvbiBpbXBsaWVkIChlLmcuIDxzcGFuCnN0eWxl PSJmb250LXZhcmlhbnQ6c21hbGwtY2FwczsiPnNjb3BlIGRvY2VzPC9zcGFuPiwgJ2ludmVzdGln YXRlLAp0ZWFjaCcsIDI2LjAwMCksIG9yIHNvbWV0aW1lcyBub25zZW5zZS13b3JkcyB3aXRoIGEg Y2F0Y2h5IHNvdW5kICg8c3BhbgpzdHlsZT0iZm9udC12YXJpYW50OnNtYWxsLWNhcHM7Ij5jaW0g Y2lzc2V0IG5lcnZvPC9zcGFuPiwgMTYuMDAwKSB0bwptZW1vcml6ZSBhc3BlY3RzIG9mIHRoZSBz dWJqZWN0IGF0IGhhbmQuIFRoZXNlIGFyZSBzb21ldGltZXMgdmVyeSB3ZWxsCmludGVncmF0ZWQg d2l0aCB0aGUgc3ViamVjdCBtYXR0ZXI6IHVuZGVyIDxzcGFuCnN0eWxlPSJmb250LXZhcmlhbnQ6 c21hbGwtY2FwczsiPnNjaW5kZTwvc3Bhbj4gKCd0ZWFyJyBvciAnZGl2aWRlJywKMTcuMDAwKSwg Zm9yIGluc3RhbmNlLCBpcyBwbGFjZWQgdGhlIHZhcmlvdXMgY2F1c2VzIGZvciB3aGljaCBhIG1h cnJpYWdlCmNhbiBiZSBkaXNzb2x2ZWQuW14xMV0gSXQgaXMgYWxzbyBjb21tb24gdGhyb3VnaG91 dCB0aGUgdGV4dCB0byB1c2UKbnVtYmVycyBhcyBhIG1uZW1vbmljIGRldmljZSwgdGhlIGNlbnRy YWwgZmVhdHVyZSBvZiBXaWxsaWFtIGRlCk1vbnRpYnVzJ3MgTnVtZXJhbGUuW14xMl0KCkFsb25n IHdpdGggaXRzIGNvbnRleHQgaW4gbWVkaWV2YWwgbWVtb3JpemF0aW9uLCAqRXggZGl1ZXJzaXMg YXVkaXRpcyoKc2hvdWxkIGFsc28gYmUgY29uc2lkZXJlZCBhcyBhIHRleHQgd3JpdHRlbiBpbiBh IGNydWNpYWwgcGVyaW9kIGZvciB0aGUKZGV2ZWxvcG1lbnQgb2YgKnBhc3RvcmFsaWEsKiBhcyBM ZW9uYXJkIEJveWxlIGNhbGxlZCB0aGUgbGl0ZXJhdHVyZSBvZgpwYXN0b3JhbCBjYXJlLCBpZGVu dGlmeWluZyB0aGUgaW5jZXB0aW9uIG9mIGFuIGVmZm9ydCB0byBjcmVhdGUKYWNjZXNzaWJsZSBt YW51YWxzIG9mIHBhc3RvcmFsIGNhcmUgYmV0d2VlbiB0aGUgVGhpcmQgYW5kIEZvdXJ0aCBMYXRl cmFuCkNvdW5jaWxzIG9mIDExNzkgYW5kIDEyMTUuW14xM10gVGhlcmUgaXMgYSBncmVhdCBkZWFs IG9mIGNvbmNlcm4gZXZpZGVudAppbiAqRXggZGl1ZXJzaXMgYXVkaXRpcyogZm9yIHRoZSBwcmll c3QncyByb2xlIGFzIGEgbWVtYmVyIG9mIHRoZQpjb21tdW5pdHksIGFuZCBlc3BlY2lhbGx5IGFz IGEgcHJlYWNoZXIgKHRoZSB0b3BpYyB0aGF0IHByb21wdHMgdGhlCmxvbmdlc3QgZGlzY3Vzc2lv biBpbiB0aGUgZW50aXJlIHdvcmssIDM4KTsgaXQgaXMgYWx3YXlzIHZlcnkgY29uY2VybmVkCndp dGggZ29vZCBjaGFyYWN0ZXIgYW5kIGp1ZGdlbWVudCAoc2VlIGVzcGVjaWFsbHkgMiwgNCwgMjMs IDI0KS4gVGhpcwpyZWZsZWN0cyB0aGUgcHJhY3RpY2FsIGNvbmNlcm5zIG9mIFdpbGxpYW0gZGUg TW9udGlidXMgaW4gdHJhbnNmb3JtaW5nCnRoZW9yaWVzIGludG8gcHJpbmNpcGxlcywgc2hhcmVk IGJ5IGNvbnRlbXBvcmFyaWVzIHN1Y2ggYXMgUGV0ZXIgdGhlCkNoYW50ZXIgYW5kIEFsYW4gb2Yg TGlsbGUuW14xNF0gQW5vdGhlciBvZiBXaWxsaWFtJ3Mgc3R1ZGVudHMsIFJpY2hhcmQKb2YgV2V0 aGVyaW5nc2V0dCwgd3JvdGUgYSAqc3VtbWEqIGtub3duIGZyb20gaXRzIGluY2lwaXQgYXMgKlF1 aSBiZW5lCnByZXN1bnQsKiBhc3NlbWJsaW5nIG1hdGVyaWFsIHNpbWlsaWFyIGluIHN1YmplY3Qg dG8gYXMgd2hhdCBpcyBmb3VuZCBpbgp0aGUgcHJlc2VudCB0ZXh0IGluIGEgbW9yZSBwcm9ncmFt bWF0aWMgbWFubmVyLlteMTVdIFdoaWxlIHRoZXJlIGFyZQpzZXZlcmFsIHN1Y2ggKnN1bW1hZSog aW4gZXhpc3RlbmNlLCAqRXggZGl1ZXJzaXMgYXVkaXRpcyogcHJvdmlkZXMgYQpwZXJzcGVjdGl2 ZSBvZiBob3cgaXQgd2FzIHRhdWdodCBpbiB0aGUgY2xhc3Nyb29tLgoKR2l2ZW4gdGhlIGNsZWFy bmVzcyBvZiB0aG91Z2h0IGFuZCBjcmVhdGl2aXR5IGV2aWRlbnQgaW4gKkV4IGRpdWVyc2lzCmF1 ZGl0aXMsKiBvbmUgbWlnaHQgd29uZGVyIHdoeSBMaW5jb2xuIGRpZCBub3QgYmVjb21lIG9uZSBv ZiB0aGUgbGVhZGluZwpzY2hvb2xzIGluIHRoZSB0aGlydGVlbnRoIGNlbnR1cnksIHJhdGhlciB0 aGFuIE94Zm9yZCBvciBDYW1icmlkZ2UuIEluCjEyMDYsIGFmdGVyIHRoZSBuZXdseSBlbGVjdGVk IGJpc2hvcCBvZiBMaW5jb2xuIEh1Z2ggb2YgV2VsbHMgYWxpZ25lZApoaW1zZWxmIHdpdGggQXJj aGJpc2hvcCBTdGVwaGVuIExhbmd0b24sIEtpbmcgSm9obiBzZWl6ZWQgdGhlCnRlbXBvcmFsaXRp ZXMgb2YgTGluY29sbiBDYXRoZWRyYWwuIEl0IGlzIHVuY2xlYXIgd2hhdCBlZmZlY3QgdGhpcyBt aWdodApoYXZlIGhhZCBvbiB0aGUgc2Nob29scyBhdCBMaW5jb2xuLCBidXQgaXQgbWF5IGhhdmUg dGFrZW4gV2lsbGlhbSBkZQpNb250aWJ1cyBhd2F5IGZyb20gaGlzIHRlYWNoaW5nIGR1dGllcywg Zm9yIHdoZW4gaGUgZGllZCBpbiBBcHJpbCAxMjEzLApoZSB3YXMgc3RpbGwgY2hhbmNlbGxvciBv ZiB0aGUgY2F0aGVkcmFsLCBidXQgd2FzIGxpdmluZyBpbiBTY290bGFuZCAtLQpwZXJoYXBzIGlu IGV4aWxlLCBsaWtlIHRoZSBBcmNoYmlzaG9wLiBPeGZvcmQgYW5kIENhbWJyaWRnZSBxdWlja2x5 CmVjbGlwc2VkIExpbmNvbG4sIGFuZCBzZXJpb3VzIHRoZW9sb2dpY2FsIHRlYWNoaW5nIHNlZW1z IHRvIGhhdmUgY2Vhc2VkCnRoZXJlIGFmdGVyIGFwcHJveGltYXRlbHkgMTIyNSwgYXJndWFibHkg YmVjYXVzZSB0aGUgc2Nob29sIGZhaWxlZCB0bwpzZWl6ZSB1cG9uIHRoZSBvcHBvcnR1bml0eSB0 byBiZWNvbWUgYSBjZW50cmUgZm9yIHRoZSBzdHVkeSBvZiBjYW5vbgpsYXcuW14xNl0gTm9uZXRo ZWxlc3MsICpFeCBkaXVlcnNpcyBhdWRpdGlzKiByZW1haW5zIGFzIGFuIGltcG9ydGFudApyZWNv cmQgb2YgdGhlb2xvZ2ljYWwgdGVhY2hpbmcgYmVmb3JlIHRoZSBkb21pbmFuY2Ugb2YgdGhlIHVu aXZlcnNpdGllcy4KClNhbXVlbCBQcmVzYml0ZXIgYW5kIEhpcyBDb2xsZWN0YQotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCkFsbCB0aGF0IGlzIGtub3duIG9mIFNhbXVlbCBQcmVz Yml0ZXIgaXMgaGlzIGxpbmsgdG8gV2lsbGlhbSBkZQpNb250aWJ1czsgdGhlIG9ubHkgY2VydGFp biByZWZlcmVuY2VzIHRvIGhpbSBhcmUgdGhlIGlkZW50aWNhbCBjbG9zaW5nCmxpbmVzIG9mIDxz cGFuIHN0eWxlPSJmb250LXZhcmlhbnQ6c21hbGwtY2FwczsiPm1zPC9zcGFuPiBCb2RsZXkgODYw Cihmb2wuIDIwNnYpIGFuZCBDYW1icmlkZ2UsIFBlbWJyb2tlIENvbGxlZ2UsIDxzcGFuCnN0eWxl PSJmb250LXZhcmlhbnQ6c21hbGwtY2FwczsiPm1zPC9zcGFuPiAxMTUgKGZvbC4gNzdyKSwgd3Jp dHRlbiBpbgpib3RoIGNhc2VzIGluIHRoZSBzYW1lIGhhbmQgYXMgdGhlIHJlc3Qgb2YgdGhlIHRl eHQ6ICdFeHBsaWNpdW50CmNvbGxlY3RhIFNhbXVlbGlzIHByZXNiaXRlcmknLiAoQWx0aG91Z2gg c29tZSByZWZlcmVuY2Ugd29ya3MgcmVmZXIgdG8KaGltIGFzICdQcmVzYnl0ZXInLCB0aGlzIHNw ZWxsaW5nIGRvZXMgbm90IGFwcGVhciBpbiBtZWRpZXZhbApzb3VyY2VzLlteMTddKSBCb3RoIG1h bnVzY3JpcHRzIG9uY2UgYmVsb25nZWQgdG8gdGhlIEJlbmVkaWN0aW5lIGFiYmV5Cm9mIEJ1cnkg U3QgRWRtdW5kcywgYW5kIGFyZSBtb3N0bHkgd3JpdHRlbiBpbiB0aGUgc2FtZSBoYW5kLCB3aGlj aCBkYXRlcwpmcm9tIHRoZSBsYXRlIHR3ZWxmdGggb3IgZWFybHkgdGhpcnRlZW50aCBjZW50dXJ5 LiBBIHNlY29uZCBoYW5kIGFsc28KbWFrZXMgY29ycmVjdGlvbnMgaW4gYm90aCBtYW51c2NyaXB0 cy4gR2l2ZW4gdGhlaXIgY29uc2lzdGVuY3kgYW5kCmNvbnRlbXBvcmFuZWl0eSB3aXRoIHRoZSBr bm93biBkYXRlcyBvZiBXaWxsaWFtIGRlIE1vbnRpYnVzLCBpdCBpcyB2ZXJ5Cmxpa2VseSB0aGF0 IGF0IGxlYXN0IG9uZSBvZiB0aGVzZSBoYW5kcyBiZWxvbmdzIHRvIFNhbXVlbC4KClRoZSBwcm92 ZW5hbmNlIG9mIHRoZSBtYW51c2NyaXB0cyBhbmQgYSByZWZlcmVuY2UgdG8gdGhlICdsaW5ndWEK QnJpdGFuaWUnIGZvcm1zIHRoZSBiZXN0IGV2aWRlbmNlIHRoYXQgU2FtdWVsIHN0dWRpZWQgYXQg V2lsbGlhbSdzCnNjaG9vbCBpbiBMaW5jb2xuIHJhdGhlciB0aGFuIFBhcmlzLlteMThdIFRoZXJl IGFyZSBmZXcga25vd24gcmVmZXJlbmNlcwppbiBkb2N1bWVudGFyeSBzb3VyY2VzIHRoYXQgbWln aHQgYmUgaWRlbnRpZmllZCB3aXRoIHRoZSBhdXRob3IuIEEKU2FtdWVsIFByZXNiaXRlciBhcHBl YXJzIGluIEh1bnRpbmdkb24gaW4gMTE5OCxbXjE5XSBhbmQgdGhlcmUgaXMgYQonU2FtdWVsIGRl IE91bmViaScgKE93bWJ5IGJ5IFNwaXRhbCwgaW4gTGluY29sbikgd2hvIHdpdG5lc3NlcyBhIGNo YXJ0ZXIKYWxvbmdzaWRlIFdpbGxpYW0gZGUgTW9udGlidXMgYmV0d2VlbiAxMTk2IGFuZCAxMjAz LlteMjBdIEEgJ1NhbXVlbApwcmVzYml0ZXIgZGUgUGlsdG9uJyBpbiBTb21lcnNldCwgbWVudGlv bmVkIGluIHNldmVyYWwgcGlwZSByb2xscwpiZXR3ZWVuIDExNjQvNjUgYW5kIDExODMvODQsW14y MV0gaXMgdG9vIGVhcmx5IHRvIGJlIGlkZW50aWZpZWQgd2l0aCBhCnN0dWRlbnQgb2YgV2lsbGlh bSBkZSBNb250aWJ1cywgdGhvdWdoIGl0IGRvZXMgYXQgbGVhc3QgY2F1dGlvbiBvbmUKYWdhaW5z dCBpZGVudGlmeWluZyBhbnkgY2xlcmljIG5hbWVkIFNhbXVlbCBhcyB0aGUgYXV0aG9yLiBKb3Np YWggQ294ClJ1c3NlbGwgYWRtaXJhYmx5IGR1ZyB1cCBzZXZlcmFsIHJlZmVyZW5jZXMgdG8gb25l IG9yIG1vcmUgZmlndXJlcyBuYW1lZApNYXN0ZXIgU2FtdWVsIHdpdGggd2hvbSBoZSBzdWdnZXN0 ZWQgdGhlIGF1dGhvciBtaWdodCBiZQppZGVudGlmaWVkLlteMjJdIEl0IGlzIG9wZW5seSBzdGF0 ZWQsIGhvd2V2ZXIsIHRoYXQgdGhlIGxhc3QgcGFydCBvZgo8c3BhbiBzdHlsZT0iZm9udC12YXJp YW50OnNtYWxsLWNhcHM7Ij5tczwvc3Bhbj4gQm9kbGV5IDg2MCB3YXMgY29tcG9zZWQKYWZ0ZXIg U2FtdWVsIGxlZnQgdGhlIHNjaG9vbDsgJ0hlYyBjb21wb3NpdGEgc3VudCBwb3N0IGRpY2Vzc3Vt IGEgc2NvbGEnCihmb2wuIDEwOHIpIGlzIGhpcyBvbmx5IGF1dG9iaW9ncmFwaGljYWwgc3RhdGVt ZW50LiBHaXZlbiB0aGlzLCBvbmUKd291bGQgYXNzdW1lIHRoYXQgaGUgd291bGQgaGF2ZSBjYWxs ZWQgaGltc2VsZiBNYXN0ZXIgU2FtdWVsIGlmIGhlIGhhZAplYXJuZWQgdGhlIHRpdGxlLCBlc3Bl Y2lhbGx5IGFzIGhlIGlzIGNhcmVmdWwgdG8gdXNlIGl0IHdpdGggcmVmZXJlbmNlCnRvIFdpbGxp YW0gZGUgTW9udGlidXMuIFRoaXMgZG9lcyBub3QgbmVjZXNzYXJpbHkgcHJlY2x1ZGUgdGhlCnBv c3NpYmlsaXR5IHRoYXQgaGUgbWF5IGhhdmUgYXR0ZW5kZWQgYW5vdGhlciBzY2hvb2wgYWZ0ZXIg V2lsbGlhbSdzLApidXQgaXQgaXMgdW5saWtlbHkgdGhhdCBoZSB3b3VsZCBoYXZlIGhhZCB0aGUg bWVhbnMgdG8gcHJvZHVjZSBzdWNoCmJvb2tzIGFzIHRob3NlIG5vdyBzdXJ2aXZpbmcgd2hpbGUg c3RpbGwgYSBzdHVkZW50LgoKT24gdGhlIGJhc2lzIG9mIHRoZSBuYW1lIFByZXNiaXRlciwgd2hp Y2ggaXMgdW51c3VhbCBidXQgZm91bmQgaW4gdGhlCmNpdHkgb2YgTGluY29sbiwgR29lcmluZyBo YXMgc3VnZ2VzdGVkIHRoYXQgdGhlIGF1dGhvciBtYXkgaGF2ZSBiZWVuIGEKSmV3aXNoIGNvbnZl cnQsIG9yIGZyb20gYSBmYW1pbHkgb2YgY29udmVydHMgKHRoZSBuYW1lIGhhdmluZyBiZWVuIHVz ZWQKYXMgYSB0cmFuc2xhdGlvbiBvZiAnQ29oZW4nKS5bXjIzXSBJdCBpcyBwZXJoYXBzIHJlbGV2 YW50IHRoYXQgKkV4CmRpdWVyc2lzIGF1ZGl0aXMqIGNvbnRhaW5zIGEgcGFzc2FnZSB0aGF0IGNv dWxkIGJlIHJlYWQgYXMgYSBub24taG9zdGlsZQphdHRlbXB0IHRvIHVuZGVyc3RhbmQgdGhlIEpl d2lzaCBwb3NpdGlvbiByZWdhcmRpbmcgdGhlIENydWNpZml4aW9uIGF0CjMwLjAwMDsgaW4gKkNv bGxlY3RhIGFkIGhhYmVuZGFtIG1lbW9yaWFtKiAoaGVyZWFmdGVyICpBZCBoYWJlbmRhbQptZW1v cmlhbSopKiwqIHRoZSBKZXdzIGFyZSBhbHNvIHRoZSBwcmltYXJ5IGV4YW1wbGUgaW4gYSBkaXNj dXNzaW9uICdBZApzY2llbmR1bSBxdWFsaXRlciBvcG9ydGVhdCBib25vcyBzZSBnZXJlcmUgZXJn YSBtYWxvcyBzaWJpIGluaW1pY29zJwooZm9scy4gMTczci0tMTc3ciwgd2l0aCAnT2JpZWN0aW8g Y29udHJhIHF1ZWRhbSBwcmVkaWN0YScgYXQgZm9scy4KMTc3ci0tdiwgYW5kICdTb2x1dGlvJyBh dCAxNzhyLS0xODF2KS4gVGhpcyBhcHByb2FjaCBjb250cmFzdHMsIG5vdGFibHksCndpdGggdGhh dCBvZiBQZXRlciBMb21iYXJkIGFuZCBQZXRlciB0aGUgQ2hhbnRlci5bXjI0XSBJbiB0aGUgZW5k LApob3dldmVyLCBhbGwgdGhhdCBjYW4gYmUgc2FpZCBmb3IgY2VydGFpbiBhYm91dCBTYW11ZWwg aXMgdGhhdCBoZQphdHRlbmRlZCB0aGUgY2F0aGVkcmFsIHNjaG9vbCBhdCBMaW5jb2xuIHVuZGVy IFdpbGxpYW0uCgpEZXNwaXRlIFNhbXVlbCdzIG9ic2N1cml0eSwgdGhlcmUgYXJlIHR3byBzdXJ2 aXZpbmcgbWFudXNjcmlwdHMgdGhhdApjb250YWluIGEgc2VyaWVzIG9mIGhpcyB3cml0aW5ncywg d2hpY2ggaGF2ZSBuZXZlciBiZWVuIGZ1bGx5CmNhdGFsb2d1ZWQ6W14yNV0KCk94Zm9yZCwgQm9k bGVpYW4gTGlicmFyeSwgPHNwYW4Kc3R5bGU9ImZvbnQtdmFyaWFudDpzbWFsbC1jYXBzOyI+bXM8 L3NwYW4+IEJvZGxleSA4NjAKCi0gICBBIHZlcnNlIHBhcmFwaHJhc2Ugb2YgUHNhbG0gMSAoZm9s cy4gMXItLTh2KSwgd3JpdHRlbiB3aXRoIGluZm9ybWFsCiAgICBnbG9zc2VzW14yNl0KCiAgICAt ICAgKnRpdGxlKiBCZWF0dXMgdWlyIHF1aSBub24gYWJpaXQgaW4gY29uc2lsaW8gaW1waW9ydW0u CgogICAgLSAgICppbmNpcGl0KiBRdWkgbm9uIGNvbnNpbGlpcyBhYmlpdCBxdWUgc3Vhc2l0IGlu aXF1dXMKCiAgICAtICAgKmV4cGxpY2l0KiBQZW5hIGZlcmV0dXIgZWkgZGVsZWN0YXJpIGN1cGll bnRpLgoKLSAgICpDb2xsZWN0YSBleCBhdWRpdGlzIHN1cGVyIHBzYWxtb3MgaW4gc2NvbGEgbWFn aXN0cmkgV2lsbGVsbWkgZGUKICAgIE1vbnRlKiAoZm9scy4gOXItLTkzdiksIGEgcHJvc2UgY29t bWVudGFyeSBvbiB0aGUgUHNhbG1zCiAgICAoaW5jb21wbGV0ZSlbXjI3XQoKICAgIC0gICAqdGl0 LiogSGVjIGNvbGxlY3RhIHN1bnQgZXggYXVkaXRpcyBzdXBlciBwc2FsbW9zIGluIHNjb2xhCiAg ICAgICAgbWFnaXN0cmkgV2lsbGVsbWkgZGUgTW9udGUuCgogICAgLSAgICppbmMuIE5vbiBzaWMg aW1waWkuKiBEaWNlbmRvIGJpcyAnbm9uIHNpYycsIGR1byBzdXBlcml1cwogICAgICAgIGF0dHJp YnV0YSBiZWF0bwoKICAgIC0gICAqZXhwLiogRWNjbGVzaWEgc2VtcGVyIGVzdCAoKmNhdGNod29y ZDoqIGludGVyIG1hbGxldW0gZXQKICAgICAgICBpbmN1ZGVtKQoKLSAgICpDb2xsZWN0YSBleCBk aXVlcnNpcyBhdWRpdGlzIGluIHNjb2xhIG1hZ2lzdHJpIFdpbGxlbG1pIGRlIE1vbnRlKgogICAg KGZvbHMuIDk0ci0tMTA3diksIHRoZSBwcmVzZW50IHdvcmssIGEgY29sbGVjdGlvbiBvZiB2ZXJz ZXMgd2l0aCBhCiAgICBmb3JtYWwgcHJvc2UgY29tbWVudGFyeVteMjhdCgogICAgLSAgICp0aXQu KiBIZWMgY29sbGVjdGEgc3VudCBleCBkaXVlcnNpcyBhdWRpdGlzIGluIHNjb2xhIG1hZ2lzdHJp CiAgICAgICAgV2lsbGVsbWkgZGUgTW9udGUuCgogICAgLSAgICpwcm9zZSBpbmMuKiBEdW8gbmVj ZXNzYXJpYSBzdW50IGFkIGhvYyB1dCBhbGlxdWlkIHVpZGVhdHVyIHVzdQogICAgICAgIGNvcnBv cmVvCgogICAgLSAgICp2ZXJzZSBpbmMuKiBOdWxsaSBjZXJuZW50dXIgb2N1bGlzIHF1ZSBzdWJp Y2llbnR1cgoKICAgIC0gICAqcHJvc2UgZXhwLiogRmlkZWxpdGF0ZSwgQWNjZWxlcmF04p+oaeKf qW/in6hu4p+pZSwgQ2FyaXRhdGUKCiAgICAtICAgKnZlcnNlIGV4cC4qIFJlZGRpdGlvcXVlIG5v dGVudCBjaXJjdW0gdWVobyBkZW1vIGNhdWVmYWMKCi0gICAqQ29sbGVjdGEgYWQgaGFiZW5kYW0g bWVtb3JpYW0gcXVvcnVtZGFtIHV0aWxpdW0gaW4gc2FjcmEgc2NyaXB0dXJhKgogICAgKGZvbHMu IDEwOHItLTIwNnYpLCBhIGNvbGxlY3Rpb24gb2YgdmVyc2VzIHdpdGggaW5mb3JtYWwgZ2xvc3Nl cyBpbgogICAgdGhlIHNhbWUgc3R5bGUgYXMgdGhlIHBhcmFwaHJhc2Ugb2YgUHNhbG0gMQoKICAg IC0gICAqdGl0LiogSGVjIGNvbGxlY3RhIHN1bnQgYWQgaGFiZW5kYW0gbWVtb3JpYW0gcXVvcnVt ZGFtIHV0aWxpdW0KICAgICAgICBpbiBzYWNyYSBzY3JpcHR1cmEuIEV0IGVvcnVtIHF1ZWRhbSBz dW1wdGEgc3VudCBhIHVlcmJpcwogICAgICAgIGV4cG9zaXRpb251bSBld2FuZ2VsaW9ydW0sIGV0 IHF1ZWRhbSBhYiBpcHNpcyB1ZXJiaXMKICAgICAgICBld2FuZ2VsaWNpcywgZXQgcXVlZGFtIGFi IGFsaWlzIHVlcmJpcyBuZWNlc3NhcmlpcyBhZCBzYWx1dGVtCiAgICAgICAgYW5pbWUuIEV0IGhl YyBjb21wb3NpdGEgc3VudCBwb3N0IGRpY2Vzc3VtIGEgc2NvbGEuCgogICAgLSAgICppbmMuKiBM ZXByb3N1bSB0ZXRpZ2l0IENyaXN0dXMgc2ljIG9tbmlhIG11bmRhCgogICAgLSAgICpleHAuICog TWlncmVudCBhIG11bmRvIHRyYW5zbGF0aSBmaW5lIGJlYXRvLgoKICAgIC0gICAqZXhwLiB0aXQu KiBFeHBsaWNpdW50IGNvbGxlY3RhIFNhbXVlbGlzIFByZXNiaXRlcmkuCgpDYW1icmlkZ2UsIFBl bWJyb2tlIENvbGxlZ2UsIDxzcGFuCnN0eWxlPSJmb250LXZhcmlhbnQ6c21hbGwtY2FwczsiPm1z PC9zcGFuPiAxMTUKCi0gICAqQ29sbGVjdGEgZXggc3BlY3VsbyBiZWF0aSBHcmVnb3JpaSBjdW0g dWVyc2lidXMqIChmb2xzLiAxci0tNDF2KSwKICAgIHZlcnNlcyB3aXRoIGEgZm9ybWFsIHByb3Nl IGNvbW1lbnRhcnkgaW4gdGhlIHN0eWxlIG9mICpDb2xsZWN0YSBleAogICAgZGl1ZXJzaXMgYXVk aXRpcyoKCiAgICAtICAgKnRpdC4qIEhlYyBjb2xsZWN0YSBzdW50IGV4IHNwZWN1bG8gYmVhdGkg R3JlZ29yaWkuCgogICAgLSAgICpwcm9zZSBpbmMuKiBEZSBpbmFuaSBnbG9yaWEgaW4gb2JlZGll bnRpYQoKICAgIC0gICAqdmVyc2UgaW5jLiogRXggc2VwdGVtIHVpY2lpcyBjYXBpdGFsaWJ1cyBl eG9yaXVudHVyCgogICAgLSAgICpwcm9zZSBleHAuKiBuZWMgb3J0dW0gaWFtIG5lYyBvY2Nhc3Vt IHNvbGlzIGFnbm9zY28uCgogICAgLSAgICp2ZXJzZSBleHAuKiBPY2Nhc3VtIHNvbGlzIGluIHNl IHByb3NwaWNpdCBvcnR1bS4KCiAgICAtICAgKmV4cC4gdGl0LiogRXhwbGljaXVudCBjb2xsZWN0 YSBleCBzcGVjdWxvIGJlYXRpIEdyZWdvcmlpIGN1bQogICAgICAgIHVlcnNpYnVzLgoKLSAgICpE ZSBvcmF0aW9uZSBkb21pbmljYSogKGZvbHMuIDQxdi0tNDR2KSwgdmVyc2VzIHdpdGggYSBmb3Jt YWwgcHJvc2UKICAgIGNvbW1lbnRhcnkuIEZvbGxvd2VkIGluIHRoZSBtYW51c2NyaXB0IGJ5IGEg cmVwZXRpdGlvbiBvZiB0aGUKICAgIG9wZW5pbmcgcHJvc2Ugb2YgKkNvbGxlY3RhIGV4IHNwZWN1 bG8gYmVhdGkgR3JlZ29yaWkgY3VtIHVlcnNpYnVzKgogICAgb24gNDR2LS00NXIsIGxhdGVyIGNh bmNlbGxlZC4KCiAgICAtICAgKnRpdC4qIERlIG9yYXRpb25lIGRvbWluaWNhLCBzaWxpY2V0IFBh dGVyIG5vc3Rlci4KCiAgICAtICAgKnByb3NlIGluYy4qIFNlcHRlbSBzdW50IHVpY2lhIGNhcGl0 YWxpYSBzaXVlIHByaW5jaXBhbGlhCgogICAgLSAgICp2ZXJzZSBpbmMuKiBRdWFtIENyaXN0dXMg ZG9jdWl0IG9yYXRpbyBxdWlucXVlIHBldGl0aWlzCgogICAgLSAgICpwcm9zZSBleHAuKiBzYW5p dGF0ZXMgYmVhdGl0dWRpbmVzIGZlbGljaXRhdGlzIGdhdWRpdW0KCiAgICAtICAgKnZlcnNlIGV4 cC4qIEV0IGJlbmUgc29uYXRvIGZlbGljaWEgZ2F1ZGlhIGNvbmZlcnQuCgotICAgZm91ciBzaG9y dCBjb21wb3NpdGlvbnMgKGZvbHMuIDQ1ci0tNDZyKSBjb25zaXN0aW5nIG9mIHZlcnNlcyB3aXRo IGEKICAgIGZvcm1hbCBwcm9zZSBjb21tZW50YXJ5IGluIHRoZSBzdHlsZSBvZiAqQ29sbGVjdGEg ZXggZGl1ZXJzaXMKICAgIGF1ZGl0aXMqCgogICAgLSAgIDFcLiBFc3QgcHJvcHJpdW0gZG9taW5p IG1lbnRlbSBiZW5lIHBhY2lmaWNhcmUgKCo4IGxpbmVzKikKCiAgICAtICAgMlwuIEVzdCB1YWd1 cyBoaWMgY3VpdXMgYW5pbXVzIG5vbiByZWN0YSBjdXBpc2NpdCAoKjIgbGluZXMqKQoKICAgIC0g ICAzXC4gRmxvcyBib251cyBlc3QgYWN0dXMgaG9jIGVzdCBzcGVzIGZ1bGdvciBvZG9ycXVlICgq MTIgbGluZXMqKQoKICAgIC0gICA0XC4gTXVsdGlwbGV4IGhvbWluaXMgcGFjaWVudGlhIGRpY2l0 dXIgZXNzZSwgKnRpdC4qICdEZSBwYXRpZW50aWEnICgqMgogICAgICAgIGxpbmVzKikKCi0gICAq Q29sbGVjdGEgZXggc3BlY3VsbyBiZWF0aSBHcmVnb3JpaSBzaW5lIHVlcnNpYnVzKiAoZm9scy4g NDdyLS03N3IpLAogICAgaW4gcHJvc2UKCiAgICAtICAgKnRpdC4qIEhlYyBzdW50IGNvbGxlY3Rh IGV4IHNwZWN1bG8gYmVhdGkgR3JlZ29yaWkgc2luZQogICAgICAgIHVlcnNpYnVzLgoKICAgIC0g ICAqaW5jLiogRGV1bSB0aW1lcmUgZXN0IG51bGxhIHF1ZSBmYWNpZW5kYSBzdW50IGJvbmEgcHJl dGVyaXJlCgogICAgLSAgICpleHAuKiBuZWMgdGVycm9yZSBwZW5lIHNlZCBhbW9yZSBpdXN0aWNp ZS4KCiAgICAtICAgKmV4cC4gdGl0LiogRXhwbGljaXVudCBjb2xsZWN0YSBTYW11ZWxpcyBQcmVz Yml0ZXJpCgpUaGUgZ2xvc3NlcyB0byBib3RoIHRoZSBwYXJhcGhyYXNlIG9mIFBzYWxtIDEgYW5k ICpBZCBoYWJlbmRhbSBtZW1vcmlhbSoKY29udGFpbiByZWZlcmVuY2VzIHRvIHRoZSAqU3BlY3Vs dW0gYmVhdGkgR3JlZ29yaWkqIChpLmUuIEFkYWxiZXJ0IG9mCk1ldHoncyBlcGl0b21lIG9mIEdy ZWdvcnkgdGhlIEdyZWF0J3MgKk1vcmFsaWEgaW4gSW9iKiksW14yOV0gd2hpY2gKbWlnaHQgaW5k aWNhdGUgdGhhdCB0aGV5IHdlcmUgd3JpdHRlbiBhZnRlciB0aGUgKkNvbGxlY3RhKiBtYWRlIGZy b20KdGhpcyBib29rLgoKSW4gYm90aCBtYW51c2NyaXB0cywgdGhlIG9ubHkgYXR0cmlidXRpb24g dG8gU2FtdWVsIGNvbWVzIGF0IHRoZSB2ZXJ5CmVuZCwgYnV0IGl0IGNhbiBwcmVzdW1hYmx5IGJl IHRha2VuIHRvIHJlZmVyIHRvIHRoZSBlbnRpcmUgY29udGVudHMsCmdpdmVuIHRoZWlyIGNvbnNp c3RlbnQgc3R5bGUuIFRoZSBPeGZvcmQgbWFudXNjcmlwdCwgaG93ZXZlciwgaXMgYQpjb21wb3Np dGUgb2Ygb3JpZ2luYWxseSBzZXBhcmF0ZSBib29rcywgbWVhbmluZyB0aGF0IHRoZSBleHBsaWNp dCBvZgp0aGlzIG1hbnVzY3JpcHQgY2FuIG9ubHkgc3RyaWN0bHkgYmUgdGFrZW4gdG8gcmVmZXIg dG8gKkV4IGRpdWVyc2lzCmF1ZGl0aXMqIGFuZCAqQWQgaGFiZW5kYW0gbWVtb3JpYW0uKiBUaGVy ZSBpcyBubyByZWFsIHF1ZXN0aW9uLApub25ldGhlbGVzcywgb2YgdGhlIGFzc29jaWF0aW9uIG9m IGVpdGhlciB0aGUgcGFyYXBocmFzZSBvbiBQc2FsbSAxIG9yCnRoZSBjb21tZW50YXJ5IG9uIHRo ZSBQc2FsbXMgd2l0aCBTYW11ZWwuIFRoZSB2ZXJzaWZpY2F0aW9uIG9mIFBzYWxtIDEKaXMgaW4g cHJlY2lzZWx5IHRoZSBzYW1lIHN0eWxlIGFzIHRoZSBiaWJsaWNhbCBwYXJhcGhyYXNlcyBmb3Vu ZCBpbiAqQWQKaGFiZW5kYW0gbWVtb3JpYW0sKiBib3RoIGluIHRlcm1zIGl0cyBvZiBsYW5ndWFn ZSBhbmQgcGFnZSBsYXlvdXQsIGFuZAppdHMgZmlyc3QgcGFnZSBpcyBoZWFkZWQgd2l0aCBhIHNl dCBvZiB2ZXJzZXMgYWxzbyBmb3VuZCBhdCB0aGUKYmVnaW5uaW5nIG9mIFBlbWJyb2tlIENvbGxl Z2UsIDxzcGFuCnN0eWxlPSJmb250LXZhcmlhbnQ6c21hbGwtY2FwczsiPm1zPC9zcGFuPiAxMTUs IGFzIGRlc2NyaWJlZCBiZWxvdy4gSXQKaXMgdW5jbGVhciB3aGV0aGVyIHRoZSBwYXJhcGhyYXNl IGhhcyBhbnkgcmVsYXRpb25zaGlwIHRvIHRoZSBzY2hvb2wgb2YKV2lsbGlhbSBkZSBNb250aWJ1 cywgdGhvdWdoIEdyZXRpIERpbmtvdmEtQnJ1dW4gaGFzIG5vdGVkIGl0cyBjb25jZXJuCndpdGgg dGhlICpIZWJyYWljYSB1ZXJpdGFzKiBvZiB0aGUgUHNhbG1zLCBjaGFyYWN0ZXJpc3RpYyBvZiBX aWxsaWFtLAphbmQgbW9yZW92ZXIgZm91bmQgaW4gKkV4IGRpdWVyc2lzIGF1ZGl0aXMqIChhdCAz OS4wMDAgYW5kIDM2LjAwMCkuW14zMF0KQXMgZm9yIHRoZSBQc2FsbXMgY29tbWVudGFyeSwgb25l IHdpbGwgaW1tZWRpYXRlbHkgbm90ZSB0aGF0IHRoZSB0aXRsZQpmb2xsb3dzIHRoZSBzYW1lIGZv cm1hdCBhcyB0aGF0IG9mIHRoZSBvdGhlciAqQ29sbGVjdGEqIGxpc3RlZCBhYm92ZSwKYW5kIHNl dmVyYWwgcGFzc2FnZXMgZnJvbSAqU3VwZXIgcHNhbG1vcyogYXJlIHJlcGVhdGVkIGFsbW9zdCB2 ZXJiYXRpbQppbiAqRXggZGl1ZXJzaXMgYXVkaXRpcyogSXQgc2VlbXMgc2FmZSwgdGhlcmVmb3Jl LCB0byBhdHRyaWJ1dGUgdGhlCmVudGlyZSBib29rIHRvIFNhbXVlbC4KCkl0IGlzIHRlbXB0aW5n IHRvIGRpc21pc3MgU2FtdWVsIGFzIGEgbWVyZSBleGNlcnB0ZXIsW14zMV0gb3IgYXMgVGhvbWFz ClRhbm5lciB0aG91Z2h0LCBsaXR0bGUgbW9yZSB0aGFuIGEgZGV2b3RlZSBvZiBXaWxsaWFtIGRl IE1vbnRpYnVzLlteMzJdCk1vZGVybiByZWFkZXJzIGFyZSBvZnRlbiB0cm91YmxlZCBpbiB1bmRl cnN0YW5kaW5nIHRoZSBtb3RpdmUgYmVoaW5kIHRoZQphdXRob3JzaGlwIG9mIGJvb2tzIHRoYXQg bWF5IGNvbnRhaW4gbGl0dGxlIHN0cmljdGx5IG9yaWdpbmFsIG1hdGVyaWFsLAphcyBpbiB0aGUg Y2xhc3NpYyBjYXNlIG9mIFBldGVyIExvbWJhcmQncyAqU2VudGVuY2VzLipbXjMzXSBTYW11ZWwK aGltc2VsZiBwcm92aWRlcyBzb21lIGlkZWEgb2YgaGlzIG1vdGl2ZXMgYmVoaW5kIGhpcyB3b3Jr LCBkZXNwaXRlIHRoZQpsYWNrIG9mIGEgcHJvbG9ndWUuIFRoZSBmaXJzdCBmb2xpb3Mgb2YgYm90 aCA8c3BhbgpzdHlsZT0iZm9udC12YXJpYW50OnNtYWxsLWNhcHM7Ij5tczwvc3Bhbj4gQm9kbGV5 IDg2MCBhbmQgUGVtYnJva2UKQ29sbGVnZSwgPHNwYW4gc3R5bGU9ImZvbnQtdmFyaWFudDpzbWFs bC1jYXBzOyI+bXM8L3NwYW4+IDExNSBjb250YWluCnRoZSBmb2xsb3dpbmcgdGV4dCwgd3JpdHRl biBpbiByZWQgaW5rOgoKPiBNZW5zIGNvbnNlcnUgcGVyIG9wdXMgbmUgc3R1bHRhIHVhZ1wKPiAg ZXR1ciBldHVyLlwKPiBTaWMgc3R1ZGlpcyBkIHV0IHF1ZSBwcm9zaW50IG9wZXIKCkFkZGl0aW9u YWxseSwgYm90aCBtYW51c2NyaXB0cyBoYXZlIHRoZSBmb2xsb3dpbmcgYXQgdGhlIGJvdHRvbSBv ZiB0aGUKbGFzdCBwYWdlIG9mIHRleHQ6W14zNF0KCj4gSGVjIHF1aSBjb2xsIGV0ZXJuYSBwYWNl IHF1aVwKPiAgZWdpdCBlc2NhdC5cCj4gSGVjIHF1aWN1bXF1ZSBsIG9yZXQgc2ltdWwgdXQgcmVx dWkKCkJvdGggc2V0cyBvZiBsaW5lcyBhcmUgbWlsZGx5IGNsZXZlciwgZm9ybWluZyBoZXhhbWV0 ZXIgbGluZXMgdGhhdCBjYW4KYmUgcmVhZCBpbiBmb3VyIGRpZmZlcmVudCB3YXlzLiBUaHVzLCB0 aGUgc2Vjb25kIG9mIHRoZXNlIGNhbiBiZSByZWFkIGluCmFueSBvZiB0aGUgZm9sbG93aW5nIHdh eXM6Cgo+IE1heSBoZSB3aG8gY29sbGVjdGVkIHRoZXNlIHRoaW5ncyBzbGVlcCBpbiBldGVybmFs IHBlYWNlLlwKPiBNYXkgd2hvZXZlciByZWFkcyB0aGVzZSB0aGluZ3MgcHJheSBsaWtld2lzZSB0 aGF0IGhlIG1heSByZXN0LlwKPiBNYXkgd2hvZXZlciByZWFkcyB0aGVzZSB0aGluZ3Mgc2xlZXAg aW4gZXRlcm5hbCBwZWFjZS5cCj4gTWF5IGhlIHdobyBjb2xsZWN0ZWQgdGhlc2UgdGhpbmdzIHBy YXkgbGlrZXdpc2UgdGhhdCBoZSBtYXkgcmVzdC4KClRoaXMgaW1wcm92ZW1lbnQgb2YgdGhlIG1p bmQsIGJyaW5naW5nIGFib3V0IHRoZSBtdXR1YWwgYmVuZWRpY3Rpb24gb2YKdGhlIGF1dGhvciBh bmQgcmVhZGVyLCBpcyBwcm9iYWJseSBob3cgU2FtdWVsIHdvdWxkIGV4cGxhaW4gaGlzIHJlYXNv bgpmb3IgY29tcGlsaW5nIGhpcyB3b3Jrcy4gTWFyeSBDYXJydXRoZXJzIGhhcyBleHByZXNzZWQg bXVjaCB0aGUgc2FtZQp0aGluZyBpbiBtb2Rlcm4gdGVybXM6ICdjb21wb3NpdGlvbiBpbiB0aGUg TWlkZGxlIEFnZXMgaXMgbm90CnBhcnRpY3VsYXJseSBhbiBhY3Qgb2Ygd3JpdGluZy4gSXQgaXMg cnVtaW5hdGlvbiwgY29naXRhdGlvbiwgZGljdGF0aW9uLAphIGxpc3RlbmluZyBhbmQgYSBkaWFs b2d1ZSwgYSBnYXRoZXJpbmcgKCpjb2xsZWN0aW8qKSBvZiB2b2ljZXMgZnJvbQp0aGVpciBzZXZl cmFsIHBsYWNlcyBpbiBtZW1vcnkuJ1teMzVdIEZ1cnRoZXIsICdsZWFybmluZyBpcyBpdHNlbGYg YQpwcm9jZXNzIG9mIGNvbXBvc2l0aW9uLCBjb2xsYXRpb24sIGFuZCByZWNvbGxlY3Rpb24uIEJ1 dCB0aGUgcmVzdWx0IG9mCmJyaW5naW5nIHRvZ2V0aGVyIHRoZSB2YXJpb3VzbHkgc3RvcmVkIGJp dHMgaW4gbWVtb3J5IGlzIG5ldyBrbm93bGVkZ2UuCkl0IGlzIG9uZSdzIG93biBjb21wb3NpdGlv biBhbmQgb3BpbmlvbiwgKmZhbWlsaWFyaXMgaW50ZW50aW8uKiBUaGlzIGlzCnRoZSBwb2ludCBh dCB3aGljaCBjb2xsYXRpb24gYmVjb21lcyBhdXRob3JzaGlwLidbXjM2XQoKV2hvIFdyb3RlIFNh bXVlbCdzIEJvb2tzPwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpJdCBzZWVtcyB2ZXJ5IGxp a2VseSB0aGF0IFNhbXVlbCB3YXMgaW52b2x2ZWQgaW4gdGhlIHByb2R1Y3Rpb24gb2YgdGhlCmJv b2tzIGNvbnRhaW5pbmcgaGlzIHdyaXRpbmdzLCB3aXRoIGEgY29ycmVjdGluZyBoYW5kIGZvdW5k IGluIGJvdGgKbWFudXNjcmlwdHMgdGhhdCByZWZsZWN0cyBhbiBpbnRpbWF0ZSBrbm93bGVkZ2Ug b2YgdGhlIHRleHRzIGFuZAp3aWxsaW5nbmVzcyB0byBtYWtlIGNoYW5nZXMgdGhhdCB3b3VsZCBw b2ludCB0byBzb21lb25lIG1vcmUgdGhhbiBhCnplYWxvdXMgcGVkYW50IGluIHBvc3Nlc3Npb24g b2YgdGhlIGV4ZW1wbGFyLiBUaGUgc2FtZSB0ZXh0IGhhbmQgaXMKZm91bmQgdGhyb3VnaG91dCBi b3RoIDxzcGFuIHN0eWxlPSJmb250LXZhcmlhbnQ6c21hbGwtY2FwczsiPm1zPC9zcGFuPgpCb2Rs ZXkgODYwICh3aXRoIHRoZSBleGNlcHRpb24gb2YgcGFydHMgb2YgdGhlIFBzYWxtcyBjb21tZW50 YXJ5KSBhbmQKUGVtYnJva2UgQ29sbGVnZSwgPHNwYW4gc3R5bGU9ImZvbnQtdmFyaWFudDpzbWFs bC1jYXBzOyI+bXM8L3NwYW4+IDExNTsKYm90aCBib29rcyBhcmUgYWxzbyBjb25zdHJ1Y3RlZCBt b3N0bHkgb2YgcXVhdGVybmlvbnMsIG9mIHJvdWdobHkgdGhlCnNhbWUgc2l6ZSwgYW5kIHNoYXJl IGEgc2ltaWxhciBzY2hlbWUgb2YgZGVjb3JhdGlvbi4gVGhpcyBpcyBhIG5lYXQKRW5nbGlzaCBw cm90b2dvdGhpYyBzY3JpcHQgb2YgdGhlIGxhdGUgdHdlbGZ0aCBvciBlYXJseSB0aGlydGVlbnRo CmNlbnR1cnksIHVzaW5nIGJvdGggb25lLSBhbmQgdHdvLWNvbXBhcnRtZW50ICphLCogd3JpdHRl biBhYm92ZSB0aGUgdG9wCmxpbmUuIFRoZXJlIGlzIGEgc21hbGxlciB2YXJpYW50IHVzZWQgZm9y IHByb3NlIHBhc3NhZ2VzIGFuZCBnbG9zc2VzCih0eXBpY2FsbHkgYWJvdXQgNCBtbSB0YWxsKSwg d2hpbGUgYSBzbGlnaHRseSB0YWxsZXIgYW5kIGZpbmVyIHZlcnNpb24Kb2YgdGhlIGhhbmQgaXMg dXNlZCBmb3IgdmVyc2VzICh3aXRoIGxldHRlcnMgYWJvdXQgNiBtbSB0YWxsKS4gVGhlIG9ubHkK c2VyaW91cyBkaWZmaWN1bHR5IHByZXNlbnRlZCBieSB0aGUgc2NyaXB0IChhcyBpbiBtYW55IG90 aGVyIG9mIGl0cwp2YXJpYW50cykgaXMgdGhlIGRpc3RpbmN0aW9uIGJldHdlZW4gJ2MnIGFuZCAn dCcsIHdoaWNoIGFyZSBjb25zdHJ1Y3RlZAp1c2luZyB0aGUgc2FtZSBudW1iZXIgb2Ygc3Ryb2tl cyBpbiBhIHZlcnkgc2ltaWxhciBtYW5uZXIuIFRoZSB2ZXJ0aWNhbApzdHJva2Ugb2YgYm90aCBj YW4gb2Z0ZW4gcHJvdHJ1ZGUgc2xpZ2h0bHkgYWJvdmUgdGhlIHRvcCBvZiB0aGUgbGV0dGVyLgpU aGUgY3Jvc3Mtc3Ryb2tlIG9mICd0JywgaG93ZXZlciwgYWx3YXlzIGJlZ2lucyB2ZXJ5IGRlbGli ZXJhdGVseSB0byB0aGUKbGVmdCBvZiB0aGUgdmVydGljYWwgc3Ryb2tlLCB3aGVyZWFzIHRoZSB0 b3Agc3Ryb2tlIG9mICdjJyB3aWxsCm9jY2FzaW9uYWxseSBiZWdpbiB2ZXJ5IHNsaWdodGx5IHRv IHRoZSBsZWZ0LCBidXQgb25seSBieSBhIHNtYWxsCmFtb3VudCwgYW5kIGlzIG1vcmUgY3VydmVk LgoKQSBkaWZmZXJlbnQgaGFuZCwgdW5wcm9mZXNzaW9uYWwgYnV0IHN0aWxsIHRpZHksIHdpdGgg dmVyeSB0aGluIHN0cm9rZXMKYW5kIGdlbmVyYWxseSBpbiBhIGxpZ2h0ZXIgc2hhZGUgb2YgaW5r LCBoYXMgY29ycmVjdGVkIGJvdGggbWFudXNjcmlwdHMKKHRob3VnaCBvbmx5IHNwb3JhZGljYWxs eSBpbiB0aGUgUHNhbG1zIGNvbW1lbnRhcnkpLiBXaGVyZSBpdCBoYXMgYmVlbgppZGVudGlmaWVk LCBpdCBpcyBsYWJlbGxlZCAnYW5vdGhlciBoYW5kJyBpbiB0aGUgY3JpdGljYWwgYXBwYXJhdHVz IHRvCipFeCBkaXVlcnNpcyBhdWRpdGlzLiogU29tZSBwYXJ0cyBvZiA8c3BhbgpzdHlsZT0iZm9u dC12YXJpYW50OnNtYWxsLWNhcHM7Ij5tczwvc3Bhbj4gQm9kbGV5IDg2MCBhbHNvIHNob3cgb3Ro ZXIKY29udGVtcG9yYXJ5IGhhbmRzIHRoYXQgbWFrZSBhZGRpdGlvbmFsIGNvcnJlY3Rpb25zIGFu ZCBhZGQgdGhlCm9jY2FzaW9uYWwgZ2xvc3MgaW4gdGhlIHBhcmFwaHJhc2Ugb24gUHNhbG0gMSBh bmQgKkFkIGhhYmVuZGFtCm1lbW9yaWFtKi4gSW4gKlN1cGVyIHBzYWxtb3MsKiBzb21lIG5vdGVz IGFyZSBhbHNvIGZvdW5kIGluIHRoZSBtYXJnaW5zCmluIGEgZm91cnRlZW50aC1jZW50dXJ5IGhh bmQgKHNvbWV0aW1lcyBub3RpbmcgdGVybXMsIGZvciBhbiBpbmRleCB0bwp0aGUgUHNhbG1zIGNv bW1lbnRhcnkgZm91bmQgaW4gdGhlIGJhY2sgb2YgdGhlIGJvb2spLgoKRXZlbiBpZiBvbmUgdGhp bmtzIGl0IHBvc3NpYmxlIHRoYXQgdW5pcXVlIGNvcGllcyBvZiB0aGUgd29ya3MgdGhhdApzdXJ2 aXZlIGluIHRoZSBzYW1lIGhhbmQgYW5kIHdpdGggdGhlIHNhbWUga25vd2xlZGdlYWJsZSBjb3Jy ZWN0b3IgY291bGQKaGF2ZSBiZWVuIG1hZGUgYWZ0ZXIgdGhlIGF1dGhvcidzIGRlYXRoLCB0aGUg ZGlmZmVyZW5jZXMgaW4gdGhlCmFycmFuZ2VtZW50IG9mIHRoZSBjb21tZW50YXJ5IGluIHRoZSB0 ZXh0cyBlc3RhYmxpc2ggdGhlIGF1dGhvcidzCmludm9sdmVtZW50LiBUaGUgY29tbWVudGFyaWVz IGluICpFeCBkaXVlcnNpcyBhdWRpdGlzKiBhbmQgdGhlIHdvcmtzIGluCnRoZSBQZW1icm9rZSBD b2xsZWdlIG1hbnVzY3JpcHQgd2VyZSBjb3BpZWQgYWxvbmcgd2l0aCB0aGUgcmVzdCBvZiB0aGUK dGV4dCwgYW5kIHRoZSBwYWdlIGlzIHJ1bGVkIGluIHN1Y2ggYSB3YXkgdG8gYWNjb21tb2RhdGUg cHJvc2UgYXMgd2VsbAphcyB2ZXJzZS4gT24gdGhlIG90aGVyIGhhbmQsIHRoZSBQc2FsbSAxIHBh cmFwaHJhc2UgYW5kICpBZCBoYWJlbmRhbQptZW1vcmlhbSwqIHRoZSBmaXJzdCBhbmQgbGFzdCB3 b3JrcyBmb3VuZCBpbiA8c3BhbgpzdHlsZT0iZm9udC12YXJpYW50OnNtYWxsLWNhcHM7Ij5tczwv c3Bhbj4gQm9kbGV5IDg2MCwgd2VyZSBvcmlnaW5hbGx5CmFycmFuZ2VkIG9uIHRoZSBwYWdlIHRv IGluY2x1ZGUgdmVyc2Ugb25seSB3aXRob3V0IGEgY29tbWVudGFyeS4gVGhlCmNvbW1lbnRzIG9u IHRoZXNlIHdvcmtzIGFyZSBhZGRlZCBpbiBhIHJhdGhlciBoYXBoYXphcmQgd2F5IHdoZXJldmVy CnRoZXkgY2FuIGJlIG1hZGUgdG8gZml0IG9uIHRoZSBwYWdlLCBidXQgdGhleSBhcmUgd3JpdHRl biBpbiBhIG5lYXQKZmFzaGlvbiwgYW5kIGFyZSBmb3JtYWwgZXhwbGFuYXRpb25zIHJhdGhlciB0 aGFuIG9mZi1oYW5kIHJlbWFya3MgZnJvbSBhCnJlYWRlciwgZm9ybWluZyAnYSBjb21wbGV4IGFw cGFyYXR1cyBvZiBsaXRlcmFyeSBjaXRhdGlvbnMgZnJvbSBhCnZhcmlldHkgb2YgYXV0aG9yaXRh dGl2ZSBzb3VyY2VzJywgYXMgRGlua292YS1CcnV1biBvYnNlcnZlZCBvZiB0aGUKZ2xvc3NlcyB0 byBQc2FsbSAxLlteMzddIFdoaWxlIHRoZSBvcmlnaW5hbCBoYW5kIG9mIHRoZSB0ZXh0IGFkZHMg dGhlCmxhcmdlc3QgYmF0Y2gsIG1hbnkgaGF2ZSBiZWVuIGFkZGVkIG92ZXIgYW4gZXh0ZW5kZWQg cGVyaW9kIG9mIHRpbWUsIHRvCmp1ZGdlIGZyb20gdGhlIG1hbnkgc2hhZGVzIG9mIGluayBhbmQg dmFyaWF0aW9ucyBpbiB0aGUgaGFuZCwgYW1vbmcKd2hpY2ggdGhlIGNvcnJlY3RvciBjYW4gc29t ZXRpbWVzIGJlIGZvdW5kLiBJZiB0aGlzIG1hdGVyaWFsIGhhZCBiZWVuCmF2YWlsYWJsZSB3aGVu IHRoZSBib29rIHdhcyBmaXJzdCB3cml0dGVuLCBhbmQgZXNwZWNpYWxseSBpZiB0aGUgYm9vawpo YWQgYmVlbiBjb3BpZWQgZnJvbSBhIGNvbXBsZXRlIGV4ZW1wbGFyLCBvbmUgd291bGQgYXNzdW1l IHRoYXQgdGhlCnNjcmliZSB3b3VsZCBoYXZlIGFycmFuZ2VkIHRoZW0gaW4gdGhlIHNhbWUgZm9y bWFsIGZhc2hpb24gYXMgdXNlZCBpbgoqRXggZGl1ZXJzaXMgYXVkaXRpcy4qCgpHaXZlbiB0aGF0 IHRoZSBlbnRpcmV0eSBvZiBib3RoIG1hbnVzY3JpcHRzIGNvbnRhaW5pbmcgU2FtdWVsJ3Mgd29y a3MgaXMKaW4gdGhlIHNhbWUgaGFuZCwgb25lIG1pZ2h0IGFzayB3aGV0aGVyIHRoZSBhdXRob3Ig aGltc2VsZiBtaWdodCBoYXZlCndyaXR0ZW4gdGhlbTsgdGhpcyBzZWVtcyB1bmxpa2VseSwgb24g YmFsYW5jZS4gU2FtdWVsJ3MgcmVsYXRpb25zaGlwCndpdGggaGlzIHNjcmliZSBjZXJ0YWlubHkg bXVzdCBoYXZlIGJlZW4gbG9uZy10ZXJtLiBJdCBzZWVtcyBvZGQgaW4gc29tZQp3YXlzIHRoYXQg U2FtdWVsIHdvdWxkIGhhdmUgY29tcG9zZWQgYWRkaXRpb25hbCBjb21tZW50cyBhZnRlciBoYXZp bmcKc29tZW9uZSBlbHNlIGNvcHkgb3V0IGhpcyB2ZXJzZXMsIGFuZCB0aGVuIGhhdmUgdGhhdCBz YW1lIHBlcnNvbiByZXR1cm4KdG8gZml0IHRoZW0gaW4gd2hlcmV2ZXIgcG9zc2libGU7IGJ1dCBw ZXJoYXBzIGhlIGhhZCBub3QgcGxhbm5lZCB0aGUKY29tbWVudGFyaWVzIGF0IGFsbCwgYW5kIG9u bHkgZGVjaWRlZCB0byBhZGQgdGhlbSBhZnRlciBzZWVpbmcgdGhlCnN1Y2Nlc3Mgb2YgKkV4IGRp dWVyc2lzIGF1ZGl0aXMqIGFuZCB0aGUgd29ya3MgaW4gdGhlIFBlbWJyb2tlCm1hbnVzY3JpcHQu IENlcnRhaW5seSwgdGhleSB3ZXJlIHRyZWF0ZWQgYXMgd29ya3MgaW4gcHJvZ3Jlc3MsIGFzIHRo ZXJlCmFyZSBhbHNvIHZlcnNlcyBhZGRlZCB0byAqQWQgaGFiZW5kYW0gbWVtb3JpYW0qIHRoYXQg c2VlbSB0byBoYXZlIGJlZW4KaW1wcm92ZW1lbnRzIHJhdGhlciB0aGFuIG9taXNzaW9ucyB0aHJv dWdoIHNjcmliYWwgZXJyb3IuIFRoZSBjbGVhcmVzdApldmlkZW5jZSBhZ2FpbnN0IHRoZSBpZGVh IHRoYXQgdGhlIHNjcmliZSBtaWdodCBiZSBpZGVudGlmaWVkIHdpdGggdGhlCmF1dGhvciBpcyB0 aGUgcmVhbGl0eSB0aGF0LCBhdCBsZWFzdCBpbiB0aGUgY2FzZSBvZiAqRXggZGl1ZXJzaXMKYXVk aXRpcywqIHRoZSBzY3JpYmUgd2FzIG5vdCBhbHdheXMgYWJsZSB0byByZWFkIHRoZSBleGVtcGxh ciwgYnV0IHdhcwpvYnZpb3VzbHkgY29uY2VybmVkIHRvIHdyaXRlIHByZWNpc2VseSB3aGF0IGhl IHNhdy4gSW4gcGFydGljdWxhciwgdGhlCnNjcmliZSBvZnRlbiB3cml0ZXMgJ2MnIG9yICd0JyBm b3IgJ20nIGFuZCAnbicgKGdpdmluZyB1cywgZm9yIGV4YW1wbGUsCidhY3VtYXJldHVyJyBmb3Ig J2FuaW1hcmV0dXInLCAnaXV0aWJyYScgZm9yICd1bWJyYScsICdjb25zaWRlcmF0aXMnIGZvcgon Y29uc2lkZXJhbnMnLCAnc2l0aXVtJyBmb3IgJ3NpbnVtJykgYW5kIGZvciAncicgKCd0ZWN0dW0n IGZvciAncmVjdHVtJywKJ2l1cmF0ZScgZm9yICdpdXJhcmUnLCAnY29uc2lkZXJhdGUnIGZvciAn Y29uc2lkZXJhcmUnLCAnY2FyaGFsb2d1cycgZm9yCidjYXRoYWxvZ3VzJywgJ2ZpZXRlJyBmb3Ig J2ZpZXJpJzsgaW4gcmV2ZXJzZSwgJ2lyYScgZm9yICdpdGEnKS4gVGhlcmUKYXJlIGFsc28gc29t ZSBsYWN1bmFlIHRoYXQgc2VlbSB0byBpbmRpY2F0ZSB0aGF0IHRoZSBzY3JpYmUgY291bGQgbm90 CnJlYWQgdGhlIGV4ZW1wbGFyLCBsYXRlciBmaWxsZWQgaW4gYnkgdGhlIGNvcnJlY3Rvci4KClRo aXMgY29ycmVjdG9yIGlzIGludGltYXRlbHkgZmFtaWxpYXIgd2l0aCB0aGUgdGV4dCwgYW5kIHNl ZW1zIHRvIGhhdmUKZ29uZSB0aHJvdWdoIGl0IG1ldGhvZGljYWxseSBhZnRlciBpdCB3YXMgY29w aWVkOyBoZSBsZWF2ZXMgYSB2ZXJ5IGZhaW50Cm5vdGUgaW4gdGhlIGxvd2VyIGNvcm5lciBvZiA8 c3BhbgpzdHlsZT0iZm9udC12YXJpYW50OnNtYWxsLWNhcHM7Ij5tczwvc3Bhbj4gQm9kbGV5IDg2 MCwgZm9sLiAxMDNyIHRoYXQKcmVhZHMgJ3VzcXVlIGh1bmMgaW4gcGFydGUnLiBTb21lIG9mIHRo ZSBjb3JyZWN0aW9ucyBjb3VsZCBoYXZlIGJlZW4KbWFkZSBieSBhbnlvbmUgd2l0aCBhbiBleGVt cGxhciwgYnV0IHNvbWUgb2YgdGhlbSBzZWVtIHRvIGJlIG9yaWdpbmFsLAppbiBwYXJ0aWN1bGFy IHRoZSBmaXZlIHBvaW50cyBpbiB0aGUgdGV4dCB3aGVyZSB0aGUgY29ycmVjdG9yIGFkZHMgYQp2 YXJpYW50IHdvcmQgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIHZlcnNlIChlLmcuICp1ZWwgbGVnaXQq IGZvciAqcG9zdWl0KgphdCAwMDApLiBUaGlzIGRldmljZSBpcyBhbHNvIGZvdW5kIGluIFNhbXVl bCdzIG90aGVyIHBvZXRpYyB3b3JrcywKd3JpdHRlbiBieSBib3RoIHRoZSBjb3JyZWN0b3IgYW5k IHRoZSB0ZXh0IGhhbmQsIHRob3VnaCBvbmx5IGJ5IHRoZQpjb3JyZWN0b3IgaW4gKkV4IGRpdWVy c2lzIGF1ZGl0aXMsKiB3aGljaCBsZW5kcyB3ZWlnaHQgdG8gdGhlIGlkZWEgdGhhdAp0aGV5IGFy ZSBhbiBhZGRpdGlvbiBvZiBTYW11ZWwgcmF0aGVyIHRoYW4gc29tZXRoaW5nIGZyb20gdGhlIG9y aWdpbmFsCm1hdGVyaWFsIG9mIFdpbGxpYW0gZGUgTW9udGlidXMuIEluIG1vc3QgY2FzZXMsIHRo ZXkgbm90ZSBhIHdvcmQgdGhhdApzaG91bGQgYmUgdW5kZXJzdG9vZCBpbiBwbGFjZSBvZiB0aGUg b25lIGdsb3NzZWQsIGJ1dCB0aGV5IGFyZSB1c3VhbGx5CnVubWV0cmljYWwgYWx0ZXJuYXRpdmVz LCB0aHVzIHdoeSB0aGUgb3JpZ2luYWwgdmVyc2UgaXMgbm90IGNoYW5nZWQKKHdoaWNoIHRoZSBj b3JyZWN0b3IgZG9lcyBub3QgaGVzaXRhdGUgdG8gZG8pLiBUaGVyZSBhcmUgYWxzbyBjYXNlcyBp bgp3aGljaCBpdCBzZWVtcyBsaWtlbHkgdGhhdCB0aGUgY29ycmVjdG9yIGlzIHJldmlzaW5nIHRo ZSB3b3JrIHJhdGhlcgp0aGFuIG1ha2luZyBhIGNvcnJlY3Rpb24gZnJvbSBhbiBleGVtcGxhciwg YXMgd2hlbiAnbXVsdGknIGlzIGNoYW5nZWQgdG8KJ1BoYXJpc2VpJyB0byBtYXRjaCB0aGUgVnVs Z2F0ZSBhdCAwMDAsIG9yIHdoZW4gYSBzZWNvbmQgJ3F1ZScgaXMKcmVtb3ZlZCBhdCAwMDAuIFRo ZSBjb3JyZWN0b3IgYWxzbyBjYXJlZnVsbHkgcmV2aXNlcyB0aGUgcHVuY3R1YXRpb24sCmFkZGlu ZyBwYXJ0aWN1bGFybHkgKnB1bmN0aSBlbGV1YXRpKiAo74WhKSB0byB0aGUgdmVyc2VzLiBUaGVz ZQpjb3JyZWN0aW9ucywgbWFkZSBzbyBtdWNoIGluIGtlZXBpbmcgaW4gU2FtdWVsJ3Mgc3R5bGUg YW5kIHdpdGggdmVyeQpoaWdoIGFjY3VyYWN5LCB3aGlsZSBpbiBhcHBlYXJhbmNlIG5vdCBiZWxv bmdpbmcgdG8gYSBwcm9mZXNzaW9uYWwKc2NyaWJlLCBhcmUgdmVyeSBsaWtlbHkgbWFkZSBkaXJl Y3RseSBieSB0aGUgYXV0aG9yLgoKKlRoZSBNYW51c2NyaXB0KgotLS0tLS0tLS0tLS0tLS0tCgpU aGUgdW5pcXVlIG1hbnVzY3JpcHQgb2YgKkV4IGRpdWVyc2lzIGF1ZGl0aXMsKiBPeGZvcmQsIEJv ZGxlaWFuCkxpYnJhcnksIDxzcGFuIHN0eWxlPSJmb250LXZhcmlhbnQ6c21hbGwtY2FwczsiPm1z PC9zcGFuPiBCb2RsZXkgODYwCig8c3BhbiBzdHlsZT0iZm9udC12YXJpYW50OnNtYWxsLWNhcHM7 Ij4qc2MqPC9zcGFuPiAyNzIzKSwgaXMgd3JpdHRlbgplbnRpcmVseSBpbiBMYXRpbiBvbiBwYXJj aG1lbnQsIGFycmFuZ2VkIGluIHRoZSBzdGFuZGFyZApoYWlyLWZsZXNoLWZsZXNoLWhhaXIgb3Jk ZXIsIHdpdGggcGFnZXMgbWVhc3VyaW5nIDI3MCDDlyAyMDAgbW0gKHZhcmlhYmxlCmJ5IHNldmVy YWwgbWlsbGltZXRyZXMpLiBJdCBiZWxvbmdlZCB0byB0aGUgQmVuZWRpY3RpbmUgYWJiZXkgb2Yg QnVyeSBTdApFZG11bmRzIGF0IGxlYXN0IGJ5IHRoZSBmb3VydGVlbnRoIGNlbnR1cnksIGFzIGV2 aWRlbmNlZCBieSBhIG5vdGUgb24KdGhlIGZseWxlYWYgaW4gdGhlIGhhbmQgb2YgbGlicmFyaWFu IEhlbnJ5IEtpcmtlc3RlZGUgKGMuIDEzMTQtLWMuCjEzNzgpOgoKPiBMaWJlciBtb25hY2hvcnVt IHNhbmN0aSBFZG11bmRpIGluIHF1byBjb250aW5lbnR1clwKPiBQb3N0aWxsZSBzZXUgY29sbGVj dGEgc3VwZXIgcHNhbHRlcml1bVwKPiBpbiBzY29saXMgbWFnaXN0cmkgRy4gZGUgbW9udGlidXNc Cj4gQ29sbGVjdGEgc2FtdWVsaXMgcHJlc2JpdGVyaSBpbiBzY29saXMgcHJlZGljdGlzLgoKQSBw cmVzc21hcmsgb2YgQi4gMjMzIGlzIGFsc28gZnJvbSB0aGUgYWJiZXkgbGlicmFyeSwgY2F0ZWdv cml6aW5nIGl0CndpdGggb3RoZXIgY29tbWVudGFyaWVzIG9uIHRoZSBQc2FsbXM7IEIuIDIzMSwg Qi4gMjMyLCBhbmQgQi4gMjQwLCBzdGlsbApzdXJ2aXZpbmcgaW4gbW9kZXJuIGxpYnJhcmllcywg c2hhcmUgdGhpcyBlbGVtZW50LlteMzhdIEZvbGxvd2luZyB0aGUKZGlzc29sdXRpb24sIHRoZSBi b29rIGV2ZW50dWFsbHkgbWFkZSBpdHMgd2F5IHdpdGggbWFueSBvdGhlciBCdXJ5Cm1hbnVzY3Jp cHRzIHRvIFBlbWJyb2tlIENvbGxlZ2U7W14zOV0gaXQgaXMgbGlzdGVkIHRoZXJlIGluIHRoZSBz dXJ2ZXkKcHVibGlzaGVkIGJ5IEphbWVzIGluIDE2MDAuW140MF0gVGhlICpTdW1tYXJ5IENhdGFs b2d1ZSogY29uamVjdHVyZXMKdGhhdCBpdCB3YXMgYWNxdWlyZWQgYnkgdGhlIEJvZGxlaWFuIExp YnJhcnkgaW4gMTYwMy0tNC4gTm8gZXZpZGVuY2Ugb2YKb3duZXJzaGlwIGZyb20gQ2FtYnJpZGdl IGlzIHRvIGJlIGZvdW5kIGluIHRoZSBtYW51c2NyaXB0IGl0c2VsZjsgdGhlCm1hcmtzICdNcyBN b2QgMTI0JyBhbmQgJ1RoIFMgNS44JyBmb3VuZCBvbiB0aGUgZmx5bGVhZiBhbmQgZm9sLiAxciBh cmUKZnJvbSBPeGZvcmQuCgpUaGUgbWFudXNjcmlwdCBpcyBjb21wb3NpdGUsIGNvbnNpc3Rpbmcg b2YgdGhyZWUgc2VwYXJhdGUgJ2Jvb2tsZXRzJywKY29sbGF0ZWQgaSwgMV44XiB8fCAyXjheLS02 XjheLCA3Xig4LS0zLFxcIDYvNy84Y2FuYyleLCA4XjheLS0xMl44XiB8fAoxM144Xi0tMjReOF4s IDI1Xig4KzIsXFwgNC81YWRkKV4sIDI2XjheLCBpLiAoVGhlIG9yaWdpbmFsIGZvbC4gMjA3IHdh cwpjYW5jZWxsZWQsIGFuZCB0aGUgZXhpc3RpbmcgbGVhZiBhdHRhY2hlZCB0byB0aGUgc3R1Yi4p IEl0IGlzIG5vdAphbHRvZ2V0aGVyIGNsZWFyIHdoZW4gdGhlIGJvb2sgd2FzIGFzc2VtYmxlZCBp biB0aGlzIGZhc2hpb24uIFRoZQpzZXBhcmF0ZSBmb2xpYXRpb24gb2YgdGhlIFBzYWxtcyBjb21t ZW50YXJ5LCBxdWlyZXMgMi0tMTIsIGluIGEKZm91cnRlZW50aC1jZW50dXJ5IGhhbmQsIHdpdGgg bGVhdmVzIGFkZGVkIGZvciBhIGNvcnJlc3BvbmRpbmcgaW5kZXggYXQKdGhlIGJhY2sgb2YgdGhl IGJvb2ssIHByb2JhYmx5IHN1Z2dlc3RzIHRoYXQgdGhlIGJvb2sgd2FzIHJlYm91bmQgYXJvdW5k CnRoaXMgdGltZSwgYnV0IGl0IGlzIG5vdCBjbGVhciB3aGV0aGVyIHRoaXMgYWxzbyBpbnZvbHZl ZCBhCnJlYXJyYW5nZW1lbnQgb2YgaXRzIGNvbnRlbnRzLiBLaXJrZXN0ZWRlJ3Mgbm90aWNlIGhh cHBlbnMgdG8gcmVwZWF0IHRoZQppbmZvcm1hdGlvbiBmcm9tIHRoZSBmaXJzdCBhbmQgbGFzdCBm b2xpb3Mgb2YgZWFjaCBvZiB0aGUgbGFyZ2VzdApib29rbGV0cywgYW5kIG1pZ2h0IHRodXMgc3Vn Z2VzdCBpdHNlbGYgYXMgYmVpbmcgZG9uZSBmcm9tIHRoZQpwZXJzcGVjdGl2ZSBvZiBoYXZpbmcg c2VlbiB0aGVzZSBhcyBzZXBhcmF0ZSBib29rczsgYnV0IGlmIHRoaXMgd2VyZSBoaXMKbWV0aG9k b2xvZ3ksIGl0IHdvdWxkIGJlIGN1cmlvdXMgdGhhdCBoZSBzaG91bGQgb21pdCBhbnkgbWVudGlv biBvZiB0aGUKcGFyYXBocmFzZSBvZiBQc2FsbSAxLCBhbmQgaXQgc2hvdWxkIGFsc28gYmUgbm90 ZWQgdGhhdCBoZSBhcHBlYXJzIHRvCnNlZSB0aGUgdW5pZnlpbmcgZmFjdG9yIGluIHRoZSBib29r IGFzIFdpbGxpYW0gZGUgTW9udGlidXMgcmF0aGVyIHRoYW4KU2FtdWVsIFByZXNiaXRlcjsgaXQg ZG9lcyBub3Qgc2VlbSB0aGF0IGhlIGV2ZW4gdGhvdWdodCBvZiB0aGUgUHNhbG1zCmNvbW1lbnRh cnkgYXMgaGF2aW5nIGJlZW4gcmVjb3JkZWQgYnkgU2FtdWVsLiBUaGUgcGxhY2VtZW50IG9mIHRo ZSBQc2FsbQoxIHBhcmFwaHJhc2UsIG9uIHRoZSBvdGhlciBoYW5kLCBpcyB0b28gZmVsaWNpdG91 cyBpbiBmb2xsb3dpbmcgdGhlCnBhdHRlcm4gb2YgUGVtYnJva2UgQ29sbGVnZSwgPHNwYW4Kc3R5 bGU9ImZvbnQtdmFyaWFudDpzbWFsbC1jYXBzOyI+bXM8L3NwYW4+IDExNSBmb3IgaXQgdG8gaGF2 ZSBiZWVuIGFuCmFjY2lkZW50YWwgcGxhY2VtZW50IGJ5IHNvbWVvbmUgdW5hd2FyZSBvZiBTYW11 ZWwncyBhdXRob3JzaGlwLiBUaGlzCnN1Z2dlc3RzIHRoYXQgc29tZW9uZSBhd2FyZSBvZiBTYW11 ZWwncyBhdXRob3JzaGlwIGFzc2VtYmxlZCB0aGUgYm9vawpiZWZvcmUgdGhlIHRpbWUgb2YgS2ly a2VzdGVkZSwgcG9zc2libHkgZXZlbiB0aGUgYXV0aG9yIGhpbXNlbGYuCgpUaGlzIGZpcnN0IHF1 aXJlIChmb2xzLiAxLS04KSBpcyBpbiBjb2RpY29sb2dpY2FsIHRlcm1zIGluZGVwZW5kZW50LCBi dXQKaXQgZG9lcyBub3QgYXBwZWFyIHRvIGhhdmUgY2lyY3VsYXRlZCBvbiBpdHMgb3duLCBzaW5j ZSBpdHMgZmluYWwgZm9saW8KaXMgbXVjaCBjbGVhbmVyIHRoYW4gdGhlIGZpcnN0LiBBIHNwYWNl IG9mIGhhbGYgYSBwYWdlIGF0IHRoZSBlbmQgb2YKZm9sLiA4diBjb25maXJtcyB0aGF0IG5vIGZv bGxvd2luZyB0ZXh0IGhhcyBiZWVuIGxvc3QsIHdoaWxlIHRoZSBsYWNrIG9mCmFuICpleHBsaWNp dCogZnVydGhlciBzdWdnZXN0cyB0aGF0IGl0IHdhcyBub3QgaW50ZW5kZWQgZm9yIHRoZSBlbmQg b2YgYQpib29rLiBJdCBmaXRzIHdpdGggKlN1cGVyIHBzYWxtb3MqIHZlcnkgY29udmVuaWVudGx5 LCBhcyBpdCBzdXBwbGVtZW50cwp0aGF0IGNvbW1lbnRhcnkncyBsYWNrIG9mIHRoZSBmaXJzdCB2 ZXJzZXMgb2YgUHNhbG0gMS4gVGhlIHBhZ2UgaGFzIGEKd3JpdGluZyBzcGFjZSBvZiAxMDkgw5cg MjIwOyB0aGUgbGluZXMgYXJlIDExIG1tIGFwYXJ0LCBjb250YWluaW5nCmxldHRlcnMgNiBtbSBo aWdoLiBJdCBpcyBydWxlZCBtb3N0bHkgaW4gcGVuY2lsLCB3aXRoIHNvbWUgb2YgdGhlCm1hcmdp bmFsIGNvbW1lbnRzIHJ1bGVkIGluIGNyYXlvbi4gVGhlIHBhZ2UgaXMgb25seSBydWxlZCBmb3Jt YWxseSBmb3IKdGhlIHZlcnNlczsgcnVsZXMgYXJlIGFkZGVkIGZvciB0aGUgZ2xvc3NlcyBvbiBh biBhZCBob2MgYmFzaXMuIEFuCm9wZW5pbmcgY2FwaXRhbCBsZXR0ZXIgaXMgZGVjb3JhdGVkIGlu IHJlZCBhbmQgYmx1ZSB3aXRoIHRoZSBhcmFiZXNxdWUKZGVjb3JhdGlvbnMgY29tbW9uIGluIHRo aXMgcGVyaW9kIChwcmltYXJpbHkgcmVkKS4gVGhlIHZlcnNlcyBvZiB0aGUKcHNhbG0gdGhhdCBh cmUgcGFyYXBocmFzZWQgYXJlIHdyaXR0ZW4gaW4gcmVkIGFib3ZlIHRoZSBhcHBsaWNhYmxlIGxp bmVzCm9mIHBvZXRyeS4gUGFyYXBoIG1hcmtzIGluZGljYXRpbmcgbmV3IHNlY3Rpb25zIG9mIHRo ZSBwb2VtIGFsdGVybmF0ZQpiZXR3ZWVuIHJlZCBhbmQgYmx1ZS4gU29tZSBwZW4gdHJpYWxzLCBw cm9iYWJseSBmcm9tIHRoZSBsYXRlIGZvdXJ0ZWVudGgKb3IgZWFybHkgZmlmdGVlbnRoIGNlbnR1 cnksIGFyZSBhZGRlZCBvbiAxdiBhbmQgM3IuIFRoZSBhZGRpdGlvbiBvZgpjb21tZW50cyBpcyBx dWl0ZSBoZWF2eSB1cCB0byA1ciwgYnV0IHN0b3BzIHRoZXJlYWZ0ZXIuIE9uZSBtaWdodAppbWFn aW5lIHRoYXQgaXQgY291bGQgaGF2ZSBiZWVuIGNvcGllZCBzcGVjaWZpY2FsbHkgdG8gcHJlZmFj ZSB0aGUKZm9sbG93aW5nIFBzYWxtcyBjb21tZW50YXJ5IGluIG9yZGVyIHRvIGNvbXBlbnNhdGUg Zm9yIGl0cyBkZWZpY2llbmNpZXMKYWZ0ZXIgU2FtdWVsIGhhZCBnaXZlbiB1cCBvbiBjb21wbGV0 aW5nIHRoYXQgd29yay4KClF1aXJlcyAyIHRocm91Z2ggMTIgKGZvbHMuIDktLTkzKSwgKlN1cGVy IHBzYWxtb3MsKiB1c2UgYSB0d28tY29sdW1uCmxheW91dCwgYW5kIHdlcmUgZXZpZGVudGx5IGlu dGVuZGVkIHRvIGZvcm0gYSBzZXBhcmF0ZSB2b2x1bWUuIEl0IGlzIGEKbXVjaCBsZXNzIGNvbXBs ZXggYWZmYWlyIHRoYW4gdGhlIHJlc3Qgb2YgPHNwYW4Kc3R5bGU9ImZvbnQtdmFyaWFudDpzbWFs bC1jYXBzOyI+bXM8L3NwYW4+IEJvZGxleSA4NjAgaW4gdGVybXMgb2YgaXRzCmxheW91dCBhbmQg Y29udGVudHMsIGFuZCBpcyBydWxlZCBpbiBwZW5jaWwuIFRoZSBkZWNvcmF0aW9uIGlzIG9mIHRo ZQpzYW1lIHN0eWxlIGFzIHRoZSByZXN0IG9mIHRoZSBtYW51c2NyaXB0LCBidXQgdGhpcyBjb3Vs ZCBoYXZlIGJlZW4gYWRkZWQKYXQgYSBsYXRlciBzdGFnZS4gRWFjaCBwc2FsbSBiZWdpbnMgd2l0 aCBhIHR3by1saW5lIHZlcnNhbCBhbHRlcm5hdGluZwpiZXR3ZWVuIHJlZCBhbmQgYmx1ZSwgYW5k IHVzaW5nIHRoZSBzZWNvbmQgY29sb3VyIGZvciBiYXNpYyBhcmFiZXNxdWUKZGVjb3JhdGlvbiAo dGhlIGZpcnN0IGJlaW5nIHNsaWdodGx5IG1vcmUgb3JuYXRlKS4gTGVtbWF0YSBmb3IgdGhlClBz YWxtcyBhcmUgb2Z0ZW4gdW5kZXJsaW5lZCBpbiByZWQsIGJ1dCB0aGlzIGhhcyBub3QgYmVlbiBk b25lCnRocm91Z2hvdXQgdGhlIGJvb2suIFRoZSBmaXJzdCBwYWdlIG9mICpTdXBlciBwc2FsbW9z KiAoZm9sLiA5cikKaW5jbHVkZXMgdGhlc2UgbGluZXMgYXQgdGhlIHRvcCBvZiB0aGUgcGFnZSwg d3JpdHRlbiBpbiByZWQgaW5rOgoKPiBIZWMgcXVpIGNvbGwgc3R1ZGlvc2UgcGxlcmFxdWUgbFwK PiAgZWdpIGVnaS5cCj4gUXVlZGFtIHF1ZSBsIGNyZWRpdGUgZGlnbmEgbAoKT25lIG1pZ2h0IHNw ZWN1bGF0ZSB0aGF0IHRoaXMgaXMgYW4gZWFybGllciB2ZXJzaW9uIG9mIHRoZSAnTWVucwpjb25z ZXJ1ZXR1cicgYW5kICdIZWMgcXVpIGNvbGxlZ2l0JyB2ZXJzZXMgYWxyZWFkeSBkZXNjcmliZWQ7 IGl0IGlzCmludGVyZXN0aW5nIHRoYXQgaXQgdXNlcyB0aGUgZmlyc3QgcmF0aGVyIHRoYW4gdGhl IHRoaXJkIHBlcnNvbi4gQXQgdGhlCnZlcnkgdG9wIG9mIDlyLCBwYXJ0aWFsbHkgdHJpbW1lZCwg aXMgYWxzbyAnU2FuY3RpIHNwaXJpdHVzIGFzc2l0IG5vYmlzCmdyYXRpYScsIHRoZSBmaXJzdCBs aW5lIG9mIHRoZSBzZXF1ZW5jZSBoeW1uIGZvciBQZW50ZWNvc3QsIGEgZnJlcXVlbnQKaW52b2Nh dGlvbiBwbGFjZWQgYXQgdGhlIGJlZ2lubmluZ3Mgb2YgY29tbWVudGFyaWVzIGluIHRoaXMgcGVy aW9kLlteNDFdCipEaXN0aW5jdGlvbmVzKiBvbiBmb2xzLiA5ci0tMTR2IHN1bW1hcml6aW5nIHNl Y3Rpb25zIG9mIHRoZSBjb21tZW50YXJ5CmFyZSB3cml0dGVuIGluIGEgbGlnaHRlciBzaGFkZSBv ZiBpbmsgaW4gYSBzbGlnaHRseSBkaWZmZXJlbnQgaGFuZCwKdGhvdWdoIHRoaXMgY291bGQgYmUg dGhlIHNhbWUgcGVyc29uIGFzIHRoZSBib2R5IHRleHQgdXNpbmcgYSBtb3JlCmluZm9ybWFsIHN0 eWxlLiBPbiAxMHItLTEyciBhcmUgZHJhd24gc21hbGwgZmlndXJlcyB3aXRoIHJlZCBwb2ludGVk CmNhcHMgdG8gZHJhdyBhdHRlbnRpb24gdG8gY2VydGFpbiBwYXNzYWdlcy4gVGhlIHBhZ2UgaGFz IGEgd3JpdGluZyBzcGFjZQpvZiBhcm91bmQgMTg4IMOXIDE0MSwgZGl2aWRlZCBpbnRvIHR3byBj b2x1bW5zLCB3aXRoIGxpbmVzIHJ1bGVkIDQgbW0KYXBhcnQsIGFuZCB0aGUgd3JpdGluZyBhYm91 dCB0aGUgc2FtZSBoZWlnaHQuIENhdGNod29yZHMgYXJlIGZvdW5kIGluCnRoZSBib3R0b20tcmln aHQgY29ybmVyIG9mIHRoZSBsYXN0IGZvbGlvIG9mIG1vc3QgcXVpcmVzLiBNYW55IHF1aXJlcwph cmUgYWxzbyBudW1iZXJlZCB3aXRoIGF0IHRoZSBib3R0b20gb2YgdGhlIHBhZ2UgaW4gdGhlIGNl bnRyZSwKYmVnaW5uaW5nIGF0IMK3acK3IChzb21ldGltZXMgYXQgdGhlIGJlZ2lubmluZyBhcyB3 ZWxsIGFzIHRoZSBlbmQpLApzaG93aW5nIHRoYXQgdGhlIG1hbnVzY3JpcHQgd2FzIGV4cGVjdGVk IHRvIGhhdmUgYmVndW4gd2l0aCB0aGUKY29tbWVudGFyeS4gTm8gcXVpcmVzIGFyZSBtaXNzaW5n IHdpdGhpbiwgYXMgdGhlIGxhc3QgaXMgbnVtYmVyZWQgwrd4acK3CmFuZCBhbGwgY2F0Y2h3b3Jk cyBtYXRjaCB3aXRoIHRoZSBmb2xsb3dpbmcgcGFnZSwgYnV0IG1hdGVyaWFsIGlzCm1pc3Npbmcg YWZ0ZXIgdGhpcywgYXMgdGhlIGNvbW1lbnRhcnkgYnJlYWtzIG9mZiBkaXNjdXNzaW5nIFBzYWxt IDgyCndpdGggJ0VjY2xlc2lhIHNlbXBlciBlc3QnIChhbmQgYSBjYXRjaHBocmFzZSAnaW50ZXIg bWFsbGV1bSBldAppbmN1ZGVtJykuIEl0IG1heSBiZSB0aGUgY2FzZSwgaG93ZXZlciwgdGhhdCB0 aGUgZm9saW9zIGFmdGVyIDkzdiB3ZXJlCm5ldmVyIGZpbmlzaGVkLCBhbmQgdGhlcmVmb3JlIGFw cHJvcHJpYXRlZCBmb3Igb3RoZXIgcHVycG9zZXMsIGZvciB0aGUKdGV4dCBiZWdpbnMgd2l0aCBQ c2FsbSAxOjQsIGFuZCB0aGVyZSBhcmUgbWFueSBtb3JlIGRlZmVjdHMuIE9uIGZvbC4KNTNyLCBo YWxmIG9mIHRoZSBmaXJzdCBjb2x1bW4gaXMgZmlsbGVkIChkaXNjdXNzaW5nIFBzYWxtIDMzKSwg YW5kIHRoZQpyZXN0IG9mIHRoZSBsZWFmIGlzIGxlZnQgYmxhbms7IHRoZSB0aHJlZSBsZWF2ZXMg Zm9sbG93aW5nIGhhdmUgYmVlbiBjdXQKb3V0IG9mIHRoZSBib29rLiBUaGUgY29tbWVudGFyeSBw aWNrcyB1cCBhZ2FpbiBvbiBmb2wuIDU0ciBvbiBQc2FsbSA1NQppbiBhIG1vcmUgY29uZGVuc2Vk IGhhbmQsIHRob3VnaCB0aGlzIGNvdWxkIGNvbmNlaXZhYmx5IGJlIHRoZSBzYW1lCnNjcmliZSB0 cnlpbmcgdG8gc2F2ZSBzcGFjZTsgdGhlIHdyaXRpbmcgYWdhaW4gYmVjb21lcyBzbWFsbGVyIGF0 IGZvbC4KODZyICh0aGUgbGluZXMgbm93IHJ1bGVkIDMgbW0gYXBhcnQgYW5kIHdpdGggc2xpZ2h0 bHkgd2lkZXIgY29sdW1ucykuCkJsYW5rcyBhcmUgYWxzbyBsZWZ0IGF0IGZvbHMuIDU3cmEtLWIg KGEgbGl0dGxlIG1vcmUgdGhhbiBoYWxmIGEgY29sdW1uKQphbmQgODl2YSAoYSBmaWZ0aCBvZiBh IGNvbHVtbikuIERlc3BpdGUgaXRzIHVuZmluaXNoZWQgc3RhdGUsIGF0IGxlYXN0Cm9uZSBsYXRl ciByZWFkZXIgZm91bmQgdGhlIGJvb2sgaW50ZXJlc3RpbmcsIGFzIGZvbGlhdGlvbiBpbiBpbmsK KHByb2JhYmx5IGZyb20gdGhlIGZvdXJ0ZWVudGggY2VudHVyeSkgaXMgYWRkZWQgdG8gZmFjaWxp dGF0ZSBhbiBpbmRleAp0aGF0IGlzIGFkZGVkIGluIHRoZSBiYWNrIG9mIHRoZSBib29rIGZyb20g Zm9scy4gMjA3LS04LCBiZWdpbm5pbmcgd2l0aAoxIG9uIDlyLCB3aXRoIGluZGV4IHRlcm1zIG5v dGVkIGluIHRoZSBtYXJnaW5zLgoKUXVpcmVzIDEzLS0yNiAoZm9scy4gOTQtLTIwNiksIGNvbnRh aW5pbmcgKkV4IGRpdWVyc2lzIGF1ZGl0aXMqIGFuZCAqQWQKaGFiZW5kYW0gbWVtb3JpYW0sKiBh cHBlYXIgdG8gaGF2ZSBiZWVuIHdyaXR0ZW4gaW4gYSBjb250ZXh0IGRpZmZlcmVudApmcm9tIHRo YXQgb2YgKlN1cGVyIHBzYWxtb3MuKiBUaGVzZSBxdWlyZXMgZG8gbm90IHVzZSBjYXRjaHdvcmRz LCBidXQKZWFjaCBpcyBudW1iZXJlZCBhdCB0aGUgZW5kIHdpdGggYSBsYXJnZSBSb21hbiBudW1l cmFsIGF0IHRoZSBiYXNlIG9mCnRoZSBwYWdlIGluIHRoZSBjZW50cmUgKHRob3VnaCB0aGVzZSBu dW1iZXJzIGhhdmUgc29tZXRpbWVzIGJlZW4gdHJpbW1lZApmcm9tIHRoZSBib3R0b20pLCBhbmQg d2l0aCBsZXR0ZXJzIGZyb20gJ2EnIHRvICdmJyAod2l0aCBhbiBhZGRpdGlvbmFsCm1hcmsgdW5p cXVlIHRvIGVhY2ggcXVpcmUpIHBlbmNpbGxlZCBpbiB0aGUgYm90dG9tIGlubmVyIGNvcm5lciBv ZiBlYWNoCnBhZ2UgaW4gdGhlIGZpcnN0IGhhbGYgb2YgbW9zdCBxdWlyZXMgdG8gaW5kaWNhdGUg dGhlIGNvcnJlY3Qgc2VxdWVuY2UKb2YgdGhlIGxlYXZlcy4gVGhpcyBpcyB0aGUgc2FtZSBwYXR0 ZXJuIGFzIHRoYXQgZm91bmQgaW4gUGVtYnJva2UKQ29sbGVnZSwgPHNwYW4gc3R5bGU9ImZvbnQt dmFyaWFudDpzbWFsbC1jYXBzOyI+bXM8L3NwYW4+IDExNS4gQWxzbwp1bmxpa2UgdGhlIFBzYWxt cyBjb21tZW50YXJ5LCB0aGUgcXVpcmVzIGFyZSBydWxlZCBpbiBjcmF5b24uIE9uIHRoZQp3aG9s ZSwgdGhlIHF1YWxpdHkgb2YgdGhlIHByb2R1Y3Rpb24gaXMgc2lnbmlmaWNhbnRseSBmaW5lci4g Rm9yIHRoaXMKZW50aXJlIHNlY3Rpb24sIHRpdGxlcyBhcmUgcGxhY2VkIGluIHRoZSBsZWZ0IG1h cmdpbiwgd3JpdHRlbiBpbiByZWQsCmFuZCBlYWNoIHBvZW0gYmVnaW5zIHdpdGggYW4gYXJhYmVz cXVlIGNhcGl0YWwsIHZhcnlpbmcgaW4gcHJpbWFyeQpjb2xvdXIgYmV0d2VlbiByZWQgYW5kIGJs dWUgKHdpdGggdGhlIG90aGVyIGNvbG91ciB1c2VkIGFzIGFuIGFjY2VudCkuClRoZSBmaXJzdCBs ZXR0ZXIgb2YgZWFjaCBsaW5lIG9mIHZlcnNlIGlzIHBsYWNlZCBpbiB0aGUgbGVmdCBtYXJnaW4u IFRoZQpydWJyaWNhdGlvbiB3YXMgZG9uZSBiZWZvcmUgdGhlIGJvb2sgd2FzIGJvdW5kLCBhcyB0 aGUgdGl0bGVzIGFyZSB2ZXJ5CmNsb3NlIHRvIHRoZSBsZWZ0bW9zdCBwYXJ0IG9mIHRoZSBwYWdl IChjb21wYXJlIGEgdGl0bGUgdGhhdCBhcHBlYXJzIHRvCmhhdmUgYmVlbiBmb3Jnb3R0ZW4gaW5p dGlhbGx5IG9uIGZvbC4gOThyLCBuby4gMTggaW4gdGhlIHRleHQpLiBBbiAneCcKaGFzIGJlZW4g bWFya2VkIGluIHBlbmNpbCBpbiB0aGUgbWFyZ2luIHdoZXJlIGVhY2ggdGl0bGUgd2FzIHRvIGJl CnBsYWNlZCwgaW4gYWRkaXRpb24gdG8gYSAncGVyJy8ncGFyJyBzaWduICjqnZEpIGZvciBydWJy aWNhdGVkIHBhcmFwaAptYXJrcyBhbmQgc21hbGwgbGV0dGVycyB0byBzaG93IHdoYXQgc2hvdWxk IGJlIGZpbGxlZCBpbiBieSB0aGUKcnVicmljYXRvci4gQWxsIHRoaXMgaXMgaW4gY29tbW9uIHRv IHRoZSB0d28gd29ya3MgY29udGFpbmVkIGluIHRoZXNlCnF1aXJlcywgYnV0IHRoZXkgZGlmZmVy IHNsaWdodGx5IGluIG90aGVyIHJlc3BlY3RzLiAqRXggZGl1ZXJzaXMKYXVkaXRpcyogKDk0ci0t MTA3dikgaXMgYXJyYW5nZWQgaW4gYSBtYW5uZXIgdGhhdCBmb3JtYWxseSBpbnRlZ3JhdGVzCnRo ZSBwcm9zZSBjb21tZW50YXJ5IGFuZCB2ZXJzZXMsIHByb3ZpZGluZyBhIHdyaXRpbmcgc3BhY2Ug b2YgOTggw5cgMjAxCndpdGggNC41IG1tIGxpbmUgc3BhY2luZy4gTGluZXMgb2YgdmVyc2UgYXJl IGFsbG93ZWQgdHdvIHJ1bGVkIGxpbmVzLAp0aG91Z2ggdGhlIGxldHRlcnMgYXJlIG9ubHkgYWJv dXQgNiBtbSBoaWdoLiBUaGUgZXh0cmEgc3BhY2UgYWJvdmUgdGhlCmxpbmVzIGlzIHVzZWQgZm9y IHRoZSB3YXZ5IGxpbmVzIHRoYXQgZnJlcXVlbnRseSBsaW5rIHRoZSB2ZXJzZXMgdG8gdGhlCmNv bW1lbnRhcnkuIEZvbHMuIDk0LS05NSBhbmQgMTAwLS0xMDEgd2VyZSBpbml0aWFsbHkgcHJpY2tl ZCBmb3IgYQpkaWZmZXJlbnQgbGF5b3V0IHRoYXQgd291bGQgaGF2ZSBwcm92aWRlZCBmb3IgYSBs YXJnZXIgb3V0ZXIgbWFyZ2luOwp0aGlzIG1pZ2h0IGJlIHRoZSByZXN1bHQgb2YgYW4gZXhwZXJp bWVudCB3aXRoIHRoZSBub3Rpb24gb2Ygd3JpdGluZyB0aGUKdmVyc2VzIHRvZ2V0aGVyIGFuZCBw bGFjaW5nIHRoZSBjb21tZW50YXJ5IGluIHRoZSBvdXRlciBtYXJnaW4uIFRoZXJlIGlzCmEgYnJl YWsgb2YgYWJvdXQgYSB0aGlyZCBvZiB0aGUgcGFnZSBhdCB0aGUgZW5kIG9mIG5vLiA1MyBvbiBm b2wuIDEwN3I6Cml0IGlzIHRlbXB0aW5nIHRvIHRha2UgdGhpcyBhcyBldmlkZW5jZSB0aGF0IG5v LiA1NCB3YXMgY29uc2lkZXJlZCBhcwpzZXBhcmF0ZSBmcm9tIHRoZSByZXN0IG9mIHRoZSBtYXRl cmlhbCwgYnV0IHRoaXMgaXMgcHJvYmFibHkgZG9uZSBvbmx5CmJlY2F1c2UgdGhlIG1hdGVyaWFs IG9uIGZvbC4gMTA3diBuZWVkcyB0byBiZSBwbGFjZWQgZW50aXJlbHkgb24gdGhlCnNhbWUgcGFn ZSB0byBiZSBiZXN0IHVuZGVyc3Rvb2QuIERlc3BpdGUgdGhlIGRpZmZlcmVudCBzdHlsZSBvZiB0 aGlzCmxhc3Qgc2VjdGlvbiwgdGhlIGxhY2sgb2YgYSBuZXcgdGl0bGUgYW5kIGEgcGFnZSBsYXlv dXQgdGhhdCBmb2xsb3dzIHRoZQpiYXNpYyBub3JtcyBvZiB0aGUgcHJlY2VkaW5nIG1hdGVyaWFs IGluZGljYXRlcyB0aGF0IGl0IHdhcyBwcm9iYWJseQppbnRlbmRlZCBhcyBwYXJ0IG9mICpFeCBk aXVlcnNpcyBhdWRpdGlzLiogQXMgaGFzIGFscmVhZHkgYmVlbiBub3RlZCwKKkFkIGhhYmVuZGFt IG1lbW9yaWFtKiB1c2VzIHRoZSBzYW1lIGxheW91dCBhcyB0aGUgcGFyYXBocmFzZSBvZiBQc2Fs bQoxLCB1c2luZyBhIHdyaXRpbmcgc3BhY2Ugb2YgODIuNSDDlyAyMDcsIHdpdGggcnVsaW5nIG9u bHkgZm9yIHZlcnNlcyAoMTAKbW0pIGFuZCBnbG9zc2VzIGFkZGVkIGFzIG5lY2Vzc2FyeSBvbiA0 LjUgbW0gcnVsaW5nLiBUaGUgbnVtYmVyIG9mCmdsb3NzZXMgYWRkZWQgdG8gdGhlIHZlcnNlcyBy YW5nZXMgd2lkZWx5IChmcm9tIG5vbmUgdG8gZW5vdWdoIHRvIGZpbGwKbmVhcmx5IHRoZSBlbnRp cmUgcGFnZSkuCgoqU291cmNlcyoKLS0tLS0tLS0tCgpUaGUgd29yayB1c2VzIGJpYmxpY2FsIHRl eHRzIGFzIHRoZSBiYXNpcyBmb3IgbW9zdCBvZiBpdHMgYXJndW1lbnRzLAptYWtpbmcgZnJlcXVl bnQgdXNlIG9mIGFsbGVnb3JpY2FsIGludGVycHJldGF0aW9ucy4gUmVnYXJkbGVzcyBvZiB0aGUK c291cmNlLCB0aGUgbWFqb3JpdHkgb2YgcXVvdGF0aW9ucyBhcmUgaW50cm9kdWNlZCBieSBhIGdl bmVyaWMgcGhyYXNlCnN1Y2ggYXMgJ2RpY2l0dXInIG9yICd1bmRlIGlsbHVkJy4gQmlibGljYWwg c291cmNlcyBhcmUgc29tZXRpbWVzCmlkZW50aWZpZWQgbW9yZSBzcGVjaWZpY2FsbHkgd2l0aCB0 aGUgbmFtZXMgb2YgSmVzdXMsIENocmlzdCwgb3IgUGF1bCwKb3Igbm90aW5nIHRoYXQgYSBxdW90 YXRpb24gb2NjdXJzICdpbiBwc2FsbW8nIG9yICdpbiBld2FuZ2VsaW8nLiBBcyBvbmUKZnJlcXVl bnRseSBmaW5kcyBpbiBtZWRpZXZhbCBib29rcywgcXVvdGF0aW9ucyBjYW4gdmFyeSB3aWxkbHkg YXQgdGltZXMKZnJvbSBhbnkgaWRlbnRpZmlhYmxlIHZhcmlhbnQgb2YgdGhlIFZ1bGdhdGUsW140 Ml0gaW5kaWNhdGluZyB0aGF0IHRoZXkKYXJlIGVpdGhlciBxdW90ZWQgZnJvbSBtZW1vcnkgb3Ig dmlhIGFub3RoZXIgc291cmNlLiBUbyB0YWtlIGFuIGV4dHJlbWUKY2FzZSwgYXQgMjcuMDAwOiAn QWxpYmkgZGljaXR1cjogIlNlcGFyYWJpdCBvdWVzIGFiIGVkaXMgZXQgb3VlcyBzdGF0dWV0CmFk IGRleHRyYW0gZXQgZWRvcyBhZCBzaW5pc3RyYW0iLCBzY2lsaWNldCBib25vcyBkdWNldCBhZCBl dGVybmFtCmJlYXRpdHVkaW5lbSwgbWFsb3MgbWl0dGV0IGFkIGV0ZXJuYW0gZGFtcG5hdGlvbmVt LicgVGhpcyBwYXJhcGhyYXNlcwpNYXR0aGV3IDI1OjMyLS0zMzogJ0V0IGNvbmdyZWdhYnVudHVy IGFudGUgZXVtIG9tbmVzIGdlbnRlcywgZXQKc2VwYXJhYml0IGVvcyBhYiBpbnVpY2VtLCBzaWN1 dCBwYXN0b3Igc2VncmVnYXQgb3VlcyBhYiBoZWRpcywgZXQKc3RhdHVldCBvdWVzIHF1aWRlbSBh IGRleHRyaXMgc3VpcywgaGVkb3MgYXV0ZW0gYSBzaW5pc3RyaXMuJyBBbHRob3VnaAonZGljaXR1 cicgaXMgbm9ybWFsbHkgdXNlZCBmb3IgYSBkaXJlY3QgcXVvdGF0aW9uLCB0aGUgZm9ybSBvZiB0 aGUgd29yZHMKaXMgcmF0aGVyIGRpZmZlcmVudC4gQmlibGljYWwgc291cmNlcyBjYW4gYWxzbyBi ZSB0cmVhdGVkIGluIGEgcmF0aGVyCmZsdWlkIHdheSB0byBzdWl0IHRoZWlyIGRpZGFjdGljIHB1 cnBvc2UuIFF1b3RhdGlvbnMgYXJlIGZyZXF1ZW50bHkKY29tYmluZWQgZnJvbSBub24tY29udGln dW91cyBwYXNzYWdlcyB3aXRob3V0IGFueSBpbmRpY2F0aW9uIHRoYXQgdGhpcwpoYXMgYmVlbiBk b25lIChlLmcuIHRoZSB1c2Ugb2YgTWF0dGhldyBpbiAyNC4wMDAgb3IgdGhlIHF1b3RhdGlvbnMg b2YKUGF1bCBpbiAxLjAwMCkuIEFuICplbmltKiBvciAqYXV0ZW0qIGVhcmx5IGluIGEgcXVvdGF0 aW9uIGlzIGVhcmx5CnJlbW92ZWQsIGFuZCBmaXJzdC1wZXJzb24gdmVyYnMgYXJlIGZyZXF1ZW50 bHkgY2hhbmdlZCBiZXR3ZWVuIHNpbmd1bGFyCmFuZCBwbHVyYWwgKGVzcGVjaWFsbHkgaW4gcXVv dGluZyB0aGUgbGV0dGVycyBvZiBQYXVsKS4KCkZ1cnRoZXIgaW5kaWNhdGluZyB0aGUgZGVncmVl IHRvIHdoaWNoIHBhc3NhZ2VzIHdlcmUgbWVtb3JpemVkLCB0aGUgdGV4dApmb2xsb3dzIHRoZSB0 eXBpY2FsIG1lZGlldmFsIHByYWN0aWNlIG9mIGFiYnJldmlhdGluZyBxdW90YXRpb25zLAplc3Bl Y2lhbGx5IGJpYmxpY2FsIG9uZXMuIEZvciBpbnN0YW5jZSwgYSBxdW90YXRpb24gb2YgUHNhbG0g Njo3IGluCjEwLjAwMCByZWFkczogJ1ZuZGUgZGljaXR1ciBpbiBwc2FsbW8gcGVuaXRlbnRpYWxp OiBMYXVhYm8gcGVyIHNpbmcuCm5vYy4gbGVjLiBtZS4gbGEuIG0uIHN0cmEuIG1lLiByaS4qJyog VGhlIHJlYWRlciBpcyBhcHBhcmVudGx5IGV4cGVjdGVkCnRvIHJlbWVtYmVyIHRoZSBmdWxsIHRl eHQsICdMYXVhYm8gcGVyIHNpbmd1bGFzIG5vY3RlcyBsZWN0dW0gbWV1bToKbGFjcmltaXMgbWVp cyBzdHJhdHVtIG1ldW0gcmlnYWJvLicgVGhpcyBwcmFjdGljZSBpcyBub3QgdXNlZCB3aXRoIGFs bApxdW90YXRpb25zOiBpdCBpcyBtb3N0IGNvbW1vbiBieSBmYXIgd2l0aCB0aGUgUHNhbG1zLCBh cyBvbmUgd291bGQKZXhwZWN0LCBidXQgYWxzbyBvY2N1cnMgd2l0aCBtYW55IHBhc3NhZ2VzIGZy b20gdGhlIEdvc3BlbHMsCnByZWRvbWluYW50bHkgTWF0dGhldywgc3VnZ2VzdGluZyB0aGF0IHRo ZXNlIHdlcmUgdGhlIHRleHRzIHdpdGggd2hpY2gKdGhlIGF1dGhvciB3YXMgbW9zdCBmYW1pbGlh ci4gU29tZSBvZiB0aGVzZSBhcmUgZXhwZWN0ZWQsIHN1Y2ggYXMgdGhlCkRlY2Fsb2d1ZSBvciB0 aGUgcG9wdWxhciBwc2FsbSAqU3VwZXIgZmx1bWluYSBCYWJ5bG9uaXMsKiBhbmQgbWFueSB3b3Vs ZApiZSBmYW1pbGlhciBmcm9tIHRoZSBsaXR1cmd5OyBvdGhlciBwYXNzYWdlcyBzZWVtIGEgbGl0 dGxlIG1vcmUKb2JzY3VyZS5bXjQzXSBTaW1pbGFybHksIGluIFNhbXVlbCdzIHBhcmFwaHJhc2Ug b2YgUHNhbG0gMSwgaXQgaXMKZXZpZGVudCB0aGF0IHRoZSBQc2FsbXMgYXJlIHNvIGZhbWlsaWFy IHRoYXQgdGhleSBhcmUgZXhwZWN0ZWQgdG8gYmUKcmVjb2duaXplZCB3aXRob3V0IGEgc3BlY2lm aWMgY2l0YXRpb24uW140NF0KClRoZXJlIGFyZSBhbHNvIHF1b3RhdGlvbnMgZnJvbSBjbGFzc2lj YWwgYXV0aG9ycyAoSnV2ZW5hbCwgT3ZpZCwKSG9yYWNlKSwgbmV2ZXIgYnkgbmFtZSwgYnV0IHNv bWV0aW1lcyBpZGVudGlmaWVkIGFzIGJlaW5nIGZyb20gYQoncG9ldGEnLiBUaGVyZSBhcmUgc29t ZSByZWZlcmVuY2VzIHRvIHRoZSBsaXR1cmd5ICgnaW4gb3JhdGlvbmUnKSwgd2hpbGUKbWVkaWV2 YWwgYXV0aG9ycyBhcmUgY2l0ZWQgYW5vbnltb3VzbHkgYW5kIG9uY2UgYnkgbmFtZSAoUG9wZQpB bGV4YW5kZXIpLiBQYXRyaXN0aWMgc291cmNlcywgb24gdGhlIG90aGVyIGhhbmQsIGFyZSBhbHdh eXMgYWR2ZXJ0aXNlZAp3aXRoIGEgbmFtZSAoSmVyb21lLCBBdWd1c3RpbmUsIEdyZWdvcnkgdGhl IEdyZWF0LCBDaHJ5c29zdG9tLCBJc2lkb3JlLApPcmlnZW4pLCB0aG91Z2ggdGhlc2UgY2FuIGFs bW9zdCBhbHdheXMgYmUgc2hvd24gdG8gYmUgcXVvdGVkIHZpYSBhIG1vcmUKcmVjZW50IHNvdXJj ZS4gTWFueSBvZiB0aGVzZSBwb2ludCB0byBQZXRlciBMb21iYXJkJ3MgKlNlbnRlbmNlcywqIHRo ZQpjbGFzc2ljIG1lZGlldmFsIHRleHRib29rIG9uIHRoZW9sb2d5IGZyb20gdGhlIHR3ZWxmdGgg Y2VudHVyeSwgd2hvc2UKZXhwbGljYXRpb24gb2YgdGhlb2xvZ2ljYWwgdG9waWNzIGlzIHNvbWV0 aW1lcyBmb2xsb3dlZCBxdWl0ZSBjbG9zZWx5LgpUaGVyZSBpcyBhbHNvIHN1YnN0YW50aWFsIHVz ZSBvZiBHcmF0aWFuJ3MgKkRlY3JldHVtKiAob3JpZ2luYWxseSBjYWxsZWQKKkNvbmNvcmRpYSBk aXNjb3JkYW50aXVtIGNhbm9udW0qKSosKiB0aGUgY291bnRlcnBhcnQgdG8gdGhlICpTZW50ZW5j ZXMqCmZvciBjYW5vbiBsYXcuW140NV0gVGhlcmUgaXMgYWxzbyBzdWJzdGFudGl2ZSB1c2UsIGVz cGVjaWFsbHkgZm9yCmV0eW1vbG9naWVzLCBvZiBib3RoIHRoZSBtYXJnaW5hbCBhbmQgaW50ZXJs aW5lYXIgKkdsb3NhKiAoYXMgaXQgaXMKY2FsbGVkIGF0IDU0LjAwMCkgdG8gdGhlIEJpYmxlLCBs YXRlciBrbm93biBhcyB0aGUgKkdsb3NzYSBvcmRpbmFyaWEsKgp0aG91Z2ggaXRzIHByZWNpc2Ug aW5mbHVlbmNlIGlzIGRpZmZpY3VsdCB0byBwaW4gZG93biBkdWUgdG8gdGhlIGxhY2sgb2YKYW4g ZWRpdGlvbiByZXByZXNlbnRhdGl2ZSBvZiBhIHRleHQgV2lsbGlhbSBvciBTYW11ZWwgbWlnaHQg aGF2ZQp1c2VkLlteNDZdIFBhdHJpc3RpYyB3b3JrcyBhcmUgYWxtb3N0IGFsd2F5cyBxdW90ZWQg dmlhIG9uZSBvZiB0aGVzZQptZWRpZXZhbCBzb3VyY2VzLgoKKkV4IGRpdWVyc2lzIGF1ZGl0aXMq IGhhcyBtYW55IHBhcmFsbGVscyB3aXRoIFBldGVyIHRoZSBDaGFudGVyJ3MKKlZlcmJ1bSBhZGJy ZXVpYXR1bSogYW5kICpTdW1tYSBkZSBzYWNyYW1lbnRpcyBldCBhbmltYWUgY29uc2lsaWlzKi4K VGhleSBhcmUgb2YgYSBzb3J0LCBob3dldmVyLCB0aGF0IG1vc3QgbGlrZWx5IHJlZmxlY3QgYSBz aGFyZWQgbWlsaWV1CnJhdGhlciB0aGFuIGRpcmVjdCB1c2Ugb2YgZWl0aGVyIG9mIHRoZXNlIHdv cmtzLiBUaGVzZSB3b3JrcyBhcHBlYXIgdG8KaGF2ZSBiZWVuIGNvbXBpbGVkIGFmdGVyIFdpbGxp YW0gZGUgTW9udGlidXMgaGFkIGdvbmUgdG8gTGluY29sbiwgdGhlCmVhcmxpZXN0IHZlcnNpb24g b2YgdGhlICpWZXJidW0gYWRicmV1aWF0dW0qIGJlaW5nIGRhdGVkIHRvIDExODctLTkxLAp0aGUg KlN1bW1hIGRlIHNhY3JhbWVudGlzKiB0byAxMTkxLS05MiwgYW5kIHRoZSBsYXRlciB2ZXJzaW9u cyBvZiB0aGUKKlZlcmJ1bSBhZGJyZXVpYXR1bSogdG8gYWZ0ZXIgUGV0ZXIncyBkZWF0aCBpbiAx MTk3LlteNDddIEEgY29weSBvZiB0aGUKKlZlcmJ1bSBhZGJyZXVpYXR1bSogd2FzIHByb2JhYmx5 IGF2YWlsYWJsZSBpbiBMaW5jb2xuIGluIFdpbGxpYW0ncwp0aW1lLCBhcyB0aGUgKkdlbW1hIGVj Y2xlc2lhc3RpY2EqIG9mIEdlcmFsZCBvZiBXYWxlcywgdGhvdWdodCB0byBoYXZlCmJlZW4gd3Jp dHRlbiB3aGlsZSBzdHVkeWluZyBpbiBMaW5jb2xuIGFyb3VuZCAxMTk2LS05OSxbXjQ4XSBpcyBo ZWF2aWx5CmRlcGVuZGVudCBvbiB0aGlzIGJvb2suW140OV0gR2VyYWxkLCBob3dldmVyLCBkZWZp bml0ZWx5IHVzZXMgZWFybGllc3QKdmVyc2lvbiwgbm93IHB1Ymxpc2hlZCBhcyB0aGUgKnRleHR1 cyBwcmlvciwqW141MF0gd2hlcmVhcyAqRXggZGl1ZXJzaXMKYXVkaXRpcyogaGFzIHBhcmFsbGVs cyBpbiBhbGwgdGhyZWUgdmVyc2lvbnMsIHdpdGggdGhlIGxlYXN0CmNvcnJlc3BvbmRlbmNlIHRv IHRoZSAqdGV4dHVzIHByaW9yKiAoYWxsIGFyZSBjaXRlZCBpbiB0aGUgY29tbWVudGFyeSB0bwp0 aGUgdGV4dCBmb3IgY29tcGFyaXNvbikuIFdoaWxlIEdlcmFsZCdzIHVzZSBvZiBQZXRlciB0aGUg Q2hhbnRlciBpcwp2ZXJ5IGRpcmVjdCwgKkV4IGRpdWVyc2lzIGF1ZGl0aXMqIG5ldmVyIHVzZXMg dmVyYmF0aW0gcXVvdGF0aW9uczsgaXQKb2Z0ZW4gdXNlcyB0aGUgc2FtZSBxdW90YXRpb25zIGZy b20gZWFybGllciBzb3VyY2VzIGFzIFBldGVyLCBidXQgaW4gYQp2ZXJ5IGRpZmZlcmVudCB3YXku IFRoZSByZXNlbWJsYW5jZXMgc29tZXRpbWVzIGNvbnNpc3Qgb2Ygbm90aGluZyBtb3JlCnRoYW4g YSBzaW1pbGFyaXR5IG9mIHVudXN1YWwgdm9jYWJ1bGFyeSBvciBhIGtpbmRyZWQgc3RyYWluIG9m IGlkZWFzOwpxdWl0ZSB1bmxpa2UsIGZvciBpbnN0YW5jZSwgdGhlIHVzZSBvZiBQZXRlciBMb21i YXJkJ3MgKlNlbnRlbmNlcyosCndoaWNoIGlzIGZvbGxvd2VkIG11Y2ggbW9yZSBjbG9zZWx5IHdo ZW4gYSBwYXJhbGxlbCBjYW4gYmUgaWRlbnRpZmllZC4KSXQgaXMganVzdCBhcyBpbnRlcmVzdGlu ZyB0byBub3RlIHdoYXQgaXMgbm90IHVzZWQgZnJvbSBQZXRlciB0aGUKQ2hhbnRlcjogaW4gc29t ZSBjYXNlcywgYSBzZWN0aW9uIGluICpFeCBkaXVlcnNpcyBhdWRpdGlzKiB3aXRoIGEgdGl0bGUK aWRlbnRpY2FsIHRvIGEgY2hhcHRlciBvZiB0aGUgKlZlcmJ1bSBhZGJyZXVpYXR1bSogYXBwcm9h Y2hlcyBpdHMKc3ViamVjdCByYXRoZXIgZGlmZmVyZW50bHkuIERlc3BpdGUgdGhlIG51bWJlciBv ZiBzaW1pbGFyaXRpZXMsCnRoZXJlZm9yZSwgb25lIGNhbm5vdCBpZGVudGlmeSBkaXJlY3QgdXNl IG9mIFBldGVyIHRoZSBDaGFudGVyJ3Mgd29ya3MKd2l0aCBhbnkgY2VydGFpbnR5LgoKVGhpcyBz aXR1YXRpb24gaXMgc2ltaWxhciB0byB3aGF0IEdvZXJpbmcgZm91bmQgZm9yIFdpbGxpYW0gZGUK TW9udGlidXMncyAqVHJvcGkqIGFuZCAqRGUgc2VwdGVtIHNhY3JhbWVudGlzKi4gVGhlcmUgd2Fz IG9idmlvdXNseSBzb21lCmZvcm0gb2YgaW5mbHVlbmNlIGJldHdlZW4gV2lsbGlhbSBhbmQgUGV0 ZXIsIGJ1dCBpdCBpcyB1bmNsZWFyIHdoZXRoZXIKdGhpcyBjb25uZWN0aW9uIHdhcyBhbnkgc3Ry b25nZXIgdGhhbiBwcmVzZW5jZSBhdCB0aGUgc2FtZSBzY2hvb2xzIGluClBhcmlzLiBIdWdoIE1h Y0tpbm5vbiBvbmNlIHN1Z2dlc3RlZCB0aGF0IFBldGVyIHRoZSBDaGFudGVyIHdhcyBhCnRlYWNo ZXIgb2YgV2lsbGlhbSBkZSBNb250aWJ1cywgYnV0IEdvZXJpbmcgZm91bmQgdGhlIGV2aWRlbmNl IGZvciB0aGlzCnRvIGJlIHVuc3VzdGFpbmFibGUsIHdoaWxlIGFsbG93aW5nIGZvciB0aGUgcG9z c2liaWxpdHkgdGhhdCB0aGV5IG1pZ2h0CmhhdmUga25vd24gb25lIGFub3RoZXIuW141MV0gSW5k ZWVkLCBpdCBpcyBub3QgZXZlbiBjbGVhciB3aGV0aGVyIEdlcmFsZApvZiBXYWxlcywgdGhvdWdo IGhlIGZvbGxvd2VkIFBldGVyJ3Mgd29yayBzbyBjbG9zZWx5LCB3YXMgYSBkaXJlY3QKc3R1ZGVu dCBvZiBQZXRlciB0aGUgQ2hhbnRlci5bXjUyXSBJdCBpcyBpbnRlcmVzdGluZyB0aGF0IHRoZXJl IGFyZQpwYXNzYWdlcyBpbiAqRXggZGl1ZXJzaXMgYXVkaXRpcyogc2ltaWxhciB0byBsYXRlciB3 b3JrcyB3cml0dGVuIGJ5ClBldGVyJ3Mgc3R1ZGVudHMsIG5vdGFibHkgdGhvc2UgYnkgVGhvbWFz IG9mIENob2JoYW0sW141M10gd2hpY2ggYXBwZWFyCndpdGhvdXQgYW55IGFwcGFyZW50IHBhcmFs bGVsIGluIGVhcmxpZXIgd29ya3MuIE9uZSBtdXN0IGJlIGNhdXRpb3VzCmFib3V0IGRyYXdpbmcg Y29uY2x1c2lvbnMgZnJvbSB0aGlzLCBob3dldmVyLCBhcyB0aGVyZSBhcmUgY2VydGFpbgpwYXNz YWdlcyBpbiAqRXggZGl1ZXJzaXMgYXVkaXRpcyogdGhhdCBoYXZlIG1vcmUgaW4gY29tbW9uIHdp dGggYXV0aG9ycwphcyBsYXRlIGFzIEJvbmF2ZW50dXJlIG9yIFRob21hcyBBcXVpbmFzIHRoYW4g YW55IHB1Ymxpc2hlZCB3b3JrCmNvbnRlbXBvcmFyeSB3aXRoIFdpbGxpYW0gZGUgTW9udGlidXMs IGluZGljYXRpbmcgdGhlIGNvbnRpbnVpdHkgb2YgdGhlCm9yYWwgc2Nob2xhc3RpYyB0cmFkaXRp b24sIGFuZCByZWZsZWN0aW5nIHRoZSBudW1iZXIgb2Ygc291cmNlcyBmcm9tCnRoaXMgcGVyaW9k IHN0aWxsIGxlZnQgdW5wdWJsaXNoZWQuCgoqTWV0cmUgYW5kIFJoeW1lKgotLS0tLS0tLS0tLS0t LS0tLQoKVGhlIHZlcnNlIGlzIHdyaXR0ZW4gaW4gYSBjb21iaW5hdGlvbiBvZiBzaW1wbGUgTGVv bmluZXMgYW5kICplbGVnaQpMZW9uaW5pKiwgd2hpY2ggY29uc2lzdCByZXNwZWN0aXZlbHkgb2Yg Y2xhc3NpY2FsIGhleGFtZXRlcnMgYW5kIGVsZWdpYWMKY291cGxldHMsIHdpdGggdGhlIGFkZGl0 aW9uIG9mIGEgcmh5bWUgYmV0d2VlbiB0aGUgY2Flc3VyYSAoYWx3YXlzCm9jY3VycmluZyBpbiB0 aGUgdGhpcmQgZm9vdCkgYW5kIHRoZSBlbmQgb2YgdGhlIGxpbmUuW141NF0gSXQgYWRtaXJhYmx5 CmFjaGlldmVzIGl0cyBzdGF0ZWQgcHVycG9zZSBvZiBmdW5jdGlvbmluZyBhcyBhIG1lbW9yeSBh aWQsIHdpdGggYW4KdW5jYW5ueSBhYmlsaXR5IHRvIHN0aWNrIGluIG9uZSdzIGhlYWQsIGFuZCBp dCBpcyB3cml0dGVuIGluIGEgZmx1aWQKbWFubmVyIHdpdGggcmVsYXRpdmVseSBmZXcgc3ludGFj dGljYWwgY29udG9ydGlvbnMuCgpXcml0dGVuIGluIExlb25pbmVzIGFyZSAyLCAzLCA0LCA3LCAx NiwgMTctLTE5LCAyMS0tMjQsIDI2LS0zNCwgYW5kCjM2LS01My4gV3JpdHRlbiBpbiAqZWxlZ2kg TGVvbmluaSogYXJlIDEsIDUsIDYsIDgtLTE1LCAxNmEsIDIwLCAyNSwgYW5kCjM1LiBUaGUgcmh5 bWUgaXMgb21pdHRlZCBpbiB0aGUgZmlyc3QgdHdvIHZlcnNlcyBvZiAyLCB0aG91Z2ggdGhlIHNl Y29uZApvZiB0aGVzZSBpcyBhZG9wdGVkIGZyb20gdGhlIHBlbnVsdGltYXRlIHZlcnNlIG9mIDM2 LCB3aGljaCBkb2VzIHJoeW1lLgpUaGUgbGFzdCBzZWN0aW9uLCA1NCAod2hpY2gsIGFzIGhhcyBi ZWVuIG5vdGVkLCBpcyBvZiBhIHJhdGhlciBkaWZmZXJlbnQKY2hhcmFjdGVyIGZyb20gdGhlIHJl c3QgaW4gYSBudW1iZXIgb2YgcmVzcGVjdHMpIGlzIGluIGhleGFtZXRlciwgYnV0CnVzZXMgYW4g aW5jb25zaXN0ZW50IHNjaGVtZSBmb3IgaXRzIHJoeW1lcy4gSXQgdXNlcyBMZW9uaW5lcyBmb3Ig dGhlCmZpcnN0IGFuZCBmb3VydGggdmVyc2VzOyB2ZXJzZXMgdHdvIGFuZCB0aHJlZSBhcmUgKmNv bGxhdGVyYWxlcyogKHdpdGgKdGhlIGxhc3Qgc3lsbGFibGUgYmVmb3JlIHRoZSBjYWVzdXJhIHJo eW1pbmcgd2l0aCB0aGUgZm9sbG93aW5nIGNhZXN1cmEsCmFuZCBsaWtld2lzZSBmb3IgdGhlIGVu ZCBvZiBlYWNoIGxpbmUpOyB2ZXJzZSBmaXZlIGlzIHVucmh5bWVkLiBUaGlzCm1peHR1cmUgaXMg YWxzbyBmb3VuZCBpbiBTYW11ZWwncyB2ZXJzaWZpY2F0aW9uIG9mIFBzYWxtIDEsW141NV0gYW5k IGl0CnNlZW1zIGxpa2VseSB0aGF0IFNhbXVlbCBoaW1zZWxmIHdyb3RlIGl0IHJhdGhlciB0aGFu IFdpbGxpYW0gZGUKTW9udGlidXMuCgpNb3N0IG9mIHRoZSByaHltZXMgYXJlIG1vbm9zeWxsYWJp YywgYXMgdGhlIGZvbGxvd2luZyAodGhlIGZpcnN0IHR3bwp2ZXJzZXMgb2YgNSwgZm9ybWluZyBh biBlbGVnaWFjIGNvdXBsZXQpOgoKPiDEq250xJNyIHwgc8WrciBjxIF8KmTEk3MqIOKAoiDEg2Jy xIN8aMSBbSBwxY9zxa18xKt0IHPErWLErSB8IHPEkypkZXMqXAo+ICBjcsSrbcSVbiDErW4gfCBo xKtzIGTEk3xsKsSTdCog4oCiIHXEq3IgYsWPbsWtfHMgxIF0cXXElSBjxIN8dSpldCoKClRoZXJl IGFyZSBhbHNvIG1hbnkgZGlzeWxsYWJpYyByaHltZXMgKHRoZSBmaXJzdCB0d28gdmVyc2VzIG9m IDE4LCBpbgpoZXhhbWV0ZXIpOgoKPiBzxKsgbcSDbMSVIHwgacWrKnLEgW58ZMSrKiDigKIgZsWN cnxtxIFzIHPEq3QgfCBtxJNucyBtxJVtxY98KnLEgW5kaSpcCj4gcMSTciBwcsSrfG3EgXMgZirE gXx0xY0qIOKAoiBwxJVyIMStfGTFjW7ElcSDIHwgY8WNbW3ElW3Fj3xyKsSBdG8qCgpTb21lIG9m IHRoZSByaHltZXMgYXJlIGEgbGl0dGxlIHRlbnVvdXM6Cgo+IHPEk3ggxKtzfHTEq3MgdcSTcnxi xKsqcyog4oCiIG7Fj3TElXx0IMSTc3PElSB0xJV8bsSTbmTEgyBzxIN8Y8STcmRvKnMqCgpGb3Ig dGhlIG1vc3QgcGFydCwgaG93ZXZlciwgdGhlIHNjaGVtZSBpcyB2ZXJ5IGNvbnNpc3RlbnRseSBh cHBsaWVkLiBJbgphIGZldyBjYXNlcywgb25lIG11c3Qgc3VwcGx5IHRoZSBjb3JyZWN0IHNvdW5k IHdoZW4gaW5kaXZpZHVhbCBsZXR0ZXJzCmFyZSBpbmNsdWRlZCwgYXMgaW4gdGhpcyB2ZXJzZSAo dGhlIHNlY29uZCBvZiAyOSk6Cgo+IHF1xY1kIGTEk3xzxKtnbsSBdCB8IGNbKsSTKl0g4oCiIGfE lW7ElXJ8xIFsxJUgdcSVbCB8IMSTc3Qgc3DElWPErXzEgWwqZSoKClZlcnNlcyBzdWNoIGFzIHRo aXMgY2FuIGJlIGVhc2lseSB1bmRlcnN0b29kIGFzIGxvbmcgYXMgb25lIGtlZXBzIGluCm1pbmQg dGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gY2xhc3NpY2FsIGFuZCBtZWRpZXZhbCBwcm9udW5jaWF0 aW9uIChlLmcuCidjYXVzKmUqJyByaHltZXMgd2l0aCAndGFjZXIqZSonIGF0IDQxLjAwMCkuW141 Nl0KCipFZGl0b3JpYWwgUHJhY3RpY2UqCi0tLS0tLS0tLS0tLS0tLS0tLS0tCgoqRXggZGl1ZXJz aXMgYXVkaXRpcyogaXMgaGVyZSBlZGl0ZWQgaW4gaXRzIGVudGlyZXR5IGZvciB0aGUgZmlyc3Qg dGltZS4KSm9zZXBoIEdvZXJpbmcgcHJldmlvdXNseSBwcmludGVkIHRoZSBmaXJzdCBzZWN0aW9u IGluIGFkZGl0aW9uIHRvIHRoZQpoZWFkaW5ncyBhbmQgZmlyc3QgbGluZXMgZm9yIHRoZSByZXN0 OyBJIGhhdmUgdXNlZCBoaXMgbnVtYmVyaW5nIG9mIHRoZQpzZWN0aW9ucywgd2hpY2ggaXMgc3Ry aWN0bHkgZWRpdG9yaWFsICh3aXRoIHRoZSBzZWN0aW9uIHNlcGFyYXRlZCBmcm9tCjE2IGxhYmVs bGVkIDE2YSkuW141N10gU2VjdGlvbnMgdGhhdCBvdmVybGFwIHdpdGggKlZlcnNhcml1cyogaGF2 ZSBiZWVuCmNoZWNrZWQgYWdhaW5zdCBDYW1icmlkZ2UsIENvcnB1cyBDaHJpc3RpIENvbGxlZ2Ug PHNwYW4Kc3R5bGU9ImZvbnQtdmFyaWFudDpzbWFsbC1jYXBzOyI+bXM8L3NwYW4+IDE4NiwgeWll bGRpbmcgb25lIGNvcnJlY3Rpb24KKGF0IDQuMDAwKTsgb3RoZXIgdmFyaWFudHMgZnJvbSB0aGlz IG1hbnVzY3JpcHQgYXJlIG5vdCByZXBvcnRlZC4gVGhlCmRpdmlzaW9uIG9mIHRoZSB2ZXJzZXMg ZG9lcyBub3QgZGl2ZXJnZSBmcm9tIHRoZSBtYW51c2NyaXB0LgoKVGhlIGxheW91dCBvZiB0aGUg dGV4dCBhcyBwcmVzZW50ZWQgaGVyZSBpcyBpbnRlbmRlZCB0byByZWZsZWN0IGl0cwpzdHJ1Y3R1 cmUgYXMgdHJhbnNwYXJlbnRseSBhcyBwb3NzaWJsZSB3aGlsZSBhZGFwdGluZyB0byB0aGUgY29u dmVudGlvbnMKb2YgcHJpbnQ6IHRoZSByZWFkZXIgd2lsbCB3aXNoIHRvIG5vdGUgdGhhdCBlYWNo IHNlY3Rpb24gb2YgcHJvc2UKYXBwbGllcyB0byB0aGUgdmVyc2VzIGJlbG93LCBhbmQgbm90IGFi b3ZlLiBXaGlsZSB0aGlzIGlzIG5vdCB3aGF0Cm1vZGVybiByZWFkZXJzIHdvdWxkIGV4cGVjdCwg aXQgcHJlc2VudHMgdGhlIGxlYXN0IG51bWJlciBvZiBjb21wcm9taXNlcwpvZiBzZXZlcmFsIGRp ZmZlcmVudCBvcHRpb25zIGV4cGxvcmVkIHdoaWxlIHByb2R1Y2luZyB0aGlzIGVkaXRpb24uClRo ZXJlIGFyZSB0d28gbGV2ZWxzIG9mIGNvbW1lbnRhcnkgd2l0aGluIHRoZSB3b3JrLiBQYXNzYWdl cyBvZiB0aGUKY29tbWVudGFyeSB0aGF0IGFyZSBwcmVjZWRlZCBieSBhIGxldHRlciBhcHBseSBv bmx5IHRvIHRoZSB3b3JkIG9yCnBocmFzZSBpbiB0aGUgdmVyc2UgdG8gd2hpY2ggdGhlIGxldHRl ciBpcyBrZXllZDsgdGhpcyBpcyByZXByZXNlbnRlZCBpbgp0aGUgbWFudXNjcmlwdCB3aXRoIGEg bGluZSBkcmF3biBiZXR3ZWVuIHRoZSBhcHByb3ByaWF0ZSBwbGFjZSBpbiB0aGUKdmVyc2UgYW5k IHRoZSBwcm9zZS4gUGFzc2FnZXMgd3JpdHRlbiBiZWZvcmUgYSB2ZXJzZSB3aXRob3V0IGFueSBz dWNoCmluZGljYXRvciBhcHBseSB0byB0aGUgZW50aXJldHkgb2YgdGhlIHZlcnNlcyBmb2xsb3dp bmcsIGdlbmVyYWxseSB1cCB0bwp0aGUgbmV4dCB1bmtleWVkIHBhc3NhZ2Ugb2YgY29tbWVudGFy eS4gVGh1cywgaW4gdGhlIGZpcnN0IHNlY3Rpb24sIHRoZQpmaXJzdCBwcm9zZSBwYXNzYWdlIGFw cGxpZXMgdG8gdGhlIGZvbGxvd2luZyB0d28gdmVyc2VzLCBkZXNwaXRlIHRoZQppbnRlcnZlbmlu ZyBsaW5lIGdsb3NzaW5nICppbnRlcmlvciogaW4gdGhlIHNlY29uZCB2ZXJzZS4gQSB0aGlyZCBs ZXZlbApvZiBjb21tZW50YXJ5IG9mIGEgc29ydCBoYXMgYmVlbiBhZGRlZCBsYXRlciAoYXMgZGlz Y3Vzc2VkIGFib3ZlKSBpbiBhCnN0eWxlIHNpbWlsYXIgdG8gb3RoZXIgd29ya3MgYnkgU2FtdWVs IFByZXNiaXRlciwgb2ZmZXJpbmcgYWx0ZXJuYXRlCndvcmRzIHRoYXQgY291bGQgYmUgdW5kZXJz dG9vZCBpbiBwbGFjZSBvZiB3aGF0IGlzIGluIHRoZSB2ZXJzZSwKcHJlY2VkZWQgYnkgJ3VlbCc7 IHRoZXNlIGFyZSBwb3NpdGlvbmVkIGFib3ZlIHRoZSB3b3JkIHRvIHdoaWNoIHRoZXkKYXBwbHks IGFzIGluIHRoZSBtYW51c2NyaXB0LCBhbmQgYXJlIHByaW50ZWQgaW4gaXRhbGljcyB0byBkaXN0 aW5ndWlzaAp0aGVtIGFzIGFkZGl0aW9ucy4KClRoZSBtbmVtb25pYyBhY3JvbnltcyB1c2VkIGF0 IHNldmVyYWwgcG9pbnRzIGluIHRoZSBjb21tZW50YXJ5IGhhdmUgYmVlbgptb2RpZmllZCBzbGln aHRseTogaW4gdGhlIG1hbnVzY3JpcHQsIHRoZSBsZXR0ZXJzIGFyZSBvbmx5IHdyaXR0ZW4gb3V0 CmluIHRoZSB2ZXJzZSwgd2l0aCB3aWRlciBzcGFjaW5nIHRvIGZpdCBpbiB0aGUgd29yZHMgYWJv dmUsIGFuZCBlYWNoCmxldHRlciBvZiB0aGUgYWNyb255bSBpcyBqb2luZWQgYnkgYW4gaW5kaXZp ZHVhbCBsaW5lIHRvIGl0cwpjb3JyZXNwb25kaW5nIHdvcmQuIEkgaGF2ZSBpbnN0ZWFkIHdyaXR0 ZW4gdGhlIG1uZW1vbmljIGluIHNtYWxsCmNhcGl0YWxzIGluIHRoZSB2ZXJzZSwgYW5kIHJlcGVh dGVkIHRoZSBsZXR0ZXJzIGJlc2lkZSB0aGUgd29yZHMgdG8Kd2hpY2ggdGhleSBhcHBseS4KClRo ZSBjb21tZW50YXJ5IGZvciB0aGUgbGFzdCBzZWN0aW9uIGluIHRoZSB3b3JrICg1NCwgd2hpY2gg YXMgZGlzY3Vzc2VkCmFib3ZlIHByb2JhYmx5IHJlZmxlY3RzIG1vcmUgb2YgYSBjb250cmlidXRp b24gZnJvbSBTYW11ZWwgUHJlc2JpdGVyCnRoYW4gV2lsbGlhbSBkZSBNb250aWJ1cykgaXMgZXhj ZXB0aW9uYWxseSBhcnJhbmdlZCB1c2luZwoqZGlzdGluY3Rpb25lcywqIGFuZCB0cmFuc2xhdGVz IHJhdGhlciBwb29ybHkgaW50byBwcmludCAodGhvdWdoIHRoaXMKd2FzIGRvbmUgc3VjY2Vzc2Z1 bGx5IGluIGFuIGVhcmxpZXIgVG9yb250byBNZWRpZXZhbCBMYXRpbiBUZXh0cyB2b2x1bWUsClJv YmVydCBHcm9zc2V0ZXN0ZSdzICpUZW1wbHVtIERlaSopLiBUaGUgdGV4dCBoYXMgYmVlbiBwcmVz ZW50ZWQgaGVyZSBpbgp0aGUgZm9ybSBvZiBhIG1vZGVybiBvdXRsaW5lLCBpbiB3aGljaCBlYWNo IGl0ZW0gaGlnaGVyIGluIHRoZSBoaWVyYXJjaHkKYXBwbGllcyB0byB0aGUgc3Vib3JkaW5hdGUg aXRlbXM7IHRoaXMgZG9lcyBub3QgbmVjZXNzaXRhdGUKcmVhcnJhbmdlbWVudCBvZiB0aGUgdGV4 dC4KClRoZSBjcml0aWNhbCBhcHBhcmF0dXMgbm90ZXMgYWxsIGVkaXRvcmlhbCBtb2RpZmljYXRp b25zIGFzIHdlbGwgYXMKY29ycmVjdGlvbnMgbWFkZSB0byB0aGUgbWFudXNjcmlwdCBpdHNlbGY7 IHRoZSBjb3JyZWN0b3IgZGlzY3Vzc2VkIGFib3ZlCmlzIGFsd2F5cyByZWZlcnJlZCB0byBhcyAn YW5vdGhlciBoYW5kJy4gVGhlIHNwZWxsaW5nIG9mIHRoZSBtYW51c2NyaXB0CmhhcyBiZWVuIHJl cHJvZHVjZWQsIGV2ZW4gaW4gaXRzIGluY29uc2lzdGVuY2llcy4gVGhlIHNjcmliZSB1c2VzICdj aScKYW5kICd0aScgd2l0aCBwYXJ0aWN1bGFyIGlycmVndWxhcml0eTsgb25lIGZpbmRzLCBmb3Ig aW5zdGFuY2UsCidpdWRpdGlvJyBhdCAxMi4wMDAgYnV0ICdpdWRpY2l1bScgYXQgMTIuMDAwLCBv ciAnb2Npb3NlJyBpbmNvbnNpc3RlbnRseQpjb3JyZWN0ZWQgdG8gJ290aW9zZScgaW4gMTguMDAw LiBUaGUgd29yZCAnQ3Jpc3R1cycgaXMgbmV2ZXIgd3JpdHRlbiBpbgpmdWxsIGluIHRoZSBtYW51 c2NyaXB0OyBpdCBpcyBzcGVsbGVkIGluIHRoaXMgbWFubmVyIG9uIHRoZSBiYXNpcyBvZgonQ3Jp c3RpYW5pJyAoMDAwKSwgJ0NyaXNvc3RvbXVzJyAoMDAwKSwgYW5kICdjcmlzbWEnICgwMDApLlte NThdCkZvbGxvd2luZyB0aGUgc2NyaWJlJ3MgcHJhY3RpY2UsIEkgZG8gbm90IGRpc3Rpbmd1aXNo IGJldHdlZW4gdSBhbmQgdiwKdXNpbmcgViBpbiB0aGUgbWFqdXNjdWxlOyBtaW51c2N1bGUgdiBv Y2N1cnMgb25seSBkZWNvcmF0aXZlbHkgaW4gdGhlCm1hbnVzY3JpcHQsIGluIGJvdGggYW4gaW5p dGlhbCBhbmQgbWVkaWFsIHBvc2l0aW9uLCBhbmQgd2l0aG91dCBhbnkKY29uc2lzdGVuY3kuIFB1 bmN0dWF0aW9uIGlzIGluc3BpcmVkIGJ5IHdoYXQgaXMgZm91bmQgaW4gdGhlIG1hbnVzY3JpcHQs CmJ1dCBpdCBoYXMgYmVlbiBmcmVlbHkgYWRhcHRlZCB0byBtYWtlIGJldHRlciBzZW5zZSBvZiB0 aGUgdGV4dC4KClRoZSBjb21tZW50YXJ5IHNlZWtzIHRvIHNob3cgc291cmNlcyBhbmQgcGFyYWxs ZWxzIGZvciB0aGUgdGV4dCBhbmQKYXNzaXN0IHN0dWRlbnRzIG9mIG1lZGlldmFsIExhdGluLiBX b3JkcyB3aXRoIHBhcnRpY3VsYXJseSB0cm91Ymxlc29tZQpzcGVsbGluZ3MgYXJlIGdsb3NzZWQg aW4gdGhlaXIgY2xhc3NpY2FsIGZvcm0sIGFuZCBkZWZpbml0aW9ucyBoYXZlIGJlZW4KcHJvdmlk ZWQgZm9yIHVudXN1YWwgdm9jYWJ1bGFyeSwgZ2VuZXJhbGx5IGNvbnNpZGVyZWQgdG8gYmUgd29y ZHMgdGhhdApkbyBub3QgYXBwZWFyIGluIExld2lzIGFuZCBTaG9ydCdzICpMYXRpbiBEaWN0aW9u YXJ5KiAoc3RpbGwsIGF0IHRoaXMKd3JpdGluZywgdGhlIExhdGluLUVuZ2xpc2ggZGljdGlvbmFy eSBtb3N0IGNvbW1vbmx5IHVzZWQgYW1vbmcKbWVkaWV2YWxpc3RzKSBhbmQgd2hvc2UgbWVhbmlu ZyBtaWdodCBub3QgYmUgcXVpY2tseSBndWVzc2VkLiBSZWFkZXJzCndpbGwgcmVjZWl2ZSBiZXR0 ZXIgZ3VpZGFuY2UsIGhvd2V2ZXIsIGZyb20gdGhlICpEaWN0aW9uYXJ5IG9mIE1lZGlldmFsCkxh dGluIGZyb20gQnJpdGlzaCBTb3VyY2VzLCogdG8gd2hpY2ggcmVmZXJlbmNlcyBoYXZlIGJlZW4g cHJvdmlkZWQgd2hlbgppdCBpbmNsdWRlcyBxdW90YXRpb25zIHRoYXQgYXJlIGhlbHBmdWwgaW4g aWxsdXN0cmF0aW5nIHRoZSBjb250ZW1wb3JhcnkKdXNhZ2Ugb2YgYSB3b3JkIG9yIHBocmFzZS4K ClwKCkJpYmxpb2dyYXBoeQo9PT09PT09PT09PT0KCiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCiAgVGV4dHMgYnkgbWVkaWV2YWwgYXV0aG9ycwogIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KCltpbnNlcnQgYmlibGlvZ3JhcGh5XQoKU2Vjb25kYXJ5IFNvdXJjZXMKLS0tLS0tLS0t LS0tLS0tLS0KCkFsZXhhbmRlciBOZWNrYW0uICpTYWNlcmRvcyBhZCBhbHRhcmUqLiBFZGl0ZWQg YnkgQ2hyaXN0b3BoZXIgSi4KTWNEb25vdWdoLiA8c3BhbiBzdHlsZT0iZm9udC12YXJpYW50OnNt YWxsLWNhcHM7Ij5jY2NtPC9zcGFuPiAyMjcuClR1cm5ob3V0OiBCcmVwb2xzLCAyMDEwLgoKQW5k csOpZSwgQWxleGFuZGVyLiAnTGFvbiBSZXZpc2l0ZWQ6IE1hc3RlciBBbnNlbG0gYW5kIHRoZSBD cmVhdGlvbiBvZiBhClRoZW9sb2dpY2FsIFNjaG9vbCBpbiB0aGUgVHdlbGZ0aCBDZW50dXJ5IChB IFJldmlldyBFc3NheSknLiAqSm91cm5hbCBvZgpNZWRpZXZhbCBMYXRpbiogMjIgKDIwMTIpOiAy NTctLTgxLiBkb2k6MTAuMTQ4NC9KLkpNTC4xLjEwMzI1OC4KCkJhbGR3aW4sIEpvaG4gVy4gKk1h c3RlcnMsIFByaW5jZXMsIGFuZCBNZXJjaGFudHM6IFRoZSBTb2NpYWwgVmlld3Mgb2YKUGV0ZXIg dGhlIENoYW50ZXIgYW5kIEhpcyBDaXJjbGUqLiAyIHZvbHMuIFByaW5jZXRvbjogUHJpbmNldG9u ClVuaXZlcnNpdHkgUHJlc3MsIDE5NzAuCgpCb3V0ZW15LCBBLiAnR2lyYXVkIGRlIEJhcnJpIGV0 IFBpZXJyZSBsZSBDaGFudHJlOiBVbmUgc291cmNlIGRlIGxhCipHZW1tYSBlY2NsZXNpYXN0aWNh KicuICpSZXZ1ZSBkdSBtb3llbiDDomdlIGxhdGluKiAyICgxOTQ2KTogNDUtLTYyLgoKQm95bGUs IExlb25hcmQgRS4gJ1RoZSBJbnRlci1Db25jaWxpYXIgUGVyaW9kIDExNzktLTEyMTUgYW5kIHRo ZQpCZWdpbm5pbmdzIG9mIFBhc3RvcmFsIE1hbnVhbHMnLiBJbiAqTWlzY2VsbGFuZWEgUm9sYW5k byBCYW5kaW5lbGxpLApQYXBhIEFsZXNzYW5kcm8gPHNwYW4gc3R5bGU9ImZvbnQtdmFyaWFudDpz bWFsbC1jYXBzOyI+aWlpPC9zcGFuPiosCmVkaXRlZCBieSBGaWxpcHBvIExpb3R0YSwgNDUtLTU2 LiBTaWVuYTogQWNjYWRlbWlhIHNlbmVzZSBkZWdsaQppbnRyb25hdGksIDE5ODYuCgpDYXJydXRo ZXJzLCBNYXJ5IEouICpUaGUgQm9vayBvZiBNZW1vcnk6IEEgU3R1ZHkgb2YgTWVtb3J5IGluIE1l ZGlldmFsCkN1bHR1cmUqLiAybmQgZWQuIENhbWJyaWRnZSBTdHVkaWVzIGluIE1lZGlldmFsIExp dGVyYXR1cmUgMTAuCkNhbWJyaWRnZTogQ2FtYnJpZGdlIFVuaXZlcnNpdHkgUHJlc3MsIDIwMDgu CgpDaGVudSwgTWFyaWUtRG9taW5pcXVlLiAnTm90ZXMgZGUgbGV4aWNvZ3JhcGhpZSBwaGlsb3Nv cGhpcXVlCm3DqWRpw6l2YWxlJy4gKlJldnVlIGRlcyBzY2llbmNlcyBwaGlsb3NvcGhpcXVlcyBl dCB0aMOpb2xvZ2lxdWVzKiAxNiwgbm8uCjQgKDE5MjcpOiA0MzUtLTQ2LgoKQ2xhbmNoeSwgTWlj aGFlbCwgYW5kIExlc2xleSBTbWl0aC4gJ0FiZWxhcmQncyBEZXNjcmlwdGlvbiBvZiB0aGUgU2No b29sCm9mIExhb246IFdoYXQgTWlnaHQgSXQgVGVsbCBVcyBBYm91dCBFYXJseSBTY2hvbGFzdGlj IFRlYWNoaW5nPycKKk5vdHRpbmdoYW0gTWVkaWV2YWwgU3R1ZGllcyogNTQgKDIwMTApOiAxLS0z NC4KZG9pOjEwLjE0ODQvSi5OTVMuMS4xMDA3NjYuCgpDb2xpc2gsIE1hcmNpYSBMLiBSZXZpZXcg b2YgKlBldHJpIENhbnRvcmlzIFBhcmlzaWVuc2lzIFZlcmJ1bQphZGJyZXZpYXR1bTogVGV4dHVz IGNvbmZsYXR1cyosIGJ5IE1vbmlxdWUgQm91dHJ5LiAqU3BlY3VsdW0qIDgxLCBuby4gMwooSnVs eSAyMDA2KTogOTA1LS02LiBkb2k6MTAuMTAxNy9TMDAzODcxMzQwMDAxNjQwNy4KCkN1cnJ5IFdv b2RzLCBNYXJqb3JpZSwgYW5kIFJpdGEgQ29wZWxhbmQuICdDbGFzc3Jvb20gYW5kIENvbmZlc3Np b24nLiBJbgoqVGhlIENhbWJyaWRnZSBIaXN0b3J5IG9mIE1lZGlldmFsIEVuZ2xpc2ggTGl0ZXJh dHVyZSosIGVkaXRlZCBieSBEYXZpZApXYWxsYWNlLCAzNzYtLTQwNi4gQ2FtYnJpZGdlOiBDYW1i cmlkZ2UgVW5pdmVyc2l0eSBQcmVzcywgMTk5OS4KCkRpZW0sIEFsYnJlY2h0LiAnVmlydHVlcyBh bmQgVmljZXMgaW4gRWFybHkgVGV4dHMgb24gUGFzdG9yYWwgQ2FyZScuCipGcmFuY2lzY2FuIFN0 dWRpZXMqIDYyICgyMDA0KTogMTkzLS0yMjMuIGRvaToxMC4xMzUzL2ZyYy4yMDA0LjAwMDguCgpE aW5rb3ZhLUJydXVuLCBHcmV0aS4gJ05vdGVzIG9uIFBvZXRpYyBDb21wb3NpdGlvbiBpbiB0aGUg VGhlb2xvZ2ljYWwKU2Nob29scyBDYS4gMTIwMCBhbmQgdGhlIExhdGluIFBvZXRpYyBBbnRob2xv Z3kgZnJvbSBNcy4gSGFybGV5IDk1NjogQQpDcml0aWNhbCBFZGl0aW9uJy4gKlNhY3JpcyBFcnVk aXJpKiA0MyAoMjAwNCk6IDI5OS0tMzkxLgpkb2k6MTAuMTQ4NC9KLlNFLjIuMzAwMTI2LgoKLS0t LS0tLS0tLiAnUmVtZW1iZXJpbmcgdGhlIEdvc3BlbHMgaW4gdGhlIExhdGVyIE1pZGRsZSBBZ2Vz OiBUaGUKQW5vbnltb3VzICpDYXBpdHVsYSBFdWFuZ2VsaW9ydW0gVmVyc2lmaWNlIFNjcmlwdGEq Jy4gKlNhY3JpcyBFcnVkaXJpKgo0OCAoMjAwOSk6IDIzNS0tNzMuIGRvaToxMC4xNDg0L0ouU0Uu MS4xMDA1NTkuCgotLS0tLS0tLS0uICdTYW11ZWwgUHJlc2J5dGVyIGFuZCB0aGUgR2xvc3NlcyB0 byBIaXMgVmVyc2lmaWNhdGlvbiBvZgpQc2FsbSAxOiBBbiBBbnRpLUNodXJjaCBJbnZlY3RpdmU/ JyBJbiAqRmxvcmlsZWdpdW0gbWVkaWFldmFsZTogw4l0dWRlcwpvZmZlcnRlcyDDoCBKYWNxdWVs aW5lIEhhbWVzc2Ugw6AgbCdvY2Nhc2lvbiBkZSBzb24gw6ltw6lyaXRhdCosIGVkaXRlZCBieQpK b3PDqSBGcmFuY2lzY28gTWVpcmluaG9zIGFuZCBPbGdhIFdlaWplcnMsIDE1NS0tNzQuIFRleHRl cyBldCDDqXR1ZGVzIGR1Cm1veWVuIMOiZ2UgNTAuIExvdXZhaW4tbGEtTmV1dmU6IEbDqWTDqXJh dGlvbiBJbnRlcm5hdGlvbmFsZSBkZXMgSW5zdGl0dXRzCmQnw4l0dWRlcyBNw6lkacOpdmFsZXMs IDIwMDkuCgotLS0tLS0tLS0uICdUaGUgVmVyc2UgQmlibGUgYXMgQWlkZS1Nw6ltb2lyZScuIElu ICpUaGUgTWFraW5nIG9mIE1lbW9yeQppbiB0aGUgTWlkZGxlIEFnZXMqLCBlZGl0ZWQgYnkgTHVj aWUgRG9sZcW+YWxvdsOhLCAxMTUtLTMxLiBMYXRlciBNZWRpZXZhbApFdXJvcGUgNC4gTGVpZGVu OiBCcmlsbCwgMjAxMC4KCkZvc3RlciwgQy5XLiwgYW5kIEthdGhsZWVuIE1ham9yLCBlZHMuICpU aGUgUmVnaXN0cnVtIEFudGlxdWlzc2ltdW0gb2YKdGhlIENhdGhlZHJhbCBDaHVyY2ggb2YgTGlu Y29sbiouIDEwIHZvbHMuIFB1YmxpY2F0aW9ucyBvZiB0aGUgTGluY29sbgpSZWNvcmQgU29jaWV0 eSAyNy0tMjksIDMyLCAzNCwgNDEsIDQyLCA0NiwgNTEsIDYyLCA2NywgNjguIEhlcmVmb3JkOgpM aW5jb2xuIFJlY29yZCBTb2NpZXR5LCAxOTMxXF82OC4KCkdlcmFsZCBvZiBXYWxlcy4gKkdpcmFs ZGkgQ2FtYnJlbnNpcyBvcGVyYSwqIHZvbC4gNSwgKlRvcG9ncmFwaGlhCkhpYmVybmljYSBldCBF eHB1Z25hdGlvIEhpYmVybmljYSouIEVkaXRlZCBieSBKYW1lcyBGLiBEaW1vY2suIFJvbGxzClNl cmllcyAyMS4gTG9uZG9uOiBMb25nbWFuLCAxODY3LgoKR2lic29uLCBNYXJnYXJldCBULiAnVGhl IFR3ZWxmdGgtQ2VudHVyeSBHbG9zc2VkIEJpYmxlJy4gSW4gKlBhcGVycwpQcmVzZW50ZWQgdG8g dGhlIFRlbnRoIEludGVybmF0aW9uYWwgQ29uZmVyZW5jZSBvbiBQYXRyaXN0aWMgU3R1ZGllcwpI ZWxkIGluIE94Zm9yZCwgMTk4NyosIGVkaXRlZCBieSBFLkEuIExpdmluZ3N0b25lLCA1OjIzMi0t NDQuIFN0dWRpYQpQYXRyaXN0aWNhIDIzLiBMZXV2ZW46IFBlZXRlcnMsIDE5ODkuCgpHb2VyaW5n LCBKb3NlcGguICdMZW9uYXJkIEUuIEJveWxlIGFuZCB0aGUgSW52ZW50aW9uIG9mICpQYXN0b3Jh bGlhKicuCkluICpBIENvbXBhbmlvbiB0byBQYXN0b3JhbCBDYXJlIGluIHRoZSBMYXRlIE1pZGRs ZSBBZ2VzICgxMjAwLS0xNTAwKSosCmVkaXRlZCBieSBSb25hbGQgSi4gU3RhbnNidXJ5LCA3LS0y MC4gQnJpbGwncyBDb21wYW5pb25zIHRvIHRoZQpDaHJpc3RpYW4gVHJhZGl0aW9uIDIyLiBMZWlk ZW46IEJyaWxsLCAyMDEwLgoKLS0tLS0tLS0tLiAnVGhlIFN1bW1hICpRdWkgYmVuZSBwcmVzdW50 KiBhbmQgSXRzIEF1dGhvcicuIEluICpMaXRlcmF0dXJlCmFuZCBSZWxpZ2lvbiBpbiB0aGUgTGF0 ZXIgTWlkZGxlIEFnZXM6IFBoaWxvbG9naWNhbCBTdHVkaWVzIGluIEhvbm9yIG9mClNpZWdmcmll ZCBXZW56ZWwqLCBlZGl0ZWQgYnkgUmljaGFyZCBHLiBOZXdoYXVzZXIgYW5kIEpvaG4gQS4gQWxm b3JkLAoxNDMtLTU5LiBNZWRpZXZhbCBhbmQgUmVuYWlzc2FuY2UgVGV4dHMgYW5kIFN0dWRpZXMg MTE4LiBCaW5naGFtcHRvbiwKPHNwYW4gc3R5bGU9ImZvbnQtdmFyaWFudDpzbWFsbC1jYXBzOyI+ bnk8L3NwYW4+OiBDZW50ZXIgZm9yIE1lZGlldmFsCmFuZCBFYXJseSBSZW5haXNzYW5jZSBTdHVk aWVzLCAxOTk1LgoKLS0tLS0tLS0tLiAqV2lsbGlhbSBkZSBNb250aWJ1cyAoYy4gMTE0MC0tMTIx Myk6IFRoZSBTY2hvb2xzIGFuZCB0aGUKTGl0ZXJhdHVyZSBvZiBQYXN0b3JhbCBDYXJlKi4gU3R1 ZGllcyBhbmQgVGV4dHMgMTA4LiBUb3JvbnRvOiBQb250aWZpY2FsCkluc3RpdHV0ZSBvZiBNZWRp YWV2YWwgU3R1ZGllcywgMTk5Mi4KCkdvbGRpbmcsIEJyaWFuLiAnR2VyYWxkIG9mIFdhbGVzLCB0 aGUgKkdlbW1hIEVjY2xlc2lhc3RpY2EqIGFuZCBQYXN0b3JhbApDYXJlJy4gSW4gKlRleHQgYW5k IFRyYWRpdGlvbnMgb2YgTWVkaWV2YWwgUGFzdG9yYWwgQ2FyZTogRXNzYXlzIGluCkhvbm91ciBv ZiBCZWxsYSBNaWxsZXR0KiwgZWRpdGVkIGJ5IENhdGUgR3VubiBhbmQgQ2F0aGVyaW5lCklubmVz LVBhcmtlciwgNDctLTYxLiBXb29kYnJpZGdlLCBTdWZmb2xrOiBZb3JrIE1lZGlldmFsIFByZXNz LCAyMDA5LgoKSGFtZXNzZSwgSmFjcXVlbGluZS4gJypDb2xsYXRpbyogZXQgKnJlcG9ydGF0aW8q OiBkZXV4IHZvY2FibGVzCnNww6ljaWZpcXVlcyBkZSBsYSB2aWUgaW50ZWxsZWN0dWVsbGUgYXUg bW95ZW4gw6JnZScuIEluICpBY3RlcyBkdQpjb2xsb3F1ZSAnVGVybWlub2xvZ2llIGRlIGxhIHZp ZSBpbnRlbGxlY3R1ZWxsZSBhdSBtb3llbiDDomdlJyBMZXlkZS1MYQpIYXllIDIwLS0yMSBzZXB0 ZW1icmUgMTk4NSosIGVkaXRlZCBieSBPbGdhIFdlaWplcnMsIDc4LS04Ny4gw4l0dWRlcyBzdXIK bGUgdm9jYWJ1bGFpcmUgaW50ZWxsZWN0dWVsIGR1IE1veWVuIEFnZSAxLiBUdXJuaG91dDogQnJl cG9scywgMTk4OC4KCkh1bnQsIFIuVy4gJ0VuZ2xpc2ggTGVhcm5pbmcgaW4gdGhlIExhdGUgVHdl bGZ0aCBDZW50dXJ5Jy4gKlRyYW5zYWN0aW9ucwpvZiB0aGUgUm95YWwgSGlzdG9yaWNhbCBTb2Np ZXR5KiwgNHRoIHNlci4sIDE5ICgxOTM2KTogMTktLTQyLgpkb2k6MTAuMjMwNy8zNjc4Njg1LgoK SmFtZXMsIE0uUi4gJ0J1cnkgU3QuIEVkbXVuZHMgTWFudXNjcmlwdHMnLiAqRW5nbGlzaCBIaXN0 b3JpY2FsIFJldmlldyoKNDEsIG5vLiAxNjIgKEFwcmlsIDE5MjYpOiAyNTEtLTYwLiBkb2k6MTAu MTA5My9laHIvWExJLkNMWElJLjI1MS4KCkphbWVzLCBNLlIuLCBhbmQgRWxsaXMgSC4gTWlubnMu ICpBIERlc2NyaXB0aXZlIENhdGFsb2d1ZSBvZiB0aGUKTWFudXNjcmlwdHMgaW4gdGhlIExpYnJh cnkgb2YgUGVtYnJva2UgQ29sbGVnZSwgQ2FtYnJpZGdlKi4gQ2FtYnJpZGdlOgpVbml2ZXJzaXR5 IFByZXNzLCAxOTA1LgoKSmFtZXMsIFRob21hcy4gKkVjbG9nYSBPeG9uaW8tQ2FudGFicmlnaWVu c2lzKi4gMiB2b2xzLiBMb25kb246IEdlb3JnZQpCaXNob3AgYW5kIEpvaG4gTm9ydG9uLCAxNjAw LgoKS2VyLCBOLlIuICpNZWRpZXZhbCBMaWJyYXJpZXMgb2YgR3JlYXQgQnJpdGFpbjogQSBMaXN0 IG9mIFN1cnZpdmluZwpCb29rcyouIDJuZCBlZC4gR3VpZGVzIGFuZCBIYW5kYm9va3MgMy4gTG9u ZG9uOiBPZmZpY2VzIG9mIHRoZSBSb3lhbApIaXN0b3JpY2FsIFNvY2lldHksIDE5NjQuCgotLS0t LS0tLS0uICpNZWRpZXZhbCBMaWJyYXJpZXMgb2YgR3JlYXQgQnJpdGFpbjogQSBMaXN0IG9mIFN1 cnZpdmluZwpCb29rcy4gU3VwcGxlbWVudCB0byB0aGUgU2Vjb25kIEVkaXRpb24qLiBFZGl0ZWQg YnkgQW5kcmV3IEcuIFdhdHNvbi4KR3VpZGVzIGFuZCBIYW5kYm9va3MgMTUuIExvbmRvbjogT2Zm aWNlcyBvZiB0aGUgUm95YWwgSGlzdG9yaWNhbApTb2NpZXR5LCAxOTg3LgoKS2llc3NsaW5nLCBO aWNvbGFzIEsuICpUaGUgTGlicmFyeSBvZiBBbnRob255IFdvb2QqLiBPeGZvcmQKQmlibGlvZ3Jh cGhpY2FsIFNvY2lldHkgUHVibGljYXRpb25zLCAzcmQgc2VyLiwgNS4gT3hmb3JkOiBPeGZvcmQK QmlibGlvZ3JhcGhpY2FsIFNvY2lldHksIDIwMDIuCgpMZWxhbmQsIEpvaG4uICpEZSB1aXJpcyBp bGx1c3RyaWJ1cy9PbiBGYW1vdXMgTWVuKi4gRWRpdGVkIGFuZAp0cmFuc2xhdGVkIGJ5IEphbWVz IFAuIENhcmxleS4gQnJpdGlzaCBXcml0ZXJzIG9mIHRoZSBNaWRkbGUgQWdlcyBhbmQKdGhlIEVh cmx5IE1vZGVybiBQZXJpb2QgMS4gVG9yb250bzogUG9udGlmaWNhbCBJbnN0aXR1dGUgb2YgTWVk aWFldmFsClN0dWRpZXMsIDIwMTAuCgpMZXNpZXVyLCBUaGllcnJ5LiAnTGEgKmNvbGxhdGlvKjog VW4gbW9kw6hsZSBjaHLDqXRpZW4gZGUgcsOpc29sdXRpb24gZGUgbGEKcXVlc3Rpb24/JyBJbiAq TGEgbcOpdGhvZGUgY3JpdGlxdWUgYXUgTW95ZW4gw4JnZSosIGVkaXRlZCBieSBNaXJlaWxsZQpD aGF6YW4gYW5kIEdpbGJlcnQgRGFoYW4sIDY1LS04MS4gQmlibGlvdGjDqHF1ZSBkJ2hpc3RvaXJl IGN1bHR1cmVsbGUgZHUKTW95ZW4gw4JnZSAzLiBUdXJuaG91dDogQnJlcG9scywgMjAwNi4KCk1h Y0tpbm5vbiwgSHVnaC4gJ1dpbGxpYW0gZGUgTW9udGlidXM6IEEgTWVkaWV2YWwgVGVhY2hlcicu IEluICpFc3NheXMKaW4gTWVkaWV2YWwgSGlzdG9yeSBQcmVzZW50ZWQgdG8gQmVydGllIFdpbGtp bnNvbiosIGVkaXRlZCBieSBULkEuClNhbmRxdWlzdCBhbmQgTS5SLiBQb3dpY2tlLCAzMi0tNDUu IFRvcm9udG86IFVuaXZlcnNpdHkgb2YgVG9yb250bwpQcmVzcywgMTk2OC4KCk1leWVyLCBDaHJp c3RvcGggSC5GLiAqRGllIERpc3Rpbmt0aW9uc3RlY2huaWsgaW4gZGVyIEthbm9uaXN0aWsgZGVz IDEyLgpKYWhyaHVuZGVydHM6IEVpbiBCZWl0cmFnIHp1ciBXaXNzZW5zY2hhZnRzZ2VzY2hpY2h0 ZSBkZXMKSG9jaG1pdHRlbGFsdGVycyouIE1lZGlhZXZhbGlhIExvdmFuaWVuc2lhLCAxc3Qgc2Vy Liwgc3R1ZGlhIDI5LiBMZXV2ZW46CkxldXZlbiBVbml2ZXJzaXR5IFByZXNzLCAyMDAwLgoKUGFy a2VzLCBNLkIuICcqRm9saWEgbGlicm9ydW0gcXVhZXJlcmU6KiBNZWRpZXZhbCBFeHBlcmllbmNl IG9mIHRoZQpQcm9ibGVtcyBvZiBIeXBlcnRleHQgYW5kIHRoZSBJbmRleCcuIEluICpGYWJ1bGEg aW4gdGFidWxhOiBVbmEgc3RvcmlhCmRlZ2xpIGluZGljaSBkYWwgbWFub3Njcml0dG8gYWwgdGVz dG8gZWxldHRyb25pY28qLCBlZGl0ZWQgYnkgQ2xhdWRpbwpMZW9uYXJkaSwgMjMtLTQxLiBRdWFk ZXJuaSBkaSBjdWx0dXJhIG1lZGlvbGF0aW5hIDEzLiBTcG9sZXRvOiBDZW50cm8KaXRhbGlhbm8g ZGkgc3R1ZGkgc3VsbCdBbHRvIG1lZGlvZXZvLCAxOTk1LgoKUGV0ZXIgdGhlIENoYW50ZXIuICpW ZXJidW0gYWRicmV1aWF0dW06IFRleHR1cyBwcmlvciouIEVkaXRlZCBieSBNb25pcXVlCkJvdXRy eS4gPHNwYW4gc3R5bGU9ImZvbnQtdmFyaWFudDpzbWFsbC1jYXBzOyI+Y2NjbTwvc3Bhbj4gMTk2 YS4KVHVybmhvdXQ6IEJyZXBvbHMsIDIwMTIuCgpQaXBlIFJvbGwgU29jaWV0eSwgZWQuICpGZWV0 IG9mIEZpbmVzIG9mIHRoZSBUZW50aCBZZWFyIG9mIHRoZSBSZWlnbiBvZgpLaW5nIFJpY2hhcmQg PHNwYW4gc3R5bGU9ImZvbnQtdmFyaWFudDpzbWFsbC1jYXBzOyI+aTwvc3Bhbj4sIDxzcGFuCnN0 eWxlPSJmb250LXZhcmlhbnQ6c21hbGwtY2FwczsiPmFkPC9zcGFuPiAxMTk4IHRvIDxzcGFuCnN0 eWxlPSJmb250LXZhcmlhbnQ6c21hbGwtY2FwczsiPmFkPC9zcGFuPiAxMTk5Ki4gUHVibGljYXRp b25zIG9mIHRoZQpQaXBlIFJvbGwgU29jaWV0eSAyNC4gTG9uZG9uOiBMb3ZlIGFuZCBXeW1hbiwg MTkwMC4KCi0tLS0tLS0tLS4gLCBlZC4gKlRoZSBHcmVhdCBSb2xsIG9mIHRoZSBQaXBlIGZvciB0 aGUgUmVpZ24gb2YgS2luZyBIZW5yeQp0aGUgU2Vjb25kKi4gUHVibGljYXRpb25zIG9mIHRoZSBQ aXBlIFJvbGwgU29jaWV0eSAxLCAyLCA0LS05LCAxMS0tMTMsCjE1LCAxNiwgMTgsIDE5LCAyMSwg MjIsIDI1LS0zNCwgMzYtLTM4LiBMb25kb246IFd5bWFuLCAxODg0XF8xOTI1LgoKUG9udGlmaWNh bCBBYmJleSBvZiBTdCBKZXJvbWUtaW4tdGhlLUNpdHksIGVkLiAqQmlibGlhIFNhY3JhIGl1eHRh CmxhdGluYW0gdnVsZ2F0YW0gdmVyc2lvbmVtKi4gMTggdm9scy4gUm9tZTogTGlicmVyaWEgRWRp dHJpY2UgVmF0aWNhbmEsCjE5MjZcXzk1LgoKUmljaMOpLCBQaWVycmUsIGFuZCBKYWNxdWVzIFZl cmdlci4gKkRlcyBuYWlucyBzdXIgZGVzIMOpcGF1bGVzIGRlIGfDqWFudHM6Ck1hw650cmVzIGV0 IMOpbMOodmVzIGF1IG1veWVuIMOiZ2UqLiBQYXJpczogVGFsbGFuZGllciwgMjAwNi4KClJpZ2cs IEEuRy4gKkEgSGlzdG9yeSBvZiBBbmdsby1MYXRpbiBMaXRlcmF0dXJlLCAxMDY2LS0xNDIyKi4g Q2FtYnJpZGdlOgpDYW1icmlkZ2UgVW5pdmVyc2l0eSBQcmVzcywgMTk5Mi4KCi0tLS0tLS0tLS4g J0FuZ2xvLUxhdGluJy4gSW4gKlNpbmdpbmcgRWFybHkgTXVzaWM6IFRoZSBQcm9udW5jaWF0aW9u IG9mCkV1cm9wZWFuIExhbmd1YWdlcyBpbiB0aGUgTGF0ZSBNaWRkbGUgQWdlcyBhbmQgUmVuYWlz c2FuY2UqLCBlZGl0ZWQgYnkKVGltb3RoeSBKLiBNY0dlZSwgNDYtLTYxLiBCbG9vbWluZ3Rvbjog SW5kaWFuYSBVbml2ZXJzaXR5IFByZXNzLCAxOTk2LgoKUm9iZXJ0IEdyb3NzZXRlc3RlLiAqVGVt cGx1bSBEZWkqLiBFZGl0ZWQgYnkgSm9zZXBoIEdvZXJpbmcgYW5kIEYuQS5DLgpNYW50ZWxsby4g VG9yb250byBNZWRpZXZhbCBMYXRpbiBUZXh0cyAxNC4gVG9yb250bzogUHVibGlzaGVkIGZvciB0 aGUKQ2VudHJlIGZvciBNZWRpZXZhbCBTdHVkaWVzIGJ5IHRoZSBQb250aWZpY2FsIEluc3RpdHV0 ZSBvZiBNZWRpYWV2YWwKU3R1ZGllcywgMTk4NC4KClJvYmVydHNvbiwgRC5XLiwgSnIuICdBIE5v dGUgb24gdGhlIENsYXNzaWNhbCBPcmlnaW4gb2YgIkNpcmN1bXN0YW5jZXMiCmluIHRoZSBNZWRp ZXZhbCBDb25mZXNzaW9uYWwnLiAqU3R1ZGllcyBpbiBQaGlsb2xvZ3kqIDQzLCBuby4gMSAoSmFu dWFyeQoxOTQ2KTogNi0tMTQuCgpSb3NlbWFubiwgUGhpbGlwcCBXLiAqVGhlIFN0b3J5IG9mIGEg R3JlYXQgTWVkaWV2YWwgQm9vazogUGV0ZXIKTG9tYmFyZCdzIFNlbnRlbmNlcyouIFBldGVyYm9y b3VnaCwgPHNwYW4Kc3R5bGU9ImZvbnQtdmFyaWFudDpzbWFsbC1jYXBzOyI+b248L3NwYW4+OiBC cm9hZHZpZXcgUHJlc3MsIDIwMDcuCgpSdXNzZWxsLCBKb3NpYWggQ294LiAqRGljdGlvbmFyeSBv ZiBXcml0ZXJzIG9mIFRoaXJ0ZWVudGgtQ2VudHVyeQpFbmdsYW5kKi4gQnVsbGV0aW4gb2YgdGhl IEluc3RpdHV0ZSBvZiBIaXN0b3JpY2FsIFJlc2VhcmNoLCBTcGVjaWFsClN1cHBsZW1lbnQgMy4g TG9uZG9uOiBMb25nbWFucywgMTkzNi4KClNhbmZvcmQsIEUuTS4gJ0dpcmFsZHVzIENhbWJyZW5z aXMnIERlYnQgdG8gUGV0cnVzIENhbnRvcicuICpNZWRpZXZhbGlhCmV0IEh1bWFuaXN0aWNhKiAz ICgxOTQ1KTogMTYtLTMyLgoKU2hhcnBlLCBSaWNoYXJkLiAqQSBIYW5kbGlzdCBvZiB0aGUgTGF0 aW4gV3JpdGVycyBvZiBHcmVhdCBCcml0YWluIGFuZApJcmVsYW5kIGJlZm9yZSAxNTQwKi4gUHVi bGljYXRpb25zIG9mIHRoZSBKb3VybmFsIG9mIE1lZGlldmFsIExhdGluIDEuClR1cm5ob3V0OiBC cmVwb2xzLCAxOTk3LgoKLS0tLS0tLS0tLiAnUmVjb25zdHJ1Y3RpbmcgdGhlIE1lZGlldmFsIExp YnJhcnkgb2YgQnVyeSBTdCBFZG11bmRzCkFiYmV5OiBUaGUgTG9zdCBDYXRhbG9ndWUgb2YgSGVu cnkgb2YgS2lya3N0ZWFkJy4gSW4gKkJ1cnkgU3QgRWRtdW5kczoKTWVkaWV2YWwgQXJ0LCBBcmNo aXRlY3R1cmUsIEFyY2hhZW9sb2d5LCBhbmQgRWNvbm9teSosIGVkaXRlZCBieSBBbnRvbmlhCkdy YW5zZGVuLCAyMDQtLTE4LiBUaGUgQnJpdGlzaCBBcmNoYWVvbG9naWNhbCBBc3NvY2lhdGlvbiBD b25mZXJlbmNlClRyYW5zYWN0aW9ucyAyMC4gTGVlZHM6IEJyaXRpc2ggQXJjaGFlb2xvZ2ljYWwg QXNzb2NpYXRpb24sIDE5OTguCgpTaGFycGUsIFJpY2hhcmQsIEphbWVzIFAuIENhcmxleSwgUm9k bmV5IE0uIFRob21zb24sIGFuZCBBbmRyZXcgRy4KV2F0c29uLCBlZHMuICpFbmdsaXNoIEJlbmVk aWN0aW5lIExpYnJhcmllczogVGhlIFNob3J0ZXIgQ2F0YWxvZ3VlcyouCkNvcnB1cyBvZiBCcml0 aXNoIE1lZGlldmFsIExpYnJhcnkgQ2F0YWxvZ3VlcyA0LiBMb25kb246IEJyaXRpc2ggTGlicmFy eQppbiBhc3NvY2lhdGlvbiB3aXRoIHRoZSBCcml0aXNoIEFjYWRlbXksIDE5OTYuCgpTbWFsbGV5 LCBCZXJ5bCwgYW5kIEdlb3JnZSBMYWNvbWJlLiAnVGhlIExvbWJhcmQncyBDb21tZW50YXJ5IG9u IElzYWlhcwphbmQgT3RoZXIgRnJhZ21lbnRzJy4gKlRoZSBOZXcgU2Nob2xhc3RpY2lzbSogNSwg bm8uIDIgKEFwcmlsIDE5MzEpOgoxMjMtLTYyLiBkb2k6MTAuNTg0MC9uZXdzY2hvbGFzMTkzMTUy MTcuCgpTdGVnbcO8bGxlciwgRnJpZWRyaWNoLiAqUmVwZXJ0b3JpdW0gYmlibGljdW0gbWVkaWkg YWV2aSouIDExIHZvbHMuCk1hZHJpZDogQ29uc2VqbyBTdXBlcmlvciBkZSBJbnZlc3RpZ2FjaW9u ZXMgQ2llbnTDrWZpY2FzLCAxOTUwXF84MC4KClN0b3R6LCBQZXRlci4gKkhhbmRidWNoIHp1ciBs YXRlaW5pc2NoZW4gU3ByYWNoZSBkZXMgTWl0dGVsYWx0ZXJzKi4gNQp2b2xzLiBIYW5kYnVjaCBk ZXIgQWx0ZXJ0dW1zd2lzc2Vuc2NoYWZ0IDIuNS4gTXVuaWNoOiBCZWNrLCAxOTk2XF8yMDA0LgoK VGFubmVyLCBUaG9tYXMuICpCaWJsaW90aGVjYSBCcml0YW5uaWNvLUhpYmVybmljYTsgc2l1ZSwg RGUKc2NyaXB0b3JpYnVzLCBxdWkgaW4gQW5nbGlhLCBTY290aWEsIGV0IEhpYmVybmlhIGFkIHNh ZWN1bGkgPHNwYW4Kc3R5bGU9ImZvbnQtdmFyaWFudDpzbWFsbC1jYXBzOyI+eHZpaTwvc3Bhbj4g aW5pdGl1bSBmbG9ydWVydW50LApjb21tZW50YXJpdXMqLiBFZGl0ZWQgYnkgRGF2aWQgV2lsa2lu cy4gTG9uZG9uOiBHLiBCb3d5ZXIsIDE3NDguCgpUaG9ybmRpa2UsIEx5bm4uICdVbmRlIHZlcnN1 cycuICpUcmFkaXRpbyogMTEgKDE5NTUpOiAxNjMtLTkzLgoKVmFsZ2ltb2dsaSwgTG9yZW56by4g KkxvIMKrU3BlY3VsdW0gR3JlZ29yaWnCuyBkaSBBZGFsYmVydG8gZGkgTWV0eiouCkFyY2hpdnVt IEdyZWdvcmlhbnVtIDguIEZsb3JlbmNlOiBTSVNNRUwsIDIwMDYuCgpWYW4gTGllcmUsIEZyYW5z LiAnVGhlIFN0dWR5IG9mIENhbm9uIExhdyBhbmQgdGhlIEVjbGlwc2Ugb2YgdGhlIExpbmNvbG4K U2Nob29scywgMTE3NS0tMTIyNScuICpIaXN0b3J5IG9mIFVuaXZlcnNpdGllcyogMTggKDIwMDMp OiAxLS0xMy4KCldhdHQsIEphY2suICdQYXJpc2lhbiBUaGVvbG9naWFucyBhbmQgdGhlIEpld3M6 IFBldGVyIExvbWJhcmQgYW5kIFBldGVyCkNhbnRvcicuIEluICpUaGUgTWVkaWV2YWwgQ2h1cmNo OiBVbml2ZXJzaXRpZXMsIEhlcmVzeSwgYW5kIHRoZQpSZWxpZ2lvdXMgTGlmZS4gRXNzYXlzIGlu IEhvbm91ciBvZiBHb3Jkb24gTGVmZiosIGVkaXRlZCBieSBQZXRlciBCaWxsZXIKYW5kIEJhcnJp ZSBEb2Jzb24sIDU1LS03Ni4gU3R1ZGllcyBpbiBDaHVyY2ggSGlzdG9yeSwgU3Vic2lkaWEgMTEu Cldvb2RicmlkZ2UsIFN1ZmZvbGs6IFB1Ymxpc2hlZCBmb3IgdGhlIEVjY2xlc2lhc3RpY2FsIEhp c3RvcnkgU29jaWV0eSBieQp0aGUgQm95ZGVsbCBQcmVzcywgMTk5OS4KCldlYmVyLCBSb2JlcnQs IGFuZCBSb2dlciBHcnlzb24sIGVkcy4gKkJpYmxpYSBTYWNyYSBpdXh0YSB2dWxnYXRhbQp2ZXJz aW9uZW0qLiA1dGggZWQuIFN0dXR0Z2FydDogRGV1dHNjaGUgQmliZWxnZXNlbGxzY2hhZnQsIDIw MDcuCgpXaW5yb3RoLCBBbmRlcnMuICpUaGUgTWFraW5nIG9mIEdyYXRpYW4ncyogRGVjcmV0dW0u IENhbWJyaWRnZSBTdHVkaWVzCmluIE1lZGlldmFsIExpZmUgYW5kIFRob3VnaHQsIDR0aCBzZXIu LCA0OS4gQ2FtYnJpZGdlOiBDYW1icmlkZ2UKVW5pdmVyc2l0eSBQcmVzcywgMjAwMC4KCldvcmRz d29ydGgsIEpvaG4sIGFuZCBIZW5yeSBKdWxpYW4gV2hpdGUsIGVkcy4gKk5vdXVtIFRlc3RhbWVu dHVtIERvbWluaQpub3N0cmkgSWVzdSBDaHJpc3RpIExhdGluZSwgc2VjdW5kdW0gZWRpdGlvbmVt IHNhbmN0aSBIaWVyb255bWkqLiAzCnZvbHMuIE94Zm9yZDogQ2xhcmVuZG9uIFByZXNzLCAxODg5 XF8xOTU0LgoKWWVhdG1hbiwgSm9obiBQeW0uICpUaGUgRmV1ZGFsIEhpc3Rvcnkgb2YgdGhlIENv dW50eSBvZiBEZXJieTogQ2hpZWZseQpkdXJpbmcgdGhlIDExdGgsIDEydGgsIGFuZCAxM3RoIENl bnR1cmllcyouIDkgdm9scy4gTG9uZG9uOiBCZW1yb3NlLAoxODg2XF8xOTA3LgoKW14xXTogVGhl IGxpZmUgYW5kIHdvcmtzIG9mIFdpbGxpYW0gZGUgTW9udGlidXMgYXJlIGRlc2NyaWJlZCBhbmQK ICAgIGFuYWx5c2VkIGluIEpvc2VwaCBHb2VyaW5nLCAqV2lsbGlhbSBkZSBNb250aWJ1cyAoYy4g MTE0MC0tMTIxMyk6CiAgICBUaGUgU2Nob29scyBhbmQgdGhlIExpdGVyYXR1cmUgb2YgUGFzdG9y YWwgQ2FyZSosIFN0dWRpZXMgYW5kIFRleHRzCiAgICAxMDggKFRvcm9udG86IFBvbnRpZmljYWwg SW5zdGl0dXRlIG9mIE1lZGlhZXZhbCBTdHVkaWVzLCAxOTkyKS4gSGUKICAgIHdhcyBhbHNvIGNh bGxlZCAnZGUgTW9udGUnLCBhcyBpcyBtb3N0IGxpa2VseSB0aGUgY2FzZSBpbiB0aGlzCiAgICBt YW51c2NyaXB0ICh0aGUgYWJicmV2aWF0aW9uIGlzIHNsaWdodGx5IGFtYmlndW91cyk7IHNlZSBp YmlkLiwKICAgIDUtLTcuCgpbXjJdOiBKb2huIExlbGFuZCwgKkRlIHVpcmlzIGlsbHVzdHJpYnVz L09uIEZhbW91cyBNZW4qLCBlZC4gYW5kIHRyYW5zLgogICAgSmFtZXMgUC4gQ2FybGV5LCBCcml0 aXNoIFdyaXRlcnMgb2YgdGhlIE1pZGRsZSBBZ2VzIGFuZCB0aGUgRWFybHkKICAgIE1vZGVybiBQ ZXJpb2QgMSAoVG9yb250bzogUG9udGlmaWNhbCBJbnN0aXR1dGUgb2YgTWVkaWFldmFsIFN0dWRp ZXMsCiAgICAyMDEwKSwgY2hhcC4gMjU1LgoKW14zXTogVGhlIGNsYXNzaWMgYXJ0aWNsZSBvbiB0 aGUgc3ViamVjdCBpcyBMeW5uIFRob3JuZGlrZSwgJ1VuZGUKICAgIHZlcnN1cycsICpUcmFkaXRp byogMTEgKDE5NTUpOiAxNjMtLTkzOyBmb3IgbW9yZSByZWNlbnQgd29yaywgc2VlCiAgICBmb3Ig ZXhhbXBsZSBHcmV0aSBEaW5rb3ZhLUJydXVuLCAnVGhlIFZlcnNlIEJpYmxlIGFzIEFpZGUtTcOp bW9pcmUnLAogICAgaW4gKlRoZSBNYWtpbmcgb2YgTWVtb3J5IGluIHRoZSBNaWRkbGUgQWdlcyos IGVkLiBMdWNpZSBEb2xlxb5hbG92w6EsCiAgICBMYXRlciBNZWRpZXZhbCBFdXJvcGUgNCAoTGVp ZGVuOiBCcmlsbCwgMjAxMCksIDExNS0tMzE7IGFuZCBHcmV0aQogICAgRGlua292YS1CcnV1biwg J05vdGVzIG9uIFBvZXRpYyBDb21wb3NpdGlvbiBpbiB0aGUgVGhlb2xvZ2ljYWwKICAgIFNjaG9v bHMgQ2EuIDEyMDAgYW5kIHRoZSBMYXRpbiBQb2V0aWMgQW50aG9sb2d5IGZyb20gTXMuIEhhcmxl eSA5NTY6CiAgICBBIENyaXRpY2FsIEVkaXRpb24nLCAqU2FjcmlzIEVydWRpcmkqIDQzICgyMDA0 KTogMjk5LS0zOTEsCiAgICBkb2k6MTAuMTQ4NC9KLlNFLjIuMzAwMTI2LiBbQW5kcsOpZSBXQU5U UyBESUZGIFJFRlMsIE1BWUJFCiAgICBDQVJSVVRIRVJTXQoKW140XTogR29lcmluZywgKldpbGxp YW0gZGUgTW9udGlidXMqLCA1MDQtLTYgKHdpdGggYWRkaXRpb25hbAogICAgcmVmZXJlbmNlcyku CgpbXjVdOiBBbGV4YW5kZXIgQW5kcsOpZSwgJ0xhb24gUmV2aXNpdGVkOiBNYXN0ZXIgQW5zZWxt IGFuZCB0aGUgQ3JlYXRpb24KICAgIG9mIGEgVGhlb2xvZ2ljYWwgU2Nob29sIGluIHRoZSBUd2Vs ZnRoIENlbnR1cnkgKEEgUmV2aWV3IEVzc2F5KScsCiAgICAqSm91cm5hbCBvZiBNZWRpZXZhbCBM YXRpbiogMjIgKDIwMTIpOiAyNjMsCiAgICBkb2k6MTAuMTQ4NC9KLkpNTC4xLjEwMzI1ODsgTWlj aGFlbCBDbGFuY2h5IGFuZCBMZXNsZXkgU21pdGgsCiAgICAnQWJlbGFyZCdzIERlc2NyaXB0aW9u IG9mIHRoZSBTY2hvb2wgb2YgTGFvbjogV2hhdCBNaWdodCBJdCBUZWxsIFVzCiAgICBBYm91dCBF YXJseSBTY2hvbGFzdGljIFRlYWNoaW5nPycsICpOb3R0aW5naGFtIE1lZGlldmFsIFN0dWRpZXMq IDU0CiAgICAoMjAxMCk6IDE5LCBkb2k6MTAuMTQ4NC9KLk5NUy4xLjEwMDc2NjsgUGllcnJlIFJp Y2jDqSBhbmQgSmFjcXVlcwogICAgVmVyZ2VyLCAqRGVzIG5haW5zIHN1ciBkZXMgw6lwYXVsZXMg ZGUgZ8OpYW50czogTWHDrnRyZXMgZXQgw6lsw6h2ZXMgYXUKICAgIG1veWVuIMOiZ2UqIChQYXJp czogVGFsbGFuZGllciwgMjAwNiksIDExOS4gKkNvbGxhdGlvKiBpcyBhbHNvIHJlZmVyCiAgICB0 byBhbiBpbnRlbGxlY3R1YWwgcHJvY2VzczogY2YuIFRoaWVycnkgTGVzaWV1ciwgJ0xhICpjb2xs YXRpbyo6IFVuCiAgICBtb2TDqGxlIGNocsOpdGllbiBkZSByw6lzb2x1dGlvbiBkZSBsYSBxdWVz dGlvbj8nLCBpbiAqTGEgbcOpdGhvZGUKICAgIGNyaXRpcXVlIGF1IE1veWVuIMOCZ2UqLCBlZC4g TWlyZWlsbGUgQ2hhemFuIGFuZCBHaWxiZXJ0IERhaGFuLAogICAgQmlibGlvdGjDqHF1ZSBkJ2hp c3RvaXJlIGN1bHR1cmVsbGUgZHUgTW95ZW4gw4JnZSAzIChUdXJuaG91dDoKICAgIEJyZXBvbHMs IDIwMDYpLCA2NS0tODE7IEphY3F1ZWxpbmUgSGFtZXNzZSwgJypDb2xsYXRpbyogZXQKICAgICpy ZXBvcnRhdGlvKjogZGV1eCB2b2NhYmxlcyBzcMOpY2lmaXF1ZXMgZGUgbGEgdmllIGludGVsbGVj dHVlbGxlIGF1CiAgICBtb3llbiDDomdlJywgaW4gKkFjdGVzIGR1IGNvbGxvcXVlICdUZXJtaW5v bG9naWUgZGUgbGEgdmllCiAgICBpbnRlbGxlY3R1ZWxsZSBhdSBtb3llbiDDomdlJyBMZXlkZS1M YSBIYXllIDIwLS0yMSBzZXB0ZW1icmUgMTk4NSosCiAgICBlZC4gT2xnYSBXZWlqZXJzLCDDiXR1 ZGVzIHN1ciBsZSB2b2NhYnVsYWlyZSBpbnRlbGxlY3R1ZWwgZHUgTW95ZW4KICAgIEFnZSAxIChU dXJuaG91dDogQnJlcG9scywgMTk4OCksIDc4LS04NzsgTWFyaWUtRG9taW5pcXVlIENoZW51LAog ICAgJ05vdGVzIGRlIGxleGljb2dyYXBoaWUgcGhpbG9zb3BoaXF1ZSBtw6lkacOpdmFsZScsICpS ZXZ1ZSBkZXMKICAgIHNjaWVuY2VzIHBoaWxvc29waGlxdWVzIGV0IHRow6lvbG9naXF1ZXMqIDE2 LCBuby4gNCAoMTkyNyk6IDQzNS0tNDYuCgpbXjZdOiBBbGV4YW5kZXIgTmVja2FtLCAqU2FjZXJk b3MgYWQgYWx0YXJlKiwgZWQuIENocmlzdG9waGVyIEouCiAgICBNY0Rvbm91Z2gsIDxzcGFuIHN0 eWxlPSJmb250LXZhcmlhbnQ6c21hbGwtY2FwczsiPmNjY208L3NwYW4+IDIyNwogICAgKFR1cm5o b3V0OiBCcmVwb2xzLCAyMDEwKS4KClteN106IE9yZ2FuaXphdGlvbiBieSAqZGlzdGluY3Rpbyog KGkuZS4gYSBkaXZpc2lvbiwgb2Z0ZW4gYXBwbGllZCB0bwogICAgc2VjdGlvbnMgb2YgYm9va3Mp IGlzIGEgdmFzdCB0b3BpYzsgaW4gdGhpcyBwZXJpb2QsIGl0IHdhcyBvZnRlbgogICAgbWFuaWZl c3RlZCBpbiB0aGUgZm9ybSBvZiBkaWFncmFtcyBjb25uZWN0aW5nIHZhcmlvdXMgdGVybXMgd2l0 aAogICAgbGluZXMgdG8gc2hvdyB0aGVpciByZWxhdGlvbnNoaXAuIEFuIGV4Y2VsbGVudCBleGFt cGxlIG9mIHRoaXMKICAgIG1ldGhvZCBvZiBsYXlvdXQgdHJhbnNsYXRlZCBpbnRvIHByaW50IGlz IFJvYmVydCBHcm9zc2V0ZXN0ZSwKICAgICpUZW1wbHVtIERlaSosIGVkLiBKb3NlcGggR29lcmlu ZyBhbmQgRi5BLkMuIE1hbnRlbGxvLCBUb3JvbnRvCiAgICBNZWRpZXZhbCBMYXRpbiBUZXh0cyAx NCAoVG9yb250bzogUHVibGlzaGVkIGZvciB0aGUgQ2VudHJlIGZvcgogICAgTWVkaWV2YWwgU3R1 ZGllcyBieSB0aGUgUG9udGlmaWNhbCBJbnN0aXR1dGUgb2YgTWVkaWFldmFsIFN0dWRpZXMsCiAg ICAxOTg0KS4gT24gdGhlIGNvbmNlcHQgaW4gdGhlIHR3ZWxmdGggY2VudHVyeSosKiBzZWUgQ2hy aXN0b3BoIEguRi4KICAgIE1leWVyLCAqRGllIERpc3Rpbmt0aW9uc3RlY2huaWsgaW4gZGVyIEth bm9uaXN0aWsgZGVzIDEyLgogICAgSmFocmh1bmRlcnRzOiBFaW4gQmVpdHJhZyB6dXIgV2lzc2Vu c2NoYWZ0c2dlc2NoaWNodGUgZGVzCiAgICBIb2NobWl0dGVsYWx0ZXJzKiwgTWVkaWFldmFsaWEg TG92YW5pZW5zaWEsIDFzdCBzZXIuLCBzdHVkaWEgMjkKICAgIChMZXV2ZW46IExldXZlbiBVbml2 ZXJzaXR5IFByZXNzLCAyMDAwKS4KClteOF06IEdyZXRpIERpbmtvdmEtQnJ1dW4sICdSZW1lbWJl cmluZyB0aGUgR29zcGVscyBpbiB0aGUgTGF0ZXIgTWlkZGxlCiAgICBBZ2VzOiBUaGUgQW5vbnlt b3VzICpDYXBpdHVsYSBFdWFuZ2VsaW9ydW0gVmVyc2lmaWNlIFNjcmlwdGEqJywKICAgICpTYWNy aXMgRXJ1ZGlyaSogNDggKDIwMDkpOiAyMzUtLTczLCBkb2k6MTAuMTQ4NC9KLlNFLjEuMTAwNTU5 LgoKW145XTogVGhpcyBpcyBmb3VuZCBpbiBub3MuIDEyLCAxNiwgMTcsIDE4LCAyNiwgMjksIDMy LCAzNCwgMzUsIDQzLCA0NiwKICAgIDQ5LCA1MCwgYW5kIDU0LgoKW14xMF06IEdvZXJpbmcsICpX aWxsaWFtIGRlIE1vbnRpYnVzKiwgMzk1IGlkZW50aWZpZXMgc29tZSBzaXh0eSB1c2VzIG9mCiAg ICB0aGVzZSB3b3JkcyAoaW4gd2hhdCBoZSBjYWxscyAnY2lyY3Vtc3RhbnRpYWwnIHBvZW1zKSBp biBXaWxsaWFtIGRlCiAgICBNb250aWJ1cydzICpWZXJzYXJpdXMqLiBGb3IgYWRkaXRpb25hbCBj b250ZXh0IGFuZCB1c2UgaW4gKlBlbml0ZWFzCiAgICBjaXRvKiwgc2VlIE1hcmpvcmllIEN1cnJ5 IFdvb2RzIGFuZCBSaXRhIENvcGVsYW5kLCAnQ2xhc3Nyb29tIGFuZAogICAgQ29uZmVzc2lvbics IGluICpUaGUgQ2FtYnJpZGdlIEhpc3Rvcnkgb2YgTWVkaWV2YWwgRW5nbGlzaAogICAgTGl0ZXJh dHVyZSosIGVkLiBEYXZpZCBXYWxsYWNlIChDYW1icmlkZ2U6IENhbWJyaWRnZSBVbml2ZXJzaXR5 CiAgICBQcmVzcywgMTk5OSksIDM5My0tOTQ7IGZvciBvdGhlciB2YXJpYW50cywgc2VlIEQuVy4g Um9iZXJ0c29uIEpyLCAnQQogICAgTm90ZSBvbiB0aGUgQ2xhc3NpY2FsIE9yaWdpbiBvZiAiQ2ly Y3Vtc3RhbmNlcyIgaW4gdGhlIE1lZGlldmFsCiAgICBDb25mZXNzaW9uYWwnLCAqU3R1ZGllcyBp biBQaGlsb2xvZ3kqIDQzLCBuby4gMSAoSmFudWFyeSAxOTQ2KToKICAgIDYtLTE0LgoKW14xMV06 IFRoaXMgd2FzIHBlcmhhcHMgb25lIG9mIHRoZSBtb3N0IHBvcHVsYXIgb2YgV2lsbGlhbSdzIG1u ZW1vbmljczsKICAgIHNlZSB0aGUgcmVmZXJlbmNlcyBpbiB0aGUgY29tbWVudGFyeSB0byB0aGlz IHBhc3NhZ2UuCgpbXjEyXTogU2VlIGZ1cnRoZXIgcmVmZXJlbmNlcyBpbiBNLkIuIFBhcmtlcywg JypGb2xpYSBsaWJyb3J1bQogICAgcXVhZXJlcmU6KiBNZWRpZXZhbCBFeHBlcmllbmNlIG9mIHRo ZSBQcm9ibGVtcyBvZiBIeXBlcnRleHQgYW5kIHRoZQogICAgSW5kZXgnLCBpbiAqRmFidWxhIGlu IHRhYnVsYTogVW5hIHN0b3JpYSBkZWdsaSBpbmRpY2kgZGFsCiAgICBtYW5vc2NyaXR0byBhbCB0 ZXN0byBlbGV0dHJvbmljbyosIGVkLiBDbGF1ZGlvIExlb25hcmRpLCBRdWFkZXJuaSBkaQogICAg Y3VsdHVyYSBtZWRpb2xhdGluYSAxMyAoU3BvbGV0bzogQ2VudHJvIGl0YWxpYW5vIGRpIHN0dWRp IHN1bGwnQWx0bwogICAgbWVkaW9ldm8sIDE5OTUpLCAzNCBubi4gNDEtLTQ0LgoKW14xM106IEpv c2VwaCBHb2VyaW5nLCAnTGVvbmFyZCBFLiBCb3lsZSBhbmQgdGhlIEludmVudGlvbiBvZgogICAg KlBhc3RvcmFsaWEqJywgaW4gKkEgQ29tcGFuaW9uIHRvIFBhc3RvcmFsIENhcmUgaW4gdGhlIExh dGUgTWlkZGxlCiAgICBBZ2VzICgxMjAwLS0xNTAwKSosIGVkLiBSb25hbGQgSi4gU3RhbnNidXJ5 LCBCcmlsbCdzIENvbXBhbmlvbnMgdG8KICAgIHRoZSBDaHJpc3RpYW4gVHJhZGl0aW9uIDIyIChM ZWlkZW46IEJyaWxsLCAyMDEwKSwgNy0tMjA7IExlb25hcmQgRS4KICAgIEJveWxlLCAnVGhlIElu dGVyLUNvbmNpbGlhciBQZXJpb2QgMTE3OS0tMTIxNSBhbmQgdGhlIEJlZ2lubmluZ3Mgb2YKICAg IFBhc3RvcmFsIE1hbnVhbHMnLCBpbiAqTWlzY2VsbGFuZWEgUm9sYW5kbyBCYW5kaW5lbGxpLCBQ YXBhCiAgICBBbGVzc2FuZHJvIDxzcGFuIHN0eWxlPSJmb250LXZhcmlhbnQ6c21hbGwtY2Fwczsi PmlpaTwvc3Bhbj4qLCBlZC4KICAgIEZpbGlwcG8gTGlvdHRhIChTaWVuYTogQWNjYWRlbWlhIHNl bmVzZSBkZWdsaSBpbnRyb25hdGksIDE5ODYpLAogICAgNDUtLTU2LgoKW14xNF06IEFsYnJlY2h0 IERpZW0sICdWaXJ0dWVzIGFuZCBWaWNlcyBpbiBFYXJseSBUZXh0cyBvbiBQYXN0b3JhbAogICAg Q2FyZScsICpGcmFuY2lzY2FuIFN0dWRpZXMqIDYyICgyMDA0KTogMTkzLS0yMjMsCiAgICBkb2k6 MTAuMTM1My9mcmMuMjAwNC4wMDA4LgoKW14xNV06IEpvc2VwaCBHb2VyaW5nLCAnVGhlIFN1bW1h ICpRdWkgYmVuZSBwcmVzdW50KiBhbmQgSXRzIEF1dGhvcicsIGluCiAgICAqTGl0ZXJhdHVyZSBh bmQgUmVsaWdpb24gaW4gdGhlIExhdGVyIE1pZGRsZSBBZ2VzOiBQaGlsb2xvZ2ljYWwKICAgIFN0 dWRpZXMgaW4gSG9ub3Igb2YgU2llZ2ZyaWVkIFdlbnplbCosIGVkLiBSaWNoYXJkIEcuIE5ld2hh dXNlciBhbmQKICAgIEpvaG4gQS4gQWxmb3JkLCBNZWRpZXZhbCBhbmQgUmVuYWlzc2FuY2UgVGV4 dHMgYW5kIFN0dWRpZXMgMTE4CiAgICAoQmluZ2hhbXB0b24sIDxzcGFuIHN0eWxlPSJmb250LXZh cmlhbnQ6c21hbGwtY2FwczsiPm55PC9zcGFuPjoKICAgIENlbnRlciBmb3IgTWVkaWV2YWwgYW5k IEVhcmx5IFJlbmFpc3NhbmNlIFN0dWRpZXMsIDE5OTUpLCAxNDMtLTU5LgoKW14xNl06IEZyYW5z IHZhbiBMaWVyZSwgJ1RoZSBTdHVkeSBvZiBDYW5vbiBMYXcgYW5kIHRoZSBFY2xpcHNlIG9mIHRo ZQogICAgTGluY29sbiBTY2hvb2xzLCAxMTc1LS0xMjI1JywgKkhpc3Rvcnkgb2YgVW5pdmVyc2l0 aWVzKiAxOCAoMjAwMyk6CiAgICAxLS0xMy4KClteMTddOiBQZW1icm9rZSBDb2xsZWdlLCA8c3Bh bgogICAgc3R5bGU9ImZvbnQtdmFyaWFudDpzbWFsbC1jYXBzOyI+bXM8L3NwYW4+IDExNSwgb24g dGhlIHZlcnNvIG9mIHRoZQogICAgZmx5bGVhZiwgYWxzbyByZWNvcmRzICdDb2xsZWN0YSBTYW11 ZWxpcyBwcmVzYml0ZXJpIGV4IHNwZWN1bG8gYmVhdGkKICAgIEdyZWdvcmlpIHBhcGUnLCBpbiBh IHNsaWdodGx5IGxhdGVyIGhhbmQsIHdoaWxlIGEgc2l4dGVlbnRoLWNlbnR1cnkKICAgIGhhbmQg cmVjb3JkcyAnUHJlc2J5dGVyaScgb24gZm9sLiAxci4KClteMThdOiBJbiAqQ29sbGVjdGEgZXgg YXVkaXRpcyBzdXBlciBwc2FsbW9zKjogPHNwYW4KICAgIHN0eWxlPSJmb250LXZhcmlhbnQ6c21h bGwtY2FwczsiPm1zPC9zcGFuPiBCb2RsZXkgODYwLCBmb2wuIDU5cmIuCiAgICBOb3RlZCBieSBH b2VyaW5nLCAqV2lsbGlhbSBkZSBNb250aWJ1cyosIDQ5OSBuLiA5LgoKW14xOV06IFBpcGUgUm9s bCBTb2NpZXR5LCBlZC4sICpGZWV0IG9mIEZpbmVzIG9mIHRoZSBUZW50aCBZZWFyIG9mIHRoZQog ICAgUmVpZ24gb2YgS2luZyBSaWNoYXJkIDxzcGFuCiAgICBzdHlsZT0iZm9udC12YXJpYW50OnNt YWxsLWNhcHM7Ij5pPC9zcGFuPiwgPHNwYW4KICAgIHN0eWxlPSJmb250LXZhcmlhbnQ6c21hbGwt Y2FwczsiPmFkPC9zcGFuPiAxMTk4IHRvIDxzcGFuCiAgICBzdHlsZT0iZm9udC12YXJpYW50OnNt YWxsLWNhcHM7Ij5hZDwvc3Bhbj4gMTE5OSosIFB1YmxpY2F0aW9ucyBvZgogICAgdGhlIFBpcGUg Um9sbCBTb2NpZXR5IDI0IChMb25kb246IExvdmUgYW5kIFd5bWFuLCAxOTAwKSwgNzEgKG5vLgog ICAgMTA0KS4KClteMjBdOiBDLlcuIEZvc3RlciBhbmQgS2F0aGxlZW4gTWFqb3IsIGVkcy4sICpU aGUgUmVnaXN0cnVtCiAgICBBbnRpcXVpc3NpbXVtIG9mIHRoZSBDYXRoZWRyYWwgQ2h1cmNoIG9m IExpbmNvbG4qLCBQdWJsaWNhdGlvbnMgb2YKICAgIHRoZSBMaW5jb2xuIFJlY29yZCBTb2NpZXR5 IDI3LS0yOSwgMzIsIDM0LCA0MSwgNDIsIDQ2LCA1MSwgNjIsIDY3LAogICAgNjggKEhlcmVmb3Jk OiBMaW5jb2xuIFJlY29yZCBTb2NpZXR5LCAxOTMxXF82OCksIDQ6MzItLTMzIChub3MuCiAgICAx MTQwLzQxKS4gSXQgaXMgcHJvYmFibHkgdGhlIHNhbWUgcGVyc29uIHdobyBvd25lZCB0aGUgJ21h bnNpb25lbQogICAgU2FtdWVsaXMnIG1lbnRpb25lZCBpbiBPd21ieSBieSBTcGl0YWwgYXJvdW5k IDEyMDAtLTEyMTAsIDQ6MzEgKG5vLgogICAgMTEzOCkuIFRoZXJlIGlzIGFsc28gYSBTYW11ZWwg ZGUgQ2FydGlzIChhbHNvIHJlY29yZGVkIGFzIFNjYXJ0cmVzCiAgICBhbmQgQ2hhcnRyZXMpIGZv dW5kIGluIE93bWJ5IGluIDEyMzAtLTQwICg0OjMzLS0zNSwgbm9zLiAxMTQyLzQzKS4KClteMjFd OiBQaXBlIFJvbGwgU29jaWV0eSwgZWQuLCAqVGhlIEdyZWF0IFJvbGwgb2YgdGhlIFBpcGUgZm9y IHRoZSBSZWlnbgogICAgb2YgS2luZyBIZW5yeSB0aGUgU2Vjb25kKiwgUHVibGljYXRpb25zIG9m IHRoZSBQaXBlIFJvbGwgU29jaWV0eSAxLAogICAgMiwgNC0tOSwgMTEtLTEzLCAxNSwgMTYsIDE4 LCAxOSwgMjEsIDIyLCAyNS0tMzQsIDM2LS0zOCAoTG9uZG9uOgogICAgV3ltYW4sIDE4ODRcXzE5 MjUpLCA4OjY0ICgxMSBIZW4uIDxzcGFuCiAgICBzdHlsZT0iZm9udC12YXJpYW50OnNtYWxsLWNh cHM7Ij5paTwvc3Bhbj4sIHIuIDcsIG0uIDFkKSwgOTo5NyAoMTIKICAgIEhlbi4gPHNwYW4gc3R5 bGU9ImZvbnQtdmFyaWFudDpzbWFsbC1jYXBzOyI+aWk8L3NwYW4+LCByLiA3LCBtLiAyZCksCiAg ICAxMToxNTAgKDEzIEhlbiA8c3BhbiBzdHlsZT0iZm9udC12YXJpYW50OnNtYWxsLWNhcHM7Ij5p aTwvc3Bhbj4sIHIuCiAgICAxMCwgbS4gMiksIDEyOjE0MSAoMTQgSGVuLiA8c3BhbgogICAgc3R5 bGU9ImZvbnQtdmFyaWFudDpzbWFsbC1jYXBzOyI+aWk8L3NwYW4+LCByLiAxMCwgbS4gMSksIDEz OjIgKDE1CiAgICBIZW4uIDxzcGFuIHN0eWxlPSJmb250LXZhcmlhbnQ6c21hbGwtY2FwczsiPmlp PC9zcGFuPiwgci4gMSwgbS4gMSksCiAgICAxNToxMTMgKDE2IEhlbi4gPHNwYW4gc3R5bGU9ImZv bnQtdmFyaWFudDpzbWFsbC1jYXBzOyI+aWk8L3NwYW4+LCByLgogICAgOCwgbS4gMWQpLCAxNjox MyAoMTYgSGVuLiA8c3BhbgogICAgc3R5bGU9ImZvbnQtdmFyaWFudDpzbWFsbC1jYXBzOyI+aWk8 L3NwYW4+LCByLiAxLCBtLiAxZCksIDE4OjczICgxOAogICAgSGVuLiA8c3BhbiBzdHlsZT0iZm9u dC12YXJpYW50OnNtYWxsLWNhcHM7Ij5paTwvc3Bhbj4sIHIuIDYsIG0uIDEpLgogICAgVGhlcmUg aXMgYWxzbyBhICdTYW11ZWwgcHJlc2JpdGVyIGRlIEJsaWRzd29ydGgnIGZvdW5kIGluIE5vdHRp bmdoYW0KICAgIGluIDExODYvMTE4NyBhY2NvcmRpbmcgdG8gSm9obiBQeW0gWWVhdG1hbiwgKlRo ZSBGZXVkYWwgSGlzdG9yeSBvZgogICAgdGhlIENvdW50eSBvZiBEZXJieTogQ2hpZWZseSBkdXJp bmcgdGhlIDExdGgsIDEydGgsIGFuZCAxM3RoCiAgICBDZW50dXJpZXMqIChMb25kb246IEJlbXJv c2UsIDE4ODZcXzE5MDcpLCAxOjEzMzsgdGhpcyBpcyBsaWtlbHkgYQogICAgbWlzcHJpbnQgZm9y ICdTaW1vbiBwcmVzYml0ZXIgZGUgQmxpZGV3dXJkYScsIGFzIGZvdW5kIGluIFBpcGUgUm9sbAog ICAgU29jaWV0eSwgKlRoZSBHcmVhdCBSb2xsIG9mIHRoZSBQaXBlIGZvciB0aGUgUmVpZ24gb2Yg S2luZyBIZW5yeSB0aGUKICAgIFNlY29uZCosIDM3OjE2OCAoMzMgSGVuLiA8c3BhbgogICAgc3R5 bGU9ImZvbnQtdmFyaWFudDpzbWFsbC1jYXBzOyI+aWk8L3NwYW4+LCByLiAxMiwgbS4gMWQpLCBi dXQgSQogICAgaGF2ZSBub3QgaGFkIGFuIG9wcG9ydHVuaXR5IHRvIGNoZWNrIHRoZSBvcmlnaW5h bC4KClteMjJdOiBKb3NpYWggQ294IFJ1c3NlbGwsICpEaWN0aW9uYXJ5IG9mIFdyaXRlcnMgb2Yg VGhpcnRlZW50aC1DZW50dXJ5CiAgICBFbmdsYW5kKiwgQnVsbGV0aW4gb2YgdGhlIEluc3RpdHV0 ZSBvZiBIaXN0b3JpY2FsIFJlc2VhcmNoLCBTcGVjaWFsCiAgICBTdXBwbGVtZW50IDMgKExvbmRv bjogTG9uZ21hbnMsIDE5MzYpLCAxNDcgbm4uIDItLTQgKHMudi4gJ1NhbXVlbAogICAgUHJlc2J5 dGVyJykuCgpbXjIzXTogR29lcmluZywgKldpbGxpYW0gZGUgTW9udGlidXMqLCA0NSBuLiA2OC4g VGhlIHNhbWUgYXNzdW1wdGlvbiBpcwogICAgc2VwYXJhdGVseSBtYWRlIG9mIHRoZSBIdW50aW5n ZG9uIFNhbXVlbCBQcmVzYml0ZXIgaW4gRm9zdGVyIGFuZAogICAgTWFqb3IsICpUaGUgUmVnaXN0 cnVtIEFudGlxdWlzc2ltdW0gb2YgdGhlIENhdGhlZHJhbCBDaHVyY2ggb2YKICAgIExpbmNvbG4q LCAzOjIwMC4KClteMjRdOiBKYWNrIFdhdHQsICdQYXJpc2lhbiBUaGVvbG9naWFucyBhbmQgdGhl IEpld3M6IFBldGVyIExvbWJhcmQgYW5kCiAgICBQZXRlciBDYW50b3InLCBpbiAqVGhlIE1lZGll dmFsIENodXJjaDogVW5pdmVyc2l0aWVzLCBIZXJlc3ksIGFuZAogICAgdGhlIFJlbGlnaW91cyBM aWZlLiBFc3NheXMgaW4gSG9ub3VyIG9mIEdvcmRvbiBMZWZmKiwgZWQuIFBldGVyCiAgICBCaWxs ZXIgYW5kIEJhcnJpZSBEb2Jzb24sIFN0dWRpZXMgaW4gQ2h1cmNoIEhpc3RvcnksIFN1YnNpZGlh IDExCiAgICAoV29vZGJyaWRnZSwgU3VmZm9sazogUHVibGlzaGVkIGZvciB0aGUgRWNjbGVzaWFz dGljYWwgSGlzdG9yeQogICAgU29jaWV0eSBieSB0aGUgQm95ZGVsbCBQcmVzcywgMTk5OSksIDU1 LS03Ni4KClteMjVdOiBTYW11ZWwncyBwYXJhcGhyYXNlcyBvZiB0aGUgZ29zcGVscyBhbmQgUHMu IDMxIGluIFJpY2hhcmQgU2hhcnBlLAogICAgKkEgSGFuZGxpc3Qgb2YgdGhlIExhdGluIFdyaXRl cnMgb2YgR3JlYXQgQnJpdGFpbiBhbmQgSXJlbGFuZCBiZWZvcmUKICAgIDE1NDAqLCBQdWJsaWNh dGlvbnMgb2YgdGhlIEpvdXJuYWwgb2YgTWVkaWV2YWwgTGF0aW4gMSAoVHVybmhvdXQ6CiAgICBC cmVwb2xzLCAxOTk3KSwgNjAwLS02MDEgKHMudi4gJ1NhbXVlbCBQcmllc3QnLCBuby4gMTYwNCks IGFyZQogICAgY29uc2lkZXJlZCBiZWxvdyB0byBiZSBwYXJ0IG9mICpDb2xsZWN0YSBhZCBoYWJl bmRhbSBtZW1vcmlhbS4qIFRoZQogICAgbGlzdGluZyBpbiBGcmllZHJpY2ggU3RlZ23DvGxsZXIs ICpSZXBlcnRvcml1bSBiaWJsaWN1bSBtZWRpaSBhZXZpKgogICAgKE1hZHJpZDogQ29uc2VqbyBT dXBlcmlvciBkZSBJbnZlc3RpZ2FjaW9uZXMgQ2llbnTDrWZpY2FzLCAxOTUwXF84MCksCiAgICA1 OjIwMS0tMiAobm9zLiA3NTkzLS03NTkzLjMpIGlzIG1vc3RseSBjb3JyZWN0LCBidXQgb21pdHMg dGhlCiAgICBQZW1icm9rZSBtYW51c2NyaXB0OyBUaG9tYXMgVGFubmVyLCAqQmlibGlvdGhlY2EK ICAgIEJyaXRhbm5pY28tSGliZXJuaWNhOyBzaXVlLCBEZSBzY3JpcHRvcmlidXMsIHF1aSBpbiBB bmdsaWEsIFNjb3RpYSwKICAgIGV0IEhpYmVybmlhIGFkIHNhZWN1bGkgPHNwYW4KICAgIHN0eWxl PSJmb250LXZhcmlhbnQ6c21hbGwtY2FwczsiPnh2aWk8L3NwYW4+IGluaXRpdW0gZmxvcnVlcnVu dCwKICAgIGNvbW1lbnRhcml1cyosIGVkLiBEYXZpZCBXaWxraW5zIChMb25kb246IEcuIEJvd3ll ciwgMTc0OCksIDY1MQogICAgbGlzdHMgYm90aC4KClteMjZdOiBUaGlzIHdvcmsgaGFzIGJlZW4g ZGlzY3Vzc2VkIGluIGRldGFpbCB3aXRoIGEgcGFydGlhbCBlZGl0aW9uIGJ5CiAgICBHcmV0aSBE aW5rb3ZhLUJydXVuLCAnU2FtdWVsIFByZXNieXRlciBhbmQgdGhlIEdsb3NzZXMgdG8gSGlzCiAg ICBWZXJzaWZpY2F0aW9uIG9mIFBzYWxtIDE6IEFuIEFudGktQ2h1cmNoIEludmVjdGl2ZT8nLCBp bgogICAgKkZsb3JpbGVnaXVtIG1lZGlhZXZhbGU6IMOJdHVkZXMgb2ZmZXJ0ZXMgw6AgSmFjcXVl bGluZSBIYW1lc3NlIMOgCiAgICBsJ29jY2FzaW9uIGRlIHNvbiDDqW3DqXJpdGF0KiwgZWQuIEpv c8OpIEZyYW5jaXNjbyBNZWlyaW5ob3MgYW5kIE9sZ2EKICAgIFdlaWplcnMsIFRleHRlcyBldCDD qXR1ZGVzIGR1IG1veWVuIMOiZ2UgNTAgKExvdXZhaW4tbGEtTmV1dmU6CiAgICBGw6lkw6lyYXRp b24gSW50ZXJuYXRpb25hbGUgZGVzIEluc3RpdHV0cyBkJ8OJdHVkZXMgTcOpZGnDqXZhbGVzLCAy MDA5KSwKICAgIDE1NS0tNzQuCgpbXjI3XTogVGhlIHRleHQgb2YgZm9sLiA5ciBpcyBwcmludGVk IGluIEdvZXJpbmcsICpXaWxsaWFtIGRlIE1vbnRpYnVzKiwKICAgIDUwMS0tMy4KClteMjhdOiBF eGNlcnB0cyBmcm9tIHRoaXMgdGV4dCB3ZXJlIHByZXZpb3VzbHkgcHJpbnRlZCBpbiBpYmlkLiwK ICAgIDUwOC0tMTQ7IGl0IHdhcyBhbHNvIGJyaWVmbHkgZGVzY3JpYmVkIGluIEJlcnlsIFNtYWxs ZXkgYW5kIEdlb3JnZQogICAgTGFjb21iZSwgJ1RoZSBMb21iYXJkJ3MgQ29tbWVudGFyeSBvbiBJ c2FpYXMgYW5kIE90aGVyIEZyYWdtZW50cycsCiAgICAqVGhlIE5ldyBTY2hvbGFzdGljaXNtKiA1 LCBuby4gMiAoQXByaWwgMTkzMSk6IDE0MS0tNDIsCiAgICBkb2k6MTAuNTg0MC9uZXdzY2hvbGFz MTkzMTUyMTcuCgpbXjI5XTogVGhlcmUgaXMgbm8gZWRpdGlvbiBvZiB0aGlzIGJvb2ssIGJ1dCBz ZWUgTG9yZW56byBWYWxnaW1vZ2xpLCAqTG8KICAgIMKrU3BlY3VsdW0gR3JlZ29yaWnCuyBkaSBB ZGFsYmVydG8gZGkgTWV0eiosIEFyY2hpdnVtIEdyZWdvcmlhbnVtIDgKICAgIChGbG9yZW5jZTog U0lTTUVMLCAyMDA2KS4gTWFueSBjb3BpZXMgb2YgaXQgYXJlIGtub3duIHRvIGhhdmUKICAgIGV4 aXN0ZWQgaW4gRW5nbGFuZCwgaW5jbHVkaW5nIG9uZSBhdCBCdXJ5IFN0IEVkbXVuZHMgYnkgdGhl IGxhdGUKICAgIHR3ZWxmdGggY2VudHVyeTogUmljaGFyZCBTaGFycGUgZXQgYWwuLCBlZHMuLCAq RW5nbGlzaCBCZW5lZGljdGluZQogICAgTGlicmFyaWVzOiBUaGUgU2hvcnRlciBDYXRhbG9ndWVz KiwgQ29ycHVzIG9mIEJyaXRpc2ggTWVkaWV2YWwKICAgIExpYnJhcnkgQ2F0YWxvZ3VlcyA0IChM b25kb246IEJyaXRpc2ggTGlicmFyeSBpbiBhc3NvY2lhdGlvbiB3aXRoCiAgICB0aGUgQnJpdGlz aCBBY2FkZW15LCAxOTk2KSwgQjEzLjQ4YS4KClteMzBdOiBEaW5rb3ZhLUJydXVuLCAnU2FtdWVs IFByZXNieXRlcicsIDE1NyBuLiA0OyBHb2VyaW5nLCAqV2lsbGlhbSBkZQogICAgTW9udGlidXMq LCAyNjUuCgpbXjMxXTogUnVzc2VsbCwgKkRpY3Rpb25hcnkgb2YgV3JpdGVycyBvZiBUaGlydGVl bnRoLUNlbnR1cnkgRW5nbGFuZCosCiAgICAxNDcuCgpbXjMyXTogJ1F1aSBHdWxpZWxtaSBkZSBN b250ZSBjZWxlYmVycmltaSBzdW8gdGVtcG9yZSBPeG9uaWFlIHRoZW9sLgogICAgcHJvZmVzc29y aXMgYXVkaXRvciBkaWxpZ2VucyBldCBhZG1pcmF0b3IgZXh0aXRpdC4nIFRhbm5lciwKICAgICpC aWJsaW90aGVjYSBicml0YW5uaWNvLWhpYmVybmljYSosIDY1MSwgY2l0aW5nICdCcltpYW5dIFR3 eW5bZV0gaW4KICAgIHByaW5jLiBBLiBXb29kLiBNcy4gUGl0cycsIHByb2JhYmx5IHRoZSBtaXNz aW5nIGNvcHkgb2YgdGhlCiAgICAqUmVsYXRpb251bSBoaXN0b3JpY2FydW0qIG5vdGVkIGluIE5p Y29sYXMgSy4gS2llc3NsaW5nLCAqVGhlCiAgICBMaWJyYXJ5IG9mIEFudGhvbnkgV29vZCosIE94 Zm9yZCBCaWJsaW9ncmFwaGljYWwgU29jaWV0eQogICAgUHVibGljYXRpb25zLCAzcmQgc2VyLiwg NSAoT3hmb3JkOiBPeGZvcmQgQmlibGlvZ3JhcGhpY2FsIFNvY2lldHksCiAgICAyMDAyKSwgNDg5 LS05MCAobm8uIDUyNjMpLgoKW14zM106IEZvciBhIGhlbHBmdWwgcGVyc3BlY3RpdmUgb2YgdGhl IGF1dGhvcnNoaXAgb2YgdGhpcyBib29rIGFuZCB0aGUKICAgIGNvbW1lbnRhcmllcyB3cml0dGVu IG9uIGl0LCBzZWUgUGhpbGlwcCBXLiBSb3NlbWFubiwgKlRoZSBTdG9yeSBvZiBhCiAgICBHcmVh dCBNZWRpZXZhbCBCb29rOiBQZXRlciBMb21iYXJkJ3MgU2VudGVuY2VzKiAoUGV0ZXJib3JvdWdo LCA8c3BhbgogICAgc3R5bGU9ImZvbnQtdmFyaWFudDpzbWFsbC1jYXBzOyI+b248L3NwYW4+OiBC cm9hZHZpZXcgUHJlc3MsIDIwMDcpLgoKW14zNF06IFdyaXR0ZW4gYXQgdGhlIGJvdHRvbSBvZiBm LiAyMDZ2IGluIDxzcGFuCiAgICBzdHlsZT0iZm9udC12YXJpYW50OnNtYWxsLWNhcHM7Ij5tczwv c3Bhbj4gQm9kbGV5IDg2MCBhbmQgb24gZi4gNzdyCiAgICBvZiBQZW1icm9rZSBDb2xsZWdlLCA8 c3BhbgogICAgc3R5bGU9ImZvbnQtdmFyaWFudDpzbWFsbC1jYXBzOyI+bXM8L3NwYW4+IDExNS4K ClteMzVdOiBNYXJ5IEouIENhcnJ1dGhlcnMsICpUaGUgQm9vayBvZiBNZW1vcnk6IEEgU3R1ZHkg b2YgTWVtb3J5IGluCiAgICBNZWRpZXZhbCBDdWx0dXJlKiwgMm5kIGVkLiwgQ2FtYnJpZGdlIFN0 dWRpZXMgaW4gTWVkaWV2YWwgTGl0ZXJhdHVyZQogICAgMTAgKENhbWJyaWRnZTogQ2FtYnJpZGdl IFVuaXZlcnNpdHkgUHJlc3MsIDIwMDgpLCAyNDQuCgpbXjM2XTogSWJpZC4sIDI0Ni4KClteMzdd OiBEaW5rb3ZhLUJydXVuLCAnU2FtdWVsIFByZXNieXRlcicsIDE2OC4KClteMzhdOiBJbiBhIHJl Y29uc3RydWN0aW9uIG9mIHRoZSBCdXJ5IGNhdGFsb2d1ZSBmcm9tIGV4dGFudAogICAgbWFudXNj cmlwdHMsIHRoZXNlIGFyZSBwbGFjZWQgdW5kZXIgYSBsYXJnZXIgYSBsYXJnZXIgJ0JpYmxpYScK ICAgIHNlY3Rpb24gaW4gUmljaGFyZCBTaGFycGUsICdSZWNvbnN0cnVjdGluZyB0aGUgTWVkaWV2 YWwgTGlicmFyeSBvZgogICAgQnVyeSBTdCBFZG11bmRzIEFiYmV5OiBUaGUgTG9zdCBDYXRhbG9n dWUgb2YgSGVucnkgb2YgS2lya3N0ZWFkJywgaW4KICAgICpCdXJ5IFN0IEVkbXVuZHM6IE1lZGll dmFsIEFydCwgQXJjaGl0ZWN0dXJlLCBBcmNoYWVvbG9neSwgYW5kCiAgICBFY29ub215KiwgZWQu IEFudG9uaWEgR3JhbnNkZW4sIFRoZSBCcml0aXNoIEFyY2hhZW9sb2dpY2FsCiAgICBBc3NvY2lh dGlvbiBDb25mZXJlbmNlIFRyYW5zYWN0aW9ucyAyMCAoTGVlZHM6IEJyaXRpc2gKICAgIEFyY2hh ZW9sb2dpY2FsIEFzc29jaWF0aW9uLCAxOTk4KSwgMjEwOyBmb3IgYW4gZWFybGllciBsaXN0aW5n IG9mCiAgICBzdXJ2aXZvcnMsIHNlZSBNLlIuIEphbWVzLCAnQnVyeSBTdC4gRWRtdW5kcyBNYW51 c2NyaXB0cycsICpFbmdsaXNoCiAgICBIaXN0b3JpY2FsIFJldmlldyogNDEsIG5vLiAxNjIgKEFw cmlsIDE5MjYpOiAyNTQsCiAgICBkb2k6MTAuMTA5My9laHIvWExJLkNMWElJLjI1MS4gRm9yIGEg bW9yZSB1cC10by1kYXRlIGxpc3Qgb3JnYW5pemVkCiAgICBieSBjdXJyZW50IG93bmVycywgc2Vl IE4uUi4gS2VyLCAqTWVkaWV2YWwgTGlicmFyaWVzIG9mIEdyZWF0CiAgICBCcml0YWluOiBBIExp c3Qgb2YgU3Vydml2aW5nIEJvb2tzKiwgMm5kIGVkLiwgR3VpZGVzIGFuZCBIYW5kYm9va3MgMwog ICAgKExvbmRvbjogT2ZmaWNlcyBvZiB0aGUgUm95YWwgSGlzdG9yaWNhbCBTb2NpZXR5LCAxOTY0 KSwgMTYtLTIyOwogICAgd2l0aCBmdXJ0aGVyIGNvcnJlY3Rpb25zIGluIE4uUi4gS2VyLCAqTWVk aWV2YWwgTGlicmFyaWVzIG9mIEdyZWF0CiAgICBCcml0YWluOiBBIExpc3Qgb2YgU3Vydml2aW5n IEJvb2tzLiBTdXBwbGVtZW50IHRvIHRoZSBTZWNvbmQKICAgIEVkaXRpb24qLCBlZC4gQW5kcmV3 IEcuIFdhdHNvbiwgR3VpZGVzIGFuZCBIYW5kYm9va3MgMTUgKExvbmRvbjoKICAgIE9mZmljZXMg b2YgdGhlIFJveWFsIEhpc3RvcmljYWwgU29jaWV0eSwgMTk4NyksIDUtLTcuCgpbXjM5XTogRm9y IGEgc3VtbWFyeSBvZiB0aGUgQnVyeSBsaWJyYXJ5J3MgaGlzdG9yeSBhbmQgZnVydGhlcgogICAg cmVmZXJlbmNlcywgc2VlIFNoYXJwZSBldCBhbC4sICpFbmdsaXNoIEJlbmVkaWN0aW5lIExpYnJh cmllcyosCiAgICA0My0tNDkuCgpbXjQwXTogVGhvbWFzIEphbWVzLCAqRWNsb2dhIE94b25pby1D YW50YWJyaWdpZW5zaXMqIChMb25kb246IEdlb3JnZQogICAgQmlzaG9wIGFuZCBKb2huIE5vcnRv biwgMTYwMCksIDI6MTMyIChuby4gMTQ5KS4gVGhpcyBpcyBub3QKICAgIGFsdG9nZXRoZXIgdW51 c3VhbDsgdGhlcmUgYXJlIDMxIG1hbnVzY3JpcHRzIGZyb20gaGlzIGxpc3QgdGhhdCBhcmUKICAg IG5vdyBtaXNzaW5nLCB3aXRoIHNldmVyYWwgb2YgdGhlbSBub3cgaW4gT3hmb3JkLCBsaXN0ZWQg aW4gTS5SLgogICAgSmFtZXMgYW5kIEVsbGlzIEguIE1pbm5zLCAqQSBEZXNjcmlwdGl2ZSBDYXRh bG9ndWUgb2YgdGhlCiAgICBNYW51c2NyaXB0cyBpbiB0aGUgTGlicmFyeSBvZiBQZW1icm9rZSBD b2xsZWdlLCBDYW1icmlkZ2UqCiAgICAoQ2FtYnJpZGdlOiBVbml2ZXJzaXR5IFByZXNzLCAxOTA1 KSwgeHgtLXh4aWlpLCB3aGVyZSB0aGlzCiAgICBtYW51c2NyaXB0IGlzIG5vLiAyMDc3LCBmb2xs b3dpbmcgaXRzIGVudW1lcmF0aW9uIGluIEJlcm5hcmQncyB1bmlvbgogICAgY2F0YWxvZ3VlIG9m IDE2OTcgKHdoaWNoIGZvciBQZW1icm9rZSBzaW1wbHkgcmVwcmludGVkIEphbWVzJwogICAgbGlz dGluZykuCgpbXjQxXTogVGhpcyBpcyBhIGZhaXJseSBjb21tb24gZmVhdHVyZSBpbiBtYW51c2Ny aXB0cyBvZiB0aGlzIHBlcmlvZCwKICAgIHRob3VnaCBpdCBpcyBvbmx5IG9jY2FzaW9uYWxseSBu b3RlZCBpbiBjYXRhbG9ndWVzOyBJIGhhdmUgaGFwcGVuZWQKICAgIGFjcm9zcyBpdCBpbiBPeGZv cmQsIEJvZGxlaWFuIExpYnJhcnksIDxzcGFuCiAgICBzdHlsZT0iZm9udC12YXJpYW50OnNtYWxs LWNhcHM7Ij5tczwvc3Bhbj4gQXVjdC4gRC4gMi4gOSwgZm9sLiAxCiAgICAoUGV0ZXIgTG9tYmFy ZCBvbiB0aGUgUHNhbG1zKTsgT3hmb3JkLCBCb2RsZWlhbiBMaWJyYXJ5LCA8c3BhbgogICAgc3R5 bGU9ImZvbnQtdmFyaWFudDpzbWFsbC1jYXBzOyI+bXM8L3NwYW4+IEF1Y3QuIEYuIDUuIDIzLCBm b2wuIDdyCiAgICAoQWxleGFuZGVyIE5lY2thbSwgKkNvcnJvZ2F0aW9uZXMgUHJvbWV0aGVpKik7 IE94Zm9yZCwgQm9kbGVpYW4KICAgIExpYnJhcnksIDxzcGFuIHN0eWxlPSJmb250LXZhcmlhbnQ6 c21hbGwtY2FwczsiPm1zPC9zcGFuPiBCb2RsZXkKICAgIDUyOCwgZm9sLiAxciAoQWxleGFuZGVy IE5lY2thbSwgKlRyYWN0YXR1cyBzdXBlciBNdWxpZXJlbSBmb3J0ZW0qKTsKICAgIE94Zm9yZCwg SmVzdXMgQ29sbGVnZSwgPHNwYW4KICAgIHN0eWxlPSJmb250LXZhcmlhbnQ6c21hbGwtY2Fwczsi Pm1zPC9zcGFuPiA5NCwgZm9sLiA1N3IgKEFsZXhhbmRlcgogICAgTmVja2FtLCBDb21tZW50YXJ5 IG9uIFByb3ZlcmJzKTsgYW5kIFNhbiBNYXJpbm8sIEh1bnRpbmd0b24gTGlicmFyeSwKICAgIDxz cGFuIHN0eWxlPSJmb250LXZhcmlhbnQ6c21hbGwtY2FwczsiPm1zIGhtPC9zcGFuPiAzNTMwMCAo QmVkZSwKICAgIENvbW1lbnRhcnkgb24gQWN0cykuIFRoZXJlIGlzIGFsc28gYSB2YXJpYXRpb24s ICdTcGlyaXR1cyBzYW5jdGkKICAgIGFzc2l0IG5vYmlzIGdyYXRpYScuCgpbXjQyXTogVGhlIHRl eHQgYmVsb3cgZ2VuZXJhbGx5IGZvbGxvd3MgUm9iZXJ0IFdlYmVyIGFuZCBSb2dlciBHcnlzb24s CiAgICBlZHMuLCAqQmlibGlhIFNhY3JhIGl1eHRhIHZ1bGdhdGFtIHZlcnNpb25lbSosIDV0aCBl ZC4gKFN0dXR0Z2FydDoKICAgIERldXRzY2hlIEJpYmVsZ2VzZWxsc2NoYWZ0LCAyMDA3KS4gSSBo YXZlIG5vdCByZXBvcnRlZCB2YXJpYW50cyB0aGF0CiAgICBhcmUgZm91bmQgZWl0aGVyIGluIHRo aXMgZWRpdGlvbiBvciB0aGUgbGFyZ2Ugb25lcyB1cG9uIHdoaWNoIGl0IGlzCiAgICBiYXNlZDog UG9udGlmaWNhbCBBYmJleSBvZiBTdCBKZXJvbWUtaW4tdGhlLUNpdHksIGVkLiwgKkJpYmxpYSBT YWNyYQogICAgaXV4dGEgbGF0aW5hbSB2dWxnYXRhbSB2ZXJzaW9uZW0qLCAxOCB2b2xzLiAoUm9t ZTogTGlicmVyaWEgRWRpdHJpY2UKICAgIFZhdGljYW5hLCAxOTI2XF85NSksIGNvdmVyaW5nIHRo ZSBPbGQgVGVzdGFtZW50OyBhbmQgSm9obiBXb3Jkc3dvcnRoCiAgICBhbmQgSGVucnkgSnVsaWFu IFdoaXRlLCBlZHMuLCAqTm91dW0gVGVzdGFtZW50dW0gRG9taW5pIG5vc3RyaSBJZXN1CiAgICBD aHJpc3RpIExhdGluZSwgc2VjdW5kdW0gZWRpdGlvbmVtIHNhbmN0aSBIaWVyb255bWkqLCAzIHZv bHMuCiAgICAoT3hmb3JkOiBDbGFyZW5kb24gUHJlc3MsIDE4ODlcXzE5NTQpLgoKW140M106IFRo ZSBmb2xsb3dpbmcgcGFzc2FnZXMgYXJlIGFiYnJldmlhdGVkIHNvIGhlYXZpbHkgdGhhdCBvbmUg d291bGQKICAgIGFsbW9zdCBjZXJ0YWlubHkgbmVlZCB0byBrbm93IHRoZSBwYXNzYWdlIGluIG9y ZGVyIHRvIHVuZGVyc3RhbmQgdGhlCiAgICBxdW90YXRpb246IERldXQuIDY6NSAoMzkuMDAwKSwg UHMuIDY6NyAoMTAuMDAwKSwgUHMuIDE3OjEzICgzOC4wMDApLAogICAgUHMuIDE4OjMgKDM4LjAw MCksIFBzLiAxODo5ICgzNC4wMDAsIDM4LjAwMCksIFBzLiAyNDo5ICg0LjAwMCksIFBzLgogICAg MjY6NiAoMzkuMDAwKSwgUHMuIDM3OjE1ICgxNS4wMDApLCBQcy4gNDA6MTAgKDE0LjAwMCksIFBz LiA0MTo0CiAgICAoMTAuMDAwIGFuZCAyNi4wMDApLCBQcy4gNzI6MyAoMTQuMDAwKSwgUHMuIDEw MTo1ICgyNi4wMDApLCBQcy4KICAgIDExMTo1ICgxMi4wMDApLCBQcy4gMTE4OjEzMCAoMzQuMDAw KSwgUHMuIDEzNjoxICgxMC4wMDApLCBQcy4KICAgIDE0NDo2LS03ICgzOC4wMDApLCBQcy4gMTQ2 OjExICg1My4wMDApLCBQcy4gMTQ5OjQgKDQuMDAwKSwgTWF0dC4gNDoyCiAgICAoMTEuMDAwKSwg TWF0dC4gNTozLS00ICgxNS4wMDApLCBNYXR0LiA1OjEwICgxNS4wMDApLCBNYXR0LiA2OjMKICAg ICgyNy4wMDApLCBNYXR0LiA2OjI1ICg0Mi4wMDApLCBNYXR0LiAyNDo0NSAoNDEuMDAwKSwgTWF0 dC4gMjU6MzUKICAgICgxMS4wMDAsIDUxLjAwMCksIE1hcmsgMTA6MTggKDQ2LjAwMCksIEx1a2Ug NDoxOC0tMTkgKDE2LjAwMCksIEx1a2UKICAgIDExOjE0ICgxNi4wMDApLCBKb2huIDY6NTEgKDI2 LjAwMCksIEpvaG4gNjo1NCAoMjQuMDAwKSwgSm9obiAxNjoxMgogICAgKDQxLjAwMCksIDEgVGhl c3MuIDQ6MTMgKDEwLjAwMCkuCgpbXjQ0XTogRGlua292YS1CcnV1biwgJ1NhbXVlbCBQcmVzYnl0 ZXInLCAxNjguCgpbXjQ1XTogRm9yIGFuIGludHJvZHVjdGlvbiB0byBHcmF0aWFuLCBzZWUgQW5k ZXJzIFdpbnJvdGgsICpUaGUgTWFraW5nCiAgICBvZiBHcmF0aWFuJ3MqIERlY3JldHVtLCBDYW1i cmlkZ2UgU3R1ZGllcyBpbiBNZWRpZXZhbCBMaWZlIGFuZAogICAgVGhvdWdodCwgNHRoIHNlci4s IDQ5IChDYW1icmlkZ2U6IENhbWJyaWRnZSBVbml2ZXJzaXR5IFByZXNzLCAyMDAwKSwKICAgIGNo YXAuIDEuCgpbXjQ2XTogTWFyZ2FyZXQgVC4gR2lic29uLCAnVGhlIFR3ZWxmdGgtQ2VudHVyeSBH bG9zc2VkIEJpYmxlJywgaW4KICAgICpQYXBlcnMgUHJlc2VudGVkIHRvIHRoZSBUZW50aCBJbnRl cm5hdGlvbmFsIENvbmZlcmVuY2Ugb24gUGF0cmlzdGljCiAgICBTdHVkaWVzIEhlbGQgaW4gT3hm b3JkLCAxOTg3KiwgZWQuIEUuQS4gTGl2aW5nc3RvbmUsIHZvbC4gNSwgU3R1ZGlhCiAgICBQYXRy aXN0aWNhIDIzIChMZXV2ZW46IFBlZXRlcnMsIDE5ODkpLCAyNDMgbm90ZXMgaXRzIHVzZSBpbgog ICAgKkNvbGxlY3RhIGV4IGF1ZGl0aXMgc3VwZXIgcHNhbG1vcyouCgpbXjQ3XTogRm9yIGEgc3Vt bWFyeSBvZiB0aGUgcmV2aXNlZCBkYXRpbmcgcmVzdWx0aW5nIGZyb20gdGhlIGVkaXRpbmcgb2YK ICAgIHRoZSAqVmVyYnVtIGFkYnJldWlhdHVtLCogc2VlIE1hcmNpYSBMLiBDb2xpc2gsIHJldmll dyBvZiAqUGV0cmkKICAgIENhbnRvcmlzIFBhcmlzaWVuc2lzIFZlcmJ1bSBhZGJyZXZpYXR1bTog VGV4dHVzIGNvbmZsYXR1cyosIGJ5CiAgICBNb25pcXVlIEJvdXRyeSwgKlNwZWN1bHVtKiA4MSwg bm8uIDMgKEp1bHkgMjAwNik6IDkwNS0tNiwKICAgIGRvaToxMC4xMDE3L1MwMDM4NzEzNDAwMDE2 NDA3LgoKW140OF06IE9uIHRoZSBkYXRlLCBzZWUgSmFtZXMgRi4gRGltb2NrLCBpbnRyb2R1Y3Rp b24gdG8gR2VyYWxkIG9mCiAgICBXYWxlcywgKkdpcmFsZGkgQ2FtYnJlbnNpcyBvcGVyYSwqIHZv bC4gNSwgKlRvcG9ncmFwaGlhIEhpYmVybmljYSBldAogICAgRXhwdWduYXRpbyBIaWJlcm5pY2Eq LCBlZC4gSmFtZXMgRi4gRGltb2NrLCBSb2xscyBTZXJpZXMgMjEgKExvbmRvbjoKICAgIExvbmdt YW4sIDE4NjcpLCBsaWlpIG4uIDI7IGNpdGVkIHdpdGggZnVydGhlciBjb250ZXh0IGluIEJyaWFu CiAgICBHb2xkaW5nLCAnR2VyYWxkIG9mIFdhbGVzLCB0aGUgKkdlbW1hIEVjY2xlc2lhc3RpY2Eq IGFuZCBQYXN0b3JhbAogICAgQ2FyZScsIGluICpUZXh0IGFuZCBUcmFkaXRpb25zIG9mIE1lZGll dmFsIFBhc3RvcmFsIENhcmU6IEVzc2F5cyBpbgogICAgSG9ub3VyIG9mIEJlbGxhIE1pbGxldHQq LCBlZC4gQ2F0ZSBHdW5uIGFuZCBDYXRoZXJpbmUgSW5uZXMtUGFya2VyCiAgICAoV29vZGJyaWRn ZSwgU3VmZm9sazogWW9yayBNZWRpZXZhbCBQcmVzcywgMjAwOSksIDQ4LCA1MS4KClteNDldOiBB LiBCb3V0ZW15LCAnR2lyYXVkIGRlIEJhcnJpIGV0IFBpZXJyZSBsZSBDaGFudHJlOiBVbmUgc291 cmNlIGRlCiAgICBsYSAqR2VtbWEgZWNjbGVzaWFzdGljYSonLCAqUmV2dWUgZHUgbW95ZW4gw6Jn ZSBsYXRpbiogMiAoMTk0Nik6CiAgICA0NS0tNjI7IEUuTS4gU2FuZm9yZCwgJ0dpcmFsZHVzIENh bWJyZW5zaXMnIERlYnQgdG8gUGV0cnVzIENhbnRvcicsCiAgICAqTWVkaWV2YWxpYSBldCBIdW1h bmlzdGljYSogMyAoMTk0NSk6IDE2LS0zMjsgR29sZGluZywgJ0dlcmFsZCBvZgogICAgV2FsZXMn LCA1Mi0tNTQuCgpbXjUwXTogU2VlLCBmb3IgaW5zdGFuY2UsICpHZW1tYSBlY2NsZXNpYXN0aWNh KiAyLjI2IGluIEJvdXRlbXksICdHaXJhdWQKICAgIGRlIEJhcnJpIGV0IFBpZXJyZSBsZSBDaGFu dHJlJywgNDk7IHRoaXMgaXMgb25seSB0byBiZSBmb3VuZCBpbgogICAgUGV0ZXIgdGhlIENoYW50 ZXIsICpWZXJidW0gYWRicmV1aWF0dW06IFRleHR1cyBwcmlvciosIGVkLiBNb25pcXVlCiAgICBC b3V0cnksIDxzcGFuIHN0eWxlPSJmb250LXZhcmlhbnQ6c21hbGwtY2FwczsiPmNjY208L3NwYW4+ IDE5NmEKICAgIChUdXJuaG91dDogQnJlcG9scywgMjAxMiksIGNoYXAuIDIyIChwcC4gMTc1LS03 NiwgbGluZXMgNzEtLTkwKSwKICAgIHdoaWNoIGlzIGluZGVlZCBtdWNoIGNsb3NlciB0byBHZXJh bGQncyB0ZXh0IHRoYW4gdGhlIHZlcnNpb24KICAgIEJvdXRlbXkgY2l0ZXMgZnJvbSB0aGUgKlBh dHJvbG9naWEgTGF0aW5hKiBhcyBlZGl0ZWQgYnkgR2VvcmdlcwogICAgR2Fsb3Bpbi4KClteNTFd OiBHb2VyaW5nLCAqV2lsbGlhbSBkZSBNb250aWJ1cyosIDExLS0xMiAod2l0aCBmdXJ0aGVyIHJl ZmVyZW5jZXMpOwogICAgSHVnaCBNYWNLaW5ub24sICdXaWxsaWFtIGRlIE1vbnRpYnVzOiBBIE1l ZGlldmFsIFRlYWNoZXInLCBpbgogICAgKkVzc2F5cyBpbiBNZWRpZXZhbCBIaXN0b3J5IFByZXNl bnRlZCB0byBCZXJ0aWUgV2lsa2luc29uKiwgZWQuIFQuQS4KICAgIFNhbmRxdWlzdCBhbmQgTS5S LiBQb3dpY2tlIChUb3JvbnRvOiBVbml2ZXJzaXR5IG9mIFRvcm9udG8gUHJlc3MsCiAgICAxOTY4 KSwgMzMuIFRoZSBsaW5rIGJldHdlZW4gV2lsbGlhbSBkZSBNb250aWJ1cyBhbmQgUGV0ZXIgdGhl CiAgICBDaGFudGVyIHdhcyBmaXJzdCBzdWdnZXN0ZWQgYnkgUi5XLiBIdW50LCAnRW5nbGlzaCBM ZWFybmluZyBpbiB0aGUKICAgIExhdGUgVHdlbGZ0aCBDZW50dXJ5JywgKlRyYW5zYWN0aW9ucyBv ZiB0aGUgUm95YWwgSGlzdG9yaWNhbAogICAgU29jaWV0eSosIDR0aCBzZXIuLCAxOSAoMTkzNik6 IDIxLCBkb2k6MTAuMjMwNy8zNjc4Njg1LgoKW141Ml06IEpvaG4gVy4gQmFsZHdpbiwgKk1hc3Rl cnMsIFByaW5jZXMsIGFuZCBNZXJjaGFudHM6IFRoZSBTb2NpYWwKICAgIFZpZXdzIG9mIFBldGVy IHRoZSBDaGFudGVyIGFuZCBIaXMgQ2lyY2xlKiAoUHJpbmNldG9uOiBQcmluY2V0b24KICAgIFVu aXZlcnNpdHkgUHJlc3MsIDE5NzApLCAxOjQxLS00My4KClteNTNdOiBPbiB0aGVpciByZWxhdGlv bnNoaXAsIHNlZSBpYmlkLiwgMTozNC0tMzYuCgpbXjU0XTogRm9yIGFuIGludHJvZHVjdGlvbiB0 byBtZXRyZSBpbiBjb250ZW1wb3JhcnkgdXNhZ2UsIHNlZSBBLkcuCiAgICBSaWdnLCAqQSBIaXN0 b3J5IG9mIEFuZ2xvLUxhdGluIExpdGVyYXR1cmUsIDEwNjYtLTE0MjIqIChDYW1icmlkZ2U6CiAg ICBDYW1icmlkZ2UgVW5pdmVyc2l0eSBQcmVzcywgMTk5MiksIDMxMy0tMjksIHdpdGggZXhhbXBs ZXMgb2YKICAgIExlb25pbmVzIGF0IDMxOSBhbmQgb2YgKkVsZWdpIExlb25pbmkqIGF0IDMyMi4K ClteNTVdOiBEaW5rb3ZhLUJydXVuLCAnU2FtdWVsIFByZXNieXRlcicsIDE1Ni4KClteNTZdOiBG b3IgZ2VuZXJhbCBndWlkYW5jZSwgc2VlIEEuRy4gUmlnZywgJ0FuZ2xvLUxhdGluJywgaW4gKlNp bmdpbmcKICAgIEVhcmx5IE11c2ljOiBUaGUgUHJvbnVuY2lhdGlvbiBvZiBFdXJvcGVhbiBMYW5n dWFnZXMgaW4gdGhlIExhdGUKICAgIE1pZGRsZSBBZ2VzIGFuZCBSZW5haXNzYW5jZSosIGVkLiBU aW1vdGh5IEouIE1jR2VlIChCbG9vbWluZ3RvbjoKICAgIEluZGlhbmEgVW5pdmVyc2l0eSBQcmVz cywgMTk5NiksIDQ2LS02MS4KClteNTddOiBHb2VyaW5nLCAqV2lsbGlhbSBkZSBNb250aWJ1cyos IDUwOC0tMTQuCgpbXjU4XTogT24gdGhpcyBzcGVsbGluZywgc2VlIFBldGVyIFN0b3R6LCAqSGFu ZGJ1Y2ggenVyIGxhdGVpbmlzY2hlbgogICAgU3ByYWNoZSBkZXMgTWl0dGVsYWx0ZXJzKiwgSGFu ZGJ1Y2ggZGVyIEFsdGVydHVtc3dpc3NlbnNjaGFmdCAyLjUKICAgIChNdW5pY2g6IEJlY2ssIDE5 OTZcXzIwMDQpLCAzOjE2OCAoPHNwYW4KICAgIHN0eWxlPSJmb250LXZhcmlhbnQ6c21hbGwtY2Fw czsiPnZpaTwvc3Bhbj4gMTI4LjMpLgo= --=-=-= Content-Type: text/plain; charset=ISO-8859-1 Content-Disposition: inline