From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: [PATCH v7 17/24] build_id: Provide ld-embedded build-ids Date: Sun, 10 Apr 2016 17:14:49 -0400 Message-ID: <1460322896-1115-18-git-send-email-konrad.wilk@oracle.com> References: <1460322896-1115-1-git-send-email-konrad.wilk@oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([85.158.143.247]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1apMhj-0008Ov-It for xen-devel@lists.xenproject.org; Sun, 10 Apr 2016 21:15:35 +0000 In-Reply-To: <1460322896-1115-1-git-send-email-konrad.wilk@oracle.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org, konrad@kernel.org, sasha.levin@oracle.com, andrew.cooper3@citrix.com, ross.lagerwall@citrix.com, mpohlack@amazon.de Cc: Keir Fraser , Julien Grall , Stefano Stabellini , Jan Beulich , Konrad Rzeszutek Wilk List-Id: xen-devel@lists.xenproject.org VGhpcyBwYXRjaCBlbmFibGVzIHRoZSBFbGYgdG8gYmUgYnVpbHQgd2l0aCB0aGUgYnVpbGQtaWQK YW5kIHByb3ZpZGUgaW4gdGhlIFhlbiBoeXBlcnZpc29yIHRoZSBjb2RlIHRvIGV4dHJhY3QgaXQu CgpUaGUgbWFuLXBhZ2UgZm9yIGxkIC0tYnVpbGQtaWQgc2F5cyBpdCBpczoKCiJSZXF1ZXN0IHRo ZSBjcmVhdGlvbiBvZiBhICIubm90ZS5nbnUuYnVpbGQtaWQiIEVMRiBub3RlCnNlY3Rpb24gb3Ig YSAiLmJ1aWxkLWlkIiBDT0ZGIHNlY3Rpb24uICBUaGUgY29udGVudHMgb2YgdGhlCm5vdGUgYXJl IHVuaXF1ZSBiaXRzIGlkZW50aWZ5aW5nIHRoaXMgbGlua2VkIGZpbGUuIHN0eWxlIGNhbiBiZQoi dXVpZCIgdG8gdXNlIDEyOCByYW5kb20gYml0cywgInNoYTEiIHRvIHVzZSBhIDE2MC1iaXQgU0hB MSBoYXNoCm9uIHRoZSBub3JtYXRpdmUgcGFydHMgb2YgdGhlIG91dHB1dCBjb250ZW50cywgLi4u IgoKT25lIGNhbiBhbHNvIHJldHJpZXZlIHRoZSB2YWx1ZSBvZiB0aGUgYnVpbGQtaWQgYnkgZG9p bmcKJ3JlYWRlbGYgLW4geGVuLXN5bXMnLgoKRm9yIEVGSSBidWlsZHMgd2UgcmUtdXNlIHRoZSBz YW1lIGJ1aWxkLWlkIHRoYXQgdGhlIHhlbi1zeW1zCndhcyBidWlsdCB3aXRoLgoKVGhlIHZlcnNp b24gb2YgbGQgdGhhdCBmaXJzdCBpbXBsZW1lbnRlZCAtLWJ1aWxkLWlkIGlzIHYyLjE4LgpXZSBj aGVjayBmb3IgdG8gc2VlIGlmIHRoZSBsaW5rZXIgc3VwcG9ydHMgdGhlIC0tYnVpbGQtaWQKcGFy YW1ldGVyIGFuZCBpZiBzbyB1c2UgaXQuCgpGb3IgeDg2IHdlIGhhdmUgdHdvIGJpbmFyaWVzIC0g dGhlIHhlbi1zeW1zIGFuZCB0aGUgeGVuIC0gYW4Kc21hbGxlciB2ZXJzaW9uIHdpdGggbG90cyBv ZiBzZWN0aW9ucyByZW1vdmVkLiBUbyBtYWtlIGl0IHBvc3NpYmxlCmZvciByZWFkZWxmIC1uIHhl biB3ZSBhbHNvIG1vZGlmeSBta2VsZjMyIGFuZCB4ZW4ubGRzLlMgdG8gaW5jbHVkZQp0aGUgUFRf Tk9URSBFTEYgc2VjdGlvbi4KClRoZSBFRkkgYmluYXJ5IGlzIG1vcmUgY29tcGxpY2F0ZWQuIFdl IG9ubHkgYnVpbGQgb25lIHR5cGUgb2YKYmluYXJ5IGFuZCBleHBhbmRpbmcgdGhlIGFtb3VudCBv ZiBzZWN0aW9ucyB0aGUgRUZJIGJpbmFyeSBoYXMgdG8KaW5jbHVkZSBhbiAubm90ZSBvbmUgaXMg cG9pbnRsZXNzIC0gYXMgdGhlcmUgaXMgbm8gY29uY2VwdCBvZgpQVF9OT1RFLiBUaGUgYmVzdCB3 ZSBjYW4gZG8gaXMgbW92ZSB0aGlzIC5ub3RlIGluIHRoZSAucm9kYXRhIHNlY3Rpb24uCgpGdXJ0 aGVyIGRldmVsb3BtZW50IHdpc2Ugc2hvdWxkIG1vdmUgaXQgdG8gLmJ1aWxkaWQgc2VjdGlvbgpz byB0aGF0IERhdGFEaXJlY3RvcnkgZGVidWcgZGF0YSBub3IgQ29kZVZpZXcgY2FuIHZpZXcgaXQu CihUaGUgYXV0aG9yIGhhcyBubyBjbHVlIHdoYXQgdGhvc2UgYXJlKS4KCk5vdGUgdGhhdCBpbiBl YXJsaWVyIHBhdGNoZXMgdGhlIGxpbmtlciBzY3JpcHQgaGFkOgoKIF9fbm90ZV9nbnVfYnVpbGRf aWRfc3RhcnQgPSAuOwogKigucm9kYXRhLm5vdGUuZ251LmJ1aWxkLWlkKQogX19ub3RlX2dudV9i dWlsZF9pZF9lbmQgPSAuOwogKigubm90ZSkKICooLm5vdGUuKikKCldoaWNoIG1lYW50IHlvdSBj b3VsZCBoYXZlIGRpZmZlcmVudCBFTEYgbm90ZXMgX291dHNpZGVfIHRoZQpfX25vdGVfZ251X2J1 aWxkX2lkX2VuZC4gSG93ZXZlciBmb3IgRUZJIGJ1aWxkcyB3ZSB0YWtlIHRoZSB3aG9sZQoubm90 ZSogc2VjdGlvbiBhbmQgamFtIGl0IGluIHRoZSBFRkkgdG8gYmUgYmV0d2VlbgpfX25vdGVfZ251 X2J1aWxkX2lkX3N0YXJ0IGFuZCBfX25vdGVfZ251X2J1aWxkX2lkX2VuZC4KVG8gbm90IG1ha2Ug dGhpcyBoYXBwZW5kIHdlIG1ha2Ugb24gdGhlIEVMRiBidWlsZCB0aGUgc2VjdGlvbgpiZSBjYWxs ZWQgLm5vdGUuZ251LmJ1aWxkLWlkICAoaW5zdGVhZCBvZiBqdXN0IC5ub3RlKS4KSWYgdGhlcmUg aXMgYSBuZWVkIGZvciBhIGRpZmZlcmVudCB0eXBlIG9mIG5vdGUgb3RoZXIgZm9sa3MKY2FuIGFk ZCBpdCBhcyBhIGRpZmZlcmVudCBzZWN0aW9uIG5hbWUuCgpOb3RlIHRoYXQgd2UgZG8gY2FsbCAt LWJpbmFyeS1pZD1zaGExIG9uIGFsbCBsaW5rZXIgaW52b2NhdGlvbnMuCldlIGhhdmUgdG8gZG8g dG8gZW5mb3JjZSB0aGF0IHRoZSBzeW1ib2wgb2Zmc2V0cyBkb24ndCBjaGFuZ2VzCih0aGUgc2lk ZSBlZmZlY3QgaXMgdGhhdCB3ZSB3ZSB3b3VsZCBoYXZlIG11bHRpcGxlIGJpbmFyeSBpZHMgLQpl eGNlcHQgdGhhdCB0aGUgbGFzdCBvbmUgaXMgdGhlIGZpbmFsIG9uZSkuCgpXaXRob3V0IHRoaXMg d29ya2luZyB0aGUgc3ltYm9sIHRhYmxlIGVtYmVkZGVkIGluIFhlbiBlbmRzCnVwIGluY29ycmVj dCAtIHNvbWUgb2YgdGhlIHZhbHVlcyBpdCBjb250YWlucyB3b3VsZCBiZSBvZmZzZXQgYnkgdGhl CnNpemUgb2YgdGhlIGluY2x1ZGVkIGJ1aWxkIGlkLgoKVGhpcyBvYnZpb3VzbHkgY2F1c2VzIHBy b2JsZW1zIHdoZW4gcmVzb2x2aW5nIHN5bWJvbHMuCgpXZSBhbHNvIGRlZmluZSB0aGUgTlRfR05V X0JVSUxEX0lEIGluIHRoZSBlbGZzdHJ1Y3RzLmggYXMgd2UKbmVlZCB0byB1c2UgaXQgaW4gdmFy aW91cyBwbGFjZXMuCgpTdWdnZXN0ZWQtYnk6IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIz QGNpdHJpeC5jb20+ClNpZ25lZC1vZmYtYnk6IE1hcnRpbiBQb2hsYWNrIDxtcG9obGFja0BhbWF6 b24uZGU+ClNpZ25lZC1vZmYtYnk6IEtvbnJhZCBSemVzenV0ZWsgV2lsayA8a29ucmFkLndpbGtA b3JhY2xlLmNvbT4KQWNrZWQtYnk6IEp1bGllbiBHcmFsbCA8anVsaWVuLmdyYWxsQGFybS5jb20+ CgotLS0KQ2M6IFN0ZWZhbm8gU3RhYmVsbGluaSA8c3RlZmFuby5zdGFiZWxsaW5pQGNpdHJpeC5j b20+CkNjOiBKdWxpZW4gR3JhbGwgPGp1bGllbi5ncmFsbEBhcm0uY29tPgpDYzogS2VpciBGcmFz ZXIgPGtlaXJAeGVuLm9yZz4KQ2M6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KQ2M6 IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+Cgp2MTogUmViYXNlIGl0 IG9uIE1hcnRpbidzIGluaXRpYWwgcGF0Y2gKdjI6IE1vdmUgaXQgdG8gWEVOVkVSIGh5cGVyY2Fs bAp2MzogRml4IEVGSSBidWlsZGluZyAoUm9zcydzIGZpeCkKICAgIERvbid0IHVzZSB0aGUgdGhp cmQgYXJndW1lbnQgZm9yIGxlbmd0aC4KICAgIFVzZSBuZXcgc3RydWN0dXJlIGZvciBYRU5WRVJf YnVpbGRfaWQgd2l0aCB2YXJpYWJsZSBidWYuCiAgICBJbmNsdWRlIFJvc3MncyBmaXguCiAgICBJ bmNsdWRlIGRldGVjdGlvbiBvZiBiaW4tdXRpbHMgZm9yIGJ1aWxkLWlkIHN1cHBvcnQsIGFkZAog ICAgcHJvYmluZyBmb3Igc2l6ZSwgYW5kIHJldHVybiAtRVBFUk0gZm9yIFhTTSBkZW5pZWQgY2Fs bHMuCiAgICBCdWlsZCB4ZW5fYnVpbGRfaWQgdW5kZXIgQVJNLCByZXF1aXJlZCBhZGRpbmcgRUxG U0laRSBpbiBwcm9wZXIgZmlsZS4KICAgIFJlYmFzZSBvbiB0b3AgWFNNIHZlcnNpb24gY2xhc3Mu CnY0OgogICAgSW5jbHVkZSB0aGUgYnVpbGQtaWQgLm5vdGUgaW4gdGhlIHhlbiBFTEYgYmluYXJ5 LgogICAgcy9idWlsZF9pZC9idWlsZF9pZF9saW5rZXIvCiAgICBGb3IgRUZJIGJ1aWxkLCBtb3Zl ZCB0aGUgLS1idWlsZC1pZCB2YWx1ZXMgaW4gLmRhdGEgc2VjdGlvbgogICAgUmViYXNlIG9uIHN0 YWdpbmcuCiAgICBTcGxpdCBwYXRjaCBpbiB0d28uIEFsd2F5cyBkbyAtLWJ1aWxkLWlkIGNhbGwu IEluY2x1ZGUgdGhlIC5ub3RlIGluCiAgICAucm9kYXRhLiBVU2UgY29uc3Qgdm9pZCAqIGFuZCBz c2l6ZV90CiAgICBVc2UgLVMgdG8gbWFrZSBidWlsZF9pZC5vIGFuZCBvYmpjb3B5IGRpZmZlcmVu dGx5IChBbmRyZXcgc3VnZ2VzdGVkKQp2NTogUHV0IGJhY2sgdGhlICNpZmRlZiBMT0NLX1BST0ZJ TEUgb24gQVJNLiAoQmFkIGNoYW5nZSkuIE1vdmUgdGhlIF9lcm9kYXRhCiAgICBhcm91bmQuIHMv c3NpemVfdC91bnNpZ25lZCBpbnQvCnY2OiBSZWRpZCBpdCBwZXIgSmFuJ3MgcmV2aWV3Lgp2Nzog TW92ZSBidWlsZC1pZCBub3RlIGluIC5yb2RhdGEubm90ZSBmb3IgRUZJIGJ1aWxkcyBvbmx5Lgog ICAgTW92ZSBidWlsZC1pZCBub3RlIGluIC5yb2RhdGEgZm9yIEVGSSBidWlsZHMgb25seS4gUmV0 YWluCiAgICBpdCBpbiAubm90ZS4gQ2hhbmdlIG5hbWUgb2Ygb2JqZWN0IGZpbGUgdXNlZCBieSBF RkkgYnVpbGRzIHRvIG5vdGVzLm8KICAgIE1ha2Ugb24gRUxGIGJ1aWxkcyB0aGUgUFRfTk9URSBz ZWN0aW9uIG5hbWUgYmUgLm5vdGUuZ251LmJ1aWxkLWlkIGFuZAogICAgaW5nZXN0IHRoYXQgaW4g RUxGIGJ1aWxkLgogICAgRGVmaW5lIE5UX0dOVV9CVUlMRF9JRCBpbiBlbGZzdHJ1Y3RzLmgKLS0t Ci0tLQogQ29uZmlnLm1rICAgICAgICAgICAgICAgICAgICB8ICAxMSArKysrCiB4ZW4vYXJjaC9h cm0vTWFrZWZpbGUgICAgICAgIHwgICAyICstCiB4ZW4vYXJjaC9hcm0veGVuLmxkcy5TICAgICAg IHwgIDE1ICsrKystCiB4ZW4vYXJjaC94ODYvTWFrZWZpbGUgICAgICAgIHwgIDMwICsrKysrKysr LS0KIHhlbi9hcmNoL3g4Ni9ib290L21rZWxmMzIuYyAgfCAxMjkgKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKystLS0tLQogeGVuL2FyY2gveDg2L3hlbi5sZHMuUyAgICAgICB8 ICAyOCArKysrKysrKysrCiB4ZW4vY29tbW9uL3ZlcnNpb24uYyAgICAgICAgIHwgIDUwICsrKysr KysrKysrKysrKysrCiB4ZW4vaW5jbHVkZS94ZW4vZWxmc3RydWN0cy5oIHwgICAzICsKIHhlbi9p bmNsdWRlL3hlbi92ZXJzaW9uLmggICAgfCAgIDEgKwogOSBmaWxlcyBjaGFuZ2VkLCAyNDcgaW5z ZXJ0aW9ucygrKSwgMjIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvQ29uZmlnLm1rIGIvQ29u ZmlnLm1rCmluZGV4IDc5ZWIyYmQuLmRiNzA2MzggMTAwNjQ0Ci0tLSBhL0NvbmZpZy5taworKysg Yi9Db25maWcubWsKQEAgLTEyNiw2ICsxMjYsMTcgQEAgZW5kZWYKIGNoZWNrLSQoZ2NjKSA9ICQo Y2FsbCBjYy12ZXItY2hlY2ssQ0MsMHgwNDAxMDAsIlhlbiByZXF1aXJlcyBhdCBsZWFzdCBnY2Mt NC4xIikKICQoZXZhbCAkKGNoZWNrLXkpKQogCitsZC12ZXItYnVpbGQtaWQgPSAkKHNoZWxsICQo MSkgLS1idWlsZC1pZCAyPiYxIHwgXAorCQkJCQlncmVwIC1xIHVucmVjb2duaXplZCAmJiBlY2hv IG4gfHwgZWNobyB5KQorCitleHBvcnQgWEVOX0hBU19CVUlMRF9JRCA/PSBuCitpZmVxICgkKGNh bGwgbGQtdmVyLWJ1aWxkLWlkLCQoTEQpKSxuKQorYnVpbGRfaWRfbGlua2VyIDo9CitlbHNlCitD RkxBR1MgKz0gLURCVUlMRF9JRAorYnVpbGRfaWRfbGlua2VyIDo9IC0tYnVpbGQtaWQ9c2hhMQor ZW5kaWYKKwogIyBhcy1pbnNuOiBDaGVjayB3aGV0aGVyIGFzc2VtYmxlciBzdXBwb3J0cyBhbiBp bnN0cnVjdGlvbi4KICMgVXNhZ2U6IGNmbGFncy15ICs9ICQoY2FsbCBhcy1pbnNuICJpbnNuIixv cHRpb24teWVzLG9wdGlvbi1ubykKIGFzLWluc24gPSAkKGlmICQoc2hlbGwgZWNobyAndm9pZCBf KHZvaWQpIHsgYXNtIHZvbGF0aWxlICggJCgyKSApOyB9JyBcCmRpZmYgLS1naXQgYS94ZW4vYXJj aC9hcm0vTWFrZWZpbGUgYi94ZW4vYXJjaC9hcm0vTWFrZWZpbGUKaW5kZXggMGFmYTQxNC4uZmNh ZTI5MCAxMDA2NDQKLS0tIGEveGVuL2FyY2gvYXJtL01ha2VmaWxlCisrKyBiL3hlbi9hcmNoL2Fy bS9NYWtlZmlsZQpAQCAtOTIsNyArOTIsNyBAQCAkKFRBUkdFVCktc3ltczogcHJlbGluay5vIHhl bi5sZHMgJChCQVNFRElSKS9jb21tb24vc3ltYm9scy1kdW1teS5vCiAJJChOTSkgLXBhIC0tZm9y bWF0PXN5c3YgJChARCkvLiQoQEYpLjEgXAogCQl8ICQoQkFTRURJUikvdG9vbHMvc3ltYm9scyAt LXN5c3YgLS1zb3J0ID4kKEBEKS8uJChARikuMS5TCiAJJChNQUtFKSAtZiAkKEJBU0VESVIpL1J1 bGVzLm1rICQoQEQpLy4kKEBGKS4xLm8KLQkkKExEKSAkKExERkxBR1MpIC1UIHhlbi5sZHMgLU4g cHJlbGluay5vIFwKKwkkKExEKSAkKExERkxBR1MpIC1UIHhlbi5sZHMgLU4gcHJlbGluay5vICQo YnVpbGRfaWRfbGlua2VyKSBcCiAJICAgICQoQEQpLy4kKEBGKS4xLm8gLW8gJEAKIAlybSAtZiAk KEBEKS8uJChARikuWzAtOV0qCiAKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS94ZW4ubGRzLlMg Yi94ZW4vYXJjaC9hcm0veGVuLmxkcy5TCmluZGV4IDk5MDk1OTUuLjFmMDEwYmQgMTAwNjQ0Ci0t LSBhL3hlbi9hcmNoL2FybS94ZW4ubGRzLlMKKysrIGIveGVuL2FyY2gvYXJtL3hlbi5sZHMuUwpA QCAtMjIsNiArMjIsOSBAQCBPVVRQVVRfQVJDSChGT1JNQVQpCiBQSERSUwogewogICB0ZXh0IFBU X0xPQUQgLyogWFhYIHNob3VsZCBiZSBBVCAoIFhFTl9QSFlTX1NUQVJUICkgKi8gOworI2lmIGRl ZmluZWQoQlVJTERfSUQpCisgIG5vdGUgUFRfTk9URSA7CisjZW5kaWYKIH0KIFNFQ1RJT05TCiB7 CkBAIC01NywxMCArNjAsMTggQEAgU0VDVElPTlMKICAgICAgICAqKC5sb2NrcHJvZmlsZS5kYXRh KQogICAgICAgIF9fbG9ja19wcm9maWxlX2VuZCA9IC47CiAjZW5kaWYKLQotICAgICAgICBfZXJv ZGF0YSA9IC47ICAgICAgICAgIC8qIEVuZCBvZiByZWFkLW9ubHkgZGF0YSAqLwogICB9IDp0ZXh0 CiAKKyNpZiBkZWZpbmVkKEJVSUxEX0lEKQorICAuID0gQUxJR04oNCk7CisgIC5ub3RlLmdudS5i dWlsZC1pZCA6IHsKKyAgICAgICBfX25vdGVfZ251X2J1aWxkX2lkX3N0YXJ0ID0gLjsKKyAgICAg ICAqKC5ub3RlLmdudS5idWlsZC1pZCkKKyAgICAgICBfX25vdGVfZ251X2J1aWxkX2lkX2VuZCA9 IC47CisgIH0gOm5vdGUgOnRleHQKKyNlbmRpZgorICBfZXJvZGF0YSA9IC47ICAgICAgICAgICAg ICAgIC8qIEVuZCBvZiByZWFkLW9ubHkgZGF0YSAqLworCiAgIC5kYXRhIDogeyAgICAgICAgICAg ICAgICAgICAgLyogRGF0YSAqLwogICAgICAgIC4gPSBBTElHTihQQUdFX1NJWkUpOwogICAgICAg ICooLmRhdGEucGFnZV9hbGlnbmVkKQpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L01ha2VmaWxl IGIveGVuL2FyY2gveDg2L01ha2VmaWxlCmluZGV4IGQyMTBiYjcuLmU4Y2Q3NTcgMTAwNjQ0Ci0t LSBhL3hlbi9hcmNoL3g4Ni9NYWtlZmlsZQorKysgYi94ZW4vYXJjaC94ODYvTWFrZWZpbGUKQEAg LTc2LDYgKzc2LDEyIEBAIGVmaS15IDo9ICQoc2hlbGwgaWYgWyAhIC1yICQoQkFTRURJUikvaW5j bHVkZS94ZW4vY29tcGlsZS5oIC1vIFwKICAgICAgICAgICAgICAgICAgICAgICAtTyAkKEJBU0VE SVIpL2luY2x1ZGUveGVuL2NvbXBpbGUuaCBdOyB0aGVuIFwKICAgICAgICAgICAgICAgICAgICAg ICAgICBlY2hvICckKFRBUkdFVCkuZWZpJzsgZmkpCiAKK2lmbmVxICgkKGJ1aWxkX2lkX2xpbmtl ciksKQorbnVtX3BoZHJzID0gLS1ub3RlcworZWxzZQorbnVtX3BoZHJzID0KK2VuZGlmCisKIGlm ZGVmIENPTkZJR19YU1BMSUNFCiBhbGxfc3ltYm9scyA9IC0tYWxsLXN5bWJvbHMKIGVsc2UKQEAg LTg0LDcgKzkwLDggQEAgZW5kaWYKIAogJChUQVJHRVQpOiAkKFRBUkdFVCktc3ltcyAkKGVmaS15 KSBib290L21rZWxmMzIKIAkuL2Jvb3QvbWtlbGYzMiAkKFRBUkdFVCktc3ltcyAkKFRBUkdFVCkg MHgxMDAwMDAgXAotCWAkKE5NKSAtbnIgJChUQVJHRVQpLXN5bXMgfCBoZWFkIC1uIDEgfCBzZWQg LWUgJ3MvXlwoW14gXSpcKS4qLzB4XDEvJ2AKKwlgJChOTSkgLW5yICQoVEFSR0VUKS1zeW1zIHwg aGVhZCAtbiAxIHwgc2VkIC1lICdzL15cKFteIF0qXCkuKi8weFwxLydgIFwKKwkkKG51bV9waGRy cykKIAogLlBIT05ZOiB0ZXN0cwogdGVzdHM6CkBAIC0xMTgsMjIgKzEyNSwyOCBAQCAkKEJBU0VE SVIpL2NvbW1vbi9zeW1ib2xzLWR1bW15Lm86CiAJJChNQUtFKSAtZiAkKEJBU0VESVIpL1J1bGVz Lm1rIC1DICQoQkFTRURJUikvY29tbW9uIHN5bWJvbHMtZHVtbXkubwogCiAkKFRBUkdFVCktc3lt czogcHJlbGluay5vIHhlbi5sZHMgJChCQVNFRElSKS9jb21tb24vc3ltYm9scy1kdW1teS5vCi0J JChMRCkgJChMREZMQUdTKSAtVCB4ZW4ubGRzIC1OIHByZWxpbmsubyBcCisJJChMRCkgJChMREZM QUdTKSAtVCB4ZW4ubGRzIC1OIHByZWxpbmsubyAkKGJ1aWxkX2lkX2xpbmtlcikgXAogCSAgICAk KEJBU0VESVIpL2NvbW1vbi9zeW1ib2xzLWR1bW15Lm8gLW8gJChARCkvLiQoQEYpLjAKIAkkKE5N KSAtcGEgLS1mb3JtYXQ9c3lzdiAkKEBEKS8uJChARikuMCBcCiAJCXwgJChCQVNFRElSKS90b29s cy9zeW1ib2xzICQoYWxsX3N5bWJvbHMpIC0tc3lzdiAtLXNvcnQgXAogCQk+JChARCkvLiQoQEYp LjAuUwogCSQoTUFLRSkgLWYgJChCQVNFRElSKS9SdWxlcy5tayAkKEBEKS8uJChARikuMC5vCi0J JChMRCkgJChMREZMQUdTKSAtVCB4ZW4ubGRzIC1OIHByZWxpbmsubyBcCisJJChMRCkgJChMREZM QUdTKSAtVCB4ZW4ubGRzIC1OIHByZWxpbmsubyAkKGJ1aWxkX2lkX2xpbmtlcikgXAogCSAgICAk KEBEKS8uJChARikuMC5vIC1vICQoQEQpLy4kKEBGKS4xCiAJJChOTSkgLXBhIC0tZm9ybWF0PXN5 c3YgJChARCkvLiQoQEYpLjEgXAogCQl8ICQoQkFTRURJUikvdG9vbHMvc3ltYm9scyAkKGFsbF9z eW1ib2xzKSAtLXN5c3YgLS1zb3J0IC0td2Fybi1kdXAgXAogCQk+JChARCkvLiQoQEYpLjEuUwog CSQoTUFLRSkgLWYgJChCQVNFRElSKS9SdWxlcy5tayAkKEBEKS8uJChARikuMS5vCi0JJChMRCkg JChMREZMQUdTKSAtVCB4ZW4ubGRzIC1OIHByZWxpbmsubyBcCisJJChMRCkgJChMREZMQUdTKSAt VCB4ZW4ubGRzIC1OIHByZWxpbmsubyAkKGJ1aWxkX2lkX2xpbmtlcikgXAogCSAgICAkKEBEKS8u JChARikuMS5vIC1vICRACiAJcm0gLWYgJChARCkvLiQoQEYpLlswLTldKgogCitub3RlLm86ICQo VEFSR0VUKS1zeW1zCisJJChPQkpDT1BZKSAtTyBiaW5hcnkgLS1vbmx5LXNlY3Rpb249Lm5vdGUu Z251LmJ1aWxkLWlkICAkKEJBU0VESVIpL3hlbi1zeW1zICRALmJpbgorCSQoT0JKQ09QWSkgLUkg YmluYXJ5IC1PIGVsZjY0LXg4Ni02NCAtQiBpMzg2Ong4Ni02NCBcCisJCS0tcmVuYW1lLXNlY3Rp b249LmRhdGE9Lm5vdGUuZ251LmJ1aWxkLWlkIC1TICRALmJpbiAkQAorCXJtIC1mICRALmJpbgor CiBFRklfTERGTEFHUyA9ICQocGF0c3Vic3QgLW0lLC1taTM4NnBlcCwkKExERkxBR1MpKSAtLXN1 YnN5c3RlbT0xMAogRUZJX0xERkxBR1MgKz0gLS1pbWFnZS1iYXNlPSQoMSkgLS1zdGFjaz0wLDAg LS1oZWFwPTAsMCAtLXN0cmlwLWRlYnVnCiBFRklfTERGTEFHUyArPSAtLXNlY3Rpb24tYWxpZ25t ZW50PTB4MjAwMDAwIC0tZmlsZS1hbGlnbm1lbnQ9MHgyMApAQCAtMTQ2LDYgKzE1OSwxMyBAQCAk KFRBUkdFVCkuZWZpOiBWSVJUX0JBU0UgPSAweCQoc2hlbGwgJChOTSkgZWZpL3JlbG9jcy1kdW1t eS5vIHwgc2VkIC1uICdzLCBBIFZJUgogJChUQVJHRVQpLmVmaTogQUxUX0JBU0UgPSAweCQoc2hl bGwgJChOTSkgZWZpL3JlbG9jcy1kdW1teS5vIHwgc2VkIC1uICdzLCBBIEFMVF9TVEFSVCQkLCxw JykKICMgRG9uJ3QgdXNlICQod2lsZGNhcmQgLi4uKSBoZXJlIC0gYXQgbGVhc3QgbWFrZSAzLjgw IGV4cGFuZHMgdGhpcyB0b28gZWFybHkhCiAkKFRBUkdFVCkuZWZpOiBndWFyZCA9ICQoaWYgJChz aGVsbCBlY2hvIGVmaS9kaXMqIHwgZ3JlcCBkaXNhYmxlZCksOikKK2lmbmVxICgkKGJ1aWxkX2lk X2xpbmtlciksKQorJChUQVJHRVQpLmVmaTogbm90ZS5vCitub3RlX2ZpbGUgOj0gbm90ZS5vCitl bHNlCitub3RlX2ZpbGUgOj0KK2VuZGlmCisKICQoVEFSR0VUKS5lZmk6IHByZWxpbmstZWZpLm8g ZWZpLmxkcyBlZmkvcmVsb2NzLWR1bW15Lm8gJChCQVNFRElSKS9jb21tb24vc3ltYm9scy1kdW1t eS5vIGVmaS9ta3JlbG9jCiAJJChmb3JlYWNoIGJhc2UsICQoVklSVF9CQVNFKSAkKEFMVF9CQVNF KSwgXAogCSAgICAgICAgICAkKGd1YXJkKSAkKExEKSAkKGNhbGwgRUZJX0xERkxBR1MsJChiYXNl KSkgLVQgZWZpLmxkcyAtTiAkPCBlZmkvcmVsb2NzLWR1bW15Lm8gXApAQCAtMTYyLDcgKzE4Miw3 IEBAICQoVEFSR0VUKS5lZmk6IHByZWxpbmstZWZpLm8gZWZpLmxkcyBlZmkvcmVsb2NzLWR1bW15 Lm8gJChCQVNFRElSKS9jb21tb24vc3ltYm9sCiAJCXwgJChndWFyZCkgJChCQVNFRElSKS90b29s cy9zeW1ib2xzICQoYWxsX3N5bWJvbHMpIC0tc3lzdiAtLXNvcnQgPiQoQEQpLy4kKEBGKS4xcy5T CiAJJChndWFyZCkgJChNQUtFKSAtZiAkKEJBU0VESVIpL1J1bGVzLm1rICQoQEQpLy4kKEBGKS4x ci5vICQoQEQpLy4kKEBGKS4xcy5vCiAJJChndWFyZCkgJChMRCkgJChjYWxsIEVGSV9MREZMQUdT LCQoVklSVF9CQVNFKSkgLVQgZWZpLmxkcyAtTiAkPCBcCi0JICAgICAgICAgICAgICAgICQoQEQp Ly4kKEBGKS4xci5vICQoQEQpLy4kKEBGKS4xcy5vIC1vICRACisJICAgICAgICAgICAgICAgICQo QEQpLy4kKEBGKS4xci5vICQoQEQpLy4kKEBGKS4xcy5vICQobm90ZV9maWxlKSAtbyAkQAogCWlm ICQoZ3VhcmQpIGZhbHNlOyB0aGVuIHJtIC1mICRAOyBlY2hvICdFRkkgc3VwcG9ydCBkaXNhYmxl ZCc7IGZpCiAJcm0gLWYgJChARCkvLiQoQEYpLlswLTldKgogCmRpZmYgLS1naXQgYS94ZW4vYXJj aC94ODYvYm9vdC9ta2VsZjMyLmMgYi94ZW4vYXJjaC94ODYvYm9vdC9ta2VsZjMyLmMKaW5kZXgg OTkzYTdlZS4uZmNlMTcxNiAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2Jvb3QvbWtlbGYzMi5j CisrKyBiL3hlbi9hcmNoL3g4Ni9ib290L21rZWxmMzIuYwpAQCAtNDUsOSArNDUsOSBAQCBzdGF0 aWMgRWxmMzJfRWhkciBvdXRfZWhkciA9IHsKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIC8qIGVfZmxhZ3MgKi8KICAgICBzaXplb2YoRWxmMzJfRWhkciksICAg ICAgICAgICAgICAgICAgICAgIC8qIGVfZWhzaXplICovCiAgICAgc2l6ZW9mKEVsZjMyX1BoZHIp LCAgICAgICAgICAgICAgICAgICAgICAvKiBlX3BoZW50c2l6ZSAqLwotICAgIDEsICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZV9waG51bSAqLworICAgIDEsICAvKiBt b2RpZnkgYmFzZWQgb24gbnVtX3BoZHJzICovICAgICAgLyogZV9waG51bSAqLwogICAgIHNpemVv ZihFbGYzMl9TaGRyKSwgICAgICAgICAgICAgICAgICAgICAgLyogZV9zaGVudHNpemUgKi8KLSAg ICAzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGVfc2hudW0gKi8K KyAgICAzLCAgLyogbW9kaWZ5IGJhc2VkIG9uIG51bV9waGRycyAqLyAgICAgIC8qIGVfc2hudW0g Ki8KICAgICAyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGVfc2hz dHJuZHggKi8KIH07CiAKQEAgLTYxLDggKzYxLDIwIEBAIHN0YXRpYyBFbGYzMl9QaGRyIG91dF9w aGRyID0gewogICAgIFBGX1J8UEZfV3xQRl9YLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyog cF9mbGFncyAqLwogICAgIDY0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg LyogcF9hbGlnbiAqLwogfTsKK3N0YXRpYyBFbGYzMl9QaGRyIG5vdGVfcGhkciA9IHsKKyAgICBQ VF9OT1RFLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHBfdHlwZSAqLworICAg IERZTkFNSUNBTExZX0ZJTExFRCwgICAgICAgICAgICAgICAgICAgICAgLyogcF9vZmZzZXQgKi8K KyAgICBEWU5BTUlDQUxMWV9GSUxMRUQsICAgICAgICAgICAgICAgICAgICAgIC8qIHBfdmFkZHIg Ki8KKyAgICBEWU5BTUlDQUxMWV9GSUxMRUQsICAgICAgICAgICAgICAgICAgICAgIC8qIHBfcGFk ZHIgKi8KKyAgICBEWU5BTUlDQUxMWV9GSUxMRUQsICAgICAgICAgICAgICAgICAgICAgIC8qIHBf ZmlsZXN6ICovCisgICAgRFlOQU1JQ0FMTFlfRklMTEVELCAgICAgICAgICAgICAgICAgICAgICAv KiBwX21lbXN6ICovCisgICAgUEZfUiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAvKiBwX2ZsYWdzICovCisgICAgNCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAvKiBwX2FsaWduICovCit9OwogCiBzdGF0aWMgdTggb3V0X3Noc3RydGFiW10gPSAiXDAu dGV4dFwwLnNoc3RydGFiIjsKKy8qIElmIG51bV9waGRycyA+PSAyLCB3ZSBuZWVkIHRvIHRhY2sg dGhlIC5ub3RlLiAqLworc3RhdGljIHU4IG91dF9zaHN0cnRhYl9leHRyYVtdID0gIi5ub3RlXDAi OwogCiBzdGF0aWMgRWxmMzJfU2hkciBvdXRfc2hkcltdID0gewogICAgIHsgMCB9LApAQCAtOTAs NiArMTAyLDIzIEBAIHN0YXRpYyBFbGYzMl9TaGRyIG91dF9zaGRyW10gPSB7CiAgICAgfQogfTsK IAorLyoKKyAqIFRoZSAxNyBwb2ludHMgdG8gdGhlICcubm90ZScgaW4gdGhlIG91dF9zaHN0cnRh YiBhbmQgb3V0X3Noc3RydGFiX2V4dHJhCisgKiBsYWlkIG91dCBpbiB0aGUgZmlsZS4KKyAqLwor c3RhdGljIEVsZjMyX1NoZHIgb3V0X3NoZHJfbm90ZSA9IHsKKyAgICAgIDE3LCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNoX25hbWUgKi8KKyAgICAgIFNIVF9OT1RFLCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNoX3R5cGUgKi8KKyAgICAgIDAsICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNoX2ZsYWdzICovCisgICAgICBEWU5B TUlDQUxMWV9GSUxMRUQsICAgICAgICAgICAgICAgICAgICAvKiBzaF9hZGRyICovCisgICAgICBE WU5BTUlDQUxMWV9GSUxMRUQsICAgICAgICAgICAgICAgICAgICAvKiBzaF9vZmZzZXQgKi8KKyAg ICAgIERZTkFNSUNBTExZX0ZJTExFRCwgICAgICAgICAgICAgICAgICAgIC8qIHNoX3NpemUgKi8K KyAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNoX2xpbmsg Ki8KKyAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNoX2lu Zm8gKi8KKyAgICAgIDQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNo X2FkZHJhbGlnbiAqLworICAgICAgMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLyogc2hfZW50c2l6ZSAqLworfTsKKwogLyogU29tZSBzeXN0ZW0gaGVhZGVyIGZpbGVzIGRl ZmluZSB0aGVzZSBtYWNyb3MgYW5kIHBvbGx1dGUgb3VyIG5hbWVzcGFjZS4gKi8KICN1bmRlZiBz d2FwMTYKICN1bmRlZiBzd2FwMzIKQEAgLTIyOCwyMSArMjU3LDIyIEBAIHN0YXRpYyB2b2lkIGRv X3JlYWQoaW50IGZkLCB2b2lkICpkYXRhLCBpbnQgbGVuKQogaW50IG1haW4oaW50IGFyZ2MsIGNo YXIgKiphcmd2KQogewogICAgIHU2NCAgICAgICAgZmluYWxfZXhlY19hZGRyOwotICAgIHUzMiAg ICAgICAgbG9hZGJhc2UsIGRhdF9zaXosIG1lbV9zaXo7CisgICAgdTMyICAgICAgICBsb2FkYmFz ZSwgZGF0X3NpeiwgbWVtX3Npeiwgbm90ZV9iYXNlLCBub3RlX3N6LCBvZmZzZXQ7CiAgICAgY2hh ciAgICAgICppbmltYWdlLCAqb3V0aW1hZ2U7CiAgICAgaW50ICAgICAgICBpbmZkLCBvdXRmZDsK ICAgICBjaGFyICAgICAgIGJ1ZmZlclsxMDI0XTsKICAgICBpbnQgICAgICAgIGJ5dGVzLCB0b2Rv LCBpOworICAgIGludCAgICAgICAgbnVtX3BoZHJzID0gMTsKIAogICAgIEVsZjMyX0VoZHIgaW4z Ml9laGRyOwogCiAgICAgRWxmNjRfRWhkciBpbjY0X2VoZHI7CiAgICAgRWxmNjRfUGhkciBpbjY0 X3BoZHI7CiAKLSAgICBpZiAoIGFyZ2MgIT0gNSApCisgICAgaWYgKCBhcmdjIDwgNSApCiAgICAg ewogICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlVzYWdlOiBta2VsZjMyIDxpbi1pbWFnZT4gPG91 dC1pbWFnZT4gIgotICAgICAgICAgICAgICAgICI8bG9hZC1iYXNlPiA8ZmluYWwtZXhlYy1hZGRy PlxuIik7CisgICAgICAgICAgICAgICAgIjxsb2FkLWJhc2U+IDxmaW5hbC1leGVjLWFkZHI+IDxu dW1iZXIgb2YgcHJvZ3JhbSBoZWFkZXJzPiBbLS1ub3Rlc11cbiIpOwogICAgICAgICByZXR1cm4g MTsKICAgICB9CiAKQEAgLTI1MCw2ICsyODAsOCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAq KmFyZ3YpCiAgICAgb3V0aW1hZ2UgPSBhcmd2WzJdOwogICAgIGxvYWRiYXNlID0gc3RydG91bChh cmd2WzNdLCBOVUxMLCAxNik7CiAgICAgZmluYWxfZXhlY19hZGRyID0gc3RydG91bGwoYXJndls0 XSwgTlVMTCwgMTYpOworICAgIGlmICggYXJndls1XSAmJiAoIXN0cmNtcChhcmd2WzVdLCAiLS1u b3RlcyIpKSApCisgICAgICAgIG51bV9waGRycyA9IDI7CiAKICAgICBpbmZkID0gb3Blbihpbmlt YWdlLCBPX1JET05MWSk7CiAgICAgaWYgKCBpbmZkID09IC0xICkKQEAgLTI4NSwxMSArMzE3LDEw IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKICAgICAgICAgICAgICAgICAoaW50 KWluNjRfZWhkci5lX3BoZW50c2l6ZSwgKGludClzaXplb2YoaW42NF9waGRyKSk7CiAgICAgICAg IHJldHVybiAxOwogICAgIH0KLQotICAgIGlmICggaW42NF9laGRyLmVfcGhudW0gIT0gMSApCisg ICAgaWYgKCBpbjY0X2VoZHIuZV9waG51bSAhPSBudW1fcGhkcnMgKQogICAgIHsKLSAgICAgICAg ZnByaW50ZihzdGRlcnIsICJFeHBlY3QgcHJlY2lzbHkgMSBwcm9ncmFtIGhlYWRlcjsgZm91bmQg JWQuXG4iLAotICAgICAgICAgICAgICAgIChpbnQpaW42NF9laGRyLmVfcGhudW0pOworICAgICAg ICBmcHJpbnRmKHN0ZGVyciwgIkV4cGVjdCBwcmVjaXNseSAlZCBwcm9ncmFtIGhlYWRlcjsgZm91 bmQgJWQuXG4iLAorICAgICAgICAgICAgICAgIG51bV9waGRycywgKGludClpbjY0X2VoZHIuZV9w aG51bSk7CiAgICAgICAgIHJldHVybiAxOwogICAgIH0KIApAQCAtMzA0LDYgKzMzNSwzMiBAQCBp bnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAgICAgLyptZW1fc2l6ID0gKHUzMilpbjY0 X3BoZHIucF9tZW1zejsqLwogICAgIG1lbV9zaXogPSAodTMyKShmaW5hbF9leGVjX2FkZHIgLSBp bjY0X3BoZHIucF92YWRkcik7CiAKKyAgICBub3RlX3N6ID0gbm90ZV9iYXNlID0gb2Zmc2V0ID0g MDsKKyAgICBpZiAoIG51bV9waGRycyA+IDEgKQorICAgIHsKKyAgICAgICAgb2Zmc2V0ID0gaW42 NF9waGRyLnBfb2Zmc2V0OworICAgICAgICBub3RlX2Jhc2UgPSBpbjY0X3BoZHIucF92YWRkcjsK KworICAgICAgICAodm9pZClsc2VlayhpbmZkLCBpbjY0X2VoZHIuZV9waG9mZitzaXplb2YoaW42 NF9waGRyKSwgU0VFS19TRVQpOworICAgICAgICBkb19yZWFkKGluZmQsICZpbjY0X3BoZHIsIHNp emVvZihpbjY0X3BoZHIpKTsKKyAgICAgICAgZW5kaWFuYWRqdXN0X3BoZHI2NCgmaW42NF9waGRy KTsKKworICAgICAgICAodm9pZClsc2VlayhpbmZkLCBvZmZzZXQsIFNFRUtfU0VUKTsKKworICAg ICAgICBub3RlX3N6ID0gaW42NF9waGRyLnBfbWVtc3o7CisgICAgICAgIG5vdGVfYmFzZSA9IGlu NjRfcGhkci5wX3ZhZGRyIC0gbm90ZV9iYXNlOworCisgICAgICAgIGlmICggaW42NF9waGRyLnBf b2Zmc2V0ID4gZGF0X3NpeiB8fCBvZmZzZXQgPiBpbjY0X3BoZHIucF9vZmZzZXQgKQorICAgICAg ICB7CisgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkV4cGVjdGVkIC5ub3RlIHNlY3Rpb24g d2l0aGluIC50ZXh0IHNlY3Rpb24hXG4iIFwKKyAgICAgICAgICAgICAgICAgICAgIk9mZnNldCAl bGQgbm90IHdpdGhpbiAlZCFcbiIsCisgICAgICAgICAgICAgICAgICAgIGluNjRfcGhkci5wX29m ZnNldCwgZGF0X3Npeik7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorICAgICAg ICAvKiBHZXRzIHVzIHRoZSBhYnNvbHV0ZSBvZmZzZXQgd2l0aGluIHRoZSAudGV4dCBzZWN0aW9u LiAqLworICAgICAgICBvZmZzZXQgPSBpbjY0X3BoZHIucF9vZmZzZXQgLSBvZmZzZXQ7CisgICAg fQorCiAgICAgLyoKICAgICAgKiBFbmQgdGhlIGltYWdlIG9uIGEgcGFnZSBib3VuZGFyeS4gVGhp cyBnZXRzIHJvdW5kIGFsaWdubWVudCBidWdzCiAgICAgICogaW4gdGhlIGJvb3QtIG9yIGNoYWlu LWxvYWRlciAoZS5nLiwga2V4ZWMgb24gdGhlIFhlbm9Cb290IENEKS4KQEAgLTMyMiw2ICszNzks MzEgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogICAgIG91dF9zaGRyWzFdLnNo X3NpemUgICA9IGRhdF9zaXo7CiAgICAgb3V0X3NoZHJbMl0uc2hfb2Zmc2V0ID0gUkFXX09GRlNF VCArIGRhdF9zaXogKyBzaXplb2Yob3V0X3NoZHIpOwogCisgICAgaWYgKCBudW1fcGhkcnMgPiAx ICkKKyAgICB7CisgICAgICAgIC8qIFdlIGhhdmUgdHdvIG9mIHRoZW0hICovCisgICAgICAgIG91 dF9laGRyLmVfcGhudW0gPSBudW1fcGhkcnM7CisgICAgICAgIC8qIEV4dHJhIC5ub3RlIHNlY3Rp b24uICovCisgICAgICAgIG91dF9laGRyLmVfc2hudW0rKzsKKworICAgICAgICAvKiBGaWxsIG91 dCB0aGUgUFRfTk9URSBwcm9ncmFtIGhlYWRlci4gKi8KKyAgICAgICAgbm90ZV9waGRyLnBfdmFk ZHIgICA9IG5vdGVfYmFzZTsKKyAgICAgICAgbm90ZV9waGRyLnBfcGFkZHIgICA9IG5vdGVfYmFz ZTsKKyAgICAgICAgbm90ZV9waGRyLnBfZmlsZXN6ICA9IG5vdGVfc3o7CisgICAgICAgIG5vdGVf cGhkci5wX21lbXN6ICAgPSBub3RlX3N6OworICAgICAgICBub3RlX3BoZHIucF9vZmZzZXQgID0g b2Zmc2V0OworCisgICAgICAgIC8qIFRhY2sgb24gdGhlIC5ub3RlXDAgKi8KKyAgICAgICAgb3V0 X3NoZHJbMl0uc2hfc2l6ZSArPSBzaXplb2Yob3V0X3Noc3RydGFiX2V4dHJhKTsKKyAgICAgICAg LyogQW5kIG1vdmUgaXQgcGFzdCB0aGUgLm5vdGUgc2VjdGlvbi4gKi8KKyAgICAgICAgb3V0X3No ZHJbMl0uc2hfb2Zmc2V0ICs9IHNpemVvZihvdXRfc2hkcl9ub3RlKTsKKworICAgICAgICAvKiBG aWxsIG91dCB0aGUgLm5vdGUgc2VjdGlvbi4gKi8KKyAgICAgICAgb3V0X3NoZHJfbm90ZS5zaF9z aXplID0gbm90ZV9zejsKKyAgICAgICAgb3V0X3NoZHJfbm90ZS5zaF9hZGRyID0gbm90ZV9iYXNl OworICAgICAgICBvdXRfc2hkcl9ub3RlLnNoX29mZnNldCA9IFJBV19PRkZTRVQgKyBvZmZzZXQ7 CisgICAgfQorCiAgICAgb3V0ZmQgPSBvcGVuKG91dGltYWdlLCBPX1dST05MWXxPX0NSRUFUfE9f VFJVTkMsIDA3NzUpOwogICAgIGlmICggb3V0ZmQgPT0gLTEgKQogICAgIHsKQEAgLTMzNSw4ICs0 MTcsMTQgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCiAgICAgZW5kaWFuYWRq dXN0X3BoZHIzMigmb3V0X3BoZHIpOwogICAgIGRvX3dyaXRlKG91dGZkLCAmb3V0X3BoZHIsIHNp emVvZihvdXRfcGhkcikpOwotICAgIAotICAgIGlmICggKGJ5dGVzID0gUkFXX09GRlNFVCAtIHNp emVvZihvdXRfZWhkcikgLSBzaXplb2Yob3V0X3BoZHIpKSA8IDAgKQorCisgICAgaWYgKCBudW1f cGhkcnMgPiAxICkKKyAgICB7CisgICAgICAgIGVuZGlhbmFkanVzdF9waGRyMzIoJm5vdGVfcGhk cik7CisgICAgICAgIGRvX3dyaXRlKG91dGZkLCAmbm90ZV9waGRyLCBzaXplb2Yobm90ZV9waGRy KSk7CisgICAgfQorCisgICAgaWYgKCAoYnl0ZXMgPSBSQVdfT0ZGU0VUIC0gc2l6ZW9mKG91dF9l aGRyKSAtIChudW1fcGhkcnMgKiBzaXplb2Yob3V0X3BoZHIpKSApIDwgMCApCiAgICAgewogICAg ICAgICBmcHJpbnRmKHN0ZGVyciwgIkhlYWRlciBvdmVyZmxvdy5cbiIpOwogICAgICAgICByZXR1 cm4gMTsKQEAgLTM1NSw5ICs0NDMsMjIgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2 KQogICAgICAgICBlbmRpYW5hZGp1c3Rfc2hkcjMyKCZvdXRfc2hkcltpXSk7CiAgICAgZG9fd3Jp dGUob3V0ZmQsICZvdXRfc2hkclswXSwgc2l6ZW9mKG91dF9zaGRyKSk7CiAKLSAgICBkb193cml0 ZShvdXRmZCwgb3V0X3Noc3RydGFiLCBzaXplb2Yob3V0X3Noc3RydGFiKSk7Ci0gICAgZG9fd3Jp dGUob3V0ZmQsIGJ1ZmZlciwgNC0oKHNpemVvZihvdXRfc2hzdHJ0YWIpK2RhdF9zaXopJjMpKTsK LQorICAgIGlmICggbnVtX3BoZHJzID4gMSApCisgICAgeworICAgICAgICBlbmRpYW5hZGp1c3Rf c2hkcjMyKCZvdXRfc2hkcl9ub3RlKTsKKyAgICAgICAgLyogQXBwZW5kIHRoZSAubm90ZSBzZWN0 aW9uLiAqLworICAgICAgICBkb193cml0ZShvdXRmZCwgJm91dF9zaGRyX25vdGUsIHNpemVvZihv dXRfc2hkcl9ub3RlKSk7CisgICAgICAgIC8qIFRoZSBub3JtYWwgc3RyaW5ncyAtIC50ZXh0XDAu LiAqLworICAgICAgICBkb193cml0ZShvdXRmZCwgb3V0X3Noc3RydGFiLCBzaXplb2Yob3V0X3No c3RydGFiKSk7CisgICAgICAgIC8qIE91ciAubm90ZSAqLworICAgICAgICBkb193cml0ZShvdXRm ZCwgb3V0X3Noc3RydGFiX2V4dHJhLCBzaXplb2Yob3V0X3Noc3RydGFiX2V4dHJhKSk7CisgICAg ICAgIGRvX3dyaXRlKG91dGZkLCBidWZmZXIsIDQtKChzaXplb2Yob3V0X3Noc3RydGFiKStzaXpl b2Yob3V0X3Noc3RydGFiX2V4dHJhKStkYXRfc2l6KSYzKSk7CisgICAgfQorICAgIGVsc2UKKyAg ICB7CisgICAgICAgIGRvX3dyaXRlKG91dGZkLCBvdXRfc2hzdHJ0YWIsIHNpemVvZihvdXRfc2hz dHJ0YWIpKTsKKyAgICAgICAgZG9fd3JpdGUob3V0ZmQsIGJ1ZmZlciwgNC0oKHNpemVvZihvdXRf c2hzdHJ0YWIpK2RhdF9zaXopJjMpKTsKKyAgICB9CiAgICAgY2xvc2UoaW5mZCk7CiAgICAgY2xv c2Uob3V0ZmQpOwogCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYveGVuLmxkcy5TIGIveGVuL2Fy Y2gveDg2L3hlbi5sZHMuUwppbmRleCA1ZWI4MjVlLi5iM2Q4ODBmIDEwMDY0NAotLS0gYS94ZW4v YXJjaC94ODYveGVuLmxkcy5TCisrKyBiL3hlbi9hcmNoL3g4Ni94ZW4ubGRzLlMKQEAgLTMxLDYg KzMxLDkgQEAgT1VUUFVUX0FSQ0goaTM4Njp4ODYtNjQpCiBQSERSUwogewogICB0ZXh0IFBUX0xP QUQgOworI2lmIGRlZmluZWQoQlVJTERfSUQpICYmICFkZWZpbmVkKEVGSSkKKyAgbm90ZSBQVF9O T1RFIDsKKyNlbmRpZgogfQogU0VDVElPTlMKIHsKQEAgLTc5LDYgKzgyLDE2IEBAIFNFQ1RJT05T CiAgICAgICAgKigucm9kYXRhKQogICAgICAgICooLnJvZGF0YS4qKQogCisjaWYgZGVmaW5lZChC VUlMRF9JRCkgJiYgZGVmaW5lZChFRkkpCisvKgorICogTm8gbWVjaGFuaXNtIHRvIHB1dCBhbiBQ VF9OT1RFIGluIHRoZSBFRkkgZmlsZSAtIHNvIHB1dAorICogaXQgaW4gLnJvZGF0YSBzZWN0aW9u LiAobm90ZXMubyBzdXBwbGllcyB1cyB3aXRoIC5ub3RlLmdudS5idWlsZC1pZCkuCisgKi8KKyAg ICAgICAuID0gQUxJR04oNCk7CisgICAgICAgX19ub3RlX2dudV9idWlsZF9pZF9zdGFydCA9IC47 CisgICAgICAgKigubm90ZS5nbnUuYnVpbGQtaWQpCisgICAgICAgX19ub3RlX2dudV9idWlsZF9p ZF9lbmQgPSAuOworI2VuZGlmCiAgICAgICAgLiA9IEFMSUdOKDgpOwogICAgICAgIC8qIEV4Y2Vw dGlvbiB0YWJsZSAqLwogICAgICAgIF9fc3RhcnRfX19leF90YWJsZSA9IC47CkBAIC05OSw2ICsx MTIsMjEgQEAgU0VDVElPTlMKICAgICAgICBfZXJvZGF0YSA9IC47CiAgIH0gOnRleHQKIAorI2lm IGRlZmluZWQoQlVJTERfSUQpICYmICFkZWZpbmVkKEVGSSkKKy8qCisgKiBXaGF0IGEgc3RyYW5n ZSBzZWN0aW9uIG5hbWUuIFRoZSByZWFzb24gaXMgdGhhdCBvbiBFTEYgYnVpbGRzIHRoaXMgc2Vj dGlvbgorICogaXMgZXh0cmFjdGVkIHRvIG5vdGVzLm8gKHdoaWNoIHRoZW4gaXMgaW5nZXN0ZWQg aW4gdGhlIEVGSSBmaWxlKS4gQnV0IHRoZQorICogY29tcGlsZXIgbWF5IHdhbnQgdG8gaW5qZWN0 IG90aGVyIHRoaW5ncyBpbiB0aGUgLm5vdGUgd2hpY2ggd2UgZG9uJ3QgY2FyZQorICogYWJvdXQg LSBoZW5jZSB0aGlzIHVuaXF1ZSBuYW1lLgorICovCisgIC4gPSBBTElHTig0KTsKKyAgLm5vdGUu Z251LmJ1aWxkLWlkIDogeworICAgICAgIF9fbm90ZV9nbnVfYnVpbGRfaWRfc3RhcnQgPSAuOwor ICAgICAgICooLm5vdGUuZ251LmJ1aWxkLWlkKQorICAgICAgIF9fbm90ZV9nbnVfYnVpbGRfaWRf ZW5kID0gLjsKKyAgfSA6bm90ZSA6dGV4dAorI2VuZGlmCisKICNpZmRlZiBFRkkKICAgLiA9IEFM SUdOKE1CKDIpKTsKICNlbHNlCmRpZmYgLS1naXQgYS94ZW4vY29tbW9uL3ZlcnNpb24uYyBiL3hl bi9jb21tb24vdmVyc2lvbi5jCmluZGV4IGZjOWJmNDIuLjAxZDk0MDkgMTAwNjQ0Ci0tLSBhL3hl bi9jb21tb24vdmVyc2lvbi5jCisrKyBiL3hlbi9jb21tb24vdmVyc2lvbi5jCkBAIC0xLDQgKzEs OSBAQAogI2luY2x1ZGUgPHhlbi9jb21waWxlLmg+CisjaW5jbHVkZSA8eGVuL2luaXQuaD4KKyNp bmNsdWRlIDx4ZW4vZXJybm8uaD4KKyNpbmNsdWRlIDx4ZW4vc3RyaW5nLmg+CisjaW5jbHVkZSA8 eGVuL3R5cGVzLmg+CisjaW5jbHVkZSA8eGVuL2VsZi5oPgogI2luY2x1ZGUgPHhlbi92ZXJzaW9u Lmg+CiAKIGNvbnN0IGNoYXIgKnhlbl9jb21waWxlX2RhdGUodm9pZCkKQEAgLTYxLDYgKzY2LDUx IEBAIGNvbnN0IGNoYXIgKnhlbl9kZW55KHZvaWQpCiAgICAgcmV0dXJuICI8ZGVuaWVkPiI7CiB9 CiAKK3N0YXRpYyBjb25zdCB2b2lkICpidWlsZF9pZF9wOworc3RhdGljIHVuc2lnbmVkIGludCBi dWlsZF9pZF9sZW47CisKK2ludCB4ZW5fYnVpbGRfaWQoY29uc3Qgdm9pZCAqKnAsIHVuc2lnbmVk IGludCAqbGVuKQoreworICAgIGlmICggIWJ1aWxkX2lkX2xlbiApCisgICAgICAgIHJldHVybiAt RU5PREFUQTsKKworICAgICpsZW4gPSBidWlsZF9pZF9sZW47CisgICAgKnAgPSBidWlsZF9pZF9w OworCisgICAgcmV0dXJuIDA7Cit9CisKKyNpZmRlZiBCVUlMRF9JRAorLyogRGVmaW5lZCBpbiBs aW5rZXIgc2NyaXB0LiAqLworZXh0ZXJuIGNvbnN0IEVsZl9Ob3RlIF9fbm90ZV9nbnVfYnVpbGRf aWRfc3RhcnRbXSwgX19ub3RlX2dudV9idWlsZF9pZF9lbmRbXTsKKworc3RhdGljIGludCBfX2lu aXQgeGVuX2J1aWxkX2luaXQodm9pZCkKK3sKKyAgICBjb25zdCBFbGZfTm90ZSAqbiA9IF9fbm90 ZV9nbnVfYnVpbGRfaWRfc3RhcnQ7CisKKyAgICAvKiAtLWJ1aWxkLWlkIGludm9rZWQgd2l0aCB3 cm9uZyBwYXJhbWV0ZXJzLiAqLworICAgIGlmICggX19ub3RlX2dudV9idWlsZF9pZF9lbmQgPD0g Jm5bMF0gKQorICAgICAgICByZXR1cm4gLUVOT0RBVEE7CisKKyAgICAvKiBDaGVjayBmb3IgZnVs bCBOb3RlIGhlYWRlci4gKi8KKyAgICBpZiAoICZuWzFdID4gX19ub3RlX2dudV9idWlsZF9pZF9l bmQgKQorICAgICAgICByZXR1cm4gLUVOT0RBVEE7OworCisgICAgLyogQ2hlY2sgaWYgd2UgcmVh bGx5IGhhdmUgYSBidWlsZC1pZC4gKi8KKyAgICBpZiAoIE5UX0dOVV9CVUlMRF9JRCAhPSBuLT50 eXBlICkKKyAgICAgICAgcmV0dXJuIC1FTk9EQVRBOworCisgICAgLyogU2FuaXR5IGNoZWNrLCBu YW1lIHNob3VsZCBiZSAiR05VIiBmb3IgbGQtZ2VuZXJhdGVkIGJ1aWxkLWlkLiAqLworICAgIGlm ICggc3RybmNtcChFTEZOT1RFX05BTUUobiksICJHTlUiLCBuLT5uYW1lc3opICE9IDAgKQorICAg ICAgICByZXR1cm4gLUVOT0RBVEE7CisKKyAgICBidWlsZF9pZF9sZW4gPSBuLT5kZXNjc3o7Cisg ICAgYnVpbGRfaWRfcCA9IEVMRk5PVEVfREVTQyhuKTsKKworICAgIHJldHVybiAwOworfQorX19p bml0Y2FsbCh4ZW5fYnVpbGRfaW5pdCk7CisjZW5kaWYKIC8qCiAgKiBMb2NhbCB2YXJpYWJsZXM6 CiAgKiBtb2RlOiBDCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS94ZW4vZWxmc3RydWN0cy5oIGIv eGVuL2luY2x1ZGUveGVuL2VsZnN0cnVjdHMuaAppbmRleCBiZTU1OTg1Li41YmFiYWM3IDEwMDY0 NAotLS0gYS94ZW4vaW5jbHVkZS94ZW4vZWxmc3RydWN0cy5oCisrKyBiL3hlbi9pbmNsdWRlL3hl bi9lbGZzdHJ1Y3RzLmgKQEAgLTQwLDYgKzQwLDkgQEAgdHlwZWRlZiB1aW50MzJfdAlFbGY2NF9X b3JkOwogdHlwZWRlZiBpbnQ2NF90CQlFbGY2NF9TeHdvcmQ7CiB0eXBlZGVmIHVpbnQ2NF90CUVs ZjY0X1h3b3JkOwogCisvKiBVbmlxdWUgYnVpbGQgaWQgc3RyaW5nIGZvcm1hdCB3aGVuIHVzaW5n IC0tYnVpbGQtaWQuICovCisjZGVmaW5lIE5UX0dOVV9CVUlMRF9JRCAzCisKIC8qCiAgKiBlX2lk ZW50W10gaWRlbnRpZmljYXRpb24gaW5kZXhlcwogICogU2VlIGh0dHA6Ly93d3cuY2FsZGVyYS5j b20vZGV2ZWxvcGVycy9nYWJpLzIwMDAtMDctMTcvY2g0LmVoZWFkZXIuaHRtbCAKZGlmZiAtLWdp dCBhL3hlbi9pbmNsdWRlL3hlbi92ZXJzaW9uLmggYi94ZW4vaW5jbHVkZS94ZW4vdmVyc2lvbi5o CmluZGV4IDIwMTVjMGIuLjQwMDE2MGYgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3hlbi92ZXJz aW9uLmgKKysrIGIveGVuL2luY2x1ZGUveGVuL3ZlcnNpb24uaApAQCAtMTMsNSArMTMsNiBAQCBj b25zdCBjaGFyICp4ZW5fZXh0cmFfdmVyc2lvbih2b2lkKTsKIGNvbnN0IGNoYXIgKnhlbl9jaGFu Z2VzZXQodm9pZCk7CiBjb25zdCBjaGFyICp4ZW5fYmFubmVyKHZvaWQpOwogY29uc3QgY2hhciAq eGVuX2Rlbnkodm9pZCk7CitpbnQgeGVuX2J1aWxkX2lkKGNvbnN0IHZvaWQgKipwLCB1bnNpZ25l ZCBpbnQgKmxlbik7CiAKICNlbmRpZiAvKiBfX1hFTl9WRVJTSU9OX0hfXyAqLwotLSAKMi41LjAK CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2 ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHA6Ly9saXN0cy54ZW4u b3JnL3hlbi1kZXZlbAo=