From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from [87.239.111.99] (localhost [127.0.0.1]) by dev.tarantool.org (Postfix) with ESMTP id 43320717AAD; Wed, 6 Dec 2023 17:03:07 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 dev.tarantool.org 43320717AAD DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=tarantool.org; s=dev; t=1701871387; bh=4WysBSYckvkh/33vwycBUhVWIM17Qbz6jdhxxe6DSo0=; h=To:Date:In-Reply-To:References:Subject:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc: From; b=h00omDWjiKbatOo2jU7uIuNKfNv/zWTplXpRUQzVW08dB/QbHz6e2kPO6matilzRZ fBeZWzwADmuHHGMt8LKKqoSQf15NyUO/rVuuvyZNbq6W5APZuMRwBEwRPMcCSZ0ZFW uxibyGy2wTGsBQ6bTocwOBnUVgivzsEByFxMHPdc= Received: from f554.i.mail.ru (f554.i.mail.ru [45.84.129.60]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dev.tarantool.org (Postfix) with ESMTPS id E05F1717AAD for ; Wed, 6 Dec 2023 17:03:05 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 dev.tarantool.org E05F1717AAD Received: by f554.i.mail.ru with local (envelope-from ) id 1rAsUR-00010Z-Pa; Wed, 06 Dec 2023 17:03:04 +0300 Received: by e.mail.ru with HTTP; Wed, 06 Dec 2023 17:03:03 +0300 To: =?UTF-8?B?U2VyZ2V5IEJyb25uaWtvdg==?= MIME-Version: 1.0 X-Mailer: Mail.Ru Mailer 1.0 X-SenderField-ReMsg: 17006635260717141106 X-SenderField-Remind: 0 Date: Wed, 06 Dec 2023 17:03:03 +0300 X-Priority: 3 (Normal) Message-ID: <1701871383.111904066@f762.i.mail.ru> Content-Type: multipart/alternative; boundary="--ALT--a37B5203F22b53aDA90b87fEcAc45E521701871383" In-Reply-To: <014cfe18-71eb-4d99-866f-056d6787526f@tarantool.org> References: <20231110201612.81722-1-max.kokryashkin@gmail.com> <20231110201612.81722-3-max.kokryashkin@gmail.com> <014cfe18-71eb-4d99-866f-056d6787526f@tarantool.org> X-Mailru-Src: fe X-7564579A: 646B95376F6C166E X-77F55803: 119C1F4DF6A9251C89EAF21FBB369C35787591EFB9E97C7ECD24CE4E763F853A8FD872164937FA4CA758C2E2A6092A7E5A6078DE16FE8CE1C49E96ACD5481D8F358B6E75E94A7C2C X-C1DE0DAB: 0D63561A33F958A5CF3251B09FC6A0E27E4E3FAABB6AF3F2BCA26DE7E96F5FAAF87CCE6106E1FC07E67D4AC08A07B9B01DAA61796BF5227BCB5012B2E24CD356 X-C8649E89: 1C3962B70DF3F0AD5177F0B940C8B66ECE892A7B2722663E91682638B966EB3F662256BEEFA9527FE416E7E7C43DC2DC9F50EBCC87ED2A289529AD08C2DBC3130F0E385303C7A11E871283D6E1E354D437FD76D11AF80A0D3299D947778D8891B9A3DA8CCA68C013EA455F16B58544A2D06CB91D864A7BD2965026E5D17F6739C77C69D99B9914278E50E1F0597A6FD5CD72808BE417F3B9E0E7457915DAA85F X-D57D3AED: 3ZO7eAau8CL7WIMRKs4sN3D3tLDjz0dLbV79QFUyzQ2Ujvy7cMT6pYYqY16iZVKkSc3dCLJ7zSJH7+u4VD18S7Vl4ZUrpaVfd2+vE6kuoey4m4VkSEu530nj6fImhcD4MUrOEAnl0W826KZ9Q+tr5+wYjsrrSY/u8Y3PrTqANeitKFiSd6Yd7yPpbiiZ/d5BsxIjK0jGQgCHUM3Ry2Lt2G3MDkMauH3h0dBdQGj+BB/iPzQYh7XS329fgu+/vnDhxs/Bq4wlPfVqc+BO9WkzWw== X-Mailru-MI: 800 X-Mailru-Sender: 11C2EC085EDE56FA38FD4C59F7EFE4074D15AAE5D3F3CB779471F19CE3C698427DA08090A1FC380F06CD02445D2D9C8FA2BFD6D8330F0C2D563E610FBBDBB4C842051EA7CBBFB509093DA5C00B83CE8412EB40C6FA10D71EFD657A8799238ED55FEEDEB644C299C0ED14614B50AE0675 X-Mras: OK Subject: Re: [Tarantool-patches] =?utf-8?q?=5BPATCH_luajit_v3_2/2=5D_test=3A_?= =?utf-8?q?add_tests_for_debugging_extensions?= X-BeenThere: tarantool-patches@dev.tarantool.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Tarantool development patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Maxim Kokryashkin via Tarantool-patches Reply-To: =?UTF-8?B?TWF4aW0gS29rcnlhc2hraW4=?= Cc: =?UTF-8?B?TWFrc2ltIEtva3J5YXNoa2lu?= , tarantool-patches@dev.tarantool.org Errors-To: tarantool-patches-bounces@dev.tarantool.org Sender: "Tarantool-patches" ----ALT--a37B5203F22b53aDA90b87fEcAc45E521701871383 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: base64 CkhpLCBTZXJnZXkhClRoYW5rcyBmb3IgdGhlIHJldmlldyEKwqAgCj7QodGA0LXQtNCwLCAyMiDQ vdC+0Y/QsdGA0Y8gMjAyMywgMTc6MzIgKzAzOjAwINC+0YIgU2VyZ2V5IEJyb25uaWtvdiA8c2Vy Z2V5YkB0YXJhbnRvb2wub3JnPjoKPsKgCj5IZWxsbywgTWF4LAo+dGhhbmtzIGZvciB0aGUgdGVz dHMhCj5TZWUgbXkgY29tbWVudHMuCj7CoAo+Rmlyc3Qgb2YgYWxsIC0gVGVzdExKU3RyIGFsd2F5 cyB0aW1lZCBvdXQ6Cj49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Cj5FUlJPUjogc2V0VXBDbGFzcyAoX19tYWluX18u VGVzdExKU3RyKQo+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+VHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxh c3QpOgo+wqAgRmlsZSAiL2hvbWUvc2VyZ2V5Yi9zb3VyY2VzL01SRy90YXJhbnRvb2wvdGhpcmRf cGFydHkvbHVhaml0L3Rlc3QvTHVhSklULWRlYnVnLWV4dGVuc2lvbnMtdGVzdHMvZGVidWctZXh0 ZW5zaW9uLXRlc3RzLnB5IiwgbGluZSA4OCwgaW4gc2V0VXBDbGFzcwo+wqDCoMKgIGNscy5vdXRw dXQgPSBmaWx0ZXJfZGVidWdnZXJfb3V0cHV0KGV4ZWN1dGVfcHJvY2Vzcyhwcm9jZXNzX2NtZCkp Cj7CoCBGaWxlICIvaG9tZS9zZXJnZXliL3NvdXJjZXMvTVJHL3RhcmFudG9vbC90aGlyZF9wYXJ0 eS9sdWFqaXQvdGVzdC9MdWFKSVQtZGVidWctZXh0ZW5zaW9ucy10ZXN0cy9kZWJ1Zy1leHRlbnNp b24tdGVzdHMucHkiLCBsaW5lIDUwLCBpbiBleGVjdXRlX3Byb2Nlc3MKPsKgwqDCoCBwcm9jZXNz ID0gc3VicHJvY2Vzcy5ydW4oY21kLCBjYXB0dXJlX291dHB1dD1UcnVlLCB0aW1lb3V0PVRJTUVP VVQpCj7CoCBGaWxlICIvdXNyL2xpYi9weXRob24zLjEwL3N1YnByb2Nlc3MucHkiLCBsaW5lIDUw NSwgaW4gcnVuCj7CoMKgwqAgc3Rkb3V0LCBzdGRlcnIgPSBwcm9jZXNzLmNvbW11bmljYXRlKGlu cHV0LCB0aW1lb3V0PXRpbWVvdXQpCj7CoCBGaWxlICIvdXNyL2xpYi9weXRob24zLjEwL3N1YnBy b2Nlc3MucHkiLCBsaW5lIDExNTQsIGluIGNvbW11bmljYXRlCj7CoMKgwqAgc3Rkb3V0LCBzdGRl cnIgPSBzZWxmLl9jb21tdW5pY2F0ZShpbnB1dCwgZW5kdGltZSwgdGltZW91dCkKPsKgIEZpbGUg Ii91c3IvbGliL3B5dGhvbjMuMTAvc3VicHJvY2Vzcy5weSIsIGxpbmUgMjAyMiwgaW4gX2NvbW11 bmljYXRlCj7CoMKgwqAgc2VsZi5fY2hlY2tfdGltZW91dChlbmR0aW1lLCBvcmlnX3RpbWVvdXQs IHN0ZG91dCwgc3RkZXJyKQo+wqAgRmlsZSAiL3Vzci9saWIvcHl0aG9uMy4xMC9zdWJwcm9jZXNz LnB5IiwgbGluZSAxMTk4LCBpbiBfY2hlY2tfdGltZW91dAo+wqDCoMKgIHJhaXNlIFRpbWVvdXRF eHBpcmVkKAo+c3VicHJvY2Vzcy5UaW1lb3V0RXhwaXJlZDogQ29tbWFuZCAnWycvYmluL2dkYics ICcteCcsICcvdG1wL3RtcG9vNWNweXNxJywgJy0tYXJncycsICcvaG9tZS9zZXJnZXliL3NvdXJj ZXMvTVJHL3RhcmFudG9vbC90aGlyZF9wYXJ0eS9sdWFqaXQvYnVpbGQvc3JjL2x1YWppdCcsICcv dG1wL3RtcGZ1cGVreGNxJ10nIHRpbWVkIG91dCBhZnRlciAxMCBzZWNvbmRzCkNhbuKAmXQgcmVw cm9kdWNlIHJlZ2FyZGxlc3Mgb2YgbGxkYiBiZWluZyBpbnN0YWxsZWQgb3Igbm90Lgo+bWFrZSBM dWFKSVQtZGVidWdnZXItbGxkYi10ZXN0cyB3b3JrcyBmaW5lCj7CoAo+T24gMTEvMTAvMjMgMjM6 MTYsIE1ha3NpbSBLb2tyeWFzaGtpbiB3cm90ZToKPj5UaGlzIHBhdGNoIGFkZHMgdGVzdHMgZm9y IEx1YUpJVCBkZWJ1Z2dpbmcKPj5leHRlbnNpb25zIGZvciBsbGRiIGFuZCBnZGIuCj4+LS0tCj4+ IC5mbGFrZThyYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNCArCj4+ IHRlc3QvQ01ha2VMaXN0cy50eHQgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMyArCj4+ IC4uLi9DTWFrZUxpc3RzLnR4dCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA3OCArKysr KysKPj4gLi4uL2RlYnVnLWV4dGVuc2lvbi10ZXN0cy5weSAgICAgICAgICAgICAgICAgIHwgMjUw ICsrKysrKysrKysrKysrKysrKwo+PiA0IGZpbGVzIGNoYW5nZWQsIDMzNSBpbnNlcnRpb25zKCsp Cj4+IGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0L0x1YUpJVC1kZWJ1Zy1leHRlbnNpb25zLXRlc3Rz L0NNYWtlTGlzdHMudHh0Cj4+IGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0L0x1YUpJVC1kZWJ1Zy1l eHRlbnNpb25zLXRlc3RzL2RlYnVnLWV4dGVuc2lvbi10ZXN0cy5weQo+Pgo+PmRpZmYgLS1naXQg YS8uZmxha2U4cmMgYi8uZmxha2U4cmMKPj5pbmRleCAxM2U2MTc4Zi4uNjc2NmVkNDEgMTAwNjQ0 Cj4+LS0tIGEvLmZsYWtlOHJjCj4+KysrIGIvLmZsYWtlOHJjCj4+QEAgLTMsMyArMyw3IEBAIGV4 dGVuZC1pZ25vcmUgPQo+PiAgICMgWFhYOiBTdXBwcmVzcyBGODIxLCBzaW5jZSB3ZSBoYXZlIGF1 dG9nZW5lcmF0ZWQgbmFtZXMgZm9yCj4+ICAgIyAncHRyJyB0eXBlIGNvbXBsZW1lbnRzIGluIGx1 YWppdF9sbGRiLnB5Lgo+PiAgIEY4MjEKPj4rcGVyLWZpbGUtaWdub3JlcyA9Cj4+KyAgIyBYWFg6 IEZsYWtlIGNvbnNpZGVycyByZWdleHAgc3BlY2lhbCBjaGFyYWN0ZXJzIHRvIGJlCj4+KyAgIyBl c2NhcGUgc2VxdWVuY2VzLgo+PisgIHRlc3QvTHVhSklULWRlYnVnLWV4dGVuc2lvbnMtdGVzdHMv ZGVidWctZXh0ZW5zaW9uLXRlc3RzLnB5Olc2MDUKPj5kaWZmIC0tZ2l0IGEvdGVzdC9DTWFrZUxp c3RzLnR4dCBiL3Rlc3QvQ01ha2VMaXN0cy50eHQKPj5pbmRleCA1OGNiYTViYS4uZDc5MTBlYTQg MTAwNjQ0Cj4+LS0tIGEvdGVzdC9DTWFrZUxpc3RzLnR4dAo+PisrKyBiL3Rlc3QvQ01ha2VMaXN0 cy50eHQKPj5AQCAtNzgsNiArNzgsNyBAQCBhZGRfc3ViZGlyZWN0b3J5KFBVQy1SaW8tTHVhLTUu MS10ZXN0cykKPj4gYWRkX3N1YmRpcmVjdG9yeShsdWEtSGFybmVzcy10ZXN0cykKPj4gYWRkX3N1 YmRpcmVjdG9yeSh0YXJhbnRvb2wtYy10ZXN0cykKPj4gYWRkX3N1YmRpcmVjdG9yeSh0YXJhbnRv b2wtdGVzdHMpCj4+K2FkZF9zdWJkaXJlY3RvcnkoTHVhSklULWRlYnVnLWV4dGVuc2lvbnMtdGVz dHMpCj4+IAo+PiBhZGRfY3VzdG9tX3RhcmdldCgke1BST0pFQ1RfTkFNRX0tdGVzdCBERVBFTkRT Cj4+ICAgTHVhSklULXRlc3RzCj4+QEAgLTg1LDYgKzg2LDggQEAgYWRkX2N1c3RvbV90YXJnZXQo JHtQUk9KRUNUX05BTUV9LXRlc3QgREVQRU5EUwo+PiAgIGx1YS1IYXJuZXNzLXRlc3RzCj4+ICAg dGFyYW50b29sLWMtdGVzdHMKPj4gICB0YXJhbnRvb2wtdGVzdHMKPj4rICBMdWFKSVQtbGxkYi1l eHRlbnNpb24tdGVzdHMKPj4rICBMdWFKSVQtZ2RiLWV4dGVuc2lvbi10ZXN0cwo+PiApCj4+IAo+ PiBpZihMVUFKSVRfVVNFX1RFU1QpCj4+ZGlmZiAtLWdpdCBhL3Rlc3QvTHVhSklULWRlYnVnLWV4 dGVuc2lvbnMtdGVzdHMvQ01ha2VMaXN0cy50eHQgYi90ZXN0L0x1YUpJVC1kZWJ1Zy1leHRlbnNp b25zLXRlc3RzL0NNYWtlTGlzdHMudHh0Cj4+bmV3IGZpbGUgbW9kZSAxMDA2NDQKPj5pbmRleCAw MDAwMDAwMC4uM2IzODIwMWQKPj4tLS0gL2Rldi9udWxsCj4+KysrIGIvdGVzdC9MdWFKSVQtZGVi dWctZXh0ZW5zaW9ucy10ZXN0cy9DTWFrZUxpc3RzLnR4dAo+PkBAIC0wLDAgKzEsNzggQEAKPj4r YWRkX2N1c3RvbV90YXJnZXQoTHVhSklULWdkYi1leHRlbnNpb24tdGVzdHMKPj4rICBERVBFTkRT ICR7TFVBSklUX1RFU1RfQklOQVJZfQo+PispCj4+Kwo+PithZGRfY3VzdG9tX3RhcmdldChMdWFK SVQtbGxkYi1leHRlbnNpb24tdGVzdHMKPj4rICBERVBFTkRTICR7TFVBSklUX1RFU1RfQklOQVJZ fQo+PispCj4+Kwo+PisjIERlYnVnIGluZm8gaXMgcmVxdWlyZWQgZm9yIHRlc3Rpbmcgb2YgZXh0 ZW5zaW9ucy4KPj4raWYoTk9UIChDTUFLRV9CVUlMRF9UWVBFIE1BVENIRVMgRGVidWcpKQo+Pisg IG1lc3NhZ2UoV0FSTklORwo+PisgICAgIm5vdCBhIERFQlVHIGJ1aWxkLCBMdWFKSVQtbGxkYi1l eHRlbnNpb24tdGVzdHMgYW5kICIKPj4rICAgICJMdWFKSVQtZ2RiLWV4dGVuc2lvbi10ZXN0cyBh cmUgZHVtbXkiCj4+KyAgKQo+PisgIHJldHVybigpCj4+K2VuZGlmKCkKPj4rCj4+KyMgTWFjT1Mg YXNrcyBmb3IgcGVybWlzc2lvbiB0byBkZWJ1ZyBhIHByb2Nlc3MgZXZlbiB3aGVuIHRoZQo+Pisj IG1hY2hpbmUgaXMgc2V0IGludG8gZGV2ZWxvcG1lbnQgbW9kZS4gVG8gc29sdmUgdGhlIGlzc3Vl LAo+PisjIGl0IGlzIHJlcXVpcmVkIHRvIGFkZCByZWxldmFudCB1c2VycyB0byB0aGUgYF9kZXZl bG9wZXJgIHVzZXIKPj4rIyBncm91cCBpbiBNYWNPUy4gRGlzYWJsZWQgZm9yIG5vdy4KPj4raWYo Q01BS0VfU1lTVEVNX05BTUUgU1RSRVFVQUwgIkRhcndpbiIgQU5EIERFRklORUQgRU5We0NJfSkK Pj4rICBtZXNzYWdlKFdBUk5JTkcKPj4rICAgICJJbnRlcmFjdGl2ZSBkZWJ1Z2dpbmcgaXMgdW5h dmFpbGFibGUgZm9yIG1hY09TIENJIGJ1aWxkcywiCj4+KyAgICAiTHVhSklULWxsZGItZXh0ZW5z aW9uLXRlc3RzIGlzIGR1bW15Igo+PisgICkKPj4rICByZXR1cm4oKQo+PitlbmRpZigpCj4+Kwo+ PitmaW5kX3BhY2thZ2UoUHl0aG9uSW50ZXJwKQo+PitpZihOT1QgUFlUSE9OSU5URVJQX0ZPVU5E KQo+PisgIG1lc3NhZ2UoV0FSTklORwo+PisgICAgImBweXRob25gIGlzIG5vdCBmb3VuZCwgTHVh SklULWxsZGItZXh0ZW5zaW9uLXRlc3RzIGFuZCAiCj4+KyAgICAiTHVhSklULWdkYi1leHRlbnNp b24tdGVzdHMgYXJlIGR1bW15Igo+PisgICkKPj4rICByZXR1cm4oKQo+PitlbmRpZigpCj4+Kwo+ PitzZXQoREVCVUdHRVJfVEVTVF9FTlYKPj4rICAiTFVBSklUX1RFU1RfQklOQVJZPSR7TFVBSklU X1RFU1RfQklOQVJZfSIKPkkgc3VwcG9zZSBpdCBzaG91bGQgYmUgc29tZXRoaW5nIGxpa2UgdGhp czoKPmdldF9wcm9wZXJ0eShMVUFKSVRfVEVTVF9CSU5BUlkgVEFSR0VUICR7TFVBSklUX1RFU1Rf QklOQVJZfSBQUk9QRVJUWSBMT0NBVElPTikKPsKgClRoYXQgdmFyaWFibGUgY29tZXMgZnJvbSB0 aGUgcGFyZW50IHNjb3BlLCBzbyB0aGVyZSBpcyBubyBuZWVkIHRvIGRvIHRoYXQuCklnbm9yaW5n Lgo+PisgICMgU3VwcHJlc3NlcyBfX3B5Y2FjaGVfXyBnZW5lcmF0aW9uLgo+PisgICJQWVRIT05E T05UV1JJVEVCWVRFQ09ERT0xIgo+PisgICJERUJVR0dFUl9FWFRFTlNJT05fUEFUSD0ke1BST0pF Q1RfU09VUkNFX0RJUn0vc3JjL2x1YWppdF9kYmcucHkiCj4+KykKPj4rCj4+K3NldChURVNUX1ND UklQVF9QQVRICj4+KyAgJHtQUk9KRUNUX1NPVVJDRV9ESVJ9L3Rlc3QvTHVhSklULWRlYnVnLWV4 dGVuc2lvbnMtdGVzdHMvZGVidWctZXh0ZW5zaW9uLXRlc3RzLnB5Cj4+KykKPj4rCj4+K2ZpbmRf cHJvZ3JhbShHREIgZ2RiKQo+PitpZihHREIpCj4+KyAgc2V0KEdEQl9URVNUX0VOViAke0RFQlVH R0VSX1RFU1RfRU5WfQo+PisgICAgIkRFQlVHR0VSX0NPTU1BTkQ9JHtHREJ9Igo+PisgICkKPj4r ICBhZGRfY3VzdG9tX2NvbW1hbmQoVEFSR0VUIEx1YUpJVC1nZGItZXh0ZW5zaW9uLXRlc3RzCj4+ KyAgICBDT01NRU5UICJSdW5uaW5nIGx1YWppdF9kYmcucHkgdGVzdHMgd2l0aCBnZGIiCj4+KyAg ICBDT01NQU5ECj4+KyAgICAke0dEQl9URVNUX0VOVn0gJHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtU RVNUX1NDUklQVF9QQVRIfQo+PisgICAgV09SS0lOR19ESVJFQ1RPUlkgJHtDTUFLRV9DVVJSRU5U X0JJTkFSWV9ESVJ9Cj4+KyAgKQo+PitlbHNlKCkKPj4rICBtZXNzYWdlKFdBUk5JTkcgImBnZGIn IGlzIG5vdCBmb3VuZCwgc28gTHVhSklULWdkYi1leHRlbnNpb24tdGVzdHMgaXMgZHVtbXkiKQo+ PitlbmRpZigpCj5JIHByb3Bvc2UgYWRkaW5nIGEgbWVzc2FnZSBpbiBkdW1teSB0YXJnZXQsIGxp a2Ugd2UgZGlkIGluIGNtYWtlL0NvZGVDb3ZlcmFnZS5jbWFrZToKPsKgwqDCoCBhZGRfY3VzdG9t X3RhcmdldCgke1BST0pFQ1RfTkFNRX0tY292ZXJhZ2XCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIMKgCj7CoMKgwqDC oMKgIENPTU1BTkQgJHtDTUFLRV9DT01NQU5EfSAtRSBjbWFrZV9lY2hvX2NvbG9yIC0tcmVkICR7 TVNHfcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCDCoAo+wqDCoMKgICnCoMKg wqDCoApBZGRlZCwgdGhhbmtzIQo+PisKPj4rZmluZF9wcm9ncmFtKExMREIgbGxkYikKPj4raWYo TExEQikKPj4rICBzZXQoTExEQl9URVNUX0VOViAke0RFQlVHR0VSX1RFU1RfRU5WfQo+PisgICAg IkRFQlVHR0VSX0NPTU1BTkQ9JHtMTERCfSIKPj4rICApCj4+KyAgYWRkX2N1c3RvbV9jb21tYW5k KFRBUkdFVCBMdWFKSVQtbGxkYi1leHRlbnNpb24tdGVzdHMKPj4rICAgIENPTU1FTlQgIlJ1bm5p bmcgbHVhaml0X2RiZy5weSB0ZXN0cyB3aXRoIGxsZGIiCj4+KyAgICBDT01NQU5ECj4+KyAgICAk e0xMREJfVEVTVF9FTlZ9ICR7UFlUSE9OX0VYRUNVVEFCTEV9ICR7VEVTVF9TQ1JJUFRfUEFUSH0K Pj4rICAgIFdPUktJTkdfRElSRUNUT1JZICR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfQo+Pisg ICkKPj4rZWxzZSgpCj4+KyAgbWVzc2FnZShXQVJOSU5HICJgbGxkYicgaXMgbm90IGZvdW5kLCBz byBMdWFKSVQtZ2RiLWV4dGVuc2lvbi10ZXN0cyBpcyBkdW1teSIpIAo+dHlwbzogTHVhSklULWxs ZGItZXh0ZW50c2lvbi10ZXN0cwpGaXhlZCwgdGhhbmtzIQo+PitlbmRpZigpCj4+ZGlmZiAtLWdp dCBhL3Rlc3QvTHVhSklULWRlYnVnLWV4dGVuc2lvbnMtdGVzdHMvZGVidWctZXh0ZW5zaW9uLXRl c3RzLnB5IGIvdGVzdC9MdWFKSVQtZGVidWctZXh0ZW5zaW9ucy10ZXN0cy9kZWJ1Zy1leHRlbnNp b24tdGVzdHMucHkKPj5uZXcgZmlsZSBtb2RlIDEwMDY0NAo+PmluZGV4IDAwMDAwMDAwLi42ZWY4 NzQ3Mwo+Pi0tLSAvZGV2L251bGwKPj4rKysgYi90ZXN0L0x1YUpJVC1kZWJ1Zy1leHRlbnNpb25z LXRlc3RzL2RlYnVnLWV4dGVuc2lvbi10ZXN0cy5weQo+PkBAIC0wLDAgKzEsMjUwIEBACj4+KyMg VGhpcyBmaWxlIHByb3ZpZGVzIHRlc3RzIGZvciBMdWFKSVQgZGVidWcgZXh0ZW5zaW9ucyBmb3Ig bGxkYiBhbmQgZ2RiLgo+PitpbXBvcnQgb3MKPj4raW1wb3J0IHJlCj4+K2ltcG9ydCBzdWJwcm9j ZXNzCj4+K2ltcG9ydCBzeXMKPj4raW1wb3J0IHRlbXBmaWxlCj4+K2ltcG9ydCB1bml0dGVzdAo+ PisKPj4rZnJvbSB0aHJlYWRpbmcgaW1wb3J0IFRpbWVyCj4+Kwo+PitMRUdBQ1kgPSByZS5tYXRj aChyJ14yXC4nLCBzeXMudmVyc2lvbikKPj4rCj4+K0xVQUpJVF9CSU5BUlkgPSBvcy5lbnZpcm9u WydMVUFKSVRfVEVTVF9CSU5BUlknXQo+PitFWFRFTlNJT04gPSBvcy5lbnZpcm9uWydERUJVR0dF Ul9FWFRFTlNJT05fUEFUSCddCj4+K0RFQlVHR0VSID0gb3MuZW52aXJvblsnREVCVUdHRVJfQ09N TUFORCddCj4+K0xMREIgPSAnbGxkYicgaW4gREVCVUdHRVIKPj4rVElNRU9VVCA9IDEwIAo+c2tp cCBvciBldmVuIGZhaWwgYWxsIHRlc3RjYXNlcyBpZiBhdCBsZWFzdCBvbmUgcmVxdWlyZWQgZW52 IHZhcmlhYmxlIGlzIG1pc3NlZApXZWxsLCB1bml0dGVzdCBpcyBub3QgVEFQLCBzbyB0aGVyZSBp cyBubyBlYXN5IHdheSB0byBza2lwIGFsbCB0ZXN0IGNhc2VzLiBUaGF04oCZcyBub3QgYW4gaXNz dWUgYW55d2F5LApzaW5jZSBpZiBhbnkgdmFyaWFibGUgaXMgbWlzc2luZyB0aGVuIHRoZSBgS2V5 RXJyb3JgIGlzIHJhaXNlZCBhbmQgdGhlwqBzdWl0ZSBmYWlscy7CoElnbm9yaW5nLgo+PisKPj4r UlVOX0NNRF9GSUxFID0gJy1zJyBpZiBMTERCIGVsc2UgJy14Jwo+PitJTkZFUklPUl9BUkdTID0g Jy0tJyBpZiBMTERCIGVsc2UgJy0tYXJncycKPj4rUFJPQ0VTU19SVU4gPSAncHJvY2VzcyBsYXVu Y2gnIGlmIExMREIgZWxzZSAncicKPj4rTE9BRF9FWFRFTlNJT04gPSAoCj4+KyAgICAnY29tbWFu ZCBzY3JpcHQgaW1wb3J0IHtleHR9JyBpZiBMTERCIGVsc2UgJ3NvdXJjZSB7ZXh0fScKPj4rKS5m b3JtYXQoZXh0PUVYVEVOU0lPTikKPj4rCj4+Kwo+PitkZWYgcGVyc2lzdChkYXRhKToKPj4rICAg IHRtcCA9IHRlbXBmaWxlLk5hbWVkVGVtcG9yYXJ5RmlsZShtb2RlPSd3JykKPj4rICAgIHRtcC53 cml0ZShkYXRhKQo+PisgICAgdG1wLmZsdXNoKCkKPj4rICAgIHJldHVybiB0bXAKPj4rCj4+Kwo+ PitkZWYgZXhlY3V0ZV9wcm9jZXNzKGNtZCwgdGltZW91dD1USU1FT1VUKToKPj4rICAgIGlmIExF R0FDWToKPj4rICAgICAgICAjIFhYWDogVGhlIFB5dGhvbiAyLjcgdmVyc2lvbiBvZiBgc3VicHJv Y2Vzcy5Qb3BlbmAgZG9lc24ndCBoYXZlIGEKPj4rICAgICAgICAjIHRpbWVvdXQgb3B0aW9uLCBz byB0aGUgcmVxdWlyZWQgZnVuY3Rpb25hbGl0eSB3YXMgaW1wbGVtZW50ZWQgdmlhCj4+KyAgICAg ICAgIyBgdGhyZWFkaW5nLlRpbWVyYC4KPj4rICAgICAgICBwcm9jZXNzID0gc3VicHJvY2Vzcy5Q b3BlbihjbWQsIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpIAo+d2h5IHN0ZGVyciBpcyBpZ25vcmVk PyBub24tZW1weSBzdGRlcnIgaXMgYSBiYWQgc3ltcHRvbQpGaXhlZCwgdGhhbmtzIQo+PisgICAg ICAgIHRpbWVyID0gVGltZXIoVElNRU9VVCwgcHJvY2Vzcy5raWxsKQo+PisgICAgICAgIHRpbWVy LnN0YXJ0KCkKPj4rICAgICAgICBzdGRvdXQsIF8gPSBwcm9jZXNzLmNvbW11bmljYXRlKCkKPj4r ICAgICAgICB0aW1lci5jYW5jZWwoKQo+PisKPj4rICAgICAgICAjIFhYWDogSWYgdGhlIHRpbWVv dXQgaXMgZXhjZWVkZWQgYW5kIHRoZSBwcm9jZXNzIGlzIGtpbGxlZCBieSB0aGUKPj4rICAgICAg ICAjIHRpbWVyLCB0aGVuIHRoZSByZXR1cm4gY29kZSBpcyBub24temVybywgYW5kIHdlIGFyZSBn b2luZyB0byBibG93IHVwLgo+PisgICAgICAgIGFzc2VydCBwcm9jZXNzLnJldHVybmNvZGUgPT0g MAo+PisgICAgICAgIHJldHVybiBzdGRvdXQuZGVjb2RlKCdhc2NpaScpCj4+KyAgICBlbHNlOgo+ PisgICAgICAgIHByb2Nlc3MgPSBzdWJwcm9jZXNzLnJ1bihjbWQsIGNhcHR1cmVfb3V0cHV0PVRy dWUsIHRpbWVvdXQ9VElNRU9VVCkKPj4rICAgICAgICByZXR1cm4gcHJvY2Vzcy5zdGRvdXQuZGVj b2RlKCdhc2NpaScpCj4+Kwo+PisKPj4rZGVmIGZpbHRlcl9kZWJ1Z2dlcl9vdXRwdXQob3V0cHV0 KToKPj4rICAgIGRlc2NyaXB0b3IgPSAnKGxsZGIpJyBpZiBMTERCIGVsc2UgJyhnZGIpJwo+Pisg ICAgcmV0dXJuICcnLmpvaW4oCj4+KyAgICAgICAgZmlsdGVyKAo+PisgICAgICAgICAgICBsYW1i ZGEgbGluZTogbm90IGxpbmUuc3RhcnRzd2l0aChkZXNjcmlwdG9yKSwKPj4rICAgICAgICAgICAg b3V0cHV0LnNwbGl0bGluZXMoVHJ1ZSksCj4+KyAgICAgICAgKSwKPj4rICAgICkKPj4rCj4+Kwo+ PitjbGFzcyBUZXN0Q2FzZUJhc2UodW5pdHRlc3QuVGVzdENhc2UpOgo+PisgICAgQGNsYXNzbWV0 aG9kCj4+KyAgICBkZWYgY29uc3RydWN0X2NtZHMoY2xzKToKPj4rICAgICAgICByZXR1cm4gJ1xu Jy5qb2luKFsKPj4rICAgICAgICAgICAgJ2Ige2xvY30nLmZvcm1hdChsb2M9Y2xzLmxvY2F0aW9u KSwKPj4rICAgICAgICAgICAgUFJPQ0VTU19SVU4sCj4+KyAgICAgICAgICAgICduJywKPj4rICAg ICAgICAgICAgTE9BRF9FWFRFTlNJT04sCj4+KyAgICAgICAgICAgIGNscy5leHRlbnNpb25fY21k cy5zdHJpcCgpLAo+PisgICAgICAgICAgICAncScsCj4+KyAgICAgICAgXSkKPj4rCj4+KyAgICBA Y2xhc3NtZXRob2QKPj4rICAgIGRlZiBzZXRVcENsYXNzKGNscyk6Cj4+KyAgICAgICAgY21kX2Zp bGUgPSBwZXJzaXN0KGNscy5jb25zdHJ1Y3RfY21kcygpKQo+PisgICAgICAgIHNjcmlwdF9maWxl ID0gcGVyc2lzdChjbHMubHVhX3NjcmlwdCkKPj4rICAgICAgICBwcm9jZXNzX2NtZCA9IFsKPj4r ICAgICAgICAgICAgREVCVUdHRVIsCj4+KyAgICAgICAgICAgIFJVTl9DTURfRklMRSwKPj4rICAg ICAgICAgICAgY21kX2ZpbGUubmFtZSwKPj4rICAgICAgICAgICAgSU5GRVJJT1JfQVJHUywKPj4r ICAgICAgICAgICAgTFVBSklUX0JJTkFSWSwKPj4rICAgICAgICAgICAgc2NyaXB0X2ZpbGUubmFt ZSwKPj4rICAgICAgICBdCj4+KyAgICAgICAgY2xzLm91dHB1dCA9IGZpbHRlcl9kZWJ1Z2dlcl9v dXRwdXQoZXhlY3V0ZV9wcm9jZXNzKHByb2Nlc3NfY21kKSkKPj4rICAgICAgICBjbWRfZmlsZS5j bG9zZSgpCj4+KyAgICAgICAgc2NyaXB0X2ZpbGUuY2xvc2UoKQo+PisKPj4rICAgIGRlZiBjaGVj ayhzZWxmKToKPj4rICAgICAgICBpZiBMRUdBQ1k6Cj4+KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0 UmVnZXhwTWF0Y2hlcyhzZWxmLm91dHB1dCwgc2VsZi5wYXR0ZXJuLnN0cmlwKCkpCj4+KyAgICAg ICAgZWxzZToKPj4rICAgICAgICAgICAgc2VsZi5hc3NlcnRSZWdleChzZWxmLm91dHB1dCwgc2Vs Zi5wYXR0ZXJuLnN0cmlwKCkpCj5tZXNzYWdlIGZyb20gYXNzZXJ0UmVnZXggaXMgdG90YWxseSB1 bnJlYWRhYmxlOgo+PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQo+RkFJTDogdGVzdCAoX19tYWluX18uVGVzdExvYWQp Cj4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCj5UcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Cj7CoCBG aWxlICIvaG9tZS9zZXJnZXliL3NvdXJjZXMvTVJHL3RhcmFudG9vbC90aGlyZF9wYXJ0eS9sdWFq aXQvdGVzdC9MdWFKSVQtZGVidWctZXh0ZW5zaW9ucy10ZXN0cy9kZWJ1Zy1leHRlbnNpb24tdGVz dHMucHkiLCBsaW5lIDI0NywgaW4gPGxhbWJkYT4KPsKgwqDCoCB0ZXN0X2Nscy50ZXN0ID0gbGFt YmRhIHNlbGY6IHNlbGYuY2hlY2soKQo+wqAgRmlsZSAiL2hvbWUvc2VyZ2V5Yi9zb3VyY2VzL01S Ry90YXJhbnRvb2wvdGhpcmRfcGFydHkvbHVhaml0L3Rlc3QvTHVhSklULWRlYnVnLWV4dGVuc2lv bnMtdGVzdHMvZGVidWctZXh0ZW5zaW9uLXRlc3RzLnB5IiwgbGluZSA5NiwgaW4gY2hlY2sKPsKg wqDCoCBzZWxmLmFzc2VydFJlZ2V4KHNlbGYub3V0cHV0LCBzZWxmLnBhdHRlcm4uc3RyaXAoKSkK PkFzc2VydGlvbkVycm9yOiBSZWdleCBkaWRuJ3QgbWF0Y2g6ICdsai10diBjb21tYW5kIGludGlh bGl6ZWRcbmxqLXN0YXRlIGNvbW1hbmQgaW50aWFsaXplZFxubGotYXJjaCBjb21tYW5kIGludGlh bGl6ZWRcbmxqLWdjIGNvbW1hbmQgaW50aWFsaXplZFxubGotc3RyIGNvbW1hbmQgaW50aWFsaXpl ZFxubGotdGFiIGNvbW1hbmQgaW50aWFsaXplZFxubGotc3RhY2sgY29tbWFuZCBpbnRpYWxpemVk XG5MdWFKSVQgZGVidWcgZXh0ZW5zaW9uIGlzIHN1Y2Nlc3NmdWxseSBsb2FkZWQnIG5vdCBmb3Vu ZCBpbiAnR05VIGdkYiAoVWJ1bnR1IDEyLjEtMHVidW50dTF+MjIuMDQpIDEyLjFcbkNvcHlyaWdo dCAoQykgMjAyMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy5cbkxpY2Vuc2UgR1BMdjMr OiBHTlUgR1BMIHZlcnNpb24gMyBvciBsYXRlciAgPGh0dHA6Ly9nbnUub3JnL2xpY2Vuc2VzL2dw bC5odG1sPiBcblRoaXMgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGFyZSBmcmVlIHRvIGNoYW5nZSBh bmQgcmVkaXN0cmlidXRlIGl0LlxuVGhlcmUgaXMgTk8gV0FSUkFOVFksIHRvIHRoZSBleHRlbnQg cGVybWl0dGVkIGJ5IGxhdy5cblR5cGUgInNob3cgY29weWluZyIgYW5kICJzaG93IHdhcnJhbnR5 IiBmb3IgZGV0YWlscy5cblRoaXMgR0RCIHdhcyBjb25maWd1cmVkIGFzICJ4ODZfNjQtbGludXgt Z251Ii5cblR5cGUgInNob3cgY29uZmlndXJhdGlvbiIgZm9yIGNvbmZpZ3VyYXRpb24gZGV0YWls cy5cbkZvciBidWcgcmVwb3J0aW5nIGluc3RydWN0aW9ucywgcGxlYXNlIHNlZTpcbiA8aHR0cHM6 Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9nZGIvYnVncy8+IC5cbkZpbmQgdGhlIEdEQiBtYW51YWwg YW5kIG90aGVyIGRvY3VtZW50YXRpb24gcmVzb3VyY2VzIG9ubGluZSBhdDpcbsKgwqDCoCAgPGh0 dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9nZGIvZG9jdW1lbnRhdGlvbi8+IC5cblxuRm9yIGhl bHAsIHR5cGUgImhlbHAiLlxuVHlwZSAiYXByb3BvcyB3b3JkIiB0byBzZWFyY2ggZm9yIGNvbW1h bmRzIHJlbGF0ZWQgdG8gIndvcmQiLi4uXG5SZWFkaW5nIHN5bWJvbHMgZnJvbSAvaG9tZS9zZXJn ZXliL3NvdXJjZXMvTVJHL3RhcmFudG9vbC90aGlyZF9wYXJ0eS9sdWFqaXQvYnVpbGQvc3JjL2x1 YWppdC4uLlxuQnJlYWtwb2ludCAxIGF0IDB4MmU2NDA6IGZpbGUgL2hvbWUvc2VyZ2V5Yi9zb3Vy Y2VzL01SRy90YXJhbnRvb2wvdGhpcmRfcGFydHkvbHVhaml0L3NyYy9saWJfYmFzZS5jLCBsaW5l IDQ5Ni5cbltUaHJlYWQgZGVidWdnaW5nIHVzaW5nIGxpYnRocmVhZF9kYiBlbmFibGVkXVxuVXNp bmcgaG9zdCBsaWJ0aHJlYWRfZGIgbGlicmFyeSAiL2xpYi94ODZfNjQtbGludXgtZ251L2xpYnRo cmVhZF9kYi5zby4xIi5cblxuQnJlYWtwb2ludCAxLCBsal9jZl9wcmludCAoTD0weDU1NTU1NTU1 YzhmMCA8cG1haW4+KSBhdCAvaG9tZS9zZXJnZXliL3NvdXJjZXMvTVJHL3RhcmFudG9vbC90aGly ZF9wYXJ0eS9sdWFqaXQvc3JjL2xpYl9iYXNlLmM6NDk2XG40OTZcdHtcbjQ5N1x0wqAgcHRyZGlm Zl90IGksIG5hcmdzID0gTC0+dG9wIC0gTC0+YmFzZTtcbicKSeKAmXZlIGltcGxlbWVudGVkIG15 IG93biBjaGVjayBiYXNlZCBvbiB1bml0dGVzdOKAmXMgcHVibGljIEFQSSwgc28gbm93IGl0IGxv b2tzIG5pY2VyLiBUaGFua3MhCj7CoAo+PisKPj4rCj4+K2NsYXNzIFRlc3RMb2FkKFRlc3RDYXNl QmFzZSk6Cj4+KyAgICBleHRlbnNpb25fY21kcyA9ICcnCj4+KyAgICBsb2NhdGlvbiA9ICdsal9j Zl9wcmludCcKPj4rICAgIGx1YV9zY3JpcHQgPSAncHJpbnQoMSknCj4+KyAgICBwYXR0ZXJuID0g KAo+PisgICAgICAgICdsai10diBjb21tYW5kIGludGlhbGl6ZWRcbicKPj4rICAgICAgICAnbGot c3RhdGUgY29tbWFuZCBpbnRpYWxpemVkXG4nCj4+KyAgICAgICAgJ2xqLWFyY2ggY29tbWFuZCBp bnRpYWxpemVkXG4nCj4+KyAgICAgICAgJ2xqLWdjIGNvbW1hbmQgaW50aWFsaXplZFxuJwo+Pisg ICAgICAgICdsai1zdHIgY29tbWFuZCBpbnRpYWxpemVkXG4nCj4+KyAgICAgICAgJ2xqLXRhYiBj b21tYW5kIGludGlhbGl6ZWRcbicKPj4rICAgICAgICAnbGotc3RhY2sgY29tbWFuZCBpbnRpYWxp emVkXG4nCj4+KyAgICAgICAgJ0x1YUpJVCBkZWJ1ZyBleHRlbnNpb24gaXMgc3VjY2Vzc2Z1bGx5 IGxvYWRlZFxuJwo+PisgICAgKQo+PisKPj4rCj4+K2NsYXNzIFRlc3RMSkFyY2goVGVzdENhc2VC YXNlKToKPj4rICAgIGV4dGVuc2lvbl9jbWRzID0gJ2xqLWFyY2gnCj4+KyAgICBsb2NhdGlvbiA9 ICdsal9jZl9wcmludCcKPj4rICAgIGx1YV9zY3JpcHQgPSAncHJpbnQoMSknCj4+KyAgICBwYXR0 ZXJuID0gKAo+PisgICAgICAgICdMSl82NDogKFRydWV8RmFsc2UpLCAnCj4+KyAgICAgICAgJ0xK X0dDNjQ6IChUcnVlfEZhbHNlKSwgJwo+PisgICAgICAgICdMSl9EVUFMTlVNOiAoVHJ1ZXxGYWxz ZSknCj4+KyAgICApCj4+Kwo+PisKPj4rY2xhc3MgVGVzdExKU3RhdGUoVGVzdENhc2VCYXNlKToK Pj4rICAgIGV4dGVuc2lvbl9jbWRzID0gJ2xqLXN0YXRlJwo+PisgICAgbG9jYXRpb24gPSAnbGpf Y2ZfcHJpbnQnCj4+KyAgICBsdWFfc2NyaXB0ID0gJ3ByaW50KDEpJwo+PisgICAgcGF0dGVybiA9 ICgKPj4rICAgICAgICAnVk0gc3RhdGU6IFtBLVpdK1xuJwo+PisgICAgICAgICdHQyBzdGF0ZTog W0EtWl0rXG4nCj4+KyAgICAgICAgJ0pJVCBzdGF0ZTogW0EtWl0rXG4nCj4+KyAgICApCj4+Kwo+ PisKPj4rY2xhc3MgVGVzdExKR0MoVGVzdENhc2VCYXNlKToKPj4rICAgIGV4dGVuc2lvbl9jbWRz ID0gJ2xqLWdjJwo+PisgICAgbG9jYXRpb24gPSAnbGpfY2ZfcHJpbnQnCj4+KyAgICBsdWFfc2Ny aXB0ID0gJ3ByaW50KDEpJwo+PisgICAgcGF0dGVybiA9ICgKPj4rICAgICAgICAnR0Mgc3RhdHM6 IFtBLVpdK1xuJwo+PisgICAgICAgICdcdHRvdGFsOiBcZCtcbicKPj4rICAgICAgICAnXHR0aHJl c2hvbGQ6IFxkK1xuJwo+PisgICAgICAgICdcdGRlYnQ6IFxkK1xuJwo+PisgICAgICAgICdcdGVz dGltYXRlOiBcZCtcbicKPj4rICAgICAgICAnXHRzdGVwbXVsOiBcZCtcbicKPj4rICAgICAgICAn XHRwYXVzZTogXGQrXG4nCj4+KyAgICAgICAgJ1x0c3dlZXBzdHI6IFxkKy9cZCtcbicKPj4rICAg ICAgICAnXHRyb290OiBcZCsgb2JqZWN0c1xuJwo+PisgICAgICAgICdcdGdyYXk6IFxkKyBvYmpl Y3RzXG4nCj4+KyAgICAgICAgJ1x0Z3JheWFnYWluOiBcZCsgb2JqZWN0c1xuJwo+PisgICAgICAg ICdcdHdlYWs6IFxkKyBvYmplY3RzXG4nCj4+KyAgICAgICAgJ1x0bW11ZGF0YTogXGQrIG9iamVj dHNcbicKPj4rICAgICkKPj4rCj4+Kwo+PitjbGFzcyBUZXN0TEpTdGFjayhUZXN0Q2FzZUJhc2Up Ogo+PisgICAgZXh0ZW5zaW9uX2NtZHMgPSAnbGotc3RhY2snCj4+KyAgICBsb2NhdGlvbiA9ICds al9jZl9wcmludCcKPj4rICAgIGx1YV9zY3JpcHQgPSAncHJpbnQoMSknCj4+KyAgICBwYXR0ZXJu ID0gKAo+PisgICAgICAgICctKyBSZWQgem9uZTpccytcZCsgc2xvdHMgLStcbicKPj4rICAgICAg ICAnKDB4W2EtekEtWjAtOV0rXHMrXFsoU3xccykoQnxccykoVHxccykoTXxccylcXSBWQUxVRTog bmlsXG4/KSpcbicKPj4rICAgICAgICAnLSsgU3RhY2s6XHMrXGQrIHNsb3RzIC0rXG4nCj4+KyAg ICAgICAgJygweFtBLVphLXowLTldKyg6MHhbQS1aYS16MC05XSspP1xzKycKPj4rICAgICAgICAn XFsoU3xccykoQnxccykoVHxccykoTXxccylcXS4qXG4/KStcbicKPj4rICAgICkKPj4rCj4+Kwo+ PitjbGFzcyBUZXN0TEpUVihUZXN0Q2FzZUJhc2UpOgo+PisgICAgbG9jYXRpb24gPSAnbGpfY2Zf cHJpbnQnCj4+KyAgICBsdWFfc2NyaXB0ID0gJ3ByaW50KDEpJwo+PisgICAgZXh0ZW5zaW9uX2Nt ZHMgPSAoCj4+KyAgICAgICAgJ2xqLXR2IEwtPmJhc2VcbicKPj4rICAgICAgICAnbGotdHYgTC0+ YmFzZSArIDFcbicKPj4rICAgICAgICAnbGotdHYgTC0+YmFzZSArIDJcbicKPj4rICAgICAgICAn bGotdHYgTC0+YmFzZSArIDNcbicKPj4rICAgICAgICAnbGotdHYgTC0+YmFzZSArIDRcbicKPj4r ICAgICAgICAnbGotdHYgTC0+YmFzZSArIDVcbicKPj4rICAgICAgICAnbGotdHYgTC0+YmFzZSAr IDZcbicKPj4rICAgICAgICAnbGotdHYgTC0+YmFzZSArIDdcbicKPj4rICAgICAgICAnbGotdHYg TC0+YmFzZSArIDhcbicKPj4rICAgICAgICAnbGotdHYgTC0+YmFzZSArIDlcbicKPj4rICAgICAg ICAnbGotdHYgTC0+YmFzZSArIDEwXG4nCj4+KyAgICAgICAgJ2xqLXR2IEwtPmJhc2UgKyAxMVxu Jwo+PisgICAgKQo+PisKPj4rICAgIGx1YV9zY3JpcHQgPSAoCj4+KyAgICAgICAgJ2xvY2FsIGZm aSA9IHJlcXVpcmUoImZmaSIpXG4nCj4+KyAgICAgICAgJ3ByaW50KFxuJwo+PisgICAgICAgICcg IG5pbCxcbicKPj4rICAgICAgICAnICBmYWxzZSxcbicKPj4rICAgICAgICAnICB0cnVlLFxuJwo+ PisgICAgICAgICcgICJoZWxsbyIsXG4nCj4+KyAgICAgICAgJyAgezF9LFxuJwo+PisgICAgICAg ICcgIDEsXG4nCj4+KyAgICAgICAgJyAgMS4xLFxuJwo+PisgICAgICAgICcgIGNvcm91dGluZS5j cmVhdGUoZnVuY3Rpb24oKSBlbmQpLFxuJwo+PisgICAgICAgICcgIGZmaS5uZXcoImludCoiKSxc bicKPj4rICAgICAgICAnICBmdW5jdGlvbigpIGVuZCxcbicKPj4rICAgICAgICAnICBwcmludCxc bicKPj4rICAgICAgICAnICByZXF1aXJlXG4nCj4+KyAgICAgICAgJylcbicKPj4rICAgICkKPj4r Cj4+KyAgICBwYXR0ZXJuID0gKAo+PisgICAgICAgICduaWxcbicKPj4rICAgICAgICAnZmFsc2Vc bicKPj4rICAgICAgICAndHJ1ZVxuJwo+PisgICAgICAgICdzdHJpbmcgXCJoZWxsb1wiIEAgMHhb YS16QS1aMC05XStcbicKPj4rICAgICAgICAndGFibGUgQCAweFthLXpBLVowLTldKyBcKGFzaXpl OiBcZCssIGhtYXNrOiAweFthLXpBLVowLTldK1wpXG4nCj4+KyAgICAgICAgJyhudW1iZXJ8aW50 ZWdlcikgLioxLipcbicKPj4rICAgICAgICAnbnVtYmVyIDEuMVxkK1xuJwo+PisgICAgICAgICd0 aHJlYWQgQCAweFthLXpBLVowLTldK1xuJwo+PisgICAgICAgICdjZGF0YSBAIDB4W2EtekEtWjAt OV0rXG4nCj4+KyAgICAgICAgJ0x1YSBmdW5jdGlvbiBAIDB4W2EtekEtWjAtOV0rLCBbMC05XSsg dXB2YWx1ZXMsIC4rOlswLTldK1xuJwo+PisgICAgICAgICdmYXN0IGZ1bmN0aW9uICNbMC05XStc bicKPj4rICAgICAgICAnQyBmdW5jdGlvbiBAIDB4W2EtekEtWjAtOV0rXG4nCj4+KyAgICApCj4+ Kwo+PisKPj4rY2xhc3MgVGVzdExKU3RyKFRlc3RDYXNlQmFzZSk6Cj4+KyAgICBleHRlbnNpb25f Y21kcyA9ICdsai1zdHIgZm5hbWUnCj4+KyAgICBsb2NhdGlvbiA9ICdsal9jZl9kb2ZpbGUnCj4+ KyAgICBsdWFfc2NyaXB0ID0gJ3BjYWxsKGRvZmlsZSgibmFtZSIpKScKPj4rICAgIHBhdHRlcm4g PSAnU3RyaW5nOiAuKiBcW1xkKyBieXRlc1xdIHdpdGggaGFzaCAweFthLXpBLVowLTldKycKPj4r Cj4+Kwo+PitjbGFzcyBUZXN0TEpUYWIoVGVzdENhc2VCYXNlKToKPj4rICAgIGV4dGVuc2lvbl9j bWRzID0gJ2xqLXRhYiB0Jwo+PisgICAgbG9jYXRpb24gPSAnbGpfY2ZfdW5wYWNrJwo+PisgICAg bHVhX3NjcmlwdCA9ICd1bnBhY2soezE7IGEgPSAxfSknCj4+KyAgICBwYXR0ZXJuID0gKAo+Pisg ICAgICAgICdBcnJheSBwYXJ0OiAzIHNsb3RzXG4nCj4+KyAgICAgICAgJzB4W2EtekEtWjAtOV0r OiBcWzBcXTogbmlsXG4nCj4+KyAgICAgICAgJzB4W2EtekEtWjAtOV0rOiBcWzFcXTogLisgMVxu Jwo+PisgICAgICAgICcweFthLXpBLVowLTldKzogXFsyXF06IG5pbFxuJwo+PisgICAgICAgICdI YXNoIHBhcnQ6IDIgbm9kZXNcbicKPj4rICAgICAgICAnMHhbYS16QS1aMC05XSs6IHsgc3RyaW5n ICJhIiBAIDB4W2EtekEtWjAtOV0rIH0gPT4gJwo+PisgICAgICAgICd7IC4rIDEgfTsgbmV4dCA9 IDB4MFxuJwo+PisgICAgICAgICcweFthLXpBLVowLTldKzogeyBuaWwgfSA9PiB7IG5pbCB9OyBu ZXh0ID0gMHgwXG4nCj4+KyAgICApCj4+Kwo+PisKPj4rZm9yIHRlc3RfY2xzIGluIFRlc3RDYXNl QmFzZS5fX3N1YmNsYXNzZXNfXygpOgo+PisgICAgdGVzdF9jbHMudGVzdCA9IGxhbWJkYSBzZWxm OiBzZWxmLmNoZWNrKCkKPj4rCj4+K2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Cj4+KyAgICB1 bml0dGVzdC5tYWluKHZlcmJvc2l0eT0yKQo+PgrCoA== ----ALT--a37B5203F22b53aDA90b87fEcAc45E521701871383 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: base64 CjxIVE1MPjxCT0RZPjxkaXY+SGksIFNlcmdleSE8L2Rpdj48ZGl2PlRoYW5rcyBmb3IgdGhlIHJl dmlldyE8L2Rpdj48ZGl2PiZuYnNwOzwvZGl2PjxibG9ja3F1b3RlIHN0eWxlPSJib3JkZXItbGVm dDoxcHggc29saWQgIzA4NTdBNjsgbWFyZ2luOjEwcHg7IHBhZGRpbmc6MCAwIDAgMTBweDsiPtCh 0YDQtdC00LAsIDIyINC90L7Rj9Cx0YDRjyAyMDIzLCAxNzozMiArMDM6MDAg0L7RgiBTZXJnZXkg QnJvbm5pa292ICZsdDtzZXJnZXliQHRhcmFudG9vbC5vcmcmZ3Q7Ojxicj4mbmJzcDs8ZGl2IGlk PSIiPjxkaXYgY2xhc3M9ImpzLWhlbHBlciBqcy1yZWFkbXNnLW1zZyI+PGRpdj48ZGl2IGlkPSJz dHlsZV8xNzAwNjYzNTI2MDcxNzE0MTEwNl9CT0RZIj48ZGl2IGNsYXNzPSJjbF84NjM2MTkiPjxw PkhlbGxvLCBNYXgsPC9wPjxwPnRoYW5rcyBmb3IgdGhlIHRlc3RzITwvcD48cD5TZWUgbXkgY29t bWVudHMuPC9wPjxwPiZuYnNwOzwvcD48cD5GaXJzdCBvZiBhbGwgLSBUZXN0TEpTdHIgYWx3YXlz IHRpbWVkIG91dDo8L3A+PHA+PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTxicj5FUlJPUjogc2V0VXBDbGFzcyAoX19t YWluX18uVGVzdExKU3RyKTxicj4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPGJyPlRyYWNlYmFjayAobW9zdCByZWNl bnQgY2FsbCBsYXN0KTo8YnI+Jm5ic3A7IEZpbGUgIi9ob21lL3NlcmdleWIvc291cmNlcy9NUkcv dGFyYW50b29sL3RoaXJkX3BhcnR5L2x1YWppdC90ZXN0L0x1YUpJVC1kZWJ1Zy1leHRlbnNpb25z LXRlc3RzL2RlYnVnLWV4dGVuc2lvbi10ZXN0cy5weSIsIGxpbmUgODgsIGluIHNldFVwQ2xhc3M8 YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7IGNscy5vdXRwdXQgPSBmaWx0ZXJfZGVidWdnZXJfb3V0cHV0 KGV4ZWN1dGVfcHJvY2Vzcyhwcm9jZXNzX2NtZCkpPGJyPiZuYnNwOyBGaWxlICIvaG9tZS9zZXJn ZXliL3NvdXJjZXMvTVJHL3RhcmFudG9vbC90aGlyZF9wYXJ0eS9sdWFqaXQvdGVzdC9MdWFKSVQt ZGVidWctZXh0ZW5zaW9ucy10ZXN0cy9kZWJ1Zy1leHRlbnNpb24tdGVzdHMucHkiLCBsaW5lIDUw LCBpbiBleGVjdXRlX3Byb2Nlc3M8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7IHByb2Nlc3MgPSBzdWJw cm9jZXNzLnJ1bihjbWQsIGNhcHR1cmVfb3V0cHV0PVRydWUsIHRpbWVvdXQ9VElNRU9VVCk8YnI+ Jm5ic3A7IEZpbGUgIi91c3IvbGliL3B5dGhvbjMuMTAvc3VicHJvY2Vzcy5weSIsIGxpbmUgNTA1 LCBpbiBydW48YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7IHN0ZG91dCwgc3RkZXJyID0gcHJvY2Vzcy5j b21tdW5pY2F0ZShpbnB1dCwgdGltZW91dD10aW1lb3V0KTxicj4mbmJzcDsgRmlsZSAiL3Vzci9s aWIvcHl0aG9uMy4xMC9zdWJwcm9jZXNzLnB5IiwgbGluZSAxMTU0LCBpbiBjb21tdW5pY2F0ZTxi cj4mbmJzcDsmbmJzcDsmbmJzcDsgc3Rkb3V0LCBzdGRlcnIgPSBzZWxmLl9jb21tdW5pY2F0ZShp bnB1dCwgZW5kdGltZSwgdGltZW91dCk8YnI+Jm5ic3A7IEZpbGUgIi91c3IvbGliL3B5dGhvbjMu MTAvc3VicHJvY2Vzcy5weSIsIGxpbmUgMjAyMiwgaW4gX2NvbW11bmljYXRlPGJyPiZuYnNwOyZu YnNwOyZuYnNwOyBzZWxmLl9jaGVja190aW1lb3V0KGVuZHRpbWUsIG9yaWdfdGltZW91dCwgc3Rk b3V0LCBzdGRlcnIpPGJyPiZuYnNwOyBGaWxlICIvdXNyL2xpYi9weXRob24zLjEwL3N1YnByb2Nl c3MucHkiLCBsaW5lIDExOTgsIGluIF9jaGVja190aW1lb3V0PGJyPiZuYnNwOyZuYnNwOyZuYnNw OyByYWlzZSBUaW1lb3V0RXhwaXJlZCg8YnI+c3VicHJvY2Vzcy5UaW1lb3V0RXhwaXJlZDogQ29t bWFuZCAnWycvYmluL2dkYicsICcteCcsICcvdG1wL3RtcG9vNWNweXNxJywgJy0tYXJncycsICcv aG9tZS9zZXJnZXliL3NvdXJjZXMvTVJHL3RhcmFudG9vbC90aGlyZF9wYXJ0eS9sdWFqaXQvYnVp bGQvc3JjL2x1YWppdCcsICcvdG1wL3RtcGZ1cGVreGNxJ10nIHRpbWVkIG91dCBhZnRlciAxMCBz ZWNvbmRzPC9wPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvYmxvY2txdW90ZT48ZGl2 PkNhbuKAmXQgcmVwcm9kdWNlIHJlZ2FyZGxlc3Mgb2YgbGxkYiBiZWluZyBpbnN0YWxsZWQgb3Ig bm90LjwvZGl2PjxibG9ja3F1b3RlIHN0eWxlPSJib3JkZXItbGVmdDoxcHggc29saWQgIzA4NTdB NjsgbWFyZ2luOjEwcHg7IHBhZGRpbmc6MCAwIDAgMTBweDsiPjxkaXY+PGRpdiBjbGFzcz0ianMt aGVscGVyIGpzLXJlYWRtc2ctbXNnIj48ZGl2PjxkaXY+PGRpdiBjbGFzcz0iY2xfODYzNjE5Ij48 cD5tYWtlIEx1YUpJVC1kZWJ1Z2dlci1sbGRiLXRlc3RzIHdvcmtzIGZpbmU8L3A+PHA+Jm5ic3A7 PC9wPjxkaXYgY2xhc3M9Im1vei1jaXRlLXByZWZpeF9tcl9jc3NfYXR0ciI+T24gMTEvMTAvMjMg MjM6MTYsIE1ha3NpbSBLb2tyeWFzaGtpbiB3cm90ZTo8L2Rpdj48YmxvY2txdW90ZSB0eXBlPSJj aXRlIj48cHJlIGNsYXNzPSJtb3otcXVvdGUtcHJlX21yX2Nzc19hdHRyIj5UaGlzIHBhdGNoIGFk ZHMgdGVzdHMgZm9yIEx1YUpJVCBkZWJ1Z2dpbmcKZXh0ZW5zaW9ucyBmb3IgbGxkYiBhbmQgZ2Ri LgotLS0KIC5mbGFrZThyYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg NCArCiB0ZXN0L0NNYWtlTGlzdHMudHh0ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDMg KwogLi4uL0NNYWtlTGlzdHMudHh0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDc4ICsr KysrKwogLi4uL2RlYnVnLWV4dGVuc2lvbi10ZXN0cy5weSAgICAgICAgICAgICAgICAgIHwgMjUw ICsrKysrKysrKysrKysrKysrKwogNCBmaWxlcyBjaGFuZ2VkLCAzMzUgaW5zZXJ0aW9ucygrKQog Y3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3QvTHVhSklULWRlYnVnLWV4dGVuc2lvbnMtdGVzdHMvQ01h a2VMaXN0cy50eHQKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0L0x1YUpJVC1kZWJ1Zy1leHRlbnNp b25zLXRlc3RzL2RlYnVnLWV4dGVuc2lvbi10ZXN0cy5weQoKZGlmZiAtLWdpdCBhLy5mbGFrZThy YyBiLy5mbGFrZThyYwppbmRleCAxM2U2MTc4Zi4uNjc2NmVkNDEgMTAwNjQ0Ci0tLSBhLy5mbGFr ZThyYworKysgYi8uZmxha2U4cmMKQEAgLTMsMyArMyw3IEBAIGV4dGVuZC1pZ25vcmUgPQogICAj IFhYWDogU3VwcHJlc3MgRjgyMSwgc2luY2Ugd2UgaGF2ZSBhdXRvZ2VuZXJhdGVkIG5hbWVzIGZv cgogICAjICdwdHInIHR5cGUgY29tcGxlbWVudHMgaW4gbHVhaml0X2xsZGIucHkuCiAgIEY4MjEK K3Blci1maWxlLWlnbm9yZXMgPQorICAjIFhYWDogRmxha2UgY29uc2lkZXJzIHJlZ2V4cCBzcGVj aWFsIGNoYXJhY3RlcnMgdG8gYmUKKyAgIyBlc2NhcGUgc2VxdWVuY2VzLgorICB0ZXN0L0x1YUpJ VC1kZWJ1Zy1leHRlbnNpb25zLXRlc3RzL2RlYnVnLWV4dGVuc2lvbi10ZXN0cy5weTpXNjA1CmRp ZmYgLS1naXQgYS90ZXN0L0NNYWtlTGlzdHMudHh0IGIvdGVzdC9DTWFrZUxpc3RzLnR4dAppbmRl eCA1OGNiYTViYS4uZDc5MTBlYTQgMTAwNjQ0Ci0tLSBhL3Rlc3QvQ01ha2VMaXN0cy50eHQKKysr IGIvdGVzdC9DTWFrZUxpc3RzLnR4dApAQCAtNzgsNiArNzgsNyBAQCBhZGRfc3ViZGlyZWN0b3J5 KFBVQy1SaW8tTHVhLTUuMS10ZXN0cykKIGFkZF9zdWJkaXJlY3RvcnkobHVhLUhhcm5lc3MtdGVz dHMpCiBhZGRfc3ViZGlyZWN0b3J5KHRhcmFudG9vbC1jLXRlc3RzKQogYWRkX3N1YmRpcmVjdG9y eSh0YXJhbnRvb2wtdGVzdHMpCithZGRfc3ViZGlyZWN0b3J5KEx1YUpJVC1kZWJ1Zy1leHRlbnNp b25zLXRlc3RzKQogCiBhZGRfY3VzdG9tX3RhcmdldCgke1BST0pFQ1RfTkFNRX0tdGVzdCBERVBF TkRTCiAgIEx1YUpJVC10ZXN0cwpAQCAtODUsNiArODYsOCBAQCBhZGRfY3VzdG9tX3RhcmdldCgk e1BST0pFQ1RfTkFNRX0tdGVzdCBERVBFTkRTCiAgIGx1YS1IYXJuZXNzLXRlc3RzCiAgIHRhcmFu dG9vbC1jLXRlc3RzCiAgIHRhcmFudG9vbC10ZXN0cworICBMdWFKSVQtbGxkYi1leHRlbnNpb24t dGVzdHMKKyAgTHVhSklULWdkYi1leHRlbnNpb24tdGVzdHMKICkKIAogaWYoTFVBSklUX1VTRV9U RVNUKQpkaWZmIC0tZ2l0IGEvdGVzdC9MdWFKSVQtZGVidWctZXh0ZW5zaW9ucy10ZXN0cy9DTWFr ZUxpc3RzLnR4dCBiL3Rlc3QvTHVhSklULWRlYnVnLWV4dGVuc2lvbnMtdGVzdHMvQ01ha2VMaXN0 cy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLjNiMzgyMDFkCi0tLSAv ZGV2L251bGwKKysrIGIvdGVzdC9MdWFKSVQtZGVidWctZXh0ZW5zaW9ucy10ZXN0cy9DTWFrZUxp c3RzLnR4dApAQCAtMCwwICsxLDc4IEBACithZGRfY3VzdG9tX3RhcmdldChMdWFKSVQtZ2RiLWV4 dGVuc2lvbi10ZXN0cworICBERVBFTkRTICR7TFVBSklUX1RFU1RfQklOQVJZfQorKQorCithZGRf Y3VzdG9tX3RhcmdldChMdWFKSVQtbGxkYi1leHRlbnNpb24tdGVzdHMKKyAgREVQRU5EUyAke0xV QUpJVF9URVNUX0JJTkFSWX0KKykKKworIyBEZWJ1ZyBpbmZvIGlzIHJlcXVpcmVkIGZvciB0ZXN0 aW5nIG9mIGV4dGVuc2lvbnMuCitpZihOT1QgKENNQUtFX0JVSUxEX1RZUEUgTUFUQ0hFUyBEZWJ1 ZykpCisgIG1lc3NhZ2UoV0FSTklORworICAgICJub3QgYSBERUJVRyBidWlsZCwgTHVhSklULWxs ZGItZXh0ZW5zaW9uLXRlc3RzIGFuZCAiCisgICAgIkx1YUpJVC1nZGItZXh0ZW5zaW9uLXRlc3Rz IGFyZSBkdW1teSIKKyAgKQorICByZXR1cm4oKQorZW5kaWYoKQorCisjIE1hY09TIGFza3MgZm9y IHBlcm1pc3Npb24gdG8gZGVidWcgYSBwcm9jZXNzIGV2ZW4gd2hlbiB0aGUKKyMgbWFjaGluZSBp cyBzZXQgaW50byBkZXZlbG9wbWVudCBtb2RlLiBUbyBzb2x2ZSB0aGUgaXNzdWUsCisjIGl0IGlz IHJlcXVpcmVkIHRvIGFkZCByZWxldmFudCB1c2VycyB0byB0aGUgYF9kZXZlbG9wZXJgIHVzZXIK KyMgZ3JvdXAgaW4gTWFjT1MuIERpc2FibGVkIGZvciBub3cuCitpZihDTUFLRV9TWVNURU1fTkFN RSBTVFJFUVVBTCAiRGFyd2luIiBBTkQgREVGSU5FRCBFTlZ7Q0l9KQorICBtZXNzYWdlKFdBUk5J TkcKKyAgICAiSW50ZXJhY3RpdmUgZGVidWdnaW5nIGlzIHVuYXZhaWxhYmxlIGZvciBtYWNPUyBD SSBidWlsZHMsIgorICAgICJMdWFKSVQtbGxkYi1leHRlbnNpb24tdGVzdHMgaXMgZHVtbXkiCisg ICkKKyAgcmV0dXJuKCkKK2VuZGlmKCkKKworZmluZF9wYWNrYWdlKFB5dGhvbkludGVycCkKK2lm KE5PVCBQWVRIT05JTlRFUlBfRk9VTkQpCisgIG1lc3NhZ2UoV0FSTklORworICAgICJgcHl0aG9u YCBpcyBub3QgZm91bmQsIEx1YUpJVC1sbGRiLWV4dGVuc2lvbi10ZXN0cyBhbmQgIgorICAgICJM dWFKSVQtZ2RiLWV4dGVuc2lvbi10ZXN0cyBhcmUgZHVtbXkiCisgICkKKyAgcmV0dXJuKCkKK2Vu ZGlmKCkKKworc2V0KERFQlVHR0VSX1RFU1RfRU5WCisgICJMVUFKSVRfVEVTVF9CSU5BUlk9JHtM VUFKSVRfVEVTVF9CSU5BUll9IjwvcHJlPjwvYmxvY2txdW90ZT48cD5JIHN1cHBvc2UgaXQgc2hv dWxkIGJlIHNvbWV0aGluZyBsaWtlIHRoaXM6PC9wPjxwcmU+Z2V0X3Byb3BlcnR5KExVQUpJVF9U RVNUX0JJTkFSWSBUQVJHRVQgJHtMVUFKSVRfVEVTVF9CSU5BUll9IFBST1BFUlRZIExPQ0FUSU9O KTwvcHJlPjxwPiZuYnNwOzwvcD48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Jsb2Nr cXVvdGU+PGRpdj5UaGF0IHZhcmlhYmxlIGNvbWVzIGZyb20gdGhlIHBhcmVudCBzY29wZSwgc28g dGhlcmUgaXMgbm8gbmVlZCB0byBkbyB0aGF0LjwvZGl2PjxkaXY+SWdub3JpbmcuPC9kaXY+PGJs b2NrcXVvdGUgc3R5bGU9ImJvcmRlci1sZWZ0OjFweCBzb2xpZCAjMDg1N0E2OyBtYXJnaW46MTBw eDsgcGFkZGluZzowIDAgMCAxMHB4OyI+PGRpdj48ZGl2IGNsYXNzPSJqcy1oZWxwZXIganMtcmVh ZG1zZy1tc2ciPjxkaXY+PGRpdj48ZGl2IGNsYXNzPSJjbF84NjM2MTkiPjxibG9ja3F1b3RlIHR5 cGU9ImNpdGUiPjxwcmUgY2xhc3M9Im1vei1xdW90ZS1wcmVfbXJfY3NzX2F0dHIiPisgICMgU3Vw cHJlc3NlcyBfX3B5Y2FjaGVfXyBnZW5lcmF0aW9uLgorICAiUFlUSE9ORE9OVFdSSVRFQllURUNP REU9MSIKKyAgIkRFQlVHR0VSX0VYVEVOU0lPTl9QQVRIPSR7UFJPSkVDVF9TT1VSQ0VfRElSfS9z cmMvbHVhaml0X2RiZy5weSIKKykKKworc2V0KFRFU1RfU0NSSVBUX1BBVEgKKyAgJHtQUk9KRUNU X1NPVVJDRV9ESVJ9L3Rlc3QvTHVhSklULWRlYnVnLWV4dGVuc2lvbnMtdGVzdHMvZGVidWctZXh0 ZW5zaW9uLXRlc3RzLnB5CispCisKK2ZpbmRfcHJvZ3JhbShHREIgZ2RiKQoraWYoR0RCKQorICBz ZXQoR0RCX1RFU1RfRU5WICR7REVCVUdHRVJfVEVTVF9FTlZ9CisgICAgIkRFQlVHR0VSX0NPTU1B TkQ9JHtHREJ9IgorICApCisgIGFkZF9jdXN0b21fY29tbWFuZChUQVJHRVQgTHVhSklULWdkYi1l eHRlbnNpb24tdGVzdHMKKyAgICBDT01NRU5UICJSdW5uaW5nIGx1YWppdF9kYmcucHkgdGVzdHMg d2l0aCBnZGIiCisgICAgQ09NTUFORAorICAgICR7R0RCX1RFU1RfRU5WfSAke1BZVEhPTl9FWEVD VVRBQkxFfSAke1RFU1RfU0NSSVBUX1BBVEh9CisgICAgV09SS0lOR19ESVJFQ1RPUlkgJHtDTUFL RV9DVVJSRU5UX0JJTkFSWV9ESVJ9CisgICkKK2Vsc2UoKQorICBtZXNzYWdlKFdBUk5JTkcgImBn ZGInIGlzIG5vdCBmb3VuZCwgc28gTHVhSklULWdkYi1leHRlbnNpb24tdGVzdHMgaXMgZHVtbXki KQorZW5kaWYoKTwvcHJlPjwvYmxvY2txdW90ZT48cD5JIHByb3Bvc2UgYWRkaW5nIGEgbWVzc2Fn ZSBpbiBkdW1teSB0YXJnZXQsIGxpa2Ugd2UgZGlkIGluIGNtYWtlL0NvZGVDb3ZlcmFnZS5jbWFr ZTo8L3A+PHA+Jm5ic3A7Jm5ic3A7Jm5ic3A7IGFkZF9jdXN0b21fdGFyZ2V0KCR7UFJPSkVDVF9O QU1FfS1jb3ZlcmFnZSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAmbmJz cDs8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IENPTU1BTkQgJHtDTUFLRV9DT01N QU5EfSAtRSBjbWFrZV9lY2hvX2NvbG9yIC0tcmVkICR7TVNHfSZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDs8YnI+Jm5ic3A7Jm5ic3A7Jm5i c3A7ICkmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L3A+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+ PC9kaXY+PC9ibG9ja3F1b3RlPjxkaXY+QWRkZWQsIHRoYW5rcyE8L2Rpdj48YmxvY2txdW90ZSBz dHlsZT0iYm9yZGVyLWxlZnQ6MXB4IHNvbGlkICMwODU3QTY7IG1hcmdpbjoxMHB4OyBwYWRkaW5n OjAgMCAwIDEwcHg7Ij48ZGl2PjxkaXYgY2xhc3M9ImpzLWhlbHBlciBqcy1yZWFkbXNnLW1zZyI+ PGRpdj48ZGl2PjxkaXYgY2xhc3M9ImNsXzg2MzYxOSI+PGJsb2NrcXVvdGUgdHlwZT0iY2l0ZSI+ PHByZSBjbGFzcz0ibW96LXF1b3RlLXByZV9tcl9jc3NfYXR0ciI+KworZmluZF9wcm9ncmFtKExM REIgbGxkYikKK2lmKExMREIpCisgIHNldChMTERCX1RFU1RfRU5WICR7REVCVUdHRVJfVEVTVF9F TlZ9CisgICAgIkRFQlVHR0VSX0NPTU1BTkQ9JHtMTERCfSIKKyAgKQorICBhZGRfY3VzdG9tX2Nv bW1hbmQoVEFSR0VUIEx1YUpJVC1sbGRiLWV4dGVuc2lvbi10ZXN0cworICAgIENPTU1FTlQgIlJ1 bm5pbmcgbHVhaml0X2RiZy5weSB0ZXN0cyB3aXRoIGxsZGIiCisgICAgQ09NTUFORAorICAgICR7 TExEQl9URVNUX0VOVn0gJHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtURVNUX1NDUklQVF9QQVRIfQor ICAgIFdPUktJTkdfRElSRUNUT1JZICR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfQorICApCitl bHNlKCkKKyAgbWVzc2FnZShXQVJOSU5HICJgbGxkYicgaXMgbm90IGZvdW5kLCBzbyBMdWFKSVQt Z2RiLWV4dGVuc2lvbi10ZXN0cyBpcyBkdW1teSIpPC9wcmU+PC9ibG9ja3F1b3RlPnR5cG86IEx1 YUpJVC1sbGRiLWV4dGVudHNpb24tdGVzdHM8L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48 L2Jsb2NrcXVvdGU+PGRpdj5GaXhlZCwgdGhhbmtzITwvZGl2PjxibG9ja3F1b3RlIHN0eWxlPSJi b3JkZXItbGVmdDoxcHggc29saWQgIzA4NTdBNjsgbWFyZ2luOjEwcHg7IHBhZGRpbmc6MCAwIDAg MTBweDsiPjxkaXY+PGRpdiBjbGFzcz0ianMtaGVscGVyIGpzLXJlYWRtc2ctbXNnIj48ZGl2Pjxk aXY+PGRpdiBjbGFzcz0iY2xfODYzNjE5Ij48YmxvY2txdW90ZSB0eXBlPSJjaXRlIj48cHJlIGNs YXNzPSJtb3otcXVvdGUtcHJlX21yX2Nzc19hdHRyIj4rZW5kaWYoKQpkaWZmIC0tZ2l0IGEvdGVz dC9MdWFKSVQtZGVidWctZXh0ZW5zaW9ucy10ZXN0cy9kZWJ1Zy1leHRlbnNpb24tdGVzdHMucHkg Yi90ZXN0L0x1YUpJVC1kZWJ1Zy1leHRlbnNpb25zLXRlc3RzL2RlYnVnLWV4dGVuc2lvbi10ZXN0 cy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4uNmVmODc0NzMKLS0tIC9k ZXYvbnVsbAorKysgYi90ZXN0L0x1YUpJVC1kZWJ1Zy1leHRlbnNpb25zLXRlc3RzL2RlYnVnLWV4 dGVuc2lvbi10ZXN0cy5weQpAQCAtMCwwICsxLDI1MCBAQAorIyBUaGlzIGZpbGUgcHJvdmlkZXMg dGVzdHMgZm9yIEx1YUpJVCBkZWJ1ZyBleHRlbnNpb25zIGZvciBsbGRiIGFuZCBnZGIuCitpbXBv cnQgb3MKK2ltcG9ydCByZQoraW1wb3J0IHN1YnByb2Nlc3MKK2ltcG9ydCBzeXMKK2ltcG9ydCB0 ZW1wZmlsZQoraW1wb3J0IHVuaXR0ZXN0CisKK2Zyb20gdGhyZWFkaW5nIGltcG9ydCBUaW1lcgor CitMRUdBQ1kgPSByZS5tYXRjaChyJ14yXC4nLCBzeXMudmVyc2lvbikKKworTFVBSklUX0JJTkFS WSA9IG9zLmVudmlyb25bJ0xVQUpJVF9URVNUX0JJTkFSWSddCitFWFRFTlNJT04gPSBvcy5lbnZp cm9uWydERUJVR0dFUl9FWFRFTlNJT05fUEFUSCddCitERUJVR0dFUiA9IG9zLmVudmlyb25bJ0RF QlVHR0VSX0NPTU1BTkQnXQorTExEQiA9ICdsbGRiJyBpbiBERUJVR0dFUgorVElNRU9VVCA9IDEw PC9wcmU+PC9ibG9ja3F1b3RlPnNraXAgb3IgZXZlbiBmYWlsIGFsbCB0ZXN0Y2FzZXMgaWYgYXQg bGVhc3Qgb25lIHJlcXVpcmVkIGVudiB2YXJpYWJsZSBpcyBtaXNzZWQ8L2Rpdj48L2Rpdj48L2Rp dj48L2Rpdj48L2Rpdj48L2Jsb2NrcXVvdGU+PGRpdj5XZWxsLCB1bml0dGVzdCBpcyBub3QgVEFQ LCBzbyB0aGVyZSBpcyBubyBlYXN5IHdheSB0byBza2lwIGFsbCB0ZXN0IGNhc2VzLiBUaGF04oCZ cyBub3QgYW4gaXNzdWUgYW55d2F5LDwvZGl2PjxkaXY+c2luY2UgaWYgYW55IHZhcmlhYmxlIGlz IG1pc3NpbmcgdGhlbiB0aGUgYEtleUVycm9yYCBpcyByYWlzZWQgYW5kIHRoZSZuYnNwO3N1aXRl IGZhaWxzLiZuYnNwO0lnbm9yaW5nLjwvZGl2PjxibG9ja3F1b3RlIHN0eWxlPSJib3JkZXItbGVm dDoxcHggc29saWQgIzA4NTdBNjsgbWFyZ2luOjEwcHg7IHBhZGRpbmc6MCAwIDAgMTBweDsiPjxk aXY+PGRpdiBjbGFzcz0ianMtaGVscGVyIGpzLXJlYWRtc2ctbXNnIj48ZGl2PjxkaXY+PGRpdiBj bGFzcz0iY2xfODYzNjE5Ij48YmxvY2txdW90ZSB0eXBlPSJjaXRlIj48cHJlIGNsYXNzPSJtb3ot cXVvdGUtcHJlX21yX2Nzc19hdHRyIj4rCitSVU5fQ01EX0ZJTEUgPSAnLXMnIGlmIExMREIgZWxz ZSAnLXgnCitJTkZFUklPUl9BUkdTID0gJy0tJyBpZiBMTERCIGVsc2UgJy0tYXJncycKK1BST0NF U1NfUlVOID0gJ3Byb2Nlc3MgbGF1bmNoJyBpZiBMTERCIGVsc2UgJ3InCitMT0FEX0VYVEVOU0lP TiA9ICgKKyAgICAnY29tbWFuZCBzY3JpcHQgaW1wb3J0IHtleHR9JyBpZiBMTERCIGVsc2UgJ3Nv dXJjZSB7ZXh0fScKKykuZm9ybWF0KGV4dD1FWFRFTlNJT04pCisKKworZGVmIHBlcnNpc3QoZGF0 YSk6CisgICAgdG1wID0gdGVtcGZpbGUuTmFtZWRUZW1wb3JhcnlGaWxlKG1vZGU9J3cnKQorICAg IHRtcC53cml0ZShkYXRhKQorICAgIHRtcC5mbHVzaCgpCisgICAgcmV0dXJuIHRtcAorCisKK2Rl ZiBleGVjdXRlX3Byb2Nlc3MoY21kLCB0aW1lb3V0PVRJTUVPVVQpOgorICAgIGlmIExFR0FDWToK KyAgICAgICAgIyBYWFg6IFRoZSBQeXRob24gMi43IHZlcnNpb24gb2YgYHN1YnByb2Nlc3MuUG9w ZW5gIGRvZXNuJ3QgaGF2ZSBhCisgICAgICAgICMgdGltZW91dCBvcHRpb24sIHNvIHRoZSByZXF1 aXJlZCBmdW5jdGlvbmFsaXR5IHdhcyBpbXBsZW1lbnRlZCB2aWEKKyAgICAgICAgIyBgdGhyZWFk aW5nLlRpbWVyYC4KKyAgICAgICAgcHJvY2VzcyA9IHN1YnByb2Nlc3MuUG9wZW4oY21kLCBzdGRv dXQ9c3VicHJvY2Vzcy5QSVBFKTwvcHJlPjwvYmxvY2txdW90ZT53aHkgc3RkZXJyIGlzIGlnbm9y ZWQ/IG5vbi1lbXB5IHN0ZGVyciBpcyBhIGJhZCBzeW1wdG9tPC9kaXY+PC9kaXY+PC9kaXY+PC9k aXY+PC9kaXY+PC9ibG9ja3F1b3RlPjxkaXY+Rml4ZWQsIHRoYW5rcyE8L2Rpdj48YmxvY2txdW90 ZSBzdHlsZT0iYm9yZGVyLWxlZnQ6MXB4IHNvbGlkICMwODU3QTY7IG1hcmdpbjoxMHB4OyBwYWRk aW5nOjAgMCAwIDEwcHg7Ij48ZGl2PjxkaXYgY2xhc3M9ImpzLWhlbHBlciBqcy1yZWFkbXNnLW1z ZyI+PGRpdj48ZGl2PjxkaXYgY2xhc3M9ImNsXzg2MzYxOSI+PGJsb2NrcXVvdGUgdHlwZT0iY2l0 ZSI+PHByZSBjbGFzcz0ibW96LXF1b3RlLXByZV9tcl9jc3NfYXR0ciI+KyAgICAgICAgdGltZXIg PSBUaW1lcihUSU1FT1VULCBwcm9jZXNzLmtpbGwpCisgICAgICAgIHRpbWVyLnN0YXJ0KCkKKyAg ICAgICAgc3Rkb3V0LCBfID0gcHJvY2Vzcy5jb21tdW5pY2F0ZSgpCisgICAgICAgIHRpbWVyLmNh bmNlbCgpCisKKyAgICAgICAgIyBYWFg6IElmIHRoZSB0aW1lb3V0IGlzIGV4Y2VlZGVkIGFuZCB0 aGUgcHJvY2VzcyBpcyBraWxsZWQgYnkgdGhlCisgICAgICAgICMgdGltZXIsIHRoZW4gdGhlIHJl dHVybiBjb2RlIGlzIG5vbi16ZXJvLCBhbmQgd2UgYXJlIGdvaW5nIHRvIGJsb3cgdXAuCisgICAg ICAgIGFzc2VydCBwcm9jZXNzLnJldHVybmNvZGUgPT0gMAorICAgICAgICByZXR1cm4gc3Rkb3V0 LmRlY29kZSgnYXNjaWknKQorICAgIGVsc2U6CisgICAgICAgIHByb2Nlc3MgPSBzdWJwcm9jZXNz LnJ1bihjbWQsIGNhcHR1cmVfb3V0cHV0PVRydWUsIHRpbWVvdXQ9VElNRU9VVCkKKyAgICAgICAg cmV0dXJuIHByb2Nlc3Muc3Rkb3V0LmRlY29kZSgnYXNjaWknKQorCisKK2RlZiBmaWx0ZXJfZGVi dWdnZXJfb3V0cHV0KG91dHB1dCk6CisgICAgZGVzY3JpcHRvciA9ICcobGxkYiknIGlmIExMREIg ZWxzZSAnKGdkYiknCisgICAgcmV0dXJuICcnLmpvaW4oCisgICAgICAgIGZpbHRlcigKKyAgICAg ICAgICAgIGxhbWJkYSBsaW5lOiBub3QgbGluZS5zdGFydHN3aXRoKGRlc2NyaXB0b3IpLAorICAg ICAgICAgICAgb3V0cHV0LnNwbGl0bGluZXMoVHJ1ZSksCisgICAgICAgICksCisgICAgKQorCisK K2NsYXNzIFRlc3RDYXNlQmFzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgQGNsYXNzbWV0aG9k CisgICAgZGVmIGNvbnN0cnVjdF9jbWRzKGNscyk6CisgICAgICAgIHJldHVybiAnXG4nLmpvaW4o WworICAgICAgICAgICAgJ2Ige2xvY30nLmZvcm1hdChsb2M9Y2xzLmxvY2F0aW9uKSwKKyAgICAg ICAgICAgIFBST0NFU1NfUlVOLAorICAgICAgICAgICAgJ24nLAorICAgICAgICAgICAgTE9BRF9F WFRFTlNJT04sCisgICAgICAgICAgICBjbHMuZXh0ZW5zaW9uX2NtZHMuc3RyaXAoKSwKKyAgICAg ICAgICAgICdxJywKKyAgICAgICAgXSkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRV cENsYXNzKGNscyk6CisgICAgICAgIGNtZF9maWxlID0gcGVyc2lzdChjbHMuY29uc3RydWN0X2Nt ZHMoKSkKKyAgICAgICAgc2NyaXB0X2ZpbGUgPSBwZXJzaXN0KGNscy5sdWFfc2NyaXB0KQorICAg ICAgICBwcm9jZXNzX2NtZCA9IFsKKyAgICAgICAgICAgIERFQlVHR0VSLAorICAgICAgICAgICAg UlVOX0NNRF9GSUxFLAorICAgICAgICAgICAgY21kX2ZpbGUubmFtZSwKKyAgICAgICAgICAgIElO RkVSSU9SX0FSR1MsCisgICAgICAgICAgICBMVUFKSVRfQklOQVJZLAorICAgICAgICAgICAgc2Ny aXB0X2ZpbGUubmFtZSwKKyAgICAgICAgXQorICAgICAgICBjbHMub3V0cHV0ID0gZmlsdGVyX2Rl YnVnZ2VyX291dHB1dChleGVjdXRlX3Byb2Nlc3MocHJvY2Vzc19jbWQpKQorICAgICAgICBjbWRf ZmlsZS5jbG9zZSgpCisgICAgICAgIHNjcmlwdF9maWxlLmNsb3NlKCkKKworICAgIGRlZiBjaGVj ayhzZWxmKToKKyAgICAgICAgaWYgTEVHQUNZOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSZWdl eHBNYXRjaGVzKHNlbGYub3V0cHV0LCBzZWxmLnBhdHRlcm4uc3RyaXAoKSkKKyAgICAgICAgZWxz ZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgoc2VsZi5vdXRwdXQsIHNlbGYucGF0dGVy bi5zdHJpcCgpKTwvcHJlPjwvYmxvY2txdW90ZT48cD5tZXNzYWdlIGZyb20gYXNzZXJ0UmVnZXgg aXMgdG90YWxseSB1bnJlYWRhYmxlOjwvcD48cD49PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PGJyPkZBSUw6IHRlc3Qg KF9fbWFpbl9fLlRlc3RMb2FkKTxicj4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPGJyPlRyYWNlYmFjayAobW9zdCBy ZWNlbnQgY2FsbCBsYXN0KTo8YnI+Jm5ic3A7IEZpbGUgIi9ob21lL3NlcmdleWIvc291cmNlcy9N UkcvdGFyYW50b29sL3RoaXJkX3BhcnR5L2x1YWppdC90ZXN0L0x1YUpJVC1kZWJ1Zy1leHRlbnNp b25zLXRlc3RzL2RlYnVnLWV4dGVuc2lvbi10ZXN0cy5weSIsIGxpbmUgMjQ3LCBpbiAmbHQ7bGFt YmRhJmd0Ozxicj4mbmJzcDsmbmJzcDsmbmJzcDsgdGVzdF9jbHMudGVzdCA9IGxhbWJkYSBzZWxm OiBzZWxmLmNoZWNrKCk8YnI+Jm5ic3A7IEZpbGUgIi9ob21lL3NlcmdleWIvc291cmNlcy9NUkcv dGFyYW50b29sL3RoaXJkX3BhcnR5L2x1YWppdC90ZXN0L0x1YUpJVC1kZWJ1Zy1leHRlbnNpb25z LXRlc3RzL2RlYnVnLWV4dGVuc2lvbi10ZXN0cy5weSIsIGxpbmUgOTYsIGluIGNoZWNrPGJyPiZu YnNwOyZuYnNwOyZuYnNwOyBzZWxmLmFzc2VydFJlZ2V4KHNlbGYub3V0cHV0LCBzZWxmLnBhdHRl cm4uc3RyaXAoKSk8YnI+QXNzZXJ0aW9uRXJyb3I6IFJlZ2V4IGRpZG4ndCBtYXRjaDogJ2xqLXR2 IGNvbW1hbmQgaW50aWFsaXplZFxubGotc3RhdGUgY29tbWFuZCBpbnRpYWxpemVkXG5sai1hcmNo IGNvbW1hbmQgaW50aWFsaXplZFxubGotZ2MgY29tbWFuZCBpbnRpYWxpemVkXG5sai1zdHIgY29t bWFuZCBpbnRpYWxpemVkXG5sai10YWIgY29tbWFuZCBpbnRpYWxpemVkXG5sai1zdGFjayBjb21t YW5kIGludGlhbGl6ZWRcbkx1YUpJVCBkZWJ1ZyBleHRlbnNpb24gaXMgc3VjY2Vzc2Z1bGx5IGxv YWRlZCcgbm90IGZvdW5kIGluICdHTlUgZ2RiIChVYnVudHUgMTIuMS0wdWJ1bnR1MX4yMi4wNCkg MTIuMVxuQ29weXJpZ2h0IChDKSAyMDIyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLlxu TGljZW5zZSBHUEx2Mys6IEdOVSBHUEwgdmVyc2lvbiAzIG9yIGxhdGVyIDxhIGhyZWY9Imh0dHA6 Ly9nbnUub3JnL2xpY2Vuc2VzL2dwbC5odG1sIiBjbGFzcz0ibW96LXR4dC1saW5rLXJmYzIzOTZF X21yX2Nzc19hdHRyIiB0YXJnZXQ9Il9ibGFuayI+Jmx0O2h0dHA6Ly9nbnUub3JnL2xpY2Vuc2Vz L2dwbC5odG1sJmd0OzwvYT5cblRoaXMgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGFyZSBmcmVlIHRv IGNoYW5nZSBhbmQgcmVkaXN0cmlidXRlIGl0LlxuVGhlcmUgaXMgTk8gV0FSUkFOVFksIHRvIHRo ZSBleHRlbnQgcGVybWl0dGVkIGJ5IGxhdy5cblR5cGUgInNob3cgY29weWluZyIgYW5kICJzaG93 IHdhcnJhbnR5IiBmb3IgZGV0YWlscy5cblRoaXMgR0RCIHdhcyBjb25maWd1cmVkIGFzICJ4ODZf NjQtbGludXgtZ251Ii5cblR5cGUgInNob3cgY29uZmlndXJhdGlvbiIgZm9yIGNvbmZpZ3VyYXRp b24gZGV0YWlscy5cbkZvciBidWcgcmVwb3J0aW5nIGluc3RydWN0aW9ucywgcGxlYXNlIHNlZTpc bjxhIGhyZWY9Imh0dHBzOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvZ2RiL2J1Z3MvIiBjbGFzcz0i bW96LXR4dC1saW5rLXJmYzIzOTZFX21yX2Nzc19hdHRyIiB0YXJnZXQ9Il9ibGFuayI+Jmx0O2h0 dHBzOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvZ2RiL2J1Z3MvJmd0OzwvYT4uXG5GaW5kIHRoZSBH REIgbWFudWFsIGFuZCBvdGhlciBkb2N1bWVudGF0aW9uIHJlc291cmNlcyBvbmxpbmUgYXQ6XG4m bmJzcDsmbmJzcDsmbmJzcDsgPGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2dk Yi9kb2N1bWVudGF0aW9uLyIgY2xhc3M9Im1vei10eHQtbGluay1yZmMyMzk2RV9tcl9jc3NfYXR0 ciIgdGFyZ2V0PSJfYmxhbmsiPiZsdDtodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvZ2RiL2Rv Y3VtZW50YXRpb24vJmd0OzwvYT4uXG5cbkZvciBoZWxwLCB0eXBlICJoZWxwIi5cblR5cGUgImFw cm9wb3Mgd29yZCIgdG8gc2VhcmNoIGZvciBjb21tYW5kcyByZWxhdGVkIHRvICJ3b3JkIi4uLlxu UmVhZGluZyBzeW1ib2xzIGZyb20gL2hvbWUvc2VyZ2V5Yi9zb3VyY2VzL01SRy90YXJhbnRvb2wv dGhpcmRfcGFydHkvbHVhaml0L2J1aWxkL3NyYy9sdWFqaXQuLi5cbkJyZWFrcG9pbnQgMSBhdCAw eDJlNjQwOiBmaWxlIC9ob21lL3NlcmdleWIvc291cmNlcy9NUkcvdGFyYW50b29sL3RoaXJkX3Bh cnR5L2x1YWppdC9zcmMvbGliX2Jhc2UuYywgbGluZSA0OTYuXG5bVGhyZWFkIGRlYnVnZ2luZyB1 c2luZyBsaWJ0aHJlYWRfZGIgZW5hYmxlZF1cblVzaW5nIGhvc3QgbGlidGhyZWFkX2RiIGxpYnJh cnkgIi9saWIveDg2XzY0LWxpbnV4LWdudS9saWJ0aHJlYWRfZGIuc28uMSIuXG5cbkJyZWFrcG9p bnQgMSwgbGpfY2ZfcHJpbnQgKEw9MHg1NTU1NTU1NWM4ZjAgJmx0O3BtYWluJmd0OykgYXQgL2hv bWUvc2VyZ2V5Yi9zb3VyY2VzL01SRy90YXJhbnRvb2wvdGhpcmRfcGFydHkvbHVhaml0L3NyYy9s aWJfYmFzZS5jOjQ5NlxuNDk2XHR7XG40OTdcdCZuYnNwOyBwdHJkaWZmX3QgaSwgbmFyZ3MgPSBM LSZndDt0b3AgLSBMLSZndDtiYXNlO1xuJzwvcD48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rp dj48L2Jsb2NrcXVvdGU+PGRpdj5J4oCZdmUgaW1wbGVtZW50ZWQgbXkgb3duIGNoZWNrIGJhc2Vk IG9uIHVuaXR0ZXN04oCZcyBwdWJsaWMgQVBJLCBzbyBub3cgaXQgbG9va3MgbmljZXIuIFRoYW5r cyE8L2Rpdj48YmxvY2txdW90ZSBzdHlsZT0iYm9yZGVyLWxlZnQ6MXB4IHNvbGlkICMwODU3QTY7 IG1hcmdpbjoxMHB4OyBwYWRkaW5nOjAgMCAwIDEwcHg7Ij48ZGl2PjxkaXYgY2xhc3M9ImpzLWhl bHBlciBqcy1yZWFkbXNnLW1zZyI+PGRpdj48ZGl2PjxkaXYgY2xhc3M9ImNsXzg2MzYxOSI+PHA+ Jm5ic3A7PC9wPjxibG9ja3F1b3RlIHR5cGU9ImNpdGUiPjxwcmUgY2xhc3M9Im1vei1xdW90ZS1w cmVfbXJfY3NzX2F0dHIiPisKKworY2xhc3MgVGVzdExvYWQoVGVzdENhc2VCYXNlKToKKyAgICBl eHRlbnNpb25fY21kcyA9ICcnCisgICAgbG9jYXRpb24gPSAnbGpfY2ZfcHJpbnQnCisgICAgbHVh X3NjcmlwdCA9ICdwcmludCgxKScKKyAgICBwYXR0ZXJuID0gKAorICAgICAgICAnbGotdHYgY29t bWFuZCBpbnRpYWxpemVkXG4nCisgICAgICAgICdsai1zdGF0ZSBjb21tYW5kIGludGlhbGl6ZWRc bicKKyAgICAgICAgJ2xqLWFyY2ggY29tbWFuZCBpbnRpYWxpemVkXG4nCisgICAgICAgICdsai1n YyBjb21tYW5kIGludGlhbGl6ZWRcbicKKyAgICAgICAgJ2xqLXN0ciBjb21tYW5kIGludGlhbGl6 ZWRcbicKKyAgICAgICAgJ2xqLXRhYiBjb21tYW5kIGludGlhbGl6ZWRcbicKKyAgICAgICAgJ2xq LXN0YWNrIGNvbW1hbmQgaW50aWFsaXplZFxuJworICAgICAgICAnTHVhSklUIGRlYnVnIGV4dGVu c2lvbiBpcyBzdWNjZXNzZnVsbHkgbG9hZGVkXG4nCisgICAgKQorCisKK2NsYXNzIFRlc3RMSkFy Y2goVGVzdENhc2VCYXNlKToKKyAgICBleHRlbnNpb25fY21kcyA9ICdsai1hcmNoJworICAgIGxv Y2F0aW9uID0gJ2xqX2NmX3ByaW50JworICAgIGx1YV9zY3JpcHQgPSAncHJpbnQoMSknCisgICAg cGF0dGVybiA9ICgKKyAgICAgICAgJ0xKXzY0OiAoVHJ1ZXxGYWxzZSksICcKKyAgICAgICAgJ0xK X0dDNjQ6IChUcnVlfEZhbHNlKSwgJworICAgICAgICAnTEpfRFVBTE5VTTogKFRydWV8RmFsc2Up JworICAgICkKKworCitjbGFzcyBUZXN0TEpTdGF0ZShUZXN0Q2FzZUJhc2UpOgorICAgIGV4dGVu c2lvbl9jbWRzID0gJ2xqLXN0YXRlJworICAgIGxvY2F0aW9uID0gJ2xqX2NmX3ByaW50JworICAg IGx1YV9zY3JpcHQgPSAncHJpbnQoMSknCisgICAgcGF0dGVybiA9ICgKKyAgICAgICAgJ1ZNIHN0 YXRlOiBbQS1aXStcbicKKyAgICAgICAgJ0dDIHN0YXRlOiBbQS1aXStcbicKKyAgICAgICAgJ0pJ VCBzdGF0ZTogW0EtWl0rXG4nCisgICAgKQorCisKK2NsYXNzIFRlc3RMSkdDKFRlc3RDYXNlQmFz ZSk6CisgICAgZXh0ZW5zaW9uX2NtZHMgPSAnbGotZ2MnCisgICAgbG9jYXRpb24gPSAnbGpfY2Zf cHJpbnQnCisgICAgbHVhX3NjcmlwdCA9ICdwcmludCgxKScKKyAgICBwYXR0ZXJuID0gKAorICAg ICAgICAnR0Mgc3RhdHM6IFtBLVpdK1xuJworICAgICAgICAnXHR0b3RhbDogXGQrXG4nCisgICAg ICAgICdcdHRocmVzaG9sZDogXGQrXG4nCisgICAgICAgICdcdGRlYnQ6IFxkK1xuJworICAgICAg ICAnXHRlc3RpbWF0ZTogXGQrXG4nCisgICAgICAgICdcdHN0ZXBtdWw6IFxkK1xuJworICAgICAg ICAnXHRwYXVzZTogXGQrXG4nCisgICAgICAgICdcdHN3ZWVwc3RyOiBcZCsvXGQrXG4nCisgICAg ICAgICdcdHJvb3Q6IFxkKyBvYmplY3RzXG4nCisgICAgICAgICdcdGdyYXk6IFxkKyBvYmplY3Rz XG4nCisgICAgICAgICdcdGdyYXlhZ2FpbjogXGQrIG9iamVjdHNcbicKKyAgICAgICAgJ1x0d2Vh azogXGQrIG9iamVjdHNcbicKKyAgICAgICAgJ1x0bW11ZGF0YTogXGQrIG9iamVjdHNcbicKKyAg ICApCisKKworY2xhc3MgVGVzdExKU3RhY2soVGVzdENhc2VCYXNlKToKKyAgICBleHRlbnNpb25f Y21kcyA9ICdsai1zdGFjaycKKyAgICBsb2NhdGlvbiA9ICdsal9jZl9wcmludCcKKyAgICBsdWFf c2NyaXB0ID0gJ3ByaW50KDEpJworICAgIHBhdHRlcm4gPSAoCisgICAgICAgICctKyBSZWQgem9u ZTpccytcZCsgc2xvdHMgLStcbicKKyAgICAgICAgJygweFthLXpBLVowLTldK1xzK1xbKFN8XHMp KEJ8XHMpKFR8XHMpKE18XHMpXF0gVkFMVUU6IG5pbFxuPykqXG4nCisgICAgICAgICctKyBTdGFj azpccytcZCsgc2xvdHMgLStcbicKKyAgICAgICAgJygweFtBLVphLXowLTldKyg6MHhbQS1aYS16 MC05XSspP1xzKycKKyAgICAgICAgJ1xbKFN8XHMpKEJ8XHMpKFR8XHMpKE18XHMpXF0uKlxuPykr XG4nCisgICAgKQorCisKK2NsYXNzIFRlc3RMSlRWKFRlc3RDYXNlQmFzZSk6CisgICAgbG9jYXRp b24gPSAnbGpfY2ZfcHJpbnQnCisgICAgbHVhX3NjcmlwdCA9ICdwcmludCgxKScKKyAgICBleHRl bnNpb25fY21kcyA9ICgKKyAgICAgICAgJ2xqLXR2IEwtJmd0O2Jhc2VcbicKKyAgICAgICAgJ2xq LXR2IEwtJmd0O2Jhc2UgKyAxXG4nCisgICAgICAgICdsai10diBMLSZndDtiYXNlICsgMlxuJwor ICAgICAgICAnbGotdHYgTC0mZ3Q7YmFzZSArIDNcbicKKyAgICAgICAgJ2xqLXR2IEwtJmd0O2Jh c2UgKyA0XG4nCisgICAgICAgICdsai10diBMLSZndDtiYXNlICsgNVxuJworICAgICAgICAnbGot dHYgTC0mZ3Q7YmFzZSArIDZcbicKKyAgICAgICAgJ2xqLXR2IEwtJmd0O2Jhc2UgKyA3XG4nCisg ICAgICAgICdsai10diBMLSZndDtiYXNlICsgOFxuJworICAgICAgICAnbGotdHYgTC0mZ3Q7YmFz ZSArIDlcbicKKyAgICAgICAgJ2xqLXR2IEwtJmd0O2Jhc2UgKyAxMFxuJworICAgICAgICAnbGot dHYgTC0mZ3Q7YmFzZSArIDExXG4nCisgICAgKQorCisgICAgbHVhX3NjcmlwdCA9ICgKKyAgICAg ICAgJ2xvY2FsIGZmaSA9IHJlcXVpcmUoImZmaSIpXG4nCisgICAgICAgICdwcmludChcbicKKyAg ICAgICAgJyAgbmlsLFxuJworICAgICAgICAnICBmYWxzZSxcbicKKyAgICAgICAgJyAgdHJ1ZSxc bicKKyAgICAgICAgJyAgImhlbGxvIixcbicKKyAgICAgICAgJyAgezF9LFxuJworICAgICAgICAn ICAxLFxuJworICAgICAgICAnICAxLjEsXG4nCisgICAgICAgICcgIGNvcm91dGluZS5jcmVhdGUo ZnVuY3Rpb24oKSBlbmQpLFxuJworICAgICAgICAnICBmZmkubmV3KCJpbnQqIiksXG4nCisgICAg ICAgICcgIGZ1bmN0aW9uKCkgZW5kLFxuJworICAgICAgICAnICBwcmludCxcbicKKyAgICAgICAg JyAgcmVxdWlyZVxuJworICAgICAgICAnKVxuJworICAgICkKKworICAgIHBhdHRlcm4gPSAoCisg ICAgICAgICduaWxcbicKKyAgICAgICAgJ2ZhbHNlXG4nCisgICAgICAgICd0cnVlXG4nCisgICAg ICAgICdzdHJpbmcgXCJoZWxsb1wiIEAgMHhbYS16QS1aMC05XStcbicKKyAgICAgICAgJ3RhYmxl IEAgMHhbYS16QS1aMC05XSsgXChhc2l6ZTogXGQrLCBobWFzazogMHhbYS16QS1aMC05XStcKVxu JworICAgICAgICAnKG51bWJlcnxpbnRlZ2VyKSAuKjEuKlxuJworICAgICAgICAnbnVtYmVyIDEu MVxkK1xuJworICAgICAgICAndGhyZWFkIEAgMHhbYS16QS1aMC05XStcbicKKyAgICAgICAgJ2Nk YXRhIEAgMHhbYS16QS1aMC05XStcbicKKyAgICAgICAgJ0x1YSBmdW5jdGlvbiBAIDB4W2EtekEt WjAtOV0rLCBbMC05XSsgdXB2YWx1ZXMsIC4rOlswLTldK1xuJworICAgICAgICAnZmFzdCBmdW5j dGlvbiAjWzAtOV0rXG4nCisgICAgICAgICdDIGZ1bmN0aW9uIEAgMHhbYS16QS1aMC05XStcbicK KyAgICApCisKKworY2xhc3MgVGVzdExKU3RyKFRlc3RDYXNlQmFzZSk6CisgICAgZXh0ZW5zaW9u X2NtZHMgPSAnbGotc3RyIGZuYW1lJworICAgIGxvY2F0aW9uID0gJ2xqX2NmX2RvZmlsZScKKyAg ICBsdWFfc2NyaXB0ID0gJ3BjYWxsKGRvZmlsZSgibmFtZSIpKScKKyAgICBwYXR0ZXJuID0gJ1N0 cmluZzogLiogXFtcZCsgYnl0ZXNcXSB3aXRoIGhhc2ggMHhbYS16QS1aMC05XSsnCisKKworY2xh c3MgVGVzdExKVGFiKFRlc3RDYXNlQmFzZSk6CisgICAgZXh0ZW5zaW9uX2NtZHMgPSAnbGotdGFi IHQnCisgICAgbG9jYXRpb24gPSAnbGpfY2ZfdW5wYWNrJworICAgIGx1YV9zY3JpcHQgPSAndW5w YWNrKHsxOyBhID0gMX0pJworICAgIHBhdHRlcm4gPSAoCisgICAgICAgICdBcnJheSBwYXJ0OiAz IHNsb3RzXG4nCisgICAgICAgICcweFthLXpBLVowLTldKzogXFswXF06IG5pbFxuJworICAgICAg ICAnMHhbYS16QS1aMC05XSs6IFxbMVxdOiAuKyAxXG4nCisgICAgICAgICcweFthLXpBLVowLTld KzogXFsyXF06IG5pbFxuJworICAgICAgICAnSGFzaCBwYXJ0OiAyIG5vZGVzXG4nCisgICAgICAg ICcweFthLXpBLVowLTldKzogeyBzdHJpbmcgImEiIEAgMHhbYS16QS1aMC05XSsgfSA9Jmd0OyAn CisgICAgICAgICd7IC4rIDEgfTsgbmV4dCA9IDB4MFxuJworICAgICAgICAnMHhbYS16QS1aMC05 XSs6IHsgbmlsIH0gPSZndDsgeyBuaWwgfTsgbmV4dCA9IDB4MFxuJworICAgICkKKworCitmb3Ig dGVzdF9jbHMgaW4gVGVzdENhc2VCYXNlLl9fc3ViY2xhc3Nlc19fKCk6CisgICAgdGVzdF9jbHMu dGVzdCA9IGxhbWJkYSBzZWxmOiBzZWxmLmNoZWNrKCkKKworaWYgX19uYW1lX18gPT0gJ19fbWFp bl9fJzoKKyAgICB1bml0dGVzdC5tYWluKHZlcmJvc2l0eT0yKQo8L3ByZT48L2Jsb2NrcXVvdGU+ PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9ibG9ja3F1b3RlPjxkaXY+Jm5ic3A7PC9k aXY+PC9CT0RZPjwvSFRNTD4K ----ALT--a37B5203F22b53aDA90b87fEcAc45E521701871383--