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=-15.3 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 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 651FEC48BCD for ; Wed, 9 Jun 2021 17:36:08 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (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 3536861183 for ; Wed, 9 Jun 2021 17:36:08 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 3536861183 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 78A366E13C; Wed, 9 Jun 2021 17:36:07 +0000 (UTC) Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id A3D766E13C; Wed, 9 Jun 2021 17:36:06 +0000 (UTC) IronPort-SDR: x4dPa0lP9V4+uIjWoigRiA8DJm25pvnA4JP5doLpLIsUukYpdEwPAwqmvq6PEStJqOKtf94eOc rKH5OHOm8z3Q== X-IronPort-AV: E=McAfee;i="6200,9189,10010"; a="202100645" X-IronPort-AV: E=Sophos;i="5.83,261,1616482800"; d="scan'208";a="202100645" Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 Jun 2021 10:36:04 -0700 IronPort-SDR: AcITcgzNUsPcsaroLvtQjHaeP4x+5tfSATQqq34ysHOjJjKIVexVcaehFV65bPpGZFnXXQvLPc Jg05UpKWcvhg== X-IronPort-AV: E=Sophos;i="5.83,261,1616482800"; d="scan'208";a="482468203" Received: from johnharr-mobl1.amr.corp.intel.com (HELO [10.212.251.201]) ([10.212.251.201]) by orsmga001-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 Jun 2021 10:36:04 -0700 To: Daniele Ceraolo Spurio , Matthew Brost , intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org References: <20210607180356.165785-1-matthew.brost@intel.com> <20210607180356.165785-8-matthew.brost@intel.com> <946237c6-1671-b419-5337-d5b8cc02a041@intel.com> From: John Harrison Message-ID: <04a5897a-b521-b999-433e-81c417a19f70@intel.com> Date: Wed, 9 Jun 2021 10:36:03 -0700 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.11.0 MIME-Version: 1.0 In-Reply-To: <946237c6-1671-b419-5337-d5b8cc02a041@intel.com> Content-Language: en-GB Subject: Re: [Intel-gfx] [PATCH 07/13] drm/i915/guc: New definition of the CTB registration action X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" T24gNi83LzIwMjEgMTg6MjMsIERhbmllbGUgQ2VyYW9sbyBTcHVyaW8gd3JvdGU6Cj4gT24gNi83 LzIwMjEgMTE6MDMgQU0sIE1hdHRoZXcgQnJvc3Qgd3JvdGU6Cj4+IEZyb206IE1pY2hhbCBXYWpk ZWN6a28gPG1pY2hhbC53YWpkZWN6a29AaW50ZWwuY29tPgo+Pgo+PiBEZWZpbml0aW9uIG9mIHRo ZSBDVEIgcmVnaXN0cmF0aW9uIGFjdGlvbiBoYXMgY2hhbmdlZC4KPj4gQWRkIHNvbWUgQUJJIGRv Y3VtZW50YXRpb24gYW5kIGltcGxlbWVudCByZXF1aXJlZCBjaGFuZ2VzLgo+Pgo+PiBTaWduZWQt b2ZmLWJ5OiBNaWNoYWwgV2FqZGVjemtvIDxtaWNoYWwud2FqZGVjemtvQGludGVsLmNvbT4KPj4g U2lnbmVkLW9mZi1ieTogTWF0dGhldyBCcm9zdCA8bWF0dGhldy5icm9zdEBpbnRlbC5jb20+Cj4+ IENjOiBQaW90ciBQacOzcmtvd3NraSA8cGlvdHIucGlvcmtvd3NraUBpbnRlbC5jb20+ICM0Cj4+ IC0tLQo+PiDCoCAuLi4vZ3B1L2RybS9pOTE1L2d0L3VjL2FiaS9ndWNfYWN0aW9uc19hYmkuaMKg IHwgMTA3ICsrKysrKysrKysrKysrKysrKwo+PiDCoCAuLi4vZ3QvdWMvYWJpL2d1Y19jb21tdW5p Y2F0aW9uX2N0Yl9hYmkuaMKgwqDCoMKgIHzCoMKgIDQgLQo+PiDCoCBkcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC91Yy9pbnRlbF9ndWNfY3QuY8KgwqDCoMKgIHzCoCA3NiArKysrKysrKy0tLS0tCj4+ IMKgIDMgZmlsZXMgY2hhbmdlZCwgMTUyIGluc2VydGlvbnMoKyksIDM1IGRlbGV0aW9ucygtKQo+ Pgo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvYWJpL2d1Y19hY3Rp b25zX2FiaS5oIAo+PiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2FiaS9ndWNfYWN0aW9u c19hYmkuaAo+PiBpbmRleCA5MGVmZWY4YTczZTQuLjY0MjZmYzE4MzY5MiAxMDA2NDQKPj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvYWJpL2d1Y19hY3Rpb25zX2FiaS5oCj4+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2FiaS9ndWNfYWN0aW9uc19hYmkuaAo+PiBA QCAtNiw2ICs2LDExMyBAQAo+PiDCoCAjaWZuZGVmIF9BQklfR1VDX0FDVElPTlNfQUJJX0gKPj4g wqAgI2RlZmluZSBfQUJJX0dVQ19BQ1RJT05TX0FCSV9ICj4+IMKgICsvKioKPj4gKyAqIERPQzog SE9TVDJHVUNfUkVHSVNURVJfQ1RCCj4+ICsgKgo+PiArICogVGhpcyBtZXNzYWdlIGlzIHVzZWQg YXMgcGFydCBvZiB0aGUgYENUQiBiYXNlZCBjb21tdW5pY2F0aW9uYF8gCj4+IHNldHVwLgo+PiAr ICoKPj4gKyAqIFRoaXMgbWVzc2FnZSBtdXN0IGJlIHNlbnQgYXMgYE1NSU8gSFhHIE1lc3NhZ2Vg Xy4KPj4gKyAqCj4+ICsgKiAKPj4gKy0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwo+PiArICrCoCB8wqDCoCB8 IEJpdHPCoCB8IAo+PiBEZXNjcmlwdGlvbsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHwKPj4gKyAqIAo+PiArPT09Kz09PT09PT0rPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rCj4+ICsgKsKgIHwgMCB8 wqDCoMKgIDMxIHwgT1JJR0lOID0gCj4+IEdVQ19IWEdfT1JJR0lOX0hPU1RfwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfAo+PiAr ICrCoCB8IAo+PiArLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKPj4gKyAqwqAgfMKgwqAgfCAzMDoyOCB8IFRZUEUg PSAKPj4gR1VDX0hYR19UWVBFX1JFUVVFU1RfwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8Cj4+ICsgKsKgIHwgCj4+ICstLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKwo+PiArICrCoCB8wqDCoCB8IDI3OjE2IHwgREFUQTAgPSAKPj4gTUJawqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfAo+PiArICrCoCB8IAo+PiArLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSsKPj4gKyAqwqAgfMKgwqAgfMKgIDE1OjAgfCBBQ1RJT04gPSBfYEdVQ19BQ1RJ T05fSE9TVDJHVUNfUkVHSVNURVJfQ1RCYCA9IAo+PiAweDUyMDDCoMKgwqDCoMKgwqDCoCB8Cj4K PiBTcGVjcyBzYXlzIDQ1MDUKPgo+PiArICogCj4+ICstLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKPj4gKyAq wqAgfCAxIHwgMzE6MTIgfCBSRVNFUlZFRCA9IAo+PiBNQlrCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCB8Cj4+ICsgKsKgIHwgCj4+ICstLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwo+PiArICrCoCB8 wqDCoCB8wqAgMTE6OCB8ICoqVFlQRSoqIC0gdHlwZSBmb3IgdGhlIGBDVCAKPj4gQnVmZmVyYF/C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfAo+PiArICrC oCB8wqDCoCB8IAo+PiB8wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfAo+PiArICrCoCB8wqDCoCB8wqDCoMKgwqDCoMKgIHzC oMKgIC0gX2BHVUNfQ1RCX1RZUEVfSE9TVDJHVUNgID0gCj4+IDDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8Cj4+ICsgKsKgIHzCoMKgIHzC oMKgwqDCoMKgwqAgfMKgwqAgLSBfYEdVQ19DVEJfVFlQRV9HVUMySE9TVGAgPSAKPj4gMcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwKPj4g KyAqwqAgfCAKPj4gKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCj4+ICsgKsKgIHzCoMKgIHzCoMKgIDc6MCB8ICoq U0laRSoqIC0gc2l6ZSBvZiB0aGUgYENUIEJ1ZmZlcmBfIGluIDRLIHVuaXRzIAo+PiBtaW51cyAx wqDCoMKgwqDCoCB8Cj4+ICsgKiAKPj4gKy0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwo+PiArICrCoCB8IDIg fMKgIDMxOjAgfCAqKkRFU0NfQUREUioqIC0gR0dUVCBhZGRyZXNzIG9mIHRoZSBgQ1RCIAo+PiBE ZXNjcmlwdG9yYF/CoMKgwqDCoMKgwqDCoCB8Cj4+ICsgKiAKPj4gKy0tLSstLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Kwo+PiArICrCoCB8IDMgfMKgIDMxOjAgfCAqKkJVRkZfQURERioqIC0gR0dUVCBhZGRyZXNzIG9m IHRoZSBgQ1QgCj4+IEJ1ZmZlcmBfwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwKPj4gKyAqIAo+ PiArLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rCj4+ICsqCj4+ICsgKiAKPj4gKy0tLSstLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Kwo+PiArICrCoCB8wqDCoCB8IEJpdHPCoCB8IAo+PiBEZXNjcmlwdGlvbsKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwKPj4gKyAqIAo+PiArPT09Kz09PT09PT0rPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0rCj4+ICsgKsKgIHwgMCB8wqDCoMKgIDMxIHwgT1JJR0lOID0gCj4+IEdVQ19IWEdfT1JJR0lO X0dVQ1/CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHwKPj4gKyAqwqAgfCAKPj4gKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCj4+ICsgKsKgIHzC oMKgIHwgMzA6MjggfCBUWVBFID0gCj4+IEdVQ19IWEdfVFlQRV9SRVNQT05TRV9TVUNDRVNTX8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfAo+PiArICrCoCB8 IAo+PiArLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSsKPj4gKyAqwqAgfMKgwqAgfMKgIDI3OjAgfCBEQVRBMCA9IAo+ PiBNQlrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8Cj4+ICsgKiAK Pj4gKy0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKwo+PiArICovCj4+ICsjZGVmaW5lIEdVQ19BQ1RJT05fSE9T VDJHVUNfUkVHSVNURVJfQ1RCwqDCoMKgwqDCoMKgwqAgMHg0NTA1IC8vIEZJWE1FIDB4NTIwMAo+ Cj4gV2h5IEZJWE1FPyBBRkFJQ1MgdGhlIHNwZWNzIHN0aWxsIHNheXMgNDUwNSwgZXZlbiBpZiB3 ZSBwbGFuIHRvIHVwZGF0ZSAKPiBhdCBzb21lIHBvaW50IEkgZG9uO3QgdGhpbmsgdGhpcyBkZXNl cnZlcyBhIEZJWE1FIHNpbmNlIG5vdGhpbmcgaXMgCj4gaW5jb3JyZWN0Lgo+Cj4+ICsKPj4gKyNk ZWZpbmUgSE9TVDJHVUNfUkVHSVNURVJfQ1RCX1JFUVVFU1RfTVNHX0xFTiAKPj4gKEdVQ19IWEdf UkVRVUVTVF9NU0dfTUlOX0xFTiArIDN1KQo+PiArI2RlZmluZSBIT1NUMkdVQ19SRUdJU1RFUl9D VEJfUkVRVUVTVF9NU0dfMF9NQlogCj4+IEdVQ19IWEdfUkVRVUVTVF9NU0dfMF9EQVRBMAo+PiAr I2RlZmluZSBIT1NUMkdVQ19SRUdJU1RFUl9DVEJfUkVRVUVTVF9NU0dfMV9NQlrCoMKgwqDCoMKg wqDCoCAoMHhmZmZmZiA8PCAxMikKPj4gKyNkZWZpbmUgSE9TVDJHVUNfUkVHSVNURVJfQ1RCX1JF UVVFU1RfTVNHXzFfVFlQRcKgwqDCoCAoMHhmIDw8IDgpCj4+ICsjZGVmaW5lwqDCoCBHVUNfQ1RC X1RZUEVfSE9TVDJHVUPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHUKPj4gKyNkZWZp bmXCoMKgIEdVQ19DVEJfVFlQRV9HVUMySE9TVMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCAxdQo+PiArI2RlZmluZSBIT1NUMkdVQ19SRUdJU1RFUl9DVEJfUkVRVUVTVF9NU0dfMV9TSVpF wqDCoMKgICgweGZmIDw8IDApCj4+ICsjZGVmaW5lIEhPU1QyR1VDX1JFR0lTVEVSX0NUQl9SRVFV RVNUX01TR18yX0RFU0NfQUREUiAKPj4gR1VDX0hYR19SRVFVRVNUX01TR19uX0RBVEFuCj4+ICsj ZGVmaW5lIEhPU1QyR1VDX1JFR0lTVEVSX0NUQl9SRVFVRVNUX01TR18zX0JVRkZfQUREUiAKPj4g R1VDX0hYR19SRVFVRVNUX01TR19uX0RBVEFuCj4KPiBUaGUgZnVsbCBtYXNrIHN0aWxsIHNlZW1z IGxpa2Ugb3ZlcmtpbGwgdG8gbWUgYW5kIEkgc3RpbGwgdGhpbmsgd2UgCj4gc2hvdWxkIHVzZSBC SVQoKS9HRU5NQVNLKCkgYW5kIGEgX01BU0sgcHJlZml4LCBidXQgbm90IGdvaW5nIHRvIGJsb2Nr IAo+IG9uIGl0Lgo+Cj4+ICsKPj4gKyNkZWZpbmUgSE9TVDJHVUNfUkVHSVNURVJfQ1RCX1JFU1BP TlNFX01TR19MRU4gCj4+IEdVQ19IWEdfUkVTUE9OU0VfTVNHX01JTl9MRU4KPj4gKyNkZWZpbmUg SE9TVDJHVUNfUkVHSVNURVJfQ1RCX1JFU1BPTlNFX01TR18wX01CWiAKPj4gR1VDX0hYR19SRVNQ T05TRV9NU0dfMF9EQVRBMAo+PiArCj4+ICsvKioKPj4gKyAqIERPQzogSE9TVDJHVUNfREVSRUdJ U1RFUl9DVEIKPj4gKyAqCj4+ICsgKiBUaGlzIG1lc3NhZ2UgaXMgdXNlZCBhcyBwYXJ0IG9mIHRo ZSBgQ1RCIGJhc2VkIGNvbW11bmljYXRpb25gXyAKPj4gdGVhcmRvd24uCj4+ICsgKgo+PiArICog VGhpcyBtZXNzYWdlIG11c3QgYmUgc2VudCBhcyBgTU1JTyBIWEcgTWVzc2FnZWBfLgo+PiArICoK Pj4gKyAqIAo+PiArLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCj4+ICsgKsKgIHzCoMKgIHwgQml0c8KgIHwg Cj4+IERlc2NyaXB0aW9uwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg fAo+PiArICogCj4+ICs9PT0rPT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSsKPj4gKyAqwqAgfCAwIHzCoMKgwqAgMzEg fCBPUklHSU4gPSAKPj4gR1VDX0hYR19PUklHSU5fSE9TVF/CoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8Cj4+ICsgKsKgIHwgCj4+ ICstLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKwo+PiArICrCoCB8wqDCoCB8IDMwOjI4IHwgVFlQRSA9IAo+PiBHVUNf SFhHX1RZUEVfUkVRVUVTVF/CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwKPj4gKyAqwqAgfCAKPj4gKy0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r Cj4+ICsgKsKgIHzCoMKgIHwgMjc6MTYgfCBEQVRBMCA9IAo+PiBNQlrCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8Cj4+ICsgKsKgIHwgCj4+ICstLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Kwo+PiArICrCoCB8wqDCoCB8wqAgMTU6MCB8IEFDVElPTiA9IF9gR1VDX0FDVElPTl9IT1NUMkdV Q19ERVJFR0lTVEVSX0NUQmAgPSAKPj4gMHg1MjAxwqDCoMKgwqDCoCB8Cj4KPiBTcGVjcyBzYXlz IDQ1MDYKPgpJIHdvdWxkIHNheSB0aGF0IHRoZSBlbnVtIHZhbHVlIHNob3VsZCBub3QgYmUgaW5j bHVkZWQgaW4gdGhlIHN0cnVjdHVyZSAKZGVmaW5pdGlvbi4gSSB3b3VsZCBhbHNvIGFyZ3VlIHRo YXQgdGhlcmUgaXMgbm8gcG9pbnQgaW4gcmVwZWF0aW5nIHRoZSAKY29tbW9uIGhlYWRlciBzdHJ1 Y3R1cmUgZm9yIGV2ZXJ5IHNpbmdsZSBIMkcgYWN0aW9uIGRlZmluaXRpb24uIFRoYXQgaXMgCmp1 c3Qgb3Zlcmx5IHZlcmJvc2UgYW5kIG1ha2VzIGl0IGhhcmRlciB0byByZWFkIHRoZSBzcGVjLiBJ dCBpbXBsaWVzIAp0aGF0IGV2ZXJ5IGFjdGlvbiBoYXMgYSBkaWZmZXJlbnQgaGVhZGVyIHN0cnVj dHVyZSBhbmQgbXVzdCBiZSBjb2RlZCAKaW5kaXZpZHVhbGx5LgoKUGVyc29uYWxseSwgSSBkb24n dCBiZWxpZXZlIHdlIHNob3VsZCBiZSByZXBsaWNhdGluZyB0aGUgZW50aXJlIEd1QyBBUEkgCnNw ZWMgaW4gdGhlIGRyaXZlciBoZWFkZXIgZmlsZXMgYW55d2F5LiBUaGlzIGlzIG5vdCBzb21ldGhp bmcgdGhhdCBpcyAKZGVmaW5lZCBieSB0aGUgaTkxNSBkcml2ZXIgc28gdGhlIGk5MTUgZHJpdmVy IHNob3VsZCBub3QgYmUgZGVmaW5pbmcgaXQhIApJbnN0ZWFkLCBqdXN0IGluY2x1ZGUgYSBsaW5r IG9yIHBvaW50ZXIgdG8gd2hlcmUgdGhlIGFjdHVhbCBzcGVjIGNhbiBiZSAKZm91bmQuIFdlIGRv bid0IGNvcHkgdGhlIGVudGlyZSBic3BlYyBwYWdlIGZvciBldmVyeSByZWdpc3RlciB0aGF0IHRo ZSAKZHJpdmVyIHRvdWNoZXMsIHNvIHdoeSBzaG91bGQgdGhpcyBiZSBhbnkgZGlmZmVyZW50PwoK Sm9obi4KCgo+PiArICogCj4+ICstLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKPj4gKyAqwqAgfCAxIHwgMzE6 MTIgfCBSRVNFUlZFRCA9IAo+PiBNQlrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCB8Cj4+ICsgKsKgIHwgCj4+ICstLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwo+PiArICrCoCB8wqDCoCB8wqAgMTE6 OCB8ICoqVFlQRSoqIC0gdHlwZSBvZiB0aGUgYENUIAo+PiBCdWZmZXJgX8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwKPj4gKyAqwqAgfMKgwqAgfCAK Pj4gfMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHwKPj4gKyAqwqAgfMKgwqAgfMKgwqDCoMKgwqDCoCB8IHNlZSAKPj4gYEdV Q19BQ1RJT05fSE9TVDJHVUNfUkVHSVNURVJfQ1RCYF/CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgfAo+PiArICrCoCB8IAo+PiArLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKPj4gKyAq wqAgfMKgwqAgfMKgwqAgNzowIHwgUkVTRVJWRUQgPSAKPj4gTUJawqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgfAo+PiArICogCj4+ICstLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKPj4gKyoK Pj4gKyAqIAo+PiArLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCj4+ICsgKsKgIHzCoMKgIHwgQml0c8KgIHwg Cj4+IERlc2NyaXB0aW9uwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg fAo+PiArICogCj4+ICs9PT0rPT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSsKPj4gKyAqwqAgfCAwIHzCoMKgwqAgMzEg fCBPUklHSU4gPSAKPj4gR1VDX0hYR19PUklHSU5fR1VDX8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfAo+PiArICrCoCB8IAo+ PiArLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSsKPj4gKyAqwqAgfMKgwqAgfCAzMDoyOCB8IFRZUEUgPSAKPj4gR1VD X0hYR19UWVBFX1JFU1BPTlNFX1NVQ0NFU1NfwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCB8Cj4+ICsgKsKgIHwgCj4+ICstLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwo+PiArICrC oCB8wqDCoCB8wqAgMjc6MCB8IERBVEEwID0gCj4+IE1CWsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHwKPj4gKyAqIAo+PiArLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCj4+ICsg Ki8KPj4gKyNkZWZpbmUgR1VDX0FDVElPTl9IT1NUMkdVQ19ERVJFR0lTVEVSX0NUQsKgwqDCoMKg wqDCoMKgIDB4NDUwNiAvLyBGSVhNRSAKPj4gMHg1MjAxCj4KPiBTYW1lIGNvbW1lbnQgZm9yIHRo ZSBGSVhNRSBhcyBhYm92ZQo+Cj4+ICsKPj4gKyNkZWZpbmUgSE9TVDJHVUNfREVSRUdJU1RFUl9D VEJfUkVRVUVTVF9NU0dfTEVOIAo+PiAoR1VDX0hYR19SRVFVRVNUX01TR19NSU5fTEVOICsgMXUp Cj4+ICsjZGVmaW5lIEhPU1QyR1VDX0RFUkVHSVNURVJfQ1RCX1JFUVVFU1RfTVNHXzBfTUJaIAo+ PiBHVUNfSFhHX1JFUVVFU1RfTVNHXzBfREFUQTAKPj4gKyNkZWZpbmUgSE9TVDJHVUNfREVSRUdJ U1RFUl9DVEJfUkVRVUVTVF9NU0dfMV9NQlrCoMKgwqAgKDB4ZmZmZmYgPDwgMTIpCj4+ICsjZGVm aW5lIEhPU1QyR1VDX0RFUkVHSVNURVJfQ1RCX1JFUVVFU1RfTVNHXzFfVFlQRcKgwqDCoCAoMHhm IDw8IDgpCj4+ICsjZGVmaW5lIEhPU1QyR1VDX0RFUkVHSVNURVJfQ1RCX1JFUVVFU1RfTVNHXzFf TUJaMsKgwqDCoCAoMHhmZiA8PCAwKQo+PiArCj4+ICsjZGVmaW5lIEhPU1QyR1VDX0RFUkVHSVNU RVJfQ1RCX1JFU1BPTlNFX01TR19MRU4gCj4+IEdVQ19IWEdfUkVTUE9OU0VfTVNHX01JTl9MRU4K Pj4gKyNkZWZpbmUgSE9TVDJHVUNfREVSRUdJU1RFUl9DVEJfUkVTUE9OU0VfTVNHXzBfTUJaIAo+ PiBHVUNfSFhHX1JFU1BPTlNFX01TR18wX0RBVEEwCj4+ICsKPj4gKy8qIGxlZ2FjeSBkZWZpbml0 aW9ucyAqLwo+PiArCj4+IMKgIGVudW0gaW50ZWxfZ3VjX2FjdGlvbiB7Cj4+IMKgwqDCoMKgwqAg SU5URUxfR1VDX0FDVElPTl9ERUZBVUxUID0gMHgwLAo+PiDCoMKgwqDCoMKgIElOVEVMX0dVQ19B Q1RJT05fUkVRVUVTVF9QUkVFTVBUSU9OID0gMHgyLAo+PiBkaWZmIC0tZ2l0IAo+PiBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L3VjL2FiaS9ndWNfY29tbXVuaWNhdGlvbl9jdGJfYWJpLmggCj4+ IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvYWJpL2d1Y19jb21tdW5pY2F0aW9uX2N0Yl9h YmkuaAo+PiBpbmRleCBjMmEwNjlhNzhlMDEuLjEyN2IyNTZhNjYyYyAxMDA2NDQKPj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvYWJpL2d1Y19jb21tdW5pY2F0aW9uX2N0Yl9hYmku aAo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9hYmkvZ3VjX2NvbW11bmljYXRp b25fY3RiX2FiaS5oCj4+IEBAIC0xMTIsMTAgKzExMiw2IEBAIHN0YXRpY19hc3NlcnQoc2l6ZW9m KHN0cnVjdCBndWNfY3RfYnVmZmVyX2Rlc2MpIAo+PiA9PSA2NCk7Cj4+IMKgwqAgKiAtICoqZmxh Z3MqKiwgaG9sZHMgdmFyaW91cyBiaXRzIHRvIGNvbnRyb2wgbWVzc2FnZSBoYW5kbGluZwo+PiDC oMKgICovCj4+IMKgIC0vKiBUeXBlIG9mIGNvbW1hbmQgdHJhbnNwb3J0IGJ1ZmZlciAqLwo+PiAt I2RlZmluZSBJTlRFTF9HVUNfQ1RfQlVGRkVSX1RZUEVfU0VORMKgwqDCoCAweDB1Cj4+IC0jZGVm aW5lIElOVEVMX0dVQ19DVF9CVUZGRVJfVFlQRV9SRUNWwqDCoMKgIDB4MXUKPj4gLQo+PiDCoCAv Kgo+PiDCoMKgICogRGVmaW5pdGlvbiBvZiB0aGUgY29tbWFuZCB0cmFuc3BvcnQgbWVzc2FnZSBo ZWFkZXIgKERXMCkKPj4gwqDCoCAqCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC91Yy9pbnRlbF9ndWNfY3QuYyAKPj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9p bnRlbF9ndWNfY3QuYwo+PiBpbmRleCAzMjQxYTQ3NzE5NmYuLjZhMjliZTc3OWNjOSAxMDA2NDQK Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX2N0LmMKPj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX2N0LmMKPj4gQEAgLTEwMyw5 ICsxMDMsOSBAQCB2b2lkIGludGVsX2d1Y19jdF9pbml0X2Vhcmx5KHN0cnVjdCBpbnRlbF9ndWNf Y3QgCj4+ICpjdCkKPj4gwqAgc3RhdGljIGlubGluZSBjb25zdCBjaGFyICpndWNfY3RfYnVmZmVy X3R5cGVfdG9fc3RyKHUzMiB0eXBlKQo+PiDCoCB7Cj4+IMKgwqDCoMKgwqAgc3dpdGNoICh0eXBl KSB7Cj4+IC3CoMKgwqAgY2FzZSBJTlRFTF9HVUNfQ1RfQlVGRkVSX1RZUEVfU0VORDoKPj4gK8Kg wqDCoCBjYXNlIEdVQ19DVEJfVFlQRV9IT1NUMkdVQzoKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIHJl dHVybiAiU0VORCI7Cj4+IC3CoMKgwqAgY2FzZSBJTlRFTF9HVUNfQ1RfQlVGRkVSX1RZUEVfUkVD VjoKPj4gK8KgwqDCoCBjYXNlIEdVQ19DVEJfVFlQRV9HVUMySE9TVDoKPj4gwqDCoMKgwqDCoMKg wqDCoMKgIHJldHVybiAiUkVDViI7Cj4+IMKgwqDCoMKgwqAgZGVmYXVsdDoKPj4gwqDCoMKgwqDC oMKgwqDCoMKgIHJldHVybiAiPGludmFsaWQ+IjsKPj4gQEAgLTEzNiwyNSArMTM2LDMzIEBAIHN0 YXRpYyB2b2lkIGd1Y19jdF9idWZmZXJfaW5pdChzdHJ1Y3QgCj4+IGludGVsX2d1Y19jdF9idWZm ZXIgKmN0YiwKPj4gwqDCoMKgwqDCoCBndWNfY3RfYnVmZmVyX3Jlc2V0KGN0Yik7Cj4+IMKgIH0K Pj4gwqAgLXN0YXRpYyBpbnQgZ3VjX2FjdGlvbl9yZWdpc3Rlcl9jdF9idWZmZXIoc3RydWN0IGlu dGVsX2d1YyAqZ3VjLAo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCB1MzIgZGVzY19hZGRyLAo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCB1MzIgdHlwZSkKPj4gK3N0YXRpYyBpbnQgZ3VjX2FjdGlvbl9yZWdpc3Rlcl9jdF9idWZm ZXIoc3RydWN0IGludGVsX2d1YyAqZ3VjLCB1MzIgCj4+IHR5cGUsCj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiBkZXNjX2FkZHIsIHUzMiBidWZmX2FkZHIs IHUzMiBzaXplKQo+PiDCoCB7Cj4+IC3CoMKgwqAgdTMyIGFjdGlvbltdID0gewo+PiAtwqDCoMKg wqDCoMKgwqAgSU5URUxfR1VDX0FDVElPTl9SRUdJU1RFUl9DT01NQU5EX1RSQU5TUE9SVF9CVUZG RVIsCj4+IC3CoMKgwqDCoMKgwqDCoCBkZXNjX2FkZHIsCj4+IC3CoMKgwqDCoMKgwqDCoCBzaXpl b2Yoc3RydWN0IGd1Y19jdF9idWZmZXJfZGVzYyksCj4+IC3CoMKgwqDCoMKgwqDCoCB0eXBlCj4+ ICvCoMKgwqAgdTMyIHJlcXVlc3RbSE9TVDJHVUNfUkVHSVNURVJfQ1RCX1JFUVVFU1RfTVNHX0xF Tl0gPSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCBGSUVMRF9QUkVQKEdVQ19IWEdfTVNHXzBfT1JJR0lO LCBHVUNfSFhHX09SSUdJTl9IT1NUKSB8Cj4+ICvCoMKgwqDCoMKgwqDCoCBGSUVMRF9QUkVQKEdV Q19IWEdfTVNHXzBfVFlQRSwgR1VDX0hYR19UWVBFX1JFUVVFU1QpIHwKPj4gK8KgwqDCoMKgwqDC oMKgIEZJRUxEX1BSRVAoR1VDX0hYR19SRVFVRVNUX01TR18wX0FDVElPTiwgCj4+IEdVQ19BQ1RJ T05fSE9TVDJHVUNfUkVHSVNURVJfQ1RCKSwKPgo+IElNTyB3ZSBjb3VsZCB1c2UgYSBtYWNybyBv ciAyIGZvciB0aGUgSFhHIGhlYWRlciwgdG8gYXZvaWQgYWxsIHRoZXNlIAo+IGxpbmVzLCB3aGlj aCBhcmUgaGFyZCB0byByZWFkLiBzb21ldGhpbmcgbGlrZToKPgo+IEdVQ19IWEdfSEVBREVSKG9y aWdpbiwgdHlwZSwgZGF0YSwgYWN0aW9uKSBcCj4gwqDCoMKgIChGSUVMRF9QUkVQKEdVQ19IWEdf TVNHXzBfT1JJR0lOLCBvcmlnaW4pIHwgXAo+IMKgwqDCoMKgIEZJRUxEX1BSRVAoR1VDX0hYR19N U0dfMF9UWVBFLCB0eXBlKSB8IFwKPiBGSUVMRF9QUkVQKEdVQ19IWEdfTVNHXzBfREFUQTAsIGRh dGEpIHwgXAo+IMKgwqDCoMKgIEZJRUxEX1BSRVAoR1VDX0hYR19SRVFVRVNUX01TR18wX0FDVElP TiwgYWN0aW9uKSkKPgo+IEgyR19IRUFERVIodHlwZSwgZGF0YSwgYWN0aW9uKSBcCj4gwqDCoMKg IEdVQ19IWEdfSEVBREVSKEdVQ19IWEdfT1JJR0lOX0hPU1QsIHR5cGUsIGRhdGEsIGFjdGlvbikK Pgo+IGFuZCB0aGVuIGNhbGwKPgo+IEgyR19IRUFERVIoR1VDX0hYR19UWVBFX1JFUVVFU1QsIDAs IEdVQ19BQ1RJT05fSE9TVDJHVUNfUkVHSVNURVJfQ1RCKQo+Cj4KPiBOb3QgYSBibG9ja2VyLgo+ Cj4gRGFuaWVsZQo+Cj4+ICsgRklFTERfUFJFUChIT1NUMkdVQ19SRUdJU1RFUl9DVEJfUkVRVUVT VF9NU0dfMV9TSVpFLCBzaXplIC8gU1pfNEsgLSAKPj4gMSkgfAo+PiArwqDCoMKgwqDCoMKgwqAg RklFTERfUFJFUChIT1NUMkdVQ19SRUdJU1RFUl9DVEJfUkVRVUVTVF9NU0dfMV9UWVBFLCB0eXBl KSwKPj4gKyBGSUVMRF9QUkVQKEhPU1QyR1VDX1JFR0lTVEVSX0NUQl9SRVFVRVNUX01TR18yX0RF U0NfQUREUiwgZGVzY19hZGRyKSwKPj4gKyBGSUVMRF9QUkVQKEhPU1QyR1VDX1JFR0lTVEVSX0NU Ql9SRVFVRVNUX01TR18zX0JVRkZfQUREUiwgYnVmZl9hZGRyKSwKPj4gwqDCoMKgwqDCoCB9Owo+ PiDCoCAtwqDCoMKgIC8qIENhbid0IHVzZSBnZW5lcmljIHNlbmQoKSwgQ1QgcmVnaXN0cmF0aW9u IG11c3QgZ28gb3ZlciBNTUlPICovCj4+IC3CoMKgwqAgcmV0dXJuIGludGVsX2d1Y19zZW5kX21t aW8oZ3VjLCBhY3Rpb24sIEFSUkFZX1NJWkUoYWN0aW9uKSwgCj4+IE5VTEwsIDApOwo+PiArwqDC oMKgIEdFTV9CVUdfT04odHlwZSAhPSBHVUNfQ1RCX1RZUEVfSE9TVDJHVUMgJiYgdHlwZSAhPSAK Pj4gR1VDX0NUQl9UWVBFX0dVQzJIT1NUKTsKPj4gK8KgwqDCoCBHRU1fQlVHX09OKHNpemUgJSBT Wl80Syk7Cj4+ICsKPj4gK8KgwqDCoCAvKiBDVCByZWdpc3RyYXRpb24gbXVzdCBnbyBvdmVyIE1N SU8gKi8KPj4gK8KgwqDCoCByZXR1cm4gaW50ZWxfZ3VjX3NlbmRfbW1pbyhndWMsIHJlcXVlc3Qs IEFSUkFZX1NJWkUocmVxdWVzdCksIAo+PiBOVUxMLCAwKTsKPj4gwqAgfQo+PiDCoCAtc3RhdGlj IGludCBjdF9yZWdpc3Rlcl9idWZmZXIoc3RydWN0IGludGVsX2d1Y19jdCAqY3QsIHUzMiAKPj4g ZGVzY19hZGRyLCB1MzIgdHlwZSkKPj4gK3N0YXRpYyBpbnQgY3RfcmVnaXN0ZXJfYnVmZmVyKHN0 cnVjdCBpbnRlbF9ndWNfY3QgKmN0LCB1MzIgdHlwZSwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgdTMyIGRlc2NfYWRkciwgdTMyIGJ1ZmZfYWRkciwgdTMyIHNpemUpCj4+ IMKgIHsKPj4gLcKgwqDCoCBpbnQgZXJyID0gZ3VjX2FjdGlvbl9yZWdpc3Rlcl9jdF9idWZmZXIo Y3RfdG9fZ3VjKGN0KSwgCj4+IGRlc2NfYWRkciwgdHlwZSk7Cj4+ICvCoMKgwqAgaW50IGVycjsK Pj4gwqAgK8KgwqDCoCBlcnIgPSBndWNfYWN0aW9uX3JlZ2lzdGVyX2N0X2J1ZmZlcihjdF90b19n dWMoY3QpLCB0eXBlLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBkZXNjX2FkZHIsIGJ1ZmZfYWRkciwgc2l6ZSk7Cj4+IMKgwqDCoMKgwqAgaWYgKHVu bGlrZWx5KGVycikpCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBDVF9FUlJPUihjdCwgIkZhaWxlZCB0 byByZWdpc3RlciAlcyBidWZmZXIgKGVycj0lZClcbiIsCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgZ3VjX2N0X2J1ZmZlcl90eXBlX3RvX3N0cih0eXBlKSwgZXJyKTsKPj4gQEAgLTE2 MywxNCArMTcxLDE3IEBAIHN0YXRpYyBpbnQgY3RfcmVnaXN0ZXJfYnVmZmVyKHN0cnVjdCAKPj4g aW50ZWxfZ3VjX2N0ICpjdCwgdTMyIGRlc2NfYWRkciwgdTMyIHR5cGUpCj4+IMKgIMKgIHN0YXRp YyBpbnQgZ3VjX2FjdGlvbl9kZXJlZ2lzdGVyX2N0X2J1ZmZlcihzdHJ1Y3QgaW50ZWxfZ3VjICpn dWMsIAo+PiB1MzIgdHlwZSkKPj4gwqAgewo+PiAtwqDCoMKgIHUzMiBhY3Rpb25bXSA9IHsKPj4g LcKgwqDCoMKgwqDCoMKgIElOVEVMX0dVQ19BQ1RJT05fREVSRUdJU1RFUl9DT01NQU5EX1RSQU5T UE9SVF9CVUZGRVIsCj4+IC3CoMKgwqDCoMKgwqDCoCBDVEJfT1dORVJfSE9TVCwKPj4gLcKgwqDC oMKgwqDCoMKgIHR5cGUKPj4gK8KgwqDCoCB1MzIgcmVxdWVzdFtIT1NUMkdVQ19ERVJFR0lTVEVS X0NUQl9SRVFVRVNUX01TR19MRU5dID0gewo+PiArwqDCoMKgwqDCoMKgwqAgRklFTERfUFJFUChH VUNfSFhHX01TR18wX09SSUdJTiwgR1VDX0hYR19PUklHSU5fSE9TVCkgfAo+PiArwqDCoMKgwqDC oMKgwqAgRklFTERfUFJFUChHVUNfSFhHX01TR18wX1RZUEUsIEdVQ19IWEdfVFlQRV9SRVFVRVNU KSB8Cj4+ICvCoMKgwqDCoMKgwqDCoCBGSUVMRF9QUkVQKEdVQ19IWEdfUkVRVUVTVF9NU0dfMF9B Q1RJT04sIAo+PiBHVUNfQUNUSU9OX0hPU1QyR1VDX0RFUkVHSVNURVJfQ1RCKSwKPj4gK8KgwqDC oMKgwqDCoMKgIEZJRUxEX1BSRVAoSE9TVDJHVUNfREVSRUdJU1RFUl9DVEJfUkVRVUVTVF9NU0df MV9UWVBFLCB0eXBlKSwKPj4gwqDCoMKgwqDCoCB9Owo+PiDCoCAtwqDCoMKgIC8qIENhbid0IHVz ZSBnZW5lcmljIHNlbmQoKSwgQ1QgZGVyZWdpc3RyYXRpb24gbXVzdCBnbyBvdmVyIAo+PiBNTUlP ICovCj4+IC3CoMKgwqAgcmV0dXJuIGludGVsX2d1Y19zZW5kX21taW8oZ3VjLCBhY3Rpb24sIEFS UkFZX1NJWkUoYWN0aW9uKSwgCj4+IE5VTEwsIDApOwo+PiArwqDCoMKgIEdFTV9CVUdfT04odHlw ZSAhPSBHVUNfQ1RCX1RZUEVfSE9TVDJHVUMgJiYgdHlwZSAhPSAKPj4gR1VDX0NUQl9UWVBFX0dV QzJIT1NUKTsKPj4gKwo+PiArwqDCoMKgIC8qIENUIGRlcmVnaXN0cmF0aW9uIG11c3QgZ28gb3Zl ciBNTUlPICovCj4+ICvCoMKgwqAgcmV0dXJuIGludGVsX2d1Y19zZW5kX21taW8oZ3VjLCByZXF1 ZXN0LCBBUlJBWV9TSVpFKHJlcXVlc3QpLCAKPj4gTlVMTCwgMCk7Cj4+IMKgIH0KPj4gwqAgwqAg c3RhdGljIGludCBjdF9kZXJlZ2lzdGVyX2J1ZmZlcihzdHJ1Y3QgaW50ZWxfZ3VjX2N0ICpjdCwg dTMyIHR5cGUpCj4+IEBAIC0yNTgsNyArMjY5LDcgQEAgdm9pZCBpbnRlbF9ndWNfY3RfZmluaShz dHJ1Y3QgaW50ZWxfZ3VjX2N0ICpjdCkKPj4gwqAgaW50IGludGVsX2d1Y19jdF9lbmFibGUoc3Ry dWN0IGludGVsX2d1Y19jdCAqY3QpCj4+IMKgIHsKPj4gwqDCoMKgwqDCoCBzdHJ1Y3QgaW50ZWxf Z3VjICpndWMgPSBjdF90b19ndWMoY3QpOwo+PiAtwqDCoMKgIHUzMiBiYXNlLCBjbWRzOwo+PiAr wqDCoMKgIHUzMiBiYXNlLCBkZXNjLCBjbWRzOwo+PiDCoMKgwqDCoMKgIHZvaWQgKmJsb2I7Cj4+ IMKgwqDCoMKgwqAgaW50IGVycjsKPj4gwqAgQEAgLTI3NCwyMyArMjg1LDI2IEBAIGludCBpbnRl bF9ndWNfY3RfZW5hYmxlKHN0cnVjdCBpbnRlbF9ndWNfY3QgKmN0KQo+PiDCoMKgwqDCoMKgIEdF TV9CVUdfT04oYmxvYiAhPSBjdC0+Y3Ricy5zZW5kLmRlc2MpOwo+PiDCoCDCoMKgwqDCoMKgIC8q IChyZSlpbml0aWFsaXplIGRlc2NyaXB0b3JzICovCj4+IC3CoMKgwqAgY21kcyA9IGJhc2UgKyBw dHJkaWZmKGN0LT5jdGJzLnNlbmQuY21kcywgYmxvYik7Cj4+IMKgwqDCoMKgwqAgZ3VjX2N0X2J1 ZmZlcl9yZXNldCgmY3QtPmN0YnMuc2VuZCk7Cj4+IC0KPj4gLcKgwqDCoCBjbWRzID0gYmFzZSAr IHB0cmRpZmYoY3QtPmN0YnMucmVjdi5jbWRzLCBibG9iKTsKPj4gwqDCoMKgwqDCoCBndWNfY3Rf YnVmZmVyX3Jlc2V0KCZjdC0+Y3Ricy5yZWN2KTsKPj4gwqAgwqDCoMKgwqDCoCAvKgo+PiDCoMKg wqDCoMKgwqAgKiBSZWdpc3RlciBib3RoIENUIGJ1ZmZlcnMgc3RhcnRpbmcgd2l0aCBSRUNWIGJ1 ZmZlci4KPj4gwqDCoMKgwqDCoMKgICogRGVzY3JpcHRvcnMgYXJlIGluIGZpcnN0IGhhbGYgb2Yg dGhlIGJsb2IuCj4+IMKgwqDCoMKgwqDCoCAqLwo+PiAtwqDCoMKgIGVyciA9IGN0X3JlZ2lzdGVy X2J1ZmZlcihjdCwgYmFzZSArIHB0cmRpZmYoY3QtPmN0YnMucmVjdi5kZXNjLCAKPj4gYmxvYiks Cj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBJTlRFTF9HVUNfQ1RfQlVGRkVS X1RZUEVfUkVDVik7Cj4+ICvCoMKgwqAgZGVzYyA9IGJhc2UgKyBwdHJkaWZmKGN0LT5jdGJzLnJl Y3YuZGVzYywgYmxvYik7Cj4+ICvCoMKgwqAgY21kcyA9IGJhc2UgKyBwdHJkaWZmKGN0LT5jdGJz LnJlY3YuY21kcywgYmxvYik7Cj4+ICvCoMKgwqAgZXJyID0gY3RfcmVnaXN0ZXJfYnVmZmVyKGN0 LCBHVUNfQ1RCX1RZUEVfR1VDMkhPU1QsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBkZXNjLCBjbWRzLCBjdC0+Y3Ricy5yZWN2LnNpemUgKiA0KTsKPj4gKwo+PiDCoMKgwqDC oMKgIGlmICh1bmxpa2VseShlcnIpKQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgZ290byBlcnJfb3V0 Owo+PiDCoCAtwqDCoMKgIGVyciA9IGN0X3JlZ2lzdGVyX2J1ZmZlcihjdCwgYmFzZSArIAo+PiBw dHJkaWZmKGN0LT5jdGJzLnNlbmQuZGVzYywgYmxvYiksCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBJTlRFTF9HVUNfQ1RfQlVGRkVSX1RZUEVfU0VORCk7Cj4+ICvCoMKgwqAg ZGVzYyA9IGJhc2UgKyBwdHJkaWZmKGN0LT5jdGJzLnNlbmQuZGVzYywgYmxvYik7Cj4+ICvCoMKg wqAgY21kcyA9IGJhc2UgKyBwdHJkaWZmKGN0LT5jdGJzLnNlbmQuY21kcywgYmxvYik7Cj4+ICvC oMKgwqAgZXJyID0gY3RfcmVnaXN0ZXJfYnVmZmVyKGN0LCBHVUNfQ1RCX1RZUEVfSE9TVDJHVUMs Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkZXNjLCBjbWRzLCBjdC0+Y3Ri cy5zZW5kLnNpemUgKiA0KTsKPj4gKwo+PiDCoMKgwqDCoMKgIGlmICh1bmxpa2VseShlcnIpKQo+ PiDCoMKgwqDCoMKgwqDCoMKgwqAgZ290byBlcnJfZGVyZWdpc3RlcjsKPj4gwqAgQEAgLTI5OSw3 ICszMTMsNyBAQCBpbnQgaW50ZWxfZ3VjX2N0X2VuYWJsZShzdHJ1Y3QgaW50ZWxfZ3VjX2N0ICpj dCkKPj4gwqDCoMKgwqDCoCByZXR1cm4gMDsKPj4gwqAgwqAgZXJyX2RlcmVnaXN0ZXI6Cj4+IC3C oMKgwqAgY3RfZGVyZWdpc3Rlcl9idWZmZXIoY3QsIElOVEVMX0dVQ19DVF9CVUZGRVJfVFlQRV9S RUNWKTsKPj4gK8KgwqDCoCBjdF9kZXJlZ2lzdGVyX2J1ZmZlcihjdCwgR1VDX0NUQl9UWVBFX0dV QzJIT1NUKTsKPj4gwqAgZXJyX291dDoKPj4gwqDCoMKgwqDCoCBDVF9QUk9CRV9FUlJPUihjdCwg IkZhaWxlZCB0byBlbmFibGUgQ1RCICglcGUpXG4iLCBFUlJfUFRSKGVycikpOwo+PiDCoMKgwqDC oMKgIHJldHVybiBlcnI7Cj4+IEBAIC0zMTgsOCArMzMyLDggQEAgdm9pZCBpbnRlbF9ndWNfY3Rf ZGlzYWJsZShzdHJ1Y3QgaW50ZWxfZ3VjX2N0ICpjdCkKPj4gwqDCoMKgwqDCoCBjdC0+ZW5hYmxl ZCA9IGZhbHNlOwo+PiDCoCDCoMKgwqDCoMKgIGlmIChpbnRlbF9ndWNfaXNfZndfcnVubmluZyhn dWMpKSB7Cj4+IC3CoMKgwqDCoMKgwqDCoCBjdF9kZXJlZ2lzdGVyX2J1ZmZlcihjdCwgSU5URUxf R1VDX0NUX0JVRkZFUl9UWVBFX1NFTkQpOwo+PiAtwqDCoMKgwqDCoMKgwqAgY3RfZGVyZWdpc3Rl cl9idWZmZXIoY3QsIElOVEVMX0dVQ19DVF9CVUZGRVJfVFlQRV9SRUNWKTsKPj4gK8KgwqDCoMKg wqDCoMKgIGN0X2RlcmVnaXN0ZXJfYnVmZmVyKGN0LCBHVUNfQ1RCX1RZUEVfSE9TVDJHVUMpOwo+ PiArwqDCoMKgwqDCoMKgwqAgY3RfZGVyZWdpc3Rlcl9idWZmZXIoY3QsIEdVQ19DVEJfVFlQRV9H VUMySE9TVCk7Cj4+IMKgwqDCoMKgwqAgfQo+PiDCoCB9Cj4KCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwt Z2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=