From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ronald Rojas Subject: [PATCH v4 05/14] golang/xenlight: Add tests host related functionality functions Date: Thu, 16 Mar 2017 15:08:41 -0400 Message-ID: <1489691330-17695-5-git-send-email-ronladred@gmail.com> References: <1489691330-17695-1-git-send-email-ronladred@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1489691330-17695-1-git-send-email-ronladred@gmail.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" Cc: Ronald Rojas , wei.liu2@citrix.com, ian.jackson@eu.citrix.com, George Dunlap , xen-devel@lists.xen.org List-Id: xen-devel@lists.xenproject.org Q3JlYXRlIHRlc3RzIGZvciB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uczoKLSBHZXRWZXJzaW9uSW5m bwotIEdldFBoeXNpbmZvCi0gR2V0RG9taW5mbwotIEdldE1heENwdXMKLSBHZXRPbmxpbmVDcHVz Ci0gR2V0TWF4Tm9kZXMKLSBHZXRGcmVlTWVtb3J5CgpTaWduZWQtb2ZmLWJ5OiBSb25hbGQgUm9q YXMgPHJvbmxhZHJlZEBnbWFpbC5jb20+ClNpZ25lZC1vZmYtYnk6IEdlb3JnZSBEdW5sYXAgPGdl b3JnZS5kdW5sYXBAY2l0cml4LmNvbT4KCi0tLQpjaGFuZ2VzIHNpbmNlIGxhc3QgdmVyc2lvbgoK LSBjcmVhdGVkIENGTEFHUyBhbmQgTERMSUJTIHZhcmlhYmxlcyB0byBidWlsZCB0ZXN0IEMKZmls ZXMgd2l0aCByZXF1aXJlZCBkZXBlbmRlbmNpZXMuCgotIGNyZWF0ZWQgY3JlYXRlX2NvbnRleHQg YW5kIGRlc3Ryb3lfY29udGV4dCBmdW5jdGlvbgpmb3IgdGVzdHMgdG8gY3JlYXRlL2Rlc3Ryb3kg bGlieGxfY3R4IGFuZCB4ZW5sb2dnZXIKCi0gRm9ybWF0aW5nIGNoYW5nZXMKCi0gUmVtb3ZlZCBz dGFsZSBjb21tZW50cwoKLSBSZW1vdmVkIHJlZHVuZGFudCBlcnJvciBjaGVja3MgaW4gR29sYW5n IHRlc3RzCgotIE5lZ2F0ZWQgcHJpbnRlZCBlcnJvciBjb2RlIGluIGZyZWVtZW1vcnkuZ28KQ0M6 IHhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCkNDOiBnZW9yZ2UuZHVubGFwQGNpdHJpeC5jb20KQ0M6 IGlhbi5qYWNrc29uQGV1LmNpdHJpeC5jb20KQ0M6IHdlaS5saXUyQGNpdHJpeC5jb20KLS0tCi0t LQogdG9vbHMvZ29sYW5nL3hlbmxpZ2h0L3Rlc3QveGVuaW5mby9NYWtlZmlsZSAgICAgICB8IDQx ICsrKysrKysrKysrKysrKysrKysrKysrCiB0b29scy9nb2xhbmcveGVubGlnaHQvdGVzdC94ZW5p bmZvL2RvbWluZm8uYyAgICAgIHwgMzMgKysrKysrKysrKysrKysrKysrCiB0b29scy9nb2xhbmcv eGVubGlnaHQvdGVzdC94ZW5pbmZvL2RvbWluZm8uZ28gICAgIHwgMzEgKysrKysrKysrKysrKysr KysKIHRvb2xzL2dvbGFuZy94ZW5saWdodC90ZXN0L3hlbmluZm8vZnJlZW1lbW9yeS5jICAgfCAy NiArKysrKysrKysrKysrKwogdG9vbHMvZ29sYW5nL3hlbmxpZ2h0L3Rlc3QveGVuaW5mby9mcmVl bWVtb3J5LmdvICB8IDI1ICsrKysrKysrKysrKysrCiB0b29scy9nb2xhbmcveGVubGlnaHQvdGVz dC94ZW5pbmZvL21heGNwdS5jICAgICAgIHwgMTggKysrKysrKysrKwogdG9vbHMvZ29sYW5nL3hl bmxpZ2h0L3Rlc3QveGVuaW5mby9tYXhjcHUuZ28gICAgICB8IDI0ICsrKysrKysrKysrKysKIHRv b2xzL2dvbGFuZy94ZW5saWdodC90ZXN0L3hlbmluZm8vbWF4bm9kZXMuYyAgICAgfCAxNSArKysr KysrKysKIHRvb2xzL2dvbGFuZy94ZW5saWdodC90ZXN0L3hlbmluZm8vbWF4bm9kZXMuZ28gICAg fCAyNCArKysrKysrKysrKysrCiB0b29scy9nb2xhbmcveGVubGlnaHQvdGVzdC94ZW5pbmZvL29u bGluZWNwdS5jICAgIHwgMTggKysrKysrKysrKwogdG9vbHMvZ29sYW5nL3hlbmxpZ2h0L3Rlc3Qv eGVuaW5mby9vbmxpbmVjcHUuZ28gICB8IDI0ICsrKysrKysrKysrKysKIHRvb2xzL2dvbGFuZy94 ZW5saWdodC90ZXN0L3hlbmluZm8vcGh5c2luZm8uYyAgICAgfCAzMiArKysrKysrKysrKysrKysr KysKIHRvb2xzL2dvbGFuZy94ZW5saWdodC90ZXN0L3hlbmluZm8vcGh5c2luZm8uZ28gICAgfCAz MiArKysrKysrKysrKysrKysrKysKIHRvb2xzL2dvbGFuZy94ZW5saWdodC90ZXN0L3hlbmluZm8v cHJpbnQuaCAgICAgICAgfCAyMiArKysrKysrKysrKysKIHRvb2xzL2dvbGFuZy94ZW5saWdodC90 ZXN0L3hlbmluZm8vdmVyc2lvbmluZm8uYyAgfCAyMiArKysrKysrKysrKysKIHRvb2xzL2dvbGFu Zy94ZW5saWdodC90ZXN0L3hlbmluZm8vdmVyc2lvbmluZm8uZ28gfCAyOCArKysrKysrKysrKysr KysrCiB0b29scy9nb2xhbmcveGVubGlnaHQvdGVzdC94ZW5pbmZvL3hlbmxpZ2h0LmdvICAgIHwg IDEgKwogMTcgZmlsZXMgY2hhbmdlZCwgNDE2IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEw MDY0NCB0b29scy9nb2xhbmcveGVubGlnaHQvdGVzdC94ZW5pbmZvL01ha2VmaWxlCiBjcmVhdGUg bW9kZSAxMDA2NDQgdG9vbHMvZ29sYW5nL3hlbmxpZ2h0L3Rlc3QveGVuaW5mby9kb21pbmZvLmMK IGNyZWF0ZSBtb2RlIDEwMDY0NCB0b29scy9nb2xhbmcveGVubGlnaHQvdGVzdC94ZW5pbmZvL2Rv bWluZm8uZ28KIGNyZWF0ZSBtb2RlIDEwMDY0NCB0b29scy9nb2xhbmcveGVubGlnaHQvdGVzdC94 ZW5pbmZvL2ZyZWVtZW1vcnkuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHRvb2xzL2dvbGFuZy94ZW5s aWdodC90ZXN0L3hlbmluZm8vZnJlZW1lbW9yeS5nbwogY3JlYXRlIG1vZGUgMTAwNjQ0IHRvb2xz L2dvbGFuZy94ZW5saWdodC90ZXN0L3hlbmluZm8vbWF4Y3B1LmMKIGNyZWF0ZSBtb2RlIDEwMDY0 NCB0b29scy9nb2xhbmcveGVubGlnaHQvdGVzdC94ZW5pbmZvL21heGNwdS5nbwogY3JlYXRlIG1v ZGUgMTAwNjQ0IHRvb2xzL2dvbGFuZy94ZW5saWdodC90ZXN0L3hlbmluZm8vbWF4bm9kZXMuYwog Y3JlYXRlIG1vZGUgMTAwNjQ0IHRvb2xzL2dvbGFuZy94ZW5saWdodC90ZXN0L3hlbmluZm8vbWF4 bm9kZXMuZ28KIGNyZWF0ZSBtb2RlIDEwMDY0NCB0b29scy9nb2xhbmcveGVubGlnaHQvdGVzdC94 ZW5pbmZvL29ubGluZWNwdS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgdG9vbHMvZ29sYW5nL3hlbmxp Z2h0L3Rlc3QveGVuaW5mby9vbmxpbmVjcHUuZ28KIGNyZWF0ZSBtb2RlIDEwMDY0NCB0b29scy9n b2xhbmcveGVubGlnaHQvdGVzdC94ZW5pbmZvL3BoeXNpbmZvLmMKIGNyZWF0ZSBtb2RlIDEwMDY0 NCB0b29scy9nb2xhbmcveGVubGlnaHQvdGVzdC94ZW5pbmZvL3BoeXNpbmZvLmdvCiBjcmVhdGUg bW9kZSAxMDA2NDQgdG9vbHMvZ29sYW5nL3hlbmxpZ2h0L3Rlc3QveGVuaW5mby9wcmludC5oCiBj cmVhdGUgbW9kZSAxMDA2NDQgdG9vbHMvZ29sYW5nL3hlbmxpZ2h0L3Rlc3QveGVuaW5mby92ZXJz aW9uaW5mby5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgdG9vbHMvZ29sYW5nL3hlbmxpZ2h0L3Rlc3Qv eGVuaW5mby92ZXJzaW9uaW5mby5nbwogY3JlYXRlIG1vZGUgMTIwMDAwIHRvb2xzL2dvbGFuZy94 ZW5saWdodC90ZXN0L3hlbmluZm8veGVubGlnaHQuZ28KCmRpZmYgLS1naXQgYS90b29scy9nb2xh bmcveGVubGlnaHQvdGVzdC94ZW5pbmZvL01ha2VmaWxlIGIvdG9vbHMvZ29sYW5nL3hlbmxpZ2h0 L3Rlc3QveGVuaW5mby9NYWtlZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li5hYWU1NTQ0Ci0tLSAvZGV2L251bGwKKysrIGIvdG9vbHMvZ29sYW5nL3hlbmxpZ2h0L3Rlc3Qv eGVuaW5mby9NYWtlZmlsZQpAQCAtMCwwICsxLDQxIEBACitYRU5fUk9PVCA9ICQoQ1VSRElSKS8u Li8uLi8uLi8uLi8uLgoraW5jbHVkZSAkKFhFTl9ST09UKS90b29scy9SdWxlcy5taworCitHTyA/ PSBnbworCitURVNUUyA9IGRvbWluZm8gZnJlZW1lbW9yeSBtYXhjcHUgb25saW5lY3B1IHBoeXNp bmZvIHZlcnNpb25pbmZvCitDQklOQVJJRVMgPSAkKFRFU1RTOiU9JS1jKQorR09CSU5BUklFUyA9 ICQoVEVTVFM6JT0lLWdvKQorCitDRkxBR1MgKz0gLVdlcnJvcgorQ0ZMQUdTICs9ICQoQ0ZMQUdT X2xpYnhlbnRvb2xsb2cpCitDRkxBR1MgKz0gJChDRkxBR1NfbGlieGVubGlnaHQpCisKK0xETElC UyArPSAkKExETElCU19saWJ4ZW50b29sbG9nKQorTERMSUJTICs9ICQoTERMSUJTX2xpYnhlbmxp Z2h0KQorCithbGw6IGJ1aWxkCisKK3Rlc3Q6IGNsZWFuIGJ1aWxkCisJZm9yIHRlc3QgaW4gJChU RVNUUykgOyBkbyBcCisJCS4vJCR0ZXN0LWMgPj4gYy5vdXRwdXQgOyBcCisJICAgICAgICAuLyQk dGVzdC1nbyA+PiBnby5vdXRwdXQgOyBcCisJCWlmIGNtcCAtcyAiYy5vdXRwdXQiICJnby5vdXRw dXQiOyB0aGVuXAorCQkJZWNobyAiJCR0ZXN0IFBBU1NFRCI7XAorCQllbHNlIFwKKwkJCWVjaG8g IiQkdGVzdCBGQUlMRUQiO1wKKwkJZmkgOyBcCisJZG9uZQorCitidWlsZDogJChDQklOQVJJRVMp ICQoR09CSU5BUklFUykKKworJS1jOiAlLmMKKwlnY2MgJChDRkxBR1MpIC1vICRAICQ8ICQoTERM SUJTKQorCislLWdvOiAlLmdvCisJR09QQVRIPSQoWEVOX1JPT1QpL3Rvb2xzL2dvbGFuZyAkKEdP KSBidWlsZCAtbyAkQCAkPAorCitjbGVhbjoKKwlybSAtZiAqLWMKKwlybSAtZiAqLWdvCisJcm0g LWYgKi5vdXRwdXQKZGlmZiAtLWdpdCBhL3Rvb2xzL2dvbGFuZy94ZW5saWdodC90ZXN0L3hlbmlu Zm8vZG9taW5mby5jIGIvdG9vbHMvZ29sYW5nL3hlbmxpZ2h0L3Rlc3QveGVuaW5mby9kb21pbmZv LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmM2MzU4MwotLS0gL2Rldi9u dWxsCisrKyBiL3Rvb2xzL2dvbGFuZy94ZW5saWdodC90ZXN0L3hlbmluZm8vZG9taW5mby5jCkBA IC0wLDAgKzEsMzMgQEAKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgor I2luY2x1ZGUgPGxpYnhsLmg+CisjaW5jbHVkZSAicHJpbnQuaCIKKworaW50IG1haW4odm9pZCl7 CisKKyAgICBsaWJ4bF9jdHggKmNvbnRleHQ7CisgICAgbGlieGxfZG9taW5mbyBpbmZvOworICAg IGludCBlcnI7CisgICAgbG9uZyBjcHVfdGltZTsKKyAgICBjb250ZXh0ID0gY3JlYXRlX2NvbnRl eHQoKTsKKyAgICBsaWJ4bF9kb21pbmZvX2luaXQoJmluZm8pOworICAgIGVyciA9IGxpYnhsX2Rv bWFpbl9pbmZvKGNvbnRleHQsICZpbmZvLCAwKTsKKyAgICBpZiAoZXJyICE9IDApCisgICAgICAg IHJldHVybiBlcnI7CisgICAgCisgICAgcHJpbnRmKCIlZFxuJWRcbiIsIGluZm8uZG9taWQsIGlu Zm8uc3NpZHJlZik7CisgICAgcHJpbnRmKCIlc1xuJXNcbiVzXG4lc1xuJXNcbiVzXG4iLCBib29s X3RvX3N0cmluZyhpbmZvLnJ1bm5pbmcpLCAKKyAgICAgICAgICAgIGJvb2xfdG9fc3RyaW5nKGlu Zm8uYmxvY2tlZCksIGJvb2xfdG9fc3RyaW5nKGluZm8ucGF1c2VkKSwKKyAgICAgICAgICAgIGJv b2xfdG9fc3RyaW5nKGluZm8uc2h1dGRvd24pLCBib29sX3RvX3N0cmluZyhpbmZvLmR5aW5nKSwg CisgICAgICAgICAgICBib29sX3RvX3N0cmluZyhpbmZvLm5ldmVyX3N0b3ApKTsKKyAgICBjcHVf dGltZSA9IGluZm8uY3B1X3RpbWUgLyAoKGxvbmcpIDE8PDM1KTsKKyAgICBwcmludGYoIiVkXG4l bHVcbiVsdVxuJWx1XG4lbHVcbiVsdVxuJWx1XG4lZFxuJWRcbiVkXG4iLAorICAgICAgICAgICAg aW5mby5zaHV0ZG93bl9yZWFzb24sIAorICAgICAgICAgICAgaW5mby5vdXRzdGFuZGluZ19tZW1r YiwgaW5mby5jdXJyZW50X21lbWtiLCBpbmZvLnNoYXJlZF9tZW1rYiwgCisgICAgICAgICAgICBp bmZvLnBhZ2VkX21lbWtiLCBpbmZvLm1heF9tZW1rYiwgY3B1X3RpbWUsIGluZm8udmNwdV9tYXhf aWQsIAorICAgICAgICAgICAgaW5mby52Y3B1X29ubGluZSwgaW5mby5jcHVwb29sKTsKKyAgICBw cmludGYoIiVkXG4iLCBpbmZvLmRvbWFpbl90eXBlKTsKKworICAgIGRlc3Ryb3lfY29udGV4dChj b250ZXh0KTsKKworfQpkaWZmIC0tZ2l0IGEvdG9vbHMvZ29sYW5nL3hlbmxpZ2h0L3Rlc3QveGVu aW5mby9kb21pbmZvLmdvIGIvdG9vbHMvZ29sYW5nL3hlbmxpZ2h0L3Rlc3QveGVuaW5mby9kb21p bmZvLmdvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJiOTI1N2IKLS0tIC9k ZXYvbnVsbAorKysgYi90b29scy9nb2xhbmcveGVubGlnaHQvdGVzdC94ZW5pbmZvL2RvbWluZm8u Z28KQEAgLTAsMCArMSwzMSBAQAorcGFja2FnZSBtYWluCisKK2ltcG9ydCAoCisJImZtdCIKKwki b3MiCisJInhlbnByb2plY3Qub3JnL3hlbmxpZ2h0IgorKQorCitmdW5jIG1haW4oKSB7CisJY3R4 IDo9IHhlbmxpZ2h0LkN0eAorCWVyciA6PSBjdHguT3BlbigpCisJaWYgZXJyICE9IG5pbCB7CisJ CW9zLkV4aXQoLTEpCisJfQorCWRlZmVyIGN0eC5DbG9zZSgpCisJaW5mbywgZXJyIDo9IGN0eC5E b21haW5JbmZvKDApCisJaWYgZXJyICE9IG5pbCB7CisJCW9zLkV4aXQoLTEpCisJfQorCisJZm10 LlByaW50ZigiJWRcbiVkXG4iLCBpbmZvLkRvbWlkLCBpbmZvLlNzaWRyZWYpCisJLy9mbXQuUHJp bnRmKCIlc1xuIiwgaW5mby5Tc2lkTGFiZWwpCisJZm10LlByaW50ZigiJXRcbiV0XG4ldFxuJXRc biV0XG4ldFxuIiwgaW5mby5SdW5uaW5nLAorCQlpbmZvLkJsb2NrZWQsIGluZm8uUGF1c2VkLCBp bmZvLlNodXRkb3duLCBpbmZvLkR5aW5nLCBpbmZvLk5ldmVyU3RvcCkKKwljcHVUaW1lIDo9IGlu Zm8uQ3B1VGltZSAvICgxIDw8IDM1KQorCWZtdC5QcmludGYoIiVkXG4lZFxuJWRcbiVkXG4lZFxu JWRcbiVkXG4lZFxuJWRcbiVkXG4iLCBpbmZvLlNodXRkb3duUmVhc29uLCBpbmZvLk91dHN0YW5k aW5nTWVta2IsCisJCWluZm8uQ3VycmVudE1lbWtiLCBpbmZvLlNoYXJlZE1lbWtiLCBpbmZvLlBh Z2VkTWVta2IsIGluZm8uTWF4TWVta2IsIGNwdVRpbWUsCisJCWluZm8uVmNwdU1heElkLCBpbmZv LlZjcHVPbmxpbmUsIGluZm8uQ3B1cG9vbCkKKwlmbXQuUHJpbnRmKCIlZFxuIiwgaW5mby5Eb21h aW5UeXBlKQorCit9CmRpZmYgLS1naXQgYS90b29scy9nb2xhbmcveGVubGlnaHQvdGVzdC94ZW5p bmZvL2ZyZWVtZW1vcnkuYyBiL3Rvb2xzL2dvbGFuZy94ZW5saWdodC90ZXN0L3hlbmluZm8vZnJl ZW1lbW9yeS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmY2FhMWYKLS0t IC9kZXYvbnVsbAorKysgYi90b29scy9nb2xhbmcveGVubGlnaHQvdGVzdC94ZW5pbmZvL2ZyZWVt ZW1vcnkuYwpAQCAtMCwwICsxLDI2IEBACisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxz dGRsaWIuaD4KKyNpbmNsdWRlIDxsaWJ4bC5oPgorI2luY2x1ZGUgInByaW50LmgiCisKK2ludCBt YWluKHZvaWQpeworCisgICAgbGlieGxfY3R4ICpjb250ZXh0OworICAgIHVpbnQ2NF90IGZyZWVf bWVtb3J5OworICAgIGludCBlcnI7CisKKyAgICBjb250ZXh0ID0gY3JlYXRlX2NvbnRleHQoKTsK KworICAgIGVyciA9IGxpYnhsX2dldF9mcmVlX21lbW9yeShjb250ZXh0LCAmZnJlZV9tZW1vcnkp OworICAgIGlmIChlcnIgPCAwKQorICAgIHsKKyAgICAgICAgcHJpbnRmKCIlZFxuIiwgZXJyKTsK KyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgcHJpbnRmKCIlbHVcbiIsIGZyZWVfbWVt b3J5KTsKKyAgICB9CisgICAgZGVzdHJveV9jb250ZXh0KGNvbnRleHQpOworCit9CisKZGlmZiAt LWdpdCBhL3Rvb2xzL2dvbGFuZy94ZW5saWdodC90ZXN0L3hlbmluZm8vZnJlZW1lbW9yeS5nbyBi L3Rvb2xzL2dvbGFuZy94ZW5saWdodC90ZXN0L3hlbmluZm8vZnJlZW1lbW9yeS5nbwpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNzUyYmQzCi0tLSAvZGV2L251bGwKKysrIGIv dG9vbHMvZ29sYW5nL3hlbmxpZ2h0L3Rlc3QveGVuaW5mby9mcmVlbWVtb3J5LmdvCkBAIC0wLDAg KzEsMjUgQEAKK3BhY2thZ2UgbWFpbgorCitpbXBvcnQgKAorCSJmbXQiCisJIm9zIgorCSJ4ZW5w cm9qZWN0Lm9yZy94ZW5saWdodCIKKykKKworZnVuYyBtYWluKCkgeworCWN0eCA6PSB4ZW5saWdo dC5DdHgKKwllcnIgOj0gY3R4Lk9wZW4oKQorCWlmIGVyciAhPSBuaWwgeworCQlvcy5FeGl0KC0x KQorCX0KKworCWRlZmVyIGN0eC5DbG9zZSgpCisKKwlmcmVlX21lbW9yeSwgZXJyIDo9IGN0eC5H ZXRGcmVlTWVtb3J5KCkKKwlpZiBlcnIgIT0gbmlsIHsKKwkJZm10LlByaW50ZigiLSVkXG4iLCBl cnIpCisJfSBlbHNlIHsKKwkJZm10LlByaW50ZigiJWRcbiIsIGZyZWVfbWVtb3J5KQorCX0KKwor fQpkaWZmIC0tZ2l0IGEvdG9vbHMvZ29sYW5nL3hlbmxpZ2h0L3Rlc3QveGVuaW5mby9tYXhjcHUu YyBiL3Rvb2xzL2dvbGFuZy94ZW5saWdodC90ZXN0L3hlbmluZm8vbWF4Y3B1LmMKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTU3YmRiMgotLS0gL2Rldi9udWxsCisrKyBiL3Rv b2xzL2dvbGFuZy94ZW5saWdodC90ZXN0L3hlbmluZm8vbWF4Y3B1LmMKQEAgLTAsMCArMSwxOCBA QAorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8bGli eGwuaD4KKyNpbmNsdWRlICJwcmludC5oIgorCitpbnQgbWFpbih2b2lkKXsKKworICAgIGxpYnhs X2N0eCAqY29udGV4dDsKKyAgICBpbnQgbWF4X2NwdXM7CisKKyAgICBjb250ZXh0ID0gY3JlYXRl X2NvbnRleHQoKTsKKyAgICBtYXhfY3B1cyA9IGxpYnhsX2dldF9tYXhfY3B1cyhjb250ZXh0KTsK KyAgICBwcmludGYoIiVkXG4iLCBtYXhfY3B1cyk7CisKKyAgICBkZXN0cm95X2NvbnRleHQoY29u dGV4dCk7CisKK30KKwpkaWZmIC0tZ2l0IGEvdG9vbHMvZ29sYW5nL3hlbmxpZ2h0L3Rlc3QveGVu aW5mby9tYXhjcHUuZ28gYi90b29scy9nb2xhbmcveGVubGlnaHQvdGVzdC94ZW5pbmZvL21heGNw dS5nbwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MmNkOTNkCi0tLSAvZGV2 L251bGwKKysrIGIvdG9vbHMvZ29sYW5nL3hlbmxpZ2h0L3Rlc3QveGVuaW5mby9tYXhjcHUuZ28K QEAgLTAsMCArMSwyNCBAQAorcGFja2FnZSBtYWluCisKK2ltcG9ydCAoCisJImZtdCIKKwkib3Mi CisJInhlbnByb2plY3Qub3JnL3hlbmxpZ2h0IgorKQorCitmdW5jIG1haW4oKSB7CisJY3R4IDo9 IHhlbmxpZ2h0LkN0eAorCWVyciA6PSBjdHguT3BlbigpCisJaWYgZXJyICE9IG5pbCB7CisJCW9z LkV4aXQoLTEpCisJfQorCWRlZmVyIGN0eC5DbG9zZSgpCisKKwltYXhfY3B1cywgZXJyIDo9IGN0 eC5HZXRNYXhDcHVzKCkKKwlpZiBlcnIgIT0gbmlsIHsKKwkJZm10LlByaW50ZigiJWRcbiIsIGVy cikKKwl9IGVsc2UgeworCQlmbXQuUHJpbnRmKCIlZFxuIiwgbWF4X2NwdXMpCisJfQorCit9CmRp ZmYgLS1naXQgYS90b29scy9nb2xhbmcveGVubGlnaHQvdGVzdC94ZW5pbmZvL21heG5vZGVzLmMg Yi90b29scy9nb2xhbmcveGVubGlnaHQvdGVzdC94ZW5pbmZvL21heG5vZGVzLmMKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTA3MmMzZQotLS0gL2Rldi9udWxsCisrKyBiL3Rv b2xzL2dvbGFuZy94ZW5saWdodC90ZXN0L3hlbmluZm8vbWF4bm9kZXMuYwpAQCAtMCwwICsxLDE1 IEBACisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxs aWJ4bC5oPgorCitpbnQgbWFpbigpeworCisgICAgbGlieGxfY3R4ICpjb250ZXh0OworICAgIGNv bnRleHQgPSBjcmVhdGVfY29udGV4dCgpOworCisgICAgaW50IG1heF9ub2RlcyA9IGxpYnhsX2dl dF9tYXhfbm9kZXMoY29udGV4dCk7CisgICAgcHJpbnRmKCIlZFxuIiwgbWF4X25vZGVzKTsKKwor ICAgIGRlc3Ryb3lfY29udGV4dChjb250ZXh0KTsKK30KKwpkaWZmIC0tZ2l0IGEvdG9vbHMvZ29s YW5nL3hlbmxpZ2h0L3Rlc3QveGVuaW5mby9tYXhub2Rlcy5nbyBiL3Rvb2xzL2dvbGFuZy94ZW5s aWdodC90ZXN0L3hlbmluZm8vbWF4bm9kZXMuZ28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uZGE5YjQ5NQotLS0gL2Rldi9udWxsCisrKyBiL3Rvb2xzL2dvbGFuZy94ZW5saWdo dC90ZXN0L3hlbmluZm8vbWF4bm9kZXMuZ28KQEAgLTAsMCArMSwyNCBAQAorcGFja2FnZSBtYWlu CisKK2ltcG9ydCAoCisJImZtdCIKKwkib3MiCisJInhlbnByb2plY3Qub3JnL3hlbmxpZ2h0Igor KQorCitmdW5jIG1haW4oKSB7CisJY3R4IDo9IHhlbmxpZ2h0LkN0eAorCWVyciA6PSBjdHguT3Bl bigpCisJaWYgZXJyICE9IG5pbCB7CisJCW9zLkV4aXQoLTEpCisJfQorCWRlZmVyIGN0eC5DbG9z ZSgpCisKKwltYXhfbm9kZXMsIGVyciA6PSBjdHguR2V0TWF4Tm9kZXMoKQorCWlmIGVyciAhPSBu aWwgeworCQlmbXQuUHJpbnRmKCIlZFxuIiwgZXJyKQorCX0gZWxzZSB7CisJCWZtdC5QcmludGYo IiVkXG4iLCBtYXhfbm9kZXMpCisJfQorCit9CmRpZmYgLS1naXQgYS90b29scy9nb2xhbmcveGVu bGlnaHQvdGVzdC94ZW5pbmZvL29ubGluZWNwdS5jIGIvdG9vbHMvZ29sYW5nL3hlbmxpZ2h0L3Rl c3QveGVuaW5mby9vbmxpbmVjcHUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li40NjkzOWQ2Ci0tLSAvZGV2L251bGwKKysrIGIvdG9vbHMvZ29sYW5nL3hlbmxpZ2h0L3Rlc3Qv eGVuaW5mby9vbmxpbmVjcHUuYwpAQCAtMCwwICsxLDE4IEBACisjaW5jbHVkZSA8c3RkaW8uaD4K KyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxsaWJ4bC5oPgorI2luY2x1ZGUgInByaW50 LmgiCisKK2ludCBtYWluKHZvaWQpeworCisgICAgbGlieGxfY3R4ICpjb250ZXh0OworICAgIGlu dCBvbmxpbmVfY3B1czsKKyAgICBjb250ZXh0ID0gY3JlYXRlX2NvbnRleHQoKTsKKworICAgIG9u bGluZV9jcHVzID0gbGlieGxfZ2V0X29ubGluZV9jcHVzKGNvbnRleHQpOworICAgIHByaW50Zigi JWRcbiIsIG9ubGluZV9jcHVzKTsKKworICAgIGRlc3Ryb3lfY29udGV4dChjb250ZXh0KTsKKwor fQorCmRpZmYgLS1naXQgYS90b29scy9nb2xhbmcveGVubGlnaHQvdGVzdC94ZW5pbmZvL29ubGlu ZWNwdS5nbyBiL3Rvb2xzL2dvbGFuZy94ZW5saWdodC90ZXN0L3hlbmluZm8vb25saW5lY3B1Lmdv Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI2ZDFkYTcKLS0tIC9kZXYvbnVs bAorKysgYi90b29scy9nb2xhbmcveGVubGlnaHQvdGVzdC94ZW5pbmZvL29ubGluZWNwdS5nbwpA QCAtMCwwICsxLDI0IEBACitwYWNrYWdlIG1haW4KKworaW1wb3J0ICgKKwkiZm10IgorCSJvcyIK KwkieGVucHJvamVjdC5vcmcveGVubGlnaHQiCispCisKK2Z1bmMgbWFpbigpIHsKKwljdHggOj0g eGVubGlnaHQuQ3R4CisJZXJyIDo9IGN0eC5PcGVuKCkKKwlpZiBlcnIgIT0gbmlsIHsKKwkJb3Mu RXhpdCgtMSkKKwl9CisJZGVmZXIgY3R4LkNsb3NlKCkKKworCW9ubGluZV9jcHVzLCBlcnIgOj0g Y3R4LkdldE9ubGluZUNwdXMoKQorCWlmIGVyciAhPSBuaWwgeworCQlmbXQuUHJpbnRmKCIlZFxu IiwgZXJyKQorCX0gZWxzZSB7CisJCWZtdC5QcmludGYoIiVkXG4iLCBvbmxpbmVfY3B1cykKKwl9 CisKK30KZGlmZiAtLWdpdCBhL3Rvb2xzL2dvbGFuZy94ZW5saWdodC90ZXN0L3hlbmluZm8vcGh5 c2luZm8uYyBiL3Rvb2xzL2dvbGFuZy94ZW5saWdodC90ZXN0L3hlbmluZm8vcGh5c2luZm8uYwpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NDFhNzMwCi0tLSAvZGV2L251bGwK KysrIGIvdG9vbHMvZ29sYW5nL3hlbmxpZ2h0L3Rlc3QveGVuaW5mby9waHlzaW5mby5jCkBAIC0w LDAgKzEsMzIgQEAKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2lu Y2x1ZGUgPGxpYnhsLmg+CisjaW5jbHVkZSAicHJpbnQuaCIKKworaW50IG1haW4odm9pZCl7CisK KyAgICBsaWJ4bF9jdHggKmNvbnRleHQ7CisgICAgbGlieGxfcGh5c2luZm8gaW5mbzsKKyAgICBp bnQgZXJyOworICAgIGludCBpOworICAgIGNvbnRleHQgPSBjcmVhdGVfY29udGV4dCgpOworICAg IGxpYnhsX3BoeXNpbmZvX2luaXQoJmluZm8pOworICAgIGVycj0gbGlieGxfZ2V0X3BoeXNpbmZv KGNvbnRleHQsJmluZm8pOworICAgIGlmKGVyciAhPSAwKXsKKyAgICAgICAgcmV0dXJuIGVycjsK KyAgICB9CisKKyAgICBwcmludGYoIiVkXG4lZFxuJWRcbiVkXG4lZFxuIiwgaW5mby50aHJlYWRz X3Blcl9jb3JlLCBpbmZvLmNvcmVzX3Blcl9zb2NrZXQsIGluZm8ubWF4X2NwdV9pZCwgaW5mby5u cl9jcHVzLCBpbmZvLmNwdV9raHopOworICAgIHByaW50ZigiJWx1XG4lbHVcbiVsdVxuJWx1XG4l bHVcbiVsdVxuIiwgaW5mby50b3RhbF9wYWdlcywgaW5mby5mcmVlX3BhZ2VzLCBpbmZvLnNjcnVi X3BhZ2VzLCBpbmZvLm91dHN0YW5kaW5nX3BhZ2VzLCBpbmZvLnNoYXJpbmdfZnJlZWRfcGFnZXMs IGluZm8uc2hhcmluZ191c2VkX2ZyYW1lcyk7CisgICAgcHJpbnRmKCIldVxuIixpbmZvLm5yX25v ZGVzKTsKKyAgICBwcmludGYoIiVzXG4lc1xuIiwgYm9vbF90b19zdHJpbmcoaW5mby5jYXBfaHZt KSwgYm9vbF90b19zdHJpbmcoaW5mby5jYXBfaHZtX2RpcmVjdGlvKSk7CisKKyAgICBmb3IoaSA9 IDA7IGkgPCA4OyBpKyspeworICAgICAgICBwcmludGYoIiV1XG4iLCBpbmZvLmh3X2NhcFtpXSk7 CisgICAgfQorCisgICAgbGlieGxfcGh5c2luZm9faW5pdCgmaW5mbyk7CisgICAgZGVzdHJveV9j b250ZXh0KGNvbnRleHQpOworCit9CisKZGlmZiAtLWdpdCBhL3Rvb2xzL2dvbGFuZy94ZW5saWdo dC90ZXN0L3hlbmluZm8vcGh5c2luZm8uZ28gYi90b29scy9nb2xhbmcveGVubGlnaHQvdGVzdC94 ZW5pbmZvL3BoeXNpbmZvLmdvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNm N2JkZDQKLS0tIC9kZXYvbnVsbAorKysgYi90b29scy9nb2xhbmcveGVubGlnaHQvdGVzdC94ZW5p bmZvL3BoeXNpbmZvLmdvCkBAIC0wLDAgKzEsMzIgQEAKK3BhY2thZ2UgbWFpbgorCitpbXBvcnQg KAorCSJmbXQiCisJIm9zIgorCSJ4ZW5wcm9qZWN0Lm9yZy94ZW5saWdodCIKKykKKworZnVuYyBt YWluKCkgeworCWN0eCA6PSB4ZW5saWdodC5DdHgKKwllcnIgOj0gY3R4Lk9wZW4oKQorCWlmIGVy ciAhPSBuaWwgeworCQlvcy5FeGl0KC0xKQorCX0KKwlkZWZlciBjdHguQ2xvc2UoKQorCWluZm8s IGVyciA6PSBjdHguR2V0UGh5c2luZm8oKQorCWlmIGVyciAhPSBuaWwgeworCQlvcy5FeGl0KC0x KQorCX0KKworCWZtdC5QcmludGYoIiVkXG4lZFxuJWRcbiVkXG4lZFxuIiwgaW5mby5UaHJlYWRz UGVyQ29yZSwgaW5mby5Db3Jlc1BlclNvY2tldCwKKwkJaW5mby5NYXhDcHVJZCwgaW5mby5OckNw dXMsIGluZm8uQ3B1S2h6KQorCWZtdC5QcmludGYoIiVkXG4lZFxuJWRcbiVkXG4lZFxuJWRcbiIs IGluZm8uVG90YWxQYWdlcywgaW5mby5GcmVlUGFnZXMsCisJCWluZm8uU2NydWJQYWdlcywgaW5m by5PdXRzdGFuZGluZ1BhZ2VzLCBpbmZvLlNoYXJpbmdGcmVlZFBhZ2VzLAorCQlpbmZvLlNoYXJp bmdVc2VkRnJhbWVzKQorCWZtdC5QcmludGYoIiVkXG4iLCBpbmZvLk5yTm9kZXMpCisJZm10LlBy aW50ZigiJXRcbiV0XG4iLCBpbmZvLkNhcEh2bSwgaW5mby5DYXBIdm1EaXJlY3RpbykKKworCWZv ciBpIDo9IDA7IGkgPCA4OyBpKysgeworCQlmbXQuUHJpbnRmKCIlZFxuIiwgaW5mby5Id0NhcFtp XSkKKwl9Cit9CmRpZmYgLS1naXQgYS90b29scy9nb2xhbmcveGVubGlnaHQvdGVzdC94ZW5pbmZv L3ByaW50LmggYi90b29scy9nb2xhbmcveGVubGlnaHQvdGVzdC94ZW5pbmZvL3ByaW50LmgKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGQ2Yzk4NwotLS0gL2Rldi9udWxsCisr KyBiL3Rvb2xzL2dvbGFuZy94ZW5saWdodC90ZXN0L3hlbmluZm8vcHJpbnQuaApAQCAtMCwwICsx LDIyIEBACit4ZW50b29sbG9nX2xvZ2dlcl9zdGRpb3N0cmVhbSAqbG9nZ2VyOworCitzdGF0aWMg aW5saW5lIGNoYXIgKmJvb2xfdG9fc3RyaW5nKGJvb2wgYSl7CisgICAgcmV0dXJuIChhID8gInRy dWUiIDogImZhbHNlIik7Cit9CisKK3N0YXRpYyBpbmxpbmUgbGlieGxfY3R4ICpjcmVhdGVfY29u dGV4dCh2b2lkKXsKKyAgICBsaWJ4bF9jdHggKmNvbnRleHQ7CisgICAgbG9nZ2VyID0geHRsX2Ny ZWF0ZWxvZ2dlcl9zdGRpb3N0cmVhbShzdGRlcnIsCisgICAgICAgICAgICBYVExfRVJST1IsIDAp OworICAgIGxpYnhsX2N0eF9hbGxvYygmY29udGV4dCwgTElCWExfVkVSU0lPTiwgMCAsICh4ZW50 b29sbG9nX2xvZ2dlciopbG9nZ2VyKTsKKyAgICByZXR1cm4gY29udGV4dDsKK30KKworc3RhdGlj IGlubGluZSBpbnQgZGVzdHJveV9jb250ZXh0KGxpYnhsX2N0eCAqY29udGV4dCl7CisgICAgaW50 IGVyciA9IGxpYnhsX2N0eF9mcmVlKGNvbnRleHQpOworICAgIGlmIChlcnIgIT0gMCkKKyAgICAg ICAgcmV0dXJuIGVycjsKKyAgICB4dGxfbG9nZ2VyX2Rlc3Ryb3koKHhlbnRvb2xsb2dfbG9nZ2Vy Kilsb2dnZXIpOworICAgIHJldHVybiBlcnI7CisKK30KZGlmZiAtLWdpdCBhL3Rvb2xzL2dvbGFu Zy94ZW5saWdodC90ZXN0L3hlbmluZm8vdmVyc2lvbmluZm8uYyBiL3Rvb2xzL2dvbGFuZy94ZW5s aWdodC90ZXN0L3hlbmluZm8vdmVyc2lvbmluZm8uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi4xMTNiY2VhCi0tLSAvZGV2L251bGwKKysrIGIvdG9vbHMvZ29sYW5nL3hlbmxp Z2h0L3Rlc3QveGVuaW5mby92ZXJzaW9uaW5mby5jCkBAIC0wLDAgKzEsMjIgQEAKKyNpbmNsdWRl IDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPGxpYnhsLmg+CisjaW5j bHVkZSAicHJpbnQuaCIKKworaW50IG1haW4odm9pZCl7CisKKyAgICBsaWJ4bF9jdHggKmNvbnRl eHQ7CisgICAgY29uc3QgbGlieGxfdmVyc2lvbl9pbmZvICogaW5mbzsKKyAgICBjb250ZXh0ID0g Y3JlYXRlX2NvbnRleHQoKTsKKyAgICBpbmZvID0gbGlieGxfZ2V0X3ZlcnNpb25faW5mbyhjb250 ZXh0KTsKKworICAgIHByaW50ZigiJWRcbiVkXG4iLCBpbmZvLT54ZW5fdmVyc2lvbl9tYWpvciwg aW5mby0+eGVuX3ZlcnNpb25fbWlub3IpOworICAgIHByaW50ZigiJXNcbiVzXG4lc1xuJXNcbiVz XG4lc1xuJXNcbiIsIGluZm8tPnhlbl92ZXJzaW9uX2V4dHJhLCBpbmZvLT5jb21waWxlciwgCisJ CSAgICBpbmZvLT5jb21waWxlX2J5LCBpbmZvLT5jb21waWxlX2RvbWFpbiwgaW5mby0+Y29tcGls ZV9kYXRlLCAKKwkJICAgIGluZm8tPmNhcGFiaWxpdGllcywgaW5mby0+Y2hhbmdlc2V0KTsKKyAg ICBwcmludGYoIiVsdVxuJWRcbiIsIGluZm8tPnZpcnRfc3RhcnQsIGluZm8tPnBhZ2VzaXplKTsK KyAgICBwcmludGYoIiVzXG4lc1xuIiwgaW5mby0+Y29tbWFuZGxpbmUsIGluZm8tPmJ1aWxkX2lk KTsKKworICAgIGRlc3Ryb3lfY29udGV4dChjb250ZXh0KTsKKworfQpkaWZmIC0tZ2l0IGEvdG9v bHMvZ29sYW5nL3hlbmxpZ2h0L3Rlc3QveGVuaW5mby92ZXJzaW9uaW5mby5nbyBiL3Rvb2xzL2dv bGFuZy94ZW5saWdodC90ZXN0L3hlbmluZm8vdmVyc2lvbmluZm8uZ28KbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uNTU0NTQ3MgotLS0gL2Rldi9udWxsCisrKyBiL3Rvb2xzL2dv bGFuZy94ZW5saWdodC90ZXN0L3hlbmluZm8vdmVyc2lvbmluZm8uZ28KQEAgLTAsMCArMSwyOCBA QAorcGFja2FnZSBtYWluCisKK2ltcG9ydCAoCisJImZtdCIKKwkib3MiCisJInhlbnByb2plY3Qu b3JnL3hlbmxpZ2h0IgorKQorCitmdW5jIG1haW4oKSB7CisJY3R4IDo9IHhlbmxpZ2h0LkN0eAor CWVyciA6PSBjdHguT3BlbigpCisJaWYgZXJyICE9IG5pbCB7CisJCW9zLkV4aXQoLTEpCisJfQor CWRlZmVyIGN0eC5DbG9zZSgpCisJaW5mbywgZXJyIDo9IGN0eC5HZXRWZXJzaW9uSW5mbygpCisJ aWYgZXJyICE9IG5pbCB7CisJCW9zLkV4aXQoLTEpCisJfQorCisJZm10LlByaW50ZigiJWRcbiVk XG4iLCBpbmZvLlhlblZlcnNpb25NYWpvciwgaW5mby5YZW5WZXJzaW9uTWlub3IpCisJZm10LlBy aW50ZigiJXNcbiVzXG4lc1xuJXNcbiVzXG4lc1xuJXNcbiIsIGluZm8uWGVuVmVyc2lvbkV4dHJh LCBpbmZvLkNvbXBpbGVyLAorCQlpbmZvLkNvbXBpbGVCeSwgaW5mby5Db21waWxlRG9tYWluLCBp bmZvLkNvbXBpbGVEYXRlLCBpbmZvLkNhcGFiaWxpdGllcywKKwkJaW5mby5DaGFuZ2VzZXQpCisJ Zm10LlByaW50ZigiJWRcbiVkXG4iLCBpbmZvLlZpcnRTdGFydCwgaW5mby5QYWdlc2l6ZSkKKwlm bXQuUHJpbnRmKCIlc1xuJXNcbiIsIGluZm8uQ29tbWFuZGxpbmUsIGluZm8uQnVpbGRJZCkKKwor fQpkaWZmIC0tZ2l0IGEvdG9vbHMvZ29sYW5nL3hlbmxpZ2h0L3Rlc3QveGVuaW5mby94ZW5saWdo dC5nbyBiL3Rvb2xzL2dvbGFuZy94ZW5saWdodC90ZXN0L3hlbmluZm8veGVubGlnaHQuZ28KbmV3 IGZpbGUgbW9kZSAxMjAwMDAKaW5kZXggMDAwMDAwMC4uNjkzZGE3YgotLS0gL2Rldi9udWxsCisr KyBiL3Rvb2xzL2dvbGFuZy94ZW5saWdodC90ZXN0L3hlbmluZm8veGVubGlnaHQuZ28KQEAgLTAs MCArMSBAQAorLi4vLi4veGVubGlnaHQuZ28vdXNyL2xvY2FsL2dvL3NyYy94ZW5wcm9qZWN0Lm9y Zy94ZW5saWdodC94ZW5saWdodC5nbwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKLS0gCjIu Ny4zCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVu LWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3Rz Lnhlbi5vcmcveGVuLWRldmVsCg==