From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: "David De La Harpe Golden" Newsgroups: gmane.emacs.devel Subject: Re: Improving X selection? Date: Sun, 3 Feb 2008 11:38:19 +0000 Message-ID: <8e24944a0802030338i1ce3397yba581ffedbe2f118@mail.gmail.com> References: <8e24944a0710161629r1ec1afadj60352dc92c264217@mail.gmail.com> <8e24944a0801281152w733c977akda93089a52701219@mail.gmail.com> <8e24944a0801281659sa5a9115rf4533184413a8b20@mail.gmail.com> <8e24944a0802011115h77423fd1p2eae15a1e46bca1a@mail.gmail.com> <8e24944a0802011617k66c49283id9478dc3d5168bdf@mail.gmail.com> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_1832_977446.1202038699909" X-Trace: ger.gmane.org 1202038718 11004 80.91.229.12 (3 Feb 2008 11:38:38 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Sun, 3 Feb 2008 11:38:38 +0000 (UTC) To: rms@gnu.org, emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Sun Feb 03 12:38:59 2008 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.50) id 1JLdBZ-0006sR-E4 for ged-emacs-devel@m.gmane.org; Sun, 03 Feb 2008 12:38:59 +0100 Original-Received: from localhost ([127.0.0.1] helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1JLdB6-0005nH-Cr for ged-emacs-devel@m.gmane.org; Sun, 03 Feb 2008 06:38:28 -0500 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1JLdB2-0005n5-5g for emacs-devel@gnu.org; Sun, 03 Feb 2008 06:38:24 -0500 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1JLdB1-0005me-1J for emacs-devel@gnu.org; Sun, 03 Feb 2008 06:38:23 -0500 Original-Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1JLdB0-0005mY-N4 for emacs-devel@gnu.org; Sun, 03 Feb 2008 06:38:22 -0500 Original-Received: from wa-out-1112.google.com ([209.85.146.181]) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1JLdAz-0006PO-GD for emacs-devel@gnu.org; Sun, 03 Feb 2008 06:38:22 -0500 Original-Received: by wa-out-1112.google.com with SMTP id k34so1685230wah.10 for ; Sun, 03 Feb 2008 03:38:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from:to:subject:in-reply-to:mime-version:content-type:references; bh=4zPgUJTLDoSZC+hDaAO+aXvtYH2sxMWP15gcggtoGE8=; b=dv60Rq1FJTcKHpBAHKHVNEdd5GCe5ohUfm6+wLZTEZh0X4cATXqquegKgF+uhWtHmXQsfOUhoN1Y6e56AA52R2zPUls9m67VpGyDLok1gXJanvP6hWhNwpoIkzBPoRS9yMGtP66J3jWeRMcsSpalGcQAKKNGxzeBhltzyk699sU= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:to:subject:in-reply-to:mime-version:content-type:references; b=UCqPoaic32A6B0S1mZLbB1IxGt1bdCGmPC6DNi34a6+YjRAzwc3IbeNxF5wjAsSoax7vJ+QprvKdXBlHC/BwtEjch0SVPIbvAu8QQ8imDFtiA09JYeQKSsUEYZ5up/ZgKmwkEZ1p+RWuRAnbtE//kVAUAp91/BNOfOMpYUHdk1c= Original-Received: by 10.143.16.9 with SMTP id t9mr2946916wfi.107.1202038699913; Sun, 03 Feb 2008 03:38:19 -0800 (PST) Original-Received: by 10.142.111.4 with HTTP; Sun, 3 Feb 2008 03:38:19 -0800 (PST) In-Reply-To: <8e24944a0802011617k66c49283id9478dc3d5168bdf@mail.gmail.com> X-detected-kernel: by monty-python.gnu.org: Linux 2.6 (newer, 2) X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:88086 Archived-At: ------=_Part_1832_977446.1202038699909 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline On 02/02/2008, David De La Harpe Golden wrote: > (Some mouse.el interactions need additional options too I think - yet > another mail to follow with them...) See attached patch (n.b. depends on previously sent patch "enhanced-x-selection.diff", guess l should do an aggregate patch with all proposed stuff...) Goal here was mouse behaviour that fits in nicely with select-active-regions, three main issues (one for each button as it happens...): *** 1. mouse-set-point vs. select-active-regions issue: Add a deactivate-mark in mouse-set-point: This prevents copying different text than expected to primary when select-active-regions is true and you mouse-1 click to move the point (otherwise it ends up setting the X11 selection to the region between the mark and new place you clicked, which is not right). However blindly deactivating the mark when the mouse is used to set the point may be a bit too heavy-handed/sweeping, there may be subtleties I haven't spotted? *** 2. mouse-save-then-kill-copy-region: Similar to mouse-drag-copy-region, only for mouse-3 clicks rather than mouse-1 drags: allows mouse-save-then-kill to possibly: nil => merely adjust active region t => original behaviour: single-click: save double-click: kill. :double => require "one more click" over original behaviour, i .e. single click just for adjustment of region, double-click for kill ring save, and triple click for kill. Note that while select-active-regions is on, adjusting the active region might set the primary x11 selection, and if mouse-save-then-kill does interact with the kill ring, it might (indirectly) set the clipboard x11 selection via the interprogram-cut-function called by the kill routines. Not hugely happy with my ad-hoc changes to mouse-save-then-kill code to add this, I guess the function could be rewritten more clearly, but at least the "nil" new behaviour is need for mouse interaction to be unsurprising when select-active-region is on, and I then just thought the :double behaviour was a useful option to add. *** 3. mouse-yank-at-click-action, introduces X11-like lightweight insert operation, allows mouse-2 mouse-yank-at-click to possibly just paste in a selection from (introduced) interprogram-lightins-function (*) rather than yanking from kill ring. x-select-enable-[primary|clipboard|cutbuffer] customizations also expanded, added a fourth kind of operation, :lightins, to go with the X11 interprogram-lightins-function, that is to say x-cut-buffer-or-selection-value-for-lightins * interprogram-[cut|paste]-function and interprogram-[highlight|lightins]-function are notionally paired. (Of course in another sense cut/highlight being output from emacs functions and paste/lightins being input to emacs functions make pairs), yay for symmetry. ------=_Part_1832_977446.1202038699909 Content-Type: text/x-diff; name=mouse-behaviours-nice-with-select-active-regions.diff Content-Transfer-Encoding: base64 X-Attachment-Id: f_fc7is16n Content-Disposition: attachment; filename=mouse-behaviours-nice-with-select-active-regions.diff ZGlmZiAtTmFyVTEwIGVtYWNzLWZzYXIvbGlzcC9tb3VzZS5lbCBlbWFjcy9saXNwL21vdXNlLmVs Ci0tLSBlbWFjcy1mc2FyL2xpc3AvbW91c2UuZWwJMjAwOC0wMi0wMiAwMjowNzoyMy4wMDAwMDAw MDAgKzAwMDAKKysrIGVtYWNzL2xpc3AvbW91c2UuZWwJMjAwOC0wMi0wMyAxMTozNDo0Ny4wMDAw MDAwMDAgKzAwMDAKQEAgLTY1MywyNCArNjUzLDI3IEBACiAJCSAgIDs7IHdpbmRvdyB0b28gdGhp bi4KIAkJICAgKGlmICg8ICgtIHggbGVmdCAtMSkgd2luZG93LW1pbi13aWR0aCkKIAkJICAgICAg IChzZXRxIHggKCsgbGVmdCB3aW5kb3ctbWluLXdpZHRoIC0xKSkpCiAJCSAgIDs7IGNvbXB1dGUg c2l6ZSBjaGFuZ2UgbmVlZGVkCiAJCSAgIChzZXRxIGdyb3d0aCAoLSB4IHJpZ2h0IC0xKSkKIAkJ ICAgKGNvbmRpdGlvbi1jYXNlIG5pbAogCQkgICAgICAgKGFkanVzdC13aW5kb3ctdHJhaWxpbmct ZWRnZSB3aW5kb3cgZ3Jvd3RoIHQpCiAJCSAgICAgKGVycm9yIG5pbCkpKSkpKSkpKSkKIAwKIChk ZWZ1biBtb3VzZS1zZXQtcG9pbnQgKGV2ZW50KQotICAiTW92ZSBwb2ludCB0byB0aGUgcG9zaXRp b24gY2xpY2tlZCBvbiB3aXRoIHRoZSBtb3VzZS4KKyAgIk1vdmUgcG9pbnQgdG8gdGhlIHBvc2l0 aW9uIGNsaWNrZWQgb24gd2l0aCB0aGUgbW91c2UsIGRlYWN0aXZhdGluZworcmVnaW9uIGJlZm9y ZWhhbmQuCiBUaGlzIHNob3VsZCBiZSBib3VuZCB0byBhIG1vdXNlIGNsaWNrIGV2ZW50IHR5cGUu IgogICAoaW50ZXJhY3RpdmUgImUiKQogICAobW91c2UtbWluaWJ1ZmZlci1jaGVjayBldmVudCkK KyAgOyBzZWxlY3QtYWN0aXZlLXJlZ2lvbnMgaXMgbWlzbGVhZGluZyB1bmxlc3MgdGhpcyBoYXBw ZW5zCisgIChkZWFjdGl2YXRlLW1hcmspIAogICA7OyBVc2UgZXZlbnQtZW5kIGluIGNhc2UgY2Fs bGVkIGZyb20gbW91c2UtZHJhZy1yZWdpb24uCiAgIDs7IElmIEVWRU5UIGlzIGEgY2xpY2ssIGV2 ZW50LWVuZCBhbmQgZXZlbnQtc3RhcnQgZ2l2ZSBzYW1lIHZhbHVlLgogICAocG9zbi1zZXQtcG9p bnQgKGV2ZW50LWVuZCBldmVudCkpKQogCiAoZGVmdmFyIG1vdXNlLWxhc3QtcmVnaW9uLWJlZyBu aWwpCiAoZGVmdmFyIG1vdXNlLWxhc3QtcmVnaW9uLWVuZCBuaWwpCiAoZGVmdmFyIG1vdXNlLWxh c3QtcmVnaW9uLXRpY2sgbmlsKQogCiAoZGVmdW4gbW91c2UtcmVnaW9uLW1hdGNoICgpCiAgICJS ZXR1cm4gbm9uLW5pbCBpZiB0aGVyZSdzIGFuIGFjdGl2ZSByZWdpb24gdGhhdCB3YXMgc2V0IHdp dGggdGhlIG1vdXNlLiIKQEAgLTEzNDksMzQgKzEzNTIsNTcgQEAKIFRoZSB0ZXh0IGlzIHNhdmVk IGluIHRoZSBraWxsIHJpbmcsIGFzIHdpdGggXFxba2lsbC1yZWdpb25dLiIKICAgKGludGVyYWN0 aXZlICJlIikKICAgKG1vdXNlLW1pbmlidWZmZXItY2hlY2sgY2xpY2spCiAgIChsZXQqICgocG9z biAoZXZlbnQtc3RhcnQgY2xpY2spKQogCSAoY2xpY2stcG9zbiAocG9zbi1wb2ludCBwb3NuKSkp CiAgICAgKHNlbGVjdC13aW5kb3cgKHBvc24td2luZG93IHBvc24pKQogICAgIChpZiAobnVtYmVy cCBjbGljay1wb3NuKQogCShraWxsLXJlZ2lvbiAobWluIChwb2ludCkgY2xpY2stcG9zbikKIAkJ ICAgICAobWF4IChwb2ludCkgY2xpY2stcG9zbikpKSkpCiAKKyhkZWZjdXN0b20gbW91c2UteWFu ay1hdC1jbGljay1hY3Rpb24gOmxpZ2h0aW5zCisgICJXaGV0aGVyIG1vdXNlLXlhbmstYXQtY2xp Y2sgc2hvdWxkIGRvIGEgcmVhbCBgeWFuaycgCitvciB1c2UgYGludGVycHJvZ3JhbS1saWdodGlu cy1mdW5jdGlvbicgdG8gdHJ5IGFuIFgxMS1taWRkbGVidXR0b24tc3R5bGUgCitzb3J0IG9mIGlu c2VydC4KKworWWFuazogYSBraWxsLXJpbmcgeWFuaywgd2hpY2ggbWF5IGluIHR1cm4gY2FsbCBg aW50ZXJwcm9ncmFtLXBhc3RlLWZ1bmN0aW9uJworCitMaWdodEluczogQ2FsbCBgaW50ZXJwcm9n cmFtLWxpZ2h0aW5zLWZ1bmN0aW9uJywgZG8gbm90IHVzZSBraWxsIHJpbmciCisKKyAgOnR5cGUg JyhjaG9pY2UgKGNvbnN0IDp0YWcgIkxpZ2h0SW5zIiA6bGlnaHRpbnMpCisJCSAoY29uc3QgOnRh ZyAiWWFuayIgOnlhbmspKQorICA6Z3JvdXAgJ21vdXNlKQorCiAoZGVmdW4gbW91c2UteWFuay1h dC1jbGljayAoY2xpY2sgYXJnKQotICAiSW5zZXJ0IHRoZSBsYXN0IHN0cmV0Y2ggb2Yga2lsbGVk IHRleHQgYXQgdGhlIHBvc2l0aW9uIGNsaWNrZWQgb24uCisgICJJbnNlcnQgdGhlIGxhc3Qgc3Ry ZXRjaCBvZiBraWxsZWQgdGV4dCBhcyBpZiBieSBcXFt5YW5rXSBhdCB0aGUKKyBwb3NpdGlvbiBj bGlja2VkIG9uLCBpZiBgbW91c2UteWFuay1hdC1jbGljay1hY3Rpb24nIGlzIHlhbmsuCisKK0lm IGBtb3VzZS15YW5rLWF0LWNsaWNrLWFjdGlvbicgaXMgbGlnaHRpbnMgaW5zZXJ0IHRleHQKK3Jl dHVybmVkIGJ5IGBpbnRlcnByb2dyYW0tbGlnaHRpbnMtZnVuY3Rpb24nIHdpdGhvdXQKK2ludm9s dmluZyBraWxsIHJpbmcuCisKIEFsc28gbW92ZSBwb2ludCB0byBvbmUgZW5kIG9mIHRoZSB0ZXh0 IHRodXMgaW5zZXJ0ZWQgKG5vcm1hbGx5IHRoZSBlbmQpLAogYW5kIHNldCBtYXJrIGF0IHRoZSBi ZWdpbm5pbmcuCiBQcmVmaXggYXJndW1lbnRzIGFyZSBpbnRlcnByZXRlZCBhcyB3aXRoIFxcW3lh bmtdLgogSWYgYG1vdXNlLXlhbmstYXQtcG9pbnQnIGlzIG5vbi1uaWwsIGluc2VydCBhdCBwb2lu dAogcmVnYXJkbGVzcyBvZiB3aGVyZSB5b3UgY2xpY2suIgogICAoaW50ZXJhY3RpdmUgImVcblAi KQogICA7OyBHaXZlIHRlbXBvcmFyeSBtb2RlcyBzdWNoIGFzIGlzZWFyY2ggYSBjaGFuY2UgdG8g dHVybiBvZmYuCiAgIChydW4taG9va3MgJ21vdXNlLWxlYXZlLWJ1ZmZlci1ob29rKQogICAob3Ig bW91c2UteWFuay1hdC1wb2ludCAobW91c2Utc2V0LXBvaW50IGNsaWNrKSkKLSAgKHNldHEgdGhp cy1jb21tYW5kICd5YW5rKQogICAoc2V0cSBtb3VzZS1zZWxlY3Rpb24tY2xpY2stY291bnQgMCkK LSAgKHlhbmsgYXJnKSkKKyAgKGNvbmQgKChlcSBtb3VzZS15YW5rLWF0LWNsaWNrLWFjdGlvbiA6 bGlnaHRpbnMpCisJIChhbmQgaW50ZXJwcm9ncmFtLWxpZ2h0aW5zLWZ1bmN0aW9uCisJICAgICAg KGluc2VydCAoZnVuY2FsbCAnaW50ZXJwcm9ncmFtLWxpZ2h0aW5zLWZ1bmN0aW9uKSkpKQorCSh0 IAorCSAoc2V0cSB0aGlzLWNvbW1hbmQgJ3lhbmspCisJICh5YW5rIGFyZykpKSkKIAogKGRlZnVu IG1vdXNlLXlhbmstcHJpbWFyeSAoY2xpY2spCiAgICJJbnNlcnQgdGhlIHByaW1hcnkgc2VsZWN0 aW9uIGF0IHRoZSBwb3NpdGlvbiBjbGlja2VkIG9uLgogTW92ZSBwb2ludCB0byB0aGUgZW5kIG9m IHRoZSBpbnNlcnRlZCB0ZXh0LgogSWYgYG1vdXNlLXlhbmstYXQtcG9pbnQnIGlzIG5vbi1uaWws IGluc2VydCBhdCBwb2ludAogcmVnYXJkbGVzcyBvZiB3aGVyZSB5b3UgY2xpY2suIgogICAoaW50 ZXJhY3RpdmUgImUiKQogICA7OyBHaXZlIHRlbXBvcmFyeSBtb2RlcyBzdWNoIGFzIGlzZWFyY2gg YSBjaGFuY2UgdG8gdHVybiBvZmYuCiAgIChydW4taG9va3MgJ21vdXNlLWxlYXZlLWJ1ZmZlci1o b29rKQogICAob3IgbW91c2UteWFuay1hdC1wb2ludCAobW91c2Utc2V0LXBvaW50IGNsaWNrKSkK QEAgLTE0MjksODMgKzE0NTUsMTM0IEBACiAgICAgKGxldCAoKHRhaWwgYnVmZmVyLXVuZG8tbGlz dCkpCiAgICAgICA7OyBTZWFyY2ggYmFjayBpbiBidWZmZXItdW5kby1saXN0IGZvciB0aGUgc3Ry aW5nCiAgICAgICA7OyB0aGF0IGNhbWUgZnJvbSBkZWxldGluZyBvbmUgY2hhcmFjdGVyLgogICAg ICAgKHdoaWxlIChhbmQgdGFpbCAobm90IChzdHJpbmdwIChjYXIgKGNhciB0YWlsKSkpKSkKIAko c2V0cSB0YWlsIChjZHIgdGFpbCkpKQogICAgICAgOzsgUmVwbGFjZSBpdCB3aXRoIGFuIGVudHJ5 IGZvciB0aGUgZW50aXJlIGRlbGV0ZWQgdGV4dC4KICAgICAgIChhbmQgdGFpbAogCSAgIChzZXRj YXIgdGFpbCAoY29ucyAoY2FyIGtpbGwtcmluZykgKG1pbiBiZWcgZW5kKSkpKSkpCiAgICh1bmRv LWJvdW5kYXJ5KSkKIAorKGRlZmN1c3RvbSBtb3VzZS1zYXZlLXRoZW4ta2lsbC1jb3B5LXJlZ2lv biA6ZG91YmxlCisgICJIb3cgc2hvdWxkIG1vdXNlLXNhdmUtdGhlbi1raWxsIHNhdmUgdGhlbiBr aWxsPworTmV2ZXI6IG9ubHkgYWRqdXN0IGFjdGl2ZSByZWdpb24sIG5ldmVyIGtpbGwuCitTaW5n bGU6IHNhdmUgb24gc2luZ2xlIGNsaWNrLCBraWxsIG9uIHNlY29uZCBjbGljaworRG91YmxlOiBh ZGp1c3QgYWN0aXZlIHJlZ2lvbiBvbiBmaXJzdCBjbGljaywgc2F2ZSAKK29uIHNlY29uZCwga2ls bCBvbiB0aGlyZCIKKworOnR5cGUgJyhjaG9pY2UgKGNvbnN0IDp0YWcgIk5ldmVyIiAgbmlsKQor ICAgICAgICAgICAgICAoY29uc3QgOnRhZyAiU2luZ2xlIiB0KQorICAgICAgICAgICAgICAoY29u c3QgOnRhZyAiRG91YmxlIiA6ZG91YmxlKSkKKzpncm91cCAnbW91c2UpCisKKworCiAoZGVmdW4g bW91c2Utc2F2ZS10aGVuLWtpbGwgKGNsaWNrKQogICAiU2F2ZSB0ZXh0IHRvIHBvaW50IGluIGtp bGwgcmluZzsgdGhlIHNlY29uZCB0aW1lLCBraWxsIHRoZSB0ZXh0LgorCitCZWhhdmlvdXIgZGVw ZW5kcyBvbiBgbW91c2Utc2F2ZS10aGVuLWtpbGwtY29weS1yZWdpb24nLiAgSWYgdGhhdAoraXMg bmlsLCBjbGlja2luZyAgbWVyZWx5IGFkanVzdHMgdGhlIHJlZ2lvbi4gSWYgOmRvdWJsZSwgc2lu Z2xlIAorY2xpY2tpbmcgYWRqdXN0cyB0aGUgIHJlZ2lvbiwgZG91YmxlIGNsaWNraW5nIHNhdmVz IHRleHQgdG8ga2lsbCAKK3JpbmcsIHRyaXBsZSBjbGlja2luZyBraWxscyB0aGUgdGV4dC4gIElm IG5pbCwKK3NpbmdsZSBjbGlja2luZyBzYXZlcyB0ZXh0IHRvIGtpbGwgcmluZywgZG91YmxlIGNs aWNraW5nIGtpbGxzLgorCiBJZiB0aGUgdGV4dCBiZXR3ZWVuIHBvaW50IGFuZCB0aGUgbW91c2Ug aXMgdGhlIHNhbWUgYXMgd2hhdCdzCiBhdCB0aGUgZnJvbnQgb2YgdGhlIGtpbGwgcmluZywgdGhp cyBkZWxldGVzIHRoZSB0ZXh0LgogT3RoZXJ3aXNlLCBpdCBhZGRzIHRoZSB0ZXh0IHRvIHRoZSBr aWxsIHJpbmcsIGxpa2UgXFxba2lsbC1yaW5nLXNhdmVdLAogd2hpY2ggcHJlcGFyZXMgZm9yIGEg c2Vjb25kIGNsaWNrIHRvIGRlbGV0ZSB0aGUgdGV4dC4KIAogSWYgeW91IGhhdmUgc2VsZWN0ZWQg d29yZHMgb3IgbGluZXMsIHRoaXMgY29tbWFuZCBleHRlbmRzIHRoZQogc2VsZWN0aW9uIHRocm91 Z2ggdGhlIHdvcmQgb3IgbGluZSBjbGlja2VkIG9uLiAgSWYgeW91IGRvIHRoaXMKIGFnYWluIGlu IGEgZGlmZmVyZW50IHBvc2l0aW9uLCBpdCBleHRlbmRzIHRoZSBzZWxlY3Rpb24gYWdhaW4uCi1J ZiB5b3UgZG8gdGhpcyB0d2ljZSBpbiB0aGUgc2FtZSBwb3NpdGlvbiwgdGhlIHNlbGVjdGlvbiBp cyBraWxsZWQuIgorSWYgeW91IGRvIHRoaXMgdHdpY2UgKG9yIHRocmVlIHRpbWVzIGlmIDpkb3Vi bGUpIGluIHRoZSBzYW1lIAorcG9zaXRpb24sIHRoZSBzZWxlY3Rpb24gaXMga2lsbGVkLgorIgog ICAoaW50ZXJhY3RpdmUgImUiKQogICAobGV0ICgoYmVmb3JlLXNjcm9sbAogCSAod2l0aC1jdXJy ZW50LWJ1ZmZlciAod2luZG93LWJ1ZmZlciAocG9zbi13aW5kb3cgKGV2ZW50LXN0YXJ0IGNsaWNr KSkpCiAJICAgcG9pbnQtYmVmb3JlLXNjcm9sbCkpKQogICAgIChtb3VzZS1taW5pYnVmZmVyLWNo ZWNrIGNsaWNrKQogICAgIChsZXQgKChjbGljay1wb3NuIChwb3NuLXBvaW50IChldmVudC1zdGFy dCBjbGljaykpKQogCSAgOzsgRG9uJ3QgbGV0IGEgc3Vic2VxdWVudCBraWxsIGNvbW1hbmQgYXBw ZW5kIHRvIHRoaXMgb25lOgogCSAgOzsgcHJldmVudCBzZXR0aW5nIHRoaXMtY29tbWFuZCB0byBr aWxsLXJlZ2lvbi4KIAkgICh0aGlzLWNvbW1hbmQgdGhpcy1jb21tYW5kKSkKICAgICAgIChpZiAo YW5kICh3aXRoLWN1cnJlbnQtYnVmZmVyCiAgICAgICAgICAgICAgICAgICAgKHdpbmRvdy1idWZm ZXIgKHBvc24td2luZG93IChldmVudC1zdGFydCBjbGljaykpKQogCQkgKGFuZCAobWFyayB0KSAo PiAobW9kIG1vdXNlLXNlbGVjdGlvbi1jbGljay1jb3VudCAzKSAwKQogCQkgICAgICA7OyBEb24n dCBiZSBmb29sZWQgYnkgYSByZWNlbnQgY2xpY2sgaW4gc29tZSBvdGhlciBidWZmZXIuCiAJCSAg ICAgIChlcSBtb3VzZS1zZWxlY3Rpb24tY2xpY2stY291bnQtYnVmZmVyCiAJCQkgIChjdXJyZW50 LWJ1ZmZlcikpKSkpCisJICA7OyBtb3ZpbmcgYnkgd29yZHMvbGluZXMKIAkgIChpZiAobm90IChh bmQgKGVxIGxhc3QtY29tbWFuZCAnbW91c2Utc2F2ZS10aGVuLWtpbGwpCiAJCQkoZXF1YWwgY2xp Y2stcG9zbgogCQkJICAgICAgIChjYXIgKGNkci1zYWZlIChjZHItc2FmZSBtb3VzZS1zYXZlLXRo ZW4ta2lsbC1wb3NuKSkpKSkpCiAJICAgICAgOzsgRmluZCBib3RoIGVuZHMgb2YgdGhlIG9iamVj dCBzZWxlY3RlZCBieSB0aGlzIGNsaWNrLgogCSAgICAgIChsZXQqICgocmFuZ2UKIAkJICAgICAg KG1vdXNlLXN0YXJ0LWVuZCBjbGljay1wb3NuIGNsaWNrLXBvc24KIAkJCQkgICAgICAgbW91c2Ut c2VsZWN0aW9uLWNsaWNrLWNvdW50KSkpCiAJCTs7IE1vdmUgd2hpY2hldmVyIGVuZCBpcyBjbG9z ZXIgdG8gdGhlIGNsaWNrLgogCQk7OyBUaGF0J3Mgd2hhdCB4dGVybSBkb2VzLCBhbmQgaXQgc2Vl bXMgcmVhc29uYWJsZS4KIAkJKGlmICg8IChhYnMgKC0gY2xpY2stcG9zbiAobWFyayB0KSkpCiAJ CSAgICAgICAoYWJzICgtIGNsaWNrLXBvc24gKHBvaW50KSkpKQogCQkgICAgKHNldC1tYXJrIChj YXIgcmFuZ2UpKQogCQkgIChnb3RvLWNoYXIgKG50aCAxIHJhbmdlKSkpCi0JCTs7IFdlIGhhdmUg YWxyZWFkeSBwdXQgdGhlIG9sZCByZWdpb24gaW4gdGhlIGtpbGwgcmluZy4KLQkJOzsgUmVwbGFj ZSBpdCB3aXRoIHRoZSBleHRlbmRlZCByZWdpb24uCi0JCTs7IChJdCB3b3VsZCBiZSBhbm5veWlu ZyB0byBtYWtlIGEgc2VwYXJhdGUgZW50cnkuKQotCQkoa2lsbC1uZXcgKGJ1ZmZlci1zdWJzdHJp bmcgKHBvaW50KSAobWFyayB0KSkgdCkKKwkJCisJCShjb25kICgoZXEgbW91c2Utc2F2ZS10aGVu LWtpbGwtY29weS1yZWdpb24gdCkgOyBzYXZlIG9uIGZpcnN0IGNsaWNrCisJCSAgICAgICA7OyBX ZSBoYXZlIGFscmVhZHkgcHV0IHRoZSBvbGQgcmVnaW9uIGluIHRoZSBraWxsIHJpbmcuCisJCSAg ICAgICA7OyBSZXBsYWNlIGl0IHdpdGggdGhlIGV4dGVuZGVkIHJlZ2lvbi4KKwkJICAgICAgIDs7 IChJdCB3b3VsZCBiZSBhbm5veWluZyB0byBtYWtlIGEgc2VwYXJhdGUgZW50cnkuKQorCQkgICAg ICAgKGtpbGwtbmV3IChidWZmZXItc3Vic3RyaW5nIChwb2ludCkgKG1hcmsgdCkpIHQpCisJCSAg ICAgICA7OyBBcnJhbmdlIGZvciBhIHJlcGVhdGVkIG1vdXNlLTMgdG8ga2lsbCB0aGlzIHJlZ2lv bi4KKwkJICAgICAgIChzZXRxIG1vdXNlLXNhdmUtdGhlbi1raWxsLXBvc24KKwkJCSAgICAgKGxp c3QgKGNhciBraWxsLXJpbmcpIChwb2ludCkgY2xpY2stcG9zbikpKQorCQkgICAgICAoKGVxIG1v dXNlLXNhdmUtdGhlbi1raWxsLWNvcHktcmVnaW9uIDpkb3VibGUpIDsgbm8gc2F2ZSBvbiBmaXJz dCBjbGljaworCQkgICAgICAgOzsgbm8gc2F2ZSBvbiBmaXJzdCBjbGljaywgYnV0IG5lZWQgdG8g a25vdyByZWdpb24gZnJvbSBmaXJzdAorCQkgICAgICAgOzsgbmlsIGZvciBzYXZlZCBraWxsIHJp bmcgdG9wIHVzZWQgdG8gaW5kaWNhdGUgbGltYm8gYmV0d2VlbiBzZWNvbmQgYW5kIHRoaXJkIGNs aWNrcworCQkgICAgICAgKHNldHEgbW91c2Utc2F2ZS10aGVuLWtpbGwtcG9zbgorCQkJICAgICAo bGlzdCBuaWwgKHBvaW50KSBjbGljay1wb3NuKSkpKQogCQkobW91c2Utc2V0LXJlZ2lvbi0xKQot CQk7OyBBcnJhbmdlIGZvciBhIHJlcGVhdGVkIG1vdXNlLTMgdG8ga2lsbCB0aGlzIHJlZ2lvbi4K LQkJKHNldHEgbW91c2Utc2F2ZS10aGVuLWtpbGwtcG9zbgotCQkgICAgICAobGlzdCAoY2FyIGtp bGwtcmluZykgKHBvaW50KSBjbGljay1wb3NuKSkKIAkJKG1vdXNlLXNob3ctbWFyaykpCi0JICAg IDs7IElmIHdlIGNsaWNrIHRoaXMgYnV0dG9uIGFnYWluIHdpdGhvdXQgbW92aW5nIGl0LAotCSAg ICA7OyB0aGF0IHRpbWUga2lsbC4KLQkgICAgKG1vdXNlLXNhdmUtdGhlbi1raWxsLWRlbGV0ZS1y ZWdpb24gKG1hcmspIChwb2ludCkpCi0JICAgIChzZXRxIG1vdXNlLXNlbGVjdGlvbi1jbGljay1j b3VudCAwKQotCSAgICAoc2V0cSBtb3VzZS1zYXZlLXRoZW4ta2lsbC1wb3NuIG5pbCkpCi0JKGlm IChhbmQgKGVxIGxhc3QtY29tbWFuZCAnbW91c2Utc2F2ZS10aGVuLWtpbGwpCisJICAgIChjb25k ICgoZXEgbW91c2Utc2F2ZS10aGVuLWtpbGwtY29weS1yZWdpb24gdCkgOyBraWxsIG9uIHNlY29u ZCBjbGljaworCQkgICA7OyBJZiB3ZSBjbGljayB0aGlzIGJ1dHRvbiBhZ2FpbiB3aXRob3V0IG1v dmluZyBpdCwKKwkJICAgOzsgdGhhdCB0aW1lIGtpbGwuCisJCSAgIChtb3VzZS1zYXZlLXRoZW4t a2lsbC1kZWxldGUtcmVnaW9uIChtYXJrKSAocG9pbnQpKQorCQkgICAoc2V0cSBtb3VzZS1zZWxl Y3Rpb24tY2xpY2stY291bnQgMCkKKwkJICAgKHNldHEgbW91c2Utc2F2ZS10aGVuLWtpbGwtcG9z biBuaWwpKQorCQkgICgoZXEgbW91c2Utc2F2ZS10aGVuLWtpbGwtY29weS1yZWdpb24gOmRvdWJs ZSkgO3NhdmUgb24gc2Vjb25kL2tpbGwgb24gdGhpcmQKKwkJICAgKGlmIChjYXItc2FmZSBtb3Vz ZS1zYXZlLXRoZW4ta2lsbC1wb3NuKSA7IGtpbGwgb24gdGhpcmQKKwkJICAgICAgIChwcm9nbgor CQkJIChtb3VzZS1zYXZlLXRoZW4ta2lsbC1kZWxldGUtcmVnaW9uIChtYXJrKSAocG9pbnQpKQor CQkJIChzZXRxIG1vdXNlLXNlbGVjdGlvbi1jbGljay1jb3VudCAwKQorCQkJIChzZXRxIG1vdXNl LXNhdmUtdGhlbi1raWxsLXBvc24gbmlsKSkKKwkJICAgICAocHJvZ24gIDsgc2F2ZSBvbiBzZWNv bmQKKwkJICAgICAgIChraWxsLW5ldyAoYnVmZmVyLXN1YnN0cmluZyAocG9pbnQpIChtYXJrIHQp KSB0KQorCQkgICAgICAgKHNldHEgbW91c2Utc2F2ZS10aGVuLWtpbGwtcG9zbgorCQkJICAgICAo bGlzdCAoY2FyIGtpbGwtcmluZykgKHBvaW50KSBjbGljay1wb3NuKSkpKSkpKQorCTs7IG1vdmlu ZyBieSBjaGFycworCShpZiAoYW5kIChlcSBsYXN0LWNvbW1hbmQgJ21vdXNlLXNhdmUtdGhlbi1r aWxsKSAKIAkJIG1vdXNlLXNhdmUtdGhlbi1raWxsLXBvc24KLQkJIChlcSAoY2FyIG1vdXNlLXNh dmUtdGhlbi1raWxsLXBvc24pIChjYXIga2lsbC1yaW5nKSkKLQkJIChlcXVhbCAoY2RyIG1vdXNl LXNhdmUtdGhlbi1raWxsLXBvc24pIChsaXN0IChwb2ludCkgY2xpY2stcG9zbikpKQotCSAgICA7 OyBJZiB0aGlzIGlzIHRoZSBzZWNvbmQgdGltZSB3ZSd2ZSBjYWxsZWQKLQkgICAgOzsgbW91c2Ut c2F2ZS10aGVuLWtpbGwsIGRlbGV0ZSB0aGUgdGV4dCBmcm9tIHRoZSBidWZmZXIuCi0JICAgIChw cm9nbgotCSAgICAgIChtb3VzZS1zYXZlLXRoZW4ta2lsbC1kZWxldGUtcmVnaW9uIChwb2ludCkg KG1hcmspKQotCSAgICAgIDs7IEFmdGVyIHdlIGtpbGwsIGFub3RoZXIgY2xpY2sgY291bnRzIGFz ICJ0aGUgZmlyc3QgdGltZSIuCi0JICAgICAgKHNldHEgbW91c2Utc2F2ZS10aGVuLWtpbGwtcG9z biBuaWwpKQorCQkgKGVxdWFsIChjZHItc2FmZSBtb3VzZS1zYXZlLXRoZW4ta2lsbC1wb3NuKSAo bGlzdCAocG9pbnQpIGNsaWNrLXBvc24pKSkKKwkgICAgKGNvbmQgKChlcSBtb3VzZS1zYXZlLXRo ZW4ta2lsbC1jb3B5LXJlZ2lvbiB0KSA7IGtpbGwgb24gc2Vjb25kIGNsaWNrCisJCSAgIDs7IElm IHRoaXMgaXMgdGhlIHNlY29uZCB0aW1lIHdlJ3ZlIGNhbGxlZAorCQkgICA7OyBtb3VzZS1zYXZl LXRoZW4ta2lsbCwgZGVsZXRlIHRoZSB0ZXh0IGZyb20gdGhlIGJ1ZmZlci4KKwkJICAgKG1vdXNl LXNhdmUtdGhlbi1raWxsLWRlbGV0ZS1yZWdpb24gKHBvaW50KSAobWFyaykpCisJCSAgIDs7IEFm dGVyIHdlIGtpbGwsIGFub3RoZXIgY2xpY2sgY291bnRzIGFzICJ0aGUgZmlyc3QgdGltZSIuCisJ CSAgIChzZXRxIG1vdXNlLXNhdmUtdGhlbi1raWxsLXBvc24gbmlsKSkKKwkJICAoKGVxIG1vdXNl LXNhdmUtdGhlbi1raWxsLWNvcHktcmVnaW9uIDpkb3VibGUpIDsgc2F2ZSBvbiBzZWNvbmQgLyBr aWxsIG9uIHRoaXJkCisJCSAgIChpZiAoY2FyLXNhZmUgbW91c2Utc2F2ZS10aGVuLWtpbGwtcG9z bikgOyBraWxsIG9uIHRoaXJkCisJCSAgICAgICAocHJvZ24KKwkJCSAobW91c2Utc2F2ZS10aGVu LWtpbGwtZGVsZXRlLXJlZ2lvbiAocG9pbnQpIChtYXJrKSkKKwkJCSAoc2V0cSBtb3VzZS1zYXZl LXRoZW4ta2lsbC1wb3NuIG5pbCkpCisJCSAgICAgKHByb2duICA7IHNhdmUgb24gc2Vjb25kCisJ CSAgICAgICAoa2lsbC1uZXcgKGJ1ZmZlci1zdWJzdHJpbmcgKHBvaW50KSAobWFyayB0KSkgdCkK KwkJICAgICAgIChzZXRxIG1vdXNlLXNhdmUtdGhlbi1raWxsLXBvc24KKwkJCSAgICAgKGxpc3Qg KGNhciBraWxsLXJpbmcpIChwb2ludCkgY2xpY2stcG9zbikpKSkpKQogCSAgOzsgVGhpcyBpcyBu b3QgYSByZXBldGl0aW9uLgogCSAgOzsgV2UgYXJlIGFkanVzdGluZyBhbiBvbGQgc2VsZWN0aW9u IG9yIGNyZWF0aW5nIGEgbmV3IG9uZS4KIAkgIChpZiAob3IgKGFuZCAoZXEgbGFzdC1jb21tYW5k ICdtb3VzZS1zYXZlLXRoZW4ta2lsbCkKIAkJICAgICAgIG1vdXNlLXNhdmUtdGhlbi1raWxsLXBv c24pCiAJCSAgKGFuZCBtYXJrLWFjdGl2ZSB0cmFuc2llbnQtbWFyay1tb2RlKQogCQkgIChhbmQg KG1lbXEgbGFzdC1jb21tYW5kCiAJCQkgICAgICcobW91c2UtZHJhZy1yZWdpb24gbW91c2Utc2V0 LXJlZ2lvbikpCiAJCSAgICAgICAob3IgbWFyay1ldmVuLWlmLWluYWN0aXZlCiAJCQkgICAobm90 IHRyYW5zaWVudC1tYXJrLW1vZGUpKSkpCiAJICAgICAgOzsgV2UgaGF2ZSBhIHNlbGVjdGlvbiBv ciBzdWl0YWJsZSByZWdpb24sIHNvIGFkanVzdCBpdC4KQEAgLTE1MTMsMzEgKzE1OTAsMzkgQEAK IAkJICAgICAobmV3IChwb3NuLXBvaW50IHBvc24pKSkKIAkJKHNlbGVjdC13aW5kb3cgKHBvc24t d2luZG93IHBvc24pKQogCQkoaWYgKG51bWJlcnAgbmV3KQogCQkgICAgKHByb2duCiAJCSAgICAg IDs7IE1vdmUgd2hpY2hldmVyIGVuZCBvZiB0aGUgcmVnaW9uIGlzIGNsb3NlciB0byB0aGUgY2xp Y2suCiAJCSAgICAgIDs7IFRoYXQgaXMgd2hhdCB4dGVybSBkb2VzLCBhbmQgaXQgc2VlbXMgcmVh c29uYWJsZS4KIAkJICAgICAgKGlmICg8PSAoYWJzICgtIG5ldyAocG9pbnQpKSkgKGFicyAoLSBu ZXcgKG1hcmsgdCkpKSkKIAkJCSAgKGdvdG8tY2hhciBuZXcpCiAJCQkoc2V0LW1hcmsgbmV3KSkK IAkJICAgICAgKHNldHEgZGVhY3RpdmF0ZS1tYXJrIG5pbCkpKQotCQkoa2lsbC1uZXcgKGJ1ZmZl ci1zdWJzdHJpbmcgKHBvaW50KSAobWFyayB0KSkgdCkpCisJCShhbmQgKGVxIG1vdXNlLXNhdmUt dGhlbi1raWxsLWNvcHktcmVnaW9uIHQpIDsgc2F2ZSBvbiBmaXJzdCBjbGljaworCQkgICAgIChr aWxsLW5ldyAoYnVmZmVyLXN1YnN0cmluZyAocG9pbnQpIChtYXJrIHQpKSB0KSkpCiAJICAgIDs7 IFNldCB0aGUgbWFyayB3aGVyZSBwb2ludCBpcywgdGhlbiBtb3ZlIHdoZXJlIGNsaWNrZWQuCiAJ ICAgIChtb3VzZS1zZXQtbWFyay1mYXN0IGNsaWNrKQogCSAgICAoaWYgYmVmb3JlLXNjcm9sbAog CQkoZ290by1jaGFyIGJlZm9yZS1zY3JvbGwpKQogCSAgICAoZXhjaGFuZ2UtcG9pbnQtYW5kLW1h cmspICAgO1doeT8/PyAtLVN0ZWYKLQkgICAgKGtpbGwtbmV3IChidWZmZXItc3Vic3RyaW5nIChw b2ludCkgKG1hcmsgdCkpKSkKLSAgICAgICAgICAobW91c2Utc2hvdy1tYXJrKQorCSAgICAoYW5k IChlcSBtb3VzZS1zYXZlLXRoZW4ta2lsbC1jb3B5LXJlZ2lvbiB0KSA7IHNhdmUgb24gZmlyc3Qg Y2xpY2sKKwkJIChraWxsLW5ldyAoYnVmZmVyLXN1YnN0cmluZyAocG9pbnQpIChtYXJrIHQpKSkp KQorCSAgKGNvbmQgKChlcSBtb3VzZS1zYXZlLXRoZW4ta2lsbC1jb3B5LXJlZ2lvbiB0KSA7IHNh dmUgb24gZmlyc3QgY2xpY2sKKwkJIChzZXRxIG1vdXNlLXNhdmUtdGhlbi1raWxsLXBvc24KKwkJ ICAgICAgIChsaXN0IChjYXIga2lsbC1yaW5nKSAocG9pbnQpIGNsaWNrLXBvc24pKSkKKwkJKChl cSBtb3VzZS1zYXZlLXRoZW4ta2lsbC1jb3B5LXJlZ2lvbiA6ZG91YmxlKSA7IG5vIHNhdmUgb24g Zmlyc3QgY2xpY2sKKwkJIDs7IG5vIHNhdmUgb24gZmlyc3QgY2xpY2ssIGJ1dCBuZWVkIHRvIGtu b3cgcmVnaW9uIGZyb20gZmlyc3QKKwkJIDs7IG5pbCBmb3Igc2F2ZWQga2lsbCByaW5nIHRvcCB1 c2VkIHRvIGluZGljYXRlIGxpbWJvIGJldHdlZW4gc2Vjb25kIGFuZCB0aGlyZCBjbGlja3MKKwkJ IChzZXRxIG1vdXNlLXNhdmUtdGhlbi1raWxsLXBvc24KKwkJICAgICAgIChsaXN0IG5pbCAocG9p bnQpIGNsaWNrLXBvc24pKSkpCiAJICAobW91c2Utc2V0LXJlZ2lvbi0xKQotCSAgKHNldHEgbW91 c2Utc2F2ZS10aGVuLWtpbGwtcG9zbgotCQkobGlzdCAoY2FyIGtpbGwtcmluZykgKHBvaW50KSBj bGljay1wb3NuKSkpKSkpKQorICAgICAgICAgIChtb3VzZS1zaG93LW1hcmspKSkpKSkKIAwKIChn bG9iYWwtc2V0LWtleSBbTS1tb3VzZS0xXSAnbW91c2Utc3RhcnQtc2Vjb25kYXJ5KQogKGdsb2Jh bC1zZXQta2V5IFtNLWRyYWctbW91c2UtMV0gJ21vdXNlLXNldC1zZWNvbmRhcnkpCiAoZ2xvYmFs LXNldC1rZXkgW00tZG93bi1tb3VzZS0xXSAnbW91c2UtZHJhZy1zZWNvbmRhcnkpCiAoZ2xvYmFs LXNldC1rZXkgW00tbW91c2UtM10gJ21vdXNlLXNlY29uZGFyeS1zYXZlLXRoZW4ta2lsbCkKIChn bG9iYWwtc2V0LWtleSBbTS1tb3VzZS0yXSAnbW91c2UteWFuay1zZWNvbmRhcnkpCiAKIChkZWZj b25zdCBtb3VzZS1zZWNvbmRhcnktb3ZlcmxheQogICAobGV0ICgob2wgKG1ha2Utb3ZlcmxheSAo cG9pbnQtbWluKSAocG9pbnQtbWluKSkpKQogICAgIChkZWxldGUtb3ZlcmxheSBvbCkKZGlmZiAt TmFyVTEwIGVtYWNzLWZzYXIvbGlzcC9zaW1wbGUuZWwgZW1hY3MvbGlzcC9zaW1wbGUuZWwKLS0t IGVtYWNzLWZzYXIvbGlzcC9zaW1wbGUuZWwJMjAwOC0wMi0wMiAwMjowNzoxOS4wMDAwMDAwMDAg KzAwMDAKKysrIGVtYWNzL2xpc3Avc2ltcGxlLmVsCTIwMDgtMDItMDMgMDQ6NTI6NTQuMDAwMDAw MDAwICswMDAwCkBAIC0yNjAzLDIwICsyNjAzLDUyIEBACiBzeXN0ZW0gc3VwcG9ydHMgbXVsdGlw bGUgc2VsZWN0aW9ucy4gVGhlIGZpcnN0IHN0cmluZyB3aWxsIGJlCiB1c2VkIGFzIHRoZSBwYXN0 ZWQgdGV4dCwgYnV0IHRoZSBvdGhlciB3aWxsIGJlIHBsYWNlZCBpbiB0aGUKIGtpbGwgcmluZyBm b3IgZWFzeSBhY2Nlc3MgdmlhIGB5YW5rLXBvcCcuCiAKIE5vdGUgdGhhdCB0aGUgZnVuY3Rpb24g c2hvdWxkIHJldHVybiBhIHN0cmluZyBvbmx5IGlmIGEgcHJvZ3JhbSBvdGhlcgogdGhhbiBFbWFj cyBoYXMgcHJvdmlkZWQgYSBzdHJpbmcgZm9yIHBhc3Rpbmc7IGlmIEVtYWNzIHByb3ZpZGVkIHRo ZQogbW9zdCByZWNlbnQgc3RyaW5nLCB0aGUgZnVuY3Rpb24gc2hvdWxkIHJldHVybiBuaWwuICBJ ZiBpdCBpcwogZGlmZmljdWx0IHRvIHRlbGwgd2hldGhlciBFbWFjcyBvciBzb21lIG90aGVyIHBy b2dyYW0gcHJvdmlkZWQgdGhlCiBjdXJyZW50IHN0cmluZywgaXQgaXMgcHJvYmFibHkgZ29vZCBl bm91Z2ggdG8gcmV0dXJuIG5pbCBpZiB0aGUgc3RyaW5nCiBpcyBlcXVhbCAoYWNjb3JkaW5nIHRv IGBzdHJpbmc9JykgdG8gdGhlIGxhc3QgdGV4dCBFbWFjcyBwcm92aWRlZC4iKQorCisoZGVmdmFy IGludGVycHJvZ3JhbS1saWdodGlucy1mdW5jdGlvbiBuaWwKKyAgIkZ1bmN0aW9uIHRvIGNhbGwg dG8gZ2V0IHRleHQgbWFkZSBhdmFpbGFibGUgZm9yIGhpZ2hsaWdodC1pbnNlcnRpb24gZnJvbSBv dGhlciBwcm9ncmFtcy4KKworU29tZSB3aW5kb3cgc3lzdGVtcyAob2theSBvbmUgd2luZG93IHN5 c3RlbSwgWDExKSBwcm92aWRlIGEKK2ZhY2lsaXR5IGZvciBpbW1lZGlhdGVseSBpbnNlcnRpbmcg dGV4dCBoaWdobGlnaHRlZCBpbiBvbmUgcHJvZ3JhbQoraW50byBhbm90aGVyLCBieXBhc3Npbmcg dGhlIGNsaXBib2FyZC4KKworVGhpcyB2YXJpYWJsZSBob2xkcyBhIGZ1bmN0aW9uIHRoYXQgRW1h Y3MgY2FsbHMgdG8gb2J0YWluCit0ZXh0IHRoYXQgb3RoZXIgcHJvZ3JhbXMgaGF2ZSBwcm92aWRl ZCBmb3Igc3VjaCAnbGlnaHR3ZWlnaHQKK2luc2VydGlvbicuICBUaGUgY29udmVudGlvbiBoYXMg ZGV2ZWxvcGVkIG9uIFgxMSAKK3RoYXQgdGhpcyBsaWdodHdlaWdodCBoaWdobGlnaHQvaW5zZXJ0 aW9uIHNob3VsZCBiZSBlbnRpcmVseQoraW5kZXBlbmRlbnQgZnJvbSB0aGUgY2xpcGJvYXJkIHBy b3Blci4KKworVGhlIGZ1bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQgd2l0aCBubyBhcmd1bWVudHMu ICBJZiB0aGUgZnVuY3Rpb24KK3JldHVybnMgbmlsLCB0aGVuIG5vIG90aGVyIHByb2dyYW0gaGFz IHByb3ZpZGVkIHN1Y2ggdGV4dC4gIElmIHRoZSAKK2Z1bmN0aW9uIHJldHVybnMgYSBzdHJpbmcs IHRoZW4gdGhlIGNhbGxlciBvZiB0aGUgZnVuY3Rpb24gCitcKHVzdWFsbHkgYG1vdXNlLXlhbmst YXQtY2xpY2snKSB3aWxsIGluc2VydCB0aGlzIHN0cmluZworaW50byB0aGUgYnVmZmVyLi4uIHdp dGhvdXQgYWZmZWN0aW5nIHRoZSBraWxsIHJpbmcuICBUaGlzIG1heQorc2VlbSBzbGlnaHRseSBz dHJhbmdlLCBidXQgaXMgaW50ZW5kZWQgYW5kIG5vdyB0eXBpY2FsCitiZWhhdmlvdXIgb24gWDEx IGRlc2t0b3BzLiAgSWYgeW91IERPIHdhbnQgbW91c2UteWFuay1hdC1jbGljayB0byAKK2FmZmVj dCB0aGUga2lsbCByaW5nLCAgYXMgaXQgaGFzIGRvbmUgaW4gdGhlIHBhc3QgaW4gZW1hY3MsCith ZGp1c3QgYG1vdXNlLXlhbmstYXQtY2xpY2stYWN0aW9uJyB0byBoYXZlIGl0IHVzZSB0aGUga2ls bCAKK3JpbmcgXChhbmQgdGhlcmVieSBwb3RlbnRpYWxseSBgaW50ZXJwcm9ncmFtLXBhc3RlLWZ1 bmN0aW9uJyksIHdoaWNoCitvbiBYMTEgYXQgbGVhc3QgXCh0aGUgb25seSByZWxldmFudCBwbGF0 Zm9ybSBhdCB0aGUgbW9tZW50KSBjYW4gCitpbiB0dXJuIGJlIGFkanVzdGVkIHRvIHB1bGwgaW4g UFJJTUFSWSBhcyB3ZWxsIGFzIG9yIGluc3RlYWQgb2YgCitDTElQQk9BUkQgdmlhIGB4LXNlbGVj dC1lbmFibGUtcHJpbWFyeScuCisKK05vdGUgdGhhdCB0aGUgZnVuY3Rpb24gc2hvdWxkIHJldHVy biBhIHN0cmluZyBpZiBhdmFpbGFibGUgCit3aGV0aGVyIG9yIG5vdCBhIHByb2dyYW0gb3RoZXIg dGhhbiBFbWFjcyBwcm92aWRlZCB0aGUgc3RyaW5nLCAKK3RoaXMgaXMgc28gdGhhdCBlbWFjcy0+ ZW1hY3MgaGlnaGxpZ2h0L2xpZ2h0aW5zIGludGVyYWN0aW9ucword29yayBhcyBleHBlY3RlZC4i KQogDAogCiAKIDs7OzsgVGhlIGtpbGwgcmluZyBkYXRhIHN0cnVjdHVyZS4KIAogKGRlZnZhciBr aWxsLXJpbmcgbmlsCiAgICJMaXN0IG9mIGtpbGxlZCB0ZXh0IHNlcXVlbmNlcy4KIFNpbmNlIHRo ZSBraWxsIHJpbmcgaXMgc3VwcG9zZWQgdG8gaW50ZXJhY3QgbmljZWx5IHdpdGggY3V0LWFuZC1w YXN0ZQogZmFjaWxpdGllcyBvZmZlcmVkIGJ5IHdpbmRvdyBzeXN0ZW1zLCB1c2Ugb2YgdGhpcyB2 YXJpYWJsZSBzaG91bGQKIGludGVyYWN0IG5pY2VseSB3aXRoIGBpbnRlcnByb2dyYW0tY3V0LWZ1 bmN0aW9uJyBhbmQKZGlmZiAtTmFyVTEwIGVtYWNzLWZzYXIvbGlzcC90ZXJtL3gtd2luLmVsIGVt YWNzL2xpc3AvdGVybS94LXdpbi5lbAotLS0gZW1hY3MtZnNhci9saXNwL3Rlcm0veC13aW4uZWwJ MjAwOC0wMi0wMiAwMjowNzozMi4wMDAwMDAwMDAgKzAwMDAKKysrIGVtYWNzL2xpc3AvdGVybS94 LXdpbi5lbAkyMDA4LTAyLTAzIDA1OjQ5OjI1LjAwMDAwMDAwMCArMDAwMApAQCAtMjE2MSw2NiAr MjE2MSw4NCBAQAogZnVuY3Rpb25zICh0eXBpY2FsbHkgc29tZXRoaW5nIGxpa2UgQy14IG9yIEMt YyBpbiB0aG9zZSBwcm9ncmFtcykKIAogSGlnaGxpZ2h0OiAgU2V0IGlmIG1lcmVseSBoaWdobGln aHRpbmcgdGV4dCAoc2V0dGluZyB0aGUgYWN0aXZlIHJlZ2lvbikgCiBpbiBFbWFjcyBzaG91bGQg aW1tZWRpYXRlbHkgcHV0IGl0IGluIHRoZSBjbGlwYm9hcmQsIGlmIAogYHNlbGVjdC1hY3RpdmUt cmVnaW9ucycgaXMgYWxzbyBzZXQuICBUaGlzIGlzIHVudXN1YWwgZm9yIHJlY2VudCBYMTEgCiBh cHBsaWNhdGlvbnMsIHR5cGljYWxseSBoaWdobGlnaHRlZCB0ZXh0IGlzIHBsYWNlZCBpbiB0aGUg UFJJTUFSWSBYMTEgCiBzZWxlY3Rpb24sIGZvciAnaGlnaGxpZ2h0L21pZGRsZWJ1dHRvbicgc3R5 bGUgWDExIHRyYW5zZmVyLiAKIFNlZSBgeC1zZWxlY3QtZW5hYmxlLXByaW1hcnknLgogCiBJdCBp cyByZWNvbW1lbmRlZCB0byB1bnNldCBgbW91c2UtZHJhZy1jb3B5LXJlZ2lvbicgYW5kCi1zZXQg YHRyYW5zaWVudC1tYXJrLW1vZGUnIGlmIEhpZ2hsaWdodCBpcyBzZXQgaGVyZS4iCitzZXQgYHRy YW5zaWVudC1tYXJrLW1vZGUnIGlmIEhpZ2hsaWdodCBpcyBzZXQgaGVyZS4KKworTGlnaHRJbnM6 IFNldCBpZiB0aGUgQ0xJUEJPQVJEIHNlbGVjdGlvbiBzaG91bGQgYmUgY2hlY2tlZCBmb3IKK2xp Z2h0d2VpZ2h0IGluc2VydCBvcGVyYXRpb25zIFwoIGBtb3VzZS15YW5rLWF0LWNsaWNrJyAKK3dp dGggYG1vdXNlLXlhbmstYXQtY2xpY2stYWN0aW9uJyBzZXQgdG8gTGlnaHRJbnMpLiAgVGhpcyBp cyBub3QKK2N1c3RvbWFyeSBvbiBYMTEsIGFuZCBldmVuIGlmIHlvdSBkbyB3YW50IHRoZSBtaWRk bGUgbW91c2UKK2J1dHRvbiAoaS5lLiBtb3VzZS0yIHR5cGljYWxseSBib3VuZCB0byAgbW91c2Ut eWFuay1hdC1jbGljaykgCit0byBwdWxsIGluIHRoZSBjbGlwYm9hcmQgbGlrZSBoaXN0b3JpYyBl bWFjcywgaXQgaXMgbGlrZWx5IHlvdSB3YW50IAordG8gc2V0ICBtb3VzZS15YW5rLWF0LWNsaWNr LWFjdGlvbiB0byBZYW5rIGFuZCBzZXQgUGFzdGUgaGVyZSBpbnN0ZWFkCitzbyB0aGF0IHRoZSBL aWxsIFJpbmcgaXMgc2lkZS1lZmZlY3RlZCBieSB0aGUgb3BlcmF0aW9uLiBDbGVhciBhcyBtdWQu IgogCiA6dHlwZSAnKGNob2ljZSAoY29uc3QgOnRhZyAiTm9uZSIgbmlsKQogCSAgICAgICAoY29u c3QgOnRhZyAiQWxsIiB0KQogCSAgICAgICAoc2V0IDp0YWcgIkNob29zZSIgKGNvbnN0IDp0YWcg IkN1dC9Db3B5IiA6Y3V0KQogCQkgICAgKGNvbnN0IDp0YWcgIlBhc3RlIiA6cGFzdGUpCi0JCSAg ICAoY29uc3QgOnRhZyAiSGlnaGxpZ2h0IiA6aGlnaGxpZ2h0KSkpCisJCSAgICAoY29uc3QgOnRh ZyAiSGlnaGxpZ2h0IiA6aGlnaGxpZ2h0KQorICAgICAgICAgICAgICAgICAgICAoY29uc3QgOnRh ZyAiTGlnaHRJbnMiIDpsaWdodGlucykpKQogOmdyb3VwICdraWxsaW5nKQogCi0oZGVmY3VzdG9t IHgtc2VsZWN0LWVuYWJsZS1wcmltYXJ5ICcoOmhpZ2hsaWdodCkKKyhkZWZjdXN0b20geC1zZWxl Y3QtZW5hYmxlLXByaW1hcnkgJyg6aGlnaGxpZ2h0IDpsaWdodGlucykKICJXaGF0IGN1dC9jb3B5 L3Bhc3RlL2hpZ2hsaWdodCBvcHMgc2hvdWxkIGludm9sdmUgUFJJTUFSWS4KIAogSW4gWDExLCBQ UklNQVJZIGlzIGFzc29jaWF0ZWQgd2l0aCAnaGlnaGxpZ2h0L21pZGRsZWJ1dHRvbi1pbnNlcnQn IHN0eWxlCiBkYXRhIGludGVyY2hhbmdlLgogCiBDdXQvQ29weTogU2V0IGlmIEtpbGxpbmcgKGUu Zy4gQy13L00tdykgaW4gZW1hY3Mgc2hvdWxkIHBsYWNlIHRleHQgaW4gdGhlCiBQUklNQVJZIFgx MSBzZWxlY3Rpb24uIGkuZS4gaWYgeW91IHdhbnQgdG8gcGFzdGUga2lsbGVkIHRleHQgaW50byBv dGhlciAKIHByb2dyYW1zIG9uIHlvdXIgZGVza3RvcCB3aXRoIHRoZSBvdGhlciBwcm9ncmFtcycg cHJpbWFyeSBpbnNlcnRpb24gCiBmdW5jdGlvbiAodHlwaWNhbGx5IGEgbWlkZGxlLWJ1dHRvbi1j bGljaykuICBUaGlzIGlzIG5vdCB1c3VhbCBmb3IgWDExIAogYXBwbGljYXRpb25zLCB0eXBpY2Fs bHkgQ3V0L0NvcGllZCB0ZXh0IGlzIHBsYWNlZCBpbiB0aGUgQ0xJUEJPQVJEIFgxMSAKIHNlbGVj dGlvbiwgZm9yIGNsaXBib2FyZC1zdHlsZSBYMTEgdHJhbnNmZXIuIAogU2VlIGB4LXNlbGVjdC1l bmFibGUtY2xpcGJvYXJkJwogCiBQYXN0ZTogU2V0IGlmIFlhbmtpbmcgKGUuZy4gQy15KSBpbiBl bWFjcyBzaG91bGQgY2hlY2sgdGhlIHByaW1hcnkgc2VsZWN0aW9uCiBmb3IgdGV4dCBwbGFjZWQg dGhlcmUgd2l0aCBvdGhlciBwcm9ncmFtcycgcHJpbWFyeSBzZWxlY3Rpb24gCiBmdW5jdGlvbnMg KHR5cGljYWxseSBoaWdobGlnaHRpbmcgdGhlIHRleHQgaW4gb3RoZXIgWDExIHByb2dyYW1zIG1h a2VzIGl0IAogYXZhaWxhYmxlIGFzIHRoZSBwcmltYXJ5IHNlbGVjdGlvbikuICBJdCBpcyBub3Qg dXN1YWwgaW4gWDExIHRvIGRvIHNvLCBob3dldmVyIAogaXQgIG1heSBiZSBjb252ZW5pZW50IHRv IGRvIHNvIGluIGVtYWNzLCBhcyBpdCByZWR1Y2VzIG1vdXNpbmcsIGFsbG93aW5nIGVhc3kgCiBr ZXlib2FyZCBpbnNlcnRpb24gb2YgdGhlIHByaW1hcnkgc2VsZWN0aW9uLiAgTm90ZSB0aGF0IGlm IGJvdGggCiBgeC1zZWxlY3QtZW5hYmxlLWNsaXBib2FyZCcgYW5kIHRoaXMgaGF2ZSBQYXN0ZSBz ZXQsICB0aGUgY2xpcGJvYXJkIAotY3VycmVudGx5IHRha2VzIHByZWNlbmRlbmNlIHdoZW4geWFu a2luZy4KK2N1cnJlbnRseSB0YWtlcyBwcmVjZW5kZW5jZSB3aGVuIHlhbmtpbmcuICBZb3UgbWln aHQgd2FudCB0byAKK3NldCBgbW91c2UteWFuay1hdC1jbGljay1hY3Rpb24nIHRvIFlhbmsgaWYg eW91IHNldCB0aGlzLCByYXRoZXIgdGhhbgorc2V0dGluZyBMaWdodElucyBoZXJlLgogCiBIaWdo bGlnaHQ6ICBTZXQgaWYgbWVyZWx5IGhpZ2hsaWdodGluZyB0ZXh0IChhbiBhY3RpdmUgcmVnaW9u KSBpbiBlbWFjcyBzaG91bGQgCiBpbW1lZGlhdGVseSBwdXQgaXQgaW4gdGhlIHByaW1hcnkgc2Vs ZWN0aW9uLCBpZiBgc2VsZWN0LWFjdGl2ZS1yZWdpb25zJyBpcwogc2V0LiBUaGlzIGlzIHVzdWFs IGZvciByZWNlbnQgWDExIHByb2dyYW1zLCBhbmQgYWxsb3dzIHlvdSB0byBpbnNlcnQgdGhlIHRl eHQgCiBpbnRvIHRoZSBvdGhlciBwcm9ncmFtIHdpdGggdGhlaXIgcHJpbWFyeSBpbnNlcnRpb24g ZnVuY3Rpb24gKHR5cGljYWxseQogbWlkZGxlLWJ1dHRvbi1jbGljaykuCiAKIEl0IGlzIHJlY29t bWVuZGVkIHRvIHVuc2V0IGBtb3VzZS1kcmFnLWNvcHktcmVnaW9uJyBhbmQKLXNldCBgdHJhbnNp ZW50LW1hcmstbW9kZScgaWYgSGlnaGxpZ2h0IGlzIHNldCBoZXJlLiIKK3NldCBgdHJhbnNpZW50 LW1hcmstbW9kZScgaWYgSGlnaGxpZ2h0IGlzIHNldCBoZXJlLgorCitMaWdodEluczogU2V0IGlm IHRoZSBQUklNQVJZIHNlbGVjdGlvbiBzaG91bGQgYmUgY2hlY2tlZCBmb3IKK2xpZ2h0d2VpZ2h0 IGluc2VydCBvcGVyYXRpb25zIFwoIGBtb3VzZS15YW5rLWF0LWNsaWNrJyAKK3dpdGggYG1vdXNl LXlhbmstYXQtY2xpY2stYWN0aW9uJyBzZXQgdG8gTGlnaHRJbnMpLiAgVGhpcyBpcyBub3JtYWwK K29uIFgxMS4iCiAKIDp0eXBlICcoY2hvaWNlIChjb25zdCA6dGFnICJOb25lIiBuaWwpCiAJICAg ICAgIChjb25zdCA6dGFnICJBbGwiIHQpCiAJICAgICAgIChzZXQgOnRhZyAiQ2hvb3NlIiAoY29u c3QgOnRhZyAiQ3V0L0NvcHkiIDpjdXQpCiAJCSAgICAoY29uc3QgOnRhZyAiUGFzdGUiIDpwYXN0 ZSkKLQkJICAgIChjb25zdCA6dGFnICJIaWdobGlnaHQiIDpoaWdobGlnaHQpKSkKKwkJICAgIChj b25zdCA6dGFnICJIaWdobGlnaHQiIDpoaWdobGlnaHQpCisJCSAgICAoY29uc3QgOnRhZyAiTGln aHRJbnMiIDpsaWdodGlucykpKQogOmdyb3VwICdraWxsaW5nKQogCiAKIChkZWZjdXN0b20geC1z ZWxlY3QtZW5hYmxlLWN1dGJ1ZmZlciBuaWwKICAgIldoYXQgY3V0L2NvcHkvcGFzdGUvaGlnaGxp Z2h0IG9wcyBzaG9sZCBpbnZvbHZlIGxlZ2FjeSBDdXQgQnVmZmVyIDAuICAgCiAKIEluIFgsIGN1 dCBidWZmZXJzIGhhdmUgbG9uZyBiZWVuIHN1cGVyc2VkZWQgYnkgY2xpcGJvYXJkIGFuZCBwcmlt YXJ5CiBzZWxlY3Rpb25zLiAgSG93ZXZlciwgc29tZSBvbGQgWCBwcm9ncmFtcyB1c2UgdGhlbS4g IElmIHlvdQogbmVlZCB0byBleGNoYW5nZSBkYXRhIGJldHdlZW4gZW1hY3MgYW5kIHN1Y2ggcHJv Z3JhbXMgdmlhCiBYIGN1dCBidWZmZXJzLCB5b3UgbWF5IHdhbnQgdG8gc2V0IHRoaXMgdG8gYSBu b24tbmlsIHZhbHVlLgpAQCAtMjIyOSwyNyArMjI0NywzMiBAQAogcGxhY2UgdGV4dCBpbnRvIFgg Q3V0IEJ1ZmZlciAwCiAKIFBhc3RlOiBTZXQgaWYgWWFua2luZyAoZS5nLiBDLXkpIGluIEVtYWNz IHNob3VsZCBjaGVjawogWCBDdXQgQnVmZmVyIDAgZm9yIHRleHQuCiAKIEhpZ2hsaWdodDogU2V0 IGlmIG1lcmVseSBoaWdobGlnaHRpbmcgdGV4dCAoYW4gYWN0aXZlIHJlZ2lvbikgCiBpbiBlbWFj cyBzaG91bGQgaW1tZWRpYXRlbHkgcHV0IGl0IGluIFggQ3V0IEJ1ZmZlciAwLCBpZiAKIGBzZWxl Y3QtYWN0aXZlLXJlZ2lvbnMnIGlzIGFsc28gc2V0LgogCiBJdCBpcyByZWNvbW1lbmRlZCB0byB1 bnNldCBgbW91c2UtZHJhZy1jb3B5LXJlZ2lvbicgYW5kCi1zZXQgYHRyYW5zaWVudC1tYXJrLW1v ZGUnIGlmIEhpZ2hsaWdodCBpcyBzZXQgaGVyZS4iCitzZXQgYHRyYW5zaWVudC1tYXJrLW1vZGUn IGlmIEhpZ2hsaWdodCBpcyBzZXQgaGVyZS4KKworTGlnaHRJbnM6IFNldCBpZiBYIEN1dCBCdWZm ZXIgMCBzaG91bGQgYmUgY2hlY2tlZCBmb3IKK2xpZ2h0d2VpZ2h0IGluc2VydCBvcGVyYXRpb25z IFwoIGBtb3VzZS15YW5rLWF0LWNsaWNrJyAKK3dpdGggYG1vdXNlLXlhbmstYXQtY2xpY2stYWN0 aW9uJyBzZXQgdG8gTGlnaHRJbnMpLiIKIAogOnR5cGUgJyhjaG9pY2UgKGNvbnN0IDp0YWcgIk5v bmUiIG5pbCkKIAkgICAgICAgKGNvbnN0IDp0YWcgIkFsbCIgdCkKIAkgICAgICAgKHNldCA6dGFn ICJDaG9vc2UiIChjb25zdCA6dGFnICJDdXQvQ29weSIgOmN1dCkKIAkJICAgIChjb25zdCA6dGFn ICJQYXN0ZSIgOnBhc3RlKQotCQkgICAgKGNvbnN0IDp0YWcgIkhpZ2hsaWdodCIgOmhpZ2hsaWdo dCkpKQorCQkgICAgKGNvbnN0IDp0YWcgIkhpZ2hsaWdodCIgOmhpZ2hsaWdodCkKKwkJICAgIChj b25zdCA6dGFnICJMaWdodElucyIgOmxpZ2h0aW5zKSkpCiA6Z3JvdXAgJ2tpbGxpbmcpCiAgCiAK IChkZWZ1biB4LXNlbGVjdC10ZXh0LWZvci1vcCAob3AgdGV4dCAmb3B0aW9uYWwgcHVzaCkKICAg Ik1ha2UgVEVYVCwgYSBzdHJpbmcsIHRoZSBwcmltYXJ5IGFuZC9vciBjbGlwYm9hcmQgWCBzZWxl Y3Rpb24uCiAKIFRoaXMgZnVuY3Rpb24gbWF0Y2hlcyBPUCBhZ2FpbnN0IGB4LXNlbGVjdC1lbmFi bGUtcHJpbWFyeScKIGFuZCBgeC1zZWxlY3QtZW5hYmxlLWNsaXBib2FyZCcuICBPUCBtdXN0IGJl IG9uZSBvZiA6Y3V0CiBvciA6aGlnaGxpZ2h0LCBjb3JyZXNwb25kaW5nIHRvIHVzZSBhcyBhbiBg aW50ZXJwcm9ncmFtLWN1dC1mdW5jdGlvbicKIG9yIGBpbnRlcnByb2dyYW0taGlnaGxpZ2h0LWZ1 bmN0aW9uJwpAQCAtMjQ0NCwyNCArMjQ2Nyw5MCBAQAogICAgICAgOzsgc2F3IG11bHRpcGxlIHBv c3NpYmxlIHNlbGVjdGlvbnMgYW5kIGFzayB0aGUgdXNlciB3aGljaCB3YXMgdGhlCiAgICAgICA7 OyBvbmUgdGhleSB3YW50ZWQuCiAgICAgICA7OyBUaGlzIGNvZGUgaXMgc3RpbGwgYSBiaWcgaW1w cm92ZW1lbnQgYmVjYXVzZSBub3cgdGhlIHVzZXIgY2FuCiAgICAgICA7OyBmdXR6IHdpdGggdGhl IGN1cnJlbnQgc2VsZWN0aW9uIGFuZCBnZXQgZW1hY3MgdG8gcGF5IGF0dGVudGlvbgogICAgICAg OzsgdG8gdGhlIGN1dCBidWZmZXIgYWdhaW4gKHByZXZpb3VzbHkgYXMgc29vbiBhcyBjbGlwYm9h cmQgb3IKICAgICAgIDs7IHByaW1hcnkgaGFkIGJlZW4gc2V0IHRoZSBjdXQgYnVmZmVyIHdvdWxk IGVzc2VudGlhbGx5IG5ldmVyIGJlCiAgICAgICA7OyBjaGVja2VkIGFnYWluKS4KICAgICAgIChv ciBjbGlwLXRleHQgcHJpbWFyeS10ZXh0IGN1dC10ZXh0KQogICAgICAgKSkpCiAKKworOzsgUmV0 dXJuIHRoZSB2YWx1ZSBvZiB0aGUgY3VycmVudCBYIHNlbGVjdGlvbiBmb3IgYSAibGlnaHR3ZWln aHQgaW5zZXJ0aW9uIgorOzsgdGhhdCBpcyBub3QgaW50ZW5kZWQgdG8gaW50ZXJhY3Qgd2l0aCB0 aGUga2lsbCByaW5nLiBObywgcmVhbGx5LgorOzsgQ29uc3VsdCB0aGUgc2VsZWN0aW9uLCBhbmQg dGhlIGN1dCBidWZmZXIuICBUcmVhdCBlbXB0eSBzdHJpbmdzCis7OyBhcyBpZiB0aGV5IHdlcmUg dW5zZXQuCis7OyBJZiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB0d2ljZSBhbmQgZmluZHMgdGhl IHNhbWUgdGV4dCwKKzs7IHVubGlrZSB4LWN1dC1idWZmZXItb3Itc2VsZWN0aW9uLXZhbHVlLCBp dCBzaG91bGQgcmV0dXJuIHRoZSBzYW1lIHRleHQuCis7OyBTZWUgaW50ZXJwcm9ncmFtLWxpZ2h0 aW5zLWZ1bmN0aW9uIGRvY3N0cmluZy4uLgorKGRlZnVuIHgtY3V0LWJ1ZmZlci1vci1zZWxlY3Rp b24tdmFsdWUtZm9yLWxpZ2h0aW5zICgpCisgIDs7IFdpdGggbXVsdGktdHR5LCB0aGlzIGZ1bmN0 aW9uIG1heSBiZSBjYWxsZWQgZnJvbSBhIHR0eSBmcmFtZS4KKyAgKHdoZW4gKGVxIChmcmFtZXAg KHNlbGVjdGVkLWZyYW1lKSkgJ3gpCisgICAgKGxldCAoY2xpcC10ZXh0IHByaW1hcnktdGV4dCBj dXQtdGV4dCkKKyAgICAgICh3aGVuIChvciAoZXEgeC1zZWxlY3QtZW5hYmxlLWNsaXBib2FyZCB0 KQorCQkobWVtYmVyIDpsaWdodGlucyB4LXNlbGVjdC1lbmFibGUtY2xpcGJvYXJkKSkKKyAgICAg ICAgKHNldHEgY2xpcC10ZXh0ICh4LXNlbGVjdGlvbi12YWx1ZSAnQ0xJUEJPQVJEKSkKKyAgICAg ICAgKGlmIChzdHJpbmc9IGNsaXAtdGV4dCAiIikgKHNldHEgY2xpcC10ZXh0IG5pbCkpKQorCisg ICAgICAod2hlbiAob3IgKGVxIHgtc2VsZWN0LWVuYWJsZS1wcmltYXJ5IHQpCisJCShtZW1iZXIg OmxpZ2h0aW5zIHgtc2VsZWN0LWVuYWJsZS1wcmltYXJ5KSkKKwkoc2V0cSBwcmltYXJ5LXRleHQg KHgtc2VsZWN0aW9uLXZhbHVlICdQUklNQVJZKSkpCisKKyAgICAgICh3aGVuIChvciAoZXEgeC1z ZWxlY3QtZW5hYmxlLWN1dGJ1ZmZlciB0KQorCQkobWVtYmVyIDpsaWdodGlucyB4LXNlbGVjdC1l bmFibGUtY3V0YnVmZmVyKSkKKwkoc2V0cSBjdXQtdGV4dCAoeC1nZXQtY3V0LWJ1ZmZlciAwKSkK KyAgICAgICAgOzsgdHJ5IHRvIGRlY29kZSBjdXQgYnVmZmVyLgorCShzZXRxIGN1dC10ZXh0CisJ ICAgICAgKGxldCAoKG5leHQtY29kaW5nIChvciBuZXh0LXNlbGVjdGlvbi1jb2Rpbmctc3lzdGVt ICdpc28tbGF0aW4tMSkpKQorCQkoY29uZCA7OyBjaGVjayBjdXQgYnVmZmVyCisJCSAoKG9yIChu b3QgY3V0LXRleHQpIChzdHJpbmc9IGN1dC10ZXh0ICIiKSkKKwkJICBuaWwpCisJCSAodAk7OyBJ Q0NDTSBzYXlzIGN1dCBidWZmZXIgYWx3YXlzIGNvbnRhaW4gSVNPLUxhdGluLTEsIGJ1dAorCQkJ OzsgdXNlIG5leHQtc2VsZWN0aW9uLWNvZGluZy1zeXN0ZW0gaWYgbm90IG5pbC4KKwkJCShkZWNv ZGUtY29kaW5nLXN0cmluZworCQkJIGN1dC10ZXh0IG5leHQtY29kaW5nKSkpKSkKKworCTs7IEFz IHdlIGhhdmUgZG9uZSBvbmUgc2VsZWN0aW9uLCBjbGVhciB0aGlzIG5vdy4KKwkoc2V0cSBuZXh0 LXNlbGVjdGlvbi1jb2Rpbmctc3lzdGVtIG5pbCkpCisKKyAgICAgIDs7IEF0IHRoaXMgcG9pbnQg d2UgaGF2ZSByZWNvcmRlZCB0aGUgY3VycmVudCB2YWx1ZXMgZm9yIHRoZQorICAgICAgOzsgc2Vs ZWN0aW9uIGZyb20gY2xpcGJvYXJkIChpZiB3ZSBhcmUgc3VwcG9zZWQgdG8pIHByaW1hcnksCisg ICAgICA7OyBhbmQgY3V0IGJ1ZmZlci4gIFNvIHJldHVybiB0aGUgZmlyc3Qgb25lIHRoYXQgaGFz IGNoYW5nZWQKKyAgICAgIDs7ICh3aGljaCBpcyB0aGUgZmlyc3Qgbm9uLW51bGwgb25lKS4KKyAg ICAgIDs7CisgICAgICA7OyBOT1RFOiBUaGVyZSB3aWxsIGJlIGNhc2VzIHdoZXJlIG1vcmUgdGhh biBvbmUgb2YgdGhlc2UgaGFzCisgICAgICA7OyBjaGFuZ2VkIGFuZCB0aGUgbmV3IHZhbHVlcyBk aWZmZXIuICBUaGlzIGluZGljYXRlcyB0aGF0CisgICAgICA7OyBzb21ldGhpbmcgbGlrZSB0aGUg Zm9sbG93aW5nIGhhcyBoYXBwZW5lZCBzaW5jZSB0aGUgbGFzdCB0aW1lCisgICAgICA7OyB3ZSBs b29rZWQgYXQgdGhlIHNlbGVjdGlvbnM6IEFwcGxpY2F0aW9uIFggc2V0IGFsbCB0aGUKKyAgICAg IDs7IHNlbGVjdGlvbnMsIHRoZW4gQXBwbGljYXRpb24gWSBzZXQgb25seSBvbmUgb3IgdHdvIG9m IHRoZW0gKHNheQorICAgICAgOzsganVzdCB0aGUgY3V0LWJ1ZmZlcikuICBJbiB0aGlzIGNhc2Ug c2luY2Ugd2UgZG9uJ3QgaGF2ZQorICAgICAgOzsgdGltZXN0YW1wcyB0aGVyZSBpcyBubyB3YXkg dG8ga25vdyB3aGF0IHRoZSAnY29ycmVjdCcgdmFsdWUgdG8KKyAgICAgIDs7IHJldHVybiBpcy4g IFRoZSBuaWNlIHRoaW5nIHRvIGRvIHdvdWxkIGJlIHRvIHRlbGwgdGhlIHVzZXIgd2UKKyAgICAg IDs7IHNhdyBtdWx0aXBsZSBwb3NzaWJsZSBzZWxlY3Rpb25zIGFuZCBhc2sgdGhlIHVzZXIgd2hp Y2ggd2FzIHRoZQorICAgICAgOzsgb25lIHRoZXkgd2FudGVkLgorICAgICAgOzsgVGhpcyBjb2Rl IGlzIHN0aWxsIGEgYmlnIGltcHJvdmVtZW50IGJlY2F1c2Ugbm93IHRoZSB1c2VyIGNhbgorICAg ICAgOzsgZnV0eiB3aXRoIHRoZSBjdXJyZW50IHNlbGVjdGlvbiBhbmQgZ2V0IGVtYWNzIHRvIHBh eSBhdHRlbnRpb24KKyAgICAgIDs7IHRvIHRoZSBjdXQgYnVmZmVyIGFnYWluIChwcmV2aW91c2x5 IGFzIHNvb24gYXMgY2xpcGJvYXJkIG9yCisgICAgICA7OyBwcmltYXJ5IGhhZCBiZWVuIHNldCB0 aGUgY3V0IGJ1ZmZlciB3b3VsZCBlc3NlbnRpYWxseSBuZXZlciBiZQorICAgICAgOzsgY2hlY2tl ZCBhZ2FpbikuCisgICAgICAob3IgY2xpcC10ZXh0IHByaW1hcnktdGV4dCBjdXQtdGV4dCkKKyAg ICAgICkpKQorCisKKworCisKIDs7IEFycmFuZ2UgZm9yIHRoZSBraWxsIGFuZCB5YW5rIGZ1bmN0 aW9ucyB0byBzZXQgYW5kIGNoZWNrIHRoZSBjbGlwYm9hcmQuCiAoc2V0cSBpbnRlcnByb2dyYW0t Y3V0LWZ1bmN0aW9uICd4LXNlbGVjdC10ZXh0KQogKHNldHEgaW50ZXJwcm9ncmFtLXBhc3RlLWZ1 bmN0aW9uICd4LWN1dC1idWZmZXItb3Itc2VsZWN0aW9uLXZhbHVlKQogKHNldHEgaW50ZXJwcm9n cmFtLWhpZ2hsaWdodC1mdW5jdGlvbiAneC1zZWxlY3QtdGV4dC1mb3ItaGlnaGxpZ2h0KQorKHNl dHEgaW50ZXJwcm9ncmFtLWxpZ2h0aW5zLWZ1bmN0aW9uICd4LWN1dC1idWZmZXItb3Itc2VsZWN0 aW9uLXZhbHVlLWZvci1saWdodGlucykKIAogKGRlZnVuIHgtY2xpcGJvYXJkLXlhbmsgKCkKICAg Ikluc2VydCB0aGUgY2xpcGJvYXJkIGNvbnRlbnRzLCBvciB0aGUgbGFzdCBzdHJldGNoIG9mIGtp bGxlZCB0ZXh0LiIKICAgKGludGVyYWN0aXZlICIqIikKICAgKGxldCAoKGNsaXBib2FyZC10ZXh0 ICh4LXNlbGVjdGlvbi12YWx1ZSAnQ0xJUEJPQVJEKSkKIAkoeC1zZWxlY3QtZW5hYmxlLWNsaXBi b2FyZCB0KSkKICAgICAoaWYgKGFuZCBjbGlwYm9hcmQtdGV4dCAoPiAobGVuZ3RoIGNsaXBib2Fy ZC10ZXh0KSAwKSkKIAkoa2lsbC1uZXcgY2xpcGJvYXJkLXRleHQpKQogICAgICh5YW5rKSkpCiAK ------=_Part_1832_977446.1202038699909--