From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Tim O'Callaghan" Subject: Re: org-install.el in Emacs probably should be removed Date: Tue, 24 Feb 2009 16:38:00 +0100 Message-ID: <3d6808890902240738u8f5e891mc32308130cc9fc44@mail.gmail.com> References: <83d4dkyw94.fsf@cam.ac.uk> <3d6808890902151418y564c4f86w44d0cea114e126a7@mail.gmail.com> <87vdrb9hvk.fsf@gollum.intra.norang.ca> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=001636c923d779403e0463abe7a8 Return-path: Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1LbzME-000612-ML for emacs-orgmode@gnu.org; Tue, 24 Feb 2009 10:38:06 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1LbzMD-00060o-44 for emacs-orgmode@gnu.org; Tue, 24 Feb 2009 10:38:06 -0500 Received: from [199.232.76.173] (port=58614 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1LbzMC-00060l-TX for emacs-orgmode@gnu.org; Tue, 24 Feb 2009 10:38:04 -0500 Received: from mail-bw0-f160.google.com ([209.85.218.160]:50515) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1LbzMB-00053d-CI for emacs-orgmode@gnu.org; Tue, 24 Feb 2009 10:38:04 -0500 Received: by bwz4 with SMTP id 4so5937479bwz.18 for ; Tue, 24 Feb 2009 07:38:01 -0800 (PST) In-Reply-To: <87vdrb9hvk.fsf@gollum.intra.norang.ca> List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: Bernt Hansen Cc: org-mode --001636c923d779403e0463abe7a8 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit On 16/02/2009, Bernt Hansen wrote: > Carsten Dominik writes: > > > On Feb 15, 2009, at 11:18 PM, Tim O'Callaghan wrote: > > > > >> The usage of org-install has the pre-requisite of having to compile > >> the org.el files. This is no use to people like myself, who want to > >> use the same .el files in XEmacs and Emacs due to incompatible .elc > >> problems. Its also no use to people who do no have a build system or > >> make binary installed e.g. windows users, locked down linux/unix > >> systems etc. > >> > >> How about adding a skeleton org-install.el that gets overwritten by > >> the make? > > > > org-install.el is part of the distribution tar and zip files. > > I cannot include it into the git repo because the git people tell > > me that it is a bad idea to keep a product file under git > > control (Bernt?). > > > The main reason this is a bad idea in git master branch is that the file > gets automatic changes on different systems and looks modified after > each time you run make. This file gets in the way of other (real) > changes since git thinks the working tree is dirty and prevents changing > branches, rebasing, or merging with a dirty tree. The contents of the > org-install.el file are uninteresting and really does not belong in the > tracked files for the project since it is a product of the build > procedure. > > If you want a skeleton org-install.el in the tar/zip files then you > probably should generate that when producing the tar/zip files. > > > -Bernt > That is a fair point, its usually counter productive to put a build product under revision control. So for the sake of those looking for an example one, you'll find a generated example attached, for V6.23b I wonder if it is possible to implement a mechanism to check the 'freshness' of the org-install? say embedding the org-version number it was created with, and org checking to see if it is compatible, or needs updating? Tim. --001636c923d779403e0463abe7a8 Content-Type: application/emacs-lisp; name="example-org-install.el" Content-Disposition: attachment; filename="example-org-install.el" Content-Transfer-Encoding: base64 X-Attachment-Id: f_frkqdz5c0 DAo7OzsjIyMgKGF1dG9sb2FkcyAob3JnLWN1c3RvbWl6ZSBvcmctcmVsb2FkIG9yZy1yZXF1aXJl LWF1dG9sb2FkZWQtbW9kdWxlcwo7Ozs7OzsgIG9yZy1jeWNsZS1hZ2VuZGEtZmlsZXMgb3JnLWlk by1zd2l0Y2hiIG9yZy1pc3dpdGNoYiBvcmctbWFwLWVudHJpZXMKOzs7Ozs7ICBvcmctb3Blbi1s aW5rLWZyb20tc3RyaW5nIG9yZy1vcGVuLWF0LXBvaW50LWdsb2JhbCBvcmctaW5zZXJ0LWxpbmst Z2xvYmFsCjs7Ozs7OyAgb3JnLXN0b3JlLWxpbmsgb3JnLXJ1bi1saWtlLWluLW9yZy1tb2RlIHR1 cm4tb24tb3Jnc3RydWN0KysKOzs7Ozs7ICB0dXJuLW9uLW9yZ3N0cnVjdCBvcmdzdHJ1Y3QtbW9k ZSBvcmctZ2xvYmFsLWN5Y2xlIG9yZy1jeWNsZQo7Ozs7OzsgIG9yZy1tb2RlKSAib3JnIiAibGlz cC9vcmcuZWwiICgxODg1MCA0ODU1NikpCjs7OyBHZW5lcmF0ZWQgYXV0b2xvYWRzIGZyb20gbGlz cC9vcmcuZWwKCihhdXRvbG9hZCAocXVvdGUgb3JnLW1vZGUpICJvcmciICJcCk91dGxpbmUtYmFz ZWQgbm90ZXMgbWFuYWdlbWVudCBhbmQgb3JnYW5pemVyLCBhbGlhcwpcIkNhcnN0ZW4ncyBvdXRs aW5lLW1vZGUgZm9yIGtlZXBpbmcgdHJhY2sgb2YgZXZlcnl0aGluZy5cIgoKT3JnLW1vZGUgZGV2 ZWxvcHMgb3JnYW5pemF0aW9uYWwgdGFza3MgYXJvdW5kIGEgTk9URVMgZmlsZSB3aGljaApjb250 YWlucyBpbmZvcm1hdGlvbiBhYm91dCBwcm9qZWN0cyBhcyBwbGFpbiB0ZXh0LiAgT3JnLW1vZGUg aXMKaW1wbGVtZW50ZWQgb24gdG9wIG9mIG91dGxpbmUtbW9kZSwgd2hpY2ggaXMgaWRlYWwgdG8g a2VlcCB0aGUgY29udGVudApvZiBsYXJnZSBmaWxlcyB3ZWxsIHN0cnVjdHVyZWQuICBJdCBzdXBw b3J0cyBUb0RvIGl0ZW1zLCBkZWFkbGluZXMgYW5kCnRpbWUgc3RhbXBzLCB3aGljaCBtYWdpY2Fs bHkgYXBwZWFyIGluIHRoZSBkaWFyeSBsaXN0aW5nIG9mIHRoZSBFbWFjcwpjYWxlbmRhci4gIFRh YmxlcyBhcmUgZWFzaWx5IGNyZWF0ZWQgd2l0aCBhIGJ1aWx0LWluIHRhYmxlIGVkaXRvci4KUGxh aW4gdGV4dCBVUkwtbGlrZSBsaW5rcyBjb25uZWN0IHRvIHdlYnNpdGVzLCBlbWFpbHMgKFZNKSwg VXNlbmV0Cm1lc3NhZ2VzIChHbnVzKSwgQkJEQiBlbnRyaWVzLCBhbmQgYW55IGZpbGVzIHJlbGF0 ZWQgdG8gdGhlIHByb2plY3QuCkZvciBwcmludGluZyBhbmQgc2hhcmluZyBvZiBub3RlcywgYW4g T3JnLW1vZGUgZmlsZSAob3IgYSBwYXJ0IG9mIGl0KQpjYW4gYmUgZXhwb3J0ZWQgYXMgYSBzdHJ1 Y3R1cmVkIEFTQ0lJIG9yIEhUTUwgZmlsZS4KClRoZSBmb2xsb3dpbmcgY29tbWFuZHMgYXJlIGF2 YWlsYWJsZToKClxce29yZy1tb2RlLW1hcH0iIHQgbmlsKQoKKGF1dG9sb2FkIChxdW90ZSBvcmct Y3ljbGUpICJvcmciICJcClZpc2liaWxpdHkgY3ljbGluZyBmb3IgT3JnLW1vZGUuCgotIFdoZW4g dGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aCBhIHByZWZpeCBhcmd1bWVudCwgcm90YXRlIHRo ZSBlbnRpcmUKICBidWZmZXIgdGhyb3VnaCAzIHN0YXRlcyAoZ2xvYmFsIGN5Y2xpbmcpCiAgMS4g T1ZFUlZJRVc6IFNob3cgb25seSB0b3AtbGV2ZWwgaGVhZGxpbmVzLgogIDIuIENPTlRFTlRTOiBT aG93IGFsbCBoZWFkbGluZXMgb2YgYWxsIGxldmVscywgYnV0IG5vIGJvZHkgdGV4dC4KICAzLiBT SE9XIEFMTDogU2hvdyBldmVyeXRoaW5nLgogIFdoZW4gY2FsbGVkIHdpdGggdHdvIEMtdSBDLXUg cHJlZml4ZXMsIHN3aXRjaCB0byB0aGUgc3RhcnR1cCB2aXNpYmlsaXR5LAogIGRldGVybWluZWQg YnkgdGhlIHZhcmlhYmxlIGBvcmctc3RhcnR1cC1mb2xkZWQnLCBhbmQgYnkgYW55IFZJU0lCSUxJ VFkKICBwcm9wZXJ0aWVzIGluIHRoZSBidWZmZXIuCiAgV2hlbiBjYWxsZWQgd2l0aCB0aHJlZSBD LXUgQy11IEMtdSBwcmVmaXhlZCwgc2hvdyB0aGUgZW50aXJlIGJ1ZmZlciwKICBpbmNsdWRpbmcg ZHJhd2Vycy4KCi0gV2hlbiBwb2ludCBpcyBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgaGVhZGxpbmUs IHJvdGF0ZSB0aGUgc3VidHJlZSBzdGFydGVkCiAgYnkgdGhpcyBsaW5lIHRocm91Z2ggMyBkaWZm ZXJlbnQgc3RhdGVzIChsb2NhbCBjeWNsaW5nKQogIDEuIEZPTERFRDogICBPbmx5IHRoZSBtYWlu IGhlYWRsaW5lIGlzIHNob3duLgogIDIuIENISUxEUkVOOiBUaGUgbWFpbiBoZWFkbGluZSBhbmQg dGhlIGRpcmVjdCBjaGlsZHJlbiBhcmUgc2hvd24uCiAgICAgICAgICAgICAgIEZyb20gdGhpcyBz dGF0ZSwgeW91IGNhbiBtb3ZlIHRvIG9uZSBvZiB0aGUgY2hpbGRyZW4KICAgICAgICAgICAgICAg YW5kIHpvb20gaW4gZnVydGhlci4KICAzLiBTVUJUUkVFOiAgU2hvdyB0aGUgZW50aXJlIHN1YnRy ZWUsIGluY2x1ZGluZyBib2R5IHRleHQuCgotIFdoZW4gdGhlcmUgaXMgYSBudW1lcmljIHByZWZp eCwgZ28gdXAgdG8gYSBoZWFkaW5nIHdpdGggbGV2ZWwgQVJHLCBkbwogIGEgYHNob3ctc3VidHJl ZScgYW5kIHJldHVybiB0byB0aGUgcHJldmlvdXMgY3Vyc29yIHBvc2l0aW9uLiAgSWYgQVJHCiAg aXMgbmVnYXRpdmUsIGdvIHVwIHRoYXQgbWFueSBsZXZlbHMuCgotIFdoZW4gcG9pbnQgaXMgbm90 IGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBoZWFkbGluZSwgZXhlY3V0ZSB0aGUgZ2xvYmFsCiAgYmlu ZGluZyBmb3IgVEFCLCB3aGljaCBpcyByZS1pbmRlbnRpbmcgdGhlIGxpbmUuICBTZWUgdGhlIG9w dGlvbgogIGBvcmctY3ljbGUtZW11bGF0ZS10YWInIGZvciBkZXRhaWxzLgoKLSBTcGVjaWFsIGNh c2U6IGlmIHBvaW50IGlzIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGJ1ZmZlciBhbmQgdGhlcmUg aXMKICBubyBoZWFkbGluZSBpbiBsaW5lIDEsIHRoaXMgZnVuY3Rpb24gd2lsbCBhY3QgYXMgaWYg Y2FsbGVkIHdpdGggcHJlZml4IGFyZy4KICBCdXQgb25seSBpZiBhbHNvIHRoZSB2YXJpYWJsZSBg b3JnLWN5Y2xlLWdsb2JhbC1hdC1ib2InIGlzIHQuIiB0IG5pbCkKCihhdXRvbG9hZCAocXVvdGUg b3JnLWdsb2JhbC1jeWNsZSkgIm9yZyIgIlwKQ3ljbGUgdGhlIGdsb2JhbCB2aXNpYmlsaXR5LiAg Rm9yIGRldGFpbHMgc2VlIGBvcmctY3ljbGUnLgpXaXRoIEMtdSBwcmVmaXggYXJnLCBzd2l0Y2gg dG8gc3RhcnR1cCB2aXNpYmlsaXR5LgpXaXRoIGEgbnVtZXJpYyBwcmVmaXgsIHNob3cgYWxsIGhl YWRsaW5lcyB1cCB0byB0aGF0IGxldmVsLiIgdCBuaWwpCgooYXV0b2xvYWQgKHF1b3RlIG9yZ3N0 cnVjdC1tb2RlKSAib3JnIiAiXApUb2dnbGUgdGhlIG1pbm9yIG1vcmUgYG9yZ3N0cnVjdC1tb2Rl Jy4KVGhpcyBtb2RlIGlzIGZvciB1c2luZyBPcmctbW9kZSBzdHJ1Y3R1cmUgY29tbWFuZHMgaW4g b3RoZXIgbW9kZXMuClRoZSBmb2xsb3dpbmcga2V5IGJlaGF2ZSBhcyBpZiBPcmctbW9kZSB3YXMg YWN0aXZlLCBpZiB0aGUgY3Vyc29yCmlzIG9uIGEgaGVhZGxpbmUsIG9yIG9uIGEgcGxhaW4gbGlz dCBpdGVtIChib3RoIGluIHRoZSBkZWZpbml0aW9uCm9mIE9yZy1tb2RlKS4KCk0tdXAgICAgICAg IE1vdmUgZW50cnkvaXRlbSB1cApNLWRvd24JICAgIE1vdmUgZW50cnkvaXRlbSBkb3duCk0tbGVm dAkgICAgUHJvbW90ZQpNLXJpZ2h0CSAgICBEZW1vdGUKTS1TLXVwCSAgICBNb3ZlIGVudHJ5L2l0 ZW0gdXAKTS1TLWRvd24gICAgTW92ZSBlbnRyeS9pdGVtIGRvd24KTS1TLWxlZnQgICAgUHJvbW90 ZSBzdWJ0cmVlCk0tUy1yaWdodCAgIERlbW90ZSBzdWJ0cmVlCk0tcQkgICAgRmlsbCBwYXJhZ3Jh cGggYW5kIGl0ZW1zIGxpa2UgaW4gT3JnLW1vZGUKQy1jIF4JICAgIFNvcnQgZW50cmllcwpDLWMg LQkgICAgQ3ljbGUgbGlzdCBidWxsZXQKVEFCICAgICAgICAgQ3ljbGUgaXRlbSB2aXNpYmlsaXR5 Ck0tUkVUICAgICAgIEluc2VydCBuZXcgaGVhZGluZy9pdGVtClMtTS1SRVQgICAgIEluc2VydCBu ZXcgVE9ETyBoZWFkaW5nIC8gQ2hlY2tib3ggaXRlbQpDLWMgQy1jICAgICBTZXQgdGFncyAvIHRv Z2dsZSBjaGVja2JveCIgdCBuaWwpCgooYXV0b2xvYWQgKHF1b3RlIHR1cm4tb24tb3Jnc3RydWN0 KSAib3JnIiAiXApVbmNvbmRpdGlvbmFsbHkgdHVybiBvbiBgb3Jnc3RydWN0LW1vZGUnLiIgbmls IG5pbCkKCihhdXRvbG9hZCAocXVvdGUgdHVybi1vbi1vcmdzdHJ1Y3QrKykgIm9yZyIgIlwKVW5j b25kaXRpb25hbGx5IHR1cm4gb24gYG9yZ3N0cnVjdCsrLW1vZGUnLiIgbmlsIG5pbCkKCihhdXRv bG9hZCAocXVvdGUgb3JnLXJ1bi1saWtlLWluLW9yZy1tb2RlKSAib3JnIiBuaWwgbmlsIG5pbCkK CihhdXRvbG9hZCAocXVvdGUgb3JnLXN0b3JlLWxpbmspICJvcmciICJcClxcPG9yZy1tb2RlLW1h cD5TdG9yZSBhbiBvcmctbGluayB0byB0aGUgY3VycmVudCBsb2NhdGlvbi4KVGhpcyBsaW5rIGlz IGFkZGVkIHRvIGBvcmctc3RvcmVkLWxpbmtzJyBhbmQgY2FuIGxhdGVyIGJlIGluc2VydGVkCmlu dG8gYW4gb3JnLWJ1ZmZlciB3aXRoIFxcW29yZy1pbnNlcnQtbGlua10uCgpGb3Igc29tZSBsaW5r IHR5cGVzLCBhIHByZWZpeCBhcmcgaXMgaW50ZXJwcmV0ZWQ6CkZvciBsaW5rcyB0byB1c2VuZXQg YXJ0aWNsZXMsIGFyZyBuZWdhdGVzIGBvcmctZ251cy1wcmVmZXItd2ViLWxpbmtzJy4KRm9yIGZp bGUgbGlua3MsIGFyZyBuZWdhdGVzIGBvcmctY29udGV4dC1pbi1maWxlLWxpbmtzJy4iIHQgbmls KQoKKGF1dG9sb2FkIChxdW90ZSBvcmctaW5zZXJ0LWxpbmstZ2xvYmFsKSAib3JnIiAiXApJbnNl cnQgYSBsaW5rIGxpa2UgT3JnLW1vZGUgZG9lcy4KVGhpcyBjb21tYW5kIGNhbiBiZSBjYWxsZWQg aW4gYW55IG1vZGUgdG8gaW5zZXJ0IGEgbGluayBpbiBPcmctbW9kZSBzeW50YXguIiB0IG5pbCkK CihhdXRvbG9hZCAocXVvdGUgb3JnLW9wZW4tYXQtcG9pbnQtZ2xvYmFsKSAib3JnIiAiXApGb2xs b3cgYSBsaW5rIGxpa2UgT3JnLW1vZGUgZG9lcy4KVGhpcyBjb21tYW5kIGNhbiBiZSBjYWxsZWQg aW4gYW55IG1vZGUgdG8gZm9sbG93IGEgbGluayB0aGF0IGhhcwpPcmctbW9kZSBzeW50YXguIiB0 IG5pbCkKCihhdXRvbG9hZCAocXVvdGUgb3JnLW9wZW4tbGluay1mcm9tLXN0cmluZykgIm9yZyIg IlwKT3BlbiBhIGxpbmsgaW4gdGhlIHN0cmluZyBTLCBhcyBpZiBpdCB3YXMgaW4gT3JnLW1vZGUu IiB0IG5pbCkKCihhdXRvbG9hZCAocXVvdGUgb3JnLW1hcC1lbnRyaWVzKSAib3JnIiAiXApDYWxs IEZVTkMgYXQgZWFjaCBoZWFkbGluZSBzZWxlY3RlZCBieSBNQVRDSCBpbiBTQ09QRS4KCkZVTkMg aXMgYSBmdW5jdGlvbiBvciBhIGxpc3AgZm9ybS4gIFRoZSBmdW5jdGlvbiB3aWxsIGJlIGNhbGxl ZCB3aXRob3V0CmFyZ3VtZW50cywgd2l0aCB0aGUgY3Vyc29yIHBvc2l0aW9uZWQgYXQgdGhlIGJl Z2lubmluZyBvZiB0aGUgaGVhZGxpbmUuClRoZSByZXR1cm4gdmFsdWVzIG9mIGFsbCBjYWxscyB0 byB0aGUgZnVuY3Rpb24gd2lsbCBiZSBjb2xsZWN0ZWQgYW5kCnJldHVybmVkIGFzIGEgbGlzdC4K Ck1BVENIIGlzIGEgdGFncy9wcm9wZXJ0eS90b2RvIG1hdGNoIGFzIGl0IGlzIHVzZWQgaW4gdGhl IGFnZW5kYSB0YWdzIHZpZXcuCk9ubHkgaGVhZGxpbmVzIHRoYXQgYXJlIG1hdGNoZWQgYnkgdGhp cyBxdWVyeSB3aWxsIGJlIGNvbnNpZGVyZWQgZHVyaW5nCnRoZSBpdGVyYXRpb24uICBXaGVuIE1B VENIIGlzIG5pbCBvciB0LCBhbGwgaGVhZGxpbmVzIHdpbGwgYmUKdmlzaXRlZCBieSB0aGUgaXRl cmF0aW9uLgoKU0NPUEUgZGV0ZXJtaW5lcyB0aGUgc2NvcGUgb2YgdGhpcyBjb21tYW5kLiAgSXQg Y2FuIGJlIGFueSBvZjoKCm5pbCAgICAgVGhlIGN1cnJlbnQgYnVmZmVyLCByZXNwZWN0aW5nIHRo ZSByZXN0cmljdGlvbiBpZiBhbnkKdHJlZSAgICBUaGUgc3VidHJlZSBzdGFydGVkIHdpdGggdGhl IGVudHJ5IGF0IHBvaW50CmZpbGUgICAgVGhlIGN1cnJlbnQgYnVmZmVyLCB3aXRob3V0IHJlc3Ry aWN0aW9uCmZpbGUtd2l0aC1hcmNoaXZlcwogICAgICAgIFRoZSBjdXJyZW50IGJ1ZmZlciwgYW5k IGFueSBhcmNoaXZlcyBhc3NvY2lhdGVkIHdpdGggaXQKYWdlbmRhICBBbGwgYWdlbmRhIGZpbGVz CmFnZW5kYS13aXRoLWFyY2hpdmVzCiAgICAgICAgQWxsIGFnZW5kYSBmaWxlcyB3aXRoIGFueSBh cmNoaXZlIGZpbGVzIGFzc29jaWF0ZWQgd2l0aCB0aGVtClwoZmlsZTEgZmlsZTIgLi4uKQogICAg ICAgIElmIHRoaXMgaXMgYSBsaXN0LCBhbGwgZmlsZXMgaW4gdGhlIGxpc3Qgd2lsbCBiZSBzY2Fu bmVkCgpUaGUgcmVtYWluaW5nIGFyZ3MgYXJlIHRyZWF0ZWQgYXMgc2V0dGluZ3MgZm9yIHRoZSBz a2lwcGluZyBmYWNpbGl0aWVzIG9mCnRoZSBzY2FubmVyLiAgVGhlIGZvbGxvd2luZyBpdGVtcyBj YW4gYmUgZ2l2ZW4gaGVyZToKCiAgYXJjaGl2ZSAgICBza2lwIHRyZWVzIHdpdGggdGhlIGFyY2hp dmUgdGFnLgogIGNvbW1lbnQgICAgc2tpcCB0cmVlcyB3aXRoIHRoZSBDT01NRU5UIGtleXdvcmQK ICBmdW5jdGlvbiBvciBFbWFjcyBMaXNwIGZvcm06CiAgICAgICAgICAgICB3aWxsIGJlIHVzZWQg YXMgdmFsdWUgZm9yIGBvcmctYWdlbmRhLXNraXAtZnVuY3Rpb24nLCBzbyB3aGVuZXZlcgogICAg ICAgICAgICAgdGhlIHRoZSBmdW5jdGlvbiByZXR1cm5zIHQsIEZVTkMgd2lsbCBub3QgYmUgY2Fs bGVkIGZvciB0aGF0CiAgICAgICAgICAgICBlbnRyeSBhbmQgc2VhcmNoIHdpbGwgY29udGludWUg ZnJvbSB0aGUgcG9pbnQgd2hlcmUgdGhlCiAgICAgICAgICAgICBmdW5jdGlvbiBsZWF2ZXMgaXQu IiBuaWwgbmlsKQoKKGF1dG9sb2FkIChxdW90ZSBvcmctaXN3aXRjaGIpICJvcmciICJcClVzZSBg aXN3aXRjaGItcmVhZC1idWZmZXInIHRvIHByb21wdCBmb3IgYW4gT3JnIGJ1ZmZlciB0byBzd2l0 Y2ggdG8uCldpdGggYSBwcmVmaXggYXJndW1lbnQsIHJlc3RyaWN0IGF2YWlsYWJsZSB0byBmaWxl cy4KV2l0aCB0d28gcHJlZml4IGFyZ3VtZW50cywgcmVzdHJpY3QgYXZhaWxhYmxlIGJ1ZmZlcnMg dG8gYWdlbmRhIGZpbGVzLgoKRHVlIHRvIHNvbWUgeWV0IHVucmVzb2x2ZWQgcmVhc29uLCB0aGUg Z2xvYmFsIGZ1bmN0aW9uCmBpc3dpdGNoYi1tb2RlJyBuZWVkcyB0byBiZSBhY3RpdmUgZm9yIHRo aXMgZnVuY3Rpb24gdG8gd29yay4iIHQgbmlsKQoKKGF1dG9sb2FkIChxdW90ZSBvcmctaWRvLXN3 aXRjaGIpICJvcmciICJcClVzZSBgb3JnLWlkby1jb21wbGV0aW5nLXJlYWQnIHRvIHByb21wdCBm b3IgYW4gT3JnIGJ1ZmZlciB0byBzd2l0Y2ggdG8uCldpdGggYSBwcmVmaXggYXJndW1lbnQsIHJl c3RyaWN0IGF2YWlsYWJsZSB0byBmaWxlcy4KV2l0aCB0d28gcHJlZml4IGFyZ3VtZW50cywgcmVz dHJpY3QgYXZhaWxhYmxlIGJ1ZmZlcnMgdG8gYWdlbmRhIGZpbGVzLiIgdCBuaWwpCgooYXV0b2xv YWQgKHF1b3RlIG9yZy1jeWNsZS1hZ2VuZGEtZmlsZXMpICJvcmciICJcCkN5Y2xlIHRocm91Z2gg dGhlIGZpbGVzIGluIGBvcmctYWdlbmRhLWZpbGVzJy4KSWYgdGhlIGN1cnJlbnQgYnVmZmVyIHZp c2l0cyBhbiBhZ2VuZGEgZmlsZSwgZmluZCB0aGUgbmV4dCBvbmUgaW4gdGhlIGxpc3QuCklmIHRo ZSBjdXJyZW50IGJ1ZmZlciBkb2VzIG5vdCwgZmluZCB0aGUgZmlyc3QgYWdlbmRhIGZpbGUuIiB0 IG5pbCkKCihhdXRvbG9hZCAocXVvdGUgb3JnLXJlcXVpcmUtYXV0b2xvYWRlZC1tb2R1bGVzKSAi b3JnIiBuaWwgdCBuaWwpCgooYXV0b2xvYWQgKHF1b3RlIG9yZy1yZWxvYWQpICJvcmciICJcClJl bG9hZCBhbGwgb3JnIGxpc3AgZmlsZXMuCldpdGggcHJlZml4IGFyZyBVTkNPTVBJTEVELCBsb2Fk IHRoZSB1bmNvbXBpbGVkIHZlcnNpb25zLiIgdCBuaWwpCgooYXV0b2xvYWQgKHF1b3RlIG9yZy1j dXN0b21pemUpICJvcmciICJcCkNhbGwgdGhlIGN1c3RvbWl6ZSBmdW5jdGlvbiB3aXRoIG9yZyBh cyBhcmd1bWVudC4iIHQgbmlsKQoKOzs7KioqCgwKOzs7IyMjIChhdXRvbG9hZHMgKG9yZy1hZ2Vu ZGEtdG8tYXBwdCBvcmctY2FsZW5kYXItZ290by1hZ2VuZGEgb3JnLWFnZW5kYS1jaGVjay1mb3It dGltZXN0YW1wLWFzLXJlYXNvbi10by1pZ25vcmUtdG9kby1pdGVtCjs7Ozs7OyAgb3JnLWRpYXJ5 IG9yZy1hZ2VuZGEtbGlzdC1zdHVjay1wcm9qZWN0cyBvcmctdGFncy12aWV3IG9yZy10b2RvLWxp c3QKOzs7Ozs7ICBvcmctc2VhcmNoLXZpZXcgb3JnLWFnZW5kYS1saXN0IG9yZy1iYXRjaC1zdG9y ZS1hZ2VuZGEtdmlld3MKOzs7Ozs7ICBvcmctc3RvcmUtYWdlbmRhLXZpZXdzIG9yZy1iYXRjaC1h Z2VuZGEtY3N2IG9yZy1iYXRjaC1hZ2VuZGEKOzs7Ozs7ICBvcmctYWdlbmRhKSAib3JnLWFnZW5k YSIgImxpc3Avb3JnLWFnZW5kYS5lbCIgKDE4ODUwIDQ4NTU0KSkKOzs7IEdlbmVyYXRlZCBhdXRv bG9hZHMgZnJvbSBsaXNwL29yZy1hZ2VuZGEuZWwKCihhdXRvbG9hZCAocXVvdGUgb3JnLWFnZW5k YSkgIm9yZy1hZ2VuZGEiICJcCkRpc3BhdGNoIGFnZW5kYSBjb21tYW5kcyB0byBjb2xsZWN0IGVu dHJpZXMgdG8gdGhlIGFnZW5kYSBidWZmZXIuClByb21wdHMgZm9yIGEgY29tbWFuZCB0byBleGVj dXRlLiAgQW55IHByZWZpeCBhcmcgd2lsbCBiZSBwYXNzZWQKb24gdG8gdGhlIHNlbGVjdGVkIGNv bW1hbmQuICBUaGUgZGVmYXVsdCBzZWxlY3Rpb25zIGFyZToKCmEgICAgIENhbGwgYG9yZy1hZ2Vu ZGEtbGlzdCcgdG8gZGlzcGxheSB0aGUgYWdlbmRhIGZvciBjdXJyZW50IGRheSBvciB3ZWVrLgp0 ICAgICBDYWxsIGBvcmctdG9kby1saXN0JyB0byBkaXNwbGF5IHRoZSBnbG9iYWwgdG9kbyBsaXN0 LgpUICAgICBDYWxsIGBvcmctdG9kby1saXN0JyB0byBkaXNwbGF5IHRoZSBnbG9iYWwgdG9kbyBs aXN0LCBzZWxlY3Qgb25seQogICAgICBlbnRyaWVzIHdpdGggYSBzcGVjaWZpYyBUT0RPIGtleXdv cmQgKHRoZSB1c2VyIGdldHMgYSBwcm9tcHQpLgptICAgICBDYWxsIGBvcmctdGFncy12aWV3JyB0 byBkaXNwbGF5IGhlYWRsaW5lcyB3aXRoIHRhZ3MgbWF0Y2hpbmcKICAgICAgYSBjb25kaXRpb24g ICh0aGUgdXNlciBpcyBwcm9tcHRlZCBmb3IgdGhlIGNvbmRpdGlvbikuCk0gICAgIExpa2UgYG0n LCBidXQgc2VsZWN0IG9ubHkgVE9ETyBlbnRyaWVzLCBubyBvcmRpbmFyeSBoZWFkbGluZXMuCkwg ICAgIENyZWF0ZSBhIHRpbWVsaW5lIGZvciB0aGUgY3VycmVudCBidWZmZXIuCmUgICAgIEV4cG9y dCB2aWV3cyB0byBhc3NvY2lhdGVkIGZpbGVzLgpzICAgICBTZWFyY2ggZW50cmllcyBmb3Iga2V5 d29yZHMuCi8gICAgIE11bHRpIG9jY3VyIGFjY3JvcyBhbGwgYWdlbmRhIGZpbGVzIGFuZCBhbHNv IGZpbGVzIGxpc3RlZAogICAgICBpbiBgb3JnLWFnZW5kYS10ZXh0LXNlYXJjaC1leHRyYS1maWxl cycuCjwgICAgIFJlc3RyaWN0IGFnZW5kYSBjb21tYW5kcyB0byBidWZmZXIsIHN1YnRyZWUsIG9y IHJlZ2lvbi4KICAgICAgUHJlc3Mgc2V2ZXJhbCB0aW1lcyB0byBnZXQgdGhlIGRlc2lyZWQgZWZm ZWN0Lgo+ICAgICBSZW1vdmUgYSBwcmV2aW91cyByZXN0cmljdGlvbi4KIyAgICAgTGlzdCBcInN0 dWNrXCIgcHJvamVjdHMuCiEgICAgIENvbmZpZ3VyZSB3aGF0IFwic3R1Y2tcIiBtZWFucy4KQyAg ICAgQ29uZmlndXJlIGN1c3RvbSBhZ2VuZGEgY29tbWFuZHMuCgpNb3JlIGNvbW1hbmRzIGNhbiBi ZSBhZGRlZCBieSBjb25maWd1cmluZyB0aGUgdmFyaWFibGUKYG9yZy1hZ2VuZGEtY3VzdG9tLWNv bW1hbmRzJy4gIEluIHBhcnRpY3VsYXIsIHNwZWNpZmljIHRhZ3MgYW5kIFRPRE8ga2V5d29yZApz ZWFyY2hlcyBjYW4gYmUgcHJlLWRlZmluZWQgaW4gdGhpcyB3YXkuCgpJZiB0aGUgY3VycmVudCBi dWZmZXIgaXMgaW4gT3JnLW1vZGUgYW5kIHZpc2l0aW5nIGEgZmlsZSwgeW91IGNhbiBhbHNvCmZp cnN0IHByZXNzIGA8JyBvbmNlIHRvIGluZGljYXRlIHRoYXQgdGhlIGFnZW5kYSBzaG91bGQgYmUg dGVtcG9yYXJpbHkKXCh1bnRpbCB0aGUgbmV4dCB1c2Ugb2YgXFxbb3JnLWFnZW5kYV0pIHJlc3Ry aWN0ZWQgdG8gdGhlIGN1cnJlbnQgZmlsZS4KUHJlc3NpbmcgYDwnIHR3aWNlIG1lYW5zIHRvIHJl c3RyaWN0IHRvIHRoZSBjdXJyZW50IHN1YnRyZWUgb3IgcmVnaW9uClwoaWYgYWN0aXZlKS4iIHQg bmlsKQoKKGF1dG9sb2FkIChxdW90ZSBvcmctYmF0Y2gtYWdlbmRhKSAib3JnLWFnZW5kYSIgIlwK UnVuIGFuIGFnZW5kYSBjb21tYW5kIGluIGJhdGNoIG1vZGUgYW5kIHNlbmQgdGhlIHJlc3VsdCB0 byBTVERPVVQuCklmIENNRC1LRVkgaXMgYSBzdHJpbmcgb2YgbGVuZ3RoIDEsIGl0IGlzIHVzZWQg YXMgYSBrZXkgaW4KYG9yZy1hZ2VuZGEtY3VzdG9tLWNvbW1hbmRzJyBhbmQgdHJpZ2dlcnMgdGhp cyBjb21tYW5kLiAgSWYgaXQgaXMgYQpsb25nZXIgc3RyaW5nIGl0IGlzIHVzZWQgYXMgYSB0YWdz L3RvZG8gbWF0Y2ggc3RyaW5nLgpQYXJhbXRlcnMgYXJlIGFsdGVybmF0aW5nIHZhcmlhYmxlIG5h bWVzIGFuZCB2YWx1ZXMgdGhhdCB3aWxsIGJlIGJvdW5kCmJlZm9yZSBydW5uaW5nIHRoZSBhZ2Vu ZGEgY29tbWFuZC4iIG5pbCAocXVvdGUgbWFjcm8pKQoKKGF1dG9sb2FkIChxdW90ZSBvcmctYmF0 Y2gtYWdlbmRhLWNzdikgIm9yZy1hZ2VuZGEiICJcClJ1biBhbiBhZ2VuZGEgY29tbWFuZCBpbiBi YXRjaCBtb2RlIGFuZCBzZW5kIHRoZSByZXN1bHQgdG8gU1RET1VULgpJZiBDTUQtS0VZIGlzIGEg c3RyaW5nIG9mIGxlbmd0aCAxLCBpdCBpcyB1c2VkIGFzIGEga2V5IGluCmBvcmctYWdlbmRhLWN1 c3RvbS1jb21tYW5kcycgYW5kIHRyaWdnZXJzIHRoaXMgY29tbWFuZC4gIElmIGl0IGlzIGEKbG9u Z2VyIHN0cmluZyBpdCBpcyB1c2VkIGFzIGEgdGFncy90b2RvIG1hdGNoIHN0cmluZy4KUGFyYW10 ZXJzIGFyZSBhbHRlcm5hdGluZyB2YXJpYWJsZSBuYW1lcyBhbmQgdmFsdWVzIHRoYXQgd2lsbCBi ZSBib3VuZApiZWZvcmUgcnVubmluZyB0aGUgYWdlbmRhIGNvbW1hbmQuCgpUaGUgb3V0cHV0IGdp dmVzIGEgbGluZSBmb3IgZWFjaCBzZWxlY3RlZCBhZ2VuZGEgaXRlbS4gIEVhY2gKaXRlbSBpcyBh IGxpc3Qgb2YgY29tbWEtc2VwYXJhdGVkIHZhbHVlcywgbGlrZSB0aGlzOgoKY2F0ZWdvcnksaGVh ZCx0eXBlLHRvZG8sdGFncyxkYXRlLHRpbWUsZXh0cmEscHJpb3JpdHktbCxwcmlvcml0eS1uCgpj YXRlZ29yeSAgICAgVGhlIGNhdGVnb3J5IG9mIHRoZSBpdGVtCmhlYWQgICAgICAgICBUaGUgaGVh ZGxpbmUsIHdpdGhvdXQgVE9ETyBrd2QsIFRBR1MgYW5kIFBSSU9SSVRZCnR5cGUgICAgICAgICBU aGUgdHlwZSBvZiB0aGUgYWdlbmRhIGVudHJ5LCBjYW4gYmUKICAgICAgICAgICAgICAgIHRvZG8g ICAgICAgICAgICAgICBzZWxlY3RlZCBpbiBUT0RPIG1hdGNoCiAgICAgICAgICAgICAgICB0YWdz bWF0Y2ggICAgICAgICAgc2VsZWN0ZWQgaW4gdGFncyBtYXRjaAogICAgICAgICAgICAgICAgZGlh cnkgICAgICAgICAgICAgIGltcG9ydGVkIGZyb20gZGlhcnkKICAgICAgICAgICAgICAgIGRlYWRs aW5lICAgICAgICAgICBhIGRlYWRsaW5lIG9uIGdpdmVuIGRhdGUKICAgICAgICAgICAgICAgIHNj aGVkdWxlZCAgICAgICAgICBzY2hlZHVsZWQgb24gZ2l2ZW4gZGF0ZQogICAgICAgICAgICAgICAg dGltZXN0YW1wICAgICAgICAgIGVudHJ5IGhhcyB0aW1lc3RhbXAgb24gZ2l2ZW4gZGF0ZQogICAg ICAgICAgICAgICAgY2xvc2VkICAgICAgICAgICAgIGVudHJ5IHdhcyBjbG9zZWQgb24gZ2l2ZW4g ZGF0ZQogICAgICAgICAgICAgICAgdXBjb21pbmctZGVhZGxpbmUgIHdhcm5pbmcgYWJvdXQgZGVh ZGxpbmUKICAgICAgICAgICAgICAgIHBhc3Qtc2NoZWR1bGVkICAgICBmb3J3YXJkZWQgc2NoZWR1 bGVkIGl0ZW0KICAgICAgICAgICAgICAgIGJsb2NrICAgICAgICAgICAgICBlbnRyeSBoYXMgZGF0 ZSBibG9jayBpbmNsdWRpbmcgZy4gZGF0ZQp0b2RvICAgICAgICAgVGhlIHRvZG8ga2V5d29yZCwg aWYgYW55CnRhZ3MgICAgICAgICBBbGwgdGFncyBpbmNsdWRpbmcgaW5oZXJpdGVkIG9uZXMsIHNl cGFyYXRlZCBieSBjb2xvbnMKZGF0ZSAgICAgICAgIFRoZSByZWxldmFudCBkYXRlLCBsaWtlIDIw MDctMi0xNAp0aW1lICAgICAgICAgVGhlIHRpbWUsIGxpa2UgMTU6MDAtMTY6NTAKZXh0cmEgICAg ICAgIFN0aW5nIHdpdGggZXh0cmEgcGxhbm5pbmcgaW5mbwpwcmlvcml0eS1sICAgVGhlIHByaW9y aXR5IGxldHRlciBpZiBhbnkgd2FzIGdpdmVuCnByaW9yaXR5LW4gICBUaGUgY29tcHV0ZWQgbnVt ZXJpY2FsIHByaW9yaXR5CmFnZW5kYS1kYXkgICBUaGUgZGF5IGluIHRoZSBhZ2VuZGEgd2hlcmUg dGhpcyBpcyBsaXN0ZWQiIG5pbCAocXVvdGUgbWFjcm8pKQoKKGF1dG9sb2FkIChxdW90ZSBvcmct c3RvcmUtYWdlbmRhLXZpZXdzKSAib3JnLWFnZW5kYSIgbmlsIHQgbmlsKQoKKGF1dG9sb2FkIChx dW90ZSBvcmctYmF0Y2gtc3RvcmUtYWdlbmRhLXZpZXdzKSAib3JnLWFnZW5kYSIgIlwKUnVuIGFs bCBjdXN0b20gYWdlbmRhIGNvbW1hbmRzIHRoYXQgaGF2ZSBhIGZpbGUgYXJndW1lbnQuIiBuaWwg KHF1b3RlIG1hY3JvKSkKCihhdXRvbG9hZCAocXVvdGUgb3JnLWFnZW5kYS1saXN0KSAib3JnLWFn ZW5kYSIgIlwKUHJvZHVjZSBhIGRhaWx5L3dlZWtseSB2aWV3IGZyb20gYWxsIGZpbGVzIGluIHZh cmlhYmxlIGBvcmctYWdlbmRhLWZpbGVzJy4KVGhlIHZpZXcgd2lsbCBiZSBmb3IgdGhlIGN1cnJl bnQgZGF5IG9yIHdlZWssIGJ1dCBmcm9tIHRoZSBvdmVydmlldyBidWZmZXIKeW91IHdpbGwgYmUg YWJsZSB0byBnbyB0byBvdGhlciBkYXlzL3dlZWtzLgoKV2l0aCBvbmUgXFxbdW5pdmVyc2FsLWFy Z3VtZW50XSBwcmVmaXggYXJndW1lbnQgSU5DTFVERS1BTEwsCmFsbCB1bmZpbmlzaGVkIFRPRE8g aXRlbXMgd2lsbCBhbHNvIGJlIHNob3duLCBiZWZvcmUgdGhlIGFnZW5kYS4KVGhpcyBmZWF0dXJl IGlzIGNvbnNpZGVyZWQgb2Jzb2xldGUsIHBsZWFzZSB1c2UgdGhlIFRPRE8gbGlzdCBvciBhIGJs b2NrCmFnZW5kYSBpbnN0ZWFkLgoKV2l0aCBhIG51bWVyaWMgcHJlZml4IGFyZ3VtZW50IGluIGFu IGludGVyYWN0aXZlIGNhbGwsIHRoZSBhZ2VuZGEgd2lsbApzcGFuIElOQ0xVREUtQUxMIGRheXMu ICBMaXNwIHByb2dyYW1zIHNob3VsZCBpbnN0ZWFkIHNwZWNpZnkgTkRBWVMgdG8gY2hhbmdlCnRo ZSBudW1iZXIgb2YgZGF5cy4gIE5EQVlTIGRlZmF1bHRzIHRvIGBvcmctYWdlbmRhLW5kYXlzJy4K ClNUQVJULURBWSBkZWZhdWx0cyB0byBUT0RBWSwgb3IgdG8gdGhlIG1vc3QgcmVjZW50IG1hdGNo IGZvciB0aGUgd2Vla2RheQpnaXZlbiBpbiBgb3JnLWFnZW5kYS1zdGFydC1vbi13ZWVrZGF5Jy4i IHQgbmlsKQoKKGF1dG9sb2FkIChxdW90ZSBvcmctc2VhcmNoLXZpZXcpICJvcmctYWdlbmRhIiAi XApTaG93IGFsbCBlbnRyaWVzIHRoYXQgY29udGFpbiB3b3JkcyBvciByZWd1bGFyIGV4cHJlc3Np b25zLgpJZiB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIHRoZSBzZWFyY2ggc3RyaW5nIGlzIGFuIGFz dGVyaXNrcywKc2VhcmNoIG9ubHkgdGhlIGhlYWRsaW5lcy4KCldpdGggb3B0aW9uYWwgcHJlZml4 IGFyZ3VtZW50IFRPRE8tT05MWSwgb25seSBjb25zaWRlciBlbnRyaWVzIHRoYXQgYXJlClRPRE8g ZW50cmllcy4gIFRoZSBhcmd1bWVudCBTVFJJTkcgY2FuIGJlIHVzZWQgdG8gcGFzcyBhIGRlZmF1 bHQgc2VhcmNoCnN0cmluZyBpbnRvIHRoaXMgZnVuY3Rpb24uICBJZiBFRElULUFUIGlzIG5vbi1u aWwsIGl0IG1lYW5zIHRoYXQgdGhlCnVzZXIgc2hvdWxkIGdldCBhIGNoYW5jZSB0byBlZGl0IHRo aXMgc3RyaW5nLCB3aXRoIGN1cnNvciBhdCBwb3NpdGlvbgpFRElULUFULgoKVGhlIHNlYXJjaCBz dHJpbmcgaXMgYnJva2VuIGludG8gXCJ3b3Jkc1wiIGJ5IHNwbGl0dGluZyBhdCB3aGl0ZXNwYWNl LgpUaGUgaW5kaXZpZHVhbCB3b3JkcyBhcmUgdGhlbiBpbnRlcnByZXRlZCBhcyBhIGJvb2xlYW4g ZXhwcmVzc2lvbiB3aXRoCmxvZ2ljYWwgQU5ELiAgV29yZHMgcHJlZml4ZWQgd2l0aCBhIG1pbnVz IG11c3Qgbm90IG9jY3VyIGluIHRoZSBlbnRyeS4KV29yZHMgd2l0aG91dCBhIHByZWZpeCBvciBw cmVmaXhlZCB3aXRoIGEgcGx1cyBtdXN0IG9jY3VyIGluIHRoZSBlbnRyeS4KTWF0Y2hpbmcgaXMg Y2FzZS1pbnNlbnNpdGl2ZSBhbmQgdGhlIHdvcmRzIGFyZSBlbmNsb3NlZCBieSB3b3JkIGRlbGlt aXRlcnMuCgpXb3JkcyBlbmNsb3NlZCBieSBjdXJseSBicmFjZXMgYXJlIGludGVycHJldGVkIGFz IHJlZ3VsYXIgZXhwcmVzc2lvbnMKdGhhdCBtdXN0IG9yIG11c3Qgbm90IG1hdGNoIGluIHRoZSBl bnRyeS4KCklmIHRoZSBzZWFyY2ggc3RyaW5nIHN0YXJ0cyB3aXRoIGFuIGFzdGVyaXNrLCBzZWFy Y2ggb25seSBpbiBoZWFkbGluZXMuCklmIChwb3NzaWJseSBhZnRlciB0aGUgbGVhZGluZyBzdGFy KSB0aGUgc2VhcmNoIHN0cmluZyBzdGFydHMgd2l0aCBhbgpleGNsYW1hdGlvbiBtYXJrLCB0aGlz IGFsc28gbWVhbnMgdG8gbG9vayBhdCBUT0RPIGVudHJpZXMgb25seSwgYW4gZWZmZWN0CnRoYXQg Y2FuIGFsc28gYmUgYWNoaWV2ZWQgd2l0aCBhIHByZWZpeCBhcmd1bWVudC4KClRoaXMgY29tbWFu ZCBzZWFyY2hlcyB0aGUgYWdlbmRhIGZpbGVzLCBhbmQgaW4gYWRkaXRpb24gdGhlIGZpbGVzIGxp c3RlZAppbiBgb3JnLWFnZW5kYS10ZXh0LXNlYXJjaC1leHRyYS1maWxlcycuIiB0IG5pbCkKCihh dXRvbG9hZCAocXVvdGUgb3JnLXRvZG8tbGlzdCkgIm9yZy1hZ2VuZGEiICJcClNob3cgYWxsIFRP RE8gZW50cmllcyBmcm9tIGFsbCBhZ2VuZGEgZmlsZSBpbiBhIHNpbmdsZSBsaXN0LgpUaGUgcHJl Zml4IGFyZyBjYW4gYmUgdXNlZCB0byBzZWxlY3QgYSBzcGVjaWZpYyBUT0RPIGtleXdvcmQgYW5k IGxpbWl0CnRoZSBsaXN0IHRvIHRoZXNlLiAgV2hlbiB1c2luZyBcXFt1bml2ZXJzYWwtYXJndW1l bnRdLCB5b3Ugd2lsbCBiZSBwcm9tcHRlZApmb3IgYSBrZXl3b3JkLiAgQSBudW1lcmljIHByZWZp eCBkaXJlY3RseSBzZWxlY3RzIHRoZSBOdGgga2V5d29yZCBpbgpgb3JnLXRvZG8ta2V5d29yZHMt MScuIiB0IG5pbCkKCihhdXRvbG9hZCAocXVvdGUgb3JnLXRhZ3MtdmlldykgIm9yZy1hZ2VuZGEi ICJcClNob3cgYWxsIGhlYWRsaW5lcyBmb3IgYWxsIGBvcmctYWdlbmRhLWZpbGVzJyBtYXRjaGlu ZyBhIFRBR1MgY3JpdGVyaW9uLgpUaGUgcHJlZml4IGFyZyBUT0RPLU9OTFkgbGltaXRzIHRoZSBz ZWFyY2ggdG8gVE9ETyBlbnRyaWVzLiIgdCBuaWwpCgooYXV0b2xvYWQgKHF1b3RlIG9yZy1hZ2Vu ZGEtbGlzdC1zdHVjay1wcm9qZWN0cykgIm9yZy1hZ2VuZGEiICJcCkNyZWF0ZSBhZ2VuZGEgdmll dyBmb3IgcHJvamVjdHMgdGhhdCBhcmUgc3R1Y2suClN0dWNrIHByb2plY3RzIGFyZSBwcm9qZWN0 IHRoYXQgaGF2ZSBubyBuZXh0IGFjdGlvbnMuICBGb3IgdGhlIGRlZmluaXRpb25zCm9mIHdoYXQg YSBwcm9qZWN0IGlzIGFuZCBob3cgdG8gY2hlY2sgaWYgaXQgc3R1Y2ssIGN1c3RvbWl6ZSB0aGUg dmFyaWFibGUKYG9yZy1zdHVjay1wcm9qZWN0cycuCk1BVENIIGlzIGJlaW5nIGlnbm9yZWQuIiB0 IG5pbCkKCihhdXRvbG9hZCAocXVvdGUgb3JnLWRpYXJ5KSAib3JnLWFnZW5kYSIgIlwKUmV0dXJu IGRpYXJ5IGluZm9ybWF0aW9uIGZyb20gb3JnLWZpbGVzLgpUaGlzIGZ1bmN0aW9uIGNhbiBiZSB1 c2VkIGluIGEgXCJzZXhwXCIgZGlhcnkgZW50cnkgaW4gdGhlIEVtYWNzIGNhbGVuZGFyLgpJdCBh Y2Nlc3NlcyBvcmcgZmlsZXMgYW5kIGV4dHJhY3RzIGluZm9ybWF0aW9uIGZyb20gdGhvc2UgZmls ZXMgdG8gYmUKbGlzdGVkIGluIHRoZSBkaWFyeS4gIFRoZSBmdW5jdGlvbiBhY2NlcHRzIGFyZ3Vt ZW50cyBzcGVjaWZ5aW5nIHdoYXQKaXRlbXMgc2hvdWxkIGJlIGxpc3RlZC4gIFRoZSBmb2xsb3dp bmcgYXJndW1lbnRzIGFyZSBhbGxvd2VkOgoKICAgOnRpbWVzdGFtcCAgICBMaXN0IHRoZSBoZWFk bGluZXMgb2YgaXRlbXMgY29udGFpbmluZyBhIGRhdGUgc3RhbXAgb3IKCQkgZGF0ZSByYW5nZSBt YXRjaGluZyB0aGUgc2VsZWN0ZWQgZGF0ZS4gIERlYWRsaW5lcyB3aWxsCgkJIGFsc28gYmUgbGlz dGVkLCBvbiB0aGUgZXhwaXJhdGlvbiBkYXkuCgogICA6c2V4cCAgICAgICAgIExpc3QgZW50cmll cyByZXN1bHRpbmcgZnJvbSBkaWFyeS1saWtlIHNleHBzLgoKICAgOmRlYWRsaW5lICAgICBMaXN0 IGFueSBkZWFkbGluZXMgcGFzdCBkdWUsIG9yIGR1ZSB3aXRoaW4KCQkgYG9yZy1kZWFkbGluZS13 YXJuaW5nLWRheXMnLiAgVGhlIGxpc3Rpbmcgb2NjdXJzIG9ubHkKCQkgaW4gdGhlIGRpYXJ5IGZv ciAqdG9kYXkqLCBub3QgYXQgYW55IG90aGVyIGRhdGUuICBJZgoJCSBhbiBlbnRyeSBpcyBtYXJr ZWQgRE9ORSwgaXQgaXMgbm8gbG9uZ2VyIGxpc3RlZC4KCiAgIDpzY2hlZHVsZWQgICAgTGlzdCBh bGwgaXRlbXMgd2hpY2ggYXJlIHNjaGVkdWxlZCBmb3IgdGhlIGdpdmVuIGRhdGUuCgkJIFRoZSBk aWFyeSBmb3IgKnRvZGF5KiBhbHNvIGNvbnRhaW5zIGl0ZW1zIHdoaWNoIHdlcmUKCQkgc2NoZWR1 bGVkIGVhcmxpZXIgYW5kIGFyZSBub3QgeWV0IG1hcmtlZCBET05FLgoKICAgOnRvZG8gICAgICAg ICBMaXN0IGFsbCBUT0RPIGl0ZW1zIGZyb20gdGhlIG9yZy1maWxlLiAgVGhpcyBtYXkgYmUgYQoJ CSBsb25nIGxpc3QgLSBzbyB0aGlzIGlzIG5vdCB0dXJuZWQgb24gYnkgZGVmYXVsdC4KCQkgTGlr ZSBkZWFkbGluZXMsIHRoZXNlIGVudHJpZXMgb25seSBzaG93IHVwIGluIHRoZQoJCSBkaWFyeSBm b3IgKnRvZGF5Kiwgbm90IGF0IGFueSBvdGhlciBkYXRlLgoKVGhlIGNhbGwgaW4gdGhlIGRpYXJ5 IGZpbGUgc2hvdWxkIGxvb2sgbGlrZSB0aGlzOgoKICAgJiUlKG9yZy1kaWFyeSkgfi9wYXRoL3Rv L3NvbWUvb3JnZmlsZS5vcmcKClVzZSBhIHNlcGFyYXRlIGxpbmUgZm9yIGVhY2ggb3JnIGZpbGUg dG8gY2hlY2suICBPciwgaWYgeW91IG9taXQgdGhlIGZpbGUgbmFtZSwKYWxsIGZpbGVzIGxpc3Rl ZCBpbiBgb3JnLWFnZW5kYS1maWxlcycgd2lsbCBiZSBjaGVja2VkIGF1dG9tYXRpY2FsbHk6Cgog ICAmJSUob3JnLWRpYXJ5KQoKSWYgeW91IGRvbid0IGdpdmUgYW55IGFyZ3VtZW50cyAoYXMgaW4g dGhlIGV4YW1wbGUgYWJvdmUpLCB0aGUgZGVmYXVsdAphcmd1bWVudHMgKDpkZWFkbGluZSA6c2No ZWR1bGVkIDp0aW1lc3RhbXAgOnNleHApIGFyZSB1c2VkLgpTbyB0aGUgZXhhbXBsZSBhYm92ZSBt YXkgYWxzbyBiZSB3cml0dGVuIGFzCgogICAmJSUob3JnLWRpYXJ5IDpkZWFkbGluZSA6dGltZXN0 YW1wIDpzZXhwIDpzY2hlZHVsZWQpCgpUaGUgZnVuY3Rpb24gZXhwZWN0cyB0aGUgbGlzcCB2YXJp YWJsZXMgYGVudHJ5JyBhbmQgYGRhdGUnIHRvIGJlIHByb3ZpZGVkCmJ5IHRoZSBjYWxsZXIsIGJl Y2F1c2UgdGhpcyBpcyBob3cgdGhlIGNhbGVuZGFyIHdvcmtzLiAgRG9uJ3QgdXNlIHRoaXMKZnVu Y3Rpb24gZnJvbSBhIHByb2dyYW0gLSB1c2UgYG9yZy1hZ2VuZGEtZ2V0LWRheS1lbnRyaWVzJyBp bnN0ZWFkLiIgbmlsIG5pbCkKCihhdXRvbG9hZCAocXVvdGUgb3JnLWFnZW5kYS1jaGVjay1mb3It dGltZXN0YW1wLWFzLXJlYXNvbi10by1pZ25vcmUtdG9kby1pdGVtKSAib3JnLWFnZW5kYSIgIlwK RG8gd2UgaGF2ZSBhIHJlYXNvbiB0byBpZ25vcmUgdGhpcyB0b2RvIGVudHJ5IGJlY2F1c2UgaXQg aGFzIGEgdGltZSBzdGFtcD8iIG5pbCBuaWwpCgooYXV0b2xvYWQgKHF1b3RlIG9yZy1jYWxlbmRh ci1nb3RvLWFnZW5kYSkgIm9yZy1hZ2VuZGEiICJcCkNvbXB1dGUgdGhlIE9yZy1tb2RlIGFnZW5k YSBmb3IgdGhlIGNhbGVuZGFyIGRhdGUgZGlzcGxheWVkIGF0IHRoZSBjdXJzb3IuClRoaXMgaXMg YSBjb21tYW5kIHRoYXQgaGFzIHRvIGJlIGluc3RhbGxlZCBpbiBgY2FsZW5kYXItbW9kZS1tYXAn LiIgdCBuaWwpCgooYXV0b2xvYWQgKHF1b3RlIG9yZy1hZ2VuZGEtdG8tYXBwdCkgIm9yZy1hZ2Vu ZGEiICJcCkFjdGl2YXRlIGFwcG9pbnRtZW50cyBmb3VuZCBpbiBgb3JnLWFnZW5kYS1maWxlcycu CldpdGggYSBcXFt1bml2ZXJzYWwtYXJndW1lbnRdIHByZWZpeCwgcmVmcmVzaCB0aGUgbGlzdCBv ZgphcHBvaW50bWVudHMuCgpJZiBGSUxURVIgaXMgdCwgaW50ZXJhY3RpdmVseSBwcm9tcHQgdGhl IHVzZXIgZm9yIGEgcmVndWxhcgpleHByZXNzaW9uLCBhbmQgZmlsdGVyIG91dCBlbnRyaWVzIHRo YXQgZG9uJ3QgbWF0Y2ggaXQuCgpJZiBGSUxURVIgaXMgYSBzdHJpbmcsIHVzZSB0aGlzIHN0cmlu ZyBhcyBhIHJlZ3VsYXIgZXhwcmVzc2lvbgpmb3IgZmlsdGVyaW5nIGVudHJpZXMgb3V0LgoKRklM VEVSIGNhbiBhbHNvIGJlIGFuIGFsaXN0IHdpdGggdGhlIGNhciBvZiBlYWNoIGNlbGwgYmVpbmcK ZWl0aGVyICdoZWFkbGluZSBvciAnY2F0ZWdvcnkuICBGb3IgZXhhbXBsZToKCiAgJygoaGVhZGxp bmUgXCJJTVBPUlRBTlRcIikKICAgIChjYXRlZ29yeSBcIldvcmtcIikpCgp3aWxsIG9ubHkgYWRk IGhlYWRsaW5lcyBjb250YWluaW5nIElNUE9SVEFOVCBvciBoZWFkbGluZXMKYmVsb25naW5nIHRv IHRoZSBcIldvcmtcIiBjYXRlZ29yeS4iIHQgbmlsKQoKOzs7KioqCgwKOzs7IyMjIChhdXRvbG9h ZHMgKG9yZy1hdHRhY2gpICJvcmctYXR0YWNoIiAibGlzcC9vcmctYXR0YWNoLmVsIgo7Ozs7Ozsg ICgxODg1MCA0ODU1NCkpCjs7OyBHZW5lcmF0ZWQgYXV0b2xvYWRzIGZyb20gbGlzcC9vcmctYXR0 YWNoLmVsCgooYXV0b2xvYWQgKHF1b3RlIG9yZy1hdHRhY2gpICJvcmctYXR0YWNoIiAiXApUaGUg ZGlzcGF0Y2hlciBmb3IgYXR0YWNobWVudCBjb21tYW5kcy4KU2hvd3MgYSBsaXN0IG9mIGNvbW1h bmRzIGFuZCBwcm9tcHRzIGZvciBhbm90aGVyIGtleSB0byBleGVjdXRlIGEgY29tbWFuZC4iIHQg bmlsKQoKOzs7KioqCgwKOzs7IyMjIChhdXRvbG9hZHMgKG9yZy1iYmRiLWFubml2ZXJzYXJpZXMp ICJvcmctYmJkYiIgImxpc3Avb3JnLWJiZGIuZWwiCjs7Ozs7OyAgKDE4ODUwIDQ4NTU0KSkKOzs7 IEdlbmVyYXRlZCBhdXRvbG9hZHMgZnJvbSBsaXNwL29yZy1iYmRiLmVsCgooYXV0b2xvYWQgKHF1 b3RlIG9yZy1iYmRiLWFubml2ZXJzYXJpZXMpICJvcmctYmJkYiIgIlwKRXh0cmFjdCBhbm5pdmVy c2FyaWVzIGZyb20gQkJEQiBmb3IgZGlzcGxheSBpbiB0aGUgYWdlbmRhLiIgbmlsIG5pbCkKCjs7 OyoqKgoMCjs7OyMjIyAoYXV0b2xvYWRzIChvcmctY2xvY2stcGVyc2lzdGVuY2UtaW5zaW51YXRl IG9yZy1nZXQtY2xvY2t0YWJsZSkKOzs7Ozs7ICAib3JnLWNsb2NrIiAibGlzcC9vcmctY2xvY2su ZWwiICgxODg1MCA0ODU1NCkpCjs7OyBHZW5lcmF0ZWQgYXV0b2xvYWRzIGZyb20gbGlzcC9vcmct Y2xvY2suZWwKCihhdXRvbG9hZCAocXVvdGUgb3JnLWdldC1jbG9ja3RhYmxlKSAib3JnLWNsb2Nr IiAiXApHZXQgYSBmb3JtYXR0ZWQgY2xvY2t0YWJsZSB3aXRoIHBhcmFtZXRlcnMgYWNjb3JkaW5n IHRvIFBST1BTLgpUaGUgdGFibGUgaXMgY3JlYXRlZCBpbiBhIHRlbXBvcmFyeSBidWZmZXIsIGZ1 bGx5IGZvcm1hdHRlZCBhbmQKZm9udGlmaWVkLCBhbmQgdGhlbiByZXR1cm5lZC4iIG5pbCBuaWwp CgooYXV0b2xvYWQgKHF1b3RlIG9yZy1jbG9jay1wZXJzaXN0ZW5jZS1pbnNpbnVhdGUpICJvcmct Y2xvY2siICJcClNldCB1cCBob29rcyBmb3IgY2xvY2sgcGVyc2lzdGVuY2UiIG5pbCBuaWwpCgo7 OzsqKioKDAo7OzsjIyMgKGF1dG9sb2FkcyAob3JnLWV4cG9ydC1hcy14b3hvIG9yZy1leHBvcnQt aWNhbGVuZGFyLWNvbWJpbmUtYWdlbmRhLWZpbGVzCjs7Ozs7OyAgb3JnLWV4cG9ydC1pY2FsZW5k YXItYWxsLWFnZW5kYS1maWxlcyBvcmctZXhwb3J0LWljYWxlbmRhci10aGlzLWZpbGUKOzs7Ozs7 ICBvcmctZXhwb3J0LWh0bWxpemUtZ2VuZXJhdGUtY3NzIG9yZy1leHBvcnQtYXMtaHRtbCBvcmct ZXhwb3J0LXJlZ2lvbi1hcy1odG1sCjs7Ozs7OyAgb3JnLXJlcGxhY2UtcmVnaW9uLWJ5LWh0bWwg b3JnLWV4cG9ydC1hcy1odG1sLXRvLWJ1ZmZlciBvcmctZXhwb3J0LWFzLWh0bWwtYmF0Y2gKOzs7 Ozs7ICBvcmctZXhwb3J0LWFzLWh0bWwtYW5kLW9wZW4gb3JnLWluc2VydC1leHBvcnQtb3B0aW9u cy10ZW1wbGF0ZQo7Ozs7OzsgIG9yZy1leHBvcnQtdmlzaWJsZSBvcmctZXhwb3J0LWFzLWFzY2lp IG9yZy1leHBvcnQpICJvcmctZXhwIgo7Ozs7OzsgICJsaXNwL29yZy1leHAuZWwiICgxODg1MCA0 ODU1NSkpCjs7OyBHZW5lcmF0ZWQgYXV0b2xvYWRzIGZyb20gbGlzcC9vcmctZXhwLmVsCgoocHV0 IChxdW90ZSBvcmctZXhwb3J0LWh0bWwtc3R5bGUpIChxdW90ZSBzYWZlLWxvY2FsLXZhcmlhYmxl KSAocXVvdGUgYm9vbGVhbnApKQoKKHB1dCAocXVvdGUgb3JnLWV4cG9ydC1odG1sLXN0eWxlKSAo cXVvdGUgc2FmZS1sb2NhbC12YXJpYWJsZSkgKHF1b3RlIHN0cmluZ3ApKQoKKHB1dCAocXVvdGUg b3JnLWV4cG9ydC1odG1sLXN0eWxlLWV4dHJhKSAocXVvdGUgc2FmZS1sb2NhbC12YXJpYWJsZSkg KHF1b3RlIHN0cmluZ3ApKQoKKGF1dG9sb2FkIChxdW90ZSBvcmctZXhwb3J0KSAib3JnLWV4cCIg IlwKRXhwb3J0IGRpc3BhdGNoZXIgZm9yIE9yZy1tb2RlLgpXaGVuIGBvcmctZXhwb3J0LXJ1bi1p bi1iYWNrZ3JvdW5kJyBpcyBub24tbmlsLCB0cnkgdG8gcnVuIHRoZSBjb21tYW5kCmluIHRoZSBi YWNrZ3JvdW5kLiAgVGhpcyB3aWxsIGJlIGRvbmUgb25seSBmb3IgY29tbWFuZHMgdGhhdCB3cml0 ZQp0byBhIGZpbGUuICBGb3IgZGV0YWlscyBzZWUgdGhlIGRvY3N0cmluZyBvZiBgb3JnLWV4cG9y dC1ydW4taW4tYmFja2dyb3VuZCcuCgpUaGUgcHJlZml4IGFyZ3VtZW50IEFSRyB3aWxsIGJlIHBh c3NlZCB0byB0aGUgZXhwb3J0ZXIuICBIb3dldmVyLCBpZgpBUkcgaXMgYSBkb3VibGUgdW5pdmVy c2FsIHByZWZpeCBgQy11IEMtdScsIHRoYXQgbWVhbnMgdG8gaW52ZXJzZSB0aGUKdmFsdWUgb2Yg YG9yZy1leHBvcnQtcnVuLWluLWJhY2tncm91bmQnLiIgdCBuaWwpCgooYXV0b2xvYWQgKHF1b3Rl IG9yZy1leHBvcnQtYXMtYXNjaWkpICJvcmctZXhwIiAiXApFeHBvcnQgdGhlIG91dGxpbmUgYXMg YSBwcmV0dHkgQVNDSUkgZmlsZS4KSWYgdGhlcmUgaXMgYW4gYWN0aXZlIHJlZ2lvbiwgZXhwb3J0 IG9ubHkgdGhlIHJlZ2lvbi4KVGhlIHByZWZpeCBBUkcgc3BlY2lmaWVzIGhvdyBtYW55IGxldmVs cyBvZiB0aGUgb3V0bGluZSBzaG91bGQgYmVjb21lCnVuZGVybGluZWQgaGVhZGxpbmVzLiAgVGhl IGRlZmF1bHQgaXMgMy4iIHQgbmlsKQoKKGF1dG9sb2FkIChxdW90ZSBvcmctZXhwb3J0LXZpc2li bGUpICJvcmctZXhwIiAiXApDcmVhdGUgYSBjb3B5IG9mIHRoZSB2aXNpYmxlIHBhcnQgb2YgdGhl IGN1cnJlbnQgYnVmZmVyLCBhbmQgZXhwb3J0IGl0LgpUaGUgY29weSBpcyBjcmVhdGVkIGluIGEg dGVtcG9yYXJ5IGJ1ZmZlciBhbmQgcmVtb3ZlZCBhZnRlciB1c2UuClRZUEUgaXMgdGhlIGZpbmFs IGtleSAoYXMgYSBzdHJpbmcpIHRoYXQgYWxzbyBzZWxlY3QgdGhlIGV4cG9ydCBjb21tYW5kIGlu CnRoZSBgQy1jIEMtZScgZXhwb3J0IGRpc3BhdGNoZXIuCkFzIGEgc3BlY2lhbCBjYXNlLCBpZiB0 aGUgeW91IHR5cGUgU1BDIGF0IHRoZSBwcm9tcHQsIHRoZSB0ZW1wb3JhcnkKb3JnLW1vZGUgZmls ZSB3aWxsIG5vdCBiZSByZW1vdmVkIGJ1dCBwcmVzZW50ZWQgdG8geW91IHNvIHRoYXQgeW91IGNh bgpjb250aW51ZSB0byB1c2UgaXQuICBUaGUgcHJlZml4IGFyZyBBUkcgaXMgcGFzc2VkIHRocm91 Z2ggdG8gdGhlIGV4cG9ydGluZwpjb21tYW5kLiIgdCBuaWwpCgooYXV0b2xvYWQgKHF1b3RlIG9y Zy1pbnNlcnQtZXhwb3J0LW9wdGlvbnMtdGVtcGxhdGUpICJvcmctZXhwIiAiXApJbnNlcnQgaW50 byB0aGUgYnVmZmVyIGEgdGVtcGxhdGUgd2l0aCBpbmZvcm1hdGlvbiBmb3IgZXhwb3J0aW5nLiIg dCBuaWwpCgooYXV0b2xvYWQgKHF1b3RlIG9yZy1leHBvcnQtYXMtaHRtbC1hbmQtb3BlbikgIm9y Zy1leHAiICJcCkV4cG9ydCB0aGUgb3V0bGluZSBhcyBIVE1MIGFuZCBpbW1lZGlhdGVseSBvcGVu IGl0IHdpdGggYSBicm93c2VyLgpJZiB0aGVyZSBpcyBhbiBhY3RpdmUgcmVnaW9uLCBleHBvcnQg b25seSB0aGUgcmVnaW9uLgpUaGUgcHJlZml4IEFSRyBzcGVjaWZpZXMgaG93IG1hbnkgbGV2ZWxz IG9mIHRoZSBvdXRsaW5lIHNob3VsZCBiZWNvbWUKaGVhZGxpbmVzLiAgVGhlIGRlZmF1bHQgaXMg My4gIExvd2VyIGxldmVscyB3aWxsIGJlY29tZSBidWxsZXRlZCBsaXN0cy4iIHQgbmlsKQoKKGF1 dG9sb2FkIChxdW90ZSBvcmctZXhwb3J0LWFzLWh0bWwtYmF0Y2gpICJvcmctZXhwIiAiXApDYWxs IGBvcmctZXhwb3J0LWFzLWh0bWwnLCBtYXkgYmUgdXNlZCBpbiBiYXRjaCBwcm9jZXNzaW5nIGFz CmVtYWNzICAgLS1iYXRjaAogICAgICAgIC0tbG9hZD0kSE9NRS9saWIvZW1hY3Mvb3JnLmVsCiAg ICAgICAgLS1ldmFsIFwiKHNldHEgb3JnLWV4cG9ydC1oZWFkbGluZS1sZXZlbHMgMilcIgogICAg ICAgIC0tdmlzaXQ9TXlGaWxlIC0tZnVuY2FsbCBvcmctZXhwb3J0LWFzLWh0bWwtYmF0Y2giIG5p bCBuaWwpCgooYXV0b2xvYWQgKHF1b3RlIG9yZy1leHBvcnQtYXMtaHRtbC10by1idWZmZXIpICJv cmctZXhwIiAiXApDYWxsIGBvcmctZXhwb3J0LWFzLWh0bWxgIHdpdGggb3V0cHV0IHRvIGEgdGVt cG9yYXJ5IGJ1ZmZlci4KTm8gZmlsZSBpcyBjcmVhdGVkLiAgVGhlIHByZWZpeCBBUkcgaXMgcGFz c2VkIHRocm91Z2ggdG8gYG9yZy1leHBvcnQtYXMtaHRtbCcuIiB0IG5pbCkKCihhdXRvbG9hZCAo cXVvdGUgb3JnLXJlcGxhY2UtcmVnaW9uLWJ5LWh0bWwpICJvcmctZXhwIiAiXApBc3N1bWUgdGhl IGN1cnJlbnQgcmVnaW9uIGhhcyBvcmctbW9kZSBzeW50YXgsIGFuZCBjb252ZXJ0IGl0IHRvIEhU TUwuClRoaXMgY2FuIGJlIHVzZWQgaW4gYW55IGJ1ZmZlci4gIEZvciBleGFtcGxlLCB5b3UgY291 bGQgd3JpdGUgYW4KaXRlbWl6ZWQgbGlzdCBpbiBvcmctbW9kZSBzeW50YXggaW4gYW4gSFRNTCBi dWZmZXIgYW5kIHRoZW4gdXNlIHRoaXMKY29tbWFuZCB0byBjb252ZXJ0IGl0LiIgdCBuaWwpCgoo YXV0b2xvYWQgKHF1b3RlIG9yZy1leHBvcnQtcmVnaW9uLWFzLWh0bWwpICJvcmctZXhwIiAiXApD b252ZXJ0IHJlZ2lvbiBmcm9tIEJFRyB0byBFTkQgaW4gb3JnLW1vZGUgYnVmZmVyIHRvIEhUTUwu CklmIHByZWZpeCBhcmcgQk9EWS1PTkxZIGlzIHNldCwgb21pdCBmaWxlIGhlYWRlciwgZm9vdGVy LCBhbmQgdGFibGUgb2YKY29udGVudHMsIGFuZCBvbmx5IHByb2R1Y2UgdGhlIHJlZ2lvbiBvZiBj b252ZXJ0ZWQgdGV4dCwgdXNlZnVsIGZvcgpjdXQtYW5kLXBhc3RlIG9wZXJhdGlvbnMuCklmIEJV RkZFUiBpcyBhIGJ1ZmZlciBvciBhIHN0cmluZywgdXNlL2NyZWF0ZSB0aGF0IGJ1ZmZlciBhcyBh IHRhcmdldApvZiB0aGUgY29udmVydGVkIEhUTUwuICBJZiBCVUZGRVIgaXMgdGhlIHN5bWJvbCBg c3RyaW5nJywgcmV0dXJuIHRoZQpwcm9kdWNlZCBIVE1MIGFzIGEgc3RyaW5nIGFuZCBsZWF2ZSBu b3QgYnVmZmVyIGJlaGluZC4gIEZvciBleGFtcGxlLAphIExpc3AgcHJvZ3JhbSBjb3VsZCBjYWxs IHRoaXMgZnVuY3Rpb24gaW4gdGhlIGZvbGxvd2luZyB3YXk6CgogIChzZXRxIGh0bWwgKG9yZy1l eHBvcnQtcmVnaW9uLWFzLWh0bWwgYmVnIGVuZCB0ICdzdHJpbmcpKQoKV2hlbiBjYWxsZWQgaW50 ZXJhY3RpdmVseSwgdGhlIG91dHB1dCBidWZmZXIgaXMgc2VsZWN0ZWQsIGFuZCBzaG93bgppbiBh IHdpbmRvdy4gIEEgbm9uLWludGVyYWN0aXZlIGNhbGwgd2lsbCBvbmx5IHJldHVybiB0aGUgYnVm ZmVyLiIgdCBuaWwpCgooYXV0b2xvYWQgKHF1b3RlIG9yZy1leHBvcnQtYXMtaHRtbCkgIm9yZy1l eHAiICJcCkV4cG9ydCB0aGUgb3V0bGluZSBhcyBhIHByZXR0eSBIVE1MIGZpbGUuCklmIHRoZXJl IGlzIGFuIGFjdGl2ZSByZWdpb24sIGV4cG9ydCBvbmx5IHRoZSByZWdpb24uICBUaGUgcHJlZml4 CkFSRyBzcGVjaWZpZXMgaG93IG1hbnkgbGV2ZWxzIG9mIHRoZSBvdXRsaW5lIHNob3VsZCBiZWNv bWUKaGVhZGxpbmVzLiAgVGhlIGRlZmF1bHQgaXMgMy4gIExvd2VyIGxldmVscyB3aWxsIGJlY29t ZSBidWxsZXRlZApsaXN0cy4gIFdoZW4gSElEREVOIGlzIG5vbi1uaWwsIGRvbid0IGRpc3BsYXkg dGhlIEhUTUwgYnVmZmVyLgpFWFQtUExJU1QgaXMgYSBwcm9wZXJ0eSBsaXN0IHdpdGggZXh0ZXJu YWwgcGFyYW1ldGVycyBvdmVycmlkaW5nCm9yZy1tb2RlJ3MgZGVmYXVsdCBzZXR0aW5ncywgYnV0 IHN0aWxsIGluZmVyaW9yIHRvIGZpbGUtbG9jYWwKc2V0dGluZ3MuICBXaGVuIFRPLUJVRkZFUiBp cyBub24tbmlsLCBjcmVhdGUgYSBidWZmZXIgd2l0aCB0aGF0Cm5hbWUgYW5kIGV4cG9ydCB0byB0 aGF0IGJ1ZmZlci4gIElmIFRPLUJVRkZFUiBpcyB0aGUgc3ltYm9sCmBzdHJpbmcnLCBkb24ndCBs ZWF2ZSBhbnkgYnVmZmVyIGJlaGluZCBidXQganVzdCByZXR1cm4gdGhlCnJlc3VsdGluZyBIVE1M IGFzIGEgc3RyaW5nLiAgV2hlbiBCT0RZLU9OTFkgaXMgc2V0LCBkb24ndCBwcm9kdWNlCnRoZSBm aWxlIGhlYWRlciBhbmQgZm9vdGVyLCBzaW1wbHkgcmV0dXJuIHRoZSBjb250ZW50IG9mCjxib2R5 Pi4uLjwvYm9keT4sIHdpdGhvdXQgZXZlbiB0aGUgYm9keSB0YWdzIHRoZW1zZWx2ZXMuICBXaGVu ClBVQi1ESVIgaXMgc2V0LCB1c2UgdGhpcyBhcyB0aGUgcHVibGlzaGluZyBkaXJlY3RvcnkuIiB0 IG5pbCkKCihhdXRvbG9hZCAocXVvdGUgb3JnLWV4cG9ydC1odG1saXplLWdlbmVyYXRlLWNzcykg Im9yZy1leHAiICJcCkNyZWF0ZSB0aGUgQ1NTIGZvciBhbGwgZm9udCBkZWZpbml0aW9ucyBpbiB0 aGUgY3VycmVudCBFbWFjcyBzZXNzaW9uLgpVc2UgdGhpcyB0byBjcmVhdGUgZmFjZSBkZWZpbml0 aW9ucyBpbiB5b3VyIENTUyBzdHlsZSBmaWxlIHRoYXQgY2FuIHRoZW4KYmUgdXNlZCBieSBjb2Rl IHNuaXBwZXRzIHRyYW5zZm9ybWVkIGJ5IGh0bWxpemUuClRoaXMgY29tbWFuZCBqdXN0IHByb2R1 Y2VzIGEgYnVmZmVyIHRoYXQgY29udGFpbnMgY2xhc3MgZGVmaW5pdGlvbnMgZm9yIGFsbApmYWNl cyB1c2VkIGluIHRoZSBjdXJyZW50IEVtYWNzIHNlc3Npb24uICBZb3UgY2FuIGNvcHkgYW5kIHBh c3RlIHRoZSBvbmVzIHlvdQpuZWVkIGludG8geW91ciBDU1MgZmlsZS4KCklmIHlvdSB0aGVuIHNl dCBgb3JnLWV4cG9ydC1odG1saXplLW91dHB1dC10eXBlJyB0byBgY3NzJywgY2FsbHMgdG8KdGhl IGZ1bmN0aW9uIGBvcmctZXhwb3J0LWh0bWxpemUtcmVnaW9uLWZvci1wYXN0ZScgd2lsbCBwcm9k dWNlIGNvZGUKdGhhdCB1c2VzIHRoZXNlIHNhbWUgZmFjZSBkZWZpbml0aW9ucy4iIHQgbmlsKQoK KGF1dG9sb2FkIChxdW90ZSBvcmctZXhwb3J0LWljYWxlbmRhci10aGlzLWZpbGUpICJvcmctZXhw IiAiXApFeHBvcnQgY3VycmVudCBmaWxlIGFzIGFuIGlDYWxlbmRhciBmaWxlLgpUaGUgaUNhbGVu ZGFyIGZpbGUgd2lsbCBiZSBsb2NhdGVkIGluIHRoZSBzYW1lIGRpcmVjdG9yeSBhcyB0aGUgT3Jn LW1vZGUKZmlsZSwgYnV0IHdpdGggZXh0ZW5zaW9uIGAuaWNzJy4iIHQgbmlsKQoKKGF1dG9sb2Fk IChxdW90ZSBvcmctZXhwb3J0LWljYWxlbmRhci1hbGwtYWdlbmRhLWZpbGVzKSAib3JnLWV4cCIg IlwKRXhwb3J0IGFsbCBmaWxlcyBpbiBgb3JnLWFnZW5kYS1maWxlcycgdG8gaUNhbGVuZGFyIC5p Y3MgZmlsZXMuCkVhY2ggaUNhbGVuZGFyIGZpbGUgd2lsbCBiZSBsb2NhdGVkIGluIHRoZSBzYW1l IGRpcmVjdG9yeSBhcyB0aGUgT3JnLW1vZGUKZmlsZSwgYnV0IHdpdGggZXh0ZW5zaW9uIGAuaWNz Jy4iIHQgbmlsKQoKKGF1dG9sb2FkIChxdW90ZSBvcmctZXhwb3J0LWljYWxlbmRhci1jb21iaW5l LWFnZW5kYS1maWxlcykgIm9yZy1leHAiICJcCkV4cG9ydCBhbGwgZmlsZXMgaW4gYG9yZy1hZ2Vu ZGEtZmlsZXMnIHRvIGEgc2luZ2xlIGNvbWJpbmVkIGlDYWxlbmRhciBmaWxlLgpUaGUgZmlsZSBp cyBzdG9yZWQgdW5kZXIgdGhlIG5hbWUgYG9yZy1jb21iaW5lZC1hZ2VuZGEtaWNhbGVuZGFyLWZp bGUnLiIgdCBuaWwpCgooYXV0b2xvYWQgKHF1b3RlIG9yZy1leHBvcnQtYXMteG94bykgIm9yZy1l eHAiICJcCkV4cG9ydCB0aGUgb3JnIGJ1ZmZlciBhcyBYT1hPLgpUaGUgWE9YTyBidWZmZXIgaXMg bmFtZWQgKnhveG8tPHNvdXJjZSBidWZmZXIgbmFtZT4qIiB0IG5pbCkKCjs7OyoqKgoMCjs7OyMj IyAoYXV0b2xvYWRzIChvcmctZXhwb3J0LWFzLXBkZi1hbmQtb3BlbiBvcmctZXhwb3J0LWFzLXBk ZiBvcmctZXhwb3J0LWFzLWxhdGV4Cjs7Ozs7OyAgb3JnLWV4cG9ydC1yZWdpb24tYXMtbGF0ZXgg b3JnLXJlcGxhY2UtcmVnaW9uLWJ5LWxhdGV4IG9yZy1leHBvcnQtYXMtbGF0ZXgtdG8tYnVmZmVy Cjs7Ozs7OyAgb3JnLWV4cG9ydC1hcy1sYXRleC1iYXRjaCkgIm9yZy1leHBvcnQtbGF0ZXgiICJs aXNwL29yZy1leHBvcnQtbGF0ZXguZWwiCjs7Ozs7OyAgKDE4ODUwIDQ4NTU1KSkKOzs7IEdlbmVy YXRlZCBhdXRvbG9hZHMgZnJvbSBsaXNwL29yZy1leHBvcnQtbGF0ZXguZWwKCihhdXRvbG9hZCAo cXVvdGUgb3JnLWV4cG9ydC1hcy1sYXRleC1iYXRjaCkgIm9yZy1leHBvcnQtbGF0ZXgiICJcCkNh bGwgYG9yZy1leHBvcnQtYXMtbGF0ZXgnLCBtYXkgYmUgdXNlZCBpbiBiYXRjaCBwcm9jZXNzaW5n LgpGb3IgZXhhbXBsZToKCmVtYWNzICAgLS1iYXRjaAogICAgICAgIC0tbG9hZD0kSE9NRS9saWIv ZW1hY3Mvb3JnLmVsCiAgICAgICAgLS1ldmFsIFwiKHNldHEgb3JnLWV4cG9ydC1oZWFkbGluZS1s ZXZlbHMgMilcIgogICAgICAgIC0tdmlzaXQ9TXlGaWxlIC0tZnVuY2FsbCBvcmctZXhwb3J0LWFz LWxhdGV4LWJhdGNoIiBuaWwgbmlsKQoKKGF1dG9sb2FkIChxdW90ZSBvcmctZXhwb3J0LWFzLWxh dGV4LXRvLWJ1ZmZlcikgIm9yZy1leHBvcnQtbGF0ZXgiICJcCkNhbGwgYG9yZy1leHBvcnQtYXMt bGF0ZXhgIHdpdGggb3V0cHV0IHRvIGEgdGVtcG9yYXJ5IGJ1ZmZlci4KTm8gZmlsZSBpcyBjcmVh dGVkLiAgVGhlIHByZWZpeCBBUkcgaXMgcGFzc2VkIHRocm91Z2ggdG8gYG9yZy1leHBvcnQtYXMt bGF0ZXgnLiIgdCBuaWwpCgooYXV0b2xvYWQgKHF1b3RlIG9yZy1yZXBsYWNlLXJlZ2lvbi1ieS1s YXRleCkgIm9yZy1leHBvcnQtbGF0ZXgiICJcClJlcGxhY2UgdGhlIHJlZ2lvbiBmcm9tIEJFRyB0 byBFTkQgd2l0aCBpdHMgTGFUZVggZXhwb3J0LgpJdCBhc3N1bWVzIHRoZSByZWdpb24gaGFzIGBv cmctbW9kZScgc3ludGF4LCBhbmQgdGhlbiBjb252ZXJ0IGl0IHRvCkxhVGVYLiAgVGhpcyBjYW4g YmUgdXNlZCBpbiBhbnkgYnVmZmVyLiAgRm9yIGV4YW1wbGUsIHlvdSBjb3VsZAp3cml0ZSBhbiBp dGVtaXplZCBsaXN0IGluIGBvcmctbW9kZScgc3ludGF4IGluIGFuIExhVGVYIGJ1ZmZlciBhbmQK dGhlbiB1c2UgdGhpcyBjb21tYW5kIHRvIGNvbnZlcnQgaXQuIiB0IG5pbCkKCihhdXRvbG9hZCAo cXVvdGUgb3JnLWV4cG9ydC1yZWdpb24tYXMtbGF0ZXgpICJvcmctZXhwb3J0LWxhdGV4IiAiXApD b252ZXJ0IHJlZ2lvbiBmcm9tIEJFRyB0byBFTkQgaW4gYG9yZy1tb2RlJyBidWZmZXIgdG8gTGFU ZVguCklmIHByZWZpeCBhcmcgQk9EWS1PTkxZIGlzIHNldCwgb21pdCBmaWxlIGhlYWRlciwgZm9v dGVyLCBhbmQgdGFibGUgb2YKY29udGVudHMsIGFuZCBvbmx5IHByb2R1Y2UgdGhlIHJlZ2lvbiBv ZiBjb252ZXJ0ZWQgdGV4dCwgdXNlZnVsIGZvcgpjdXQtYW5kLXBhc3RlIG9wZXJhdGlvbnMuCklm IEJVRkZFUiBpcyBhIGJ1ZmZlciBvciBhIHN0cmluZywgdXNlL2NyZWF0ZSB0aGF0IGJ1ZmZlciBh cyBhIHRhcmdldApvZiB0aGUgY29udmVydGVkIExhVGVYLiAgSWYgQlVGRkVSIGlzIHRoZSBzeW1i b2wgYHN0cmluZycsIHJldHVybiB0aGUKcHJvZHVjZWQgTGFUZVggYXMgYSBzdHJpbmcgYW5kIGxl YXZlIG5vdCBidWZmZXIgYmVoaW5kLiAgRm9yIGV4YW1wbGUsCmEgTGlzcCBwcm9ncmFtIGNvdWxk IGNhbGwgdGhpcyBmdW5jdGlvbiBpbiB0aGUgZm9sbG93aW5nIHdheToKCiAgKHNldHEgbGF0ZXgg KG9yZy1leHBvcnQtcmVnaW9uLWFzLWxhdGV4IGJlZyBlbmQgdCAnc3RyaW5nKSkKCldoZW4gY2Fs bGVkIGludGVyYWN0aXZlbHksIHRoZSBvdXRwdXQgYnVmZmVyIGlzIHNlbGVjdGVkLCBhbmQgc2hv d24KaW4gYSB3aW5kb3cuICBBIG5vbi1pbnRlcmFjdGl2ZSBjYWxsIHdpbGwgb25seSByZXR1bnIg dGhlIGJ1ZmZlci4iIHQgbmlsKQoKKGF1dG9sb2FkIChxdW90ZSBvcmctZXhwb3J0LWFzLWxhdGV4 KSAib3JnLWV4cG9ydC1sYXRleCIgIlwKRXhwb3J0IGN1cnJlbnQgYnVmZmVyIHRvIGEgTGFUZVgg ZmlsZS4KSWYgdGhlcmUgaXMgYW4gYWN0aXZlIHJlZ2lvbiwgZXhwb3J0IG9ubHkgdGhlIHJlZ2lv bi4gIFRoZSBwcmVmaXgKQVJHIHNwZWNpZmllcyBob3cgbWFueSBsZXZlbHMgb2YgdGhlIG91dGxp bmUgc2hvdWxkIGJlY29tZQpoZWFkbGluZXMuICBUaGUgZGVmYXVsdCBpcyAzLiAgTG93ZXIgbGV2 ZWxzIHdpbGwgYmUgZXhwb3J0ZWQKZGVwZW5kaW5nIG9uIGBvcmctZXhwb3J0LWxhdGV4LWxvdy1s ZXZlbHMnLiAgVGhlIGRlZmF1bHQgaXMgdG8KY29udmVydCB0aGVtIGFzIGRlc2NyaXB0aW9uIGxp c3RzLiAgV2hlbiBISURERU4gaXMgbm9uLW5pbCwgZG9uJ3QKZGlzcGxheSB0aGUgTGFUZVggYnVm ZmVyLiAgRVhULVBMSVNUIGlzIGEgcHJvcGVydHkgbGlzdCB3aXRoCmV4dGVybmFsIHBhcmFtZXRl cnMgb3ZlcnJpZGluZyBvcmctbW9kZSdzIGRlZmF1bHQgc2V0dGluZ3MsIGJ1dApzdGlsbCBpbmZl cmlvciB0byBmaWxlLWxvY2FsIHNldHRpbmdzLiAgV2hlbiBUTy1CVUZGRVIgaXMKbm9uLW5pbCwg Y3JlYXRlIGEgYnVmZmVyIHdpdGggdGhhdCBuYW1lIGFuZCBleHBvcnQgdG8gdGhhdApidWZmZXIu ICBJZiBUTy1CVUZGRVIgaXMgdGhlIHN5bWJvbCBgc3RyaW5nJywgZG9uJ3QgbGVhdmUgYW55CmJ1 ZmZlciBiZWhpbmQgYnV0IGp1c3QgcmV0dXJuIHRoZSByZXN1bHRpbmcgTGFUZVggYXMgYSBzdHJp bmcuCldoZW4gQk9EWS1PTkxZIGlzIHNldCwgZG9uJ3QgcHJvZHVjZSB0aGUgZmlsZSBoZWFkZXIg YW5kIGZvb3RlciwKc2ltcGx5IHJldHVybiB0aGUgY29udGVudCBvZiAIZWdpbntkb2N1bWVudH0u Li4bbmR7ZG9jdW1lbnR9LAp3aXRob3V0IGV2ZW4gdGhlIAhlZ2lue2RvY3VtZW50fSBhbmQgG25k e2RvY3VtZW50fSBjb21tYW5kcy4Kd2hlbiBQVUItRElSIGlzIHNldCwgdXNlIHRoaXMgYXMgdGhl IHB1Ymxpc2hpbmcgZGlyZWN0b3J5LiIgdCBuaWwpCgooYXV0b2xvYWQgKHF1b3RlIG9yZy1leHBv cnQtYXMtcGRmKSAib3JnLWV4cG9ydC1sYXRleCIgIlwKRXhwb3J0IGFzIExhVGVYLCB0aGVuIHBy b2Nlc3MgdGhyb3VnaCB0byBQREYuIiB0IG5pbCkKCihhdXRvbG9hZCAocXVvdGUgb3JnLWV4cG9y dC1hcy1wZGYtYW5kLW9wZW4pICJvcmctZXhwb3J0LWxhdGV4IiAiXApFeHBvcnQgYXMgTGFUZVgs IHRoZW4gcHJvY2VzcyB0aHJvdWdoIHRvIFBERiwgYW5kIG9wZW4uIiB0IG5pbCkKCjs7OyoqKgoM Cjs7OyMjIyAoYXV0b2xvYWRzIChvcmctZm9vdG5vdGUtbm9ybWFsaXplIG9yZy1mb290bm90ZS1h Y3Rpb24pICJvcmctZm9vdG5vdGUiCjs7Ozs7OyAgImxpc3Avb3JnLWZvb3Rub3RlLmVsIiAoMTg4 NTAgNDg1NTUpKQo7OzsgR2VuZXJhdGVkIGF1dG9sb2FkcyBmcm9tIGxpc3Avb3JnLWZvb3Rub3Rl LmVsCgooYXV0b2xvYWQgKHF1b3RlIG9yZy1mb290bm90ZS1hY3Rpb24pICJvcmctZm9vdG5vdGUi ICJcCkRvIHRoZSByaWdodCB0aGluZyBmb3IgZm9vdG5vdGVzLgpXaGVuIGF0IGEgZm9vdG5vdGUg cmVmZXJlbmNlLCBqdW1wIHRvIHRoZSBkZWZpbml0aW9uLiAgV2hlbiBhdCBhIGRlZmluaXRpb24s Cmp1bXAgdG8gdGhlIHJlZmVybmNlcy4gIFdoZW4gbmVpdGhlciBhdCBkZWZpbml0aW9uIG9yIHJl ZmVyZW5jZSwKY3JlYXRlIGEgbmV3IGZvb3Rub3RlLCBpbnRlcmFjdGl2ZWx5LgpXaXRoIHByZWZp eCBhcmcgU1BFQ0lBTCwgb2ZmZXIgYWRkaXRpb25hbCBjb21tYW5kcyBpbiBhIG1lbnUuIiB0IG5p bCkKCihhdXRvbG9hZCAocXVvdGUgb3JnLWZvb3Rub3RlLW5vcm1hbGl6ZSkgIm9yZy1mb290bm90 ZSIgIlwKQ29sbGVjdCB0aGUgZm9vdG5vdGVzIGluIHZhcmlvdXMgZm9ybWF0cyBhbmQgbm9ybWFs aXplIHRoZW0uClRoaXMgZmluZCB0aGUgZGlmZmVyZW50IHNvcnRzIG9mIGZvb3Rub3RlcyBhbGxv d2VkIGluIE9yZywgYW5kCm5vcm1hbGl6ZXMgdGhlbSB0byB0aGUgdXN1YWwgW05dIGZvcm1hdCB0 aGF0IGlzIHVuZGVyc3Rvb2QgYnkgdGhlCk9yZy1tb2RlIGV4cG9ydGVycy4KV2hlbiBTT1JULU9O TFkgaXMgc2V0LCBvbmx5IHNvcnQgdGhlIGZvb3Rub3RlIGRlZmluaXRpb25zIGludG8gdGhlCnJl ZmVyZW5jZWQgc2VxdWVuY2UuIiBuaWwgbmlsKQoKOzs7KioqCgwKOzs7IyMjIChhdXRvbG9hZHMg KG9yZy1pZC1maW5kLWlkLWZpbGUgb3JnLWlkLWZpbmQgb3JnLWlkLWdvdG8gb3JnLWlkLWdldC13 aXRoLW91dGxpbmUtZHJpbGxpbmcKOzs7Ozs7ICBvcmctaWQtZ2V0LXdpdGgtb3V0bGluZS1wYXRo LWNvbXBsZXRpb24gb3JnLWlkLWdldCBvcmctaWQtY29weQo7Ozs7OzsgIG9yZy1pZC1nZXQtY3Jl YXRlKSAib3JnLWlkIiAibGlzcC9vcmctaWQuZWwiICgxODg1MCA0ODU1NSkpCjs7OyBHZW5lcmF0 ZWQgYXV0b2xvYWRzIGZyb20gbGlzcC9vcmctaWQuZWwKCihhdXRvbG9hZCAocXVvdGUgb3JnLWlk LWdldC1jcmVhdGUpICJvcmctaWQiICJcCkNyZWF0ZSBhbiBJRCBmb3IgdGhlIGN1cnJlbnQgZW50 cnkgYW5kIHJldHVybiBpdC4KSWYgdGhlIGVudHJ5IGFscmVhZHkgaGFzIGFuIElELCBqdXN0IHJl dHVybiBpdC4KV2l0aCBvcHRpb25hbCBhcmd1bWVudCBGT1JDRSwgZm9yY2UgdGhlIGNyZWF0aW9u IG9mIGEgbmV3IElELiIgdCBuaWwpCgooYXV0b2xvYWQgKHF1b3RlIG9yZy1pZC1jb3B5KSAib3Jn LWlkIiAiXApDb3B5IHRoZSBJRCBvZiB0aGUgZW50cnkgYXQgcG9pbnQgdG8gdGhlIGtpbGwgcmlu Zy4KQ3JlYXRlIGFuIElEIGlmIG5lY2Vzc2FyeS4iIHQgbmlsKQoKKGF1dG9sb2FkIChxdW90ZSBv cmctaWQtZ2V0KSAib3JnLWlkIiAiXApHZXQgdGhlIElEIHByb3BlcnR5IG9mIHRoZSBlbnRyeSBh dCBwb2ludC1vci1tYXJrZXIgUE9NLgpJZiBQT00gaXMgbmlsLCByZWZlciB0byB0aGUgZW50cnkg YXQgcG9pbnQuCklmIHRoZSBlbnRyeSBkb2VzIG5vdCBoYXZlIGFuIElELCB0aGUgZnVuY3Rpb24g cmV0dXJucyBuaWwuCkhvd2V2ZXIsIHdoZW4gQ1JFQVRFIGlzIG5vbiBuaWwsIGNyZWF0ZSBhbiBJ RCBpZiBub25lIGlzIHByZXNlbnQgYWxyZWFkeS4KUFJFRklYIHdpbGwgYmUgcGFzc2VkIHRocm91 Z2ggdG8gYG9yZy1pZC1uZXcnLgpJbiBhbnkgY2FzZSwgdGhlIElEIG9mIHRoZSBlbnRyeSBpcyBy ZXR1cm5lZC4iIG5pbCBuaWwpCgooYXV0b2xvYWQgKHF1b3RlIG9yZy1pZC1nZXQtd2l0aC1vdXRs aW5lLXBhdGgtY29tcGxldGlvbikgIm9yZy1pZCIgIlwKVXNlIG91dGxpbmUtcGF0aC1jb21wbGV0 aW9uIHRvIHJldHJpZXZlIHRoZSBJRCBvZiBhbiBlbnRyeS4KVEFSR0VUUyBtYXkgYmUgYSBzZXR0 aW5nIGZvciBgb3JnLXJlZmlsZS10YXJnZXRzJyB0byBkZWZpbmUgdGhlIGVsaWdpYmxlCmhlYWRs aW5lcy4gIFdoZW4gb21pdHRlZCwgYWxsIGhlYWRsaW5lcyBpbiBhbGwgYWdlbmRhIGZpbGVzIGFy ZQplbGlnaWJsZS4KSXQgcmV0dXJucyB0aGUgSUQgb2YgdGhlIGVudHJ5LiAgSWYgbmVjZXNzYXJ5 LCB0aGUgSUQgaXMgY3JlYXRlZC4iIG5pbCBuaWwpCgooYXV0b2xvYWQgKHF1b3RlIG9yZy1pZC1n ZXQtd2l0aC1vdXRsaW5lLWRyaWxsaW5nKSAib3JnLWlkIiAiXApVc2UgYW4gb3V0bGluZS1jeWNs aW5nIGludGVyZmFjZSB0byByZXRyaWV2ZSB0aGUgSUQgb2YgYW4gZW50cnkuClRoaXMgb25seSBm aW5kcyBlbnRyaWVzIGluIHRoZSBjdXJyZW50IGJ1ZmZlciwgdXNpbmcgYG9yZy1nZXQtbG9jYXRp b24nLgpJdCByZXR1cm5zIHRoZSBJRCBvZiB0aGUgZW50cnkuICBJZiBuZWNlc3NhcnksIHRoZSBJ RCBpcyBjcmVhdGVkLiIgbmlsIG5pbCkKCihhdXRvbG9hZCAocXVvdGUgb3JnLWlkLWdvdG8pICJv cmctaWQiICJcClN3aXRjaCB0byB0aGUgYnVmZmVyIGNvbnRhaW5pbmcgdGhlIGVudHJ5IHdpdGgg aWQgSUQuCk1vdmUgdGhlIGN1cnNvciB0byB0aGF0IGVudHJ5IGluIHRoYXQgYnVmZmVyLiIgdCBu aWwpCgooYXV0b2xvYWQgKHF1b3RlIG9yZy1pZC1maW5kKSAib3JnLWlkIiAiXApSZXR1cm4gdGhl IGxvY2F0aW9uIG9mIHRoZSBlbnRyeSB3aXRoIHRoZSBpZCBJRC4KVGhlIHJldHVybiB2YWx1ZSBp cyBhIGNvbnMgY2VsbCAoZmlsZS1uYW1lIC4gcG9zaXRpb24pLCBvciBuaWwKaWYgdGhlcmUgaXMg bm8gZW50cnkgd2l0aCB0aGF0IElELgpXaXRoIG9wdGlvbmFsIGFyZ3VtZW50IE1BUktFUlAsIHJl dHVybiB0aGUgcG9zaXRpb24gYXMgYSBuZXcgbWFya2VyLiIgbmlsIG5pbCkKCihhdXRvbG9hZCAo cXVvdGUgb3JnLWlkLWZpbmQtaWQtZmlsZSkgIm9yZy1pZCIgIlwKUXVlcnkgdGhlIGlkIGRhdGFi YXNlIGZvciB0aGUgZmlsZSBpbiB3aGljaCB0aGlzIElEIGlzIGxvY2F0ZWQuIiBuaWwgbmlsKQoK Ozs7KioqCgwKOzs7IyMjIChhdXRvbG9hZHMgKG9yZy1pcmMtc3RvcmUtbGluaykgIm9yZy1pcmMi ICJsaXNwL29yZy1pcmMuZWwiCjs7Ozs7OyAgKDE4ODUwIDQ4NTU1KSkKOzs7IEdlbmVyYXRlZCBh dXRvbG9hZHMgZnJvbSBsaXNwL29yZy1pcmMuZWwKCihhdXRvbG9hZCAocXVvdGUgb3JnLWlyYy1z dG9yZS1saW5rKSAib3JnLWlyYyIgIlwKRGlzcGF0Y2ggdG8gdGhlIGFwcHJvcHJpYXRlIGZ1bmN0 aW9uIHRvIHN0b3JlIGEgbGluayB0byBhbiBJUkMgc2Vzc2lvbi4iIG5pbCBuaWwpCgo7OzsqKioK DAo7OzsjIyMgKGF1dG9sb2FkcyAob3JnLXB1Ymxpc2gtY3VycmVudC1wcm9qZWN0IG9yZy1wdWJs aXNoLWN1cnJlbnQtZmlsZQo7Ozs7OzsgIG9yZy1wdWJsaXNoLWFsbCBvcmctcHVibGlzaCkgIm9y Zy1wdWJsaXNoIiAibGlzcC9vcmctcHVibGlzaC5lbCIKOzs7Ozs7ICAoMTg4NTAgNDg1NTYpKQo7 OzsgR2VuZXJhdGVkIGF1dG9sb2FkcyBmcm9tIGxpc3Avb3JnLXB1Ymxpc2guZWwKCihkZWZhbGlh cyAocXVvdGUgb3JnLXB1Ymxpc2gtcHJvamVjdCkgKHF1b3RlIG9yZy1wdWJsaXNoKSkKCihhdXRv bG9hZCAocXVvdGUgb3JnLXB1Ymxpc2gpICJvcmctcHVibGlzaCIgIlwKUHVibGlzaCBQUk9KRUNU LiIgdCBuaWwpCgooYXV0b2xvYWQgKHF1b3RlIG9yZy1wdWJsaXNoLWFsbCkgIm9yZy1wdWJsaXNo IiAiXApQdWJsaXNoIGFsbCBwcm9qZWN0cy4KV2l0aCBwcmVmaXggYXJndW1lbnQsIGZvcmNlIHB1 Ymxpc2ggYWxsIGZpbGVzLiIgdCBuaWwpCgooYXV0b2xvYWQgKHF1b3RlIG9yZy1wdWJsaXNoLWN1 cnJlbnQtZmlsZSkgIm9yZy1wdWJsaXNoIiAiXApQdWJsaXNoIHRoZSBjdXJyZW50IGZpbGUuCldp dGggcHJlZml4IGFyZ3VtZW50LCBmb3JjZSBwdWJsaXNoIHRoZSBmaWxlLiIgdCBuaWwpCgooYXV0 b2xvYWQgKHF1b3RlIG9yZy1wdWJsaXNoLWN1cnJlbnQtcHJvamVjdCkgIm9yZy1wdWJsaXNoIiAi XApQdWJsaXNoIHRoZSBwcm9qZWN0IGFzc29jaWF0ZWQgd2l0aCB0aGUgY3VycmVudCBmaWxlLgpX aXRoIGEgcHJlZml4IGFyZ3VtZW50LCBmb3JjZSBwdWJsaXNoaW5nIG9mIGFsbCBmaWxlcyBpbgp0 aGUgcHJvamVjdC4iIHQgbmlsKQoKOzs7KioqCgwKOzs7IyMjIChhdXRvbG9hZHMgKG9yZy1wbG90 L2dudXBsb3QpICJvcmctcGxvdCIgImxpc3Avb3JnLXBsb3QuZWwiCjs7Ozs7OyAgKDE4ODUwIDQ4 NTU2KSkKOzs7IEdlbmVyYXRlZCBhdXRvbG9hZHMgZnJvbSBsaXNwL29yZy1wbG90LmVsCgooYXV0 b2xvYWQgKHF1b3RlIG9yZy1wbG90L2dudXBsb3QpICJvcmctcGxvdCIgIlwKUGxvdCB0YWJsZSB1 c2luZyBnbnVwbG90LiBHbnVwbG90IG9wdGlvbnMgY2FuIGJlIHNwZWNpZmllZCB3aXRoIFBBUkFN Uy4KSWYgbm90IGdpdmVuIG9wdGlvbnMgd2lsbCBiZSB0YWtlbiBmcm9tIHRoZSArUExPVApsaW5l IGRpcmVjdGx5IGJlZm9yZSBvciBhZnRlciB0aGUgdGFibGUuIiB0IG5pbCkKCjs7OyoqKgoMCjs7 OyMjIyAoYXV0b2xvYWRzIChvcmctcmVtZW1iZXItaGFuZGxlciBvcmctcmVtZW1iZXIgb3JnLXJl bWVtYmVyLWFwcGx5LXRlbXBsYXRlCjs7Ozs7OyAgb3JnLXJlbWVtYmVyLWFubm90YXRpb24gb3Jn LXJlbWVtYmVyLWluc2ludWF0ZSkgIm9yZy1yZW1lbWJlciIKOzs7Ozs7ICAibGlzcC9vcmctcmVt ZW1iZXIuZWwiICgxODg1MCA0ODU1NikpCjs7OyBHZW5lcmF0ZWQgYXV0b2xvYWRzIGZyb20gbGlz cC9vcmctcmVtZW1iZXIuZWwKCihhdXRvbG9hZCAocXVvdGUgb3JnLXJlbWVtYmVyLWluc2ludWF0 ZSkgIm9yZy1yZW1lbWJlciIgIlwKU2V0dXAgcmVtZW1iZXIuZWwgZm9yIHVzZSB3aXRoIE9yZy1t b2RlLiIgbmlsIG5pbCkKCihhdXRvbG9hZCAocXVvdGUgb3JnLXJlbWVtYmVyLWFubm90YXRpb24p ICJvcmctcmVtZW1iZXIiICJcClJldHVybiBhIGxpbmsgdG8gdGhlIGN1cnJlbnQgbG9jYXRpb24g YXMgYW4gYW5ub3RhdGlvbiBmb3IgcmVtZW1iZXIuZWwuCklmIHlvdSBhcmUgdXNpbmcgT3JnLW1v ZGUgZmlsZXMgYXMgdGFyZ2V0IGZvciBkYXRhIHN0b3JhZ2Ugd2l0aApyZW1lbWJlci5lbCwgdGhl biB0aGUgYW5ub3RhdGlvbnMgc2hvdWxkIGluY2x1ZGUgYSBsaW5rIGNvbXBhdGlibGUgd2l0aCB0 aGUKY29udmVudGlvbnMgaW4gT3JnLW1vZGUuICBUaGlzIGZ1bmN0aW9uIHJldHVybnMgc3VjaCBh IGxpbmsuIiBuaWwgbmlsKQoKKGF1dG9sb2FkIChxdW90ZSBvcmctcmVtZW1iZXItYXBwbHktdGVt cGxhdGUpICJvcmctcmVtZW1iZXIiICJcCkluaXRpYWxpemUgKnJlbWVtYmVyKiBidWZmZXIgd2l0 aCB0ZW1wbGF0ZSwgaW52b2tlIGBvcmctbW9kZScuClRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIHBs YWNlZCBpbnRvIGByZW1lbWJlci1tb2RlLWhvb2snIGFuZCBpbiBmYWN0IHJlcXVpcmVzCnRvIGJl IHJ1biBmcm9tIHRoYXQgaG9vayB0byBmdW5jdGlvbiBwcm9wZXJseS4iIG5pbCBuaWwpCgooYXV0 b2xvYWQgKHF1b3RlIG9yZy1yZW1lbWJlcikgIm9yZy1yZW1lbWJlciIgIlwKQ2FsbCBgcmVtZW1i ZXInLiAgSWYgdGhpcyBpcyBhbHJlYWR5IGEgcmVtZW1iZXIgYnVmZmVyLCByZS1hcHBseSB0ZW1w bGF0ZS4KSWYgdGhlcmUgaXMgYW4gYWN0aXZlIHJlZ2lvbiwgbWFrZSBzdXJlIHJlbWVtYmVyIHVz ZXMgaXQgYXMgaW5pdGlhbCBjb250ZW50Cm9mIHRoZSByZW1lbWJlciBidWZmZXIuCgpXaGVuIGNh bGxlZCBpbnRlcmFjdGl2ZWx5IHdpdGggYSBgQy11JyBwcmVmaXggYXJndW1lbnQgR09UTywgZG9u J3QgcmVtZW1iZXIKYW55dGhpbmcsIGp1c3QgZ28gdG8gdGhlIGZpbGUvaGVhZGxpbmUgd2hlcmUg dGhlIHNlbGVjdGVkIHRlbXBsYXRlIHVzdWFsbHkKc3RvcmVzIGl0cyBub3Rlcy4gIFdpdGggYSBk b3VibGUgcHJlZml4IGFyZyBgQy11IEMtdScsIGdvIHRvIHRoZSBsYXN0Cm5vdGUgc3RvcmVkIGJ5 IHJlbWVtYmVyLgoKTGlzcCBwcm9ncmFtcyBjYW4gc2V0IE9SRy1GT1JDRS1SRU1FTUJFUi1URU1Q TEFURS1DSEFSIHRvIGEgY2hhcmFjdGVyCmFzc29jaWF0ZWQgd2l0aCBhIHRlbXBsYXRlIGluIGBv cmctcmVtZW1iZXItdGVtcGxhdGVzJy4iIHQgbmlsKQoKKGF1dG9sb2FkIChxdW90ZSBvcmctcmVt ZW1iZXItaGFuZGxlcikgIm9yZy1yZW1lbWJlciIgIlwKU3RvcmUgc3R1ZmYgZnJvbSByZW1lbWJl ci5lbCBpbnRvIGFuIG9yZyBmaWxlLgpXaGVuIHRoZSB0ZW1wbGF0ZSBoYXMgc3BlY2lmaWVkIGEg ZmlsZSBhbmQgYSBoZWFkbGluZSwgdGhlIGVudHJ5IGlzIGZpbGVkCnRoZXJlLCBvciBpbiB0aGUg bG9jYXRpb24gZGVmaW5lZCBieSBgb3JnLWRlZmF1bHQtbm90ZXMtZmlsZScgYW5kCmBvcmctcmVt ZW1iZXItZGVmYXVsdC1oZWFkbGluZScuCgpJZiBubyBkZWZhdWx0cyBoYXZlIGJlZW4gZGVmaW5l ZCwgb3IgaWYgdGhlIGN1cnJlbnQgcHJlZml4IGFyZ3VtZW50CmlzIDEgKHNvIHlvdSBtdXN0IHVz ZSBgQy0xIEMtYyBDLWMnIHRvIGV4aXQgcmVtZW1iZXIpLCBhbiBpbnRlcmFjdGl2ZQpwcm9jZXNz IGlzIHVzZWQgdG8gc2VsZWN0IHRoZSB0YXJnZXQgbG9jYXRpb24uCgpXaGVuIHRoZSBwcmVmaXgg aXMgMCAoaS5lLiB3aGVuIHJlbWVtYmVyIGlzIGV4aXRlZCB3aXRoIGBDLTAgQy1jIEMtYycpLAp0 aGUgZW50cnkgaXMgZmlsZWQgdG8gdGhlIHNhbWUgbG9jYXRpb24gYXMgdGhlIHByZXZpb3VzIG5v dGUuCgpXaGVuIHRoZSBwcmVmaXggaXMgMiAoaS5lLiB3aGVuIHJlbWVtYmVyIGlzIGV4aXRlZCB3 aXRoIGBDLTIgQy1jIEMtYycpLAp0aGUgZW50cnkgaXMgZmlsZWQgYXMgYSBzdWJlbnRyeSBvZiB0 aGUgZW50cnkgd2hlcmUgdGhlIGNsb2NrIGlzCmN1cnJlbnRseSBydW5uaW5nLgoKV2hlbiBgQy11 JyBoYXMgYmVlbiB1c2VkIGFzIHByZWZpeCBhcmd1bWVudCwgdGhlIG5vdGUgaXMgc3RvcmVkIGFu ZCBlbWFjcwptb3ZlcyBwb2ludCB0byB0aGUgbmV3IGxvY2F0aW9uIG9mIHRoZSBub3RlLCBzbyB0 aGF0IGVkaXRpbmcgY2FuIGJlCmNvbnRpbnVlZCB0aGVyZSAoc2ltaWxhciB0byBpbnNlcnRpbmcg XCIlJlwiIGludG8gdGhlIHRlbXBsYXRlKS4KCkJlZm9yZSBzdG9yaW5nIHRoZSBub3RlLCB0aGUg ZnVuY3Rpb24gZW5zdXJlcyB0aGF0IHRoZSB0ZXh0IGhhcyBhbgpvcmctbW9kZS1zdHlsZSBoZWFk bGluZSwgaS5lLiBhIGZpcnN0IGxpbmUgdGhhdCBzdGFydHMgd2l0aAphIFwiKlwiLiAgSWYgbm90 LCBhIGhlYWRsaW5lIGlzIGNvbnN0cnVjdGVkIGZyb20gdGhlIGN1cnJlbnQgZGF0ZSBhbmQKc29t ZSBhZGRpdGlvbmFsIGRhdGEuCgpJZiB0aGUgdmFyaWFibGUgYG9yZy1hZGFwdC1pbmRlbnRhdGlv bicgaXMgbm9uLW5pbCwgdGhlIGVudGlyZSB0ZXh0IGlzCmFsc28gaW5kZW50ZWQgc28gdGhhdCBp dCBzdGFydHMgaW4gdGhlIHNhbWUgY29sdW1uIGFzIHRoZSBoZWFkbGluZQpcKGkuZS4gYWZ0ZXIg dGhlIHN0YXJzKS4KClNlZSBhbHNvIHRoZSB2YXJpYWJsZSBgb3JnLXJldmVyc2Utbm90ZS1vcmRl cicuIiBuaWwgbmlsKQoKOzs7KioqCgwKOzs7IyMjIChhdXRvbG9hZHMgKG9yZy10YWJsZS10by1s aXNwIG9yZ3RibC1tb2RlIHR1cm4tb24tb3JndGJsKQo7Ozs7OzsgICJvcmctdGFibGUiICJsaXNw L29yZy10YWJsZS5lbCIgKDE4ODUwIDQ4NTU2KSkKOzs7IEdlbmVyYXRlZCBhdXRvbG9hZHMgZnJv bSBsaXNwL29yZy10YWJsZS5lbAoKKGF1dG9sb2FkIChxdW90ZSB0dXJuLW9uLW9yZ3RibCkgIm9y Zy10YWJsZSIgIlwKVW5jb25kaXRpb25hbGx5IHR1cm4gb24gYG9yZ3RibC1tb2RlJy4iIG5pbCBu aWwpCgooYXV0b2xvYWQgKHF1b3RlIG9yZ3RibC1tb2RlKSAib3JnLXRhYmxlIiAiXApUaGUgYG9y Zy1tb2RlJyB0YWJsZSBlZGl0b3IgYXMgYSBtaW5vciBtb2RlIGZvciB1c2UgaW4gb3RoZXIgbW9k ZXMuIiB0IG5pbCkKCihhdXRvbG9hZCAocXVvdGUgb3JnLXRhYmxlLXRvLWxpc3ApICJvcmctdGFi bGUiICJcCkNvbnZlcnQgdGhlIHRhYmxlIGF0IHBvaW50IHRvIGEgTGlzcCBzdHJ1Y3R1cmUuClRo ZSBzdHJ1Y3R1cmUgd2lsbCBiZSBhIGxpc3QuICBFYWNoIGl0ZW0gaXMgZWl0aGVyIHRoZSBzeW1i b2wgYGhsaW5lJwpmb3IgYSBob3Jpem9udGFsIHNlcGFyYXRvciBsaW5lLCBvciBhIGxpc3Qgb2Yg ZmllbGQgdmFsdWVzIGFzIHN0cmluZ3MuClRoZSB0YWJsZSBpcyB0YWtlbiBmcm9tIHRoZSBwYXJh bWV0ZXIgVFhULCBvciBmcm9tIHRoZSBidWZmZXIgYXQgcG9pbnQuIiBuaWwgbmlsKQoKOzs7Kioq CgwKOzs7IyMjIChhdXRvbG9hZHMgKG9yZy10aW1lci1pdGVtIG9yZy10aW1lci1jaGFuZ2UtdGlt ZXMtaW4tcmVnaW9uCjs7Ozs7OyAgb3JnLXRpbWVyIG9yZy10aW1lci1zdGFydCkgIm9yZy10aW1l ciIgImxpc3Avb3JnLXRpbWVyLmVsIgo7Ozs7OzsgICgxODg1MCA0ODU1NikpCjs7OyBHZW5lcmF0 ZWQgYXV0b2xvYWRzIGZyb20gbGlzcC9vcmctdGltZXIuZWwKCihhdXRvbG9hZCAocXVvdGUgb3Jn LXRpbWVyLXN0YXJ0KSAib3JnLXRpbWVyIiAiXApTZXQgdGhlIHN0YXJ0aW5nIHRpbWUgZm9yIHRo ZSByZWxhdGl2ZSB0aW1lciB0byBub3cuCldoZW4gY2FsbGVkIHdpdGggcHJlZml4IGFyZ3VtZW50 IE9GRlNFVCwgcHJvbXB0IHRoZSB1c2VyIGZvciBhbiBvZmZzZXQgdGltZSwKd2l0aCB0aGUgZGVm YXVsdCB0YWtlbiBmcm9tIGEgdGltZXIgc3RhbXAgYXQgcG9pbnQsIGlmIGFueS4KSWYgT0ZGU0VU IGlzIGEgc3RyaW5nIG9yIGFuIGludGVnZXIsIGl0IGlzIGRpcmVjdGx5IHRha2VuIHRvIGJlIHRo ZSBvZmZzZXQKd2l0aG91dCB1c2VyIGludGVyYWN0aW9uLgpXaGVuIGNhbGxlZCB3aXRoIGEgZG91 YmxlIHByZWZpeCBhcmcsIGFsbCB0aW1lciBzdHJpbmdzIGluIHRoZSBhY3RpdmUKcmVnaW9uIHdp bGwgYmUgc2hpZnRlZCBieSBhIHNwZWNpZmljIGFtb3VudC4gIFlvdSB3aWxsIGJlIHByb21wdGVk IGZvcgp0aGUgYW1vdW50LCB3aXRoIHRoZSBkZWZhdWx0IHRvIG1ha2UgdGhlIGZpcnN0IHRpbWVy IHN0cmluZyBpbgp0aGUgcmVnaW9uIDA6MDA6MDAuIiB0IG5pbCkKCihhdXRvbG9hZCAocXVvdGUg b3JnLXRpbWVyKSAib3JnLXRpbWVyIiAiXApJbnNlcnQgYSBIOk1NOlNTIHN0cmluZyBmcm9tIHRo ZSB0aW1lciBpbnRvIHRoZSBidWZmZXIuClRoZSBmaXJzdCB0aW1lIHRoaXMgY29tbWFuZCBpcyB1 c2VkLCB0aGUgdGltZXIgaXMgc3RhcnRlZC4gIFdoZW4gdXNlZCB3aXRoCmEgYEMtdScgcHJlZml4 LCBmb3JjZSByZXN0YXJ0aW5nIHRoZSB0aW1lci4KV2hlbiB1c2VkIHdpdGggYSBkb3VibGUgcHJl Zml4IGFyZyBgQy11IEMtdScsIGNoYW5nZSBhbGwgdGhlIHRpbWVyIHN0cmluZwppbiB0aGUgcmVn aW9uIGJ5IGEgZml4ZWQgYW1vdW50LiAgVGhpcyBjYW4gYmUgdXNlZCB0byByZWNhbGlicmF0ZSBh IHRpbWVyCnRoYXQgd2FzIG5vdCBzdGFydGVkIGF0IHRoZSBjb3JyZWN0IG1vbWVudC4iIHQgbmls KQoKKGF1dG9sb2FkIChxdW90ZSBvcmctdGltZXItY2hhbmdlLXRpbWVzLWluLXJlZ2lvbikgIm9y Zy10aW1lciIgIlwKQ2hhbmdlIGFsbCBoOm1tOnNzIHRpbWUgaW4gcmVnaW9uIGJ5IGEgREVMVEEu IiB0IG5pbCkKCihhdXRvbG9hZCAocXVvdGUgb3JnLXRpbWVyLWl0ZW0pICJvcmctdGltZXIiICJc Ckluc2VydCBhIGRlc2NyaXB0aW9uLXR5cGUgaXRlbSB3aXRoIHRoZSBjdXJyZW50IHRpbWVyIHZh bHVlLiIgdCBuaWwpCgo7OzsqKioKCihwcm92aWRlIChxdW90ZSBvcmctaW5zdGFsbCkpCg== --001636c923d779403e0463abe7a8 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Emacs-orgmode mailing list Remember: use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode --001636c923d779403e0463abe7a8--