From mboxrd@z Thu Jan 1 00:00:00 1970 From: Brendan Higgins Subject: [PATCH v10 13/18] kunit: tool: add Python wrappers for running KUnit tests Date: Tue, 16 Jul 2019 02:42:57 -0700 Message-ID: <20190716094302.180360-14-brendanhiggins@google.com> References: <20190716094302.180360-1-brendanhiggins@google.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190716094302.180360-1-brendanhiggins@google.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: frowand.list@gmail.com, gregkh@linuxfoundation.org, jpoimboe@redhat.com, keescook@google.com, kieran.bingham@ideasonboard.com, mcgrof@kernel.org, peterz@infradead.org, robh@kernel.org, sboyd@kernel.org, shuah@kernel.org, tytso@mit.edu, yamada.masahiro@socionext.com Cc: pmladek@suse.com, linux-doc@vger.kernel.org, amir73il@gmail.com, Brendan Higgins , dri-devel@lists.freedesktop.org, Alexander.Levin@microsoft.com, linux-kselftest@vger.kernel.org, linux-nvdimm@lists.01.org, khilman@baylibre.com, knut.omang@oracle.com, Felix Guo , wfg@linux.intel.com, joel@jms.id.au, rientjes@google.com, jdike@addtoit.com, dan.carpenter@oracle.com, devicetree@vger.kernel.org, linux-kbuild@vger.kernel.org, Tim.Bird@sony.com, linux-um@lists.infradead.org, rostedt@goodmis.org, julia.lawall@lip6.fr, kunit-dev@googlegroups.com, richard@nod.at, rdunlap@infradead.org, linux-kernel@vger.kernel.org, mpe@ellerman.id.au, linux-fsdevel@vger.kernel.org, logang@deltatee.com List-Id: devicetree@vger.kernel.org RnJvbTogRmVsaXggR3VvIDxmZWxpeGd1b3hpdXBpbmdAZ21haWwuY29tPgoKVGhlIHVsdGltYXRl IGdvYWwgaXMgdG8gY3JlYXRlIG1pbmltYWwgaXNvbGF0ZWQgdGVzdCBiaW5hcmllczsgaW4gdGhl Cm1lYW50aW1lIHdlIGFyZSB1c2luZyBVTUwgdG8gcHJvdmlkZSB0aGUgaW5mcmFzdHJ1Y3R1cmUg dG8gcnVuIHRlc3RzLCBzbwpkZWZpbmUgYW4gYWJzdHJhY3Qgd2F5IHRvIGNvbmZpZ3VyZSBhbmQg cnVuIHRlc3RzIHRoYXQgYWxsb3cgdXMgdG8KY2hhbmdlIHRoZSBjb250ZXh0IGluIHdoaWNoIHRl c3RzIGFyZSBidWlsdCB3aXRob3V0IGFmZmVjdGluZyB0aGUgdXNlci4KVGhpcyBhbHNvIG1ha2Vz IHByZXR0eSBhbmQgZHluYW1pYyBlcnJvciByZXBvcnRpbmcsIGFuZCBhIGxvdCBvZiBvdGhlcgpu aWNlIGZlYXR1cmVzIGVhc2llci4KCmt1bml0X2NvbmZpZy5weToKICAtIHBhcnNlIC5jb25maWcg YW5kIEtjb25maWcgZmlsZXMuCgprdW5pdF9rZXJuZWwucHk6IHByb3ZpZGVzIGhlbHBlciBmdW5j dGlvbnMgdG86CiAgLSBjb25maWd1cmUgdGhlIGtlcm5lbCB1c2luZyBrdW5pdGNvbmZpZy4KICAt IGJ1aWxkIHRoZSBrZXJuZWwgd2l0aCB0aGUgYXBwcm9wcmlhdGUgY29uZmlndXJhdGlvbi4KICAt IHByb3ZpZGUgZnVuY3Rpb24gdG8gaW52b2tlIHRoZSBrZXJuZWwgYW5kIHN0cmVhbSB0aGUgb3V0 cHV0IGJhY2suCgprdW5pdF9wYXJzZXIucHk6IHBhcnNlcyByYXcgbG9ncyByZXR1cm5lZCBvdXQg Ynkga3VuaXRfa2VybmVsIGFuZApkaXNwbGF5cyB0aGVtIGluIGEgdXNlciBmcmllbmRseSB3YXku Cgp0ZXN0X2RhdGEvKjogc2FtcGxlcyBvZiB0ZXN0IGRhdGEgZm9yIHRlc3Rpbmcga3VuaXQucHks IGt1bml0X2NvbmZpZy5weSwKZXRjLgoKU2lnbmVkLW9mZi1ieTogRmVsaXggR3VvIDxmZWxpeGd1 b3hpdXBpbmdAZ21haWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBCcmVuZGFuIEhpZ2dpbnMgPGJyZW5k YW5oaWdnaW5zQGdvb2dsZS5jb20+ClJldmlld2VkLWJ5OiBHcmVnIEtyb2FoLUhhcnRtYW4gPGdy ZWdraEBsaW51eGZvdW5kYXRpb24ub3JnPgpSZXZpZXdlZC1ieTogTG9nYW4gR3VudGhvcnBlIDxs b2dhbmdAZGVsdGF0ZWUuY29tPgotLS0KIHRvb2xzL3Rlc3Rpbmcva3VuaXQvLmdpdGlnbm9yZSAg ICAgICAgICAgICAgICB8ICAgMyArCiB0b29scy90ZXN0aW5nL2t1bml0L2t1bml0LnB5ICAgICAg ICAgICAgICAgICAgfCAxMTYgKysrKysrKwogdG9vbHMvdGVzdGluZy9rdW5pdC9rdW5pdF9jb25m aWcucHkgICAgICAgICAgIHwgIDY2ICsrKysKIHRvb2xzL3Rlc3Rpbmcva3VuaXQva3VuaXRfa2Vy bmVsLnB5ICAgICAgICAgICB8IDE0OCArKysrKysrKysKIHRvb2xzL3Rlc3Rpbmcva3VuaXQva3Vu aXRfcGFyc2VyLnB5ICAgICAgICAgICB8IDI5MCArKysrKysrKysrKysrKysrKysKIHRvb2xzL3Rl c3Rpbmcva3VuaXQva3VuaXRfdG9vbF90ZXN0LnB5ICAgICAgICB8IDIwNiArKysrKysrKysrKysr CiAuLi4vdGVzdF9pc190ZXN0X3Bhc3NlZC1hbGxfcGFzc2VkLmxvZyAgICAgICAgfCAgMzIgKysK IC4uLi90ZXN0X2RhdGEvdGVzdF9pc190ZXN0X3Bhc3NlZC1jcmFzaC5sb2cgICB8ICA2OSArKysr KwogLi4uL3Rlc3RfZGF0YS90ZXN0X2lzX3Rlc3RfcGFzc2VkLWZhaWx1cmUubG9nIHwgIDM2ICsr KwogLi4uL3Rlc3RfaXNfdGVzdF9wYXNzZWQtbm9fdGVzdHNfcnVuLmxvZyAgICAgIHwgIDc1ICsr KysrCiAuLi4vdGVzdF9vdXRwdXRfaXNvbGF0ZWRfY29ycmVjdGx5LmxvZyAgICAgICAgfCAxMDYg KysrKysrKwogLi4uL3Rlc3RfZGF0YS90ZXN0X3JlYWRfZnJvbV9maWxlLmtjb25maWcgICAgIHwg IDE3ICsKIDEyIGZpbGVzIGNoYW5nZWQsIDExNjQgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUg MTAwNjQ0IHRvb2xzL3Rlc3Rpbmcva3VuaXQvLmdpdGlnbm9yZQogY3JlYXRlIG1vZGUgMTAwNzU1 IHRvb2xzL3Rlc3Rpbmcva3VuaXQva3VuaXQucHkKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0b29scy90 ZXN0aW5nL2t1bml0L2t1bml0X2NvbmZpZy5weQogY3JlYXRlIG1vZGUgMTAwNjQ0IHRvb2xzL3Rl c3Rpbmcva3VuaXQva3VuaXRfa2VybmVsLnB5CiBjcmVhdGUgbW9kZSAxMDA2NDQgdG9vbHMvdGVz dGluZy9rdW5pdC9rdW5pdF9wYXJzZXIucHkKIGNyZWF0ZSBtb2RlIDEwMDc1NSB0b29scy90ZXN0 aW5nL2t1bml0L2t1bml0X3Rvb2xfdGVzdC5weQogY3JlYXRlIG1vZGUgMTAwNjQ0IHRvb2xzL3Rl c3Rpbmcva3VuaXQvdGVzdF9kYXRhL3Rlc3RfaXNfdGVzdF9wYXNzZWQtYWxsX3Bhc3NlZC5sb2cK IGNyZWF0ZSBtb2RlIDEwMDY0NCB0b29scy90ZXN0aW5nL2t1bml0L3Rlc3RfZGF0YS90ZXN0X2lz X3Rlc3RfcGFzc2VkLWNyYXNoLmxvZwogY3JlYXRlIG1vZGUgMTAwNjQ0IHRvb2xzL3Rlc3Rpbmcv a3VuaXQvdGVzdF9kYXRhL3Rlc3RfaXNfdGVzdF9wYXNzZWQtZmFpbHVyZS5sb2cKIGNyZWF0ZSBt b2RlIDEwMDY0NCB0b29scy90ZXN0aW5nL2t1bml0L3Rlc3RfZGF0YS90ZXN0X2lzX3Rlc3RfcGFz c2VkLW5vX3Rlc3RzX3J1bi5sb2cKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0b29scy90ZXN0aW5nL2t1 bml0L3Rlc3RfZGF0YS90ZXN0X291dHB1dF9pc29sYXRlZF9jb3JyZWN0bHkubG9nCiBjcmVhdGUg bW9kZSAxMDA2NDQgdG9vbHMvdGVzdGluZy9rdW5pdC90ZXN0X2RhdGEvdGVzdF9yZWFkX2Zyb21f ZmlsZS5rY29uZmlnCgpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9rdW5pdC8uZ2l0aWdub3Jl IGIvdG9vbHMvdGVzdGluZy9rdW5pdC8uZ2l0aWdub3JlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwMDAuLmM3OTFmZjU5YTM3YTkKLS0tIC9kZXYvbnVsbAorKysgYi90b29s cy90ZXN0aW5nL2t1bml0Ly5naXRpZ25vcmUKQEAgLTAsMCArMSwzIEBACisjIEJ5dGUtY29tcGls ZWQgLyBvcHRpbWl6ZWQgLyBETEwgZmlsZXMKK19fcHljYWNoZV9fLworKi5weVtjb2RdClwgTm8g bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9rdW5pdC9r dW5pdC5weSBiL3Rvb2xzL3Rlc3Rpbmcva3VuaXQva3VuaXQucHkKbmV3IGZpbGUgbW9kZSAxMDA3 NTUKaW5kZXggMDAwMDAwMDAwMDAwMC4uZGExMWJkNjJhNGI4MgotLS0gL2Rldi9udWxsCisrKyBi L3Rvb2xzL3Rlc3Rpbmcva3VuaXQva3VuaXQucHkKQEAgLTAsMCArMSwxMTYgQEAKKyMhL3Vzci9i aW4vcHl0aG9uMworIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAorIworIyBBIHRo aW4gd3JhcHBlciBvbiB0b3Agb2YgdGhlIEtVbml0IEtlcm5lbAorIworIyBDb3B5cmlnaHQgKEMp IDIwMTksIEdvb2dsZSBMTEMuCisjIEF1dGhvcjogRmVsaXggR3VvIDxmZWxpeGd1b3hpdXBpbmdA Z21haWwuY29tPgorIyBBdXRob3I6IEJyZW5kYW4gSGlnZ2lucyA8YnJlbmRhbmhpZ2dpbnNAZ29v Z2xlLmNvbT4KKworaW1wb3J0IGFyZ3BhcnNlCitpbXBvcnQgc3lzCitpbXBvcnQgb3MKK2ltcG9y dCB0aW1lCisKK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IG5hbWVkdHVwbGUKK2Zyb20gZW51bSBp bXBvcnQgRW51bSwgYXV0bworCitpbXBvcnQga3VuaXRfY29uZmlnCitpbXBvcnQga3VuaXRfa2Vy bmVsCitpbXBvcnQga3VuaXRfcGFyc2VyCisKK0t1bml0UmVzdWx0ID0gbmFtZWR0dXBsZSgnS3Vu aXRSZXN1bHQnLCBbJ3N0YXR1cycsJ3Jlc3VsdCddKQorCitLdW5pdFJlcXVlc3QgPSBuYW1lZHR1 cGxlKCdLdW5pdFJlcXVlc3QnLCBbJ3Jhd19vdXRwdXQnLCd0aW1lb3V0JywgJ2pvYnMnLCAnYnVp bGRfZGlyJ10pCisKK2NsYXNzIEt1bml0U3RhdHVzKEVudW0pOgorCVNVQ0NFU1MgPSBhdXRvKCkK KwlDT05GSUdfRkFJTFVSRSA9IGF1dG8oKQorCUJVSUxEX0ZBSUxVUkUgPSBhdXRvKCkKKwlURVNU X0ZBSUxVUkUgPSBhdXRvKCkKKworZGVmIHJ1bl90ZXN0cyhsaW51eDoga3VuaXRfa2VybmVsLkxp bnV4U291cmNlVHJlZSwKKwkgICAgICByZXF1ZXN0OiBLdW5pdFJlcXVlc3QpIC0+IEt1bml0UmVz dWx0OgorCWNvbmZpZ19zdGFydCA9IHRpbWUudGltZSgpCisJc3VjY2VzcyA9IGxpbnV4LmJ1aWxk X3JlY29uZmlnKHJlcXVlc3QuYnVpbGRfZGlyKQorCWNvbmZpZ19lbmQgPSB0aW1lLnRpbWUoKQor CWlmIG5vdCBzdWNjZXNzOgorCQlyZXR1cm4gS3VuaXRSZXN1bHQoS3VuaXRTdGF0dXMuQ09ORklH X0ZBSUxVUkUsICdjb3VsZCBub3QgY29uZmlndXJlIGtlcm5lbCcpCisKKwlrdW5pdF9wYXJzZXIu cHJpbnRfd2l0aF90aW1lc3RhbXAoJ0J1aWxkaW5nIEtVbml0IEtlcm5lbCAuLi4nKQorCisJYnVp bGRfc3RhcnQgPSB0aW1lLnRpbWUoKQorCXN1Y2Nlc3MgPSBsaW51eC5idWlsZF91bV9rZXJuZWwo cmVxdWVzdC5qb2JzLCByZXF1ZXN0LmJ1aWxkX2RpcikKKwlidWlsZF9lbmQgPSB0aW1lLnRpbWUo KQorCWlmIG5vdCBzdWNjZXNzOgorCQlyZXR1cm4gS3VuaXRSZXN1bHQoS3VuaXRTdGF0dXMuQlVJ TERfRkFJTFVSRSwgJ2NvdWxkIG5vdCBidWlsZCBrZXJuZWwnKQorCisJa3VuaXRfcGFyc2VyLnBy aW50X3dpdGhfdGltZXN0YW1wKCdTdGFydGluZyBLVW5pdCBLZXJuZWwgLi4uJykKKwl0ZXN0X3N0 YXJ0ID0gdGltZS50aW1lKCkKKworCXRlc3RfcmVzdWx0ID0ga3VuaXRfcGFyc2VyLlRlc3RSZXN1 bHQoa3VuaXRfcGFyc2VyLlRlc3RTdGF0dXMuU1VDQ0VTUywKKwkJCQkJICAgICAgW10sCisJCQkJ CSAgICAgICdUZXN0cyBub3QgUGFyc2VkLicpCisJaWYgcmVxdWVzdC5yYXdfb3V0cHV0OgorCQlr dW5pdF9wYXJzZXIucmF3X291dHB1dCgKKwkJCWxpbnV4LnJ1bl9rZXJuZWwodGltZW91dD1yZXF1 ZXN0LnRpbWVvdXQpKQorCWVsc2U6CisJCWt1bml0X291dHB1dCA9IGxpbnV4LnJ1bl9rZXJuZWwo dGltZW91dD1yZXF1ZXN0LnRpbWVvdXQpCisJCXRlc3RfcmVzdWx0ID0ga3VuaXRfcGFyc2VyLnBh cnNlX3J1bl90ZXN0cyhrdW5pdF9vdXRwdXQpCisJdGVzdF9lbmQgPSB0aW1lLnRpbWUoKQorCisJ a3VuaXRfcGFyc2VyLnByaW50X3dpdGhfdGltZXN0YW1wKCgKKwkJJ0VsYXBzZWQgdGltZTogJS4z ZnMgdG90YWwsICUuM2ZzIGNvbmZpZ3VyaW5nLCAlLjNmcyAnICsKKwkJJ2J1aWxkaW5nLCAlLjNm cyBydW5uaW5nXG4nKSAlICgKKwkJCQl0ZXN0X2VuZCAtIGNvbmZpZ19zdGFydCwKKwkJCQljb25m aWdfZW5kIC0gY29uZmlnX3N0YXJ0LAorCQkJCWJ1aWxkX2VuZCAtIGJ1aWxkX3N0YXJ0LAorCQkJ CXRlc3RfZW5kIC0gdGVzdF9zdGFydCkpCisKKwlpZiB0ZXN0X3Jlc3VsdC5zdGF0dXMgIT0ga3Vu aXRfcGFyc2VyLlRlc3RTdGF0dXMuU1VDQ0VTUzoKKwkJcmV0dXJuIEt1bml0UmVzdWx0KEt1bml0 U3RhdHVzLlRFU1RfRkFJTFVSRSwgdGVzdF9yZXN1bHQpCisJZWxzZToKKwkJcmV0dXJuIEt1bml0 UmVzdWx0KEt1bml0U3RhdHVzLlNVQ0NFU1MsIHRlc3RfcmVzdWx0KQorCitkZWYgbWFpbihhcmd2 LCBsaW51eCk6CisJcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoCisJCQlkZXNjcmlw dGlvbj0nSGVscHMgd3JpdGluZyBhbmQgcnVubmluZyBLVW5pdCB0ZXN0cy4nKQorCXN1YnBhcnNl ciA9IHBhcnNlci5hZGRfc3VicGFyc2VycyhkZXN0PSdzdWJjb21tYW5kJykKKworCXJ1bl9wYXJz ZXIgPSBzdWJwYXJzZXIuYWRkX3BhcnNlcigncnVuJywgaGVscD0nUnVucyBLVW5pdCB0ZXN0cy4n KQorCXJ1bl9wYXJzZXIuYWRkX2FyZ3VtZW50KCctLXJhd19vdXRwdXQnLCBoZWxwPSdkb25cJ3Qg Zm9ybWF0IG91dHB1dCBmcm9tIGtlcm5lbCcsCisJCQkJYWN0aW9uPSdzdG9yZV90cnVlJykKKwor CXJ1bl9wYXJzZXIuYWRkX2FyZ3VtZW50KCctLXRpbWVvdXQnLAorCQkJCWhlbHA9J21heGltdW0g bnVtYmVyIG9mIHNlY29uZHMgdG8gYWxsb3cgZm9yIGFsbCB0ZXN0cyAnCisJCQkJJ3RvIHJ1bi4g VGhpcyBkb2VzIG5vdCBpbmNsdWRlIHRpbWUgdGFrZW4gdG8gYnVpbGQgdGhlICcKKwkJCQkndGVz dHMuJywKKwkJCQl0eXBlPWludCwKKwkJCQlkZWZhdWx0PTMwMCwKKwkJCQltZXRhdmFyPSd0aW1l b3V0JykKKworCXJ1bl9wYXJzZXIuYWRkX2FyZ3VtZW50KCctLWpvYnMnLAorCQkJCWhlbHA9J0Fz IGluIHRoZSBtYWtlIGNvbW1hbmQsICJTcGVjaWZpZXMgIHRoZSBudW1iZXIgb2YgJworCQkJCSdq b2JzIChjb21tYW5kcykgdG8gcnVuIHNpbXVsdGFuZW91c2x5LiInLAorCQkJCXR5cGU9aW50LCBk ZWZhdWx0PTgsIG1ldGF2YXI9J2pvYnMnKQorCisJcnVuX3BhcnNlci5hZGRfYXJndW1lbnQoJy0t YnVpbGRfZGlyJywKKwkJCQloZWxwPSdBcyBpbiB0aGUgbWFrZSBjb21tYW5kLCBpdCBzcGVjaWZp ZXMgdGhlIGJ1aWxkICcKKwkJCQknZGlyZWN0b3J5LicsCisJCQkJdHlwZT1zdHIsIGRlZmF1bHQ9 Tm9uZSwgbWV0YXZhcj0nYnVpbGRfZGlyJykKKworCWNsaV9hcmdzID0gcGFyc2VyLnBhcnNlX2Fy Z3MoYXJndikKKworCWlmIGNsaV9hcmdzLnN1YmNvbW1hbmQgPT0gJ3J1bic6CisJCXJlcXVlc3Qg PSBLdW5pdFJlcXVlc3QoY2xpX2FyZ3MucmF3X291dHB1dCwKKwkJCQkgICAgICAgY2xpX2FyZ3Mu dGltZW91dCwKKwkJCQkgICAgICAgY2xpX2FyZ3Muam9icywKKwkJCQkgICAgICAgY2xpX2FyZ3Mu YnVpbGRfZGlyKQorCQlyZXN1bHQgPSBydW5fdGVzdHMobGludXgsIHJlcXVlc3QpCisJCWlmIHJl c3VsdC5zdGF0dXMgIT0gS3VuaXRTdGF0dXMuU1VDQ0VTUzoKKwkJCXN5cy5leGl0KDEpCisJZWxz ZToKKwkJcGFyc2VyLnByaW50X2hlbHAoKQorCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgor CW1haW4oc3lzLmFyZ3ZbMTpdLCBrdW5pdF9rZXJuZWwuTGludXhTb3VyY2VUcmVlKCkpCmRpZmYg LS1naXQgYS90b29scy90ZXN0aW5nL2t1bml0L2t1bml0X2NvbmZpZy5weSBiL3Rvb2xzL3Rlc3Rp bmcva3VuaXQva3VuaXRfY29uZmlnLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwMDAuLmViZjM5NDJiMjNmNTEKLS0tIC9kZXYvbnVsbAorKysgYi90b29scy90ZXN0aW5n L2t1bml0L2t1bml0X2NvbmZpZy5weQpAQCAtMCwwICsxLDY2IEBACisjIFNQRFgtTGljZW5zZS1J ZGVudGlmaWVyOiBHUEwtMi4wCisjCisjIEJ1aWxkcyBhIC5jb25maWcgZnJvbSBhIGt1bml0Y29u ZmlnLgorIworIyBDb3B5cmlnaHQgKEMpIDIwMTksIEdvb2dsZSBMTEMuCisjIEF1dGhvcjogRmVs aXggR3VvIDxmZWxpeGd1b3hpdXBpbmdAZ21haWwuY29tPgorIyBBdXRob3I6IEJyZW5kYW4gSGln Z2lucyA8YnJlbmRhbmhpZ2dpbnNAZ29vZ2xlLmNvbT4KKworaW1wb3J0IGNvbGxlY3Rpb25zCitp bXBvcnQgcmUKKworQ09ORklHX0lTX05PVF9TRVRfUEFUVEVSTiA9IHInXiMgQ09ORklHX1x3KyBp cyBub3Qgc2V0JCcKK0NPTkZJR19QQVRURVJOID0gcideQ09ORklHX1x3Kz1cUyskJworCitLY29u ZmlnRW50cnlCYXNlID0gY29sbGVjdGlvbnMubmFtZWR0dXBsZSgnS2NvbmZpZ0VudHJ5JywgWydy YXdfZW50cnknXSkKKworCitjbGFzcyBLY29uZmlnRW50cnkoS2NvbmZpZ0VudHJ5QmFzZSk6CisK KwlkZWYgX19zdHJfXyhzZWxmKSAtPiBzdHI6CisJCXJldHVybiBzZWxmLnJhd19lbnRyeQorCisK K2NsYXNzIEtjb25maWdQYXJzZUVycm9yKEV4Y2VwdGlvbik6CisJIiIiRXJyb3IgcGFyc2luZyBL Y29uZmlnIGRlZmNvbmZpZyBvciAuY29uZmlnLiIiIgorCisKK2NsYXNzIEtjb25maWcob2JqZWN0 KToKKwkiIiJSZXByZXNlbnRzIGRlZmNvbmZpZyBvciAuY29uZmlnIHNwZWNpZmllZCB1c2luZyB0 aGUgS2NvbmZpZyBsYW5ndWFnZS4iIiIKKworCWRlZiBfX2luaXRfXyhzZWxmKToKKwkJc2VsZi5f ZW50cmllcyA9IFtdCisKKwlkZWYgZW50cmllcyhzZWxmKToKKwkJcmV0dXJuIHNldChzZWxmLl9l bnRyaWVzKQorCisJZGVmIGFkZF9lbnRyeShzZWxmLCBlbnRyeTogS2NvbmZpZ0VudHJ5KSAtPiBO b25lOgorCQlzZWxmLl9lbnRyaWVzLmFwcGVuZChlbnRyeSkKKworCWRlZiBpc19zdWJzZXRfb2Yo c2VsZiwgb3RoZXI6ICdLY29uZmlnJykgLT4gYm9vbDoKKwkJcmV0dXJuIHNlbGYuZW50cmllcygp Lmlzc3Vic2V0KG90aGVyLmVudHJpZXMoKSkKKworCWRlZiB3cml0ZV90b19maWxlKHNlbGYsIHBh dGg6IHN0cikgLT4gTm9uZToKKwkJd2l0aCBvcGVuKHBhdGgsICd3JykgYXMgZjoKKwkJCWZvciBl bnRyeSBpbiBzZWxmLmVudHJpZXMoKToKKwkJCQlmLndyaXRlKHN0cihlbnRyeSkgKyAnXG4nKQor CisJZGVmIHBhcnNlX2Zyb21fc3RyaW5nKHNlbGYsIGJsb2I6IHN0cikgLT4gTm9uZToKKwkJIiIi UGFyc2VzIGEgc3RyaW5nIGNvbnRhaW5pbmcgS2NvbmZpZ0VudHJ5cyBhbmQgcG9wdWxhdGVzIHRo aXMgS2NvbmZpZy4iIiIKKwkJc2VsZi5fZW50cmllcyA9IFtdCisJCWlzX25vdF9zZXRfbWF0Y2hl ciA9IHJlLmNvbXBpbGUoQ09ORklHX0lTX05PVF9TRVRfUEFUVEVSTikKKwkJY29uZmlnX21hdGNo ZXIgPSByZS5jb21waWxlKENPTkZJR19QQVRURVJOKQorCQlmb3IgbGluZSBpbiBibG9iLnNwbGl0 KCdcbicpOgorCQkJbGluZSA9IGxpbmUuc3RyaXAoKQorCQkJaWYgbm90IGxpbmU6CisJCQkJY29u dGludWUKKwkJCWVsaWYgY29uZmlnX21hdGNoZXIubWF0Y2gobGluZSkgb3IgaXNfbm90X3NldF9t YXRjaGVyLm1hdGNoKGxpbmUpOgorCQkJCXNlbGYuX2VudHJpZXMuYXBwZW5kKEtjb25maWdFbnRy eShsaW5lKSkKKwkJCWVsaWYgbGluZVswXSA9PSAnIyc6CisJCQkJY29udGludWUKKwkJCWVsc2U6 CisJCQkJcmFpc2UgS2NvbmZpZ1BhcnNlRXJyb3IoJ0ZhaWxlZCB0byBwYXJzZTogJyArIGxpbmUp CisKKwlkZWYgcmVhZF9mcm9tX2ZpbGUoc2VsZiwgcGF0aDogc3RyKSAtPiBOb25lOgorCQl3aXRo IG9wZW4ocGF0aCwgJ3InKSBhcyBmOgorCQkJc2VsZi5wYXJzZV9mcm9tX3N0cmluZyhmLnJlYWQo KSkKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcva3VuaXQva3VuaXRfa2VybmVsLnB5IGIvdG9v bHMvdGVzdGluZy9rdW5pdC9rdW5pdF9rZXJuZWwucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAwMC4uMDdjMGFiZjJmNDdkZgotLS0gL2Rldi9udWxsCisrKyBiL3Rvb2xz L3Rlc3Rpbmcva3VuaXQva3VuaXRfa2VybmVsLnB5CkBAIC0wLDAgKzEsMTQ4IEBACisjIFNQRFgt TGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCisjCisjIFJ1bnMgVU1MIGtlcm5lbCwgY29sbGVj dHMgb3V0cHV0LCBhbmQgaGFuZGxlcyBlcnJvcnMuCisjCisjIENvcHlyaWdodCAoQykgMjAxOSwg R29vZ2xlIExMQy4KKyMgQXV0aG9yOiBGZWxpeCBHdW8gPGZlbGl4Z3VveGl1cGluZ0BnbWFpbC5j b20+CisjIEF1dGhvcjogQnJlbmRhbiBIaWdnaW5zIDxicmVuZGFuaGlnZ2luc0Bnb29nbGUuY29t PgorCisKK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgc3VicHJvY2VzcworaW1wb3J0IG9zCisKK2lt cG9ydCBrdW5pdF9jb25maWcKKworS0NPTkZJR19QQVRIID0gJy5jb25maWcnCisKK2NsYXNzIENv bmZpZ0Vycm9yKEV4Y2VwdGlvbik6CisJIiIiUmVwcmVzZW50cyBhbiBlcnJvciB0cnlpbmcgdG8g Y29uZmlndXJlIHRoZSBMaW51eCBrZXJuZWwuIiIiCisKKworY2xhc3MgQnVpbGRFcnJvcihFeGNl cHRpb24pOgorCSIiIlJlcHJlc2VudHMgYW4gZXJyb3IgdHJ5aW5nIHRvIGJ1aWxkIHRoZSBMaW51 eCBrZXJuZWwuIiIiCisKKworY2xhc3MgTGludXhTb3VyY2VUcmVlT3BlcmF0aW9ucyhvYmplY3Qp OgorCSIiIkFuIGFic3RyYWN0aW9uIG92ZXIgY29tbWFuZCBsaW5lIG9wZXJhdGlvbnMgcGVyZm9y bWVkIG9uIGEgc291cmNlIHRyZWUuIiIiCisKKwlkZWYgbWFrZV9tcnByb3BlcihzZWxmKToKKwkJ dHJ5OgorCQkJc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoWydtYWtlJywgJ21ycHJvcGVyJ10pCisJ CWV4Y2VwdCBPU0Vycm9yIGFzIGU6CisJCQlyYWlzZSBDb25maWdFcnJvcignQ291bGQgbm90IGNh bGwgbWFrZSBjb21tYW5kOiAnICsgZSkKKwkJZXhjZXB0IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vz c0Vycm9yIGFzIGU6CisJCQlyYWlzZSBDb25maWdFcnJvcihlLm91dHB1dCkKKworCWRlZiBtYWtl X29sZGRlZmNvbmZpZyhzZWxmLCBidWlsZF9kaXIpOgorCQljb21tYW5kID0gWydtYWtlJywgJ0FS Q0g9dW0nLCAnb2xkZGVmY29uZmlnJ10KKwkJaWYgYnVpbGRfZGlyOgorCQkJY29tbWFuZCArPSBb J089JyArIGJ1aWxkX2Rpcl0KKwkJdHJ5OgorCQkJc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoY29t bWFuZCkKKwkJZXhjZXB0IE9TRXJyb3IgYXMgZToKKwkJCXJhaXNlIENvbmZpZ0Vycm9yKCdDb3Vs ZCBub3QgY2FsbCBtYWtlIGNvbW1hbmQ6ICcgKyBlKQorCQlleGNlcHQgc3VicHJvY2Vzcy5DYWxs ZWRQcm9jZXNzRXJyb3IgYXMgZToKKwkJCXJhaXNlIENvbmZpZ0Vycm9yKGUub3V0cHV0KQorCisJ ZGVmIG1ha2Uoc2VsZiwgam9icywgYnVpbGRfZGlyKToKKwkJY29tbWFuZCA9IFsnbWFrZScsICdB UkNIPXVtJywgJy0tam9icz0nICsgc3RyKGpvYnMpXQorCQlpZiBidWlsZF9kaXI6CisJCQljb21t YW5kICs9IFsnTz0nICsgYnVpbGRfZGlyXQorCQl0cnk6CisJCQlzdWJwcm9jZXNzLmNoZWNrX291 dHB1dChjb21tYW5kKQorCQlleGNlcHQgT1NFcnJvciBhcyBlOgorCQkJcmFpc2UgQnVpbGRFcnJv cignQ291bGQgbm90IGNhbGwgZXhlY3V0ZSBtYWtlOiAnICsgZSkKKwkJZXhjZXB0IHN1YnByb2Nl c3MuQ2FsbGVkUHJvY2Vzc0Vycm9yIGFzIGU6CisJCQlyYWlzZSBCdWlsZEVycm9yKGUub3V0cHV0 KQorCisJZGVmIGxpbnV4X2JpbihzZWxmLCBwYXJhbXMsIHRpbWVvdXQsIGJ1aWxkX2Rpcik6CisJ CSIiIlJ1bnMgdGhlIExpbnV4IFVNTCBiaW5hcnkuIE11c3QgYmUgbmFtZWQgJ2xpbnV4Jy4iIiIK KwkJbGludXhfYmluID0gJy4vbGludXgnCisJCWlmIGJ1aWxkX2RpcjoKKwkJCWxpbnV4X2JpbiA9 IG9zLnBhdGguam9pbihidWlsZF9kaXIsICdsaW51eCcpCisJCXByb2Nlc3MgPSBzdWJwcm9jZXNz LlBvcGVuKAorCQkJW2xpbnV4X2Jpbl0gKyBwYXJhbXMsCisJCQlzdGRpbj1zdWJwcm9jZXNzLlBJ UEUsCisJCQlzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAorCQkJc3RkZXJyPXN1YnByb2Nlc3MuUElQ RSkKKwkJcHJvY2Vzcy53YWl0KHRpbWVvdXQ9dGltZW91dCkKKwkJcmV0dXJuIHByb2Nlc3MKKwor CitkZWYgZ2V0X2tjb25maWdfcGF0aChidWlsZF9kaXIpOgorCWtjb25maWdfcGF0aCA9IEtDT05G SUdfUEFUSAorCWlmIGJ1aWxkX2RpcjoKKwkJa2NvbmZpZ19wYXRoID0gb3MucGF0aC5qb2luKGJ1 aWxkX2RpciwgS0NPTkZJR19QQVRIKQorCXJldHVybiBrY29uZmlnX3BhdGgKKworY2xhc3MgTGlu dXhTb3VyY2VUcmVlKG9iamVjdCk6CisJIiIiUmVwcmVzZW50cyBhIExpbnV4IGtlcm5lbCBzb3Vy Y2UgdHJlZSB3aXRoIEtVbml0IHRlc3RzLiIiIgorCisJZGVmIF9faW5pdF9fKHNlbGYpOgorCQlz ZWxmLl9rY29uZmlnID0ga3VuaXRfY29uZmlnLktjb25maWcoKQorCQlzZWxmLl9rY29uZmlnLnJl YWRfZnJvbV9maWxlKCdrdW5pdGNvbmZpZycpCisJCXNlbGYuX29wcyA9IExpbnV4U291cmNlVHJl ZU9wZXJhdGlvbnMoKQorCisJZGVmIGNsZWFuKHNlbGYpOgorCQl0cnk6CisJCQlzZWxmLl9vcHMu bWFrZV9tcnByb3BlcigpCisJCWV4Y2VwdCBDb25maWdFcnJvciBhcyBlOgorCQkJbG9nZ2luZy5l cnJvcihlKQorCQkJcmV0dXJuIEZhbHNlCisJCXJldHVybiBUcnVlCisKKwlkZWYgYnVpbGRfY29u ZmlnKHNlbGYsIGJ1aWxkX2Rpcik6CisJCWtjb25maWdfcGF0aCA9IGdldF9rY29uZmlnX3BhdGgo YnVpbGRfZGlyKQorCQlpZiBidWlsZF9kaXIgYW5kIG5vdCBvcy5wYXRoLmV4aXN0cyhidWlsZF9k aXIpOgorCQkJb3MubWtkaXIoYnVpbGRfZGlyKQorCQlzZWxmLl9rY29uZmlnLndyaXRlX3RvX2Zp bGUoa2NvbmZpZ19wYXRoKQorCQl0cnk6CisJCQlzZWxmLl9vcHMubWFrZV9vbGRkZWZjb25maWco YnVpbGRfZGlyKQorCQlleGNlcHQgQ29uZmlnRXJyb3IgYXMgZToKKwkJCWxvZ2dpbmcuZXJyb3Io ZSkKKwkJCXJldHVybiBGYWxzZQorCQl2YWxpZGF0ZWRfa2NvbmZpZyA9IGt1bml0X2NvbmZpZy5L Y29uZmlnKCkKKwkJdmFsaWRhdGVkX2tjb25maWcucmVhZF9mcm9tX2ZpbGUoa2NvbmZpZ19wYXRo KQorCQlpZiBub3Qgc2VsZi5fa2NvbmZpZy5pc19zdWJzZXRfb2YodmFsaWRhdGVkX2tjb25maWcp OgorCQkJbG9nZ2luZy5lcnJvcignUHJvdmlkZWQgS2NvbmZpZyBpcyBub3QgY29udGFpbmVkIGlu IHZhbGlkYXRlZCAuY29uZmlnIScpCisJCQlyZXR1cm4gRmFsc2UKKwkJcmV0dXJuIFRydWUKKwor CWRlZiBidWlsZF9yZWNvbmZpZyhzZWxmLCBidWlsZF9kaXIpOgorCQkiIiJDcmVhdGVzIGEgbmV3 IC5jb25maWcgaWYgaXQgaXMgbm90IGEgc3Vic2V0IG9mIHRoZSBrdW5pdGNvbmZpZy4iIiIKKwkJ a2NvbmZpZ19wYXRoID0gZ2V0X2tjb25maWdfcGF0aChidWlsZF9kaXIpCisJCWlmIG9zLnBhdGgu ZXhpc3RzKGtjb25maWdfcGF0aCk6CisJCQlleGlzdGluZ19rY29uZmlnID0ga3VuaXRfY29uZmln Lktjb25maWcoKQorCQkJZXhpc3Rpbmdfa2NvbmZpZy5yZWFkX2Zyb21fZmlsZShrY29uZmlnX3Bh dGgpCisJCQlpZiBub3Qgc2VsZi5fa2NvbmZpZy5pc19zdWJzZXRfb2YoZXhpc3Rpbmdfa2NvbmZp Zyk6CisJCQkJcHJpbnQoJ1JlZ2VuZXJhdGluZyAuY29uZmlnIC4uLicpCisJCQkJb3MucmVtb3Zl KGtjb25maWdfcGF0aCkKKwkJCQlyZXR1cm4gc2VsZi5idWlsZF9jb25maWcoYnVpbGRfZGlyKQor CQkJZWxzZToKKwkJCQlyZXR1cm4gVHJ1ZQorCQllbHNlOgorCQkJcHJpbnQoJ0dlbmVyYXRpbmcg LmNvbmZpZyAuLi4nKQorCQkJcmV0dXJuIHNlbGYuYnVpbGRfY29uZmlnKGJ1aWxkX2RpcikKKwor CWRlZiBidWlsZF91bV9rZXJuZWwoc2VsZiwgam9icywgYnVpbGRfZGlyKToKKwkJdHJ5OgorCQkJ c2VsZi5fb3BzLm1ha2Vfb2xkZGVmY29uZmlnKGJ1aWxkX2RpcikKKwkJCXNlbGYuX29wcy5tYWtl KGpvYnMsIGJ1aWxkX2RpcikKKwkJZXhjZXB0IChDb25maWdFcnJvciwgQnVpbGRFcnJvcikgYXMg ZToKKwkJCWxvZ2dpbmcuZXJyb3IoZSkKKwkJCXJldHVybiBGYWxzZQorCQl1c2VkX2tjb25maWcg PSBrdW5pdF9jb25maWcuS2NvbmZpZygpCisJCXVzZWRfa2NvbmZpZy5yZWFkX2Zyb21fZmlsZShn ZXRfa2NvbmZpZ19wYXRoKGJ1aWxkX2RpcikpCisJCWlmIG5vdCBzZWxmLl9rY29uZmlnLmlzX3N1 YnNldF9vZih1c2VkX2tjb25maWcpOgorCQkJbG9nZ2luZy5lcnJvcignUHJvdmlkZWQgS2NvbmZp ZyBpcyBub3QgY29udGFpbmVkIGluIGZpbmFsIGNvbmZpZyEnKQorCQkJcmV0dXJuIEZhbHNlCisJ CXJldHVybiBUcnVlCisKKwlkZWYgcnVuX2tlcm5lbChzZWxmLCBhcmdzPVtdLCB0aW1lb3V0PU5v bmUsIGJ1aWxkX2Rpcj1Ob25lKToKKwkJYXJncy5leHRlbmQoWydtZW09MjU2TSddKQorCQlwcm9j ZXNzID0gc2VsZi5fb3BzLmxpbnV4X2JpbihhcmdzLCB0aW1lb3V0LCBidWlsZF9kaXIpCisJCXdp dGggb3BlbigndGVzdC5sb2cnLCAndycpIGFzIGY6CisJCQlmb3IgbGluZSBpbiBwcm9jZXNzLnN0 ZG91dDoKKwkJCQlmLndyaXRlKGxpbmUucnN0cmlwKCkuZGVjb2RlKCdhc2NpaScpICsgJ1xuJykK KwkJCQl5aWVsZCBsaW5lLnJzdHJpcCgpLmRlY29kZSgnYXNjaWknKQpkaWZmIC0tZ2l0IGEvdG9v bHMvdGVzdGluZy9rdW5pdC9rdW5pdF9wYXJzZXIucHkgYi90b29scy90ZXN0aW5nL2t1bml0L2t1 bml0X3BhcnNlci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi5m MjdmM2Q2NzVjM2JiCi0tLSAvZGV2L251bGwKKysrIGIvdG9vbHMvdGVzdGluZy9rdW5pdC9rdW5p dF9wYXJzZXIucHkKQEAgLTAsMCArMSwyOTAgQEAKKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6 IEdQTC0yLjAKKyMKKyMgUGFyc2VzIHRlc3QgcmVzdWx0cyBmcm9tIGEga2VybmVsIGRtZXNnIGxv Zy4KKyMKKyMgQ29weXJpZ2h0IChDKSAyMDE5LCBHb29nbGUgTExDLgorIyBBdXRob3I6IEZlbGl4 IEd1byA8ZmVsaXhndW94aXVwaW5nQGdtYWlsLmNvbT4KKyMgQXV0aG9yOiBCcmVuZGFuIEhpZ2dp bnMgPGJyZW5kYW5oaWdnaW5zQGdvb2dsZS5jb20+CisKK2ltcG9ydCByZQorCitmcm9tIGNvbGxl Y3Rpb25zIGltcG9ydCBuYW1lZHR1cGxlCitmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZQor ZnJvbSBlbnVtIGltcG9ydCBFbnVtLCBhdXRvCitmcm9tIGZ1bmN0b29scyBpbXBvcnQgcmVkdWNl Citmcm9tIHR5cGluZyBpbXBvcnQgTGlzdAorCitUZXN0UmVzdWx0ID0gbmFtZWR0dXBsZSgnVGVz dFJlc3VsdCcsIFsnc3RhdHVzJywnc3VpdGVzJywnbG9nJ10pCisKK2NsYXNzIFRlc3RTdWl0ZShv YmplY3QpOgorCWRlZiBfX2luaXRfXyhzZWxmKToKKwkJc2VsZi5zdGF0dXMgPSBOb25lCisJCXNl bGYubmFtZSA9IE5vbmUKKwkJc2VsZi5jYXNlcyA9IFtdCisKKwlkZWYgX19zdHJfXyhzZWxmKToK KwkJcmV0dXJuICdUZXN0U3VpdGUoJyArIHNlbGYuc3RhdHVzICsgJywnICsgc2VsZi5uYW1lICsg JywnICsgc3RyKHNlbGYuY2FzZXMpICsgJyknCisKKwlkZWYgX19yZXByX18oc2VsZik6CisJCXJl dHVybiBzdHIoc2VsZikKKworY2xhc3MgVGVzdENhc2Uob2JqZWN0KToKKwlkZWYgX19pbml0X18o c2VsZik6CisJCXNlbGYuc3RhdHVzID0gTm9uZQorCQlzZWxmLm5hbWUgPSAnJworCQlzZWxmLmxv ZyA9IFtdCisKKwlkZWYgX19zdHJfXyhzZWxmKToKKwkJcmV0dXJuICdUZXN0Q2FzZSgnICsgc2Vs Zi5zdGF0dXMgKyAnLCcgKyBzZWxmLm5hbWUgKyAnLCcgKyBzdHIoc2VsZi5sb2cpICsgJyknCisK KwlkZWYgX19yZXByX18oc2VsZik6CisJCXJldHVybiBzdHIoc2VsZikKKworY2xhc3MgVGVzdFN0 YXR1cyhFbnVtKToKKwlTVUNDRVNTID0gYXV0bygpCisJRkFJTFVSRSA9IGF1dG8oKQorCVRFU1Rf Q1JBU0hFRCA9IGF1dG8oKQorCU5PX1RFU1RTID0gYXV0bygpCisKK2t1bml0X3N0YXJ0X3JlID0g cmUuY29tcGlsZShyJ15UQVAgdmVyc2lvbiBbMC05XSskJykKK2t1bml0X2VuZF9yZSA9IHJlLmNv bXBpbGUoJ0xpc3Qgb2YgYWxsIHBhcnRpdGlvbnM6JykKKworZGVmIGlzb2xhdGVfa3VuaXRfb3V0 cHV0KGtlcm5lbF9vdXRwdXQpOgorCXN0YXJ0ZWQgPSBGYWxzZQorCWZvciBsaW5lIGluIGtlcm5l bF9vdXRwdXQ6CisJCWlmIGt1bml0X3N0YXJ0X3JlLm1hdGNoKGxpbmUpOgorCQkJc3RhcnRlZCA9 IFRydWUKKwkJCXlpZWxkIGxpbmUKKwkJZWxpZiBrdW5pdF9lbmRfcmUubWF0Y2gobGluZSk6CisJ CQlicmVhaworCQllbGlmIHN0YXJ0ZWQ6CisJCQl5aWVsZCBsaW5lCisKK2RlZiByYXdfb3V0cHV0 KGtlcm5lbF9vdXRwdXQpOgorCWZvciBsaW5lIGluIGtlcm5lbF9vdXRwdXQ6CisJCXByaW50KGxp bmUpCisKK0RJVklERVIgPSAnPScgKiA2MAorCitSRVNFVCA9ICdcMDMzWzA7MG0nCisKK2RlZiBy ZWQodGV4dCk6CisJcmV0dXJuICdcMDMzWzE7MzFtJyArIHRleHQgKyBSRVNFVAorCitkZWYgeWVs bG93KHRleHQpOgorCXJldHVybiAnXDAzM1sxOzMzbScgKyB0ZXh0ICsgUkVTRVQKKworZGVmIGdy ZWVuKHRleHQpOgorCXJldHVybiAnXDAzM1sxOzMybScgKyB0ZXh0ICsgUkVTRVQKKworZGVmIHBy aW50X3dpdGhfdGltZXN0YW1wKG1lc3NhZ2UpOgorCXByaW50KCdbJXNdICVzJyAlIChkYXRldGlt ZS5ub3coKS5zdHJmdGltZSgnJUg6JU06JVMnKSwgbWVzc2FnZSkpCisKK2RlZiBmb3JtYXRfc3Vp dGVfZGl2aWRlcihtZXNzYWdlKToKKwlyZXR1cm4gJz09PT09PT09ICcgKyBtZXNzYWdlICsgJyA9 PT09PT09PScKKworZGVmIHByaW50X3N1aXRlX2RpdmlkZXIobWVzc2FnZSk6CisJcHJpbnRfd2l0 aF90aW1lc3RhbXAoRElWSURFUikKKwlwcmludF93aXRoX3RpbWVzdGFtcChmb3JtYXRfc3VpdGVf ZGl2aWRlcihtZXNzYWdlKSkKKworZGVmIHByaW50X2xvZyhsb2cpOgorCWZvciBtIGluIGxvZzoK KwkJcHJpbnRfd2l0aF90aW1lc3RhbXAobSkKKworVEFQX0VOVFJJRVMgPSByZS5jb21waWxlKHIn XihUQVB8XHQ/b2t8XHQ/bm90IG9rfFx0P1swLTldK1wuXC5bMC05XSt8XHQ/IykuKiQnKQorCitk ZWYgY29uc3VtZV9ub25fZGlhZ25vc2l0aWMobGluZXM6IExpc3Rbc3RyXSkgLT4gTm9uZToKKwl3 aGlsZSBub3QgVEFQX0VOVFJJRVMubWF0Y2gobGluZXNbMF0pOgorCQlsaW5lcy5wb3AoMCkKKwor ZGVmIHNhdmVfbm9uX2RpYWdub3NpdGljKGxpbmVzOiBMaXN0W3N0cl0sIHRlc3RfY2FzZTogVGVz dENhc2UpIC0+IE5vbmU6CisJd2hpbGUgbm90IFRBUF9FTlRSSUVTLm1hdGNoKGxpbmVzWzBdKToK KwkJdGVzdF9jYXNlLmxvZy5hcHBlbmQobGluZXNbMF0pCisJCWxpbmVzLnBvcCgwKQorCitPa05v dE9rUmVzdWx0ID0gbmFtZWR0dXBsZSgnT2tOb3RPa1Jlc3VsdCcsIFsnaXNfb2snLCdkZXNjcmlw dGlvbicsICd0ZXh0J10pCisKK09LX05PVF9PS19TVUJURVNUID0gcmUuY29tcGlsZShyJ15cdChv a3xub3Qgb2spIFswLTldKyAtICguKikkJykKKworT0tfTk9UX09LX01PRFVMRSA9IHJlLmNvbXBp bGUocideKG9rfG5vdCBvaykgWzAtOV0rIC0gKC4qKSQnKQorCitkZWYgcGFyc2Vfb2tfbm90X29r X3Rlc3RfY2FzZShsaW5lczogTGlzdFtzdHJdLCB0ZXN0X2Nhc2U6IFRlc3RDYXNlKSAtPiBib29s OgorCXNhdmVfbm9uX2RpYWdub3NpdGljKGxpbmVzLCB0ZXN0X2Nhc2UpCisJbGluZSA9IGxpbmVz WzBdCisJbWF0Y2ggPSBPS19OT1RfT0tfU1VCVEVTVC5tYXRjaChsaW5lKQorCWlmIG1hdGNoOgor CQl0ZXN0X2Nhc2UubG9nLmFwcGVuZChsaW5lcy5wb3AoMCkpCisJCXRlc3RfY2FzZS5uYW1lID0g bWF0Y2guZ3JvdXAoMikKKwkJaWYgdGVzdF9jYXNlLnN0YXR1cyA9PSBUZXN0U3RhdHVzLlRFU1Rf Q1JBU0hFRDoKKwkJCXJldHVybiBUcnVlCisJCWlmIG1hdGNoLmdyb3VwKDEpID09ICdvayc6CisJ CQl0ZXN0X2Nhc2Uuc3RhdHVzID0gVGVzdFN0YXR1cy5TVUNDRVNTCisJCWVsc2U6CisJCQl0ZXN0 X2Nhc2Uuc3RhdHVzID0gVGVzdFN0YXR1cy5GQUlMVVJFCisJCXJldHVybiBUcnVlCisJZWxzZToK KwkJcmV0dXJuIEZhbHNlCisKK1NVQlRFU1RfRElBR05PU1RJQyA9IHJlLmNvbXBpbGUocideXHQj IC4qPzogKC4qKSQnKQorRElBR05PU1RJQ19DUkFTSF9NRVNTQUdFID0gJ2t1bml0IHRlc3QgY2Fz ZSBjcmFzaGVkIScKKworZGVmIHBhcnNlX2RpYWdub3N0aWMobGluZXM6IExpc3Rbc3RyXSwgdGVz dF9jYXNlOiBUZXN0Q2FzZSkgLT4gYm9vbDoKKwlzYXZlX25vbl9kaWFnbm9zaXRpYyhsaW5lcywg dGVzdF9jYXNlKQorCWxpbmUgPSBsaW5lc1swXQorCW1hdGNoID0gU1VCVEVTVF9ESUFHTk9TVElD Lm1hdGNoKGxpbmUpCisJaWYgbWF0Y2g6CisJCXRlc3RfY2FzZS5sb2cuYXBwZW5kKGxpbmVzLnBv cCgwKSkKKwkJaWYgbWF0Y2guZ3JvdXAoMSkgPT0gRElBR05PU1RJQ19DUkFTSF9NRVNTQUdFOgor CQkJdGVzdF9jYXNlLnN0YXR1cyA9IFRlc3RTdGF0dXMuVEVTVF9DUkFTSEVECisJCXJldHVybiBU cnVlCisJZWxzZToKKwkJcmV0dXJuIEZhbHNlCisKK2RlZiBwYXJzZV90ZXN0X2Nhc2UobGluZXM6 IExpc3Rbc3RyXSkgLT4gVGVzdENhc2U6CisJdGVzdF9jYXNlID0gVGVzdENhc2UoKQorCXNhdmVf bm9uX2RpYWdub3NpdGljKGxpbmVzLCB0ZXN0X2Nhc2UpCisJd2hpbGUgcGFyc2VfZGlhZ25vc3Rp YyhsaW5lcywgdGVzdF9jYXNlKToKKwkJcGFzcworCWlmIHBhcnNlX29rX25vdF9va190ZXN0X2Nh c2UobGluZXMsIHRlc3RfY2FzZSk6CisJCXJldHVybiB0ZXN0X2Nhc2UKKwllbHNlOgorCQlyZXR1 cm4gTm9uZQorCitTVUJURVNUX0hFQURFUiA9IHJlLmNvbXBpbGUocideXHQjIFN1YnRlc3Q6ICgu KikkJykKKworZGVmIHBhcnNlX3N1YnRlc3RfaGVhZGVyKGxpbmVzOiBMaXN0W3N0cl0pIC0+IHN0 cjoKKwljb25zdW1lX25vbl9kaWFnbm9zaXRpYyhsaW5lcykKKwltYXRjaCA9IFNVQlRFU1RfSEVB REVSLm1hdGNoKGxpbmVzWzBdKQorCWlmIG1hdGNoOgorCQlsaW5lcy5wb3AoMCkKKwkJcmV0dXJu IG1hdGNoLmdyb3VwKDEpCisJZWxzZToKKwkJcmV0dXJuIE5vbmUKKworU1VCVEVTVF9QTEFOID0g cmUuY29tcGlsZShyJ1x0WzAtOV0rXC5cLihbMC05XSspJykKKworZGVmIHBhcnNlX3N1YnRlc3Rf cGxhbihsaW5lczogTGlzdFtzdHJdKSAtPiBpbnQ6CisJY29uc3VtZV9ub25fZGlhZ25vc2l0aWMo bGluZXMpCisJbWF0Y2ggPSBTVUJURVNUX1BMQU4ubWF0Y2gobGluZXNbMF0pCisJaWYgbWF0Y2g6 CisJCWxpbmVzLnBvcCgwKQorCQlyZXR1cm4gbWF0Y2guZ3JvdXAoMSkKKwllbHNlOgorCQlyZXR1 cm4gTm9uZQorCitkZWYgbWF4X3N0YXR1cyhsZWZ0OiBUZXN0U3RhdHVzLCByaWdodDogVGVzdFN0 YXR1cykgLT4gVGVzdFN0YXR1czoKKwlpZiBsZWZ0ID09IFRlc3RTdGF0dXMuVEVTVF9DUkFTSEVE IG9yIHJpZ2h0ID09IFRlc3RTdGF0dXMuVEVTVF9DUkFTSEVEOgorCQlyZXR1cm4gVGVzdFN0YXR1 cy5URVNUX0NSQVNIRUQKKwllbGlmIGxlZnQgPT0gVGVzdFN0YXR1cy5GQUlMVVJFIG9yIHJpZ2h0 ID09IFRlc3RTdGF0dXMuRkFJTFVSRToKKwkJcmV0dXJuIFRlc3RTdGF0dXMuRkFJTFVSRQorCWVs aWYgbGVmdCAhPSBUZXN0U3RhdHVzLlNVQ0NFU1M6CisJCXJldHVybiBsZWZ0CisJZWxpZiByaWdo dCAhPSBUZXN0U3RhdHVzLlNVQ0NFU1M6CisJCXJldHVybiByaWdodAorCWVsc2U6CisJCXJldHVy biBUZXN0U3RhdHVzLlNVQ0NFU1MKKworZGVmIHBhcnNlX29rX25vdF9va190ZXN0X3N1aXRlKGxp bmVzOiBMaXN0W3N0cl0sIHRlc3Rfc3VpdGU6IFRlc3RTdWl0ZSkgLT4gYm9vbDoKKwljb25zdW1l X25vbl9kaWFnbm9zaXRpYyhsaW5lcykKKwlsaW5lID0gbGluZXNbMF0KKwltYXRjaCA9IE9LX05P VF9PS19NT0RVTEUubWF0Y2gobGluZSkKKwlpZiBtYXRjaDoKKwkJbGluZXMucG9wKDApCisJCWlm IG1hdGNoLmdyb3VwKDEpID09ICdvayc6CisJCQl0ZXN0X3N1aXRlLnN0YXR1cyA9IFRlc3RTdGF0 dXMuU1VDQ0VTUworCQllbHNlOgorCQkJdGVzdF9zdWl0ZS5zdGF0dXMgPSBUZXN0U3RhdHVzLkZB SUxVUkUKKwkJcmV0dXJuIFRydWUKKwllbHNlOgorCQlyZXR1cm4gRmFsc2UKKworZGVmIGJ1YmJs ZV91cF9lcnJvcnModG9fc3RhdHVzLCBzdGF0dXNfY29udGFpbmVyX2xpc3QpIC0+IFRlc3RTdGF0 dXM6CisJc3RhdHVzX2xpc3QgPSBtYXAodG9fc3RhdHVzLCBzdGF0dXNfY29udGFpbmVyX2xpc3Qp CisJcmV0dXJuIHJlZHVjZShtYXhfc3RhdHVzLCBzdGF0dXNfbGlzdCwgVGVzdFN0YXR1cy5TVUND RVNTKQorCitkZWYgYnViYmxlX3VwX3Rlc3RfY2FzZV9lcnJvcnModGVzdF9zdWl0ZTogVGVzdFN1 aXRlKSAtPiBUZXN0U3RhdHVzOgorCW1heF90ZXN0X2Nhc2Vfc3RhdHVzID0gYnViYmxlX3VwX2Vy cm9ycyhsYW1iZGEgeDogeC5zdGF0dXMsIHRlc3Rfc3VpdGUuY2FzZXMpCisJcmV0dXJuIG1heF9z dGF0dXMobWF4X3Rlc3RfY2FzZV9zdGF0dXMsIHRlc3Rfc3VpdGUuc3RhdHVzKQorCitkZWYgcGFy c2VfdGVzdF9zdWl0ZShsaW5lczogTGlzdFtzdHJdKSAtPiBUZXN0U3VpdGU6CisJaWYgbm90IGxp bmVzOgorCQlyZXR1cm4gTm9uZQorCWNvbnN1bWVfbm9uX2RpYWdub3NpdGljKGxpbmVzKQorCXRl c3Rfc3VpdGUgPSBUZXN0U3VpdGUoKQorCXRlc3Rfc3VpdGUuc3RhdHVzID0gVGVzdFN0YXR1cy5T VUNDRVNTCisJbmFtZSA9IHBhcnNlX3N1YnRlc3RfaGVhZGVyKGxpbmVzKQorCWlmIG5vdCBuYW1l OgorCQlyZXR1cm4gTm9uZQorCXRlc3Rfc3VpdGUubmFtZSA9IG5hbWUKKwl0ZXN0X2Nhc2VfbnVt ID0gcGFyc2Vfc3VidGVzdF9wbGFuKGxpbmVzKQorCWlmIG5vdCB0ZXN0X2Nhc2VfbnVtOgorCQly ZXR1cm4gTm9uZQorCXRlc3RfY2FzZSA9IHBhcnNlX3Rlc3RfY2FzZShsaW5lcykKKwl3aGlsZSB0 ZXN0X2Nhc2U6CisJCXRlc3Rfc3VpdGUuY2FzZXMuYXBwZW5kKHRlc3RfY2FzZSkKKwkJdGVzdF9j YXNlID0gcGFyc2VfdGVzdF9jYXNlKGxpbmVzKQorCWlmIHBhcnNlX29rX25vdF9va190ZXN0X3N1 aXRlKGxpbmVzLCB0ZXN0X3N1aXRlKToKKwkJdGVzdF9zdWl0ZS5zdGF0dXMgPSBidWJibGVfdXBf dGVzdF9jYXNlX2Vycm9ycyh0ZXN0X3N1aXRlKQorCQlyZXR1cm4gdGVzdF9zdWl0ZQorCWVsc2U6 CisJCXByaW50KCdmYWlsZWQgdG8gcGFyc2UgZW5kIG9mIHN1aXRlJyArIGxpbmVzWzBdKQorCQly ZXR1cm4gTm9uZQorCitUQVBfSEVBREVSID0gcmUuY29tcGlsZShyJ15UQVAgdmVyc2lvbiAxNCQn KQorCitkZWYgcGFyc2VfdGFwX2hlYWRlcihsaW5lczogTGlzdFtzdHJdKSAtPiBib29sOgorCWNv bnN1bWVfbm9uX2RpYWdub3NpdGljKGxpbmVzKQorCWlmIFRBUF9IRUFERVIubWF0Y2gobGluZXNb MF0pOgorCQlsaW5lcy5wb3AoMCkKKwkJcmV0dXJuIFRydWUKKwllbHNlOgorCQlyZXR1cm4gRmFs c2UKKworZGVmIGJ1YmJsZV91cF9zdWl0ZV9lcnJvcnModGVzdF9zdWl0ZV9saXN0OiBMaXN0W1Rl c3RTdWl0ZV0pIC0+IFRlc3RTdGF0dXM6CisJcmV0dXJuIGJ1YmJsZV91cF9lcnJvcnMobGFtYmRh IHg6IHguc3RhdHVzLCB0ZXN0X3N1aXRlX2xpc3QpCisKK2RlZiBwYXJzZV90ZXN0X3Jlc3VsdChs aW5lczogTGlzdFtzdHJdKSAtPiBUZXN0UmVzdWx0OgorCWlmIG5vdCBsaW5lczoKKwkJcmV0dXJu IFRlc3RSZXN1bHQoVGVzdFN0YXR1cy5OT19URVNUUywgW10sIGxpbmVzKQorCWNvbnN1bWVfbm9u X2RpYWdub3NpdGljKGxpbmVzKQorCWlmIG5vdCBwYXJzZV90YXBfaGVhZGVyKGxpbmVzKToKKwkJ cmV0dXJuIE5vbmUKKwl0ZXN0X3N1aXRlcyA9IFtdCisJdGVzdF9zdWl0ZSA9IHBhcnNlX3Rlc3Rf c3VpdGUobGluZXMpCisJd2hpbGUgdGVzdF9zdWl0ZToKKwkJdGVzdF9zdWl0ZXMuYXBwZW5kKHRl c3Rfc3VpdGUpCisJCXRlc3Rfc3VpdGUgPSBwYXJzZV90ZXN0X3N1aXRlKGxpbmVzKQorCXJldHVy biBUZXN0UmVzdWx0KGJ1YmJsZV91cF9zdWl0ZV9lcnJvcnModGVzdF9zdWl0ZXMpLCB0ZXN0X3N1 aXRlcywgbGluZXMpCisKK2RlZiBwYXJzZV9ydW5fdGVzdHMoa2VybmVsX291dHB1dCkgLT4gVGVz dFJlc3VsdDoKKwl0b3RhbF90ZXN0cyA9IDAKKwlmYWlsZWRfdGVzdHMgPSAwCisJY3Jhc2hlZF90 ZXN0cyA9IDAKKwl0ZXN0X3Jlc3VsdCA9IHBhcnNlX3Rlc3RfcmVzdWx0KGxpc3QoaXNvbGF0ZV9r dW5pdF9vdXRwdXQoa2VybmVsX291dHB1dCkpKQorCWZvciB0ZXN0X3N1aXRlIGluIHRlc3RfcmVz dWx0LnN1aXRlczoKKwkJaWYgdGVzdF9zdWl0ZS5zdGF0dXMgPT0gVGVzdFN0YXR1cy5TVUNDRVNT OgorCQkJcHJpbnRfc3VpdGVfZGl2aWRlcihncmVlbignW1BBU1NFRF0gJykgKyB0ZXN0X3N1aXRl Lm5hbWUpCisJCWVsaWYgdGVzdF9zdWl0ZS5zdGF0dXMgPT0gVGVzdFN0YXR1cy5URVNUX0NSQVNI RUQ6CisJCQlwcmludF9zdWl0ZV9kaXZpZGVyKHJlZCgnW0NSQVNIRURdICcgKyB0ZXN0X3N1aXRl Lm5hbWUpKQorCQllbHNlOgorCQkJcHJpbnRfc3VpdGVfZGl2aWRlcihyZWQoJ1tGQUlMRURdICcp ICsgdGVzdF9zdWl0ZS5uYW1lKQorCQlmb3IgdGVzdF9jYXNlIGluIHRlc3Rfc3VpdGUuY2FzZXM6 CisJCQl0b3RhbF90ZXN0cyArPSAxCisJCQlpZiB0ZXN0X2Nhc2Uuc3RhdHVzID09IFRlc3RTdGF0 dXMuU1VDQ0VTUzoKKwkJCQlwcmludF93aXRoX3RpbWVzdGFtcChncmVlbignW1BBU1NFRF0gJykg KyB0ZXN0X2Nhc2UubmFtZSkKKwkJCWVsaWYgdGVzdF9jYXNlLnN0YXR1cyA9PSBUZXN0U3RhdHVz LlRFU1RfQ1JBU0hFRDoKKwkJCQljcmFzaGVkX3Rlc3RzICs9IDEKKwkJCQlwcmludF93aXRoX3Rp bWVzdGFtcChyZWQoJ1tDUkFTSEVEXSAnICsgdGVzdF9jYXNlLm5hbWUpKQorCQkJCXByaW50X2xv ZyhtYXAoeWVsbG93LCB0ZXN0X2Nhc2UubG9nKSkKKwkJCQlwcmludF93aXRoX3RpbWVzdGFtcCgn JykKKwkJCWVsc2U6CisJCQkJZmFpbGVkX3Rlc3RzICs9IDEKKwkJCQlwcmludF93aXRoX3RpbWVz dGFtcChyZWQoJ1tGQUlMRURdICcpICsgdGVzdF9jYXNlLm5hbWUpCisJCQkJcHJpbnRfbG9nKG1h cCh5ZWxsb3csIHRlc3RfY2FzZS5sb2cpKQorCQkJCXByaW50X3dpdGhfdGltZXN0YW1wKCcnKQor CXByaW50X3dpdGhfdGltZXN0YW1wKERJVklERVIpCisJZm10ID0gZ3JlZW4gaWYgdGVzdF9yZXN1 bHQuc3RhdHVzID09IFRlc3RTdGF0dXMuU1VDQ0VTUyBlbHNlIHJlZAorCXByaW50X3dpdGhfdGlt ZXN0YW1wKAorCQlmbXQoJ1Rlc3RpbmcgY29tcGxldGUuICVkIHRlc3RzIHJ1bi4gJWQgZmFpbGVk LiAlZCBjcmFzaGVkLicgJQorCQkgICAgKHRvdGFsX3Rlc3RzLCBmYWlsZWRfdGVzdHMsIGNyYXNo ZWRfdGVzdHMpKSkKKwlyZXR1cm4gdGVzdF9yZXN1bHQKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rp bmcva3VuaXQva3VuaXRfdG9vbF90ZXN0LnB5IGIvdG9vbHMvdGVzdGluZy9rdW5pdC9rdW5pdF90 b29sX3Rlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMC4uNGEx MmJhYTBjZDRlMAotLS0gL2Rldi9udWxsCisrKyBiL3Rvb2xzL3Rlc3Rpbmcva3VuaXQva3VuaXRf dG9vbF90ZXN0LnB5CkBAIC0wLDAgKzEsMjA2IEBACisjIS91c3IvYmluL3B5dGhvbjMKKyMgU1BE WC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKKyMKKyMgQSBjb2xsZWN0aW9uIG9mIHRlc3Rz IGZvciB0b29scy90ZXN0aW5nL2t1bml0L2t1bml0LnB5CisjCisjIENvcHlyaWdodCAoQykgMjAx OSwgR29vZ2xlIExMQy4KKyMgQXV0aG9yOiBCcmVuZGFuIEhpZ2dpbnMgPGJyZW5kYW5oaWdnaW5z QGdvb2dsZS5jb20+CisKK2ltcG9ydCB1bml0dGVzdAorZnJvbSB1bml0dGVzdCBpbXBvcnQgbW9j aworCitpbXBvcnQgdGVtcGZpbGUsIHNodXRpbCAjIEhhbmRsaW5nIHRlc3RfdG1wZGlyCisKK2lt cG9ydCBvcworCitpbXBvcnQga3VuaXRfY29uZmlnCitpbXBvcnQga3VuaXRfcGFyc2VyCitpbXBv cnQga3VuaXRfa2VybmVsCitpbXBvcnQga3VuaXQKKwordGVzdF90bXBkaXIgPSAnJworCitkZWYg c2V0VXBNb2R1bGUoKToKKwlnbG9iYWwgdGVzdF90bXBkaXIKKwl0ZXN0X3RtcGRpciA9IHRlbXBm aWxlLm1rZHRlbXAoKQorCitkZWYgdGVhckRvd25Nb2R1bGUoKToKKwlzaHV0aWwucm10cmVlKHRl c3RfdG1wZGlyKQorCitkZWYgZ2V0X2Fic29sdXRlX3BhdGgocGF0aCk6CisJcmV0dXJuIG9zLnBh dGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCBwYXRoKQorCitjbGFzcyBLY29uZmln VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKwlkZWYgdGVzdF9pc19zdWJzZXRfb2Yoc2VsZik6 CisJCWtjb25maWcwID0ga3VuaXRfY29uZmlnLktjb25maWcoKQorCQlzZWxmLmFzc2VydFRydWUo a2NvbmZpZzAuaXNfc3Vic2V0X29mKGtjb25maWcwKSkKKworCQlrY29uZmlnMSA9IGt1bml0X2Nv bmZpZy5LY29uZmlnKCkKKwkJa2NvbmZpZzEuYWRkX2VudHJ5KGt1bml0X2NvbmZpZy5LY29uZmln RW50cnkoJ0NPTkZJR19URVNUPXknKSkKKwkJc2VsZi5hc3NlcnRUcnVlKGtjb25maWcxLmlzX3N1 YnNldF9vZihrY29uZmlnMSkpCisJCXNlbGYuYXNzZXJ0VHJ1ZShrY29uZmlnMC5pc19zdWJzZXRf b2Yoa2NvbmZpZzEpKQorCQlzZWxmLmFzc2VydEZhbHNlKGtjb25maWcxLmlzX3N1YnNldF9vZihr Y29uZmlnMCkpCisKKwlkZWYgdGVzdF9yZWFkX2Zyb21fZmlsZShzZWxmKToKKwkJa2NvbmZpZyA9 IGt1bml0X2NvbmZpZy5LY29uZmlnKCkKKwkJa2NvbmZpZ19wYXRoID0gZ2V0X2Fic29sdXRlX3Bh dGgoCisJCQkndGVzdF9kYXRhL3Rlc3RfcmVhZF9mcm9tX2ZpbGUua2NvbmZpZycpCisKKwkJa2Nv bmZpZy5yZWFkX2Zyb21fZmlsZShrY29uZmlnX3BhdGgpCisKKwkJZXhwZWN0ZWRfa2NvbmZpZyA9 IGt1bml0X2NvbmZpZy5LY29uZmlnKCkKKwkJZXhwZWN0ZWRfa2NvbmZpZy5hZGRfZW50cnkoCisJ CQlrdW5pdF9jb25maWcuS2NvbmZpZ0VudHJ5KCdDT05GSUdfVU1MPXknKSkKKwkJZXhwZWN0ZWRf a2NvbmZpZy5hZGRfZW50cnkoCisJCQlrdW5pdF9jb25maWcuS2NvbmZpZ0VudHJ5KCdDT05GSUdf TU1VPXknKSkKKwkJZXhwZWN0ZWRfa2NvbmZpZy5hZGRfZW50cnkoCisJCQlrdW5pdF9jb25maWcu S2NvbmZpZ0VudHJ5KCdDT05GSUdfVEVTVD15JykpCisJCWV4cGVjdGVkX2tjb25maWcuYWRkX2Vu dHJ5KAorCQkJa3VuaXRfY29uZmlnLktjb25maWdFbnRyeSgnQ09ORklHX0VYQU1QTEVfVEVTVD15 JykpCisJCWV4cGVjdGVkX2tjb25maWcuYWRkX2VudHJ5KAorCQkJa3VuaXRfY29uZmlnLktjb25m aWdFbnRyeSgnIyBDT05GSUdfTUs4IGlzIG5vdCBzZXQnKSkKKworCQlzZWxmLmFzc2VydEVxdWFs KGtjb25maWcuZW50cmllcygpLCBleHBlY3RlZF9rY29uZmlnLmVudHJpZXMoKSkKKworCWRlZiB0 ZXN0X3dyaXRlX3RvX2ZpbGUoc2VsZik6CisJCWtjb25maWdfcGF0aCA9IG9zLnBhdGguam9pbih0 ZXN0X3RtcGRpciwgJy5jb25maWcnKQorCisJCWV4cGVjdGVkX2tjb25maWcgPSBrdW5pdF9jb25m aWcuS2NvbmZpZygpCisJCWV4cGVjdGVkX2tjb25maWcuYWRkX2VudHJ5KAorCQkJa3VuaXRfY29u ZmlnLktjb25maWdFbnRyeSgnQ09ORklHX1VNTD15JykpCisJCWV4cGVjdGVkX2tjb25maWcuYWRk X2VudHJ5KAorCQkJa3VuaXRfY29uZmlnLktjb25maWdFbnRyeSgnQ09ORklHX01NVT15JykpCisJ CWV4cGVjdGVkX2tjb25maWcuYWRkX2VudHJ5KAorCQkJa3VuaXRfY29uZmlnLktjb25maWdFbnRy eSgnQ09ORklHX1RFU1Q9eScpKQorCQlleHBlY3RlZF9rY29uZmlnLmFkZF9lbnRyeSgKKwkJCWt1 bml0X2NvbmZpZy5LY29uZmlnRW50cnkoJ0NPTkZJR19FWEFNUExFX1RFU1Q9eScpKQorCQlleHBl Y3RlZF9rY29uZmlnLmFkZF9lbnRyeSgKKwkJCWt1bml0X2NvbmZpZy5LY29uZmlnRW50cnkoJyMg Q09ORklHX01LOCBpcyBub3Qgc2V0JykpCisKKwkJZXhwZWN0ZWRfa2NvbmZpZy53cml0ZV90b19m aWxlKGtjb25maWdfcGF0aCkKKworCQlhY3R1YWxfa2NvbmZpZyA9IGt1bml0X2NvbmZpZy5LY29u ZmlnKCkKKwkJYWN0dWFsX2tjb25maWcucmVhZF9mcm9tX2ZpbGUoa2NvbmZpZ19wYXRoKQorCisJ CXNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFsX2tjb25maWcuZW50cmllcygpLAorCQkJCSBleHBlY3Rl ZF9rY29uZmlnLmVudHJpZXMoKSkKKworY2xhc3MgS1VuaXRQYXJzZXJUZXN0KHVuaXR0ZXN0LlRl c3RDYXNlKToKKworCWRlZiBhc3NlcnRDb250YWlucyhzZWxmLCBuZWVkbGUsIGhheXN0YWNrKToK KwkJZm9yIGxpbmUgaW4gaGF5c3RhY2s6CisJCQlpZiBuZWVkbGUgaW4gbGluZToKKwkJCQlyZXR1 cm4KKwkJcmFpc2UgQXNzZXJ0aW9uRXJyb3IoJyInICsKKwkJCXN0cihuZWVkbGUpICsgJyIgbm90 IGZvdW5kIGluICInICsgc3RyKGhheXN0YWNrKSArICciIScpCisKKwlkZWYgdGVzdF9vdXRwdXRf aXNvbGF0ZWRfY29ycmVjdGx5KHNlbGYpOgorCQlsb2dfcGF0aCA9IGdldF9hYnNvbHV0ZV9wYXRo KAorCQkJJ3Rlc3RfZGF0YS90ZXN0X291dHB1dF9pc29sYXRlZF9jb3JyZWN0bHkubG9nJykKKwkJ ZmlsZSA9IG9wZW4obG9nX3BhdGgpCisJCXJlc3VsdCA9IGt1bml0X3BhcnNlci5pc29sYXRlX2t1 bml0X291dHB1dChmaWxlLnJlYWRsaW5lcygpKQorCQlzZWxmLmFzc2VydENvbnRhaW5zKCdUQVAg dmVyc2lvbiAxNFxuJywgcmVzdWx0KQorCQlzZWxmLmFzc2VydENvbnRhaW5zKCcJIyBTdWJ0ZXN0 OiBleGFtcGxlJywgcmVzdWx0KQorCQlzZWxmLmFzc2VydENvbnRhaW5zKCcJMS4uMicsIHJlc3Vs dCkKKwkJc2VsZi5hc3NlcnRDb250YWlucygnCW9rIDEgLSBleGFtcGxlX3NpbXBsZV90ZXN0Jywg cmVzdWx0KQorCQlzZWxmLmFzc2VydENvbnRhaW5zKCcJb2sgMiAtIGV4YW1wbGVfbW9ja190ZXN0 JywgcmVzdWx0KQorCQlzZWxmLmFzc2VydENvbnRhaW5zKCdvayAxIC0gZXhhbXBsZScsIHJlc3Vs dCkKKwkJZmlsZS5jbG9zZSgpCisKKwlkZWYgdGVzdF9wYXJzZV9zdWNjZXNzZnVsX3Rlc3RfbG9n KHNlbGYpOgorCQlhbGxfcGFzc2VkX2xvZyA9IGdldF9hYnNvbHV0ZV9wYXRoKAorCQkJJ3Rlc3Rf ZGF0YS90ZXN0X2lzX3Rlc3RfcGFzc2VkLWFsbF9wYXNzZWQubG9nJykKKwkJZmlsZSA9IG9wZW4o YWxsX3Bhc3NlZF9sb2cpCisJCXJlc3VsdCA9IGt1bml0X3BhcnNlci5wYXJzZV9ydW5fdGVzdHMo ZmlsZS5yZWFkbGluZXMoKSkKKwkJc2VsZi5hc3NlcnRFcXVhbCgKKwkJCWt1bml0X3BhcnNlci5U ZXN0U3RhdHVzLlNVQ0NFU1MsCisJCQlyZXN1bHQuc3RhdHVzKQorCQlmaWxlLmNsb3NlKCkKKwor CWRlZiB0ZXN0X3BhcnNlX2ZhaWxlZF90ZXN0X2xvZyhzZWxmKToKKwkJZmFpbGVkX2xvZyA9IGdl dF9hYnNvbHV0ZV9wYXRoKAorCQkJJ3Rlc3RfZGF0YS90ZXN0X2lzX3Rlc3RfcGFzc2VkLWZhaWx1 cmUubG9nJykKKwkJZmlsZSA9IG9wZW4oZmFpbGVkX2xvZykKKwkJcmVzdWx0ID0ga3VuaXRfcGFy c2VyLnBhcnNlX3J1bl90ZXN0cyhmaWxlLnJlYWRsaW5lcygpKQorCQlzZWxmLmFzc2VydEVxdWFs KAorCQkJa3VuaXRfcGFyc2VyLlRlc3RTdGF0dXMuRkFJTFVSRSwKKwkJCXJlc3VsdC5zdGF0dXMp CisJCWZpbGUuY2xvc2UoKQorCisJZGVmIHRlc3Rfbm9fdGVzdHMoc2VsZik6CisJCWVtcHR5X2xv ZyA9IGdldF9hYnNvbHV0ZV9wYXRoKAorCQkJJ3Rlc3RfZGF0YS90ZXN0X2lzX3Rlc3RfcGFzc2Vk LW5vX3Rlc3RzX3J1bi5sb2cnKQorCQlmaWxlID0gb3BlbihlbXB0eV9sb2cpCisJCXJlc3VsdCA9 IGt1bml0X3BhcnNlci5wYXJzZV9ydW5fdGVzdHMoCisJCQlrdW5pdF9wYXJzZXIuaXNvbGF0ZV9r dW5pdF9vdXRwdXQoZmlsZS5yZWFkbGluZXMoKSkpCisJCXNlbGYuYXNzZXJ0RXF1YWwoMCwgbGVu KHJlc3VsdC5zdWl0ZXMpKQorCQlzZWxmLmFzc2VydEVxdWFsKAorCQkJa3VuaXRfcGFyc2VyLlRl c3RTdGF0dXMuTk9fVEVTVFMsCisJCQlyZXN1bHQuc3RhdHVzKQorCQlmaWxlLmNsb3NlKCkKKwor CWRlZiB0ZXN0X2NyYXNoZWRfdGVzdChzZWxmKToKKwkJY3Jhc2hlZF9sb2cgPSBnZXRfYWJzb2x1 dGVfcGF0aCgKKwkJCSd0ZXN0X2RhdGEvdGVzdF9pc190ZXN0X3Bhc3NlZC1jcmFzaC5sb2cnKQor CQlmaWxlID0gb3BlbihjcmFzaGVkX2xvZykKKwkJcmVzdWx0ID0ga3VuaXRfcGFyc2VyLnBhcnNl X3J1bl90ZXN0cyhmaWxlLnJlYWRsaW5lcygpKQorCQlzZWxmLmFzc2VydEVxdWFsKAorCQkJa3Vu aXRfcGFyc2VyLlRlc3RTdGF0dXMuVEVTVF9DUkFTSEVELAorCQkJcmVzdWx0LnN0YXR1cykKKwkJ ZmlsZS5jbG9zZSgpCisKK2NsYXNzIFN0ckNvbnRhaW5zKHN0cik6CisJZGVmIF9fZXFfXyhzZWxm LCBvdGhlcik6CisJCXJldHVybiBzZWxmIGluIG90aGVyCisKK2NsYXNzIEtVbml0TWFpblRlc3Qo dW5pdHRlc3QuVGVzdENhc2UpOgorCWRlZiBzZXRVcChzZWxmKToKKwkJcGF0aCA9IGdldF9hYnNv bHV0ZV9wYXRoKCd0ZXN0X2RhdGEvdGVzdF9pc190ZXN0X3Bhc3NlZC1hbGxfcGFzc2VkLmxvZycp CisJCWZpbGUgPSBvcGVuKHBhdGgpCisJCWFsbF9wYXNzZWRfbG9nID0gZmlsZS5yZWFkbGluZXMo KQorCQlzZWxmLnByaW50X3BhdGNoID0gbW9jay5wYXRjaCgnYnVpbHRpbnMucHJpbnQnKQorCQlz ZWxmLnByaW50X21vY2sgPSBzZWxmLnByaW50X3BhdGNoLnN0YXJ0KCkKKwkJc2VsZi5saW51eF9z b3VyY2VfbW9jayA9IG1vY2suTW9jaygpCisJCXNlbGYubGludXhfc291cmNlX21vY2suYnVpbGRf cmVjb25maWcgPSBtb2NrLk1vY2socmV0dXJuX3ZhbHVlPVRydWUpCisJCXNlbGYubGludXhfc291 cmNlX21vY2suYnVpbGRfdW1fa2VybmVsID0gbW9jay5Nb2NrKHJldHVybl92YWx1ZT1UcnVlKQor CQlzZWxmLmxpbnV4X3NvdXJjZV9tb2NrLnJ1bl9rZXJuZWwgPSBtb2NrLk1vY2socmV0dXJuX3Zh bHVlPWFsbF9wYXNzZWRfbG9nKQorCisJZGVmIHRlYXJEb3duKHNlbGYpOgorCQlzZWxmLnByaW50 X3BhdGNoLnN0b3AoKQorCQlwYXNzCisKKwlkZWYgdGVzdF9ydW5fcGFzc2VzX2FyZ3NfcGFzcyhz ZWxmKToKKwkJa3VuaXQubWFpbihbJ3J1biddLCBzZWxmLmxpbnV4X3NvdXJjZV9tb2NrKQorCQlh c3NlcnQgc2VsZi5saW51eF9zb3VyY2VfbW9jay5idWlsZF9yZWNvbmZpZy5jYWxsX2NvdW50ID09 IDEKKwkJYXNzZXJ0IHNlbGYubGludXhfc291cmNlX21vY2sucnVuX2tlcm5lbC5jYWxsX2NvdW50 ID09IDEKKwkJc2VsZi5wcmludF9tb2NrLmFzc2VydF9hbnlfY2FsbChTdHJDb250YWlucygnVGVz dGluZyBjb21wbGV0ZS4nKSkKKworCWRlZiB0ZXN0X3J1bl9wYXNzZXNfYXJnc19mYWlsKHNlbGYp OgorCQlzZWxmLmxpbnV4X3NvdXJjZV9tb2NrLnJ1bl9rZXJuZWwgPSBtb2NrLk1vY2socmV0dXJu X3ZhbHVlPVtdKQorCQl3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN5c3RlbUV4aXQpIGFzIGU6CisJ CQlrdW5pdC5tYWluKFsncnVuJ10sIHNlbGYubGludXhfc291cmNlX21vY2spCisJCWFzc2VydCB0 eXBlKGUuZXhjZXB0aW9uKSA9PSBTeXN0ZW1FeGl0CisJCWFzc2VydCBlLmV4Y2VwdGlvbi5jb2Rl ID09IDEKKwkJYXNzZXJ0IHNlbGYubGludXhfc291cmNlX21vY2suYnVpbGRfcmVjb25maWcuY2Fs bF9jb3VudCA9PSAxCisJCWFzc2VydCBzZWxmLmxpbnV4X3NvdXJjZV9tb2NrLnJ1bl9rZXJuZWwu Y2FsbF9jb3VudCA9PSAxCisJCXNlbGYucHJpbnRfbW9jay5hc3NlcnRfYW55X2NhbGwoU3RyQ29u dGFpbnMoJyAwIHRlc3RzIHJ1bicpKQorCisJZGVmIHRlc3RfcnVuX3Jhd19vdXRwdXQoc2VsZik6 CisJCXNlbGYubGludXhfc291cmNlX21vY2sucnVuX2tlcm5lbCA9IG1vY2suTW9jayhyZXR1cm5f dmFsdWU9W10pCisJCWt1bml0Lm1haW4oWydydW4nLCAnLS1yYXdfb3V0cHV0J10sIHNlbGYubGlu dXhfc291cmNlX21vY2spCisJCWFzc2VydCBzZWxmLmxpbnV4X3NvdXJjZV9tb2NrLmJ1aWxkX3Jl Y29uZmlnLmNhbGxfY291bnQgPT0gMQorCQlhc3NlcnQgc2VsZi5saW51eF9zb3VyY2VfbW9jay5y dW5fa2VybmVsLmNhbGxfY291bnQgPT0gMQorCQlmb3Iga2FsbCBpbiBzZWxmLnByaW50X21vY2su Y2FsbF9hcmdzX2xpc3Q6CisJCQlhc3NlcnQga2FsbCAhPSBtb2NrLmNhbGwoU3RyQ29udGFpbnMo J1Rlc3RpbmcgY29tcGxldGUuJykpCisJCQlhc3NlcnQga2FsbCAhPSBtb2NrLmNhbGwoU3RyQ29u dGFpbnMoJyAwIHRlc3RzIHJ1bicpKQorCisJZGVmIHRlc3RfcnVuX3RpbWVvdXQoc2VsZik6CisJ CXRpbWVvdXQgPSAzNDUzCisJCWt1bml0Lm1haW4oWydydW4nLCAnLS10aW1lb3V0Jywgc3RyKHRp bWVvdXQpXSwgc2VsZi5saW51eF9zb3VyY2VfbW9jaykKKwkJYXNzZXJ0IHNlbGYubGludXhfc291 cmNlX21vY2suYnVpbGRfcmVjb25maWcuY2FsbF9jb3VudCA9PSAxCisJCXNlbGYubGludXhfc291 cmNlX21vY2sucnVuX2tlcm5lbC5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCh0aW1lb3V0PXRpbWVv dXQpCisJCXNlbGYucHJpbnRfbW9jay5hc3NlcnRfYW55X2NhbGwoU3RyQ29udGFpbnMoJ1Rlc3Rp bmcgY29tcGxldGUuJykpCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisJdW5pdHRlc3Qu bWFpbigpCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL2t1bml0L3Rlc3RfZGF0YS90ZXN0X2lz X3Rlc3RfcGFzc2VkLWFsbF9wYXNzZWQubG9nIGIvdG9vbHMvdGVzdGluZy9rdW5pdC90ZXN0X2Rh dGEvdGVzdF9pc190ZXN0X3Bhc3NlZC1hbGxfcGFzc2VkLmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMDAwLi42MmViYzAyODgzNTVjCi0tLSAvZGV2L251bGwKKysrIGIv dG9vbHMvdGVzdGluZy9rdW5pdC90ZXN0X2RhdGEvdGVzdF9pc190ZXN0X3Bhc3NlZC1hbGxfcGFz c2VkLmxvZwpAQCAtMCwwICsxLDMyIEBACitUQVAgdmVyc2lvbiAxNAorCSMgU3VidGVzdDogc3lz Y3RsX3Rlc3QKKwkxLi44CisJIyBzeXNjdGxfdGVzdF9kb2ludHZlY19udWxsX3RibF9kYXRhOiBz eXNjdGxfdGVzdF9kb2ludHZlY19udWxsX3RibF9kYXRhIHBhc3NlZAorCW9rIDEgLSBzeXNjdGxf dGVzdF9kb2ludHZlY19udWxsX3RibF9kYXRhCisJIyBzeXNjdGxfdGVzdF9kb2ludHZlY190YWJs ZV9tYXhsZW5fdW5zZXQ6IHN5c2N0bF90ZXN0X2RvaW50dmVjX3RhYmxlX21heGxlbl91bnNldCBw YXNzZWQKKwlvayAyIC0gc3lzY3RsX3Rlc3RfZG9pbnR2ZWNfdGFibGVfbWF4bGVuX3Vuc2V0CisJ IyBzeXNjdGxfdGVzdF9kb2ludHZlY190YWJsZV9sZW5faXNfemVybzogc3lzY3RsX3Rlc3RfZG9p bnR2ZWNfdGFibGVfbGVuX2lzX3plcm8gcGFzc2VkCisJb2sgMyAtIHN5c2N0bF90ZXN0X2RvaW50 dmVjX3RhYmxlX2xlbl9pc196ZXJvCisJIyBzeXNjdGxfdGVzdF9kb2ludHZlY190YWJsZV9yZWFk X2J1dF9wb3NpdGlvbl9zZXQ6IHN5c2N0bF90ZXN0X2RvaW50dmVjX3RhYmxlX3JlYWRfYnV0X3Bv c2l0aW9uX3NldCBwYXNzZWQKKwlvayA0IC0gc3lzY3RsX3Rlc3RfZG9pbnR2ZWNfdGFibGVfcmVh ZF9idXRfcG9zaXRpb25fc2V0CisJIyBzeXNjdGxfdGVzdF9kb2ludHZlY19oYXBweV9zaW5nbGVf cG9zaXRpdmU6IHN5c2N0bF90ZXN0X2RvaW50dmVjX2hhcHB5X3NpbmdsZV9wb3NpdGl2ZSBwYXNz ZWQKKwlvayA1IC0gc3lzY3RsX3Rlc3RfZG9pbnR2ZWNfaGFwcHlfc2luZ2xlX3Bvc2l0aXZlCisJ IyBzeXNjdGxfdGVzdF9kb2ludHZlY19oYXBweV9zaW5nbGVfbmVnYXRpdmU6IHN5c2N0bF90ZXN0 X2RvaW50dmVjX2hhcHB5X3NpbmdsZV9uZWdhdGl2ZSBwYXNzZWQKKwlvayA2IC0gc3lzY3RsX3Rl c3RfZG9pbnR2ZWNfaGFwcHlfc2luZ2xlX25lZ2F0aXZlCisJIyBzeXNjdGxfdGVzdF9kb2ludHZl Y19zaW5nbGVfbGVzc19pbnRfbWluOiBzeXNjdGxfdGVzdF9kb2ludHZlY19zaW5nbGVfbGVzc19p bnRfbWluIHBhc3NlZAorCW9rIDcgLSBzeXNjdGxfdGVzdF9kb2ludHZlY19zaW5nbGVfbGVzc19p bnRfbWluCisJIyBzeXNjdGxfdGVzdF9kb2ludHZlY19zaW5nbGVfZ3JlYXRlcl9pbnRfbWF4OiBz eXNjdGxfdGVzdF9kb2ludHZlY19zaW5nbGVfZ3JlYXRlcl9pbnRfbWF4IHBhc3NlZAorCW9rIDgg LSBzeXNjdGxfdGVzdF9kb2ludHZlY19zaW5nbGVfZ3JlYXRlcl9pbnRfbWF4CitrdW5pdCBzeXNj dGxfdGVzdDogYWxsIHRlc3RzIHBhc3NlZAorb2sgMSAtIHN5c2N0bF90ZXN0CisJIyBTdWJ0ZXN0 OiBleGFtcGxlCisJMS4uMgoraW5pdF9zdWl0ZQorCSMgZXhhbXBsZV9zaW1wbGVfdGVzdDogaW5p dGlhbGl6aW5nCisJIyBleGFtcGxlX3NpbXBsZV90ZXN0OiBleGFtcGxlX3NpbXBsZV90ZXN0IHBh c3NlZAorCW9rIDEgLSBleGFtcGxlX3NpbXBsZV90ZXN0CisJIyBleGFtcGxlX21vY2tfdGVzdDog aW5pdGlhbGl6aW5nCisJIyBleGFtcGxlX21vY2tfdGVzdDogZXhhbXBsZV9tb2NrX3Rlc3QgcGFz c2VkCisJb2sgMiAtIGV4YW1wbGVfbW9ja190ZXN0CitrdW5pdCBleGFtcGxlOiBhbGwgdGVzdHMg cGFzc2VkCitvayAyIC0gZXhhbXBsZQpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9rdW5pdC90 ZXN0X2RhdGEvdGVzdF9pc190ZXN0X3Bhc3NlZC1jcmFzaC5sb2cgYi90b29scy90ZXN0aW5nL2t1 bml0L3Rlc3RfZGF0YS90ZXN0X2lzX3Rlc3RfcGFzc2VkLWNyYXNoLmxvZwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi4wYjI0OTg3MGM4YmU0Ci0tLSAvZGV2L251bGwK KysrIGIvdG9vbHMvdGVzdGluZy9rdW5pdC90ZXN0X2RhdGEvdGVzdF9pc190ZXN0X3Bhc3NlZC1j cmFzaC5sb2cKQEAgLTAsMCArMSw2OSBAQAorcHJpbnRrOiBjb25zb2xlIFt0dHkwXSBlbmFibGVk CitwcmludGs6IGNvbnNvbGUgW21jLTFdIGVuYWJsZWQKK1RBUCB2ZXJzaW9uIDE0CisJIyBTdWJ0 ZXN0OiBzeXNjdGxfdGVzdAorCTEuLjgKKwkjIHN5c2N0bF90ZXN0X2RvaW50dmVjX251bGxfdGJs X2RhdGE6IHN5c2N0bF90ZXN0X2RvaW50dmVjX251bGxfdGJsX2RhdGEgcGFzc2VkCisJb2sgMSAt IHN5c2N0bF90ZXN0X2RvaW50dmVjX251bGxfdGJsX2RhdGEKKwkjIHN5c2N0bF90ZXN0X2RvaW50 dmVjX3RhYmxlX21heGxlbl91bnNldDogc3lzY3RsX3Rlc3RfZG9pbnR2ZWNfdGFibGVfbWF4bGVu X3Vuc2V0IHBhc3NlZAorCW9rIDIgLSBzeXNjdGxfdGVzdF9kb2ludHZlY190YWJsZV9tYXhsZW5f dW5zZXQKKwkjIHN5c2N0bF90ZXN0X2RvaW50dmVjX3RhYmxlX2xlbl9pc196ZXJvOiBzeXNjdGxf dGVzdF9kb2ludHZlY190YWJsZV9sZW5faXNfemVybyBwYXNzZWQKKwlvayAzIC0gc3lzY3RsX3Rl c3RfZG9pbnR2ZWNfdGFibGVfbGVuX2lzX3plcm8KKwkjIHN5c2N0bF90ZXN0X2RvaW50dmVjX3Rh YmxlX3JlYWRfYnV0X3Bvc2l0aW9uX3NldDogc3lzY3RsX3Rlc3RfZG9pbnR2ZWNfdGFibGVfcmVh ZF9idXRfcG9zaXRpb25fc2V0IHBhc3NlZAorCW9rIDQgLSBzeXNjdGxfdGVzdF9kb2ludHZlY190 YWJsZV9yZWFkX2J1dF9wb3NpdGlvbl9zZXQKKwkjIHN5c2N0bF90ZXN0X2RvaW50dmVjX2hhcHB5 X3NpbmdsZV9wb3NpdGl2ZTogc3lzY3RsX3Rlc3RfZG9pbnR2ZWNfaGFwcHlfc2luZ2xlX3Bvc2l0 aXZlIHBhc3NlZAorCW9rIDUgLSBzeXNjdGxfdGVzdF9kb2ludHZlY19oYXBweV9zaW5nbGVfcG9z aXRpdmUKKwkjIHN5c2N0bF90ZXN0X2RvaW50dmVjX2hhcHB5X3NpbmdsZV9uZWdhdGl2ZTogc3lz Y3RsX3Rlc3RfZG9pbnR2ZWNfaGFwcHlfc2luZ2xlX25lZ2F0aXZlIHBhc3NlZAorCW9rIDYgLSBz eXNjdGxfdGVzdF9kb2ludHZlY19oYXBweV9zaW5nbGVfbmVnYXRpdmUKKwkjIHN5c2N0bF90ZXN0 X2RvaW50dmVjX3NpbmdsZV9sZXNzX2ludF9taW46IHN5c2N0bF90ZXN0X2RvaW50dmVjX3Npbmds ZV9sZXNzX2ludF9taW4gcGFzc2VkCisJb2sgNyAtIHN5c2N0bF90ZXN0X2RvaW50dmVjX3Npbmds ZV9sZXNzX2ludF9taW4KKwkjIHN5c2N0bF90ZXN0X2RvaW50dmVjX3NpbmdsZV9ncmVhdGVyX2lu dF9tYXg6IHN5c2N0bF90ZXN0X2RvaW50dmVjX3NpbmdsZV9ncmVhdGVyX2ludF9tYXggcGFzc2Vk CisJb2sgOCAtIHN5c2N0bF90ZXN0X2RvaW50dmVjX3NpbmdsZV9ncmVhdGVyX2ludF9tYXgKK2t1 bml0IHN5c2N0bF90ZXN0OiBhbGwgdGVzdHMgcGFzc2VkCitvayAxIC0gc3lzY3RsX3Rlc3QKKwkj IFN1YnRlc3Q6IGV4YW1wbGUKKwkxLi4yCitpbml0X3N1aXRlCisJIyBleGFtcGxlX3NpbXBsZV90 ZXN0OiBpbml0aWFsaXppbmcKK1N0YWNrOgorIDYwMTZmN2RiIDZmODFiZDMwIDZmODFiZGQwIDYw MDIxNDUwCisgNjAyNGIwZTggNjAwMjE0NDAgNjAwMThiYmUgMTZmODFiZGMwCisgMDAwMDAwMDEg NmY4MWJkMzAgNmY4MWJkMjAgNmY4MWJkZDAKK0NhbGwgVHJhY2U6CisgWzw2MDE2ZjdkYj5dID8g a3VuaXRfdHJ5X3J1bl9jYXNlKzB4YWIvMHhmMAorIFs8NjAwMjE0NTA+XSA/IHNldF9zaWduYWxz KzB4MC8weDYwCisgWzw2MDAyMTQ0MD5dID8gZ2V0X3NpZ25hbHMrMHgwLzB4MTAKKyBbPDYwMDE4 YmJlPl0gPyBrdW5pdF91bV9ydW5fdHJ5X2NhdGNoKzB4NWUvMHhjMAorIFs8NjAwMjE0NTA+XSA/ IHNldF9zaWduYWxzKzB4MC8weDYwCisgWzw2MDAyMTQ0MD5dID8gZ2V0X3NpZ25hbHMrMHgwLzB4 MTAKKyBbPDYwMDE4YmIzPl0gPyBrdW5pdF91bV9ydW5fdHJ5X2NhdGNoKzB4NTMvMHhjMAorIFs8 NjAxNmYzMjE+XSA/IGt1bml0X3J1bl9jYXNlX2NhdGNoX2Vycm9ycysweDEyMS8weDFhMAorIFs8 NjAwMThiNjA+XSA/IGt1bml0X3VtX3J1bl90cnlfY2F0Y2grMHgwLzB4YzAKKyBbPDYwMDE4OWUw Pl0gPyBrdW5pdF91bV90aHJvdysweDAvMHgxODAKKyBbPDYwMTZmNzMwPl0gPyBrdW5pdF90cnlf cnVuX2Nhc2UrMHgwLzB4ZjAKKyBbPDYwMTZmNjAwPl0gPyBrdW5pdF9jYXRjaF9ydW5fY2FzZSsw eDAvMHgxMzAKKyBbPDYwMTZlZGQwPl0gPyBrdW5pdF92cHJpbnRrKzB4MC8weDMwCisgWzw2MDE2 ZWNlMD5dID8ga3VuaXRfZmFpbCsweDAvMHg0MAorIFs8NjAxNmVjYTA+XSA/IGt1bml0X2Fib3J0 KzB4MC8weDQwCisgWzw2MDE2ZWQyMD5dID8ga3VuaXRfcHJpbnRrX2VtaXQrMHgwLzB4YjAKKyBb PDYwMTZmMjAwPl0gPyBrdW5pdF9ydW5fY2FzZV9jYXRjaF9lcnJvcnMrMHgwLzB4MWEwCisgWzw2 MDE2ZjQ2ZT5dID8ga3VuaXRfcnVuX3Rlc3RzKzB4Y2UvMHgyNjAKKyBbPDYwMDViMzkwPl0gPyB1 bnJlZ2lzdGVyX2NvbnNvbGUrMHgwLzB4MTkwCisgWzw2MDE3NWI3MD5dID8gc3VpdGVfa3VuaXRf aW5pdGV4YW1wbGVfdGVzdF9zdWl0ZSsweDAvMHgyMAorIFs8NjAwMDFjYmI+XSA/IGRvX29uZV9p bml0Y2FsbCsweDAvMHgxOTcKKyBbPDYwMDAxZDQ3Pl0gPyBkb19vbmVfaW5pdGNhbGwrMHg4Yy8w eDE5NworIFs8NjAwNWNkMjA+XSA/IGlycV90b19kZXNjKzB4MC8weDMwCisgWzw2MDAwMjAwNT5d ID8ga2VybmVsX2luaXRfZnJlZWFibGUrMHgxYjMvMHgyNzIKKyBbPDYwMDVjNWVjPl0gPyBwcmlu dGsrMHgwLzB4OWIKKyBbPDYwMWMwMDg2Pl0gPyBrZXJuZWxfaW5pdCsweDI2LzB4MTYwCisgWzw2 MDAxNDQ0Mj5dID8gbmV3X3RocmVhZF9oYW5kbGVyKzB4ODIvMHhjMAorCisJIyBleGFtcGxlX3Np bXBsZV90ZXN0OiBrdW5pdCB0ZXN0IGNhc2UgY3Jhc2hlZCEKKwkjIGV4YW1wbGVfc2ltcGxlX3Rl c3Q6IGV4YW1wbGVfc2ltcGxlX3Rlc3QgZmFpbGVkCisJbm90IG9rIDEgLSBleGFtcGxlX3NpbXBs ZV90ZXN0CisJIyBleGFtcGxlX21vY2tfdGVzdDogaW5pdGlhbGl6aW5nCisJIyBleGFtcGxlX21v Y2tfdGVzdDogZXhhbXBsZV9tb2NrX3Rlc3QgcGFzc2VkCisJb2sgMiAtIGV4YW1wbGVfbW9ja190 ZXN0CitrdW5pdCBleGFtcGxlOiBvbmUgb3IgbW9yZSB0ZXN0cyBmYWlsZWQKK25vdCBvayAyIC0g ZXhhbXBsZQorTGlzdCBvZiBhbGwgcGFydGl0aW9uczoKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rp bmcva3VuaXQvdGVzdF9kYXRhL3Rlc3RfaXNfdGVzdF9wYXNzZWQtZmFpbHVyZS5sb2cgYi90b29s cy90ZXN0aW5nL2t1bml0L3Rlc3RfZGF0YS90ZXN0X2lzX3Rlc3RfcGFzc2VkLWZhaWx1cmUubG9n Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLjJlZDg3MGI2ZGU3MmYK LS0tIC9kZXYvbnVsbAorKysgYi90b29scy90ZXN0aW5nL2t1bml0L3Rlc3RfZGF0YS90ZXN0X2lz X3Rlc3RfcGFzc2VkLWZhaWx1cmUubG9nCkBAIC0wLDAgKzEsMzYgQEAKK1RBUCB2ZXJzaW9uIDE0 CisJIyBTdWJ0ZXN0OiBzeXNjdGxfdGVzdAorCTEuLjgKKwkjIHN5c2N0bF90ZXN0X2RvaW50dmVj X251bGxfdGJsX2RhdGE6IHN5c2N0bF90ZXN0X2RvaW50dmVjX251bGxfdGJsX2RhdGEgcGFzc2Vk CisJb2sgMSAtIHN5c2N0bF90ZXN0X2RvaW50dmVjX251bGxfdGJsX2RhdGEKKwkjIHN5c2N0bF90 ZXN0X2RvaW50dmVjX3RhYmxlX21heGxlbl91bnNldDogc3lzY3RsX3Rlc3RfZG9pbnR2ZWNfdGFi bGVfbWF4bGVuX3Vuc2V0IHBhc3NlZAorCW9rIDIgLSBzeXNjdGxfdGVzdF9kb2ludHZlY190YWJs ZV9tYXhsZW5fdW5zZXQKKwkjIHN5c2N0bF90ZXN0X2RvaW50dmVjX3RhYmxlX2xlbl9pc196ZXJv OiBzeXNjdGxfdGVzdF9kb2ludHZlY190YWJsZV9sZW5faXNfemVybyBwYXNzZWQKKwlvayAzIC0g c3lzY3RsX3Rlc3RfZG9pbnR2ZWNfdGFibGVfbGVuX2lzX3plcm8KKwkjIHN5c2N0bF90ZXN0X2Rv aW50dmVjX3RhYmxlX3JlYWRfYnV0X3Bvc2l0aW9uX3NldDogc3lzY3RsX3Rlc3RfZG9pbnR2ZWNf dGFibGVfcmVhZF9idXRfcG9zaXRpb25fc2V0IHBhc3NlZAorCW9rIDQgLSBzeXNjdGxfdGVzdF9k b2ludHZlY190YWJsZV9yZWFkX2J1dF9wb3NpdGlvbl9zZXQKKwkjIHN5c2N0bF90ZXN0X2RvaW50 dmVjX2hhcHB5X3NpbmdsZV9wb3NpdGl2ZTogc3lzY3RsX3Rlc3RfZG9pbnR2ZWNfaGFwcHlfc2lu Z2xlX3Bvc2l0aXZlIHBhc3NlZAorCW9rIDUgLSBzeXNjdGxfdGVzdF9kb2ludHZlY19oYXBweV9z aW5nbGVfcG9zaXRpdmUKKwkjIHN5c2N0bF90ZXN0X2RvaW50dmVjX2hhcHB5X3NpbmdsZV9uZWdh dGl2ZTogc3lzY3RsX3Rlc3RfZG9pbnR2ZWNfaGFwcHlfc2luZ2xlX25lZ2F0aXZlIHBhc3NlZAor CW9rIDYgLSBzeXNjdGxfdGVzdF9kb2ludHZlY19oYXBweV9zaW5nbGVfbmVnYXRpdmUKKwkjIHN5 c2N0bF90ZXN0X2RvaW50dmVjX3NpbmdsZV9sZXNzX2ludF9taW46IHN5c2N0bF90ZXN0X2RvaW50 dmVjX3NpbmdsZV9sZXNzX2ludF9taW4gcGFzc2VkCisJb2sgNyAtIHN5c2N0bF90ZXN0X2RvaW50 dmVjX3NpbmdsZV9sZXNzX2ludF9taW4KKwkjIHN5c2N0bF90ZXN0X2RvaW50dmVjX3NpbmdsZV9n cmVhdGVyX2ludF9tYXg6IHN5c2N0bF90ZXN0X2RvaW50dmVjX3NpbmdsZV9ncmVhdGVyX2ludF9t YXggcGFzc2VkCisJb2sgOCAtIHN5c2N0bF90ZXN0X2RvaW50dmVjX3NpbmdsZV9ncmVhdGVyX2lu dF9tYXgKK2t1bml0IHN5c2N0bF90ZXN0OiBhbGwgdGVzdHMgcGFzc2VkCitvayAxIC0gc3lzY3Rs X3Rlc3QKKwkjIFN1YnRlc3Q6IGV4YW1wbGUKKwkxLi4yCitpbml0X3N1aXRlCisJIyBleGFtcGxl X3NpbXBsZV90ZXN0OiBpbml0aWFsaXppbmcKKwkjIGV4YW1wbGVfc2ltcGxlX3Rlc3Q6IEVYUEVD VEFUSU9OIEZBSUxFRCBhdCBrdW5pdC9leGFtcGxlLXRlc3QuYzozMAorCUV4cGVjdGVkIDEgKyAx ID09IDMsIGJ1dAorCQkxICsgMSA9PSAyCisJCTMgPT0gMworCSMgZXhhbXBsZV9zaW1wbGVfdGVz dDogZXhhbXBsZV9zaW1wbGVfdGVzdCBmYWlsZWQKKwlub3Qgb2sgMSAtIGV4YW1wbGVfc2ltcGxl X3Rlc3QKKwkjIGV4YW1wbGVfbW9ja190ZXN0OiBpbml0aWFsaXppbmcKKwkjIGV4YW1wbGVfbW9j a190ZXN0OiBleGFtcGxlX21vY2tfdGVzdCBwYXNzZWQKKwlvayAyIC0gZXhhbXBsZV9tb2NrX3Rl c3QKK2t1bml0IGV4YW1wbGU6IG9uZSBvciBtb3JlIHRlc3RzIGZhaWxlZAorbm90IG9rIDIgLSBl eGFtcGxlCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL2t1bml0L3Rlc3RfZGF0YS90ZXN0X2lz X3Rlc3RfcGFzc2VkLW5vX3Rlc3RzX3J1bi5sb2cgYi90b29scy90ZXN0aW5nL2t1bml0L3Rlc3Rf ZGF0YS90ZXN0X2lzX3Rlc3RfcGFzc2VkLW5vX3Rlc3RzX3J1bi5sb2cKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uYmE2OWY1Yzk0Yjc1ZgotLS0gL2Rldi9udWxsCisr KyBiL3Rvb2xzL3Rlc3Rpbmcva3VuaXQvdGVzdF9kYXRhL3Rlc3RfaXNfdGVzdF9wYXNzZWQtbm9f dGVzdHNfcnVuLmxvZwpAQCAtMCwwICsxLDc1IEBACitDb3JlIGR1bXAgbGltaXRzIDoKKwlzb2Z0 IC0gMAorCWhhcmQgLSBOT05FCitDaGVja2luZyBlbnZpcm9ubWVudCB2YXJpYWJsZXMgZm9yIGEg dGVtcGRpci4uLm5vbmUgZm91bmQKK0NoZWNraW5nIGlmIC9kZXYvc2htIGlzIG9uIHRtcGZzLi4u T0sKK0NoZWNraW5nIFBST1RfRVhFQyBtbWFwIGluIC9kZXYvc2htLi4uT0sKK0FkZGluZyAyNDc0 MzkzNiBieXRlcyB0byBwaHlzaWNhbCBtZW1vcnkgdG8gYWNjb3VudCBmb3IgZXhlYy1zaGllbGQg Z2FwCitMaW51eCB2ZXJzaW9uIDQuMTIuMC1yYzMtMDAwMTAtZzczMTllYjM1ZjQ5My1kaXJ0eSAo YnJlbmRhbmhpZ2dpbnNAbWFjdHJ1Y2suc3ZsLmNvcnAuZ29vZ2xlLmNvbSkgKGdjYyB2ZXJzaW9u IDcuMy4wIChEZWJpYW4gNy4zLjAtNSkgKSAjMjkgVGh1IE1hciAxNSAxNDo1NzoxOSBQRFQgMjAx OAorQnVpbHQgMSB6b25lbGlzdHMgaW4gWm9uZSBvcmRlciwgbW9iaWxpdHkgZ3JvdXBpbmcgb24u ICBUb3RhbCBwYWdlczogMTQwMzgKK0tlcm5lbCBjb21tYW5kIGxpbmU6IHJvb3Q9OTg6MAorUElE IGhhc2ggdGFibGUgZW50cmllczogMjU2IChvcmRlcjogLTEsIDIwNDggYnl0ZXMpCitEZW50cnkg Y2FjaGUgaGFzaCB0YWJsZSBlbnRyaWVzOiA4MTkyIChvcmRlcjogNCwgNjU1MzYgYnl0ZXMpCitJ bm9kZS1jYWNoZSBoYXNoIHRhYmxlIGVudHJpZXM6IDQwOTYgKG9yZGVyOiAzLCAzMjc2OCBieXRl cykKK01lbW9yeTogMjc4NjhLLzU2OTMySyBhdmFpbGFibGUgKDE2ODFLIGtlcm5lbCBjb2RlLCA0 ODBLIHJ3ZGF0YSwgNDAwSyByb2RhdGEsIDg5SyBpbml0LCAyMDVLIGJzcywgMjkwNjRLIHJlc2Vy dmVkLCAwSyBjbWEtcmVzZXJ2ZWQpCitTTFVCOiBIV2FsaWduPTY0LCBPcmRlcj0wLTMsIE1pbk9i amVjdHM9MCwgQ1BVcz0xLCBOb2Rlcz0xCitOUl9JUlFTOjE1CitjbG9ja3NvdXJjZTogdGltZXI6 IG1hc2s6IDB4ZmZmZmZmZmZmZmZmZmZmZiBtYXhfY3ljbGVzOiAweDFjZDQyZTIwNSwgbWF4X2lk bGVfbnM6IDg4MTU5MDQwNDQyNiBucworQ2FsaWJyYXRpbmcgZGVsYXkgbG9vcC4uLiA3Mzg0LjI2 IEJvZ29NSVBTIChscGo9MzY5MjEzNDQpCitwaWRfbWF4OiBkZWZhdWx0OiAzMjc2OCBtaW5pbXVt OiAzMDEKK01vdW50LWNhY2hlIGhhc2ggdGFibGUgZW50cmllczogNTEyIChvcmRlcjogMCwgNDA5 NiBieXRlcykKK01vdW50cG9pbnQtY2FjaGUgaGFzaCB0YWJsZSBlbnRyaWVzOiA1MTIgKG9yZGVy OiAwLCA0MDk2IGJ5dGVzKQorQ2hlY2tpbmcgdGhhdCBob3N0IHB0eXMgc3VwcG9ydCBvdXRwdXQg U0lHSU8uLi5ZZXMKK0NoZWNraW5nIHRoYXQgaG9zdCBwdHlzIHN1cHBvcnQgU0lHSU8gb24gY2xv c2UuLi5ObywgZW5hYmxpbmcgd29ya2Fyb3VuZAorVXNpbmcgMi42IGhvc3QgQUlPCitjbG9ja3Nv dXJjZTogamlmZmllczogbWFzazogMHhmZmZmZmZmZiBtYXhfY3ljbGVzOiAweGZmZmZmZmZmLCBt YXhfaWRsZV9uczogMTkxMTI2MDQ0NjI3NTAwMDAgbnMKK2Z1dGV4IGhhc2ggdGFibGUgZW50cmll czogMjU2IChvcmRlcjogMCwgNjE0NCBieXRlcykKK2Nsb2Nrc291cmNlOiBTd2l0Y2hlZCB0byBj bG9ja3NvdXJjZSB0aW1lcgorY29uc29sZSBbc3RkZXJyMF0gZGlzYWJsZWQKK21jb25zb2xlICh2 ZXJzaW9uIDIpIGluaXRpYWxpemVkIG9uIC91c3IvbG9jYWwvZ29vZ2xlL2hvbWUvYnJlbmRhbmhp Z2dpbnMvLnVtbC82SWplY2wvbWNvbnNvbGUKK0NoZWNraW5nIGhvc3QgTUFEVl9SRU1PVkUgc3Vw cG9ydC4uLk9LCit3b3JraW5nc2V0OiB0aW1lc3RhbXBfYml0cz02MiBtYXhfb3JkZXI9MTMgYnVj a2V0X29yZGVyPTAKK0Jsb2NrIGxheWVyIFNDU0kgZ2VuZXJpYyAoYnNnKSBkcml2ZXIgdmVyc2lv biAwLjQgbG9hZGVkIChtYWpvciAyNTQpCitpbyBzY2hlZHVsZXIgbm9vcCByZWdpc3RlcmVkCitp byBzY2hlZHVsZXIgZGVhZGxpbmUgcmVnaXN0ZXJlZAoraW8gc2NoZWR1bGVyIGNmcSByZWdpc3Rl cmVkIChkZWZhdWx0KQoraW8gc2NoZWR1bGVyIG1xLWRlYWRsaW5lIHJlZ2lzdGVyZWQKK2lvIHNj aGVkdWxlciBreWJlciByZWdpc3RlcmVkCitJbml0aWFsaXplZCBzdGRpbyBjb25zb2xlIGRyaXZl cgorVXNpbmcgYSBjaGFubmVsIHR5cGUgd2hpY2ggaXMgY29uZmlndXJlZCBvdXQgb2YgVU1MCitz ZXR1cF9vbmVfbGluZSBmYWlsZWQgZm9yIGRldmljZSAxIDogQ29uZmlndXJhdGlvbiBmYWlsZWQK K1VzaW5nIGEgY2hhbm5lbCB0eXBlIHdoaWNoIGlzIGNvbmZpZ3VyZWQgb3V0IG9mIFVNTAorc2V0 dXBfb25lX2xpbmUgZmFpbGVkIGZvciBkZXZpY2UgMiA6IENvbmZpZ3VyYXRpb24gZmFpbGVkCitV c2luZyBhIGNoYW5uZWwgdHlwZSB3aGljaCBpcyBjb25maWd1cmVkIG91dCBvZiBVTUwKK3NldHVw X29uZV9saW5lIGZhaWxlZCBmb3IgZGV2aWNlIDMgOiBDb25maWd1cmF0aW9uIGZhaWxlZAorVXNp bmcgYSBjaGFubmVsIHR5cGUgd2hpY2ggaXMgY29uZmlndXJlZCBvdXQgb2YgVU1MCitzZXR1cF9v bmVfbGluZSBmYWlsZWQgZm9yIGRldmljZSA0IDogQ29uZmlndXJhdGlvbiBmYWlsZWQKK1VzaW5n IGEgY2hhbm5lbCB0eXBlIHdoaWNoIGlzIGNvbmZpZ3VyZWQgb3V0IG9mIFVNTAorc2V0dXBfb25l X2xpbmUgZmFpbGVkIGZvciBkZXZpY2UgNSA6IENvbmZpZ3VyYXRpb24gZmFpbGVkCitVc2luZyBh IGNoYW5uZWwgdHlwZSB3aGljaCBpcyBjb25maWd1cmVkIG91dCBvZiBVTUwKK3NldHVwX29uZV9s aW5lIGZhaWxlZCBmb3IgZGV2aWNlIDYgOiBDb25maWd1cmF0aW9uIGZhaWxlZAorVXNpbmcgYSBj aGFubmVsIHR5cGUgd2hpY2ggaXMgY29uZmlndXJlZCBvdXQgb2YgVU1MCitzZXR1cF9vbmVfbGlu ZSBmYWlsZWQgZm9yIGRldmljZSA3IDogQ29uZmlndXJhdGlvbiBmYWlsZWQKK1VzaW5nIGEgY2hh bm5lbCB0eXBlIHdoaWNoIGlzIGNvbmZpZ3VyZWQgb3V0IG9mIFVNTAorc2V0dXBfb25lX2xpbmUg ZmFpbGVkIGZvciBkZXZpY2UgOCA6IENvbmZpZ3VyYXRpb24gZmFpbGVkCitVc2luZyBhIGNoYW5u ZWwgdHlwZSB3aGljaCBpcyBjb25maWd1cmVkIG91dCBvZiBVTUwKK3NldHVwX29uZV9saW5lIGZh aWxlZCBmb3IgZGV2aWNlIDkgOiBDb25maWd1cmF0aW9uIGZhaWxlZAorVXNpbmcgYSBjaGFubmVs IHR5cGUgd2hpY2ggaXMgY29uZmlndXJlZCBvdXQgb2YgVU1MCitzZXR1cF9vbmVfbGluZSBmYWls ZWQgZm9yIGRldmljZSAxMCA6IENvbmZpZ3VyYXRpb24gZmFpbGVkCitVc2luZyBhIGNoYW5uZWwg dHlwZSB3aGljaCBpcyBjb25maWd1cmVkIG91dCBvZiBVTUwKK3NldHVwX29uZV9saW5lIGZhaWxl ZCBmb3IgZGV2aWNlIDExIDogQ29uZmlndXJhdGlvbiBmYWlsZWQKK1VzaW5nIGEgY2hhbm5lbCB0 eXBlIHdoaWNoIGlzIGNvbmZpZ3VyZWQgb3V0IG9mIFVNTAorc2V0dXBfb25lX2xpbmUgZmFpbGVk IGZvciBkZXZpY2UgMTIgOiBDb25maWd1cmF0aW9uIGZhaWxlZAorVXNpbmcgYSBjaGFubmVsIHR5 cGUgd2hpY2ggaXMgY29uZmlndXJlZCBvdXQgb2YgVU1MCitzZXR1cF9vbmVfbGluZSBmYWlsZWQg Zm9yIGRldmljZSAxMyA6IENvbmZpZ3VyYXRpb24gZmFpbGVkCitVc2luZyBhIGNoYW5uZWwgdHlw ZSB3aGljaCBpcyBjb25maWd1cmVkIG91dCBvZiBVTUwKK3NldHVwX29uZV9saW5lIGZhaWxlZCBm b3IgZGV2aWNlIDE0IDogQ29uZmlndXJhdGlvbiBmYWlsZWQKK1VzaW5nIGEgY2hhbm5lbCB0eXBl IHdoaWNoIGlzIGNvbmZpZ3VyZWQgb3V0IG9mIFVNTAorc2V0dXBfb25lX2xpbmUgZmFpbGVkIGZv ciBkZXZpY2UgMTUgOiBDb25maWd1cmF0aW9uIGZhaWxlZAorQ29uc29sZSBpbml0aWFsaXplZCBv biAvZGV2L3R0eTAKK2NvbnNvbGUgW3R0eTBdIGVuYWJsZWQKK2NvbnNvbGUgW21jLTFdIGVuYWJs ZWQKK0xpc3Qgb2YgYWxsIHBhcnRpdGlvbnM6CitObyBmaWxlc3lzdGVtIGNvdWxkIG1vdW50IHJv b3QsIHRyaWVkOgorCitLZXJuZWwgcGFuaWMgLSBub3Qgc3luY2luZzogVkZTOiBVbmFibGUgdG8g bW91bnQgcm9vdCBmcyBvbiB1bmtub3duLWJsb2NrKDk4LDApCmRpZmYgLS1naXQgYS90b29scy90 ZXN0aW5nL2t1bml0L3Rlc3RfZGF0YS90ZXN0X291dHB1dF9pc29sYXRlZF9jb3JyZWN0bHkubG9n IGIvdG9vbHMvdGVzdGluZy9rdW5pdC90ZXN0X2RhdGEvdGVzdF9vdXRwdXRfaXNvbGF0ZWRfY29y cmVjdGx5LmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi45NGE2 YjNhZWFhOTIyCi0tLSAvZGV2L251bGwKKysrIGIvdG9vbHMvdGVzdGluZy9rdW5pdC90ZXN0X2Rh dGEvdGVzdF9vdXRwdXRfaXNvbGF0ZWRfY29ycmVjdGx5LmxvZwpAQCAtMCwwICsxLDEwNiBAQAor TGludXggdmVyc2lvbiA1LjEuMC1yYzctMDAwNjEtZzA0NjUyZjFjYjRhYTAgKGJyZW5kYW5oaWdn aW5zQG1hY3RydWNrLnN2bC5jb3JwLmdvb2dsZS5jb20pIChnY2MgdmVyc2lvbiA3LjMuMCAoRGVi aWFuIDcuMy4wLTE4KSkgIzE2MyBXZWQgTWF5IDggMTY6MTg6MjAgUERUIDIwMTkKK0J1aWx0IDEg em9uZWxpc3RzLCBtb2JpbGl0eSBncm91cGluZyBvbi4gIFRvdGFsIHBhZ2VzOiA2OTkwNgorS2Vy bmVsIGNvbW1hbmQgbGluZTogbWVtPTI1Nk0gcm9vdD05ODowCitEZW50cnkgY2FjaGUgaGFzaCB0 YWJsZSBlbnRyaWVzOiA2NTUzNiAob3JkZXI6IDcsIDUyNDI4OCBieXRlcykKK0lub2RlLWNhY2hl IGhhc2ggdGFibGUgZW50cmllczogMzI3NjggKG9yZGVyOiA2LCAyNjIxNDQgYnl0ZXMpCitNZW1v cnk6IDI1NDQ2OEsvMjgzNTAwSyBhdmFpbGFibGUgKDE3MzRLIGtlcm5lbCBjb2RlLCA0ODlLIHJ3 ZGF0YSwgMzk2SyByb2RhdGEsIDg1SyBpbml0LCAyMTZLIGJzcywgMjkwMzJLIHJlc2VydmVkLCAw SyBjbWEtcmVzZXJ2ZWQpCitTTFVCOiBIV2FsaWduPTY0LCBPcmRlcj0wLTMsIE1pbk9iamVjdHM9 MCwgQ1BVcz0xLCBOb2Rlcz0xCitOUl9JUlFTOiAxNQorY2xvY2tzb3VyY2U6IHRpbWVyOiBtYXNr OiAweGZmZmZmZmZmZmZmZmZmZmYgbWF4X2N5Y2xlczogMHgxY2Q0MmUyMDUsIG1heF9pZGxlX25z OiA4ODE1OTA0MDQ0MjYgbnMKKy0tLS0tLS0tLS0tLVsgY3V0IGhlcmUgXS0tLS0tLS0tLS0tLQor V0FSTklORzogQ1BVOiAwIFBJRDogMCBhdCBrZXJuZWwvdGltZS9jbG9ja2V2ZW50cy5jOjQ1OCBj bG9ja2V2ZW50c19yZWdpc3Rlcl9kZXZpY2UrMHgxNDMvMHgxNjAKK3Bvc2l4LXRpbWVyIGNwdW1h c2sgPT0gY3B1X2FsbF9tYXNrLCB1c2luZyBjcHVfcG9zc2libGVfbWFzayBpbnN0ZWFkCitDUFU6 IDAgUElEOiAwIENvbW06IHN3YXBwZXIgTm90IHRhaW50ZWQgNS4xLjAtcmM3LTAwMDYxLWcwNDY1 MmYxY2I0YWEwICMxNjMKK1N0YWNrOgorIDYwMDVjYzAwIDYwMjMzZTE4IDYwMjMzZTYwIDYwMjMz ZTE4CisgNjAyMzNlNjAgMDAwMDAwMDkgMDAwMDAwMDAgNjAwMmExYjQKKyAxY2EwMDAwMDAwMCA2 MDA3MWMyMyA2MDIzM2U3OCAxMDAwMDAwMDAwMDAwNjIKK0NhbGwgVHJhY2U6CisgWzw2MDAyMTRj NT5dID8gb3NfaXNfc2lnbmFsX3N0YWNrKzB4MTUvMHgzMAorIFs8NjAwNWM1ZWM+XSA/IHByaW50 aysweDAvMHg5YgorIFs8NjAwMTU5N2U+XSA/IHNob3dfc3RhY2srMHhiZS8weDFjMAorIFs8NjAw NWNjMDA+XSA/IF9fcHJpbnRrX3NhZmVfZXhpdCsweDAvMHg0MAorIFs8NjAwMmExYjQ+XSA/IF9f d2FybisweDE0NC8weDE3MAorIFs8NjAwNzFjMjM+XSA/IGNsb2NrZXZlbnRzX3JlZ2lzdGVyX2Rl dmljZSsweDE0My8weDE2MAorIFs8NjAwMjE0NDA+XSA/IGdldF9zaWduYWxzKzB4MC8weDEwCisg Wzw2MDA1YzVlYz5dID8gcHJpbnRrKzB4MC8weDliCisgWzw2MDAyYTI3Yj5dID8gd2Fybl9zbG93 cGF0aF9mbXQrMHg5Yi8weGIwCisgWzw2MDA1YzVlYz5dID8gcHJpbnRrKzB4MC8weDliCisgWzw2 MDAyYTFlMD5dID8gd2Fybl9zbG93cGF0aF9mbXQrMHgwLzB4YjAKKyBbPDYwMDVjNWVjPl0gPyBw cmludGsrMHgwLzB4OWIKKyBbPDYwMDIxNDQwPl0gPyBnZXRfc2lnbmFscysweDAvMHgxMAorIFs8 NjAwMjEzZjA+XSA/IGJsb2NrX3NpZ25hbHMrMHgwLzB4MjAKKyBbPDYwMDcxYzIzPl0gPyBjbG9j a2V2ZW50c19yZWdpc3Rlcl9kZXZpY2UrMHgxNDMvMHgxNjAKKyBbPDYwMDIxNDQwPl0gPyBnZXRf c2lnbmFscysweDAvMHgxMAorIFs8NjAwMjEzZjA+XSA/IGJsb2NrX3NpZ25hbHMrMHgwLzB4MjAK KyBbPDYwMDVjNWVjPl0gPyBwcmludGsrMHgwLzB4OWIKKyBbPDYwMDAxYmM4Pl0gPyBzdGFydF9r ZXJuZWwrMHg0NzcvMHg1NmEKKyBbPDYwMDAzNmYxPl0gPyBzdGFydF9rZXJuZWxfcHJvYysweDQ2 LzB4NGQKKyBbPDYwMDE0NDQyPl0gPyBuZXdfdGhyZWFkX2hhbmRsZXIrMHg4Mi8weGMwCisKK3Jh bmRvbTogZ2V0X3JhbmRvbV9ieXRlcyBjYWxsZWQgZnJvbSBwcmludF9vb3BzX2VuZF9tYXJrZXIr MHg0Yy8weDYwIHdpdGggY3JuZ19pbml0PTAKKy0tLVsgZW5kIHRyYWNlIGM4MzQzNDg1MmIzNzAy ZDMgXS0tLQorQ2FsaWJyYXRpbmcgZGVsYXkgbG9vcC4uLiA2OTU4LjI4IEJvZ29NSVBTIChscGo9 MzQ3OTE0MjQpCitwaWRfbWF4OiBkZWZhdWx0OiAzMjc2OCBtaW5pbXVtOiAzMDEKK01vdW50LWNh Y2hlIGhhc2ggdGFibGUgZW50cmllczogMTAyNCAob3JkZXI6IDEsIDgxOTIgYnl0ZXMpCitNb3Vu dHBvaW50LWNhY2hlIGhhc2ggdGFibGUgZW50cmllczogMTAyNCAob3JkZXI6IDEsIDgxOTIgYnl0 ZXMpCisqKiogVkFMSURBVEUgcHJvYyAqKioKK0NoZWNraW5nIHRoYXQgaG9zdCBwdHlzIHN1cHBv cnQgb3V0cHV0IFNJR0lPLi4uWWVzCitDaGVja2luZyB0aGF0IGhvc3QgcHR5cyBzdXBwb3J0IFNJ R0lPIG9uIGNsb3NlLi4uTm8sIGVuYWJsaW5nIHdvcmthcm91bmQKK2Nsb2Nrc291cmNlOiBqaWZm aWVzOiBtYXNrOiAweGZmZmZmZmZmIG1heF9jeWNsZXM6IDB4ZmZmZmZmZmYsIG1heF9pZGxlX25z OiAxOTExMjYwNDQ2Mjc1MDAwMCBucworZnV0ZXggaGFzaCB0YWJsZSBlbnRyaWVzOiAyNTYgKG9y ZGVyOiAwLCA2MTQ0IGJ5dGVzKQorY2xvY2tzb3VyY2U6IFN3aXRjaGVkIHRvIGNsb2Nrc291cmNl IHRpbWVyCitwcmludGs6IGNvbnNvbGUgW3N0ZGVycjBdIGRpc2FibGVkCittY29uc29sZSAodmVy c2lvbiAyKSBpbml0aWFsaXplZCBvbiAvdXNyL2xvY2FsL2dvb2dsZS9ob21lL2JyZW5kYW5oaWdn aW5zLy51bWwvVloycU1tL21jb25zb2xlCitDaGVja2luZyBob3N0IE1BRFZfUkVNT1ZFIHN1cHBv cnQuLi5PSword29ya2luZ3NldDogdGltZXN0YW1wX2JpdHM9NjIgbWF4X29yZGVyPTE2IGJ1Y2tl dF9vcmRlcj0wCitCbG9jayBsYXllciBTQ1NJIGdlbmVyaWMgKGJzZykgZHJpdmVyIHZlcnNpb24g MC40IGxvYWRlZCAobWFqb3IgMjU0KQoraW8gc2NoZWR1bGVyIG1xLWRlYWRsaW5lIHJlZ2lzdGVy ZWQKK2lvIHNjaGVkdWxlciBreWJlciByZWdpc3RlcmVkCitJbml0aWFsaXplZCBzdGRpbyBjb25z b2xlIGRyaXZlcgorVXNpbmcgYSBjaGFubmVsIHR5cGUgd2hpY2ggaXMgY29uZmlndXJlZCBvdXQg b2YgVU1MCitzZXR1cF9vbmVfbGluZSBmYWlsZWQgZm9yIGRldmljZSAxIDogQ29uZmlndXJhdGlv biBmYWlsZWQKK1VzaW5nIGEgY2hhbm5lbCB0eXBlIHdoaWNoIGlzIGNvbmZpZ3VyZWQgb3V0IG9m IFVNTAorc2V0dXBfb25lX2xpbmUgZmFpbGVkIGZvciBkZXZpY2UgMiA6IENvbmZpZ3VyYXRpb24g ZmFpbGVkCitVc2luZyBhIGNoYW5uZWwgdHlwZSB3aGljaCBpcyBjb25maWd1cmVkIG91dCBvZiBV TUwKK3NldHVwX29uZV9saW5lIGZhaWxlZCBmb3IgZGV2aWNlIDMgOiBDb25maWd1cmF0aW9uIGZh aWxlZAorVXNpbmcgYSBjaGFubmVsIHR5cGUgd2hpY2ggaXMgY29uZmlndXJlZCBvdXQgb2YgVU1M CitzZXR1cF9vbmVfbGluZSBmYWlsZWQgZm9yIGRldmljZSA0IDogQ29uZmlndXJhdGlvbiBmYWls ZWQKK1VzaW5nIGEgY2hhbm5lbCB0eXBlIHdoaWNoIGlzIGNvbmZpZ3VyZWQgb3V0IG9mIFVNTAor c2V0dXBfb25lX2xpbmUgZmFpbGVkIGZvciBkZXZpY2UgNSA6IENvbmZpZ3VyYXRpb24gZmFpbGVk CitVc2luZyBhIGNoYW5uZWwgdHlwZSB3aGljaCBpcyBjb25maWd1cmVkIG91dCBvZiBVTUwKK3Nl dHVwX29uZV9saW5lIGZhaWxlZCBmb3IgZGV2aWNlIDYgOiBDb25maWd1cmF0aW9uIGZhaWxlZAor VXNpbmcgYSBjaGFubmVsIHR5cGUgd2hpY2ggaXMgY29uZmlndXJlZCBvdXQgb2YgVU1MCitzZXR1 cF9vbmVfbGluZSBmYWlsZWQgZm9yIGRldmljZSA3IDogQ29uZmlndXJhdGlvbiBmYWlsZWQKK1Vz aW5nIGEgY2hhbm5lbCB0eXBlIHdoaWNoIGlzIGNvbmZpZ3VyZWQgb3V0IG9mIFVNTAorc2V0dXBf b25lX2xpbmUgZmFpbGVkIGZvciBkZXZpY2UgOCA6IENvbmZpZ3VyYXRpb24gZmFpbGVkCitVc2lu ZyBhIGNoYW5uZWwgdHlwZSB3aGljaCBpcyBjb25maWd1cmVkIG91dCBvZiBVTUwKK3NldHVwX29u ZV9saW5lIGZhaWxlZCBmb3IgZGV2aWNlIDkgOiBDb25maWd1cmF0aW9uIGZhaWxlZAorVXNpbmcg YSBjaGFubmVsIHR5cGUgd2hpY2ggaXMgY29uZmlndXJlZCBvdXQgb2YgVU1MCitzZXR1cF9vbmVf bGluZSBmYWlsZWQgZm9yIGRldmljZSAxMCA6IENvbmZpZ3VyYXRpb24gZmFpbGVkCitVc2luZyBh IGNoYW5uZWwgdHlwZSB3aGljaCBpcyBjb25maWd1cmVkIG91dCBvZiBVTUwKK3NldHVwX29uZV9s aW5lIGZhaWxlZCBmb3IgZGV2aWNlIDExIDogQ29uZmlndXJhdGlvbiBmYWlsZWQKK1VzaW5nIGEg Y2hhbm5lbCB0eXBlIHdoaWNoIGlzIGNvbmZpZ3VyZWQgb3V0IG9mIFVNTAorc2V0dXBfb25lX2xp bmUgZmFpbGVkIGZvciBkZXZpY2UgMTIgOiBDb25maWd1cmF0aW9uIGZhaWxlZAorVXNpbmcgYSBj aGFubmVsIHR5cGUgd2hpY2ggaXMgY29uZmlndXJlZCBvdXQgb2YgVU1MCitzZXR1cF9vbmVfbGlu ZSBmYWlsZWQgZm9yIGRldmljZSAxMyA6IENvbmZpZ3VyYXRpb24gZmFpbGVkCitVc2luZyBhIGNo YW5uZWwgdHlwZSB3aGljaCBpcyBjb25maWd1cmVkIG91dCBvZiBVTUwKK3NldHVwX29uZV9saW5l IGZhaWxlZCBmb3IgZGV2aWNlIDE0IDogQ29uZmlndXJhdGlvbiBmYWlsZWQKK1VzaW5nIGEgY2hh bm5lbCB0eXBlIHdoaWNoIGlzIGNvbmZpZ3VyZWQgb3V0IG9mIFVNTAorc2V0dXBfb25lX2xpbmUg ZmFpbGVkIGZvciBkZXZpY2UgMTUgOiBDb25maWd1cmF0aW9uIGZhaWxlZAorQ29uc29sZSBpbml0 aWFsaXplZCBvbiAvZGV2L3R0eTAKK3ByaW50azogY29uc29sZSBbdHR5MF0gZW5hYmxlZAorcHJp bnRrOiBjb25zb2xlIFttYy0xXSBlbmFibGVkCitUQVAgdmVyc2lvbiAxNAorCSMgU3VidGVzdDog ZXhhbXBsZQorCTEuLjIKK2luaXRfc3VpdGUKKwkjIGV4YW1wbGVfc2ltcGxlX3Rlc3Q6IGluaXRp YWxpemluZworCSMgZXhhbXBsZV9zaW1wbGVfdGVzdDogZXhhbXBsZV9zaW1wbGVfdGVzdCBwYXNz ZWQKKwlvayAxIC0gZXhhbXBsZV9zaW1wbGVfdGVzdAorCSMgZXhhbXBsZV9tb2NrX3Rlc3Q6IGlu aXRpYWxpemluZworCSMgZXhhbXBsZV9tb2NrX3Rlc3Q6IGV4YW1wbGVfbW9ja190ZXN0IHBhc3Nl ZAorCW9rIDIgLSBleGFtcGxlX21vY2tfdGVzdAora3VuaXQgZXhhbXBsZTogYWxsIHRlc3RzIHBh c3NlZAorb2sgMSAtIGV4YW1wbGUKK0xpc3Qgb2YgYWxsIHBhcnRpdGlvbnM6CmRpZmYgLS1naXQg YS90b29scy90ZXN0aW5nL2t1bml0L3Rlc3RfZGF0YS90ZXN0X3JlYWRfZnJvbV9maWxlLmtjb25m aWcgYi90b29scy90ZXN0aW5nL2t1bml0L3Rlc3RfZGF0YS90ZXN0X3JlYWRfZnJvbV9maWxlLmtj b25maWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uZDJhNDkyOGFj NzczYgotLS0gL2Rldi9udWxsCisrKyBiL3Rvb2xzL3Rlc3Rpbmcva3VuaXQvdGVzdF9kYXRhL3Rl c3RfcmVhZF9mcm9tX2ZpbGUua2NvbmZpZwpAQCAtMCwwICsxLDE3IEBACisjCisjIEF1dG9tYXRp Y2FsbHkgZ2VuZXJhdGVkIGZpbGU7IERPIE5PVCBFRElULgorIyBVc2VyIE1vZGUgTGludXgveDg2 IDQuMTIuMC1yYzMgS2VybmVsIENvbmZpZ3VyYXRpb24KKyMKK0NPTkZJR19VTUw9eQorQ09ORklH X01NVT15CisKKyMKKyMgVU1MLXNwZWNpZmljIG9wdGlvbnMKKyMKKworIworIyBIb3N0IHByb2Nl c3NvciB0eXBlIGFuZCBmZWF0dXJlcworIworIyBDT05GSUdfTUs4IGlzIG5vdCBzZXQKK0NPTkZJ R19URVNUPXkKK0NPTkZJR19FWEFNUExFX1RFU1Q9eQotLSAKMi4yMi4wLjUxMC5nMjY0ZjJjODE3 YS1nb29nCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpk cmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWw=