Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1l9Y3u-0001fY-5D for pgsql-hackers@arkaria.postgresql.org; Tue, 09 Feb 2021 18:48:34 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1l9Y3s-0002te-VZ for pgsql-hackers@arkaria.postgresql.org; Tue, 09 Feb 2021 18:48:32 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1l9Y3s-0002tX-8x for pgsql-hackers@lists.postgresql.org; Tue, 09 Feb 2021 18:48:32 +0000 Received: from smtp-fw-2101.amazon.com ([72.21.196.25]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1l9Y3p-0008Q3-Ck for pgsql-hackers@postgresql.org; Tue, 09 Feb 2021 18:48:31 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209; t=1612896509; x=1644432509; h=from:to:cc:subject:date:message-id:mime-version; bh=3F3y208HvH4x9SAtqUGYU6goFrtO6v0e+xhNeBCuFY4=; b=OESIpSq3AwrMQfZCsYgTAoIAEUyJQtNm9MDGc2KAWrT7hMIqfZEcC2bL p2r2PQs+geuQIWZnX223PTIOpUOX72B5ZhZXxTTBDvCJpj6XWRJU0FxdR /ixtyF3rE/fBW+h3X7oqG78cawWEhi9n8tuBw7talPrnc9k0T8GZ6hflU Q=; X-Amazon-filename: 0001-Early-prototype-for-partial-heap-only-tuples-PHOT.patch X-IronPort-AV: E=Sophos;i="5.81,166,1610409600"; d="scan'208,223";a="80978738" Received: from iad12-co-svc-p1-lb1-vlan3.amazon.com (HELO email-inbound-relay-1d-38ae4ad2.us-east-1.amazon.com) ([10.43.8.6]) by smtp-border-fw-out-2101.iad2.amazon.com with ESMTP; 09 Feb 2021 18:48:23 +0000 Received: from EX13MTAUWC001.ant.amazon.com (iad12-ws-svc-p26-lb9-vlan3.iad.amazon.com [10.40.163.38]) by email-inbound-relay-1d-38ae4ad2.us-east-1.amazon.com (Postfix) with ESMTPS id 1AAD3A1CB5 for ; Tue, 9 Feb 2021 18:48:23 +0000 (UTC) Received: from EX13D22UWC001.ant.amazon.com (10.43.162.192) by EX13MTAUWC001.ant.amazon.com (10.43.162.135) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Tue, 9 Feb 2021 18:48:22 +0000 Received: from EX13D03UWC002.ant.amazon.com (10.43.162.160) by EX13D22UWC001.ant.amazon.com (10.43.162.192) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Tue, 9 Feb 2021 18:48:22 +0000 Received: from EX13D03UWC002.ant.amazon.com ([10.43.162.160]) by EX13D03UWC002.ant.amazon.com ([10.43.162.160]) with mapi id 15.00.1497.010; Tue, 9 Feb 2021 18:48:22 +0000 From: "Bossart, Nathan" To: "pgsql-hackers@postgresql.org" CC: "McAlister, Grant" , "Mlodgenski, Jim" , "Nasby, Jim" , "Hsu, John" Subject: partial heap only tuples Thread-Topic: partial heap only tuples Thread-Index: AQHW/xQjDV3mcaer4kawg8T78u9ZiQ== Date: Tue, 9 Feb 2021 18:48:21 +0000 Message-ID: <2ECBBCA0-4D8D-4841-8872-4A5BBDC063D2@amazon.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-ms-exchange-messagesentrepresentingtype: 1 x-ms-exchange-transport-fromentityheader: Hosted x-originating-ip: [10.43.162.194] Content-Type: multipart/mixed; boundary="_002_2ECBBCA04D8D484188724A5BBDC063D2amazoncom_" MIME-Version: 1.0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --_002_2ECBBCA04D8D484188724A5BBDC063D2amazoncom_ Content-Type: text/plain; charset="utf-8" Content-ID: <7C6BD8FB87AF7545BB120BBDDA6B7307@amazon.com> Content-Transfer-Encoding: base64 SGVsbG8sDQoNCkknbSBob3BpbmcgdG8gZ2F0aGVyIHNvbWUgZWFybHkgZmVlZGJhY2sgb24gYSBo ZWFwIG9wdGltaXphdGlvbiBJJ3ZlDQpiZWVuIHdvcmtpbmcgb24uICBJbiBzaG9ydCwgSSdtIGhv cGluZyB0byBhZGQgInBhcnRpYWwgaGVhcCBvbmx5DQp0dXBsZSIgKFBIT1QpIHN1cHBvcnQsIHdo aWNoIHdvdWxkIGFsbG93IHlvdSB0byBza2lwIHVwZGF0aW5nIGluZGV4ZXMNCmZvciB1bmNoYW5n ZWQgY29sdW1ucyBldmVuIHdoZW4gb3RoZXIgaW5kZXhlcyByZXF1aXJlIHVwZGF0ZXMuICBUb2Rh eSwNCkhPVCB3b3JrcyB3b25kZXJzIHdoZW4gbm8gaW5kZXhlZCBjb2x1bW5zIGFyZSB1cGRhdGVk LiAgSG93ZXZlciwgYXMNCnNvb24gYXMgeW91IHRvdWNoIG9uZSBpbmRleGVkIGNvbHVtbiwgeW91 IGxvc2UgdGhhdCBvcHRpbWl6YXRpb24NCmVudGlyZWx5LCBhcyB5b3UgbXVzdCB1cGRhdGUgZXZl cnkgaW5kZXggb24gdGhlIHRhYmxlLiAgVGhlIHJlc3VsdGluZw0KcGVyZm9ybWFuY2UgaW1wYWN0 IGlzIGEgcGFpbiBwb2ludCBmb3IgbWFueSBvZiBvdXIgKEFXUydzKSBlbnRlcnByaXNlDQpjdXN0 b21lcnMsIHNvIHdlJ2QgbGlrZSB0byBsZW5kIGEgaGFuZCBmb3Igc29tZSBpbXByb3ZlbWVudHMg aW4gdGhpcw0KYXJlYS4gIEZvciB3b3JrbG9hZHMgaW52b2x2aW5nIGEgbG90IG9mIGNvbHVtbnMg YW5kIGEgbG90IG9mIGluZGV4ZXMsDQphbiBvcHRpbWl6YXRpb24gbGlrZSBQSE9UIGNhbiBtYWtl IGEgaHVnZSBkaWZmZXJlbmNlLiAgSSdtIGF3YXJlIHRoYXQNCnRoZXJlIHdhcyBhIHByZXZpb3Vz IGF0dGVtcHQgYSBmZXcgeWVhcnMgYWdvIHRvIGFkZCBhIHNpbWlsYXINCm9wdGltaXphdGlvbiBj YWxsZWQgV0FSTSBbMF0gWzFdLiAgSG93ZXZlciwgSSBvbmx5IG5vdGljZWQgdGhpcw0KcHJldmlv dXMgZWZmb3J0IGFmdGVyIGNvbWluZyB1cCB3aXRoIHRoZSBkZXNpZ24gZm9yIFBIT1QsIHNvIEkg ZW5kZWQNCnVwIHRha2luZyBhIHNsaWdodGx5IGRpZmZlcmVudCBhcHByb2FjaC4gIEkgYW0gYWxz byBhd2FyZSBvZiBhIGNvdXBsZQ0Kb2YgcmVjZW50IG5idHJlZSBpbXByb3ZlbWVudHMgdGhhdCBt YXkgbWl0aWdhdGUgc29tZSBvZiB0aGUgaW1wYWN0IG9mDQpub24tSE9UIHVwZGF0ZXMgWzJdIFsz XSwgYnV0IEkgYW0gaG9waW5nIHRoYXQgUEhPVCBzZXJ2ZXMgYXMgYSBuaWNlDQpjb21wbGVtZW50 IHRvIHRob3NlLiAgSSd2ZSBhdHRhY2hlZCBhIHZlcnkgZWFybHkgcHJvb2Ytb2YtY29uY2VwdA0K cGF0Y2ggd2l0aCB0aGUgZGVzaWduIGRlc2NyaWJlZCBiZWxvdy4NCg0KQXMgZmFyIGFzIHBlcmZv cm1hbmNlIGlzIGNvbmNlcm5lZCwgaXQgaXMgc2ltcGxlIGVub3VnaCB0byBzaG93IG1ham9yDQpi ZW5lZml0cyBmcm9tIFBIT1QgYnkgdGFja2luZyBvbiBhIGxhcmdlIG51bWJlciBvZiBpbmRleGVz IGFuZCBjb2x1bW5zDQp0byBhIHRhYmxlLiAgRm9yIGEgc2hvcnQgcGdiZW5jaCBydW4gd2hlcmUg ZWFjaCB0YWJsZSBoYWQgNSBhZGRpdGlvbmFsDQp0ZXh0IGNvbHVtbnMgYW5kIGluZGV4ZXMgb24g ZXZlcnkgY29sdW1uLCBJIG5vdGljZWQgYSB+MzQlIGJ1bXAgaW4NClRQUyB3aXRoIFBIT1QgWzRd LiAgVGhlb3JldGljYWxseSwgdGhlIFRQUyBidW1wIHNob3VsZCBiZSBldmVuIGhpZ2hlcg0Kd2l0 aCBhZGRpdGlvbmFsIGNvbHVtbnMgd2l0aCBpbmRleGVzLiAgSW4gYWRkaXRpb24gdG8gc2hvd2lu ZyBzdWNoDQpiZW5lZml0cywgSSBoYXZlIGFsc28gYXR0ZW1wdGVkIHRvIHNob3cgdGhhdCByZWd1 bGFyIHBnYmVuY2ggcnVucyBhcmUNCm5vdCBzaWduaWZpY2FudGx5IGFmZmVjdGVkLiAgRm9yIGEg c2hvcnQgcGdiZW5jaCBydW4gd2l0aCBubyB0YWJsZQ0KbW9kaWZpY2F0aW9ucywgSSBub3RpY2Vk IGEgfjIlIGJ1bXAgaW4gVFBTIHdpdGggUEhPVCBbNV0uDQoNCk5leHQsIEknbGwgZ28gaW50byB0 aGUgZGVzaWduIGEgYml0LiAgSSd2ZSBjb21tYW5kZWVyZWQgdGhlIHR3bw0KcmVtYWluaW5nIGJp dHMgaW4gdF9pbmZvbWFzazIgdG8gdXNlIGFzIEhFQVBfUEhPVF9VUERBVEVEIGFuZA0KSEVBUF9Q SE9UX1RVUExFLiAgVGhlc2UgYXJlIGFuYWxvZ291cyB0byB0aGUgSEVBUF9IT1RfVVBEQVRFRCBh bmQNCkhFQVBfT05MWV9UVVBMRSBiaXRzLiAgKElmIHRoZXJlIGFyZSBjb25jZXJucyBhYm91dCBl eGhhdXN0aW5nIHRoZQ0KdF9pbmZvbWFzazIgYml0cywgSSB0aGluayB3ZSBjb3VsZCBvbmx5IHVz ZSBvbmUgb2YgdGhlIHJlbWFpbmluZyBiaXRzDQphcyBhICJtb2RpZmllciIgYml0IG9uIHRoZSBI T1Qgb25lcy4gIEkgb3B0ZWQgYWdhaW5zdCB0aGF0IGZvciB0aGUNCnByb29mLW9mLWNvbmNlcHQg cGF0Y2ggdG8ga2VlcCB0aGluZ3Mgc2ltcGxlLikgIFdoZW4gY3JlYXRpbmcgYSBQSE9UDQp0dXBs ZSwgd2Ugb25seSBjcmVhdGUgbmV3IGluZGV4IHR1cGxlcyBmb3IgdXBkYXRlZCBjb2x1bW5zLiAg VGhlc2UgbmV3DQppbmRleCB0dXBsZXMgcG9pbnQgdG8gdGhlIFBIT1QgdHVwbGUuICBGb2xsb3dp bmcgaXMgYSBzaW1wbGUNCmRlbW9uc3RyYXRpb24gd2l0aCBhIHRhYmxlIHdpdGggdHdvIGludGVn ZXIgY29sdW1ucywgZWFjaCB3aXRoIGl0cyBvd24NCmluZGV4Og0KDQpwb3N0Z3Jlcz0jIFNFTEVD VCAgaGVhcF90dXBsZV9pbmZvbWFza19mbGFncyh0X2luZm9tYXNrLCB0X2luZm9tYXNrMiksIHRf ZGF0YQ0KICAgICAgICAgICAgIEZST00gIGhlYXBfcGFnZV9pdGVtcyhnZXRfcmF3X3BhZ2UoJ3Rl c3QnLCAwKSkNCiAgICAgICAgICAgIFdIRVJFICB0X2luZm9tYXNrIElTIE5PVCBOVUxMDQogICAg ICAgICAgICAgICBPUiAgdF9pbmZvbWFzazIgSVMgTk9UIE5VTEw7DQogICAgICAgICAgICAgICAg ICAgICAgICAgIGhlYXBfdHVwbGVfaW5mb21hc2tfZmxhZ3MgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgICAgICAgdF9kYXRhDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLQ0KICgie0hFQVBfWE1JTl9DT01NSVRURUQsSEVBUF9YTUFYX0NPTU1JVFRFRCxIRUFQX1BI T1RfVVBEQVRFRH0iLHt9KSAgICAgICAgICB8IFx4MDAwMDAwMDAwMDAwMDAwMA0KICgie0hFQVBf WE1JTl9DT01NSVRURUQsSEVBUF9VUERBVEVELEhFQVBfUEhPVF9VUERBVEVELEhFQVBfUEhPVF9U VVBMRX0iLHt9KSB8IFx4MDEwMDAwMDAwMDAwMDAwMA0KICgie0hFQVBfWE1BWF9JTlZBTElELEhF QVBfVVBEQVRFRCxIRUFQX1BIT1RfVFVQTEV9Iix7fSkgICAgICAgICAgICAgICAgICAgICB8IFx4 MDEwMDAwMDAwMjAwMDAwMA0KKDMgcm93cykNCg0KcG9zdGdyZXM9IyBTRUxFQ1QgIGl0ZW1vZmZz ZXQsIGN0aWQsIGRhdGENCiAgICAgICAgICAgICBGUk9NICBidF9wYWdlX2l0ZW1zKGdldF9yYXdf cGFnZSgndGVzdF9hX2lkeCcsIDEpKTsNCiBpdGVtb2Zmc2V0IHwgY3RpZCAgfCAgICAgICAgICBk YXRhDQotLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICAg ICAgICAgMSB8ICgwLDEpIHwgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDANCiAgICAgICAgICAyIHwg KDAsMikgfCAwMSAwMCAwMCAwMCAwMCAwMCAwMCAwMA0KKDIgcm93cykNCg0KcG9zdGdyZXM9IyBT RUxFQ1QgIGl0ZW1vZmZzZXQsIGN0aWQsIGRhdGENCiAgICAgICAgICAgICBGUk9NICBidF9wYWdl X2l0ZW1zKGdldF9yYXdfcGFnZSgndGVzdF9iX2lkeCcsIDEpKTsNCiBpdGVtb2Zmc2V0IHwgY3Rp ZCAgfCAgICAgICAgICBkYXRhDQotLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tDQogICAgICAgICAgMSB8ICgwLDEpIHwgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAN CiAgICAgICAgICAyIHwgKDAsMykgfCAwMiAwMCAwMCAwMCAwMCAwMCAwMCAwMA0KKDIgcm93cykN Cg0KV2hlbiBpdCBpcyB0aW1lIHRvIHNjYW4gdGhyb3VnaCBhIFBIT1QgY2hhaW4sIHRoZXJlIGFy ZSBhIGNvdXBsZSBvZg0KdGhpbmdzIHRvIGFjY291bnQgZm9yLiAgU2VxdWVudGlhbCBzY2FucyB3 b3JrIG91dC1vZi10aGUtYm94IHRoYW5rcyB0bw0KdGhlIHZpc2liaWxpdHkgcnVsZXMsIGJ1dCBv dGhlciB0eXBlcyBvZiBzY2FucyBsaWtlIGluZGV4IHNjYW5zDQpyZXF1aXJlIGFkZGl0aW9uYWwg Y2hlY2tzLiAgSWYgeW91IGVuY291bnRlciBhIFBIT1QgY2hhaW4gd2hlbg0KcGVyZm9ybWluZyBh biBpbmRleCBzY2FuLCB5b3Ugc2hvdWxkIG9ubHkgY29udGludWUgZm9sbG93aW5nIHRoZSBjaGFp bg0KYXMgbG9uZyBhcyBub25lIG9mIHRoZSBjb2x1bW5zIHRoZSBpbmRleCBpbmRleGVzIGFyZSBt b2RpZmllZC4gIElmIHRoZQ0Kc2NhbiBkb2VzIGVuY291bnRlciBzdWNoIGEgbW9kaWZpY2F0aW9u LCB3ZSBzdG9wIGZvbGxvd2luZyB0aGUgY2hhaW4NCmFuZCBjb250aW51ZSB3aXRoIHRoZSBpbmRl eCBzY2FuLiAgRXZlbiBpZiB0aGVyZSBpcyBhIHR1cGxlIGluIHRoYXQNClBIT1QgY2hhaW4gdGhh dCBzaG91bGQgYmUgcmV0dXJuZWQgYnkgb3VyIGluZGV4IHNjYW4sIHdlIHdpbGwgc3RpbGwNCmZp bmQgaXQsIGFzIHRoZXJlIHdpbGwgYmUgYW5vdGhlciBtYXRjaGluZyBpbmRleCB0dXBsZSB0aGF0 IHBvaW50cyB1cw0KdG8gbGF0ZXIgaW4gdGhlIFBIT1QgY2hhaW4uICBNeSBpbml0aWFsIGlkZWEg Zm9yIGRldGVybWluaW5nIHdoaWNoDQpjb2x1bW5zIHdlcmUgbW9kaWZpZWQgd2FzIHRvIGFkZCBh IG5ldyBiaXRtYXAgYWZ0ZXIgdGhlICJudWxscyIgYml0bWFwDQppbiB0aGUgdHVwbGUgaGVhZGVy LiAgSG93ZXZlciwgdGhlIGF0dGFjaGVkIHBhdGNoIHNpbXBseSB1c2VzDQpIZWFwRGV0ZXJtaW5l TW9kaWZpZWRDb2x1bW5zKCkuICBJJ3ZlIHlldCB0byBtZWFzdXJlIHRoZSBvdmVyaGVhZCBvZg0K dGhpcyBhcHByb2FjaCB2ZXJzdXMgdGhlIGJpdG1hcCBhcHByb2FjaCwgYnV0IEkgaGF2ZW4ndCBu b3RpY2VkDQphbnl0aGluZyB0b28gZGV0cmltZW50YWwgaW4gdGhlIHRlc3RpbmcgSSd2ZSBkb25l IHNvIGZhci4NCg0KSW4gbXkgcHJvb2Ytb2YtY29uY2VwdCBwYXRjaCwgSSd2ZSBpbmNsdWRlZCBh IHRlbXBvcmFyeSBoYWNrIHRvIGdldA0Kc29tZSBiYXNpYyBiaXRtYXAgc2NhbnMgd29ya2luZyBh cyBleHBlY3RlZC4gIFNpbmNlIHdlIHdvbid0IGhhdmUNCmZvbGxvd2VkIHRoZSBQSE9UIGNoYWlu cyBpbiB0aGUgYml0bWFwIGluZGV4IHNjYW4sIHdlIG11c3Qga25vdyBob3cgdG8NCmZvbGxvdyB0 aGVtIGluIHRoZSBiaXRtYXAgaGVhcCBzY2FuLiAgVW5mb3J0dW5hdGVseSwgdGhlIGJpdG1hcCBo ZWFwDQpzY2FuIGhhcyBubyBrbm93bGVkZ2Ugb2Ygd2hhdCBpbmRleGVkIGNvbHVtbnMgdG8gcGF5 IGF0dGVudGlvbiB0byB3aGVuDQpmb2xsb3dpbmcgdGhlIFBIT1QgY2hhaW5zLiAgTXkgdGVtcG9y YXJ5IGhhY2sgZml4ZXMgdGhpcyBieSBoYXZpbmcgdGhlDQpiaXRtYXAgaGVhcCBzY2FuIHB1bGwg dGhlIHNldCBvZiBpbmRleGVkIGNvbHVtbnMgaXQgbmVlZHMgdG8gY29uc2lkZXINCmZyb20gdGhl IG91dGVyIHBsYW4uICBJIHRoaW5rIHRoaXMgaXMgb25lIGFyZWEgb2YgdGhlIGRlc2lnbiB0aGF0 IHdpbGwNCnJlcXVpcmUgc3Vic3RhbnRpYWxseSBtb3JlIGVmZm9ydC4gIEZvbGxvd2luZyBpcyBh IGRlbW9uc3RyYXRpb24gb2YgYQ0KYmFzaWMgc2VxdWVudGlhbCBzY2FuIGFuZCBiaXRtYXAgc2Nh bjoNCg0KcG9zdGdyZXM9IyBFWFBMQUlOIChDT1NUUyBGQUxTRSkgU0VMRUNUICogRlJPTSB0ZXN0 Ow0KICAgIFFVRVJZIFBMQU4NCi0tLS0tLS0tLS0tLS0tLS0tLQ0KIFNlcSBTY2FuIG9uIHRlc3QN CigxIHJvdykNCg0KcG9zdGdyZXM9IyBTRUxFQ1QgKiBGUk9NIHRlc3Q7DQogYSB8IGINCi0tLSst LS0NCiAxIHwgMg0KKDEgcm93KQ0KDQpwb3N0Z3Jlcz0jIEVYUExBSU4gKENPU1RTIEZBTFNFKSBT RUxFQ1QgKiBGUk9NIHRlc3QgV0hFUkUgYSA+PSAwOw0KICAgICAgICAgICAgICBRVUVSWSBQTEFO DQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiBCaXRtYXAgSGVhcCBT Y2FuIG9uIHRlc3QNCiAgIFJlY2hlY2sgQ29uZDogKGEgPj0gMCkNCiAgIC0+ICBCaXRtYXAgSW5k ZXggU2NhbiBvbiB0ZXN0X2FfaWR4DQogICAgICAgICBJbmRleCBDb25kOiAoYSA+PSAwKQ0KKDQg cm93cykNCg0KcG9zdGdyZXM9IyBTRUxFQ1QgKiBGUk9NIHRlc3QgV0hFUkUgYSA+PSAwOw0KIGEg fCBiDQotLS0rLS0tDQogMSB8IDINCigxIHJvdykNCg0KVGhpcyBkZXNpZ24gYWxsb3dzIGZvciAi d2VhdmluZyIgYmV0d2VlbiBIT1QgYW5kIFBIT1QgaW4gYSBjaGFpbi4NCkhvd2V2ZXIsIGl0IGlz IHN0aWxsIGltcG9ydGFudCB0byB0cmVhdCBlYWNoIGNvbnNlY3V0aXZlIHNldCBvZiBIT1QNCnVw ZGF0ZXMgb3IgUEhPVCB1cGRhdGVzIGFzIGl0cyBvd24gY2hhaW4gZm9yIHRoZSBwdXJwb3NlcyBv ZiBwcnVuaW5nDQphbmQgY2xlYW51cC4gIFBydW5pbmcgaXMgaGVhdmlseSByZXN0cmljdGVkIGZv ciBQSE9UIGR1ZSB0byB0aGUNCnByZXNlbmNlIG9mIGNvcnJlc3BvbmRpbmcgaW5kZXggdHVwbGVz LiAgSSBiZWxpZXZlIHdlIGNhbiByZWRpcmVjdA0KbGluZSBwb2ludGVycyBmb3IgY29uc2VjdXRp dmUgc2V0cyBvZiBQSE9UIHVwZGF0ZXMgdGhhdCBtb2RpZnkgdGhlDQpzYW1lIHNldCBvZiBpbmRl eGVkIGNvbHVtbnMsIGJ1dCB0aGlzIGlzIG9ubHkgcG9zc2libGUgaWYgbm8gaW5kZXggaGFzDQpk dXBsaWNhdGUgdmFsdWVzIGluIHRoZSByZWRpcmVjdGVkIHNldC4gIEFsc28sIEkgZG8gbm90IHRo aW5rIGl0IGlzDQpwb3NzaWJsZSB0byBwcnVuZSBpbnRlcm1lZGlhdGUgbGluZSBwb2ludGVycyBp biBhIFBIT1QgY2hhaW4uICBXaGlsZQ0KaXQgbWF5IGJlIHBvc3NpYmxlIHRvIHJlZGlyZWN0IGFs bCBsaW5lIHBvaW50ZXJzIHRvIHRoZSBmaW5hbCB0dXBsZSBpbg0KYSBzZXJpZXMgb2YgdXBkYXRl cyB0byB0aGUgc2FtZSBzZXQgb2YgaW5kZXhlZCBjb2x1bW5zLCBteSBodW5jaCBpcw0KdGhhdCBk b2luZyBzbyB3aWxsIGFkZCBzaWduaWZpY2FudCBjb21wbGV4aXR5IGZvciB0cmFja2luZw0KaW50 ZXJtZWRpYXRlIHVwZGF0ZXMsIGFuZCBhbnkgcGVyZm9ybWFuY2UgZ2FpbnMgd2lsbCBiZSBtYXJn aW5hbC4NCkkndmUgY3JlYXRlZCBzb21lIHNtYWxsIGRpYWdyYW1zIHRvIGlsbHVzdHJhdGUgbXkg cHJvcG9zZWQgY2xlYW51cA0Kc3RyYXRlZ3kuDQoNCkhlcmUgaXMgYSBoeXBvdGhldGljYWwgUEhP VCBjaGFpbi4NCg0KICAgICAgICBpZHgxICAgICAgMCAgICAgICAxICAgICAgIDINCiAgICAgICAg aWR4MiAgICAgIDAgICAgICAgICAgICAgICAgICAgICAgIDEgICAgICAgMg0KICAgICAgICBpZHgz ICAgICAgMA0KICAgICAgICBscCAgICAgICAgMSAgICAgICAyICAgICAgIDMgICAgICAgNCAgICAg ICA1DQogICAgICAgIGhlYXAgICAgICAoMCwwLDApICgxLDAsMCkgKDIsMCwwKSAoMiwxLDApICgy LDIsMCkNCg0KSGVhcCB0dXBsZXMgbWF5IGJlIHJlbW92ZWQgYW5kIGxpbmUgcG9pbnRlcnMgbWF5 IGJlIHJlZGlyZWN0ZWQgZm9yDQpjb25zZWN1dGl2ZSB1cGRhdGVzIHRvIHRoZSBzYW1lIHNldCBv ZiBpbmRleGVzIChhcyBsb25nIGFzIG5vIGluZGV4DQpoYXMgZHVwbGljYXRlIHZhbHVlcyBpbiB0 aGUgcmVkaXJlY3RlZCBzZXQgb2YgdXBkYXRlcykuDQoNCiAgICAgICAgaWR4MSAgICAgIDAgICAg ICAgMSAgICAgICAyDQogICAgICAgIGlkeDIgICAgICAwICAgICAgICAgICAgICAgICAgICAgICAx ICAgICAgIDINCiAgICAgICAgaWR4MyAgICAgIDANCiAgICAgICAgbHAgICAgICAgIDEgICAgICAg MiAgLT4gICAzICAgICAgIDQgIC0+ICAgNQ0KICAgICAgICBoZWFwICAgICAgKDAsMCwwKSAgICAg ICAgICgyLDAsMCkgICAgICAgICAoMiwyLDApDQoNCldoZW4gZm9sbG93aW5nIHJlZGlyZWN0IGNo YWlucywgd2UgbXVzdCBjaGVjayB0aGF0IHRoZSAiaW50ZXJlc3RpbmciDQpjb2x1bW5zIGZvciB0 aGUgcmVsZXZhbnQgaW5kZXhlcyBhcmUgbm90IHVwZGF0ZWQgd2hlbmV2ZXIgYSB0dXBsZSBpcw0K Zm91bmQuICBJbiBvcmRlciB0byBiZSBlbGlnaWJsZSBmb3IgY2xlYW51cCwgdGhlIGZpbmFsIHR1 cGxlIGluIHRoZQ0KY29ycmVzcG9uZGluZyBQSE9UL0hPVCBjaGFpbiBtdXN0IGFsc28gYmUgZWxp Z2libGUgZm9yIGNsZWFudXAsIG9yIGFsbA0KaW5kZXhlcyBtdXN0IGhhdmUgYmVlbiB1cGRhdGVk IGxhdGVyIGluIHRoZSBjaGFpbiBiZWZvcmUgYW55IHZpc2libGUNCnR1cGxlcy4gIChJIHN1c3Bl Y3QgdGhhdCB0aGUgZm9ybWVyIGNvbmRpdGlvbiBtYXkgY2F1c2Ugc2lnbmlmaWNhbnQNCmJsb2F0 IGZvciBzb21lIHdvcmtsb2FkcyBhbmQgdGhlIGxhdHRlciBjb25kaXRpb24gbWF5IGJlIHByb2hp Yml0aXZlbHkNCmNvbXBsaWNhdGVkLiAgUGVyaGFwcyB0aGlzIGNhbiBiZSBtaXRpZ2F0ZWQgYnkg bGltaXRpbmcgaG93IGxvbmcgd2UNCmFsbG93IFBIT1QgY2hhaW5zIHRvIGdldC4pICBNeSBwcm9v Zi1vZi1jb25jZXB0IHBhdGNoIGRvZXMgbm90IHlldA0KaW1wbGVtZW50IGxpbmUgcG9pbnRlciBy ZWRpcmVjdGluZyBhbmQgY2xlYW51cCwgc28gaXQgaXMgcG9zc2libGUgdGhhdA0KSSBhbSBtaXNz aW5nIHNvbWUgYWRkaXRpb25hbCBvYnN0YWNsZXMgYW5kIG9wdGltaXphdGlvbnMgaGVyZS4NCg0K SSB0aGluayBQb3N0Z3JlU1FMIDE1IGlzIHJlYWxpc3RpY2FsbHkgdGhlIGVhcmxpZXN0IHRhcmdl dCB2ZXJzaW9uIGZvcg0KdGhpcyBjaGFuZ2UuICBHaXZlbiB0aGF0IG90aGVycyBmaW5kIHRoaXMg cHJvamVjdCB3b3J0aHdoaWxlLCB0aGF0J3MNCm15IGdvYWwgZm9yIHRoaXMgcGF0Y2guICBJJ3Zl IENDJ2QgYSBudW1iZXIgb2YgZm9sa3Mgd2hvIGhhdmUgYmVlbg0KaW52b2x2ZWQgaW4gdGhpcyBw cm9qZWN0IGFscmVhZHkgYW5kIHdobyBJJ20gaG9waW5nIHdpbGwgY29udGludWUgdG8NCmhlbHAg bWUgZHJpdmUgdGhpcyBmb3J3YXJkLg0KDQpOYXRoYW4NCg0KWzBdIGh0dHBzOi8vd3d3LnBvc3Rn cmVzcWwub3JnL21lc3NhZ2UtaWQvZmxhdC9DQUJPaWtkTW9wNVJiX1JuUzJ4RmRBWE1aR1NxY0ot UC1CWTJydU1kJTJCYnVVa0o0aURQdyU0MG1haWwuZ21haWwuY29tDQpbMV0gaHR0cHM6Ly93d3cu cG9zdGdyZXNxbC5vcmcvbWVzc2FnZS1pZC9mbGF0L0NBQk9pa2RNTnk2eW93QSUyQndUR0s5UlZk OGl3JTJCQ3pxSGVRU0dwVzdZa2FfNFJTWl9MT1ElNDBtYWlsLmdtYWlsLmNvbQ0KWzJdIGh0dHBz Oi8vZ2l0LnBvc3RncmVzcWwub3JnL2dpdHdlYi8/cD1wb3N0Z3Jlc3FsLmdpdDthPWNvbW1pdDto PTBkODYxYmJiDQpbM10gaHR0cHM6Ly9naXQucG9zdGdyZXNxbC5vcmcvZ2l0d2ViLz9wPXBvc3Rn cmVzcWwuZ2l0O2E9Y29tbWl0O2g9ZDE2OGI2NjYNCls0XSBub24tUEhPVDoNCiAgICAgICAgdHJh bnNhY3Rpb24gdHlwZTogPGJ1aWx0aW46IFRQQy1CIChzb3J0IG9mKT4NCiAgICAgICAgc2NhbGlu ZyBmYWN0b3I6IDEwMDANCiAgICAgICAgcXVlcnkgbW9kZTogc2ltcGxlDQogICAgICAgIG51bWJl ciBvZiBjbGllbnRzOiAyNTYNCiAgICAgICAgbnVtYmVyIG9mIHRocmVhZHM6IDI1Ng0KICAgICAg ICBkdXJhdGlvbjogMTgwMCBzDQogICAgICAgIG51bWJlciBvZiB0cmFuc2FjdGlvbnMgYWN0dWFs bHkgcHJvY2Vzc2VkOiAyOTc1OTczMw0KICAgICAgICBsYXRlbmN5IGF2ZXJhZ2UgPSAxNS40ODQg bXMNCiAgICAgICAgbGF0ZW5jeSBzdGRkZXYgPSAxMC4xMDIgbXMNCiAgICAgICAgdHBzID0gMTY1 MzAuNTUyOTUwIChpbmNsdWRpbmcgY29ubmVjdGlvbnMgZXN0YWJsaXNoaW5nKQ0KICAgICAgICB0 cHMgPSAxNjUzMC43MzA1NjUgKGV4Y2x1ZGluZyBjb25uZWN0aW9ucyBlc3RhYmxpc2hpbmcpDQoN CiAgICBQSE9UOg0KICAgICAgICAuLi4NCiAgICAgICAgbnVtYmVyIG9mIHRyYW5zYWN0aW9ucyBh Y3R1YWxseSBwcm9jZXNzZWQ6IDM5OTk4OTY4DQogICAgICAgIGxhdGVuY3kgYXZlcmFnZSA9IDEx LjUyMCBtcw0KICAgICAgICBsYXRlbmN5IHN0ZGRldiA9IDguMTU3IG1zDQogICAgICAgIHRwcyA9 IDIyMjIwLjcwOTExNyAoaW5jbHVkaW5nIGNvbm5lY3Rpb25zIGVzdGFibGlzaGluZykNCiAgICAg ICAgdHBzID0gMjIyMjEuMTgyNjQ4IChleGNsdWRpbmcgY29ubmVjdGlvbnMgZXN0YWJsaXNoaW5n KQ0KWzVdIG5vbi1QSE9UOg0KICAgICAgICAuLi4NCiAgICAgICAgbnVtYmVyIG9mIHRyYW5zYWN0 aW9ucyBhY3R1YWxseSBwcm9jZXNzZWQ6IDE1MTg0MTk2MQ0KICAgICAgICBsYXRlbmN5IGF2ZXJh Z2UgPSAzLjAzNCBtcw0KICAgICAgICBsYXRlbmN5IHN0ZGRldiA9IDEuODU0IG1zDQogICAgICAg IHRwcyA9IDg0MzU0LjI2ODU5MSAoaW5jbHVkaW5nIGNvbm5lY3Rpb25zIGVzdGFibGlzaGluZykN CiAgICAgICAgdHBzID0gODQzNTUuMDYxMzUzIChleGNsdWRpbmcgY29ubmVjdGlvbnMgZXN0YWJs aXNoaW5nKQ0KDQogICAgUEhPVDoNCiAgICAgICAgLi4uDQogICAgICAgIG51bWJlciBvZiB0cmFu c2FjdGlvbnMgYWN0dWFsbHkgcHJvY2Vzc2VkOiAxNTUyMjU4NTcNCiAgICAgICAgbGF0ZW5jeSBh dmVyYWdlID0gMi45NjggbXMNCiAgICAgICAgbGF0ZW5jeSBzdGRkZXYgPSAxLjI2NCBtcw0KICAg ICAgICB0cHMgPSA4NjIzNC4wNDQ3ODMgKGluY2x1ZGluZyBjb25uZWN0aW9ucyBlc3RhYmxpc2hp bmcpDQogICAgICAgIHRwcyA9IDg2MjM0Ljk2MTI4NiAoZXhjbHVkaW5nIGNvbm5lY3Rpb25zIGVz dGFibGlzaGluZykNCg0K --_002_2ECBBCA04D8D484188724A5BBDC063D2amazoncom_ Content-Type: application/octet-stream; name="0001-Early-prototype-for-partial-heap-only-tuples-PHOT.patch" Content-Description: 0001-Early-prototype-for-partial-heap-only-tuples-PHOT.patch Content-Disposition: attachment; filename="0001-Early-prototype-for-partial-heap-only-tuples-PHOT.patch"; size=48060; creation-date="Tue, 09 Feb 2021 18:48:21 GMT"; modification-date="Tue, 09 Feb 2021 18:48:21 GMT" Content-ID: <9C9AD58CC7445C40B9E4315F356092F4@amazon.com> Content-Transfer-Encoding: base64 RnJvbSBiMTA1MWZlMzIyNGZlZGI1NTk1ZThmOGFjZTFhY2Y4ZWMwNGNiMzBiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOYXRoYW4gQm9zc2FydCA8Ym9zc2FydG5AYW1hem9uLmNvbT4K RGF0ZTogVHVlLCA5IEZlYiAyMDIxIDE4OjA3OjUyICswMDAwClN1YmplY3Q6IFtQQVRDSCAxLzFd IEVhcmx5IHByb3RvdHlwZSBmb3IgcGFydGlhbCBoZWFwIG9ubHkgdHVwbGVzIChQSE9UKS4KClRo aXMgcGF0Y2ggZGVtb25zdHJhdGVzIGEgZmV3IGJhc2ljIHBpZWNlcyBvZiB0aGUgcGFydGlhbCBo ZWFwIG9ubHkKdHVwbGVzIHByb2plY3QuCi0tLQogY29udHJpYi9wYWdlaW5zcGVjdC9leHBlY3Rl ZC9wYWdlLm91dCAgICAgfCAgIDQgKy0KIGNvbnRyaWIvcGFnZWluc3BlY3QvaGVhcGZ1bmNzLmMg ICAgICAgICAgIHwgICA1ICsKIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jICAgICAg ICAgIHwgMTUxICsrKysrKysrKysrKysrKysrKysrKysrKystLS0tLQogc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYyAgfCAgMjIgKysrLS0KIHNyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL3BydW5laGVhcC5jICAgICAgIHwgIDE5ICsrKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL3ZhY3V1bWxhenkuYyAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9p bmRleGFtLmMgICAgICAgIHwgICAzICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idGlu c2VydC5jICAgICB8ICAgNSArLQogc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL2hlYXBkZXNj LmMgICAgfCAgMzggKysrKysrKysKIHNyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFtLmMg ICAgICAgIHwgIDEyICsrLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvY29uc3RyYWludC5jICAgICAg ICAgfCAgIDcgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9tLmMgICAgICAgICAgIHwg ICA0ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjSW5kZXhpbmcuYyAgICAgICB8ICAyNyAr KysrKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSZXBsaWNhdGlvbi5jICAgIHwgIDE0ICsr LQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmMgfCAgMjYgKysrKy0K IHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jICAgIHwgIDE4ICsrLS0KIHNy Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMgIHwgIDM2ICsrKysrKysKIHNy Yy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCAgICAgICAgICAgICAgIHwgICA1ICstCiBzcmMvaW5j bHVkZS9hY2Nlc3MvaGVhcGFtX3hsb2cuaCAgICAgICAgICB8ICAxMyArKysKIHNyYy9pbmNsdWRl L2FjY2Vzcy9odHVwX2RldGFpbHMuaCAgICAgICAgIHwgIDU3ICsrKysrKysrKystCiBzcmMvaW5j bHVkZS9hY2Nlc3Mvcm1ncmxpc3QuaCAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9h Y2Nlc3MvdGFibGVhbS5oICAgICAgICAgICAgICB8ICAyOSArKystLS0KIHNyYy9pbmNsdWRlL2V4 ZWN1dG9yL2V4ZWN1dG9yLmggICAgICAgICAgIHwgICAzICstCiAyMyBmaWxlcyBjaGFuZ2VkLCA0 MjYgaW5zZXJ0aW9ucygrKSwgNzUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvY29udHJpYi9w YWdlaW5zcGVjdC9leHBlY3RlZC9wYWdlLm91dCBiL2NvbnRyaWIvcGFnZWluc3BlY3QvZXhwZWN0 ZWQvcGFnZS5vdXQKaW5kZXggNGRhMjhmMGExZC4uODE4MDdjODlkOCAxMDA2NDQKLS0tIGEvY29u dHJpYi9wYWdlaW5zcGVjdC9leHBlY3RlZC9wYWdlLm91dAorKysgYi9jb250cmliL3BhZ2VpbnNw ZWN0L2V4cGVjdGVkL3BhZ2Uub3V0CkBAIC0xNDAsNiArMTQwLDggQEAgU0VMRUNUIHVubmVzdChy YXdfZmxhZ3MpCiAgSEVBUF9NT1ZFRF9JTgogIEhFQVBfTU9WRURfT0ZGCiAgSEVBUF9PTkxZX1RV UExFCisgSEVBUF9QSE9UX1RVUExFCisgSEVBUF9QSE9UX1VQREFURUQKICBIRUFQX1VQREFURUQK ICBIRUFQX1hNQVhfQ09NTUlUVEVECiAgSEVBUF9YTUFYX0VYQ0xfTE9DSwpAQCAtMTQ5LDcgKzE1 MSw3IEBAIFNFTEVDVCB1bm5lc3QocmF3X2ZsYWdzKQogIEhFQVBfWE1BWF9MT0NLX09OTFkKICBI RUFQX1hNSU5fQ09NTUlUVEVECiAgSEVBUF9YTUlOX0lOVkFMSUQKLSgxOSByb3dzKQorKDIxIHJv d3MpCiAKIFNFTEVDVCB1bm5lc3QoY29tYmluZWRfZmxhZ3MpCiAgIEZST00gaGVhcF90dXBsZV9p bmZvbWFza19mbGFncyh4J0ZGRkYnOjppbnQsIHgnRkZGRic6OmludCkgT1JERVIgQlkgMTsKZGlm ZiAtLWdpdCBhL2NvbnRyaWIvcGFnZWluc3BlY3QvaGVhcGZ1bmNzLmMgYi9jb250cmliL3BhZ2Vp bnNwZWN0L2hlYXBmdW5jcy5jCmluZGV4IDlhYmNlZTMyYWYuLmJlZTgxMWQ1ZWYgMTAwNjQ0Ci0t LSBhL2NvbnRyaWIvcGFnZWluc3BlY3QvaGVhcGZ1bmNzLmMKKysrIGIvY29udHJpYi9wYWdlaW5z cGVjdC9oZWFwZnVuY3MuYwpAQCAtNTg3LDYgKzU4NywxMSBAQCBoZWFwX3R1cGxlX2luZm9tYXNr X2ZsYWdzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCWZsYWdzW2NudCsrXSA9IENTdHJpbmdHZXRUZXh0 RGF0dW0oIkhFQVBfSE9UX1VQREFURUQiKTsKIAlpZiAoKHRfaW5mb21hc2syICYgSEVBUF9PTkxZ X1RVUExFKSAhPSAwKQogCQlmbGFnc1tjbnQrK10gPSBDU3RyaW5nR2V0VGV4dERhdHVtKCJIRUFQ X09OTFlfVFVQTEUiKTsKKwlpZiAoKHRfaW5mb21hc2syICYgSEVBUF9QSE9UX1VQREFURUQpICE9 IDApCisJCWZsYWdzW2NudCsrXSA9IENTdHJpbmdHZXRUZXh0RGF0dW0oIkhFQVBfUEhPVF9VUERB VEVEIik7CisJaWYgKCh0X2luZm9tYXNrMiAmIEhFQVBfUEhPVF9UVVBMRSkgIT0gMCkKKwkJZmxh Z3NbY250KytdID0gQ1N0cmluZ0dldFRleHREYXR1bSgiSEVBUF9QSE9UX1RVUExFIik7CisKIAog CS8qIGJ1aWxkIHZhbHVlICovCiAJQXNzZXJ0KGNudCA8PSBiaXRjbnQpOwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC9oZWFwYW0uYwppbmRleCA5OTI2ZTJiZDU0Li45YWEwYTUwYjU3IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC9oZWFwYW0uYwpAQCAtMTUzOCwxNiArMTUzOCwyMSBAQCBoZWFwX2ZldGNoKFJlbGF0aW9uIHJl bGF0aW9uLAogYm9vbAogaGVhcF9ob3Rfc2VhcmNoX2J1ZmZlcihJdGVtUG9pbnRlciB0aWQsIFJl bGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCQkJCQkgICBTbmFwc2hvdCBzbmFwc2hv dCwgSGVhcFR1cGxlIGhlYXBUdXBsZSwKLQkJCQkJICAgYm9vbCAqYWxsX2RlYWQsIGJvb2wgZmly c3RfY2FsbCkKKwkJCQkJICAgYm9vbCAqYWxsX2RlYWQsIGJvb2wgZmlyc3RfY2FsbCwKKwkJCQkJ ICAgUmVsYXRpb24gaW5kcmVsLCBCaXRtYXBzZXQgKmludGVyZXN0aW5nX2F0dHJzKQogewogCVBh Z2UJCWRwID0gKFBhZ2UpIEJ1ZmZlckdldFBhZ2UoYnVmZmVyKTsKIAlUcmFuc2FjdGlvbklkIHBy ZXZfeG1heCA9IEludmFsaWRUcmFuc2FjdGlvbklkOwogCUJsb2NrTnVtYmVyIGJsa25vOwogCU9m ZnNldE51bWJlciBvZmZudW07CisJT2Zmc2V0TnVtYmVyIHByZXZfb2ZmbnVtID0gSW52YWxpZE9m ZnNldE51bWJlcjsKIAlib29sCQlhdF9jaGFpbl9zdGFydDsKIAlib29sCQl2YWxpZDsKIAlib29s CQlza2lwOwogCUdsb2JhbFZpc1N0YXRlICp2aXN0ZXN0ID0gTlVMTDsKKwlIZWFwVHVwbGUgcHJl dl90dXAgPSBOVUxMOworCUJpdG1hcHNldCAqaW5kX2F0dHJzID0gTlVMTDsKKwlib29sIGFsbF9h dHRycyA9IGZhbHNlOwogCiAJLyogSWYgdGhpcyBpcyBub3QgdGhlIGZpcnN0IGNhbGwsIHByZXZp b3VzIGNhbGwgcmV0dXJuZWQgYSAobGl2ZSEpIHR1cGxlICovCiAJaWYgKGFsbF9kZWFkKQpAQCAt MTU2Miw2ICsxNTY3LDIxIEBAIGhlYXBfaG90X3NlYXJjaF9idWZmZXIoSXRlbVBvaW50ZXIgdGlk LCBSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAlBc3NlcnQoVHJhbnNhY3Rpb25J ZElzVmFsaWQoUmVjZW50WG1pbikpOwogCUFzc2VydChCdWZmZXJHZXRCbG9ja051bWJlcihidWZm ZXIpID09IGJsa25vKTsKIAorCWlmIChpbmRyZWwpCisJeworCQlGb3JtX3BnX2luZGV4IGluZGV4 U3RydWN0ID0gaW5kcmVsLT5yZF9pbmRleDsKKworCQlmb3IgKGludCBpID0gMDsgaSA8IGluZGV4 U3RydWN0LT5pbmRuYXR0czsgaSsrKQorCQl7CisJCQlpbnQgaW5kX2F0dHIgPSBpbmRleFN0cnVj dC0+aW5ka2V5LnZhbHVlc1tpXSAtIEZpcnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXI7 CisJCQlpbmRfYXR0cnMgPSBibXNfYWRkX21lbWJlcihpbmRfYXR0cnMsIGluZF9hdHRyKTsKKwkJ fQorCX0KKwllbHNlIGlmIChpbnRlcmVzdGluZ19hdHRycykKKwkJaW5kX2F0dHJzID0gaW50ZXJl c3RpbmdfYXR0cnM7CisJZWxzZQorCQlhbGxfYXR0cnMgPSB0cnVlOworCiAJLyogU2NhbiB0aHJv dWdoIHBvc3NpYmxlIG11bHRpcGxlIG1lbWJlcnMgb2YgSE9ULWNoYWluICovCiAJZm9yICg7OykK IAl7CkBAIC0xNTk5LDYgKzE2MTksMjQgQEAgaGVhcF9ob3Rfc2VhcmNoX2J1ZmZlcihJdGVtUG9p bnRlciB0aWQsIFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCQloZWFwVHVwbGUt PnRfdGFibGVPaWQgPSBSZWxhdGlvbkdldFJlbGlkKHJlbGF0aW9uKTsKIAkJSXRlbVBvaW50ZXJT ZXQoJmhlYXBUdXBsZS0+dF9zZWxmLCBibGtubywgb2ZmbnVtKTsKIAorCQkvKgorCQkgKiBJZiB0 aGlzIHR1cGxlIHdhcyBhIFBIT1QgdXBkYXRlLCBtYWtlIHN1cmUgdGhhdCB3ZSBzaG91bGQga2Vl cAorCQkgKiBmb2xsb3dpbmcgaXQgYmFzZWQgb24gdGhlIGluZGV4IGF0dHJpYnV0ZXMgYW5kIHRo ZSBtb2RpZmllZCBvbmVzLgorCQkgKi8KKwkJaWYgKE9mZnNldE51bWJlcklzVmFsaWQocHJldl9v ZmZudW0pICYmCisJCQlIZWFwVHVwbGVJc1ZhbGlkKHByZXZfdHVwKSAmJiBIZWFwVHVwbGVJc1Bh cnRpYWxIZWFwT25seShoZWFwVHVwbGUpKQorCQl7CisJCQlCaXRtYXBzZXQgKm1vZGlmaWVkX2F0 dHJzOworCisJCQlpZiAoYWxsX2F0dHJzKQorCQkJCWJyZWFrOworCisJCQltb2RpZmllZF9hdHRy cyA9IEhlYXBEZXRlcm1pbmVNb2RpZmllZENvbHVtbnMocmVsYXRpb24sIGJtc19jb3B5KGluZF9h dHRycyksCisJCQkJCQkJCQkJCQkJCQkJCSBwcmV2X3R1cCwgaGVhcFR1cGxlKTsKKwkJCWlmICgh Ym1zX2lzX2VtcHR5KG1vZGlmaWVkX2F0dHJzKSkKKwkJCQlicmVhazsKKwkJfQorCiAJCS8qCiAJ CSAqIFNob3VsZG4ndCBzZWUgYSBIRUFQX09OTFkgdHVwbGUgYXQgY2hhaW4gc3RhcnQuCiAJCSAq LwpAQCAtMTY2MSwxMyArMTY5OSwxNSBAQCBoZWFwX2hvdF9zZWFyY2hfYnVmZmVyKEl0ZW1Qb2lu dGVyIHRpZCwgUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJCSAqIENoZWNrIHRv IHNlZSBpZiBIT1QgY2hhaW4gY29udGludWVzIHBhc3QgdGhpcyB0dXBsZTsgaWYgc28gZmV0Y2gK IAkJICogdGhlIG5leHQgb2ZmbnVtIGFuZCBsb29wIGFyb3VuZC4KIAkJICovCi0JCWlmIChIZWFw VHVwbGVJc0hvdFVwZGF0ZWQoaGVhcFR1cGxlKSkKKwkJaWYgKEhlYXBUdXBsZUlzSG90VXBkYXRl ZChoZWFwVHVwbGUpIHx8IEhlYXBUdXBsZUlzUGFydGlhbEhvdFVwZGF0ZWQoaGVhcFR1cGxlKSkK IAkJewogCQkJQXNzZXJ0KEl0ZW1Qb2ludGVyR2V0QmxvY2tOdW1iZXIoJmhlYXBUdXBsZS0+dF9k YXRhLT50X2N0aWQpID09CiAJCQkJICAgYmxrbm8pOworCQkJcHJldl9vZmZudW0gPSBvZmZudW07 CiAJCQlvZmZudW0gPSBJdGVtUG9pbnRlckdldE9mZnNldE51bWJlcigmaGVhcFR1cGxlLT50X2Rh dGEtPnRfY3RpZCk7CiAJCQlhdF9jaGFpbl9zdGFydCA9IGZhbHNlOwogCQkJcHJldl94bWF4ID0g SGVhcFR1cGxlSGVhZGVyR2V0VXBkYXRlWGlkKGhlYXBUdXBsZS0+dF9kYXRhKTsKKwkJCXByZXZf dHVwID0gaGVhcF9jb3B5dHVwbGUoaGVhcFR1cGxlKTsKIAkJfQogCQllbHNlCiAJCQlicmVhazsJ CQkJLyogZW5kIG9mIGNoYWluICovCkBAIC0zMDQzLDcgKzMwODMsOCBAQCBzaW1wbGVfaGVhcF9k ZWxldGUoUmVsYXRpb24gcmVsYXRpb24sIEl0ZW1Qb2ludGVyIHRpZCkKIFRNX1Jlc3VsdAogaGVh cF91cGRhdGUoUmVsYXRpb24gcmVsYXRpb24sIEl0ZW1Qb2ludGVyIG90aWQsIEhlYXBUdXBsZSBu ZXd0dXAsCiAJCQlDb21tYW5kSWQgY2lkLCBTbmFwc2hvdCBjcm9zc2NoZWNrLCBib29sIHdhaXQs Ci0JCQlUTV9GYWlsdXJlRGF0YSAqdG1mZCwgTG9ja1R1cGxlTW9kZSAqbG9ja21vZGUpCisJCQlU TV9GYWlsdXJlRGF0YSAqdG1mZCwgTG9ja1R1cGxlTW9kZSAqbG9ja21vZGUsCisJCQlCaXRtYXBz ZXQgKiptb2RpZmllZF9hdHRycykKIHsKIAlUTV9SZXN1bHQJcmVzdWx0OwogCVRyYW5zYWN0aW9u SWQgeGlkID0gR2V0Q3VycmVudFRyYW5zYWN0aW9uSWQoKTsKQEAgLTMwNTEsNyArMzA5Miw2IEBA IGhlYXBfdXBkYXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBJdGVtUG9pbnRlciBvdGlkLCBIZWFwVHVw bGUgbmV3dHVwLAogCUJpdG1hcHNldCAgKmtleV9hdHRyczsKIAlCaXRtYXBzZXQgICppZF9hdHRy czsKIAlCaXRtYXBzZXQgICppbnRlcmVzdGluZ19hdHRyczsKLQlCaXRtYXBzZXQgICptb2RpZmll ZF9hdHRyczsKIAlJdGVtSWQJCWxwOwogCUhlYXBUdXBsZURhdGEgb2xkdHVwOwogCUhlYXBUdXBs ZQloZWFwdHVwOwpAQCAtMzA3MCw2ICszMTEwLDcgQEAgaGVhcF91cGRhdGUoUmVsYXRpb24gcmVs YXRpb24sIEl0ZW1Qb2ludGVyIG90aWQsIEhlYXBUdXBsZSBuZXd0dXAsCiAJYm9vbAkJaGF2ZV90 dXBsZV9sb2NrID0gZmFsc2U7CiAJYm9vbAkJaXNjb21ibzsKIAlib29sCQl1c2VfaG90X3VwZGF0 ZSA9IGZhbHNlOworCWJvb2wJCXVzZV9waG90X3VwZGF0ZSA9IGZhbHNlOwogCWJvb2wJCWhvdF9h dHRyc19jaGVja2VkID0gZmFsc2U7CiAJYm9vbAkJa2V5X2ludGFjdDsKIAlib29sCQlhbGxfdmlz aWJsZV9jbGVhcmVkID0gZmFsc2U7CkBAIC0zMTY4LDcgKzMyMDksNyBAQCBoZWFwX3VwZGF0ZShS ZWxhdGlvbiByZWxhdGlvbiwgSXRlbVBvaW50ZXIgb3RpZCwgSGVhcFR1cGxlIG5ld3R1cCwKIAlu ZXd0dXAtPnRfdGFibGVPaWQgPSBSZWxhdGlvbkdldFJlbGlkKHJlbGF0aW9uKTsKIAogCS8qIERl dGVybWluZSBjb2x1bW5zIG1vZGlmaWVkIGJ5IHRoZSB1cGRhdGUuICovCi0JbW9kaWZpZWRfYXR0 cnMgPSBIZWFwRGV0ZXJtaW5lTW9kaWZpZWRDb2x1bW5zKHJlbGF0aW9uLCBpbnRlcmVzdGluZ19h dHRycywKKwkqbW9kaWZpZWRfYXR0cnMgPSBIZWFwRGV0ZXJtaW5lTW9kaWZpZWRDb2x1bW5zKHJl bGF0aW9uLCBpbnRlcmVzdGluZ19hdHRycywKIAkJCQkJCQkJCQkJCSAgJm9sZHR1cCwgbmV3dHVw KTsKIAogCS8qCkBAIC0zMTgyLDcgKzMyMjMsNyBAQCBoZWFwX3VwZGF0ZShSZWxhdGlvbiByZWxh dGlvbiwgSXRlbVBvaW50ZXIgb3RpZCwgSGVhcFR1cGxlIG5ld3R1cCwKIAkgKiBpcyB1cGRhdGVz IHRoYXQgZG9uJ3QgbWFuaXB1bGF0ZSBrZXkgY29sdW1ucywgbm90IHRob3NlIHRoYXQKIAkgKiBz ZXJlbmRpcGl0b3VzbHkgYXJyaXZlIGF0IHRoZSBzYW1lIGtleSB2YWx1ZXMuCiAJICovCi0JaWYg KCFibXNfb3ZlcmxhcChtb2RpZmllZF9hdHRycywga2V5X2F0dHJzKSkKKwlpZiAoIWJtc19vdmVy bGFwKCptb2RpZmllZF9hdHRycywga2V5X2F0dHJzKSkKIAl7CiAJCSpsb2NrbW9kZSA9IExvY2tU dXBsZU5vS2V5RXhjbHVzaXZlOwogCQlteGFjdF9zdGF0dXMgPSBNdWx0aVhhY3RTdGF0dXNOb0tl eVVwZGF0ZTsKQEAgLTM0MzksNyArMzQ4MCw2IEBAIGwyOgogCQlibXNfZnJlZShob3RfYXR0cnMp OwogCQlibXNfZnJlZShrZXlfYXR0cnMpOwogCQlibXNfZnJlZShpZF9hdHRycyk7Ci0JCWJtc19m cmVlKG1vZGlmaWVkX2F0dHJzKTsKIAkJYm1zX2ZyZWUoaW50ZXJlc3RpbmdfYXR0cnMpOwogCQly ZXR1cm4gcmVzdWx0OwogCX0KQEAgLTM3NDcsOCArMzc4NywyNSBAQCBsMjoKIAkJICogY2hhbmdl ZC4gSWYgdGhlIHBhZ2Ugd2FzIGFscmVhZHkgZnVsbCwgd2UgbWF5IGhhdmUgc2tpcHBlZCBjaGVj a2luZwogCQkgKiBmb3IgaW5kZXggY29sdW1ucywgYW5kIGFsc28gY2FuJ3QgZG8gYSBIT1QgdXBk YXRlLgogCQkgKi8KLQkJaWYgKGhvdF9hdHRyc19jaGVja2VkICYmICFibXNfb3ZlcmxhcChtb2Rp ZmllZF9hdHRycywgaG90X2F0dHJzKSkKKwkJaWYgKGhvdF9hdHRyc19jaGVja2VkICYmICFibXNf b3ZlcmxhcCgqbW9kaWZpZWRfYXR0cnMsIGhvdF9hdHRycykpCiAJCQl1c2VfaG90X3VwZGF0ZSA9 IHRydWU7CisKKwkJLyoKKwkJICogUEhPVCBvbmx5IHRha2VzIGVmZmVjdCBpZiBIT1QgdXBkYXRp bmcgd2lsbCBub3Qgd29yayBBTkQgaWYgd2UgYXJlCisJCSAqIG5vdCB1cGRhdGluZyBhbGwgb2Yg dGhlIGluZGV4ZWQgY29sdW1ucy4gQ3VycmVudGx5IHRoaXMgY2FuIG5vdCBiZQorCQkgKiBkb25l IGZvciBjYXRhbG9nIHRhYmxlcyBiZWNhdXNlIHRoZSBuZWNlc3NhcnkgY2hhbmdlcyBoYXZlbid0 IGJlZW4KKwkJICogbWFkZSB0byBDYXRhbG9nSW5kZXhJbnNlcnQoKS4KKwkJICovCisJCWlmICho b3RfYXR0cnNfY2hlY2tlZCAmJiAhdXNlX2hvdF91cGRhdGUgJiYgIUlzQ2F0YWxvZ1JlbGF0aW9u KHJlbGF0aW9uKSkKKwkJeworCQkJQml0bWFwc2V0ICp1cGRhdGVkX2luZGV4ZWRfYXR0cnMgPSBi bXNfaW50ZXJzZWN0KCptb2RpZmllZF9hdHRycywgaG90X2F0dHJzKTsKKwkJCWJvb2wgdXBkYXRp bmdfYWxsX2luZGV4ZWRfYXR0cnMgPSBibXNfZXF1YWwoaG90X2F0dHJzLCB1cGRhdGVkX2luZGV4 ZWRfYXR0cnMpOworCisJCQlpZiAoIXVwZGF0aW5nX2FsbF9pbmRleGVkX2F0dHJzKQorCQkJCXVz ZV9waG90X3VwZGF0ZSA9IHRydWU7CisKKwkJCWJtc19mcmVlKHVwZGF0ZWRfaW5kZXhlZF9hdHRy cyk7CisJCX0KIAl9CiAJZWxzZQogCXsKQEAgLTM3NjMsNyArMzgyMCw3IEBAIGwyOgogCSAqIGxv Z2dlZC4KIAkgKi8KIAlvbGRfa2V5X3R1cGxlID0gRXh0cmFjdFJlcGxpY2FJZGVudGl0eShyZWxh dGlvbiwgJm9sZHR1cCwKLQkJCQkJCQkJCQkgICBibXNfb3ZlcmxhcChtb2RpZmllZF9hdHRycywg aWRfYXR0cnMpLAorCQkJCQkJCQkJCSAgIGJtc19vdmVybGFwKCptb2RpZmllZF9hdHRycywgaWRf YXR0cnMpLAogCQkJCQkJCQkJCSAgICZvbGRfa2V5X2NvcGllZCk7CiAKIAkvKiBOTyBFUkVQT1JU KEVSUk9SKSBmcm9tIGhlcmUgdGlsbCBjaGFuZ2VzIGFyZSBsb2dnZWQgKi8KQEAgLTM3ODMsOCAr Mzg0MCwyMiBAQCBsMjoKIAkgKi8KIAlQYWdlU2V0UHJ1bmFibGUocGFnZSwgeGlkKTsKIAorCS8q CisJICogQ2xlYXIgYWxsIChQKUhPVCBiaXRzIGJlZm9yZSB3ZSBzZXQgdGhlbSBmb3IgdGhlIG5l dyB0dXBsZS4gIFRoaXMgbXVzdAorCSAqIGhhcHBlbiBiZWZvcmUgc2V0dGluZyB0aGUgKFApSE9U IGJpdHMsIGFzIHNvbWUgb2YgdGhlIG1hY3JvcyB1c2VkIGZvcgorCSAqIHNldHRpbmcgdGhlc2Ug Yml0cyBhc3NlcnQgdGhhdCBvdGhlcnMgYXJlIG5vdCBzZXQuCisJICovCisJSGVhcFR1cGxlQ2xl YXJIb3RVcGRhdGVkKCZvbGR0dXApOworCUhlYXBUdXBsZUNsZWFySGVhcE9ubHkoaGVhcHR1cCk7 CisJSGVhcFR1cGxlQ2xlYXJIZWFwT25seShuZXd0dXApOworCUhlYXBUdXBsZUNsZWFyUGFydGlh bEhvdFVwZGF0ZWQoJm9sZHR1cCk7CisJSGVhcFR1cGxlQ2xlYXJQYXJ0aWFsSGVhcE9ubHkoaGVh cHR1cCk7CisJSGVhcFR1cGxlQ2xlYXJQYXJ0aWFsSGVhcE9ubHkobmV3dHVwKTsKKwogCWlmICh1 c2VfaG90X3VwZGF0ZSkKIAl7CisJCUFzc2VydCghdXNlX3Bob3RfdXBkYXRlKTsKKwogCQkvKiBN YXJrIHRoZSBvbGQgdHVwbGUgYXMgSE9ULXVwZGF0ZWQgKi8KIAkJSGVhcFR1cGxlU2V0SG90VXBk YXRlZCgmb2xkdHVwKTsKIAkJLyogQW5kIG1hcmsgdGhlIG5ldyB0dXBsZSBhcyBoZWFwLW9ubHkg Ki8KQEAgLTM3OTIsMTIgKzM4NjMsMTcgQEAgbDI6CiAJCS8qIE1hcmsgdGhlIGNhbGxlcidzIGNv cHkgdG9vLCBpbiBjYXNlIGRpZmZlcmVudCBmcm9tIGhlYXB0dXAgKi8KIAkJSGVhcFR1cGxlU2V0 SGVhcE9ubHkobmV3dHVwKTsKIAl9Ci0JZWxzZQorCisJaWYgKHVzZV9waG90X3VwZGF0ZSkKIAl7 Ci0JCS8qIE1ha2Ugc3VyZSB0dXBsZXMgYXJlIGNvcnJlY3RseSBtYXJrZWQgYXMgbm90LUhPVCAq LwotCQlIZWFwVHVwbGVDbGVhckhvdFVwZGF0ZWQoJm9sZHR1cCk7Ci0JCUhlYXBUdXBsZUNsZWFy SGVhcE9ubHkoaGVhcHR1cCk7Ci0JCUhlYXBUdXBsZUNsZWFySGVhcE9ubHkobmV3dHVwKTsKKwkJ QXNzZXJ0KCF1c2VfaG90X3VwZGF0ZSk7CisKKwkJLyogTWFyayB0aGUgb2xkIHR1cGxlIGFzIFBI T1QtdXBkYXRlZCAqLworCQlIZWFwVHVwbGVTZXRQYXJ0aWFsSG90VXBkYXRlZCgmb2xkdHVwKTsK KwkJLyogQW5kIG1hcmsgdGhlIG5ldyB0dXBsZSBhcyBwYXJ0aWFsIGhlYXAtb25seSAqLworCQlI ZWFwVHVwbGVTZXRQYXJ0aWFsSGVhcE9ubHkoaGVhcHR1cCk7CisJCS8qIE1hcmsgdGhlIGNhbGxl cidzIGNvcHkgdG9vLCBpbiBjYXNlIGRpZmZlcmVudCBmcm9tIGhlYXB0dXAgKi8KKwkJSGVhcFR1 cGxlU2V0UGFydGlhbEhlYXBPbmx5KG5ld3R1cCk7CiAJfQogCiAJUmVsYXRpb25QdXRIZWFwVHVw bGUocmVsYXRpb24sIG5ld2J1ZiwgaGVhcHR1cCwgZmFsc2UpOyAvKiBpbnNlcnQgbmV3IHR1cGxl ICovCkBAIC0zOTEyLDcgKzM5ODgsNiBAQCBsMjoKIAlibXNfZnJlZShob3RfYXR0cnMpOwogCWJt c19mcmVlKGtleV9hdHRycyk7CiAJYm1zX2ZyZWUoaWRfYXR0cnMpOwotCWJtc19mcmVlKG1vZGlm aWVkX2F0dHJzKTsKIAlibXNfZnJlZShpbnRlcmVzdGluZ19hdHRycyk7CiAKIAlyZXR1cm4gVE1f T2s7CkBAIC00MDM4LDExICs0MTEzLDE0IEBAIHNpbXBsZV9oZWFwX3VwZGF0ZShSZWxhdGlvbiBy ZWxhdGlvbiwgSXRlbVBvaW50ZXIgb3RpZCwgSGVhcFR1cGxlIHR1cCkKIAlUTV9SZXN1bHQJcmVz dWx0OwogCVRNX0ZhaWx1cmVEYXRhIHRtZmQ7CiAJTG9ja1R1cGxlTW9kZSBsb2NrbW9kZTsKKwlC aXRtYXBzZXQgKm1vZGlmaWVkX2F0dHJzOyAvKiB1bnVzZWQgKi8KIAogCXJlc3VsdCA9IGhlYXBf dXBkYXRlKHJlbGF0aW9uLCBvdGlkLCB0dXAsCiAJCQkJCQkgR2V0Q3VycmVudENvbW1hbmRJZCh0 cnVlKSwgSW52YWxpZFNuYXBzaG90LAogCQkJCQkJIHRydWUgLyogd2FpdCBmb3IgY29tbWl0ICov ICwKLQkJCQkJCSAmdG1mZCwgJmxvY2ttb2RlKTsKKwkJCQkJCSAmdG1mZCwgJmxvY2ttb2RlLCAm bW9kaWZpZWRfYXR0cnMpOworCWJtc19mcmVlKG1vZGlmaWVkX2F0dHJzKTsKKwogCXN3aXRjaCAo cmVzdWx0KQogCXsKIAkJY2FzZSBUTV9TZWxmTW9kaWZpZWQ6CkBAIC02NDM5LDYgKzY1MTcsNyBA QCBoZWFwX3ByZXBhcmVfZnJlZXplX3R1cGxlKEhlYXBUdXBsZUhlYWRlciB0dXBsZSwKIAkJZnJ6 LT50X2luZm9tYXNrICY9IH5IRUFQX1hNQVhfQklUUzsKIAkJZnJ6LT50X2luZm9tYXNrIHw9IEhF QVBfWE1BWF9JTlZBTElEOwogCQlmcnotPnRfaW5mb21hc2syICY9IH5IRUFQX0hPVF9VUERBVEVE OworCQlmcnotPnRfaW5mb21hc2syICY9IH5IRUFQX1BIT1RfVVBEQVRFRDsKIAkJZnJ6LT50X2lu Zm9tYXNrMiAmPSB+SEVBUF9LRVlTX1VQREFURUQ7CiAJCWNoYW5nZWQgPSB0cnVlOwogCX0KQEAg LTczMzQsNyArNzQxMyw3IEBAIGhlYXBfaW5kZXhfZGVsZXRlX3R1cGxlcyhSZWxhdGlvbiByZWws IFRNX0luZGV4RGVsZXRlT3AgKmRlbHN0YXRlKQogCiAJCQkvKiBBcmUgYW55IHR1cGxlcyBmcm9t IHRoaXMgSE9UIGNoYWluIG5vbi12YWN1dW1hYmxlPyAqLwogCQkJaWYgKGhlYXBfaG90X3NlYXJj aF9idWZmZXIoJnRtcCwgcmVsLCBidWYsICZTbmFwc2hvdE5vblZhY3V1bWFibGUsCi0JCQkJCQkJ CQkgICAmaGVhcFR1cGxlLCBOVUxMLCB0cnVlKSkKKwkJCQkJCQkJCSAgICZoZWFwVHVwbGUsIE5V TEwsIHRydWUsIE5VTEwsIE5VTEwpKQogCQkJCWNvbnRpbnVlOwkJLyogY2FuJ3QgZGVsZXRlIGVu dHJ5ICovCiAKIAkJCS8qIENhbGxlciB3aWxsIGRlbGV0ZSwgc2luY2Ugd2hvbGUgSE9UIGNoYWlu IGlzIHZhY3V1bWFibGUgKi8KQEAgLTc5NzksNiArODA1OCw3IEBAIGxvZ19oZWFwX3VwZGF0ZShS ZWxhdGlvbiByZWxuLCBCdWZmZXIgb2xkYnVmLAogCWJvb2wJCW5lZWRfdHVwbGVfZGF0YSA9IFJl bGF0aW9uSXNMb2dpY2FsbHlMb2dnZWQocmVsbik7CiAJYm9vbAkJaW5pdDsKIAlpbnQJCQlidWZm bGFnczsKKwlib29sCQl1c2Vfcm1faGVhcDMgPSBmYWxzZTsKIAogCS8qIENhbGxlciBzaG91bGQg bm90IGNhbGwgbWUgb24gYSBub24tV0FMLWxvZ2dlZCByZWxhdGlvbiAqLwogCUFzc2VydChSZWxh dGlvbk5lZWRzV0FMKHJlbG4pKTsKQEAgLTc5ODcsNiArODA2NywxMSBAQCBsb2dfaGVhcF91cGRh dGUoUmVsYXRpb24gcmVsbiwgQnVmZmVyIG9sZGJ1ZiwKIAogCWlmIChIZWFwVHVwbGVJc0hlYXBP bmx5KG5ld3R1cCkpCiAJCWluZm8gPSBYTE9HX0hFQVBfSE9UX1VQREFURTsKKwllbHNlIGlmIChI ZWFwVHVwbGVJc1BhcnRpYWxIZWFwT25seShuZXd0dXApKQorCXsKKwkJaW5mbyA9IFhMT0dfSEVB UDNfUEFSVElBTF9IT1RfVVBEQVRFOworCQl1c2Vfcm1faGVhcDMgPSB0cnVlOworCX0KIAllbHNl CiAJCWluZm8gPSBYTE9HX0hFQVBfVVBEQVRFOwogCkBAIC04MTcyLDcgKzgyNTcsMTAgQEAgbG9n X2hlYXBfdXBkYXRlKFJlbGF0aW9uIHJlbG4sIEJ1ZmZlciBvbGRidWYsCiAJLyogZmlsdGVyaW5n IGJ5IG9yaWdpbiBvbiBhIHJvdyBsZXZlbCBpcyBtdWNoIG1vcmUgZWZmaWNpZW50ICovCiAJWExv Z1NldFJlY29yZEZsYWdzKFhMT0dfSU5DTFVERV9PUklHSU4pOwogCi0JcmVjcHRyID0gWExvZ0lu c2VydChSTV9IRUFQX0lELCBpbmZvKTsKKwlpZiAodXNlX3JtX2hlYXAzKQorCQlyZWNwdHIgPSBY TG9nSW5zZXJ0KFJNX0hFQVAzX0lELCBpbmZvKTsKKwllbHNlCisJCXJlY3B0ciA9IFhMb2dJbnNl cnQoUk1fSEVBUF9JRCwgaW5mbyk7CiAKIAlyZXR1cm4gcmVjcHRyOwogfQpAQCAtOTAzNSw3ICs5 MTIzLDcgQEAgaGVhcF94bG9nX211bHRpX2luc2VydChYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkK ICAqIEhhbmRsZXMgVVBEQVRFIGFuZCBIT1RfVVBEQVRFCiAgKi8KIHN0YXRpYyB2b2lkCi1oZWFw X3hsb2dfdXBkYXRlKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkLCBib29sIGhvdF91cGRhdGUpCito ZWFwX3hsb2dfdXBkYXRlKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkLCBib29sIGhvdF91cGRhdGUs IGJvb2wgcGhvdF91cGRhdGUpCiB7CiAJWExvZ1JlY1B0cglsc24gPSByZWNvcmQtPkVuZFJlY1B0 cjsKIAl4bF9oZWFwX3VwZGF0ZSAqeGxyZWMgPSAoeGxfaGVhcF91cGRhdGUgKikgWExvZ1JlY0dl dERhdGEocmVjb3JkKTsKQEAgLTkwNzIsNyArOTE2MCw3IEBAIGhlYXBfeGxvZ191cGRhdGUoWExv Z1JlYWRlclN0YXRlICpyZWNvcmQsIGJvb2wgaG90X3VwZGF0ZSkKIAlpZiAoWExvZ1JlY0dldEJs b2NrVGFnKHJlY29yZCwgMSwgTlVMTCwgTlVMTCwgJm9sZGJsaykpCiAJewogCQkvKiBIT1QgdXBk YXRlcyBhcmUgbmV2ZXIgZG9uZSBhY3Jvc3MgcGFnZXMgKi8KLQkJQXNzZXJ0KCFob3RfdXBkYXRl KTsKKwkJQXNzZXJ0KCFob3RfdXBkYXRlICYmICFwaG90X3VwZGF0ZSk7CiAJfQogCWVsc2UKIAkJ b2xkYmxrID0gbmV3YmxrOwpAQCAtOTEyNiw2ICs5MjE0LDggQEAgaGVhcF94bG9nX3VwZGF0ZShY TG9nUmVhZGVyU3RhdGUgKnJlY29yZCwgYm9vbCBob3RfdXBkYXRlKQogCQlodHVwLT50X2luZm9t YXNrMiAmPSB+SEVBUF9LRVlTX1VQREFURUQ7CiAJCWlmIChob3RfdXBkYXRlKQogCQkJSGVhcFR1 cGxlSGVhZGVyU2V0SG90VXBkYXRlZChodHVwKTsKKwkJZWxzZSBpZiAocGhvdF91cGRhdGUpCisJ CQlIZWFwVHVwbGVIZWFkZXJTZXRQYXJ0aWFsSG90VXBkYXRlZChodHVwKTsKIAkJZWxzZQogCQkJ SGVhcFR1cGxlSGVhZGVyQ2xlYXJIb3RVcGRhdGVkKGh0dXApOwogCQlmaXhfaW5mb21hc2tfZnJv bV9pbmZvYml0cyh4bHJlYy0+b2xkX2luZm9iaXRzX3NldCwgJmh0dXAtPnRfaW5mb21hc2ssCkBA IC05MzAyLDcgKzkzOTIsNyBAQCBoZWFwX3hsb2dfdXBkYXRlKFhMb2dSZWFkZXJTdGF0ZSAqcmVj b3JkLCBib29sIGhvdF91cGRhdGUpCiAJICogZG9uJ3QgYm90aGVyIHRvIHVwZGF0ZSB0aGUgRlNN IGluIHRoYXQgY2FzZSwgaXQgZG9lc24ndCBuZWVkIHRvIGJlCiAJICogdG90YWxseSBhY2N1cmF0 ZSBhbnl3YXkuCiAJICovCi0JaWYgKG5ld2FjdGlvbiA9PSBCTEtfTkVFRFNfUkVETyAmJiAhaG90 X3VwZGF0ZSAmJiBmcmVlc3BhY2UgPCBCTENLU1ogLyA1KQorCWlmIChuZXdhY3Rpb24gPT0gQkxL X05FRURTX1JFRE8gJiYgIShob3RfdXBkYXRlIHx8IHBob3RfdXBkYXRlKSAmJiBmcmVlc3BhY2Ug PCBCTENLU1ogLyA1KQogCQlYTG9nUmVjb3JkUGFnZVdpdGhGcmVlU3BhY2Uocm5vZGUsIG5ld2Js aywgZnJlZXNwYWNlKTsKIH0KIApAQCAtOTUzMyw3ICs5NjIzLDcgQEAgaGVhcF9yZWRvKFhMb2dS ZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQkJaGVhcF94bG9nX2RlbGV0ZShyZWNvcmQpOwogCQkJYnJl YWs7CiAJCWNhc2UgWExPR19IRUFQX1VQREFURToKLQkJCWhlYXBfeGxvZ191cGRhdGUocmVjb3Jk LCBmYWxzZSk7CisJCQloZWFwX3hsb2dfdXBkYXRlKHJlY29yZCwgZmFsc2UsIGZhbHNlKTsKIAkJ CWJyZWFrOwogCQljYXNlIFhMT0dfSEVBUF9UUlVOQ0FURToKIApAQCAtOTU0NCw3ICs5NjM0LDcg QEAgaGVhcF9yZWRvKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQkJICovCiAJCQlicmVhazsK IAkJY2FzZSBYTE9HX0hFQVBfSE9UX1VQREFURToKLQkJCWhlYXBfeGxvZ191cGRhdGUocmVjb3Jk LCB0cnVlKTsKKwkJCWhlYXBfeGxvZ191cGRhdGUocmVjb3JkLCB0cnVlLCBmYWxzZSk7CiAJCQli cmVhazsKIAkJY2FzZSBYTE9HX0hFQVBfQ09ORklSTToKIAkJCWhlYXBfeGxvZ19jb25maXJtKHJl Y29yZCk7CkBAIC05NjAwLDYgKzk2OTAsMjEgQEAgaGVhcDJfcmVkbyhYTG9nUmVhZGVyU3RhdGUg KnJlY29yZCkKIAl9CiB9CiAKK3ZvaWQKK2hlYXAzX3JlZG8oWExvZ1JlYWRlclN0YXRlICpyZWNv cmQpCit7CisJdWludDgJCWluZm8gPSBYTG9nUmVjR2V0SW5mbyhyZWNvcmQpICYgflhMUl9JTkZP X01BU0s7CisKKwlzd2l0Y2ggKGluZm8gJiBYTE9HX0hFQVBfT1BNQVNLKQorCXsKKwkJY2FzZSBY TE9HX0hFQVAzX1BBUlRJQUxfSE9UX1VQREFURToKKwkJCWhlYXBfeGxvZ191cGRhdGUocmVjb3Jk LCBmYWxzZSwgdHJ1ZSk7CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCWVsb2coUEFOSUMsICJo ZWFwM19yZWRvOiB1bmtub3duIG9wIGNvZGUgJXUiLCBpbmZvKTsKKwl9Cit9CisKIC8qCiAgKiBN YXNrIGEgaGVhcCBwYWdlIGJlZm9yZSBwZXJmb3JtaW5nIGNvbnNpc3RlbmN5IGNoZWNrcyBvbiBp dC4KICAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRs ZXIuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKaW5kZXggNGE3 MGUyMGExNC4uNTYyOTk3YTc3OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv aGVhcGFtX2hhbmRsZXIuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFu ZGxlci5jCkBAIC0xMTMsNyArMTEzLDggQEAgaGVhcGFtX2luZGV4X2ZldGNoX3R1cGxlKHN0cnVj dCBJbmRleEZldGNoVGFibGVEYXRhICpzY2FuLAogCQkJCQkJIEl0ZW1Qb2ludGVyIHRpZCwKIAkJ CQkJCSBTbmFwc2hvdCBzbmFwc2hvdCwKIAkJCQkJCSBUdXBsZVRhYmxlU2xvdCAqc2xvdCwKLQkJ CQkJCSBib29sICpjYWxsX2FnYWluLCBib29sICphbGxfZGVhZCkKKwkJCQkJCSBib29sICpjYWxs X2FnYWluLCBib29sICphbGxfZGVhZCwKKwkJCQkJCSBSZWxhdGlvbiBpbmRyZWwpCiB7CiAJSW5k ZXhGZXRjaEhlYXBEYXRhICpoc2NhbiA9IChJbmRleEZldGNoSGVhcERhdGEgKikgc2NhbjsKIAlC dWZmZXJIZWFwVHVwbGVUYWJsZVNsb3QgKmJzbG90ID0gKEJ1ZmZlckhlYXBUdXBsZVRhYmxlU2xv dCAqKSBzbG90OwpAQCAtMTQ2LDcgKzE0Nyw4IEBAIGhlYXBhbV9pbmRleF9mZXRjaF90dXBsZShz dHJ1Y3QgSW5kZXhGZXRjaFRhYmxlRGF0YSAqc2NhbiwKIAkJCQkJCQkJCQkJc25hcHNob3QsCiAJ CQkJCQkJCQkJCSZic2xvdC0+YmFzZS50dXBkYXRhLAogCQkJCQkJCQkJCQlhbGxfZGVhZCwKLQkJ CQkJCQkJCQkJISpjYWxsX2FnYWluKTsKKwkJCQkJCQkJCQkJISpjYWxsX2FnYWluLAorCQkJCQkJ CQkJCQlpbmRyZWwsIE5VTEwpOwogCWJzbG90LT5iYXNlLnR1cGRhdGEudF9zZWxmID0gKnRpZDsK IAlMb2NrQnVmZmVyKGhzY2FuLT54c19jYnVmLCBCVUZGRVJfTE9DS19VTkxPQ0spOwogCkBAIC0z MTQsNyArMzE2LDggQEAgc3RhdGljIFRNX1Jlc3VsdAogaGVhcGFtX3R1cGxlX3VwZGF0ZShSZWxh dGlvbiByZWxhdGlvbiwgSXRlbVBvaW50ZXIgb3RpZCwgVHVwbGVUYWJsZVNsb3QgKnNsb3QsCiAJ CQkJCUNvbW1hbmRJZCBjaWQsIFNuYXBzaG90IHNuYXBzaG90LCBTbmFwc2hvdCBjcm9zc2NoZWNr LAogCQkJCQlib29sIHdhaXQsIFRNX0ZhaWx1cmVEYXRhICp0bWZkLAotCQkJCQlMb2NrVHVwbGVN b2RlICpsb2NrbW9kZSwgYm9vbCAqdXBkYXRlX2luZGV4ZXMpCisJCQkJCUxvY2tUdXBsZU1vZGUg KmxvY2ttb2RlLCBib29sICp1cGRhdGVfYWxsX2luZGV4ZXMsCisJCQkJCWJvb2wgKnVwZGF0ZV9t b2RpZmllZF9pbmRleGVzLCBCaXRtYXBzZXQgKiptb2RpZmllZF9hdHRycykKIHsKIAlib29sCQlz aG91bGRGcmVlID0gdHJ1ZTsKIAlIZWFwVHVwbGUJdHVwbGUgPSBFeGVjRmV0Y2hTbG90SGVhcFR1 cGxlKHNsb3QsIHRydWUsICZzaG91bGRGcmVlKTsKQEAgLTMyNSw3ICszMjgsNyBAQCBoZWFwYW1f dHVwbGVfdXBkYXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBJdGVtUG9pbnRlciBvdGlkLCBUdXBsZVRh YmxlU2xvdCAqc2xvdCwKIAl0dXBsZS0+dF90YWJsZU9pZCA9IHNsb3QtPnR0c190YWJsZU9pZDsK IAogCXJlc3VsdCA9IGhlYXBfdXBkYXRlKHJlbGF0aW9uLCBvdGlkLCB0dXBsZSwgY2lkLCBjcm9z c2NoZWNrLCB3YWl0LAotCQkJCQkJIHRtZmQsIGxvY2ttb2RlKTsKKwkJCQkJCSB0bWZkLCBsb2Nr bW9kZSwgbW9kaWZpZWRfYXR0cnMpOwogCUl0ZW1Qb2ludGVyQ29weSgmdHVwbGUtPnRfc2VsZiwg JnNsb3QtPnR0c190aWQpOwogCiAJLyoKQEAgLTMzNSw4ICszMzgsMTIgQEAgaGVhcGFtX3R1cGxl X3VwZGF0ZShSZWxhdGlvbiByZWxhdGlvbiwgSXRlbVBvaW50ZXIgb3RpZCwgVHVwbGVUYWJsZVNs b3QgKnNsb3QsCiAJICogdF9zZWxmIGZpZWxkLgogCSAqCiAJICogSWYgaXQncyBhIEhPVCB1cGRh dGUsIHdlIG11c3RuJ3QgaW5zZXJ0IG5ldyBpbmRleCBlbnRyaWVzLgorCSAqCisJICogSWYgaXQn cyBhIFBIT1QgdXBkYXRlLCB3ZSB3aWxsIG5vdCBiZSB1cGRhdGluZyBhbGwgb2YgdGhlIGluZGV4 ZXMsIGp1c3QKKwkgKiB0aGUgb25lcyB0aGF0IHRvdWNoIGEgbW9kaWZpZWQgYXR0cmlidXRlLgog CSAqLwotCSp1cGRhdGVfaW5kZXhlcyA9IHJlc3VsdCA9PSBUTV9PayAmJiAhSGVhcFR1cGxlSXNI ZWFwT25seSh0dXBsZSk7CisJKnVwZGF0ZV9hbGxfaW5kZXhlcyA9IHJlc3VsdCA9PSBUTV9PayAm JiAhKEhlYXBUdXBsZUlzSGVhcE9ubHkodHVwbGUpIHx8IEhlYXBUdXBsZUlzUGFydGlhbEhlYXBP bmx5KHR1cGxlKSk7CisJKnVwZGF0ZV9tb2RpZmllZF9pbmRleGVzID0gcmVzdWx0ID09IFRNX09r ICYmIEhlYXBUdXBsZUlzUGFydGlhbEhlYXBPbmx5KHR1cGxlKTsKIAogCWlmIChzaG91bGRGcmVl KQogCQlwZnJlZSh0dXBsZSk7CkBAIC0yMTA5LDcgKzIxMTYsNyBAQCBoZWFwYW1fZXN0aW1hdGVf cmVsX3NpemUoUmVsYXRpb24gcmVsLCBpbnQzMiAqYXR0cl93aWR0aHMsCiAKIHN0YXRpYyBib29s CiBoZWFwYW1fc2Nhbl9iaXRtYXBfbmV4dF9ibG9jayhUYWJsZVNjYW5EZXNjIHNjYW4sCi0JCQkJ CQkJICBUQk1JdGVyYXRlUmVzdWx0ICp0Ym1yZXMpCisJCQkJCQkJICBUQk1JdGVyYXRlUmVzdWx0 ICp0Ym1yZXMsIEJpdG1hcHNldCAqaW50ZXJlc3RpbmdfYXR0cnMpCiB7CiAJSGVhcFNjYW5EZXNj IGhzY2FuID0gKEhlYXBTY2FuRGVzYykgc2NhbjsKIAlCbG9ja051bWJlciBwYWdlID0gdGJtcmVz LT5ibG9ja25vOwpAQCAtMjE3Myw3ICsyMTgwLDggQEAgaGVhcGFtX3NjYW5fYml0bWFwX25leHRf YmxvY2soVGFibGVTY2FuRGVzYyBzY2FuLAogCiAJCQlJdGVtUG9pbnRlclNldCgmdGlkLCBwYWdl LCBvZmZudW0pOwogCQkJaWYgKGhlYXBfaG90X3NlYXJjaF9idWZmZXIoJnRpZCwgc2Nhbi0+cnNf cmQsIGJ1ZmZlciwgc25hcHNob3QsCi0JCQkJCQkJCQkgICAmaGVhcFR1cGxlLCBOVUxMLCB0cnVl KSkKKwkJCQkJCQkJCSAgICZoZWFwVHVwbGUsIE5VTEwsIHRydWUsCisJCQkJCQkJCQkgICBOVUxM LCBpbnRlcmVzdGluZ19hdHRycykpCiAJCQkJaHNjYW4tPnJzX3Zpc3R1cGxlc1tudHVwKytdID0g SXRlbVBvaW50ZXJHZXRPZmZzZXROdW1iZXIoJnRpZCk7CiAJCX0KIAl9CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL3BydW5laGVhcC5jCmluZGV4IGUzYTcxNmEyYTIuLjVmZWFhMzJjODQgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL3BydW5laGVhcC5jCkBAIC02Myw3ICs2Myw3IEBAIHR5cGVkZWYgc3RydWN0CiAv KiBMb2NhbCBmdW5jdGlvbnMgKi8KIHN0YXRpYyBpbnQJaGVhcF9wcnVuZV9jaGFpbihCdWZmZXIg YnVmZmVyLAogCQkJCQkJCSBPZmZzZXROdW1iZXIgcm9vdG9mZm51bSwKLQkJCQkJCQkgUHJ1bmVT dGF0ZSAqcHJzdGF0ZSk7CisJCQkJCQkJIFBydW5lU3RhdGUgKnByc3RhdGUsIGJvb2wgKnBob3Qp Owogc3RhdGljIHZvaWQgaGVhcF9wcnVuZV9yZWNvcmRfcHJ1bmFibGUoUHJ1bmVTdGF0ZSAqcHJz dGF0ZSwgVHJhbnNhY3Rpb25JZCB4aWQpOwogc3RhdGljIHZvaWQgaGVhcF9wcnVuZV9yZWNvcmRf cmVkaXJlY3QoUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwKIAkJCQkJCQkJCSAgIE9mZnNldE51bWJlciBv ZmZudW0sIE9mZnNldE51bWJlciByZG9mZm51bSk7CkBAIC0yMzIsNiArMjMyLDcgQEAgaGVhcF9w YWdlX3BydW5lKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCU9mZnNldE51bWJl ciBvZmZudW0sCiAJCQkJbWF4b2ZmOwogCVBydW5lU3RhdGUJcHJzdGF0ZTsKKwlib29sIHBob3Qg PSBmYWxzZTsKIAogCS8qCiAJICogT3VyIHN0cmF0ZWd5IGlzIHRvIHNjYW4gdGhlIHBhZ2UgYW5k IG1ha2UgbGlzdHMgb2YgaXRlbXMgdG8gY2hhbmdlLApAQCAtMjc5LDEzICsyODAsMTYgQEAgaGVh cF9wYWdlX3BydW5lKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCQkJY29udGlu dWU7CiAKIAkJLyogUHJvY2VzcyB0aGlzIGl0ZW0gb3IgY2hhaW4gb2YgaXRlbXMgKi8KLQkJbmRl bGV0ZWQgKz0gaGVhcF9wcnVuZV9jaGFpbihidWZmZXIsIG9mZm51bSwgJnByc3RhdGUpOworCQlu ZGVsZXRlZCArPSBoZWFwX3BydW5lX2NoYWluKGJ1ZmZlciwgb2ZmbnVtLCAmcHJzdGF0ZSwgJnBo b3QpOwogCX0KIAogCS8qIENsZWFyIHRoZSBvZmZzZXQgaW5mb3JtYXRpb24gb25jZSB3ZSBoYXZl IHByb2Nlc3NlZCB0aGUgZ2l2ZW4gcGFnZS4gKi8KIAlpZiAob2ZmX2xvYykKIAkJKm9mZl9sb2Mg PSBJbnZhbGlkT2Zmc2V0TnVtYmVyOwogCisJaWYgKHBob3QpCisJCXJldHVybiBuZGVsZXRlZDsK KwogCS8qIEFueSBlcnJvciB3aGlsZSBhcHBseWluZyB0aGUgY2hhbmdlcyBpcyBjcml0aWNhbCAq LwogCVNUQVJUX0NSSVRfU0VDVElPTigpOwogCkBAIC00ODksNyArNDkzLDcgQEAgaGVhcF9wcnVu ZV9zYXRpc2ZpZXNfdmFjdXVtKFBydW5lU3RhdGUgKnByc3RhdGUsIEhlYXBUdXBsZSB0dXAsIEJ1 ZmZlciBidWZmZXIpCiAgKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgdHVwbGVzICh0byBiZSkgZGVs ZXRlZCBmcm9tIHRoZSBwYWdlLgogICovCiBzdGF0aWMgaW50Ci1oZWFwX3BydW5lX2NoYWluKEJ1 ZmZlciBidWZmZXIsIE9mZnNldE51bWJlciByb290b2ZmbnVtLCBQcnVuZVN0YXRlICpwcnN0YXRl KQoraGVhcF9wcnVuZV9jaGFpbihCdWZmZXIgYnVmZmVyLCBPZmZzZXROdW1iZXIgcm9vdG9mZm51 bSwgUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgYm9vbCAqcGhvdCkKIHsKIAlpbnQJCQluZGVsZXRlZCA9 IDA7CiAJUGFnZQkJZHAgPSAoUGFnZSkgQnVmZmVyR2V0UGFnZShidWZmZXIpOwpAQCAtNTQwLDcg KzU0NCw4IEBAIGhlYXBfcHJ1bmVfY2hhaW4oQnVmZmVyIGJ1ZmZlciwgT2Zmc2V0TnVtYmVyIHJv b3RvZmZudW0sIFBydW5lU3RhdGUgKnByc3RhdGUpCiAJCQkgKiBnZXRzIHRoZXJlIGZpcnN0IHdp bGwgbWFyayB0aGUgdHVwbGUgdW51c2VkLgogCQkJICovCiAJCQlpZiAoaGVhcF9wcnVuZV9zYXRp c2ZpZXNfdmFjdXVtKHByc3RhdGUsICZ0dXAsIGJ1ZmZlcikKLQkJCQk9PSBIRUFQVFVQTEVfREVB RCAmJiAhSGVhcFR1cGxlSGVhZGVySXNIb3RVcGRhdGVkKGh0dXApKQorCQkJCT09IEhFQVBUVVBM RV9ERUFEICYmICFIZWFwVHVwbGVIZWFkZXJJc0hvdFVwZGF0ZWQoaHR1cCkgJiYKKwkJCQkhSGVh cFR1cGxlSGVhZGVySXNQYXJ0aWFsSG90VXBkYXRlZChodHVwKSkKIAkJCXsKIAkJCQloZWFwX3By dW5lX3JlY29yZF91bnVzZWQocHJzdGF0ZSwgcm9vdG9mZm51bSk7CiAJCQkJSGVhcFR1cGxlSGVh ZGVyQWR2YW5jZUxhdGVzdFJlbW92ZWRYaWQoaHR1cCwKQEAgLTYwNiw2ICs2MTEsMTIgQEAgaGVh cF9wcnVuZV9jaGFpbihCdWZmZXIgYnVmZmVyLCBPZmZzZXROdW1iZXIgcm9vdG9mZm51bSwgUHJ1 bmVTdGF0ZSAqcHJzdGF0ZSkKIAkJdHVwLnRfbGVuID0gSXRlbUlkR2V0TGVuZ3RoKGxwKTsKIAkJ SXRlbVBvaW50ZXJTZXQoJih0dXAudF9zZWxmKSwgQnVmZmVyR2V0QmxvY2tOdW1iZXIoYnVmZmVy KSwgb2ZmbnVtKTsKIAorCQlpZiAoSGVhcFR1cGxlSGVhZGVySXNQYXJ0aWFsSGVhcE9ubHkoaHR1 cCkgfHwgSGVhcFR1cGxlSGVhZGVySXNQYXJ0aWFsSG90VXBkYXRlZChodHVwKSkKKwkJeworCQkJ KnBob3QgPSB0cnVlOworCQkJYnJlYWs7CisJCX0KKwogCQkvKgogCQkgKiBDaGVjayB0aGUgdHVw bGUgWE1JTiBhZ2FpbnN0IHByaW9yIFhNQVgsIGlmIGFueQogCQkgKi8KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL3ZhY3V1bWxhenkuYwppbmRleCBmM2QyMjY1ZmFkLi4xMGE1MTZiZWMyIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCkBAIC0xMzQ5LDYgKzEzNDksOCBAQCBsYXp5X3NjYW5f aGVhcChSZWxhdGlvbiBvbmVyZWwsIFZhY3V1bVBhcmFtcyAqcGFyYW1zLCBMVlJlbFN0YXRzICp2 YWNyZWxzdGF0cywKIAkJCQkJICovCiAJCQkJCWlmIChIZWFwVHVwbGVJc0hvdFVwZGF0ZWQoJnR1 cGxlKSB8fAogCQkJCQkJSGVhcFR1cGxlSXNIZWFwT25seSgmdHVwbGUpIHx8CisJCQkJCQlIZWFw VHVwbGVJc1BhcnRpYWxIb3RVcGRhdGVkKCZ0dXBsZSkgfHwKKwkJCQkJCUhlYXBUdXBsZUlzUGFy dGlhbEhlYXBPbmx5KCZ0dXBsZSkgfHwKIAkJCQkJCXBhcmFtcy0+aW5kZXhfY2xlYW51cCA9PSBW QUNPUFRfVEVSTkFSWV9ESVNBQkxFRCkKIAkJCQkJCW5rZWVwICs9IDE7CiAJCQkJCWVsc2UKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9pbmRleGFtLmMgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvaW5kZXgvaW5kZXhhbS5jCmluZGV4IDNkMmRiZWQ3MDguLmQwOGY2ODhiY2EgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9pbmRleGFtLmMKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2luZGV4L2luZGV4YW0uYwpAQCAtNTc5LDcgKzU3OSw4IEBAIGluZGV4X2Zl dGNoX2hlYXAoSW5kZXhTY2FuRGVzYyBzY2FuLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCkKIAogCWZv dW5kID0gdGFibGVfaW5kZXhfZmV0Y2hfdHVwbGUoc2Nhbi0+eHNfaGVhcGZldGNoLCAmc2Nhbi0+ eHNfaGVhcHRpZCwKIAkJCQkJCQkJCXNjYW4tPnhzX3NuYXBzaG90LCBzbG90LAotCQkJCQkJCQkJ JnNjYW4tPnhzX2hlYXBfY29udGludWUsICZhbGxfZGVhZCk7CisJCQkJCQkJCQkmc2Nhbi0+eHNf aGVhcF9jb250aW51ZSwgJmFsbF9kZWFkLAorCQkJCQkJCQkJc2Nhbi0+aW5kZXhSZWxhdGlvbik7 CiAKIAlpZiAoZm91bmQpCiAJCXBnc3RhdF9jb3VudF9oZWFwX2ZldGNoKHNjYW4tPmluZGV4UmVs YXRpb24pOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRpbnNlcnQu YyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0aW5zZXJ0LmMKaW5kZXggZTMzMzYwMzkx Mi4uNzhiNzFhYjliYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRp bnNlcnQuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idGluc2VydC5jCkBAIC01 NTYsNyArNTU2LDggQEAgX2J0X2NoZWNrX3VuaXF1ZShSZWxhdGlvbiByZWwsIEJUSW5zZXJ0U3Rh dGUgaW5zZXJ0c3RhdGUsIFJlbGF0aW9uIGhlYXBSZWwsCiAJCQkJICovCiAJCQkJZWxzZSBpZiAo dGFibGVfaW5kZXhfZmV0Y2hfdHVwbGVfY2hlY2soaGVhcFJlbCwgJmh0aWQsCiAJCQkJCQkJCQkJ CQkJICAgJlNuYXBzaG90RGlydHksCi0JCQkJCQkJCQkJCQkJICAgJmFsbF9kZWFkKSkKKwkJCQkJ CQkJCQkJCQkgICAmYWxsX2RlYWQsCisJCQkJCQkJCQkJCQkJICAgcmVsKSkKIAkJCQl7CiAJCQkJ CVRyYW5zYWN0aW9uSWQgeHdhaXQ7CiAKQEAgLTYxMyw3ICs2MTQsNyBAQCBfYnRfY2hlY2tfdW5p cXVlKFJlbGF0aW9uIHJlbCwgQlRJbnNlcnRTdGF0ZSBpbnNlcnRzdGF0ZSwgUmVsYXRpb24gaGVh cFJlbCwKIAkJCQkJICovCiAJCQkJCWh0aWQgPSBpdHVwLT50X3RpZDsKIAkJCQkJaWYgKHRhYmxl X2luZGV4X2ZldGNoX3R1cGxlX2NoZWNrKGhlYXBSZWwsICZodGlkLAotCQkJCQkJCQkJCQkJCSAg U25hcHNob3RTZWxmLCBOVUxMKSkKKwkJCQkJCQkJCQkJCQkgIFNuYXBzaG90U2VsZiwgTlVMTCwg cmVsKSkKIAkJCQkJewogCQkJCQkJLyogTm9ybWFsIGNhc2UgLS0tIGl0J3Mgc3RpbGwgbGl2ZSAq LwogCQkJCQl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvaGVhcGRl c2MuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFwZGVzYy5jCmluZGV4IGU2MGUz MmI5MzUuLjc2YThiODY1ZmUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVz Yy9oZWFwZGVzYy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFwZGVzYy5j CkBAIC0xNzYsNiArMTc2LDI2IEBAIGhlYXAyX2Rlc2MoU3RyaW5nSW5mbyBidWYsIFhMb2dSZWFk ZXJTdGF0ZSAqcmVjb3JkKQogCQkJCQkJIHhscmVjLT5jbWluLCB4bHJlYy0+Y21heCwgeGxyZWMt PmNvbWJvY2lkKTsKIAl9CiB9Cit2b2lkCitoZWFwM19kZXNjKFN0cmluZ0luZm8gYnVmLCBYTG9n UmVhZGVyU3RhdGUgKnJlY29yZCkKK3sKKwljaGFyICAgICAgICpyZWMgPSBYTG9nUmVjR2V0RGF0 YShyZWNvcmQpOworCXVpbnQ4ICAgICAgIGluZm8gPSBYTG9nUmVjR2V0SW5mbyhyZWNvcmQpICYg flhMUl9JTkZPX01BU0s7CisKKwlpZiAoaW5mbyA9PSBYTE9HX0hFQVAzX1BBUlRJQUxfSE9UX1VQ REFURSkKKwl7CisJCXhsX2hlYXBfdXBkYXRlICp4bHJlYyA9ICh4bF9oZWFwX3VwZGF0ZSAqKSBy ZWM7CisKKwkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICJvZmYgJXUgeG1heCAldSBmbGFncyAweCUw MlggIiwKKwkJCQkJCSB4bHJlYy0+b2xkX29mZm51bSwKKwkJCQkJCSB4bHJlYy0+b2xkX3htYXgs CisJCQkJCQkgeGxyZWMtPmZsYWdzKTsKKwkJb3V0X2luZm9iaXRzKGJ1ZiwgeGxyZWMtPm9sZF9p bmZvYml0c19zZXQpOworCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIjsgbmV3IG9mZiAldSB4bWF4 ICV1IiwKKwkJCQkJCSB4bHJlYy0+bmV3X29mZm51bSwKKwkJCQkJCSB4bHJlYy0+bmV3X3htYXgp OworCX0KK30KIAogY29uc3QgY2hhciAqCiBoZWFwX2lkZW50aWZ5KHVpbnQ4IGluZm8pCkBAIC0y NjAsMyArMjgwLDIxIEBAIGhlYXAyX2lkZW50aWZ5KHVpbnQ4IGluZm8pCiAKIAlyZXR1cm4gaWQ7 CiB9CisKK2NvbnN0IGNoYXIgKgoraGVhcDNfaWRlbnRpZnkodWludDggaW5mbykKK3sKKwljb25z dCBjaGFyICppZCA9IE5VTEw7CisKKwlzd2l0Y2ggKGluZm8gJiB+WExSX0lORk9fTUFTSykKKwl7 CisJCWNhc2UgWExPR19IRUFQM19QQVJUSUFMX0hPVF9VUERBVEU6CisJCQlpZCA9ICJQQVJUSUFM X0hPVF9VUERBVEUiOworCQkJYnJlYWs7CisJCWNhc2UgWExPR19IRUFQM19QQVJUSUFMX0hPVF9V UERBVEUgfCBYTE9HX0hFQVBfSU5JVF9QQUdFOgorCQkJaWQgPSAiUEFSVElBTF9IT1RfVVBEQVRF K0lOSVQiOworCQkJYnJlYWs7CisJfQorCisJcmV0dXJuIGlkOworfQpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90YWJs ZS90YWJsZWFtLmMKaW5kZXggNWVhNWJkZDgxMC4uYzg4ZWU1ZTMzNiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv dGFibGUvdGFibGVhbS5jCkBAIC0yMTksNyArMjE5LDggQEAgYm9vbAogdGFibGVfaW5kZXhfZmV0 Y2hfdHVwbGVfY2hlY2soUmVsYXRpb24gcmVsLAogCQkJCQkJCSAgSXRlbVBvaW50ZXIgdGlkLAog CQkJCQkJCSAgU25hcHNob3Qgc25hcHNob3QsCi0JCQkJCQkJICBib29sICphbGxfZGVhZCkKKwkJ CQkJCQkgIGJvb2wgKmFsbF9kZWFkLAorCQkJCQkJCSAgUmVsYXRpb24gaW5kcmVsKQogewogCUlu ZGV4RmV0Y2hUYWJsZURhdGEgKnNjYW47CiAJVHVwbGVUYWJsZVNsb3QgKnNsb3Q7CkBAIC0yMjks NyArMjMwLDcgQEAgdGFibGVfaW5kZXhfZmV0Y2hfdHVwbGVfY2hlY2soUmVsYXRpb24gcmVsLAog CXNsb3QgPSB0YWJsZV9zbG90X2NyZWF0ZShyZWwsIE5VTEwpOwogCXNjYW4gPSB0YWJsZV9pbmRl eF9mZXRjaF9iZWdpbihyZWwpOwogCWZvdW5kID0gdGFibGVfaW5kZXhfZmV0Y2hfdHVwbGUoc2Nh biwgdGlkLCBzbmFwc2hvdCwgc2xvdCwgJmNhbGxfYWdhaW4sCi0JCQkJCQkJCQlhbGxfZGVhZCk7 CisJCQkJCQkJCQlhbGxfZGVhZCwgaW5kcmVsKTsKIAl0YWJsZV9pbmRleF9mZXRjaF9lbmQoc2Nh bik7CiAJRXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChzbG90KTsKIApAQCAtMzQ2LDcgKzM0 Nyw5IEBAIHZvaWQKIHNpbXBsZV90YWJsZV90dXBsZV91cGRhdGUoUmVsYXRpb24gcmVsLCBJdGVt UG9pbnRlciBvdGlkLAogCQkJCQkJICBUdXBsZVRhYmxlU2xvdCAqc2xvdCwKIAkJCQkJCSAgU25h cHNob3Qgc25hcHNob3QsCi0JCQkJCQkgIGJvb2wgKnVwZGF0ZV9pbmRleGVzKQorCQkJCQkJICBi b29sICp1cGRhdGVfYWxsX2luZGV4ZXMsCisJCQkJCQkgIGJvb2wgKnVwZGF0ZV9tb2RpZmllZF9p bmRleGVzLAorCQkJCQkJICBCaXRtYXBzZXQgKiptb2RpZmllZF9hdHRycykKIHsKIAlUTV9SZXN1 bHQJcmVzdWx0OwogCVRNX0ZhaWx1cmVEYXRhIHRtZmQ7CkBAIC0zNTYsNyArMzU5LDggQEAgc2lt cGxlX3RhYmxlX3R1cGxlX3VwZGF0ZShSZWxhdGlvbiByZWwsIEl0ZW1Qb2ludGVyIG90aWQsCiAJ CQkJCQkJCUdldEN1cnJlbnRDb21tYW5kSWQodHJ1ZSksCiAJCQkJCQkJCXNuYXBzaG90LCBJbnZh bGlkU25hcHNob3QsCiAJCQkJCQkJCXRydWUgLyogd2FpdCBmb3IgY29tbWl0ICovICwKLQkJCQkJ CQkJJnRtZmQsICZsb2NrbW9kZSwgdXBkYXRlX2luZGV4ZXMpOworCQkJCQkJCQkmdG1mZCwgJmxv Y2ttb2RlLCB1cGRhdGVfYWxsX2luZGV4ZXMsCisJCQkJCQkJCXVwZGF0ZV9tb2RpZmllZF9pbmRl eGVzLCBtb2RpZmllZF9hdHRycyk7CiAKIAlzd2l0Y2ggKHJlc3VsdCkKIAl7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb25zdHJhaW50LmMgYi9zcmMvYmFja2VuZC9jb21tYW5k cy9jb25zdHJhaW50LmMKaW5kZXggZDAwNjMxNjRhNy4uY2QxOGJlYTIyNCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvY29tbWFuZHMvY29uc3RyYWludC5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1h bmRzL2NvbnN0cmFpbnQuYwpAQCAtMTA2LDE4ICsxMDYsMjEgQEAgdW5pcXVlX2tleV9yZWNoZWNr KFBHX0ZVTkNUSU9OX0FSR1MpCiAJICogaXQncyBwb3NzaWJsZSB0aGUgaW5kZXggZW50cnkgaGFz IGFsc28gYmVlbiBtYXJrZWQgZGVhZCwgYW5kIGV2ZW4KIAkgKiByZW1vdmVkLgogCSAqLworCWlu ZGV4UmVsID0gaW5kZXhfb3Blbih0cmlnZGF0YS0+dGdfdHJpZ2dlci0+dGdjb25zdHJpbmRpZCwK KwkJCQkJCSAgUm93RXhjbHVzaXZlTG9jayk7CiAJdG1wdGlkID0gY2hlY2t0aWQ7CiAJewogCQlJ bmRleEZldGNoVGFibGVEYXRhICpzY2FuID0gdGFibGVfaW5kZXhfZmV0Y2hfYmVnaW4odHJpZ2Rh dGEtPnRnX3JlbGF0aW9uKTsKIAkJYm9vbAkJY2FsbF9hZ2FpbiA9IGZhbHNlOwogCiAJCWlmICgh dGFibGVfaW5kZXhfZmV0Y2hfdHVwbGUoc2NhbiwgJnRtcHRpZCwgU25hcHNob3RTZWxmLCBzbG90 LAotCQkJCQkJCQkJICZjYWxsX2FnYWluLCBOVUxMKSkKKwkJCQkJCQkJCSAmY2FsbF9hZ2Fpbiwg TlVMTCwgaW5kZXhSZWwpKQogCQl7CiAJCQkvKgogCQkJICogQWxsIHJvd3MgcmVmZXJlbmNlZCBi eSB0aGUgaW5kZXggZW50cnkgYXJlIGRlYWQsIHNvIHNraXAgdGhlCiAJCQkgKiBjaGVjay4KIAkJ CSAqLworCQkJaW5kZXhfY2xvc2UoaW5kZXhSZWwsIFJvd0V4Y2x1c2l2ZUxvY2spOwogCQkJRXhl Y0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChzbG90KTsKIAkJCXRhYmxlX2luZGV4X2ZldGNoX2Vu ZChzY2FuKTsKIAkJCXJldHVybiBQb2ludGVyR2V0RGF0dW0oTlVMTCk7CkBAIC0xMzAsOCArMTMz LDYgQEAgdW5pcXVlX2tleV9yZWNoZWNrKFBHX0ZVTkNUSU9OX0FSR1MpCiAJICogdG8gdXBkYXRl IGl0LiAgKFRoaXMgcHJvdGVjdHMgYWdhaW5zdCBwb3NzaWJsZSBjaGFuZ2VzIG9mIHRoZSBpbmRl eAogCSAqIHNjaGVtYSwgbm90IGFnYWluc3QgY29uY3VycmVudCB1cGRhdGVzLikKIAkgKi8KLQlp bmRleFJlbCA9IGluZGV4X29wZW4odHJpZ2RhdGEtPnRnX3RyaWdnZXItPnRnY29uc3RyaW5kaWQs Ci0JCQkJCQkgIFJvd0V4Y2x1c2l2ZUxvY2spOwogCWluZGV4SW5mbyA9IEJ1aWxkSW5kZXhJbmZv KGluZGV4UmVsKTsKIAogCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5 ZnJvbS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb20uYwppbmRleCA3OTZjYTdiM2Y3 Li5mNGY5N2FlMGI2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbS5j CisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9tLmMKQEAgLTM0Myw3ICszNDMsNyBA QCBDb3B5TXVsdGlJbnNlcnRCdWZmZXJGbHVzaChDb3B5TXVsdGlJbnNlcnRJbmZvICptaWluZm8s CiAJCQlyZWNoZWNrSW5kZXhlcyA9CiAJCQkJRXhlY0luc2VydEluZGV4VHVwbGVzKHJlc3VsdFJl bEluZm8sCiAJCQkJCQkJCQkgIGJ1ZmZlci0+c2xvdHNbaV0sIGVzdGF0ZSwgZmFsc2UsIGZhbHNl LAotCQkJCQkJCQkJICBOVUxMLCBOSUwpOworCQkJCQkJCQkJICBOVUxMLCBOSUwsIGZhbHNlLCBO VUxMKTsKIAkJCUV4ZWNBUkluc2VydFRyaWdnZXJzKGVzdGF0ZSwgcmVzdWx0UmVsSW5mbywKIAkJ CQkJCQkJIHNsb3RzW2ldLCByZWNoZWNrSW5kZXhlcywKIAkJCQkJCQkJIGNzdGF0ZS0+dHJhbnNp dGlvbl9jYXB0dXJlKTsKQEAgLTEwOTAsNyArMTA5MCw3IEBAIENvcHlGcm9tKENvcHlGcm9tU3Rh dGUgY3N0YXRlKQogCQkJCQkJCQkJCQkJCQkJCSAgIGZhbHNlLAogCQkJCQkJCQkJCQkJCQkJCSAg IGZhbHNlLAogCQkJCQkJCQkJCQkJCQkJCSAgIE5VTEwsCi0JCQkJCQkJCQkJCQkJCQkJICAgTklM KTsKKwkJCQkJCQkJCQkJCQkJCQkgICBOSUwsIGZhbHNlLCBOVUxMKTsKIAkJCQkJfQogCiAJCQkJ CS8qIEFGVEVSIFJPVyBJTlNFUlQgVHJpZ2dlcnMgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNJbmRleGluZy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4 aW5nLmMKaW5kZXggYWZlN2NlODdkNC4uNDZmYWFmMjQ1NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY0luZGV4aW5nLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhl Y0luZGV4aW5nLmMKQEAgLTI4Nyw3ICsyODcsOSBAQCBFeGVjSW5zZXJ0SW5kZXhUdXBsZXMoUmVz dWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKIAkJCQkJICBib29sIHVwZGF0ZSwKIAkJCQkJICBi b29sIG5vRHVwRXJyLAogCQkJCQkgIGJvb2wgKnNwZWNDb25mbGljdCwKLQkJCQkJICBMaXN0ICph cmJpdGVySW5kZXhlcykKKwkJCQkJICBMaXN0ICphcmJpdGVySW5kZXhlcywKKwkJCQkJICBib29s IHVwZGF0ZV9tb2RpZmllZF9pbmRleGVzLAorCQkJCQkgIEJpdG1hcHNldCAqbW9kaWZpZWRfYXR0 cnMpCiB7CiAJSXRlbVBvaW50ZXIgdHVwbGVpZCA9ICZzbG90LT50dHNfdGlkOwogCUxpc3QJICAg KnJlc3VsdCA9IE5JTDsKQEAgLTM0Myw2ICszNDUsMjkgQEAgRXhlY0luc2VydEluZGV4VHVwbGVz KFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCiAJCWlmICghaW5kZXhJbmZvLT5paV9SZWFk eUZvckluc2VydHMpCiAJCQljb250aW51ZTsKIAorCQkvKgorCQkgKiBJZiB0aGUgaW5kZXhlZCBh dHRyaWJ1dGVzIHdlcmUgbm90IG1vZGlmaWVkIGFuZCB0aGlzIGlzIGEgcGFydGlhbC1IT1QKKwkJ ICogdXBkYXRlLCBza2lwIGl0LgorCQkgKi8KKwkJaWYgKHVwZGF0ZV9tb2RpZmllZF9pbmRleGVz KQorCQl7CisJCQlib29sIHNob3VsZF91cGRhdGUgPSBmYWxzZTsKKwkJCWludCBqOworCisJCQlm b3IgKGogPSAwOyBqIDwgaW5kZXhJbmZvLT5paV9OdW1JbmRleEF0dHJzOyBqKyspCisJCQl7CisJ CQkJaWYgKGJtc19pc19tZW1iZXIoaW5kZXhJbmZvLT5paV9JbmRleEF0dHJOdW1iZXJzW2pdIC0g Rmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlciwKKwkJCQkJCQltb2RpZmllZF9hdHRy cykpCisJCQkJeworCQkJCQlzaG91bGRfdXBkYXRlID0gdHJ1ZTsKKwkJCQkJYnJlYWs7CisJCQkJ fQorCQkJfQorCisJCQlpZiAoIXNob3VsZF91cGRhdGUpCisJCQkJY29udGludWU7CisJCX0KKwog CQkvKiBDaGVjayBmb3IgcGFydGlhbCBpbmRleCAqLwogCQlpZiAoaW5kZXhJbmZvLT5paV9QcmVk aWNhdGUgIT0gTklMKQogCQl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj UmVwbGljYXRpb24uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSZXBsaWNhdGlvbi5jCmlu ZGV4IDFlMjg1ZTAzNDkuLmZkYmJiNzlkNDIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNSZXBsaWNhdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSZXBs aWNhdGlvbi5jCkBAIC00NDUsNyArNDQ1LDcgQEAgRXhlY1NpbXBsZVJlbGF0aW9uSW5zZXJ0KFJl c3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCiAJCWlmIChyZXN1bHRSZWxJbmZvLT5yaV9OdW1J bmRpY2VzID4gMCkKIAkJCXJlY2hlY2tJbmRleGVzID0gRXhlY0luc2VydEluZGV4VHVwbGVzKHJl c3VsdFJlbEluZm8sCiAJCQkJCQkJCQkJCQkgICBzbG90LCBlc3RhdGUsIGZhbHNlLCBmYWxzZSwK LQkJCQkJCQkJCQkJCSAgIE5VTEwsIE5JTCk7CisJCQkJCQkJCQkJCQkgICBOVUxMLCBOSUwsIGZh bHNlLCBOVUxMKTsKIAogCQkvKiBBRlRFUiBST1cgSU5TRVJUIFRyaWdnZXJzICovCiAJCUV4ZWNB Ukluc2VydFRyaWdnZXJzKGVzdGF0ZSwgcmVzdWx0UmVsSW5mbywgc2xvdCwKQEAgLTQ5Myw3ICs0 OTMsOSBAQCBFeGVjU2ltcGxlUmVsYXRpb25VcGRhdGUoUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVs SW5mbywKIAlpZiAoIXNraXBfdHVwbGUpCiAJewogCQlMaXN0CSAgICpyZWNoZWNrSW5kZXhlcyA9 IE5JTDsKLQkJYm9vbAkJdXBkYXRlX2luZGV4ZXM7CisJCWJvb2wJCXVwZGF0ZV9hbGxfaW5kZXhl czsKKwkJYm9vbAkJdXBkYXRlX21vZGlmaWVkX2luZGV4ZXM7CisJCUJpdG1hcHNldCAgKm1vZGlm aWVkX2F0dHJzOwogCiAJCS8qIENvbXB1dGUgc3RvcmVkIGdlbmVyYXRlZCBjb2x1bW5zICovCiAJ CWlmIChyZWwtPnJkX2F0dC0+Y29uc3RyICYmCkBAIC01MDgsMTIgKzUxMCwxMyBAQCBFeGVjU2lt cGxlUmVsYXRpb25VcGRhdGUoUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKIAkJCUV4ZWNQ YXJ0aXRpb25DaGVjayhyZXN1bHRSZWxJbmZvLCBzbG90LCBlc3RhdGUsIHRydWUpOwogCiAJCXNp bXBsZV90YWJsZV90dXBsZV91cGRhdGUocmVsLCB0aWQsIHNsb3QsIGVzdGF0ZS0+ZXNfc25hcHNo b3QsCi0JCQkJCQkJCSAgJnVwZGF0ZV9pbmRleGVzKTsKKwkJCQkJCQkJICAmdXBkYXRlX2FsbF9p bmRleGVzLCAmdXBkYXRlX21vZGlmaWVkX2luZGV4ZXMsCisJCQkJCQkJCSAgJm1vZGlmaWVkX2F0 dHJzKTsKIAotCQlpZiAocmVzdWx0UmVsSW5mby0+cmlfTnVtSW5kaWNlcyA+IDAgJiYgdXBkYXRl X2luZGV4ZXMpCisJCWlmIChyZXN1bHRSZWxJbmZvLT5yaV9OdW1JbmRpY2VzID4gMCAmJiAodXBk YXRlX2FsbF9pbmRleGVzIHx8IHVwZGF0ZV9tb2RpZmllZF9pbmRleGVzKSkKIAkJCXJlY2hlY2tJ bmRleGVzID0gRXhlY0luc2VydEluZGV4VHVwbGVzKHJlc3VsdFJlbEluZm8sCiAJCQkJCQkJCQkJ CQkgICBzbG90LCBlc3RhdGUsIHRydWUsIGZhbHNlLAotCQkJCQkJCQkJCQkJICAgTlVMTCwgTklM KTsKKwkJCQkJCQkJCQkJCSAgIE5VTEwsIE5JTCwgdXBkYXRlX21vZGlmaWVkX2luZGV4ZXMsIG1v ZGlmaWVkX2F0dHJzKTsKIAogCQkvKiBBRlRFUiBST1cgVVBEQVRFIFRyaWdnZXJzICovCiAJCUV4 ZWNBUlVwZGF0ZVRyaWdnZXJzKGVzdGF0ZSwgcmVzdWx0UmVsSW5mbywKQEAgLTUyMSw2ICs1MjQs NyBAQCBFeGVjU2ltcGxlUmVsYXRpb25VcGRhdGUoUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5m bywKIAkJCQkJCQkgcmVjaGVja0luZGV4ZXMsIE5VTEwpOwogCiAJCWxpc3RfZnJlZShyZWNoZWNr SW5kZXhlcyk7CisJCWJtc19mcmVlKG1vZGlmaWVkX2F0dHJzKTsKIAl9CiB9CiAKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBIZWFwc2Nhbi5jIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmMKaW5kZXggMmRiMTkxNGFmZi4uYzc0NTIx ZTFlNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2Fu LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmMKQEAgLTM3 LDYgKzM3LDcgQEAKIAogI2luY2x1ZGUgPG1hdGguaD4KIAorI2luY2x1ZGUgImFjY2Vzcy9nZW5h bS5oIgogI2luY2x1ZGUgImFjY2Vzcy9yZWxzY2FuLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3RhYmxl YW0uaCIKICNpbmNsdWRlICJhY2Nlc3MvdHJhbnNhbS5oIgpAQCAtNzksOCArODAsMzEgQEAgQml0 bWFwSGVhcE5leHQoQml0bWFwSGVhcFNjYW5TdGF0ZSAqbm9kZSkKIAlUQk1JdGVyYXRlUmVzdWx0 ICp0Ym1yZXM7CiAJVHVwbGVUYWJsZVNsb3QgKnNsb3Q7CiAJUGFyYWxsZWxCaXRtYXBIZWFwU3Rh dGUgKnBzdGF0ZSA9IG5vZGUtPnBzdGF0ZTsKKwlCaXRtYXBzZXQgKmludGVyZXN0aW5nX2F0dHJz ID0gTlVMTDsKIAlkc2FfYXJlYSAgICpkc2EgPSBub2RlLT5zcy5wcy5zdGF0ZS0+ZXNfcXVlcnlf ZHNhOwogCisJLyogaGFjayBmb3IgUEhPVCAqLworCWlmIChvdXRlclBsYW5TdGF0ZSgmbm9kZS0+ c3MucHMpKQorCXsKKwkJUGxhblN0YXRlICpwcyA9IG91dGVyUGxhblN0YXRlKCZub2RlLT5zcy5w cyk7CisJCVBsYW4gKnBsYW4gPSBwcy0+cGxhbjsKKworCQlpZiAobm9kZVRhZyhwbGFuKSA9PSBU X0JpdG1hcEluZGV4U2NhbikKKwkJeworCQkJQml0bWFwSW5kZXhTY2FuICpzY2FuID0gKEJpdG1h cEluZGV4U2NhbiAqKSBwbGFuOworCQkJT2lkIGluZGV4aWQgPSBzY2FuLT5pbmRleGlkOworCQkJ UmVsYXRpb24gaW5kcmVsID0gaW5kZXhfb3BlbihpbmRleGlkLCBBY2Nlc3NTaGFyZUxvY2spOwor CisJCQlmb3IgKGludCBpID0gMDsgaSA8IGluZHJlbC0+cmRfaW5kZXgtPmluZG5hdHRzOyBpKysp CisJCQl7CisJCQkJaW50IGluZF9hdHRyID0gaW5kcmVsLT5yZF9pbmRleC0+aW5ka2V5LnZhbHVl c1tpXSAtIEZpcnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXI7CisJCQkJaW50ZXJlc3Rp bmdfYXR0cnMgPSBibXNfYWRkX21lbWJlcihpbnRlcmVzdGluZ19hdHRycywgaW5kX2F0dHIpOwor CQkJfQorCisJCQlpbmRleF9jbG9zZShpbmRyZWwsIEFjY2Vzc1NoYXJlTG9jayk7CisJCX0KKwl9 CisKIAkvKgogCSAqIGV4dHJhY3QgbmVjZXNzYXJ5IGluZm9ybWF0aW9uIGZyb20gaW5kZXggc2Nh biBub2RlCiAJICovCkBAIC0yMzIsNyArMjU2LDcgQEAgQml0bWFwSGVhcE5leHQoQml0bWFwSGVh cFNjYW5TdGF0ZSAqbm9kZSkKIAkJCQkgKi8KIAkJCQlub2RlLT5yZXR1cm5fZW1wdHlfdHVwbGVz ID0gdGJtcmVzLT5udHVwbGVzOwogCQkJfQotCQkJZWxzZSBpZiAoIXRhYmxlX3NjYW5fYml0bWFw X25leHRfYmxvY2soc2NhbiwgdGJtcmVzKSkKKwkJCWVsc2UgaWYgKCF0YWJsZV9zY2FuX2JpdG1h cF9uZXh0X2Jsb2NrKHNjYW4sIHRibXJlcywgaW50ZXJlc3RpbmdfYXR0cnMpKQogCQkJewogCQkJ CS8qIEFNIGRvZXNuJ3QgdGhpbmsgdGhpcyBibG9jayBpcyB2YWxpZCwgc2tpcCAqLwogCQkJCWNv bnRpbnVlOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxl LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYwppbmRleCAyOTkzYmE0 M2UzLi4xYTM2ZjI5MTUzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9k aWZ5VGFibGUuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYwpA QCAtNjU4LDcgKzY1OCw5IEBAIEV4ZWNJbnNlcnQoTW9kaWZ5VGFibGVTdGF0ZSAqbXRzdGF0ZSwK IAkJCXJlY2hlY2tJbmRleGVzID0gRXhlY0luc2VydEluZGV4VHVwbGVzKHJlc3VsdFJlbEluZm8s CiAJCQkJCQkJCQkJCQkgICBzbG90LCBlc3RhdGUsIGZhbHNlLCB0cnVlLAogCQkJCQkJCQkJCQkJ ICAgJnNwZWNDb25mbGljdCwKLQkJCQkJCQkJCQkJCSAgIGFyYml0ZXJJbmRleGVzKTsKKwkJCQkJ CQkJCQkJCSAgIGFyYml0ZXJJbmRleGVzLAorCQkJCQkJCQkJCQkJICAgZmFsc2UsCisJCQkJCQkJ CQkJCQkgICBOVUxMKTsKIAogCQkJLyogYWRqdXN0IHRoZSB0dXBsZSdzIHN0YXRlIGFjY29yZGlu Z2x5ICovCiAJCQl0YWJsZV90dXBsZV9jb21wbGV0ZV9zcGVjdWxhdGl2ZShyZXN1bHRSZWxhdGlv bkRlc2MsIHNsb3QsCkBAIC02OTcsNyArNjk5LDcgQEAgRXhlY0luc2VydChNb2RpZnlUYWJsZVN0 YXRlICptdHN0YXRlLAogCQkJaWYgKHJlc3VsdFJlbEluZm8tPnJpX051bUluZGljZXMgPiAwKQog CQkJCXJlY2hlY2tJbmRleGVzID0gRXhlY0luc2VydEluZGV4VHVwbGVzKHJlc3VsdFJlbEluZm8s CiAJCQkJCQkJCQkJCQkJICAgc2xvdCwgZXN0YXRlLCBmYWxzZSwKLQkJCQkJCQkJCQkJCQkgICBm YWxzZSwgTlVMTCwgTklMKTsKKwkJCQkJCQkJCQkJCQkgICBmYWxzZSwgTlVMTCwgTklMLCBmYWxz ZSwgTlVMTCk7CiAJCX0KIAl9CiAKQEAgLTEzOTUsNyArMTM5Nyw5IEBAIEV4ZWNVcGRhdGUoTW9k aWZ5VGFibGVTdGF0ZSAqbXRzdGF0ZSwKIAl7CiAJCUxvY2tUdXBsZU1vZGUgbG9ja21vZGU7CiAJ CWJvb2wJCXBhcnRpdGlvbl9jb25zdHJhaW50X2ZhaWxlZDsKLQkJYm9vbAkJdXBkYXRlX2luZGV4 ZXM7CisJCWJvb2wJCXVwZGF0ZV9hbGxfaW5kZXhlczsKKwkJYm9vbAkJdXBkYXRlX21vZGlmaWVk X2luZGV4ZXM7CisJCUJpdG1hcHNldCAqbW9kaWZpZWRfYXR0cnM7CiAKIAkJLyoKIAkJICogQ29u c3RyYWludHMgbWlnaHQgcmVmZXJlbmNlIHRoZSB0YWJsZW9pZCBjb2x1bW4sIHNvIChyZS0paW5p dGlhbGl6ZQpAQCAtMTUwMCw3ICsxNTA0LDggQEAgbHJlcGxhY2U6OwogCQkJCQkJCQkJZXN0YXRl LT5lc19zbmFwc2hvdCwKIAkJCQkJCQkJCWVzdGF0ZS0+ZXNfY3Jvc3NjaGVja19zbmFwc2hvdCwK IAkJCQkJCQkJCXRydWUgLyogd2FpdCBmb3IgY29tbWl0ICovICwKLQkJCQkJCQkJCSZ0bWZkLCAm bG9ja21vZGUsICZ1cGRhdGVfaW5kZXhlcyk7CisJCQkJCQkJCQkmdG1mZCwgJmxvY2ttb2RlLCAm dXBkYXRlX2FsbF9pbmRleGVzLAorCQkJCQkJCQkJJnVwZGF0ZV9tb2RpZmllZF9pbmRleGVzLCAm bW9kaWZpZWRfYXR0cnMpOwogCiAJCXN3aXRjaCAocmVzdWx0KQogCQl7CkBAIC0xNjMwLDEwICsx NjM1LDExIEBAIGxyZXBsYWNlOjsKIAkJfQogCiAJCS8qIGluc2VydCBpbmRleCBlbnRyaWVzIGZv ciB0dXBsZSBpZiBuZWNlc3NhcnkgKi8KLQkJaWYgKHJlc3VsdFJlbEluZm8tPnJpX051bUluZGlj ZXMgPiAwICYmIHVwZGF0ZV9pbmRleGVzKQorCQlpZiAocmVzdWx0UmVsSW5mby0+cmlfTnVtSW5k aWNlcyA+IDAgJiYgKHVwZGF0ZV9hbGxfaW5kZXhlcyB8fCB1cGRhdGVfbW9kaWZpZWRfaW5kZXhl cykpCiAJCQlyZWNoZWNrSW5kZXhlcyA9IEV4ZWNJbnNlcnRJbmRleFR1cGxlcyhyZXN1bHRSZWxJ bmZvLAogCQkJCQkJCQkJCQkJICAgc2xvdCwgZXN0YXRlLCB0cnVlLCBmYWxzZSwKLQkJCQkJCQkJ CQkJCSAgIE5VTEwsIE5JTCk7CisJCQkJCQkJCQkJCQkgICBOVUxMLCBOSUwsIHVwZGF0ZV9tb2Rp ZmllZF9pbmRleGVzLCBtb2RpZmllZF9hdHRycyk7CisJCWJtc19mcmVlKG1vZGlmaWVkX2F0dHJz KTsKIAl9CiAKIAlpZiAoY2FuU2V0VGFnKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9kZWNvZGUuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv ZGVjb2RlLmMKaW5kZXggYWZhMWRmMDBkMC4uYzBjMWE3NDYzNyAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYworKysgYi9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jCkBAIC01NCw2ICs1NCw3IEBAIHR5cGVkZWYgc3RydWN0 IFhMb2dSZWNvcmRCdWZmZXIKIHN0YXRpYyB2b2lkIERlY29kZVhMb2dPcChMb2dpY2FsRGVjb2Rp bmdDb250ZXh0ICpjdHgsIFhMb2dSZWNvcmRCdWZmZXIgKmJ1Zik7CiBzdGF0aWMgdm9pZCBEZWNv ZGVIZWFwT3AoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBYTG9nUmVjb3JkQnVmZmVyICpi dWYpOwogc3RhdGljIHZvaWQgRGVjb2RlSGVhcDJPcChMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpj dHgsIFhMb2dSZWNvcmRCdWZmZXIgKmJ1Zik7CitzdGF0aWMgdm9pZCBEZWNvZGVIZWFwM09wKExv Z2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgWExvZ1JlY29yZEJ1ZmZlciAqYnVmKTsKIHN0YXRp YyB2b2lkIERlY29kZVhhY3RPcChMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFhMb2dSZWNv cmRCdWZmZXIgKmJ1Zik7CiBzdGF0aWMgdm9pZCBEZWNvZGVTdGFuZGJ5T3AoTG9naWNhbERlY29k aW5nQ29udGV4dCAqY3R4LCBYTG9nUmVjb3JkQnVmZmVyICpidWYpOwogc3RhdGljIHZvaWQgRGVj b2RlTG9naWNhbE1zZ09wKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgWExvZ1JlY29yZEJ1 ZmZlciAqYnVmKTsKQEAgLTE0NSw2ICsxNDYsMTAgQEAgTG9naWNhbERlY29kaW5nUHJvY2Vzc1Jl Y29yZChMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3IK IAkJCURlY29kZVN0YW5kYnlPcChjdHgsICZidWYpOwogCQkJYnJlYWs7CiAKKwkJY2FzZSBSTV9I RUFQM19JRDoKKwkJCURlY29kZUhlYXAzT3AoY3R4LCAmYnVmKTsKKwkJCWJyZWFrOworCiAJCWNh c2UgUk1fSEVBUDJfSUQ6CiAJCQlEZWNvZGVIZWFwMk9wKGN0eCwgJmJ1Zik7CiAJCQlicmVhazsK QEAgLTQxNiw2ICs0MjEsMzcgQEAgRGVjb2RlU3RhbmRieU9wKExvZ2ljYWxEZWNvZGluZ0NvbnRl eHQgKmN0eCwgWExvZ1JlY29yZEJ1ZmZlciAqYnVmKQogCX0KIH0KIAorLyoKKyAqIEhhbmRsZSBy bWdyIEhFQVAzX0lEIHJlY29yZHMgZm9yIERlY29kZVJlY29yZEludG9Sb3JkZXJCdWZmZXIoKS4K KyAqLworc3RhdGljIHZvaWQKK0RlY29kZUhlYXAzT3AoTG9naWNhbERlY29kaW5nQ29udGV4dCAq Y3R4LCBYTG9nUmVjb3JkQnVmZmVyICpidWYpCit7CisJdWludDgJCSBpbmZvID0gWExvZ1JlY0dl dEluZm8oYnVmLT5yZWNvcmQpICYgWExPR19IRUFQX09QTUFTSzsKKwlUcmFuc2FjdGlvbklkIHhp ZCA9IFhMb2dSZWNHZXRYaWQoYnVmLT5yZWNvcmQpOworCVNuYXBCdWlsZAkqYnVpbGRlciA9IGN0 eC0+c25hcHNob3RfYnVpbGRlcjsKKworCVJlb3JkZXJCdWZmZXJQcm9jZXNzWGlkKGN0eC0+cmVv cmRlciwgeGlkLCBidWYtPm9yaWdwdHIpOworCisJLyoKKwkgKiBJZiB3ZSBkb24ndCBoYXZlIHNu YXBzaG90IG9yIHdlIGFyZSBqdXN0IGZhc3QtZm9yd2FyZGluZywgdGhlcmUgaXMgbm8KKwkgKiBw b2ludCBpbiBkZWNvZGluZyBkYXRhIGNoYW5nZXMuCisJICovCisJaWYgKFNuYXBCdWlsZEN1cnJl bnRTdGF0ZShidWlsZGVyKSA8IFNOQVBCVUlMRF9GVUxMX1NOQVBTSE9UIHx8CisJCWN0eC0+ZmFz dF9mb3J3YXJkKQorCQlyZXR1cm47CisKKwlzd2l0Y2ggKGluZm8pCisJeworCQljYXNlIFhMT0df SEVBUDNfUEFSVElBTF9IT1RfVVBEQVRFOgorCQkJaWYgKFNuYXBCdWlsZFByb2Nlc3NDaGFuZ2Uo YnVpbGRlciwgeGlkLCBidWYtPm9yaWdwdHIpKQorCQkJCURlY29kZVVwZGF0ZShjdHgsIGJ1Zik7 CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCWVsb2coRVJST1IsICJ1bmV4cGVjdGVkIFJNX0hF QVAzX0lEIHJlY29yZCB0eXBlOiAldSIsIGluZm8pOworCX0KK30KKwogLyoKICAqIEhhbmRsZSBy bWdyIEhFQVAyX0lEIHJlY29yZHMgZm9yIERlY29kZVJlY29yZEludG9SZW9yZGVyQnVmZmVyKCku CiAgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCBiL3NyYy9pbmNs dWRlL2FjY2Vzcy9oZWFwYW0uaAppbmRleCBkOTZhNDdiMWNlLi5mZjU0ZWFkY2QxIDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNz L2hlYXBhbS5oCkBAIC0xMjYsNyArMTI2LDcgQEAgZXh0ZXJuIGJvb2wgaGVhcF9mZXRjaChSZWxh dGlvbiByZWxhdGlvbiwgU25hcHNob3Qgc25hcHNob3QsCiAJCQkJCSAgIEhlYXBUdXBsZSB0dXBs ZSwgQnVmZmVyICp1c2VyYnVmKTsKIGV4dGVybiBib29sIGhlYXBfaG90X3NlYXJjaF9idWZmZXIo SXRlbVBvaW50ZXIgdGlkLCBSZWxhdGlvbiByZWxhdGlvbiwKIAkJCQkJCQkJICAgQnVmZmVyIGJ1 ZmZlciwgU25hcHNob3Qgc25hcHNob3QsIEhlYXBUdXBsZSBoZWFwVHVwbGUsCi0JCQkJCQkJCSAg IGJvb2wgKmFsbF9kZWFkLCBib29sIGZpcnN0X2NhbGwpOworCQkJCQkJCQkgICBib29sICphbGxf ZGVhZCwgYm9vbCBmaXJzdF9jYWxsLCBSZWxhdGlvbiBpbmRyZWwsIEJpdG1hcHNldCAqaW50ZXJl c3RpbmdfYXR0cnMpOwogCiBleHRlcm4gdm9pZCBoZWFwX2dldF9sYXRlc3RfdGlkKFRhYmxlU2Nh bkRlc2Mgc2NhbiwgSXRlbVBvaW50ZXIgdGlkKTsKIApAQCAtMTQ3LDcgKzE0Nyw4IEBAIGV4dGVy biB2b2lkIGhlYXBfYWJvcnRfc3BlY3VsYXRpdmUoUmVsYXRpb24gcmVsYXRpb24sIEl0ZW1Qb2lu dGVyIHRpZCk7CiBleHRlcm4gVE1fUmVzdWx0IGhlYXBfdXBkYXRlKFJlbGF0aW9uIHJlbGF0aW9u LCBJdGVtUG9pbnRlciBvdGlkLAogCQkJCQkJCSBIZWFwVHVwbGUgbmV3dHVwLAogCQkJCQkJCSBD b21tYW5kSWQgY2lkLCBTbmFwc2hvdCBjcm9zc2NoZWNrLCBib29sIHdhaXQsCi0JCQkJCQkJIHN0 cnVjdCBUTV9GYWlsdXJlRGF0YSAqdG1mZCwgTG9ja1R1cGxlTW9kZSAqbG9ja21vZGUpOworCQkJ CQkJCSBzdHJ1Y3QgVE1fRmFpbHVyZURhdGEgKnRtZmQsIExvY2tUdXBsZU1vZGUgKmxvY2ttb2Rl LAorCQkJCQkJCSBCaXRtYXBzZXQgKiptb2RpZmllZF9hdHRycyk7CiBleHRlcm4gVE1fUmVzdWx0 IGhlYXBfbG9ja190dXBsZShSZWxhdGlvbiByZWxhdGlvbiwgSGVhcFR1cGxlIHR1cGxlLAogCQkJ CQkJCQkgQ29tbWFuZElkIGNpZCwgTG9ja1R1cGxlTW9kZSBtb2RlLCBMb2NrV2FpdFBvbGljeSB3 YWl0X3BvbGljeSwKIAkJCQkJCQkJIGJvb2wgZm9sbG93X3VwZGF0ZSwKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBh bV94bG9nLmgKaW5kZXggMTc4ZDQ5NzEwYS4uOGIwMGJiMTQ4YiAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBh bV94bG9nLmgKQEAgLTU5LDYgKzU5LDE2IEBACiAjZGVmaW5lIFhMT0dfSEVBUDJfTE9DS19VUERB VEVEIDB4NjAKICNkZWZpbmUgWExPR19IRUFQMl9ORVdfQ0lECQkweDcwCiAKKy8qCisgKiBXZSBy YW4gb3V0IG9mIG9wY29kZXMgYWdhaW4sIHNvIGhlYXBhbS5jIG5vdyBoYXMgYSB0aGlyZCBSbWdy SWQuICBUaGVzZQorICogb3Bjb2RlcyBhcmUgYXNzb2NpYXRlZCB3aXRoIFJNX0hFQVAzX0lELCBi dXQgYXJlIG5vdCBsb2dpY2FsbHkgZGlmZmVyZW50IGZyb20KKyAqIHRoZSBvbmVzIGFib3ZlIGFz c29jaWF0ZWQgd2l0aCBSTV9IRUFQX0lELiAgWExPR19IRUFQX09QTUFTSyBhcHBsaWVzIHRvCisg KiB0aGVzZSwgdG9vLgorICoKKyAqIDB4MTAgdGhyb3VnaCAweDcwIGFyZSBhdmFpbGFibGUgZm9y IHVzZS4KKyAqLworI2RlZmluZSBYTE9HX0hFQVAzX1BBUlRJQUxfSE9UX1VQREFURQkweDAwCisK IC8qCiAgKiB4bF9oZWFwX2luc2VydC94bF9oZWFwX211bHRpX2luc2VydCBmbGFnIHZhbHVlcywg OCBiaXRzIGFyZSBhdmFpbGFibGUuCiAgKi8KQEAgLTM5Niw2ICs0MDYsOSBAQCBleHRlcm4gdm9p ZCBoZWFwMl9yZWRvKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKTsKIGV4dGVybiB2b2lkIGhlYXAy X2Rlc2MoU3RyaW5nSW5mbyBidWYsIFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKTsKIGV4dGVybiBj b25zdCBjaGFyICpoZWFwMl9pZGVudGlmeSh1aW50OCBpbmZvKTsKIGV4dGVybiB2b2lkIGhlYXBf eGxvZ19sb2dpY2FsX3Jld3JpdGUoWExvZ1JlYWRlclN0YXRlICpyKTsKK2V4dGVybiB2b2lkIGhl YXAzX3JlZG8oWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpOworZXh0ZXJuIHZvaWQgaGVhcDNfZGVz YyhTdHJpbmdJbmZvIGJ1ZiwgWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpOworZXh0ZXJuIGNvbnN0 IGNoYXIgKmhlYXAzX2lkZW50aWZ5KHVpbnQ4IGluZm8pOwogCiBleHRlcm4gWExvZ1JlY1B0ciBs b2dfaGVhcF9jbGVhbnVwX2luZm8oUmVsRmlsZU5vZGUgcm5vZGUsCiAJCQkJCQkJCQkJVHJhbnNh Y3Rpb25JZCBsYXRlc3RSZW1vdmVkWGlkKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vz cy9odHVwX2RldGFpbHMuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9odHVwX2RldGFpbHMuaAppbmRl eCA3YzYyODUyZTdmLi41N2RjZmE2ZGQ4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3Mv aHR1cF9kZXRhaWxzLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2h0dXBfZGV0YWlscy5oCkBA IC0yNzQsNyArMjc0LDggQEAgc3RydWN0IEhlYXBUdXBsZUhlYWRlckRhdGEKICAqIGluZm9ybWF0 aW9uIHN0b3JlZCBpbiB0X2luZm9tYXNrMjoKICAqLwogI2RlZmluZSBIRUFQX05BVFRTX01BU0sJ CQkweDA3RkYJLyogMTEgYml0cyBmb3IgbnVtYmVyIG9mIGF0dHJpYnV0ZXMgKi8KLS8qIGJpdHMg MHgxODAwIGFyZSBhdmFpbGFibGUgKi8KKyNkZWZpbmUgSEVBUF9QSE9UX1VQREFURUQJCTB4MDgw MAkvKiB0dXBsZSB3YXMgUEhPVC11cGRhdGVkICovCisjZGVmaW5lIEhFQVBfUEhPVF9UVVBMRQkJ CTB4MTAwMAkvKiB0aGlzIGlzIGEgcGFydGlhbCBoZWFwLW9ubHkgdHVwbGUgKi8KICNkZWZpbmUg SEVBUF9LRVlTX1VQREFURUQJCTB4MjAwMAkvKiB0dXBsZSB3YXMgdXBkYXRlZCBhbmQga2V5IGNv bHMKIAkJCQkJCQkJCQkgKiBtb2RpZmllZCwgb3IgdHVwbGUgZGVsZXRlZCAqLwogI2RlZmluZSBI RUFQX0hPVF9VUERBVEVECQkweDQwMDAJLyogdHVwbGUgd2FzIEhPVC11cGRhdGVkICovCkBAIC00 OTAsNiArNDkxLDcgQEAgZG8geyBcCiAKICNkZWZpbmUgSGVhcFR1cGxlSGVhZGVyU2V0SG90VXBk YXRlZCh0dXApIFwKICggXAorCUFzc2VydE1hY3JvKCgodHVwKS0+dF9pbmZvbWFzazIgJiBIRUFQ X1BIT1RfVVBEQVRFRCkgPT0gMCksIFwKIAkodHVwKS0+dF9pbmZvbWFzazIgfD0gSEVBUF9IT1Rf VVBEQVRFRCBcCiApCiAKQEAgLTUwNSw2ICs1MDcsNyBAQCBkbyB7IFwKIAogI2RlZmluZSBIZWFw VHVwbGVIZWFkZXJTZXRIZWFwT25seSh0dXApIFwKICggXAorICBBc3NlcnRNYWNybygoKHR1cCkt PnRfaW5mb21hc2syICYgSEVBUF9QSE9UX1RVUExFKSA9PSAwKSwgXAogICAodHVwKS0+dF9pbmZv bWFzazIgfD0gSEVBUF9PTkxZX1RVUExFIFwKICkKIApAQCAtNTEzLDYgKzUxNiw0MCBAQCBkbyB7 IFwKICAgKHR1cCktPnRfaW5mb21hc2syICY9IH5IRUFQX09OTFlfVFVQTEUgXAogKQogCisjZGVm aW5lIEhlYXBUdXBsZUhlYWRlcklzUGFydGlhbEhvdFVwZGF0ZWQodHVwKSBcCisoIFwKKwkoKHR1 cCktPnRfaW5mb21hc2syICYgSEVBUF9QSE9UX1VQREFURUQpICE9IDAgJiYgXAorCSgodHVwKS0+ dF9pbmZvbWFzayAmIEhFQVBfWE1BWF9JTlZBTElEKSA9PSAwICYmIFwKKwkhSGVhcFR1cGxlSGVh ZGVyWG1pbkludmFsaWQodHVwKSBcCispCisKKyNkZWZpbmUgSGVhcFR1cGxlSGVhZGVyU2V0UGFy dGlhbEhvdFVwZGF0ZWQodHVwKSBcCisoIFwKKwlBc3NlcnRNYWNybygoKHR1cCktPnRfaW5mb21h c2syICYgSEVBUF9IT1RfVVBEQVRFRCkgPT0gMCksIFwKKwkodHVwKS0+dF9pbmZvbWFzazIgfD0g SEVBUF9QSE9UX1VQREFURUQgXAorKQorCisjZGVmaW5lIEhlYXBUdXBsZUhlYWRlckNsZWFyUGFy dGlhbEhvdFVwZGF0ZWQodHVwKSBcCisoIFwKKwkodHVwKS0+dF9pbmZvbWFzazIgJj0gfkhFQVBf UEhPVF9VUERBVEVEIFwKKykKKworI2RlZmluZSBIZWFwVHVwbGVIZWFkZXJJc1BhcnRpYWxIZWFw T25seSh0dXApIFwKKyggXAorCSgodHVwKS0+dF9pbmZvbWFzazIgJiBIRUFQX1BIT1RfVFVQTEUp ICE9IDAgXAorKQorCisjZGVmaW5lIEhlYXBUdXBsZUhlYWRlclNldFBhcnRpYWxIZWFwT25seSh0 dXApIFwKKyggXAorCUFzc2VydE1hY3JvKCgodHVwKS0+dF9pbmZvbWFzazIgJiBIRUFQX09OTFlf VFVQTEUpID09IDApLCBcCisJKHR1cCktPnRfaW5mb21hc2syIHw9IEhFQVBfUEhPVF9UVVBMRSBc CispCisKKyNkZWZpbmUgSGVhcFR1cGxlSGVhZGVyQ2xlYXJQYXJ0aWFsSGVhcE9ubHkodHVwKSBc CisoIFwKKwkodHVwKS0+dF9pbmZvbWFzazIgJj0gfkhFQVBfUEhPVF9UVVBMRSBcCispCisKICNk ZWZpbmUgSGVhcFR1cGxlSGVhZGVySGFzTWF0Y2godHVwKSBcCiAoIFwKICAgKCh0dXApLT50X2lu Zm9tYXNrMiAmIEhFQVBfVFVQTEVfSEFTX01BVENIKSAhPSAwIFwKQEAgLTY5MSw2ICs3MjgsMjQg QEAgc3RydWN0IE1pbmltYWxUdXBsZURhdGEKICNkZWZpbmUgSGVhcFR1cGxlQ2xlYXJIZWFwT25s eSh0dXBsZSkgXAogCQlIZWFwVHVwbGVIZWFkZXJDbGVhckhlYXBPbmx5KCh0dXBsZSktPnRfZGF0 YSkKIAorI2RlZmluZSBIZWFwVHVwbGVJc1BhcnRpYWxIb3RVcGRhdGVkKHR1cGxlKSBcCisJCUhl YXBUdXBsZUhlYWRlcklzUGFydGlhbEhvdFVwZGF0ZWQoKHR1cGxlKS0+dF9kYXRhKQorCisjZGVm aW5lIEhlYXBUdXBsZVNldFBhcnRpYWxIb3RVcGRhdGVkKHR1cGxlKSBcCisJCUhlYXBUdXBsZUhl YWRlclNldFBhcnRpYWxIb3RVcGRhdGVkKCh0dXBsZSktPnRfZGF0YSkKKworI2RlZmluZSBIZWFw VHVwbGVDbGVhclBhcnRpYWxIb3RVcGRhdGVkKHR1cGxlKSBcCisJCUhlYXBUdXBsZUhlYWRlckNs ZWFyUGFydGlhbEhvdFVwZGF0ZWQoKHR1cGxlKS0+dF9kYXRhKQorCisjZGVmaW5lIEhlYXBUdXBs ZUlzUGFydGlhbEhlYXBPbmx5KHR1cGxlKSBcCisJCUhlYXBUdXBsZUhlYWRlcklzUGFydGlhbEhl YXBPbmx5KCh0dXBsZSktPnRfZGF0YSkKKworI2RlZmluZSBIZWFwVHVwbGVTZXRQYXJ0aWFsSGVh cE9ubHkodHVwbGUpIFwKKwkJSGVhcFR1cGxlSGVhZGVyU2V0UGFydGlhbEhlYXBPbmx5KCh0dXBs ZSktPnRfZGF0YSkKKworI2RlZmluZSBIZWFwVHVwbGVDbGVhclBhcnRpYWxIZWFwT25seSh0dXBs ZSkgXAorCQlIZWFwVHVwbGVIZWFkZXJDbGVhclBhcnRpYWxIZWFwT25seSgodHVwbGUpLT50X2Rh dGEpCisKIAogLyogLS0tLS0tLS0tLS0tLS0tLQogICoJCWZhc3RnZXRhdHRyCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9hY2Nlc3Mvcm1ncmxpc3QuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9ybWdy bGlzdC5oCmluZGV4IGY1ODJjZjUzNWYuLjM2N2I4Y2ViZjAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2FjY2Vzcy9ybWdybGlzdC5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9ybWdybGlzdC5o CkBAIC00NywzICs0Nyw0IEBAIFBHX1JNR1IoUk1fQ09NTUlUX1RTX0lELCAiQ29tbWl0VHMiLCBj b21taXRfdHNfcmVkbywgY29tbWl0X3RzX2Rlc2MsIGNvbW1pdF90c19pCiBQR19STUdSKFJNX1JF UExPUklHSU5fSUQsICJSZXBsaWNhdGlvbk9yaWdpbiIsIHJlcGxvcmlnaW5fcmVkbywgcmVwbG9y aWdpbl9kZXNjLCByZXBsb3JpZ2luX2lkZW50aWZ5LCBOVUxMLCBOVUxMLCBOVUxMKQogUEdfUk1H UihSTV9HRU5FUklDX0lELCAiR2VuZXJpYyIsIGdlbmVyaWNfcmVkbywgZ2VuZXJpY19kZXNjLCBn ZW5lcmljX2lkZW50aWZ5LCBOVUxMLCBOVUxMLCBnZW5lcmljX21hc2spCiBQR19STUdSKFJNX0xP R0lDQUxNU0dfSUQsICJMb2dpY2FsTWVzc2FnZSIsIGxvZ2ljYWxtc2dfcmVkbywgbG9naWNhbG1z Z19kZXNjLCBsb2dpY2FsbXNnX2lkZW50aWZ5LCBOVUxMLCBOVUxMLCBOVUxMKQorUEdfUk1HUihS TV9IRUFQM19JRCwgIkhlYXAzIiwgaGVhcDNfcmVkbywgaGVhcDNfZGVzYywgaGVhcDNfaWRlbnRp ZnksIE5VTEwsIE5VTEwsIGhlYXBfbWFzaykKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vz cy90YWJsZWFtLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oCmluZGV4IDMzYmZmYjY4 MTUuLjgxNzUwNzExMWMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgK KysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaApAQCAtNDAzLDcgKzQwMyw4IEBAIHR5 cGVkZWYgc3RydWN0IFRhYmxlQW1Sb3V0aW5lCiAJCQkJCQkJCQkgIEl0ZW1Qb2ludGVyIHRpZCwK IAkJCQkJCQkJCSAgU25hcHNob3Qgc25hcHNob3QsCiAJCQkJCQkJCQkgIFR1cGxlVGFibGVTbG90 ICpzbG90LAotCQkJCQkJCQkJICBib29sICpjYWxsX2FnYWluLCBib29sICphbGxfZGVhZCk7CisJ CQkJCQkJCQkgIGJvb2wgKmNhbGxfYWdhaW4sIGJvb2wgKmFsbF9kZWFkLAorCQkJCQkJCQkJICBS ZWxhdGlvbiBpbmRyZWwpOwogCiAKIAkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTQ5NSw3ICs0OTYs OSBAQCB0eXBlZGVmIHN0cnVjdCBUYWJsZUFtUm91dGluZQogCQkJCQkJCQkgYm9vbCB3YWl0LAog CQkJCQkJCQkgVE1fRmFpbHVyZURhdGEgKnRtZmQsCiAJCQkJCQkJCSBMb2NrVHVwbGVNb2RlICps b2NrbW9kZSwKLQkJCQkJCQkJIGJvb2wgKnVwZGF0ZV9pbmRleGVzKTsKKwkJCQkJCQkJIGJvb2wg KnVwZGF0ZV9hbGxfaW5kZXhlcywKKwkJCQkJCQkJIGJvb2wgKnVwZGF0ZV9tb2RpZmllZF9pbmRl eGVzLAorCQkJCQkJCQkgQml0bWFwc2V0ICoqbW9kaWZpZWRfYXR0cnMpOwogCiAJLyogc2VlIHRh YmxlX3R1cGxlX2xvY2soKSBmb3IgcmVmZXJlbmNlIGFib3V0IHBhcmFtZXRlcnMgKi8KIAlUTV9S ZXN1bHQJKCp0dXBsZV9sb2NrKSAoUmVsYXRpb24gcmVsLApAQCAtNzU3LDcgKzc2MCw3IEBAIHR5 cGVkZWYgc3RydWN0IFRhYmxlQW1Sb3V0aW5lCiAJICogc2Nhbl9iaXRtYXBfbmV4dF90dXBsZSBu ZWVkIHRvIGV4aXN0LCBvciBuZWl0aGVyLgogCSAqLwogCWJvb2wJCSgqc2Nhbl9iaXRtYXBfbmV4 dF9ibG9jaykgKFRhYmxlU2NhbkRlc2Mgc2NhbiwKLQkJCQkJCQkJCQkgICBzdHJ1Y3QgVEJNSXRl cmF0ZVJlc3VsdCAqdGJtcmVzKTsKKwkJCQkJCQkJCQkgICBzdHJ1Y3QgVEJNSXRlcmF0ZVJlc3Vs dCAqdGJtcmVzLCBCaXRtYXBzZXQgKmludGVyZXN0aW5nX2F0dHJzKTsKIAogCS8qCiAJICogRmV0 Y2ggdGhlIG5leHQgdHVwbGUgb2YgYSBiaXRtYXAgdGFibGUgc2NhbiBpbnRvIGBzbG90YCBhbmQg cmV0dXJuIHRydWUKQEAgLTExMjQsNyArMTEyNyw4IEBAIHRhYmxlX2luZGV4X2ZldGNoX3R1cGxl KHN0cnVjdCBJbmRleEZldGNoVGFibGVEYXRhICpzY2FuLAogCQkJCQkJSXRlbVBvaW50ZXIgdGlk LAogCQkJCQkJU25hcHNob3Qgc25hcHNob3QsCiAJCQkJCQlUdXBsZVRhYmxlU2xvdCAqc2xvdCwK LQkJCQkJCWJvb2wgKmNhbGxfYWdhaW4sIGJvb2wgKmFsbF9kZWFkKQorCQkJCQkJYm9vbCAqY2Fs bF9hZ2FpbiwgYm9vbCAqYWxsX2RlYWQsCisJCQkJCQlSZWxhdGlvbiBpbmRyZWwpCiB7CiAJLyoK IAkgKiBXZSBkb24ndCBleHBlY3QgZGlyZWN0IGNhbGxzIHRvIHRhYmxlX2luZGV4X2ZldGNoX3R1 cGxlIHdpdGggdmFsaWQKQEAgLTExMzYsNyArMTE0MCw3IEBAIHRhYmxlX2luZGV4X2ZldGNoX3R1 cGxlKHN0cnVjdCBJbmRleEZldGNoVGFibGVEYXRhICpzY2FuLAogCiAJcmV0dXJuIHNjYW4tPnJl bC0+cmRfdGFibGVhbS0+aW5kZXhfZmV0Y2hfdHVwbGUoc2NhbiwgdGlkLCBzbmFwc2hvdCwKIAkJ CQkJCQkJCQkJCQlzbG90LCBjYWxsX2FnYWluLAotCQkJCQkJCQkJCQkJCWFsbF9kZWFkKTsKKwkJ CQkJCQkJCQkJCQlhbGxfZGVhZCwgaW5kcmVsKTsKIH0KIAogLyoKQEAgLTExNDgsNyArMTE1Miw4 IEBAIHRhYmxlX2luZGV4X2ZldGNoX3R1cGxlKHN0cnVjdCBJbmRleEZldGNoVGFibGVEYXRhICpz Y2FuLAogZXh0ZXJuIGJvb2wgdGFibGVfaW5kZXhfZmV0Y2hfdHVwbGVfY2hlY2soUmVsYXRpb24g cmVsLAogCQkJCQkJCQkJCSAgSXRlbVBvaW50ZXIgdGlkLAogCQkJCQkJCQkJCSAgU25hcHNob3Qg c25hcHNob3QsCi0JCQkJCQkJCQkJICBib29sICphbGxfZGVhZCk7CisJCQkJCQkJCQkJICBib29s ICphbGxfZGVhZCwKKwkJCQkJCQkJCQkgIFJlbGF0aW9uIGluZHJlbCk7CiAKIAogLyogLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCkBAIC0xNDE3LDEyICsxNDIyLDEzIEBAIHN0YXRpYyBpbmxpbmUgVE1fUmVzdWx0 CiB0YWJsZV90dXBsZV91cGRhdGUoUmVsYXRpb24gcmVsLCBJdGVtUG9pbnRlciBvdGlkLCBUdXBs ZVRhYmxlU2xvdCAqc2xvdCwKIAkJCQkgICBDb21tYW5kSWQgY2lkLCBTbmFwc2hvdCBzbmFwc2hv dCwgU25hcHNob3QgY3Jvc3NjaGVjaywKIAkJCQkgICBib29sIHdhaXQsIFRNX0ZhaWx1cmVEYXRh ICp0bWZkLCBMb2NrVHVwbGVNb2RlICpsb2NrbW9kZSwKLQkJCQkgICBib29sICp1cGRhdGVfaW5k ZXhlcykKKwkJCQkgICBib29sICp1cGRhdGVfYWxsX2luZGV4ZXMsIGJvb2wgKnVwZGF0ZV9tb2Rp ZmllZF9pbmRleGVzLCBCaXRtYXBzZXQgKiptb2RpZmllZF9hdHRycykKIHsKIAlyZXR1cm4gcmVs LT5yZF90YWJsZWFtLT50dXBsZV91cGRhdGUocmVsLCBvdGlkLCBzbG90LAogCQkJCQkJCQkJCSBj aWQsIHNuYXBzaG90LCBjcm9zc2NoZWNrLAogCQkJCQkJCQkJCSB3YWl0LCB0bWZkLAotCQkJCQkJ CQkJCSBsb2NrbW9kZSwgdXBkYXRlX2luZGV4ZXMpOworCQkJCQkJCQkJCSBsb2NrbW9kZSwgdXBk YXRlX2FsbF9pbmRleGVzLAorCQkJCQkJCQkJCSB1cGRhdGVfbW9kaWZpZWRfaW5kZXhlcywgbW9k aWZpZWRfYXR0cnMpOwogfQogCiAvKgpAQCAtMTg0Miw3ICsxODQ4LDcgQEAgdGFibGVfcmVsYXRp b25fZXN0aW1hdGVfc2l6ZShSZWxhdGlvbiByZWwsIGludDMyICphdHRyX3dpZHRocywKICAqLwog c3RhdGljIGlubGluZSBib29sCiB0YWJsZV9zY2FuX2JpdG1hcF9uZXh0X2Jsb2NrKFRhYmxlU2Nh bkRlc2Mgc2NhbiwKLQkJCQkJCQkgc3RydWN0IFRCTUl0ZXJhdGVSZXN1bHQgKnRibXJlcykKKwkJ CQkJCQkgc3RydWN0IFRCTUl0ZXJhdGVSZXN1bHQgKnRibXJlcywgQml0bWFwc2V0ICppbnRlcmVz dGluZ19hdHRycykKIHsKIAkvKgogCSAqIFdlIGRvbid0IGV4cGVjdCBkaXJlY3QgY2FsbHMgdG8g dGFibGVfc2Nhbl9iaXRtYXBfbmV4dF9ibG9jayB3aXRoIHZhbGlkCkBAIC0xODUzLDcgKzE4NTks NyBAQCB0YWJsZV9zY2FuX2JpdG1hcF9uZXh0X2Jsb2NrKFRhYmxlU2NhbkRlc2Mgc2NhbiwKIAkJ ZWxvZyhFUlJPUiwgInVuZXhwZWN0ZWQgdGFibGVfc2Nhbl9iaXRtYXBfbmV4dF9ibG9jayBjYWxs IGR1cmluZyBsb2dpY2FsIGRlY29kaW5nIik7CiAKIAlyZXR1cm4gc2Nhbi0+cnNfcmQtPnJkX3Rh YmxlYW0tPnNjYW5fYml0bWFwX25leHRfYmxvY2soc2NhbiwKLQkJCQkJCQkJCQkJCQkJICAgdGJt cmVzKTsKKwkJCQkJCQkJCQkJCQkJICAgdGJtcmVzLCBpbnRlcmVzdGluZ19hdHRycyk7CiB9CiAK IC8qCkBAIC0xOTQwLDcgKzE5NDYsOCBAQCBleHRlcm4gdm9pZCBzaW1wbGVfdGFibGVfdHVwbGVf ZGVsZXRlKFJlbGF0aW9uIHJlbCwgSXRlbVBvaW50ZXIgdGlkLAogCQkJCQkJCQkJICBTbmFwc2hv dCBzbmFwc2hvdCk7CiBleHRlcm4gdm9pZCBzaW1wbGVfdGFibGVfdHVwbGVfdXBkYXRlKFJlbGF0 aW9uIHJlbCwgSXRlbVBvaW50ZXIgb3RpZCwKIAkJCQkJCQkJCSAgVHVwbGVUYWJsZVNsb3QgKnNs b3QsIFNuYXBzaG90IHNuYXBzaG90LAotCQkJCQkJCQkJICBib29sICp1cGRhdGVfaW5kZXhlcyk7 CisJCQkJCQkJCQkgIGJvb2wgKnVwZGF0ZV9hbGxfaW5kZXhlcywgYm9vbCAqdXBkYXRlX21vZGlm aWVkX2luZGV4ZXMsCisJCQkJCQkJCQkgIEJpdG1hcHNldCAqKm1vZGlmaWVkX2F0dHJzKTsKIAog CiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRv ci9leGVjdXRvci5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaAppbmRleCAwNzFl MzYzZDU0Li45MzkwZjJkZmQ1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVj dXRvci5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmgKQEAgLTU4OCw3ICs1 ODgsOCBAQCBleHRlcm4gTGlzdCAqRXhlY0luc2VydEluZGV4VHVwbGVzKFJlc3VsdFJlbEluZm8g KnJlc3VsdFJlbEluZm8sCiAJCQkJCQkJCSAgIFR1cGxlVGFibGVTbG90ICpzbG90LCBFU3RhdGUg KmVzdGF0ZSwKIAkJCQkJCQkJICAgYm9vbCB1cGRhdGUsCiAJCQkJCQkJCSAgIGJvb2wgbm9EdXBF cnIsCi0JCQkJCQkJCSAgIGJvb2wgKnNwZWNDb25mbGljdCwgTGlzdCAqYXJiaXRlckluZGV4ZXMp OworCQkJCQkJCQkgICBib29sICpzcGVjQ29uZmxpY3QsIExpc3QgKmFyYml0ZXJJbmRleGVzLAor CQkJCQkJCQkgICBib29sIHVwZGF0ZV9tb2RpZmllZF9pbmRleGVzLCBCaXRtYXBzZXQgKm1vZGlm aWVkX2F0dHJzKTsKIGV4dGVybiBib29sIEV4ZWNDaGVja0luZGV4Q29uc3RyYWludHMoUmVzdWx0 UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKIAkJCQkJCQkJCSAgVHVwbGVUYWJsZVNsb3QgKnNsb3Qs CiAJCQkJCQkJCQkgIEVTdGF0ZSAqZXN0YXRlLCBJdGVtUG9pbnRlciBjb25mbGljdFRpZCwKLS0g CjIuMTYuNgoK --_002_2ECBBCA04D8D484188724A5BBDC063D2amazoncom_--