From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wei Liu Subject: [PATCH 2/2] xl: split out vnc and console related code Date: Mon, 27 Feb 2017 17:48:39 +0000 Message-ID: <20170227174839.19841-2-wei.liu2@citrix.com> References: <22708.19672.270064.432049@mariner.uk.xensource.com> <20170227174839.19841-1-wei.liu2@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ciPPf-0002IR-KY for xen-devel@lists.xenproject.org; Mon, 27 Feb 2017 17:48:43 +0000 In-Reply-To: <20170227174839.19841-1-wei.liu2@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Xen-devel Cc: Wei Liu , Ian Jackson List-Id: xen-devel@lists.xenproject.org VGhlIG5ldyBmaWxlIGFsc28gY29udGFpbnMgY29kZSBmb3IgY2hhbm5lbCwgd2hpY2ggaXMganVz dCBhIGNvbnNvbGUKaW4gZGlzZ3Vpc2UuCgpSZXBsYWNlIHRoZSBjYWxsIHRvIHZuY3ZpZXdlcigp IHdpdGggbGlieGxfdm5jdmlld2VyX2V4ZWMoKSBkaXJlY3RseSBpbgptYWluX3ZuY3ZpZXdlci4K ClNpZ25lZC1vZmYtYnk6IFdlaSBMaXUgPHdlaS5saXUyQGNpdHJpeC5jb20+Ci0tLQogdG9vbHMv eGwvTWFrZWZpbGUgICAgIHwgICAyICstCiB0b29scy94bC94bF9jbWRpbXBsLmMgfCAgOTkgLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHRvb2xzL3hsL3hsX2NvbnNvbGUu YyB8IDEzMCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KwogMyBmaWxlcyBjaGFuZ2VkLCAxMzEgaW5zZXJ0aW9ucygrKSwgMTAwIGRlbGV0aW9ucygtKQog Y3JlYXRlIG1vZGUgMTAwNjQ0IHRvb2xzL3hsL3hsX2NvbnNvbGUuYwoKZGlmZiAtLWdpdCBhL3Rv b2xzL3hsL01ha2VmaWxlIGIvdG9vbHMveGwvTWFrZWZpbGUKaW5kZXggYmM4Y2ZiM2RlOS4uNzM3 NWQyYmZkYSAxMDA2NDQKLS0tIGEvdG9vbHMveGwvTWFrZWZpbGUKKysrIGIvdG9vbHMveGwvTWFr ZWZpbGUKQEAgLTE5LDcgKzE5LDcgQEAgWExfT0JKUyA9IHhsLm8geGxfY21kaW1wbC5vIHhsX2Nt ZHRhYmxlLm8geGxfc3hwLm8geGxfdXRpbHMubwogWExfT0JKUyArPSB4bF90bWVtLm8geGxfcGFy c2UubyB4bF9jcHVwb29sLm8geGxfZmxhc2subwogWExfT0JKUyArPSB4bF92dHBtLm8geGxfYmxv Y2subyB4bF9uaWMubyB4bF91c2IubwogWExfT0JKUyArPSB4bF9zY2hlZC5vIHhsX3BjaS5vIHhs X3ZjcHUubyB4bF9jZHJvbS5vIHhsX21lbS5vCi1YTF9PQkpTICs9IHhsX3Bzci5vIHhsX2luZm8u bworWExfT0JKUyArPSB4bF9wc3IubyB4bF9pbmZvLm8geGxfY29uc29sZS5vCiAKICQoWExfT0JK Uyk6IENGTEFHUyArPSAkKENGTEFHU19saWJ4ZW50b29sbG9nKQogJChYTF9PQkpTKTogQ0ZMQUdT ICs9ICQoQ0ZMQUdTX1hMKQpkaWZmIC0tZ2l0IGEvdG9vbHMveGwveGxfY21kaW1wbC5jIGIvdG9v bHMveGwveGxfY21kaW1wbC5jCmluZGV4IGE0MmI5NzJkNjAuLjk1ODA1OGNhZGIgMTAwNjQ0Ci0t LSBhL3Rvb2xzL3hsL3hsX2NtZGltcGwuYworKysgYi90b29scy94bC94bF9jbWRpbXBsLmMKQEAg LTEwNzEsNjEgKzEwNzEsNiBAQCB2b2lkIGhlbHAoY29uc3QgY2hhciAqY29tbWFuZCkKICAgICB9 CiB9CiAKLWludCBtYWluX2NvbnNvbGUoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotewotICAgIHVp bnQzMl90IGRvbWlkOwotICAgIGludCBvcHQgPSAwLCBudW0gPSAwOwotICAgIGxpYnhsX2NvbnNv bGVfdHlwZSB0eXBlID0gMDsKLQotICAgIFNXSVRDSF9GT1JFQUNIX09QVChvcHQsICJuOnQ6Iiwg TlVMTCwgImNvbnNvbGUiLCAxKSB7Ci0gICAgY2FzZSAndCc6Ci0gICAgICAgIGlmICghc3RyY21w KG9wdGFyZywgInB2IikpCi0gICAgICAgICAgICB0eXBlID0gTElCWExfQ09OU09MRV9UWVBFX1BW OwotICAgICAgICBlbHNlIGlmICghc3RyY21wKG9wdGFyZywgInNlcmlhbCIpKQotICAgICAgICAg ICAgdHlwZSA9IExJQlhMX0NPTlNPTEVfVFlQRV9TRVJJQUw7Ci0gICAgICAgIGVsc2UgewotICAg ICAgICAgICAgZnByaW50ZihzdGRlcnIsICJjb25zb2xlIHR5cGUgc3VwcG9ydGVkIGFyZTogcHYs IHNlcmlhbFxuIik7Ci0gICAgICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwotICAgICAgICB9 Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgJ24nOgotICAgICAgICBudW0gPSBhdG9pKG9wdGFy Zyk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIGRvbWlkID0gZmluZF9kb21haW4oYXJn dltvcHRpbmRdKTsKLSAgICBpZiAoIXR5cGUpCi0gICAgICAgIGxpYnhsX3ByaW1hcnlfY29uc29s ZV9leGVjKGN0eCwgZG9taWQsIC0xKTsKLSAgICBlbHNlCi0gICAgICAgIGxpYnhsX2NvbnNvbGVf ZXhlYyhjdHgsIGRvbWlkLCBudW0sIHR5cGUsIC0xKTsKLSAgICBmcHJpbnRmKHN0ZGVyciwgIlVu YWJsZSB0byBhdHRhY2ggY29uc29sZVxuIik7Ci0gICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKLX0K LQotaW50IG1haW5fdm5jdmlld2VyKGludCBhcmdjLCBjaGFyICoqYXJndikKLXsKLSAgICBzdGF0 aWMgY29uc3Qgc3RydWN0IG9wdGlvbiBvcHRzW10gPSB7Ci0gICAgICAgIHsiYXV0b3Bhc3MiLCAw LCAwLCAnYSd9LAotICAgICAgICB7InZuY3ZpZXdlci1hdXRvcGFzcyIsIDAsIDAsICdhJ30sCi0g ICAgICAgIENPTU1PTl9MT05HX09QVFMKLSAgICB9OwotICAgIHVpbnQzMl90IGRvbWlkOwotICAg IGludCBvcHQsIGF1dG9wYXNzID0gMDsKLQotICAgIFNXSVRDSF9GT1JFQUNIX09QVChvcHQsICJh Iiwgb3B0cywgInZuY3ZpZXdlciIsIDEpIHsKLSAgICBjYXNlICdhJzoKLSAgICAgICAgYXV0b3Bh c3MgPSAxOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBkb21pZCA9IGZpbmRfZG9tYWlu KGFyZ3Zbb3B0aW5kXSk7Ci0KLSAgICBsaWJ4bF92bmN2aWV3ZXJfZXhlYyhjdHgsIGRvbWlkLCBh dXRvcGFzcyk7Ci0gICAgZnByaW50ZihzdGRlcnIsICJVbmFibGUgdG8gZXhlY3V0ZSB2bmN2aWV3 ZXJcbiIpOwotCi0gICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKLX0KLQogc3RhdGljIHZvaWQgcGF1 c2VfZG9tYWluKHVpbnQzMl90IGRvbWlkKQogewogICAgIGxpYnhsX2RvbWFpbl9wYXVzZShjdHgs IGRvbWlkKTsKQEAgLTI1MTUsNTAgKzI0NjAsNiBAQCBpbnQgbWFpbl9kZWJ1Z19rZXlzKGludCBh cmdjLCBjaGFyICoqYXJndikKICAgICByZXR1cm4gRVhJVF9TVUNDRVNTOwogfQogCi1pbnQgbWFp bl9jaGFubmVsbGlzdChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi17Ci0gICAgaW50IG9wdDsKLSAg ICBsaWJ4bF9kZXZpY2VfY2hhbm5lbCAqY2hhbm5lbHM7Ci0gICAgbGlieGxfY2hhbm5lbGluZm8g Y2hhbm5lbGluZm87Ci0gICAgaW50IG5iLCBpOwotCi0gICAgU1dJVENIX0ZPUkVBQ0hfT1BUKG9w dCwgIiIsIE5VTEwsICJjaGFubmVsLWxpc3QiLCAxKSB7Ci0gICAgICAgIC8qIE5vIG9wdGlvbnMg Ki8KLSAgICB9Ci0KLSAgICAvKiAgICAgIElkeCBCRSBzdGF0ZSBldnQtY2ggcmluZy1yZWYgY29u bmVjdGlvbiBwYXJhbXMqLwotICAgIHByaW50ZigiJS0zcyAlLTJzICUtNXMgJS02cyAlOHMgJS0x MHMgJS0zMHNcbiIsCi0gICAgICAgICAgICJJZHgiLCAiQkUiLCAic3RhdGUiLCAiZXZ0LWNoIiwg InJpbmctcmVmIiwgImNvbm5lY3Rpb24iLCAiIik7Ci0gICAgZm9yIChhcmd2ICs9IG9wdGluZCwg YXJnYyAtPSBvcHRpbmQ7IGFyZ2MgPiAwOyAtLWFyZ2MsICsrYXJndikgewotICAgICAgICB1aW50 MzJfdCBkb21pZCA9IGZpbmRfZG9tYWluKCphcmd2KTsKLSAgICAgICAgY2hhbm5lbHMgPSBsaWJ4 bF9kZXZpY2VfY2hhbm5lbF9saXN0KGN0eCwgZG9taWQsICZuYik7Ci0gICAgICAgIGlmICghY2hh bm5lbHMpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IG5i OyArK2kpIHsKLSAgICAgICAgICAgIGlmICghbGlieGxfZGV2aWNlX2NoYW5uZWxfZ2V0aW5mbyhj dHgsIGRvbWlkLCAmY2hhbm5lbHNbaV0sCi0gICAgICAgICAgICAgICAgJmNoYW5uZWxpbmZvKSkg ewotICAgICAgICAgICAgICAgIHByaW50ZigiJS0zZCAlLTJkICIsIGNoYW5uZWxzW2ldLmRldmlk LCBjaGFubmVsaW5mby5iYWNrZW5kX2lkKTsKLSAgICAgICAgICAgICAgICBwcmludGYoIiUtNWQg IiwgY2hhbm5lbGluZm8uc3RhdGUpOwotICAgICAgICAgICAgICAgIHByaW50ZigiJS02ZCAlLThk ICIsIGNoYW5uZWxpbmZvLmV2dGNoLCBjaGFubmVsaW5mby5ycmVmKTsKLSAgICAgICAgICAgICAg ICBwcmludGYoIiUtMTBzICIsIGxpYnhsX2NoYW5uZWxfY29ubmVjdGlvbl90b19zdHJpbmcoCi0g ICAgICAgICAgICAgICAgICAgICAgIGNoYW5uZWxzW2ldLmNvbm5lY3Rpb24pKTsKLSAgICAgICAg ICAgICAgICBzd2l0Y2ggKGNoYW5uZWxzW2ldLmNvbm5lY3Rpb24pIHsKLSAgICAgICAgICAgICAg ICAgICAgY2FzZSBMSUJYTF9DSEFOTkVMX0NPTk5FQ1RJT05fUFRZOgotICAgICAgICAgICAgICAg ICAgICAgICAgcHJpbnRmKCIlLTMwcyAiLCBjaGFubmVsaW5mby51LnB0eS5wYXRoKTsKLSAgICAg ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBkZWZhdWx0Ogot ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg ICAgICAgICAgIHByaW50ZigiXG4iKTsKLSAgICAgICAgICAgICAgICBsaWJ4bF9jaGFubmVsaW5m b19kaXNwb3NlKCZjaGFubmVsaW5mbyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBsaWJ4 bF9kZXZpY2VfY2hhbm5lbF9kaXNwb3NlKCZjaGFubmVsc1tpXSk7Ci0gICAgICAgIH0KLSAgICAg ICAgZnJlZShjaGFubmVscyk7Ci0gICAgfQotICAgIHJldHVybiAwOwotfQotCiAjaWZuZGVmIExJ QlhMX0hBVkVfTk9fU1VTUEVORF9SRVNVTUUKIGludCBtYWluX3JlbXVzKGludCBhcmdjLCBjaGFy ICoqYXJndikKIHsKZGlmZiAtLWdpdCBhL3Rvb2xzL3hsL3hsX2NvbnNvbGUuYyBiL3Rvb2xzL3hs L3hsX2NvbnNvbGUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4wNTA4 ZGRhYTMyCi0tLSAvZGV2L251bGwKKysrIGIvdG9vbHMveGwveGxfY29uc29sZS5jCkBAIC0wLDAg KzEsMTMwIEBACisvKgorICogQ29weXJpZ2h0IDIwMDktMjAxNyBDaXRyaXggTHRkIGFuZCBvdGhl ciBjb250cmlidXRvcnMKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCisg KiBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyB2ZXJzaW9uIDIuMSBvbmx5LiB3aXRo IHRoZSBzcGVjaWFsCisgKiBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gZmlsZSBM SUNFTlNFLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBMZXNzZXIg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICovCisKKyNpbmNsdWRl IDxzdGRsaWIuaD4KKworI2luY2x1ZGUgPGxpYnhsLmg+CisjaW5jbHVkZSA8bGlieGxfdXRpbHMu aD4KKyNpbmNsdWRlIDxsaWJ4bHV0aWwuaD4KKworI2luY2x1ZGUgInhsLmgiCisjaW5jbHVkZSAi eGxfdXRpbHMuaCIKKyNpbmNsdWRlICJ4bF9wYXJzZS5oIgorCitpbnQgbWFpbl9jb25zb2xlKGlu dCBhcmdjLCBjaGFyICoqYXJndikKK3sKKyAgICB1aW50MzJfdCBkb21pZDsKKyAgICBpbnQgb3B0 ID0gMCwgbnVtID0gMDsKKyAgICBsaWJ4bF9jb25zb2xlX3R5cGUgdHlwZSA9IDA7CisKKyAgICBT V0lUQ0hfRk9SRUFDSF9PUFQob3B0LCAibjp0OiIsIE5VTEwsICJjb25zb2xlIiwgMSkgeworICAg IGNhc2UgJ3QnOgorICAgICAgICBpZiAoIXN0cmNtcChvcHRhcmcsICJwdiIpKQorICAgICAgICAg ICAgdHlwZSA9IExJQlhMX0NPTlNPTEVfVFlQRV9QVjsKKyAgICAgICAgZWxzZSBpZiAoIXN0cmNt cChvcHRhcmcsICJzZXJpYWwiKSkKKyAgICAgICAgICAgIHR5cGUgPSBMSUJYTF9DT05TT0xFX1RZ UEVfU0VSSUFMOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAi Y29uc29sZSB0eXBlIHN1cHBvcnRlZCBhcmU6IHB2LCBzZXJpYWxcbiIpOworICAgICAgICAgICAg cmV0dXJuIEVYSVRfRkFJTFVSRTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBjYXNl ICduJzoKKyAgICAgICAgbnVtID0gYXRvaShvcHRhcmcpOworICAgICAgICBicmVhazsKKyAgICB9 CisKKyAgICBkb21pZCA9IGZpbmRfZG9tYWluKGFyZ3Zbb3B0aW5kXSk7CisgICAgaWYgKCF0eXBl KQorICAgICAgICBsaWJ4bF9wcmltYXJ5X2NvbnNvbGVfZXhlYyhjdHgsIGRvbWlkLCAtMSk7Cisg ICAgZWxzZQorICAgICAgICBsaWJ4bF9jb25zb2xlX2V4ZWMoY3R4LCBkb21pZCwgbnVtLCB0eXBl LCAtMSk7CisgICAgZnByaW50ZihzdGRlcnIsICJVbmFibGUgdG8gYXR0YWNoIGNvbnNvbGVcbiIp OworICAgIHJldHVybiBFWElUX0ZBSUxVUkU7Cit9CisKK2ludCBtYWluX3ZuY3ZpZXdlcihpbnQg YXJnYywgY2hhciAqKmFyZ3YpCit7CisgICAgc3RhdGljIGNvbnN0IHN0cnVjdCBvcHRpb24gb3B0 c1tdID0geworICAgICAgICB7ImF1dG9wYXNzIiwgMCwgMCwgJ2EnfSwKKyAgICAgICAgeyJ2bmN2 aWV3ZXItYXV0b3Bhc3MiLCAwLCAwLCAnYSd9LAorICAgICAgICBDT01NT05fTE9OR19PUFRTCisg ICAgfTsKKyAgICB1aW50MzJfdCBkb21pZDsKKyAgICBpbnQgb3B0LCBhdXRvcGFzcyA9IDA7CisK KyAgICBTV0lUQ0hfRk9SRUFDSF9PUFQob3B0LCAiYSIsIG9wdHMsICJ2bmN2aWV3ZXIiLCAxKSB7 CisgICAgY2FzZSAnYSc6CisgICAgICAgIGF1dG9wYXNzID0gMTsKKyAgICAgICAgYnJlYWs7Cisg ICAgfQorCisgICAgZG9taWQgPSBmaW5kX2RvbWFpbihhcmd2W29wdGluZF0pOworCisgICAgbGli eGxfdm5jdmlld2VyX2V4ZWMoY3R4LCBkb21pZCwgYXV0b3Bhc3MpOworCisgICAgcmV0dXJuIEVY SVRfRkFJTFVSRTsKK30KKworLyogQ2hhbm5lbCBpcyBqdXN0IGEgY29uc29sZSBpbiBkaXNndWlz ZSwgc28gcHV0IGl0IGhlcmUgKi8KK2ludCBtYWluX2NoYW5uZWxsaXN0KGludCBhcmdjLCBjaGFy ICoqYXJndikKK3sKKyAgICBpbnQgb3B0OworICAgIGxpYnhsX2RldmljZV9jaGFubmVsICpjaGFu bmVsczsKKyAgICBsaWJ4bF9jaGFubmVsaW5mbyBjaGFubmVsaW5mbzsKKyAgICBpbnQgbmIsIGk7 CisKKyAgICBTV0lUQ0hfRk9SRUFDSF9PUFQob3B0LCAiIiwgTlVMTCwgImNoYW5uZWwtbGlzdCIs IDEpIHsKKyAgICAgICAgLyogTm8gb3B0aW9ucyAqLworICAgIH0KKworICAgIC8qICAgICAgSWR4 IEJFIHN0YXRlIGV2dC1jaCByaW5nLXJlZiBjb25uZWN0aW9uIHBhcmFtcyovCisgICAgcHJpbnRm KCIlLTNzICUtMnMgJS01cyAlLTZzICU4cyAlLTEwcyAlLTMwc1xuIiwKKyAgICAgICAgICAgIklk eCIsICJCRSIsICJzdGF0ZSIsICJldnQtY2giLCAicmluZy1yZWYiLCAiY29ubmVjdGlvbiIsICIi KTsKKyAgICBmb3IgKGFyZ3YgKz0gb3B0aW5kLCBhcmdjIC09IG9wdGluZDsgYXJnYyA+IDA7IC0t YXJnYywgKythcmd2KSB7CisgICAgICAgIHVpbnQzMl90IGRvbWlkID0gZmluZF9kb21haW4oKmFy Z3YpOworICAgICAgICBjaGFubmVscyA9IGxpYnhsX2RldmljZV9jaGFubmVsX2xpc3QoY3R4LCBk b21pZCwgJm5iKTsKKyAgICAgICAgaWYgKCFjaGFubmVscykKKyAgICAgICAgICAgIGNvbnRpbnVl OworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbmI7ICsraSkgeworICAgICAgICAgICAgaWYgKCFs aWJ4bF9kZXZpY2VfY2hhbm5lbF9nZXRpbmZvKGN0eCwgZG9taWQsICZjaGFubmVsc1tpXSwKKyAg ICAgICAgICAgICAgICAmY2hhbm5lbGluZm8pKSB7CisgICAgICAgICAgICAgICAgcHJpbnRmKCIl LTNkICUtMmQgIiwgY2hhbm5lbHNbaV0uZGV2aWQsIGNoYW5uZWxpbmZvLmJhY2tlbmRfaWQpOwor ICAgICAgICAgICAgICAgIHByaW50ZigiJS01ZCAiLCBjaGFubmVsaW5mby5zdGF0ZSk7CisgICAg ICAgICAgICAgICAgcHJpbnRmKCIlLTZkICUtOGQgIiwgY2hhbm5lbGluZm8uZXZ0Y2gsIGNoYW5u ZWxpbmZvLnJyZWYpOworICAgICAgICAgICAgICAgIHByaW50ZigiJS0xMHMgIiwgbGlieGxfY2hh bm5lbF9jb25uZWN0aW9uX3RvX3N0cmluZygKKyAgICAgICAgICAgICAgICAgICAgICAgY2hhbm5l bHNbaV0uY29ubmVjdGlvbikpOworICAgICAgICAgICAgICAgIHN3aXRjaCAoY2hhbm5lbHNbaV0u Y29ubmVjdGlvbikgeworICAgICAgICAgICAgICAgICAgICBjYXNlIExJQlhMX0NIQU5ORUxfQ09O TkVDVElPTl9QVFk6CisgICAgICAgICAgICAgICAgICAgICAgICBwcmludGYoIiUtMzBzICIsIGNo YW5uZWxpbmZvLnUucHR5LnBhdGgpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg ICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICBicmVh azsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcHJpbnRmKCJcbiIpOworICAg ICAgICAgICAgICAgIGxpYnhsX2NoYW5uZWxpbmZvX2Rpc3Bvc2UoJmNoYW5uZWxpbmZvKTsKKyAg ICAgICAgICAgIH0KKyAgICAgICAgICAgIGxpYnhsX2RldmljZV9jaGFubmVsX2Rpc3Bvc2UoJmNo YW5uZWxzW2ldKTsKKyAgICAgICAgfQorICAgICAgICBmcmVlKGNoYW5uZWxzKTsKKyAgICB9Cisg ICAgcmV0dXJuIDA7Cit9CisKKy8qCisgKiBMb2NhbCB2YXJpYWJsZXM6CisgKiBtb2RlOiBDCisg KiBjLWJhc2ljLW9mZnNldDogNAorICogaW5kZW50LXRhYnMtbW9kZTogbmlsCisgKiBFbmQ6Cisg Ki8KLS0gCjIuMTEuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0 cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=