X-Spam-Check-By: sourceware.org X-Envelope-From: karl AT freefriends DOT org X-Envelope-To: Ralf DOT Wildenhues AT gmx DOT de Date: Sun, 28 May 2006 12:13:03 -0500 Message-Id: <200605281713.k4SHD3P20160@f7.net> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="F/67ZsaegY" Content-Transfer-Encoding: 7bit From: karl AT freefriends DOT org (Karl Berry) To: cygwin AT cygwin DOT com, bug-texinfo AT gnu DOT org CC: Ralf DOT Wildenhues AT gmx DOT de Subject: Re: Cygwin: texi2dvi stumbles over texinfo.tex In-Reply-To: <20060528163553.GA400@trixie.casa.cgf.cx> Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm Precedence: bulk List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com Note-from-DJ: This may be spam --F/67ZsaegY Content-Type: text/plain; charset=us-ascii Content-Description: message body text Content-Transfer-Encoding: 7bit i.e., the patch that Ralf Wildenhues previously sent out is correct Ok, I applied the change to system.h, so that NULL_DEVICE will be /dev/null under Cygwin. Makes sense. Ralf's texi2dvi changes are clearly not generally applicable. E.g., Eli has spent a lot of time making Texinfo (and everything else) work under DJGPP. I can't just blow that away. If there's a way to detect when it's running under Cygwin, then the changes could be conditionalized as needed, I presume. I'll attach the current CVS texi2dvi (there have been tons of changes) in case you or Ralf someone feels like working on this. And the texindex.c problem has already been fixed in another way. Thanks, Karl --F/67ZsaegY Content-Type: application/octet-stream Content-Disposition: attachment; filename="texi2dvi" Content-Transfer-Encoding: base64 IyEgL2Jpbi9zaAojIHRleGkyZHZpIC0tLSBwcm9kdWNlIERWSSAob3IgUERG KSBmaWxlcyBmcm9tIFRleGluZm8gKG9yIChMYSlUZVgpIHNvdXJjZXMuCiMg JElkOiB0ZXhpMmR2aSx2IDEuNzkgMjAwNi8wNS8yNyAxOTowODoxNCBrYXJs IEV4cCAkCiMKIyBDb3B5cmlnaHQgKEMpIDE5OTIsIDE5OTMsIDE5OTQsIDE5 OTUsIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDEsCiMgMjAwMiwgMjAw MywgMjAwNCwgMjAwNSwgMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s IEluYy4KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBh cyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u OyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCiMgYW55 IGxhdGVyIHZlcnNpb24uCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll ZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojCiMgWW91IHNo b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYg bm90LCB5b3UgY2FuIGVpdGhlciBzZW5kIGVtYWlsIHRvIHRoaXMKIyBwcm9n cmFtJ3MgbWFpbnRhaW5lciBvciB3cml0ZSB0bzogVGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwKIyBJbmMuOyA1MSBGcmFua2xpbiBTdHJlZXQsIEZp ZnRoIEZsb29yOyBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KIwojIE9y aWdpbmFsIGF1dGhvcjogTm9haCBGcmllZG1hbi4KIwojIFBsZWFzZSBzZW5k IGJ1ZyByZXBvcnRzLCBldGMuIHRvIGJ1Zy10ZXhpbmZvQGdudS5vcmcuCiMg SWYgcG9zc2libGUsIHBsZWFzZSBzZW5kIGEgY29weSBvZiB0aGUgb3V0cHV0 IG9mIHRoZSBzY3JpcHQgY2FsbGVkIHdpdGgKIyB0aGUgYC0tZGVidWcnIG9w dGlvbiB3aGVuIG1ha2luZyBhIGJ1ZyByZXBvcnQuCgp0ZXN0IC1mIC9iaW4v a3NoICYmIHRlc3QgLXogIiRSVU5OSU5HX0tTSCIgXAogICYmIHsgVU5BTUVT PWB1bmFtZSAtc2A7IHRlc3QgIngkVU5BTUVTIiA9IHhVTFRSSVg7IH0gMj4v ZGV2L251bGwgXAogICYmIHsgUlVOTklOR19LU0g9dHJ1ZTsgZXhwb3J0IFJV Tk5JTkdfS1NIOyBleGVjIC9iaW4va3NoICQwICR7MSsiJEAifTsgfQp1bnNl dCBSVU5OSU5HX0tTSAoKIyBObyBmYWlsdXJlIHNoYWxsIHJlbWFpbiB1bnB1 bmlzaGVkLgpzZXQgLWUKCiMgVGhpcyBzdHJpbmcgaXMgZXhwYW5kZWQgYnkg cmNzIGF1dG9tYXRpY2FsbHkgd2hlbiB0aGlzIGZpbGUgaXMgY2hlY2tlZCBv dXQuCnJjc19yZXZpc2lvbj0nJFJldmlzaW9uOiAxLjc5ICQnCnJjc192ZXJz aW9uPWBzZXQgLSAkcmNzX3JldmlzaW9uOyBlY2hvICQyYApwcm9ncmFtPWBl Y2hvICQwIHwgc2VkIC1lICdzIS4qLyEhJ2AKdmVyc2lvbj0idGV4aTJkdmkg KEdOVSBUZXhpbmZvIDQuOCkgJHJjc192ZXJzaW9uCgpDb3B5cmlnaHQgKEMp IDIwMDUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuClRoZXJlIGlz IE5PIHdhcnJhbnR5OyBub3QgZXZlbiBmb3IgTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEKUEFSVElDVUxBUiBQVVJQT1NFLiAgWW91IG1heSBy ZWRpc3RyaWJ1dGUgY29waWVzIG9mIEdOVSB0ZXhpbmZvCnVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuCkZvciBt b3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZXNlIG1hdHRlcnMsIHNlZSB0aGUg ZmlsZSBuYW1lZCBDT1BZSU5HLgoiCgpidWlsZF9tb2RlPSR7VEVYSTJEVklf QlVJTERfTU9ERTotbG9jYWx9CmJ1aWxkX2Rpcj0ke1RFWEkyRFZJX0JVSUxE X0RJUkVDVE9SWTotLn0KCnVzYWdlPSJVc2FnZTogJHByb2dyYW0gW09QVElP Tl0uLi4gRklMRS4uLgoKUnVuIGVhY2ggVGV4aW5mbyBvciAoTGEpVGVYIEZJ TEUgdGhyb3VnaCBUZVggaW4gdHVybiB1bnRpbCBhbGwKY3Jvc3MtcmVmZXJl bmNlcyBhcmUgcmVzb2x2ZWQsIGJ1aWxkaW5nIGFsbCBpbmRpY2VzLiAgVGhl IGRpcmVjdG9yeQpjb250YWluaW5nIGVhY2ggRklMRSBpcyBzZWFyY2hlZCBm b3IgaW5jbHVkZWQgZmlsZXMuICBUaGUgc3VmZml4IG9mIEZJTEUKaXMgdXNl ZCB0byBkZXRlcm1pbmUgaXRzIGxhbmd1YWdlICgoTGEpVGVYIG9yIFRleGlu Zm8pLiAgVG8gcHJvY2VzcwooZSlwbGFpbiBUZVggZmlsZXMsIHNldCB0aGUg ZW52aXJvbm1lbnQgdmFyaWFibGUgTEFURVg9dGV4LgoKSW4gb3JkZXIgdG8g bWFrZSB0ZXhpMmR2aSBhIGRyb3AtaW4gcmVwbGFjZW1lbnQgb2YgVGVYL0xh VGVYIGluIEFVQy1UZVgsCnRoZSBGSUxFIG1heSBhbHNvIGJlIGNvbXBvc2Vk IG9mIHRoZSBmb2xsb3dpbmcgc2ltcGxlIFRlWCBjb21tYW5kcy4KICBcYFxc aW5wdXR7RklMRX0nICAgICB0aGUgYWN0dWFsIGZpbGUgdG8gY29tcGlsZQog IFxgXFxub25zdG9wbW9kZScgICAgIHNhbWUgYXMgLS1iYXRjaAoKTWFrZWlu Zm8gaXMgdXNlZCB0byBwZXJmb3JtIFRleGluZm8gbWFjcm8gZXhwYW5zaW9u IGJlZm9yZSBydW5uaW5nIFRlWAp3aGVuIG5lZWRlZC4KCkdlbmVyYWwgb3B0 aW9uczoKICAtYiwgLS1iYXRjaCAgICAgICAgIG5vIGludGVyYWN0aW9uCiAg LUQsIC0tZGVidWcgICAgICAgICB0dXJuIG9uIHNoZWxsIGRlYnVnZ2luZyAo c2V0IC14KQogIC1oLCAtLWhlbHAgICAgICAgICAgZGlzcGxheSB0aGlzIGhl bHAgYW5kIGV4aXQgc3VjY2Vzc2Z1bGx5CiAgLW8sIC0tb3V0cHV0PU9GSUxF ICBsZWF2ZSBvdXRwdXQgaW4gT0ZJTEUgKGltcGxpZXMgLS1jbGVhbik7CiAg ICAgICAgICAgICAgICAgICAgICAgIG9ubHkgb25lIGlucHV0IEZJTEUgbWF5 IGJlIHNwZWNpZmllZCBpbiB0aGlzIGNhc2UKICAtcSwgLS1xdWlldCAgICAg ICAgIG5vIG91dHB1dCB1bmxlc3MgZXJyb3JzIChpbXBsaWVzIC0tYmF0Y2gp CiAgLXMsIC0tc2lsZW50ICAgICAgICBzYW1lIGFzIC0tcXVpZXQKICAtdiwg LS12ZXJzaW9uICAgICAgIGRpc3BsYXkgdmVyc2lvbiBpbmZvcm1hdGlvbiBh bmQgZXhpdCBzdWNjZXNzZnVsbHkKICAtViwgLS12ZXJib3NlICAgICAgIHJl cG9ydCBvbiB3aGF0IGlzIGRvbmUKClRlWCB0dW5pbmc6CiAgLUAgICAgICAg ICAgICAgICAgICAgICAgICAgdXNlIEBpbnB1dCBpbnN0ZWFkIG9mIFxpbnB1 dCBmb3IgcHJlbG9hZGVkIFRleGluZm8KICAtZSwgLUUsIC0tZXhwYW5kICAg ICAgICAgICBmb3JjZSBtYWNybyBleHBhbnNpb24gdXNpbmcgbWFrZWluZm8K ICAtSSBESVIgICAgICAgICAgICAgICAgICAgICBzZWFyY2ggRElSIGZvciBU ZXhpbmZvIGZpbGVzCiAgLWwsIC0tbGFuZ3VhZ2U9TEFORyAgICAgICAgc3Bl Y2lmeSB0aGUgTEFORyBvZiBGSUxFIChMYVRlWCBvciBUZXhpbmZvKQogICAg ICAtLW5vLWxpbmUtZXJyb3IgICAgICAgIGRvIG5vdCBwYXNzIC0tZmlsZS1s aW5lLWVycm9yIHRvIFRlWAogIC1wLCAtLXBkZiAgICAgICAgICAgICAgICAg IHVzZSBwZGZ0ZXggb3IgcGRmbGF0ZXggZm9yIHByb2Nlc3NpbmcKICAtciwg LS1yZWNvZGUgICAgICAgICAgICAgICBjYWxsIHJlY29kZSBiZWZvcmUgVGVY IHRvIHRyYW5zbGF0ZSBpbnB1dAogICAgICAtLXJlY29kZS1mcm9tPUVOQyAg ICAgIHJlY29kZSBmcm9tIEVOQyB0byB0aGUgQGRvY3VtZW50ZW5jb2Rpbmcg ICAgICAgCiAgLXQsIC0tY29tbWFuZD1DTUQgICAgICAgICAgaW5zZXJ0IENN RCBpbiBjb3B5IG9mIGlucHV0IGZpbGUKICAgb3IgLS10ZXhpbmZvPUNNRCAg ICAgICAgICBtdWx0aXBsZSB2YWx1ZXMgYWNjdW11bGF0ZQogICAgICAtLXRy YW5zbGF0ZS1maWxlPUZJTEUgIHVzZSBnaXZlbiBjaGFyc2V0IHRyYW5zbGF0 aW9uIGZpbGUgZm9yIFRlWAoKQnVpbGQgbW9kZXM6CiAgLS1idWlsZD1NT0RF ICAgICAgICAgc3BlY2lmeSB0aGUgdHJlYXRtZW50IG9mIGF1eGlsaWFyeSBm aWxlcyBbJGJ1aWxkX21vZGVdCiAgICAgIC0tdGlkeSAgICAgICAgICAgc2Ft ZSBhcyAtLWJ1aWxkPXRpZHkKICAtYywgLS1jbGVhbiAgICAgICAgICBzYW1l IGFzIC0tYnVpbGQ9Y2xlYW4KICAgICAgLS1idWlsZC1kaXI9RElSICBzcGVj aWZ5IHdoZXJlIHRoZSB0aWR5IGNvbXBpbGF0aW9uIGlzIHBlcmZvcm1lZDsK ICAgICAgICAgICAgICAgICAgICAgICAgIGltcGxpZXMgLS10aWR5OwogICAg ICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdHMgdG8gVEVYSTJEVklfQlVJ TERfRElSRUNUT1JZIFskYnVpbGRfZGlyXQogIC0tbW9zdGx5LWNsZWFuICAg ICAgIHJlbW92ZSB0aGUgYXV4aWxpYXJ5IGZpbGVzIGFuZCBkaXJlY3Rvcmll cwogICAgICAgICAgICAgICAgICAgICAgICAgYnV0IG5vdCB0aGUgb3V0cHV0 CgpUaGUgTU9ERSBzcGVjaWZpZXMgd2hlcmUgdGhlIFRlWCBjb21waWxhdGlv biB0YWtlcyBwbGFjZSwgYW5kLCBhcyBhCmNvbnNlcXVlbmNlLCBob3cgYXV4 aWxpYXJ5IGZpbGVzIGFyZSB0cmVhdGVkLiAgVGhlIGJ1aWxkIG1vZGUKY2Fu IGFsc28gYmUgc2V0IHVzaW5nIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBU RVhJMkRWSV9CVUlMRF9NT0RFLgoKVmFsaWQgTU9ERXMgYXJlOgogIFxgbG9j YWwnICAgICAgY29tcGlsZSBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnksIGxl YXZpbmcgYWxsIHRoZSBhdXhpbGlhcnkKICAgICAgICAgICAgICAgICBmaWxl cyBhcm91bmQuICBUaGlzIGlzIHRoZSB0cmFkaXRpb25hbCBUZVggdXNlLgog IFxgdGlkeScgICAgICAgY29tcGlsZSBpbiBhIGxvY2FsICoudDJkIGRpcmVj dG9yeSwgd2hlcmUgdGhlIGF1eGlsaWFyeSBmaWxlcwogICAgICAgICAgICAg ICAgIGFyZSBsZWZ0LiAgT3V0cHV0IGZpbGVzIGFyZSBjb3BpZWQgYmFjayB0 byB0aGUgb3JpZ2luYWwgZmlsZS4KICBcYGNsZWFuJyAgICAgIHNhbWUgYXMg XGB0aWR5JywgYnV0IHJlbW92ZSB0aGUgYXV4aWxpYXJ5IGRpcmVjdG9yeSBh ZnRlcndhcmRzLgogICAgICAgICAgICAgICAgIEV2ZXJ5IGNvbXBpbGF0aW9u IHRoZXJlZm9yZSByZXF1aXJlcyB0aGUgZnVsbCBjeWNsZS4KClVzaW5nIHRo ZSBcYHRpZHknIG1vZGUgYnJpbmdzIHNldmVyYWwgYWR2YW50YWdlczoKICAt IHRoZSBjdXJyZW50IGRpcmVjdG9yeSBpcyBub3QgY2x1dHRlcmVkIHdpdGgg cGxldGhvcmEgb2YgdGVtcG9yYXJ5IGZpbGVzLgogIC0gY2x1dHRlciBjYW4g YmUgZXZlbiByZWR1Y2VkIHVzaW5nIC0tYnVpbGQtZGlyPWRpcjogYWxsIHRo ZSAqLnQyZAogICAgZGlyZWN0b3JpZXMgYXJlIHN0b3JlZCB0aGVyZS4KICAt IGNsdXR0ZXIgY2FuIGJlIHJlZHVjZWQgdG8gemVybyB1c2luZyAtLWJ1aWxk LWRpcj0vdG1wL1wkVVNFUi50MmQgb3IKICAgIC0tYnVpbGQtZGlyPSRIT01F Ly50MmQuCiAgLSB0aGUgb3V0cHV0IGZpbGUgaXMgdXBkYXRlZCBhZnRlciBl dmVyeSBzdWNjZXNmdWwgVGVYIHJ1biwgZm9yCiAgICBzYWtlIG9mIGNvbmN1 cnJlbnQgdmlzdWFsaXphdGlvbiBvZiB0aGUgb3V0cHV0LiAgSW4gYSBcYGxv Y2FsJyBidWlsZAogICAgdGhlIHZpZXdlciBzdG9wcyBkdXJpbmcgdGhlIHdo b2xlIFRlWCBydW4uCiAgLSBpZiB0aGUgY29tcGlsYXRpb24gZmFpbHMsIHRo ZSBwcmV2aW91cyBzdGF0ZSBvZiB0aGUgb3V0cHV0IGZpbGUKICAgIGlzIHBy ZXNlcnZlZC4KICAtIFBERiBhbmQgRFZJIGNvbXBpbGF0aW9uIGFyZSBrZXB0 IGluIHNlcGFyYXRlIHN1YmRpcmVjdG9yaWVzCiAgICBwcmV2ZW50aW5nIGFu eSBwb3NzaWJpbGl0eSBvZiBhdXhpbGlhcnkgZmlsZSBpbmNvbXBhdGliaWxp dHkuCgpPbiB0aGUgb3RoZXIgaGFuZCwgYmVjYXVzZSBcYHRpZHknIGNvbXBp bGF0aW9uIHRha2VzIHBsYWNlIGluIGFub3RoZXIKZGlyZWN0b3J5LCBvY2Nh c2lvbmFsbHkgVGVYIHdvbid0IGJlIGFibGUgdG8gZmluZCBzb21lIGZpbGVz IChlLmcuLCB3aGVuCnVzaW5nIFxcZ3JhcGhpY3NwYXRoKTogaW4gdGhhdCBj YXNlIHVzZSAtSSB0byBzcGVjaWZ5IHRoZSBhZGRpdGlvbmFsCmRpcmVjdG9y aWVzIHRvIGNvbnNpZGVyLgoKVGhlIHZhbHVlcyBvZiB0aGUgQklCVEVYLCBM QVRFWCAob3IgUERGTEFURVgpLCBNQUtFSU5ERVgsIE1BS0VJTkZPLApURVgg KG9yIFBERlRFWCksIFRFWElOREVYLCBhbmQgVEhVTUJQREYgZW52aXJvbm1l bnQgdmFyaWFibGVzIGFyZSB1c2VkCnRvIHJ1biB0aG9zZSBjb21tYW5kcywg aWYgdGhleSBhcmUgc2V0LiAgQW55IENNRCBzdHJpbmdzIGFyZSBhZGRlZAph ZnRlciBAc2V0ZmlsZW5hbWUgZm9yIFRleGluZm8gaW5wdXQsIGluIHRoZSBm aXJzdCBsaW5lIGZvciBMYVRlWCBpbnB1dC4KCkVtYWlsIGJ1ZyByZXBvcnRz IHRvIDxidWctdGV4aW5mb0BnbnUub3JnPiwKZ2VuZXJhbCBxdWVzdGlvbnMg YW5kIGRpc2N1c3Npb24gdG8gPGhlbHAtdGV4aW5mb0BnbnUub3JnPi4KVGV4 aW5mbyBob21lIHBhZ2U6IGh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS90 ZXhpbmZvLyIKCiMgSW5pdGlhbGl6ZSB2YXJpYWJsZXMgZm9yIG9wdGlvbiBv dmVycmlkaW5nIGFuZCBvdGhlcndpc2UuCiMgRG9uJ3QgdXNlIGB1bnNldCcg c2luY2Ugb2xkIGJvdXJuZSBzaGVsbHMgZG9uJ3QgaGF2ZSB0aGlzIGNvbW1h bmQuCiMgSW5zdGVhZCwgYXNzaWduIHRoZW0gYW4gZW1wdHkgdmFsdWUuCmFj dGlvbj1jb21waWxlCmJhdGNoPWZhbHNlICAgICAjIHRydWUgZm9yIGJhdGNo IG1vZGUKZGVidWc9ZmFsc2UKZXNjYXBlPSJcXCIKZXhwYW5kPSAgICAgICAg ICMgdCBmb3IgZXhwYW5zaW9uIHZpYSBtYWtlaW5mbwppbmNsdWRlcz0KbGlu ZV9lcnJvcj10cnVlICMgUGFzcyAtLWZpbGUtbGluZS1lcnJvciB0byBUZVgu Cm5vX2xpbmVfZXJyb3I9ZmFsc2UgICMgYWJzb2x1dGVseSBkbyBub3QgcGFz cyAtLWZpbGUtbGluZS1lcnJvciB0byBUZVgKb25hbWU9ICAgICAgICAgICMg LS1vdXRwdXQKb3V0X2xhbmc9ZHZpCnF1aWV0PWZhbHNlICAgICAjIGJ5IGRl ZmF1bHQgbGV0IHRoZSB0b29scycgbWVzc2FnZSBiZSBkaXNwbGF5ZWQKcmVj b2RlPWZhbHNlCnNldF9sYW5ndWFnZT0KdGV4dHJhPSAgICAgICAgICMgRXh0 cmEgVGVYIGNvbW1hbmRzIHRvIGluc2VydCBpbiB0aGUgaW5wdXQgZmlsZS4K dHhpcHJlcmVxPTE5OTkwMTI5ICMgbWluaW11bSB0ZXhpbmZvLnRleCB2ZXJz aW9uIHdpdGggbWFjcm8gZXhwYW5zaW9uCnZlcmI9ZmFsc2UgICAgICAjIHRy dWUgZm9yIHZlcmJvc2UgbW9kZQp0cmFuc2xhdGVfZmlsZT0gIyBuYW1lIG9m IGNoYXJzZXQgdHJhbnNsYXRpb24gZmlsZQpyZWNvZGVfZnJvbT0gICAgIyBp ZiBub3QgZW1wdHksIHJlY29kZSBmcm9tIHRoaXMgZW5jb2RpbmcgdG8gQGRv Y3VtZW50ZW5jb2RpbmcKCm9yaWdfcHdkPWBwd2RgCgojIFdlIGhhdmUgdG8g aW5pdGlhbGl6ZSBJRlMgdG8gc3BhY2UgdGFiIG5ld2xpbmUgc2luY2Ugd2Ug c2F2ZSBhbmQKIyByZXN0b3JlIElGUyBhbmQgYXBwYXJlbnRseSBQT1NJWCBh bGxvd3Mgc3R1cGlkL2Jyb2tlbiBiZWhhdmlvciB3aXRoCiMgZW1wdHktYnV0 LXNldCBJRlMuCiMgaHR0cDovL2xpc3RzLmdudS5vcmcvYXJjaGl2ZS9odG1s L2F1dG9tYWtlLXBhdGNoZXMvMjAwNi0wNS9tc2cwMDAwOC5odG1sCklGUz0i IAkKIgoKIyBTeXN0ZW1zIHdoaWNoIGRlZmluZSAkQ09NU1BFQyBvciAkQ29t U3BlYyB1c2Ugc2VtaWNvbG9ucyB0byBzZXBhcmF0ZQojIGRpcmVjdG9yaWVz IGluIFRFWElOUFVUUyAtLSBleGNlcHQgZm9yIEN5Z3dpbiwgd2hlcmUgQ09N U1BFQyBtaWdodCBiZQojIGluaGVyaXRlZCwgYnV0IDogaXMgdXNlZC4KaWYg dGVzdCAtbiAiJENPTVNQRUMkQ29tU3BlYyIgJiYgdW5hbWUgfCBncmVwIC1p diBjeWd3aW4gPi9kZXYvbnVsbDsgdGhlbgogIHBhdGhfc2VwPSI7IgplbHNl CiAgcGF0aF9zZXA9IjoiCmZpCgojIFBhY2lmeSB2ZXJib3NlIGNkcy4KQ0RQ QVRIPSR7WlNIX1ZFUlNJT04rLn0kcGF0aF9zZXAKCiMgSW4gY2FzZSBzb21l b25lIGNyYXp5IGluc2lzdHMgb24gdXNpbmcgZ3JlcCAtRS4KOiAke0VHUkVQ PWVncmVwfQoKIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCiMjIEF1eGls aWFyeSBmdW5jdGlvbnMuICAjIwojIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0g IyMKCgojIEluIGNhc2UgYGxvY2FsJyBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRo ZSBzaGVsbC4KKAogIGZvbz1iYXIKICB0ZXN0X2xvY2FsICgpIHsKICAgIGxv Y2FsIGZvbz1mb28KICB9CiAgdGVzdF9sb2NhbAogIHRlc3QgJGZvbyA9IGJh cgopIHx8IGxvY2FsICgpIHsKICBjYXNlICQxIGluCiAgICAqPSopIGV2YWwg IiQxIjs7CiAgZXNhYwp9CgoKIyBjZF9vcmlnCiMgLS0tLS0tLQojIFJldHVy biB0byB0aGUgb3JpZ2luYWwgZGlyZWN0b3J5LgpjZF9vcmlnICgpCnsKICAj IEluIGNhc2UgJG9yaWdfcHdkIGlzIG9uIGEgZGlmZmVyZW50IGRyaXZlIChm b3IgRE9TKS4KICBjZCAvCgogICMgUmV0dXJuIHRvIHRoZSBvcmlnaW5hbCBk aXJlY3Rvcnkgc28gdGhhdAogICMgLSB0aGUgbmV4dCBmaWxlIGlzIHByb2Nl c3NlZCBpbiBjb3JyZWN0IGNvbmRpdGlvbnMKICAjIC0gdGhlIHRlbXBvcmFy eSBmaWxlIGNhbiBiZSByZW1vdmVkCiAgY2QgIiRvcmlnX3B3ZCIgfHwgZXhp dCAxCn0KCiMgZnVuY19kaXJuYW1lIEZJTEUKIyAtLS0tLS0tLS0tLS0tLS0t LQojIFJldHVybiB0aGUgZGlyZWN0b3J5IHBhcnQgb2YgRklMRS4KZnVuY19k aXJuYW1lICgpCnsKICBkaXJuYW1lICIkMSIgMj4vZGV2L251bGwgXAogIHx8 IHsgZWNobyAiJDEiIHwgc2VkICdzIS9bXi9dKiQhITtzIV4kIS4hJzsgfQp9 CgoKIyBhYnNvbHV0ZSBOQU1FIC0+IEFCUy1OQU1FCiMgLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQojIFJldHVybiBhbiBhYnNvbHV0ZSBwYXRoIHRvIE5B TUUuCmFic29sdXRlICgpCnsKICBjYXNlICQxIGluCiAgIFtcXC9dKiB8ID86 W1xcL10qKQogICAgICAjIEFic29sdXRlIHBhdGhzIGRvbid0IG5lZWQgdG8g YmUgZXhwYW5kZWQuCiAgICAgIGVjaG8gIiQxIgogICAgICA7OwogICAqKSBs b2NhbCByZWw9IiRvcmlnX3B3ZC9gZnVuY19kaXJuYW1lICQxYCIKICAgICAg aWYgdGVzdCAtZCAiJHJlbCI7IHRoZW4KICAgICAgICAoY2QgIiRyZWwiIDI+ L2Rldi9udWxsICYmIGVjaG8gYHB3ZGAvYGJhc2VuYW1lICIkMSJgKTsKICAg ICAgZWxzZQogICAgICAgIGZhdGFsIDEgIm5vdCBhIGRpcmVjdG9yeTogJHJl bCIKICAgICAgZmkKICAgICAgOzsKICBlc2FjCn0KCgojIGZpbmRwcm9nIFBS T0cKIyAtLS0tLS0tLS0tLS0tCiMgUmV0dXJuIHRydWUgaWYgUFJPRyBpcyBz b21ld2hlcmUgaW4gUEFUSCwgZWxzZSBmYWxzZS4KZmluZHByb2cgKCkKewog IGxvY2FsIHNhdmVJRlM9JElGUwogIElGUz0kcGF0aF9zZXAgICMgYnJlYWsg cGF0aCBjb21wb25lbnRzIGF0IHRoZSBwYXRoIHNlcGFyYXRvcgogIGZvciBk aXIgaW4gJFBBVEg7IGRvCiAgICBJRlM9JHNhdmVJRlMKICAgICMgVGhlIGJh c2ljIHRlc3QgZm9yIGFuIGV4ZWN1dGFibGUgaXMgYHRlc3QgLWYgJGYgJiYg dGVzdCAteCAkZicuCiAgICAjIChgdGVzdCAteCcgaXMgbm90IGVub3VnaCwg YmVjYXVzZSBpdCBjYW4gYWxzbyBiZSB0cnVlIGZvciBkaXJlY3Rvcmllcy4p CiAgICAjIFdlIGhhdmUgdG8gdHJ5IHRoaXMgYm90aCBmb3IgJDEgYW5kICQx LmV4ZS4KICAgICMKICAgICMgTm90ZTogT24gQ3lnd2luIGFuZCBESkdQUCwg YHRlc3QgLXgnIGFsc28gbG9va3MgZm9yIC5leGUuICBPbiBDeWd3aW4sCiAg ICAjIGFsc28gYHRlc3QgLWYnIGhhcyB0aGlzIGVuaGFuY2VtZW50LCBib3Qg bm90IG9uIERKR1BQLiAgKEJvdGggYXJlCiAgICAjIGRlc2lnbiBkZWNpc2lv bnMsIHNvIHRoZXJlIGlzIGxpdHRsZSBjaGFuY2UgdG8gbWFrZSB0aGVtIGNv bnNpc3RlbnQuKQogICAgIyBUaHVzbHksIGl0IHNlZW1zIHRvIGJlIGRpZmZp Y3VsdCB0byBtYWtlIHVzZSBvZiB0aGVzZSBlbmhhbmNlbWVudHMuCiAgICAj CiAgICBpZiAgeyB0ZXN0IC1mICIkZGlyLyQxIgkmJiB0ZXN0IC14ICIkZGly LyQxIjsgfSB8fAoJeyB0ZXN0IC1mICIkZGlyLyQxLmV4ZSIJJiYgdGVzdCAt eCAiJGRpci8kMS5leGUiOyB9OyB0aGVuCiAgICAgIHJldHVybiAwCiAgICBm aQogIGRvbmUKICByZXR1cm4gMQp9CgojIHJlcG9ydCBMSU5FMSBMSU5FMi4u LgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFJlcG9ydCBzb21lIGluZm9y bWF0aW9uIG9uIHN0ZGVyci4KcmVwb3J0ICgpCnsKICBmb3IgaSBpbiAiJEAi CiAgZG8KICAgIGVjaG8gPiYyICIkMDogJGkiCiAgZG9uZQp9CgojIFJlcG9y dCBzb21lIHZlcmJvc2UgaW5mb3JtYXRpb24uCnZlcmJvc2UgKCkKewogIGlm ICR2ZXJiOyB0aGVuCiAgICBlY2hvID4mMiAiJDA6ICRAIgogIGZpCn0KCiMg ZmF0YWwgRVhJVF9TVEFUVVMgTElORTEgTElORTIuLi4KIyAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFJlcG9ydCBhbiBlcnJvciBhbmQg ZXhpdCB3aXRoIGZhaWx1cmUuCmZhdGFsICgpCnsKICBzPSQxCiAgc2hpZnQK ICByZXBvcnQgIiRAIgogIGV4aXQgJHMKfQoKIyBlbnN1cmVfZGlyIERJUjEg RElSMi4uLgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgTWFrZSBzdXJl IHRoZSBkaXJlY3RvcmllcyBleGlzdC4KZW5zdXJlX2RpciAoKQp7CiAgZm9y IGRpcgogIGRvCiAgICB0ZXN0IC1kICIkZGlyIiBcCiAgICAgIHx8IG1rZGly ICIkZGlyIiBcCiAgICAgIHx8IGZhdGFsIDEgImNhbm5vdCBjcmVhdGUgZGly ZWN0b3J5OiAkZGlyIgogIGRvbmUKfQoKCiMjIC0tLS0tLS0tLS0tLS0tLS0g IyMKIyMgSGFuZGxpbmcgbGlzdHMuICAjIwojIyAtLS0tLS0tLS0tLS0tLS0t ICMjCgoKIyBsaXN0X2FwcGVuZCBMSVNULU5BTUUgRUxFTQojIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCiMgU2V0IExJU1QtTkFNRSB0byBpdHMgZm9y bWVyIGNvbnRlbnRzLCB3aXRoIEVMRU0gYXBwZW5kZWQuCmxpc3RfYXBwZW5k ICgpCnsKICBsb2NhbCBsYV9sPSIkMSIKICBzaGlmdAogIGV2YWwgc2V0IFgg XCQkbGFfbCAiJEAiCiAgc2hpZnQKICBldmFsICRsYV9sPVwiIiRAIlwiCn0K CiMgbGlzdF9wcmVmaXggTElTVC1OQU1FIFNFUCAtPiBTVFJJTkcKIyAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFJldHVybiBhIHN0 cmluZyB0aGF0IGlzIGNvbXBvc2VkIG9mIHRoZSBMSVNULU5BTUUgd2l0aCBl YWNoIGl0ZW0KIyBwcmVjZWRlZCBieSBTRVAuCmxpc3RfcHJlZml4ICgpCnsK ICBsb2NhbCBscF9wPSQyCiAgZXZhbCBzZXQgWCBcJCQxCiAgc2hpZnQKICBs b2NhbCBscF9yZXMKICBmb3IgaQogIGRvCiAgICBscF9yZXM9IiRscF9yZXMg XCIkbHBfcFwiIFwiJGlcIiIKICBkb25lCiAgZWNobyAiJGxwX3JlcyIKfQoK IyBsaXN0X2luZml4IExJU1QtTkFNRSBTRVAgLT4gU1RSSU5HCiMgLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFNhbWUgYXMgbGlzdF9w cmVmaXgsIGJ1dCBhIHNlcGFyYXRvci4KbGlzdF9pbmZpeCAoKQp7CiAgZXZh bCBzZXQgWCBcJCQxCiAgc2hpZnQKICBsb2NhbCBsYV9JRlM9JElGUwogIElG Uz0kcGF0aF9zZXAKICBlY2hvICIkKiIKICBJRlM9JGxhX0lGUwp9CgojIGxp c3RfZGlyX3RvX2FicyBMSVNULU5BTUUKIyAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCiMgQ29udmVydCB0aGUgbGlzdCB0byB1c2luZyBvbmx5IGFic29s dXRlIGRpciBuYW1lcy4KIyBDdXJyZW50bHkgdW51c2VkLCBidXQgc2hvdWxk IHJlcGxhY2UgYWJzb2x1dGVfZmlsZW5hbWVzIHNvbWUgZGF5LgpsaXN0X2Rp cl90b19hYnMgKCkKewogIGxvY2FsIGxkX2w9JDEKICBldmFsIHNldCBYIFwk JGxkX2wKICBzaGlmdAogIGxvY2FsIGxkX3JlcwogIGZvciBkaXIKICBkbwog ICAgZGlyPWBhYnNvbHV0ZSAiJGRpciJgCiAgICB0ZXN0IC1kICIkZGlyIiB8 fCBjb250aW51ZQogICAgbGRfcmVzPSIkbGRfcmVzIFwiJGRpclwiIgogIGRv bmUKICBzZXQgWCAkbGRfcmVzOyBzaGlmdAogIGV2YWwgJGxkX2w9XCIkQFwi Cn0KCiMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKIyMgVGVYIGF1 eGlsaWFyeSBmdW5jdGlvbnMuICAjIwojIyAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tICMjCgojIFNhdmUgVEVYSU5QVVRTIHNvIHdlIGNhbiBjb25zdHJ1 Y3QgYSBuZXcgVEVYSU5QVVRTIHBhdGggZm9yIGVhY2ggZmlsZS4KIyBMaWtl d2lzZSBmb3IgYmlidGV4IGFuZCBtYWtlaW5kZXguCnRleF9lbnZ2YXJzPSJC SUJJTlBVVFMgQlNUSU5QVVRTIElOREVYU1RZTEUgVEVYSU5QVVRTIgpmb3Ig dmFyIGluICR0ZXhfZW52dmFyczsgZG8KICBldmFsICR7dmFyfV9vcmlnPVwk JHZhcgogIGV4cG9ydCAkdmFyCmRvbmUKCgojIGFic29sdXRlX2ZpbGVuYW1l cyBURVgtUEFUSCAtPiBURVgtUEFUSAojIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQojIENvbnZlcnQgcmVsYXRpdmUgcGF0aHMg dG8gYWJzb2x1dGUgcGF0aHMsIHNvIHdlIGNhbiBydW4gaW4gYW5vdGhlcgoj IGRpcmVjdG9yeSAoZS5nLiwgaW4gdGlkeSBidWlsZCBtb2RlLCBvciBkdXJp bmcgdGhlIG1hY3JvLXN1cHBvcnQKIyBkZXRlY3Rpb24pLgojCiMgRW1wdHkg cGF0aCBjb21wb25lbnRzIGFyZSBtZWFuaW5nZnVsIHRvIHRleC4gIFdlIHJl d3JpdGUgdGhlbQojIGFzIGBFTVBUWScgc28gdGhleSBkb24ndCBnZXQgbG9z dCB3aGVuIHdlIHNwbGl0IG9uICRwYXRoX3NlcC4KIyBIb3BlZnVsbHkgbm8g b25lIHdpbGwgaGF2ZSBhbiBhY3R1YWwgZGlyZWN0b3J5IG5hbWVkIEVNUFRZ LgphYnNvbHV0ZV9maWxlbmFtZXMgKCkKewogIGxvY2FsIHJlcGxhY2VfZW1w dHk9Ii1lICdzL14kcGF0aF9zZXAvRU1QVFkkcGF0aF9zZXAvZycgXAogICAg ICAgICAgICAgICAgICAgICAgIC1lICdzLyRwYXRoX3NlcFwkLyR7cGF0aF9z ZXB9RU1QVFkvZycgXAogICAgICAgICAgICAgICAgICAgICAgIC1lICdzLyRw YXRoX3NlcCRwYXRoX3NlcC8ke3BhdGhfc2VwfUVNUFRZOi9nJyIKICBsb2Nh bCByZXM9YGVjaG8gIiQxIiB8IGV2YWwgc2VkICRyZXBsYWNlX2VtcHR5YAog IHNhdmVfSUZTPSRJRlMKICBJRlM9JHBhdGhfc2VwCiAgc2V0IHggJHJlczsg c2hpZnQKICByZXM9LgogIGZvciBkaXIKICBkbwogICAgY2FzZSAkZGlyIGlu CiAgICAgIEVNUFRZKQogICAgICAgIHJlcz0kcmVzJHBhdGhfc2VwCiAgICAg ICAgOzsKICAgICAgKikKICAgICAgICBpZiB0ZXN0IC1kICRkaXI7IHRoZW4K CSAgcmVzPSRyZXMkcGF0aF9zZXBgYWJzb2x1dGUgIiRkaXIiYAoJZmkKICAg ICAgICA7OwogICAgZXNhYwogIGRvbmUKICBlY2hvICIkcmVzIgp9CgoKIyBv dXRwdXRfYmFzZV9uYW1lIEZJTEUKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0K IyBUaGUgbmFtZSBvZiB0aGUgRklMRSBwb3NzaWJseSByZW5hbWVkIHRvIHNh dGlzZnkgLS1vdXRwdXQuCm91dHB1dF9iYXNlX25hbWUgKCkKewogIGNhc2Ug JG9uYW1lIGluCiAgICAnJykgZWNobyAiJDEiOzsKICAgICAqKSBsb2NhbCBv dXRfbm9leHQ9YGVjaG8gIiRvbmFtZSIgfCBzZWQgJ3MvXC5bXi5dKiQvLydg Cglsb2NhbCBmaWxlX2V4dD1gZWNobyAiJDEiIHwgc2VkICdzL14uKlwuLy8n YAoJZWNobyAiJG91dF9ub2V4dC4kZmlsZV9leHQiCiAgICAgIDs7CiAgZXNh Ywp9CgojIG1vdmVfdG9fZGVzdCBGSUxFCiMgLS0tLS0tLS0tLS0tLS0tLS0K IyBNb3ZlIHRoZSBGSUxFIHRvIHRoZSBwbGFjZSB3aGVyZSB0aGUgdXNlciBl eHBlY3RzIGl0LiAgRklMRSBjYW4gYmUKIyB0aGUgcHJpbmNpcGFsIG91dHB1 dCAoaW4gd2hpY2ggY2FzZSAtbyBkaXJlY3RseSBhcHBseSksIG9yIGFuIGF1 eGlsaWFyeQojIGZpbGUgd2l0aCB0aGUgc2FtZSBiYXNlIG5hbWUuCm1vdmVf dG9fZGVzdCAoKQp7CiAgbG9jYWwgZGVzdAoKICBjYXNlICR0aWR5OiRvbmFt ZSBpbgogICAgdHJ1ZTopICBkZXN0PSRvcmlnX3B3ZDs7CiAgICBmYWxzZTop IGRlc3Q9OzsKICAgICo6KikgICAgZGVzdD0kKG91dHB1dF9iYXNlX25hbWUg IiQxIik7OwogIGVzYWMKICBpZiB0ZXN0ICEgLWYgIiQxIjsgdGhlbgogICAg ZmF0YWwgMSAibm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeTogJDEiCiAgZmkK ICBpZiB0ZXN0IC1uICIkZGVzdCI7IHRoZW4KICAgIHZlcmJvc2UgIkNvcHlp bmcgJDEgdG8gJGRlc3QiCiAgICBjcCAtcCAiJDEiICIkZGVzdCIKICBmaQp9 CgoKIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCiMjIE1hbmFnaW5nIHhy ZWYgZmlsZXMuICAjIwojIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKCiMg YXV4X2ZpbGVfcCBGSUxFCiMgLS0tLS0tLS0tLS0tLS0tCiMgUmV0dXJuIHdp dGggc3VjY2VzcyB3aXRoIEZJTEUgaXMgYW4gYXV4IGZpbGUuCmF1eF9maWxl X3AgKCkKewogIHRlc3QgLWYgIiQxIiB8fCByZXR1cm4gMQogIGNhc2UgJDEg aW4KICAgICouYXV4KSByZXR1cm4gMDs7CiAgICAqKSAgICAgcmV0dXJuIDE7 OwogIGVzYWMKfQoKIyBpbmRleF9maWxlX3AgRklMRQojIC0tLS0tLS0tLS0t LS0tLS0tCiMgUmV0dXJuIHdpdGggc3VjY2VzcyB3aXRoIEZJTEUgaXMgYW4g aW5kZXggZmlsZS4KaW5kZXhfZmlsZV9wICgpCnsKICB0ZXN0IC1mICIkMSIg fHwgcmV0dXJuIDEKICBjYXNlIGBzZWQgJzFxJyAkMWAgaW4KICAgICJcXGVu dHJ5eyIqfCJcXGluZGV4ZW50cnl7IiopIHJldHVybiAwOzsKICAgICopIHJl dHVybiAxOzsKICBlc2FjCn0KCiMgeHJlZl9maWxlX3AgRklMRQojIC0tLS0t LS0tLS0tLS0tLS0KIyBSZXR1cm4gd2l0aCBzdWNjZXNzIGlmIEZJTEUgaXMg YW4geHJlZiBmaWxlIChpbmRleGVzLCB0YWJsZXMgYW5kIGxpc3RzKS4KeHJl Zl9maWxlX3AgKCkKewogIHRlc3QgLWYgIiQxIiB8fCByZXR1cm4gMQogICMg SWYgdGhlIGZpbGUgaXMgbm90IHN1aXRhYmxlIHRvIGJlIGFuIGluZGV4IG9y IHhyZWYgZmlsZSwgZG9uJ3QKICAjIHByb2Nlc3MgaXQuICBJdCdzIHN1aXRh YmxlIGlmIHRoZSBmaXJzdCBjaGFyYWN0ZXIgaXMgYQogICMgYmFja3NsYXNo IG9yIHJpZ2h0IHF1b3RlIG9yIGF0LCBhcyBsb25nIGFzIHRoZSBmaXJzdCBs aW5lIGlzbid0CiAgIyBcaW5wdXQgdGV4aW5mby4KICBjYXNlIGBzZWQgJzFx JyAkMWAgaW4KICAgICJcXGlucHV0IHRleGluZm8iKikgcmV0dXJuIDE7Owog ICAgW1xcJydAXSopICAgICAgICAgICByZXR1cm4gMDs7CiAgICAgICAgICAg KikgICAgICAgICAgIHJldHVybiAxOzsKICBlc2FjCn0KCgojIGdlbmVyYXRl ZF9maWxlc19nZXQgRklMRU5BTUUtTk9FWFQgW1BSRURJQ0FURS1GSUxURVJd CiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KIyBSZXR1cm4gdGhlIGxpc3Qgb2YgZmlsZXMgZ2VuZXJh dGVkIGJ5IHRoZSBUZVggY29tcGlsYXRpb24gb2YgRklMRU5BTUUtTk9FWFQu CmdlbmVyYXRlZF9maWxlc19nZXQgKCkKewogIGxvY2FsIGZpbHRlcj10cnVl CiAgaWYgdGVzdCAtbiAiJDIiOyB0aGVuCiAgICBmaWx0ZXI9JDIKICBmaQoK ICAjIEdhdGhlciB0aGUgZmlsZXMgY3JlYXRlZCBieSBUZVguCiAgKAogICAg aWYgdGVzdCAtZiAiJDEubG9nIjsgdGhlbgogICAgICBzZWQgLW4gLWUgInMs XlxcXFxvcGVub3V0LiogPSBcYFxcKC4qXFwpJ1xcLixcXDEscCIgIiQxLmxv ZyIKICAgIGZpCiAgICBlY2hvICIkMS5sb2ciCiAgKSB8CiAgIyBEZXBlbmRp bmcgb24gdGhlc2UgZmlsZXMsIGluZmVyIG91dHB1dHMgZnJvbSBvdGhlciB0 b29scy4KICB3aGlsZSByZWFkIGZpbGU7IGRvCiAgICBlY2hvICRmaWxlCiAg ICBjYXNlICRsYW5ndWFnZSBpbgogICAgICAodGV4aW5mbykKICAgICAgICAj IHRleGluZGV4OiB0ZXhpbmZvLmNwIC0+IHRleGluZm8uY3BzCglpZiBpbmRl eF9maWxlX3AgJGZpbGU7IHRoZW4KCSAgZWNobyAke2ZpbGV9cwoJZmkKCTs7 CiAgICAgIChsYXRleCkKCSMgYmlidGV4OiAqLmF1eCAtPiAqLmJibCBhbmQg Ki5ibGcuCiAgICAgICAgaWYgYXV4X2ZpbGVfcCAkZmlsZTsgdGhlbgogICAg ICAgICAgZWNobyAkZmlsZSB8IHNlZCAncy9eXCguKlwpXC5hdXgkL1wxLmJi bC8nCgkgIGVjaG8gJGZpbGUgfCBzZWQgJ3MvXlwoLipcKVwuYXV4JC9cMS5i bGcvJwoJZmkKCTs7CiAgICBlc2FjCiAgZG9uZSB8CiAgIyBGaWx0ZXIgZXhp c3RpbmcgZmlsZXMgbWF0Y2hpbmcgdGhlIGNyaXRlcmlvbi4KICB3aGlsZSBy ZWFkIGZpbGU7IGRvCiAgICBpZiAkZmlsdGVyICRmaWxlOyB0aGVuCiAgICAg IGVjaG8gJGZpbGUKICAgIGZpCiAgZG9uZSB8CiAgc29ydAp9CgoKIyB4cmVm X2ZpbGVzX3NhdmUKIyAtLS0tLS0tLS0tLS0tLS0KIyBTYXZlIHRoZSB4cmVm IGZpbGVzLgp4cmVmX2ZpbGVzX3NhdmUgKCkKewogICMgU2F2ZSBjb3BpZXMg b2YgYXV4aWxpYXJ5IGZpbGVzIGZvciBsYXRlciBjb21wYXJpc29uLgogIHhy ZWZfZmlsZXNfb3JpZz1gZ2VuZXJhdGVkX2ZpbGVzX2dldCAiJGluX25vZXh0 IiB4cmVmX2ZpbGVfcGAKICBpZiB0ZXN0IC1uICIkeHJlZl9maWxlc19vcmln IjsgdGhlbgogICAgdmVyYm9zZSAiQmFja2luZyB1cCB4cmVmIGZpbGVzOiAk eHJlZl9maWxlc19vcmlnIgogICAgIyBUaGUgZm9sbG93aW5nIGxpbmUgaW1w cm92ZXMgYGNwICR4cmVmX2ZpbGVzX29yaWcgIiR3b3JrX2JhayInCiAgICAj IGJ5IHByZXNlcnZpbmcgdGhlIGRpcmVjdG9yeSBwYXJ0cy4gIFRoaW5rIG9m CiAgICAjIGNwIGNoYXAxL21haW4uYXV4IGNoYXAyL21haW4uYXV4ICR3b3Jr X2Jhay4KICAgIHRhciBjZiAtICR4cmVmX2ZpbGVzX29yaWcgfCAoY2QgIiR3 b3JrX2JhayIgJiYgdGFyIHhmIC0pCiAgZmkKfQoKCiMgeHJlZl9maWxlc19j aGFuZ2VkCiMgLS0tLS0tLS0tLS0tLS0tLS0tCiMgV2hldGhlciB0aGUgeHJl ZiBmaWxlcyB3ZXJlIGNoYW5nZWQgc2luY2UgdGhlIHByZXZpb3VzIHJ1bi4K eHJlZl9maWxlc19jaGFuZ2VkICgpCnsKICAjIExhVGVYIChhbmQgdGhlIHBh Y2thZ2UgY2hhbmdlYmFyKSByZXBvcnQgaW4gdGhlIExPRyBmaWxlIGlmIGl0 CiAgIyBzaG91bGQgYmUgcmVydW4uICBUaGlzIGlzIG5lZWRlZCBmb3IgZmls ZXMgaW5jbHVkZWQgZnJvbQogICMgc3ViZGlycywgc2luY2UgdGV4aTJkdmkg ZG9lcyBub3QgdHJ5IHRvIGNvbXBhcmUgeHJlZiBmaWxlcyBpbgogICMgc3Vi ZGlycy4gIFBlcmZvcm1pbmcgeHJlZiBmaWxlcyB0ZXN0IGlzIHN0aWxsIGdv b2Qgc2luY2UgTGFUZVgKICAjIGRvZXMgbm90IHJlcG9ydCBjaGFuZ2VzIGlu IHhyZWYgZmlsZXMuCiAgaWYgZ3JlcCAiUmVydW4gdG8gZ2V0IiAiJGluX25v ZXh0LmxvZyIgPiY2IDI+JjE7IHRoZW4KICAgIHJldHVybiAwCiAgZmkKCiAg IyBJZiBvbGQgYW5kIG5ldyBsaXN0cyBkb24ndCBhdCBsZWFzdCBoYXZlIHRo ZSBzYW1lIGZpbGUgbGlzdCwKICAjIHRoZW4gb25lIGZpbGUgb3IgYW5vdGhl ciBoYXMgZGVmaW5pdGVseSBjaGFuZ2VkLgogIHhyZWZfZmlsZXNfbmV3PWBn ZW5lcmF0ZWRfZmlsZXNfZ2V0ICIkaW5fbm9leHQiIHhyZWZfZmlsZV9wYAog IHZlcmJvc2UgIk9yaWdpbmFsIHhyZWYgZmlsZXMgPSAkeHJlZl9maWxlc19v cmlnIgogIHZlcmJvc2UgIk5ldyB4cmVmIGZpbGVzICAgICAgPSAkeHJlZl9m aWxlc19uZXciCiAgaWYgdGVzdCAieCR4cmVmX2ZpbGVzX29yaWciICE9ICJ4 JHhyZWZfZmlsZXNfbmV3IjsgdGhlbgogICAgcmV0dXJuIDAKICBmaQoKICAj IENvbXBhcmUgZWFjaCBmaWxlIHVudGlsIHdlIGZpbmQgYSBkaWZmZXJlbmNl LgogIGZvciB0aGlzX2ZpbGUgaW4gJHhyZWZfZmlsZXNfbmV3OyBkbwogICAg dmVyYm9zZSAiQ29tcGFyaW5nIHhyZWYgZmlsZSBgZWNobyAkdGhpc19maWxl IHwgc2VkICdzfFwuL3x8ZydgIC4uLiIKICAgICMgY21wIC1zIHJldHVybnMg bm9uemVybyBleGl0IHN0YXR1cyBpZiBmaWxlcyBkaWZmZXIuCiAgICBpZiBj bXAgLXMgIiR0aGlzX2ZpbGUiICIkd29ya19iYWsvJHRoaXNfZmlsZSI7IHRo ZW4gOjsgZWxzZQogICAgICB2ZXJib3NlICJ4cmVmIGZpbGUgYGVjaG8gJHRo aXNfZmlsZSB8IHNlZCAnc3xcLi98fGcnYCBkaWZmZXJlZCAuLi4iCiAgICAg IGlmICRkZWJ1ZzsgdGhlbgoJZGlmZiAtdSAiJHdvcmtfYmFrLyR0aGlzX2Zp bGUiICIkdGhpc19maWxlIgogICAgICBmaQogICAgICByZXR1cm4gMAogICAg ZmkKICBkb25lCgogICMgTm8gY2hhbmdlLgogIHJldHVybiAxCn0KCgoKIyMg LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKIyMgUnVubmluZyB0aGUgVGVY IHN1aXRlLiAgIyMKIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKCiMg cnVuX3RleCAoKQojIC0tLS0tLS0tLS0KIyBSdW4gVGVYIGFzICIkdGV4ICRp bl9pbnB1dCIsIHRha2luZyBjYXJlIG9mIGVycm9ycyBhbmQgbG9ncy4KcnVu X3RleCAoKQp7CiAgY2FzZSAkbGFuZ3VhZ2U6JG91dF9sYW5nIGluCiAgICBs YXRleDpkdmkpICAgdGV4PSR7TEFURVg6LWxhdGV4fTs7CiAgICBsYXRleDpw ZGYpICAgdGV4PSR7UERGTEFURVg6LXBkZmxhdGV4fTs7CiAgICB0ZXhpbmZv OmR2aSkKICAgICAgICAjIE1ldGFQb3N0IGFsc28gdXNlcyB0aGUgVEVYIGVu dmlyb25tZW50IHZhcmlhYmxlLiAgSWYgdGhlIHVzZXIKICAgICAgICAjIGhh cyBzZXQgVEVYPWxhdGV4IGZvciB0aGF0IHJlYXNvbiwgZG9uJ3QgYm9tYiBv dXQuCiAgICAgICAgY2FzZSAkVEVYIGluCgkgICpsYXRleCkgdGV4PXRleDs7 ICMgZG9uJ3QgYm90aGVyIHRyeWluZyB0byBmaW5kIGV0ZXgKCSAgICAgICAq KSB0ZXg9JFRFWAogICAgICAgIGVzYWM7OwogICAgdGV4aW5mbzpwZGYpIHRl eD0kUERGVEVYOzsKCiAgICAqKSBmYXRhbCAxICIkb3V0X2xhbmcgbm90IHN1 cHBvcnRlZCBmb3IgJGxhbmd1YWdlIjs7CiAgZXNhYwoKICAjIEJld2FyZSBv ZiBhdXggZmlsZXMgaW4gc3ViZGlyZWN0b3JpZXMgdGhhdCByZXF1aXJlIHRo ZQogICMgc3ViZGlyZWN0b3J5IHRvIGV4aXN0LgogIGNhc2UgJGxhbmd1YWdl OiR0aWR5IGluCiAgICBsYXRleDp0cnVlKQogICAgICAgc2VkIC1uICdzfF5b IF0qXFxpbmNsdWRle1woLipcKS8uKn0uKnxcMXxwJyAiJGluX2lucHV0IiB8 CiAgICAgICBzb3J0IC11IHwKICAgICAgIHdoaWxlIHJlYWQgZAogICAgICAg ZG8KCSBlbnN1cmVfZGlyICIkd29ya19idWlsZC8kZCIKICAgICAgIGRvbmUK ICAgICAgIDs7CiAgZXNhYwoKICAjIE5vdGUgdGhhdCB0aGlzIHdpbGwgYmUg dXNlZCB2aWEgYW4gZXZhbDogcXVvdGUgcHJvcGVybHkuCiAgbG9jYWwgY21k PSR0ZXgKCiAgIyBJZiBwb3NzaWJsZSwgbWFrZSBUZVggcmVwb3J0IGVycm9y IGxvY2F0aW9ucyBpbiBHTlUgZm9ybWF0LgogIGlmIHRlc3QgIiR7dGV4X2hl bHA6K3NldH0iICE9IHNldDsgdGhlbgogICAgIyBHbyB0byBhIHRlbXBvcmFy eSBkaXJlY3RvcnkgdG8gdHJ5IC0taGVscCwgc2luY2Ugb2xkIHZlcnNpb25z IHRoYXQKICAgICMgZG9uJ3QgYWNjZXB0IC0taGVscCB3aWxsIGdlbmVyYXRl IGEgdGV4cHV0LmxvZy4KICAgIHRleF9oZWxwX2Rpcj0kdDJkZGlyL3RleF9o ZWxwCiAgICBlbnN1cmVfZGlyICIkdGV4X2hlbHBfZGlyIgogICAgdGV4X2hl bHA9YGNkICIkdGV4X2hlbHBfZGlyIiA+JjYgJiYgJHRleCAtLWhlbHAgPC9k ZXYvbnVsbCAyPiYxYAogIGZpCiAgaWYgJG5vX2xpbmVfZXJyb3I7IHRoZW4g OjsgZWxzZQogICAgIyBUaGUgbWsgcHJvZ3JhbSBhbmQgcGVyaGFwcyBvdGhl cnMgd2FudCB0byBwYXJzZSBUZVgncwogICAgIyBvcmlnaW5hbCBlcnJvciBt ZXNzYWdlcy4KICAgIGNhc2UgJGxpbmVfZXJyb3I6JHRleF9oZWxwIGluCiAg ICAgIHRydWU6KmZpbGUtbGluZS1lcnJvciopIGNtZD0iJGNtZCAtLWZpbGUt bGluZS1lcnJvciI7OwogICAgZXNhYwogIGZpCiAgCiAgIyBUZWxsIFRlWCBh Ym91dCBUQ1ggZmlsZSwgaWYgc3BlY2lmaWVkLgogIHRlc3QgLW4gIiR0cmFu c2xhdGVfZmlsZSIgJiYgY21kPSIkY21kIC0tdHJhbnNsYXRlLWZpbGU9JHRy YW5zbGF0ZV9maWxlIgoKICAjIFRlbGwgVGVYIHRvIGJlIGJhdGNoIGlmIHJl cXVlc3RlZC4KICBpZiAkYmF0Y2g7IHRoZW4KICAgICMgXGJhdGNobW9kZSBk b2VzIG5vdCBzaG93IHRlcm1pbmFsIG91dHB1dCBhdCBhbGwsIHNvIHdlIGRv bid0CiAgICAjIHdhbnQgdGhhdC4gIEFuZCBldmVuIGluIGJhdGNoIG1vZGUs IFRlWCBpbnNpc3RzIG9uIGhhdmluZyBpbnB1dAogICAgIyBmcm9tIHRoZSB1 c2VyLiAgQ2xvc2UgaXRzIHN0ZGluIHRvIG1ha2UgaXQgaW1wb3NzaWJsZS4K ICAgIGNtZD0iJGNtZCA8L2Rldi9udWxsICcke2VzY2FwZX1ub25zdG9wbW9k ZScgJyR7ZXNjYXBlfWlucHV0JyIKICBmaQoKICAjIFRlWCdzIFxpbnB1dCBk b2VzIG5vdCBzdXBwb3J0IHdoaXRlIHNwYWNlcyBpbiBmaWxlIG5hbWVzLiAg T3VyCiAgIyBpbnRlbnNpdmUgdXNlIG9mIGFic29sdXRlIGZpbGUgbmFtZXMg bWFrZXMgdGhpcyB3b3JzZTogdGhlCiAgIyBlbmNsb3NpbmcgZGlyZWN0b3J5 IG5hbWVzIG1heSBpbmNsdWRlIHdoaXRlIHNwYWNlcy4gIEltcHJvdmUgdGhl CiAgIyBzaXR1YXRpb24gdXNpbmcgYSBzeW1ib2xpYyBsaW5rLiAgRG8gbm90 IGFsdGVyIGluX2lucHV0LgogIGNhc2UgJHRpZHk6YGZ1bmNfZGlybmFtZSAi JGluX2lucHV0ImAgaW4KICAgIHRydWU6KicgJyopCiAgICAgIF9ydW5fdGV4 X2ZpbGVfbmFtZT1gYmFzZW5hbWUgIiRpbl9pbnB1dCJgCiAgICAgIGlmIHRl c3QgISAtZiAiJF9ydW5fdGV4X2ZpbGVfbmFtZSI7IHRoZW4KCXZlcmJvc2Ug bG4gLXNmICIkaW5faW5wdXQiCiAgICAgICAgbG4gLXNmICIkX3J1bl90ZXhf ZmlsZV9uYW1lIgogICAgICBmaQogICAgICBjbWQ9IiRjbWQgJyRfcnVuX3Rl eF9maWxlX25hbWUnIgogICAgICA7OwoKICAgICopCiAgICAgIGNtZD0iJGNt ZCAnJGluX2lucHV0JyIKICAgICAgOzsKICBlc2FjCgogIHZlcmJvc2UgIlJ1 bm5pbmcgJGNtZCAuLi4iCiAgaWYgZXZhbCAiJGNtZCIgPiY1OyB0aGVuCiAg ICBtb3ZlX3RvX2Rlc3QgIiRpbl9ub2V4dC4kb3V0X2xhbmciCiAgZWxzZQog ICAgZmF0YWwgMSAiJHRleCBleGl0ZWQgd2l0aCBiYWQgc3RhdHVzLCBxdWl0 dGluZy4iCiAgZmkKfQoKIyBydW5fYmlidGV4ICgpCiMgLS0tLS0tLS0tLS0t LQojIFJ1biBiaWJ0ZXggb24gY3VycmVudCBmaWxlLgojIC0gSWYgaXRzIGlu cHV0IChBVVgpIGV4aXN0cy4KIyAtIElmIHNvbWUgY2l0YXRpb25zIGFyZSBt aXNzaW5nIChMT0cgY29udGFpbnMgYENpdGF0aW9uJykuCiMgICBvciB0aGUg TE9HIGNvbXBsYWlucyBvZiBhIG1pc3NpbmcgLmJibAojCiMgV2UgcnVuIGJp YnRleCBmaXJzdCwgYmVjYXVzZSBJIGNhbiBzZWUgcmVhc29ucyBmb3IgdGhl IGluZGV4ZXMKIyB0byBjaGFuZ2UgYWZ0ZXIgYmlidGV4IGlzIHJ1biwgYnV0 IEkgc2VlIG5vIHJlYXNvbiBmb3IgdGhlCiMgY29udmVyc2UuCiMKIyBEb24n dCB0cnkgdG8gYmUgdG9vIHNtYXJ0OgojCiMgMS4gUnVubmluZyBiaWJ0ZXgg b25seSBpZiB0aGUgYmJsIGZpbGUgZXhpc3RzIGFuZCBpcyBvbGRlciB0aGFu CiMgdGhlIExhVGVYIGZpbGUgaXMgd3JvbmcsIHNpbmNlIHRoZSBkb2N1bWVu dCBtaWdodCBpbmNsdWRlIGZpbGVzCiMgdGhhdCBoYXZlIGNoYW5nZWQuCiMK IyAzLiBCZWNhdXNlIHRoZXJlIGNhbiBiZSBzZXZlcmFsIEFVWCAoaWYgdGhl cmUgYXJlIFxpbmNsdWRlJ3MpLAojIGJ1dCBhIHNpbmdsZSBMT0csIGxvb2tp bmcgZm9yIG1pc3NpbmcgY2l0YXRpb25zIGluIExPRyBpcwojIGVhc2llciwg dGhvdWdoIHdlIHRha2UgdGhlIHJpc2sgdG8gbWF0Y2ggZmFsc2UgbWVzc2Fn ZXMuCnJ1bl9iaWJ0ZXggKCkKewogIGNhc2UgJGxhbmd1YWdlIGluCiAgICBs YXRleCkgICBiaWJ0ZXg9JHtCSUJURVg6LWJpYnRleH07OwogICAgdGV4aW5m bykgcmV0dXJuOzsKICBlc2FjCgogICMgIkNpdGF0aW9uIHVuZGVmaW5lZCIg aXMgZm9yIExhVGVYLCAiVW5kZWZpbmVkIGNpdGF0aW9uIiBmb3IgYnR4bWFj LnRleC4KICBpZiB0ZXN0IC1yICIkaW5fbm9leHQuYXV4IiBcCiAgICAgJiYg dGVzdCAtciAiJGluX25vZXh0LmxvZyIgXAogICAgICYmIChncmVwICdXYXJu aW5nOi4qQ2l0YXRpb24uKnVuZGVmaW5lZCcgIiRpbl9ub2V4dC5sb2ciIFwK ICAgICAgICAgIHx8IGdyZXAgJy4qVW5kZWZpbmVkIGNpdGF0aW9uJyAiJGlu X25vZXh0LmxvZyIgXAogICAgICAgICAgfHwgZ3JlcCAnTm8gZmlsZSAuKlwu YmJsXC4nICIkaW5fbm9leHQubG9nIikgXAogICAgICAgID4mNiAyPiYxOyBc CiAgdGhlbgogICAgZ2VuZXJhdGVkX2ZpbGVzX2dldCAiJGluX25vZXh0IiB8 CiAgICB3aGlsZSByZWFkIGYKICAgIGRvCiAgICAgIGlmIHRlc3QgLXMgIiRm IiAmJiBcCiAgICAgICAgIChncmVwICdeXFxiaWJzdHlsZVt7XScgIiRmIiAg IFwKICAgICAgICAgICYmIGdyZXAgJ15cXGJpYmRhdGFbe10nICIkZiIgXAoJ ICAjIyBUaGUgZm9sbG93aW5nIGxpbmUgaXMgc3VzcGljaW91czogZmFpbHMg d2hlbiB0aGVyZQogICAgICAgICAgIyMgYXJlIGNpdGF0aW9ucyBpbiBzdWIg YXV4IGZpbGVzLiAgV2UgbmVlZCB0byBiZQogICAgICAgICAgIyMgc21hcnRl ciBpbiB0aGlzIGNhc2UuCiAgICAgICAgICAjIyAmJiBncmVwICdeXFxjaXRh dGlvblt7XScgIiRmIgoJICApID4mNiAyPiYxOyB0aGVuCiAgICAgICAgdmVy Ym9zZSAiUnVubmluZyAkYmlidGV4ICRmIC4uLiIKICAgICAgICAkYmlidGV4 ICIkZiIgPiY1IHx8CiAgICAgICAgICBmYXRhbCAxICIkYmlidGV4IGV4aXRl ZCB3aXRoIGJhZCBzdGF0dXMsIHF1aXR0aW5nLiIKICAgICAgZmkKICAgIGRv bmUKICBmaQp9CgojIHJ1bl9pbmRleCAoKQojIC0tLS0tLS0tLS0tLQojIFJ1 biB0ZXhpbmRleCAob3IgbWFrZWluZGV4KSBvbiBjdXJyZW50IGluZGV4IGZp bGVzLiAgSWYgdGhleSBhbHJlYWR5CiMgZXhpc3QsIGFuZCBhZnRlciBydW5u aW5nIFRlWCBhIGZpcnN0IHRpbWUgdGhlIGluZGV4IGZpbGVzIGRvbid0CiMg Y2hhbmdlLCB0aGVuIHRoZXJlJ3Mgbm8gcmVhc29uIHRvIHJ1biBUZVggYWdh aW4uICBCdXQgd2Ugd29uJ3Qga25vdwojIHRoYXQgaWYgdGhlIGluZGV4IGZp bGVzIGFyZSBvdXQgb2YgZGF0ZSBvciBub25leGlzdGVudC4KcnVuX2luZGV4 ICgpCnsKICBjYXNlICRsYW5ndWFnZSBpbgogICAgbGF0ZXgpICAgdGV4aW5k ZXg9JHtNQUtFSU5ERVg6LW1ha2VpbmRleH07OwogICAgdGV4aW5mbykgdGV4 aW5kZXg9JHtURVhJTkRFWDotdGV4aW5kZXh9OzsKICBlc2FjCiAgaW5kZXhf ZmlsZXM9YGdlbmVyYXRlZF9maWxlc19nZXQgJGluX25vZXh0IGluZGV4X2Zp bGVfcGAKICBpZiB0ZXN0IC1uICIkdGV4aW5kZXgiICYmIHRlc3QgLW4gIiRp bmRleF9maWxlcyI7IHRoZW4KICAgIHZlcmJvc2UgIlJ1bm5pbmcgJHRleGlu ZGV4ICRpbmRleF9maWxlcyAuLi4iCiAgICAkdGV4aW5kZXggJGluZGV4X2Zp bGVzIDI+JjUgMT4mMiB8fAogICAgICAgZmF0YWwgMSAiJHRleGluZGV4IGV4 aXRlZCB3aXRoIGJhZCBzdGF0dXMsIHF1aXR0aW5nLiIKICBmaQp9CgoKIyBy dW5fdGh1bWJwZGYgKCkKIyAtLS0tLS0tLS0tLS0tLS0KcnVuX3RodW1icGRm ICgpCnsKICBpZiB0ZXN0ICRvdXRfbGFuZyA9IHBkZiBcCiAgICAgJiYgdGVz dCAtciAiJGluX25vZXh0LmxvZyIgXAogICAgICYmIGdyZXAgJ3RodW1icGRm XC5zdHknICAiJGluX25vZXh0LmxvZyIgPiY2IDI+JjE7IFwKICB0aGVuCiAg ICB0aHVtYnBkZj0ke1RIVU1CUERGOi10aHVtYnBkZn0KICAgIHZlcmJvc2Ug IlJ1bm5pbmcgJHRodW1icGRmICRpbl9ub2V4dCAuLi4iCiAgICBpZiAkdGh1 bWJwZGYgIiRpbl9ub2V4dCIgPiY1OyB0aGVuCiAgICAgIHJ1bl90ZXgKICAg IGVsc2UKICAgICAgcmVwb3J0ICIkdGh1bWJwZGYgZXhpdGVkIHdpdGggYmFk IHN0YXR1cy4iIFwKCSAgICAgIklnbm9yaW5nIGl0cyBvdXRwdXQuIgogICAg ZmkKICBmaQp9CgoKIyBydW5fdGV4X3N1aXRlICgpCiMgLS0tLS0tLS0tLS0t LS0tLQojIFJ1biB0aGUgVGVYIHRvb2xzIHVudGlsIGEgZml4IHBvaW50IGlz IHJlYWNoZWQuCnJ1bl90ZXhfc3VpdGUgKCkKewogICMgQ291bnQgdGhlIG51 bWJlciBvZiBjeWNsZXMuCiAgbG9jYWwgY3ljbGU9MAoKICB3aGlsZSA6OyBk bwogICAgY3ljbGU9YGV4cHIgJGN5Y2xlICsgMWAKICAgIHZlcmJvc2UgIkN5 Y2xlICRjeWNsZSBmb3IgJGNvbW1hbmRfbGluZV9maWxlbmFtZSIKCiAgICB4 cmVmX2ZpbGVzX3NhdmUKCiAgICBydW5fYmlidGV4CiAgICBydW5faW5kZXgK ICAgIHJ1bl90ZXgKCiAgICB4cmVmX2ZpbGVzX2NoYW5nZWQgfHwgYnJlYWsK ICBkb25lCgogICMgSWYgd2Ugd2VyZSB1c2luZyB0aHVtYnBkZiBhbmQgcHJv ZHVjaW5nIFBERiwgdGhlbiBydW4gdGh1bWJwZGYKICAjIGFuZCBUZVggb25l IGxhc3QgdGltZS4KICBydW5fdGh1bWJwZGYKfQoKIyMgLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKIyMgVGVYIHByb2Nlc3NpbmcgYXV4 aWxpYXJ5IHRvb2xzLiAgIyMKIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0gIyMKCgojIEEgc2VkIHNjcmlwdCB0aGF0IHByZXByb2Nlc3Nl cyBUZXhpbmZvIHNvdXJjZXMgaW4gb3JkZXIgdG8ga2VlcCB0aGUKIyBpZnRl eCBzZWN0aW9ucyBvbmx5LiAgV2Ugd2FudCB0byByZW1vdmUgbm9uIFRlWCBz ZWN0aW9ucywgYW5kIGNvbW1lbnQKIyAod2l0aCBgQGMgdGV4aTJkdmknKSBU ZVggc2VjdGlvbnMgc28gdGhhdCBtYWtlaW5mbyBkb2VzIG5vdCB0cnkgdG8K IyBwYXJzZSB0aGVtLiAgTmV2ZXJ0aGVsZXNzLCB3aGlsZSBjb21tZW50aW5n IFRlWCBzZWN0aW9ucywgZG9uJ3QKIyBjb21tZW50IEBtYWNyby9AZW5kIG1h Y3JvIHNvIHRoYXQgbWFrZWluZm8gZG9lcyBwcm9wYWdhdGUgdGhlbS4KIyBV bmZvcnR1bmF0ZWx5IG1ha2VpbmZvIC0taWZ0ZXggLS1uby1pZmluZm8gZG9l c24ndCB3b3JrIHdlbGwgZW5vdWdoCiMgKHlldCksIG1ha2VpbmZvIGNhbid0 IHBhcnNlIHRoZSBUZVggY29tbWFuZHMsIHNvIHdvcmsgYXJvdW5kIHdpdGgg c2VkLgojCmNvbW1lbnRfaWZ0ZXg9XAonL15AdGV4LywvXkBlbmQgdGV4L3sK ICBzL14vQGMgdGV4aTJkdmkvCn0KL15AaWZ0ZXgvLC9eQGVuZCBpZnRleC97 CiAgcy9eL0BjIHRleGkyZHZpLwogIC9eQGMgdGV4aTJkdmlAbWFjcm8vLC9e QGMgdGV4aTJkdmlAZW5kIG1hY3JvL3sKICAgIHMvXkBjIHRleGkyZHZpLy8K ICB9Cn0KL15AaWZub3R0ZXgvLC9eQGVuZCBpZm5vdHRleC97CiAgcy9eL0Bj ICh0ZXhpMmR2aSkvCn0KL15AaWZpbmZvLywvXkBlbmQgaWZpbmZvL3sKICAv XkBub2RlL3AKICAvXkBtZW51LywvXkBlbmQgbWVudS9wCiAgdAogIHMvXi9A YyAodGV4aTJkdmkpLwp9CnMvXkBpZm5vdGluZm8vQGMgdGV4aTJkdmlAaWZu b3RpbmZvLwpzL15AZW5kIGlmbm90aW5mby9AYyB0ZXhpMmR2aUBlbmQgaWZu b3RpbmZvLycKCiMgVW5jb21tZW50aW5nIGlzIHNpbXBsZTogUmVtb3ZlIGFu eSBsZWFkaW5nIGBAYyB0ZXhpMmR2aScuCnVuY29tbWVudF9pZnRleD0ncy9e QGMgdGV4aTJkdmkvLycKCgojIHJ1bl9tYWtlaW5mbyAoKQojIC0tLS0tLS0t LS0tLS0tLQojIEV4cGFuZCBtYWNybyBjb21tYW5kcyBpbiB0aGUgb3JpZ2lu YWwgc291cmNlIGZpbGUgdXNpbmcgTWFrZWluZm8uCiMgQWx3YXlzIHVzZSBg ZW5kJyBmb290bm90ZSBzdHlsZSwgc2luY2UgdGhlIGBzZXBhcmF0ZScgc3R5 bGUKIyBnZW5lcmF0ZXMgZGlmZmVyZW50IG91dHB1dCAoYXJndWFibHkgdGhp cyBpcyBhIGJ1ZyBpbiAtRSkuICBEaXNjYXJkCiMgbWFpbiBpbmZvIG91dHB1 dCwgdGhlIHVzZXIgYXNrZWQgdG8gcnVuIFRlWCwgbm90IG1ha2VpbmZvLgpy dW5fbWFrZWluZm8gKCkKewogIGNhc2UgJGxhbmd1YWdlIGluCiAgdGV4aW5m bykKICAgICMgVW5sZXNzIHJlcXVpcmVkIGJ5IHRoZSB1c2VyLCBtYWtlaW5m byBleHBhbnNpb24gaXMgd2FudGVkIG9ubHkKICAgICMgaWYgdGV4aW5mby50 ZXggaXMgdG9vIG9sZC4KICAgIGlmIHRlc3QgIiRleHBhbmQiID0gdDsgdGhl bgogICAgICBtYWtlaW5mbz0ke01BS0VJTkZPOi1tYWtlaW5mb30KICAgIGVs c2UKICAgICAgIyBDaGVjayBpZiB0ZXhpbmZvLnRleCBwZXJmb3JtcyBtYWNy byBleHBhbnNpb24gYnkgbG9va2luZyBmb3IKICAgICAgIyBpdHMgdmVyc2lv bi4gIFRoZSB2ZXJzaW9uIGlzIGEgZGF0ZSBvZiB0aGUgZm9ybSBZRUFSLU1P LURBLgogICAgICAjIFdlIGRvbid0IG5lZWQgdG8gdXNlIFswLTldIHRvIG1h dGNoIHRoZSBkaWdpdHMgc2luY2UgYW55d2F5CiAgICAgICMgdGhlIGNvbXBh cmlzb24gd2l0aCAkdHhpcHJlcmVxLCBhIG51bWJlciwgd2lsbCBmYWlsIHdp dGggbm9uCiAgICAgICMgZGlnaXRzLgogICAgICAjIFJ1biBpbiBhIHRlbXBv cmFyeSBkaXJlY3RvcnkgdG8gYXZvaWQgbGVhdmluZyBmaWxlcy4KICAgICAg dmVyc2lvbl90ZXN0X2Rpcj0kdDJkZGlyL3ZlcnNpb25fdGVzdAogICAgICBl bnN1cmVfZGlyICIkdmVyc2lvbl90ZXN0X2RpciIKICAgICAgKAogICAgICAg ICBjZCAiJHZlcnNpb25fdGVzdF9kaXIiCiAgICAgICAgIGVjaG8gJ1xpbnB1 dCB0ZXhpbmZvLnRleCBAYnllJyA+dHhpdmVyc2lvbi50ZXgKICAgICAgICAg IyBCZSBzdXJlIHRoYXQgaWYgdGV4IHdhbnRzIHRvIGZhaWwsIGl0IGlzIG5v dCBpbnRlcmFjdGl2ZToKICAgICAgICAgIyBjbG9zZSBzdGRpbi4KICAgICAg ICAgJFRFWCB0eGl2ZXJzaW9uLnRleCA8L2Rldi9udWxsID50eGl2ZXJzaW9u Lm91dCAyPnR4aXZlcnNpb24uZXJyCiAgICAgICkKICAgICAgaWYgdGVzdCAk PyAhPSAwOyB0aGVuCiAgICAgICAgY2F0ICR2ZXJzaW9uX3Rlc3RfZGlyL3R4 aXZlcnNpb24ub3V0CiAgICAgICAgY2F0ICR2ZXJzaW9uX3Rlc3RfZGlyL3R4 aXZlcnNpb24uZXJyID4mMgogICAgICAgIGZhdGFsIDEgInRleGluZm8udGV4 IGFwcGVhcnMgdG8gYmUgYnJva2VuLCBxdWl0dGluZy4iCiAgICAgIGZpCiAg ICAgIGV2YWwgYHNlZCAtbiAncy9eLipcW1woLipcKXZlcnNpb24gXCguLi4u XCktXCguLlwpLVwoLi5cKS4qJC90eGlmb3JtYXQ9XDEgdHhpdmVyc2lvbj0i XDJcM1w0Ii9wJyAkdmVyc2lvbl90ZXN0X2Rpci90eGl2ZXJzaW9uLm91dGAK ICAgICAgdmVyYm9zZSAidGV4aW5mby50ZXggcHJlbG9hZGVkIGFzIFxgJHR4 aWZvcm1hdCcsIHZlcnNpb24gaXMgXGAkdHhpdmVyc2lvbicgLi4uIgogICAg ICBpZiB0ZXN0ICIkdHhpcHJlcmVxIiAtbGUgIiR0eGl2ZXJzaW9uIiA+JjYg Mj4mMTsgdGhlbgogICAgICAgIG1ha2VpbmZvPQogICAgICBlbHNlCiAgICAg ICAgbWFrZWluZm89JHtNQUtFSU5GTzotbWFrZWluZm99CiAgICAgIGZpCiAg ICAgICMgQXMgbG9uZyBhcyB3ZSBoYWQgdG8gcnVuIFRlWCwgb2ZmZXIgdGhl IHVzZXIgdGhpcyBjb252ZW5pZW5jZToKICAgICAgaWYgdGVzdCAiJHR4aWZv cm1hdCIgPSBUZXhpbmZvOyB0aGVuCgllc2NhcGU9QAogICAgICBmaQogICAg ZmkKCiAgICBpZiB0ZXN0IC1uICIkbWFrZWluZm8iOyB0aGVuCiAgICAgICMg aW5fc3JjOiB0aGUgZmlsZSB3aXRoIG1hY3JvcyBleHBhbmRlZC4KICAgICAg IyBVc2UgdGhlIHNhbWUgYmFzZW5hbWUgdG8gZ2VuZXJhdGUgdGhlIHNhbWUg YXV4IGZpbGUgbmFtZXMuCiAgICAgIHdvcmtfc3JjPSR3b3JrZGlyL3NyYwog ICAgICBlbnN1cmVfZGlyICIkd29ya19zcmMiCiAgICAgIGluX3NyYz0kd29y a19zcmMvJGluX2Jhc2UKICAgICAgbG9jYWwgbWlpbmNsdWRlcz1gbGlzdF9w cmVmaXggaW5jbHVkZXMgLUlgCiAgICAgIHZlcmJvc2UgIk1hY3JvLWV4cGFu ZGluZyAkY29tbWFuZF9saW5lX2ZpbGVuYW1lIHRvICRpbl9zcmMgLi4uIgog ICAgICAjIGV2YWwgJG1ha2VpbmZvIGJlY2F1c2UgaXQgbWlnaHQgYmUgZGVm aW5lZCBhcyBzb21ldGhpbmcgY29tcGxleAogICAgICAjIChydW5uaW5nIG1p c3NpbmcpIGFuZCB0aGVuIHdlIGVuZCB1cCB3aXRoIHRoaW5ncyBsaWtlICci LUkiJywKICAgICAgIyBhbmQgIi1JIiAoaW5jbHVkaW5nIHRoZSBxdW90ZXMp IGlzIG5vdCBhbiBvcHRpb24gbmFtZS4gIFRoaXMKICAgICAgIyBoYXBwZW5z IHdpdGggZ2V0dGV4dCAwLjE0LjUsIGF0IGxlYXN0LgogICAgICBzZWQgIiRj b21tZW50X2lmdGV4IiAiJGNvbW1hbmRfbGluZV9maWxlbmFtZSIgXAogICAg ICAgIHwgZXZhbCAkbWFrZWluZm8gLS1mb290bm90ZS1zdHlsZT1lbmQgLUkg IiRpbl9kaXIiICRtaWluY2x1ZGVzIFwKICAgICAgICAgIC1vIC9kZXYvbnVs bCAtLW1hY3JvLWV4cGFuZD0tIFwKICAgICAgICB8IHNlZCAiJHVuY29tbWVu dF9pZnRleCIgPiIkaW5fc3JjIgogICAgICAjIENvbnRpbnVlIG9ubHkgaWYg ZXZlcnl0aGluZyBzdWNjZWVkZWQuCiAgICAgIGlmIHRlc3QgJD8gLW5lIDAg XAogICAgICAgICB8fCB0ZXN0ICEgLXIgIiRpbl9zcmMiOyB0aGVuCiAgICAg ICAgdmVyYm9zZSAiRXhwYW5zaW9uIGZhaWxlZCwgaWdub3JlZC4uLiI7CiAg ICAgIGVsc2UKICAgICAgICBpbl9pbnB1dD0kaW5fc3JjCiAgICAgIGZpCiAg ICBmaQogICAgOzsKICBlc2FjCn0KCiMgaW5zZXJ0X2NvbW1hbmRzICgpCiMg LS0tLS0tLS0tLS0tLS0tLS0tCiMgVXNlZCBtb3N0IGNvbW1vbmx5IGZvciBA ZmluYWxvdXQsIEBzbWFsbGJvb2ssIGV0Yy4KaW5zZXJ0X2NvbW1hbmRzICgp CnsKICBsb2NhbCB0ZXh0cmFfY21kCiAgY2FzZSAkbGFuZ3VhZ2UgaW4KICAg IGxhdGV4KSAgIHRleHRyYV9jbWQ9MWk7OwogICAgdGV4aW5mbykgdGV4dHJh X2NtZD0nL15Ac2V0ZmlsZW5hbWUvYSc7OwogICAgKikgICAgICAgZWNobyAi JDA6IGludGVybmFsIGVycm9yLCB1bmtub3duIGxhbmd1YWdlOiAkbGFuZ3Vh Z2UiID4mMjsKICBlc2FjCgogIGlmIHRlc3QgLW4gIiR0ZXh0cmEiOyB0aGVu CiAgICAjIF94dHIuICBUaGUgZmlsZSB3aXRoIHRoZSB1c2VyJ3MgZXh0cmEg Y29tbWFuZHMuCiAgICB3b3JrX3h0cj0kd29ya2Rpci94dHIKICAgIGluX3h0 cj0kd29ya194dHIvJGluX2Jhc2UKICAgIGVuc3VyZV9kaXIgIiR3b3JrX3h0 ciIKICAgIHZlcmJvc2UgIkluc2VydGluZyBleHRyYSBjb21tYW5kczogJHRl eHRyYSIKICAgIHNlZCAiJHRleHRyYV9jbWRcXAokdGV4dHJhIiAiJGluX2lu cHV0IiA+IiRpbl94dHIiCiAgICBpbl9pbnB1dD0kaW5feHRyCiAgZmkKfQoK IyBydW5fcmVjb2RlICgpCiMgLS0tLS0tLS0tLS0tLQojIElmIHRoaXMgaXMg YSBUZXhpbmZvIGZpbGUgd2l0aCBhIHNwZWNpZmllZCBpbnB1dCBlbmNvZGlu ZywgYW5kCiMgcmVjb2RlIGlzIGF2YWlsYWJsZSwgdGhlbiByZWNvZGUgdG8g cGxhaW4gNyBiaXQgVGV4aW5mby4KcnVuX3JlY29kZSAoKQp7CiAgbG9jYWwg ZnJvbQogIGxvY2FsIHRvCiAgCiAgaWYgdGVzdCAkbGFuZ3VhZ2UgPSB0ZXhp bmZvOyB0aGVuCiAgICBwZ209J3MvXiAqQGRvY3VtZW50ZW5jb2RpbmcgICpc KFteIF1bXiBdKlwpICokL1wxLwoJdCBmb3VuZAoJZAoJOmZvdW5kCglxJwog ICAgZW5jb2Rpbmc9YHNlZCAtZSAiJHBnbSIgIiRpbl9pbnB1dCJgCiAgICBp ZiAkcmVjb2RlICYmIHRlc3QgLW4gIiRlbmNvZGluZyIgJiYgZmluZHByb2cg cmVjb2RlOyB0aGVuCiAgICAgIGlmIHRlc3QgLW4gIiRyZWNvZGVfZnJvbSI7 IHRoZW4KCWZyb209JHJlY29kZV9mcm9tCgl0bz0kZW5jb2RpbmcKICAgICAg ZWxzZQogICAgICAgIGZyb209JGVuY29kaW5nCgl0bz0kdGV4aW5mbwogICAg ICBmaQogICAgICB2ZXJib3NlICJSZWNvZGluZyBmcm9tICRmcm9tIHRvICR0 by4iCiAgICAgICMgX3JjZC4gIFRoZSBUZXhpbmZvIGZpbGUgcmVjb2RlZCBp biA3Yml0LgogICAgICB3b3JrX3JjZD0kd29ya2Rpci9yZWNvZGUKICAgICAg aW5fcmNkPSR3b3JrX3JjZC8kaW5fYmFzZQogICAgICBlbnN1cmVfZGlyICIk d29ya19yY2QiCiAgICAgIGlmIHJlY29kZSAiJGVuY29kaW5nLi4kdG8iIDwi JGluX2lucHV0IiA+IiRpbl9yY2QiIFwKICAgICAgICAgJiYgdGVzdCAtcyAi JGluX3JjZCI7IHRoZW4KICAgICAgICBpbl9pbnB1dD0kaW5fcmNkCiAgICAg IGVsc2UKICAgICAgICB2ZXJib3NlICJSZWNvZGluZyBmYWlsZWQsIHVzaW5n IG9yaWdpbmFsIGlucHV0LiIKICAgICAgZmkKICAgIGZpCiAgZmkKfQoKIyBj b21wdXRlX2xhbmd1YWdlIEZJTEVOQU1FCiMgLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQojIFJldHVybiB0aGUgc2hvcnQgc3RyaW5nIGRlc2NyaWJpbmcg dGhlIGxhbmd1YWdlIGluIHdoaWNoIEZJTEVOQU1FCiMgaXMgd3JpdHRlbjog YHRleGluZm8nIG9yIGBsYXRleCcuCmNvbXB1dGVfbGFuZ3VhZ2UgKCkKewog ICMgSWYgdGhlIHVzZXIgZXhwbGljaXRseSBzcGVjaWZpZWQgdGhlIGxhbmd1 YWdlLCB1c2UgdGhhdC4KICAjIE90aGVyd2lzZSwgaWYgdGhlIGZpcnN0IGxp bmUgaXMgXGlucHV0IHRleGluZm8sIGFzc3VtZSBpdCdzIHRleGluZm8uCiAg IyBPdGhlcndpc2UsIGd1ZXNzIGZyb20gdGhlIGZpbGUgZXh0ZW5zaW9uLgog IGlmIHRlc3QgLW4gIiRzZXRfbGFuZ3VhZ2UiOyB0aGVuCiAgICBlY2hvICRz ZXRfbGFuZ3VhZ2UKICBlbGlmIHNlZCAxcSAiJDEiIHwgZ3JlcCAnaW5wdXQg dGV4aW5mbycgPiY2OyB0aGVuCiAgICBlY2hvIHRleGluZm8KICBlbHNlCiAg ICAjIEdldCB0aGUgdHlwZSBvZiB0aGUgZmlsZSAobGF0ZXggb3IgdGV4aW5m bykgZnJvbSB0aGUgZ2l2ZW4gbGFuZ3VhZ2UKICAgICMgd2UganVzdCBndWVz c2VkLCBvciBmcm9tIHRoZSBmaWxlIGV4dGVuc2lvbiBpZiBub3Qgc2V0IHll dC4KICAgIGNhc2UgJDEgaW4KICAgICAgKi5sdHggfCAqLnRleCB8ICouZHJ2 IHwgKi5kdHgpIGVjaG8gbGF0ZXg7OwogICAgICAqKSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZWNobyB0ZXhpbmZvOzsKICAgIGVzYWMKICBmaQp9 CgoKIyBydW5fdG9faHRtbCAoKQojIC0tLS0tLS0tLS0tLS0tCiMgQ29udmVy dCB0byBIVE1MLgpydW5fdG9faHRtbCAoKQp7CiAgaGV2ZWE9JHtIRVZFQTot aGV2ZWF9CgogICMgQ29tcGlsaW5nIHRvIHRoZSB0bXAgZGlyZWN0b3J5IGVu YWJsZXMgdG8gcHJlc2VydmUgYSBwcmV2aW91cwogICMgc3VjY2Vzc2Z1bCBj b21waWxhdGlvbi4gIFVuZm9ydHVuYXRlbHkgaXQgbWFrZXMgaXQgaGFyZCB0 byBtb3ZlCiAgIyB0aGUgaW1hZ2UgYmFjayB0byB0aGUgZGVzdGluYXRpb24g ZGlyZWN0b3J5LiAgU28gY29tcGlsZSB0byB0aGUKICAjIGFjdHVhbCBkZXN0 aW5hdGlvbi4KICBsb2NhbCB0b19odG1sPSIkaGV2ZWEgLWZpeCAtbm9pc28g LU8gLW8gJyRvdXRfbmFtZSciCiAgdG9faHRtbD0iJHRvX2h0bWwgYGxpc3Rf cHJlZml4IGluY2x1ZGVzIC1JYCIKICB0b19odG1sPSIkdG9faHRtbCAnJGlu X2lucHV0JyIKCiAgdmVyYm9zZSAicnVubmluZyAkdG9faHRtbCIKICBpZiBl dmFsICIkdG9faHRtbCIgPiY1OyB0aGVuIDo7IGVsc2UKICAgIGZhdGFsIDEg IiRoZXZlYSBleGl0ZWQgd2l0aCBiYWQgc3RhdHVzLCBxdWl0dGluZy4iCiAg ZmkKfQoKCiMgcnVuX2NvcmVfY29udmVyc2lvbiAoKQojIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KIyBSdW4gdGhlIFRlWCB0b29scyB1bnRpbCBhIGZpeCBw b2ludCBpcyByZWFjaGVkLgpydW5fY29yZV9jb252ZXJzaW9uICgpCnsKICAj IE1vdmUgdG8gdGhlIHdvcmtpbmcgZGlyZWN0b3J5LgogIGlmICR0aWR5OyB0 aGVuCiAgICB2ZXJib3NlICJjZCAkd29ya19idWlsZCIKICAgIGNkICIkd29y a19idWlsZCIgfHwgZXhpdCAxCiAgZmkKCiAgY2FzZSAkb3V0X2xhbmcgaW4K ICAgIGR2aXxwZGYpIHJ1bl90ZXhfc3VpdGU7OwogICAgaHRtbCAgICkgcnVu X3RvX2h0bWw7OwogIGVzYWMKCiAgY2Rfb3JpZwp9CgoKIyBjb21waWxlICgp CiMgLS0tLS0tLS0tLQojIFJ1biB0aGUgZnVsbCBjb21waWxhdGlvbiBjaGFp biwgZnJvbSBwcmUtcHJvY2Vzc2luZyB0byBpbnN0YWxsYXRpb24KIyBvZiB0 aGUgb3V0cHV0IGF0IGl0cyBleHBlY3RlZCBsb2NhdGlvbi4KY29tcGlsZSAo KQp7CiAgIyBTb3VyY2UgZmlsZSBtaWdodCBpbmNsdWRlIGFkZGl0aW9uYWwg c291cmNlcy4KICAjIFdlIHdhbnQgYC46JG9yaWdfcHdkJyBiZWZvcmUgYW55 dGhpbmcgZWxzZS4gIChXZSdsbCBhZGQgYC46JyBsYXRlcgogICMgYWZ0ZXIg YWxsIG90aGVyIGRpcmVjdG9yaWVzIGhhdmUgYmVlbiB0dXJuZWQgaW50byBh YnNvbHV0ZSBwYXRocy4pCiAgIyBgLicgZ29lcyBmaXJzdCB0byBlbnN1cmUg dGhhdCBhbnkgb2xkIC5hdXgsIC5jcHMsCiAgIyBldGMuIGZpbGVzIGluICR7 ZGlyZWN0b3J5fSBkb24ndCBnZXQgdXNlZCBpbiBwcmVmZXJlbmNlIHRvIGZy ZXNoZXIKICAjIGZpbGVzIGluIGAuJy4gIEluY2x1ZGUgb3JpZ19wd2QgaW4g Y2FzZSB3ZSBhcmUgaW4gY2xlYW4gYnVpbGQgbW9kZSwgd2hlcmUKICAjIHdl J3ZlIGNkJ2QgdG8gYSB0ZW1wIGRpcmVjdG9yeS4KICB0eGluY2x1ZGVzPWBs aXN0X2luZml4IGluY2x1ZGVzICRwYXRoX3NlcGAKICBjb21tb249IiRvcmln X3B3ZCRwYXRoX3NlcCRpbl9kaXIkcGF0aF9zZXAkdHhpbmNsdWRlcyRwYXRo X3NlcCIKICBmb3IgdmFyIGluICR0ZXhfZW52dmFyczsgZG8KICAgIGV2YWwg dmFsPSJcJGNvbW1vblwkJHt2YXJ9X29yaWciCiAgICAjIENvbnZlcnQgcmVs YXRpdmUgcGF0aHMgdG8gYWJzb2x1dGUgcGF0aHMsIHNvIHdlIGNhbiBydW4g aW4gYW5vdGhlcgogICAgIyBkaXJlY3RvcnkgKGUuZy4sIGluIGNsZWFuIGJ1 aWxkIG1vZGUsIG9yIGR1cmluZyB0aGUgbWFjcm8tc3VwcG9ydAogICAgIyBk ZXRlY3Rpb24pLgogICAgdmFsPWBhYnNvbHV0ZV9maWxlbmFtZXMgIiR2YWwi YAogICAgZXZhbCAkdmFyPSJcIiR2YWxcIiIKICAgIGV2YWwgZXhwb3J0ICR2 YXIKICAgIGV2YWwgdmVyYm9zZSAiJHZhcj1cJ1wkJHt2YXJ9XCciCiAgZG9u ZQoKICAjIC0tZXhwYW5kCiAgcnVuX21ha2VpbmZvCgogICMgLS1jb21tYW5k LCAtLXRleGluZm8KICBpbnNlcnRfY29tbWFuZHMKCiAgIyAtLXJlY29kZQog IHJ1bl9yZWNvZGUKCiAgIyBSdW4gdW50aWwgYSBmaXggcG9pbnQgaXMgcmVh Y2hlZC4KICBydW5fY29yZV9jb252ZXJzaW9uCn0KCgojIHJlbW92ZSBGSUxF UwojIC0tLS0tLS0tLS0tLQpyZW1vdmUgKCkKewogIHZlcmJvc2UgIlJlbW92 aW5nIiAiJEAiCiAgcm0gLXJmICIkQCIKfQoKIyBtb3N0bHlfY2xlYW4KIyAt LS0tLS0tLS0tLS0KIyBSZW1vdmUgYXV4aWxpYXJ5IGZpbGVzIGFuZCBkaXJl Y3Rvcmllcy4gIENoYW5nZXMgdGhlIGN1cnJlbnQgZGlyZWN0b3J5Lgptb3N0 bHlfY2xlYW4gKCkKewogIGNkX29yaWcKICBsb2NhbCB0b19yZW1vdmU9IiR0 MmRkaXIiCiAgJHRpZHkgfHwgewogICAgbG9jYWwgbG9nPSR3b3JrX2J1aWxk LyRpbl9ub2V4dC5sb2cKICAgIHRvX3JlbW92ZT0kdG9fcmVtb3ZlIiAkbG9n ICIkKGdlbmVyYXRlZF9maWxlc19nZXQgIiR3b3JrX2J1aWxkLyRpbl9ub2V4 dCIpCiAgfQogIHJlbW92ZSAkdG9fcmVtb3ZlCn0KCgojIGNsZWFudXAgKCkK IyAtLS0tLS0tLS0tCiMgUmVtb3ZlIHdoYXQgc2hvdWxkIGJlIHJlbW92ZWQg YWNjb3JkaW5nIHRvIG9wdGlvbnMuCiMgQ2FsbGVkIGF0IHRoZSBlbmQgb2Yg ZWFjaCBjb21waWxhdGlvbiBjeWNsZSwgYW5kIGF0IHRoZSBlbmQgb2YKIyB0 aGUgc2NyaXB0LiAgQ2hhbmdlcyB0aGUgY3VycmVudCBkaXJlY3RvcnkuCmNs ZWFudXAgKCkKewogIGNhc2UgJGJ1aWxkX21vZGUgaW4KICAgIGxvY2FsKSBj ZF9vcmlnOyByZW1vdmUgIiR0MmRkaXIiOzsKICAgIGNsZWFuKSBtb3N0bHlf Y2xlYW47OwogICAgdGlkeSkgIDs7CiAgZXNhYwp9CgoKCiMjIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0gIyMKIyMgQ29tbWFuZCBsaW5lIHBhcnNpbmcuICAj IwojIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCgojIFB1c2ggYSB0b2tl biBhbW9uZyB0aGUgYXJndW1lbnRzIHRoYXQgd2lsbCBiZSB1c2VkIHRvIG5v dGljZSB3aGVuIHdlCiMgZW5kZWQgb3B0aW9ucy9hcmd1bWVudHMgcGFyc2lu Zy4KIyBVc2UgInNldCBkdW1teSAuLi47IHNoaWZ0IiByYXRoZXIgdGhhbiAn c2V0IC0gLi4uIiBiZWNhdXNlIG9uCiMgU29sYXJpcyBzZXQgLSB0dXJucyBv ZmYgc2V0IC14IChidXQga2VlcHMgc2V0IC1lKS4KIyBVc2UgJHsxKyIkQCJ9 IHJhdGhlciB0aGFuICIkQCIgYmVjYXVzZSBEaWdpdGFsIFVuaXggYW5kIFVs dHJpeCA0LjMKIyBzdGlsbCBleHBhbmQgIiRAIiB0byBhIHNpbmdsZSBhcmd1 bWVudCAodGhlIGVtcHR5IHN0cmluZykgcmF0aGVyCiMgdGhhbiBub3RoaW5n IGF0IGFsbC4KYXJnX3NlcD0iJCQtLSQkIgpzZXQgZHVtbXkgJHsxKyIkQCJ9 ICIkYXJnX3NlcCI7IHNoaWZ0CgojIAwKIyBQYXJzZSBjb21tYW5kIGxpbmUg YXJndW1lbnRzLgp3aGlsZSB0ZXN0IHgiJDEiICE9IHgiJGFyZ19zZXAiOyBk bwoKICAjIEhhbmRsZSAtLW9wdGlvbj12YWx1ZSBieSBzcGxpdHRpbmcgYXBh cnQgYW5kIHB1dHRpbmcgYmFjayBvbiBhcmd2LgogIGNhc2UgIiQxIiBpbgog ICAgLS0qPSopCiAgICAgIG9wdD1gZWNobyAiJDEiIHwgc2VkIC1lICdzLz0u Ki8vJ2AKICAgICAgdmFsPWBlY2hvICIkMSIgfCBzZWQgLWUgJ3MvW149XSo9 Ly8nYAogICAgICBzaGlmdAogICAgICBzZXQgZHVtbXkgIiRvcHQiICIkdmFs IiAkezErIiRAIn07IHNoaWZ0CiAgICAgIDs7CiAgZXNhYwoKICAjIFRoaXMg cmVjb2duaXplcyAtLXF1YXJrIGFzIC0tcXVpZXQuICBTbyB3aGF0LgogIGNh c2UgIiQxIiBpbgogICAgLUAgKSBlc2NhcGU9QDs7CiAgICAjIFNpbGVudGx5 IGFuZCB3aXRob3V0IGRvY3VtZW50YXRpb24gYWNjZXB0IC1iIGFuZCAtLWJb YXRjaF0gYXMgc3lub255bXMuCiAgICAtYiB8IC0tYmF0Y2gpIGJhdGNoPXRy dWU7OwogICAgICAgICAtLWJ1aWxkKSAgICAgIHNoaWZ0OyBidWlsZF9tb2Rl PSQxOzsKICAgICAgICAgLS1idWlsZC1kaXIpICBzaGlmdDsgYnVpbGRfZGly PSQxOyBidWlsZF9tb2RlPXRpZHk7OwogICAgLWMgfCAtLWNsZWFuKSBidWls ZF9tb2RlPWNsZWFuOzsKICAgIC1EIHwgLS1kZWJ1ZykgZGVidWc9dHJ1ZTs7 CiAgICAtZSB8IC1FIHwgLS1leHBhbmQpIGV4cGFuZD10OzsKICAgIC1oIHwg LS1oZWxwKSBlY2hvICIkdXNhZ2UiOyBleGl0IDA7OwogICAgICAgICAtLWh0 bWwpIG91dF9sYW5nPWh0bWw7OwogICAgLUkgfCAtLUkqKQogICAgICBzaGlm dAogICAgICAjIFVzZSBhYnNvbHV0ZSBkaXIgbmFtZXMgaW4gdGhlIGluY2x1 ZGVzLgogICAgICB2YWw9YGFic29sdXRlICIkMSJgCiAgICAgIGxpc3RfYXBw ZW5kIGluY2x1ZGVzICIkdmFsIgogICAgICA7OwogICAgLWwgfCAtLWxhbmcg fCAtLWxhbmd1YWdlKSBzaGlmdDsgc2V0X2xhbmd1YWdlPSQxOzsKICAgIC0t bW9zdGx5LWNsZWFuKSBhY3Rpb249bW9zdGx5LWNsZWFuOzsKICAgIC0tbm8t bGluZS1lcnJvcikgbm9fbGluZV9lcnJvcj10cnVlOzsKICAgIC1vIHwgLS1v dXQgIHwgLS1vdXRwdXQpCiAgICAgIHNoaWZ0CiAgICAgICMgTWFrZSBpdCBh YnNvbHV0ZSwganVzdCBpbiBjYXNlIHdlIGFsc28gaGF2ZSAtLWNsZWFuLCBv ciB3aGF0ZXZlci4KICAgICAgb25hbWU9YGFic29sdXRlICIkMSJgOzsKICAg IC1wIHwgLS1wZGYpIG91dF9sYW5nPXBkZjs7CiAgICAtcSB8IC1zIHwgLS1x dWlldCB8IC0tc2lsZW50KSBxdWlldD10cnVlOyBiYXRjaD10cnVlOzsKICAg IC1yIHwgLS1yZWNvZGUpIHJlY29kZT10cnVlOzsKICAgIC0tcmVjb2RlLWZy b20pIHNoaWZ0OyByZWNvZGU9dHJ1ZTsgcmVjb2RlX2Zyb209IiQxIjs7CiAg ICAtdCB8IC0tdGV4aW5mbyB8IC0tY29tbWFuZCApIHNoaWZ0OyB0ZXh0cmE9 IiR0ZXh0cmFcXAoiYGVjaG8gIiQxIiB8IHNlZCAncy9cXFxcL1xcXFxcXFxc L2cnYDs7CiAgICAtLXRyYW5zbGF0ZS1maWxlICkgc2hpZnQ7IHRyYW5zbGF0 ZV9maWxlPSIkMSI7OyAgICAKICAgIC0tdGlkeSkgYnVpbGRfbW9kZT10aWR5 OzsKICAgIC12IHwgLS12ZXJzKikgZWNobyAiJHZlcnNpb24iOyBleGl0IDA7 OwogICAgLVYgfCAtLXZlcmIqKSB2ZXJiPXRydWU7OwogICAgLS0pICMgV2hh dCByZW1haW5zIGFyZSBub3Qgb3B0aW9ucy4KICAgICAgc2hpZnQKICAgICAg d2hpbGUgdGVzdCB4IiQxIiAhPSB4IiRhcmdfc2VwIjsgZG8KICAgICAgICBz ZXQgZHVtbXkgJHsxKyIkQCJ9ICIkMSI7IHNoaWZ0CiAgICAgICAgc2hpZnQK ICAgICAgZG9uZQogICAgICBicmVhazs7CiAgICAtKikKICAgICAgZmF0YWwg MSAiVW5rbm93biBvciBhbWJpZ3VvdXMgb3B0aW9uIFxgJDEnLiIgXAogICAg ICAgICAgICAgICJUcnkgXGAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9u LiIKICAgICAgOzsKICAgICopIHNldCBkdW1teSAkezErIiRAIn0gIiQxIjsg c2hpZnQ7OwogICBlc2FjCiAgIHNoaWZ0CmRvbmUKIyBQb3AgdGhlIHRva2Vu CnNoaWZ0CgojICR0aWR5OiAgY29tcGlsZSBpbiBhIHQyZCBkaXJlY3Rvcnku CiMgJGNsZWFuOiByZW1vdmUgYWxsIHRoZSBhdXggZmlsZXMuCmNhc2UgJGJ1 aWxkX21vZGUgaW4KICBsb2NhbCkgY2xlYW49ZmFsc2U7IHRpZHk9ZmFsc2U7 OwogIHRpZHkpICBjbGVhbj1mYWxzZTsgdGlkeT10cnVlOzsKICBjbGVhbikg Y2xlYW49dHJ1ZTsgIHRpZHk9dHJ1ZTs7CiAgICAgICopIGZhdGFsIDEgImlu dmFsaWQgYnVpbGQgbW9kZTogJGJ1aWxkX21vZGUiOzsKZXNhYwoKIyBJbnRl cnByZXQgcmVtYWluaW5nIGNvbW1hbmQgbGluZSBhcmdzIGFzIGZpbGVuYW1l cy4KY2FzZSAkIyBpbgogMCkKICBmYXRhbCAyICJNaXNzaW5nIGZpbGUgYXJn dW1lbnRzLiIgIlRyeSBcYC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24u IgogIDs7CiAxKSA7OwogKikKICBpZiB0ZXN0IC1uICIkb25hbWUiOyB0aGVu CiAgICBmYXRhbCAyICJDYW4ndCB1c2Ugb3B0aW9uIFxgLS1vdXRwdXQnIHdp dGggbW9yZSB0aGFuIG9uZSBhcmd1bWVudC4iCiAgZmkKICA7Owplc2FjCgoK IyBXZSBjYW4ndCBkbyBtdWNoIHdpdGhvdXQgdGV4LgojCmlmIGZpbmRwcm9n ICR7VEVYOi10ZXh9OyB0aGVuIDo7IGVsc2UgY2F0IDw8RU9NCllvdSBkb24n dCBoYXZlIGEgd29ya2luZyBUZVggYmluYXJ5ICgke1RFWDotdGV4fSkgaW5z dGFsbGVkIGFueXdoZXJlIGluCnlvdXIgUEFUSCwgYW5kIHRleGkyZHZpIGNh bm5vdCBwcm9jZWVkIHdpdGhvdXQgb25lLiAgSWYgeW91IHdhbnQgdG8gdXNl CnRoaXMgc2NyaXB0LCB5b3UnbGwgbmVlZCB0byBpbnN0YWxsIFRlWCAoaWYg eW91IGRvbid0IGhhdmUgaXQpIG9yIGNoYW5nZQp5b3VyIFBBVEggb3IgVEVY IGVudmlyb25tZW50IHZhcmlhYmxlIChpZiB5b3UgZG8pLiAgU2VlIHRoZSAt LWhlbHAKb3V0cHV0IGZvciBtb3JlIGRldGFpbHMuCgpGb3IgaW5mb3JtYXRp b24gYWJvdXQgb2J0YWluaW5nIFRlWCwgcGxlYXNlIHNlZSBodHRwOi8vd3d3 LnR1Zy5vcmcuICBJZgp5b3UgaGFwcGVuIHRvIGJlIHVzaW5nIERlYmlhbiwg eW91IGNhbiBnZXQgaXQgd2l0aCB0aGlzIGNvbW1hbmQ6CiAgYXB0LWdldCBp bnN0YWxsIHRldGV4LWJpbgpFT00KICBleGl0IDEKZmkKCgojIFdlIHdhbnQg dG8gdXNlIGV0ZXggKG9yIHBkZnRleCkgaWYgdGhleSBhcmUgYXZhaWxhYmxl LCBhbmQgdGhlIHVzZXIKIyBkaWRuJ3QgZXhwbGljaXRseSBzcGVjaWZ5LiAg V2UgZG9uJ3QgY2hlY2sgZm9yIGVsYXRleCBhbmQgcGRmZWxhdGV4CiMgYmVj YXVzZSAoYXMgb2YgMjAwMyksIHRoZSBMYVRlWCB0ZWFtIGhhcyBhc2tlZCB0 aGF0IG5ldyBkaXN0cmlidXRpb25zCiMgdXNlIGV0ZXggYnkgZGVmYXVsdCBh bnl3YXkuCiMKIyBFbmQgdXAgd2l0aCB0aGUgVEVYIGFuZCBQREZURVggdmFy aWFibGVzIHNldCB0byB3aGF0IHdlIGFyZSBnb2luZyB0byB1c2UuCmlmIHRl c3QgLXogIiRURVgiOyB0aGVuCiAgaWYgZmluZHByb2cgZXRleDsgdGhlbiBU RVg9ZXRleDsgZWxzZSBURVg9dGV4OyBmaQpmaQojCmlmIHRlc3QgLXogIiRQ REZURVgiOyB0aGVuCiAgaWYgZmluZHByb2cgcGRmZXRleDsgdGhlbiBQREZU RVg9cGRmZXRleDsgZWxzZSBQREZURVg9cGRmdGV4OyBmaQpmaQoKCiMgRmls ZSBkZXNjcmlwdG9yIHVzYWdlOgojIDAgc3RhbmRhcmQgaW5wdXQKIyAxIHN0 YW5kYXJkIG91dHB1dCAoLS12ZXJib3NlIG1lc3NhZ2VzKQojIDIgc3RhbmRh cmQgZXJyb3IKIyAzIHNvbWUgc3lzdGVtcyBtYXkgb3BlbiBpdCB0byAvZGV2 L3R0eQojIDQgdXNlZCBvbiB0aGUgS3Vib3RhIFRpdGFuCiMgNSB0b29scyBv dXRwdXQgKHR1cm5lZCBvZmYgYnkgLS1xdWlldCkKIyA2IHRyYWNpbmcvZGVi dWdnaW5nIChzZXQgLXggb3V0cHV0LCBldGMuKQoKCiMgTWFpbiB0b29scycg b3V0cHV0IChUZVgsIGV0Yy4pIHRoYXQgVGVYIHVzZXJzIGFyZSB1c2VkIHRv IHNlZWluZy4KIwojIElmIHF1aWV0LCBkaXNjYXJkLCBlbHNlIHJlZGlyZWN0 IHRvIHRoZSBtZXNzYWdlIGZsb3cuCmlmICRxdWlldDsgdGhlbgogIGV4ZWMg NT4vZGV2L251bGwKZWxzZQogIGV4ZWMgNT4mMQpmaQoKCiMgRW5hYmxlIHRy YWNpbmcsIGFuZCBhdXhpbGlhcnkgdG9vbHMgb3V0cHV0LgojCiMgU2hvdWxk IGJlIHVzZWQgd2hlcmUgeW91J2QgdHlwaWNhbGx5IHVzZSAvZGV2L251bGwg dG8gdGhyb3cgb3V0cHV0CiMgYXdheS4gIEJ1dCBzb21ldGltZXMgaXQgaXMg Y29udmVuaWVudCB0byBzZWUgdGhhdCBvdXRwdXQgKGUuZy4sIGZyb20KIyBh IGdyZXApIHRvIGFpZCBkZWJ1Z2dpbmcuICBFc3BlY2lhbGx5IGRlYnVnZ2lu ZyBhdCBkaXN0YW5jZSwgdmlhIHRoZQojIHVzZXIuCmlmICRkZWJ1ZzsgdGhl bgogIGV4ZWMgNj4mMQogIHNldCAteAplbHNlCiAgZXhlYyA2Pi9kZXYvbnVs bApmaQoKIyAMCgojIGlucHV0X2ZpbGVfbmFtZV9kZWNvZGUKIyAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tCiMgRGVjb2RlIENPTU1BTkRfTElORV9GSUxFTkFN RSwgYW5kIGNvbXB1dGU6CiMgLSBDT01NQU5EX0xJTkVfRklMRU5BTUUgY2xl YW4gb2YgVGVYIGNvbW1hbmRzCiMgLSBJTl9ESVIKIyAgIFRoZSBkaXJlY3Rv cnkgdG8gdGhlIGlucHV0IGZpbGUsIHBvc3NpYmx5IGFic29sdXRlIGlmIG5l ZWRlZC4KIyAtIElOX0RJUl9BQlMKIyAgIFRoZSBhYnNvbHV0ZSBkaXJlY3Rv cnkgb2YgdGhlIGlucHV0IGZpbGUuCiMgLSBJTl9CQVNFCiMgICBUaGUgaW5w dXQgZmlsZSBiYXNlIG5hbWUgKG5vIGRpcmVjdG9yeSBwYXJ0KS4KIyAtIElO X05PRVhUCiMgICBUaGUgaW5wdXQgZmlsZSBuYW1lIHdpdGhvdXQgZXh0ZW5z aW9ucyAobm9yIGRpcmVjdG9yeSBwYXJ0KS4KIyAtIElOX0lOUFVUCiMgICBE ZWZhdWx0cyB0byBDT01NQU5EX0xJTkVfRklMRU5BTUUsIGJ1dCBtaWdodCBj aGFuZ2UgaWYgdGhlCiMgICBpbnB1dCBpcyBwcmVwcm9jZXNzZWQgKHJlY29k ZSBldGMuKS4gIFdpdGggZGlyZWN0b3J5LCBwb3NzaWJseSBhYnNvbHV0ZS4K aW5wdXRfZmlsZV9uYW1lX2RlY29kZSAoKQp7CiAgIyBTZWUgaWYgd2UgYXJl IHJ1biBmcm9tIHdpdGhpbiBBVUMtVGV4LCBpbiB3aGljaCBjYXNlIHdlIGFy ZQogICMgcGFzc2VkIGBcaW5wdXR7Rk9PLnRleH0nIG9yIGV2ZW4gYFxub25z dG9wbW9kZVxpbnB1dHtGT08udGV4fScuCiAgY2FzZSAkY29tbWFuZF9saW5l X2ZpbGVuYW1lIGluCiAgICAqXFxub25zdG9wbW9kZSopCiAgICAgIGJhdGNo PXRydWU7OwogIGVzYWMKICBjYXNlICRjb21tYW5kX2xpbmVfZmlsZW5hbWUg aW4KICAgICpcXGlucHV0eyp9KikKICAgICAgIyBMZXQgQVVDLVRlWCBlcnJv ciBwYXJzZXIgZGVhbCB3aXRoIGxpbmUgbnVtYmVycy4KICAgICAgbGluZV9l cnJvcj1mYWxzZQogICAgICBjb21tYW5kX2xpbmVfZmlsZW5hbWU9YFwKICAg ICAgICBleHByIFgiJGNvbW1hbmRfbGluZV9maWxlbmFtZSIgOiBYJy4qaW5w dXR7XChbXn1dKlwpfSdgCiAgICAgIDs7CiAgZXNhYwoKICAjIElmIHRoZSBD T01NQU5EX0xJTkVfRklMRU5BTUUgaXMgbm90IGFic29sdXRlIChlLmcuLCAt LWRlYnVnLnRleCksCiAgIyBwcmVwZW5kIGAuLycgaW4gb3JkZXIgdG8gYXZv aWQgdGhhdCB0aGUgdG9vbHMgdGFrZSBpdCBhcyBhbiBvcHRpb24uCiAgZWNo byAiJGNvbW1hbmRfbGluZV9maWxlbmFtZSIgfCAkRUdSRVAgJ14oL3xbQS16 XTovKScgPiY2IFwKICB8fCBjb21tYW5kX2xpbmVfZmlsZW5hbWU9Ii4vJGNv bW1hbmRfbGluZV9maWxlbmFtZSIKCiAgIyBTZWUgaWYgdGhlIGZpbGUgZXhp c3RzLiAgSWYgaXQgZG9lc24ndCB3ZSdyZSBpbiB0cm91YmxlIHNpbmNlLCBl dmVuCiAgIyB0aG91Z2ggdGhlIHVzZXIgbWF5IGJlIGFibGUgdG8gcmVlbnRl ciBhIHZhbGlkIGZpbGVuYW1lIGF0IHRoZSB0ZXgKICAjIHByb21wdCAoYXNz dW1pbmcgdGhleSdyZSBhdHRlbmRpbmcgdGhlIHRlcm1pbmFsKSwgdGhpcyBz Y3JpcHQgd29uJ3QKICAjIGJlIGFibGUgdG8gZmluZCB0aGUgcmlnaHQgeHJl ZiBmaWxlcyBhbmQgc28gZm9ydGguCiAgdGVzdCAgLXIgIiRjb21tYW5kX2xp bmVfZmlsZW5hbWUiIHx8CiAgICBmYXRhbCAxICJjYW5ub3QgcmVhZCAkY29t bWFuZF9saW5lX2ZpbGVuYW1lLCBza2lwcGluZy4iCgogICMgR2V0IHRoZSBu YW1lIG9mIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KICBpbl9kaXI9YGZ1bmNf ZGlybmFtZSAiJGNvbW1hbmRfbGluZV9maWxlbmFtZSJgCiAgaW5fZGlyX2Fi cz1gYWJzb2x1dGUgIiRpbl9kaXIiYAogICMgSW4gYSBjbGVhbiBidWlsZCwg d2UgYGNkJywgc28gZ2V0IGFuIGFic29sdXRlIGZpbGUgbmFtZS4KICBpZiAk dGlkeTsgdGhlbgogICAgaW5fZGlyPSRpbl9kaXJfYWJzCiAgZmkKCiAgIyBT dHJpcCBkaXJlY3RvcnkgcGFydCBidXQgbGVhdmUgZXh0ZW5zaW9uLgogIGlu X2Jhc2U9YGJhc2VuYW1lICIkY29tbWFuZF9saW5lX2ZpbGVuYW1lImAKICAj IFN0cmlwIGV4dGVuc2lvbi4KICBpbl9ub2V4dD1gZWNobyAiJGluX2Jhc2Ui IHwgc2VkICdzL1wuW14uXSokLy8nYAoKICAjIFRoZSBub3JtYWxpemVkIGZp bGUgbmFtZSB0byBjb21waWxlLiAgTXVzdCBhbHdheXMgcG9pbnQgdG8gdGhl CiAgIyBmaWxlIHRvIGFjdHVhbGx5IGNvbXBpbGUgKGluIGNhc2Ugb2YgcmVj b2RpbmcsIG1hY3JvLWV4cGFuc2lvbiBldGMuKS4KICBpbl9pbnB1dD0kaW5f ZGlyLyRpbl9iYXNlCgoKICAjIENvbXB1dGUgdGhlIG91dHB1dCBmaWxlIG5h bWUuCiAgaWYgdGVzdCB4IiRvbmFtZSIgIT0geDsgdGhlbgogICAgb3V0X25h bWU9JG9uYW1lCiAgZWxzZQogICAgb3V0X25hbWU9JGluX25vZXh0LiRvdXRf bGFuZwogIGZpCiAgb3V0X2Rpcj1gZnVuY19kaXJuYW1lICIkb3V0X25hbWUi YAogIG91dF9kaXJfYWJzPWBhYnNvbHV0ZSAiJG91dF9kaXIiYAogIG91dF9i YXNlPWBiYXNlbmFtZSAiJG91dF9uYW1lImAKICBvdXRfbm9leHQ9YGVjaG8g IiRvdXRfYmFzZSIgfCBzZWQgJ3MvXC5bXi5dKiQvLydgCn0KCgojIyAtLS0t LS0tLS0tLS0tLSAjIwojIyBUZVhpZnkgZmlsZXMuICAjIwojIyAtLS0tLS0t LS0tLS0tLSAjIwoKZm9yIGNvbW1hbmRfbGluZV9maWxlbmFtZSBpbiAkezEr IiRAIn07IGRvCiAgdmVyYm9zZSAiUHJvY2Vzc2luZyAkY29tbWFuZF9saW5l X2ZpbGVuYW1lIC4uLiIKCiAgaW5wdXRfZmlsZV9uYW1lX2RlY29kZQoKICAj IGB0ZXhpbmZvJyBvciBgbGF0ZXgnPwogIGxhbmd1YWdlPWBjb21wdXRlX2xh bmd1YWdlICRjb21tYW5kX2xpbmVfZmlsZW5hbWVgCgogICMgQW4gYXV4aWxp YXJ5IGRpcmVjdG9yeSB1c2VkIGZvciBhbGwgdGhlIGF1eGlsaWFyeSB0YXNr cyBpbnZvbHZlZAogICMgaW4gY29tcGlsaW5nIHRoaXMgZG9jdW1lbnQuCiAg Y2FzZSAkYnVpbGRfZGlyIGluCiAgICAgICcnIHwgLiApIHQyZGRpcj0kb3V0 X25vZXh0LnQyZCA7OwogICAgICAqKSAjIEF2b2lkIGNvbGxpc2lvbnMgYmV0 d2VlbiBtdWx0aXBsZSBvY2N1cnJlbmNlcyBvZiB0aGUgc2FtZQoJICMgZmls ZS4gIFRoZSBzZWQgZXhwcmVzc2lvbiBpcyBmcmFnaWxlIGlmIHRoZSBjd2Qg aGFzCgkgIyBhY3RpdmUgY2hhcmFjdGVycy4KCSB0MmRkaXI9JGJ1aWxkX2Rp ci9gZWNobyAiJG91dF9kaXJfYWJzLyRvdXRfbm9leHQudDJkIiB8CiAgICAg ICAgICAgICBzZWQgInMsXiRvcmlnX3B3ZC8sLCIgfAogICAgICAgICAgICAg c2VkICdzLC8sISxnJ2AKICBlc2FjCiAgIyBSZW1vdmUgaXQgYXQgZXhpdCBp ZiBjbGVhbiBtb2RlLgogIHRyYXAgImNsZWFudXAiIDAgMSAyIDE1CgogIGVu c3VyZV9kaXIgIiRidWlsZF9kaXIiICIkdDJkZGlyIgoKICAjIFdlIHdpbGwg Y2hhbmdlIGRpcmVjdG9yeSwgYmV0dGVyIHdvcmsgd2l0aCBhbiBhYnNvbHV0 ZSBwYXRoLi4uCiAgdDJkZGlyPWBhYnNvbHV0ZSAiJHQyZGRpciJgCiAgIyBT b21ldGltZXMgdGhlcmUgYXJlIGluY29tcGF0aWJpbGl0aWVzIGJldHdlZW4g YXV4aWxpYXJ5IGZpbGVzIGZvcgogICMgRFZJIGFuZCBQREYuICBUaGUgY29u dGVudHMgY2FuIGFsc28gY2hhbmdlIHdoZXRoZXIgd2Ugd29yayBvbiBQREYK ICAjIGFuZC9vciBEVkkuICBTbyBrZWVwIHNlcGFyYXRlIHNwYWNlcyBmb3Ig ZWFjaC4KICB3b3JrZGlyPSR0MmRkaXIvJG91dF9sYW5nCiAgZW5zdXJlX2Rp ciAiJHdvcmtkaXIiCgogICMgX2J1aWxkLiAgSW4gYSB0aWR5IGJ1aWxkLCB3 aGVyZSB0aGUgYXV4aWxpYXJ5IGZpbGVzIGFyZSBvdXRwdXQuCiAgaWYgJHRp ZHk7IHRoZW4KICAgIHdvcmtfYnVpbGQ9JHdvcmtkaXIvYnVpbGQKICBlbHNl CiAgICB3b3JrX2J1aWxkPS4KICBmaQoKICAjIF9iYWsuICBDb3BpZXMgb2Yg dGhlIHByZXZpb3VzIGF1eGlsaWFyeSBmaWxlcyAoYW5vdGhlciByb3VuZCBp cwogICMgcnVuIGlmIHRoZXkgZGlmZmVyIGZyb20gdGhlIG5ldyBvbmVzKS4K ICB3b3JrX2Jhaz0kd29ya2Rpci9iYWsKCiAgIyBNYWtlIHRob3NlIGRpcmVj dG9yaWVzLgogIGVuc3VyZV9kaXIgIiR3b3JrX2J1aWxkIiAiJHdvcmtfYmFr IgoKICBjYXNlICRhY3Rpb24gaW4KICAgIGNvbXBpbGUpCiAgICAgICMgQ29t cGlsZSB0aGUgZG9jdW1lbnQuCiAgICAgIGNvbXBpbGUKICAgICAgY2xlYW51 cAogICAgICA7OwoKICAgIG1vc3RseS1jbGVhbikKICAgICAgbW9zdGx5X2Ns ZWFuCiAgICAgIDs7CiAgZXNhYwpkb25lCgp2ZXJib3NlICJkb25lLiIKZXhp dCAwICMgZXhpdCBzdWNjZXNzZnVsbHksIG5vdCBob3dldmVyIHdlIGVuZGVk IHRoZSBsb29wLgo= --F/67ZsaegY Content-Type: text/plain; charset=us-ascii -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/ --F/67ZsaegY--