From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 11871 invoked by alias); 7 Mar 2012 11:29:04 -0000 Received: (qmail 11849 invoked by uid 22791); 7 Mar 2012 11:28:58 -0000 X-SWARE-Spam-Status: No, hits=-1.8 required=5.0 tests=AWL,BAYES_05,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,RCVD_IN_DNSWL_LOW,TW_BJ,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from mail-qy0-f169.google.com (HELO mail-qy0-f169.google.com) (209.85.216.169) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 07 Mar 2012 11:28:30 +0000 Received: by qcsd16 with SMTP id d16so3576004qcs.0 for ; Wed, 07 Mar 2012 03:28:29 -0800 (PST) Received: by 10.224.186.145 with SMTP id cs17mr836392qab.40.1331119709299; Wed, 07 Mar 2012 03:28:29 -0800 (PST) MIME-Version: 1.0 Received: by 10.224.186.145 with SMTP id cs17mr836384qab.40.1331119709218; Wed, 07 Mar 2012 03:28:29 -0800 (PST) Received: by 10.224.54.80 with HTTP; Wed, 7 Mar 2012 03:28:29 -0800 (PST) Date: Wed, 07 Mar 2012 11:29:00 -0000 Message-ID: Subject: [patch 2/2] New 'explore' command Python implementation (with docs) From: Siva Chandra To: gdb-patches@sourceware.org Content-Type: multipart/mixed; boundary=485b397dd4d96be93304baa57586 X-System-Of-Record: true X-Gm-Message-State: ALoCoQkc/3XFmgdkXtbyLZxhqX8GOFdE8KoHNB4Hk1CmRjn03ffJ/IpSpSaddqXLLE1Hy6u74vDFkBJNO6fg6Q+0oeurCg3tMG6jzFa46uHwHia0j83oC0Sv8V/EIbGVd/RRLNWjPfsrlGv/zblhwBEWlc1KxEtk3A== X-IsSubscribed: yes 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 X-SW-Source: 2012-03/txt/msg00217.txt.bz2 --485b397dd4d96be93304baa57586 Content-Type: text/plain; charset=ISO-8859-1 Content-length: 827 This is the implementation of the 'explore' command in Python. 2012-03-05 Siva Chandra New command 'explore' which helps explore values and types in scope. * NEWS: Add an entry about the new 'explore' command. * data-directory/Makefile.in: Add gdb/command/explore.py * python/lib/gdb/command/explore.py: Implemention of the 'explore' command using the GDB Python API. * doc/gdb.texinfo: Add description about the 'explore' command in the chapter 'Examining Data' * testsuite/gdb.python/Makefile.in: Add py-explore to EXECUTABLES * testsuite/gdb.python/py-explore.c: C program used for testing the new 'explore' command. * testsuite/gdb-python/py-explore.exp: Tests for the new 'explore' command. --485b397dd4d96be93304baa57586 Content-Type: text/plain; charset=US-ASCII; name="python_explore_command_patch_v2.txt" Content-Disposition: attachment; filename="python_explore_command_patch_v2.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gzia3ol40 Content-length: 71895 ZGlmZiAtcnVwTiBzcmMvZ2RiL2RhdGEtZGlyZWN0b3J5L01ha2VmaWxlLmlu IHNyY19leHBsb3JlX3B5dGhvbi9nZGIvZGF0YS1kaXJlY3RvcnkvTWFrZWZp bGUuaW4KLS0tIHNyYy9nZGIvZGF0YS1kaXJlY3RvcnkvTWFrZWZpbGUuaW4J MjAxMi0wMS0wNCAxMzo0NzoxOS4wMDAwMDAwMDAgKzA1MzAKKysrIHNyY19l eHBsb3JlX3B5dGhvbi9nZGIvZGF0YS1kaXJlY3RvcnkvTWFrZWZpbGUuaW4J MjAxMi0wMi0xOSAxNzo1OTo1NC4yODE4MDY1MjEgKzA1MzAKQEAgLTU4LDcg KzU4LDggQEAgUFlUSE9OX0ZJTEVTID0gXAogCWdkYi9wcm9tcHQucHkgXAog CWdkYi9jb21tYW5kL19faW5pdF9fLnB5IFwKIAlnZGIvY29tbWFuZC9wcmV0 dHlfcHJpbnRlcnMucHkgXAotCWdkYi9jb21tYW5kL3Byb21wdC5weQorCWdk Yi9jb21tYW5kL3Byb21wdC5weSBcCisJZ2RiL2NvbW1hbmQvZXhwbG9yZS5w eQogCiBGTEFHU19UT19QQVNTID0gXAogCSJwcmVmaXg9JChwcmVmaXgpIiBc CmRpZmYgLXJ1cE4gc3JjL2dkYi9kb2MvZ2RiLnRleGluZm8gc3JjX2V4cGxv cmVfcHl0aG9uL2dkYi9kb2MvZ2RiLnRleGluZm8KLS0tIHNyYy9nZGIvZG9j L2dkYi50ZXhpbmZvCTIwMTItMDItMTAgMDY6NTQ6NTguMDAwMDAwMDAwICsw NTMwCisrKyBzcmNfZXhwbG9yZV9weXRob24vZ2RiL2RvYy9nZGIudGV4aW5m bwkyMDEyLTAzLTAzIDE3OjQ4OjM0Ljk1MjEyOTY2NiArMDUzMApAQCAtNzA1 NSw4ICs3MDU1LDEwIEBAIGluc3RydWN0aW9uLgogCiBAY2luZGV4IHByaW50 aW5nIGRhdGEKIEBjaW5kZXggZXhhbWluaW5nIGRhdGEKK0BjaW5kZXggZXhw bG9yaW5nIGRhdGEKIEBraW5kZXggcHJpbnQKIEBraW5kZXggaW5zcGVjdAor QGtpbmRleCBleHBsb3JlCiBAYyAiaW5zcGVjdCIgaXMgbm90IHF1aXRlIGEg c3lub255bSBpZiB5b3UgYXJlIHVzaW5nIEVwb2NoLCB3aGljaCB3ZSBkbyBu b3QKIEBjIGRvY3VtZW50IGJlY2F1c2UgaXQgaXMgbm9uc3RhbmRhcmQuLi4g IFVuZGVyIEVwb2NoIGl0IGRpc3BsYXlzIGluIGEKIEBjIGRpZmZlcmVudCB3 aW5kb3cgb3Igc29tZXRoaW5nIGxpa2UgdGhhdC4KQEAgLTcwOTMsNiArNzA5 NSwzMyBAQCBmaWVsZHMgb2YgYSBzdHJ1Y3Qgb3IgYSBjbGFzcyBhcmUgZGVj bGFyCiBjb21tYW5kIHJhdGhlciB0aGFuIEBjb2Rle3ByaW50fS4gIEB4cmVm e1N5bWJvbHMsICxFeGFtaW5pbmcgdGhlIFN5bWJvbAogVGFibGV9LgogCitB bm90aGVyIHdheSBvZiBleGFtaW5pbmcgdmFsdWVzIG9mIGV4cHJlc3Npb25z IGFuZCB0eXBlIGluZm9ybWF0aW9uIGlzCit0aHJvdWdoIHRoZSBQeXRob24g ZXh0ZW5zaW9uIChoZW5jZSBvbmx5IGF2YWlsYWJsZSBpZiBHREIgYnVpbGQg aXMKK2NvbmZpZ3VyZWQgd2l0aCBAY29kZXstLXdpdGgtcHl0aG9ufSkgY29t bWFuZCBAY29kZXtleHBsb3JlfS4gIEl0IG9mZmVycworYW4gaW50ZXJhY3Rp dmUgd2F5IHRvIHN0YXJ0IGF0IHRoZSBoaWdoZXN0IGxldmVsICh0aGUgbW9z dCBhYnN0cmFjdAorbGV2ZWwpIG9mIHRoZSBkYXRhIHR5cGUgb2YgYW4gZXhw cmVzc2lvbiAob3IsIHRoZSBkYXRhIHR5cGUgaXRzZWxmKSBhbmQKK2V4cGxv cmUgYWxsIHRoZSB3YXkgZG93biB0byBsZWFmIHNjYWxhciB2YWx1ZXMgZW1i ZWRkZWQgaW4gdGhlIGhpZ2hlcgorbGV2ZWwgZGF0YSB0eXBlcy4KKworQHRh YmxlIEBjb2RlCitAaXRlbSBleHBsb3JlIEB2YXJ7YXJnfQorQHZhcnthcmd9 IGlzIGVpdGhlciBhbiBleHByZXNzaW9uIChpbiB0aGUgc291cmNlIGxhbmd1 YWdlKSwgb3IgYSB0eXBlCit2aXNpYmxlIGluIHRoZSBjdXJyZW50IGNvbnRl eHQgb2YgdGhlIHByb2dyYW0gYmVpbmcgZGVidWdnZWQuCisKK0BpdGVtIGV4 cGxvcmUgdmFsdWUgQHZhcntleHByfQorQGNpbmRleCBleHBsb3JlIHZhbHVl CitUaGlzIHZhcmlhdGlvbiBsZXRzIG9uZSBleHBsaWNpdGx5IHNwZWNpZnkg dGhhdCB2YWx1ZSBleHBsb3JhdGlvbiBpcworYmVpbmcgaW52b2tlZCBvbiB0 aGUgZXhwcmVzc2lvbiBAdmFye2V4cHJ9LiAgQHZhcntleHByfSBzaG91bGQg YmUgYW4KK2V4cHJlc3Npb24gdmFsaWQgaW4gdGhlIGN1cnJlbnQgY29udGV4 dCBvZiB0aGUgcHJvZ3JhbSBiZWluZyBkZWJ1Z2dlZC4KKworQGl0ZW0gZXhw bG9yZSB0eXBlIEB2YXJ7YXJnfQorQGNpbmRleCBleHBsb3JlIHR5cGUKK1Ro aXMgdmFyaWF0aW9uIGxldHMgb25lIGV4cGxpY2l0bHkgc3BlY2lmeSB0aGF0 IHR5cGUgZXhwbG9yYXRpb24gaXMKK2JlaW5nIGludm9rZWQgb24gQHZhcnth cmd9IHdoaWNoIGNhbiBiZSBlaXRoZXIgYmUgYW4gZXhwcmVzc2lvbiBvciBh Cit0eXBlLiAgSWYgaXQgd2VyZSBhbiBleHByZXNzaW9uLCB0aGVuIHRoZSB0 eXBlIG9mIHZhbHVlIG9mIHRoZQorZXhwcmVzc2lvbiBpcyBleHBsb3JlZC4K K0BlbmQgdGFibGUKKwogQG1lbnUKICogRXhwcmVzc2lvbnM6OiAgICAgICAg ICAgICAgICAgRXhwcmVzc2lvbnMKICogQW1iaWd1b3VzIEV4cHJlc3Npb25z OjogICAgICAgQW1iaWd1b3VzIEV4cHJlc3Npb25zCmRpZmYgLXJ1cE4gc3Jj L2dkYi9ORVdTIHNyY19leHBsb3JlX3B5dGhvbi9nZGIvTkVXUwotLS0gc3Jj L2dkYi9ORVdTCTIwMTItMDMtMDUgMTY6NTU6MzYuNjUyMzQyMTg5ICswNTMw CisrKyBzcmNfZXhwbG9yZV9weXRob24vZ2RiL05FV1MJMjAxMi0wMy0wNSAx Njo1ODo0OS45MjIyOTA4NzQgKzA1MzAKQEAgLTIwLDYgKzIwLDEyIEBACiAg ICAgIGZyYW1lIGluIG9yZGVyIHRvIGNvbXB1dGUgaXRzIHZhbHVlLCBhbmQg dGhlIGxhdHRlciBjb21wdXRlcyB0aGUKICAgICAgc3ltYm9sJ3MgdmFsdWUu CiAKKyAgKiogQSBuZXcgY29tbWFuZCAnZXhwbG9yZScgaW1wbGVtZW50ZWQg dXNpbmcgdGhlIEdCRCBQeXRob24gQVBJLiBJdAorICAgICBlbmFibGVzIG9u ZSB0byBleHBsb3JlIHZhbHVlcyAob2YgZXhwcmVzc2lvbnMpIGFuZCB0eXBl cyB0b3AgZG93bi4KKyAgICAgVG9wIGRvd24gaGVyZSBtZWFucyB0byBzdGFy dCBhdCB0aGUgaGlnaGVzdCBkYXRhIHN0cnVjdHVyZSBhbmQKKyAgICAgZXhw bG9yZSBkb3duIHRvIHRoZSBsZWFmIHNjYWxhciB2YWx1ZS90eXBlcyBlbmNs b3NlZCBpbiB0aGUgaGlnaGVyCisgICAgIGRhdGEgc3RydWN0dXJlcy4KKwog KiBHREJzZXJ2ZXIgbm93IHN1cHBvcnRzIHN0ZGlvIGNvbm5lY3Rpb25zLgog ICBFLmcuIChnZGIpIHRhcmdldCByZW1vdGUgfCBzc2ggbXlob3N0IGdkYnNl cnZlciAtIGhlbGxvCiAKQEAgLTQ5LDYgKzU1LDEyIEBACiAgICoqICJjYXRj aCBsb2FkIiBhbmQgImNhdGNoIHVubG9hZCIgY2FuIGJlIHVzZWQgdG8gc3Rv cCB3aGVuIGEgc2hhcmVkCiAgICAgIGxpYnJhcnkgaXMgbG9hZGVkIG9yIHVu bG9hZGVkLCByZXNwZWN0aXZlbHkuCiAKKyAgKiogImV4cGxvcmUiIGFuZCBp dHMgc3ViIGNvbW1hbmRzICJleHBsb3JlIHZhbHVlIiBhbmQgImV4cGxvcmUg dHlwZSIKKyAgICAgY2FuIGJlIHVzZWQgdG8gcmVjdXJyc2l2ZWx5IGV4cGxv cmUgdmFsdWVzIGFuZCB0eXBlcyBvZgorICAgICBleHByZXNzaW9ucy4gVGhl IGNvbW1hbmQgImV4cGxvcmUgdHlwZSIgY2FuIGJlIHVzZWQgdG8gZXhwbG9y ZQorICAgICB0eXBlcyBkaXJlY3RseS4gVGhlc2UgY29tbWFuZHMgYXJlIGF2 YWlsYWJsZSBvbmx5IGlmIEdEQiBpcworICAgICBjb25maWd1cmVkIHdpdGgg Jy0td2l0aC1weXRob24nLgorCiAqKiogQ2hhbmdlcyBpbiBHREIgNy40CiAK ICogR0RCIG5vdyBoYW5kbGVzIGFtYmlndW91cyBsaW5lc3BlY3MgbW9yZSBj b25zaXN0ZW50bHk7IHRoZSBleGlzdGluZwpkaWZmIC1ydXBOIHNyYy9nZGIv cHl0aG9uL2xpYi9nZGIvY29tbWFuZC9leHBsb3JlLnB5IHNyY19leHBsb3Jl X3B5dGhvbi9nZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC9leHBsb3JlLnB5 Ci0tLSBzcmMvZ2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQvZXhwbG9yZS5w eQkxOTcwLTAxLTAxIDA1OjMwOjAwLjAwMDAwMDAwMCArMDUzMAorKysgc3Jj X2V4cGxvcmVfcHl0aG9uL2dkYi9weXRob24vbGliL2dkYi9jb21tYW5kL2V4 cGxvcmUucHkJMjAxMi0wMy0wNSAxNzoxMDo1Ni44NzIzNzg3ODYgKzA1MzAK QEAgLTAsMCArMSw2OTQgQEAKKyMgR0RCICdleHBsb3JlJyBjb21tYW5kLgor IyBDb3B5cmlnaHQgKEMpIDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBJbmMuCisKKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyMgaXQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBhcyBwdWJsaXNoZWQgYnkKKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKyMg KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgVGhp cyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUKKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y IG1vcmUgZGV0YWlscy4KKyMKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk IGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyMg YWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDov L3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisKKyIiIkltcGxlbWVudGF0aW9u IG9mIHRoZSBHREIgJ2V4cGxvcmUnIGNvbW1hbmQgdXNpbmcgdGhlIEdEQiBQ eXRob24gQVBJLiIiIgorCitpbXBvcnQgZ2RiCisKK2NsYXNzIEV4cGxvcmVy KG9iamVjdCk6CisgICAgIiIiSW50ZXJuYWwgY2xhc3Mgd2hpY2ggaW52b2tl cyBvdGhlciBleHBsb3JlcnMuIiIiCisKKyAgICAjIFRoaXMgbWFwIGlzIGZp bGxlZCBieSB0aGUgRXhwbG9yZXIuaW5pdF9lbnYoKSBmdW5jdGlvbgorICAg IHR5cGVfY29kZV90b19leHBsb3Jlcl9tYXAgPSB7IH0KKworICAgIF9TQ0FM QVJfVFlQRV9MSVNUID0gKAorICAgICAgICBnZGIuVFlQRV9DT0RFX0NIQVIs CisgICAgICAgIGdkYi5UWVBFX0NPREVfSU5ULAorICAgICAgICBnZGIuVFlQ RV9DT0RFX0JPT0wsCisgICAgICAgIGdkYi5UWVBFX0NPREVfRkxULAorICAg ICAgICBnZGIuVFlQRV9DT0RFX1ZPSUQsCisgICAgICAgIGdkYi5UWVBFX0NP REVfRU5VTSwKKyAgICApCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVm IGd1YXJkX2V4cHIoZXhwcik6CisgICAgICAgIGxlbmd0aCA9IGxlbihleHBy KQorICAgICAgICBndWFyZCA9IEZhbHNlCisKKyAgICAgICAgaWYgZXhwclsw XSA9PSAnKCcgYW5kIGV4cHJbbGVuZ3RoLTFdID09ICcpJzoKKyAgICAgICAg ICAgIHBhc3MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGkgPSAwCisg ICAgICAgICAgICB3aGlsZSBpIDwgbGVuZ3RoOgorICAgICAgICAgICAgICAg IGMgPSBleHByW2ldCisgICAgICAgICAgICAgICAgaWYgKGMgPT0gJ18nIG9y ICgnYScgPD0gYyBhbmQgYyA8PSAneicpIG9yCisgICAgICAgICAgICAgICAg ICAgICgnQScgPD0gYyBhbmQgYyA8PSAnWicpIG9yICgnMCcgPD0gYyBhbmQg YyA8PSAnOScpKToKKyAgICAgICAgICAgICAgICAgICAgcGFzcworICAgICAg ICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGd1YXJkID0g VHJ1ZQorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAg ICAgIGkgKz0gMQorCisgICAgICAgIGlmIGd1YXJkOgorICAgICAgICAgICAg cmV0dXJuICIoIiArIGV4cHIgKyAiKSIKKyAgICAgICAgZWxzZToKKyAgICAg ICAgICAgIHJldHVybiBleHByCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAg ZGVmIGV4cGxvcmVfZXhwcihleHByLCB2YWx1ZSwgaXNfY2hpbGQpOgorICAg ICAgICAiIiJNYWluIGZ1bmN0aW9uIHRvIGV4cGxvcmUgYW4gZXhwcmVzc2lv biB2YWx1ZS4KKworICAgICAgICBBcmd1bWVudHM6CisgICAgICAgICAgICBl eHByOiBUaGUgZXhwcmVzc2lvbiBzdHJpbmcgdGhhdCBpcyBiZWluZyBleHBs b3JlZC4KKyAgICAgICAgICAgIHZhbHVlOiBUaGUgZ2RiLlZhbHVlIHZhbHVl IG9mIHRoZSBleHByZXNzaW9uLgorICAgICAgICAgICAgaXNfY2hpbGQ6IEJv b2xlYW4gdmFsdWUgdG8gaW5kaWNhdGUgaWYgdGhlIGV4cHJlc3Npb24gaXMg YSBjaGlsZC4KKyAgICAgICAgICAgICAgICAgICAgICBBbiBleHByZXNzaW9u IGlzIGEgY2hpbGQgaWYgaXQgaXMgZGVyaXZlZCBmcm9tIHRoZSBtYWluCisg ICAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbiBlbnRlcmVkIGJ5IHRo ZSB1c2VyLiBGb3IgZXhhbXBsZSwgaWYgdGhlIHVzZXIKKyAgICAgICAgICAg ICAgICAgICAgICBlbnRlcmVkIGFuIGV4cHJlc3Npb24gd2hpY2ggZXZhbHVh dGVzIHRvIGEgc3RydWN0LCB0aGVuCisgICAgICAgICAgICAgICAgICAgICAg d2hlbiBleHBsb3JpbmcgdGhlIGZpZWxkcyBvZiB0aGUgc3RydWN0LCBpc19j aGlsZCBpcyBzZXQKKyAgICAgICAgICAgICAgICAgICAgICB0byBUcnVlIGlu dGVybmFsbHkuCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIE5v IHJldHVybiB2YWx1ZS4KKyAgICAgICAgIiIiCisgICAgICAgIHR5cGVfY29k ZSA9IHZhbHVlLnR5cGUuY29kZQorICAgICAgICBpZiB0eXBlX2NvZGUgaW4g RXhwbG9yZXIudHlwZV9jb2RlX3RvX2V4cGxvcmVyX21hcDoKKyAgICAgICAg ICAgIGV4cGxvcmVyX2NsYXNzID0gRXhwbG9yZXIudHlwZV9jb2RlX3RvX2V4 cGxvcmVyX21hcFt0eXBlX2NvZGVdCisgICAgICAgICAgICB3aGlsZSBleHBs b3Jlcl9jbGFzcy5leHBsb3JlX2V4cHIoZXhwciwgdmFsdWUsIGlzX2NoaWxk KToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgIGVsc2U6CisgICAg ICAgICAgICBwcmludCAoIkV4cGxvcmVyIGZvciB0eXBlICclcycgbm90IHll dCBhdmFpbGFibGUuXG4iICUKKyAgICAgICAgICAgICAgICAgICBzdHIodmFs dWUudHlwZSkpCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIGV4cGxv cmVfdHlwZShuYW1lLCBkYXRhdHlwZSwgaXNfY2hpbGQpOgorICAgICAgICAi IiJNYWluIGZ1bmN0aW9uIHRvIGV4cGxvcmUgYSBkYXRhIHR5cGUuCisKKyAg ICAgICAgQXJndW1lbnRzOgorICAgICAgICAgICAgbmFtZTogVGhlIHN0cmlu ZyByZXByZXNlbnRpbmcgdGhlIHBhdGggdG8gdGhlIGRhdGEgdHlwZSBiZWlu ZworICAgICAgICAgICAgICAgICAgZXhwbG9yZWQuCisgICAgICAgICAgICBk YXRhdHlwZTogVGhlIGdkYi5UeXBlIHZhbHVlIG9mIHRoZSBkYXRhIHR5cGUg YmVpbmcgZXhwbG9yZWQuCisgICAgICAgICAgICBpc19jaGlsZDogQm9vbGVh biB2YWx1ZSB0byBpbmRpY2F0ZSBpZiB0aGUgbmFtZSBpcyBhIGNoaWxkLgor ICAgICAgICAgICAgICAgICAgICAgIEEgbmFtZSBpcyBhIGNoaWxkIGlmIGl0 IGlzIGRlcml2ZWQgZnJvbSB0aGUgbWFpbiBuYW1lCisgICAgICAgICAgICAg ICAgICAgICAgZW50ZXJlZCBieSB0aGUgdXNlci4gRm9yIGV4YW1wbGUsIGlm IHRoZSB1c2VyIGVudGVyZWQgdGhlCisgICAgICAgICAgICAgICAgICAgICAg bmFtZSBvZiBzdHJ1Y3QgdHlwZSwgdGhlbiB3aGVuIGV4cGxvcmluZyB0aGUg ZmllbGRzIG9mCisgICAgICAgICAgICAgICAgICAgICAgdGhlIHN0cnVjdCwg aXNfY2hpbGQgaXMgc2V0IHRvIFRydWUgaW50ZXJuYWxseS4KKworICAgICAg ICBSZXR1cm5zOgorICAgICAgICAgICAgTm8gcmV0dXJuIHZhbHVlLgorICAg ICAgICAiIiIKKyAgICAgICAgdHlwZV9jb2RlID0gZGF0YXR5cGUuY29kZQor ICAgICAgICBpZiB0eXBlX2NvZGUgaW4gRXhwbG9yZXIudHlwZV9jb2RlX3Rv X2V4cGxvcmVyX21hcDoKKyAgICAgICAgICAgIGV4cGxvcmVyX2NsYXNzID0g RXhwbG9yZXIudHlwZV9jb2RlX3RvX2V4cGxvcmVyX21hcFt0eXBlX2NvZGVd CisgICAgICAgICAgICB3aGlsZSBleHBsb3Jlcl9jbGFzcy5leHBsb3JlX3R5 cGUobmFtZSwgZGF0YXR5cGUsIGlzX2NoaWxkKToKKyAgICAgICAgICAgICAg ICBwYXNzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBwcmludCAoIkV4 cGxvcmVyIGZvciB0eXBlICclcycgbm90IHlldCBhdmFpbGFibGUuXG4iICUK KyAgICAgICAgICAgICAgICAgICBzdHIoZGF0YXR5cGUpKQorCisgICAgQHN0 YXRpY21ldGhvZAorICAgIGRlZiBpbml0X2VudigpOgorICAgICAgICAiIiJJ bml0aWFsaXplcyB0aGUgRXhwbG9yZXIgZW52aXJvbm1lbnQuCisgICAgICAg IFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIGludm9rZWQgYmVmb3JlIHN0YXJ0 aW5nIGFueSBleHBsb3JhdGlvbi4gSWYKKyAgICAgICAgaW52b2tlZCBiZWZv cmUgYW4gZXhwbG9yYXRpb24sIGl0IG5lZWQgbm90IGJlIGludm9rZWQgZm9y IHN1YnNlcXVlbnQKKyAgICAgICAgZXhwbG9yYXRpb25zLgorICAgICAgICAi IiIKKyAgICAgICAgRXhwbG9yZXIudHlwZV9jb2RlX3RvX2V4cGxvcmVyX21h cCA9IHsKKyAgICAgICAgICAgIGdkYi5UWVBFX0NPREVfQ0hBUiA6IFNjYWxh ckV4cGxvcmVyLAorICAgICAgICAgICAgZ2RiLlRZUEVfQ09ERV9JTlQgOiBT Y2FsYXJFeHBsb3JlciwKKyAgICAgICAgICAgIGdkYi5UWVBFX0NPREVfQk9P TCA6IFNjYWxhckV4cGxvcmVyLAorICAgICAgICAgICAgZ2RiLlRZUEVfQ09E RV9GTFQgOiBTY2FsYXJFeHBsb3JlciwKKyAgICAgICAgICAgIGdkYi5UWVBF X0NPREVfVk9JRCA6IFNjYWxhckV4cGxvcmVyLAorICAgICAgICAgICAgZ2Ri LlRZUEVfQ09ERV9FTlVNIDogU2NhbGFyRXhwbG9yZXIsCisgICAgICAgICAg ICBnZGIuVFlQRV9DT0RFX1NUUlVDVCA6IENvbXBvdW5kRXhwbG9yZXIsCisg ICAgICAgICAgICBnZGIuVFlQRV9DT0RFX1VOSU9OIDogQ29tcG91bmRFeHBs b3JlciwKKyAgICAgICAgICAgIGdkYi5UWVBFX0NPREVfUFRSIDogUG9pbnRl ckV4cGxvcmVyLAorICAgICAgICAgICAgZ2RiLlRZUEVfQ09ERV9UWVBFREVG IDogVHlwZWRlZkV4cGxvcmVyLAorICAgICAgICAgICAgZ2RiLlRZUEVfQ09E RV9BUlJBWSA6IEFycmF5RXhwbG9yZXIKKyAgICAgICAgfQorCisgICAgQHN0 YXRpY21ldGhvZAorICAgIGRlZiBpc19zY2FsYXJfdHlwZSh0eXBlKToKKyAg ICAgICAgIiIiQ2hlY2tzIHdoZXRoZXIgYSB0eXBlIGlzIGEgc2NhbGFyIHR5 cGUuCisgICAgICAgIEEgdHlwZSBpcyBhIHNjYWxhciB0eXBlIG9mIGl0cyB0 eXBlIGlzCisgICAgICAgICAgICBnZGIuVFlQRV9DT0RFX0NIQVIgb3IKKyAg ICAgICAgICAgIGdkYi5UWVBFX0NPREVfSU5UIG9yCisgICAgICAgICAgICBn ZGIuVFlQRV9DT0RFX0JPT0wgb3IKKyAgICAgICAgICAgIGdkYi5UWVBFX0NP REVfRkxUIG9yCisgICAgICAgICAgICBnZGIuVFlQRV9DT0RFX1ZPSUQgb3IK KyAgICAgICAgICAgIGdkYi5UWVBFX0NPREVfRU5VTS4KKworICAgICAgICBB cmd1bWVudHM6CisgICAgICAgICAgICB0eXBlOiBUaGUgdHlwZSB0byBiZSBj aGVja2VkLgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICAnVHJ1 ZScgaWYgJ3R5cGUnIGlzIGEgc2NhbGFyIHR5cGUuICdGYWxzZScgb3RoZXJ3 aXNlLgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIHR5cGUuY29kZSBp biBFeHBsb3Jlci5fU0NBTEFSX1RZUEVfTElTVAorCisgICAgQHN0YXRpY21l dGhvZAorICAgIGRlZiByZXR1cm5fdG9fcGFyZW50X3ZhbHVlKCk6CisgICAg ICAgICIiIkEgdXRpbGl0eSBmdW5jdGlvbiB3aGljaCBwcmludHMgdGhhdCB0 aGUgY3VycmVudCBleHBsb3JhdGlvbiBzZXNzaW9uCisgICAgICAgIGlzIHJl dHVybmluZyB0byB0aGUgcGFyZW50IHZhbHVlLiBVc2VmdWwgd2hlbiBleHBs b3JpbmcgdmFsdWVzLgorICAgICAgICAiIiIKKyAgICAgICAgcHJpbnQgIlxu UmV0dXJuaW5nIHRvIHBhcmVudCB2YWx1ZS4uLlxuIgorICAgICAgICAKKyAg ICBAc3RhdGljbWV0aG9kCisgICAgZGVmIHJldHVybl90b19wYXJlbnRfdmFs dWVfcHJvbXB0KCk6CisgICAgICAgICIiIkEgdXRpbGl0eSBmdW5jdGlvbiB3 aGljaCBwcm9tcHRzIHRoZSB1c2VyIHRvIHByZXNzIHRoZSAnZW50ZXInIGtl eQorICAgICAgICBzbyB0aGF0IHRoZSBleHBsb3JhdGlvbiBzZXNzaW9uIGNh biBzaGlmdCBiYWNrIHRvIHRoZSBwYXJlbnQgdmFsdWUuCisgICAgICAgIFVz ZWZ1bCB3aGVuIGV4cGxvcmluZyB2YWx1ZXMuCisgICAgICAgICIiIgorICAg ICAgICByYXdfaW5wdXQoIlxuUHJlc3MgZW50ZXIgdG8gcmV0dXJuIHRvIHBh cmVudCB2YWx1ZTogIikKKyAgICAgICAgCisgICAgQHN0YXRpY21ldGhvZAor ICAgIGRlZiByZXR1cm5fdG9fZW5jbG9zaW5nX3R5cGUoKToKKyAgICAgICAg IiIiQSB1dGlsaXR5IGZ1bmN0aW9uIHdoaWNoIHByaW50cyB0aGF0IHRoZSBj dXJyZW50IGV4cGxvcmF0aW9uIHNlc3Npb24KKyAgICAgICAgaXMgcmV0dXJu aW5nIHRvIHRoZSBlbmNsb3NpbmcgdHlwZS4gVXNlZnVsIHdoZW4gZXhwbG9y aW5nIHR5cGVzLgorICAgICAgICAiIiIKKyAgICAgICAgcHJpbnQgIlxuUmV0 dXJuaW5nIHRvIGVuY2xvc2luZyB0eXBlLi4uXG4iCisgICAgICAgIAorICAg IEBzdGF0aWNtZXRob2QKKyAgICBkZWYgcmV0dXJuX3RvX2VuY2xvc2luZ190 eXBlX3Byb21wdCgpOgorICAgICAgICAiIiJBIHV0aWxpdHkgZnVuY3Rpb24g d2hpY2ggcHJvbXB0cyB0aGUgdXNlciB0byBwcmVzcyB0aGUgJ2VudGVyJyBr ZXkKKyAgICAgICAgc28gdGhhdCB0aGUgZXhwbG9yYXRpb24gc2Vzc2lvbiBj YW4gc2hpZnQgYmFjayB0byB0aGUgZW5jbG9zaW5nIHR5cGUuCisgICAgICAg IFVzZWZ1bCB3aGVuIGV4cGxvcmluZyB0eXBlcy4KKyAgICAgICAgIiIiCisg ICAgICAgIHJhd19pbnB1dCgiXG5QcmVzcyBlbnRlciB0byByZXR1cm4gdG8g ZW5jbG9zaW5nIHR5cGU6ICIpCisKKworY2xhc3MgU2NhbGFyRXhwbG9yZXIo b2JqZWN0KToKKyAgICAiIiJJbnRlcm5hbCBjbGFzcyB1c2VkIHRvIGV4cGxv cmUgc2NhbGFyIHZhbHVlcy4iIiIKKworICAgIEBzdGF0aWNtZXRob2QKKyAg ICBkZWYgZXhwbG9yZV9leHByKGV4cHIsIHZhbHVlLCBpc19jaGlsZCk6Cisg ICAgICAgICIiIkZ1bmN0aW9uIHRvIGV4cGxvcmUgc2NhbGFyIHZhbHVlcy4K KyAgICAgICAgU2VlIEV4cGxvcmVyLmV4cGxvcmVfZXhwciBhbmQgRXhwbG9y ZXIuaXNfc2NhbGFyX3R5cGUgZm9yIG1vcmUKKyAgICAgICAgaW5mb3JtYXRp b24uCisgICAgICAgICIiIgorICAgICAgICBwcmludCAoIiclcycgaXMgYSBz Y2FsYXIgdmFsdWUgb2YgdHlwZSAnJXMnLlxuIiAlCisgICAgICAgICAgICAg ICAoZXhwciwgdmFsdWUudHlwZSkpCisgICAgICAgIHByaW50ICIlcyA9ICVz IiAlIChleHByLCBzdHIodmFsdWUpKQorCisgICAgICAgIGlmIGlzX2NoaWxk OgorICAgICAgICAgICAgRXhwbG9yZXIucmV0dXJuX3RvX3BhcmVudF92YWx1 ZV9wcm9tcHQoKQorICAgICAgICAgICAgRXhwbG9yZXIucmV0dXJuX3RvX3Bh cmVudF92YWx1ZSgpCisKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBA c3RhdGljbWV0aG9kCisgICAgZGVmIGV4cGxvcmVfdHlwZShuYW1lLCBkYXRh dHlwZSwgaXNfY2hpbGQpOgorICAgICAgICAiIiJGdW5jdGlvbiB0byBleHBs b3JlIHNjYWxhciB0eXBlcy4KKyAgICAgICAgU2VlIEV4cGxvcmVyLmV4cGxv cmVfdHlwZSBhbmQgRXhwbG9yZXIuaXNfc2NhbGFyX3R5cGUgZm9yIG1vcmUK KyAgICAgICAgaW5mb3JtYXRpb24uCisgICAgICAgICIiIgorICAgICAgICBp ZiBkYXRhdHlwZS5jb2RlID09IGdkYi5UWVBFX0NPREVfRU5VTToKKyAgICAg ICAgICAgIGlmIGlzX2NoaWxkOgorICAgICAgICAgICAgICAgIHByaW50ICgi JXMgaXMgb2YgYW4gZW51bWVyYXRlZCB0eXBlICclcycuIiAlCisgICAgICAg ICAgICAgICAgICAgICAgIChuYW1lLCBzdHIoZGF0YXR5cGUpKSkKKyAgICAg ICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcHJpbnQgIiclcycgaXMg YW4gZW51bWVyYXRlZCB0eXBlLiIgJSBuYW1lCisgICAgICAgIGVsc2U6Cisg ICAgICAgICAgICBpZiBpc19jaGlsZDoKKyAgICAgICAgICAgICAgICBwcmlu dCAoIiVzIGlzIG9mIGEgc2NhbGFyIHR5cGUgJyVzJy4iICUKKyAgICAgICAg ICAgICAgICAgICAgICAgKG5hbWUsIHN0cihkYXRhdHlwZSkpKQorICAgICAg ICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBwcmludCAiJyVzJyBpcyBh IHNjYWxhciB0eXBlLiIgJSBuYW1lCisKKyAgICAgICAgaWYgaXNfY2hpbGQ6 CisgICAgICAgICAgICBFeHBsb3Jlci5yZXR1cm5fdG9fZW5jbG9zaW5nX3R5 cGVfcHJvbXB0KCkKKyAgICAgICAgICAgIEV4cGxvcmVyLnJldHVybl90b19l bmNsb3NpbmdfdHlwZSgpCisKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKwor Y2xhc3MgUG9pbnRlckV4cGxvcmVyKG9iamVjdCk6CisgICAgIiIiSW50ZXJu YWwgY2xhc3MgdXNlZCB0byBleHBsb3JlIHBvaW50ZXIgdmFsdWVzLiIiIgor CisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBleHBsb3JlX2V4cHIoZXhw ciwgdmFsdWUsIGlzX2NoaWxkKToKKyAgICAgICAgIiIiRnVuY3Rpb24gdG8g ZXhwbG9yZSBwb2ludGVyIHZhbHVlcy4KKyAgICAgICAgU2VlIEV4cGxvcmVy LmV4cGxvcmVfZXhwciBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAgICAgICAg IiIiCisgICAgICAgIHByaW50ICgiXG4nJXMnIGlzIGEgcG9pbnRlciB0byBh IHZhbHVlIG9mIHR5cGUgJyVzJyIgJQorICAgICAgICAgICAgICAgKGV4cHIs IHN0cih2YWx1ZS50eXBlLnRhcmdldCgpKSkpCisgICAgICAgIG9wdGlvbiAg PSByYXdfaW5wdXQoIkRvIHlvdSB3YW50IHRvIGV4cGxvcmUgaXQgYXMgYW4g YXJyYXkgb3IgYSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNp bmdsZSB2YWx1ZSBwb2ludGVyIFthL3NdIDogIikKKyAgICAgICAgaWYgb3B0 aW9uID09ICJzIjoKKyAgICAgICAgICAgIGRlcmVmX3ZhbHVlID0gTm9uZQor ICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGRlcmVmX3ZhbHVl ID0gdmFsdWUuZGVyZWZlcmVuY2UoKQorICAgICAgICAgICAgICAgIHN0cihk ZXJlZl92YWx1ZSkKKyAgICAgICAgICAgIGV4Y2VwdCBnZGIuTWVtb3J5RXJy b3I6CisgICAgICAgICAgICAgICAgcHJpbnQgKCInJXMnIGEgcG9pbnRlciBw b2ludGluZyB0byBhbiBpbnZhbGlkIG1lbW9yeSAiCisgICAgICAgICAgICAg ICAgICAgICAgICJsb2NhdGlvbi4iICUgZXhwcikKKyAgICAgICAgICAgICAg ICBpZiBpc19jaGlsZDoKKyAgICAgICAgICAgICAgICAgICAgRXhwbG9yZXIu cmV0dXJuX3RvX3BhcmVudF92YWx1ZV9wcm9tcHQoKQorICAgICAgICAgICAg ICAgIHJldHVybiBGYWxzZQorICAgICAgICAgICAgRXhwbG9yZXIuZXhwbG9y ZV9leHByKCIqJXMiICUgRXhwbG9yZXIuZ3VhcmRfZXhwcihleHByKSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXJlZl92YWx1ZSwg aXNfY2hpbGQpCisgICAgICAgIGlmIG9wdGlvbiA9PSAiYSI6CisgICAgICAg ICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgIGluZGV4ID0gMAor ICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgaW5k ZXggPSBpbnQocmF3X2lucHV0KCJFbnRlciB0aGUgaW5kZXggeW91IHdhbnQg dG8gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgImV4cGxvcmUgaW4gJyVzJzogIiAlIGV4cHIpKQorICAgICAgICAgICAg ICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgICAgICAgICBi cmVhaworICAgICAgICAgICAgICAgIGVsZW1lbnRfZXhwciA9ICIlc1slZF0i ICUgKEV4cGxvcmVyLmd1YXJkX2V4cHIoZXhwciksIGluZGV4KQorICAgICAg ICAgICAgICAgIGVsZW1lbnQgPSBnZGIucGFyc2VfYW5kX2V2YWwoZWxlbWVu dF9leHByKQorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAg ICAgICAgc3RyKGVsZW1lbnQpCisgICAgICAgICAgICAgICAgZXhjZXB0IGdk Yi5NZW1vcnlFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQgIkNh bm5vdCByZWFkIHZhbHVlIGF0IGluZGV4ICVkLiIgJSBpbmRleAorICAgICAg ICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIEV4cGxv cmVyLmV4cGxvcmVfZXhwcihlbGVtZW50X2V4cHIsIGVsZW1lbnQsIFRydWUp CisgICAgICAgIGlmIG9wdGlvbiAhPSAicyIgYW5kIG9wdGlvbiAhPSAiYSI6 ICAgIAorICAgICAgICAgICAgaWYgaXNfY2hpbGQ6CisgICAgICAgICAgICAg ICAgRXhwbG9yZXIucmV0dXJfdG9fcGFyZW50X3ZhbHVlKCkKKworICAgICAg ICByZXR1cm4gRmFsc2UKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYg ZXhwbG9yZV90eXBlKG5hbWUsIGRhdGF0eXBlLCBpc19jaGlsZCk6CisgICAg ICAgICIiIkZ1bmN0aW9uIHRvIGV4cGxvcmUgcG9pbnRlciB0eXBlcy4KKyAg ICAgICAgU2VlIEV4cGxvcmVyLmV4cGxvcmVfdHlwZSBmb3IgbW9yZSBpbmZv cm1hdGlvbi4KKyAgICAgICAgIiIiCisgICAgICAgIHRhcmdldF90eXBlID0g ZGF0YXR5cGUudGFyZ2V0KCkKKyAgICAgICAgcHJpbnQgKCJcbiVzIGlzIG9m IGEgcG9pbnRlciB0eXBlIHBvaW50aW5nIHRvIGEgdmFsdWUgb2YgdHlwZSAn JXMnLiIgJQorICAgICAgICAgICAgICAgKG5hbWUsIHN0cih0YXJnZXRfdHlw ZSkpKQorCisgICAgICAgIEV4cGxvcmVyLmV4cGxvcmVfdHlwZSgidGhlIHBv aW50ZWUgdHlwZSBvZiAlcyIgJSBuYW1lLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdGFyZ2V0X3R5cGUsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpc19jaGlsZCkKKyAgICAgICAgcmV0dXJuIEZhbHNlCisK KworY2xhc3MgQXJyYXlFeHBsb3JlcihvYmplY3QpOgorICAgICIiIkludGVy bmFsIGNsYXNzIHVzZWQgdG8gZXhwbG9yZSBhcnJheXMuIiIiCisKKyAgICBA c3RhdGljbWV0aG9kCisgICAgZGVmIGV4cGxvcmVfZXhwcihleHByLCB2YWx1 ZSwgaXNfY2hpbGQpOgorICAgICAgICAiIiJGdW5jdGlvbiB0byBleHBsb3Jl IGFycmF5IHZhbHVlcy4KKyAgICAgICAgU2VlIEV4cGxvcmVyLmV4cGxvcmVf ZXhwciBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAgICAgICAgIiIiCisgICAg ICAgIHRhcmdldF90eXBlID0gdmFsdWUudHlwZS50YXJnZXQoKQorICAgICAg ICBwcmludCAoIiclcycgaXMgYW4gYXJyYXkgb2YgZWxlbWVudHMgb2YgdHlw ZSAnJXMnLiIgJQorICAgICAgICAgICAgICAgKGV4cHIsIHN0cih0YXJnZXRf dHlwZSkpKQorICAgICAgICBpbmRleCA9IDAKKyAgICAgICAgdHJ5OgorICAg ICAgICAgICAgaW5kZXggPSBpbnQocmF3X2lucHV0KCJFbnRlciB0aGUgaW5k ZXggeW91IHdhbnQgdG8gZXhwbG9yZSAiCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgImluICclcyc6ICIgJSBleHByKSkKKyAgICAgICAg ZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICBpZiBpc19jaGlsZDoK KyAgICAgICAgICAgICAgICBFeHBsb3Jlci5yZXR1cm5fdG9fcGFyZW50X3Zh bHVlKCkKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgICAgIGVs ZW1lbnQgPSBOb25lCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGVsZW1l bnQgPSB2YWx1ZVtpbmRleF0KKyAgICAgICAgICAgIHN0cihlbGVtZW50KQor ICAgICAgICBleGNlcHQgZ2RiLk1lbW9yeUVycm9yOgorICAgICAgICAgICAg cHJpbnQgIkNhbm5vdCByZWFkIHZhbHVlIGF0IGluZGV4ICVkLiIgJSBpbmRl eAorICAgICAgICAgICAgcmF3X2lucHV0KCJQcmVzcyBlbnRlciB0byBjb250 aW51ZS4uLiAiKQorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAg ICAgIAorICAgICAgICBFeHBsb3Jlci5leHBsb3JlX2V4cHIoIiVzWyVkXSIg JSAoRXhwbG9yZXIuZ3VhcmRfZXhwcihleHByKSwgaW5kZXgpLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudCwgVHJ1ZSkKKyAgICAg ICAgcmV0dXJuIFRydWUKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYg ZXhwbG9yZV90eXBlKG5hbWUsIGRhdGF0eXBlLCBpc19jaGlsZCk6CisgICAg ICAgICIiIkZ1bmN0aW9uIHRvIGV4cGxvcmUgYXJyYXkgdHlwZXMuCisgICAg ICAgIFNlZSBFeHBsb3Jlci5leHBsb3JlX3R5cGUgZm9yIG1vcmUgaW5mb3Jt YXRpb24uCisgICAgICAgICIiIgorICAgICAgICB0YXJnZXRfdHlwZSA9IGRh dGF0eXBlLnRhcmdldCgpCisgICAgICAgIHByaW50ICgiJXMgaXMgYW4gYXJy YXkgdHlwZSB3aXRoIGVsZW1lbnRzIG9mIHR5cGUgJyVzJy4iICUgCisgICAg ICAgICAgICAgICAobmFtZSwgc3RyKHRhcmdldF90eXBlKSkpCisKKyAgICAg ICAgZXhwbG9yZV90eXBlKHRhcmdldF90eXBlLCAidGhlIGFycmF5IGVsZW1l bnQgb2YgJXMiICUgbmFtZSwgaXNfY2hpbGQpCisgICAgICAgIHJldHVybiBG YWxzZQorCisKK2NsYXNzIENvbXBvdW5kRXhwbG9yZXIob2JqZWN0KToKKyAg ICAiIiJJbnRlcm5hbCBjbGFzcyB1c2VkIHRvIGV4cGxvcmUgc3RydWN0LCBj bGFzc2VzIGFuZCB1bmlvbnMuIiIiCisKKyAgICBAc3RhdGljbWV0aG9kCisg ICAgZGVmIF9wcmludF9maWVsZHMocHJpbnRfbGlzdCk6CisgICAgICAgICIi IkludGVybmFsIGZ1bmN0aW9uIHdoaWNoIHByaW50cyB0aGUgZmllbGRzIG9m IGEgc3RydWN0L2NsYXNzL3VuaW9uLgorICAgICAgICAiIiIKKyAgICAgICAg bWF4X2ZpZWxkX25hbWVfbGVuZ3RoID0gMAorICAgICAgICBmb3IgcGFpciBp biBwcmludF9saXN0OgorICAgICAgICAgICAgaWYgbWF4X2ZpZWxkX25hbWVf bGVuZ3RoIDwgbGVuKHBhaXJbMF0pOgorICAgICAgICAgICAgICAgIG1heF9m aWVsZF9uYW1lX2xlbmd0aCA9IGxlbihwYWlyWzBdKQorCisgICAgICAgIGZv cm1hdF9zdHIgPSAiICB7MDo+JWR9ID0gezF9IiAlIG1heF9maWVsZF9uYW1l X2xlbmd0aAorICAgICAgICBmb3IgcGFpciBpbiBwcmludF9saXN0OgorICAg ICAgICAgICAgcHJpbnQgZm9ybWF0X3N0ci5mb3JtYXQocGFpclswXSwgcGFp clsxXSkKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgZXhwbG9yZV9l eHByKGV4cHIsIHZhbHVlLCBpc19jaGlsZCk6CisgICAgICAgICIiIkZ1bmN0 aW9uIHRvIGV4cGxvcmUgc3RydWN0cy9jbGFzc2VzIGFuZCB1bmlvbiB2YWx1 ZXMuCisgICAgICAgIFNlZSBFeHBsb3Jlci5leHBsb3JlX2V4cHIgZm9yIG1v cmUgaW5mb3JtYXRpb24uCisgICAgICAgICIiIgorICAgICAgICB0eXBlX2Nv ZGUgPSB2YWx1ZS50eXBlLmNvZGUKKyAgICAgICAgdHlwZV9kZXNjID0gIiIK KyAgICAgICAgaWYgdHlwZV9jb2RlID09IGdkYi5UWVBFX0NPREVfU1RSVUNU OgorICAgICAgICAgICAgdHlwZV9kZXNjID0gInN0cnVjdC9jbGFzcyIKKyAg ICAgICAgZWxzZToKKyAgICAgICAgICAgIHR5cGVfZGVzYyA9ICJ1bmlvbiIK KyAgICAgICAgcHJpbnQoIlRoZSB2YWx1ZSBvZiAnJXMnIGlzIGEgJXMgb2Yg dHlwZSAnJXMnIHdpdGggdGhlIGZvbGxvd2luZyAiCisgICAgICAgICAgICAg ICJmaWVsZHM6XG4iICUgKGV4cHIsIHR5cGVfZGVzYywgc3RyKHZhbHVlLnR5 cGUpKSkKKworICAgICAgICBmaWVsZHMgPSB2YWx1ZS50eXBlLmZpZWxkcygp CisgICAgICAgIGhhc19leHBsb3JhYmxlX2ZpZWxkcyA9IEZhbHNlCisgICAg ICAgIGNob2ljZV90b19jb21wb3VuZF9maWVsZF9tYXAgPSB7IH0KKyAgICAg ICAgY3VycmVudF9jaG9pY2UgPSAwCisgICAgICAgIHByaW50X2xpc3QgPSBb IF0KKyAgICAgICAgZm9yIGZpZWxkIGluIGZpZWxkczoKKyAgICAgICAgICAg IGZpZWxkX2Z1bGxfbmFtZSA9IEV4cGxvcmVyLmd1YXJkX2V4cHIoZXhwcikg KyAiLiIgKyBmaWVsZC5uYW1lCisgICAgICAgICAgICBmaWVsZF92YWx1ZSA9 IHZhbHVlW2ZpZWxkLm5hbWVdCisgICAgICAgICAgICBsaXRlcmFsX3ZhbHVl ID0gIiIKKyAgICAgICAgICAgIGlmIHR5cGVfY29kZSA9PSBnZGIuVFlQRV9D T0RFX1VOSU9OOgorICAgICAgICAgICAgICAgIGxpdGVyYWxfdmFsdWUgPSAo IjxFbnRlciAlZCB0byBleHBsb3JlIHRoaXMgZmllbGQgb2YgdHlwZSAiCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJyVzJz4iICUgKGN1 cnJlbnRfY2hvaWNlLCBzdHIoZmllbGQudHlwZSkpKQorICAgICAgICAgICAg ICAgIGhhc19leHBsb3JhYmxlX2ZpZWxkcyA9IFRydWUKKyAgICAgICAgICAg IGVsc2U6CisgICAgICAgICAgICAgICAgaWYgRXhwbG9yZXIuaXNfc2NhbGFy X3R5cGUoZmllbGQudHlwZSk6CisgICAgICAgICAgICAgICAgICAgIGxpdGVy YWxfdmFsdWUgPSAoIiVzIC4uIChWYWx1ZSBvZiB0eXBlICclcycpIiAlCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cihmaWVs ZF92YWx1ZSksIHN0cihmaWVsZC50eXBlKSkpCisgICAgICAgICAgICAgICAg ZWxzZToKKyAgICAgICAgICAgICAgICAgICAgaWYgZmllbGQuaXNfYmFzZV9j bGFzczoKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkX2Rlc2MgPSAi YmFzZSBjbGFzcyIKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAg ICAgICAgICAgICAgICAgICAgIGZpZWxkX2Rlc2MgPSAiZmllbGQiCisgICAg ICAgICAgICAgICAgICAgIGxpdGVyYWxfdmFsdWUgPSAoIjxFbnRlciAlZCB0 byBleHBsb3JlIHRoaXMgJXMgb2YgdHlwZSAiCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIiclcyc+IiAlCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGN1cnJlbnRfY2hvaWNlLCBmaWVs ZF9kZXNjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzdHIoZmllbGQudHlwZSkpKQorICAgICAgICAgICAgICAgICAgICBoYXNf ZXhwbG9yYWJsZV9maWVsZHMgPSBUcnVlCisKKyAgICAgICAgICAgIGNob2lj ZV90b19jb21wb3VuZF9maWVsZF9tYXBbc3RyKGN1cnJlbnRfY2hvaWNlKV0g PSAoCisgICAgICAgICAgICAgICAgZmllbGRfZnVsbF9uYW1lLCBmaWVsZF92 YWx1ZSkKKyAgICAgICAgICAgIGN1cnJlbnRfY2hvaWNlID0gY3VycmVudF9j aG9pY2UgKyAxCisKKyAgICAgICAgICAgIHByaW50X2xpc3QuYXBwZW5kKChm aWVsZC5uYW1lLCBsaXRlcmFsX3ZhbHVlKSkKKworICAgICAgICBDb21wb3Vu ZEV4cGxvcmVyLl9wcmludF9maWVsZHMocHJpbnRfbGlzdCkKKyAgICAgICAg cHJpbnQgIiIKKworICAgICAgICBpZiBoYXNfZXhwbG9yYWJsZV9maWVsZHM6 CisgICAgICAgICAgICBjaG9pY2UgPSByYXdfaW5wdXQoIkVudGVyIHRoZSBm aWVsZCBudW1iZXIgb2YgY2hvaWNlOiAiKQorICAgICAgICAgICAgaWYgY2hv aWNlIGluIGNob2ljZV90b19jb21wb3VuZF9maWVsZF9tYXA6CisgICAgICAg ICAgICAgICAgRXhwbG9yZXIuZXhwbG9yZV9leHByKGNob2ljZV90b19jb21w b3VuZF9maWVsZF9tYXBbY2hvaWNlXVswXSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY2hvaWNlX3RvX2NvbXBvdW5kX2ZpZWxk X21hcFtjaG9pY2VdWzFdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBUcnVlKQorICAgICAgICAgICAgICAgIHJldHVybiBUcnVl CisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGlmIGlzX2No aWxkOgorICAgICAgICAgICAgICAgICAgICBFeHBsb3Jlci5yZXR1cm5pbmdf dG9fcGFyZW50X3ZhbHVlX21lc3NhZ2UoKQorICAgICAgICBlbHNlOgorICAg ICAgICAgICAgaWYgaXNfY2hpbGQ6CisgICAgICAgICAgICAgICAgRXhwbG9y ZXIucmV0dXJuX3RvX3BhcmVudF92YWx1ZV9wcm9tcHQoKQorCisgICAgICAg IHJldHVybiBGYWxzZQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBl eHBsb3JlX3R5cGUobmFtZSwgZGF0YXR5cGUsIGlzX2NoaWxkKToKKyAgICAg ICAgIiIiRnVuY3Rpb24gdG8gZXhwbG9yZSBzdHJ1Y3QvY2xhc3MgYW5kIHVu aW9uIHR5cGVzLgorICAgICAgICBTZWUgRXhwbG9yZXIuZXhwbG9yZV90eXBl IGZvciBtb3JlIGluZm9ybWF0aW9uLgorICAgICAgICAiIiIKKyAgICAgICAg dHlwZV9jb2RlID0gZGF0YXR5cGUuY29kZQorICAgICAgICB0eXBlX2Rlc2Mg PSAiIgorICAgICAgICBpZiB0eXBlX2NvZGUgPT0gZ2RiLlRZUEVfQ09ERV9T VFJVQ1Q6CisgICAgICAgICAgICB0eXBlX2Rlc2MgPSAic3RydWN0L2NsYXNz IgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgdHlwZV9kZXNjID0gInVu aW9uIgorCisgICAgICAgIGlmIGlzX2NoaWxkOgorICAgICAgICAgICAgcHJp bnQgKCJcbiVzIGlzIGEgJXMgb2YgdHlwZSAnJXMnICIKKyAgICAgICAgICAg ICAgICAgICAid2l0aCB0aGUgZm9sbG93aW5nIGZpZWxkczpcbiIgJQorICAg ICAgICAgICAgICAgICAgIChuYW1lLCB0eXBlX2Rlc2MsIHN0cihkYXRhdHlw ZSkpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcHJpbnQgKCJcbicl cycgaXMgYSAlcyB3aXRoIHRoZSBmb2xsb3dpbmcgIgorICAgICAgICAgICAg ICAgICAgICJmaWVsZHM6XG4iICUKKyAgICAgICAgICAgICAgICAgICAobmFt ZSwgdHlwZV9kZXNjKSkKKworICAgICAgICBmaWVsZHMgPSBkYXRhdHlwZS5m aWVsZHMoKQorICAgICAgICBoYXNfZXhwbG9yYWJsZV9maWVsZHMgPSBGYWxz ZQorICAgICAgICBjdXJyZW50X2Nob2ljZSA9IDAKKyAgICAgICAgY2hvaWNl X3RvX2NvbXBvdW5kX2ZpZWxkX21hcCA9IHsgfQorICAgICAgICBwcmludF9s aXN0ID0gWyBdCisgICAgICAgIGZvciBmaWVsZCBpbiBmaWVsZHM6CisgICAg ICAgICAgICByaHMgPSAoIjxFbnRlciAlZCB0byBleHBsb3JlIHRoaXMgZmll bGQgb2YgdHlwZSAlcz4iICUKKyAgICAgICAgICAgICAgICAgICAoY3VycmVu dF9jaG9pY2UsIHN0cihmaWVsZC50eXBlKSkpCisgICAgICAgICAgICBwcmlu dF9saXN0LmFwcGVuZCgoZmllbGQubmFtZSwgcmhzKSkKKyAgICAgICAgICAg IGNob2ljZV90b19jb21wb3VuZF9maWVsZF9tYXBbc3RyKGN1cnJlbnRfY2hv aWNlKV0gPSAoCisgICAgICAgICAgICAgICAgZmllbGQubmFtZSwgZmllbGQu dHlwZSkKKyAgICAgICAgICAgIGN1cnJlbnRfY2hvaWNlID0gY3VycmVudF9j aG9pY2UgKyAxCisKKyAgICAgICAgQ29tcG91bmRFeHBsb3Jlci5fcHJpbnRf ZmllbGRzKHByaW50X2xpc3QpCisgICAgICAgIHByaW50ICIiCisKKyAgICAg ICAgaWYgbGVuKGNob2ljZV90b19jb21wb3VuZF9maWVsZF9tYXApID4gMDoK KyAgICAgICAgICAgIGNob2ljZSA9IHJhd19pbnB1dCgiRW50ZXIgdGhlIGZp ZWxkIG51bWJlciBvZiBjaG9pY2UgOiAiKQorICAgICAgICAgICAgaWYgY2hv aWNlIGluIGNob2ljZV90b19jb21wb3VuZF9maWVsZF9tYXA6CisgICAgICAg ICAgICAgICAgaWYgaXNfY2hpbGQ6CisgICAgICAgICAgICAgICAgICAgIEV4 cGxvcmVyLmV4cGxvcmVfdHlwZSgKKyAgICAgICAgICAgICAgICAgICAgICAg ICgiZmllbGQgJyVzJyBvZiAlcyIgJQorICAgICAgICAgICAgICAgICAgICAg ICAgIChjaG9pY2VfdG9fY29tcG91bmRfZmllbGRfbWFwW2Nob2ljZV1bMF0s IG5hbWUpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNob2ljZV90b19j b21wb3VuZF9maWVsZF9tYXBbY2hvaWNlXVsxXSwKKyAgICAgICAgICAgICAg ICAgICAgICAgIFRydWUpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAg ICAgICAgICAgICAgICAgRXhwbG9yZXIuZXhwbG9yZV90eXBlKAorICAgICAg ICAgICAgICAgICAgICAgICAgKCJmaWVsZCAnJXMnIG9mICclcyciICUKKyAg ICAgICAgICAgICAgICAgICAgICAgICAoY2hvaWNlX3RvX2NvbXBvdW5kX2Zp ZWxkX21hcFtjaG9pY2VdWzBdLCBuYW1lKSksCisgICAgICAgICAgICAgICAg ICAgICAgICBjaG9pY2VfdG9fY29tcG91bmRfZmllbGRfbWFwW2Nob2ljZV1b MV0sCisgICAgICAgICAgICAgICAgICAgICAgICBUcnVlKQorICAgICAgICAg ICAgICAgIHJldHVybiBUcnVlCisgICAgICAgICAgICBlbHNlOgorICAgICAg ICAgICAgICAgIGlmIGlzX2NoaWxkOgorICAgICAgICAgICAgICAgICAgICBF eHBsb3Jlci5yZXR1cm5fdG9fZW5jbG9zaW5nX3R5cGUoKQorICAgICAgICBl bHNlOgorICAgICAgICAgICAgaWYgaXNfY2hpbGQ6CisgICAgICAgICAgICAg ICAgRXhwbG9yZXIucmV0dXJuX3RvX2VuY2xvc2luZ190eXBlX3Byb21wdCgp CisKKyAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgICAgIAorCitjbGFz cyBUeXBlZGVmRXhwbG9yZXIob2JqZWN0KToKKyAgICAiIiJJbnRlcm5hbCBj bGFzcyB1c2VkIHRvIGV4cGxvcmUgdmFsdWVzIHdob3NlIHR5cGUgaXMgYSB0 eXBlZGVmLiIiIgorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBleHBs b3JlX2V4cHIoZXhwciwgdmFsdWUsIGlzX2NoaWxkKToKKyAgICAgICAgIiIi RnVuY3Rpb24gdG8gZXhwbG9yZSB0eXBlZGVmIHZhbHVlcy4KKyAgICAgICAg U2VlIEV4cGxvcmVyLmV4cGxvcmVfZXhwciBmb3IgbW9yZSBpbmZvcm1hdGlv bi4KKyAgICAgICAgIiIiCisgICAgICAgIGFjdHVhbF90eXBlID0gdmFsdWUu dHlwZS5zdHJpcF90eXBlZGVmcygpCisgICAgICAgIHByaW50ICgiXG5UaGUg dmFsdWUgb2YgJyVzJyBpcyBvZiB0eXBlICclcycgIgorICAgICAgICAgICAg ICAgIndoaWNoIGlzIGEgdHlwZWRlZiBvZiB0eXBlICclcyciICUKKyAgICAg ICAgICAgICAgIChleHByLCBzdHIodmFsdWUudHlwZSksIHN0cihhY3R1YWxf dHlwZSkpKQorCisgICAgICAgIEV4cGxvcmVyLmV4cGxvcmVfZXhwcihleHBy LCB2YWx1ZS5jYXN0KGFjdHVhbF90eXBlKSwgaXNfY2hpbGQpCisgICAgICAg IHJldHVybiBGYWxzZQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBl eHBsb3JlX3R5cGUobmFtZSwgZGF0YXR5cGUsIGlzX2NoaWxkKToKKyAgICAg ICAgIiIiRnVuY3Rpb24gdG8gZXhwbG9yZSB0eXBlZGVmIHR5cGVzLgorICAg ICAgICBTZWUgRXhwbG9yZXIuZXhwbG9yZV90eXBlIGZvciBtb3JlIGluZm9y bWF0aW9uLgorICAgICAgICAiIiIKKyAgICAgICAgYWN0dWFsX3R5cGUgPSBk YXRhdHlwZS5zdHJpcF90eXBlZGVmcygpCisgICAgICAgIGlmIGlzX2NoaWxk OgorICAgICAgICAgICAgcHJpbnQoIlxuVGhlIHR5cGUgb2YgJXMgaXMgYSB0 eXBlZGVmIG9mIHR5cGUgJyVzJy4iICUKKyAgICAgICAgICAgICAgICAgIChu YW1lLCBzdHIoYWN0dWFsX3R5cGUpKSkKKyAgICAgICAgZWxzZToKKyAgICAg ICAgICAgIHByaW50KCJcblRoZSB0eXBlICclcycgaXMgYSB0eXBlZGVmIG9m IHR5cGUgJyVzJy4iICUKKyAgICAgICAgICAgICAgICAgIChuYW1lLCBzdHIo YWN0dWFsX3R5cGUpKSkKKworICAgICAgICBFeHBsb3Jlci5leHBsb3JlX3R5 cGUobmFtZSwgYWN0dWFsX3R5cGUsIGlzX2NoaWxkKQorICAgICAgICByZXR1 cm4gRmFsc2UKKworCitjbGFzcyBFeHBsb3JlVXRpbHMob2JqZWN0KToKKyAg ICAiIiJJbnRlcm5hbCBjbGFzcyB3aGljaCBwcm92aWRlcyB1dGlsaXRpZXMg Zm9yIHRoZSBtYWluIGNvbW1hbmQgY2xhc3Nlcy4iIiIKKworICAgIEBzdGF0 aWNtZXRob2QKKyAgICBkZWYgY2hlY2tfYXJncyhuYW1lLCBhcmdfc3RyKToK KyAgICAgICAgIiIiVXRpbGl0eSB0byBjaGVjayBpZiBhZGVxdWF0ZSBudW1i ZXIgb2YgYXJndW1lbnRzIGFyZSBwYXNzZWQgdG8gYW4KKyAgICAgICAgZXhw bG9yZSBjb21tYW5kLgorCisgICAgICAgIEFyZ3VtZW50czoKKyAgICAgICAg ICAgIG5hbWU6IFRoZSBuYW1lIG9mIHRoZSBleHBsb3JlIGNvbW1hbmQuCisg ICAgICAgICAgICBhcmdfc3RyOiBUaGUgYXJndW1lbnQgc3RyaW5nIHBhc3Nl ZCB0byB0aGUgZXhwbG9yZSBjb21tYW5kLgorCisgICAgICAgIFJldHVybnM6 CisgICAgICAgICAgICBUcnVlIGlmIGFkZXF1YXRlIGFyZ3VtZW50cyBhcmUg cGFzc2VkLCBmYWxzZSBvdGhlcndpc2UuCisKKyAgICAgICAgUmFpc2VzOgor ICAgICAgICAgICAgZ2RiLkdkYkVycm9yIGlmIGFkZXF1YXRlIGFyZ3VtZW50 cyBhcmUgbm90IHBhc3NlZC4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIGxl bihhcmdfc3RyKSA8IDE6CisgICAgICAgICAgICByYWlzZSBnZGIuR2RiRXJy b3IoIkVSUk9SOiAnJXMnIGNvbW1hbmQgcmVxdWlyZXMgYW4gYXJndW1lbnQu IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgbmFtZSkKKyAg ICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICBlbHNlOgorICAgICAg ICAgICAgcmV0dXJuIFRydWUKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBk ZWYgZ2V0X3R5cGVfZnJvbV9zdHIodHlwZV9zdHIpOgorICAgICAgICAiIiJB IHV0aWxpdHkgZnVuY3Rpb24gdG8gZGVkdWNlIHRoZSBnZGIuVHlwZSB2YWx1 ZSBmcm9tIGEgc3RyaW5nCisgICAgICAgIHJlcHJlc2VudGluZyB0aGUgdHlw ZS4KKworICAgICAgICBBcmd1bWVudHM6CisgICAgICAgICAgICB0eXBlX3N0 cjogVGhlIHR5cGUgc3RyaW5nIGZyb20gd2hpY2ggdGhlIGdkYi5UeXBlIHZh bHVlIHNob3VsZCBiZQorICAgICAgICAgICAgICAgICAgICAgIGRlZHVjZWQu CisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIFRoZSBkZWR1Y2Vk IGdkYi5UeXBlIHZhbHVlIGlmIHBvc3NpYmxlLCBOb25lIG90aGVyd2lzZS4K KyAgICAgICAgIiIiCisgICAgICAgIHRyeToKKyAgICAgICAgICAgICMgQXNz dW1lIHRoZSBjdXJyZW50IGxhbmd1YWdlIHRvIGJlIEMvQysrIGFuZCBtYWtl IGEgdHJ5LgorICAgICAgICAgICAgcmV0dXJuIGdkYi5wYXJzZV9hbmRfZXZh bCgiKCVzICopMCIgJSB0eXBlX3N0cikudHlwZS50YXJnZXQoKQorICAgICAg ICBleGNlcHQgUnVudGltZUVycm9yOgorICAgICAgICAgICAgIyBJZiBhc3N1 bXB0aW9uIG9mIGN1cnJlbnQgbGFuZ3VhZ2UgdG8gYmUgQy9DKysgd2FzIHdy b25nLCB0aGVuCisgICAgICAgICAgICAjIGxvb2t1cCB0aGUgdHlwZSB1c2lu ZyB0aGUgQVBJLgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAg IHJldHVybiBnZGIubG9va3VwX3R5cGUodHlwZV9zdHIpCisgICAgICAgICAg ICBleGNlcHQgUnVudGltZUVycm9yOgorICAgICAgICAgICAgICAgIHJldHVy biBOb25lCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIGdldF92YWx1 ZV9mcm9tX3N0cih2YWx1ZV9zdHIpOgorICAgICAgICAiIiJBIHV0aWxpdHkg ZnVuY3Rpb24gdG8gZGVkdWNlIHRoZSBnZGIuVmFsdWUgdmFsdWUgZnJvbSBh IHN0cmluZworICAgICAgICByZXByZXNlbnRpbmcgdGhlIHZhbHVlLgorCisg ICAgICAgIEFyZ3VtZW50czoKKyAgICAgICAgICAgIHZhbHVlX3N0cjogVGhl IHZhbHVlIHN0cmluZyBmcm9tIHdoaWNoIHRoZSBnZGIuVmFsdWUgdmFsdWUg c2hvdWxkCisgICAgICAgICAgICAgICAgICAgICAgIGJlIGRlZHVjZWQuCisK KyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIFRoZSBkZWR1Y2VkIGdk Yi5WYWx1ZSB2YWx1ZSBpZiBwb3NzaWJsZSwgTm9uZSBvdGhlcndpc2UuCisg ICAgICAgICIiIgorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXR1cm4g Z2RiLnBhcnNlX2FuZF9ldmFsKHZhbHVlX3N0cikKKyAgICAgICAgZXhjZXB0 IFJ1bnRpbWVFcnJvcjoKKyAgICAgICAgICAgIHJldHVybiBOb25lCisKKwor Y2xhc3MgRXhwbG9yZUNvbW1hbmQoZ2RiLkNvbW1hbmQpOgorICAgICIiIkV4 cGxvcmUgYSB2YWx1ZSBvciBhIHR5cGUgdmFsaWQgaW4gdGhlIGN1cnJlbnQg Y29udGV4dC4KKworICAgICAgIFVzYWdlOgorCisgICAgICAgICBleHBsb3Jl IEFSRworCisgICAgICAgICAtIEFSRyBpcyBlaXRoZXIgYSB2YWxpZCBleHBy ZXNzaW9uIG9yIGEgdHlwZSBuYW1lLgorICAgICAgICAgLSBBdCBhbnkgc3Rh Z2Ugb2YgZXhwbG9yYXRpb24sIGhpdCB0aGUgcmV0dXJuIGtleSAoaW5zdGVh ZCBvZiBhCisgICAgICAgICAgIGNob2ljZSwgaWYgYW55KSB0byByZXR1cm4g dG8gdGhlIGVuY2xvc2luZyB0eXBlIG9yIHZhbHVlLiBFbnRlcmluZworICAg ICAgICAgICBhbiBpbnZhbGlkIGlucHV0IHdpbGwgYWxzbyByZXN1bHQgaW4g c2ltaWxhciBiZWhhdmlvdXIuCisgICAgIiIiCisKKyAgICBkZWYgX19pbml0 X18oc2VsZik6CisgICAgICAgIHN1cGVyKEV4cGxvcmVDb21tYW5kLCBzZWxm KS5fX2luaXRfXyhuYW1lID0gImV4cGxvcmUiLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZF9jbGFzcyA9 IGdkYi5DT01NQU5EX0RBVEEsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBwcmVmaXggPSBUcnVlKQorCisgICAgZGVm IGludm9rZShzZWxmLCBhcmdfc3RyLCBmcm9tX3R0eSk6CisgICAgICAgIGlm IEV4cGxvcmVVdGlscy5jaGVja19hcmdzKCJleHBsb3JlIiwgYXJnX3N0cikg PT0gRmFsc2U6CisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICAjIENo ZWNrIGlmIGl0IGlzIGEgdmFsdWUKKyAgICAgICAgdmFsdWUgPSBFeHBsb3Jl VXRpbHMuZ2V0X3ZhbHVlX2Zyb21fc3RyKGFyZ19zdHIpCisgICAgICAgIGlm IHZhbHVlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgRXhwbG9yZXIuZXhw bG9yZV9leHByKGFyZ19zdHIsIHZhbHVlLCBGYWxzZSkKKyAgICAgICAgICAg IHJldHVybgorCisgICAgICAgICMgSWYgaXQgaXMgbm90IGEgdmFsdWUsIGNo ZWNrIGlmIGl0IGlzIGEgdHlwZQorICAgICAgICBkYXRhdHlwZSA9IEV4cGxv cmVVdGlscy5nZXRfdHlwZV9mcm9tX3N0cihhcmdfc3RyKQorICAgICAgICBp ZiBkYXRhdHlwZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIEV4cGxvcmVy LmV4cGxvcmVfdHlwZShhcmdfc3RyLCBkYXRhdHlwZSwgRmFsc2UpCisgICAg ICAgICAgICByZXR1cm4KKworICAgICAgICAjIElmIGl0IGlzIG5laXRoZXIg YSB2YWx1ZSBub3IgYSB0eXBlLCByYWlzZSBhbiBlcnJvci4KKyAgICAgICAg cmFpc2UgZ2RiLkdkYkVycm9yKAorICAgICAgICAgICAgKCInJXMnIG5laXRo ZXIgZXZhbHVhdGVzIHRvIGEgdmFsdWUgbm9yIGlzIGEgdHlwZSAiCisgICAg ICAgICAgICAgImluIHRoZSBjdXJyZW50IGNvbnRleHQuIiAlCisgICAgICAg ICAgICAgYXJnX3N0cikpCisKKworY2xhc3MgRXhwbG9yZVZhbHVlQ29tbWFu ZChnZGIuQ29tbWFuZCk6CisgICAgIiIiRXhwbG9yZSB2YWx1ZSBvZiBhbiBl eHByZXNzaW9uIHZhbGlkIGluIHRoZSBjdXJyZW50IGNvbnRleHQuCisKKyAg ICAgICBVc2FnZToKKworICAgICAgICAgZXhwbG9yZSB2YWx1ZSBBUkcKKwor ICAgICAgICAgLSBBUkcgaXMgYSB2YWxpZCBleHByZXNzaW9uLgorICAgICAg ICAgLSBBdCBhbnkgc3RhZ2Ugb2YgZXhwbG9yYXRpb24sIGhpdCB0aGUgcmV0 dXJuIGtleSAoaW5zdGVhZCBvZiBhCisgICAgICAgICAgIGNob2ljZSwgaWYg YW55KSB0byByZXR1cm4gdG8gdGhlIGVuY2xvc2luZyB2YWx1ZS4gRW50ZXJp bmcKKyAgICAgICAgICAgYW4gaW52YWxpZCBpbnB1dCB3aWxsIGFsc28gcmVz dWx0IGluIHNpbWlsYXIgYmVoYXZpb3VyLgorICAgICIiIgorIAorICAgIGRl ZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc3VwZXIoRXhwbG9yZVZhbHVl Q29tbWFuZCwgc2VsZikuX19pbml0X18oCisgICAgICAgICAgICBuYW1lID0g ImV4cGxvcmUgdmFsdWUiLCBjb21tYW5kX2NsYXNzID0gZ2RiLkNPTU1BTkRf REFUQSkKKworICAgIGRlZiBpbnZva2Uoc2VsZiwgYXJnX3N0ciwgZnJvbV90 dHkpOgorICAgICAgICBpZiBFeHBsb3JlVXRpbHMuY2hlY2tfYXJncygiZXhw bG9yZSB2YWx1ZSIsIGFyZ19zdHIpID09IEZhbHNlOgorICAgICAgICAgICAg cmV0dXJuCisKKyAgICAgICAgdmFsdWUgPSBFeHBsb3JlVXRpbHMuZ2V0X3Zh bHVlX2Zyb21fc3RyKGFyZ19zdHIpCisgICAgICAgIGlmIHZhbHVlIGlzIE5v bmU6CisgICAgICAgICAgICByYWlzZSBnZGIuR2RiRXJyb3IoCisgICAgICAg ICAgICAgICAgKCIgJyVzJyBkb2VzIG5vdCBldmFsdWF0ZSB0byBhIHZhbHVl IGluIHRoZSBjdXJyZW50ICIKKyAgICAgICAgICAgICAgICAgImNvbnRleHQu IiAlCisgICAgICAgICAgICAgICAgIGFyZ19zdHIpKQorICAgICAgICAgICAg cmV0dXJuCisKKyAgICAgICAgRXhwbG9yZXIuZXhwbG9yZV9leHByKGFyZ19z dHIsIHZhbHVlLCBGYWxzZSkKKworCitjbGFzcyBFeHBsb3JlVHlwZUNvbW1h bmQoZ2RiLkNvbW1hbmQpOiAgICAgICAgICAgIAorICAgICIiIkV4cGxvcmUg YSB0eXBlIG9yIHRoZSB0eXBlIG9mIGFuIGV4cHJlc3Npb24gdmFsaWQgaW4g dGhlIGN1cnJlbnQKKyAgICAgICBjb250ZXh0LgorCisgICAgICAgVXNhZ2U6 CisKKyAgICAgICAgIGV4cGxvcmUgdHlwZSBBUkcKKworICAgICAgICAgLSBB UkcgaXMgYSB2YWxpZCBleHByZXNzaW9uIG9yIGEgdHlwZSBuYW1lLgorICAg ICAgICAgLSBBdCBhbnkgc3RhZ2Ugb2YgZXhwbG9yYXRpb24sIGhpdCB0aGUg cmV0dXJuIGtleSAoaW5zdGVhZCBvZiBhCisgICAgICAgICAgIGNob2ljZSwg aWYgYW55KSB0byByZXR1cm4gdG8gdGhlIGVuY2xvc2luZyB0eXBlLiBFbnRl cmluZworICAgICAgICAgICBhbiBpbnZhbGlkIGlucHV0IHdpbGwgYWxzbyBy ZXN1bHQgaW4gc2ltaWxhciBiZWhhdmlvdXIuCisgICAgIiIiCisKKyAgICBk ZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHN1cGVyKEV4cGxvcmVUeXBl Q29tbWFuZCwgc2VsZikuX19pbml0X18oCisgICAgICAgICAgICBuYW1lID0g ImV4cGxvcmUgdHlwZSIsIGNvbW1hbmRfY2xhc3MgPSBnZGIuQ09NTUFORF9E QVRBKQorCisgICAgZGVmIGludm9rZShzZWxmLCBhcmdfc3RyLCBmcm9tX3R0 eSk6CisgICAgICAgIGlmIEV4cGxvcmVVdGlscy5jaGVja19hcmdzKCJleHBs b3JlIHR5cGUiLCBhcmdfc3RyKSA9PSBGYWxzZToKKyAgICAgICAgICAgIHJl dHVybgorCisgICAgICAgIGRhdGF0eXBlID0gRXhwbG9yZVV0aWxzLmdldF90 eXBlX2Zyb21fc3RyKGFyZ19zdHIpCisgICAgICAgIGlmIGRhdGF0eXBlIGlz IG5vdCBOb25lOgorICAgICAgICAgICAgRXhwbG9yZXIuZXhwbG9yZV90eXBl KGFyZ19zdHIsIGRhdGF0eXBlLCBGYWxzZSkKKyAgICAgICAgICAgIHJldHVy bgorCisgICAgICAgIHZhbHVlID0gRXhwbG9yZVV0aWxzLmdldF92YWx1ZV9m cm9tX3N0cihhcmdfc3RyKQorICAgICAgICBpZiB2YWx1ZSBpcyBub3QgTm9u ZToKKyAgICAgICAgICAgIHByaW50ICInJXMnIGlzIG9mIHR5cGUgJyVzJy4i ICUgKGFyZ19zdHIsIHN0cih2YWx1ZS50eXBlKSkKKyAgICAgICAgICAgIEV4 cGxvcmVyLmV4cGxvcmVfdHlwZShzdHIodmFsdWUudHlwZSksIHZhbHVlLnR5 cGUsIEZhbHNlKQorCisgICAgICAgIHJhaXNlIGdkYi5HZGJFcnJvcigoIicl cycgaXMgbm90IGEgdHlwZSBvciB2YWx1ZSBpbiB0aGUgY3VycmVudCAiCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbnRleHQuIiAlIGFyZ19z dHIpKQorCisKK0V4cGxvcmVyLmluaXRfZW52KCkKKworRXhwbG9yZUNvbW1h bmQoKQorRXhwbG9yZVZhbHVlQ29tbWFuZCgpCitFeHBsb3JlVHlwZUNvbW1h bmQoKQpkaWZmIC1ydXBOIHNyYy9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24v TWFrZWZpbGUuaW4gc3JjX2V4cGxvcmVfcHl0aG9uL2dkYi90ZXN0c3VpdGUv Z2RiLnB5dGhvbi9NYWtlZmlsZS5pbgotLS0gc3JjL2dkYi90ZXN0c3VpdGUv Z2RiLnB5dGhvbi9NYWtlZmlsZS5pbgkyMDExLTEyLTIzIDIyOjM2OjE2LjAw MDAwMDAwMCArMDUzMAorKysgc3JjX2V4cGxvcmVfcHl0aG9uL2dkYi90ZXN0 c3VpdGUvZ2RiLnB5dGhvbi9NYWtlZmlsZS5pbgkyMDEyLTAyLTE5IDE3OjUx OjI4Ljc4MzA1NTUyNSArMDUzMApAQCAtNSw3ICs1LDcgQEAgRVhFQ1VUQUJM RVMgPSBweS10eXBlIHB5LXZhbHVlIHB5LXByZXR0eQogCXB5LXN5bWJvbCBw eS1taSBweS1icmVha3BvaW50IHB5LWluZmVyaW9yIHB5LWluZnRocmVhZCBc CiAJcHktc2hhcmVkIHB5dGhvbiBsaWItdHlwZXMgcHktZXZlbnRzIHB5LWV2 dGhyZWFkcyBweS1mcmFtZSBcCiAJcHktbWkgcHktcHAtbWFpbnQgcHktcHJv Z3NwYWNlIHB5LXNlY3Rpb24tc2NyaXB0IHB5LW9iamZpbGUgXAotCXB5LWZp bmlzaC1icmVha3BvaW50IHB5LWZpbmlzaC1icmVha3BvaW50MgorCXB5LWZp bmlzaC1icmVha3BvaW50IHB5LWZpbmlzaC1icmVha3BvaW50MiBweS1leHBs b3JlCiAKIE1JU0NFTExBTkVPVVMgPSBweS1zaGFyZWQtc2wuc2wgcHktZXZl bnRzLXNobGliLnNvIHB5LWV2ZW50cy1zaGxpYi1ub2RlYnVnLnNvIAogCmRp ZmYgLXJ1cE4gc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1leHBs b3JlLmMgc3JjX2V4cGxvcmVfcHl0aG9uL2dkYi90ZXN0c3VpdGUvZ2RiLnB5 dGhvbi9weS1leHBsb3JlLmMKLS0tIHNyYy9nZGIvdGVzdHN1aXRlL2dkYi5w eXRob24vcHktZXhwbG9yZS5jCTE5NzAtMDEtMDEgMDU6MzA6MDAuMDAwMDAw MDAwICswNTMwCisrKyBzcmNfZXhwbG9yZV9weXRob24vZ2RiL3Rlc3RzdWl0 ZS9nZGIucHl0aG9uL3B5LWV4cGxvcmUuYwkyMDEyLTAyLTIwIDE4OjE3OjE4 LjUzNDgyODkwMSArMDUzMApAQCAtMCwwICsxLDgyIEBACisvKiBUaGlzIHRl c3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgorCisg ICBDb3B5cmlnaHQgMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu Yy4KKworICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAgIGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5CisgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorICAg KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgVGhp cyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZSB1c2VmdWwsCisgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZQorICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KKworICAgWW91IHNob3VsZCBoYXZlIHJlY2Vp dmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UK KyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgIDxo dHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyovCisKKyNkZWZpbmUg QVJSQVlfU0laRSAxMAorCitzdHJ1Y3QgU2ltcGxlU3RydWN0Cit7CisgIGlu dCBhOworICBkb3VibGUgZDsKK307CisKK3VuaW9uIFNpbXBsZVVuaW9uCit7 CisgIGludCBpOworICBjaGFyIGM7CisgIGZsb2F0IGY7CisgIGRvdWJsZSBk OworfTsKKwordHlwZWRlZiBzdHJ1Y3QgU2ltcGxlU3RydWN0IFNTOworCitz dHJ1Y3QgQ29tcGxleFN0cnVjdAoreworICBzdHJ1Y3QgU2ltcGxlU3RydWN0 IHM7CisgIHVuaW9uIFNpbXBsZVVuaW9uIHU7CisgIFNTIHNhW0FSUkFZX1NJ WkVdOworfTsKKwordW5pb24gQ29tcGxleFVuaW9uCit7CisgIFNTIHM7Cisg IHN0cnVjdCBTaW1wbGVTdHJ1Y3Qgc2FbQVJSQVlfU0laRV07Cit9OworCitp bnQKK21haW4gKHZvaWQpCit7CisgIHN0cnVjdCBTaW1wbGVTdHJ1Y3Qgc3M7 CisgIHN0cnVjdCBTaW1wbGVTdHJ1Y3QqIHNzX3B0ciA9ICZzczsKKyAgU1Mg c3NfdDsKKworICB1bmlvbiBTaW1wbGVVbmlvbiBzdTsKKyAgc3RydWN0IENv bXBsZXhTdHJ1Y3QgY3M7CisgIHN0cnVjdCBDb21wbGV4U3RydWN0KiBjc19w dHIgPSAmY3M7CisgIHVuaW9uIENvbXBsZXhVbmlvbiBjdTsKKyAgaW50IGk7 CisgIGRvdWJsZSBkYXJyYXlbNV0gPSB7MC4xLCAwLjIsIDAuMywgMC40LCAw LjV9OworICBkb3VibGUgKmRhcnJheV9yZWYgPSBkYXJyYXk7CisKKyAgc3Mu YSA9IDEwOworICBzcy5kID0gMTAwLjAxOworICBzc190ID0gc3M7CisgIAor ICBzdS5kID0gMTAwLjE7CisKKyAgY3MucyA9IHNzOworICBjcy51ID0gc3U7 CisgIGZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFOyBpKyspCisgICAgewor ICAgICAgY3Muc2FbaV0uYSA9IGk7CisgICAgICBjcy5zYVtpXS5kID0gMTAu MTAgKyBpOworICAgICAgY3Uuc2FbaV0uYSA9IGk7CisgICAgICBjdS5zYVtp XS5kID0gMTAwLjEwICsgaTsKKyAgICB9CisKKyAgcmV0dXJuIDA7IC8qIEJy ZWFrIGhlcmUuICovCit9CmRpZmYgLXJ1cE4gc3JjL2dkYi90ZXN0c3VpdGUv Z2RiLnB5dGhvbi9weS1leHBsb3JlLmV4cCBzcmNfZXhwbG9yZV9weXRob24v Z2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWV4cGxvcmUuZXhwCi0tLSBz cmMvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWV4cGxvcmUuZXhwCTE5 NzAtMDEtMDEgMDU6MzA6MDAuMDAwMDAwMDAwICswNTMwCisrKyBzcmNfZXhw bG9yZV9weXRob24vZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWV4cGxv cmUuZXhwCTIwMTItMDItMjYgMTc6NDI6NDQuNDYwNDk2Mzk1ICswNTMwCkBA IC0wLDAgKzEsNDY0IEBACisjIENvcHlyaWdodCAyMDEyIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgSW5jLgorCisjIFRoaXMgcHJvZ3JhbSBpcyBmcmVl IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5CisjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisjIHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExp Y2Vuc2UsIG9yCisjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp b24uCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisjIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjIFlvdSBzaG91bGQg aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlCisjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90 LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorCitzZXQg dGVzdGZpbGUgInB5LWV4cGxvcmUiCitzZXQgc3JjZmlsZSAke3Rlc3RmaWxl fS5jCitzZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZp bGV9CitpZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR7dGVzdGZpbGV9LmV4 cCAke3Rlc3RmaWxlfSAke3NyY2ZpbGV9XSB9IHsKKyAgICByZXR1cm4gLTEK K30KKworIyBTa2lwIGFsbCB0ZXN0cyBpZiBQeXRob24gc2NyaXB0aW5nIGlz IG5vdCBlbmFibGVkLgoraWYgeyBbc2tpcF9weXRob25fdGVzdHNdIH0geyBj b250aW51ZSB9CisKK3NldCBTUyAic3RydWN0IFNpbXBsZVN0cnVjdCIKK3Nl dCBTVSAidW5pb24gU2ltcGxlVW5pb24iCitzZXQgQ1MgInN0cnVjdCBDb21w bGV4U3RydWN0Igorc2V0IENVICJ1bmlvbiBDb21wbGV4VW5pb24iCitzZXQg ZW50ZXJfZmllbGRfbnVtYmVyX3Byb21wdCAge0VudGVyIHRoZSBmaWVsZCBu dW1iZXIgb2YgY2hvaWNlOiB9CitzZXQgcmV0dXJuX3RvX3BhcmVudF9wcm9t cHQge1ByZXNzIGVudGVyIHRvIHJldHVybiB0byBwYXJlbnQgdmFsdWU6IH0K K3NldCBhcnJheV9pbmRleF9wcm9tcHQge0VudGVyIHRoZSBpbmRleCB5b3Ug d2FudCB0byBleHBsb3JlIGluIC4qOiB9CisKK3Byb2MgY29tcG91bmRfZGVz Y3JpcHRpb24geyB2YWx1ZV9uYW1lIHR5cGVfZGVzYyB0eXBlX25hbWUgfSB7 CisgICAgcmV0dXJuICJUaGUgdmFsdWUgb2YgJyR2YWx1ZV9uYW1lJyBpcyBh ICR0eXBlX2Rlc2Mgb2YgdHlwZSAnJHR5cGVfbmFtZScgd2l0aCB0aGUgZm9s bG93aW5nIGZpZWxkczpcW1xyXG5cXSsiCit9CisKK3Byb2MgdHlwZWRlZl9k ZXNjcmlwdGlvbiB7IHZhbHVlX25hbWUgdHlwZWRlZl9uYW1lIHR5cGVfbmFt ZSB9IHsKKyAgICByZXR1cm4gIlRoZSB2YWx1ZSBvZiAnJHZhbHVlX25hbWUn IGlzIG9mIHR5cGUgJyR0eXBlZGVmX25hbWUnIHdoaWNoIGlzIGEgdHlwZWRl ZiBvZiB0eXBlICckdHlwZV9uYW1lJ1wuXFtcclxuXF0rIgorfQorCitwcm9j IHNjYWxhcl9kZXNjcmlwdGlvbiB7IHZhbHVlX25hbWUgdHlwZSB9IHsKKyAg ICByZXR1cm4gIickdmFsdWVfbmFtZScgaXMgYSBzY2FsYXIgdmFsdWUgb2Yg dHlwZSAnJHR5cGUnXC5cW1xyXG5cXSsiCit9CisKK3Byb2MgYXJyYXlfZGVz Y3JpcHRpb24geyB2YWx1ZV9uYW1lIHR5cGUgfSB7CisgICAgcmV0dXJuICIn JHZhbHVlX25hbWUnIGlzIGFuIGFycmF5IG9mIGVsZW1lbnRzIG9mIHR5cGUg JyR0eXBlJ1wuXFtcclxuXF0rIgorfQorCitwcm9jIHBvaW50ZXJfZGVzY3Jp cHRpb24geyB2YWx1ZV9uYW1lIHR5cGVfbmFtZSB9IHsKKyAgICBzZXQgdHlw ZV9kZXNjcmlwdGlvbiAiJyR2YWx1ZV9uYW1lJyBpcyBhIHBvaW50ZXIgdG8g YSB2YWx1ZSBvZiB0eXBlICckdHlwZV9uYW1lJ1wuXFtcclxuXF0rIgorICAg IHNldCBwcm9tcHQgIkRvIHlvdSB3YW50IHRvIGV4cGxvcmUgaXQgYXMgYW4g YXJyYXkgb3IgYSBzaW5nbGUgdmFsdWUgcG9pbnRlciBcW1xbXF1hL3NcW1xd XF0gOiAiIAorICAgIHJldHVybiAiJHR5cGVfZGVzY3JpcHRpb24kcHJvbXB0 IgorfQorCitwcm9jIGZpZWxkX3ZhbHVlcyB7IGFyZ3MgfSB7CisgICAgc2V0 IHJlc3VsdCAiIgorICAgIGZvcmVhY2ggZmllbGQgJGFyZ3MgeworICAgICAg ICBzZXQgcmVzdWx0ICIkcmVzdWx0XFsgXF0qJGZpZWxkIFxbXC5cXVxbXC5c XSBcW1woXF1WYWx1ZSBvZiB0eXBlIC4qXFtcKVxdXFtcclxuXF0rIgorICAg IH0KKyAgICByZXR1cm4gJHJlc3VsdAorfQorCitwcm9jIGZpZWxkX2Nob2lj ZXMgeyBhcmdzIH0geworICAgIHNldCByZXN1bHQgIiIKKyAgICBzZXQgZmll bGRfbnVtIDAKKyAgICBmb3JlYWNoIGZpZWxkICRhcmdzIHsKKyAgICAgICAg c2V0IHJlc3VsdCAiJHJlc3VsdCRmaWVsZFxbIFxdKz1cWyBcXSs8RW50ZXIg JGZpZWxkX251bSB0byBleHBsb3JlIHRoaXMgZmllbGQgb2YgdHlwZSAuKiIK KyAgICAgICAgaW5jciBmaWVsZF9udW0KKyAgICB9CisgICAgcmV0dXJuICRy ZXN1bHQKK30KKworcHJvYyBzY2FsYXJfdmFsdWUgeyB2YWx1ZV9uYW1lIHZh bHVlIH0geworICAgIHJldHVybiAiJHZhbHVlX25hbWUgPSAkdmFsdWVcW3Jc blxdKyIKK30KKworc2V0IFNTX2ZpZWxkcyBbZmllbGRfdmFsdWVzIHthID0g MTB9IHtkID0gMTAwWy5dLip9XQorCitpZiAhW3J1bnRvX21haW5dIHsKKyAg IHJldHVybiAtMQorfQorCitnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5l X251bWJlciAiQnJlYWsgaGVyZS4iXQorZ2RiX2NvbnRpbnVlX3RvX2JyZWFr cG9pbnQgIkJyZWFrIGhlcmUiICIuKkJyZWFrIGhlcmUuKiIKKworIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIworIyBWYWx1ZSBleHBsb3JhdGlvbiB0ZXN0 cworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitnZGJfdGVzdCAiZXhw bG9yZSBpIiAiW3NjYWxhcl9kZXNjcmlwdGlvbiB7aX0ge2ludH1dLippID0g LioiCitnZGJfdGVzdCAiZXhwbG9yZSBzcyIgIltjb21wb3VuZF9kZXNjcmlw dGlvbiB7c3N9IHtzdHJ1Y3QvY2xhc3N9ICRTU10uKiRTU19maWVsZHMiCitn ZGJfdGVzdCAiZXhwbG9yZSAqc3NfcHRyIiAiW2NvbXBvdW5kX2Rlc2NyaXB0 aW9uIHtcKnNzX3B0cn0ge3N0cnVjdC9jbGFzc30gJFNTXS4qJFNTX2ZpZWxk cyIKK2dkYl90ZXN0ICJleHBsb3JlIHNzX3QiICJbdHlwZWRlZl9kZXNjcmlw dGlvbiB7c3NfdH0ge1NTfSAkU1NdLipbY29tcG91bmRfZGVzY3JpcHRpb24g e3NzX3R9IHtzdHJ1Y3QvY2xhc3N9ICRTU10uKiRTU19maWVsZHMiCisKK2dk Yl90ZXN0X211bHRpcGxlICJleHBsb3JlIHNzX3B0ciIgIiIgeworICAgIC1y ZSAiW3BvaW50ZXJfZGVzY3JpcHRpb24ge3NzX3B0cn0gJFNTXS4qIiB7Cisg ICAgICAgIHBhc3MgImV4cGxvcmUgc3NfcHRyIgorICAgICAgICBnZGJfdGVz dF9tdWx0aXBsZSAicyIgImV4cGxvcmVfYXNfc2luZ2xlX3ZhbHVlX3BvaW50 ZXIiIHsKKyAgICAgICAgICAgIC1yZSAiJFNTX2ZpZWxkcyIgeworICAgICAg ICAgICAgICAgIHBhc3MgImV4cGxvcmUgc3NfcHRyIGFzIHNpbmdsZSB2YWx1 ZSBwb2ludGVyIgorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQor fQorCitnZGJfdGVzdF9tdWx0aXBsZSAiZXhwbG9yZSBkYXJyYXlfcmVmIiAi IiB7CisgICAgLXJlICJbcG9pbnRlcl9kZXNjcmlwdGlvbiB7ZGFycmF5X3Jl Zn0ge2RvdWJsZX1dLioiIHsKKyAgICAgICAgcGFzcyAiZXhwbG9yZSBkYXJy YXlfcmVmIgorICAgICAgICBnZGJfdGVzdF9tdWx0aXBsZSAiYSIgImV4cGxv cmVfYXNfYXJyYXkiIHsKKyAgICAgICAgICAgIC1yZSAiLipFbnRlciB0aGUg aW5kZXggeW91IHdhbnQgdG8gZXhwbG9yZSBpbiAnZGFycmF5X3JlZic6Lioi ICB7CisgICAgICAgICAgICAgICAgcGFzcyAiZXhwbG9yZV9hc19hcnJheSIK KyAgICAgICAgICAgICAgICBnZGJfdGVzdF9tdWx0aXBsZSAiMiIgImV4cGxv cmVfYXNfYXJyYXlfaW5kZXhfMiIgeworICAgICAgICAgICAgICAgICAgICAt cmUgIi4qJ2RhcnJheV9yZWZcXFxbMlxcXF0nIGlzIGEgc2NhbGFyIHZhbHVl IG9mIHR5cGUgJ2RvdWJsZSdcLi4qZGFycmF5X3JlZlxcXFsyXFxcXSA9IDAu KiIgeworICAgICAgICAgICAgICAgICAgICAgICAgcGFzcyAiZXhwbG9yZV9h c19hcnJheV9pbmRleF8yIgorICAgICAgICAgICAgICAgICAgICAgICAgZ2Ri X3Rlc3RfbXVsdGlwbGUgIlwwIiAiZW5kIGV4cGxvcmVfYXNfYXJyYXlfaW5k ZXhfMiIgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1yZSAiLipS ZXR1cm5pbmcgdG8gcGFyZW50IHZhbHVlLipFbnRlciB0aGUgaW5kZXggeW91 IHdhbnQgdG8gZXhwbG9yZSBpbiAnZGFycmF5X3JlZic6LioiIHsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzcyAiZW5kIGV4cGxvcmVf YXNfYXJyYXlfaW5kZXhfMiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZ2RiX3Rlc3RfbXVsdGlwbGUgIlwwIiAiZW5kIGV4cGxvcmVfYXNf YXJyYXkiIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IC1yZSAiXFtcblxyXF0rIiB7CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcGFzcyAiZW5kIGV4cGxvcmVfYXNfYXJyYXkiCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAg ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IAorICAgICAg ICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCitnZGJfdGVzdF9tdWx0 aXBsZSAiZXhwbG9yZSBzdSIgIiIgeworICAgIC1yZSAiW2NvbXBvdW5kX2Rl c2NyaXB0aW9uIHtzdX0ge3VuaW9ufSB7dW5pb24gU2ltcGxlVW5pb259XS4q W2ZpZWxkX2Nob2ljZXMge2l9IHtjfSB7Zn0ge2R9XS4qJGVudGVyX2ZpZWxk X251bWJlcl9wcm9tcHQiIHsKKyAgICAgICAgcGFzcyAiZXhwbG9yZSBzdSIK KyAgICAgICAgZ2RiX3Rlc3RfbXVsdGlwbGUgIjMiICJleHBsb3JlIHN1LmQi IHsKKyAgICAgICAgICAgIC1yZSAiW3NjYWxhcl9kZXNjcmlwdGlvbiB7c3Uu ZH0ge2RvdWJsZX1dLipbc2NhbGFyX3ZhbHVlIHtzdS5kfSB7MTAwWy5dLip9 XS4qJHJldHVybl90b19wYXJlbnRfcHJvbXB0IiB7CisgICAgICAgICAgICAg ICAgcGFzcyAiZXhwbG9yZSBzdS5kIgorICAgICAgICAgICAgICAgIGdkYl90 ZXN0X211bHRpcGxlICIgIiAiZW5kIHN1LmQgZXhwbG9yYXRpb24iIHsKKyAg ICAgICAgICAgICAgICAgICAgLXJlICIuKltjb21wb3VuZF9kZXNjcmlwdGlv biB7c3V9IHt1bmlvbn0ge3VuaW9uIFNpbXBsZVVuaW9ufV0uKltmaWVsZF9j aG9pY2VzIHtpfSB7Y30ge2Z9IHtkfV0uKiRlbnRlcl9maWVsZF9udW1iZXJf cHJvbXB0IiB7CisgICAgICAgICAgICAgICAgICAgICAgICBwYXNzICJlbmQg c3UuZCBleHBsb3JhdGlvbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIGdk Yl90ZXN0X211bHRpcGxlICJcMCIgImVuZCBzdSBleHBsb3JhdGlvbiIgewor ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1yZSAiJGdkYl9wcm9tcHQi IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzcyAiZW5k IHN1IGV4cGxvcmF0aW9uIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg IH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg ICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAg ICAgICAgfQorICAgIH0KK30KKworZ2RiX3Rlc3RfbXVsdGlwbGUgImV4cGxv cmUgY3MiICIiIHsKKyAgICAtcmUgIltjb21wb3VuZF9kZXNjcmlwdGlvbiB7 Y3N9IHtzdHJ1Y3QvY2xhc3N9IHtzdHJ1Y3QgQ29tcGxleFN0cnVjdH1dLipb ZmllbGRfY2hvaWNlcyB7c30ge3V9IHtzYX1dLiokZW50ZXJfZmllbGRfbnVt YmVyX3Byb21wdCIgeworICAgICAgICBwYXNzICJleHBsb3JlIGNzIgorICAg ICAgICBnZGJfdGVzdF9tdWx0aXBsZSAiMCIgImV4cGxvcmUgY3MucyIgewor ICAgICAgICAgICAgLXJlICJbY29tcG91bmRfZGVzY3JpcHRpb24ge2NzLnN9 IHtzdHJ1Y3QvY2xhc3N9IHtzdHJ1Y3QgU2ltcGxlU3RydWN0fV0uKltmaWVs ZF92YWx1ZXMge2EgPSAxMH0ge2QgPSAxMDBbLl0uKn1dLiokcmV0dXJuX3Rv X3BhcmVudF9wcm9tcHQiIHsKKyAgICAgICAgICAgICAgICBwYXNzICJleHBs b3JlIGNzLnMiCisgICAgICAgICAgICAgICAgZ2RiX3Rlc3RfbXVsdGlwbGUg IiAiICJlbmQgY3MucyBleHBsb3JhdGlvbiIgeworICAgICAgICAgICAgICAg ICAgICAtcmUgIi4qJGVudGVyX2ZpZWxkX251bWJlcl9wcm9tcHQiIHsKKyAg ICAgICAgICAgICAgICAgICAgICAgIHBhc3MgImVuZCBjcy5zIGV4cGxvcmF0 aW9uIgorICAgICAgICAgICAgICAgICAgICAgICAgZ2RiX3Rlc3RfbXVsdGlw bGUgIlwwIiAiZW5kIGNzIGV4cGxvcmF0aW9uIiB7CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLXJlICIkZ2RiX3Byb21wdCIgeworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBwYXNzICJlbmQgY3MgZXhwbG9yYXRp b24iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAg ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg fQorfQorCitnZGJfdGVzdF9tdWx0aXBsZSAiZXhwbG9yZSBjdSIgIiIgewor ICAgIC1yZSAiW2NvbXBvdW5kX2Rlc2NyaXB0aW9uIHtjdX0ge3VuaW9ufSB7 dW5pb24gQ29tcGxleFVuaW9ufV0uKltmaWVsZF9jaG9pY2VzIHtzfSB7c2F9 XS4qJGVudGVyX2ZpZWxkX251bWJlcl9wcm9tcHQiIHsKKyAgICAgICAgcGFz cyAiZXhwbG9yZSBjdSIKKyAgICAgICAgZ2RiX3Rlc3RfbXVsdGlwbGUgIjEi ICJleHBsb3JlIGN1LnNhIiB7CisgICAgICAgICAgICAtcmUgIi4qW2FycmF5 X2Rlc2NyaXB0aW9uIHtjdS5zYX0gJFNTXS4qJGFycmF5X2luZGV4X3Byb21w dCIgeworICAgICAgICAgICAgICAgIHBhc3MgImV4cGxvcmUgY3Uuc2EiCisg ICAgICAgICAgICAgICAgZ2RiX3Rlc3RfbXVsdGlwbGUgIjAiICJleHBsb3Jl IGN1LnNhXFswXF0iIHsKKyAgICAgICAgICAgICAgICAgICAgLXJlICJbY29t cG91bmRfZGVzY3JpcHRpb24ge1woY3Uuc2FcKVxbMFxdfSB7c3RydWN0L2Ns YXNzfSB7c3RydWN0IFNpbXBsZVN0cnVjdH1dLipbZmllbGRfdmFsdWVzIHth ID0gMH0ge2QgPSAxMDBbLl0uKn1dLiokcmV0dXJuX3RvX3BhcmVudF9wcm9t cHQiIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MgImV4cGxvcmUg Y3Uuc2FcWzBcXSIKKyAgICAgICAgICAgICAgICAgICAgICAgIGdkYl90ZXN0 X211bHRpcGxlICJcMCIgImVuZCBjdS5zYVxbMFxdIGV4cGxvcmF0aW9uIiB7 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLXJlICJbYXJyYXlfZGVz Y3JpcHRpb24ge2N1LnNhfSAkU1NdJGFycmF5X2luZGV4X3Byb21wdCIgewor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzICJlbmQgY3Uu c2FcWzBcXSBleHBsb3JhdGlvbiIKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg ICAgZ2RiX3Rlc3RfbXVsdGlwbGUgIlwwIiAiZW5kIGN1LnNhIGV4cGxvcmF0 aW9uIiB7CisgICAgICAgICAgICAgICAgICAgIC1yZSAiLiokZW50ZXJfZmll bGRfbnVtYmVyX3Byb21wdCIgeworICAgICAgICAgICAgICAgICAgICAgICAg cGFzcyAiZW5kIGN1LnNhIGV4cGxvcmF0aW9uIgorICAgICAgICAgICAgICAg ICAgICAgICAgZ2RiX3Rlc3RfbXVsdGlwbGUgIlwwIiAiZW5kIGN1IGV4cGxv cmF0aW9uIiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLXJlICIk Z2RiX3Byb21wdCIgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBwYXNzICJlbmQgY3UgZXhwbG9yYXRpb24iCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAg ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAg ICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCisjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKKyMgVHlwZSBleHBsb3JhdGlvbiB0ZXN0cworIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjCisKK3Byb2Mgc2NhbGFyX3R5cGVfZGVjc3Jp cHRpb24ge3R5cGV9IHsKKyAgICByZXR1cm4gIickdHlwZScgaXMgYSBzY2Fs YXIgdHlwZVwuIgorfQorCitwcm9jIGNoaWxkX3NjYWxhcl90eXBlX2Rlc2Ny aXB0aW9uIHtwYXRoIHR5cGV9IHsKKyAgICByZXR1cm4gIiRwYXRoIGlzIG9m IGEgc2NhbGFyIHR5cGUgJyR0eXBlJ1wuIgorfQorCitwcm9jIGNvbXBvdW5k X3R5cGVfZGVzY3JpcHRpb24geyB0eXBlX25hbWUgdHlwZV9kZXNjIH0gewor ICAgIHJldHVybiAiJyR0eXBlX25hbWUnIGlzIGEgJHR5cGVfZGVzYyB3aXRo IHRoZSBmb2xsb3dpbmcgZmllbGRzOiIKK30KKworcHJvYyBjaGlsZF9jb21w b3VuZF90eXBlX2Rlc2NyaXB0aW9uIHsgcGF0aCB0eXBlX25hbWUgdHlwZV9k ZXNjIH0geworICAgIHJldHVybiAiJHBhdGggaXMgYSAkdHlwZV9kZXNjIG9m IHR5cGUgJyR0eXBlX25hbWUnIHdpdGggdGhlIGZvbGxvd2luZyBmaWVsZHM6 IgorfQorCitwcm9jIGNoaWxkX2FycmF5X3R5cGVfZGVzY3JpcHRpb24geyBw YXRoIHRhcmdldF90eXBlX25hbWUgfSB7CisgICAgcmV0dXJuICIkcGF0aCBp cyBhbiBhcnJheSB0eXBlIHdpdGggZWxlbWVudHMgb2YgdHlwZSAnJHRhcmdl dF90eXBlX25hbWUnXC4iCit9CisKK3Byb2MgdHlwZWRlZl90eXBlX2Rlc2Ny aXB0aW9uIHsgdHlwZV9uYW1lIHRhcmdldF9uYW1lIH0geworICAgIHJldHVy biAiVGhlIHR5cGUgJyR0eXBlX25hbWUnIGlzIGEgdHlwZWRlZiBvZiB0eXBl ICckdGFyZ2V0X25hbWUnXC4iCit9CisKK3NldCBTU19maWVsZHNfdHlwZXMg W2ZpZWxkX2Nob2ljZXMge2F9IHtkfV0KK3NldCBTVV9maWVsZHNfdHlwZXMg W2ZpZWxkX2Nob2ljZXMge2l9IHtjfSB7Zn0ge2R9XQorc2V0IENTX2ZpZWxk c190eXBlcyBbZmllbGRfY2hvaWNlcyB7c30ge3V9IHtzYX1dCitzZXQgQ1Vf ZmllbGRzX3R5cGVzIFtmaWVsZF9jaG9pY2VzIHtzfSB7c2F9XQorCitzZXQg Q1NfZmllbGRfMCAiZmllbGQgJ3MnIG9mICdzdHJ1Y3QgQ29tcGxleFN0cnVj dCciCitzZXQgQ1NfZmllbGRfMSAiZmllbGQgJ3UnIG9mICdzdHJ1Y3QgQ29t cGxleFN0cnVjdCciCitzZXQgQ1NfZmllbGRfMiAiZmllbGQgJ3NhJyBvZiAn c3RydWN0IENvbXBsZXhTdHJ1Y3QnIgorc2V0IENTX2ZpZWxkXzJfYXJyYXlf ZWxlbWVudCAiYW4gYXJyYXkgZWxlbWVudCBvZiAkQ1NfZmllbGRfMiIKKwor c2V0IENVX2ZpZWxkXzAgImZpZWxkICdzJyBvZiAndW5pb24gQ29tcGxleFVu aW9uJyIKK3NldCBDVV9maWVsZF8xICJmaWVsZCAnc2EnIG9mICd1bmlvbiBD b21wbGV4VW5pb24nIgorc2V0IENVX2ZpZWxkXzFfYXJyYXlfZWxlbWVudCAi YW4gYXJyYXkgZWxlbWVudCBvZiAkQ1VfZmllbGRfMSIKKworZ2RiX3Rlc3Qg ImV4cGxvcmUgaW50IiAiLipbc2NhbGFyX3R5cGVfZGVjc3JpcHRpb24ge2lu dH1dLioiCisKK2dkYl90ZXN0X211bHRpcGxlICJleHBsb3JlIHN0cnVjdCBT aW1wbGVTdHJ1Y3QiICIiIHsKKyAgICAtcmUgIi4qW2NvbXBvdW5kX3R5cGVf ZGVzY3JpcHRpb24gJFNTIHtzdHJ1Y3QvY2xhc3N9XS4qJFNTX2ZpZWxkc190 eXBlcy4qIiB7CisgICAgICAgIHBhc3MgImV4cGxvcmUgc3RydWN0IFNpbXBs ZVN0cnVjdCIKKyAgICAgICAgZ2RiX3Rlc3RfbXVsdGlwbGUgIjAiICJleHBs b3JlIHR5cGUgc3RydWN0IFNpbXBsZVN0cnVjdCBmZWlsZCAwIiB7CisgICAg ICAgICAgICAtcmUgIi4qW2NoaWxkX3NjYWxhcl90eXBlX2Rlc2NyaXB0aW9u IHtmaWVsZCAnYScgb2YgJ3N0cnVjdCBTaW1wbGVTdHJ1Y3QnfSB7aW50fV0u KiIgeworICAgICAgICAgICAgICAgIHBhc3MgImV4cGxvcmUgdHlwZSBzdHJ1 Y3QgU2ltcGxlU3RydWN0IGZlaWxkIDAiCisgICAgICAgICAgICAgICAgZ2Ri X3Rlc3RfbXVsdGlwbGUgIlwwIiAicmV0dXJuIHRvIHN0cnVjdCBTaW1wbGVT dHJ1Y3QgZnJvbSBmaWVsZCAwIiB7CisgICAgICAgICAgICAgICAgICAgIC1y ZSAiLipbY29tcG91bmRfdHlwZV9kZXNjcmlwdGlvbiAkU1Mge3N0cnVjdC9j bGFzc31dLiokU1NfZmllbGRzX3R5cGVzLioiIHsKKyAgICAgICAgICAgICAg ICAgICAgICAgIHBhc3MgInJldHVybiB0byBzdHJ1Y3QgU2ltcGxlU3RydWN0 IGZyb20gZmllbGQgMCIKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAg ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAg ICBnZGJfdGVzdF9tdWx0aXBsZSAiMSIgImV4cGxvcmUgdHlwZSBzdHJ1Y3Qg U2ltcGxlU3RydWN0IGZlaWxkIDEiIHsKKyAgICAgICAgICAgIC1yZSAiLipb Y2hpbGRfc2NhbGFyX3R5cGVfZGVzY3JpcHRpb24ge2ZpZWxkICdkJyBvZiAn c3RydWN0IFNpbXBsZVN0cnVjdCd9IHtkb3VibGV9XS4qIiB7CisgICAgICAg ICAgICAgICAgcGFzcyAiZXhwbG9yZSB0eXBlIHN0cnVjdCBTaW1wbGVTdHJ1 Y3QgZmVpbGQgMSIKKyAgICAgICAgICAgICAgICBnZGJfdGVzdF9tdWx0aXBs ZSAiXDAiICJyZXR1cm4gdG8gc3RydWN0IFNpbXBsZVN0cnVjdCBmcm9tIGZp ZWxkIDEiIHsKKyAgICAgICAgICAgICAgICAgICAgLXJlICIuKltjb21wb3Vu ZF90eXBlX2Rlc2NyaXB0aW9uICRTUyB7c3RydWN0L2NsYXNzfV0uKiRTU19m aWVsZHNfdHlwZXMuKiIgeworICAgICAgICAgICAgICAgICAgICAgICAgcGFz cyAicmV0dXJuIHRvIHN0cnVjdCBTaW1wbGVTdHJ1Y3QgZnJvbSBmaWVsZCAx IgorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQor ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGdkYl90ZXN0X211 bHRpcGxlICJcMCIgInJldHVybiB0byBHREIgcHJvbXB0IGZyb20gc3RydWN0 IFNpbXBsZVN0cnVjdCIgeworICAgICAgICAgICAgLXJlICIkZ2RiX3Byb21w dCIgeworICAgICAgICAgICAgICAgIHBhc3MgInJldHVybiB0byBHREIgcHJv bXB0IGZyb20gc3RydWN0IFNpbXBsZVN0cnVjdCIKKyAgICAgICAgICAgIH0K KyAgICAgICAgfQorICAgIH0KK30KKworZ2RiX3Rlc3RfbXVsdGlwbGUgImV4 cGxvcmUgdW5pb24gU2ltcGxlVW5pb24iICIiIHsKKyAgLXJlICIuKltjb21w b3VuZF90eXBlX2Rlc2NyaXB0aW9uICRTVSB7dW5pb259XS4qJFNVX2ZpZWxk c190eXBlcy4qIiB7CisgICAgICBwYXNzICJleHBsb3JlIHVuaW9uIFNpbXBs ZVVuaW9uIgorICAgICAgICBnZGJfdGVzdF9tdWx0aXBsZSAiMCIgImV4cGxv cmUgdHlwZSB1bmlvbiBTaW1wbGVVbmlvbiBmZWlsZCAwIiB7CisgICAgICAg ICAgICAtcmUgIi4qW2NoaWxkX3NjYWxhcl90eXBlX2Rlc2NyaXB0aW9uIHtm aWVsZCAnaScgb2YgJ3VuaW9uIFNpbXBsZVVuaW9uJ30ge2ludH1dLioiIHsK KyAgICAgICAgICAgICAgICBwYXNzICJleHBsb3JlIHR5cGUgdW5pb24gU2lt cGxlVW5pb24gZmVpbGQgMCIKKyAgICAgICAgICAgICAgICBnZGJfdGVzdF9t dWx0aXBsZSAiXDAiICJyZXR1cm4gdG8gdW5pb24gU2ltcGxlVW5pb24gZnJv bSBmaWVsZCAwIiB7CisgICAgICAgICAgICAgICAgICAgIC1yZSAiLipbY29t cG91bmRfdHlwZV9kZXNjcmlwdGlvbiAkU1Uge3VuaW9ufV0uKiRTVV9maWVs ZHNfdHlwZXMuKiIgeworICAgICAgICAgICAgICAgICAgICAgICAgcGFzcyAi cmV0dXJuIHRvIHVuaW9uIFNpbXBsZVVuaW9uIGZyb20gZmllbGQgMCIKKyAg ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAg ICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBnZGJfdGVzdF9tdWx0aXBs ZSAiMSIgImV4cGxvcmUgdHlwZSB1bmlvbiBTaW1wbGVVbmlvbiBmZWlsZCAx IiB7CisgICAgICAgICAgICAtcmUgIi4qW2NoaWxkX3NjYWxhcl90eXBlX2Rl c2NyaXB0aW9uIHtmaWVsZCAnYycgb2YgJ3VuaW9uIFNpbXBsZVVuaW9uJ30g e2NoYXJ9XS4qIiB7CisgICAgICAgICAgICAgICAgcGFzcyAiZXhwbG9yZSB0 eXBlIHVuaW9uIFNpbXBsZVVuaW9uIGZlaWxkIDEiCisgICAgICAgICAgICAg ICAgZ2RiX3Rlc3RfbXVsdGlwbGUgIlwwIiAicmV0dXJuIHRvIHVuaW9uIFNp bXBsZVVuaW9uIGZyb20gZmllbGQgMSIgeworICAgICAgICAgICAgICAgICAg ICAtcmUgIi4qW2NvbXBvdW5kX3R5cGVfZGVzY3JpcHRpb24gJFNVIHt1bmlv bn1dLiokU1VfZmllbGRzX3R5cGVzLioiIHsKKyAgICAgICAgICAgICAgICAg ICAgICAgIHBhc3MgInJldHVybiB0byB1bmlvbiBTaW1wbGVVbmlvbiBmcm9t IGZpZWxkIDEiCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg ICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZ2Ri X3Rlc3RfbXVsdGlwbGUgIjIiICJleHBsb3JlIHR5cGUgdW5pb24gU2ltcGxl VW5pb24gZmVpbGQgMiIgeworICAgICAgICAgICAgLXJlICIuKltjaGlsZF9z Y2FsYXJfdHlwZV9kZXNjcmlwdGlvbiB7ZmllbGQgJ2YnIG9mICd1bmlvbiBT aW1wbGVVbmlvbid9IHtmbG9hdH1dLioiIHsKKyAgICAgICAgICAgICAgICBw YXNzICJleHBsb3JlIHR5cGUgdW5pb24gU2ltcGxlVW5pb24gZmVpbGQgMiIK KyAgICAgICAgICAgICAgICBnZGJfdGVzdF9tdWx0aXBsZSAiXDAiICJyZXR1 cm4gdG8gdW5pb24gU2ltcGxlVW5pb24gZnJvbSBmaWVsZCAyIiB7CisgICAg ICAgICAgICAgICAgICAgIC1yZSAiLipbY29tcG91bmRfdHlwZV9kZXNjcmlw dGlvbiAkU1Uge3VuaW9ufV0uKiRTVV9maWVsZHNfdHlwZXMuKiIgeworICAg ICAgICAgICAgICAgICAgICAgICAgcGFzcyAicmV0dXJuIHRvIHVuaW9uIFNp bXBsZVVuaW9uIGZyb20gZmllbGQgMiIKKyAgICAgICAgICAgICAgICAgICAg fQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAg fQorICAgICAgICBnZGJfdGVzdF9tdWx0aXBsZSAiMyIgImV4cGxvcmUgdHlw ZSB1bmlvbiBTaW1wbGVVbmlvbiBmZWlsZCAzIiB7CisgICAgICAgICAgICAt cmUgIi4qW2NoaWxkX3NjYWxhcl90eXBlX2Rlc2NyaXB0aW9uIHtmaWVsZCAn ZCcgb2YgJ3VuaW9uIFNpbXBsZVVuaW9uJ30ge2RvdWJsZX1dLioiIHsKKyAg ICAgICAgICAgICAgICBwYXNzICJleHBsb3JlIHR5cGUgdW5pb24gU2ltcGxl VW5pb24gZmVpbGQgMyIKKyAgICAgICAgICAgICAgICBnZGJfdGVzdF9tdWx0 aXBsZSAiXDAiICJyZXR1cm4gdG8gdW5pb24gU2ltcGxlVW5pb24gZnJvbSBm aWVsZCAzIiB7CisgICAgICAgICAgICAgICAgICAgIC1yZSAiLipbY29tcG91 bmRfdHlwZV9kZXNjcmlwdGlvbiAkU1Uge3VuaW9ufV0uKiRTVV9maWVsZHNf dHlwZXMuKiIgeworICAgICAgICAgICAgICAgICAgICAgICAgcGFzcyAicmV0 dXJuIHRvIHVuaW9uIFNpbXBsZVVuaW9uIGZyb20gZmllbGQgMyIKKyAgICAg ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAg ICAgIH0KKyAgICAgICAgfQorICAgICAgICBnZGJfdGVzdF9tdWx0aXBsZSAi XDAiICJyZXR1cm4gdG8gR0RCIHByb21wdCBmcm9tIHVuaW9uIFNpbXBsZVVu aW9uIiB7CisgICAgICAgICAgICAtcmUgIiRnZGJfcHJvbXB0IiB7CisgICAg ICAgICAgICAgICAgcGFzcyAicmV0dXJuIHRvIEdEQiBwcm9tcHQgZnJvbSB1 bmlvbiBTaW1wbGVVbmlvbiIKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor ICB9Cit9CisKK2dkYl90ZXN0X211bHRpcGxlICJleHBsb3JlIFNTIiAiIiB7 CisgICAgLXJlICIuKlt0eXBlZGVmX3R5cGVfZGVzY3JpcHRpb24ge1NTfSAk U1NdLipbY29tcG91bmRfdHlwZV9kZXNjcmlwdGlvbiB7U1N9IHtzdHJ1Y3Qv Y2xhc3N9XS4qJFNTX2ZpZWxkc190eXBlcy4qIiB7CisgICAgICAgIHBhc3Mg ImV4cGxvcmUgU1MiCisgICAgICAgIGdkYl90ZXN0X211bHRpcGxlICIwIiAi ZXhwbG9yZSB0eXBlIFNTIGZlaWxkIDAiIHsKKyAgICAgICAgICAgIC1yZSAi LipbY2hpbGRfc2NhbGFyX3R5cGVfZGVzY3JpcHRpb24ge2ZpZWxkICdhJyBv ZiAnU1MnfSB7aW50fV0uKiIgeworICAgICAgICAgICAgICAgIHBhc3MgImV4 cGxvcmUgdHlwZSBTUyBmZWlsZCAwIgorICAgICAgICAgICAgICAgIGdkYl90 ZXN0X211bHRpcGxlICJcMCIgInJldHVybiB0byBTUyBmcm9tIGZpZWxkIDAi IHsKKyAgICAgICAgICAgICAgICAgICAgLXJlICIuKltjb21wb3VuZF90eXBl X2Rlc2NyaXB0aW9uIHtTU30ge3N0cnVjdC9jbGFzc31dLiokU1NfZmllbGRz X3R5cGVzLioiIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MgInJl dHVybiB0byBTUyBmcm9tIGZpZWxkIDAiCisgICAgICAgICAgICAgICAgICAg IH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAg IH0KKyAgICAgICAgZ2RiX3Rlc3RfbXVsdGlwbGUgIjEiICJleHBsb3JlIHR5 cGUgU1MgZmVpbGQgMSIgeworICAgICAgICAgICAgLXJlICIuKltjaGlsZF9z Y2FsYXJfdHlwZV9kZXNjcmlwdGlvbiB7ZmllbGQgJ2QnIG9mICdTUyd9IHtk b3VibGV9XS4qIiB7CisgICAgICAgICAgICAgICAgcGFzcyAiZXhwbG9yZSB0 eXBlIFNTIGZlaWxkIDEiCisgICAgICAgICAgICAgICAgZ2RiX3Rlc3RfbXVs dGlwbGUgIlwwIiAicmV0dXJuIHRvIHN0cnVjdCBTaW1wbGVTdHJ1Y3QgZnJv bSBmaWVsZCAxIiB7CisgICAgICAgICAgICAgICAgICAgIC1yZSAiLipbY29t cG91bmRfdHlwZV9kZXNjcmlwdGlvbiB7U1N9IHtzdHJ1Y3QvY2xhc3N9XS4q JFNTX2ZpZWxkc190eXBlcy4qIiB7CisgICAgICAgICAgICAgICAgICAgICAg ICBwYXNzICJyZXR1cm4gdG8gU1MgZmllbGQgMSIKKyAgICAgICAgICAgICAg ICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAg ICAgICAgfQorICAgICAgICBnZGJfdGVzdF9tdWx0aXBsZSAiXDAiICJyZXR1 cm4gdG8gR0RCIHByb21wdCBmcm9tIFNTIiB7CisgICAgICAgICAgICAtcmUg IiRnZGJfcHJvbXB0IiB7CisgICAgICAgICAgICAgICAgcGFzcyAicmV0dXJu IHRvIEdEQiBwcm9tcHQgZnJvbSBTUyIKKyAgICAgICAgICAgIH0KKyAgICAg ICAgfQorICAgIH0KK30KKworZ2RiX3Rlc3RfbXVsdGlwbGUgImV4cGxvcmUg dHlwZSBzdHJ1Y3QgQ29tcGxleFN0cnVjdCIgIiIgeworICAgIC1yZSAiLipb Y29tcG91bmRfdHlwZV9kZXNjcmlwdGlvbiAkQ1Mge3N0cnVjdC9jbGFzc31d LiokQ1NfZmllbGRzX3R5cGVzLioiIHsKKyAgICAgICAgcGFzcyAiZXhwbG9y ZSB0eXBlIHN0cnVjdCBDb21wbGV4U3RydWN0IgorICAgICAgICBnZGJfdGVz dF9tdWx0aXBsZSAiMCIgImV4cGxvcmUgdHlwZSBzdHJ1Y3QgQ29tcGxleFN0 cnVjdCBmaWVsZCAwIiB7CisgICAgICAgICAgICAtcmUgIi4qW2NoaWxkX2Nv bXBvdW5kX3R5cGVfZGVzY3JpcHRpb24gJENTX2ZpZWxkXzAgJFNTIHtzdHJ1 Y3QvY2xhc3N9XS4qJFNTX2ZpZWxkc190eXBlcy4qIiB7CisgICAgICAgICAg ICAgICAgcGFzcyAiZXhwbG9yZSB0eXBlIHN0cnVjdCBDb21wbGV4U3RydWN0 IGZpZWxkIDAiCisgICAgICAgICAgICAgICAgZ2RiX3Rlc3RfbXVsdGlwbGUg IlwwIiAicmV0dXJuIHRvIENvbXBsZXhTdHJ1Y3QgZnJvbSBmaWVsZCAwIiB7 CisgICAgICAgICAgICAgICAgICAgIC1yZSAiLipbY29tcG91bmRfdHlwZV9k ZXNjcmlwdGlvbiAkQ1Mge3N0cnVjdC9jbGFzc31dLiokQ1NfZmllbGRzX3R5 cGVzLioiIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MgInJldHVy biB0byBDb21wbGV4U3RydWN0IGZyb20gZmllbGQgMCIKKyAgICAgICAgICAg ICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K KyAgICAgICAgfQorICAgICAgICBnZGJfdGVzdF9tdWx0aXBsZSAiMSIgImV4 cGxvcmUgdHlwZSBzdHJ1Y3QgQ29tcGxleFN0cnVjdCBmaWVsZCAxIiB7Cisg ICAgICAgICAgICAtcmUgIi4qW2NoaWxkX2NvbXBvdW5kX3R5cGVfZGVzY3Jp cHRpb24gJENTX2ZpZWxkXzEgJFNVIHt1bmlvbn1dLiokU1VfZmllbGRzX3R5 cGVzLioiIHsKKyAgICAgICAgICAgICAgICBwYXNzICJleHBsb3JlIHR5cGUg c3RydWN0IENvbXBsZXhTdHJ1Y3QgZmllbGQgMSIKKyAgICAgICAgICAgICAg ICBnZGJfdGVzdF9tdWx0aXBsZSAiXDAiICJyZXR1cm4gdG8gQ29tcGxleFN0 cnVjdCBmcm9tIGZpZWxkIDEiIHsKKyAgICAgICAgICAgICAgICAgICAgLXJl ICIuKltjb21wb3VuZF90eXBlX2Rlc2NyaXB0aW9uICRDUyB7c3RydWN0L2Ns YXNzfV0uKiRDU19maWVsZHNfdHlwZXMuKiIgeworICAgICAgICAgICAgICAg ICAgICAgICAgcGFzcyAicmV0dXJuIHRvIENvbXBsZXhTdHJ1Y3QgZnJvbSBm aWVsZCAxIgorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg ICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGdkYl90 ZXN0X211bHRpcGxlICIyIiAiZXhwbG9yZSB0eXBlIHN0cnVjdCBDb21wbGV4 U3RydWN0IGZpZWxkIDIiIHsKKyAgICAgICAgICAgIC1yZSAiLipbY2hpbGRf YXJyYXlfdHlwZV9kZXNjcmlwdGlvbiAkQ1NfZmllbGRfMiB7U1N9XS4qIiB7 CisgICAgICAgICAgICAgICAgcGFzcyAiZXhwbG9yZSB0eXBlIHN0cnVjdCBD b21wbGV4U3RydWN0IGZpZWxkIDIiCisgICAgICAgICAgICAgICAgZ2RiX3Rl c3RfbXVsdGlwbGUgIlwwIiAicmV0dXJuIHRvIENvbXBsZXhTdHJ1Y3QgZnJv bSBmaWVsZCAyIiB7CisgICAgICAgICAgICAgICAgICAgIC1yZSAiLipbY29t cG91bmRfdHlwZV9kZXNjcmlwdGlvbiAkQ1Mge3N0cnVjdC9jbGFzc31dLiok Q1NfZmllbGRzX3R5cGVzLioiIHsKKyAgICAgICAgICAgICAgICAgICAgICAg IHBhc3MgInJldHVybiB0byBDb21wbGV4U3RydWN0IGZyb20gZmllbGQgMiIK KyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAg ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBnZGJfdGVzdF9tdWx0 aXBsZSAiXDAiICJyZXR1cm4gdG8gR0RCIHByb21wdCBmcm9tIENvbXBsZXhT dHJ1Y3QgdHlwZSBleHBsb3JhdGlvbiIgeworICAgICAgICAgICAgLXJlICIk Z2RiX3Byb21wdCIgeworICAgICAgICAgICAgICAgIHBhc3MgInJldHVybiB0 byBHREIgcHJvbXB0IGZyb20gQ29tcGxleFN0cnVjdCB0eXBlIGV4cGxvcmF0 aW9uIgorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCitn ZGJfdGVzdF9tdWx0aXBsZSAiZXhwbG9yZSB0eXBlIHVuaW9uIENvbXBsZXhV bmlvbiIgIiIgeworICAgIC1yZSAiLipbY29tcG91bmRfdHlwZV9kZXNjcmlw dGlvbiAkQ1Uge3VuaW9ufV0uKiRDVV9maWVsZHNfdHlwZXMuKiIgeworICAg ICAgICBwYXNzICJleHBsb3JlIHR5cGUgdW5pb24gQ29tcGxleFVuaW9uIgor ICAgICAgICBnZGJfdGVzdF9tdWx0aXBsZSAiMCIgImV4cGxvcmUgdHlwZSB1 bmlvbiBDb21wbGV4U3RydWN0IGZpZWxkIDAiIHsKKyAgICAgICAgICAgIC1y ZSAiLipbY2hpbGRfY29tcG91bmRfdHlwZV9kZXNjcmlwdGlvbiAkQ1VfZmll bGRfMCAkU1Mge3N0cnVjdC9jbGFzc31dLiokU1NfZmllbGRzX3R5cGVzLioi IHsKKyAgICAgICAgICAgICAgICBwYXNzICJleHBsb3JlIHR5cGUgdW5pb24g Q29tcGxleFVuaW9uIGZpZWxkIDAiCisgICAgICAgICAgICAgICAgZ2RiX3Rl c3RfbXVsdGlwbGUgIlwwIiAicmV0dXJuIHRvIENvbXBsZXhVbmlvbiBmcm9t IGZpZWxkIDAiIHsKKyAgICAgICAgICAgICAgICAgICAgLXJlICIuKltjb21w b3VuZF90eXBlX2Rlc2NyaXB0aW9uICRDVSB7dW5pb259XS4qJENVX2ZpZWxk c190eXBlcy4qIiB7CisgICAgICAgICAgICAgICAgICAgICAgICBwYXNzICJy ZXR1cm4gdG8gQ29tcGxleFVuaW9uIGZyb20gZmllbGQgMCIKKyAgICAgICAg ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg IH0KKyAgICAgICAgfQorICAgICAgICBnZGJfdGVzdF9tdWx0aXBsZSAiMSIg ImV4cGxvcmUgdHlwZSB1bmlvbiBDb21wbGV4VW5pb24gZmllbGQgMSIgewor ICAgICAgICAgICAgLXJlICIuKltjaGlsZF9hcnJheV90eXBlX2Rlc2NyaXB0 aW9uICRDVV9maWVsZF8xICRTU10uKiIgeworICAgICAgICAgICAgICAgIHBh c3MgImV4cGxvcmUgdHlwZSB1bmlvbiBDb21wbGV4VW5pb24gZmllbGQgMSIK KyAgICAgICAgICAgICAgICBnZGJfdGVzdF9tdWx0aXBsZSAiXDAiICJyZXR1 cm4gdG8gQ29tcGxleFVuaW9uIGFycmF5IiB7CisgICAgICAgICAgICAgICAg ICAgIC1yZSAiLipbY29tcG91bmRfdHlwZV9kZXNjcmlwdGlvbiAkQ1Uge3Vu aW9ufV0uKiRDVV9maWVsZHNfdHlwZXMuKiIgeworICAgICAgICAgICAgICAg ICAgICAgICAgcGFzcyAicmV0dXJuIHRvIENvbXBsZXhVbmlvbiBmcm9tIGZp ZWxkIDEiCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg ICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZ2RiX3Rl c3RfbXVsdGlwbGUgIlwwIiAicmV0dXJuIHRvIEdEQiBwcm9tcHQgZnJvbSBD b21wbGV4VW5pb24gdHlwZSBleHBsb3JhdGlvbiIgeworICAgICAgICAgICAg LXJlICIkZ2RiX3Byb21wdCIgeworICAgICAgICAgICAgICAgIHBhc3MgInJl dHVybiB0byBHREIgcHJvbXB0IGZyb20gQ29tcGxleFVuaW9uIHR5cGUgZXhw bG9yYXRpb24iCisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9 CisKK2dkYl90ZXN0X211bHRpcGxlICJleHBsb3JlIHR5cGUgY3UiICIiIHsK KyAgICAtcmUgIidjdScgaXMgb2YgdHlwZSAndW5pb24gQ29tcGxleFVuaW9u Jy4qW2NvbXBvdW5kX3R5cGVfZGVzY3JpcHRpb24gJENVIHt1bmlvbn1dLiok Q1VfZmllbGRzX3R5cGVzLioiIHsKKyAgICAgICAgcGFzcyAiZXhwbG9yZSB0 eXBlIHVuaW9uIENvbXBsZXhVbmlvbiIKKyAgICAgICAgZ2RiX3Rlc3RfbXVs dGlwbGUgIjAiICJleHBsb3JlIHR5cGUgdW5pb24gQ29tcGxleFN0cnVjdCBm aWVsZCAwIiB7CisgICAgICAgICAgICAtcmUgIi4qW2NoaWxkX2NvbXBvdW5k X3R5cGVfZGVzY3JpcHRpb24gJENVX2ZpZWxkXzAgJFNTIHtzdHJ1Y3QvY2xh c3N9XS4qJFNTX2ZpZWxkc190eXBlcy4qIiB7CisgICAgICAgICAgICAgICAg cGFzcyAiZXhwbG9yZSB0eXBlIHVuaW9uIENvbXBsZXhVbmlvbiBmaWVsZCAw IgorICAgICAgICAgICAgICAgIGdkYl90ZXN0X211bHRpcGxlICJcMCIgInJl dHVybiB0byBDb21wbGV4VW5pb24gZnJvbSBmaWVsZCAwIiB7CisgICAgICAg ICAgICAgICAgICAgIC1yZSAiLipbY29tcG91bmRfdHlwZV9kZXNjcmlwdGlv biAkQ1Uge3VuaW9ufV0uKiRDVV9maWVsZHNfdHlwZXMuKiIgeworICAgICAg ICAgICAgICAgICAgICAgICAgcGFzcyAicmV0dXJuIHRvIENvbXBsZXhVbmlv biBmcm9tIGZpZWxkIDAiCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg ICAgZ2RiX3Rlc3RfbXVsdGlwbGUgIjEiICJleHBsb3JlIHR5cGUgdW5pb24g Q29tcGxleFVuaW9uIGZpZWxkIDEiIHsKKyAgICAgICAgICAgIC1yZSAiLipb Y2hpbGRfYXJyYXlfdHlwZV9kZXNjcmlwdGlvbiAkQ1VfZmllbGRfMSAkU1Nd LioiIHsKKyAgICAgICAgICAgICAgICBwYXNzICJleHBsb3JlIHR5cGUgdW5p b24gQ29tcGxleFVuaW9uIGZpZWxkIDEiCisgICAgICAgICAgICAgICAgZ2Ri X3Rlc3RfbXVsdGlwbGUgIlwwIiAicmV0dXJuIHRvIENvbXBsZXhVbmlvbiBh cnJheSIgeworICAgICAgICAgICAgICAgICAgICAtcmUgIi4qW2NvbXBvdW5k X3R5cGVfZGVzY3JpcHRpb24gJENVIHt1bmlvbn1dLiokQ1VfZmllbGRzX3R5 cGVzLioiIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MgInJldHVy biB0byBDb21wbGV4VW5pb24gZnJvbSBmaWVsZCAxIgorICAgICAgICAgICAg ICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQor ICAgICAgICB9CisgICAgICAgIGdkYl90ZXN0X211bHRpcGxlICJcMCIgInJl dHVybiB0byBHREIgcHJvbXB0IGZyb20gQ29tcGxleFVuaW9uIHR5cGUgZXhw bG9yYXRpb24iIHsKKyAgICAgICAgICAgIC1yZSAiJGdkYl9wcm9tcHQiIHsK KyAgICAgICAgICAgICAgICBwYXNzICJyZXR1cm4gdG8gR0RCIHByb21wdCBm cm9tIENvbXBsZXhVbmlvbiB0eXBlIGV4cGxvcmF0aW9uIgorICAgICAgICAg ICAgfQorICAgICAgICB9CisgICAgfQorfQo= --485b397dd4d96be93304baa57586--