From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: "H. Dieter Wilhelm" Newsgroups: gmane.emacs.bugs Subject: bug#39609: 26.3; Packaging system: Package documentation in the *Help* buffer Date: Tue, 24 Nov 2020 22:19:04 +0100 Message-ID: <86tutelagn.fsf@duenenhof-wilhelm.de> References: <86y2t4zy00.fsf@duenenhof-wilhelm.de> <87tuuf1rf3.fsf@gnus.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="34671"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.1 (gnu/linux) Cc: 39609@debbugs.gnu.org To: Lars Ingebrigtsen Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Tue Nov 24 22:23:46 2020 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1khfms-0008u7-0n for geb-bug-gnu-emacs@m.gmane-mx.org; Tue, 24 Nov 2020 22:23:46 +0100 Original-Received: from localhost ([::1]:56526 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1khfmq-0001ik-Si for geb-bug-gnu-emacs@m.gmane-mx.org; Tue, 24 Nov 2020 16:23:44 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:49508) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1khfjM-0008Kb-3k for bug-gnu-emacs@gnu.org; Tue, 24 Nov 2020 16:20:11 -0500 Original-Received: from debbugs.gnu.org ([209.51.188.43]:49928) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1khfjG-000472-KZ for bug-gnu-emacs@gnu.org; Tue, 24 Nov 2020 16:20:06 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1khfjG-0003Je-GA for bug-gnu-emacs@gnu.org; Tue, 24 Nov 2020 16:20:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: "H. Dieter Wilhelm" Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 24 Nov 2020 21:20:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 39609 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: moreinfo Original-Received: via spool by 39609-submit@debbugs.gnu.org id=B39609.160625275612688 (code B ref 39609); Tue, 24 Nov 2020 21:20:02 +0000 Original-Received: (at 39609) by debbugs.gnu.org; 24 Nov 2020 21:19:16 +0000 Original-Received: from localhost ([127.0.0.1]:33241 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1khfiW-0003IZ-AH for submit@debbugs.gnu.org; Tue, 24 Nov 2020 16:19:16 -0500 Original-Received: from mout.kundenserver.de ([212.227.17.10]:39969) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1khfiT-0003IL-I7 for 39609@debbugs.gnu.org; Tue, 24 Nov 2020 16:19:14 -0500 Original-Received: from ping ([92.116.139.50]) by mrelayeu.kundenserver.de (mreue108 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MBlpC-1kVXAl0wkW-00C9we; Tue, 24 Nov 2020 22:19:07 +0100 In-Reply-To: <87tuuf1rf3.fsf@gnus.org> (Lars Ingebrigtsen's message of "Tue, 27 Oct 2020 18:59:12 +0100") X-Provags-ID: V03:K1:xL0chAIcZIFkc5c3NtJh7koZ0XRu6X63eX+sDQGRzZKpQWHpHMN 6eA0oajf3F/RYzqCN+magcq6oCF3g7GaBV6dht1ocNPh932OXB470FcO/g0Ac8jJvNd6GgS iBk0KPIBmauFcDdtQuC9Z/BB4V+63JG1cyDcYl5jaY3yWX9ugoaczLQifze7uOl1tgM24tY erXragvKtfiDj502+mTMA== X-UI-Out-Filterresults: notjunk:1;V03:K0:S3k4qzQZuNY=:VJmcGj41uV+BX6Kl4ckTOW F11Uao8YvmzLnGKpBVG5/SOu9ykYPuZQGRMWmV9jI/rmF13H0EuFw6/ia/55H2Ze+EZNES/x0 Nf0XhXLF/c8Hmg/zdL/+k8LQkbUXR83tvqA3exl/QEuP6haarE8+AvYLWf5YO6NQFp88Hr5dX jWOAM5rJJbzAuvCsAqa058SoLqmbPnulQ4WI5PJUgLshH2UTC90XPlADMKByHCkXKhpuN6V5h lRo37OWWtRSJ1CvucJrveOuHDZ+LeWVLZGi0yeXhdqGghLy7+4eR8Br9mniJPnoG8oyim+gKb 2wHdpRcru6Sz9l6/OwhGYpARYq+IHiEmDwGSFj7XiBrG/ESZqikguJJBx2D10JKHKb11WxD7m wNrmGf+aBBJZsZecc932XdJjCiIJdoUZlmiX73kA4fgBBnfuju7CqSLsdZ0hWP23WKXBtaaqu TtnT1mRiSQ== X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.io gmane.emacs.bugs:194129 Archived-At: --=-=-= Content-Type: text/plain Hello Lars thank you for looking into this! Lars Ingebrigtsen writes: > dieter@duenenhof-wilhelm.de (H. Dieter Wilhelm) writes: > >> The Elisp manual (GNU Emacs 26.3 (build 1, x86_64-pc-linux-gnu, GTK+ >> Version 3.22.30) of 2019-12-14) states that a README file in the content >> directory of a package will be used as a package description (C-h P). >> >> Please check >> >> (info "(elisp) Multi-file Packages"). >> >> Yet this isn't working! By looking at other packages It seems that >> there must be a file `PACKAGE-NAME-readme.txt' BELOW the content >> directory to get a description in the package help. > I tried `C-h P ada-mode RET' and got a *Help* buffer that included the > README file for the ada-mode package, so I seem to be unable to > reproduce this bug. > Do you have a precise recipe to reproduce it, starting from "emacs -Q"? I prepared a multi-file package for you. Under Emacs 26.3 or earlier you won't see any "long description" at all (unless you include a PACKAGE-NAME-readme.txt in the package archive). Under 27.1 it shows now the ;;; Commentary: section of the PACKAGE-NAME.el file. But NOT the content of the accompanying README! Please unpack the archive inform-1.4.tar into an empty DIRECTORY and install the package interactively with package-install-file pointing to the DIRECTORY. Thank you for your help Dieter --=-=-= Content-Type: application/x-tar Content-Disposition: attachment; filename=inform-1.4.tar Content-Transfer-Encoding: base64 aW5mb3JtLmVsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA2NDQAMDAwMTc1 MQAwMDAxNzUxADAwMDAwMDQzNjIxADEzNjYwMzIxMTE2ADAxMjIxMwAgMAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGRpZXRlcgAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAZGlldGVyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7 OzsgaW5mb3JtLmVsIC0tLSBMaW5rIHN5bWJvbHMgaW4gSW5mbyBidWZmZXJzIHRvIHRoZWlyIGhl bHAgZG9jdW1lbnRhdGlvbiAgLSotIGxleGljYWwtYmluZGluZzogdDsgLSotCgo7OyBDb3B5cmln aHQgKEMpIDIwMjAgIEguIERpZXRlciBXaWxoZWxtCgo7OyBBdXRob3I6IEguIERpZXRlciBXaWxo ZWxtIDxkaWV0ZXJAZHVlbmVuaG9mLXdpbGhlbG0uZGU+Cjs7IE1haW50YWluZXI6IEguIERpZXRl ciBXaWxoZWxtCjs7IFBhY2thZ2UtUmVxdWlyZXM6ICgoZW1hY3MgIjI1LjEiKSkKOzsgS2V5d29y ZHM6IGhlbHAsIGRvY3MsIGNvbnZlbmllbmNlCjs7IENyZWF0ZWQ6IDIwMjAtMDQKOzsgVmVyc2lv bjogMS40Cjs7IFVSTDogaHR0cHM6Ly9naXRodWIuY29tL2RpZXRlci13aWxoZWxtL2luZm9ybQoK OzsgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vcgo7OyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBhcwo7OyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUKOzsgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0 aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KCjs7IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKOzsgV0lUSE9VVCBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgo7OyBNRVJDSEFOVEFC SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQo7 OyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCgo7OyBZb3Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQo7 OyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlCjs7IDxodHRwczovL3d3dy5n bnUub3JnL2xpY2Vuc2VzLz4uCgo7OzsgQ29tbWVudGFyeToKCjs7IFRoaXMgbGlicmFyeSBwcm92 aWRlcyBoeXBlcmxpbmtzIG9mIHN5bWJvbHMgKGZ1bmN0aW9ucywgdmFyaWFibGVzLAo7OyBmYWNl cykgd2l0aGluIEVtYWNzJyBJbmZvIHZpZXdlciB0byB0aGVpciBidWlsdGluIGhlbHAKOzsgZG9j dW1lbnRhdGlvbi4gIFRoaXMgbGlua2luZyBpcyBlbmFibGVkIGJ5IGluc3RhbGxpbmcgdGhlIHBh Y2thZ2UuCjs7IEluZm9ybSBhZGRzIC0gYXMgYW4gYXV0b2xvYWQgaW5zdHJ1Y3Rpb24gLSBhIGZ1 bmN0aW9uIHRvIHRoZSBob29rCjs7IGBJbmZvLXNlbGVjdGlvbi1ob29rJy4gIElmIHlvdSBkbyBu b3Qgd2FudCB0aGlzIGxpbmtpbmcgZmVhdHVyZSBhbnkKOzsgbG9uZ2VyIHlvdSBjYW4gc2V0IHRo ZSB2YXJpYWJsZSBgaW5mb3JtLW1ha2UteHJlZi1mbGFnJyB0byBuaWwgb3IKOzsganVzdCB1bmlu c3RhbGwgdGhlIHBhY2thZ2UgKGFuZCByZXN0YXJ0IEVtYWNzKS4KCjs7IFlvdSBjYW4gZm9sbG93 IHRoZSBhZGRpdGlvbmFsIGxpbmtzIHdpdGggdGhlIHVzdWFsIEluZm8KOzsga2V5YmluZGluZ3Mu ICBUaGUgY3VzdG9taXNhdGlvbiB2YXJpYWJsZQo7OyBgbW91c2UtMS1jbGljay1mb2xsb3dzLWxp bmsnIGlzIGluZmx1ZW5jaW5nIHRoZSBjbGlja2luZyBiZWhhdmlvcgo7OyAoYW5kIHRoZSB0b29s dGlwcykgb2YgdGhlIGxpbmtzLCB0aGUgdmFyaWFibGUncyBkZWZhdWx0IGlzIDQ1MAo7OyAobWls bGkgc2Vjb25kcykgc2V0dGluZyBpdCB0byBuaWwgbWVhbnMgb25seSBjbGlja2luZyB3aXRoIG1v dXNlLTIKOzsgaXMgZm9sbG93aW5nIHRoZSBsaW5rIChoaW50OiBEcmV3IEFkYW1zKS4KCjs7IFRo ZSBsaW5rIGNvbG9yIG9mIHN5bWJvbHMgLSByZWZlcmVuY2luZyB0aGVpciBidWlsdGluIGRvY3Vt ZW50YXRpb24KOzsgLSBpcyBkaXN0aW5jdCBmcm9tIGxpbmtzIHdoaWNoIGFyZSByZWZlcmVuY2lu ZyBmdXJ0aGVyIEluZm8KOzsgZG9jdW1lbnRhdGlvbi4gIFRoZSBoeXBlcmxpbmsgY29sb3IgaXMg Tk9UIGNoYW5naW5nIHdoZW4geW91IGFyZQo7OyB2aXNpdGluZyB0aGUgbGluayBhcyBpdCBoYXBw ZW5zIGZvciB0aGUgKkhlbHAqIGxpbmtzLgoKOzsgVGhlIGxpbmtpbmcgaXMgZG9uZSwgd2hlbiB0 aGUgc3ltYm9sIG5hbWVzIGluIHRleGluZm8KOzsgZG9jdW1lbnRhdGlvbnMgKGxpa2UgdGhlIEVt YWNzLSBhbmQgRWxpc3AgbWFudWFsKSBhcmUKCjs7IDEuIFF1b3RlZCBzeW1ib2wgbmFtZXMgbGlr ZSBgcXVvdGVkLXN5bWJvbCcgb3I6Cgo7OyAyLiBGdW5jdGlvbiBuYW1lcyBhcmUgcHJlZml4ZWQg YnkgTS14LCBmb3IgZXhhbXBsZSBNLXgKOzsgZnVuY3Rpb24tbmFtZSBvciBhcmUgcXVvdGVkIGFu ZCBwcmVmaXhlZCBsaWtlIGBNLXggZnVuY3Rpb24tbmFtZScuCgo7OyAzLiBGdW5jdGlvbiBuYW1l cyBhcHBlYXJpbmcgYmVoaW5kIHRoZSBmb2xsb3dpbmcgZm9ybXMsIHdoaWNoCjs7IG9jY3VyLCBm b3IgZXhhbXBsZSwgaW4gdGhlIEVsaXNwIG1hbnVhbDoKCjs7ICAgLS0gU3BlY2lhbCBGb3JtOiBm dW5jdGlvbi1uYW1lCjs7ICAgLS0gQ29tbWFuZDoKOzsgICAtLSBGdW5jdGlvbjoKOzsgICAtLSBN YWNybzoKCjs7IDQuIEFuZCB2YXJpYWJsZXMgbmFtZXMgYmVoaW5kIHRoZSBmb2xsb3dpbmcgdGV4 dDoKCjs7ICAgLS0gVXNlciBPcHRpb246IHZhcmlhYmxlLW5hbWUKOzsgICAtLSBWYXJpYWJsZToK Cjs7IEluZm9ybSBpcyBjaGVja2luZyBpZiB0aGUgSW5mbyBkb2N1bWVudHMgYXJlIHJlbGV2YW50 IEVsaXNwIGFuZAo7OyBFbWFjcyByZWxhdGVkIGZpbGVzIHRvIGF2b2lkIGZhbHNlIHBvc2l0aXZl cy4gIFBsZWFzZSBzZWUgdGhlCjs7IGN1c3RvbWl6YXRpb24gdmFyaWFibGUgYGluZm9ybS1ub25l LWVtYWNzLW9yLWVsaXNwLWRvY3VtZW50cycuCgo7OyBJbiBhbnkgY2FzZSwgYWxsIHN5bWJvbCBu YW1lcyBtdXN0IGJlIGtub3duIHRvIEVtYWNzLCBpLmUuIHRoZWlyCjs7IG5hbWVzIGFyZSBmb3Vu ZCBpbiB0aGUgdmFyaWFibGUgYG9iYXJyYXknLgoKOzsgVGhlIGNvZGUgcmV1c2VzIG1haW5seSBt ZWNoYW5pc21zIGZyb20gRW1hY3MnIGxpc3AvaGVscC1tb2RlLmVsCgo7OzsgQ2hhbmdlIExvZzoK Cjs7IDEuNDoKCjs7IEltcHJvdmluZyBhdXRvbG9hZGluZyBzbyBpbmZvcm0uZWwgaXMgbm90IGxv YWRlZCBpbW1lZGlhdGVseQoKOzsgQnVnZml4IGZvciBkaXN0cm9zIHdoaWNoIGhhdmUgbm8gc2Vw YXJhdGUgImVtYWNzIiBpbmZvIGRpcmVjdG9yeS4KOzsgQWRkaW5nIGEgZmFsbGJhY2sgdmFyaWFi bGUgb2YgZWxpc3Agb3IgZW1hY3MgZG9jdW1lbnRhdGlvbgoKOzsgMS4zOgoKOzsgSW5mb3JtIGlz IGNoZWNraW5nIGlmIHRoZSBJbmZvIGRvY3VtZW50cyBhcmUgcmVsZXZhbnQgRWxpc3AgYW5kCjs7 IEVtYWNzIHJlbGF0ZWQgZmlsZXMgdG8gYXZvaWQgZmFsc2UgcG9zaXRpdmVzLgoKOzsgMS4yOgoK OzsgTGluayBFbGlzcCBkZXNjcmlwdGlvbnMgb2Ygc3ltYm9scyB0byB0aGVpciBoZWxwIGRvY3Vt ZW50YXRpb24sCjs7IGxpa2UgdGhlIGZvbGxvd2luZyBmdW5jdGlvbiBleGFtcGxlOiAtLSBGdW5j dGlvbjogZXZhbCBmb3JtCgo7OyBEaXN0aW5ndWlzaCBjb2xvciBvZiB0ZXhpbmZvIGxpbmtzIChg bGluaycgdHlwZSkgYW5kIEhlbHAgbGlua3MKOzsgKGBmb250LWxvY2stZnVuY3Rpb24tbmFtZS1m YWNlJykKCjs7OyBUT0RPOgoKOzsgQ3VycmVudGx5IGluY29uc2lzdGVudCBsaW5rIGNvbG9ycyB0 byBoZWxwIGJ1ZmZlcnM6IEluICppbmZvKgo7OyBkaWZmZXJlbnQgYXMgaW4gKkhlbHAqIGJ1ZmZl cnMhCgo7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Cjs7IERvZXMgdGhlIGZvbGxvd2luZyBiZWxvbmcgdG8gY3VzdG9t aXplLmVsPwoKOzsgR2VuZXJhbGlzZSBsaW5raW5nIHRvICJjdXN0b21pemF0aW9uIGJ1ZmZlcnMi IGZvciB0aGUgImVhc3kKOzsgY3VzdG9taXphdGlvbiIgaW5mbyBkb2N1bWVudGF0aW9uIHNlZSBh bHNvIHRoZSBjdXN0b21pemF0aW9uCjs7IHNlY3Rpb24gaW4gdGhlIGVsaXNwIG1hbnVhbAoKOzsg LSBkaXN0aW5ndWlzaCB0aGUgQ3VzdG9taXphdGlvbi1saW5rcyBmcm9tIEhlbHAtIGFuZCBJbmZv LWxpbmtzCjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsKCjs7OyBJZGVhczoKCjs7IExpbmsgdGhlIGhlbHAgYnVmZmVy cyBiYWNrIHRvIGhpZ2hlciBsZXZlbCBpbmZvIG1hbnVhbCBzdWJqZWN0cywKOzsgc2ltaWxhciB0 byBoZWxwLWZucysuZWwgZnJvbSBEcmV3IEFkYW1zLgoKOzsgVHdpY2UgY2xpY2tpbmcgb3IgUkVU dXJuaW5nIHJlbW92ZXMgKkhlbHAqIGJ1ZmZlciAoaWRlYTogRHJldwo7OyBBZGFtcykKCjs7IERp ZmZlcmVudCBjb2xvcnMgZm9yIGRpZmZlcmVudCBzeW1ib2wgdHlwZXMgKGlkZWE6IERyZXcgQWRh bXMpIHNlZQo7OyBwYWNrYWdlIGhlbHBmdWwgYW5kIGluZm8rIC8gaW5mby1jb2xvcnMgb24gTWVs cGEgYW5kIHNlZQo7OyBmb250LWxvY2suZWwgZm9yIGNvbW1vbiBmYWNlcy4KCjs7ICAtIERvIHdl IG5lZWQgdG8gaW5kaWNhdGUgYW4gYWxyZWFkeSB2aXNpdGVkIEhlbHAgbGluayB3aXRoIGEKOzsg ICAgZGlmZmVyZW50IGNvbG9yPwoKOzsgIC0gV291bGQgaXQgYmUgYmUgZ29vZCB0byBvdmVydGFr ZSBhbGwgY29sb3JzIG9mIHBhY2thZ2UKOzsgICAgImluZm8tY29sb3JzIj8KCjs7ICAtIERvIHdl IG5lZWQgdG8gZGlzdGluZ3Vpc2ggdGhlIGxpbmsgRk9OVFM/IE5vLCBkaWZmaWN1bHQgdG8gcmVh ZCEKCjs7IEJhY2sgLyBGb3J3YXJkIGJ1dHRvbiBpbiBoZWxwIGJ1ZmZlciAtIGJhY2sgdG8gaW5m byBidWZmZXIgb3IKOzsgcmVtYWluIGluIGhlbHAgbW9kZT8KCjs7IExpbmtpbmcgb2Ygc3RhbmRh cmQgc3ltYm9sIHByb3BlcnRpZXM/Cgo7OyAgLSAoaW5mbyAiKGVsaXNwKSBTdGFuZGFyZCBQcm9w ZXJ0aWVzIikKCjs7IEVsaXNwIG1hbnVhbCBleGFtcGxlczoKOzsgICAgICAgKHN5bWJvbC1uYW1l ICdjYXIpIC4uLiA/Cgo7OyBTaG9ydGVuaW5nIHRoZSB2ZXJib3NlIHRleGluZm8gVVJMcz8gIEJ1 dCBob3cgdG8gaGFuZGxlIHRoZSBjaGFuZ2VkCjs7IGluZGVudGF0aW9uPwoKOzs7IENvZGU6Cgoo cmVxdWlyZSAnaW5mbykJCQkJO3JlZHVuZGFudD8KKHJlcXVpcmUgJ2J1dHRvbikKKHJlcXVpcmUg J2NsLWxpYikKKHJlcXVpcmUgJ2hlbHAtbW9kZSkJCQk7cmVkdW5kYW50PwoKOzsgYWN0aXZhdGUg aW5mb3JtIHdpdGhvdXQgbWFudWFsbHkgbG9hZGluZyBpdC4gOy0pCjs7IDs7OyMjI2F1dG9sb2Fk IChyZXF1aXJlICdpbmZvcm0pCgo7OyB0aGlzIGlzIG92ZXJ3cml0aW5nIGxpc3AvaW5mby14cmVm LmVsJ3MgZGVmaW5pdGlvbiEgd2hpY2ggc29ydHMgaXQKOzsgaW4gJ2RvY3MhCihkZWZncm91cCBp bmZvLXhyZWYgbmlsCiAgIkN1c3RvbWlzYXRpb24gJ2luZm8teHJlZicgc3ViZ3JvdXAgb2YgaW5m by4KQ2hlY2sgZXh0ZXJuYWwgY3Jvc3MtcmVmZXJlbmNlcyBpbiBJbmZvIGRvY3VtZW50cyBhbmQg cHJvdmlkZQpoeXBlcmxpbmtzIGZyb20gc3ltYm9scyB0byB0aGVpciBoZWxwIGRvY3VtZW50YXRp b24uIgogIDpncm91cCAnaW5mbykKCjs7OyMjI2F1dG9sb2FkCihkZWZjdXN0b20gaW5mb3JtLW1h a2UteHJlZi1mbGFnIHQKICAiTm9uLW5pbCBtZWFucyBjcmVhdGUgc3ltYm9sIGxpbmtzIGluIGlu Zm8gYnVmZmVycy4iCiAgOnR5cGUgJyhjaG9pY2UgKGNvbnN0IDp0YWcgIkNyZWF0ZSBsaW5rcyIg dCkKCQkgKGNvbnN0IDp0YWcgIkRvIG5vdCBsaW5rIiBuaWwpKQogIDpncm91cCAnaW5mby14cmVm KQoKKGRlZmNvbnN0IGluZm9ybS1lbWFjcy0yNi4zLWluZm8tZGlyLWNvbnRlbnQKICAnKCJhZGEt bW9kZS5pbmZvIiAiYXV0aC5pbmZvIiAiYXV0b3R5cGUuaW5mbyIgImJvdmluZS5pbmZvIiAiY2Fs Yy5pbmZvIgogICAgImNjbW9kZS5pbmZvIiAiY2wuaW5mbyIgImRidXMuaW5mbyIgImRpciIgImRp cmVkLXguaW5mbyIgImVicm93c2UuaW5mbyIKICAgICJlZGUuaW5mbyIgImVkaWZmLmluZm8iICJl ZHQuaW5mbyIgImVmYXEtdzMyLmluZm8iICJlZmFxLmluZm8iICJlaWVpby5pbmZvIgogICAgImVp bnRyLmluZm8iICJlbGlzcC5pbmZvIiAiZW1hY3MtZ251dGxzLmluZm8iICJlbWFjcy1taW1lLmlu Zm8iCiAgICAiZW1hY3MuaW5mbyIgImVwYS5pbmZvIiAiZXJjLmluZm8iICJlcnQuaW5mbyIgImVz aGVsbC5pbmZvIiAiZXVkYy5pbmZvIgogICAgImV3dy5pbmZvIiAiZmx5bWFrZS5pbmZvIiAiZm9y bXMuaW5mbyIgImdudXMuaW5mbyIgImh0bWxmb250aWZ5LmluZm8iCiAgICAiaWRsd2F2ZS5pbmZv IiAiaWRvLmluZm8iICJpbmZvLmluZm8iICJtYWlyaXgtZWwuaW5mbyIgIm1lc3NhZ2UuaW5mbyIK ICAgICJtaC1lLmluZm8iICJuZXdzdGlja2VyLmluZm8iICJueG1sLW1vZGUuaW5mbyIgIm9jdGF2 ZS1tb2RlLmluZm8iICJvcmcuaW5mbyIKICAgICJwY2wtY3ZzLmluZm8iICJwZ2cuaW5mbyIgInJj aXJjLmluZm8iICJyZWZ0ZXguaW5mbyIgInJlbWVtYmVyLmluZm8iCiAgICAic2FzbC5pbmZvIiAi c2MuaW5mbyIgInNlbWFudGljLmluZm8iICJzZXMuaW5mbyIgInNpZXZlLmluZm8iCiAgICAic210 cG1haWwuaW5mbyIgInNwZWVkYmFyLmluZm8iICJzcmVjb2RlLmluZm8iICJ0b2RvLW1vZGUuaW5m byIKICAgICJ0cmFtcC5pbmZvIiAidXJsLmluZm8iICJ2aGRsLW1vZGUuaW5mbyIgInZpcC5pbmZv IiAidmlwZXIuaW5mbyIKICAgICJ3aWRnZXQuaW5mbyIgIndpc2VudC5pbmZvIiAid29tYW4uaW5m byIpCiAgIkxpc3Qgb2YgZmlsZSBuYW1lcyBpbiBFbWFjcy0yNi0zJyBpbmZvLyBkaXJlY3Rvcnku IikKCihyZXF1aXJlICdjbC1zZXEpCjs7IEluZm8tZGlyZWN0b3ItbGlzdCBtdXN0IGJlIGluaXRp YWxpc2VkCihpbmZvLWluaXRpYWxpemUpCihkZWZ2YXIgaW5mb3JtLWVtYWNzLWluZm8tZGlyLWNv bnRlbnQKICA7OyAgKG1hcGNhciAnZmlsZS1uYW1lLW5vbmRpcmVjdG9yeSA7J2ZpbGUtbmFtZS1z YW5zLWV4dGVuc2lvbgogIChsZXQgKChkaXIgKGNhciAoY2wtbWVtYmVyICJbXi5dZW1hY3MiIElu Zm8tZGlyZWN0b3J5LWxpc3QKCQkJICAgICA6dGVzdCAnc3RyaW5nLW1hdGNoLXApKSkpCiAgICA7 OyBJdCBzZWVtcyBzb21lIGRpc3Ryb3MgKGN5Z3dpbiBmb3Igc3VyZSkgZG9uJ3QgcHV0IEVtYWNz JwogICAgOzsgaW5mbyBkb2N1bWVudGF0aW9uIGluIHNlcGFyYXRlICJlbWFjcyIgZm9sZGVyLCBz byB3ZSBuZWVkCiAgICA7OyBhIHN0YXRpYyBmYWxsYmFjayBvZiBzdGFuZGFyZCBlbWFjcyAvIGVs aXNwIGRvY3VtZW50YXRpb24KICAgIChpZiBkaXIKCShkaXJlY3RvcnktZmlsZXMgZGlyCgkJCSA7 OyBkb24ndCBsaXN0ICIuIiBhbmQgIi4uIgoJCQkgbmlsICAiW14uXSQiKQogICAgICBpbmZvcm0t ZW1hY3MtMjYuMy1pbmZvLWRpci1jb250ZW50KSkKICAiQSBMaXN0IG9mIHN0YW5kYXJkIEVtYWNz IGFuZCBFbGlzcCBpbmZvIGZpbGUgc3RyaW5ncy4KVGhlc2UgZmlsZXMgYXJlIGNvbGxlY3RlZCBl aXRoZXIgZnJvbSBhIHNlcGFyYXRlIEVtYWNzIGluZm8vCmRpcmVjdG9yeSBvciAtIGlmIHRoaXMg ZG9lcyBub3QgZXhpc3QgLSBhcmUgY29waWVkIGZyb20gdGhlCnZhcmlhYmxlIGBpbmZvcm0tZW1h Y3MtMjYuMy1pbmZvLWRpci1jb250ZW50JyIpCgo7OyBUdXJuIGludG8gcmVnZXhwIGxpc3QgbmVj ZXNzYXJ5PyBTdGVmYW4KOzsgU3dpdGNoIHRvIGFsaXN0IHdpdGggZXhwbGFuYXRpb24gb2YgZmls ZSBuYW1lPwooZGVmY3VzdG9tIGluZm9ybS1ub25lLWVtYWNzLW9yLWVsaXNwLWRvY3VtZW50cwog ICcoImFhcm0yMDEyIiA7IFN0ZWZhbjogQWRhIG1hbnVhbCwgRWxwYSBhcmNoaXZlCiAgICAiYXJt MjAxMiIgIDsgU3RlZmFuOiBBZGEgbWFudWFsCiAgICAic2ljcCIgICA7IFQuVjogU3RydWN0dXJl IGFuZCBJbnRlcnByZXRhdGlvbiBvZiBDb21wdXRlciBQcm9ncmFtcywKCQkJCQk7IE1lbHBhIGFy Y2hpdmUKICAgICkKICAiTGlzdCBvZiBhbGwgbm9uZSBHTlUtRW1hY3Mgb3IgRWxpc3AgZG9jdW1l bnRhdGlvbi4KT3Igb3RoZXIgZG9jdW1lbnRzIG5vdCB0byBiZSBjaGVja2VkIGZvciBsaW5raW5n IHRvIHRoZWlyIGhlbHAKZG9jdW1lbnRhdGlvbi4gIFRoZSBsaXN0IG11c3QgY29udGFpbnMgb25s eSB0aGUgYmFzZSBuYW1lIG9mIHRoZQpmaWxlcyAod2l0aG91dCB0aGVpciBmaWxlIG5hbWUgZXh0 ZW5zaW9uIFwiLmluZm9cIikuIgogIDp0eXBlICcocmVwZWF0IHN0cmluZykKICA6Z3JvdXAgJ2lu Zm8teHJlZikKCihkZWZ1biBpbmZvcm0tY2hlY2stZG9jdS1wICgpCiAgIkNoZWNrIGlmIHRoZSBj dXJyZW50IGluZm8gZmlsZSBpcyByZWxldmFudCB0byBFbWFjcy4KVGhhdCBtZWFucyBgSW5mby1j dXJyZW50LWZpbGUnIGlzIGVpdGhlciBmb3VuZCBpbiBFbWFjcycgaW5mby8KZGlyZWN0b3J5IG9y IGluIGBwYWNrYWdlLXVzZXItZGlyJyBhbmQgaXMgbm90IGluY2x1ZGVkIGluIHRoZQpgaW5mb20t bm9uZS1lbWFjcy1vci1lbGlzcC1kb2N1bWVudHMnIGxpc3QuIgogIChsZXQqICgoaWZpbGUgSW5m by1jdXJyZW50LWZpbGUpCgkgKGlmaSAod2hlbiBpZmlsZQoJCShmaWxlLW5hbWUtc2Fucy1leHRl bnNpb24KCQkgKGZpbGUtbmFtZS1ub25kaXJlY3RvcnkgaWZpbGUpKSkpCgkgKHBkaXIgKHdoZW4g KGJvdW5kcCAncGFja2FnZS11c2VyLWRpcikKCQkgKGV4cGFuZC1maWxlLW5hbWUKCQkgIHBhY2th Z2UtdXNlci1kaXIpKSkKCSAoaWZpbGVzIGluZm9ybS1lbWFjcy1pbmZvLWRpci1jb250ZW50KQoJ IChuZG9jdSBpbmZvcm0tbm9uZS1lbWFjcy1vci1lbGlzcC1kb2N1bWVudHMpKQogICAgKGFuZCBp ZmlsZQoJIChvciAoYXNzb2Mtc3RyaW5nIChjb25jYXQgaWZpICIuaW5mbyIpIGlmaWxlcykKCSAg ICAgOzsgaW5mbyBmaWxlcyBtaWdodCBiZSBhcmNoaXZlZCBvbiBkaXNjIQoJICAgICAoYXNzb2Mt c3RyaW5nIChjb25jYXQgaWZpICIuaW5mby5neiIpIGlmaWxlcykKCSAgICAgKHdoZW4gcGRpciAo c3RyaW5nLW1hdGNoIHBkaXIgaWZpbGUpKSkKCSAobm90IChhc3NvYy1zdHJpbmcgaWZpIG5kb2N1 KSkpKSkKCihkZWZ2YXIgZGVzY3JpYmUtc3ltYm9sLWJhY2tlbmRzKSAJO2Zyb20gaGVscC1tb2Rl LmVsCihkZWZ2YXIgaGVscC14cmVmLWZvbGxvd2luZykJCTtkaXRvCgo7OyBiZWxvdyBkZWZjdXN0 b20gdG9nZ2xlcyB0aGUgY29tcGxldGUgbGlua2luZyBwcm9jZXNzCjs7OyMjI2F1dG9sb2FkCih3 aGVuIGluZm9ybS1tYWtlLXhyZWYtZmxhZwogIChhZGQtaG9vayAnSW5mby1zZWxlY3Rpb24taG9v ayAnaW5mb3JtLW1ha2UteHJlZnMpKQoKKGRlZmZhY2UgaW5mb3JtLWNvbG9yCiAgJygodCAoOmlu aGVyaXQgZm9udC1sb2NrLWRvYy1mYWNlCgkJIDs7IGZvbnQtbG9jay1wcmVwcm9jZXNzb3ItZmFj ZSA7IHNpbWlsYXIgdG8gbGluayBmYWNlIChkZWZhdWx0KQoJCSA7OyBmb250LWxvY2stYnVpbHRp bi1mYWNlIDsgc2ltaWxhciAoZGVmYXVsdCBFbWFjcykKCQkgOzsgZm9udC1sb2NrLWZ1bmN0aW9u LW5hbWUtZmFjZSA7IHNpbWlsYXIgKGRlZmF1bHQpCgkJIDs7IEluZm8teHJlZi1mYWNlCgkJICkp KQogICJGYWNlIGZvciB0aGUgYHN5bWJvbCcgcmVmZXJlbmNlIGl0ZW1zIGluIGBpbmZvJyBub2Rl cy4iCiAgOmdyb3VwICdpbmZvLWNvbG9ycykKCjs7IEJ1dHRvbiB0eXBlcwoKKGRlZmluZS1idXR0 b24tdHlwZSAnaW5mb3JtLXhyZWYKICAnbGluayB0CQkJICAgO2ZvciBJbmZvLW5leHQtcmVmZXJl bmNlLW9yLWxpbmsKICAnZm9sbG93LWxpbmsgdAogICdmYWNlICdpbmZvcm0tY29sb3IKICAnYWN0 aW9uICMnaW5mb3JtLWJ1dHRvbi1hY3Rpb24pCgooZGVmaW5lLWJ1dHRvbi10eXBlICdpbmZvcm0t ZnVuY3Rpb24KICA6c3VwZXJ0eXBlICdpbmZvcm0teHJlZgogICdpbmZvcm0tZnVuY3Rpb24gJ2Rl c2NyaWJlLWZ1bmN0aW9uCiAgJ2luZm9ybS1lY2hvIChwdXJlY29weSAibW91c2UtMiwgUkVUOiBk ZXNjcmliZSB0aGlzIGZ1bmN0aW9uIikpCgooZGVmaW5lLWJ1dHRvbi10eXBlICdpbmZvcm0tdmFy aWFibGUKICA6c3VwZXJ0eXBlICdpbmZvcm0teHJlZgogICdpbmZvcm0tZnVuY3Rpb24gJ2Rlc2Ny aWJlLXZhcmlhYmxlCiAgJ2luZm9ybS1lY2hvIChwdXJlY29weSAibW91c2UtMiwgUkVUOiBkZXNj cmliZSB0aGlzIHZhcmlhYmxlIikpCgooZGVmaW5lLWJ1dHRvbi10eXBlICdpbmZvcm0tZmFjZQog IDpzdXBlcnR5cGUgJ2luZm9ybS14cmVmCiAgJ2luZm9ybS1mdW5jdGlvbiAnZGVzY3JpYmUtZmFj ZQogICdpbmZvcm0tZWNobyAocHVyZWNvcHkgIm1vdXNlLTIsIFJFVDogZGVzY3JpYmUgdGhpcyBm YWNlIikpCgooZGVmaW5lLWJ1dHRvbi10eXBlICdpbmZvcm0tc3ltYm9sCiAgOnN1cGVydHlwZSAn aW5mb3JtLXhyZWYKICAnaW5mb3JtLWZ1bmN0aW9uICMnZGVzY3JpYmUtc3ltYm9sCiAgJ2luZm9y bS1lY2hvIChwdXJlY29weSAibW91c2UtMiwgUkVUOiBkZXNjcmliZSB0aGlzIHN5bWJvbCIpKQoK KGRlZmluZS1idXR0b24tdHlwZSAnaW5mb3JtLWZ1bmN0aW9uLWRlZgogIDpzdXBlcnR5cGUgJ2lu Zm9ybS14cmVmCiAgJ2luZm9ybS1mdW5jdGlvbiAobGFtYmRhIChmdW4gJm9wdGlvbmFsIGZpbGUg dHlwZSkKCQkgICAgIChvciBmaWxlCgkJCSAoc2V0cSBmaWxlIChmaW5kLWxpc3Atb2JqZWN0LWZp bGUtbmFtZSBmdW4gdHlwZSkpKQoJCSAgICAgKGlmIChub3QgZmlsZSkKCQkJIChtZXNzYWdlICJV bmFibGUgdG8gZmluZCBkZWZpbmluZyBmaWxlIikKCQkgICAgICAgKHJlcXVpcmUgJ2ZpbmQtZnVu YykKCQkgICAgICAgKHdoZW4gKGVxIGZpbGUgJ0Mtc291cmNlKQoJCQkgKHNldHEgZmlsZQoJCQkg ICAgICAgKGhlbHAtQy1maWxlLW5hbWUgKGluZGlyZWN0LWZ1bmN0aW9uIGZ1bikgJ2Z1bikpKQoJ CSAgICAgICA7OyBEb24ndCB1c2UgZmluZC1mdW5jdGlvbi1ub3NlbGVjdCBiZWNhdXNlIGl0IGZv bGxvd3MKCQkgICAgICAgOzsgYWxpYXNlcyAod2hpY2ggZmFpbHMgZm9yIGJ1aWx0LWluIGZ1bmN0 aW9ucykuCgkJICAgICAgIChsZXQgKChsb2NhdGlvbgoJCQkgICAgICAoZmluZC1mdW5jdGlvbi1z ZWFyY2gtZm9yLXN5bWJvbCBmdW4gdHlwZSBmaWxlKSkpCgkJCSAocG9wLXRvLWJ1ZmZlciAoY2Fy IGxvY2F0aW9uKSkKCQkJIChydW4taG9va3MgJ2ZpbmQtZnVuY3Rpb24tYWZ0ZXItaG9vaykKCQkJ IChpZiAoY2RyIGxvY2F0aW9uKQoJCQkgICAgIChnb3RvLWNoYXIgKGNkciBsb2NhdGlvbikpCgkJ CSAgIChtZXNzYWdlICJVbmFibGUgdG8gZmluZCBsb2NhdGlvbiBpbiBmaWxlIikpKSkpCiAgJ2lu Zm9ybS1lY2hvIChwdXJlY29weSAibW91c2UtMiwgUkVUOiBmaW5kIGZ1bmN0aW9uJ3MgZGVmaW5p dGlvbiIpKQoKOzsgRnVuY3Rpb25zCgooZGVmdW4gaW5mb3JtLWJ1dHRvbi1hY3Rpb24gKGJ1dHRv bikKICAiQ2FsbCBCVVRUT04ncyBoZWxwIGZ1bmN0aW9uLiIKICAoaW5mb3JtLWRvLXhyZWYgbmls CgkJICAoYnV0dG9uLWdldCBidXR0b24gJ2luZm9ybS1mdW5jdGlvbikKCQkgIChidXR0b24tZ2V0 IGJ1dHRvbiAnaW5mb3JtLWFyZ3MpKSkKCgooZGVmdW4gaW5mb3JtLWRvLXhyZWYgKF9wb3MgZnVu Y3Rpb24gYXJncykKICAiQ2FsbCB0aGUgaGVscCBjcm9zcy1yZWZlcmVuY2UgZnVuY3Rpb24gRlVO Q1RJT04gd2l0aCBhcmdzIEFSR1MuClRoaW5ncyBhcmUgc2V0IHVwIHByb3Blcmx5IHNvIHRoYXQg dGhlIHJlc3VsdGluZyBgaGVscC1idWZmZXInIGhhcwphIHByb3BlciBbYmFja10gYnV0dG9uLiIK ICA7OyBUaGVyZSBpcyBhIHJlZmVyZW5jZSBhdCBwb2ludC4gIEZvbGxvdyBpdC4KICAobGV0ICgo aGVscC14cmVmLWZvbGxvd2luZyBuaWwpKQogICAgKGFwcGx5CiAgICAgZnVuY3Rpb24gKGlmIChl cSBmdW5jdGlvbiAnaW5mbykKCQkgIChhcHBlbmQgYXJncyAobGlzdCAoZ2VuZXJhdGUtbmV3LWJ1 ZmZlci1uYW1lICIqaW5mbyoiKSkpCgkJYXJncykpKSkKCihkZWZ1biBpbmZvcm0teHJlZi1idXR0 b24gKG1hdGNoLW51bWJlciB0eXBlICZyZXN0IGFyZ3MpCiAgIk1ha2UgYSBoeXBlcmxpbmsgZm9y IGNyb3NzLXJlZmVyZW5jZSB0ZXh0IHByZXZpb3VzbHkgbWF0Y2hlZC4KTUFUQ0gtTlVNQkVSIGlz IHRoZSBzdWJleHByZXNzaW9uIG9mIGludGVyZXN0IGluIHRoZSBsYXN0IG1hdGNoZWQKcmVnZXhw LiAgVFlQRSBpcyB0aGUgdHlwZSBvZiBidXR0b24gdG8gdXNlLiAgQW55IHJlbWFpbmluZyBhcmd1 bWVudHMgYXJlCnBhc3NlZCB0byB0aGUgYnV0dG9uJ3MgaW5mb3JtLWZ1bmN0aW9uIHdoZW4gaXQg aXMgaW52b2tlZC4KU2VlIGBpbmZvcm0tbWFrZS14cmVmcycgRG9uJ3QgZm9yZ2V0IEFSR1MuIiA7 IC1UT0RPLQogIDs7IERvbid0IG11bmcgcHJvcGVydGllcyB3ZSd2ZSBhZGRlZCBzcGVjaWFsbHkg aW4gc29tZSBpbnN0YW5jZXMuCiAgKHVubGVzcyAoYnV0dG9uLWF0IChtYXRjaC1iZWdpbm5pbmcg bWF0Y2gtbnVtYmVyKSkKICAgIDs7IChtZXNzYWdlICJDcmVhdGluZyBidXR0b246ICVzLiIgYXJn cykKICAgIChtYWtlLXRleHQtYnV0dG9uIChtYXRjaC1iZWdpbm5pbmcgbWF0Y2gtbnVtYmVyKQog ICAgICAgICAgICAgICAgICAgICAgKG1hdGNoLWVuZCBtYXRjaC1udW1iZXIpCiAgICAgICAgICAg ICAgICAgICAgICAndHlwZSB0eXBlICdpbmZvcm0tYXJncyBhcmdzKSkpCgooZGVmY29uc3QgaW5m b3JtLXhyZWYtc3ltYm9sLXJlZ2V4cAogIChwdXJlY29weSAoY29uY2F0ICJcXChcXDxcXChcXCh2 YXJpYWJsZVxcfG9wdGlvblxcKVxcfCIgIDsgTGluayB0byB2YXIKICAgICAgICAgICAgICAgICAg ICAiXFwoZnVuY3Rpb25cXHxjb21tYW5kXFx8Y2FsbFxcKVxcfCIgICA7IExpbmsgdG8gZnVuY3Rp b24KICAgICAgICAgICAgICAgICAgICAiXFwoZmFjZVxcKVxcfCIJCQkgICA7IExpbmsgdG8gZmFj ZQogICAgICAgICAgICAgICAgICAgICJcXChzeW1ib2xcXHxwcm9ncmFtXFx8cHJvcGVydHlcXClc XHwiIDsgRG9uJ3QgbGluawogICAgICAgICAgICAgICAgICAgICJcXChzb3VyY2UgXFwoPzpjb2Rl IFxcKT9cXCg/Om9mXFx8Zm9yXFwpXFwpXFwpIgogICAgICAgICAgICAgICAgICAgICJbIFx0XG5d K1xcKT8iCiAgICAgICAgICAgICAgICAgICAgOzsgTm90ZSBzdGFydGluZyB3aXRoIHdvcmQtc3lu dGF4IGNoYXJhY3RlcjoKICAgICAgICAgICAgICAgICAgICAiWydg4oCYXVxcKFxcc3dcXChcXHN3 XFx8XFxzX1xcKStcXHxgXFwpWyfigJldIikpCiAgIlJlZ2V4cCBtYXRjaGluZyBkb2Mgc3RyaW5n IHJlZmVyZW5jZXMgdG8gc3ltYm9scy4KClRoZSB3b3JkcyBwcmVjZWRpbmcgdGhlIHF1b3RlZCBz eW1ib2wgY2FuIGJlIHVzZWQgaW4gZG9jIHN0cmluZ3MgdG8KZGlzdGluZ3Vpc2ggcmVmZXJlbmNl cyB0byB2YXJpYWJsZXMsIGZ1bmN0aW9ucyBhbmQgc3ltYm9scy4iKQoKOzs7IyMjYXV0b2xvYWQK KGRlZnVuIGluZm9ybS1tYWtlLXhyZWZzICgmb3B0aW9uYWwgYnVmZmVyKQogICJQYXJzZSBhbmQg aHlwZXJsaW5rIGRvY3VtZW50YXRpb24gY3Jvc3MtcmVmZXJlbmNlcyBpbiB0aGUgZ2l2ZW4gQlVG RkVSLgoKRmluZCBjcm9zcy1yZWZlcmVuY2UgaW5mb3JtYXRpb24gaW4gYSBidWZmZXIgYW5kIGFj dGl2YXRlIHN1Y2ggY3Jvc3MKcmVmZXJlbmNlcyBmb3Igc2VsZWN0aW9uIHdpdGggYGhlbHAtZm9s bG93Jy4gIENyb3NzLXJlZmVyZW5jZXMgaGF2ZQp0aGUgY2Fub25pY2FsIGZvcm0gYC4uLicgIGFu ZCB0aGUgdHlwZSBvZiByZWZlcmVuY2UgbWF5IGJlCmRpc2FtYmlndWF0ZWQgYnkgdGhlIHByZWNl ZGluZyB3b3JkKHMpIHVzZWQgaW4KYGluZm9ybS14cmVmLXN5bWJvbC1yZWdleHAnLgoKRnVuY3Rp b24gbmFtZXMgYXJlIGFsc28gcHJlZml4ZWQgYnkgXCJNLXhcIiwgZm9yIGV4YW1wbGUgXCJNLXgK ZnVuY3Rpb24tbmFtZVwiIG9yIGFyZSBxdW90ZWQgYW5kIHByZWZpeGVkIGxpa2UgYE0teApmdW5j dGlvbi1uYW1lJy4KCkFsc28gRnVuY3Rpb24gbmFtZXMgYXBwZWFyaW5nIGJlaGluZCB0aGUgZm9s bG93aW5nIGZvcm1zLCB3aGljaApvY2N1ciwgZm9yIGV4YW1wbGUsIGluIHRoZSBFbGlzcCBtYW51 YWw6CgogLS0gU3BlY2lhbCBGb3JtOiBmdW5jdGlvbi1uYW1lCiAtLSBDb21tYW5kOgogLS0gRnVu Y3Rpb246CiAtLSBNYWNybzoKCkFuZCB2YXJpYWJsZXMgbmFtZXMgYmVoaW5kIHRoZSBmb2xsb3dp bmcgdGV4dDoKCiAtLSBVc2VyIE9wdGlvbjogdmFyaWFibGUtbmFtZQogLS0gVmFyaWFibGU6CgpG YWNlcyBvbmx5IGdldCBjcm9zcy1yZWZlcmVuY2VkIGlmIHByZWNlZGVkIG9yIGZvbGxvd2VkIGJ5 IHRoZQp3b3JkIGBmYWNlJy4gIFZhcmlhYmxlcyB3aXRob3V0IHZhcmlhYmxlIGRvY3VtZW50YXRp b24gZG8gbm90IGdldApjcm9zcy1yZWZlcmVuY2VkLCB1bmxlc3MgcHJlY2VkZWQgYnkgdGhlIHdv cmQgYHZhcmlhYmxlJyBvcgpgb3B0aW9uJy4iCiAgKGludGVyYWN0aXZlICJiIikKICAod2hlbiAo aW5mb3JtLWNoZWNrLWRvY3UtcCkKICAgICh3aXRoLWN1cnJlbnQtYnVmZmVyIChvciBidWZmZXIg KGN1cnJlbnQtYnVmZmVyKSkKICAgICAgKHNhdmUtZXhjdXJzaW9uCgkoZ290by1jaGFyIChwb2lu dC1taW4pKQoJOzsgU2tpcCB0aGUgaGVhZGVyLXR5cGUgaW5mbywgdGhvdWdoIGl0IG1pZ2h0IGJl IHVzZWZ1bCB0byBwYXJzZQoJOzsgaXQgYXQgc29tZSBzdGFnZSAoZS5nLiAiZnVuY3Rpb24gaW4g YGxpYnJhcnknIikuCgk7OyAgICAgIChmb3J3YXJkLXBhcmFncmFwaCkKCSh3aXRoLXNpbGVudC1t b2RpZmljYXRpb25zCTtmcm9tIFN0ZWZhbgoJICAobGV0ICg7KHN0YWIgKHN5bnRheC10YWJsZSkp CgkJKGNhc2UtZm9sZC1zZWFyY2ggdCkKCQkoaW5oaWJpdC1yZWFkLW9ubHkgdCkpCgkgICAgKHdp dGgtc3ludGF4LXRhYmxlIGVtYWNzLWxpc3AtbW9kZS1zeW50YXgtdGFibGUKCSAgICAgIDs7IFF1 b3RlZCBzeW1ib2xzCgkgICAgICAoc2F2ZS1leGN1cnNpb24KCQkod2hpbGUgKHJlLXNlYXJjaC1m b3J3YXJkIGluZm9ybS14cmVmLXN5bWJvbC1yZWdleHAgbmlsIHQpCgkJICAobGV0KiAoKGRhdGEg KG1hdGNoLXN0cmluZyA4KSkKCQkJIChzeW0gKGludGVybi1zb2Z0IGRhdGEpKSkKCQkgICAgKGlm IHN5bQoJCQkoY29uZAoJCQkgKChtYXRjaC1zdHJpbmcgMykgOyBgdmFyaWFibGUnICZjCgkJCSAg KGFuZCAob3IgKGJvdW5kcCBzeW0pIDsgYHZhcmlhYmxlJyBkb2Vzbid0IGVuc3VyZQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBpdCdzIGFjdHVhbGx5IGJvdW5kCgkJ CQkgICAoZ2V0IHN5bSAndmFyaWFibGUtZG9jdW1lbnRhdGlvbikpCgkJCSAgICAgICAoaW5mb3Jt LXhyZWYtYnV0dG9uIDggJ2luZm9ybS12YXJpYWJsZSBzeW0pKSkKCQkJICgobWF0Y2gtc3RyaW5n IDQpIDsgYGZ1bmN0aW9uJyAmYwoJCQkgIChhbmQgKGZib3VuZHAgc3ltKSA7IHNpbWlsYXJseQoJ CQkgICAgICAgKGluZm9ybS14cmVmLWJ1dHRvbiA4ICdpbmZvcm0tZnVuY3Rpb24gc3ltKSkpCgkJ CSAoKG1hdGNoLXN0cmluZyA1KSA7IGBmYWNlJwoJCQkgIChhbmQgKGZhY2VwIHN5bSkKCQkJICAg ICAgIChpbmZvcm0teHJlZi1idXR0b24gOCAnaW5mb3JtLWZhY2Ugc3ltKSkpCgkJCSAoKG1hdGNo LXN0cmluZyA2KSkgOyBkbyBub3RoaW5nIGZvcgoJCQkJCSAgICA7IGBzeW1ib2wnLGBwcm9ncmFt JyxgcHJvcGVydHknCgkJCSAoKG1hdGNoLXN0cmluZyA3KSA7IHNvdXJjZSBjb2RlCgkJCSAgKGlu Zm9ybS14cmVmLWJ1dHRvbiA4ICdpbmZvcm0tZnVuY3Rpb24tZGVmIHN5bSkpCgkJCSAoKGNsLXNv bWUgKGxhbWJkYSAoeCkgKGZ1bmNhbGwgKG50aCAxIHgpIHN5bSkpCgkJCQkgICBkZXNjcmliZS1z eW1ib2wtYmFja2VuZHMpCgkJCSAgKGluZm9ybS14cmVmLWJ1dHRvbiA4ICdpbmZvcm0tc3ltYm9s IHN5bSkpKSkpKSkKCgkgICAgOzsgKGluZm8gIihlbGlzcCkgRXZhbCIpCgkgICAgOzsgRWxpc3Ag bWFudWFsICAgICAgLS0gU3BlY2lhbCBGb3JtOgoJICAgIDs7ICAgICAgICAgICAgICAgICAgIC0t IENvbW1hbmQ6CgkgICAgOzsgICAgICAgICAgICAgICAgICAgLS0gRnVuY3Rpb246IGZ1bmN0aW9u LW5hbWUgZnVuY3Rpb24KCSAgICA7OyAgICAgICAgICAgICAgICAgICAtLSBNYWNybzoKCSAgICAo c2F2ZS1leGN1cnNpb24KCSAgICAgICh3aGlsZSAocmUtc2VhcmNoLWZvcndhcmQKCQkgICAgICAi LS0gXFwoU3BlY2lhbCBGb3JtOlxcfENvbW1hbmQ6XFx8RnVuY3Rpb246XFx8TWFjcm86XFwpICIK CQkgICAgICBuaWwgdCkKCQkobG9va2luZy1hdCAiXFwoXFxzd1xcfFxcc19cXCkrIikKCQkobGV0 ICgoc3ltIChpbnRlcm4tc29mdCAobWF0Y2gtc3RyaW5nIDApKSkpCgkJICAoaWYgKGZib3VuZHAg c3ltKQoJCSAgICAgIChpbmZvcm0teHJlZi1idXR0b24gMCAnaW5mb3JtLWZ1bmN0aW9uIHN5bSkp KSkpCgoJICAgIDs7ICAgICAgICAgICAgICAtLSBVc2VyIE9wdGlvbjoKCSAgICA7OyAgICAgICAg ICAgICAgLS0gVmFyaWFibGU6IHZhcmlhYmxlLW5hbWUKCSAgICAoc2F2ZS1leGN1cnNpb24KCSAg ICAgICh3aGlsZSAocmUtc2VhcmNoLWZvcndhcmQKCQkgICAgICAiLS0gXFwoVXNlciBPcHRpb246 XFx8VmFyaWFibGU6XFwpICIKCQkgICAgICBuaWwgdCkKCQkobG9va2luZy1hdCAiXFwoXFxzd1xc fFxcc19cXCkrIikKCQkobGV0ICgoc3ltIChpbnRlcm4tc29mdCAobWF0Y2gtc3RyaW5nIDApKSkp CgkJICAoaWYgKGJvdW5kcCBzeW0pCgkJICAgICAgKGluZm9ybS14cmVmLWJ1dHRvbiAwICdpbmZv cm0tdmFyaWFibGUgc3ltKSkpKSkKCgkgICAgOzsgTS14IHByZWZpeGVkIGZ1bmN0aW9ucwoJICAg IChzYXZlLWV4Y3Vyc2lvbgoJICAgICAgKHdoaWxlIChyZS1zZWFyY2gtZm9yd2FyZAoJCSAgICAg IDs7IEFzc3VtZSBjb21tYW5kIG5hbWUgaXMgb25seSB3b3JkIGFuZCBzeW1ib2wKCQkgICAgICA7 OyBjaGFyYWN0ZXJzIHRvIGdldCB0aGluZ3MgbGlrZSBgdXNlIE0teCBmb28tPmJhcicuCgkJICAg ICAgOzsgQ29tbWFuZCByZXF1aXJlZCB0byBlbmQgd2l0aCB3b3JkIGNvbnN0aXR1ZW50CgkJICAg ICAgOzsgdG8gYXZvaWQgYC4nIGF0IGVuZCBvZiBhIHNlbnRlbmNlLgoJCSAgICAgIDs7ICJcXDxN LXhcXHMtK1xcKFxcc3dcXChcXHN3XFx8XFxzX1xcKSpcXHN3XFwpIiBuaWwgdCkKCQkgICAgICA7 OyBpbmNsdWRlIE0teCBhbmQgcXVvdGVzCgkJICAgICAgIlsnYOKAmF0/TS14XFxzLSpcbj9cXChc XHN3XFwoXFxzd1xcfFxcc19cXCkqXFxzd1xcKVsn4oCZXT8iIG5pbCB0KQoJCShsZXQgKChzeW0g KGludGVybi1zb2Z0IChtYXRjaC1zdHJpbmcgMSkpKSkKCQkgIDs7IChtZXNzYWdlICJmb3VuZCAl cyIgc3ltKQoJCSAgKGlmIChmYm91bmRwIHN5bSkKCQkgICAgICAoaW5mb3JtLXhyZWYtYnV0dG9u IDEgJ2luZm9ybS1mdW5jdGlvbiBzeW0pKSkpKQoKCSAgICA7OyBjdXN0b21pemF0aW9uIGxpbmtz CgkgICAgKHNhdmUtZXhjdXJzaW9uCgkgICAgICAobGV0ICgoY0ZpbGUgIEluZm8tY3VycmVudC1m aWxlKQoJCSAgICAoY05vZGUgSW5mby1jdXJyZW50LW5vZGUpKQoJCSh3aGVuIChhbmQgY0ZpbGUK CQkJICAgKHN0cmluZz0gImVtYWNzIiAoZmlsZS1uYW1lLW5vbmRpcmVjdG9yeSBjRmlsZSkpKQoJ CSAgKHdoaWxlIChyZS1zZWFyY2gtZm9yd2FyZAoJCQkgOzsgYmxhCgkJCSAgIlsnYOKAmF1cXChN LXhbIFxuXStcXCk/XFwoXFwoXFxzd1xcfFxcc19cXCkrXFwpLipcbi4qXFwoY3VzdG9taXphdGlv biBidWZmZXJcXCkiCgkJCSAgbmlsIHQpCgkJICAgIChsZXQgKChzeW0gKGludGVybi1zb2Z0ICht YXRjaC1zdHJpbmcgMikpKSkKCQkgICAgICAobWVzc2FnZSAiZm91bmQgMiAlcyIgc3ltKQoJCSAg ICAgIChtZXNzYWdlICJmb3VuZCA0ICVzIiAobWF0Y2gtc3RyaW5nIDQpKQoJCSAgICAgIDs7IChp ZiAoZmJvdW5kcCBzeW0pCgkJICAgICAgOzsgCSAgKGluZm9ybS14cmVmLWJ1dHRvbiA0ICdpbmZv cm0tZnVuY3Rpb24gc3ltKSkpCgkJICAgICkpCgkJICAobWVzc2FnZSAibm9kZSBuYW1lOiAlcywg ZmlsZSBuYW1lOiAlcyIKCQkJICAgY05vZGUgKGZpbGUtbmFtZS1ub25kaXJlY3RvcnkgY0ZpbGUp KSkpKQoJICAgICkpKSkpKSkKCgoocHJvdmlkZSAnaW5mb3JtKQo7OzsgaW5mb3JtLmVsIGVuZHMg aGVyZQoKOzsgTG9jYWwgVmFyaWFibGVzOgo7OyBtb2RlOiBvdXRsaW5lLW1pbm9yCjs7IGluZGlj YXRlLWVtcHR5LWxpbmVzOiB0Cjs7IHNob3ctdHJhaWxpbmctd2hpdGVzcGFjZTogdAo7OyB3b3Jk LXdyYXA6IHQKOzsgdGltZS1zdGFtcC1hY3RpdmU6IHQKOzsgdGltZS1zdGFtcC1mb3JtYXQ6ICIl OnktJTAybS0lMDJkIgo7OyBFbmQ6CgoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAABSRUFETUUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAMDAwMDY2NAAwMDAxNzUxADAwMDE3NTEAMDAwMDAwMDA0MDEAMTM3NTcwMjIzNzQAMDEx MjYxACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAA ZGlldGVyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkaWV0ZXIAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAEluZm9ybSBpcyBhIHBhY2thZ2UgZm9yIEdOVS1FbWFjcyBpbiB0 aGUgc3Bpcml0IG9mIHRoZSBleHRlbnNpYmxlLApjdXN0b21pc2FibGUsIHNlbGYtZG9jdW1lbnRp bmcsIHJlYWwtdGltZSBkaXNwbGF5IGVkaXRvci4KCkl0IHByb3ZpZGVzIGxpbmtzIGZyb20gZWxp c3Agc3ltYm9scyAocXVvdGVkIGZ1bmN0aW9ucywgdmFyaWFibGVzIGFuZApmb250cykgaW4gR251 LUVtYWNzIEluZm8gdmlld2VyIHRvIHRoZWlyIGhlbHAgZG9jdW1lbnRhdGlvbi4KAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAaW5mb3JtLXBrZy5lbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAADAwMDA2NDQAMDAwMTc1MQAwMDAxNzUxADAwMDAwMDAwNTU2ADEzNzU3MDI0NzU3ADAxMzAx NAAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGRp ZXRlcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZGlldGVyAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAoZGVmaW5lLXBhY2thZ2UgImluZm9ybSIgIjEuNCIgIlN5bWJvbCBs aW5rcyBpbiBJbmZvIGJ1ZmZlcnMgdG8gdGhlaXIgaGVscCBkb2N1bWVudGF0aW9uLiIKICAnKChl bWFjcyAiMjUuMSIpKQo7OyAgOmtleXdvcmRzCjs7ICAnKCJoZWxwIiAiZG9jcyIgImNvbnZlbmll bmNlIikKOzsgIDphdXRob3JzCjs7ICAnKCgiSC4gRGlldGVyIFdpbGhlbG0iIC4gImRpZXRlckBk dWVuZW5ob2Ytd2lsaGVsbS5kZSIpKQo7OyAgOm1haW50YWluZXIKOzsgICcoIkguIERpZXRlciBX aWxoZWxtIiAuICJkaWV0ZXJAZHVlbmVuaG9mLXdpbGhlbG0uZGUiKQo7OyAgOnVybCAiaHR0cHM6 Ly9naXRodWIuY29tL2RpZXRlci13aWxoZWxtL2luZm9ybSIKICApCgoAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAExJQ0VOU0UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAwMDAwNjY0ADAwMDE3NTEAMDAwMTc1MQAwMDAwMDEwNDUxNQAxMzY1MDMwNjU3MgAwMTE0MTYA IDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABkaWV0 ZXIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGRpZXRlcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICBHTlUgR0VORVJBTCBQVUJMSUMgTElD RU5TRQogICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb24gMywgMjkgSnVuZSAyMDA3CgogQ29w eXJpZ2h0IChDKSAyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiA8aHR0cHM6Ly9m c2Yub3JnLz4KIEV2ZXJ5b25lIGlzIHBlcm1pdHRlZCB0byBjb3B5IGFuZCBkaXN0cmlidXRlIHZl cmJhdGltIGNvcGllcwogb2YgdGhpcyBsaWNlbnNlIGRvY3VtZW50LCBidXQgY2hhbmdpbmcgaXQg aXMgbm90IGFsbG93ZWQuCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJlYW1ibGUKCiAg VGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIGEgZnJlZSwgY29weWxlZnQgbGljZW5z ZSBmb3IKc29mdHdhcmUgYW5kIG90aGVyIGtpbmRzIG9mIHdvcmtzLgoKICBUaGUgbGljZW5zZXMg Zm9yIG1vc3Qgc29mdHdhcmUgYW5kIG90aGVyIHByYWN0aWNhbCB3b3JrcyBhcmUgZGVzaWduZWQK dG8gdGFrZSBhd2F5IHlvdXIgZnJlZWRvbSB0byBzaGFyZSBhbmQgY2hhbmdlIHRoZSB3b3Jrcy4g IEJ5IGNvbnRyYXN0LAp0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaXMgaW50ZW5kZWQg dG8gZ3VhcmFudGVlIHlvdXIgZnJlZWRvbSB0bwpzaGFyZSBhbmQgY2hhbmdlIGFsbCB2ZXJzaW9u cyBvZiBhIHByb2dyYW0tLXRvIG1ha2Ugc3VyZSBpdCByZW1haW5zIGZyZWUKc29mdHdhcmUgZm9y IGFsbCBpdHMgdXNlcnMuICBXZSwgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgdXNlIHRo ZQpHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9zdCBvZiBvdXIgc29mdHdhcmU7IGl0 IGFwcGxpZXMgYWxzbyB0bwphbnkgb3RoZXIgd29yayByZWxlYXNlZCB0aGlzIHdheSBieSBpdHMg YXV0aG9ycy4gIFlvdSBjYW4gYXBwbHkgaXQgdG8KeW91ciBwcm9ncmFtcywgdG9vLgoKICBXaGVu IHdlIHNwZWFrIG9mIGZyZWUgc29mdHdhcmUsIHdlIGFyZSByZWZlcnJpbmcgdG8gZnJlZWRvbSwg bm90CnByaWNlLiAgT3VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VzIGFyZSBkZXNpZ25lZCB0byBt YWtlIHN1cmUgdGhhdCB5b3UKaGF2ZSB0aGUgZnJlZWRvbSB0byBkaXN0cmlidXRlIGNvcGllcyBv ZiBmcmVlIHNvZnR3YXJlIChhbmQgY2hhcmdlIGZvcgp0aGVtIGlmIHlvdSB3aXNoKSwgdGhhdCB5 b3UgcmVjZWl2ZSBzb3VyY2UgY29kZSBvciBjYW4gZ2V0IGl0IGlmIHlvdQp3YW50IGl0LCB0aGF0 IHlvdSBjYW4gY2hhbmdlIHRoZSBzb2Z0d2FyZSBvciB1c2UgcGllY2VzIG9mIGl0IGluIG5ldwpm cmVlIHByb2dyYW1zLCBhbmQgdGhhdCB5b3Uga25vdyB5b3UgY2FuIGRvIHRoZXNlIHRoaW5ncy4K CiAgVG8gcHJvdGVjdCB5b3VyIHJpZ2h0cywgd2UgbmVlZCB0byBwcmV2ZW50IG90aGVycyBmcm9t IGRlbnlpbmcgeW91CnRoZXNlIHJpZ2h0cyBvciBhc2tpbmcgeW91IHRvIHN1cnJlbmRlciB0aGUg cmlnaHRzLiAgVGhlcmVmb3JlLCB5b3UgaGF2ZQpjZXJ0YWluIHJlc3BvbnNpYmlsaXRpZXMgaWYg eW91IGRpc3RyaWJ1dGUgY29waWVzIG9mIHRoZSBzb2Z0d2FyZSwgb3IgaWYKeW91IG1vZGlmeSBp dDogcmVzcG9uc2liaWxpdGllcyB0byByZXNwZWN0IHRoZSBmcmVlZG9tIG9mIG90aGVycy4KCiAg Rm9yIGV4YW1wbGUsIGlmIHlvdSBkaXN0cmlidXRlIGNvcGllcyBvZiBzdWNoIGEgcHJvZ3JhbSwg d2hldGhlcgpncmF0aXMgb3IgZm9yIGEgZmVlLCB5b3UgbXVzdCBwYXNzIG9uIHRvIHRoZSByZWNp cGllbnRzIHRoZSBzYW1lCmZyZWVkb21zIHRoYXQgeW91IHJlY2VpdmVkLiAgWW91IG11c3QgbWFr ZSBzdXJlIHRoYXQgdGhleSwgdG9vLCByZWNlaXZlCm9yIGNhbiBnZXQgdGhlIHNvdXJjZSBjb2Rl LiAgQW5kIHlvdSBtdXN0IHNob3cgdGhlbSB0aGVzZSB0ZXJtcyBzbyB0aGV5Cmtub3cgdGhlaXIg cmlnaHRzLgoKICBEZXZlbG9wZXJzIHRoYXQgdXNlIHRoZSBHTlUgR1BMIHByb3RlY3QgeW91ciBy aWdodHMgd2l0aCB0d28gc3RlcHM6CigxKSBhc3NlcnQgY29weXJpZ2h0IG9uIHRoZSBzb2Z0d2Fy ZSwgYW5kICgyKSBvZmZlciB5b3UgdGhpcyBMaWNlbnNlCmdpdmluZyB5b3UgbGVnYWwgcGVybWlz c2lvbiB0byBjb3B5LCBkaXN0cmlidXRlIGFuZC9vciBtb2RpZnkgaXQuCgogIEZvciB0aGUgZGV2 ZWxvcGVycycgYW5kIGF1dGhvcnMnIHByb3RlY3Rpb24sIHRoZSBHUEwgY2xlYXJseSBleHBsYWlu cwp0aGF0IHRoZXJlIGlzIG5vIHdhcnJhbnR5IGZvciB0aGlzIGZyZWUgc29mdHdhcmUuICBGb3Ig Ym90aCB1c2VycycgYW5kCmF1dGhvcnMnIHNha2UsIHRoZSBHUEwgcmVxdWlyZXMgdGhhdCBtb2Rp ZmllZCB2ZXJzaW9ucyBiZSBtYXJrZWQgYXMKY2hhbmdlZCwgc28gdGhhdCB0aGVpciBwcm9ibGVt cyB3aWxsIG5vdCBiZSBhdHRyaWJ1dGVkIGVycm9uZW91c2x5IHRvCmF1dGhvcnMgb2YgcHJldmlv dXMgdmVyc2lvbnMuCgogIFNvbWUgZGV2aWNlcyBhcmUgZGVzaWduZWQgdG8gZGVueSB1c2VycyBh Y2Nlc3MgdG8gaW5zdGFsbCBvciBydW4KbW9kaWZpZWQgdmVyc2lvbnMgb2YgdGhlIHNvZnR3YXJl IGluc2lkZSB0aGVtLCBhbHRob3VnaCB0aGUgbWFudWZhY3R1cmVyCmNhbiBkbyBzby4gIFRoaXMg aXMgZnVuZGFtZW50YWxseSBpbmNvbXBhdGlibGUgd2l0aCB0aGUgYWltIG9mCnByb3RlY3Rpbmcg dXNlcnMnIGZyZWVkb20gdG8gY2hhbmdlIHRoZSBzb2Z0d2FyZS4gIFRoZSBzeXN0ZW1hdGljCnBh dHRlcm4gb2Ygc3VjaCBhYnVzZSBvY2N1cnMgaW4gdGhlIGFyZWEgb2YgcHJvZHVjdHMgZm9yIGlu ZGl2aWR1YWxzIHRvCnVzZSwgd2hpY2ggaXMgcHJlY2lzZWx5IHdoZXJlIGl0IGlzIG1vc3QgdW5h Y2NlcHRhYmxlLiAgVGhlcmVmb3JlLCB3ZQpoYXZlIGRlc2lnbmVkIHRoaXMgdmVyc2lvbiBvZiB0 aGUgR1BMIHRvIHByb2hpYml0IHRoZSBwcmFjdGljZSBmb3IgdGhvc2UKcHJvZHVjdHMuICBJZiBz dWNoIHByb2JsZW1zIGFyaXNlIHN1YnN0YW50aWFsbHkgaW4gb3RoZXIgZG9tYWlucywgd2UKc3Rh bmQgcmVhZHkgdG8gZXh0ZW5kIHRoaXMgcHJvdmlzaW9uIHRvIHRob3NlIGRvbWFpbnMgaW4gZnV0 dXJlIHZlcnNpb25zCm9mIHRoZSBHUEwsIGFzIG5lZWRlZCB0byBwcm90ZWN0IHRoZSBmcmVlZG9t IG9mIHVzZXJzLgoKICBGaW5hbGx5LCBldmVyeSBwcm9ncmFtIGlzIHRocmVhdGVuZWQgY29uc3Rh bnRseSBieSBzb2Z0d2FyZSBwYXRlbnRzLgpTdGF0ZXMgc2hvdWxkIG5vdCBhbGxvdyBwYXRlbnRz IHRvIHJlc3RyaWN0IGRldmVsb3BtZW50IGFuZCB1c2Ugb2YKc29mdHdhcmUgb24gZ2VuZXJhbC1w dXJwb3NlIGNvbXB1dGVycywgYnV0IGluIHRob3NlIHRoYXQgZG8sIHdlIHdpc2ggdG8KYXZvaWQg dGhlIHNwZWNpYWwgZGFuZ2VyIHRoYXQgcGF0ZW50cyBhcHBsaWVkIHRvIGEgZnJlZSBwcm9ncmFt IGNvdWxkCm1ha2UgaXQgZWZmZWN0aXZlbHkgcHJvcHJpZXRhcnkuICBUbyBwcmV2ZW50IHRoaXMs IHRoZSBHUEwgYXNzdXJlcyB0aGF0CnBhdGVudHMgY2Fubm90IGJlIHVzZWQgdG8gcmVuZGVyIHRo ZSBwcm9ncmFtIG5vbi1mcmVlLgoKICBUaGUgcHJlY2lzZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBm b3IgY29weWluZywgZGlzdHJpYnV0aW9uIGFuZAptb2RpZmljYXRpb24gZm9sbG93LgoKICAgICAg ICAgICAgICAgICAgICAgICBURVJNUyBBTkQgQ09ORElUSU9OUwoKICAwLiBEZWZpbml0aW9ucy4K CiAgIlRoaXMgTGljZW5zZSIgcmVmZXJzIHRvIHZlcnNpb24gMyBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UuCgogICJDb3B5cmlnaHQiIGFsc28gbWVhbnMgY29weXJpZ2h0LWxpa2Ug bGF3cyB0aGF0IGFwcGx5IHRvIG90aGVyIGtpbmRzIG9mCndvcmtzLCBzdWNoIGFzIHNlbWljb25k dWN0b3IgbWFza3MuCgogICJUaGUgUHJvZ3JhbSIgcmVmZXJzIHRvIGFueSBjb3B5cmlnaHRhYmxl IHdvcmsgbGljZW5zZWQgdW5kZXIgdGhpcwpMaWNlbnNlLiAgRWFjaCBsaWNlbnNlZSBpcyBhZGRy ZXNzZWQgYXMgInlvdSIuICAiTGljZW5zZWVzIiBhbmQKInJlY2lwaWVudHMiIG1heSBiZSBpbmRp dmlkdWFscyBvciBvcmdhbml6YXRpb25zLgoKICBUbyAibW9kaWZ5IiBhIHdvcmsgbWVhbnMgdG8g Y29weSBmcm9tIG9yIGFkYXB0IGFsbCBvciBwYXJ0IG9mIHRoZSB3b3JrCmluIGEgZmFzaGlvbiBy ZXF1aXJpbmcgY29weXJpZ2h0IHBlcm1pc3Npb24sIG90aGVyIHRoYW4gdGhlIG1ha2luZyBvZiBh bgpleGFjdCBjb3B5LiAgVGhlIHJlc3VsdGluZyB3b3JrIGlzIGNhbGxlZCBhICJtb2RpZmllZCB2 ZXJzaW9uIiBvZiB0aGUKZWFybGllciB3b3JrIG9yIGEgd29yayAiYmFzZWQgb24iIHRoZSBlYXJs aWVyIHdvcmsuCgogIEEgImNvdmVyZWQgd29yayIgbWVhbnMgZWl0aGVyIHRoZSB1bm1vZGlmaWVk IFByb2dyYW0gb3IgYSB3b3JrIGJhc2VkCm9uIHRoZSBQcm9ncmFtLgoKICBUbyAicHJvcGFnYXRl IiBhIHdvcmsgbWVhbnMgdG8gZG8gYW55dGhpbmcgd2l0aCBpdCB0aGF0LCB3aXRob3V0CnBlcm1p c3Npb24sIHdvdWxkIG1ha2UgeW91IGRpcmVjdGx5IG9yIHNlY29uZGFyaWx5IGxpYWJsZSBmb3IK aW5mcmluZ2VtZW50IHVuZGVyIGFwcGxpY2FibGUgY29weXJpZ2h0IGxhdywgZXhjZXB0IGV4ZWN1 dGluZyBpdCBvbiBhCmNvbXB1dGVyIG9yIG1vZGlmeWluZyBhIHByaXZhdGUgY29weS4gIFByb3Bh Z2F0aW9uIGluY2x1ZGVzIGNvcHlpbmcsCmRpc3RyaWJ1dGlvbiAod2l0aCBvciB3aXRob3V0IG1v ZGlmaWNhdGlvbiksIG1ha2luZyBhdmFpbGFibGUgdG8gdGhlCnB1YmxpYywgYW5kIGluIHNvbWUg Y291bnRyaWVzIG90aGVyIGFjdGl2aXRpZXMgYXMgd2VsbC4KCiAgVG8gImNvbnZleSIgYSB3b3Jr IG1lYW5zIGFueSBraW5kIG9mIHByb3BhZ2F0aW9uIHRoYXQgZW5hYmxlcyBvdGhlcgpwYXJ0aWVz IHRvIG1ha2Ugb3IgcmVjZWl2ZSBjb3BpZXMuICBNZXJlIGludGVyYWN0aW9uIHdpdGggYSB1c2Vy IHRocm91Z2gKYSBjb21wdXRlciBuZXR3b3JrLCB3aXRoIG5vIHRyYW5zZmVyIG9mIGEgY29weSwg aXMgbm90IGNvbnZleWluZy4KCiAgQW4gaW50ZXJhY3RpdmUgdXNlciBpbnRlcmZhY2UgZGlzcGxh eXMgIkFwcHJvcHJpYXRlIExlZ2FsIE5vdGljZXMiCnRvIHRoZSBleHRlbnQgdGhhdCBpdCBpbmNs dWRlcyBhIGNvbnZlbmllbnQgYW5kIHByb21pbmVudGx5IHZpc2libGUKZmVhdHVyZSB0aGF0ICgx KSBkaXNwbGF5cyBhbiBhcHByb3ByaWF0ZSBjb3B5cmlnaHQgbm90aWNlLCBhbmQgKDIpCnRlbGxz IHRoZSB1c2VyIHRoYXQgdGhlcmUgaXMgbm8gd2FycmFudHkgZm9yIHRoZSB3b3JrIChleGNlcHQg dG8gdGhlCmV4dGVudCB0aGF0IHdhcnJhbnRpZXMgYXJlIHByb3ZpZGVkKSwgdGhhdCBsaWNlbnNl ZXMgbWF5IGNvbnZleSB0aGUKd29yayB1bmRlciB0aGlzIExpY2Vuc2UsIGFuZCBob3cgdG8gdmll dyBhIGNvcHkgb2YgdGhpcyBMaWNlbnNlLiAgSWYKdGhlIGludGVyZmFjZSBwcmVzZW50cyBhIGxp c3Qgb2YgdXNlciBjb21tYW5kcyBvciBvcHRpb25zLCBzdWNoIGFzIGEKbWVudSwgYSBwcm9taW5l bnQgaXRlbSBpbiB0aGUgbGlzdCBtZWV0cyB0aGlzIGNyaXRlcmlvbi4KCiAgMS4gU291cmNlIENv ZGUuCgogIFRoZSAic291cmNlIGNvZGUiIGZvciBhIHdvcmsgbWVhbnMgdGhlIHByZWZlcnJlZCBm b3JtIG9mIHRoZSB3b3JrCmZvciBtYWtpbmcgbW9kaWZpY2F0aW9ucyB0byBpdC4gICJPYmplY3Qg Y29kZSIgbWVhbnMgYW55IG5vbi1zb3VyY2UKZm9ybSBvZiBhIHdvcmsuCgogIEEgIlN0YW5kYXJk IEludGVyZmFjZSIgbWVhbnMgYW4gaW50ZXJmYWNlIHRoYXQgZWl0aGVyIGlzIGFuIG9mZmljaWFs CnN0YW5kYXJkIGRlZmluZWQgYnkgYSByZWNvZ25pemVkIHN0YW5kYXJkcyBib2R5LCBvciwgaW4g dGhlIGNhc2Ugb2YKaW50ZXJmYWNlcyBzcGVjaWZpZWQgZm9yIGEgcGFydGljdWxhciBwcm9ncmFt bWluZyBsYW5ndWFnZSwgb25lIHRoYXQKaXMgd2lkZWx5IHVzZWQgYW1vbmcgZGV2ZWxvcGVycyB3 b3JraW5nIGluIHRoYXQgbGFuZ3VhZ2UuCgogIFRoZSAiU3lzdGVtIExpYnJhcmllcyIgb2YgYW4g ZXhlY3V0YWJsZSB3b3JrIGluY2x1ZGUgYW55dGhpbmcsIG90aGVyCnRoYW4gdGhlIHdvcmsgYXMg YSB3aG9sZSwgdGhhdCAoYSkgaXMgaW5jbHVkZWQgaW4gdGhlIG5vcm1hbCBmb3JtIG9mCnBhY2th Z2luZyBhIE1ham9yIENvbXBvbmVudCwgYnV0IHdoaWNoIGlzIG5vdCBwYXJ0IG9mIHRoYXQgTWFq b3IKQ29tcG9uZW50LCBhbmQgKGIpIHNlcnZlcyBvbmx5IHRvIGVuYWJsZSB1c2Ugb2YgdGhlIHdv cmsgd2l0aCB0aGF0Ck1ham9yIENvbXBvbmVudCwgb3IgdG8gaW1wbGVtZW50IGEgU3RhbmRhcmQg SW50ZXJmYWNlIGZvciB3aGljaCBhbgppbXBsZW1lbnRhdGlvbiBpcyBhdmFpbGFibGUgdG8gdGhl IHB1YmxpYyBpbiBzb3VyY2UgY29kZSBmb3JtLiAgQQoiTWFqb3IgQ29tcG9uZW50IiwgaW4gdGhp cyBjb250ZXh0LCBtZWFucyBhIG1ham9yIGVzc2VudGlhbCBjb21wb25lbnQKKGtlcm5lbCwgd2lu ZG93IHN5c3RlbSwgYW5kIHNvIG9uKSBvZiB0aGUgc3BlY2lmaWMgb3BlcmF0aW5nIHN5c3RlbQoo aWYgYW55KSBvbiB3aGljaCB0aGUgZXhlY3V0YWJsZSB3b3JrIHJ1bnMsIG9yIGEgY29tcGlsZXIg dXNlZCB0bwpwcm9kdWNlIHRoZSB3b3JrLCBvciBhbiBvYmplY3QgY29kZSBpbnRlcnByZXRlciB1 c2VkIHRvIHJ1biBpdC4KCiAgVGhlICJDb3JyZXNwb25kaW5nIFNvdXJjZSIgZm9yIGEgd29yayBp biBvYmplY3QgY29kZSBmb3JtIG1lYW5zIGFsbAp0aGUgc291cmNlIGNvZGUgbmVlZGVkIHRvIGdl bmVyYXRlLCBpbnN0YWxsLCBhbmQgKGZvciBhbiBleGVjdXRhYmxlCndvcmspIHJ1biB0aGUgb2Jq ZWN0IGNvZGUgYW5kIHRvIG1vZGlmeSB0aGUgd29yaywgaW5jbHVkaW5nIHNjcmlwdHMgdG8KY29u dHJvbCB0aG9zZSBhY3Rpdml0aWVzLiAgSG93ZXZlciwgaXQgZG9lcyBub3QgaW5jbHVkZSB0aGUg d29yaydzClN5c3RlbSBMaWJyYXJpZXMsIG9yIGdlbmVyYWwtcHVycG9zZSB0b29scyBvciBnZW5l cmFsbHkgYXZhaWxhYmxlIGZyZWUKcHJvZ3JhbXMgd2hpY2ggYXJlIHVzZWQgdW5tb2RpZmllZCBp biBwZXJmb3JtaW5nIHRob3NlIGFjdGl2aXRpZXMgYnV0CndoaWNoIGFyZSBub3QgcGFydCBvZiB0 aGUgd29yay4gIEZvciBleGFtcGxlLCBDb3JyZXNwb25kaW5nIFNvdXJjZQppbmNsdWRlcyBpbnRl cmZhY2UgZGVmaW5pdGlvbiBmaWxlcyBhc3NvY2lhdGVkIHdpdGggc291cmNlIGZpbGVzIGZvcgp0 aGUgd29yaywgYW5kIHRoZSBzb3VyY2UgY29kZSBmb3Igc2hhcmVkIGxpYnJhcmllcyBhbmQgZHlu YW1pY2FsbHkKbGlua2VkIHN1YnByb2dyYW1zIHRoYXQgdGhlIHdvcmsgaXMgc3BlY2lmaWNhbGx5 IGRlc2lnbmVkIHRvIHJlcXVpcmUsCnN1Y2ggYXMgYnkgaW50aW1hdGUgZGF0YSBjb21tdW5pY2F0 aW9uIG9yIGNvbnRyb2wgZmxvdyBiZXR3ZWVuIHRob3NlCnN1YnByb2dyYW1zIGFuZCBvdGhlciBw YXJ0cyBvZiB0aGUgd29yay4KCiAgVGhlIENvcnJlc3BvbmRpbmcgU291cmNlIG5lZWQgbm90IGlu Y2x1ZGUgYW55dGhpbmcgdGhhdCB1c2VycwpjYW4gcmVnZW5lcmF0ZSBhdXRvbWF0aWNhbGx5IGZy b20gb3RoZXIgcGFydHMgb2YgdGhlIENvcnJlc3BvbmRpbmcKU291cmNlLgoKICBUaGUgQ29ycmVz cG9uZGluZyBTb3VyY2UgZm9yIGEgd29yayBpbiBzb3VyY2UgY29kZSBmb3JtIGlzIHRoYXQKc2Ft ZSB3b3JrLgoKICAyLiBCYXNpYyBQZXJtaXNzaW9ucy4KCiAgQWxsIHJpZ2h0cyBncmFudGVkIHVu ZGVyIHRoaXMgTGljZW5zZSBhcmUgZ3JhbnRlZCBmb3IgdGhlIHRlcm0gb2YKY29weXJpZ2h0IG9u IHRoZSBQcm9ncmFtLCBhbmQgYXJlIGlycmV2b2NhYmxlIHByb3ZpZGVkIHRoZSBzdGF0ZWQKY29u ZGl0aW9ucyBhcmUgbWV0LiAgVGhpcyBMaWNlbnNlIGV4cGxpY2l0bHkgYWZmaXJtcyB5b3VyIHVu bGltaXRlZApwZXJtaXNzaW9uIHRvIHJ1biB0aGUgdW5tb2RpZmllZCBQcm9ncmFtLiAgVGhlIG91 dHB1dCBmcm9tIHJ1bm5pbmcgYQpjb3ZlcmVkIHdvcmsgaXMgY292ZXJlZCBieSB0aGlzIExpY2Vu c2Ugb25seSBpZiB0aGUgb3V0cHV0LCBnaXZlbiBpdHMKY29udGVudCwgY29uc3RpdHV0ZXMgYSBj b3ZlcmVkIHdvcmsuICBUaGlzIExpY2Vuc2UgYWNrbm93bGVkZ2VzIHlvdXIKcmlnaHRzIG9mIGZh aXIgdXNlIG9yIG90aGVyIGVxdWl2YWxlbnQsIGFzIHByb3ZpZGVkIGJ5IGNvcHlyaWdodCBsYXcu CgogIFlvdSBtYXkgbWFrZSwgcnVuIGFuZCBwcm9wYWdhdGUgY292ZXJlZCB3b3JrcyB0aGF0IHlv dSBkbyBub3QKY29udmV5LCB3aXRob3V0IGNvbmRpdGlvbnMgc28gbG9uZyBhcyB5b3VyIGxpY2Vu c2Ugb3RoZXJ3aXNlIHJlbWFpbnMKaW4gZm9yY2UuICBZb3UgbWF5IGNvbnZleSBjb3ZlcmVkIHdv cmtzIHRvIG90aGVycyBmb3IgdGhlIHNvbGUgcHVycG9zZQpvZiBoYXZpbmcgdGhlbSBtYWtlIG1v ZGlmaWNhdGlvbnMgZXhjbHVzaXZlbHkgZm9yIHlvdSwgb3IgcHJvdmlkZSB5b3UKd2l0aCBmYWNp bGl0aWVzIGZvciBydW5uaW5nIHRob3NlIHdvcmtzLCBwcm92aWRlZCB0aGF0IHlvdSBjb21wbHkg d2l0aAp0aGUgdGVybXMgb2YgdGhpcyBMaWNlbnNlIGluIGNvbnZleWluZyBhbGwgbWF0ZXJpYWwg Zm9yIHdoaWNoIHlvdSBkbwpub3QgY29udHJvbCBjb3B5cmlnaHQuICBUaG9zZSB0aHVzIG1ha2lu ZyBvciBydW5uaW5nIHRoZSBjb3ZlcmVkIHdvcmtzCmZvciB5b3UgbXVzdCBkbyBzbyBleGNsdXNp dmVseSBvbiB5b3VyIGJlaGFsZiwgdW5kZXIgeW91ciBkaXJlY3Rpb24KYW5kIGNvbnRyb2wsIG9u IHRlcm1zIHRoYXQgcHJvaGliaXQgdGhlbSBmcm9tIG1ha2luZyBhbnkgY29waWVzIG9mCnlvdXIg Y29weXJpZ2h0ZWQgbWF0ZXJpYWwgb3V0c2lkZSB0aGVpciByZWxhdGlvbnNoaXAgd2l0aCB5b3Uu CgogIENvbnZleWluZyB1bmRlciBhbnkgb3RoZXIgY2lyY3Vtc3RhbmNlcyBpcyBwZXJtaXR0ZWQg c29sZWx5IHVuZGVyCnRoZSBjb25kaXRpb25zIHN0YXRlZCBiZWxvdy4gIFN1YmxpY2Vuc2luZyBp cyBub3QgYWxsb3dlZDsgc2VjdGlvbiAxMAptYWtlcyBpdCB1bm5lY2Vzc2FyeS4KCiAgMy4gUHJv dGVjdGluZyBVc2VycycgTGVnYWwgUmlnaHRzIEZyb20gQW50aS1DaXJjdW12ZW50aW9uIExhdy4K CiAgTm8gY292ZXJlZCB3b3JrIHNoYWxsIGJlIGRlZW1lZCBwYXJ0IG9mIGFuIGVmZmVjdGl2ZSB0 ZWNobm9sb2dpY2FsCm1lYXN1cmUgdW5kZXIgYW55IGFwcGxpY2FibGUgbGF3IGZ1bGZpbGxpbmcg b2JsaWdhdGlvbnMgdW5kZXIgYXJ0aWNsZQoxMSBvZiB0aGUgV0lQTyBjb3B5cmlnaHQgdHJlYXR5 IGFkb3B0ZWQgb24gMjAgRGVjZW1iZXIgMTk5Niwgb3IKc2ltaWxhciBsYXdzIHByb2hpYml0aW5n IG9yIHJlc3RyaWN0aW5nIGNpcmN1bXZlbnRpb24gb2Ygc3VjaAptZWFzdXJlcy4KCiAgV2hlbiB5 b3UgY29udmV5IGEgY292ZXJlZCB3b3JrLCB5b3Ugd2FpdmUgYW55IGxlZ2FsIHBvd2VyIHRvIGZv cmJpZApjaXJjdW12ZW50aW9uIG9mIHRlY2hub2xvZ2ljYWwgbWVhc3VyZXMgdG8gdGhlIGV4dGVu dCBzdWNoIGNpcmN1bXZlbnRpb24KaXMgZWZmZWN0ZWQgYnkgZXhlcmNpc2luZyByaWdodHMgdW5k ZXIgdGhpcyBMaWNlbnNlIHdpdGggcmVzcGVjdCB0bwp0aGUgY292ZXJlZCB3b3JrLCBhbmQgeW91 IGRpc2NsYWltIGFueSBpbnRlbnRpb24gdG8gbGltaXQgb3BlcmF0aW9uIG9yCm1vZGlmaWNhdGlv biBvZiB0aGUgd29yayBhcyBhIG1lYW5zIG9mIGVuZm9yY2luZywgYWdhaW5zdCB0aGUgd29yaydz CnVzZXJzLCB5b3VyIG9yIHRoaXJkIHBhcnRpZXMnIGxlZ2FsIHJpZ2h0cyB0byBmb3JiaWQgY2ly Y3VtdmVudGlvbiBvZgp0ZWNobm9sb2dpY2FsIG1lYXN1cmVzLgoKICA0LiBDb252ZXlpbmcgVmVy YmF0aW0gQ29waWVzLgoKICBZb3UgbWF5IGNvbnZleSB2ZXJiYXRpbSBjb3BpZXMgb2YgdGhlIFBy b2dyYW0ncyBzb3VyY2UgY29kZSBhcyB5b3UKcmVjZWl2ZSBpdCwgaW4gYW55IG1lZGl1bSwgcHJv dmlkZWQgdGhhdCB5b3UgY29uc3BpY3VvdXNseSBhbmQKYXBwcm9wcmlhdGVseSBwdWJsaXNoIG9u IGVhY2ggY29weSBhbiBhcHByb3ByaWF0ZSBjb3B5cmlnaHQgbm90aWNlOwprZWVwIGludGFjdCBh bGwgbm90aWNlcyBzdGF0aW5nIHRoYXQgdGhpcyBMaWNlbnNlIGFuZCBhbnkKbm9uLXBlcm1pc3Np dmUgdGVybXMgYWRkZWQgaW4gYWNjb3JkIHdpdGggc2VjdGlvbiA3IGFwcGx5IHRvIHRoZSBjb2Rl OwprZWVwIGludGFjdCBhbGwgbm90aWNlcyBvZiB0aGUgYWJzZW5jZSBvZiBhbnkgd2FycmFudHk7 IGFuZCBnaXZlIGFsbApyZWNpcGllbnRzIGEgY29weSBvZiB0aGlzIExpY2Vuc2UgYWxvbmcgd2l0 aCB0aGUgUHJvZ3JhbS4KCiAgWW91IG1heSBjaGFyZ2UgYW55IHByaWNlIG9yIG5vIHByaWNlIGZv ciBlYWNoIGNvcHkgdGhhdCB5b3UgY29udmV5LAphbmQgeW91IG1heSBvZmZlciBzdXBwb3J0IG9y IHdhcnJhbnR5IHByb3RlY3Rpb24gZm9yIGEgZmVlLgoKICA1LiBDb252ZXlpbmcgTW9kaWZpZWQg U291cmNlIFZlcnNpb25zLgoKICBZb3UgbWF5IGNvbnZleSBhIHdvcmsgYmFzZWQgb24gdGhlIFBy b2dyYW0sIG9yIHRoZSBtb2RpZmljYXRpb25zIHRvCnByb2R1Y2UgaXQgZnJvbSB0aGUgUHJvZ3Jh bSwgaW4gdGhlIGZvcm0gb2Ygc291cmNlIGNvZGUgdW5kZXIgdGhlCnRlcm1zIG9mIHNlY3Rpb24g NCwgcHJvdmlkZWQgdGhhdCB5b3UgYWxzbyBtZWV0IGFsbCBvZiB0aGVzZSBjb25kaXRpb25zOgoK ICAgIGEpIFRoZSB3b3JrIG11c3QgY2FycnkgcHJvbWluZW50IG5vdGljZXMgc3RhdGluZyB0aGF0 IHlvdSBtb2RpZmllZAogICAgaXQsIGFuZCBnaXZpbmcgYSByZWxldmFudCBkYXRlLgoKICAgIGIp IFRoZSB3b3JrIG11c3QgY2FycnkgcHJvbWluZW50IG5vdGljZXMgc3RhdGluZyB0aGF0IGl0IGlz CiAgICByZWxlYXNlZCB1bmRlciB0aGlzIExpY2Vuc2UgYW5kIGFueSBjb25kaXRpb25zIGFkZGVk IHVuZGVyIHNlY3Rpb24KICAgIDcuICBUaGlzIHJlcXVpcmVtZW50IG1vZGlmaWVzIHRoZSByZXF1 aXJlbWVudCBpbiBzZWN0aW9uIDQgdG8KICAgICJrZWVwIGludGFjdCBhbGwgbm90aWNlcyIuCgog ICAgYykgWW91IG11c3QgbGljZW5zZSB0aGUgZW50aXJlIHdvcmssIGFzIGEgd2hvbGUsIHVuZGVy IHRoaXMKICAgIExpY2Vuc2UgdG8gYW55b25lIHdobyBjb21lcyBpbnRvIHBvc3Nlc3Npb24gb2Yg YSBjb3B5LiAgVGhpcwogICAgTGljZW5zZSB3aWxsIHRoZXJlZm9yZSBhcHBseSwgYWxvbmcgd2l0 aCBhbnkgYXBwbGljYWJsZSBzZWN0aW9uIDcKICAgIGFkZGl0aW9uYWwgdGVybXMsIHRvIHRoZSB3 aG9sZSBvZiB0aGUgd29yaywgYW5kIGFsbCBpdHMgcGFydHMsCiAgICByZWdhcmRsZXNzIG9mIGhv dyB0aGV5IGFyZSBwYWNrYWdlZC4gIFRoaXMgTGljZW5zZSBnaXZlcyBubwogICAgcGVybWlzc2lv biB0byBsaWNlbnNlIHRoZSB3b3JrIGluIGFueSBvdGhlciB3YXksIGJ1dCBpdCBkb2VzIG5vdAog ICAgaW52YWxpZGF0ZSBzdWNoIHBlcm1pc3Npb24gaWYgeW91IGhhdmUgc2VwYXJhdGVseSByZWNl aXZlZCBpdC4KCiAgICBkKSBJZiB0aGUgd29yayBoYXMgaW50ZXJhY3RpdmUgdXNlciBpbnRlcmZh Y2VzLCBlYWNoIG11c3QgZGlzcGxheQogICAgQXBwcm9wcmlhdGUgTGVnYWwgTm90aWNlczsgaG93 ZXZlciwgaWYgdGhlIFByb2dyYW0gaGFzIGludGVyYWN0aXZlCiAgICBpbnRlcmZhY2VzIHRoYXQg ZG8gbm90IGRpc3BsYXkgQXBwcm9wcmlhdGUgTGVnYWwgTm90aWNlcywgeW91cgogICAgd29yayBu ZWVkIG5vdCBtYWtlIHRoZW0gZG8gc28uCgogIEEgY29tcGlsYXRpb24gb2YgYSBjb3ZlcmVkIHdv cmsgd2l0aCBvdGhlciBzZXBhcmF0ZSBhbmQgaW5kZXBlbmRlbnQKd29ya3MsIHdoaWNoIGFyZSBu b3QgYnkgdGhlaXIgbmF0dXJlIGV4dGVuc2lvbnMgb2YgdGhlIGNvdmVyZWQgd29yaywKYW5kIHdo aWNoIGFyZSBub3QgY29tYmluZWQgd2l0aCBpdCBzdWNoIGFzIHRvIGZvcm0gYSBsYXJnZXIgcHJv Z3JhbSwKaW4gb3Igb24gYSB2b2x1bWUgb2YgYSBzdG9yYWdlIG9yIGRpc3RyaWJ1dGlvbiBtZWRp dW0sIGlzIGNhbGxlZCBhbgoiYWdncmVnYXRlIiBpZiB0aGUgY29tcGlsYXRpb24gYW5kIGl0cyBy ZXN1bHRpbmcgY29weXJpZ2h0IGFyZSBub3QKdXNlZCB0byBsaW1pdCB0aGUgYWNjZXNzIG9yIGxl Z2FsIHJpZ2h0cyBvZiB0aGUgY29tcGlsYXRpb24ncyB1c2VycwpiZXlvbmQgd2hhdCB0aGUgaW5k aXZpZHVhbCB3b3JrcyBwZXJtaXQuICBJbmNsdXNpb24gb2YgYSBjb3ZlcmVkIHdvcmsKaW4gYW4g YWdncmVnYXRlIGRvZXMgbm90IGNhdXNlIHRoaXMgTGljZW5zZSB0byBhcHBseSB0byB0aGUgb3Ro ZXIKcGFydHMgb2YgdGhlIGFnZ3JlZ2F0ZS4KCiAgNi4gQ29udmV5aW5nIE5vbi1Tb3VyY2UgRm9y bXMuCgogIFlvdSBtYXkgY29udmV5IGEgY292ZXJlZCB3b3JrIGluIG9iamVjdCBjb2RlIGZvcm0g dW5kZXIgdGhlIHRlcm1zCm9mIHNlY3Rpb25zIDQgYW5kIDUsIHByb3ZpZGVkIHRoYXQgeW91IGFs c28gY29udmV5IHRoZQptYWNoaW5lLXJlYWRhYmxlIENvcnJlc3BvbmRpbmcgU291cmNlIHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGlzIExpY2Vuc2UsCmluIG9uZSBvZiB0aGVzZSB3YXlzOgoKICAgIGEp IENvbnZleSB0aGUgb2JqZWN0IGNvZGUgaW4sIG9yIGVtYm9kaWVkIGluLCBhIHBoeXNpY2FsIHBy b2R1Y3QKICAgIChpbmNsdWRpbmcgYSBwaHlzaWNhbCBkaXN0cmlidXRpb24gbWVkaXVtKSwgYWNj b21wYW5pZWQgYnkgdGhlCiAgICBDb3JyZXNwb25kaW5nIFNvdXJjZSBmaXhlZCBvbiBhIGR1cmFi bGUgcGh5c2ljYWwgbWVkaXVtCiAgICBjdXN0b21hcmlseSB1c2VkIGZvciBzb2Z0d2FyZSBpbnRl cmNoYW5nZS4KCiAgICBiKSBDb252ZXkgdGhlIG9iamVjdCBjb2RlIGluLCBvciBlbWJvZGllZCBp biwgYSBwaHlzaWNhbCBwcm9kdWN0CiAgICAoaW5jbHVkaW5nIGEgcGh5c2ljYWwgZGlzdHJpYnV0 aW9uIG1lZGl1bSksIGFjY29tcGFuaWVkIGJ5IGEKICAgIHdyaXR0ZW4gb2ZmZXIsIHZhbGlkIGZv ciBhdCBsZWFzdCB0aHJlZSB5ZWFycyBhbmQgdmFsaWQgZm9yIGFzCiAgICBsb25nIGFzIHlvdSBv ZmZlciBzcGFyZSBwYXJ0cyBvciBjdXN0b21lciBzdXBwb3J0IGZvciB0aGF0IHByb2R1Y3QKICAg IG1vZGVsLCB0byBnaXZlIGFueW9uZSB3aG8gcG9zc2Vzc2VzIHRoZSBvYmplY3QgY29kZSBlaXRo ZXIgKDEpIGEKICAgIGNvcHkgb2YgdGhlIENvcnJlc3BvbmRpbmcgU291cmNlIGZvciBhbGwgdGhl IHNvZnR3YXJlIGluIHRoZQogICAgcHJvZHVjdCB0aGF0IGlzIGNvdmVyZWQgYnkgdGhpcyBMaWNl bnNlLCBvbiBhIGR1cmFibGUgcGh5c2ljYWwKICAgIG1lZGl1bSBjdXN0b21hcmlseSB1c2VkIGZv ciBzb2Z0d2FyZSBpbnRlcmNoYW5nZSwgZm9yIGEgcHJpY2Ugbm8KICAgIG1vcmUgdGhhbiB5b3Vy IHJlYXNvbmFibGUgY29zdCBvZiBwaHlzaWNhbGx5IHBlcmZvcm1pbmcgdGhpcwogICAgY29udmV5 aW5nIG9mIHNvdXJjZSwgb3IgKDIpIGFjY2VzcyB0byBjb3B5IHRoZQogICAgQ29ycmVzcG9uZGlu ZyBTb3VyY2UgZnJvbSBhIG5ldHdvcmsgc2VydmVyIGF0IG5vIGNoYXJnZS4KCiAgICBjKSBDb252 ZXkgaW5kaXZpZHVhbCBjb3BpZXMgb2YgdGhlIG9iamVjdCBjb2RlIHdpdGggYSBjb3B5IG9mIHRo ZQogICAgd3JpdHRlbiBvZmZlciB0byBwcm92aWRlIHRoZSBDb3JyZXNwb25kaW5nIFNvdXJjZS4g IFRoaXMKICAgIGFsdGVybmF0aXZlIGlzIGFsbG93ZWQgb25seSBvY2Nhc2lvbmFsbHkgYW5kIG5v bmNvbW1lcmNpYWxseSwgYW5kCiAgICBvbmx5IGlmIHlvdSByZWNlaXZlZCB0aGUgb2JqZWN0IGNv ZGUgd2l0aCBzdWNoIGFuIG9mZmVyLCBpbiBhY2NvcmQKICAgIHdpdGggc3Vic2VjdGlvbiA2Yi4K CiAgICBkKSBDb252ZXkgdGhlIG9iamVjdCBjb2RlIGJ5IG9mZmVyaW5nIGFjY2VzcyBmcm9tIGEg ZGVzaWduYXRlZAogICAgcGxhY2UgKGdyYXRpcyBvciBmb3IgYSBjaGFyZ2UpLCBhbmQgb2ZmZXIg ZXF1aXZhbGVudCBhY2Nlc3MgdG8gdGhlCiAgICBDb3JyZXNwb25kaW5nIFNvdXJjZSBpbiB0aGUg c2FtZSB3YXkgdGhyb3VnaCB0aGUgc2FtZSBwbGFjZSBhdCBubwogICAgZnVydGhlciBjaGFyZ2Uu ICBZb3UgbmVlZCBub3QgcmVxdWlyZSByZWNpcGllbnRzIHRvIGNvcHkgdGhlCiAgICBDb3JyZXNw b25kaW5nIFNvdXJjZSBhbG9uZyB3aXRoIHRoZSBvYmplY3QgY29kZS4gIElmIHRoZSBwbGFjZSB0 bwogICAgY29weSB0aGUgb2JqZWN0IGNvZGUgaXMgYSBuZXR3b3JrIHNlcnZlciwgdGhlIENvcnJl c3BvbmRpbmcgU291cmNlCiAgICBtYXkgYmUgb24gYSBkaWZmZXJlbnQgc2VydmVyIChvcGVyYXRl ZCBieSB5b3Ugb3IgYSB0aGlyZCBwYXJ0eSkKICAgIHRoYXQgc3VwcG9ydHMgZXF1aXZhbGVudCBj b3B5aW5nIGZhY2lsaXRpZXMsIHByb3ZpZGVkIHlvdSBtYWludGFpbgogICAgY2xlYXIgZGlyZWN0 aW9ucyBuZXh0IHRvIHRoZSBvYmplY3QgY29kZSBzYXlpbmcgd2hlcmUgdG8gZmluZCB0aGUKICAg IENvcnJlc3BvbmRpbmcgU291cmNlLiAgUmVnYXJkbGVzcyBvZiB3aGF0IHNlcnZlciBob3N0cyB0 aGUKICAgIENvcnJlc3BvbmRpbmcgU291cmNlLCB5b3UgcmVtYWluIG9ibGlnYXRlZCB0byBlbnN1 cmUgdGhhdCBpdCBpcwogICAgYXZhaWxhYmxlIGZvciBhcyBsb25nIGFzIG5lZWRlZCB0byBzYXRp c2Z5IHRoZXNlIHJlcXVpcmVtZW50cy4KCiAgICBlKSBDb252ZXkgdGhlIG9iamVjdCBjb2RlIHVz aW5nIHBlZXItdG8tcGVlciB0cmFuc21pc3Npb24sIHByb3ZpZGVkCiAgICB5b3UgaW5mb3JtIG90 aGVyIHBlZXJzIHdoZXJlIHRoZSBvYmplY3QgY29kZSBhbmQgQ29ycmVzcG9uZGluZwogICAgU291 cmNlIG9mIHRoZSB3b3JrIGFyZSBiZWluZyBvZmZlcmVkIHRvIHRoZSBnZW5lcmFsIHB1YmxpYyBh dCBubwogICAgY2hhcmdlIHVuZGVyIHN1YnNlY3Rpb24gNmQuCgogIEEgc2VwYXJhYmxlIHBvcnRp b24gb2YgdGhlIG9iamVjdCBjb2RlLCB3aG9zZSBzb3VyY2UgY29kZSBpcyBleGNsdWRlZApmcm9t IHRoZSBDb3JyZXNwb25kaW5nIFNvdXJjZSBhcyBhIFN5c3RlbSBMaWJyYXJ5LCBuZWVkIG5vdCBi ZQppbmNsdWRlZCBpbiBjb252ZXlpbmcgdGhlIG9iamVjdCBjb2RlIHdvcmsuCgogIEEgIlVzZXIg UHJvZHVjdCIgaXMgZWl0aGVyICgxKSBhICJjb25zdW1lciBwcm9kdWN0Iiwgd2hpY2ggbWVhbnMg YW55CnRhbmdpYmxlIHBlcnNvbmFsIHByb3BlcnR5IHdoaWNoIGlzIG5vcm1hbGx5IHVzZWQgZm9y IHBlcnNvbmFsLCBmYW1pbHksCm9yIGhvdXNlaG9sZCBwdXJwb3Nlcywgb3IgKDIpIGFueXRoaW5n IGRlc2lnbmVkIG9yIHNvbGQgZm9yIGluY29ycG9yYXRpb24KaW50byBhIGR3ZWxsaW5nLiAgSW4g ZGV0ZXJtaW5pbmcgd2hldGhlciBhIHByb2R1Y3QgaXMgYSBjb25zdW1lciBwcm9kdWN0LApkb3Vi dGZ1bCBjYXNlcyBzaGFsbCBiZSByZXNvbHZlZCBpbiBmYXZvciBvZiBjb3ZlcmFnZS4gIEZvciBh IHBhcnRpY3VsYXIKcHJvZHVjdCByZWNlaXZlZCBieSBhIHBhcnRpY3VsYXIgdXNlciwgIm5vcm1h bGx5IHVzZWQiIHJlZmVycyB0byBhCnR5cGljYWwgb3IgY29tbW9uIHVzZSBvZiB0aGF0IGNsYXNz IG9mIHByb2R1Y3QsIHJlZ2FyZGxlc3Mgb2YgdGhlIHN0YXR1cwpvZiB0aGUgcGFydGljdWxhciB1 c2VyIG9yIG9mIHRoZSB3YXkgaW4gd2hpY2ggdGhlIHBhcnRpY3VsYXIgdXNlcgphY3R1YWxseSB1 c2VzLCBvciBleHBlY3RzIG9yIGlzIGV4cGVjdGVkIHRvIHVzZSwgdGhlIHByb2R1Y3QuICBBIHBy b2R1Y3QKaXMgYSBjb25zdW1lciBwcm9kdWN0IHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGUgcHJv ZHVjdCBoYXMgc3Vic3RhbnRpYWwKY29tbWVyY2lhbCwgaW5kdXN0cmlhbCBvciBub24tY29uc3Vt ZXIgdXNlcywgdW5sZXNzIHN1Y2ggdXNlcyByZXByZXNlbnQKdGhlIG9ubHkgc2lnbmlmaWNhbnQg bW9kZSBvZiB1c2Ugb2YgdGhlIHByb2R1Y3QuCgogICJJbnN0YWxsYXRpb24gSW5mb3JtYXRpb24i IGZvciBhIFVzZXIgUHJvZHVjdCBtZWFucyBhbnkgbWV0aG9kcywKcHJvY2VkdXJlcywgYXV0aG9y aXphdGlvbiBrZXlzLCBvciBvdGhlciBpbmZvcm1hdGlvbiByZXF1aXJlZCB0byBpbnN0YWxsCmFu ZCBleGVjdXRlIG1vZGlmaWVkIHZlcnNpb25zIG9mIGEgY292ZXJlZCB3b3JrIGluIHRoYXQgVXNl ciBQcm9kdWN0IGZyb20KYSBtb2RpZmllZCB2ZXJzaW9uIG9mIGl0cyBDb3JyZXNwb25kaW5nIFNv dXJjZS4gIFRoZSBpbmZvcm1hdGlvbiBtdXN0CnN1ZmZpY2UgdG8gZW5zdXJlIHRoYXQgdGhlIGNv bnRpbnVlZCBmdW5jdGlvbmluZyBvZiB0aGUgbW9kaWZpZWQgb2JqZWN0CmNvZGUgaXMgaW4gbm8g Y2FzZSBwcmV2ZW50ZWQgb3IgaW50ZXJmZXJlZCB3aXRoIHNvbGVseSBiZWNhdXNlCm1vZGlmaWNh dGlvbiBoYXMgYmVlbiBtYWRlLgoKICBJZiB5b3UgY29udmV5IGFuIG9iamVjdCBjb2RlIHdvcmsg dW5kZXIgdGhpcyBzZWN0aW9uIGluLCBvciB3aXRoLCBvcgpzcGVjaWZpY2FsbHkgZm9yIHVzZSBp biwgYSBVc2VyIFByb2R1Y3QsIGFuZCB0aGUgY29udmV5aW5nIG9jY3VycyBhcwpwYXJ0IG9mIGEg dHJhbnNhY3Rpb24gaW4gd2hpY2ggdGhlIHJpZ2h0IG9mIHBvc3Nlc3Npb24gYW5kIHVzZSBvZiB0 aGUKVXNlciBQcm9kdWN0IGlzIHRyYW5zZmVycmVkIHRvIHRoZSByZWNpcGllbnQgaW4gcGVycGV0 dWl0eSBvciBmb3IgYQpmaXhlZCB0ZXJtIChyZWdhcmRsZXNzIG9mIGhvdyB0aGUgdHJhbnNhY3Rp b24gaXMgY2hhcmFjdGVyaXplZCksIHRoZQpDb3JyZXNwb25kaW5nIFNvdXJjZSBjb252ZXllZCB1 bmRlciB0aGlzIHNlY3Rpb24gbXVzdCBiZSBhY2NvbXBhbmllZApieSB0aGUgSW5zdGFsbGF0aW9u IEluZm9ybWF0aW9uLiAgQnV0IHRoaXMgcmVxdWlyZW1lbnQgZG9lcyBub3QgYXBwbHkKaWYgbmVp dGhlciB5b3Ugbm9yIGFueSB0aGlyZCBwYXJ0eSByZXRhaW5zIHRoZSBhYmlsaXR5IHRvIGluc3Rh bGwKbW9kaWZpZWQgb2JqZWN0IGNvZGUgb24gdGhlIFVzZXIgUHJvZHVjdCAoZm9yIGV4YW1wbGUs IHRoZSB3b3JrIGhhcwpiZWVuIGluc3RhbGxlZCBpbiBST00pLgoKICBUaGUgcmVxdWlyZW1lbnQg dG8gcHJvdmlkZSBJbnN0YWxsYXRpb24gSW5mb3JtYXRpb24gZG9lcyBub3QgaW5jbHVkZSBhCnJl cXVpcmVtZW50IHRvIGNvbnRpbnVlIHRvIHByb3ZpZGUgc3VwcG9ydCBzZXJ2aWNlLCB3YXJyYW50 eSwgb3IgdXBkYXRlcwpmb3IgYSB3b3JrIHRoYXQgaGFzIGJlZW4gbW9kaWZpZWQgb3IgaW5zdGFs bGVkIGJ5IHRoZSByZWNpcGllbnQsIG9yIGZvcgp0aGUgVXNlciBQcm9kdWN0IGluIHdoaWNoIGl0 IGhhcyBiZWVuIG1vZGlmaWVkIG9yIGluc3RhbGxlZC4gIEFjY2VzcyB0byBhCm5ldHdvcmsgbWF5 IGJlIGRlbmllZCB3aGVuIHRoZSBtb2RpZmljYXRpb24gaXRzZWxmIG1hdGVyaWFsbHkgYW5kCmFk dmVyc2VseSBhZmZlY3RzIHRoZSBvcGVyYXRpb24gb2YgdGhlIG5ldHdvcmsgb3IgdmlvbGF0ZXMg dGhlIHJ1bGVzIGFuZApwcm90b2NvbHMgZm9yIGNvbW11bmljYXRpb24gYWNyb3NzIHRoZSBuZXR3 b3JrLgoKICBDb3JyZXNwb25kaW5nIFNvdXJjZSBjb252ZXllZCwgYW5kIEluc3RhbGxhdGlvbiBJ bmZvcm1hdGlvbiBwcm92aWRlZCwKaW4gYWNjb3JkIHdpdGggdGhpcyBzZWN0aW9uIG11c3QgYmUg aW4gYSBmb3JtYXQgdGhhdCBpcyBwdWJsaWNseQpkb2N1bWVudGVkIChhbmQgd2l0aCBhbiBpbXBs ZW1lbnRhdGlvbiBhdmFpbGFibGUgdG8gdGhlIHB1YmxpYyBpbgpzb3VyY2UgY29kZSBmb3JtKSwg YW5kIG11c3QgcmVxdWlyZSBubyBzcGVjaWFsIHBhc3N3b3JkIG9yIGtleSBmb3IKdW5wYWNraW5n LCByZWFkaW5nIG9yIGNvcHlpbmcuCgogIDcuIEFkZGl0aW9uYWwgVGVybXMuCgogICJBZGRpdGlv bmFsIHBlcm1pc3Npb25zIiBhcmUgdGVybXMgdGhhdCBzdXBwbGVtZW50IHRoZSB0ZXJtcyBvZiB0 aGlzCkxpY2Vuc2UgYnkgbWFraW5nIGV4Y2VwdGlvbnMgZnJvbSBvbmUgb3IgbW9yZSBvZiBpdHMg Y29uZGl0aW9ucy4KQWRkaXRpb25hbCBwZXJtaXNzaW9ucyB0aGF0IGFyZSBhcHBsaWNhYmxlIHRv IHRoZSBlbnRpcmUgUHJvZ3JhbSBzaGFsbApiZSB0cmVhdGVkIGFzIHRob3VnaCB0aGV5IHdlcmUg aW5jbHVkZWQgaW4gdGhpcyBMaWNlbnNlLCB0byB0aGUgZXh0ZW50CnRoYXQgdGhleSBhcmUgdmFs aWQgdW5kZXIgYXBwbGljYWJsZSBsYXcuICBJZiBhZGRpdGlvbmFsIHBlcm1pc3Npb25zCmFwcGx5 IG9ubHkgdG8gcGFydCBvZiB0aGUgUHJvZ3JhbSwgdGhhdCBwYXJ0IG1heSBiZSB1c2VkIHNlcGFy YXRlbHkKdW5kZXIgdGhvc2UgcGVybWlzc2lvbnMsIGJ1dCB0aGUgZW50aXJlIFByb2dyYW0gcmVt YWlucyBnb3Zlcm5lZCBieQp0aGlzIExpY2Vuc2Ugd2l0aG91dCByZWdhcmQgdG8gdGhlIGFkZGl0 aW9uYWwgcGVybWlzc2lvbnMuCgogIFdoZW4geW91IGNvbnZleSBhIGNvcHkgb2YgYSBjb3ZlcmVk IHdvcmssIHlvdSBtYXkgYXQgeW91ciBvcHRpb24KcmVtb3ZlIGFueSBhZGRpdGlvbmFsIHBlcm1p c3Npb25zIGZyb20gdGhhdCBjb3B5LCBvciBmcm9tIGFueSBwYXJ0IG9mCml0LiAgKEFkZGl0aW9u YWwgcGVybWlzc2lvbnMgbWF5IGJlIHdyaXR0ZW4gdG8gcmVxdWlyZSB0aGVpciBvd24KcmVtb3Zh bCBpbiBjZXJ0YWluIGNhc2VzIHdoZW4geW91IG1vZGlmeSB0aGUgd29yay4pICBZb3UgbWF5IHBs YWNlCmFkZGl0aW9uYWwgcGVybWlzc2lvbnMgb24gbWF0ZXJpYWwsIGFkZGVkIGJ5IHlvdSB0byBh IGNvdmVyZWQgd29yaywKZm9yIHdoaWNoIHlvdSBoYXZlIG9yIGNhbiBnaXZlIGFwcHJvcHJpYXRl IGNvcHlyaWdodCBwZXJtaXNzaW9uLgoKICBOb3R3aXRoc3RhbmRpbmcgYW55IG90aGVyIHByb3Zp c2lvbiBvZiB0aGlzIExpY2Vuc2UsIGZvciBtYXRlcmlhbCB5b3UKYWRkIHRvIGEgY292ZXJlZCB3 b3JrLCB5b3UgbWF5IChpZiBhdXRob3JpemVkIGJ5IHRoZSBjb3B5cmlnaHQgaG9sZGVycyBvZgp0 aGF0IG1hdGVyaWFsKSBzdXBwbGVtZW50IHRoZSB0ZXJtcyBvZiB0aGlzIExpY2Vuc2Ugd2l0aCB0 ZXJtczoKCiAgICBhKSBEaXNjbGFpbWluZyB3YXJyYW50eSBvciBsaW1pdGluZyBsaWFiaWxpdHkg ZGlmZmVyZW50bHkgZnJvbSB0aGUKICAgIHRlcm1zIG9mIHNlY3Rpb25zIDE1IGFuZCAxNiBvZiB0 aGlzIExpY2Vuc2U7IG9yCgogICAgYikgUmVxdWlyaW5nIHByZXNlcnZhdGlvbiBvZiBzcGVjaWZp ZWQgcmVhc29uYWJsZSBsZWdhbCBub3RpY2VzIG9yCiAgICBhdXRob3IgYXR0cmlidXRpb25zIGlu IHRoYXQgbWF0ZXJpYWwgb3IgaW4gdGhlIEFwcHJvcHJpYXRlIExlZ2FsCiAgICBOb3RpY2VzIGRp c3BsYXllZCBieSB3b3JrcyBjb250YWluaW5nIGl0OyBvcgoKICAgIGMpIFByb2hpYml0aW5nIG1p c3JlcHJlc2VudGF0aW9uIG9mIHRoZSBvcmlnaW4gb2YgdGhhdCBtYXRlcmlhbCwgb3IKICAgIHJl cXVpcmluZyB0aGF0IG1vZGlmaWVkIHZlcnNpb25zIG9mIHN1Y2ggbWF0ZXJpYWwgYmUgbWFya2Vk IGluCiAgICByZWFzb25hYmxlIHdheXMgYXMgZGlmZmVyZW50IGZyb20gdGhlIG9yaWdpbmFsIHZl cnNpb247IG9yCgogICAgZCkgTGltaXRpbmcgdGhlIHVzZSBmb3IgcHVibGljaXR5IHB1cnBvc2Vz IG9mIG5hbWVzIG9mIGxpY2Vuc29ycyBvcgogICAgYXV0aG9ycyBvZiB0aGUgbWF0ZXJpYWw7IG9y CgogICAgZSkgRGVjbGluaW5nIHRvIGdyYW50IHJpZ2h0cyB1bmRlciB0cmFkZW1hcmsgbGF3IGZv ciB1c2Ugb2Ygc29tZQogICAgdHJhZGUgbmFtZXMsIHRyYWRlbWFya3MsIG9yIHNlcnZpY2UgbWFy a3M7IG9yCgogICAgZikgUmVxdWlyaW5nIGluZGVtbmlmaWNhdGlvbiBvZiBsaWNlbnNvcnMgYW5k IGF1dGhvcnMgb2YgdGhhdAogICAgbWF0ZXJpYWwgYnkgYW55b25lIHdobyBjb252ZXlzIHRoZSBt YXRlcmlhbCAob3IgbW9kaWZpZWQgdmVyc2lvbnMgb2YKICAgIGl0KSB3aXRoIGNvbnRyYWN0dWFs IGFzc3VtcHRpb25zIG9mIGxpYWJpbGl0eSB0byB0aGUgcmVjaXBpZW50LCBmb3IKICAgIGFueSBs aWFiaWxpdHkgdGhhdCB0aGVzZSBjb250cmFjdHVhbCBhc3N1bXB0aW9ucyBkaXJlY3RseSBpbXBv c2Ugb24KICAgIHRob3NlIGxpY2Vuc29ycyBhbmQgYXV0aG9ycy4KCiAgQWxsIG90aGVyIG5vbi1w ZXJtaXNzaXZlIGFkZGl0aW9uYWwgdGVybXMgYXJlIGNvbnNpZGVyZWQgImZ1cnRoZXIKcmVzdHJp Y3Rpb25zIiB3aXRoaW4gdGhlIG1lYW5pbmcgb2Ygc2VjdGlvbiAxMC4gIElmIHRoZSBQcm9ncmFt IGFzIHlvdQpyZWNlaXZlZCBpdCwgb3IgYW55IHBhcnQgb2YgaXQsIGNvbnRhaW5zIGEgbm90aWNl IHN0YXRpbmcgdGhhdCBpdCBpcwpnb3Zlcm5lZCBieSB0aGlzIExpY2Vuc2UgYWxvbmcgd2l0aCBh IHRlcm0gdGhhdCBpcyBhIGZ1cnRoZXIKcmVzdHJpY3Rpb24sIHlvdSBtYXkgcmVtb3ZlIHRoYXQg dGVybS4gIElmIGEgbGljZW5zZSBkb2N1bWVudCBjb250YWlucwphIGZ1cnRoZXIgcmVzdHJpY3Rp b24gYnV0IHBlcm1pdHMgcmVsaWNlbnNpbmcgb3IgY29udmV5aW5nIHVuZGVyIHRoaXMKTGljZW5z ZSwgeW91IG1heSBhZGQgdG8gYSBjb3ZlcmVkIHdvcmsgbWF0ZXJpYWwgZ292ZXJuZWQgYnkgdGhl IHRlcm1zCm9mIHRoYXQgbGljZW5zZSBkb2N1bWVudCwgcHJvdmlkZWQgdGhhdCB0aGUgZnVydGhl ciByZXN0cmljdGlvbiBkb2VzCm5vdCBzdXJ2aXZlIHN1Y2ggcmVsaWNlbnNpbmcgb3IgY29udmV5 aW5nLgoKICBJZiB5b3UgYWRkIHRlcm1zIHRvIGEgY292ZXJlZCB3b3JrIGluIGFjY29yZCB3aXRo IHRoaXMgc2VjdGlvbiwgeW91Cm11c3QgcGxhY2UsIGluIHRoZSByZWxldmFudCBzb3VyY2UgZmls ZXMsIGEgc3RhdGVtZW50IG9mIHRoZQphZGRpdGlvbmFsIHRlcm1zIHRoYXQgYXBwbHkgdG8gdGhv c2UgZmlsZXMsIG9yIGEgbm90aWNlIGluZGljYXRpbmcKd2hlcmUgdG8gZmluZCB0aGUgYXBwbGlj YWJsZSB0ZXJtcy4KCiAgQWRkaXRpb25hbCB0ZXJtcywgcGVybWlzc2l2ZSBvciBub24tcGVybWlz c2l2ZSwgbWF5IGJlIHN0YXRlZCBpbiB0aGUKZm9ybSBvZiBhIHNlcGFyYXRlbHkgd3JpdHRlbiBs aWNlbnNlLCBvciBzdGF0ZWQgYXMgZXhjZXB0aW9uczsKdGhlIGFib3ZlIHJlcXVpcmVtZW50cyBh cHBseSBlaXRoZXIgd2F5LgoKICA4LiBUZXJtaW5hdGlvbi4KCiAgWW91IG1heSBub3QgcHJvcGFn YXRlIG9yIG1vZGlmeSBhIGNvdmVyZWQgd29yayBleGNlcHQgYXMgZXhwcmVzc2x5CnByb3ZpZGVk IHVuZGVyIHRoaXMgTGljZW5zZS4gIEFueSBhdHRlbXB0IG90aGVyd2lzZSB0byBwcm9wYWdhdGUg b3IKbW9kaWZ5IGl0IGlzIHZvaWQsIGFuZCB3aWxsIGF1dG9tYXRpY2FsbHkgdGVybWluYXRlIHlv dXIgcmlnaHRzIHVuZGVyCnRoaXMgTGljZW5zZSAoaW5jbHVkaW5nIGFueSBwYXRlbnQgbGljZW5z ZXMgZ3JhbnRlZCB1bmRlciB0aGUgdGhpcmQKcGFyYWdyYXBoIG9mIHNlY3Rpb24gMTEpLgoKICBI b3dldmVyLCBpZiB5b3UgY2Vhc2UgYWxsIHZpb2xhdGlvbiBvZiB0aGlzIExpY2Vuc2UsIHRoZW4g eW91cgpsaWNlbnNlIGZyb20gYSBwYXJ0aWN1bGFyIGNvcHlyaWdodCBob2xkZXIgaXMgcmVpbnN0 YXRlZCAoYSkKcHJvdmlzaW9uYWxseSwgdW5sZXNzIGFuZCB1bnRpbCB0aGUgY29weXJpZ2h0IGhv bGRlciBleHBsaWNpdGx5IGFuZApmaW5hbGx5IHRlcm1pbmF0ZXMgeW91ciBsaWNlbnNlLCBhbmQg KGIpIHBlcm1hbmVudGx5LCBpZiB0aGUgY29weXJpZ2h0CmhvbGRlciBmYWlscyB0byBub3RpZnkg eW91IG9mIHRoZSB2aW9sYXRpb24gYnkgc29tZSByZWFzb25hYmxlIG1lYW5zCnByaW9yIHRvIDYw IGRheXMgYWZ0ZXIgdGhlIGNlc3NhdGlvbi4KCiAgTW9yZW92ZXIsIHlvdXIgbGljZW5zZSBmcm9t IGEgcGFydGljdWxhciBjb3B5cmlnaHQgaG9sZGVyIGlzCnJlaW5zdGF0ZWQgcGVybWFuZW50bHkg aWYgdGhlIGNvcHlyaWdodCBob2xkZXIgbm90aWZpZXMgeW91IG9mIHRoZQp2aW9sYXRpb24gYnkg c29tZSByZWFzb25hYmxlIG1lYW5zLCB0aGlzIGlzIHRoZSBmaXJzdCB0aW1lIHlvdSBoYXZlCnJl Y2VpdmVkIG5vdGljZSBvZiB2aW9sYXRpb24gb2YgdGhpcyBMaWNlbnNlIChmb3IgYW55IHdvcmsp IGZyb20gdGhhdApjb3B5cmlnaHQgaG9sZGVyLCBhbmQgeW91IGN1cmUgdGhlIHZpb2xhdGlvbiBw cmlvciB0byAzMCBkYXlzIGFmdGVyCnlvdXIgcmVjZWlwdCBvZiB0aGUgbm90aWNlLgoKICBUZXJt aW5hdGlvbiBvZiB5b3VyIHJpZ2h0cyB1bmRlciB0aGlzIHNlY3Rpb24gZG9lcyBub3QgdGVybWlu YXRlIHRoZQpsaWNlbnNlcyBvZiBwYXJ0aWVzIHdobyBoYXZlIHJlY2VpdmVkIGNvcGllcyBvciBy aWdodHMgZnJvbSB5b3UgdW5kZXIKdGhpcyBMaWNlbnNlLiAgSWYgeW91ciByaWdodHMgaGF2ZSBi ZWVuIHRlcm1pbmF0ZWQgYW5kIG5vdCBwZXJtYW5lbnRseQpyZWluc3RhdGVkLCB5b3UgZG8gbm90 IHF1YWxpZnkgdG8gcmVjZWl2ZSBuZXcgbGljZW5zZXMgZm9yIHRoZSBzYW1lCm1hdGVyaWFsIHVu ZGVyIHNlY3Rpb24gMTAuCgogIDkuIEFjY2VwdGFuY2UgTm90IFJlcXVpcmVkIGZvciBIYXZpbmcg Q29waWVzLgoKICBZb3UgYXJlIG5vdCByZXF1aXJlZCB0byBhY2NlcHQgdGhpcyBMaWNlbnNlIGlu IG9yZGVyIHRvIHJlY2VpdmUgb3IKcnVuIGEgY29weSBvZiB0aGUgUHJvZ3JhbS4gIEFuY2lsbGFy eSBwcm9wYWdhdGlvbiBvZiBhIGNvdmVyZWQgd29yawpvY2N1cnJpbmcgc29sZWx5IGFzIGEgY29u c2VxdWVuY2Ugb2YgdXNpbmcgcGVlci10by1wZWVyIHRyYW5zbWlzc2lvbgp0byByZWNlaXZlIGEg Y29weSBsaWtld2lzZSBkb2VzIG5vdCByZXF1aXJlIGFjY2VwdGFuY2UuICBIb3dldmVyLApub3Ro aW5nIG90aGVyIHRoYW4gdGhpcyBMaWNlbnNlIGdyYW50cyB5b3UgcGVybWlzc2lvbiB0byBwcm9w YWdhdGUgb3IKbW9kaWZ5IGFueSBjb3ZlcmVkIHdvcmsuICBUaGVzZSBhY3Rpb25zIGluZnJpbmdl IGNvcHlyaWdodCBpZiB5b3UgZG8Kbm90IGFjY2VwdCB0aGlzIExpY2Vuc2UuICBUaGVyZWZvcmUs IGJ5IG1vZGlmeWluZyBvciBwcm9wYWdhdGluZyBhCmNvdmVyZWQgd29yaywgeW91IGluZGljYXRl IHlvdXIgYWNjZXB0YW5jZSBvZiB0aGlzIExpY2Vuc2UgdG8gZG8gc28uCgogIDEwLiBBdXRvbWF0 aWMgTGljZW5zaW5nIG9mIERvd25zdHJlYW0gUmVjaXBpZW50cy4KCiAgRWFjaCB0aW1lIHlvdSBj b252ZXkgYSBjb3ZlcmVkIHdvcmssIHRoZSByZWNpcGllbnQgYXV0b21hdGljYWxseQpyZWNlaXZl cyBhIGxpY2Vuc2UgZnJvbSB0aGUgb3JpZ2luYWwgbGljZW5zb3JzLCB0byBydW4sIG1vZGlmeSBh bmQKcHJvcGFnYXRlIHRoYXQgd29yaywgc3ViamVjdCB0byB0aGlzIExpY2Vuc2UuICBZb3UgYXJl IG5vdCByZXNwb25zaWJsZQpmb3IgZW5mb3JjaW5nIGNvbXBsaWFuY2UgYnkgdGhpcmQgcGFydGll cyB3aXRoIHRoaXMgTGljZW5zZS4KCiAgQW4gImVudGl0eSB0cmFuc2FjdGlvbiIgaXMgYSB0cmFu c2FjdGlvbiB0cmFuc2ZlcnJpbmcgY29udHJvbCBvZiBhbgpvcmdhbml6YXRpb24sIG9yIHN1YnN0 YW50aWFsbHkgYWxsIGFzc2V0cyBvZiBvbmUsIG9yIHN1YmRpdmlkaW5nIGFuCm9yZ2FuaXphdGlv biwgb3IgbWVyZ2luZyBvcmdhbml6YXRpb25zLiAgSWYgcHJvcGFnYXRpb24gb2YgYSBjb3ZlcmVk CndvcmsgcmVzdWx0cyBmcm9tIGFuIGVudGl0eSB0cmFuc2FjdGlvbiwgZWFjaCBwYXJ0eSB0byB0 aGF0CnRyYW5zYWN0aW9uIHdobyByZWNlaXZlcyBhIGNvcHkgb2YgdGhlIHdvcmsgYWxzbyByZWNl aXZlcyB3aGF0ZXZlcgpsaWNlbnNlcyB0byB0aGUgd29yayB0aGUgcGFydHkncyBwcmVkZWNlc3Nv ciBpbiBpbnRlcmVzdCBoYWQgb3IgY291bGQKZ2l2ZSB1bmRlciB0aGUgcHJldmlvdXMgcGFyYWdy YXBoLCBwbHVzIGEgcmlnaHQgdG8gcG9zc2Vzc2lvbiBvZiB0aGUKQ29ycmVzcG9uZGluZyBTb3Vy Y2Ugb2YgdGhlIHdvcmsgZnJvbSB0aGUgcHJlZGVjZXNzb3IgaW4gaW50ZXJlc3QsIGlmCnRoZSBw cmVkZWNlc3NvciBoYXMgaXQgb3IgY2FuIGdldCBpdCB3aXRoIHJlYXNvbmFibGUgZWZmb3J0cy4K CiAgWW91IG1heSBub3QgaW1wb3NlIGFueSBmdXJ0aGVyIHJlc3RyaWN0aW9ucyBvbiB0aGUgZXhl cmNpc2Ugb2YgdGhlCnJpZ2h0cyBncmFudGVkIG9yIGFmZmlybWVkIHVuZGVyIHRoaXMgTGljZW5z ZS4gIEZvciBleGFtcGxlLCB5b3UgbWF5Cm5vdCBpbXBvc2UgYSBsaWNlbnNlIGZlZSwgcm95YWx0 eSwgb3Igb3RoZXIgY2hhcmdlIGZvciBleGVyY2lzZSBvZgpyaWdodHMgZ3JhbnRlZCB1bmRlciB0 aGlzIExpY2Vuc2UsIGFuZCB5b3UgbWF5IG5vdCBpbml0aWF0ZSBsaXRpZ2F0aW9uCihpbmNsdWRp bmcgYSBjcm9zcy1jbGFpbSBvciBjb3VudGVyY2xhaW0gaW4gYSBsYXdzdWl0KSBhbGxlZ2luZyB0 aGF0CmFueSBwYXRlbnQgY2xhaW0gaXMgaW5mcmluZ2VkIGJ5IG1ha2luZywgdXNpbmcsIHNlbGxp bmcsIG9mZmVyaW5nIGZvcgpzYWxlLCBvciBpbXBvcnRpbmcgdGhlIFByb2dyYW0gb3IgYW55IHBv cnRpb24gb2YgaXQuCgogIDExLiBQYXRlbnRzLgoKICBBICJjb250cmlidXRvciIgaXMgYSBjb3B5 cmlnaHQgaG9sZGVyIHdobyBhdXRob3JpemVzIHVzZSB1bmRlciB0aGlzCkxpY2Vuc2Ugb2YgdGhl IFByb2dyYW0gb3IgYSB3b3JrIG9uIHdoaWNoIHRoZSBQcm9ncmFtIGlzIGJhc2VkLiAgVGhlCndv cmsgdGh1cyBsaWNlbnNlZCBpcyBjYWxsZWQgdGhlIGNvbnRyaWJ1dG9yJ3MgImNvbnRyaWJ1dG9y IHZlcnNpb24iLgoKICBBIGNvbnRyaWJ1dG9yJ3MgImVzc2VudGlhbCBwYXRlbnQgY2xhaW1zIiBh cmUgYWxsIHBhdGVudCBjbGFpbXMKb3duZWQgb3IgY29udHJvbGxlZCBieSB0aGUgY29udHJpYnV0 b3IsIHdoZXRoZXIgYWxyZWFkeSBhY3F1aXJlZCBvcgpoZXJlYWZ0ZXIgYWNxdWlyZWQsIHRoYXQg d291bGQgYmUgaW5mcmluZ2VkIGJ5IHNvbWUgbWFubmVyLCBwZXJtaXR0ZWQKYnkgdGhpcyBMaWNl bnNlLCBvZiBtYWtpbmcsIHVzaW5nLCBvciBzZWxsaW5nIGl0cyBjb250cmlidXRvciB2ZXJzaW9u LApidXQgZG8gbm90IGluY2x1ZGUgY2xhaW1zIHRoYXQgd291bGQgYmUgaW5mcmluZ2VkIG9ubHkg YXMgYQpjb25zZXF1ZW5jZSBvZiBmdXJ0aGVyIG1vZGlmaWNhdGlvbiBvZiB0aGUgY29udHJpYnV0 b3IgdmVyc2lvbi4gIEZvcgpwdXJwb3NlcyBvZiB0aGlzIGRlZmluaXRpb24sICJjb250cm9sIiBp bmNsdWRlcyB0aGUgcmlnaHQgdG8gZ3JhbnQKcGF0ZW50IHN1YmxpY2Vuc2VzIGluIGEgbWFubmVy IGNvbnNpc3RlbnQgd2l0aCB0aGUgcmVxdWlyZW1lbnRzIG9mCnRoaXMgTGljZW5zZS4KCiAgRWFj aCBjb250cmlidXRvciBncmFudHMgeW91IGEgbm9uLWV4Y2x1c2l2ZSwgd29ybGR3aWRlLCByb3lh bHR5LWZyZWUKcGF0ZW50IGxpY2Vuc2UgdW5kZXIgdGhlIGNvbnRyaWJ1dG9yJ3MgZXNzZW50aWFs IHBhdGVudCBjbGFpbXMsIHRvCm1ha2UsIHVzZSwgc2VsbCwgb2ZmZXIgZm9yIHNhbGUsIGltcG9y dCBhbmQgb3RoZXJ3aXNlIHJ1biwgbW9kaWZ5IGFuZApwcm9wYWdhdGUgdGhlIGNvbnRlbnRzIG9m IGl0cyBjb250cmlidXRvciB2ZXJzaW9uLgoKICBJbiB0aGUgZm9sbG93aW5nIHRocmVlIHBhcmFn cmFwaHMsIGEgInBhdGVudCBsaWNlbnNlIiBpcyBhbnkgZXhwcmVzcwphZ3JlZW1lbnQgb3IgY29t bWl0bWVudCwgaG93ZXZlciBkZW5vbWluYXRlZCwgbm90IHRvIGVuZm9yY2UgYSBwYXRlbnQKKHN1 Y2ggYXMgYW4gZXhwcmVzcyBwZXJtaXNzaW9uIHRvIHByYWN0aWNlIGEgcGF0ZW50IG9yIGNvdmVu YW50IG5vdCB0bwpzdWUgZm9yIHBhdGVudCBpbmZyaW5nZW1lbnQpLiAgVG8gImdyYW50IiBzdWNo IGEgcGF0ZW50IGxpY2Vuc2UgdG8gYQpwYXJ0eSBtZWFucyB0byBtYWtlIHN1Y2ggYW4gYWdyZWVt ZW50IG9yIGNvbW1pdG1lbnQgbm90IHRvIGVuZm9yY2UgYQpwYXRlbnQgYWdhaW5zdCB0aGUgcGFy dHkuCgogIElmIHlvdSBjb252ZXkgYSBjb3ZlcmVkIHdvcmssIGtub3dpbmdseSByZWx5aW5nIG9u IGEgcGF0ZW50IGxpY2Vuc2UsCmFuZCB0aGUgQ29ycmVzcG9uZGluZyBTb3VyY2Ugb2YgdGhlIHdv cmsgaXMgbm90IGF2YWlsYWJsZSBmb3IgYW55b25lCnRvIGNvcHksIGZyZWUgb2YgY2hhcmdlIGFu ZCB1bmRlciB0aGUgdGVybXMgb2YgdGhpcyBMaWNlbnNlLCB0aHJvdWdoIGEKcHVibGljbHkgYXZh aWxhYmxlIG5ldHdvcmsgc2VydmVyIG9yIG90aGVyIHJlYWRpbHkgYWNjZXNzaWJsZSBtZWFucywK dGhlbiB5b3UgbXVzdCBlaXRoZXIgKDEpIGNhdXNlIHRoZSBDb3JyZXNwb25kaW5nIFNvdXJjZSB0 byBiZSBzbwphdmFpbGFibGUsIG9yICgyKSBhcnJhbmdlIHRvIGRlcHJpdmUgeW91cnNlbGYgb2Yg dGhlIGJlbmVmaXQgb2YgdGhlCnBhdGVudCBsaWNlbnNlIGZvciB0aGlzIHBhcnRpY3VsYXIgd29y aywgb3IgKDMpIGFycmFuZ2UsIGluIGEgbWFubmVyCmNvbnNpc3RlbnQgd2l0aCB0aGUgcmVxdWly ZW1lbnRzIG9mIHRoaXMgTGljZW5zZSwgdG8gZXh0ZW5kIHRoZSBwYXRlbnQKbGljZW5zZSB0byBk b3duc3RyZWFtIHJlY2lwaWVudHMuICAiS25vd2luZ2x5IHJlbHlpbmciIG1lYW5zIHlvdSBoYXZl CmFjdHVhbCBrbm93bGVkZ2UgdGhhdCwgYnV0IGZvciB0aGUgcGF0ZW50IGxpY2Vuc2UsIHlvdXIg Y29udmV5aW5nIHRoZQpjb3ZlcmVkIHdvcmsgaW4gYSBjb3VudHJ5LCBvciB5b3VyIHJlY2lwaWVu dCdzIHVzZSBvZiB0aGUgY292ZXJlZCB3b3JrCmluIGEgY291bnRyeSwgd291bGQgaW5mcmluZ2Ug b25lIG9yIG1vcmUgaWRlbnRpZmlhYmxlIHBhdGVudHMgaW4gdGhhdApjb3VudHJ5IHRoYXQgeW91 IGhhdmUgcmVhc29uIHRvIGJlbGlldmUgYXJlIHZhbGlkLgoKICBJZiwgcHVyc3VhbnQgdG8gb3Ig aW4gY29ubmVjdGlvbiB3aXRoIGEgc2luZ2xlIHRyYW5zYWN0aW9uIG9yCmFycmFuZ2VtZW50LCB5 b3UgY29udmV5LCBvciBwcm9wYWdhdGUgYnkgcHJvY3VyaW5nIGNvbnZleWFuY2Ugb2YsIGEKY292 ZXJlZCB3b3JrLCBhbmQgZ3JhbnQgYSBwYXRlbnQgbGljZW5zZSB0byBzb21lIG9mIHRoZSBwYXJ0 aWVzCnJlY2VpdmluZyB0aGUgY292ZXJlZCB3b3JrIGF1dGhvcml6aW5nIHRoZW0gdG8gdXNlLCBw cm9wYWdhdGUsIG1vZGlmeQpvciBjb252ZXkgYSBzcGVjaWZpYyBjb3B5IG9mIHRoZSBjb3ZlcmVk IHdvcmssIHRoZW4gdGhlIHBhdGVudCBsaWNlbnNlCnlvdSBncmFudCBpcyBhdXRvbWF0aWNhbGx5 IGV4dGVuZGVkIHRvIGFsbCByZWNpcGllbnRzIG9mIHRoZSBjb3ZlcmVkCndvcmsgYW5kIHdvcmtz IGJhc2VkIG9uIGl0LgoKICBBIHBhdGVudCBsaWNlbnNlIGlzICJkaXNjcmltaW5hdG9yeSIgaWYg aXQgZG9lcyBub3QgaW5jbHVkZSB3aXRoaW4KdGhlIHNjb3BlIG9mIGl0cyBjb3ZlcmFnZSwgcHJv aGliaXRzIHRoZSBleGVyY2lzZSBvZiwgb3IgaXMKY29uZGl0aW9uZWQgb24gdGhlIG5vbi1leGVy Y2lzZSBvZiBvbmUgb3IgbW9yZSBvZiB0aGUgcmlnaHRzIHRoYXQgYXJlCnNwZWNpZmljYWxseSBn cmFudGVkIHVuZGVyIHRoaXMgTGljZW5zZS4gIFlvdSBtYXkgbm90IGNvbnZleSBhIGNvdmVyZWQK d29yayBpZiB5b3UgYXJlIGEgcGFydHkgdG8gYW4gYXJyYW5nZW1lbnQgd2l0aCBhIHRoaXJkIHBh cnR5IHRoYXQgaXMKaW4gdGhlIGJ1c2luZXNzIG9mIGRpc3RyaWJ1dGluZyBzb2Z0d2FyZSwgdW5k ZXIgd2hpY2ggeW91IG1ha2UgcGF5bWVudAp0byB0aGUgdGhpcmQgcGFydHkgYmFzZWQgb24gdGhl IGV4dGVudCBvZiB5b3VyIGFjdGl2aXR5IG9mIGNvbnZleWluZwp0aGUgd29yaywgYW5kIHVuZGVy IHdoaWNoIHRoZSB0aGlyZCBwYXJ0eSBncmFudHMsIHRvIGFueSBvZiB0aGUKcGFydGllcyB3aG8g d291bGQgcmVjZWl2ZSB0aGUgY292ZXJlZCB3b3JrIGZyb20geW91LCBhIGRpc2NyaW1pbmF0b3J5 CnBhdGVudCBsaWNlbnNlIChhKSBpbiBjb25uZWN0aW9uIHdpdGggY29waWVzIG9mIHRoZSBjb3Zl cmVkIHdvcmsKY29udmV5ZWQgYnkgeW91IChvciBjb3BpZXMgbWFkZSBmcm9tIHRob3NlIGNvcGll cyksIG9yIChiKSBwcmltYXJpbHkKZm9yIGFuZCBpbiBjb25uZWN0aW9uIHdpdGggc3BlY2lmaWMg cHJvZHVjdHMgb3IgY29tcGlsYXRpb25zIHRoYXQKY29udGFpbiB0aGUgY292ZXJlZCB3b3JrLCB1 bmxlc3MgeW91IGVudGVyZWQgaW50byB0aGF0IGFycmFuZ2VtZW50LApvciB0aGF0IHBhdGVudCBs aWNlbnNlIHdhcyBncmFudGVkLCBwcmlvciB0byAyOCBNYXJjaCAyMDA3LgoKICBOb3RoaW5nIGlu IHRoaXMgTGljZW5zZSBzaGFsbCBiZSBjb25zdHJ1ZWQgYXMgZXhjbHVkaW5nIG9yIGxpbWl0aW5n CmFueSBpbXBsaWVkIGxpY2Vuc2Ugb3Igb3RoZXIgZGVmZW5zZXMgdG8gaW5mcmluZ2VtZW50IHRo YXQgbWF5Cm90aGVyd2lzZSBiZSBhdmFpbGFibGUgdG8geW91IHVuZGVyIGFwcGxpY2FibGUgcGF0 ZW50IGxhdy4KCiAgMTIuIE5vIFN1cnJlbmRlciBvZiBPdGhlcnMnIEZyZWVkb20uCgogIElmIGNv bmRpdGlvbnMgYXJlIGltcG9zZWQgb24geW91ICh3aGV0aGVyIGJ5IGNvdXJ0IG9yZGVyLCBhZ3Jl ZW1lbnQgb3IKb3RoZXJ3aXNlKSB0aGF0IGNvbnRyYWRpY3QgdGhlIGNvbmRpdGlvbnMgb2YgdGhp cyBMaWNlbnNlLCB0aGV5IGRvIG5vdApleGN1c2UgeW91IGZyb20gdGhlIGNvbmRpdGlvbnMgb2Yg dGhpcyBMaWNlbnNlLiAgSWYgeW91IGNhbm5vdCBjb252ZXkgYQpjb3ZlcmVkIHdvcmsgc28gYXMg dG8gc2F0aXNmeSBzaW11bHRhbmVvdXNseSB5b3VyIG9ibGlnYXRpb25zIHVuZGVyIHRoaXMKTGlj ZW5zZSBhbmQgYW55IG90aGVyIHBlcnRpbmVudCBvYmxpZ2F0aW9ucywgdGhlbiBhcyBhIGNvbnNl cXVlbmNlIHlvdSBtYXkKbm90IGNvbnZleSBpdCBhdCBhbGwuICBGb3IgZXhhbXBsZSwgaWYgeW91 IGFncmVlIHRvIHRlcm1zIHRoYXQgb2JsaWdhdGUgeW91CnRvIGNvbGxlY3QgYSByb3lhbHR5IGZv ciBmdXJ0aGVyIGNvbnZleWluZyBmcm9tIHRob3NlIHRvIHdob20geW91IGNvbnZleQp0aGUgUHJv Z3JhbSwgdGhlIG9ubHkgd2F5IHlvdSBjb3VsZCBzYXRpc2Z5IGJvdGggdGhvc2UgdGVybXMgYW5k IHRoaXMKTGljZW5zZSB3b3VsZCBiZSB0byByZWZyYWluIGVudGlyZWx5IGZyb20gY29udmV5aW5n IHRoZSBQcm9ncmFtLgoKICAxMy4gVXNlIHdpdGggdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJs aWMgTGljZW5zZS4KCiAgTm90d2l0aHN0YW5kaW5nIGFueSBvdGhlciBwcm92aXNpb24gb2YgdGhp cyBMaWNlbnNlLCB5b3UgaGF2ZQpwZXJtaXNzaW9uIHRvIGxpbmsgb3IgY29tYmluZSBhbnkgY292 ZXJlZCB3b3JrIHdpdGggYSB3b3JrIGxpY2Vuc2VkCnVuZGVyIHZlcnNpb24gMyBvZiB0aGUgR05V IEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGludG8gYSBzaW5nbGUKY29tYmluZWQgd29y aywgYW5kIHRvIGNvbnZleSB0aGUgcmVzdWx0aW5nIHdvcmsuICBUaGUgdGVybXMgb2YgdGhpcwpM aWNlbnNlIHdpbGwgY29udGludWUgdG8gYXBwbHkgdG8gdGhlIHBhcnQgd2hpY2ggaXMgdGhlIGNv dmVyZWQgd29yaywKYnV0IHRoZSBzcGVjaWFsIHJlcXVpcmVtZW50cyBvZiB0aGUgR05VIEFmZmVy byBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLApzZWN0aW9uIDEzLCBjb25jZXJuaW5nIGludGVyYWN0 aW9uIHRocm91Z2ggYSBuZXR3b3JrIHdpbGwgYXBwbHkgdG8gdGhlCmNvbWJpbmF0aW9uIGFzIHN1 Y2guCgogIDE0LiBSZXZpc2VkIFZlcnNpb25zIG9mIHRoaXMgTGljZW5zZS4KCiAgVGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiBtYXkgcHVibGlzaCByZXZpc2VkIGFuZC9vciBuZXcgdmVyc2lv bnMgb2YKdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZyb20gdGltZSB0byB0aW1lLiAg U3VjaCBuZXcgdmVyc2lvbnMgd2lsbApiZSBzaW1pbGFyIGluIHNwaXJpdCB0byB0aGUgcHJlc2Vu dCB2ZXJzaW9uLCBidXQgbWF5IGRpZmZlciBpbiBkZXRhaWwgdG8KYWRkcmVzcyBuZXcgcHJvYmxl bXMgb3IgY29uY2VybnMuCgogIEVhY2ggdmVyc2lvbiBpcyBnaXZlbiBhIGRpc3Rpbmd1aXNoaW5n IHZlcnNpb24gbnVtYmVyLiAgSWYgdGhlClByb2dyYW0gc3BlY2lmaWVzIHRoYXQgYSBjZXJ0YWlu IG51bWJlcmVkIHZlcnNpb24gb2YgdGhlIEdOVSBHZW5lcmFsClB1YmxpYyBMaWNlbnNlICJvciBh bnkgbGF0ZXIgdmVyc2lvbiIgYXBwbGllcyB0byBpdCwgeW91IGhhdmUgdGhlCm9wdGlvbiBvZiBm b2xsb3dpbmcgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIGVpdGhlciBvZiB0aGF0IG51bWJlcmVk CnZlcnNpb24gb3Igb2YgYW55IGxhdGVyIHZlcnNpb24gcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv ZnR3YXJlCkZvdW5kYXRpb24uICBJZiB0aGUgUHJvZ3JhbSBkb2VzIG5vdCBzcGVjaWZ5IGEgdmVy c2lvbiBudW1iZXIgb2YgdGhlCkdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB5b3UgbWF5IGNo b29zZSBhbnkgdmVyc2lvbiBldmVyIHB1Ymxpc2hlZApieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLgoKICBJZiB0aGUgUHJvZ3JhbSBzcGVjaWZpZXMgdGhhdCBhIHByb3h5IGNhbiBkZWNp ZGUgd2hpY2ggZnV0dXJlCnZlcnNpb25zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBjYW4gYmUgdXNlZCwgdGhhdCBwcm94eSdzCnB1YmxpYyBzdGF0ZW1lbnQgb2YgYWNjZXB0YW5j ZSBvZiBhIHZlcnNpb24gcGVybWFuZW50bHkgYXV0aG9yaXplcyB5b3UKdG8gY2hvb3NlIHRoYXQg dmVyc2lvbiBmb3IgdGhlIFByb2dyYW0uCgogIExhdGVyIGxpY2Vuc2UgdmVyc2lvbnMgbWF5IGdp dmUgeW91IGFkZGl0aW9uYWwgb3IgZGlmZmVyZW50CnBlcm1pc3Npb25zLiAgSG93ZXZlciwgbm8g YWRkaXRpb25hbCBvYmxpZ2F0aW9ucyBhcmUgaW1wb3NlZCBvbiBhbnkKYXV0aG9yIG9yIGNvcHly aWdodCBob2xkZXIgYXMgYSByZXN1bHQgb2YgeW91ciBjaG9vc2luZyB0byBmb2xsb3cgYQpsYXRl ciB2ZXJzaW9uLgoKICAxNS4gRGlzY2xhaW1lciBvZiBXYXJyYW50eS4KCiAgVEhFUkUgSVMgTk8g V0FSUkFOVFkgRk9SIFRIRSBQUk9HUkFNLCBUTyBUSEUgRVhURU5UIFBFUk1JVFRFRCBCWQpBUFBM SUNBQkxFIExBVy4gIEVYQ0VQVCBXSEVOIE9USEVSV0lTRSBTVEFURUQgSU4gV1JJVElORyBUSEUg Q09QWVJJR0hUCkhPTERFUlMgQU5EL09SIE9USEVSIFBBUlRJRVMgUFJPVklERSBUSEUgUFJPR1JB TSAiQVMgSVMiIFdJVEhPVVQgV0FSUkFOVFkKT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNTRUQg T1IgSU1QTElFRCwgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sClRIRSBJTVBMSUVEIFdB UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK UFVSUE9TRS4gIFRIRSBFTlRJUkUgUklTSyBBUyBUTyBUSEUgUVVBTElUWSBBTkQgUEVSRk9STUFO Q0UgT0YgVEhFIFBST0dSQU0KSVMgV0lUSCBZT1UuICBTSE9VTEQgVEhFIFBST0dSQU0gUFJPVkUg REVGRUNUSVZFLCBZT1UgQVNTVU1FIFRIRSBDT1NUIE9GCkFMTCBORUNFU1NBUlkgU0VSVklDSU5H LCBSRVBBSVIgT1IgQ09SUkVDVElPTi4KCiAgMTYuIExpbWl0YXRpb24gb2YgTGlhYmlsaXR5LgoK ICBJTiBOTyBFVkVOVCBVTkxFU1MgUkVRVUlSRUQgQlkgQVBQTElDQUJMRSBMQVcgT1IgQUdSRUVE IFRPIElOIFdSSVRJTkcKV0lMTCBBTlkgQ09QWVJJR0hUIEhPTERFUiwgT1IgQU5ZIE9USEVSIFBB UlRZIFdITyBNT0RJRklFUyBBTkQvT1IgQ09OVkVZUwpUSEUgUFJPR1JBTSBBUyBQRVJNSVRURUQg QUJPVkUsIEJFIExJQUJMRSBUTyBZT1UgRk9SIERBTUFHRVMsIElOQ0xVRElORyBBTlkKR0VORVJB TCwgU1BFQ0lBTCwgSU5DSURFTlRBTCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgQVJJU0lORyBP VVQgT0YgVEhFClVTRSBPUiBJTkFCSUxJVFkgVE8gVVNFIFRIRSBQUk9HUkFNIChJTkNMVURJTkcg QlVUIE5PVCBMSU1JVEVEIFRPIExPU1MgT0YKREFUQSBPUiBEQVRBIEJFSU5HIFJFTkRFUkVEIElO QUNDVVJBVEUgT1IgTE9TU0VTIFNVU1RBSU5FRCBCWSBZT1UgT1IgVEhJUkQKUEFSVElFUyBPUiBB IEZBSUxVUkUgT0YgVEhFIFBST0dSQU0gVE8gT1BFUkFURSBXSVRIIEFOWSBPVEhFUiBQUk9HUkFN UyksCkVWRU4gSUYgU1VDSCBIT0xERVIgT1IgT1RIRVIgUEFSVFkgSEFTIEJFRU4gQURWSVNFRCBP RiBUSEUgUE9TU0lCSUxJVFkgT0YKU1VDSCBEQU1BR0VTLgoKICAxNy4gSW50ZXJwcmV0YXRpb24g b2YgU2VjdGlvbnMgMTUgYW5kIDE2LgoKICBJZiB0aGUgZGlzY2xhaW1lciBvZiB3YXJyYW50eSBh bmQgbGltaXRhdGlvbiBvZiBsaWFiaWxpdHkgcHJvdmlkZWQKYWJvdmUgY2Fubm90IGJlIGdpdmVu IGxvY2FsIGxlZ2FsIGVmZmVjdCBhY2NvcmRpbmcgdG8gdGhlaXIgdGVybXMsCnJldmlld2luZyBj b3VydHMgc2hhbGwgYXBwbHkgbG9jYWwgbGF3IHRoYXQgbW9zdCBjbG9zZWx5IGFwcHJveGltYXRl cwphbiBhYnNvbHV0ZSB3YWl2ZXIgb2YgYWxsIGNpdmlsIGxpYWJpbGl0eSBpbiBjb25uZWN0aW9u IHdpdGggdGhlClByb2dyYW0sIHVubGVzcyBhIHdhcnJhbnR5IG9yIGFzc3VtcHRpb24gb2YgbGlh YmlsaXR5IGFjY29tcGFuaWVzIGEKY29weSBvZiB0aGUgUHJvZ3JhbSBpbiByZXR1cm4gZm9yIGEg ZmVlLgoKICAgICAgICAgICAgICAgICAgICAgRU5EIE9GIFRFUk1TIEFORCBDT05ESVRJT05TCgog ICAgICAgICAgICBIb3cgdG8gQXBwbHkgVGhlc2UgVGVybXMgdG8gWW91ciBOZXcgUHJvZ3JhbXMK CiAgSWYgeW91IGRldmVsb3AgYSBuZXcgcHJvZ3JhbSwgYW5kIHlvdSB3YW50IGl0IHRvIGJlIG9m IHRoZSBncmVhdGVzdApwb3NzaWJsZSB1c2UgdG8gdGhlIHB1YmxpYywgdGhlIGJlc3Qgd2F5IHRv IGFjaGlldmUgdGhpcyBpcyB0byBtYWtlIGl0CmZyZWUgc29mdHdhcmUgd2hpY2ggZXZlcnlvbmUg Y2FuIHJlZGlzdHJpYnV0ZSBhbmQgY2hhbmdlIHVuZGVyIHRoZXNlIHRlcm1zLgoKICBUbyBkbyBz bywgYXR0YWNoIHRoZSBmb2xsb3dpbmcgbm90aWNlcyB0byB0aGUgcHJvZ3JhbS4gIEl0IGlzIHNh ZmVzdAp0byBhdHRhY2ggdGhlbSB0byB0aGUgc3RhcnQgb2YgZWFjaCBzb3VyY2UgZmlsZSB0byBt b3N0IGVmZmVjdGl2ZWx5CnN0YXRlIHRoZSBleGNsdXNpb24gb2Ygd2FycmFudHk7IGFuZCBlYWNo IGZpbGUgc2hvdWxkIGhhdmUgYXQgbGVhc3QKdGhlICJjb3B5cmlnaHQiIGxpbmUgYW5kIGEgcG9p bnRlciB0byB3aGVyZSB0aGUgZnVsbCBub3RpY2UgaXMgZm91bmQuCgogICAgPG9uZSBsaW5lIHRv IGdpdmUgdGhlIHByb2dyYW0ncyBuYW1lIGFuZCBhIGJyaWVmIGlkZWEgb2Ygd2hhdCBpdCBkb2Vz Lj4KICAgIENvcHlyaWdodCAoQykgPHllYXI+ICA8bmFtZSBvZiBhdXRob3I+CgogICAgVGhpcyBw cm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt b2RpZnkKICAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBl aXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgogICAgKGF0IHlvdXIgb3B0aW9uKSBh bnkgbGF0ZXIgdmVyc2lvbi4KCiAgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhl IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAgICBNRVJDSEFOVEFCSUxJ VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiAgICBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgoKICAgIFlvdSBzaG91bGQg aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiAg ICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUu b3JnL2xpY2Vuc2VzLz4uCgpBbHNvIGFkZCBpbmZvcm1hdGlvbiBvbiBob3cgdG8gY29udGFjdCB5 b3UgYnkgZWxlY3Ryb25pYyBhbmQgcGFwZXIgbWFpbC4KCiAgSWYgdGhlIHByb2dyYW0gZG9lcyB0 ZXJtaW5hbCBpbnRlcmFjdGlvbiwgbWFrZSBpdCBvdXRwdXQgYSBzaG9ydApub3RpY2UgbGlrZSB0 aGlzIHdoZW4gaXQgc3RhcnRzIGluIGFuIGludGVyYWN0aXZlIG1vZGU6CgogICAgPHByb2dyYW0+ ICBDb3B5cmlnaHQgKEMpIDx5ZWFyPiAgPG5hbWUgb2YgYXV0aG9yPgogICAgVGhpcyBwcm9ncmFt IGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWTsgZm9yIGRldGFpbHMgdHlwZSBgc2hv dyB3Jy4KICAgIFRoaXMgaXMgZnJlZSBzb2Z0d2FyZSwgYW5kIHlvdSBhcmUgd2VsY29tZSB0byBy ZWRpc3RyaWJ1dGUgaXQKICAgIHVuZGVyIGNlcnRhaW4gY29uZGl0aW9uczsgdHlwZSBgc2hvdyBj JyBmb3IgZGV0YWlscy4KClRoZSBoeXBvdGhldGljYWwgY29tbWFuZHMgYHNob3cgdycgYW5kIGBz aG93IGMnIHNob3VsZCBzaG93IHRoZSBhcHByb3ByaWF0ZQpwYXJ0cyBvZiB0aGUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZS4gIE9mIGNvdXJzZSwgeW91ciBwcm9ncmFtJ3MgY29tbWFuZHMKbWlnaHQg YmUgZGlmZmVyZW50OyBmb3IgYSBHVUkgaW50ZXJmYWNlLCB5b3Ugd291bGQgdXNlIGFuICJhYm91 dCBib3giLgoKICBZb3Ugc2hvdWxkIGFsc28gZ2V0IHlvdXIgZW1wbG95ZXIgKGlmIHlvdSB3b3Jr IGFzIGEgcHJvZ3JhbW1lcikgb3Igc2Nob29sLAppZiBhbnksIHRvIHNpZ24gYSAiY29weXJpZ2h0 IGRpc2NsYWltZXIiIGZvciB0aGUgcHJvZ3JhbSwgaWYgbmVjZXNzYXJ5LgpGb3IgbW9yZSBpbmZv cm1hdGlvbiBvbiB0aGlzLCBhbmQgaG93IHRvIGFwcGx5IGFuZCBmb2xsb3cgdGhlIEdOVSBHUEws IHNlZQo8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgoKICBUaGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgZG9lcyBub3QgcGVybWl0IGluY29ycG9yYXRpbmcgeW91ciBwcm9ncmFt CmludG8gcHJvcHJpZXRhcnkgcHJvZ3JhbXMuICBJZiB5b3VyIHByb2dyYW0gaXMgYSBzdWJyb3V0 aW5lIGxpYnJhcnksIHlvdQptYXkgY29uc2lkZXIgaXQgbW9yZSB1c2VmdWwgdG8gcGVybWl0IGxp bmtpbmcgcHJvcHJpZXRhcnkgYXBwbGljYXRpb25zIHdpdGgKdGhlIGxpYnJhcnkuICBJZiB0aGlz IGlzIHdoYXQgeW91IHdhbnQgdG8gZG8sIHVzZSB0aGUgR05VIExlc3NlciBHZW5lcmFsClB1Ymxp YyBMaWNlbnNlIGluc3RlYWQgb2YgdGhpcyBMaWNlbnNlLiAgQnV0IGZpcnN0LCBwbGVhc2UgcmVh ZAo8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy93aHktbm90LWxncGwuaHRtbD4uCgAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA --=-=-= Content-Type: text/plain -- Best wishes H. Dieter Wilhelm Zwingenberg, Germany --=-=-=--