From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id B7294A0548; Fri, 23 Apr 2021 12:26:03 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id A5120410D8; Fri, 23 Apr 2021 12:26:03 +0200 (CEST) Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by mails.dpdk.org (Postfix) with ESMTP id 17D6D4014F for ; Fri, 23 Apr 2021 12:26:00 +0200 (CEST) IronPort-SDR: wP0wZ4InuZB7dzpXRn+wI/4LyzYp8iQFb3sDVaMpe6hmwkVAimujm4sgb1Pt79YldGKcn/VHER WBmjgYXjpf7w== X-IronPort-AV: E=McAfee;i="6200,9189,9962"; a="183528683" X-IronPort-AV: E=Sophos;i="5.82,245,1613462400"; d="scan'208";a="183528683" Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 23 Apr 2021 03:25:51 -0700 IronPort-SDR: QZRs1+xT9RFo6O0G7eE9H24gJiZXyvm8VEB19W+LP7LLi4rxryqlaC6boULiwvraGBSOoL7Nok FjVo3GopCHsg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.82,245,1613462400"; d="scan'208";a="446550351" Received: from silpixa00400895.ir.intel.com ([10.243.23.135]) by fmsmga004.fm.intel.com with ESMTP; 23 Apr 2021 03:25:49 -0700 From: Zbigniew Sikora To: dts@dpdk.org, zbigniewx.sikora@intel.com, reshma.pattan@intel.com Date: Fri, 23 Apr 2021 12:25:48 +0200 Message-Id: <20210423102548.2992979-1-zbigniewx.sikora@intel.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Subject: [dts] [ds] [PATCH] power_negative: Test Suite X-BeenThere: dts@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: test suite reviews and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dts-bounces@dpdk.org Sender: "dts" SW50cm9kdWNpbmcgYSBuZXcgUG93ZXIgTmVnYXRpdmUgVGVzdCBQbGFuLgoKU2lnbmVkLW9mZi1i eTogWmJpZ25pZXcgU2lrb3JhIDx6Ymlnbmlld3guc2lrb3JhQGludGVsLmNvbT4KCmRpZmYgLS1n aXQgYS9jb25mL3Bvd2VyX25lZ2F0aXZlLmNmZyBiL2NvbmYvcG93ZXJfbmVnYXRpdmUuY2ZnCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1MTJlMWIKLS0tIC9kZXYvbnVsbAor KysgYi9jb25mL3Bvd2VyX25lZ2F0aXZlLmNmZwpAQCAtMCwwICsxLDMwIEBACisjIGxpYnZpcnRk IG9wdGlvbnM6CisjIFtWTSBuYW1lXSBzZWN0aW9uIHZhbHVlIGlzIHRoZSBuYW1lIGZvciBWTQor IyBjcHUgICAgICAgIyBoYXJkIGNvZGUgdHlwZSB0byBob3N0LXBhc3N0aHJvdWdoCisjICAgbnVt YmVyOiBudW1iZXIgb2YgdmNwdXMKKyMgICBjcHVwaW46IGhvc3QgY3B1IGxpc3QKKyMgbWVtCisj ICAgc2l6ZTogNDA5NgorIyBkaXNrCisjICAgZmlsZTogYWJzb2x1dGUgcGF0aCB0byBkaXNrIGlt YWdlCisjICAgdHlwZTogZGlzayBpbWFnZSBmb3JtYXQKKyMgbG9naW4KKyMgICB1c2VyOiB1c2Vy IG5hbWUgdG8gbG9naW4gaW50byBWTQorIyAgIHBhc3N3b3JkOiBwYXNzd29yayB0byBsb2dpbiBp bnRvIFZNCisjIGRldmljZQorIyAgIHBmX2lkeDogcGFzcy10aHJvdWdoIGRldmljZSBpbmRleCBv ZiBEVVQgcG9ydHMKKyMgICBndWVzdHBjaTogaGFyZGNvZGUgdmFsdWUgb2YgZ3Vlc3QgcGNpIGFk ZHJlc3MKKyMgdmlydGlvX3NlcmlhbF9jaGFubmVsCisjICAgcGF0aDogdmlydGlvIHVuaXggc29j a2V0IGFic29sdXRlIHBhdGgKKyMgICBuYW1lOiB2aXJ0aW8gc2VyaWFsIG5hbWUgaW4gVk0KKwor IyB2bSBjb25maWd1cmF0aW9uIGZvciB2bSBwb3dlciBtYW5hZ2VtZW50IGNhc2UKK1t2bTBdCitj cHUgPQorICAgIG51bWJlcj04LGNwdXBpbj00IDUgNiA3IDggOSAxMCAxMTsKK21lbSA9CisgICAg c2l6ZT0xMjE5NjsKK2Rpc2sgPQorICAgIGZpbGU9L3Jvb3QvZmVkb3JhMjctMS5pbWcsb3B0X2Zv cm1hdD1xY293MjsKK2xvZ2luID0KKyAgICB1c2VyPXJvb3QscGFzc3dvcmQ9dGVzdGVyOwpkaWZm IC0tZ2l0IGEvdGVzdF9wbGFucy9wb3dlcl9uZWdhdGl2ZV90ZXN0X3BsYW4ucnN0IGIvdGVzdF9w bGFucy9wb3dlcl9uZWdhdGl2ZV90ZXN0X3BsYW4ucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAuLmIxZGU0ZDQKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0X3BsYW5zL3Bvd2Vy X25lZ2F0aXZlX3Rlc3RfcGxhbi5yc3QKQEAgLTAsMCArMSwxNzUgQEAKKy4uIENvcHlyaWdodCAo YykgPDIwMTAtMjAxOT4sIEludGVsIENvcnBvcmF0aW9uCisgICBBbGwgcmlnaHRzIHJlc2VydmVk LgorCisgICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z LCB3aXRoIG9yIHdpdGhvdXQKKyAgIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICAgYXJlIG1ldDoKKworICAgLSBSZWRp c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo dAorICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n IGRpc2NsYWltZXIuCisKKyAgIC0gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluCisgICAgIHRoZSBkb2N1 bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAgICAg ZGlzdHJpYnV0aW9uLgorCisgICAtIE5laXRoZXIgdGhlIG5hbWUgb2YgSW50ZWwgQ29ycG9yYXRp b24gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAgICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgICAgIGZyb20gdGhpcyBzb2Z0 d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKworICAgVEhJ UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS SUJVVE9SUworICAgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT LCBJTkNMVURJTkcsIEJVVCBOT1QKKyAgIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTCisgICBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorICAgQ09QWVJJR0hU IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU LAorICAgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB TUFHRVMKKyAgIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg U1VCU1RJVFVURSBHT09EUyBPUgorICAgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgICBIT1dFVkVSIENBVVNFRCBBTkQg T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsCisgICBTVFJJ Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up CisgICBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg RVZFTiBJRiBBRFZJU0VECisgICBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisK Kz09PT09PT09PT09PT09PT09PT09PT09PQorUG93ZXIgTmVnYXRpdmUgVGVzdCBQbGFuCis9PT09 PT09PT09PT09PT09PT09PT09PT0KKworUHJlcGFyYXRpb24gd29yaworPT09PT09PT09PT09PT09 PQorMS4gVHVybiBvbiBTcGVlZHN0ZXAgb3B0aW9uIGluIEJJT1MKKzIuIFR1cm4gb24gQ1BVIEMz IGFuZCBDNgorMy4gVHVybiBvbiBUdXJibyBpbiBCSU9TCis0LiBEaXNhYmxlIGludGVsX3BzdGF0 ZSBpbiBMaW51eCBrZXJuZWwgY29tbWFuZDogaW50ZWxfcHN0YXRlPWRpc2FibGUKKzUuIG1vZHBy b2JlIG1zciBtb2R1bGUgdG8gbGV0IHRoZSBhcHBsaWNhdGlvbiBjYW4gZ2V0IHRoZSBDUFUgSFcg aW5mbworNi4gTGV0IHVzZXIgc3BhY2UgY2FuIGNvbnRyb2wgdGhlIENQVSBmcmVxdWVuY3k6IGNw dXBvd2VyIGZyZXF1ZW5jeS1zZXQgLWcgdXNlcnNwYWNlCisKKworVGVzdCBDYXNlMTogSW5qZWN0 IE1hbGZvcm1lZCBKU09OIENvbW1hbmQgZmlsZSB0byBmaWZvIGNoYW5uZWwKKz09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorU3Rl cCAxLiBDcmVhdGUgcG93ZXJtb25pdG9yIGZvbGQgZm9yIHZtX3Bvd2VyX21hbmFnZXIgc2FtcGxl OjoKKworICAgIG1rZGlyIC90bXAvcG93ZXJtb25pdG9yCisgICAgY2htb2QgNzc3IC90bXAvcG93 ZXJtb25pdG9yCisKK1N0ZXAgMi4gTHVhbmNoIFZNIHBvd2VyIG1hbmFnZXIgc2FtcGxlOjoKKwor ICAgIC4vZXhhbXBsZXMvdm1fcG93ZXJfbWFuYWdlci9idWlsZC92bV9wb3dlcl9tZ3IgLWwgMS0z IC1uIDQgLS1maWxlLXByZWZpeD10ZXN0MSAtLW5vLXBjaQorCitTdGVwIDMuIFByZXBhcmUgcG9s aWN5IGluIEpTT04gZm9ybWF0IHRoZW4gc2VuZCBpdCB0byB0aGUgZmlmbyBjaGFubmVsOgorICAg IFByZXBhcmUgZGlmZmVyZW50IGNvbW1hbmQgaW4gSlNPTiBmb3JtYXQgdGhlbiBzZW5kIGl0IHRv IHRoZSBmaWZvIGNoYW5uZWwKKyAgICBNb2RpZnkgIm5hbWUiLCAicmVzb3VyY2VfaWQiLCAiY29t bWFuZCIgdG8gbGFyZ2UgY2hhcmFjdGVyIHN0cmluZyB0byBjaGVjayBpZiB0aGUgdm1fcG93ZXJf bWdyIHNhbXBsZSB3aWxsIGNyYXNoCisgICAgRm9yIGV4YW1wbGU6OgorCisgICAgICB7InBvbGlj eSI6IHsKKyAgICAgICAgIm5hbWUiOiAiMDEyMzQ1Njc4OTAxMjM0NDU2Nzg5MDEyMzQ1Njc4OTAx MjM0NTY3ODkwMDEyMzQ1Njc4OTAiLAorICAgICAgICAiY29tbWFuZCI6ICJjcmVhdGUiLAorICAg ICAgICAicG9saWN5X3R5cGUiOiAiV09SS0xPQUQiLAorICAgICAgICAid29ya2xvYWQiOiAiTUVE SVVNIiwKKyAgICAgIH19CisKK1N0ZXAgNC4gU2VuZCBKc29uIGZvcm1hdCBjb21tYW5kIHRvIHRo ZSBmaWZvIGNoYW5uZWw6OgorCisgIGNhdCBjb21tYW5kLmpzb24gPiAvdG1wL3Bvd2VybW9uaXRv ci9maWZvMjIKKworQ2hlY2sgcG9pbnQ6IG5vIGNyYXNoIGF0IHRoZSB2bV9wb3dlcl9tZ3IgYXBw bGljYXRpb24gc2lkZS4KKworUG90ZW50aWFsIGlzc3VlOiBubyB3YXJuaW5nIGZvciB0aGUgdXNl ciBmb3IgdGhlIG5hbWUgdG9vIGxvbmcsIG5vdyBpcyBjaGFyWzMyXSwgYnV0IG5vIGNyYXNoIGFz IHN0cmxjcHkgaXMgdWVzZWQKKworVGVzdCBDYXNlMjogU2VuZCBpbnZhbGlkIGNvbW1hbmQgdGhy b3VnaCBKU09OIGNoYW5uZWwKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQorU3RlcCAxLiBDcmVhdGUgcG93ZXJtb25pdG9yIGZvbGQgZm9yIHZt X3Bvd2VyX21hbmFnZXIgc2FtcGxlOjoKKworICAgIG1rZGlyIC90bXAvcG93ZXJtb25pdG9yCisg ICAgY2htb2QgNzc3IC90bXAvcG93ZXJtb25pdG9yCisKK1N0ZXAgMi4gTHVhbmNoIFZNIHBvd2Vy IG1hbmFnZXIgc2FtcGxlOjoKKworICAgIC4vZXhhbXBsZXMvdm1fcG93ZXJfbWFuYWdlci9idWls ZC92bV9wb3dlcl9tZ3IgLWwgMS0zIC1uIDQgLS1maWxlLXByZWZpeD10ZXN0MSAtLW5vLXBjaQor CitTdGVwIDMuIFByZXBhcmUgcG9saWN5IGluIEpTT04gZm9ybWF0IHRoZW4gc2VuZCBpdCB0byB0 aGUgZmlmbyBjaGFubmVsOgorCitQcmVwYXJlIGludmFsaWQgcG93ZXIgY29tbWFuZCwgZm9yIGV4 YW1wbGUsIGNvcmUgbGlzdCBhYm92ZSB0aGUgbWF4IGNvcmUgbnVtYmVyLiBGb3IgZXhhbXBsZTo6 CisKKyAgICB7InBvbGljeSI6IHsKKyAgICAgICAgIm5hbWUiOiAiVWJ1dG51IiwKKyAgICAgICAg ImNvbW1hbmQiOiAiY3JlYXRlIiwKKyAgICAgICAgInBvbGljeV90eXBlIjogIldPUktMT0FEIiwK KyAgICAgICAgIndvcmtsb2FkIjogIk1FRElVTV8xMTEiLAorICAgIH19CisKKyAgICB7InBvbGlj eSI6IHsKKyAgICAgICAgIm5hbWUiOiAiVWJ1dG51IiwKKyAgICAgICAgImNvbW1hbmQiOiAiY3Jl YXRlIiwKKyAgICAgICAgInBvbGljeV90eXBlIjogIldPUktMT0FEXzExMSIsCisgICAgICAgICJ3 b3JrbG9hZCI6ICJNRURJVU0iLAorICAgIH19CisKK1N0ZXAgNC4gU2VuZCBKc29uIGZvcm1hdCBj b21tYW5kIHRvIHRoZSBmaWZvIGNoYW5uZWw6OgorCisJY2F0IGNvbW1hbmQuanNvbiA+IC90bXAv cG93ZXJtb25pdG9yL2ZpZm8yMgorCitUZXN0IENhc2UzOiBDaGVjayBpZiBob3N0IHBvd2VyIEFQ UCBoYXZlIGNoZWNrIHBvaW50IGZvciB0aGUgcG93ZXIgcG9saWN5IHNlbnQgZnJvbSB1bnRydXN0 ZWQgVk0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorU3RlcCAx LiBMYXVuY2ggVk0gYnkgdXNpbmcgbGlidmlydCwgb25lIE5JQyBzaG91bGQgYmUgY29uZmlndXJl ZCBhcyBQQ0kgcGFzcy10aHJvdWdocHV0IHRvIHRoZSBWTTo6CisKKyAgICB2aXJzaCBzdGFydCBb Vk0gbmFtZV0KKworTm90ZTogRm9yIHRoZSBWTSB4bWwgZmlsZSB3aGljaCB3aWxsIGJlIHVzZWQg Zm9yIGNyZWF0aW5nIHRoZSBWTSwgaXQgY2FuIHJlLXVzZSB0aGUgdm0wLnhtbCBnZW5lcmF0ZWQg aW4gdGhlIGJyYW5jaCByYXRpbyBEVFMgc2NyaXB0CisKK1N0ZXAgMi4gTHVhbmNoIFZNIHBvd2Vy IG1hbmFnZXIgc2FtcGxlIG9uIHRoZSBob3N0IHRvIG1vbml0b3IgdGhlIGNoYW5uZWwgZnJvbSBW TTo6CisKKyAgICAuL2V4YW1wbGVzL3ZtX3Bvd2VyX21hbmFnZXIvYnVpbGQvdm1fcG93ZXJfbWdy IC1sIDEyLTE0IC1uIDQgLS1uby1wY2kKKyAgICAgID7jgIBhZGRfdm0gW3ZtIG5hbWVdCisgICAg ICA+44CAYWRkX2NoYW5uZWxzIFt2bSBuYW1lXSBhbGwKKyAgICAgID7jgIBzZXRfY2hhbm5lbF9z dGF0dXMgW3ZtIG5hbWVdIGFsbCBlbmFibGVkCisgICAgICA+44CAc2hvd192bSBbdm0gbmFtZV0K KworICAgQ2hlY2sgdGhlIGludmFsaWQgaW5wdXQgY29tbWFuZCBmb3Igdm1fcG93ZXJfbWdyIHNh bXBsZTo6CisKKyAgICA+IGFkZF9jaGFubmVscyB1YnVudHUgMTI4CisgICAgPiBhZGRfY2hhbm5l bCB1YnVudHUgMTAwMDAwMDAwMDAwMDAwMDAKKworQ2hlY2sgcG9pbnQ644CATm8gY3Jhc2ggc2hv dWxkIGJlIG9jY3VyIGF0IHZtX3Bvd2VyX21nciBzYW1wbGUKKworU3RlcCAzLiBJbiB0aGUgVk0s IGxhdW5jaCBndWVzdF92bV9wb3dlcl9tZ3IgdG8gc2V0IGFuZCBzZW5kIHRoZSBwb3dlciBtYW5h Z2VyIHBvbGljeSB0byB0aGUgaG9zdCBwb3dlciBzYW1wbGU6OgorCisgICAgLi9leGFtcGxlcy92 bV9wb3dlcl9tYW5hZ2VyL2d1ZXN0X2NsaS9idWlsZC9ndWVzdF92bV9wb3dlcl9tZ3IgLWMgMHhm ZiAtbiA0IC1tIDEwMjQgLS1uby1wY2kgLS1maWxlLXByZWZpeD15YW9sZWkgXAorICAgICAgLS0g LS12bS1uYW1lPXVidW50dSAtLXZjcHUtbGlzdD0wLTcKKyAgICAgID4gc2V0X2NwdV9mcmVxIDEy OCBkb3duCisgICAgICA+IHNldF9jcHVfZnJlcSAxMDAwMDAwMDAwMDAwIGRvd24KKyAgICAgID4g c2V0X2NwdV9mcmVxIC0xIGRvd24KKworICAgYWxzbyB0cnkgb3RoZXIgY29tbWFuZHM6OgorCisg ICAgICI8dXB8ZG93bnxtaW58bWF4fGVuYWJsZV90dXJib3xkaXNhYmxlX3R1cmJvPiIKKworCitU ZXN0IENhc2U0OiBUUkFGRklDIFBvbGljeSBUZXN0IGJhc2VkIG9uIEpTT04gY29uZmlndXJlIGZp bGUgd2l0aCBsYXJnZSBpbnRlZ2VyIG51bWJlcgorPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQorU3RlcCAxLiBHZW5lcmF0ZSAxIFZGIHVuZGVyIHZmaW8tcGNpIGRyaXZlciwgbGF1bmNo IHZtX3Bvd2VyX21nciBzYW1wbGUgd2l0aCBQRiwgZm9yIGV4YW1wbGU6OgorCisgICAgZWNobyAx ID4gL3N5cy9idXMvcGNpL2RyaXZlcnMvdmZpby1wY2kvMDAwMFw6ODJcOjAwLjAvbWF4X3Zmcwor ICAgIC4vZXhhbXBsZXMvdm1fcG93ZXJfbWFuYWdlci9idWlsZC92bV9wb3dlcl9tZ3IgLWwgMS00 IC1uIDQgLS1zb2NrZXQtbWVtPTEwMjQsMTAyNCAtLWZpbGUtcHJlZml4PXRlc3QxIC13IDgyOjAw LjAgLS0gLXAgMHgwMQorCitTdGVwIDIuIExhdW5jaCB0ZXN0cG1kIHdpdGggVkY6OgorCisgICAg IC4veDg2XzY0LW5hdGl2ZS1saW51eGFwcC1nY2MvYXBwL3Rlc3RwbWQgLWwgNS02IC1uIDQgLS1z b2NrZXQtbWVtPTEwMjQsMTAyNCAtLWZpbGUtcHJlZml4PXRlc3QyIC13IDAwMDA6ODI6MDIuMCAt LSAtaQorICAgICAgID4gc2V0IGZ3ZCBtYWNzd2FwCisgICAgICAgPiBzdGFydAorCitTdGVwIDMu IFByZXBhcmUgdHJhZmZpYyBwb2xpY3kgaW4gSlNPTiBmb3JtYXQgdGhlbiBzZW5kIGl0IHRvIHRo ZSBwb3dlciBkZW1vbiBzYW1wbGUsIHB1dCB0aGUgVkYgTUFDIGludG8gdGhlIG1hY19saXN0OjoK KworICAgICAgeyJwb2xpY3kiOiB7CisgICAgICAgICAgIm5hbWUiOiAidWJ1bnR1IiwKKyAgICAg ICAgICAiY29tbWFuZCI6ICJjcmVhdGUiLAorICAgICAgICAgICJwb2xpY3lfdHlwZSI6ICJUUkFG RklDIiwKKyAgICAgICAgICAibWF4X3BhY2tldF90aHJlc2giOiA1MDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAsCisgICAgICAgICAgImF2Z19wYWNrZXRfdGhyZXNoIjogMzAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwLAorICAgICAgICAgICJtYWNfbGlzdCI6WyAiRTA6RTA6RTA6RTA6 RjA6RjAiXQorICAgICAgfX0KKworU3RlcCA0LiBTZW5kIEpzb24gZm9ybWF0IGNvbW1hbmQgdG8g dGhlIGZpZm8gY2hhbm5lbDo6CisKKyAgY2F0IHRyYWZmaWMuanNvbiA+IC90bXAvcG93ZXJtb25p dG9yL2ZpZm82CisKK0NoZWNrIHBvaW50OuOAgE5vIGNyYXNoIHNob3VsZCBiZSBvY2N1ciBhdCB2 bV9wb3dlcl9tZ3Igc2FtcGxlCmRpZmYgLS1naXQgYS90ZXN0cy9UZXN0U3VpdGVfcG93ZXJfbmVn YXRpdmUucHkgYi90ZXN0cy9UZXN0U3VpdGVfcG93ZXJfbmVnYXRpdmUucHkKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDZjMmYzYwotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3Rz L1Rlc3RTdWl0ZV9wb3dlcl9uZWdhdGl2ZS5weQpAQCAtMCwwICsxLDYxOSBAQAorIyBCU0QgTElD RU5TRQorIworIyBDb3B5cmlnaHQoYykgMjAxMC0yMDIwIEludGVsIENvcnBvcmF0aW9uLiBBbGwg cmlnaHRzIHJlc2VydmVkLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1 dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK KyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu ZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjCisjICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291 cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0 aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAg ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92 ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbgorIyAgICAgdGhlIGRvY3VtZW50YXRpb24gYW5kL29y IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyAgICAgZGlzdHJpYnV0aW9uLgor IyAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBJbnRlbCBDb3Jwb3JhdGlvbiBub3IgdGhlIG5hbWVz IG9mIGl0cworIyAgICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv bW90ZSBwcm9kdWN0cyBkZXJpdmVkCisjICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMg UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFT IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV VCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJV VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBT UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC VVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig U0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJ TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAo SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU IE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIiIiCitEUERLIFRlc3Qgc3VpdGUuCitwb3dl ciBuZWdhdGl2ZSB0ZXN0IHN1aXRlLgorIiIiCisKK2ltcG9ydCBvcworaW1wb3J0IHJlCitpbXBv cnQgdGltZQoraW1wb3J0IHRyYWNlYmFjaworCitmcm9tIHV0aWxzIGltcG9ydCBjcmVhdGVfbWFz ayBhcyBkdHNfY3JlYXRlX21hc2sKK2Zyb20gcWVtdV9saWJ2aXJ0IGltcG9ydCBMaWJ2aXJ0S3Zt Citmcm9tIGV4Y2VwdGlvbiBpbXBvcnQgVmVyaWZ5RmFpbHVyZQorZnJvbSB0ZXN0X2Nhc2UgaW1w b3J0IFRlc3RDYXNlCisKKworY2xhc3MgVGVzdFBvd2VyTmVnYXRpdmUoVGVzdENhc2UpOgorCisg ICAgQHByb3BlcnR5CisgICAgZGVmIHRhcmdldF9kaXIoc2VsZik6CisgICAgICAgICMgZ2V0IGFi c29sdXRlIGRpcmVjdG9yeSBvZiB0YXJnZXQgc291cmNlIGNvZGUKKyAgICAgICAgdGFyZ2V0X2Rp ciA9ICcvcm9vdCcgKyBzZWxmLmR1dC5iYXNlX2RpclsxOl0gXAorICAgICAgICAgICAgICAgICAg ICAgaWYgc2VsZi5kdXQuYmFzZV9kaXIuc3RhcnRzd2l0aCgnficpIGVsc2UgXAorICAgICAgICAg ICAgICAgICAgICAgc2VsZi5kdXQuYmFzZV9kaXIKKyAgICAgICAgcmV0dXJuIHRhcmdldF9kaXIK KworICAgIGRlZiBwcmVwYXJlX2JpbmFyeShzZWxmLCBuYW1lLCBob3N0X2NyYj1Ob25lKToKKyAg ICAgICAgX2hvc3RfY3JiID0gaG9zdF9jcmIgaWYgaG9zdF9jcmIgZWxzZSBzZWxmLmR1dAorICAg ICAgICBleGFtcGxlX2RpciA9ICJleGFtcGxlcy8iICsgbmFtZQorICAgICAgICBvdXQgPSBfaG9z dF9jcmIuYnVpbGRfZHBka19hcHBzKCcuLycgKyBleGFtcGxlX2RpcikKKyAgICAgICAgcmV0dXJu IG9zLnBhdGguam9pbihzZWxmLnRhcmdldF9kaXIsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgX2hvc3RfY3JiLmFwcHNfbmFtZVtvcy5wYXRoLmJhc2VuYW1lKG5hbWUpXSkKKworICAgIGRl ZiBhZGRfY29uc29sZShzZWxmLCBzZXNzaW9uKToKKyAgICAgICAgc2VsZi5leHRfY29uW3Nlc3Np b24ubmFtZV0gPSBbCisgICAgICAgICAgICBzZXNzaW9uLnNlbmRfZXhwZWN0LAorICAgICAgICAg ICAgc2Vzc2lvbi5zZXNzaW9uLmdldF9vdXRwdXRfYWxsXQorCisgICAgZGVmIGdldF9jb25zb2xl KHNlbGYsIG5hbWUpOgorICAgICAgICBkZWZhdWx0X2Nvbl90YWJsZSA9IHsKKyAgICAgICAgICAg IHNlbGYuZHV0LnNlc3Npb24ubmFtZTogWworICAgICAgICAgICAgICAgIHNlbGYuZHV0LnNlbmRf ZXhwZWN0LAorICAgICAgICAgICAgICAgIHNlbGYuZHV0LmdldF9zZXNzaW9uX291dHB1dF0sCisg ICAgICAgICAgICBzZWxmLmR1dC5hbHRfc2Vzc2lvbi5uYW1lOiBbCisgICAgICAgICAgICAgICAg c2VsZi5kdXQuYWx0X3Nlc3Npb24uc2VuZF9leHBlY3QsCisgICAgICAgICAgICAgICAgc2VsZi5k dXQuYWx0X3Nlc3Npb24uc2Vzc2lvbi5nZXRfb3V0cHV0X2FsbF19CisgICAgICAgIGlmIG5hbWUg bm90IGluIGRlZmF1bHRfY29uX3RhYmxlOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZXh0X2Nv bi5nZXQobmFtZSkgb3IgW05vbmUsIE5vbmVdCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBy ZXR1cm4gZGVmYXVsdF9jb25fdGFibGUuZ2V0KG5hbWUpCisKKyAgICBkZWYgZXhlY3V0ZV9jbWRz KHNlbGYsIGNtZHMsIG5hbWU9J2R1dCcpOgorICAgICAgICBjb25zb2xlLCBtc2dfcGlwZSA9IHNl bGYuZ2V0X2NvbnNvbGUobmFtZSkKKyAgICAgICAgaWYgbGVuKGNtZHMpID09IDA6CisgICAgICAg ICAgICByZXR1cm4KKyAgICAgICAgaWYgaXNpbnN0YW5jZShjbWRzLCBzdHIpOgorICAgICAgICAg ICAgY21kcyA9IFtjbWRzLCAnIyAnLCA1XQorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShjbWRz WzBdLCBsaXN0KToKKyAgICAgICAgICAgIGNtZHMgPSBbY21kc10KKyAgICAgICAgb3V0cHV0cyA9 IFtdIGlmIGxlbihjbWRzKSA+IDEgZWxzZSAnJworICAgICAgICBmb3IgaXRlbSBpbiBjbWRzOgor ICAgICAgICAgICAgZXhwZWN0ZWRfaXRlbXMgPSBpdGVtWzFdCisgICAgICAgICAgICBpZiBleHBl Y3RlZF9pdGVtcyBhbmQgaXNpbnN0YW5jZShleHBlY3RlZF9pdGVtcywgKGxpc3QsIHR1cGxlKSk6 CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRfc3RyID0gZXhwZWN0ZWRfaXRlbXNbMF0gb3IgJyMg JworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBleHBlY3RlZF9zdHIgPSBleHBl Y3RlZF9pdGVtcyBvciAnIyAnCisKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBp ZiBsZW4oaXRlbSkgPT0gMzoKKyAgICAgICAgICAgICAgICAgICAgdGltZW91dCA9IGludChpdGVt WzJdKQorICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSBjb25zb2xlKGl0ZW1bMF0sIGV4cGVj dGVkX3N0ciwgdGltZW91dCkKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0ID0gbXNnX3BpcGUo KSBpZiBub3Qgb3V0cHV0IGVsc2Ugb3V0cHV0CisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAg ICAgICAgICAgICAgICAgb3V0cHV0ID0gY29uc29sZShpdGVtWzBdLCBleHBlY3RlZF9zdHIpCisg ICAgICAgICAgICAgICAgICAgIG91dHB1dCA9IG1zZ19waXBlKCkgaWYgbm90IG91dHB1dCBlbHNl IG91dHB1dAorICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAg ICAgIG1zZyA9ICJleGVjdXRlICd7MH0nIHRpbWVvdXQiLmZvcm1hdChpdGVtWzBdKQorICAgICAg ICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbihtc2cpCisgICAgICAgICAgICB0aW1lLnNsZWVwKDEp CisgICAgICAgICAgICBpZiBsZW4oY21kcykgPiAxOgorICAgICAgICAgICAgICAgIG91dHB1dHMu YXBwZW5kKG91dHB1dCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgb3V0cHV0 cyA9IG91dHB1dAorCisgICAgICAgIHJldHVybiBvdXRwdXRzCisKKyAgICBkZWYgZF9jb24oc2Vs ZiwgY21kcyk6CisgICAgICAgIHJldHVybiBzZWxmLmV4ZWN1dGVfY21kcyhjbWRzLCBuYW1lPXNl bGYuZHV0LnNlc3Npb24ubmFtZSkKKworICAgIGRlZiBkX2FfY29uKHNlbGYsIGNtZHMpOgorICAg ICAgICByZXR1cm4gc2VsZi5leGVjdXRlX2NtZHMoY21kcywgbmFtZT1zZWxmLmR1dC5hbHRfc2Vz c2lvbi5uYW1lKQorCisgICAgZGVmIHZtX2NvbihzZWxmLCBjbWRzKToKKyAgICAgICAgcmV0dXJu IHNlbGYuZXhlY3V0ZV9jbWRzKGNtZHMsIG5hbWU9c2VsZi52bV9kdXQuc2Vzc2lvbi5uYW1lKQor CisgICAgZGVmIHZtX2dfY29uKHNlbGYsIGNtZHMpOgorICAgICAgICByZXR1cm4gc2VsZi5leGVj dXRlX2NtZHMoY21kcywgbmFtZT1zZWxmLmd1ZXN0X2Nvbl9uYW1lKQorCisgICAgZGVmIGdldF9z eXNfcG93ZXJfZHJpdmVyKHNlbGYpOgorICAgICAgICBkcnZfZmlsZSA9ICIvc3lzL2RldmljZXMv c3lzdGVtL2NwdS9jcHUwL2NwdWZyZXEvc2NhbGluZ19kcml2ZXIiCisgICAgICAgIG91dHB1dCA9 IHNlbGYuZF9hX2NvbignY2F0ICcgKyBkcnZfZmlsZSkKKyAgICAgICAgaWYgbm90IG91dHB1dDoK KyAgICAgICAgICAgIG1zZyA9ICd1bmtub3duIHBvd2VyIGRyaXZlcicKKyAgICAgICAgICAgIHNl bGYudmVyaWZ5KEZhbHNlLCBtc2cpCisgICAgICAgIGRydl9uYW1lID0gb3V0cHV0LnNwbGl0bGlu ZXMoKVswXS5zdHJpcCgpCisgICAgICAgIHJldHVybiBkcnZfbmFtZQorCisgICAgQHByb3BlcnR5 CisgICAgZGVmIGlzX3N1cHBvcnRfcGJmKHNlbGYpOgorICAgICAgICAjIGNoZWNrIGlmIGNwdSBz dXBwb3J0IGJwZiBmZWF0dXJlCisgICAgICAgIGNwdV9hdHRyID0gcicvc3lzL2RldmljZXMvc3lz dGVtL2NwdS9jcHUwL2NwdWZyZXEvYmFzZV9mcmVxdWVuY3knCisgICAgICAgIGNtZCA9ICJscyB7 MH0iLmZvcm1hdChjcHVfYXR0cikKKyAgICAgICAgc2VsZi5kX2FfY29uKGNtZCkKKyAgICAgICAg Y21kID0gImVjaG8gJD8iCisgICAgICAgIG91dHB1dCA9IHNlbGYuZF9hX2NvbihjbWQpCisgICAg ICAgIHJldCA9IFRydWUgaWYgb3V0cHV0ID09ICIwIiBlbHNlIEZhbHNlCisgICAgICAgIHJldHVy biByZXQKKworICAgIGRlZiBnZXRfYWxsX2NwdV9hdHRycyhzZWxmKToKKyAgICAgICAgJycnCisg ICAgICAgIGdldCBhbGwgY3B1cycgYmFzZV9mcmVxdWVuY3kgdmFsdWUsIGlmIG5vdCBzdXBwb3J0 IHBiZiwgc2V0IGFsbCB0byAwCisgICAgICAgICcnJworICAgICAgICBpZiBub3Qgc2VsZi5pc19z dXBwb3J0X3BiZjoKKyAgICAgICAgICAgIGNwdV90b3BvcyA9IHNlbGYuZHV0LmdldF9hbGxfY29y ZXMoKQorICAgICAgICAgICAgX2Jhc2VfZnJlcXNfaW5mbyA9IHt9CisgICAgICAgICAgICBmb3Ig aW5kZXgsIF8gaW4gZW51bWVyYXRlKGNwdV90b3Bvcyk6CisgICAgICAgICAgICAgICAgX2Jhc2Vf ZnJlcXNfaW5mb1tpbmRleF0gPSAwCisgICAgICAgICAgICByZXR1cm4gX2Jhc2VfZnJlcXNfaW5m bworICAgICAgICAjIGlmIGNwdSBzdXBwb3J0IGhpZ2ggcHJpb3JpdHkgY29yZQorICAgICAgICBr ZXlfdmFsdWVzID0gWydiYXNlX2ZyZXF1ZW5jeScsCisgICAgICAgICAgICAgICAgICAgICAgJ2Nw dWluZm9fbWF4X2ZyZXEnLAorICAgICAgICAgICAgICAgICAgICAgICdjcHVpbmZvX21pbl9mcmVx J10KKyAgICAgICAgZnJlcSA9IHInL3N5cy9kZXZpY2VzL3N5c3RlbS9jcHUvY3B1ezB9L2NwdWZy ZXEvezF9Jy5mb3JtYXQKKyAgICAgICAgIyB1c2UgZHV0IGFsdCBzZXNzaW9uIHRvIGdldCBkdXQg cGxhdGZvcm0gY3B1IGJhc2UgZnJlcXVlbmN5IGF0dHJpYnV0ZQorICAgICAgICBjcHVfdG9wb3Mg PSBzZWxmLmR1dC5nZXRfYWxsX2NvcmVzKCkKKyAgICAgICAgY3B1X2luZm8gPSB7fQorICAgICAg ICBmb3IgY3B1X3RvcG8gaW4gY3B1X3RvcG9zOgorICAgICAgICAgICAgY3B1X2lkID0gaW50KGNw dV90b3BvWyd0aHJlYWQnXSkKKyAgICAgICAgICAgIGNwdV9pbmZvW2NwdV9pZF0gPSB7fQorICAg ICAgICAgICAgY3B1X2luZm9bY3B1X2lkXVsnc29ja2V0J10gPSBjcHVfdG9wb1snc29ja2V0J10K KyAgICAgICAgICAgIGNwdV9pbmZvW2NwdV9pZF1bJ2NvcmUnXSA9IGNwdV90b3BvWydjb3JlJ10K KworICAgICAgICBmb3Iga2V5X3ZhbHVlIGluIGtleV92YWx1ZXM6CisgICAgICAgICAgICBjbWRz ID0gW10KKyAgICAgICAgICAgIGZvciBjcHVfaWQgaW4gc29ydGVkKGNwdV9pbmZvLmtleXMoKSk6 CisgICAgICAgICAgICAgICAgY21kcy5hcHBlbmQoJ2NhdCB7MH0nLmZvcm1hdChmcmVxKGNwdV9p ZCwga2V5X3ZhbHVlKSkpCisgICAgICAgICAgICBvdXRwdXQgPSBzZWxmLmRfYV9jb24oJzsnLmpv aW4oY21kcykpCisgICAgICAgICAgICBmcmVxcyA9IFtpbnQoaXRlbSkgZm9yIGl0ZW0gaW4gb3V0 cHV0LnNwbGl0bGluZXMoKV0KKyAgICAgICAgICAgIGZvciBpbmRleCwgY3B1X2lkIGluIGVudW1l cmF0ZShzb3J0ZWQoY3B1X2luZm8ua2V5cygpKSk6CisgICAgICAgICAgICAgICAgY3B1X2luZm9b Y3B1X2lkXVtrZXlfdmFsdWVdID0gZnJlcXNbaW5kZXhdCisKKyAgICAgICAgIyBnZXQgaGlnaCBw cmlvcml0eSBjb3JlIGFuZCBub3JtYWwgY29yZQorICAgICAgICBiYXNlX2ZyZXFzX2luZm8gPSB7 fQorICAgICAgICBmb3IgY29yZV9pbmRleCwgdmFsdWUgaW4gY3B1X2luZm8uaXRlbXMoKToKKyAg ICAgICAgICAgIGJhc2VfZnJlcXVlbmN5ID0gdmFsdWUuZ2V0KCdiYXNlX2ZyZXF1ZW5jeScpCisg ICAgICAgICAgICBiYXNlX2ZyZXFzX2luZm8uc2V0ZGVmYXVsdChiYXNlX2ZyZXF1ZW5jeSwgW10p LmFwcGVuZChjb3JlX2luZGV4KQorICAgICAgICBiYXNlX2ZyZXFzID0gbGlzdChiYXNlX2ZyZXFz X2luZm8ua2V5cygpKQorICAgICAgICAjIGNwdSBzaG91bGQgaGF2ZSBoaWdoIHByaW9yaXR5IGNv cmUgYW5kIG5vcm1hbCBjb3JlCisgICAgICAgICMgaGlnaCBwcmlvcml0eSBjb3JlIGZyZXF1ZW5j eSBpcyBoaWdoZXIgdGhhbiBub3JtYWwgY29yZSBmcmVxdWVuY3kKKyAgICAgICAgaWYgbGVuKGJh c2VfZnJlcXMpIDw9IDEgb3IgXAorICAgICAgICAgICBub3QgYWxsKFtsZW4odmFsdWUpIGZvciB2 YWx1ZSBpbiBsaXN0KGJhc2VfZnJlcXNfaW5mby52YWx1ZXMoKSldKToKKyAgICAgICAgICAgIG1z ZyA9ICdjdXJyZW50IGNwdSBoYXMgbm8gaGlnaCBwcmlvcml0eSBjb3JlJworICAgICAgICAgICAg cmFpc2UgRXhjZXB0aW9uKG1zZykKKworICAgICAgICBoaWdoX3ByaV9mcmVxID0gbWF4KHNlbGYu YmFzZV9mcmVxc19pbmZvLmtleXMoKSkKKyAgICAgICAgaGlnaF9wcmlfY29yZXMgPSBiYXNlX2Zy ZXFzX2luZm9baGlnaF9wcmlfZnJlcV0KKyAgICAgICAgX2Jhc2VfZnJlcXNfaW5mbyA9IHt9Cisg ICAgICAgIGZvciBpbmRleCwgXyBpbiBlbnVtZXJhdGUoY3B1X3RvcG9zKToKKyAgICAgICAgICAg IF9iYXNlX2ZyZXFzX2luZm9baW5kZXhdID0gMSBpZiBpbmRleCBpbiBoaWdoX3ByaV9jb3JlcyBl bHNlIDAKKworICAgICAgICByZXR1cm4gX2Jhc2VfZnJlcXNfaW5mbworCisgICAgZGVmIGluaXRf dm1zX3BhcmFtcyhzZWxmKToKKyAgICAgICAgc2VsZi52bSA9IHNlbGYudmNwdV9tYXAgPSBzZWxm LnZjcHVfbHN0ID0gc2VsZi52bV9kdXQgPSBcCisgICAgICAgICAgICBzZWxmLmd1ZXN0X3Nlc3Np b24gPSBzZWxmLmlzX2d1ZXN0X29uID0gc2VsZi5pc192bV9vbiA9IE5vbmUKKyAgICAgICAgIyB2 bSBjb25maWcKKyAgICAgICAgc2VsZi52bV9uYW1lID0gJ3ZtMCcKKyAgICAgICAgc2VsZi52bV9t YXhfY2ggPSA4CisgICAgICAgIHNlbGYudm1fbG9nX2RpciA9ICcvdG1wL3Bvd2VybW9uaXRvcicK KyAgICAgICAgc2VsZi5jcmVhdGVfcG93ZXJtb25pdG9yX2ZvbGRlcigpCisKKyAgICBkZWYgY3Jl YXRlX3Bvd2VybW9uaXRvcl9mb2xkZXIoc2VsZik6CisgICAgICAgICMgY3JlYXRlIHRlbXBvcmFy eSBmb2xkZXIgZm9yIHBvd2VyIG1vbml0b3IKKyAgICAgICAgY21kID0gJ21rZGlyIC1wIHswfTsg Y2htb2QgNzc3IHswfScuZm9ybWF0KHNlbGYudm1fbG9nX2RpcikKKyAgICAgICAgc2VsZi5kX2Ff Y29uKGNtZCkKKworICAgIGRlZiBzdGFydF92bShzZWxmKToKKyAgICAgICAgIyBzZXQgdm0gaW5p dGlhbGl6ZSBwYXJhbWV0ZXJzCisgICAgICAgIHNlbGYuaW5pdF92bXNfcGFyYW1zKCkKKyAgICAg ICAgIyBzdGFydCB2bQorICAgICAgICBzZWxmLnZtID0gTGlidmlydEt2bShzZWxmLmR1dCwgc2Vs Zi52bV9uYW1lLCBzZWxmLnN1aXRlX25hbWUpCisgICAgICAgICMgcGFzcyBwZiB0byB2aXJ0dWFs IG1hY2hpbmUKKyAgICAgICAgcGNpX2FkZHIgPSBzZWxmLmR1dC5nZXRfcG9ydF9wY2koc2VsZi5k dXRfcG9ydHNbMF0pCisgICAgICAgICMgYWRkIGNoYW5uZWwKKyAgICAgICAgY2hfbmFtZSA9ICd2 aXJ0aW8uc2VyaWFsLnBvcnQucG93ZXJhZ2VudC57MH0nCisgICAgICAgIHZtX3BhdGggPSBvcy5w YXRoLmpvaW4oc2VsZi52bV9sb2dfZGlyLCAnezB9LnsxfScpCisgICAgICAgIGZvciBjbnQgaW4g cmFuZ2Uoc2VsZi52bV9tYXhfY2gpOgorICAgICAgICAgICAgY2hhbm5lbCA9IHsKKyAgICAgICAg ICAgICAgICAncGF0aCc6IHZtX3BhdGguZm9ybWF0KHNlbGYudm1fbmFtZSwgY250KSwKKyAgICAg ICAgICAgICAgICAnbmFtZSc6IGNoX25hbWUuZm9ybWF0KGNudCl9CisgICAgICAgICAgICBzZWxm LnZtLmFkZF92bV92aXJ0aW9fc2VyaWFsX2NoYW5uZWwoKipjaGFubmVsKQorICAgICAgICAjIGJv b3QgdXAgdm0KKyAgICAgICAgc2VsZi52bV9kdXQgPSBzZWxmLnZtLnN0YXJ0KCkKKyAgICAgICAg c2VsZi5pc192bV9vbiA9IFRydWUKKyAgICAgICAgc2VsZi52ZXJpZnkoc2VsZi52bV9kdXQsICJj cmVhdGUgdm1fZHV0IGZhaWwgISIpCisgICAgICAgIHNlbGYuYWRkX2NvbnNvbGUoc2VsZi52bV9k dXQuc2Vzc2lvbikKKyAgICAgICAgIyBnZXQgdmlydHVhbCBtYWNoaW5lIGNwdSBjb3JlcworICAg ICAgICBfdmNwdV9tYXAgPSBzZWxmLnZtLmdldF92bV9jcHUoKQorICAgICAgICBzZWxmLnZjcHVf bWFwID0gW2ludChpdGVtKSBmb3IgaXRlbSBpbiBfdmNwdV9tYXBdCisgICAgICAgIHNlbGYudmNw dV9sc3QgPSBbaW50KGl0ZW1bJ2NvcmUnXSkgZm9yIGl0ZW0gaW4gc2VsZi52bV9kdXQuY29yZXNd CisKKyAgICBkZWYgY2xvc2Vfdm0oc2VsZik6CisgICAgICAgICMgY2xvc2Ugdm0KKyAgICAgICAg aWYgc2VsZi5pc192bV9vbjoKKyAgICAgICAgICAgIGlmIHNlbGYuZ3Vlc3Rfc2Vzc2lvbjoKKyAg ICAgICAgICAgICAgICBzZWxmLnZtX2R1dC5jbG9zZV9zZXNzaW9uKHNlbGYuZ3Vlc3Rfc2Vzc2lv bikKKyAgICAgICAgICAgICAgICBzZWxmLmd1ZXN0X3Nlc3Npb24gPSBOb25lCisgICAgICAgICAg ICBzZWxmLnZtLnN0b3AoKQorICAgICAgICAgICAgc2VsZi5pc192bV9vbiA9IEZhbHNlCisgICAg ICAgICAgICBzZWxmLnZtID0gTm9uZQorICAgICAgICAgICAgc2VsZi5kdXQudmlydF9leGl0KCkK KyAgICAgICAgICAgIGNtZF9mbXQgPSAndmlyc2ggezB9IHsxfSA+IC9kZXYvbnVsbCAyPiYxJy5m b3JtYXQKKyAgICAgICAgICAgIGNtZHMgPSBbCisgICAgICAgICAgICAgICAgW2NtZF9mbXQoJ3No dXRkb3duJywgc2VsZi52bV9uYW1lKSwgJyMgJ10sCisgICAgICAgICAgICAgICAgW2NtZF9mbXQo J3VuZGVmaW5lJywgc2VsZi52bV9uYW1lKSwgJyMgJ10sIF0KKyAgICAgICAgICAgIHNlbGYuZF9h X2NvbihjbWRzKQorCisgICAgZGVmIGluaXRfdGVzdHBtZChzZWxmKToKKyAgICAgICAgc2VsZi50 ZXN0cG1kID0gJy9yb290L2RwZGsveDg2XzY0LW5hdGl2ZS1saW51eGFwcC1nY2MvYXBwL2RwZGst dGVzdHBtZCcKKworICAgIGRlZiBjbG9zZV90ZXN0cG1kKHNlbGYpOgorICAgICAgICBpZiBub3Qg c2VsZi5pc190ZXN0cG1kX29uOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIHNlbGYubG9n Z2VyLmluZm8oJ2Nsb3NpbmcgdGVzdHBtZCAuLicpCisgICAgICAgIHNlbGYuZF9jb24oWydxdWl0 JywgJyMgJywgMTVdKQorICAgICAgICBzZWxmLmlzX3Rlc3RwbWRfb24gPSBGYWxzZQorCisgICAg ZGVmIGluaXRfdm1fcG93ZXJfbWdyKHNlbGYpOgorICAgICAgICBzZWxmLnZtX3Bvd2VyX21nciA9 IHNlbGYucHJlcGFyZV9iaW5hcnkoJ3ZtX3Bvd2VyX21hbmFnZXInKQorCisgICAgZGVmIGNsb3Nl X3ZtX3Bvd2VyX21ncihzZWxmKToKKyAgICAgICAgaWYgbm90IHNlbGYuaXNfbWdyX29uOgorICAg ICAgICAgICAgcmV0dXJuCisgICAgICAgIHNlbGYubG9nZ2VyLmluZm8oJ2Nsb3Npbmcgdm1fcG93 ZXJfbWdyIC4uJykKKyAgICAgICAgc2VsZi5kX2NvbihbJ3F1aXQnLCAnIyAnLCAxNV0pCisgICAg ICAgIHNlbGYuaXNfbWdyX29uID0gRmFsc2UKKworICAgIGRlZiBpbml0X2d1ZXN0X21ncihzZWxm KToKKyAgICAgICAgbmFtZSA9ICd2bV9wb3dlcl9tYW5hZ2VyL2d1ZXN0X2NsaScKKyAgICAgICAg c2VsZi5ndWVzdF9jbGkgPSBzZWxmLnByZXBhcmVfYmluYXJ5KG5hbWUsIGhvc3RfY3JiPXNlbGYu dm1fZHV0KQorICAgICAgICBzZWxmLmd1ZXN0X2Nvbl9uYW1lID0gXAorICAgICAgICAgICAgJ18n LmpvaW4oW3NlbGYudm1fZHV0Lk5BTUUsIG5hbWUucmVwbGFjZSgnLycsICctJyldKQorICAgICAg ICBzZWxmLmd1ZXN0X3Nlc3Npb24gPSBzZWxmLnZtX2R1dC5jcmVhdGVfc2Vzc2lvbihzZWxmLmd1 ZXN0X2Nvbl9uYW1lKQorICAgICAgICBzZWxmLmFkZF9jb25zb2xlKHNlbGYuZ3Vlc3Rfc2Vzc2lv bikKKworICAgIGRlZiBjbG9zZV9ndWVzdF9tZ3Ioc2VsZik6CisgICAgICAgIGlmIG5vdCBzZWxm LmlzX2d1ZXN0X29uOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIHNlbGYubG9nZ2VyLmlu Zm8oJ2Nsb3NpbmcgZ3Vlc3RfbWdyIC4uJykKKyAgICAgICAgc2VsZi52bV9nX2NvbigicXVpdCIp CisgICAgICAgIHNlbGYuaXNfZ3Vlc3Rfb24gPSBGYWxzZQorCisgICAgZGVmIGNoZWNrX2NwdXBv d2VyX3Rvb2woc2VsZik6CisgICAgICAgIGNtZCA9ICJ3aGVyZWlzIGNwdXBvd2VyID4gL2Rldi9u dWxsIDI+JjE7IGVjaG8gJD8iCisgICAgICAgIG91dHB1dCA9IHNlbGYuZF9hX2NvbihjbWQpCisg ICAgICAgIHN0YXR1cyA9IFRydWUgaWYgb3V0cHV0IGFuZCBvdXRwdXQuc3RyaXAoKSA9PSAiMCIg ZWxzZSBGYWxzZQorICAgICAgICBtc2cgPSAnY3B1cG93ZXIgdG9vbCBoYXZlIG5vdCBpbnN0YWxs ZWQgb24gRFVUJworICAgICAgICBzZWxmLnZlcmlmeShzdGF0dXMsIG1zZykKKworICAgIGRlZiB2 ZXJpZnlfcG93ZXJfZHJpdmVyKHNlbGYpOgorICAgICAgICBleHBlY3RlZF9kcnYgPSAnYWNwaS1j cHVmcmVxJworICAgICAgICBwb3dlcl9kcnYgPSBzZWxmLmdldF9zeXNfcG93ZXJfZHJpdmVyKCkK KyAgICAgICAgbXNnID0gInswfSBzaG91bGQgd29yayB3aXRoIHsxfSBkcml2ZXIgb24gRFVUIi5m b3JtYXQoCisgICAgICAgICAgICBzZWxmLnN1aXRlX25hbWUsIGV4cGVjdGVkX2RydikKKyAgICAg ICAgc2VsZi52ZXJpZnkocG93ZXJfZHJ2ID09IGV4cGVjdGVkX2RydiwgbXNnKQorCisgICAgZGVm IHByZXNldF90ZXN0X2Vudmlyb25tZW50KHNlbGYpOgorICAgICAgICBzZWxmLmlzX21ncl9vbiA9 IE5vbmUKKyAgICAgICAgc2VsZi5leHRfY29uID0ge30KKyAgICAgICAgIyBtb2Rwcm9iZSBtc3Ig bW9kdWxlIHRvIGxldCB0aGUgYXBwbGljYXRpb24gY2FuIGdldCB0aGUgQ1BVIEhXIGluZm8KKyAg ICAgICAgc2VsZi5kX2FfY29uKCdtb2Rwcm9iZSBtc3InKQorICAgICAgICBzZWxmLmRfYV9jb24o J2NwdXBvd2VyIGZyZXF1ZW5jeS1zZXQgLWcgdXNlcnNwYWNlJykKKyAgICAgICAgc2VsZi5kdXQu aW5pdF9jb3JlX2xpc3RfdW5jYWNoZWRfbGludXgoKQorICAgICAgICAjIGNoZWNrIGlmIGNwdSBz dXBwb3J0IGJwZiBmZWF0dXJlCisgICAgICAgIHNlbGYuYmFzZV9mcmVxc19pbmZvID0gc2VsZi5n ZXRfYWxsX2NwdV9hdHRycygpCisgICAgICAgICMgYm9vdCB1cCB2bQorICAgICAgICBzZWxmLnN0 YXJ0X3ZtKCkKKyAgICAgICAgIyBpbml0IGJpbmFyeQorICAgICAgICBzZWxmLmluaXRfdm1fcG93 ZXJfbWdyKCkKKyAgICAgICAgc2VsZi5pbml0X2d1ZXN0X21ncigpCisgICAgICAgIHNlbGYuaW5p dF90ZXN0cG1kKCkKKworCisgICAgZGVmIHZlcmlmeV9pbmplY3RfbWFsZm9ybWVkX2pzb25fdG9f Zmlmb19jaGFubmVsKHNlbGYpOgorICAgICAgICAjIFRlc3QgQ2FzZTE6IEluamVjdCBNYWxmb3Jt ZWQgSlNPTiBDb21tYW5kIGZpbGUgdG8gZmlmbyBjaGFubmVsCisgICAgICAgICMgMS4gQ3JlYXRl IHBvd2VybW9uaXRvciBmb2xkIGZvciB2bV9wb3dlcl9tYW5hZ2VyIHNhbXBsZTo6CisgICAgICAg ICMgICAgIG1rZGlyIC90bXAvcG93ZXJtb25pdG9yCisgICAgICAgICMgICAgIGNobW9kIDc3NyAv dG1wL3Bvd2VybW9uaXRvcgorICAgICAgICAjIDIuIExhdW5jaCBWTSBwb3dlciBtYW5hZ2VyIHNh bXBsZTo6CisgICAgICAgICMgICAgIC4vZXhhbXBsZXMvdm1fcG93ZXJfbWFuYWdlci9idWlsZC92 bV9wb3dlcl9tZ3IgLWwgMS0zIC1uIDQgLS1maWxlLXByZWZpeD10ZXN0MSAtLW5vLXBjaQorICAg ICAgICAjIDMuIFByZXBhcmUgcG9saWN5IGluIEpTT04gZm9ybWF0IHRoZW4gc2VuZCBpdCB0byB0 aGUgZmlmbyBjaGFubmVsOgorICAgICAgICAjICAgICBQcmVwYXJlIGRpZmZlcmVudCBjb21tYW5k IGluIEpTT04gZm9ybWF0IHRoZW4gc2VuZCBpdCB0byB0aGUgZmlmbyBjaGFubmVsCisgICAgICAg ICMgICAgIE1vZGlmeSAibmFtZSIsICJyZXNvdXJjZV9pZCIsICJjb21tYW5kIiB0byBsYXJnZSBj aGFyYWN0ZXIgc3RyaW5nIHRvIGNoZWNrIGlmIHRoZSB2bV9wb3dlcl9tZ3Igc2FtcGxlIHdpbGwg Y3Jhc2gKKyAgICAgICAgIyAgICAgRm9yIGV4YW1wbGU6OgorICAgICAgICAjICAgICAgIHsicG9s aWN5IjogeworICAgICAgICAjICAgICAgICAgIm5hbWUiOiAiMDEyMzQ1Njc4OTAxMjM0NDU2Nzg5 MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMDEyMzQ1Njc4OTAiLAorICAgICAgICAjICAgICAgICAgImNv bW1hbmQiOiAiY3JlYXRlIiwKKyAgICAgICAgIyAgICAgICAgICJwb2xpY3lfdHlwZSI6ICJXT1JL TE9BRCIsCisgICAgICAgICMgICAgICAgICAid29ya2xvYWQiOiAiTUVESVVNIiwKKyAgICAgICAg IyAgICAgICAgICJjb3JlX2xpc3QiOlsgMjJdCisgICAgICAgICMgICAgICAgfX0KKyAgICAgICAg IyA0LiBTZW5kIEpzb24gZm9ybWF0IGNvbW1hbmQgdG8gdGhlIGZpZm8gY2hhbm5lbDo6CisgICAg ICAgICMgICAgIGNhdCBjb21tYW5kLmpzb24gPi90bXAvcG93ZXJtb25pdG9yL2ZpZm8xCisKKyAg ICAgICAgIyBzdGFydCB2bV9wb3dlcl9tZ3IKKyAgICAgICAgb3B0aW9uID0gJyAtdiAtbCAxLTMg LW4gNCAtLWZpbGUtcHJlZml4PXRlc3QxIC0tbm8tcGNpICcKKyAgICAgICAgY21kID0gWycgJy5q b2luKFtzZWxmLnZtX3Bvd2VyX21nciwgb3B0aW9uXSksICd2bXBvd2VyPiAnLCAzMF0KKyAgICAg ICAgc2VsZi5kX2NvbihjbWQpCisgICAgICAgIHNlbGYuaXNfbWdyX29uID0gVHJ1ZQorCisgICAg ICAgICMgcHJlcGFyZSBhbiBzZW5kIHRoZSBqc29uIGZpbGUgdG8gZmlmbworICAgICAgICBlY2hv X2pzb24gPSAoCisgICAgICAgICAgICAnZWNobyB7XFwicG9saWN5XFwiOiB7JworICAgICAgICAg ICAgJyAgXFwibmFtZVxcIjogXFwiMDEyMzQ1Njc4OTAxMjM0NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0 NTY3ODkwMDEyMzQ1Njc4OTBcXCIsJworICAgICAgICAgICAgJyAgXFwiY29tbWFuZFxcIjogXFwi Y3JlYXRlXFwiLCcKKyAgICAgICAgICAgICcgIFxcInBvbGljeV90eXBlXFwiOiBcXCJXT1JLTE9B RFxcIiwnCisgICAgICAgICAgICAnICBcXCJ3b3JrbG9hZFxcIjogXFwiTUVESVVNXFwiJworICAg ICAgICAgICAgJ319ID4gL3RtcC9jb21tYW5kLmpzb247JykKKyAgICAgICAgY2F0X2pzb24gPSAn Y2F0IC90bXAvY29tbWFuZC5qc29uID4gL3RtcC9wb3dlcm1vbml0b3IvZmlmbzEnCisgICAgICAg IHNlbGYuZF9hX2NvbihbJyAnLmpvaW4oW2VjaG9fanNvbiwgY2F0X2pzb25dKSwgJyMgJywgMTBd KQorCisgICAgICAgIG91dCA9IHNlbGYuZF9jb24oWydzaG93X2NwdV9mcmVxIDEnLCAndm1wb3dl cj4gJywgMjBdKQorICAgICAgICBzZWxmLnZlcmlmeSgnQ29yZSAxIGZyZXF1ZW5jeTonIGluIG91 dCwgJ3ZtX3Bvd2VyX21hbmFnZXIgZGlkIG5vdCB3b3JrIGFzIGV4cGVjdGVkJykKKworCisgICAg ZGVmIHZlcmlmeV9zZW5kX2ludmFsaWRfY21kX3Rocm91Z2hfanNvbl9jaG4oc2VsZik6CisgICAg ICAgICMgVGVzdCBDYXNlMiA6IFNlbmQgaW52YWxpZCBjb21tYW5kIHRocm91Z2ggSlNPTiBjaGFu bmVsCisgICAgICAgICMgMS4gQ3JlYXRlIHBvd2VybW9uaXRvciBmb2xkIGZvciB2bV9wb3dlcl9t YW5hZ2VyIHNhbXBsZTo6CisgICAgICAgICMgICAgIG1rZGlyIC90bXAvcG93ZXJtb25pdG9yCisg ICAgICAgICMgICAgIGNobW9kIDc3NyAvdG1wL3Bvd2VybW9uaXRvcgorICAgICAgICAjIDIuIExh dW5jaCBWTSBwb3dlciBtYW5hZ2VyIHNhbXBsZTo6CisgICAgICAgICMgICAgIC4vZXhhbXBsZXMv dm1fcG93ZXJfbWFuYWdlci9idWlsZC92bV9wb3dlcl9tZ3IgLWwgMS0zIC1uIDQgLS1maWxlLXBy ZWZpeD10ZXN0MSAtLW5vLXBjaQorICAgICAgICAjIDMuIFByZXBhcmUgcG9saWN5IGluIEpTT04g Zm9ybWF0IHRoZW4gc2VuZCBpdCB0byB0aGUgZmlmbyBjaGFubmVsOgorICAgICAgICAjICAgICBQ cmVwYXJlIGludmFsaWQgcG93ZXIgY29tbWFuZCwgZm9yIGV4YW1wbGUsIGNvcmUgbGlzdCBhYm92 ZSB0aGUgbWF4IGNvcmUgbnVtYmVyLgorICAgICAgICAjICAgICBGb3IgZXhhbXBsZTo6CisgICAg ICAgICMgICAgICAgeyJwb2xpY3kiOiB7CisgICAgICAgICMgICAgICAgICAibmFtZSI6ICJVYnVu dHUiLAorICAgICAgICAjICAgICAgICAgImNvbW1hbmQiOiAiY3JlYXRlIiwKKyAgICAgICAgIyAg ICAgICAgICJwb2xpY3lfdHlwZSI6ICJXT1JLTE9BRCIsCisgICAgICAgICMgICAgICAgICAid29y a2xvYWQiOiAiTUVESVVNXzExMSIKKyAgICAgICAgIyAgICAgICB9fQorICAgICAgICAjICAgICAg IHsicG9saWN5IjogeworICAgICAgICAjICAgICAgICAgIm5hbWUiOiAiVWJ1bnR1IiwKKyAgICAg ICAgIyAgICAgICAgICJjb21tYW5kIjogImNyZWF0ZSIsCisgICAgICAgICMgICAgICAgICAicG9s aWN5X3R5cGUiOiAiV09SS0xPQURfMTExIiwKKyAgICAgICAgIyAgICAgICAgICJ3b3JrbG9hZCI6 ICJNRURJVU0iCisgICAgICAgICMgICAgICAgfX0KKyAgICAgICAgIyA0LiBTZW5kIEpzb24gZm9y bWF0IGNvbW1hbmQgdG8gdGhlIGZpZm8gY2hhbm5lbDo6CisgICAgICAgICMgCWNhdCBjb21tYW5k Lmpzb24gPi90bXAvcG93ZXJtb25pdG9yL2ZpZm8xCisKKyAgICAgICAgIyBzdGFydCB2bV9wb3dl cl9tZ3IKKyAgICAgICAgb3B0aW9uID0gJyAtdiAtbCAxLTMgLW4gNCAtLWZpbGUtcHJlZml4PXRl c3QxIC0tbm8tcGNpICcKKyAgICAgICAgY21kID0gWycgJy5qb2luKFtzZWxmLnZtX3Bvd2VyX21n ciwgb3B0aW9uXSksICd2bXBvd2VyPicsIDMwXQorICAgICAgICBzZWxmLmRfY29uKGNtZCkKKyAg ICAgICAgc2VsZi5pc19tZ3Jfb24gPSBUcnVlCisKKyAgICAgICAgIyBwcmVwYXJlIGFuIHNlbiB0 aGUganNvbiBmaWxlIHRvIGZpZm8KKyAgICAgICAgZWNob19qc29uID0gKAorICAgICAgICAgICAg J2VjaG8ge1xcInBvbGljeVxcIjogeycKKyAgICAgICAgICAgICcgIFxcIm5hbWVcXCI6IFxcIlVi dW50dVxcIiwnCisgICAgICAgICAgICAnICBcXCJjb21tYW5kXFwiOiBcXCJjcmVhdGVcXCIsJwor ICAgICAgICAgICAgJyAgXFwicG9saWN5X3R5cGVcXCI6IFxcIldPUktMT0FEXFwiLCcKKyAgICAg ICAgICAgICcgIFxcIndvcmtsb2FkXFwiOiBcXCJNRURJVU1fMTExXFwiJworICAgICAgICAgICAg J319ID4gL3RtcC9jb21tYW5kLmpzb247JykKKyAgICAgICAgY2F0X2pzb24gPSAnY2F0IC90bXAv Y29tbWFuZC5qc29uID4gL3RtcC9wb3dlcm1vbml0b3IvZmlmbzEnCisgICAgICAgIG91dCA9IHNl bGYuZF9jb24oWydzaG93X2NwdV9mcmVxIDEnLCAndm1wb3dlcj4nLCAyMF0pCisgICAgICAgIHNl bGYudmVyaWZ5KCdDb3JlIDEgZnJlcXVlbmN5OicgaW4gb3V0LCAndm1fcG93ZXJfbWFuYWdlciBk aWQgbm90IHdvcmsgYXMgZXhwZWN0ZWQnKQorCisgICAgICAgIHNlbGYuZF9hX2NvbihbJyAnLmpv aW4oW2VjaG9fanNvbiwgY2F0X2pzb25dKSwgJyMnLCAxMF0pCisgICAgICAgIGVjaG9fanNvbiA9 ICgKKyAgICAgICAgICAgICdlY2hvIHtcXCJwb2xpY3lcXCI6IHsnCisgICAgICAgICAgICAnICBc XCJuYW1lXFwiOiBcXCJVYnVudHVcXCIsJworICAgICAgICAgICAgJyAgXFwiY29tbWFuZFxcIjog XFwiY3JlYXRlXFwiLCcKKyAgICAgICAgICAgICcgIFxcInBvbGljeV90eXBlXFwiOiBcXCJXT1JL TE9BRF8xMTFcXCIsJworICAgICAgICAgICAgJyAgXFwid29ya2xvYWRcXCI6IFxcIk1FRElVTVxc IicKKyAgICAgICAgICAgICd9fSA+IC90bXAvY29tbWFuZC5qc29uOycpCisgICAgICAgIGNhdF9q c29uID0gJ2NhdCAvdG1wL2NvbW1hbmQuanNvbiA+IC90bXAvcG93ZXJtb25pdG9yL2ZpZm8xJwor ICAgICAgICBzZWxmLmRfYV9jb24oWycgJy5qb2luKFtlY2hvX2pzb24sIGNhdF9qc29uXSksICcj JywgMTBdKQorCisgICAgICAgIG91dCA9IHNlbGYuZF9jb24oWydzaG93X2NwdV9mcmVxIDEnLCAn dm1wb3dlcj4nLCAyMF0pCisgICAgICAgIHNlbGYudmVyaWZ5KCdDb3JlIDEgZnJlcXVlbmN5Oicg aW4gb3V0LCAndm1fcG93ZXJfbWFuYWdlciBkaWQgbm90IHdvcmsgYXMgZXhwZWN0ZWQnKQorCisK KyAgICBkZWYgdmVyaWZ5X2hvc3RfcG93ZXJfY2hlY2tfcG9saWN5X2Zyb21fdW50cnVzdGVkX3Zt KHNlbGYpOgorICAgICAgICAjIFRlc3QgQ2FzZTMgOiBTZW5kIG1hbGZvcm1lZCBjb21tYW5kIHRv IGhvc3QgcG93ZXIgZGFlbW9uIGFwcAorICAgICAgICAjIDEuIExhdW5jaCBWTSBieSB1c2luZyBs aWJ2aXJ0LCBvbmUgTklDIHNob3VsZCBiZSBjb25maWd1cmVkIGFzIFBDSSBwYXNzLXRocm91Z2hw dXQgdG8gdGhlIFZNOjoKKyAgICAgICAgIyB2aXJzaCBzdGFydCBbVk0gbmFtZV0KKyAgICAgICAg IyAyLiBMYXVuY2ggVk0gcG93ZXIgbWFuYWdlciBzYW1wbGUgb24gdGhlIGhvc3QgdG8gbW9uaXRv ciB0aGUgY2hhbm5lbCBmcm9tIFZNOjoKKyAgICAgICAgIyAuL2V4YW1wbGVzL3ZtX3Bvd2VyX21h bmFnZXIvYnVpbGQvdm1fcG93ZXJfbWdyIC1sIDEyLTE0IC1uIDQgLS1uby1wY2kKKyAgICAgICAg IyA+44CAYWRkX3ZtIFt2bSBuYW1lXQorICAgICAgICAjID7jgIBhZGRfY2hhbm5lbHMgW3ZtIG5h bWVdIGFsbAorICAgICAgICAjID7jgIBzZXRfY2hhbm5lbF9zdGF0dXMgW3ZtIG5hbWVdIGFsbCBl bmFibGVkCisgICAgICAgICMgPuOAgHNob3dfdm0gW3ZtIG5hbWVdCisgICAgICAgICMgQ2hlY2sg dGhlIGludmFsaWQgaW5wdXQgY29tbWFuZCBmb3Igdm1fcG93ZXJfbWdyIHNhbXBsZTo6CisgICAg ICAgICMgPiBhZGRfY2hhbm5lbHMgdWJ1bnR1IDEyOAorICAgICAgICAjID4gYWRkX2NoYW5uZWwg dWJ1bnR1IDEwMDAwMDAwMDAwMDAwMDAwCisgICAgICAgICMgMy4gSW4gdGhlIFZNLCBsYXVuY2gg Z3Vlc3Rfdm1fcG93ZXJfbWdyIHRvIHNldCBhbmQgc2VuZCB0aGUgcG93ZXIgbWFuYWdlciBwb2xp Y3kgdG8gdGhlIGhvc3QgcG93ZXIgc2FtcGxlOjoKKyAgICAgICAgIyAuL2V4YW1wbGVzL3ZtX3Bv d2VyX21hbmFnZXIvZ3Vlc3RfY2xpL2J1aWxkL2d1ZXN0X3ZtX3Bvd2VyX21nciAtYyAweGZmIC1u IDQgLW0gMTAyNCAtLW5vLXBjaSAtLWZpbGUtcHJlZml4PXlhb2xlaSBcCisgICAgICAgICMgLS0g LS12bS1uYW1lPXVidW50dSAtLXZjcHUtbGlzdD0wLTcKKyAgICAgICAgIyA+IHNldF9jcHVfZnJl cSAxMjggZG93bgorICAgICAgICAjID4gc2V0X2NwdV9mcmVxIDEwMDAwMDAwMDAwMDAgZG93bgor ICAgICAgICAjID4gc2V0X2NwdV9mcmVxIC0xIGRvd24KKyAgICAgICAgIyBhbHNvIHRyeSBvdGhl ciBjb21tYW5kczo6CisgICAgICAgICMgIjx1cHxkb3dufG1pbnxtYXh8ZW5hYmxlX3R1cmJvfGRp c2FibGVfdHVyYm8+IgorICAgICAgICAjIENoZWNrIHBvaW50OuOAgE5vIGNyYXNoIHNob3VsZCBi ZSBvY2N1ciBhdCB2bV9wb3dlcl9tZ3Igc2FtcGxlCisKKyAgICAgICAgIyBzdGFydCB2bV9wb3dl cl9tZ3IKKyAgICAgICAgb3B0aW9uID0gJyAtdiAtbCAxLTMgLW4gNCAtLWZpbGUtcHJlZml4PXRl c3QxIC0tbm8tcGNpICcKKyAgICAgICAgY21kID0gWycgJy5qb2luKFtzZWxmLnZtX3Bvd2VyX21n ciwgb3B0aW9uXSksICd2bXBvd2VyPicsIDMwXQorICAgICAgICBzZWxmLmRfY29uKGNtZCkKKyAg ICAgICAgc2VsZi5pc19tZ3Jfb24gPSBUcnVlCisKKyAgICAgICAgc2VsZi5kX2NvbihbJ2FkZF92 bSB7fScuZm9ybWF0KHNlbGYudm1fbmFtZSksICd2bXBvd2VyPicsIDVdKQorICAgICAgICBzZWxm LmRfY29uKFsnYWRkX2NoYW5uZWxzIHt9IGFsbCcuZm9ybWF0KHNlbGYudm1fbmFtZSksICd2bXBv d2VyPicsIDVdKQorICAgICAgICBzZWxmLmRfY29uKFsnYWRkX2NoYW5uZWxzX3N0YXR1cyB7fSBh bGwnLmZvcm1hdChzZWxmLnZtX25hbWUpLCAndm1wb3dlcj4nLCA1XSkKKyAgICAgICAgdm1faW5m byA9IHNlbGYuZF9jb24oWydzaG93X3ZtIHt9Jy5mb3JtYXQoc2VsZi52bV9uYW1lKSwgJ3ZtcG93 ZXI+JywgNV0pCisgICAgICAgIHNlbGYudmVyaWZ5KCdDT05ORUNURUQnIGluIHZtX2luZm8sICd2 bV9wb3dlcl9tYW5hZ2VyIGRpZCBub3Qgd29yayBhcyBleHBlY3RlZCcpCisKKyAgICAgICAgb3V0 ID0gc2VsZi5kX2NvbihbJ2FkZF9jaGFubmVscyB1YnVudHUgMTI4JywgJ3ZtcG93ZXI+JywgNV0p CisgICAgICAgIHNlbGYudmVyaWZ5KCJTZWdtZW50YXRpb24gZmF1bHQiIG5vdCBpbiBvdXQgYW5k ICdjb3JlIGR1bXAnIG5vdCBpbiBvdXQsCisgICAgICAgICAgICAgICAgICAgICJTZWdtZW50YXRp b24gZmF1bHQgb3IgY29yZSBkdW1wZWQgaGFwcGVuZWQiKQorCisgICAgICAgIG91dCA9IHNlbGYu ZF9jb24oWydhZGRfY2hhbm5lbCB1YnVudHUgMTAwMDAwMDAwMDAwMDAwMDAnLCAndm1wb3dlcj4n LCA1XSkKKyAgICAgICAgc2VsZi52ZXJpZnkoIlNlZ21lbnRhdGlvbiBmYXVsdCIgbm90IGluIG91 dCBhbmQgJ2NvcmUgZHVtcCcgbm90IGluIG91dCwKKyAgICAgICAgICAgICAgICAgICAgIlNlZ21l bnRhdGlvbiBmYXVsdCBvciBjb3JlIGR1bXBlZCBoYXBwZW5lZCIpCisKKyAgICAgICAgIyBzdGFy dCB2bV9wb3dlcl9tZ3IKKyAgICAgICAgcHJvbXB0ID0gciJ2bXBvd2VyXChndWVzdFwpPiIKKyAg ICAgICAgdm1fcHdyX3F1ZXN0ID0gc2VsZi5ndWVzdF9jbGkgKyAnIC12IC1jIDB4ZmYgLW4gNCAt bSAxMDI0IC0tbm8tcGNpIC0tZmlsZS1wcmVmaXg9eWFvbGVpIC0tIC0tdm0tbmFtZT11YnVudHUg LS12Y3B1LWxpc3Q9MC03ICcKKyAgICAgICAgc2VsZi52bV9nX2Nvbihbdm1fcHdyX3F1ZXN0LCBw cm9tcHQsIDEyMF0pCisgICAgICAgIHNlbGYuaXNfZ3Vlc3Rfb24gPSBUcnVlCisKKyAgICAgICAg Y29tbWFuZHMgPSBbJ3VwJywgJ2Rvd24nLCAnbWluJywgJ21heCcsICdlbmFibGVfdHVyYm8nLCAn ZGlzYWJsZV90dXJibyddCisgICAgICAgIG51bWJlcnMgPSBbJzEyOCcsICcxMDAwMDAwMDAwMDAw JywgJy0xJ10KKyAgICAgICAgZm9yIGNvbW1hbmQgaW4gY29tbWFuZHM6CisgICAgICAgICAgICBm b3IgbnVtYmVyIGluIG51bWJlcnM6CisgICAgICAgICAgICAgICAgY21kX2xpbmUgPSAnc2V0X2Nw dV9mcmVxIHt9IHt9Jy5mb3JtYXQobnVtYmVyLCBjb21tYW5kKQorICAgICAgICAgICAgICAgIG91 dCA9IHNlbGYudm1fZ19jb24oW2NtZF9saW5lLCBwcm9tcHQsIDEwXSkKKyAgICAgICAgICAgICAg ICBzZWxmLmxvZ2dlci5pbmZvKCd2bXBvd2VyKGd1ZXN0KT4ge30gLS0+IG91dDoge30nLmZvcm1h dChjbWRfbGluZSwgb3V0KSkKKyAgICAgICAgICAgICAgICBzZWxmLnZlcmlmeSgiU2VnbWVudGF0 aW9uIGZhdWx0IiBub3QgaW4gb3V0IGFuZCAnY29yZSBkdW1wJyBub3QgaW4gb3V0LAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICJTZWdtZW50YXRpb24gZmF1bHQgb3IgY29yZSBkdW1wZWQg aGFwcGVuZWQiKQorCisKKyAgICBkZWYgdmVyaWZ5X3RyYWZmaWNfcG9saWN5X3Rlc3RfYmFzZWRf b25fanNvbihzZWxmKToKKyAgICAgICAgIyBUZXN0IENhc2U0IDogVFJBRkZJQyBQb2xpY3kgVGVz dCBiYXNlZCBvbiBKU09OIGNvbmZpZ3VyZSBmaWxlIHdpdGggbGFyZ2UgaW50ZWdlciBudW1iZXIK KyAgICAgICAgIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgICAgICMgU3Rl cDEuIEdlbmVyYXRlIDEgVkYgdW5kZXIgaWdiX3VpbyBkcml2ZXIsIGxhdW5jaCB2bV9wb3dlcl9t Z3Igc2FtcGxlIHdpdGggUEYsIGZvciBleGFtcGxlOgorICAgICAgICAjIAllY2hvIDEgPiAvc3lz L2J1cy9wY2kvZHJpdmVycy9pZ2JfdWlvLzAwMDBcOjgyXDowMC4wL21heF92ZnMKKyAgICAgICAg IyAJLi9leGFtcGxlcy92bV9wb3dlcl9tYW5hZ2VyL2J1aWxkL3ZtX3Bvd2VyX21nciAtbCAxLTQg LW4gNCAtLXNvY2tldC1tZW09MTAyNCwxMDI0IC0tZmlsZS1wcmVmaXg9dGVzdDEgLXcgODI6MDAu MCAtLSAtcCAweDAxCisgICAgICAgICMgU3RlcCAyLiBMYXVuY2ggdGVzdHBtZCB3aXRoIFZGCisg ICAgICAgICMgCS4veDg2XzY0LW5hdGl2ZS1saW51eGFwcC1nY2MvYXBwL3Rlc3RwbWQgLWwgNS02 IC1uIDQgLS1zb2NrZXQtbWVtPTEwMjQsMTAyNCAtLWZpbGUtcHJlZml4PXRlc3QyIC13IDAwMDA6 ODI6MDIuMCAtLSAtaQorICAgICAgICAjIAk+c2V0IGZ3ZCBtYWNzd2FwCisgICAgICAgICMgCT5z dGFydAorICAgICAgICAjIFN0ZXAgMy4gUHJlcGFyZSB0cmFmZmljIHBvbGljeSBpbiBKU09OIGZv cm1hdCB0aGVuIHNlbmQgaXQgdG8gdGhlIHBvd2VyIGRlbW9uIHNhbXBsZSwgcHV0IHRoZSBWRiBN QUMgaW50byB0aGUgbWFjX2xpc3Q6CisgICAgICAgICMgCXsicG9saWN5IjogeworICAgICAgICAj IAkgICJuYW1lIjogInVidW50dSIsCisgICAgICAgICMgCSAgImNvbW1hbmQiOiAiY3JlYXRlIiwK KyAgICAgICAgIyAJICAicG9saWN5X3R5cGUiOiAiVFJBRkZJQyIsCisgICAgICAgICMgICAgICJt YXhfcGFja2V0X3RocmVzaCI6IDUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCwKKyAgICAg ICAgIyAJICAiYXZnX3BhY2tldF90aHJlc2giOiAzMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAsCisgICAgICAgICMgCSAgIm1hY19saXN0IjpbICJFMDpFMDpFMDpFMDpGMDpGMCJdCisgICAg ICAgICMgCX19CisgICAgICAgICMgCWNhdCB0cmFmZmljLmpzb24gPi90bXAvcG93ZXJtb25pdG9y L2ZpZm8zCisgICAgICAgICMgQ2hlY2sgcG9pbnQ644CATm8gY3Jhc2ggc2hvdWxkIGJlIG9jY3Vy IGF0IHZtX3Bvd2VyX21nciBzYW1wbGUKKworICAgICAgICAjIHNlbGYuZF9jb24oWydlY2hvIDEg PiAvc3lzL2J1cy9wY2kvZHJpdmVycy9pZ2JfdWlvLzAwMDBcOjgyXDowMC4wL21heF92ZnMnLCAn IycsIDEwXSkKKyAgICAgICAgc2VsZi5kX2NvbihbZidlY2hvIDEgPiAiL3N5cy9idXMvcGNpL2Ry aXZlcnMvdmZpby1wY2kve3NlbGYucG9ydF9wY2l9L3NyaW92X251bXZmcyInLCAnIycsIDEwXSkK KworICAgICAgICAjIHN0YXJ0IHZtX3Bvd2VyX21ncgorICAgICAgICBjbWQgPSBmJ3tzZWxmLnZt X3Bvd2VyX21ncn0gLWwgMS00IC1uIDQgLS1zb2NrZXQtbWVtPTEwMjQsMTAyNCAtLWZpbGUtcHJl Zml4PXRlc3QxIC13IHtzZWxmLnBvcnRfcGNpfSAtLSAtcCAweDAxJworICAgICAgICBzZWxmLmRf YV9jb24oW2NtZCwgJ3ZtcG93ZXI+JywgMzBdKQorICAgICAgICBzZWxmLmlzX21ncl9vbiA9IFRy dWUKKworICAgICAgICB2bV9pbmZvID0gc2VsZi5kX2FfY29uKFsnc2hvd19jcHVfZnJlcSAxJywg J3ZtcG93ZXI+JywgNV0pCisgICAgICAgIHNlbGYubG9nZ2VyLmluZm8odm1faW5mbykKKworICAg ICAgICAjIFN0ZXAgMi4gIExhdW5jaCB0ZXN0cG1kIHdpdGggVkYKKyAgICAgICAgY21kID0gZid7 c2VsZi50ZXN0cG1kfSAtbCA1LTYgLW4gNCAtLXNvY2tldC1tZW09MTAyNCwxMDI0IC0tZmlsZS1w cmVmaXg9dGVzdDIgLXcge3NlbGYucG9ydF9wY2l9IC0tIC1pJworICAgICAgICBzZWxmLmRfY29u KFtjbWQsICd0ZXN0cG1kPicsIDMwXSkKKyAgICAgICAgc2VsZi5pc190ZXN0cG1kX29uID0gVHJ1 ZQorCisgICAgICAgIHNlbGYuZF9jb24oWydzZXQgZndkIG1hY3N3YXAnLCAndGVzdHBtZD4nLCA1 XSkKKyAgICAgICAgc2VsZi5kX2NvbihbJ3N0YXJ0JywgJ3Rlc3RwbWQ+JywgNV0pCisgICAgICAg IHNlbGYuY2xvc2VfdGVzdHBtZCgpCisKKyAgICAgICAgIyBwcmVwYXJlIGFuIHNlbiB0aGUganNv biBmaWxlIHRvIGZpZm8KKyAgICAgICAgZWNob19qc29uID0gKAorICAgICAgICAgICAgJ2VjaG8g e1xcInBvbGljeVxcIjogeycKKyAgICAgICAgICAgICcgIFxcIm5hbWVcXCI6IFxcInVidW50dVxc IiwnCisgICAgICAgICAgICAnICBcXCJjb21tYW5kXFwiOiBcXCJjcmVhdGVcXCIsJworICAgICAg ICAgICAgJyAgXFwicG9saWN5X3R5cGVcXCI6IFxcIlRSQUZGSUNcXCIsJworICAgICAgICAgICAg JyAgXFwibWF4X3BhY2tldF90aHJlc2hcXCI6IDUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MCwnCisgICAgICAgICAgICAnICBcXCJhdmdfcGFja2V0X3RocmVzaFxcIjogMzAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwLCcKKyAgICAgICAgICAgICcgIFxcIm1hY19saXN0XFwiOlsgXFwi RTA6RTA6RTA6RTA6RjA6RjBcXCJdJworICAgICAgICAgICAgJ319ID4gL3RtcC90cmFmZmljLmpz b247JykKKyAgICAgICAgY2F0X2pzb24gPSAnY2F0IC90bXAvdHJhZmZpYy5qc29uID4gL3RtcC9w b3dlcm1vbml0b3IvZmlmbzMnCisgICAgICAgIHNlbGYuZF9jb24oWycgJy5qb2luKFtlY2hvX2pz b24sIGNhdF9qc29uXSksICcjJywgMTBdKQorCisgICAgICAgICMgQ2hlY2sgcG9pbnQ644CATm8g Y3Jhc2ggc2hvdWxkIGJlIG9jY3VyIGF0IHZtX3Bvd2VyX21nciBzYW1wbGUKKyAgICAgICAgb3V0 ID0gc2VsZi5kX2FfY29uKFsnc2hvd19jcHVfZnJlcSAxJywgJ3ZtcG93ZXI+JywgNV0pCisgICAg ICAgIHNlbGYuZF9hX2NvbihbJ3F1aXQnLCAnIyAnLCAxNV0pCisgICAgICAgIHNlbGYuaXNfbWdy X29uID0gRmFsc2UKKworICAgICAgICBzZWxmLnZlcmlmeSgiU2VnbWVudGF0aW9uIGZhdWx0IiBu b3QgaW4gb3V0IGFuZCAnY29yZSBkdW1wJyBub3QgaW4gb3V0LAorICAgICAgICAgICAgIlNlZ21l bnRhdGlvbiBmYXVsdCBvciBjb3JlIGR1bXBlZCBoYXBwZW5lZCIpCisKKworICAgICMjIyMjIyMj IyMjIyMjIyMjCisgICAgIworICAgICMgVGVzdCBjYXNlcy4KKyAgICAjCisgICAgIyMjIyMjIyMj IyMjIyMjIyMKKworICAgIGRlZiBzZXRfdXBfYWxsKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAg ICAgUnVuIGF0IHRoZSBzdGFydCBvZiBlYWNoIHRlc3Qgc3VpdGUuCisgICAgICAgICIiIgorICAg ICAgICBzZWxmLmR1dF9wb3J0cyA9IHNlbGYuZHV0LmdldF9wb3J0cyhzZWxmLm5pYykKKyAgICAg ICAgc2VsZi52ZXJpZnkobGVuKHNlbGYuZHV0X3BvcnRzKSA+PSAxLCAiTm90IGVub3VnaCBwb3J0 cyIpCisgICAgICAgIHNlbGYuY2hlY2tfY3B1cG93ZXJfdG9vbCgpCisgICAgICAgIHNlbGYudmVy aWZ5X3Bvd2VyX2RyaXZlcigpCisgICAgICAgICMgcHJlcGFyZSB0ZXN0aW5nIGVudmlyb25tZW50 CisgICAgICAgIHNlbGYucHJlc2V0X3Rlc3RfZW52aXJvbm1lbnQoKQorICAgICAgICBzZWxmLnBv cnRfcGNpID0gc2VsZi5kdXQuZ2V0X3BvcnRfcGNpKHNlbGYuZHV0X3BvcnRzWzBdKQorCisKKyAg ICBkZWYgdGVhcl9kb3duX2FsbChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFJ1biBhZnRl ciBlYWNoIHRlc3Qgc3VpdGUuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLmNsb3NlX3ZtKCkK KworCisgICAgZGVmIHNldF91cChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFJ1biBiZWZv cmUgZWFjaCB0ZXN0IGNhc2UuCisgICAgICAgICIiIgorICAgICAgICBwYXNzCisKKworICAgIGRl ZiB0ZWFyX2Rvd24oc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBSdW4gYWZ0ZXIgZWFjaCB0 ZXN0IGNhc2UuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLmNsb3NlX3ZtX3Bvd2VyX21ncigp CisgICAgICAgIHNlbGYuY2xvc2VfZ3Vlc3RfbWdyKCkKKyAgICAgICAgc2VsZi52bV9kdXQua2ls bF9hbGwoKQorICAgICAgICBzZWxmLmR1dC5raWxsX2FsbCgpCisKKworICAgIGRlZiB0ZXN0X2lu amVjdF9tYWxmb3JtZWRfanNvbl90b19maWZvX2NoYW5uZWwoc2VsZik6CisgICAgICAgICIiIgor ICAgICAgICBJbmplY3QgTWFsZm9ybWVkIEpzb24gQ29tbWFuZCBmaWxlIHRvIGZpZm8gY2hhbm5l bAorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi52ZXJpZnlfaW5qZWN0X21hbGZvcm1lZF9qc29u X3RvX2ZpZm9fY2hhbm5lbCgpCisKKworICAgIGRlZiB0ZXN0X3NlbmRfaW52YWxpZF9jbWRfdGhy b3VnaF9qc29uX2NobihzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFNlbmQgaW52YWxpZCBj b21tYW5kIHRocm91Z2ggSlNPTiBjaGFubmVsCisgICAgICAgICIiIgorICAgICAgICBzZWxmLnZl cmlmeV9zZW5kX2ludmFsaWRfY21kX3Rocm91Z2hfanNvbl9jaG4oKQorCisKKyAgICBkZWYgdGVz dF9ob3N0X3Bvd2VyX2NoZWNrX3BvbGljeV9mcm9tX3VudHJ1c3RlZF92bShzZWxmKToKKyAgICAg ICAgIiIiCisgICAgICAgIENoZWNrIGlmIGhvc3QgcG93ZXIgQVBQIGhhdmUgY2hlY2sgcG9pbnQg Zm9yIHRoZSBwb3dlciBwb2xpY3kgc2VudCBmcm9tIHVudHJ1c3RlZCBWTQorCisgICAgICAgICIi IgorICAgICAgICBzZWxmLnZlcmlmeV9ob3N0X3Bvd2VyX2NoZWNrX3BvbGljeV9mcm9tX3VudHJ1 c3RlZF92bSgpCisKKworICAgIGRlZiB0ZXN0X3RyYWZmaWNfcG9saWN5X3Rlc3RfYmFzZWRfb25f anNvbihzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRSQUZGSUMgUG9saWN5IFRlc3QgYmFz ZWQgb24gSlNPTiBjb25maWd1cmUgZmlsZSB3aXRoIGxhcmdlIGludGVnZXIgbnVtYmVyCisKKyAg ICAgICAgIiIiCisgICAgICAgIHNlbGYudmVyaWZ5X3RyYWZmaWNfcG9saWN5X3Rlc3RfYmFzZWRf b25fanNvbigpCi0tCjEuOC4zLjEKCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkludGVsIFJlc2VhcmNoIGFuZCBEZXZlbG9wbWVu dCBJcmVsYW5kIExpbWl0ZWQKUmVnaXN0ZXJlZCBpbiBJcmVsYW5kClJlZ2lzdGVyZWQgT2ZmaWNl OiBDb2xsaW5zdG93biBJbmR1c3RyaWFsIFBhcmssIExlaXhsaXAsIENvdW50eSBLaWxkYXJlClJl Z2lzdGVyZWQgTnVtYmVyOiAzMDgyNjMKCgpUaGlzIGUtbWFpbCBhbmQgYW55IGF0dGFjaG1lbnRz IG1heSBjb250YWluIGNvbmZpZGVudGlhbCBtYXRlcmlhbCBmb3IgdGhlIHNvbGUKdXNlIG9mIHRo ZSBpbnRlbmRlZCByZWNpcGllbnQocykuIEFueSByZXZpZXcgb3IgZGlzdHJpYnV0aW9uIGJ5IG90 aGVycyBpcwpzdHJpY3RseSBwcm9oaWJpdGVkLiBJZiB5b3UgYXJlIG5vdCB0aGUgaW50ZW5kZWQg cmVjaXBpZW50LCBwbGVhc2UgY29udGFjdCB0aGUKc2VuZGVyIGFuZCBkZWxldGUgYWxsIGNvcGll cy4K