From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: martin rudalics Newsgroups: gmane.emacs.bugs Subject: bug#11939: 24.1; `save-buffers-kill-emacs' loses minibuffer focus when it calls `list-processes' Date: Sat, 14 Jul 2012 15:27:01 +0200 Message-ID: <500173A5.3040608@gmx.at> References: NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------070601080905090706060001" X-Trace: dough.gmane.org 1342272450 20814 80.91.229.3 (14 Jul 2012 13:27:30 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Sat, 14 Jul 2012 13:27:30 +0000 (UTC) Cc: 11939@debbugs.gnu.org To: Drew Adams Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Sat Jul 14 15:27:29 2012 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1Sq2Nc-000113-Cb for geb-bug-gnu-emacs@m.gmane.org; Sat, 14 Jul 2012 15:27:28 +0200 Original-Received: from localhost ([::1]:42639 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Sq2Nb-0006H7-AF for geb-bug-gnu-emacs@m.gmane.org; Sat, 14 Jul 2012 09:27:27 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:39388) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Sq2NY-0006H2-Bk for bug-gnu-emacs@gnu.org; Sat, 14 Jul 2012 09:27:25 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Sq2NT-0002ic-My for bug-gnu-emacs@gnu.org; Sat, 14 Jul 2012 09:27:24 -0400 Original-Received: from debbugs.gnu.org ([140.186.70.43]:59125) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Sq2NT-0002iY-Il for bug-gnu-emacs@gnu.org; Sat, 14 Jul 2012 09:27:19 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.72) (envelope-from ) id 1Sq2T0-00080m-Fs for bug-gnu-emacs@gnu.org; Sat, 14 Jul 2012 09:33:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: martin rudalics Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 14 Jul 2012 13:33:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 11939 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 11939-submit@debbugs.gnu.org id=B11939.134227274530746 (code B ref 11939); Sat, 14 Jul 2012 13:33:02 +0000 Original-Received: (at 11939) by debbugs.gnu.org; 14 Jul 2012 13:32:25 +0000 Original-Received: from localhost ([127.0.0.1]:40438 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Sq2SO-0007zq-Do for submit@debbugs.gnu.org; Sat, 14 Jul 2012 09:32:25 -0400 Original-Received: from mailout-de.gmx.net ([213.165.64.23]:59094) by debbugs.gnu.org with smtp (Exim 4.72) (envelope-from ) id 1Sq2SK-0007zg-MS for 11939@debbugs.gnu.org; Sat, 14 Jul 2012 09:32:22 -0400 Original-Received: (qmail invoked by alias); 14 Jul 2012 13:26:34 -0000 Original-Received: from 62-47-47-202.adsl.highway.telekom.at (EHLO [62.47.47.202]) [62.47.47.202] by mail.gmx.net (mp017) with SMTP; 14 Jul 2012 15:26:34 +0200 X-Authenticated: #14592706 X-Provags-ID: V01U2FsdGVkX19GJ+UIcTBGszGm2MLzcpTQAUdYTL21bmmm966/kr 3w58CdD5QrAlBP In-Reply-To: X-Y-GMX-Trusted: 0 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 2) X-Received-From: 140.186.70.43 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.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:61935 Archived-At: This is a multi-part message in MIME format. --------------070601080905090706060001 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit > IF you use a standalone minibuffer frame, AND the popped up buffer is > special-display (e.g. because of `special-display-regexps'), AND you are > on MS Windows (which automatically shifts the focus to a new frame that > it creates), THEN: > > 1. When you try to exit Emacs with active processes, Emacs pops up a new > frame for buffer `*Process List*' and asks you about killing them. > > 2. But the minibuffer frame no longer has the focus! So when you type > your answer (e.g. "yes") Emacs tries to insert it as text in buffer > `*Process List*'. Poor Emacs. What is your value of `minibuffer-auto-raise'? Maybe `yes-or-no-p' should do `select-frame-set-input-focus' in your case. What happens usually when you ask a `yes-or-no-p' question in a non-minibuffer frame? > Please do something to fix this. I'm afraid, most people here can't reproduce your problem. We probably have to invent some new option to handle it. In any case, we'd have to investigate the underlying problem. > For inspiration, perhaps look to > `dired-mark-pop-up' which does something similar but gets it right. See > perhaps `dired-pop-to-buffer'. > > Better would be to fix this ask-for-input-after-popping-up-some-info > problem generally, obviously. But a fix for just this particular > query will be better than nothing. > > At least Dired DTRT now wrt focus - that's already something. > > Of course, for Dired I still have to modify `dired-mark-pop-up' anyway, to have > it delete the window or frame popped up, afterward, and bury its buffer. See > bug #7533 - a patch was provided for this but AFAIK Emacs Dev has never applied > it. Try to load the attached file and tell me which problems you see. Thanks, martin --------------070601080905090706060001 Content-Type: application/emacs-lisp; name="with-temp-buffer-window.el" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="with-temp-buffer-window.el" Ozs7IEF1dG9tYXRpYyByZXNpemluZyBvZiB0ZW1wb3JhcnkgYnVmZmVycy4NCihkZWZjdXN0 b20gdGVtcC1idWZmZXItbWF4LWhlaWdodA0KICAobGFtYmRhIChidWZmZXIpDQogICAgKGlm IChlcSAoc2VsZWN0ZWQtd2luZG93KSAoZnJhbWUtcm9vdC13aW5kb3cpKQ0KCSgvICh4LWRp c3BsYXktcGl4ZWwtaGVpZ2h0KSAoZnJhbWUtY2hhci1oZWlnaHQpIDIpDQogICAgICAoLyAo LSAoZnJhbWUtaGVpZ2h0KSAyKSAyKSkpDQogICJNYXhpbXVtIGhlaWdodCBvZiBhIHdpbmRv dyBkaXNwbGF5aW5nIGEgdGVtcG9yYXJ5IGJ1ZmZlci4NClRoaXMgaXMgZWZmZWN0aXZlIG9u bHkgd2hlbiBUZW1wIEJ1ZmZlciBSZXNpemUgbW9kZSBpcyBlbmFibGVkLg0KVGhlIHZhbHVl IGlzIHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gbGluZXMpIHdoaWNoDQpgcmVzaXplLXRlbXAt YnVmZmVyLXdpbmRvdycgd2lsbCBnaXZlIHRvIGEgd2luZG93IGRpc3BsYXlpbmcgYQ0KdGVt cG9yYXJ5IGJ1ZmZlci4gIEl0IGNhbiBhbHNvIGJlIGEgZnVuY3Rpb24gdG8gYmUgY2FsbGVk IHRvDQpjaG9vc2UgdGhlIGhlaWdodCBmb3Igc3VjaCBhIGJ1ZmZlci4gIEl0IGdldHMgb25l IGFyZ3VtZW50LCB0aGUNCmJ1ZmZlciwgYW5kIHNob3VsZCByZXR1cm4gYSBwb3NpdGl2ZSBp bnRlZ2VyLiAgQXQgdGhlIHRpbWUgdGhlDQpmdW5jdGlvbiBpcyBjYWxsZWQsIHRoZSB3aW5k b3cgdG8gYmUgcmVzaXplZCBpcyBzZWxlY3RlZC4iDQogIDp0eXBlICcoY2hvaWNlIGludGVn ZXIgZnVuY3Rpb24pDQogIDpncm91cCAnaGVscA0KICA6dmVyc2lvbiAiMjQuMiIpDQoNCihk ZWZjdXN0b20gdGVtcC1idWZmZXItcmVzaXplLWZyYW1lcyBuaWwNCiAgIk5vbi1uaWwgbWVh bnMgYHRlbXAtYnVmZmVyLXJlc2l6ZS1tb2RlJyBjYW4gcmVzaXplIGZyYW1lcy4NCkEgZnJh bWUgY2FuIGJlIHJlc2l6ZWQgaWYgYW5kIG9ubHkgaWYgaXRzIHJvb3Qgd2luZG93IGlzIGEg bGl2ZQ0Kd2luZG93LiAgVGhlIGhlaWdodCBvZiB0aGUgcm9vdCB3aW5kb3cgaXMgc3ViamVj dCB0byB0aGUgdmFsdWVzIG9mDQpgdGVtcC1idWZmZXItbWF4LWhlaWdodCcgYW5kIGB3aW5k b3ctbWluLWhlaWdodCcuIg0KICA6dHlwZSAnYm9vbGVhbg0KICA6dmVyc2lvbiAiMjQuMiIN CiAgOmdyb3VwICdoZWxwKQ0KDQooZGVmaW5lLW1pbm9yLW1vZGUgdGVtcC1idWZmZXItcmVz aXplLW1vZGUNCiAgIlRvZ2dsZSBhdXRvLXNocmlua2luZyB0ZW1wIGJ1ZmZlciB3aW5kb3dz IChUZW1wIEJ1ZmZlciBSZXNpemUgbW9kZSkuDQpXaXRoIGEgcHJlZml4IGFyZ3VtZW50IEFS RywgZW5hYmxlIFRlbXAgQnVmZmVyIFJlc2l6ZSBtb2RlIGlmIEFSRw0KaXMgcG9zaXRpdmUs IGFuZCBkaXNhYmxlIGl0IG90aGVyd2lzZS4gIElmIGNhbGxlZCBmcm9tIExpc3AsDQplbmFi bGUgdGhlIG1vZGUgaWYgQVJHIGlzIG9taXR0ZWQgb3IgbmlsLg0KDQpXaGVuIFRlbXAgQnVm ZmVyIFJlc2l6ZSBtb2RlIGlzIGVuYWJsZWQsIHRoZSB3aW5kb3dzIGluIHdoaWNoIHdlDQpz aG93IGEgdGVtcG9yYXJ5IGJ1ZmZlciBhcmUgYXV0b21hdGljYWxseSByZWR1Y2VkIGluIGhl aWdodCB0bw0KZml0IHRoZSBidWZmZXIncyBjb250ZW50cywgYnV0IG5ldmVyIG1vcmUgdGhh bg0KYHRlbXAtYnVmZmVyLW1heC1oZWlnaHQnIG5vciBsZXNzIHRoYW4gYHdpbmRvdy1taW4t aGVpZ2h0Jy4NCg0KVGhpcyBtb2RlIGlzIHVzZWQgYnkgYGhlbHAnLCBgYXByb3BvcycgYW5k IGBjb21wbGV0aW9uJyBidWZmZXJzLA0KYW5kIHNvbWUgb3RoZXJzLiINCiAgOmdsb2JhbCB0 IDpncm91cCAnaGVscA0KICAoaWYgdGVtcC1idWZmZXItcmVzaXplLW1vZGUNCiAgICAgIDs7 IGBoZWxwLW1ha2UteHJlZnMnIG1heSBhZGQgYSBgYmFjaycgYnV0dG9uIGFuZCB0aHVzIGlu Y3JlYXNlIHRoZQ0KICAgICAgOzsgdGV4dCBzaXplLCBzbyBgcmVzaXplLXRlbXAtYnVmZmVy LXdpbmRvdycgbXVzdCBiZSBydW4gKmFmdGVyKiBpdC4NCiAgICAgIChhZGQtaG9vayAndGVt cC1idWZmZXItc2hvdy1ob29rICdyZXNpemUtdGVtcC1idWZmZXItd2luZG93ICdhcHBlbmQp DQogICAgKHJlbW92ZS1ob29rICd0ZW1wLWJ1ZmZlci1zaG93LWhvb2sgJ3Jlc2l6ZS10ZW1w LWJ1ZmZlci13aW5kb3cpKSkNCg0KKGRlZnVuIHJlc2l6ZS10ZW1wLWJ1ZmZlci13aW5kb3cg KCZvcHRpb25hbCB3aW5kb3cpDQogICJSZXNpemUgV0lORE9XIHRvIGZpdCBpdHMgY29udGVu dHMuDQpXSU5ET1cgY2FuIGJlIGFueSBsaXZlIHdpbmRvdyBhbmQgZGVmYXVsdHMgdG8gdGhl IHNlbGVjdGVkIG9uZS4NCg0KRG8gbm90IG1ha2UgV0lORE9XIGhpZ2hlciB0aGFuIGB0ZW1w LWJ1ZmZlci1tYXgtaGVpZ2h0JyBub3INCnNtYWxsZXIgdGhhbiBgd2luZG93LW1pbi1oZWln aHQnLiAgRG8gbm90aGluZyBpZiB0aGUgc2VsZWN0ZWQNCndpbmRvdyBpcyBub3QgdmVydGlj YWxseSBjb21iaW5lZCBvciBzb21lIG9mIGl0cyBjb250ZW50cyBhcmUNCnNjcm9sbGVkIG91 dCBvZiB2aWV3LiINCiAgKHNldHEgd2luZG93ICh3aW5kb3ctbm9ybWFsaXplLWxpdmUtd2lu ZG93IHdpbmRvdykpDQogIChsZXQgKChoZWlnaHQgKGlmIChmdW5jdGlvbnAgdGVtcC1idWZm ZXItbWF4LWhlaWdodCkNCgkJICAgIChmdW5jYWxsIHRlbXAtYnVmZmVyLW1heC1oZWlnaHQg KHdpbmRvdy1idWZmZXIgd2luZG93KSkNCgkJICB0ZW1wLWJ1ZmZlci1tYXgtaGVpZ2h0KSkp DQogICAgKGNvbmQNCiAgICAgKChhbmQgKHBvcy12aXNpYmxlLWluLXdpbmRvdy1wIChwb2lu dC1taW4pIHdpbmRvdykNCgkgICAod2luZG93LWNvbWJpbmVkLXAgd2luZG93KSkNCiAgICAg IChmaXQtd2luZG93LXRvLWJ1ZmZlciB3aW5kb3cgaGVpZ2h0KSkNCiAgICAgKChhbmQgdGVt cC1idWZmZXItcmVzaXplLWZyYW1lcw0KCSAgIChlcSB3aW5kb3cgKGZyYW1lLXJvb3Qtd2lu ZG93IHdpbmRvdykpDQoJICAgKG1lbXEgKGNhciAod2luZG93LXBhcmFtZXRlciB3aW5kb3cg J3F1aXQtcmVzdG9yZSkpDQoJCSA7OyBJZiAnc2FtZSBpcyB0b28gc3Ryb25nLCB3ZSBtaWdo dCBhZGRpdGlvbmFsbHkgY2hlY2sNCgkJIDs7IHdoZXRoZXIgdGhlIHNlY29uZCBlbGVtZW50 IGlzICdmcmFtZS4NCgkJICcoc2FtZSBmcmFtZSkpKQ0KICAgICAgKGxldCAoKGZyYW1lICh3 aW5kb3ctZnJhbWUgd2luZG93KSkpDQoJKGZpdC1mcmFtZS10by1idWZmZXINCgkgZnJhbWUg KCsgKGZyYW1lLWhlaWdodCBmcmFtZSkNCgkJICAoLSAod2luZG93LXRvdGFsLXNpemUgd2lu ZG93KSkNCgkJICBoZWlnaHQpKSkpKSkpDQoNCihkZWZ2YXIgdGVtcC1idWZmZXItd2luZG93 LXNldHVwLWhvb2sgbmlsDQogICJOb3JtYWwgaG9vayBydW4gYnkgYHdpdGgtdGVtcC1idWZm ZXItd2luZG93JyBiZWZvcmUgYnVmZmVyIGRpc3BsYXkuDQpUaGlzIGhvb2sgaXMgcnVuIGJ5 IGB3aXRoLXRlbXAtYnVmZmVyLXdpbmRvdycgd2l0aCB0aGUgYnVmZmVyIHRvIGJlDQpkaXNw bGF5ZWQgY3VycmVudC4iKQ0KDQooZGVmdmFyIHRlbXAtYnVmZmVyLXdpbmRvdy1zaG93LWhv b2sgbmlsDQogICJOb3JtYWwgaG9vayBydW4gYnkgYHdpdGgtdGVtcC1idWZmZXItd2luZG93 JyBhZnRlciBidWZmZXIgZGlzcGxheS4NClRoaXMgaG9vayBpcyBydW4gYnkgYHdpdGgtdGVt cC1idWZmZXItd2luZG93JyB3aXRoIHRoZSBidWZmZXINCmRpc3BsYXllZCBhbmQgY3VycmVu dCBhbmQgaXRzIHdpbmRvdyBzZWxlY3RlZC4iKQ0KDQooZGVmdW4gdGVtcC1idWZmZXItd2lu ZG93LXNldHVwIChidWZmZXItb3ItbmFtZSkNCiAgIlNldCB1cCB0ZW1wb3JhcnkgYnVmZmVy IHNwZWNpZmllZCBieSBCVUZGRVItT1ItTkFNRSANClJldHVybiB0aGUgYnVmZmVyLiINCiAg KGxldCAoKG9sZC1kaXIgZGVmYXVsdC1kaXJlY3RvcnkpDQoJKGJ1ZmZlciAoZ2V0LWJ1ZmZl ci1jcmVhdGUgYnVmZmVyLW9yLW5hbWUpKSkNCiAgICAod2l0aC1jdXJyZW50LWJ1ZmZlciBi dWZmZXINCiAgICAgIChraWxsLWFsbC1sb2NhbC12YXJpYWJsZXMpDQogICAgICAoc2V0cSBk ZWZhdWx0LWRpcmVjdG9yeSBvbGQtZGlyKQ0KOzsgICAgICAgKGRlbGV0ZS1hbGwtb3Zlcmxh eXMpDQogICAgICAoc2V0cSBidWZmZXItcmVhZC1vbmx5IG5pbCkNCiAgICAgIChzZXRxIGJ1 ZmZlci1maWxlLW5hbWUgbmlsKQ0KICAgICAgKHNldHEgYnVmZmVyLXVuZG8tbGlzdCB0KQ0K ICAgICAgKGxldCAoKGluaGliaXQtcmVhZC1vbmx5IHQpDQoJICAgIChpbmhpYml0LW1vZGlm aWNhdGlvbi1ob29rcyB0KSkNCgkoZXJhc2UtYnVmZmVyKQ0KCShydW4taG9va3MgJ3RlbXAt YnVmZmVyLXdpbmRvdy1zZXR1cC1ob29rKSkNCiAgICAgIDs7IFJldHVybiB0aGUgYnVmZmVy Lg0KICAgICAgYnVmZmVyKSkpDQoNCihkZWZ1biB0ZW1wLWJ1ZmZlci13aW5kb3ctc2hvdyAo Jm9wdGlvbmFsIGJ1ZmZlcikNCiAgIlNob3cgdGVtcG9yYXJ5IGJ1ZmZlciBCVUZGRVIgaW4g YSB3aW5kb3cuDQpSZXR1cm4gdGhlIHdpbmRvdyBzaG93aW5nIEJVRkZFUi4iDQogIChsZXQg KHdpbmRvdyBmcmFtZSkNCiAgICAod2l0aC1jdXJyZW50LWJ1ZmZlciBidWZmZXINCiAgICAg IChzZXQtYnVmZmVyLW1vZGlmaWVkLXAgbmlsKQ0KICAgICAgKHNldHEgYnVmZmVyLXJlYWQt b25seSB0KQ0KICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkNCiAgICAgICh3aGVuIChz ZXRxIHdpbmRvdyAoZGlzcGxheS1idWZmZXIgYnVmZmVyKSkNCgkoc2V0cSBmcmFtZSAod2lu ZG93LWZyYW1lIHdpbmRvdykpDQoJKHVubGVzcyAoZXEgZnJhbWUgKHNlbGVjdGVkLWZyYW1l KSkNCgkgIChyYWlzZS1mcmFtZSBmcmFtZSkpDQoJKHNldHEgbWluaWJ1ZmZlci1zY3JvbGwt d2luZG93IHdpbmRvdykNCgkoc2V0LXdpbmRvdy1oc2Nyb2xsIHdpbmRvdyAwKQ0KCSh3aXRo LXNlbGVjdGVkLXdpbmRvdyB3aW5kb3cNCgkgIChydW4taG9va3MgJ3RlbXAtYnVmZmVyLXdp bmRvdy1zaG93LWhvb2spDQoJICAod2hlbiB0ZW1wLWJ1ZmZlci1yZXNpemUtbW9kZQ0KCSAg ICAocmVzaXplLXRlbXAtYnVmZmVyLXdpbmRvdyB3aW5kb3cpKSkNCgk7OyBSZXR1cm4gdGhl IHdpbmRvdy4NCgl3aW5kb3cpKSkpDQoNCihkZWZtYWNybyB3aXRoLXRlbXAtYnVmZmVyLXdp bmRvdyAoYnVmZmVyLW9yLW5hbWUgcXVpdC1mdW5jdGlvbiAmcmVzdCBib2R5KQ0KICAiRXZh bHVhdGUgQk9EWSBhbmQgZGlzcGxheSBidWZmZXIgc3BlY2lmaWVkIGJ5IEJVRkZFUi1PUi1O QU1FLg0KQlVGRkVSLU9SLU5BTUUgbXVzdCBzcGVjaWZ5IGVpdGhlciBhIGxpdmUgYnVmZmVy IG9yIHRoZSBuYW1lIG9mIGENCmJ1ZmZlci4gIElmIG5vIGJ1ZmZlciB3aXRoIHN1Y2ggYSBu YW1lIGV4aXN0cywgY3JlYXRlIG9uZS4NCg0KTWFrZSBzdXJlIHRoZSBzcGVjaWZpZWQgYnVm ZmVyIGlzIGVtcHR5IGJlZm9yZSBldmFsdWF0aW5nIEJPRFkuDQpEbyBub3QgbWFrZSB0aGF0 IGJ1ZmZlciBjdXJyZW50IGZvciBCT0RZLiAgSW5zdGVhZCwgYmluZA0KYHN0YW5kYXJkLW91 dHB1dCcgdG8gdGhhdCBidWZmZXIsIHNvIHRoYXQgb3V0cHV0IGdlbmVyYXRlZCB3aXRoDQpg cHJpbjEnIGFuZCBzaW1pbGFyIGZ1bmN0aW9ucyBpbiBCT0RZIGdvZXMgaW50byB0aGF0IGJ1 ZmZlci4NCg0KQWZ0ZXIgZXZhbHVhdGluZyBCT0RZLCBtYXJrIHRoZSBzcGVjaWZpZWQgYnVm ZmVyIHVubW9kaWZpZWQgYW5kDQpyZWFkLW9ubHkgYW5kIGRpc3BsYXkgaXQgaW4gYSB3aW5k b3cuICBBdXRvLXNocmluayB0aGUgd2luZG93IGlmDQpgdGVtcC1idWZmZXItcmVzaXplLW1v ZGUnIGlzIGVuYWJsZWQuDQoNClJldHVybiB0aGUgdmFsdWUgcmV0dXJuZWQgYnkgQk9EWSB1 bmxlc3MgUVVJVC1GVU5DVElPTiBzcGVjaWZpZXMNCmEgZnVuY3Rpb24uICBJbiB0aGF0IGNh c2UsIHJ1biB0aGUgZnVuY3Rpb24gd2l0aCB0d28gYXJndW1lbnRzIC0NCnRoZSB3aW5kb3cg c2hvd2luZyB0aGUgc3BlY2lmaWVkIGJ1ZmZlciBhbmQgdGhlIHZhbHVlIHJldHVybmVkIGJ5 DQpCT0RZIC0gYW5kIHJldHVybiB0aGUgdmFsdWUgcmV0dXJuZWQgYnkgdGhhdCBmdW5jdGlv bi4NCg0KVGhpcyBjb25zdHJ1Y3QgaXMgc2ltaWxhciB0byBgd2l0aC1vdXRwdXQtdG8tdGVt cC1idWZmZXInIGJ1dA0KZG9lcyBuZWl0aGVyIHB1dCB0aGUgYnVmZmVyIGluIGhlbHAgbW9k ZSBub3IgZG9lcyBpdCBjYWxsDQpgdGVtcC1idWZmZXItc2hvdy1mdW5jdGlvbicuICBJdCBh bHNvIHJ1bnMgZGlmZmVyZW50IGhvb2tzLA0KbmFtZWx5IGB0ZW1wLWJ1ZmZlci13aW5kb3ct c2V0dXAtaG9vaycgKHdpdGggdGhlIHNwZWNpZmllZCBidWZmZXINCmN1cnJlbnQpIGFuZCBg dGVtcC1idWZmZXItd2luZG93LXNob3ctaG9vaycgKHdpdGggdGhlIHNwZWNpZmllZA0KYnVm ZmVyIGN1cnJlbnQgYW5kIHRoZSB3aW5kb3cgc2hvd2luZyBpdCBzZWxlY3RlZCkuDQoNClNp bmNlIHRoaXMgbWFjcm8gY2FsbHMgYGRpc3BsYXktYnVmZmVyJywgdGhlIHdpbmRvdyBkaXNw bGF5aW5nDQp0aGUgYnVmZmVyIGlzIHVzdWFsbHkgbm90IHNlbGVjdGVkIGFuZCB0aGUgc3Bl Y2lmaWVkIGJ1ZmZlcg0KdXN1YWxseSBub3QgbWFkZSBjdXJyZW50LiAgUVVJVC1GVU5DVElP TiBjYW4gb3ZlcnJpZGUgdGhhdC4iDQogIChkZWNsYXJlIChkZWJ1ZyB0KSkNCiAgKGxldCAo KGJ1ZmZlciAobWFrZS1zeW1ib2wgImJ1ZmZlciIpKQ0KCSh3aW5kb3cgKG1ha2Utc3ltYm9s ICJ3aW5kb3ciKSkNCgkodmFsdWUgKG1ha2Utc3ltYm9sICJ2YWx1ZSIpKSkNCiAgICBgKGxl dCogKCgsYnVmZmVyICh0ZW1wLWJ1ZmZlci13aW5kb3ctc2V0dXAgLGJ1ZmZlci1vci1uYW1l KSkNCgkgICAgKHN0YW5kYXJkLW91dHB1dCAsYnVmZmVyKQ0KCSAgICAsd2luZG93ICx2YWx1 ZSkNCiAgICAgICAod2l0aC1jdXJyZW50LWJ1ZmZlciAsYnVmZmVyDQoJIChzZXRxICx2YWx1 ZSAocHJvZ24gLEBib2R5KSkNCgkgKHNldHEgLHdpbmRvdyAodGVtcC1idWZmZXItd2luZG93 LXNob3cgLGJ1ZmZlcikpKQ0KDQogICAgICAgKGlmIChmdW5jdGlvbnAgLHF1aXQtZnVuY3Rp b24pDQoJICAgKGZ1bmNhbGwgLHF1aXQtZnVuY3Rpb24gLHdpbmRvdyAsdmFsdWUpDQoJICx2 YWx1ZSkpKSkNCg0KKGRlZnVuIHdpbmRvdy0tZGlzcGxheS1idWZmZXIgKGJ1ZmZlciB3aW5k b3cgdHlwZSAmb3B0aW9uYWwgZGVkaWNhdGVkKQ0KICAiRGlzcGxheSBCVUZGRVIgaW4gV0lO RE9XIGFuZCBtYWtlIGl0cyBmcmFtZSB2aXNpYmxlLg0KVFlQRSBtdXN0IGJlIG9uZSBvZiB0 aGUgc3ltYm9scyBgcmV1c2UnLCBgd2luZG93JyBvciBgZnJhbWUnIGFuZA0KaXMgcGFzc2Vk IHVuYWx0ZXJlZCB0byBgZGlzcGxheS1idWZmZXItcmVjb3JkLXdpbmRvdycuIFNldA0KYHdp bmRvdy1kZWRpY2F0ZWQtcCcgdG8gREVESUNBVEVEIGlmIG5vbi1uaWwuICBSZXR1cm4gV0lO RE9XIGlmDQpCVUZGRVIgYW5kIFdJTkRPVyBhcmUgbGl2ZS4iDQogICh3aGVuIChhbmQgKGJ1 ZmZlci1saXZlLXAgYnVmZmVyKSAod2luZG93LWxpdmUtcCB3aW5kb3cpKQ0KICAgIChsZXQq ICgoZnJhbWUgKHdpbmRvdy1mcmFtZSB3aW5kb3cpKQ0KCSAgICh2aXNpYmxlIChmcmFtZS12 aXNpYmxlLXAgZnJhbWUpKSkNCiAgICAgIChkaXNwbGF5LWJ1ZmZlci1yZWNvcmQtd2luZG93 IHR5cGUgd2luZG93IGJ1ZmZlcikNCiAgICAgICh1bmxlc3MgKGVxIGJ1ZmZlciAod2luZG93 LWJ1ZmZlciB3aW5kb3cpKQ0KCShzZXQtd2luZG93LWRlZGljYXRlZC1wIHdpbmRvdyBuaWwp DQoJKHNldC13aW5kb3ctYnVmZmVyIHdpbmRvdyBidWZmZXIpDQoJKHdoZW4gZGVkaWNhdGVk DQoJICAoc2V0LXdpbmRvdy1kZWRpY2F0ZWQtcCB3aW5kb3cgZGVkaWNhdGVkKSkpDQogICAg ICAod2hlbiAobWVtcSB0eXBlICcod2luZG93IGZyYW1lKSkNCgkoc2V0LXdpbmRvdy1wcmV2 LWJ1ZmZlcnMgd2luZG93IG5pbCkpDQoNCiAgICAgICh1bmxlc3MgKG9yIChub3QgdmlzaWJs ZSkNCgkJICA7OyBBc3N1bWUgdGhlIHNlbGVjdGVkIGZyYW1lIGlzIGFscmVhZHkgdmlzaWJs ZSBlbm91Z2guDQoJCSAgKGVxIGZyYW1lIChzZWxlY3RlZC1mcmFtZSkpDQoJCSAgOzsgQXNz dW1lIHRoZSBmcmFtZSBmcm9tIHdoaWNoIHdlIGludm9rZWQgdGhlIG1pbmlidWZmZXINCgkJ ICA7OyBpcyB2aXNpYmxlLg0KCQkgIChhbmQgKG1pbmlidWZmZXItd2luZG93LWFjdGl2ZS1w IChzZWxlY3RlZC13aW5kb3cpKQ0KCQkgICAgICAgKGVxIGZyYW1lICh3aW5kb3ctZnJhbWUg KG1pbmlidWZmZXItc2VsZWN0ZWQtd2luZG93KSkpKSkNCgkocmFpc2UtZnJhbWUgZnJhbWUp KQ0KDQogICAgICB3aW5kb3cpKSkNCg0KKGRlZnVuIHF1aXQtcmVzdG9yZS13aW5kb3cgKCZv cHRpb25hbCB3aW5kb3cgYnVyeS1vci1raWxsKQ0KICAiUXVpdCBXSU5ET1cgYW5kIGRlYWwg d2l0aCBpdHMgYnVmZmVyLg0KV0lORE9XIG11c3QgYmUgYSBsaXZlIHdpbmRvdyBhbmQgZGVm YXVsdHMgdG8gdGhlIHNlbGVjdGVkIG9uZS4NCg0KQWNjb3JkaW5nIHRvIGluZm9ybWF0aW9u IHN0b3JlZCBpbiBXSU5ET1cncyBgcXVpdC1yZXN0b3JlJyB3aW5kb3cNCnBhcmFtZXRlciBl aXRoZXIgKDEpIGRlbGV0ZSBXSU5ET1cgYW5kIGl0cyBmcmFtZSwgKDIpIGRlbGV0ZQ0KV0lO RE9XLCAoMykgcmVzdG9yZSB0aGUgYnVmZmVyIHByZXZpb3VzbHkgZGlzcGxheWVkIGluIFdJ TkRPVywNCm9yICg0KSBtYWtlIFdJTkRPVyBkaXNwbGF5IHNvbWUgb3RoZXIgYnVmZmVyIHRo YW4gdGhlIHByZXNlbnQNCm9uZS4gIElmIG5vbi1uaWwsIHJlc2V0IGBxdWl0LXJlc3RvcmUn IHBhcmFtZXRlciB0byBuaWwuDQoNCk9wdGlvbmFsIHNlY29uZCBhcmd1bWVudCBCVVJZLU9S LUtJTEwgdGVsbHMgaG93IHRvIHByb2NlZWQgd2l0aA0KdGhlIGJ1ZmZlciBvZiBXSU5ET1cu ICBUaGUgZm9sbG93aW5nIHZhbHVlcyBhcmUgaGFuZGxlZDoNCg0KYG5pbCcgbWVhbnMgdG8g bm90IGhhbmRsZSB0aGUgYnVmZmVyIGluIGEgcGFydGljdWxhciB3YXkuICBUaGlzDQogIG1l YW5zIHRoYXQgaWYgV0lORE9XIGlzIG5vdCBkZWxldGVkIGJ5IHRoaXMgZnVuY3Rpb24sIGlu dm9raW5nDQogIGBzd2l0Y2gtdG8tcHJldi1idWZmZXInIHdpbGwgdXN1YWxseSBzaG93IHRo ZSBidWZmZXIgYWdhaW4uDQoNCmBhcHBlbmQnIG1lYW5zIHRoYXQgaWYgV0lORE9XIGlzIG5v dCBkZWxldGVkLCBtb3ZlIGl0cyBidWZmZXIgdG8NCiAgdGhlIGVuZCBvZiBXSU5ET1cncyBw cmV2aW91cyBidWZmZXJzIHNvIGl0J3MgbGVzcyBsaWtlbHkgdGhhdCBhDQogIGZ1dHVyZSBp bnZvY2F0aW9uIG9mIGBzd2l0Y2gtdG8tcHJldi1idWZmZXInIHdpbGwgc3dpdGNoIHRvIGl0 Lg0KICBBbHNvLCBtb3ZlIHRoZSBidWZmZXIgdG8gdGhlIGVuZCBvZiB0aGUgZnJhbWUncyBi dWZmZXIgbGlzdC4NCg0KYGJ1cnknIG1lYW5zIHRoYXQgaWYgV0lORE9XIGlzIG5vdCBkZWxl dGVkLCByZW1vdmUgaXRzIGJ1ZmZlcg0KICBmcm9tIFdJTkRPVydTIGxpc3Qgb2YgcHJldmlv dXMgYnVmZmVycy4gIEFsc28sIG1vdmUgdGhlIGJ1ZmZlcg0KICB0byB0aGUgZW5kIG9mIHRo ZSBmcmFtZSdzIGJ1ZmZlciBsaXN0LiAgVGhpcyB2YWx1ZSBwcm92aWRlcyB0aGUNCiAgbW9z dCByZWxpYWJsZSByZW1lZHkgdG8gbm90IGhhdmUgYHN3aXRjaC10by1wcmV2LWJ1ZmZlcicg c3dpdGNoDQogIHRvIHRoaXMgYnVmZmVyIGFnYWluIHdpdGhvdXQga2lsbGluZyB0aGUgYnVm ZmVyLg0KDQpga2lsbCcgbWVhbnMgdG8ga2lsbCBXSU5ET1cncyBidWZmZXIuIg0KICAoc2V0 cSB3aW5kb3cgKHdpbmRvdy1ub3JtYWxpemUtd2luZG93IHdpbmRvdyB0KSkNCiAgKGxldCog KChidWZmZXIgKHdpbmRvdy1idWZmZXIgd2luZG93KSkNCgkgKHF1aXQtcmVzdG9yZSAod2lu ZG93LXBhcmFtZXRlciB3aW5kb3cgJ3F1aXQtcmVzdG9yZSkpDQoJIChwcmV2LWJ1ZmZlcg0K CSAgKGxldCogKChwcmV2LWJ1ZmZlcnMgKHdpbmRvdy1wcmV2LWJ1ZmZlcnMgd2luZG93KSkN CgkJIChwcmV2LWJ1ZmZlciAoY2FhciBwcmV2LWJ1ZmZlcnMpKSkNCgkgICAgKGFuZCAob3Ig KG5vdCAoZXEgcHJldi1idWZmZXIgYnVmZmVyKSkNCgkJICAgICAoYW5kIChjZHIgcHJldi1i dWZmZXJzKQ0KCQkJICAobm90IChlcSAoc2V0cSBwcmV2LWJ1ZmZlciAoY2FkciBwcmV2LWJ1 ZmZlcnMpKQ0KCQkJCSAgIGJ1ZmZlcikpKSkNCgkJIHByZXYtYnVmZmVyKSkpDQoJIHF1YWQg ZW50cnkpDQogICAgKGNvbmQNCiAgICAgKChhbmQgKG5vdCBwcmV2LWJ1ZmZlcikNCgkgICAo bWVtcSAobnRoIDEgcXVpdC1yZXN0b3JlKSAnKHdpbmRvdyBmcmFtZSkpDQoJICAgKGVxIChu dGggMyBxdWl0LXJlc3RvcmUpIGJ1ZmZlcikNCgkgICA7OyBEZWxldGUgV0lORE9XIGlmIHBv c3NpYmxlLg0KCSAgICh3aW5kb3ctLWRlbGV0ZSB3aW5kb3cgbmlsIChlcSBidXJ5LW9yLWtp bGwgJ2tpbGwpKSkNCiAgICAgIDs7IElmIHRoZSBwcmV2aW91c2x5IHNlbGVjdGVkIHdpbmRv dyBpcyBzdGlsbCBhbGl2ZSwgc2VsZWN0IGl0Lg0KICAgICAgKHdoZW4gKHdpbmRvdy1saXZl LXAgKG50aCAyIHF1aXQtcmVzdG9yZSkpDQoJKHNlbGVjdC13aW5kb3cgKG50aCAyIHF1aXQt cmVzdG9yZSkpKSkNCiAgICAgKChhbmQgKGxpc3RwIChzZXRxIHF1YWQgKG50aCAxIHF1aXQt cmVzdG9yZSkpKQ0KCSAgIChidWZmZXItbGl2ZS1wIChjYXIgcXVhZCkpDQoJICAgKGVxIChu dGggMyBxdWl0LXJlc3RvcmUpIGJ1ZmZlcikpDQogICAgICA7OyBTaG93IGFub3RoZXIgYnVm ZmVyIHN0b3JlZCBpbiBxdWl0LXJlc3RvcmUgcGFyYW1ldGVyLg0KICAgICAgKHdoZW4gKGFu ZCAoaW50ZWdlcnAgKG50aCAzIHF1YWQpKQ0KCQkgKC89IChudGggMyBxdWFkKSAod2luZG93 LXRvdGFsLXNpemUgd2luZG93KSkpDQoJOzsgVHJ5IHRvIHJlc2l6ZSBXSU5ET1cgdG8gaXRz IG9sZCBoZWlnaHQgYnV0IGRvbid0IHNpZ25hbCBhbg0KCTs7IGVycm9yLg0KCShjb25kaXRp b24tY2FzZSBuaWwNCgkgICAgKHdpbmRvdy1yZXNpemUgd2luZG93ICgtIChudGggMyBxdWFk KSAod2luZG93LXRvdGFsLXNpemUgd2luZG93KSkpDQoJICAoZXJyb3IgbmlsKSkpDQogICAg ICAoc2V0LXdpbmRvdy1kZWRpY2F0ZWQtcCB3aW5kb3cgbmlsKQ0KICAgICAgOzsgUmVzdG9y ZSBXSU5ET1cncyBwcmV2aW91cyBidWZmZXIsIHN0YXJ0IGFuZCBwb2ludCBwb3NpdGlvbi4N CiAgICAgIChzZXQtd2luZG93LWJ1ZmZlci1zdGFydC1hbmQtcG9pbnQNCiAgICAgICB3aW5k b3cgKG50aCAwIHF1YWQpIChudGggMSBxdWFkKSAobnRoIDIgcXVhZCkpDQogICAgICA7OyBE ZWFsIHdpdGggdGhlIGJ1ZmZlciB3ZSBqdXN0IHJlbW92ZWQgZnJvbSBXSU5ET1cuDQogICAg ICAoc2V0cSBlbnRyeSAoYW5kIChlcSBidXJ5LW9yLWtpbGwgJ2FwcGVuZCkNCgkJICAgICAg IChhc3NxIGJ1ZmZlciAod2luZG93LXByZXYtYnVmZmVycyB3aW5kb3cpKSkpDQogICAgICAo d2hlbiBidXJ5LW9yLWtpbGwNCgk7OyBSZW1vdmUgYnVmZmVyIGZyb20gV0lORE9XJ3MgcHJl dmlvdXMgYW5kIG5leHQgYnVmZmVycy4NCgkoc2V0LXdpbmRvdy1wcmV2LWJ1ZmZlcnMNCgkg d2luZG93IChhc3NxLWRlbGV0ZS1hbGwgYnVmZmVyICh3aW5kb3ctcHJldi1idWZmZXJzIHdp bmRvdykpKQ0KCShzZXQtd2luZG93LW5leHQtYnVmZmVycw0KCSB3aW5kb3cgKGRlbHEgYnVm ZmVyICh3aW5kb3ctbmV4dC1idWZmZXJzIHdpbmRvdykpKSkNCiAgICAgICh3aGVuIGVudHJ5 DQoJOzsgQXBwZW5kIG9sZCBidWZmZXIncyBlbnRyeSB0byBsaXN0IG9mIFdJTkRPVydzIHBy ZXZpb3VzDQoJOzsgYnVmZmVycyBzbyBpdCdzIGxlc3MgbGlrZWx5IHRvIGdldCBzd2l0Y2hl ZCB0byBzb29uIGJ1dA0KCTs7IGBkaXNwbGF5LWJ1ZmZlci1pbi1wcmV2aW91cy13aW5kb3cn IGNhbiBuZXZlcnRoZWxlc3MgZmluZCBpdC4NCgkoc2V0LXdpbmRvdy1wcmV2LWJ1ZmZlcnMN Cgkgd2luZG93IChhcHBlbmQgKHdpbmRvdy1wcmV2LWJ1ZmZlcnMgd2luZG93KSAobGlzdCBl bnRyeSkpKSkNCiAgICAgIDs7IFJlc2V0IHRoZSBxdWl0LXJlc3RvcmUgcGFyYW1ldGVyLg0K ICAgICAgKHNldC13aW5kb3ctcGFyYW1ldGVyIHdpbmRvdyAncXVpdC1yZXN0b3JlIG5pbCkN CiAgICAgIDs7IFNlbGVjdCBvbGQgd2luZG93Lg0KICAgICAgKHdoZW4gKHdpbmRvdy1saXZl LXAgKG50aCAyIHF1aXQtcmVzdG9yZSkpDQoJKHNlbGVjdC13aW5kb3cgKG50aCAyIHF1aXQt cmVzdG9yZSkpKSkNCiAgICAgKHQNCiAgICAgIDs7IFNob3cgc29tZSBvdGhlciBidWZmZXIg aW4gV0lORE9XIGFuZCByZXNldCB0aGUgcXVpdC1yZXN0b3JlDQogICAgICA7OyBwYXJhbWV0 ZXIuDQogICAgICAoc2V0LXdpbmRvdy1wYXJhbWV0ZXIgd2luZG93ICdxdWl0LXJlc3RvcmUg bmlsKQ0KICAgICAgOzsgTWFrZSBzdXJlIHRoYXQgV0lORE9XIGlzIG5vIG1vcmUgZGVkaWNh dGVkLg0KICAgICAgKHNldC13aW5kb3ctZGVkaWNhdGVkLXAgd2luZG93IG5pbCkNCiAgICAg IChzd2l0Y2gtdG8tcHJldi1idWZmZXIgd2luZG93IGJ1cnktb3Ita2lsbCkpKQ0KDQogICAg OzsgRGVhbCB3aXRoIHRoZSBidWZmZXIuDQogICAgKGNvbmQNCiAgICAgKChub3QgKGJ1ZmZl ci1saXZlLXAgYnVmZmVyKSkpDQogICAgICgoZXEgYnVyeS1vci1raWxsICdraWxsKQ0KICAg ICAgKGtpbGwtYnVmZmVyIGJ1ZmZlcikpDQogICAgIChidXJ5LW9yLWtpbGwNCiAgICAgIChi dXJ5LWJ1ZmZlci1pbnRlcm5hbCBidWZmZXIpKSkpKQ0KDQooZGVmdW4gcXVpdC13aW5kb3cg KCZvcHRpb25hbCBraWxsIHdpbmRvdykNCiAgIlF1aXQgV0lORE9XIGFuZCBidXJ5IGl0cyBi dWZmZXIuDQpXSU5ET1cgbXVzdCBiZSBhIGxpdmUgd2luZG93IGFuZCBkZWZhdWx0cyB0byB0 aGUgc2VsZWN0ZWQgb25lLg0KV2l0aCBwcmVmaXggYXJndW1lbnQgS0lMTCBub24tbmlsLCBr aWxsIHRoZSBidWZmZXIgaW5zdGVhZCBvZg0KYnVyeWluZyBpdC4NCg0KQWNjb3JkaW5nIHRv IGluZm9ybWF0aW9uIHN0b3JlZCBpbiBXSU5ET1cncyBgcXVpdC1yZXN0b3JlJyB3aW5kb3cN CnBhcmFtZXRlciBlaXRoZXIgKDEpIGRlbGV0ZSBXSU5ET1cgYW5kIGl0cyBmcmFtZSwgKDIp IGRlbGV0ZQ0KV0lORE9XLCAoMykgcmVzdG9yZSB0aGUgYnVmZmVyIHByZXZpb3VzbHkgZGlz cGxheWVkIGluIFdJTkRPVywNCm9yICg0KSBtYWtlIFdJTkRPVyBkaXNwbGF5IHNvbWUgb3Ro ZXIgYnVmZmVyIHRoYW4gdGhlIHByZXNlbnQNCm9uZS4gIElmIG5vbi1uaWwsIHJlc2V0IGBx dWl0LXJlc3RvcmUnIHBhcmFtZXRlciB0byBuaWwuIg0KICAoaW50ZXJhY3RpdmUgIlAiKQ0K ICAocXVpdC1yZXN0b3JlLXdpbmRvdyB3aW5kb3cgKGlmIGtpbGwgJ2tpbGwgJ2J1cnkpKSkN Cg0KKGRlZmN1c3RvbSBmaXQtZnJhbWUtdG8tYnVmZmVyLWJvdHRvbS1tYXJnaW4gNA0KICAi Qm90dG9tIG1hcmdpbiBmb3IgYGZpdC1mcmFtZS10by1idWZmZXInLg0KVGhpcyBpcyB0aGUg bnVtYmVyIG9mIGxpbmVzIGBmaXQtZnJhbWUtdG8tYnVmZmVyJyBsZWF2ZXMgZnJlZSBhdCB0 aGUNCmJvdHRvbSBvZiB0aGUgZGlzcGxheSBpbiBvcmRlciB0byBub3Qgb2JzY3VyZSB0aGUg c3lzdGVtIHRhc2sgYmFyLiINCiAgOnR5cGUgJ2ludGVnZXINCiAgOnZlcnNpb24gIjI0LjIi DQogIDpncm91cCAnd2luZG93cykNCg0KKGRlZnVuIGZpdC1mcmFtZS10by1idWZmZXIgKCZv cHRpb25hbCBmcmFtZSBtYXgtaGVpZ2h0IG1pbi1oZWlnaHQpDQogICJBZGp1c3QgaGVpZ2h0 IG9mIEZSQU1FIHRvIGRpc3BsYXkgaXRzIGJ1ZmZlcidzIGNvbnRlbnRzIGV4YWN0bHkuDQpG UkFNRSBjYW4gYmUgYW55IGxpdmUgZnJhbWUgYW5kIGRlZmF1bHRzIHRvIHRoZSBzZWxlY3Rl ZCBvbmUuDQoNCk9wdGlvbmFsIGFyZ3VtZW50IE1BWC1IRUlHSFQgc3BlY2lmaWVzIHRoZSBt YXhpbXVtIGhlaWdodCBvZg0KRlJBTUUgYW5kIGRlZmF1bHRzIHRvIHRoZSBoZWlnaHQgb2Yg dGhlIGRpc3BsYXkgYmVsb3cgdGhlIGN1cnJlbnQNCnRvcCBsaW5lIG9mIEZSQU1FIG1pbnVz IEZJVC1GUkFNRS1UTy1CVUZGRVItQk9UVE9NLU1BUkdJTi4NCk9wdGlvbmFsIGFyZ3VtZW50 IE1JTi1IRUlHSFQgc3BlY2lmaWVzIHRoZSBtaW5pbXVtIGhlaWdodCBvZg0KRlJBTUUuIg0K ICAoaW50ZXJhY3RpdmUpDQogIChzZXRxIGZyYW1lICh3aW5kb3ctbm9ybWFsaXplLWZyYW1l IGZyYW1lKSkNCiAgKGxldCogKChyb290IChmcmFtZS1yb290LXdpbmRvdyBmcmFtZSkpDQoJ IChmcmFtZS1taW4taGVpZ2h0DQoJICAoKyAoLSAoZnJhbWUtaGVpZ2h0IGZyYW1lKSAod2lu ZG93LXRvdGFsLXNpemUgcm9vdCkpDQoJICAgICB3aW5kb3ctbWluLWhlaWdodCkpDQoJIChm cmFtZS10b3AgKGZyYW1lLXBhcmFtZXRlciBmcmFtZSAndG9wKSkNCgkgKHRvcCAoaWYgKGNv bnNwIGZyYW1lLXRvcCkNCgkJICAoZnVuY2FsbCAoY2FyIGZyYW1lLXRvcCkgKGNhZHIgZnJh bWUtdG9wKSkNCgkJZnJhbWUtdG9wKSkNCgkgKGZyYW1lLW1heC1oZWlnaHQNCgkgICgtICgv ICgtICh4LWRpc3BsYXktcGl4ZWwtaGVpZ2h0IGZyYW1lKSB0b3ApDQoJCShmcmFtZS1jaGFy LWhlaWdodCBmcmFtZSkpDQoJICAgICBmaXQtZnJhbWUtdG8tYnVmZmVyLWJvdHRvbS1tYXJn aW4pKQ0KCSBkZWx0YSkNCiAgICAod2hlbiAoYW5kICh3aW5kb3ctbGl2ZS1wIHJvb3QpIChu b3QgKHdpbmRvdy1zaXplLWZpeGVkLXAgcm9vdCkpKQ0KICAgICAgKHdpdGgtc2VsZWN0ZWQt d2luZG93IHJvb3QNCgkoY29uZA0KCSAoKG5vdCBtYXgtaGVpZ2h0KQ0KCSAgKHNldHEgbWF4 LWhlaWdodCBmcmFtZS1tYXgtaGVpZ2h0KSkNCgkgKChudW1iZXJwIG1heC1oZWlnaHQpDQoJ ICAoc2V0cSBtYXgtaGVpZ2h0IChtaW4gbWF4LWhlaWdodCBmcmFtZS1tYXgtaGVpZ2h0KSkp DQoJICh0DQoJICAoZXJyb3IgIiVzIGlzIGFuIGludmFsaWQgbWF4aW11bSBoZWlnaHQiIG1h eC1oZWlnaHQpKSkNCgkoY29uZA0KCSAoKG5vdCBtaW4taGVpZ2h0KQ0KCSAgKHNldHEgbWlu LWhlaWdodCBmcmFtZS1taW4taGVpZ2h0KSkNCgkgKChudW1iZXJwIG1pbi1oZWlnaHQpDQoJ ICAoc2V0cSBtaW4taGVpZ2h0IChtaW4gbWluLWhlaWdodCBmcmFtZS1taW4taGVpZ2h0KSkp DQoJICh0DQoJICAoZXJyb3IgIiVzIGlzIGFuIGludmFsaWQgbWluaW11bSBoZWlnaHQiIG1p bi1oZWlnaHQpKSkNCgkoc2V0cSBkZWx0YQ0KCSAgICAgIDs7IENvdW50IGEgZmluYWwgbmV3 bGluZSAtIHRoaXMgY29tcGVuc2F0ZXMgZm9yIHRoZQ0KCSAgICAgIDs7IG1pc3NpbmcgcG9z dC1wcm9jZXNpbmcgcGFydCBhZnRlciByZXNpemluZyB0aGUgZnJhbWUuDQoJICAgICAgKC0g KCsgKGNvdW50LXNjcmVlbi1saW5lcyBuaWwgbmlsIHQpDQoJCSAgICA7OyBGb3Igbm9uLW1p bmlidWZmZXJzIGNvdW50IHRoZSBtb2RlIGxpbmUsIGlmIGFueS4NCgkJICAgIChpZiAoYW5k IChub3QgKHdpbmRvdy1taW5pYnVmZmVyLXApKQ0KCQkJICAgICBtb2RlLWxpbmUtZm9ybWF0 KQ0KCQkJMQ0KCQkgICAgICAwKQ0KCQkgICAgOzsgQ291bnQgdGhlIGhlYWRlciBsaW5lLCBp ZiBhbnkuDQoJCSAgICAoaWYgaGVhZGVyLWxpbmUtZm9ybWF0IDEgMCkpDQoJCSAod2luZG93 LXRvdGFsLXNpemUpKSkpDQogICAgICA7OyBNb3ZlIGF3YXkgZnJvbSBmaW5hbCBuZXdsaW5l Lg0KICAgICAgKHdoZW4gKGFuZCAoZW9icCkgKGJvbHApIChub3QgKGJvYnApKSkNCgkoc2V0 LXdpbmRvdy1wb2ludCByb290IChsaW5lLWJlZ2lubmluZy1wb3NpdGlvbiAwKSkpDQogICAg ICAoc2V0LXdpbmRvdy1zdGFydCByb290IChwb2ludC1taW4pKQ0KICAgICAgKHNldC13aW5k b3ctdnNjcm9sbCByb290IDApDQogICAgICAoY29uZGl0aW9uLWNhc2UgbmlsDQoJICAoc2V0 LWZyYW1lLWhlaWdodA0KCSAgIGZyYW1lDQoJICAgKG1pbiAobWF4ICgrIChmcmFtZS1oZWln aHQgZnJhbWUpIGRlbHRhKQ0KCQkgICAgIG1pbi1oZWlnaHQpDQoJCW1heC1oZWlnaHQpKQ0K CShlcnJvciAoc2V0cSBkZWx0YSBuaWwpKSkpDQogICAgZGVsdGEpKQ0KDQo7OyBVc2FnZQ0K KGRlZnVuIHJlY292ZXItZmlsZSAoZmlsZSkNCiAgIlZpc2l0IGZpbGUgRklMRSwgYnV0IGdl dCBjb250ZW50cyBmcm9tIGl0cyBsYXN0IGF1dG8tc2F2ZSBmaWxlLiINCiAgOzsgQWN0dWFs bHkgcHV0dGluZyB0aGUgZmlsZSBuYW1lIGluIHRoZSBtaW5pYnVmZmVyIHNob3VsZCBiZSB1 c2VkDQogIDs7IG9ubHkgcmFyZWx5Lg0KICA7OyBOb3QganVzdCBiZWNhdXNlIHVzZXJzIG9m dGVuIHVzZSB0aGUgZGVmYXVsdC4NCiAgKGludGVyYWN0aXZlICJGUmVjb3ZlciBmaWxlOiAi KQ0KICAoc2V0cSBmaWxlIChleHBhbmQtZmlsZS1uYW1lIGZpbGUpKQ0KICAoaWYgKGF1dG8t c2F2ZS1maWxlLW5hbWUtcCAoZmlsZS1uYW1lLW5vbmRpcmVjdG9yeSBmaWxlKSkNCiAgICAg IChlcnJvciAiJXMgaXMgYW4gYXV0by1zYXZlIGZpbGUiIChhYmJyZXZpYXRlLWZpbGUtbmFt ZSBmaWxlKSkpDQogIChsZXQgKChmaWxlLW5hbWUgKGxldCAoKGJ1ZmZlci1maWxlLW5hbWUg ZmlsZSkpDQoJCSAgICAgKG1ha2UtYXV0by1zYXZlLWZpbGUtbmFtZSkpKSkNCiAgICAoY29u ZCAoKGlmIChmaWxlLWV4aXN0cy1wIGZpbGUpDQoJICAgICAgIChub3QgKGZpbGUtbmV3ZXIt dGhhbi1maWxlLXAgZmlsZS1uYW1lIGZpbGUpKQ0KCSAgICAgKG5vdCAoZmlsZS1leGlzdHMt cCBmaWxlLW5hbWUpKSkNCgkgICAoZXJyb3IgIkF1dG8tc2F2ZSBmaWxlICVzIG5vdCBjdXJy ZW50Ig0KCQkgIChhYmJyZXZpYXRlLWZpbGUtbmFtZSBmaWxlLW5hbWUpKSkNCgkgICgod2l0 aC10ZW1wLWJ1ZmZlci13aW5kb3cNCgkgICAgIipEaXJlY3RvcnkqIg0KCSAgICAjJyhsYW1i ZGEgKHdpbmRvdyBfdmFsdWUpDQoJCSh1bndpbmQtcHJvdGVjdA0KCQkgICAgKHllcy1vci1u by1wIChmb3JtYXQgIlJlY292ZXIgYXV0byBzYXZlIGZpbGUgJXM/ICIgZmlsZS1uYW1lKSkN CgkJICAocXVpdC1yZXN0b3JlLXdpbmRvdyB3aW5kb3cgJ2tpbGwpKSkNCgkgICAgKHdpdGgt Y3VycmVudC1idWZmZXIgc3RhbmRhcmQtb3V0cHV0DQoJICAgICAgKGxldCAoKHN3aXRjaGVz IGRpcmVkLWxpc3Rpbmctc3dpdGNoZXMpKQ0KCQkoaWYgKGZpbGUtc3ltbGluay1wIGZpbGUp DQoJCSAgICAoc2V0cSBzd2l0Y2hlcyAoY29uY2F0IHN3aXRjaGVzICIgLUwiKSkpDQoJCTs7 IFVzZSBpbnNlcnQtZGlyZWN0b3J5LXNhZmVseSwgbm90IGluc2VydC1kaXJlY3RvcnksDQoJ CTs7IGJlY2F1c2UgdGhlc2UgZmlsZXMgbWlnaHQgbm90IGV4aXN0LiAgSW4gcGFydGljdWxh ciwNCgkJOzsgRklMRSBtaWdodCBub3QgZXhpc3QgaWYgdGhlIGF1dG8tc2F2ZSBmaWxlIHdh cyBmb3INCgkJOzsgYSBidWZmZXIgdGhhdCBkaWRuJ3QgdmlzaXQgYSBmaWxlLCBzdWNoIGFz ICIqbWFpbCoiLg0KCQk7OyBUaGUgY29kZSBpbiB2MjAueCBjYWxsZWQgYGxzJyBkaXJlY3Rs eSwgc28gd2UgbmVlZA0KCQk7OyB0byBlbXVsYXRlIHdoYXQgYGxzJyBkaWQgaW4gdGhhdCBj YXNlLg0KCQkoaW5zZXJ0LWRpcmVjdG9yeS1zYWZlbHkgZmlsZSBzd2l0Y2hlcykNCgkJKGlu c2VydC1kaXJlY3Rvcnktc2FmZWx5IGZpbGUtbmFtZSBzd2l0Y2hlcykpKSkNCgkgICAoc3dp dGNoLXRvLWJ1ZmZlciAoZmluZC1maWxlLW5vc2VsZWN0IGZpbGUgdCkpDQoJICAgKGxldCAo KGluaGliaXQtcmVhZC1vbmx5IHQpDQoJCSA7OyBLZWVwIHRoZSBjdXJyZW50IGJ1ZmZlci1m aWxlLWNvZGluZy1zeXN0ZW0uDQoJCSAoY29kaW5nLXN5c3RlbSBidWZmZXItZmlsZS1jb2Rp bmctc3lzdGVtKQ0KCQkgOzsgQXV0by1zYXZlZCBmaWxlIHNob3VsZCBiZSByZWFkIHdpdGgg c3BlY2lhbCBjb2RpbmcuDQoJCSAoY29kaW5nLXN5c3RlbS1mb3ItcmVhZCAnYXV0by1zYXZl LWNvZGluZykpDQoJICAgICAoZXJhc2UtYnVmZmVyKQ0KCSAgICAgKGluc2VydC1maWxlLWNv bnRlbnRzIGZpbGUtbmFtZSBuaWwpDQoJICAgICAoc2V0LWJ1ZmZlci1maWxlLWNvZGluZy1z eXN0ZW0gY29kaW5nLXN5c3RlbSkpDQoJICAgKGFmdGVyLWZpbmQtZmlsZSBuaWwgbmlsIHQp KQ0KCSAgKHQgKHVzZXItZXJyb3IgIlJlY292ZXItZmlsZSBjYW5jZWxsZWQiKSkpKSkNCg0K KGRlZnVuIHNhdmUtYnVmZmVycy1raWxsLWVtYWNzICgmb3B0aW9uYWwgYXJnKQ0KICAiT2Zm ZXIgdG8gc2F2ZSBlYWNoIGJ1ZmZlciwgdGhlbiBraWxsIHRoaXMgRW1hY3MgcHJvY2Vzcy4N CldpdGggcHJlZml4IEFSRywgc2lsZW50bHkgc2F2ZSBhbGwgZmlsZS12aXNpdGluZyBidWZm ZXJzIHdpdGhvdXQgYXNraW5nLg0KSWYgdGhlcmUgYXJlIGFjdGl2ZSBwcm9jZXNzZXMgd2hl cmUgYHByb2Nlc3MtcXVlcnktb24tZXhpdC1mbGFnJw0KcmV0dXJucyBub24tbmlsLCBhc2tz IHdoZXRoZXIgcHJvY2Vzc2VzIHNob3VsZCBiZSBraWxsZWQuDQpSdW5zIHRoZSBtZW1iZXJz IG9mIGBraWxsLWVtYWNzLXF1ZXJ5LWZ1bmN0aW9ucycgaW4gdHVybiBhbmQgc3RvcHMNCmlm IGFueSByZXR1cm5zIG5pbC4gIElmIGBjb25maXJtLWtpbGwtZW1hY3MnIGlzIG5vbi1uaWws IGNhbGxzIGl0LiINCiAgKGludGVyYWN0aXZlICJQIikNCiAgKHNhdmUtc29tZS1idWZmZXJz IGFyZyB0KQ0KICAoYW5kIChvciAobm90IChtZW1xIHQgKG1hcGNhciAoZnVuY3Rpb24NCgkJ CQkgIChsYW1iZGEgKGJ1ZikgKGFuZCAoYnVmZmVyLWZpbGUtbmFtZSBidWYpDQoJCQkJCQkg ICAgIChidWZmZXItbW9kaWZpZWQtcCBidWYpKSkpDQoJCQkJKGJ1ZmZlci1saXN0KSkpKQ0K CSAgICh5ZXMtb3Itbm8tcCAiTW9kaWZpZWQgYnVmZmVycyBleGlzdDsgZXhpdCBhbnl3YXk/ ICIpKQ0KICAgICAgIChvciAobm90IChmYm91bmRwICdwcm9jZXNzLWxpc3QpKQ0KCSAgIDs7 IHByb2Nlc3MtbGlzdCBpcyBub3QgZGVmaW5lZCBvbiBNU0RPUy4NCgkgICAobGV0ICgocHJv Y2Vzc2VzIChwcm9jZXNzLWxpc3QpKQ0KCQkgYWN0aXZlKQ0KCSAgICAgKHdoaWxlIHByb2Nl c3Nlcw0KCSAgICAgICAoYW5kIChtZW1xIChwcm9jZXNzLXN0YXR1cyAoY2FyIHByb2Nlc3Nl cykpICcocnVuIHN0b3Agb3BlbiBsaXN0ZW4pKQ0KCQkgICAgKHByb2Nlc3MtcXVlcnktb24t ZXhpdC1mbGFnIChjYXIgcHJvY2Vzc2VzKSkNCgkJICAgIChzZXRxIGFjdGl2ZSB0KSkNCgkg ICAgICAgKHNldHEgcHJvY2Vzc2VzIChjZHIgcHJvY2Vzc2VzKSkpDQoJICAgICAob3IgKG5v dCBhY3RpdmUpDQoJCSAod2l0aC10ZW1wLWJ1ZmZlci13aW5kb3cgKGdldC1idWZmZXItY3Jl YXRlICIqUHJvY2VzcyBMaXN0KiIpDQoJCSAgICMnKGxhbWJkYSAod2luZG93IF92YWx1ZSkN CgkJICAgICAgICh1bndpbmQtcHJvdGVjdA0KCQkJICAgKHllcy1vci1uby1wICJBY3RpdmUg cHJvY2Vzc2VzIGV4aXN0OyBraWxsIHRoZW0gYW5kIGV4aXQgYW55d2F5PyAiKQ0KCQkJIChx dWl0LXJlc3RvcmUtd2luZG93IHdpbmRvdyAna2lsbCkpKQ0KCQkgICAobGlzdC1wcm9jZXNz ZXMgdCkpKSkpDQogICAgICAgOzsgUXVlcnkgdGhlIHVzZXIgZm9yIG90aGVyIHRoaW5ncywg cGVyaGFwcy4NCiAgICAgICAocnVuLWhvb2std2l0aC1hcmdzLXVudGlsLWZhaWx1cmUgJ2tp bGwtZW1hY3MtcXVlcnktZnVuY3Rpb25zKQ0KICAgICAgIChvciAobnVsbCBjb25maXJtLWtp bGwtZW1hY3MpDQoJICAgKGZ1bmNhbGwgY29uZmlybS1raWxsLWVtYWNzICJSZWFsbHkgZXhp dCBFbWFjcz8gIikpDQogICAgICAgKGtpbGwtZW1hY3MpKSkNCg0KKGRlZnVuIGRpcmVkLW1h cmstcG9wLXVwIChidWZmZXItb3ItbmFtZSBvcC1zeW1ib2wgZmlsZXMgZnVuY3Rpb24gJnJl c3QgYXJncykNCiAgIlJldHVybiBGVU5DVElPTidzIHJlc3VsdCBvbiBBUkdTIGFmdGVyIHNo b3dpbmcgd2hpY2ggZmlsZXMgYXJlIG1hcmtlZC4NCkRpc3BsYXlzIHRoZSBmaWxlIG5hbWVz IGluIGEgd2luZG93IHNob3dpbmcgYSBidWZmZXIgbmFtZWQNCkJVRkZFUi1PUi1OQU1FOyB0 aGUgZGVmYXVsdCBuYW1lIGJlaW5nIFwiICpNYXJrZWQgRmlsZXMqXCIuICBUaGUNCndpbmRv dyBpcyBub3Qgc2hvd24gaWYgdGhlcmUgaXMganVzdCBvbmUgZmlsZSwgYGRpcmVkLW5vLWNv bmZpcm0nDQppcyB0LCBvciBPUC1TWU1CT0wgaXMgYSBtZW1iZXIgb2YgdGhlIGxpc3QgaW4g YGRpcmVkLW5vLWNvbmZpcm0nLg0KDQpGSUxFUyBpcyB0aGUgbGlzdCBvZiBtYXJrZWQgZmls ZXMuICBJdCBjYW4gYWxzbyBiZSAodCBGSUxFTkFNRSkNCmluIHRoZSBjYXNlIG9mIG9uZSBt YXJrZWQgZmlsZSwgdG8gZGlzdGluZ3Vpc2ggdGhhdCBmcm9tIHVzaW5nDQpqdXN0IHRoZSBj dXJyZW50IGZpbGUuDQoNCkZVTkNUSU9OIHNob3VsZCBub3QgbWFuaXB1bGF0ZSBmaWxlcywg anVzdCByZWFkIGlucHV0IFwoYW4NCmFyZ3VtZW50IG9yIGNvbmZpcm1hdGlvbikuIg0KICAo aWYgKG9yIChlcSBkaXJlZC1uby1jb25maXJtIHQpDQoJICAobWVtcSBvcC1zeW1ib2wgZGly ZWQtbm8tY29uZmlybSkNCgkgIDs7IElmIEZJTEVTIGRlZmF1bHRlZCB0byB0aGUgY3VycmVu dCBsaW5lJ3MgZmlsZS4NCgkgICg9IChsZW5ndGggZmlsZXMpIDEpKQ0KICAgICAgKGFwcGx5 IGZ1bmN0aW9uIGFyZ3MpDQogICAgKGxldCAoKGJ1ZmZlciAoZ2V0LWJ1ZmZlci1jcmVhdGUg KG9yIGJ1ZmZlci1vci1uYW1lICIgKk1hcmtlZCBGaWxlcyoiKSkpKQ0KICAgICAgKHdpdGgt Y3VycmVudC1idWZmZXIgYnVmZmVyDQoJKGxldCAoKHNwbGl0LWhlaWdodC10aHJlc2hvbGQg MCkNCgkgICAgICAoZGlzcGxheS1idWZmZXItYXBwLWFjdGlvbg0KCSAgICAgICAoY29ucyAn ZGlzcGxheS1idWZmZXItYmVsb3ctc2VsZWN0ZWQgbmlsKSkpDQoJICAod2l0aC10ZW1wLWJ1 ZmZlci13aW5kb3cNCgkgICBidWZmZXINCgkgICAjJyhsYW1iZGEgKHdpbmRvdyBfdmFsdWUp DQoJICAgICAgICh1bndpbmQtcHJvdGVjdA0KCQkgICAoYXBwbHkgZnVuY3Rpb24gYXJncykN CgkJIChxdWl0LXJlc3RvcmUtd2luZG93IHdpbmRvdyAna2lsbCkpKQ0KCSAgIDs7IEhhbmRs ZSAodCBGSUxFKSBqdXN0IGxpa2UgKEZJTEUpLCBoZXJlLiAgVGhhdCB2YWx1ZSBpcw0KCSAg IDs7IHVzZWQgKG9ubHkgaW4gc29tZSBjYXNlcyksIHRvIG1lYW4ganVzdCBvbmUgZmlsZSB0 aGF0IHdhcw0KCSAgIDs7IG1hcmtlZCwgcmF0aGVyIHRoYW4gdGhlIGN1cnJlbnQgbGluZSBm aWxlLg0KCSAgIChkaXJlZC1mb3JtYXQtY29sdW1ucy1vZi1maWxlcw0KCSAgICAoaWYgKGVx IChjYXIgZmlsZXMpIHQpIChjZHIgZmlsZXMpIGZpbGVzKSkNCgkgICAocmVtb3ZlLXRleHQt cHJvcGVydGllcyAocG9pbnQtbWluKSAocG9pbnQtbWF4KQ0KCQkJCSAgICcobW91c2UtZmFj ZSBuaWwgaGVscC1lY2hvIG5pbCkpKSkpKSkpDQo= --------------070601080905090706060001--