From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 10277 invoked by alias); 7 Jan 2015 06:26:21 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 10264 invoked by uid 89); 7 Jan 2015 06:26:20 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.8 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_LOW,SPF_PASS,T_RP_MATCHES_RCVD autolearn=ham version=3.3.2 X-HELO: mail-oi0-f50.google.com Received: from mail-oi0-f50.google.com (HELO mail-oi0-f50.google.com) (209.85.218.50) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-SHA encrypted) ESMTPS; Wed, 07 Jan 2015 06:26:17 +0000 Received: by mail-oi0-f50.google.com with SMTP id x69so1624711oia.9 for ; Tue, 06 Jan 2015 22:26:15 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:date :message-id:subject:from:to:content-type; bh=QTDI7b+iZIUkrPf1rdpSxU4uBn73wp5h2xVPI5SPc+0=; b=E03/FUWPGWnO6T9IclgxXLsq/blAkQhWo7dim64mOfHVB6W7GpOB/3EYi0Dyz2Cy+4 lc0C4EW6CvClRRB5R6rq2WNdFLePxkvVS1owaQfWwfm3vt3JmykW+6QdZA2Bs/EqtmuR 81oaf3JYlIPTZKxvuUdPoatOkZzz4U2hVF0SUTHd7Cifj7HoapCBBikBxsTy4M99A+if eDKCOBvibOyWArtFmF1ptl2PeDsnp6AvCXqxje6mzCg4N6qJ4sZq42sSlUJlU9UPcEpw Bnt6Q2sxwz54dd4njIR+HBCIUAO4tRII1MyF/6Rkte1H1O3ZcRgSEyGf9XkzRL6DZa6F smXA== X-Gm-Message-State: ALoCoQkmGmR10p2GOkSl7E8t4Gy4Uf6xriiQesK+rD+g6sx3NFWCkjOeo66pMdqBdouxVaMBNMX2 MIME-Version: 1.0 X-Received: by 10.202.186.193 with SMTP id k184mr764743oif.45.1420611975488; Tue, 06 Jan 2015 22:26:15 -0800 (PST) Received: by 10.202.197.133 with HTTP; Tue, 6 Jan 2015 22:26:15 -0800 (PST) In-Reply-To: References: Date: Wed, 07 Jan 2015 06:26:00 -0000 Message-ID: Subject: Re: [PATCH] Enable invoking overloaded operator() method on class and union values. From: Siva Chandra To: gdb-patches Content-Type: multipart/mixed; boundary=001a113ce21829e114050c0a0097 X-IsSubscribed: yes X-SW-Source: 2015-01/txt/msg00092.txt.bz2 --001a113ce21829e114050c0a0097 Content-Type: text/plain; charset=UTF-8 Content-length: 1162 On Thu, Nov 20, 2014 at 8:56 AM, Siva Chandra wrote: > Hello, > > The attached patch enables invoking overloaded operator() method on > class and union values when evaluating expressions. > > [I expected that once this feature is in, invoking c++ lambdas would > also be possible naturally. However, It does not happen and I am > working on that.] > > gdb/ChangeLog: > > 2014-11-20 Siva Chandra Reddy > > * eval.c (evaluate_subexp_standard): Extend handling of > OP_FUNCALL operation to enable invoking overloaded > operator() methods. > * gdbtypes.c (class_or_union_p): New function. > * gdbtypes.h (class_or_union_p): Declare. > > gdb/testsuite/ChangeLog: > > 2014-11-20 Siva Chandra Reddy > > * gdb.cp/member-ptr.exp: Modify expected pattern of > "print diamond.*diamond_pfunc_ptr (20)" and > "print diamond.*left_vpmf ()". > * gdb.cp/paren-op.cc: New file. > * gdb.cp/paren-op.exp: New file. > > Regression tested on x86_64 GNU/Linux. > > Thank you, > Siva Chandra Ping^2. Rebased patch attached. --001a113ce21829e114050c0a0097 Content-Type: text/plain; charset=US-ASCII; name="paren_op_v1.txt" Content-Disposition: attachment; filename="paren_op_v1.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_i4mbo58y1 Content-length: 9537 ZGlmZiAtLWdpdCBhL2dkYi9ldmFsLmMgYi9nZGIvZXZhbC5jCmluZGV4IDcy YWM2OWYuLmEzZDVmNWUgMTAwNjQ0Ci0tLSBhL2dkYi9ldmFsLmMKKysrIGIv Z2RiL2V2YWwuYwpAQCAtNzA3LDYgKzcwNyw3IEBAIGV2YWx1YXRlX3N1YmV4 cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAogICBzdHJ1 Y3QgdHlwZSAqdHlwZTsKICAgaW50IG5hcmdzOwogICBzdHJ1Y3QgdmFsdWUg Kiphcmd2ZWM7CisgIHN0cnVjdCB0eXBlICpjYWxsYWJsZV90eXBlID0gTlVM TDsKICAgaW50IGNvZGU7CiAgIGludCBpeDsKICAgbG9uZyBtZW1fb2Zmc2V0 OwpAQCAtMTUyNCwyMSArMTUyNSw0OCBAQCBldmFsdWF0ZV9zdWJleHBfc3Rh bmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKICAgICAgICAgfQog ICAgICAgZWxzZQogCXsKLQkgIC8qIE5vbi1tZXRob2QgZnVuY3Rpb24gY2Fs bC4gICovCisJICAvKiBJdCBjb3VsZCBlaXRoZXIgYmUgYSBub3JtYWwgZnVu Y3Rpb24gY2FsbCwgb3IgYW4gb3ZlcmxvYWRlZAorCSAgICAgb3BlcmF0b3Io KSBjYWxsLiAgKi8KKwkgIHN0cnVjdCB2YWx1ZSAqY2FsbGFibGVfdmFsdWU7 CisJICBpbnQgZnB0ciA9IDAsIHN0cnVjdF9vcl91bmlvbiA9IDAsIGludGVy bmFsX2Z1bmMgPSAwOwogCSAgc2F2ZV9wb3MxID0gKnBvczsKIAkgIHRlbSA9 IDE7CiAKLQkgIC8qIElmIHRoaXMgaXMgYSBDKysgZnVuY3Rpb24gd2FpdCB1 bnRpbCBvdmVybG9hZCByZXNvbHV0aW9uLiAgKi8KLQkgIGlmIChvcCA9PSBP UF9WQVJfVkFMVUUKLQkgICAgICAmJiBvdmVybG9hZF9yZXNvbHV0aW9uCi0J ICAgICAgJiYgKGV4cC0+bGFuZ3VhZ2VfZGVmbi0+bGFfbGFuZ3VhZ2UgPT0g bGFuZ3VhZ2VfY3BsdXMpKQorCSAgY2FsbGFibGVfdmFsdWUgPSBldmFsdWF0 ZV9zdWJleHBfd2l0aF9jb2VyY2lvbiAoZXhwLCBwb3MsIG5vc2lkZSk7CisJ ICBjYWxsYWJsZV90eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAo Y2FsbGFibGVfdmFsdWUpKTsKKwkgIGlmIChUWVBFX0NPREUgKGNhbGxhYmxl X3R5cGUpID09IFRZUEVfQ09ERV9QVFIpCiAJICAgIHsKLQkgICAgICAoKnBv cykgKz0gNDsgLyogU2tpcCB0aGUgZXZhbHVhdGlvbiBvZiB0aGUgc3ltYm9s LiAgKi8KKwkgICAgICBjYWxsYWJsZV90eXBlID0gY2hlY2tfdHlwZWRlZiAo VFlQRV9UQVJHRVRfVFlQRSAoY2FsbGFibGVfdHlwZSkpOworCSAgICAgIGlm IChUWVBFX0NPREUgKGNhbGxhYmxlX3R5cGUpICE9IFRZUEVfQ09ERV9GVU5D KQorCQllcnJvciAoXygiT3BlcmFuZCB0byAnKCknIG9wZXJhdG9yIGlzIG5v dCBhIGNhbGxhYmxlLiIpKTsKKwkgICAgICBmcHRyID0gMTsKKwkgICAgfQor CSAgZWxzZSBpZiAoZXhwLT5sYW5ndWFnZV9kZWZuLT5sYV9sYW5ndWFnZSA9 PSBsYW5ndWFnZV9jcGx1cworCQkgICAmJiBjbGFzc19vcl91bmlvbl9wIChj YWxsYWJsZV90eXBlKSkKKwkgICAgc3RydWN0X29yX3VuaW9uID0gMTsgIC8q IFRoZXJlIGNvdWxkIGJlIGFuIG9wZXJhdG9yKCkgbWV0aG9kLiAgKi8KKwkg IGVsc2UgaWYgKFRZUEVfQ09ERSAoY2FsbGFibGVfdHlwZSkgPT0gVFlQRV9D T0RFX0lOVEVSTkFMX0ZVTkNUSU9OKQorCSAgICBpbnRlcm5hbF9mdW5jID0g MTsKKwkgIGVsc2UgaWYgKFRZUEVfQ09ERSAoY2FsbGFibGVfdHlwZSkgPT0g VFlQRV9DT0RFX0ZVTkMpCisJICAgIDsgIC8qIE5vcm1hbCBmdW5jdGlvbiBj YWxsLiAgKi8KKwkgIGVsc2UKKwkgICAgZXJyb3IgKF8oIk9wZXJhbmQgdG8g JygpJyBvcGVyYXRvciBpcyBub3QgYSBjYWxsYWJsZS4iKSk7CisKKwkgIC8q IElmIHRoaXMgaXMgQysrLCB3YWl0IHVudGlsIG92ZXJsb2FkIHJlc29sdXRp b24uICAqLworCSAgaWYgKCFmcHRyICYmICFpbnRlcm5hbF9mdW5jCisJICAg ICAgJiYgZXhwLT5sYW5ndWFnZV9kZWZuLT5sYV9sYW5ndWFnZSA9PSBsYW5n dWFnZV9jcGx1cworCSAgICAgICYmIChvdmVybG9hZF9yZXNvbHV0aW9uIHx8 IHN0cnVjdF9vcl91bmlvbikpCisJICAgIHsKKwkgICAgICBpZiAoc3RydWN0 X29yX3VuaW9uKQorCQl7CisJCSAgYXJnMiA9IHZhbHVlX2FkZHIgKGNhbGxh YmxlX3ZhbHVlKTsKKwkJICBuYXJncysrOworCQkgIHRlbSA9IDI7CisJCX0K IAkgICAgICBhcmd2ZWNbMF0gPSBOVUxMOwogCSAgICB9CiAJICBlbHNlCiAJ ICAgIHsKLQkgICAgICBhcmd2ZWNbMF0gPSBldmFsdWF0ZV9zdWJleHBfd2l0 aF9jb2VyY2lvbiAoZXhwLCBwb3MsIG5vc2lkZSk7CisJICAgICAgYXJndmVj WzBdID0gY2FsbGFibGVfdmFsdWU7CiAJICAgICAgdHlwZSA9IHZhbHVlX3R5 cGUgKGFyZ3ZlY1swXSk7CiAJICAgICAgaWYgKHR5cGUgJiYgVFlQRV9DT0RF ICh0eXBlKSA9PSBUWVBFX0NPREVfUFRSKQogCQl0eXBlID0gVFlQRV9UQVJH RVRfVFlQRSAodHlwZSk7CkBAIC0xNTkzLDEwICsxNjIxLDExIEBAIGV2YWx1 YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBl LAogICAgICAgICB9CiAKICAgICAgIGlmIChvcCA9PSBTVFJVQ1RPUF9TVFJV Q1QgfHwgb3AgPT0gU1RSVUNUT1BfUFRSCi0JICB8fCAob3AgPT0gT1BfU0NP UEUgJiYgZnVuY3Rpb25fbmFtZSAhPSBOVUxMKSkKKwkgIHx8IChvcCA9PSBP UF9TQ09QRSAmJiBmdW5jdGlvbl9uYW1lICE9IE5VTEwpCisJICB8fCAoY2Fs bGFibGVfdHlwZSAhPSBOVUxMICYmIGNsYXNzX29yX3VuaW9uX3AgKGNhbGxh YmxlX3R5cGUpKSkKIAl7CiAJICBpbnQgc3RhdGljX21lbWZ1bmNwOwotCSAg Y2hhciAqdHN0cjsKKwkgIGNvbnN0IGNoYXIgKnRzdHI7CiAKIAkgIC8qIE1l dGhvZCBpbnZvY2F0aW9uOiBzdHVmZiAidGhpcyIgYXMgZmlyc3QgcGFyYW1l dGVyLgogCSAgICAgSWYgdGhlIG1ldGhvZCB0dXJucyBvdXQgdG8gYmUgc3Rh dGljIHdlIHVuZG8gdGhpcyBiZWxvdy4gICovCkBAIC0xNjA0LDggKzE2MzMs MTMgQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAq ZXhwZWN0X3R5cGUsCiAKIAkgIGlmIChvcCAhPSBPUF9TQ09QRSkKIAkgICAg ewotCSAgICAgIC8qIE5hbWUgb2YgbWV0aG9kIGZyb20gZXhwcmVzc2lvbi4g ICovCi0JICAgICAgdHN0ciA9ICZleHAtPmVsdHNbcGMyICsgMl0uc3RyaW5n OworCSAgICAgIGlmIChjYWxsYWJsZV90eXBlID09IE5VTEwpCisJCXsKKwkJ ICAvKiBOYW1lIG9mIG1ldGhvZCBmcm9tIGV4cHJlc3Npb24uICAqLworCQkg IHRzdHIgPSAmZXhwLT5lbHRzW3BjMiArIDJdLnN0cmluZzsKKwkJfQorCSAg ICAgIGVsc2UKKwkJdHN0ciA9ICJvcGVyYXRvcigpIjsKIAkgICAgfQogCSAg ZWxzZQogCSAgICB0c3RyID0gZnVuY3Rpb25fbmFtZTsKZGlmZiAtLWdpdCBh L2dkYi90ZXN0c3VpdGUvZ2RiLmNwL21lbWJlci1wdHIuZXhwIGIvZ2RiL3Rl c3RzdWl0ZS9nZGIuY3AvbWVtYmVyLXB0ci5leHAKaW5kZXggMjllMDUxYi4u ODBhZDFmMyAxMDA2NDQKLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbWVt YmVyLXB0ci5leHAKKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbWVtYmVy LXB0ci5leHAKQEAgLTM4OSw3ICszODksNyBAQCBnZGJfdGVzdCAicHR5cGUg ZGlhbW9uZC4qZGlhbW9uZF9wZnVuY19wdHIiIFwKICMgY2FsbCB0aGUgbWVt YmVyIHBvaW50ZXIgYXMgYSBub3JtYWwgcG9pbnRlci10by1mdW5jdGlvbi4K IAogZ2RiX3Rlc3QgInByaW50IGRpYW1vbmQuKmRpYW1vbmRfcGZ1bmNfcHRy ICgyMCkiIFwKLSAgICAiSW52YWxpZCBkYXRhIHR5cGUgZm9yIGZ1bmN0aW9u IHRvIGJlIGNhbGxlZC4iCisgICAgIk9wZXJhbmQgdG8gJ1xcKFxcKScgb3Bl cmF0b3IgaXMgbm90IGEgY2FsbGFibGVcXC4iCiAKICMgV2l0aCBwYXJlbnRo ZXNlcywgaXQgaXMgdmFsaWQuCiAKQEAgLTY2NSw3ICs2NjUsNyBAQCBnZGJf dGVzdCAicHJpbnQgYmFzZV92cG1mIiBcCiAKICMgTWFrZSBzdXJlIHdlIHBh cnNlIHRoaXMgY29ycmVjdGx5OyBpdCdzIGludmFsaWQuCiBnZGJfdGVzdCAi cHJpbnQgZGlhbW9uZC4qbGVmdF92cG1mICgpIiBcCi0gICAgIkludmFsaWQg ZGF0YSB0eXBlIGZvciBmdW5jdGlvbiB0byBiZSBjYWxsZWRcXC4iCisgICAg Ik9wZXJhbmQgdG8gJ1xcKFxcKScgb3BlcmF0b3IgaXMgbm90IGEgY2FsbGFi bGVcXC4iCiAKICMgTlVMTCBwb2ludGVyIHRvIG1lbWJlciB0ZXN0cy4KIGdk Yl90ZXN0ICJwcmludCBudWxsX3BtaSIgIiR2aG4gPSBOVUxMIgpkaWZmIC0t Z2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvcGFyZW4tb3AuY2MgYi9nZGIv dGVzdHN1aXRlL2dkYi5jcC9wYXJlbi1vcC5jYwpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi44OWEwODVhCi0tLSAvZGV2L251bGwKKysr IGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvcGFyZW4tb3AuY2MKQEAgLTAsMCAr MSw2MCBAQAorLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhl IEdOVSBkZWJ1Z2dlci4KKworICAgQ29weXJpZ2h0IDIwMTQgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5CisgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICAgdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0 aGUgTGljZW5zZSwgb3IKKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy IHZlcnNpb24uCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgYnV0IFdJ VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YKKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAgIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgIFlv dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlCisgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3Jh bS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMv Pi4gICovCisKK3N0cnVjdCBTCit7CisgIGludCBvcGVyYXRvcigpIChpbnQg eCk7Cit9OworCitpbnQKK1M6Om9wZXJhdG9yKCkgKGludCB4KQoreworICBy ZXR1cm4geCArIDU7Cit9CisKK2ludAorcyAoaW50IGEsIGludCBiKQorewor ICByZXR1cm4gYSArIGI7Cit9CisKK2ludCAoKnMxX3B0cikgKGludCwgaW50 KSA9ICZzOworCitpbnQKK3MgKGludCBhKQoreworICByZXR1cm4gYSAqIGE7 Cit9CisKK3VuaW9uIFUKK3sKKyAgaW50IG9wZXJhdG9yICgpIChpbnQgeCk7 Cit9OworCitpbnQKK1U6Om9wZXJhdG9yKCkgKGludCB4KQoreworICByZXR1 cm4geCArIDEwOworfQorCitpbnQgbWFpbiAoKSB7CisgIFMgczsKKyAgVSB1 OworICBpbnQgaSA9IDEwOworCisgIHJldHVybiAwOyAgLyogQnJlYWsgaGVy ZSAgKi8KK30KZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL3Bh cmVuLW9wLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL3BhcmVuLW9wLmV4 cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNTJiOGM5 Ci0tLSAvZGV2L251bGwKKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvcGFy ZW4tb3AuZXhwCkBAIC0wLDAgKzEsMzcgQEAKKyMgQ29weXJpZ2h0IDIwMTQg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKKyMgVGhpcyBwcm9n cmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vciBtb2RpZnkKKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyMg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24g MyBvZiB0aGUgTGljZW5zZSwgb3IKKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkg bGF0ZXIgdmVyc2lvbi4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1 dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyMgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMg WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UKKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dy YW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2Vz Lz4uCisKKyMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIGdkYiB0ZXN0c3Vp dGUKKworaWYge1tza2lwX2NwbHVzX3Rlc3RzXX0geyBjb250aW51ZSB9CisK K3N0YW5kYXJkX3Rlc3RmaWxlIC5jYworCitpZiB7W3ByZXBhcmVfZm9yX3Rl c3RpbmcgJHRlc3RmaWxlLmV4cCAkdGVzdGZpbGUgJHNyY2ZpbGUgXAorICAg IHtkZWJ1ZyBjKysgYWRkaXRpb25hbF9mbGFncz0tc3RkPWMrKzExfV19IHsK KyAgICByZXR1cm4gLTEKK30KKworaWYgeyFbcnVudG9fbWFpbl19IHsKKyAg ICByZXR1cm4gLTEKK30KKworZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGlu ZV9udW1iZXIgIkJyZWFrIGhlcmUiXQorZ2RiX2NvbnRpbnVlX3RvX2JyZWFr cG9pbnQgIkJyZWFrIGhlcmUiCisKK2dkYl90ZXN0ICJwIHMoMTIzNDApIiAi LiogPSAxMjM0NSIgInAgcygpIgorZ2RiX3Rlc3QgInAgdSg0NDYpIiAiLiog PSA0NTYiICJwIHUoKSIKK2dkYl90ZXN0ICJwIGkoNzg5KSIgIk9wZXJhbmQg dG8gJ1xcKFxcKScgb3BlcmF0b3IgaXMgbm90IGEgY2FsbGFibGVcXC4iICJw IGkoKSIKK2dkYl90ZXN0ICJwIHMxX3B0cig1MDAsIDY3KSIgIi4qID0gNTY3 IiAicCBzMV9wdHIoKSIK --001a113ce21829e114050c0a0097--