From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.4 required=3.0 tests=DKIM_ADSP_ALL,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7ADD8C3A5A3 for ; Tue, 27 Aug 2019 08:47:31 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 3AB0F206BB for ; Tue, 27 Aug 2019 08:47:31 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=amazon.de header.i=@amazon.de header.b="QSt2nd2y" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 3AB0F206BB Authentication-Results: mail.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=amazon.de Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1i2X8I-0002cN-Rh; Tue, 27 Aug 2019 08:47:18 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1i2X8G-0002YZ-I5 for xen-devel@lists.xenproject.org; Tue, 27 Aug 2019 08:47:16 +0000 X-Inumbo-ID: 42e0a9aa-c8a7-11e9-951b-bc764e2007e4 Received: from smtp-fw-6002.amazon.com (unknown [52.95.49.90]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id 42e0a9aa-c8a7-11e9-951b-bc764e2007e4; Tue, 27 Aug 2019 08:47:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.de; i=@amazon.de; q=dns/txt; s=amazon201209; t=1566895631; x=1598431631; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version; bh=O88hX2H5OBpGUl7Mt2EXNuyjnKbM/KrvNmZHhxPHVvU=; b=QSt2nd2yKRIIU74UdmW+aE6ATsUvW5mb9o0eUt9qJSmotfjYxJrhzY7r UqxlDNqAxybr60eGw2XIQSfZVqNAWYWC8rEBMXjYlbaM3tjOxBHiLf/+r c9fgJKHcoATU3W5pd5Xo2YE8btvi9b5jn+M3ISUbdCiooNTY+v1QjegAS 4=; X-IronPort-AV: E=Sophos;i="5.64,436,1559520000"; d="scan'208";a="417885648" Received: from iad6-co-svc-p1-lb1-vlan3.amazon.com (HELO email-inbound-relay-1a-715bee71.us-east-1.amazon.com) ([10.124.125.6]) by smtp-border-fw-out-6002.iad6.amazon.com with ESMTP; 27 Aug 2019 08:47:11 +0000 Received: from EX13MTAUEA001.ant.amazon.com (iad55-ws-svc-p15-lb9-vlan2.iad.amazon.com [10.40.159.162]) by email-inbound-relay-1a-715bee71.us-east-1.amazon.com (Postfix) with ESMTPS id 5FCF7A22C7; Tue, 27 Aug 2019 08:47:07 +0000 (UTC) Received: from EX13D03EUC003.ant.amazon.com (10.43.164.192) by EX13MTAUEA001.ant.amazon.com (10.43.61.243) with Microsoft SMTP Server (TLS) id 15.0.1367.3; Tue, 27 Aug 2019 08:46:51 +0000 Received: from EX13MTAUEE001.ant.amazon.com (10.43.62.200) by EX13D03EUC003.ant.amazon.com (10.43.164.192) with Microsoft SMTP Server (TLS) id 15.0.1367.3; Tue, 27 Aug 2019 08:46:50 +0000 Received: from dev-dsk-wipawel-1a-0c4e6d58.eu-west-1.amazon.com (10.4.134.33) by mail-relay.amazon.com (10.43.62.226) with Microsoft SMTP Server id 15.0.1367.3 via Frontend Transport; Tue, 27 Aug 2019 08:46:48 +0000 From: Pawel Wieczorkiewicz To: , Date: Tue, 27 Aug 2019 08:46:19 +0000 Message-ID: <20190827084624.116917-8-wipawel@amazon.de> X-Mailer: git-send-email 2.16.5 In-Reply-To: <20190827084624.116917-1-wipawel@amazon.de> References: <20190821081931.90887-1-wipawel@amazon.de> <20190827084624.116917-1-wipawel@amazon.de> MIME-Version: 1.0 Precedence: Bulk Subject: [Xen-devel] [PATCH v2 07/12] livepatch: Add per-function applied/reverted state tracking marker X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: wipawel@amazon.com, Stefano Stabellini , Wei Liu , Konrad Rzeszutek Wilk , George Dunlap , Andrew Cooper , Ross Lagerwall , Ian Jackson , mpohlack@amazon.com, Tim Deegan , Pawel Wieczorkiewicz , Julien Grall , Jan Beulich , Volodymyr Babchuk , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" TGl2ZXBhdGNoIG9ubHkgdHJhY2tzIGFuIGVudGlyZSBwYXlsb2FkIGFwcGxpZWQvcmV2ZXJ0ZWQg c3RhdGUuIEJ1dCwKd2l0aCBhbiBvcHRpb24gdG8gc3VwcGx5IHRoZSBhcHBseV9wYXlsb2FkKCkg YW5kL29yIHJldmVydF9wYXlsb2FkKCkKZnVuY3Rpb25zIGFzIG9wdGlvbmFsIGhvb2tzLCBpdCBi ZWNvbWVzIHBvc3NpYmxlIHRvIGludGVybWl4IHRoZQpleGVjdXRpb24gb2YgdGhlIG9yaWdpbmFs IGFwcGx5X3BheWxvYWQoKS9yZXZlcnRfcGF5bG9hZCgpIGZ1bmN0aW9ucwp3aXRoIHRoZWlyIGR5 bmFtaWNhbGx5IHN1cHBsaWVkIGNvdW50ZXJwYXJ0cy4KSXQgaXMgaW1wb3J0YW50IHRoZW4gdG8g dHJhY2sgdGhlIGN1cnJlbnQgc3RhdGUgb2YgZXZlcnkgZnVuY3Rpb24KYmVpbmcgcGF0Y2hlZCBh bmQgcHJldmVudCBzaXR1YXRpb25zIG9mIHVuaW50ZW50aW9uYWwgZG91YmxlLWFwcGx5Cm9yIHVu YXBwbGllZCByZXZlcnQuCgpUbyBzdXBwb3J0IHRoYXQsIGl0IGlzIG5lY2Vzc2FyeSB0byBleHRl bmQgcHVibGljIGludGVyZmFjZSBvZiB0aGUKbGl2ZXBhdGNoLiBUaGUgc3RydWN0IGxpdmVwYXRj aF9mdW5jIGdldHMgYWRkaXRpb25hbCBmaWVsZCBob2xkaW5nCnRoZSBhcHBsaWVkL3JldmVydGVk IHN0YXRlIG1hcmtlci4KClRvIHJlZmxlY3QgdGhlIGxpdmVwYXRjaCBwYXlsb2FkIEFCSSBjaGFu Z2UsIGJ1bXAgdGhlIHZlcnNpb24gZmxhZwpMSVZFUEFUQ0hfUEFZTE9BRF9WRVJTSU9OIHVwIHRv IDIuCgpTaWduZWQtb2ZmLWJ5OiBQYXdlbCBXaWVjem9ya2lld2ljeiA8d2lwYXdlbEBhbWF6b24u ZGU+ClJldmlld2VkLWJ5OiBBbmRyYS1JcmluYSBQYXJhc2NoaXYgPGFuZHJhcHJzQGFtYXpvbi5j b20+ClJldmlld2VkLWJ5OiBCam9lcm4gRG9lYmVsIDxkb2ViZWxAYW1hem9uLmRlPgpSZXZpZXdl ZC1ieTogTWFydGluIFBvaGxhY2sgPG1wb2hsYWNrQGFtYXpvbi5kZT4KLS0tCkNoYW5nZWQgc2lu Y2UgdjE6CiAgKiBzdXBwb3J0IHRoZSBmZWF0dXJlIGZvciBhbGwgYXJjaCAoYWRkIGhhbmRsaW5n IGZvciBBcm0pCiAgKiBhZGQgY29tbW9uIGlzX2Z1bmNfYXBwbGllZCgpIGFuZCBpc19mdW5jX3Jl dmVydGVkKCkgdG8gYmUKICAgIHVzZWQgYnkgYWxsIGFyY2gKICAqIHJlbW92ZSBleHBsaWNpdCBl bnVtIHZhbHVlcyBmcm9tIGVudW0gbGl2ZXBhdGNoX2Z1bmNfc3RhdGUKICAqIGFkZGVkIGNvcnJl c3BvbmRpbmcgZG9jdW1lbnRhdGlvbgogICogYWRkZWQgdGVzdHMKCiBkb2NzL21pc2MvbGl2ZXBh dGNoLnBhbmRvYyAgICAgICAgICAgICAgICAgICAgIHwgIDE1ICsrLQogeGVuL2FyY2gvYXJtL2Fy bTMyL2xpdmVwYXRjaC5jICAgICAgICAgICAgICAgICB8ICAxMiArKy0KIHhlbi9hcmNoL2FybS9h cm02NC9saXZlcGF0Y2guYyAgICAgICAgICAgICAgICAgfCAgMTIgKystCiB4ZW4vYXJjaC9hcm0v bGl2ZXBhdGNoLmMgICAgICAgICAgICAgICAgICAgICAgIHwgIDEwICstCiB4ZW4vYXJjaC94ODYv bGl2ZXBhdGNoLmMgICAgICAgICAgICAgICAgICAgICAgIHwgIDIyICsrKy0KIHhlbi9jb21tb24v bGl2ZXBhdGNoLmMgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMzUgKysrKysrCiB4ZW4vaW5j bHVkZS9wdWJsaWMvc3lzY3RsLmggICAgICAgICAgICAgICAgICAgIHwgICA5ICstCiB4ZW4vaW5j bHVkZS94ZW4vbGl2ZXBhdGNoLmggICAgICAgICAgICAgICAgICAgIHwgIDI3ICsrKystCiB4ZW4v dGVzdC9saXZlcGF0Y2gvTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgIHwgIDI3ICsrKystCiB4 ZW4vdGVzdC9saXZlcGF0Y2gveGVuX2FjdGlvbl9ob29rcy5jICAgICAgICAgIHwgICAyICsKIHhl bi90ZXN0L2xpdmVwYXRjaC94ZW5fYWN0aW9uX2hvb2tzX21hcmtlci5jICAgfCAxMTIgKysrKysr KysrKysrKysrKysrKwogeGVuL3Rlc3QvbGl2ZXBhdGNoL3hlbl9hY3Rpb25faG9va3Nfbm9hcHBs eS5jICB8IDEzNiArKysrKysrKysrKysrKysrKysrKysrKwogeGVuL3Rlc3QvbGl2ZXBhdGNoL3hl bl9hY3Rpb25faG9va3Nfbm9yZXZlcnQuYyB8IDE0MyArKysrKysrKysrKysrKysrKysrKysrKysr CiAxMyBmaWxlcyBjaGFuZ2VkLCA1NTMgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKIGNy ZWF0ZSBtb2RlIDEwMDY0NCB4ZW4vdGVzdC9saXZlcGF0Y2gveGVuX2FjdGlvbl9ob29rc19tYXJr ZXIuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi90ZXN0L2xpdmVwYXRjaC94ZW5fYWN0aW9uX2hv b2tzX25vYXBwbHkuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi90ZXN0L2xpdmVwYXRjaC94ZW5f YWN0aW9uX2hvb2tzX25vcmV2ZXJ0LmMKCmRpZmYgLS1naXQgYS9kb2NzL21pc2MvbGl2ZXBhdGNo LnBhbmRvYyBiL2RvY3MvbWlzYy9saXZlcGF0Y2gucGFuZG9jCmluZGV4IDZmYWZiOWU0YjEuLjZh YjdmNGMyZDIgMTAwNjQ0Ci0tLSBhL2RvY3MvbWlzYy9saXZlcGF0Y2gucGFuZG9jCisrKyBiL2Rv Y3MvbWlzYy9saXZlcGF0Y2gucGFuZG9jCkBAIC0yOTcsMTAgKzI5NywxNCBAQCB3aGljaCBkZXNj cmliZSB0aGUgZnVuY3Rpb25zIHRvIGJlIHBhdGNoZWQ6CiAgICAgICAgIHVpbnQzMl90IG9sZF9z aXplOwogICAgICAgICB1aW50OF90IHZlcnNpb247CiAgICAgICAgIHVpbnQ4X3Qgb3BhcXVlWzMx XTsKKyAgICAgICAgLyogQWRkZWQgdG8gbGl2ZXBhdGNoIHBheWxvYWQgdmVyc2lvbiAyOiAqLwor ICAgICAgICB1aW50OF90IGFwcGxpZWQ7CisgICAgICAgIHVpbnQ4X3QgX3BhZFs3XTsKICAgICB9 OwogCiBUaGUgc2l6ZSBvZiB0aGUgc3RydWN0dXJlIGlzIDY0IGJ5dGVzIG9uIDY0LWJpdCBoeXBl cnZpc29ycy4gSXQgd2lsbCBiZQogNTIgb24gMzItYml0IGh5cGVydmlzb3JzLgorVGhlIHZlcnNp b24gMiBvZiB0aGUgcGF5bG9hZCBhZGRzIGFkZGl0aW9uYWwgOCBieXRlcyB0byB0aGUgc3RydWN0 dXJlIHNpemUuCiAKICAqIGBuYW1lYCBpcyB0aGUgc3ltYm9sIG5hbWUgb2YgdGhlIG9sZCBmdW5j dGlvbi4gT25seSB1c2VkIGlmIGBvbGRfYWRkcmAgaXMKICAgIHplcm8sIG90aGVyd2lzZSB3aWxs IGJlIHVzZWQgZHVyaW5nIGR5bmFtaWMgbGlua2luZyAod2hlbiBoeXBlcnZpc29yIGxvYWRzCkBA IC0zMjQsOSArMzI4LDE1IEBAIFRoZSBzaXplIG9mIHRoZSBzdHJ1Y3R1cmUgaXMgNjQgYnl0ZXMg b24gNjQtYml0IGh5cGVydmlzb3JzLiBJdCB3aWxsIGJlCiAgICAqIElmIHRoZSB2YWx1ZSBvZiBg bmV3X2FkZHJgIGlzIHplcm8gdGhlbiBgbmV3X3NpemVgIGRldGVybWluZXMgaG93IG1hbnkKICAg ICBpbnN0cnVjdGlvbiBieXRlcyB0byBOT1AgKHVwIHRvIG9wYXF1ZSBzaXplIG1vZHVsbyBzbWFs bGVzdCBwbGF0Zm9ybQogICAgIGluc3RydWN0aW9uIC0gMSBieXRlIHg4NiBhbmQgNCBieXRlcyBv biBBUk0pLgotICogYHZlcnNpb25gIGlzIHRvIGJlIG9uZS4KKyAqIGB2ZXJzaW9uYCBpbmRpY2F0 ZXMgdmVyc2lvbiBvZiB0aGUgZ2VuZXJhdGVkIHBheWxvYWQuCiAgKiBgb3BhcXVlYCAqKk1VU1Qq KiBiZSB6ZXJvLgogCitUaGUgdmVyc2lvbiAyIG9mIHRoZSBwYXlsb2FkIGFkZHMgdGhlIGZvbGxv d2luZyBmaWVsZHMgdG8gdGhlIHN0cnVjdHVyZToKKworICAqIGBhcHBsaWVkYCB0cmFja3MgZnVu Y3Rpb24ncyBhcHBsaWVkL3JldmVydGVkIHN0YXRlLiBJdCBoYXMgYSBib29sZWFuIHR5cGUKKyAg ICBlaXRoZXIgTElWRVBBVENIX0ZVTkNfTk9UX0FQUExJRUQgb3IgTElWRVBBVENIX0ZVTkNfQVBQ TElFRC4KKyAgKiBgX3BhZFs3XWAgYWRkcyBwYWRkaW5nIHRvIGFsaWduIHRvIDggYnl0ZXMuCisK IFRoZSBzaXplIG9mIHRoZSBgbGl2ZXBhdGNoX2Z1bmNgIGFycmF5IGlzIGRldGVybWluZWQgZnJv bSB0aGUgRUxGIHNlY3Rpb24KIHNpemUuCiAKQEAgLTM3OCw2ICszODgsOSBAQCBBIHNpbXBsZSBl eGFtcGxlIG9mIHdoYXQgYSBwYXlsb2FkIGZpbGUgY2FuIGJlOgogICAgICAgICB1aW50MzJfdCBv bGRfc2l6ZTsKICAgICAgICAgdWludDhfdCB2ZXJzaW9uOwogICAgICAgICB1aW50OF90IHBhZFsz MV07CisgICAgICAgIC8qIEFkZGVkIHRvIGxpdmVwYXRjaCBwYXlsb2FkIHZlcnNpb24gMjogKi8K KyAgICAgICAgdWludDhfdCBhcHBsaWVkOworICAgICAgICB1aW50OF90IF9wYWRbN107CiAgICAg fTsKIAogICAgIC8qIE91ciByZXBsYWNlbWVudCBmdW5jdGlvbiBmb3IgeGVuX2V4dHJhX3ZlcnNp b24uICovCmRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vYXJtMzIvbGl2ZXBhdGNoLmMgYi94ZW4v YXJjaC9hcm0vYXJtMzIvbGl2ZXBhdGNoLmMKaW5kZXggNDEzNzhhNTRhZS4uNzY3ODBkNjliZiAx MDA2NDQKLS0tIGEveGVuL2FyY2gvYXJtL2FybTMyL2xpdmVwYXRjaC5jCisrKyBiL3hlbi9hcmNo L2FybS9hcm0zMi9saXZlcGF0Y2guYwpAQCAtMjIsOSArMjIsMTYgQEAgdm9pZCBhcmNoX2xpdmVw YXRjaF9hcHBseShzdHJ1Y3QgbGl2ZXBhdGNoX2Z1bmMgKmZ1bmMpCiAKICAgICBBU1NFUlQodm1h cF9vZl94ZW5fdGV4dCk7CiAKKyAgICAvKgorICAgICAqIElmIHRoZSBhcHBseSBhY3Rpb24gaGFz IGJlZW4gYWxyZWFkeSBleGVjdXRlZAorICAgICAqIG9uIHRoaXMgZnVuY3Rpb24sIGRvIG5vdGhp bmcuLi4KKyAgICAgKi8KKyAgICBpZiAoIGlzX2Z1bmNfYXBwbGllZChmdW5jKSApCisgICAgICAg IHJldHVybjsKKwogICAgIGxlbiA9IGxpdmVwYXRjaF9pbnNuX2xlbihmdW5jKTsKICAgICBpZiAo ICFsZW4gKQotICAgICAgICByZXR1cm47CisgICAgICAgIGdvdG8gYXBwbGllZDsKIAogICAgIC8q IFNhdmUgb2xkIG9uZXMuICovCiAgICAgbWVtY3B5KGZ1bmMtPm9wYXF1ZSwgZnVuYy0+b2xkX2Fk ZHIsIGxlbik7CkBAIC03Myw2ICs4MCw5IEBAIHZvaWQgYXJjaF9saXZlcGF0Y2hfYXBwbHkoc3Ry dWN0IGxpdmVwYXRjaF9mdW5jICpmdW5jKQogICAgIGlmICggZnVuYy0+bmV3X2FkZHIgKQogICAg ICAgICBjbGVhbl9hbmRfaW52YWxpZGF0ZV9kY2FjaGVfdmFfcmFuZ2UoZnVuYy0+bmV3X2FkZHIs IGZ1bmMtPm5ld19zaXplKTsKICAgICBjbGVhbl9hbmRfaW52YWxpZGF0ZV9kY2FjaGVfdmFfcmFu Z2UobmV3X3B0ciwgc2l6ZW9mICgqbmV3X3B0cikgKiBsZW4pOworCithcHBsaWVkOgorICAgIGZ1 bmMtPmFwcGxpZWQgPSBMSVZFUEFUQ0hfRlVOQ19BUFBMSUVEOwogfQogCiAvKiBhcmNoX2xpdmVw YXRjaF9yZXZlcnQgc2hhcmVkIHdpdGggQVJNIDMyL0FSTSA2NC4gKi8KZGlmZiAtLWdpdCBhL3hl bi9hcmNoL2FybS9hcm02NC9saXZlcGF0Y2guYyBiL3hlbi9hcmNoL2FybS9hcm02NC9saXZlcGF0 Y2guYwppbmRleCA1Yzc1Nzc5Mjg0Li42MWE3NjQ4MTZjIDEwMDY0NAotLS0gYS94ZW4vYXJjaC9h cm0vYXJtNjQvbGl2ZXBhdGNoLmMKKysrIGIveGVuL2FyY2gvYXJtL2FybTY0L2xpdmVwYXRjaC5j CkBAIC0yNiw5ICsyNiwxNiBAQCB2b2lkIGFyY2hfbGl2ZXBhdGNoX2FwcGx5KHN0cnVjdCBsaXZl cGF0Y2hfZnVuYyAqZnVuYykKIAogICAgIEFTU0VSVCh2bWFwX29mX3hlbl90ZXh0KTsKIAorICAg IC8qCisgICAgICogSWYgdGhlIGFwcGx5IGFjdGlvbiBoYXMgYmVlbiBhbHJlYWR5IGV4ZWN1dGVk CisgICAgICogb24gdGhpcyBmdW5jdGlvbiwgZG8gbm90aGluZy4uLgorICAgICAqLworICAgIGlm ICggaXNfZnVuY19hcHBsaWVkKGZ1bmMpICkKKyAgICAgICAgIHJldHVybjsKKwogICAgIGxlbiA9 IGxpdmVwYXRjaF9pbnNuX2xlbihmdW5jKTsKICAgICBpZiAoICFsZW4gKQotICAgICAgICByZXR1 cm47CisgICAgICAgIGdvdG8gYXBwbGllZDsKIAogICAgIC8qIFNhdmUgb2xkIG9uZXMuICovCiAg ICAgbWVtY3B5KGZ1bmMtPm9wYXF1ZSwgZnVuYy0+b2xkX2FkZHIsIGxlbik7CkBAIC02MCw2ICs2 Nyw5IEBAIHZvaWQgYXJjaF9saXZlcGF0Y2hfYXBwbHkoc3RydWN0IGxpdmVwYXRjaF9mdW5jICpm dW5jKQogICAgIGlmICggZnVuYy0+bmV3X2FkZHIgKQogICAgICAgICBjbGVhbl9hbmRfaW52YWxp ZGF0ZV9kY2FjaGVfdmFfcmFuZ2UoZnVuYy0+bmV3X2FkZHIsIGZ1bmMtPm5ld19zaXplKTsKICAg ICBjbGVhbl9hbmRfaW52YWxpZGF0ZV9kY2FjaGVfdmFfcmFuZ2UobmV3X3B0ciwgc2l6ZW9mICgq bmV3X3B0cikgKiBsZW4pOworCithcHBsaWVkOgorICAgIGZ1bmMtPmFwcGxpZWQgPSBMSVZFUEFU Q0hfRlVOQ19BUFBMSUVEOwogfQogCiAvKiBhcmNoX2xpdmVwYXRjaF9yZXZlcnQgc2hhcmVkIHdp dGggQVJNIDMyL0FSTSA2NC4gKi8KZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9saXZlcGF0Y2gu YyBiL3hlbi9hcmNoL2FybS9saXZlcGF0Y2guYwppbmRleCAyNzlkNTJjYzZjLi4wMjI0MDJkNTVm IDEwMDY0NAotLS0gYS94ZW4vYXJjaC9hcm0vbGl2ZXBhdGNoLmMKKysrIGIveGVuL2FyY2gvYXJt L2xpdmVwYXRjaC5jCkBAIC03MywxNyArNzMsMjUgQEAgaW50IGFyY2hfbGl2ZXBhdGNoX3Zlcmlm eV9mdW5jKGNvbnN0IHN0cnVjdCBsaXZlcGF0Y2hfZnVuYyAqZnVuYykKICAgICByZXR1cm4gMDsK IH0KIAotdm9pZCBhcmNoX2xpdmVwYXRjaF9yZXZlcnQoY29uc3Qgc3RydWN0IGxpdmVwYXRjaF9m dW5jICpmdW5jKQordm9pZCBhcmNoX2xpdmVwYXRjaF9yZXZlcnQoc3RydWN0IGxpdmVwYXRjaF9m dW5jICpmdW5jKQogewogICAgIHVpbnQzMl90ICpuZXdfcHRyOwogICAgIHVuc2lnbmVkIGludCBs ZW47CiAKKyAgICAvKgorICAgICAqIElmIHRoZSBhcHBseSBhY3Rpb24gaGFzbid0IGJlZW4gZXhl Y3V0ZWQKKyAgICAgKiBvbiB0aGlzIGZ1bmN0aW9uLCBkbyBub3RoaW5nLi4uCisgICAgICovCisg ICAgaWYgKCBpc19mdW5jX3JldmVydGVkKGZ1bmMpICkKKyAgICAgICAgcmV0dXJuOworCiAgICAg bmV3X3B0ciA9IGZ1bmMtPm9sZF9hZGRyIC0gKHZvaWQgKilfc3RhcnQgKyB2bWFwX29mX3hlbl90 ZXh0OwogCiAgICAgbGVuID0gbGl2ZXBhdGNoX2luc25fbGVuKGZ1bmMpOwogICAgIG1lbWNweShu ZXdfcHRyLCBmdW5jLT5vcGFxdWUsIGxlbik7CiAKICAgICBjbGVhbl9hbmRfaW52YWxpZGF0ZV9k Y2FjaGVfdmFfcmFuZ2UobmV3X3B0ciwgbGVuKTsKKyAgICBmdW5jLT5hcHBsaWVkID0gTElWRVBB VENIX0ZVTkNfTk9UX0FQUExJRUQ7CiB9CiAKIHZvaWQgYXJjaF9saXZlcGF0Y2hfcG9zdF9hY3Rp b24odm9pZCkKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9saXZlcGF0Y2guYyBiL3hlbi9hcmNo L3g4Ni9saXZlcGF0Y2guYwppbmRleCBjODJjZjUzYjllLi41NzAxYzkwZTQ4IDEwMDY0NAotLS0g YS94ZW4vYXJjaC94ODYvbGl2ZXBhdGNoLmMKKysrIGIveGVuL2FyY2gveDg2L2xpdmVwYXRjaC5j CkBAIC01NiwxMCArNTYsMTcgQEAgdm9pZCBub2lubGluZSBhcmNoX2xpdmVwYXRjaF9hcHBseShz dHJ1Y3QgbGl2ZXBhdGNoX2Z1bmMgKmZ1bmMpCiAgICAgdWludDhfdCBpbnNuW3NpemVvZihmdW5j LT5vcGFxdWUpXTsKICAgICB1bnNpZ25lZCBpbnQgbGVuOwogCisgICAgLyoKKyAgICAgKiBJZiB0 aGUgYXBwbHkgYWN0aW9uIGhhcyBiZWVuIGFscmVhZHkgZXhlY3V0ZWQKKyAgICAgKiBvbiB0aGlz IGZ1bmN0aW9uLCBkbyBub3RoaW5nLi4uCisgICAgICovCisgICAgaWYgKCBpc19mdW5jX2FwcGxp ZWQoZnVuYykgKQorICAgICAgICAgcmV0dXJuOworCiAgICAgb2xkX3B0ciA9IGZ1bmMtPm9sZF9h ZGRyOwogICAgIGxlbiA9IGxpdmVwYXRjaF9pbnNuX2xlbihmdW5jKTsKICAgICBpZiAoICFsZW4g KQotICAgICAgICByZXR1cm47CisgICAgICAgIGdvdG8gYXBwbGllZDsKIAogICAgIG1lbWNweShm dW5jLT5vcGFxdWUsIG9sZF9wdHIsIGxlbik7CiAgICAgaWYgKCBmdW5jLT5uZXdfYWRkciApCkBA IC03NywxNSArODQsMjYgQEAgdm9pZCBub2lubGluZSBhcmNoX2xpdmVwYXRjaF9hcHBseShzdHJ1 Y3QgbGl2ZXBhdGNoX2Z1bmMgKmZ1bmMpCiAgICAgICAgIGFkZF9ub3BzKGluc24sIGxlbik7CiAK ICAgICBtZW1jcHkob2xkX3B0ciwgaW5zbiwgbGVuKTsKKworYXBwbGllZDoKKyAgICBmdW5jLT5h cHBsaWVkID0gTElWRVBBVENIX0ZVTkNfQVBQTElFRDsKIH0KIAogLyoKICAqICJub2lubGluZSIg dG8gY2F1c2UgY29udHJvbCBmbG93IGNoYW5nZSBhbmQgdGh1cyBpbnZhbGlkYXRlIEkkIGFuZAog ICogY2F1c2UgcmVmZXRjaCBhZnRlciBtb2RpZmljYXRpb24uCiAgKi8KLXZvaWQgbm9pbmxpbmUg YXJjaF9saXZlcGF0Y2hfcmV2ZXJ0KGNvbnN0IHN0cnVjdCBsaXZlcGF0Y2hfZnVuYyAqZnVuYykK K3ZvaWQgbm9pbmxpbmUgYXJjaF9saXZlcGF0Y2hfcmV2ZXJ0KHN0cnVjdCBsaXZlcGF0Y2hfZnVu YyAqZnVuYykKIHsKKyAgICAvKgorICAgICAqIElmIHRoZSBhcHBseSBhY3Rpb24gaGFzbid0IGJl ZW4gZXhlY3V0ZWQKKyAgICAgKiBvbiB0aGlzIGZ1bmN0aW9uLCBkbyBub3RoaW5nLi4uCisgICAg ICovCisgICAgaWYgKCBpc19mdW5jX3JldmVydGVkKGZ1bmMpICkKKyAgICAgICAgcmV0dXJuOwor CiAgICAgbWVtY3B5KGZ1bmMtPm9sZF9hZGRyLCBmdW5jLT5vcGFxdWUsIGxpdmVwYXRjaF9pbnNu X2xlbihmdW5jKSk7CisgICAgZnVuYy0+YXBwbGllZCA9IExJVkVQQVRDSF9GVU5DX05PVF9BUFBM SUVEOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9saXZlcGF0Y2guYyBiL3hlbi9j b21tb24vbGl2ZXBhdGNoLmMKaW5kZXggNzA1YjViODE1MS4uZDc2NjE5ODQ0YyAxMDA2NDQKLS0t IGEveGVuL2NvbW1vbi9saXZlcGF0Y2guYworKysgYi94ZW4vY29tbW9uL2xpdmVwYXRjaC5jCkBA IC0xMjQwLDYgKzEyNDAsMjkgQEAgc3RhdGljIGlubGluZSB2b2lkIHJldmVydF9wYXlsb2FkX3Rh aWwoc3RydWN0IHBheWxvYWQgKmRhdGEpCiAgICAgZGF0YS0+c3RhdGUgPSBMSVZFUEFUQ0hfU1RB VEVfQ0hFQ0tFRDsKIH0KIAorLyoKKyAqIENoZWNrIGlmIGFuIGFjdGlvbiBoYXMgYXBwbGllZCB0 aGUgc2FtZSBzdGF0ZSB0byBhbGwgcGF5bG9hZCdzIGZ1bmN0aW9ucyBjb25zaXN0ZW50bHkuCisg Ki8KK3N0YXRpYyBpbmxpbmUgYm9vbCB3YXNfYWN0aW9uX2NvbnNpc3RlbnQoY29uc3Qgc3RydWN0 IHBheWxvYWQgKmRhdGEsIGxpdmVwYXRjaF9mdW5jX3N0YXRlX3QgZXhwZWN0ZWRfc3RhdGUpCit7 CisgICAgaW50IGk7CisKKyAgICBmb3IgKCBpID0gMDsgaSA8IGRhdGEtPm5mdW5jczsgaSsrICkK KyAgICB7CisgICAgICAgIHN0cnVjdCBsaXZlcGF0Y2hfZnVuYyAqZiA9ICYoZGF0YS0+ZnVuY3Nb aV0pOworCisgICAgICAgIGlmICggZi0+YXBwbGllZCAhPSBleHBlY3RlZF9zdGF0ZSApCisgICAg ICAgIHsKKyAgICAgICAgICAgIHByaW50ayhYRU5MT0dfRVJSIExJVkVQQVRDSCAiJXM6IFBheWxv YWQgaGFzIGEgZnVuY3Rpb246ICclcycgd2l0aCBpbmNvbnNpc3RlbnQgYXBwbGllZCBzdGF0ZS5c biIsCisgICAgICAgICAgICAgICAgICAgZGF0YS0+bmFtZSwgZi0+bmFtZSA/OiAibm9uYW1lIik7 CisKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJl dHVybiB0cnVlOworfQorCiAvKgogICogVGhpcyBmdW5jdGlvbiBpcyBleGVjdXRlZCBoYXZpbmcg YWxsIG90aGVyIENQVXMgd2l0aCBubyBkZWVwIHN0YWNrICh3ZSBtYXkKICAqIGhhdmUgY3B1X2lk bGUgb24gaXQpIGFuZCBJUlFzIGRpc2FibGVkLgpAQCAtMTI2Niw2ICsxMjg5LDkgQEAgc3RhdGlj IHZvaWQgbGl2ZXBhdGNoX2RvX2FjdGlvbih2b2lkKQogICAgICAgICBlbHNlCiAgICAgICAgICAg ICByYyA9IGFwcGx5X3BheWxvYWQoZGF0YSk7CiAKKyAgICAgICAgaWYgKCAhd2FzX2FjdGlvbl9j b25zaXN0ZW50KGRhdGEsIHJjID8gTElWRVBBVENIX0ZVTkNfTk9UX0FQUExJRUQgOiBMSVZFUEFU Q0hfRlVOQ19BUFBMSUVEKSApCisgICAgICAgICAgICBwYW5pYygibGl2ZXBhdGNoOiBwYXJ0aWFs bHkgYXBwbGllZCBwYXlsb2FkICclcychXG4iLCBkYXRhLT5uYW1lKTsKKwogICAgICAgICBpZiAo IHJjID09IDAgKQogICAgICAgICAgICAgYXBwbHlfcGF5bG9hZF90YWlsKGRhdGEpOwogICAgICAg ICBicmVhazsKQEAgLTEyODAsNiArMTMwNiw5IEBAIHN0YXRpYyB2b2lkIGxpdmVwYXRjaF9kb19h Y3Rpb24odm9pZCkKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcmMgPSByZXZlcnRfcGF5bG9h ZChkYXRhKTsKIAorICAgICAgICBpZiAoICF3YXNfYWN0aW9uX2NvbnNpc3RlbnQoZGF0YSwgcmMg PyBMSVZFUEFUQ0hfRlVOQ19BUFBMSUVEIDogTElWRVBBVENIX0ZVTkNfTk9UX0FQUExJRUQpICkK KyAgICAgICAgICAgIHBhbmljKCJsaXZlcGF0Y2g6IHBhcnRpYWxseSByZXZlcnRlZCBwYXlsb2Fk ICclcychXG4iLCBkYXRhLT5uYW1lKTsKKwogICAgICAgICBpZiAoIHJjID09IDAgKQogICAgICAg ICAgICAgcmV2ZXJ0X3BheWxvYWRfdGFpbChkYXRhKTsKICAgICAgICAgYnJlYWs7CkBAIC0xMzAy LDYgKzEzMzEsOSBAQCBzdGF0aWMgdm9pZCBsaXZlcGF0Y2hfZG9fYWN0aW9uKHZvaWQpCiAgICAg ICAgICAgICAgICAgb3RoZXItPnJjID0gcmV2ZXJ0X3BheWxvYWQob3RoZXIpOwogCiAKKyAgICAg ICAgICAgIGlmICggIXdhc19hY3Rpb25fY29uc2lzdGVudChvdGhlciwgcmMgPyBMSVZFUEFUQ0hf RlVOQ19BUFBMSUVEIDogTElWRVBBVENIX0ZVTkNfTk9UX0FQUExJRUQpICkKKyAgICAgICAgICAg ICAgICBwYW5pYygibGl2ZXBhdGNoOiBwYXJ0aWFsbHkgcmV2ZXJ0ZWQgcGF5bG9hZCAnJXMnIVxu Iiwgb3RoZXItPm5hbWUpOworCiAgICAgICAgICAgICBpZiAoIG90aGVyLT5yYyA9PSAwICkKICAg ICAgICAgICAgICAgICByZXZlcnRfcGF5bG9hZF90YWlsKG90aGVyKTsKICAgICAgICAgICAgIGVs c2UKQEAgLTEzMjIsNiArMTM1NCw5IEBAIHN0YXRpYyB2b2lkIGxpdmVwYXRjaF9kb19hY3Rpb24o dm9pZCkKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICByYyA9IGFwcGx5X3BheWxv YWQoZGF0YSk7CiAKKyAgICAgICAgICAgIGlmICggIXdhc19hY3Rpb25fY29uc2lzdGVudChkYXRh LCByYyA/IExJVkVQQVRDSF9GVU5DX05PVF9BUFBMSUVEIDogTElWRVBBVENIX0ZVTkNfQVBQTElF RCkgKQorICAgICAgICAgICAgICAgIHBhbmljKCJsaXZlcGF0Y2g6IHBhcnRpYWxseSBhcHBsaWVk IHBheWxvYWQgJyVzJyFcbiIsIGRhdGEtPm5hbWUpOworCiAgICAgICAgICAgICBpZiAoIHJjID09 IDAgKQogICAgICAgICAgICAgICAgIGFwcGx5X3BheWxvYWRfdGFpbChkYXRhKTsKICAgICAgICAg fQpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvcHVibGljL3N5c2N0bC5oIGIveGVuL2luY2x1ZGUv cHVibGljL3N5c2N0bC5oCmluZGV4IDFiMmIxNjVhNmQuLjNiY2I4OTJjZTEgMTAwNjQ0Ci0tLSBh L3hlbi9pbmNsdWRlL3B1YmxpYy9zeXNjdGwuaAorKysgYi94ZW4vaW5jbHVkZS9wdWJsaWMvc3lz Y3RsLmgKQEAgLTgxOCw3ICs4MTgsNyBAQCBzdHJ1Y3QgeGVuX3N5c2N0bF9jcHVfZmVhdHVyZXNl dCB7CiAgKiAgICAgSWYgemVybyBleGl0IHdpdGggc3VjY2Vzcy4KICAqLwogCi0jZGVmaW5lIExJ VkVQQVRDSF9QQVlMT0FEX1ZFUlNJT04gMQorI2RlZmluZSBMSVZFUEFUQ0hfUEFZTE9BRF9WRVJT SU9OIDIKIC8qCiAgKiAubGl2ZXBhdGNoLmZ1bmNzIHN0cnVjdHVyZSBsYXlvdXQgZGVmaW5lZCBp biB0aGUgYFBheWxvYWQgZm9ybWF0YAogICogc2VjdGlvbiBpbiB0aGUgTGl2ZSBQYXRjaCBkZXNp Z24gZG9jdW1lbnQuCkBAIC04MjYsNiArODI2LDExIEBAIHN0cnVjdCB4ZW5fc3lzY3RsX2NwdV9m ZWF0dXJlc2V0IHsKICAqIFdlIGd1YXJkIHRoaXMgd2l0aCBfX1hFTl9fIGFzIHRvb2xzdGFja3Mg U0hPVUxEIG5vdCB1c2UgaXQuCiAgKi8KICNpZmRlZiBfX1hFTl9fCit0eXBlZGVmIGVudW0gbGl2 ZXBhdGNoX2Z1bmNfc3RhdGUgeworICAgIExJVkVQQVRDSF9GVU5DX05PVF9BUFBMSUVELAorICAg IExJVkVQQVRDSF9GVU5DX0FQUExJRUQKK30gbGl2ZXBhdGNoX2Z1bmNfc3RhdGVfdDsKKwogc3Ry dWN0IGxpdmVwYXRjaF9mdW5jIHsKICAgICBjb25zdCBjaGFyICpuYW1lOyAgICAgICAvKiBOYW1l IG9mIGZ1bmN0aW9uIHRvIGJlIHBhdGNoZWQuICovCiAgICAgdm9pZCAqbmV3X2FkZHI7CkBAIC04 MzQsNiArODM5LDggQEAgc3RydWN0IGxpdmVwYXRjaF9mdW5jIHsKICAgICB1aW50MzJfdCBvbGRf c2l6ZTsKICAgICB1aW50OF90IHZlcnNpb247ICAgICAgICAvKiBNVVNUIGJlIExJVkVQQVRDSF9Q QVlMT0FEX1ZFUlNJT04uICovCiAgICAgdWludDhfdCBvcGFxdWVbMzFdOworICAgIHVpbnQ4X3Qg YXBwbGllZDsKKyAgICB1aW50OF90IF9wYWRbN107CiB9OwogdHlwZWRlZiBzdHJ1Y3QgbGl2ZXBh dGNoX2Z1bmMgbGl2ZXBhdGNoX2Z1bmNfdDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEveGVuL2luY2x1 ZGUveGVuL2xpdmVwYXRjaC5oIGIveGVuL2luY2x1ZGUveGVuL2xpdmVwYXRjaC5oCmluZGV4IDJh ZWM1MzJlZTIuLjI4Zjk1MzY3NzYgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3hlbi9saXZlcGF0 Y2guaAorKysgYi94ZW4vaW5jbHVkZS94ZW4vbGl2ZXBhdGNoLmgKQEAgLTEwOSw2ICsxMDksMzEg QEAgc3RhdGljIGlubGluZSBpbnQgbGl2ZXBhdGNoX3ZlcmlmeV9kaXN0YW5jZShjb25zdCBzdHJ1 Y3QgbGl2ZXBhdGNoX2Z1bmMgKmZ1bmMpCiAKICAgICByZXR1cm4gMDsKIH0KKworc3RhdGljIGlu bGluZSBib29sX3QgaXNfZnVuY19hcHBsaWVkKGNvbnN0IHN0cnVjdCBsaXZlcGF0Y2hfZnVuYyAq ZnVuYykKK3sKKyAgICBpZiAoIGZ1bmMtPmFwcGxpZWQgPT0gTElWRVBBVENIX0ZVTkNfQVBQTElF RCApCisgICAgeworICAgICAgICBwcmludGsoWEVOTE9HX1dBUk5JTkcgTElWRVBBVENIICIlczog JXMgaGFzIGJlZW4gYWxyZWFkeSBhcHBsaWVkIGJlZm9yZVxuIiwKKyAgICAgICAgICAgICAgICBf X2Z1bmNfXywgZnVuYy0+bmFtZSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAg IHJldHVybiBmYWxzZTsKK30KKworc3RhdGljIGlubGluZSBib29sX3QgaXNfZnVuY19yZXZlcnRl ZChjb25zdCBzdHJ1Y3QgbGl2ZXBhdGNoX2Z1bmMgKmZ1bmMpCit7CisgICAgaWYgKCAhZnVuYy0+ b2xkX2FkZHIgfHwgZnVuYy0+YXBwbGllZCA9PSBMSVZFUEFUQ0hfRlVOQ19OT1RfQVBQTElFRCAp CisgICAgeworICAgICAgICBwcmludGsoWEVOTE9HX1dBUk5JTkcgTElWRVBBVENIICIlczogJXMg aGFzIG5vdCBiZWVuIGFwcGxpZWQgYmVmb3JlXG4iLAorICAgICAgICAgICAgICAgIF9fZnVuY19f LCBmdW5jLT5uYW1lKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcmV0dXJu IGZhbHNlOworfQorCiAvKgogICogVGhlc2UgZnVuY3Rpb25zIGFyZSBjYWxsZWQgYXJvdW5kIHRo ZSBjcml0aWNhbCByZWdpb24gcGF0Y2hpbmcgbGl2ZSBjb2RlLAogICogZm9yIGFuIGFyY2hpdGVj dHVyZSB0byB0YWtlIG1ha2UgYXBwcm9wcmF0aWUgZ2xvYmFsIHN0YXRlIGFkanVzdG1lbnRzLgpA QCAtMTE3LDcgKzE0Miw3IEBAIGludCBhcmNoX2xpdmVwYXRjaF9xdWllc2NlKHZvaWQpOwogdm9p ZCBhcmNoX2xpdmVwYXRjaF9yZXZpdmUodm9pZCk7CiAKIHZvaWQgYXJjaF9saXZlcGF0Y2hfYXBw bHkoc3RydWN0IGxpdmVwYXRjaF9mdW5jICpmdW5jKTsKLXZvaWQgYXJjaF9saXZlcGF0Y2hfcmV2 ZXJ0KGNvbnN0IHN0cnVjdCBsaXZlcGF0Y2hfZnVuYyAqZnVuYyk7Cit2b2lkIGFyY2hfbGl2ZXBh dGNoX3JldmVydChzdHJ1Y3QgbGl2ZXBhdGNoX2Z1bmMgKmZ1bmMpOwogdm9pZCBhcmNoX2xpdmVw YXRjaF9wb3N0X2FjdGlvbih2b2lkKTsKIAogdm9pZCBhcmNoX2xpdmVwYXRjaF9tYXNrKHZvaWQp OwpkaWZmIC0tZ2l0IGEveGVuL3Rlc3QvbGl2ZXBhdGNoL01ha2VmaWxlIGIveGVuL3Rlc3QvbGl2 ZXBhdGNoL01ha2VmaWxlCmluZGV4IGJiYzZiZGFmNjQuLjIzMTEzZDM0MTggMTAwNjQ0Ci0tLSBh L3hlbi90ZXN0L2xpdmVwYXRjaC9NYWtlZmlsZQorKysgYi94ZW4vdGVzdC9saXZlcGF0Y2gvTWFr ZWZpbGUKQEAgLTI0LDYgKzI0LDkgQEAgTElWRVBBVENIX1BSRVBPU1RfSE9PS1MgOj0geGVuX3By ZXBvc3RfaG9va3MubGl2ZXBhdGNoCiBMSVZFUEFUQ0hfUFJFUE9TVF9IT09LU19GQUlMIDo9IHhl bl9wcmVwb3N0X2hvb2tzX2ZhaWwubGl2ZXBhdGNoCiBMSVZFUEFUQ0hfQUNUSU9OX0hPT0tTIDo9 IHhlbl9hY3Rpb25faG9va3MubGl2ZXBhdGNoCiBMSVZFUEFUQ0hfQUNUSU9OX0hPT0tTX05PRlVO QyA6PSB4ZW5fYWN0aW9uX2hvb2tzX25vZnVuYy5saXZlcGF0Y2gKK0xJVkVQQVRDSF9BQ1RJT05f SE9PS1NfTUFSS0VSOj0geGVuX2FjdGlvbl9ob29rc19tYXJrZXIubGl2ZXBhdGNoCitMSVZFUEFU Q0hfQUNUSU9OX0hPT0tTX05PQVBQTFk6PSB4ZW5fYWN0aW9uX2hvb2tzX25vYXBwbHkubGl2ZXBh dGNoCitMSVZFUEFUQ0hfQUNUSU9OX0hPT0tTX05PUkVWRVJUOj0geGVuX2FjdGlvbl9ob29rc19u b3JldmVydC5saXZlcGF0Y2gKIAogTElWRVBBVENIRVMgKz0gJChMSVZFUEFUQ0gpCiBMSVZFUEFU Q0hFUyArPSAkKExJVkVQQVRDSF9CWUUpCkBAIC0zNCw2ICszNyw5IEBAIExJVkVQQVRDSEVTICs9 ICQoTElWRVBBVENIX1BSRVBPU1RfSE9PS1MpCiBMSVZFUEFUQ0hFUyArPSAkKExJVkVQQVRDSF9Q UkVQT1NUX0hPT0tTX0ZBSUwpCiBMSVZFUEFUQ0hFUyArPSAkKExJVkVQQVRDSF9BQ1RJT05fSE9P S1MpCiBMSVZFUEFUQ0hFUyArPSAkKExJVkVQQVRDSF9BQ1RJT05fSE9PS1NfTk9GVU5DKQorTElW RVBBVENIRVMgKz0gJChMSVZFUEFUQ0hfQUNUSU9OX0hPT0tTX01BUktFUikKK0xJVkVQQVRDSEVT ICs9ICQoTElWRVBBVENIX0FDVElPTl9IT09LU19OT0FQUExZKQorTElWRVBBVENIRVMgKz0gJChM SVZFUEFUQ0hfQUNUSU9OX0hPT0tTX05PUkVWRVJUKQogCiBMSVZFUEFUQ0hfREVCVUdfRElSID89 ICQoREVCVUdfRElSKS94ZW4tbGl2ZXBhdGNoCiAKQEAgLTE1OCw3ICsxNjQsMjYgQEAgJChMSVZF UEFUQ0hfQUNUSU9OX0hPT0tTKTogeGVuX2FjdGlvbl9ob29rcy5vIHhlbl9oZWxsb193b3JsZF9m dW5jLm8gbm90ZS5vIHhlbl8KICQoTElWRVBBVENIX0FDVElPTl9IT09LU19OT0ZVTkMpOiB4ZW5f YWN0aW9uX2hvb2tzX25vZnVuYy5vIG5vdGUubyB4ZW5fbm90ZS5vCiAJJChMRCkgJChMREZMQUdT KSAkKGJ1aWxkX2lkX2xpbmtlcikgLXIgLW8gJChMSVZFUEFUQ0hfQUNUSU9OX0hPT0tTX05PRlVO QykgJF4KIAoreGVuX2FjdGlvbnNfaG9va3NfbWFya2VyLm86IGNvbmZpZy5oCisKKy5QSE9OWTog JChMSVZFUEFUQ0hfQUNUSU9OX0hPT0tTX01BUktFUikKKyQoTElWRVBBVENIX0FDVElPTl9IT09L U19NQVJLRVIpOiB4ZW5fYWN0aW9uX2hvb2tzX21hcmtlci5vIHhlbl9oZWxsb193b3JsZF9mdW5j Lm8gbm90ZS5vIHhlbl9ub3RlLm8KKwkkKExEKSAkKExERkxBR1MpICQoYnVpbGRfaWRfbGlua2Vy KSAtciAtbyAkKExJVkVQQVRDSF9BQ1RJT05fSE9PS1NfTUFSS0VSKSAkXgorCit4ZW5fYWN0aW9u c19ob29rc19ub2FwcGx5Lm86IGNvbmZpZy5oCisKKy5QSE9OWTogJChMSVZFUEFUQ0hfQUNUSU9O X0hPT0tTX05PQVBQTFkpCiskKExJVkVQQVRDSF9BQ1RJT05fSE9PS1NfTk9BUFBMWSk6IHhlbl9h Y3Rpb25faG9va3NfbWFya2VyLm8geGVuX2hlbGxvX3dvcmxkX2Z1bmMubyBub3RlLm8geGVuX25v dGUubworCSQoTEQpICQoTERGTEFHUykgJChidWlsZF9pZF9saW5rZXIpIC1yIC1vICQoTElWRVBB VENIX0FDVElPTl9IT09LU19OT0FQUExZKSAkXgorCit4ZW5fYWN0aW9uc19ob29rc19ub3JldmVy dC5vOiBjb25maWcuaAorCisuUEhPTlk6ICQoTElWRVBBVENIX0FDVElPTl9IT09LU19OT1JFVkVS VCkKKyQoTElWRVBBVENIX0FDVElPTl9IT09LU19OT1JFVkVSVCk6IHhlbl9hY3Rpb25faG9va3Nf bWFya2VyLm8geGVuX2hlbGxvX3dvcmxkX2Z1bmMubyBub3RlLm8geGVuX25vdGUubworCSQoTEQp ICQoTERGTEFHUykgJChidWlsZF9pZF9saW5rZXIpIC1yIC1vICQoTElWRVBBVENIX0FDVElPTl9I T09LU19OT1JFVkVSVCkgJF4KKwogLlBIT05ZOiBsaXZlcGF0Y2gKIGxpdmVwYXRjaDogJChMSVZF UEFUQ0gpICQoTElWRVBBVENIX0JZRSkgJChMSVZFUEFUQ0hfUkVQTEFDRSkgJChMSVZFUEFUQ0hf Tk9QKSAkKExJVkVQQVRDSF9OT19YRU5fQlVJTERJRCkgXAogICAgICAgICAgICAkKExJVkVQQVRD SF9QUkVQT1NUX0hPT0tTKSAkKExJVkVQQVRDSF9QUkVQT1NUX0hPT0tTX0ZBSUwpICQoTElWRVBB VENIX0FDVElPTl9IT09LUykgXAotICAgICAgICAgICAkKExJVkVQQVRDSF9BQ1RJT05fSE9PS1Nf Tk9GVU5DKQorICAgICAgICAgICAkKExJVkVQQVRDSF9BQ1RJT05fSE9PS1NfTk9GVU5DKSAkKExJ VkVQQVRDSF9BQ1RJT05fSE9PS1NfTUFSS0VSKSAkKExJVkVQQVRDSF9BQ1RJT05fSE9PS1NfTk9B UFBMWSkgXAorICAgICAgICAgICAkKExJVkVQQVRDSF9BQ1RJT05fSE9PS1NfTk9SRVZFUlQpCmRp ZmYgLS1naXQgYS94ZW4vdGVzdC9saXZlcGF0Y2gveGVuX2FjdGlvbl9ob29rcy5jIGIveGVuL3Rl c3QvbGl2ZXBhdGNoL3hlbl9hY3Rpb25faG9va3MuYwppbmRleCBhOTQ3YWZjNDFmLi4zOWI1MzEz MDI3IDEwMDY0NAotLS0gYS94ZW4vdGVzdC9saXZlcGF0Y2gveGVuX2FjdGlvbl9ob29rcy5jCisr KyBiL3hlbi90ZXN0L2xpdmVwYXRjaC94ZW5fYWN0aW9uX2hvb2tzLmMKQEAgLTI4LDYgKzI4LDcg QEAgc3RhdGljIGludCBhcHBseV9ob29rKGxpdmVwYXRjaF9wYXlsb2FkX3QgKnBheWxvYWQpCiAg ICAgewogICAgICAgICBzdHJ1Y3QgbGl2ZXBhdGNoX2Z1bmMgKmZ1bmMgPSAmcGF5bG9hZC0+ZnVu Y3NbaV07CiAKKyAgICAgICAgZnVuYy0+YXBwbGllZCA9IExJVkVQQVRDSF9GVU5DX0FQUExJRUQ7 CiAgICAgICAgIGFwcGx5X2NudCsrOwogCiAgICAgICAgIHByaW50ayhLRVJOX0RFQlVHICIlczog YXBwbHlpbmc6ICVzXG4iLCBfX2Z1bmNfXywgZnVuYy0+bmFtZSk7CkBAIC00OCw2ICs0OSw3IEBA IHN0YXRpYyBpbnQgcmV2ZXJ0X2hvb2sobGl2ZXBhdGNoX3BheWxvYWRfdCAqcGF5bG9hZCkKICAg ICB7CiAgICAgICAgIHN0cnVjdCBsaXZlcGF0Y2hfZnVuYyAqZnVuYyA9ICZwYXlsb2FkLT5mdW5j c1tpXTsKIAorICAgICAgICBmdW5jLT5hcHBsaWVkID0gTElWRVBBVENIX0ZVTkNfTk9UX0FQUExJ RUQ7CiAgICAgICAgIHJldmVydF9jbnQrKzsKIAogICAgICAgICBwcmludGsoS0VSTl9ERUJVRyAi JXM6IHJldmVydGluZzogJXNcbiIsIF9fZnVuY19fLCBmdW5jLT5uYW1lKTsKZGlmZiAtLWdpdCBh L3hlbi90ZXN0L2xpdmVwYXRjaC94ZW5fYWN0aW9uX2hvb2tzX21hcmtlci5jIGIveGVuL3Rlc3Qv bGl2ZXBhdGNoL3hlbl9hY3Rpb25faG9va3NfbWFya2VyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMC4uNGY4MDdhNTc3ZgotLS0gL2Rldi9udWxsCisrKyBiL3hlbi90ZXN0 L2xpdmVwYXRjaC94ZW5fYWN0aW9uX2hvb2tzX21hcmtlci5jCkBAIC0wLDAgKzEsMTEyIEBACisv KgorICogQ29weXJpZ2h0IChjKSAyMDE5IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0 ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK KyNpbmNsdWRlIDx4ZW4vbGliLmg+CisjaW5jbHVkZSA8eGVuL3R5cGVzLmg+CisjaW5jbHVkZSA8 eGVuL3ZlcnNpb24uaD4KKyNpbmNsdWRlIDx4ZW4vbGl2ZXBhdGNoLmg+CisjaW5jbHVkZSA8eGVu L2xpdmVwYXRjaF9wYXlsb2FkLmg+CisKKyNpbmNsdWRlIDxwdWJsaWMvc3lzY3RsLmg+CisKK3N0 YXRpYyBjb25zdCBjaGFyIGhlbGxvX3dvcmxkX3BhdGNoX3RoaXNfZm5jW10gPSAieGVuX2V4dHJh X3ZlcnNpb24iOworZXh0ZXJuIGNvbnN0IGNoYXIgKnhlbl9oZWxsb193b3JsZCh2b2lkKTsKKwor c3RhdGljIGludCBwcmVfYXBwbHlfaG9vayhsaXZlcGF0Y2hfcGF5bG9hZF90ICpwYXlsb2FkKQor eworICAgIGludCBpOworCisgICAgcHJpbnRrKEtFUk5fREVCVUcgIiVzOiBIb29rIHN0YXJ0aW5n LlxuIiwgX19mdW5jX18pOworCisgICAgZm9yIChpID0gMDsgaSA8IHBheWxvYWQtPm5mdW5jczsg aSsrKQorICAgIHsKKyAgICAgICAgc3RydWN0IGxpdmVwYXRjaF9mdW5jICpmdW5jID0gJnBheWxv YWQtPmZ1bmNzW2ldOworCisgICAgICAgIEJVR19PTihmdW5jLT5hcHBsaWVkID09IExJVkVQQVRD SF9GVU5DX0FQUExJRUQpOworICAgICAgICBwcmludGsoS0VSTl9ERUJVRyAiJXM6IHByZSBhcHBs aWVkOiAlc1xuIiwgX19mdW5jX18sIGZ1bmMtPm5hbWUpOworICAgIH0KKworICAgIHByaW50ayhL RVJOX0RFQlVHICIlczogSG9vayBkb25lLlxuIiwgX19mdW5jX18pOworCisgICAgcmV0dXJuIDA7 Cit9CisKK3N0YXRpYyB2b2lkIHBvc3RfYXBwbHlfaG9vayhsaXZlcGF0Y2hfcGF5bG9hZF90ICpw YXlsb2FkKQoreworICAgIGludCBpOworCisgICAgcHJpbnRrKEtFUk5fREVCVUcgIiVzOiBIb29r IHN0YXJ0aW5nLlxuIiwgX19mdW5jX18pOworCisgICAgZm9yIChpID0gMDsgaSA8IHBheWxvYWQt Pm5mdW5jczsgaSsrKQorICAgIHsKKyAgICAgICAgc3RydWN0IGxpdmVwYXRjaF9mdW5jICpmdW5j ID0gJnBheWxvYWQtPmZ1bmNzW2ldOworCisgICAgICAgIEJVR19PTihmdW5jLT5hcHBsaWVkICE9 IExJVkVQQVRDSF9GVU5DX0FQUExJRUQpOworICAgICAgICBwcmludGsoS0VSTl9ERUJVRyAiJXM6 IHBvc3QgYXBwbGllZDogJXNcbiIsIF9fZnVuY19fLCBmdW5jLT5uYW1lKTsKKyAgICB9CisKKyAg ICBwcmludGsoS0VSTl9ERUJVRyAiJXM6IEhvb2sgZG9uZS5cbiIsIF9fZnVuY19fKTsKK30KKwor c3RhdGljIGludCBwcmVfcmV2ZXJ0X2hvb2sobGl2ZXBhdGNoX3BheWxvYWRfdCAqcGF5bG9hZCkK K3sKKyAgICBpbnQgaTsKKworICAgIHByaW50ayhLRVJOX0RFQlVHICIlczogSG9vayBzdGFydGlu Zy5cbiIsIF9fZnVuY19fKTsKKworICAgIGZvciAoaSA9IDA7IGkgPCBwYXlsb2FkLT5uZnVuY3M7 IGkrKykKKyAgICB7CisgICAgICAgIHN0cnVjdCBsaXZlcGF0Y2hfZnVuYyAqZnVuYyA9ICZwYXls b2FkLT5mdW5jc1tpXTsKKworICAgICAgICBCVUdfT04oZnVuYy0+YXBwbGllZCAhPSBMSVZFUEFU Q0hfRlVOQ19BUFBMSUVEKTsKKyAgICAgICAgcHJpbnRrKEtFUk5fREVCVUcgIiVzOiBwcmUgcmV2 ZXJ0ZWQ6ICVzXG4iLCBfX2Z1bmNfXywgZnVuYy0+bmFtZSk7CisgICAgfQorCisgICAgcHJpbnRr KEtFUk5fREVCVUcgIiVzOiBIb29rIGRvbmUuXG4iLCBfX2Z1bmNfXyk7CisKKyAgICByZXR1cm4g MDsKK30KKworc3RhdGljIHZvaWQgcG9zdF9yZXZlcnRfaG9vayhsaXZlcGF0Y2hfcGF5bG9hZF90 ICpwYXlsb2FkKQoreworICAgIGludCBpOworCisgICAgcHJpbnRrKEtFUk5fREVCVUcgIiVzOiBI b29rIHN0YXJ0aW5nLlxuIiwgX19mdW5jX18pOworCisgICAgZm9yIChpID0gMDsgaSA8IHBheWxv YWQtPm5mdW5jczsgaSsrKQorICAgIHsKKyAgICAgICAgc3RydWN0IGxpdmVwYXRjaF9mdW5jICpm dW5jID0gJnBheWxvYWQtPmZ1bmNzW2ldOworCisgICAgICAgIEJVR19PTihmdW5jLT5hcHBsaWVk ID09IExJVkVQQVRDSF9GVU5DX0FQUExJRUQpOworICAgICAgICBwcmludGsoS0VSTl9ERUJVRyAi JXM6IHBvc3QgcmV2ZXJ0ZWQ6ICVzXG4iLCBfX2Z1bmNfXywgZnVuYy0+bmFtZSk7CisgICAgfQor CisgICAgcHJpbnRrKEtFUk5fREVCVUcgIiVzOiBIb29rIGRvbmUuXG4iLCBfX2Z1bmNfXyk7Cit9 CisKK0xJVkVQQVRDSF9QUkVBUFBMWV9IT09LKHByZV9hcHBseV9ob29rKTsKK0xJVkVQQVRDSF9Q T1NUQVBQTFlfSE9PSyhwb3N0X2FwcGx5X2hvb2spOworTElWRVBBVENIX1BSRVJFVkVSVF9IT09L KHByZV9yZXZlcnRfaG9vayk7CitMSVZFUEFUQ0hfUE9TVFJFVkVSVF9IT09LKHBvc3RfcmV2ZXJ0 X2hvb2spOworCitzdHJ1Y3QgbGl2ZXBhdGNoX2Z1bmMgX19zZWN0aW9uKCIubGl2ZXBhdGNoLmZ1 bmNzIikgbGl2ZXBhdGNoX3hlbl9oZWxsb193b3JsZCA9IHsKKyAgICAudmVyc2lvbiA9IExJVkVQ QVRDSF9QQVlMT0FEX1ZFUlNJT04sCisgICAgLm5hbWUgPSBoZWxsb193b3JsZF9wYXRjaF90aGlz X2ZuYywKKyAgICAubmV3X2FkZHIgPSB4ZW5faGVsbG9fd29ybGQsCisgICAgLm9sZF9hZGRyID0g eGVuX2V4dHJhX3ZlcnNpb24sCisgICAgLm5ld19zaXplID0gTkVXX0NPREVfU1osCisgICAgLm9s ZF9zaXplID0gT0xEX0NPREVfU1osCit9OworCisvKgorICogTG9jYWwgdmFyaWFibGVzOgorICog bW9kZTogQworICogYy1maWxlLXN0eWxlOiAiQlNEIgorICogYy1iYXNpYy1vZmZzZXQ6IDQKKyAq IHRhYi13aWR0aDogNAorICogaW5kZW50LXRhYnMtbW9kZTogbmlsCisgKiBFbmQ6CisgKi8KZGlm ZiAtLWdpdCBhL3hlbi90ZXN0L2xpdmVwYXRjaC94ZW5fYWN0aW9uX2hvb2tzX25vYXBwbHkuYyBi L3hlbi90ZXN0L2xpdmVwYXRjaC94ZW5fYWN0aW9uX2hvb2tzX25vYXBwbHkuYwpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi40YzU1YzE1NmE2Ci0tLSAvZGV2L251bGwKKysr IGIveGVuL3Rlc3QvbGl2ZXBhdGNoL3hlbl9hY3Rpb25faG9va3Nfbm9hcHBseS5jCkBAIC0wLDAg KzEsMTM2IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDE5IEFtYXpvbi5jb20sIEluYy4gb3Ig aXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICovCisKKyNpbmNsdWRl ICJjb25maWcuaCIKKyNpbmNsdWRlIDx4ZW4vbGliLmg+CisjaW5jbHVkZSA8eGVuL3R5cGVzLmg+ CisjaW5jbHVkZSA8eGVuL3ZlcnNpb24uaD4KKyNpbmNsdWRlIDx4ZW4vbGl2ZXBhdGNoLmg+Cisj aW5jbHVkZSA8eGVuL2xpdmVwYXRjaF9wYXlsb2FkLmg+CisKKyNpbmNsdWRlIDxwdWJsaWMvc3lz Y3RsLmg+CisKK3N0YXRpYyBjb25zdCBjaGFyIGhlbGxvX3dvcmxkX3BhdGNoX3RoaXNfZm5jW10g PSAieGVuX2V4dHJhX3ZlcnNpb24iOworZXh0ZXJuIGNvbnN0IGNoYXIgKnhlbl9oZWxsb193b3Js ZCh2b2lkKTsKKworc3RhdGljIHVuc2lnbmVkIGludCBhcHBseV9jbnQ7CisKK3N0YXRpYyBpbnQg cHJlX2FwcGx5X2hvb2sobGl2ZXBhdGNoX3BheWxvYWRfdCAqcGF5bG9hZCkKK3sKKyAgICBpbnQg aTsKKworICAgIHByaW50ayhLRVJOX0RFQlVHICIlczogSG9vayBzdGFydGluZy5cbiIsIF9fZnVu Y19fKTsKKworICAgIGZvciAoaSA9IDA7IGkgPCBwYXlsb2FkLT5uZnVuY3M7IGkrKykKKyAgICB7 CisgICAgICAgIHN0cnVjdCBsaXZlcGF0Y2hfZnVuYyAqZnVuYyA9ICZwYXlsb2FkLT5mdW5jc1tp XTsKKworICAgICAgICBCVUdfT04oZnVuYy0+YXBwbGllZCA9PSBMSVZFUEFUQ0hfRlVOQ19BUFBM SUVEKTsKKyAgICAgICAgcHJpbnRrKEtFUk5fREVCVUcgIiVzOiBwcmUgYXBwbGllZDogJXNcbiIs IF9fZnVuY19fLCBmdW5jLT5uYW1lKTsKKyAgICB9CisKKyAgICBwcmludGsoS0VSTl9ERUJVRyAi JXM6IEhvb2sgZG9uZS5cbiIsIF9fZnVuY19fKTsKKworICAgIHJldHVybiAwOworfQorCitzdGF0 aWMgaW50IGFwcGx5X2hvb2sobGl2ZXBhdGNoX3BheWxvYWRfdCAqcGF5bG9hZCkKK3sKKyAgICBp bnQgaTsKKworICAgIHByaW50ayhLRVJOX0RFQlVHICIlczogSG9vayBzdGFydGluZy5cbiIsIF9f ZnVuY19fKTsKKworICAgIGZvciAoaSA9IDA7IGkgPCBwYXlsb2FkLT5uZnVuY3M7IGkrKykKKyAg ICB7CisgICAgICAgIHN0cnVjdCBsaXZlcGF0Y2hfZnVuYyAqZnVuYyA9ICZwYXlsb2FkLT5mdW5j c1tpXTsKKworICAgICAgICBhcHBseV9jbnQrKzsKKyAgICAgICAgcHJpbnRrKEtFUk5fREVCVUcg IiVzOiBhcHBseWluZzogJXNcbiIsIF9fZnVuY19fLCBmdW5jLT5uYW1lKTsKKyAgICB9CisKKyAg ICBwcmludGsoS0VSTl9ERUJVRyAiJXM6IEhvb2sgZG9uZS5cbiIsIF9fZnVuY19fKTsKKworICAg IHJldHVybiAtRUlOVkFMOyAvKiBNYXJrIGFjdGlvbiBhcyBpbmNvbnNpc3RlbnQgKi8KK30KKwor c3RhdGljIHZvaWQgcG9zdF9hcHBseV9ob29rKGxpdmVwYXRjaF9wYXlsb2FkX3QgKnBheWxvYWQp Cit7CisgICAgaW50IGk7CisKKyAgICBwcmludGsoS0VSTl9ERUJVRyAiJXM6IEhvb2sgc3RhcnRp bmcuXG4iLCBfX2Z1bmNfXyk7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgcGF5bG9hZC0+bmZ1bmNz OyBpKyspCisgICAgeworICAgICAgICBzdHJ1Y3QgbGl2ZXBhdGNoX2Z1bmMgKmZ1bmMgPSAmcGF5 bG9hZC0+ZnVuY3NbaV07CisKKyAgICAgICAgQlVHX09OKGFwcGx5X2NudCAhPSAxKTsKKyAgICAg ICAgQlVHX09OKGZ1bmMtPmFwcGxpZWQgPT0gTElWRVBBVENIX0ZVTkNfQVBQTElFRCk7CisgICAg ICAgIHByaW50ayhLRVJOX0RFQlVHICIlczogcG9zdCBhcHBsaWVkOiAlc1xuIiwgX19mdW5jX18s IGZ1bmMtPm5hbWUpOworICAgIH0KKworICAgIHByaW50ayhLRVJOX0RFQlVHICIlczogSG9vayBk b25lLlxuIiwgX19mdW5jX18pOworfQorCitzdGF0aWMgaW50IHByZV9yZXZlcnRfaG9vayhsaXZl cGF0Y2hfcGF5bG9hZF90ICpwYXlsb2FkKQoreworICAgIGludCBpOworCisgICAgcHJpbnRrKEtF Uk5fREVCVUcgIiVzOiBIb29rIHN0YXJ0aW5nLlxuIiwgX19mdW5jX18pOworCisgICAgZm9yIChp ID0gMDsgaSA8IHBheWxvYWQtPm5mdW5jczsgaSsrKQorICAgIHsKKyAgICAgICAgc3RydWN0IGxp dmVwYXRjaF9mdW5jICpmdW5jID0gJnBheWxvYWQtPmZ1bmNzW2ldOworCisgICAgICAgIEJVR19P TihmdW5jLT5hcHBsaWVkID09IExJVkVQQVRDSF9GVU5DX0FQUExJRUQpOworICAgICAgICBwcmlu dGsoS0VSTl9ERUJVRyAiJXM6IHByZSByZXZlcnRlZDogJXNcbiIsIF9fZnVuY19fLCBmdW5jLT5u YW1lKTsKKyAgICB9CisKKyAgICBwcmludGsoS0VSTl9ERUJVRyAiJXM6IEhvb2sgZG9uZS5cbiIs IF9fZnVuY19fKTsKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBwb3N0X3JldmVy dF9ob29rKGxpdmVwYXRjaF9wYXlsb2FkX3QgKnBheWxvYWQpCit7CisgICAgaW50IGk7CisKKyAg ICBwcmludGsoS0VSTl9ERUJVRyAiJXM6IEhvb2sgc3RhcnRpbmcuXG4iLCBfX2Z1bmNfXyk7CisK KyAgICBmb3IgKGkgPSAwOyBpIDwgcGF5bG9hZC0+bmZ1bmNzOyBpKyspCisgICAgeworICAgICAg ICBzdHJ1Y3QgbGl2ZXBhdGNoX2Z1bmMgKmZ1bmMgPSAmcGF5bG9hZC0+ZnVuY3NbaV07CisKKyAg ICAgICAgQlVHX09OKGZ1bmMtPmFwcGxpZWQgPT0gTElWRVBBVENIX0ZVTkNfQVBQTElFRCk7Cisg ICAgICAgIHByaW50ayhLRVJOX0RFQlVHICIlczogcG9zdCByZXZlcnRlZDogJXNcbiIsIF9fZnVu Y19fLCBmdW5jLT5uYW1lKTsKKyAgICB9CisKKyAgICBwcmludGsoS0VSTl9ERUJVRyAiJXM6IEhv b2sgZG9uZS5cbiIsIF9fZnVuY19fKTsKK30KKworTElWRVBBVENIX0FQUExZX0hPT0soYXBwbHlf aG9vayk7CisKK0xJVkVQQVRDSF9QUkVBUFBMWV9IT09LKHByZV9hcHBseV9ob29rKTsKK0xJVkVQ QVRDSF9QT1NUQVBQTFlfSE9PSyhwb3N0X2FwcGx5X2hvb2spOworTElWRVBBVENIX1BSRVJFVkVS VF9IT09LKHByZV9yZXZlcnRfaG9vayk7CitMSVZFUEFUQ0hfUE9TVFJFVkVSVF9IT09LKHBvc3Rf cmV2ZXJ0X2hvb2spOworCitzdHJ1Y3QgbGl2ZXBhdGNoX2Z1bmMgX19zZWN0aW9uKCIubGl2ZXBh dGNoLmZ1bmNzIikgbGl2ZXBhdGNoX3hlbl9oZWxsb193b3JsZCA9IHsKKyAgICAudmVyc2lvbiA9 IExJVkVQQVRDSF9QQVlMT0FEX1ZFUlNJT04sCisgICAgLm5hbWUgPSBoZWxsb193b3JsZF9wYXRj aF90aGlzX2ZuYywKKyAgICAubmV3X2FkZHIgPSB4ZW5faGVsbG9fd29ybGQsCisgICAgLm9sZF9h ZGRyID0geGVuX2V4dHJhX3ZlcnNpb24sCisgICAgLm5ld19zaXplID0gTkVXX0NPREVfU1osCisg ICAgLm9sZF9zaXplID0gT0xEX0NPREVfU1osCit9OworCisvKgorICogTG9jYWwgdmFyaWFibGVz OgorICogbW9kZTogQworICogYy1maWxlLXN0eWxlOiAiQlNEIgorICogYy1iYXNpYy1vZmZzZXQ6 IDQKKyAqIHRhYi13aWR0aDogNAorICogaW5kZW50LXRhYnMtbW9kZTogbmlsCisgKiBFbmQ6Cisg Ki8KZGlmZiAtLWdpdCBhL3hlbi90ZXN0L2xpdmVwYXRjaC94ZW5fYWN0aW9uX2hvb2tzX25vcmV2 ZXJ0LmMgYi94ZW4vdGVzdC9saXZlcGF0Y2gveGVuX2FjdGlvbl9ob29rc19ub3JldmVydC5jCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjQ0MDgxNjZmNDcKLS0tIC9kZXYv bnVsbAorKysgYi94ZW4vdGVzdC9saXZlcGF0Y2gveGVuX2FjdGlvbl9ob29rc19ub3JldmVydC5j CkBAIC0wLDAgKzEsMTQzIEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDE5IEFtYXpvbi5jb20s IEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICovCisK KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDx4ZW4vbGliLmg+CisjaW5jbHVkZSA8eGVu L3R5cGVzLmg+CisjaW5jbHVkZSA8eGVuL3ZlcnNpb24uaD4KKyNpbmNsdWRlIDx4ZW4vbGl2ZXBh dGNoLmg+CisjaW5jbHVkZSA8eGVuL2xpdmVwYXRjaF9wYXlsb2FkLmg+CisKKyNpbmNsdWRlIDxw dWJsaWMvc3lzY3RsLmg+CisKK3N0YXRpYyBjb25zdCBjaGFyIGhlbGxvX3dvcmxkX3BhdGNoX3Ro aXNfZm5jW10gPSAieGVuX2V4dHJhX3ZlcnNpb24iOworZXh0ZXJuIGNvbnN0IGNoYXIgKnhlbl9o ZWxsb193b3JsZCh2b2lkKTsKKworc3RhdGljIHVuc2lnbmVkIGludCByZXZlcnRfY250OworCitz dGF0aWMgaW50IHByZV9hcHBseV9ob29rKGxpdmVwYXRjaF9wYXlsb2FkX3QgKnBheWxvYWQpCit7 CisgICAgaW50IGk7CisKKyAgICBwcmludGsoS0VSTl9ERUJVRyAiJXM6IEhvb2sgc3RhcnRpbmcu XG4iLCBfX2Z1bmNfXyk7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgcGF5bG9hZC0+bmZ1bmNzOyBp KyspCisgICAgeworICAgICAgICBzdHJ1Y3QgbGl2ZXBhdGNoX2Z1bmMgKmZ1bmMgPSAmcGF5bG9h ZC0+ZnVuY3NbaV07CisKKyAgICAgICAgQlVHX09OKGZ1bmMtPmFwcGxpZWQgPT0gTElWRVBBVENI X0ZVTkNfQVBQTElFRCk7CisgICAgICAgIHByaW50ayhLRVJOX0RFQlVHICIlczogcHJlIGFwcGxp ZWQ6ICVzXG4iLCBfX2Z1bmNfXywgZnVuYy0+bmFtZSk7CisgICAgfQorCisgICAgcHJpbnRrKEtF Uk5fREVCVUcgIiVzOiBIb29rIGRvbmUuXG4iLCBfX2Z1bmNfXyk7CisKKyAgICByZXR1cm4gMDsK K30KKworc3RhdGljIHZvaWQgcG9zdF9hcHBseV9ob29rKGxpdmVwYXRjaF9wYXlsb2FkX3QgKnBh eWxvYWQpCit7CisgICAgaW50IGk7CisKKyAgICBwcmludGsoS0VSTl9ERUJVRyAiJXM6IEhvb2sg c3RhcnRpbmcuXG4iLCBfX2Z1bmNfXyk7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgcGF5bG9hZC0+ bmZ1bmNzOyBpKyspCisgICAgeworICAgICAgICBzdHJ1Y3QgbGl2ZXBhdGNoX2Z1bmMgKmZ1bmMg PSAmcGF5bG9hZC0+ZnVuY3NbaV07CisKKyAgICAgICAgQlVHX09OKGZ1bmMtPmFwcGxpZWQgIT0g TElWRVBBVENIX0ZVTkNfQVBQTElFRCk7CisgICAgICAgIHByaW50ayhLRVJOX0RFQlVHICIlczog cG9zdCBhcHBsaWVkOiAlc1xuIiwgX19mdW5jX18sIGZ1bmMtPm5hbWUpOworICAgIH0KKworICAg IHByaW50ayhLRVJOX0RFQlVHICIlczogSG9vayBkb25lLlxuIiwgX19mdW5jX18pOworfQorCitz dGF0aWMgaW50IHByZV9yZXZlcnRfaG9vayhsaXZlcGF0Y2hfcGF5bG9hZF90ICpwYXlsb2FkKQor eworICAgIGludCBpOworCisgICAgcHJpbnRrKEtFUk5fREVCVUcgIiVzOiBIb29rIHN0YXJ0aW5n LlxuIiwgX19mdW5jX18pOworCisgICAgZm9yIChpID0gMDsgaSA8IHBheWxvYWQtPm5mdW5jczsg aSsrKQorICAgIHsKKyAgICAgICAgc3RydWN0IGxpdmVwYXRjaF9mdW5jICpmdW5jID0gJnBheWxv YWQtPmZ1bmNzW2ldOworCisgICAgICAgIEJVR19PTihmdW5jLT5hcHBsaWVkICE9IExJVkVQQVRD SF9GVU5DX0FQUExJRUQpOworICAgICAgICBwcmludGsoS0VSTl9ERUJVRyAiJXM6IHByZSByZXZl cnRlZDogJXNcbiIsIF9fZnVuY19fLCBmdW5jLT5uYW1lKTsKKyAgICB9CisKKyAgICBwcmludGso S0VSTl9ERUJVRyAiJXM6IEhvb2sgZG9uZS5cbiIsIF9fZnVuY19fKTsKKworICAgIHJldHVybiAw OworfQorCitzdGF0aWMgaW50IHJldmVydF9ob29rKGxpdmVwYXRjaF9wYXlsb2FkX3QgKnBheWxv YWQpCit7CisgICAgaW50IGk7CisKKyAgICBwcmludGsoS0VSTl9ERUJVRyAiJXM6IEhvb2sgc3Rh cnRpbmcuXG4iLCBfX2Z1bmNfXyk7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgcGF5bG9hZC0+bmZ1 bmNzOyBpKyspCisgICAgeworICAgICAgICBzdHJ1Y3QgbGl2ZXBhdGNoX2Z1bmMgKmZ1bmMgPSAm cGF5bG9hZC0+ZnVuY3NbaV07CisKKyAgICAgICAgcmV2ZXJ0X2NudCsrOworICAgICAgICBwcmlu dGsoS0VSTl9ERUJVRyAiJXM6IHJldmVydGluZzogJXNcbiIsIF9fZnVuY19fLCBmdW5jLT5uYW1l KTsKKyAgICB9CisKKyAgICBwcmludGsoS0VSTl9ERUJVRyAiJXM6IEhvb2sgZG9uZS5cbiIsIF9f ZnVuY19fKTsKKworICAgIHJldHVybiAtRUlOVkFMOyAvKiBNYXJrIGFjdGlvbiBhcyBpbmNvbnNp c3RlbnQgKi8KK30KKworc3RhdGljIHZvaWQgcG9zdF9yZXZlcnRfaG9vayhsaXZlcGF0Y2hfcGF5 bG9hZF90ICpwYXlsb2FkKQoreworICAgIGludCBpOworCisgICAgcHJpbnRrKEtFUk5fREVCVUcg IiVzOiBIb29rIHN0YXJ0aW5nLlxuIiwgX19mdW5jX18pOworCisgICAgZm9yIChpID0gMDsgaSA8 IHBheWxvYWQtPm5mdW5jczsgaSsrKQorICAgIHsKKyAgICAgICAgc3RydWN0IGxpdmVwYXRjaF9m dW5jICpmdW5jID0gJnBheWxvYWQtPmZ1bmNzW2ldOworCisgICAgICAgIEJVR19PTihyZXZlcnRf Y250ICE9IDEpOworICAgICAgICBCVUdfT04oZnVuYy0+YXBwbGllZCAhPSBMSVZFUEFUQ0hfRlVO Q19BUFBMSUVEKTsKKworICAgICAgICAvKiBPdXRzaWRlIG9mIHF1aWVzY2Ugem9uZTogTUFZIFRS SUdHRVIgSE9TVCBDUkFTSC9VTkRFRklORUQgQkVIQVZJT1IgKi8KKyAgICAgICAgYXJjaF9saXZl cGF0Y2hfcXVpZXNjZSgpOworICAgICAgICBhcmNoX2xpdmVwYXRjaF9yZXZlcnQocGF5bG9hZCk7 CisgICAgICAgIGFyY2hfbGl2ZXBhdGNoX3Jldml2ZSgpOworICAgICAgICBCVUdfT04oZnVuYy0+ YXBwbGllZCA9PSBMSVZFUEFUQ0hfRlVOQ19BUFBMSUVEKTsKKworICAgICAgICBwcmludGsoS0VS Tl9ERUJVRyAiJXM6IHBvc3QgcmV2ZXJ0ZWQ6ICVzXG4iLCBfX2Z1bmNfXywgZnVuYy0+bmFtZSk7 CisgICAgfQorCisgICAgcHJpbnRrKEtFUk5fREVCVUcgIiVzOiBIb29rIGRvbmUuXG4iLCBfX2Z1 bmNfXyk7Cit9CisKK0xJVkVQQVRDSF9BUFBMWV9IT09LKHJldmVydF9ob29rKTsKKworTElWRVBB VENIX1BSRUFQUExZX0hPT0socHJlX2FwcGx5X2hvb2spOworTElWRVBBVENIX1BPU1RBUFBMWV9I T09LKHBvc3RfYXBwbHlfaG9vayk7CitMSVZFUEFUQ0hfUFJFUkVWRVJUX0hPT0socHJlX3JldmVy dF9ob29rKTsKK0xJVkVQQVRDSF9QT1NUUkVWRVJUX0hPT0socG9zdF9yZXZlcnRfaG9vayk7CisK K3N0cnVjdCBsaXZlcGF0Y2hfZnVuYyBfX3NlY3Rpb24oIi5saXZlcGF0Y2guZnVuY3MiKSBsaXZl cGF0Y2hfeGVuX2hlbGxvX3dvcmxkID0geworICAgIC52ZXJzaW9uID0gTElWRVBBVENIX1BBWUxP QURfVkVSU0lPTiwKKyAgICAubmFtZSA9IGhlbGxvX3dvcmxkX3BhdGNoX3RoaXNfZm5jLAorICAg IC5uZXdfYWRkciA9IHhlbl9oZWxsb193b3JsZCwKKyAgICAub2xkX2FkZHIgPSB4ZW5fZXh0cmFf dmVyc2lvbiwKKyAgICAubmV3X3NpemUgPSBORVdfQ09ERV9TWiwKKyAgICAub2xkX3NpemUgPSBP TERfQ09ERV9TWiwKK307CisKKy8qCisgKiBMb2NhbCB2YXJpYWJsZXM6CisgKiBtb2RlOiBDCisg KiBjLWZpbGUtc3R5bGU6ICJCU0QiCisgKiBjLWJhc2ljLW9mZnNldDogNAorICogdGFiLXdpZHRo OiA0CisgKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKKyAqIEVuZDoKKyAqLwotLSAKMi4xNi41CgoK CgpBbWF6b24gRGV2ZWxvcG1lbnQgQ2VudGVyIEdlcm1hbnkgR21iSApLcmF1c2Vuc3RyLiAzOAox MDExNyBCZXJsaW4KR2VzY2hhZWZ0c2Z1ZWhydW5nOiBDaHJpc3RpYW4gU2NobGFlZ2VyLCBSYWxm IEhlcmJyaWNoCkVpbmdldHJhZ2VuIGFtIEFtdHNnZXJpY2h0IENoYXJsb3R0ZW5idXJnIHVudGVy IEhSQiAxNDkxNzMgQgpTaXR6OiBCZXJsaW4KVXN0LUlEOiBERSAyODkgMjM3IDg3OQoKCgoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1h aWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54 ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==