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=-13.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED 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 4AFB4C07E95 for ; Tue, 20 Jul 2021 16:55:51 +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 0B5AF60FEA for ; Tue, 20 Jul 2021 16:55:51 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 0B5AF60FEA 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 AC1446E41B; Tue, 20 Jul 2021 16:55:50 +0000 (UTC) Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id 32FE16E41B for ; Tue, 20 Jul 2021 16:55:49 +0000 (UTC) X-IronPort-AV: E=McAfee;i="6200,9189,10051"; a="272391346" X-IronPort-AV: E=Sophos;i="5.84,255,1620716400"; d="scan'208";a="272391346" Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jul 2021 09:55:48 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.84,255,1620716400"; d="scan'208";a="469823187" Received: from orsmsx602.amr.corp.intel.com ([10.22.229.15]) by fmsmga008.fm.intel.com with ESMTP; 20 Jul 2021 09:55:47 -0700 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX602.amr.corp.intel.com (10.22.229.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.10; Tue, 20 Jul 2021 09:55:47 -0700 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX610.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.10; Tue, 20 Jul 2021 09:55:46 -0700 Received: from orsmsx610.amr.corp.intel.com ([10.22.229.23]) by ORSMSX610.amr.corp.intel.com ([10.22.229.23]) with mapi id 15.01.2242.010; Tue, 20 Jul 2021 09:55:46 -0700 From: "Souza, Jose" To: "daniel@ffwll.ch" , "Mun, Gwan-gyeong" , "ville.syrjala@linux.intel.com" Thread-Topic: [Intel-gfx] [PATCH CI 2/4] drm/i915/display/psr: Use plane damage clips to calculate damaged area Thread-Index: AQHXfXk27v2Asbsa7UKMdQiaw1z5AqtMbveAgAAEDACAABjGAA== Date: Tue, 20 Jul 2021 16:55:46 +0000 Message-ID: References: <20210104205654.238928-1-jose.souza@intel.com> <20210104205654.238928-2-jose.souza@intel.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.22.254.132] Content-ID: <0AE0FF894BA87A4C8F62DA7EFC24F678@intel.com> MIME-Version: 1.0 Subject: Re: [Intel-gfx] [PATCH CI 2/4] drm/i915/display/psr: Use plane damage clips to calculate damaged area 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: , Cc: "intel-gfx@lists.freedesktop.org" Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" T24gVHVlLCAyMDIxLTA3LTIwIGF0IDE3OjMxICswMjAwLCBEYW5pZWwgVmV0dGVyIHdyb3RlOg0K PiBPbiBUdWUsIEp1bCAyMCwgMjAyMSBhdCA1OjE2IFBNIERhbmllbCBWZXR0ZXIgPGRhbmllbEBm ZndsbC5jaD4gd3JvdGU6DQo+ID4gT24gVHVlLCBKdWwgMjAsIDIwMjEgYXQgNTowOSBQTSBEYW5p ZWwgVmV0dGVyIDxkYW5pZWxAZmZ3bGwuY2g+IHdyb3RlOg0KPiA+ID4gT24gTW9uLCBKYW4gNCwg MjAyMSBhdCA5OjU2IFBNIEpvc8OpIFJvYmVydG8gZGUgU291emENCj4gPiA+IDxqb3NlLnNvdXph QGludGVsLmNvbT4gd3JvdGU6DQo+ID4gPiA+IA0KPiA+ID4gPiBOb3cgdXNpbmcgcGxhbmUgZGFt YWdlIGNsaXBzIHByb3BlcnR5IHRvIGNhbGN1YWx0ZSB0aGUgZGFtYWdlZCBhcmVhLg0KPiA+ID4g PiBTZWxlY3RpdmUgZmV0Y2ggb25seSBzdXBwb3J0cyBvbmUgcmVnaW9uIHRvIGJlIGZldGNoZWQg c28gc29mdHdhcmUNCj4gPiA+ID4gbmVlZHMgdG8gY2FsY3VsYXRlIGEgYm91bmRpbmcgYm94IGFy b3VuZCBhbGwgZGFtYWdlIGNsaXBzLg0KPiA+ID4gPiANCj4gPiA+ID4gTm93IHRoYXQgd2UgYXJl IG5vdCBjb21wbGV0ZSBmZXRjaGluZyBlYWNoIHBsYW5lLCB0aGVyZSBpcyBhbm90aGVyDQo+ID4g PiA+IGxvb3AgbmVlZGVkIGFzIGFsbCB0aGUgcGxhbmUgYXJlYXMgdGhhdCBpbnRlcnNlY3Qgd2l0 aCB0aGUgcGlwZQ0KPiA+ID4gPiBkYW1hZ2VkIGFyZWEgbmVlZHMgdG8gYmUgZmV0Y2hlZCBmcm9t IG1lbW9yeSBzbyB0aGUgY29tcGxldGUgYmxlbmRpbmcNCj4gPiA+ID4gb2YgYWxsIHBsYW5lcyBj YW4gaGFwcGVuLg0KPiA+ID4gPiANCj4gPiA+ID4gdjI6DQo+ID4gPiA+IC0gZG8gbm90IHNoaWZ0 aW5nIG5ld19wbGFuZV9zdGF0ZS0+dWFwaS5kc3Qgb25seSBzcmMgaXMgaW4gMTYuMTYgZm9ybWF0 DQo+ID4gPiA+IA0KPiA+ID4gPiB2NDoNCj4gPiA+ID4gLSBzZXR0aW5nIHBsYW5lIHNlbGVjdGl2 ZSBmZXRjaCBhcmVhIHVzaW5nIHRoZSB3aG9sZSBwaXBlIGRhbWFnZSBhcmVhDQo+ID4gPiA+IC0g bWFyayB0aGUgd2hvbGUgcGxhbmUgYXJlYSBkYW1hZ2VkIGlmIHBsYW5lIHZpc2liaWxpdHkgb3Ig YWxwaGENCj4gPiA+ID4gY2hhbmdlZA0KPiA+ID4gPiANCj4gPiA+ID4gdjU6DQo+ID4gPiA+IC0g dGFraW5nIGluIGNvbnNpZGVyYXRpb24gc3JjLnkxIGluIHRoZSBkYW1hZ2UgY29vcmRpbmF0ZXMN Cj4gPiA+ID4gLSBhZGRpbmcgdG8gdGhlIHBpcGUgZGFtYWdlZCBhcmVhIHBsYW5lcyB0aGF0IHdl cmUgdmlzaWJsZSBidXQgYXJlDQo+ID4gPiA+IGludmlzaWJsZSBpbiB0aGUgbmV3IHN0YXRlDQo+ ID4gPiA+IA0KPiA+ID4gPiB2NjoNCj4gPiA+ID4gLSBjb25zaWRlciBvbGQgc3RhdGUgcGxhbmUg Y29vcmRpbmF0ZXMgd2hlbiB2aXNpYmlsaXR5IGNoYW5nZXMgb3IgaXQNCj4gPiA+ID4gbW92ZWQg dG8gY2FsY3VsYXRlIGRhbWFnZWQgYXJlYQ0KPiA+ID4gPiAtIHJlbW92ZSBmcm9tIGRhbWFnZWQg YXJlYSB0aGUgcG9ydGlvbiBub3QgaW4gc3JjIGNsaXANCj4gPiA+ID4gDQo+ID4gPiA+IHY3Og0K PiA+ID4gPiAtIGludGVyc2VjIGV2ZXJ5IGRhbWFnZSBjbGlwIHdpdGggc3JjIHRvIG1pbmltaXpl IGRhbWFnZWQgYXJlYQ0KPiA+ID4gPiANCj4gPiA+ID4gdjg6DQo+ID4gPiA+IC0gYWRqdXN0IHBp cGVfZGFtYWdlZCBhcmVhIHRvIDQgbGluZXMgZ3JvdXBpbmcNCj4gPiA+ID4gLSBhZGp1c3QgY2Fs Y3VsYXRpb24gbm93IHRoYXQgaXMgdW5kZXJzdG9vZCB0aGF0IHVhcGkuc3JjIGlzIHRoZQ0KPiA+ ID4gPiBmcmFtZWJ1ZmZlciBjb29yZGluYXRlcyB0aGF0IHBsYW5lIHdpbGwgc3RhcnQgdG8gZmV0 Y2ggZnJvbQ0KPiA+ID4gPiANCj4gPiA+ID4gdjk6DQo+ID4gPiA+IC0gT25seSBhZGQgcGxhbmUg ZHN0IG9yIHNyYyB0byBkYW1hZ2VkX2FyZWEgaWYgdmlzaWJsZQ0KPiA+ID4gPiAtIEVhcmx5IHNr aXAgcGxhbmUgZGFtYWdlIGNhbGN1bGF0aW9uIGlmIGl0IHdhcyBub3QgdmlzaWJsZSBpbiBvbGQg YW5kDQo+ID4gPiA+IG5ldyBzdGF0ZQ0KPiA+ID4gPiANCj4gPiA+ID4gQ2M6IFZpbGxlIFN5cmrD pGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+DQo+ID4gPiA+IENjOiBHd2FuLWd5 ZW9uZyBNdW4gPGd3YW4tZ3llb25nLm11bkBpbnRlbC5jb20+DQo+ID4gPiA+IFJldmlld2VkLWJ5 OiBHd2FuLWd5ZW9uZyBNdW4gPGd3YW4tZ3llb25nLm11bkBpbnRlbC5jb20+DQo+ID4gPiA+IFNp Z25lZC1vZmYtYnk6IEpvc8OpIFJvYmVydG8gZGUgU291emEgPGpvc2Uuc291emFAaW50ZWwuY29t Pg0KPiA+ID4gDQo+ID4gPiBXaHkgaXMgdGhpcyBub3QgdXNpbmcgZHJtX2F0b21pY19oZWxwZXJf ZGFtYWdlX21lcmdlZD8gSSBqdXN0IHN0dW1ibGVkDQo+ID4gPiBvdmVyIHRoaXMsIGFuZCB0aGlz IGlzIG9uZSBvZiB0aGUgb25seSB0d28gZHJpdmVycyB0aGF0IGRpcmVjdGx5IGRpZ3MNCj4gPiA+ IGFyb3VuZCBpbiB0aGUgZGFtYWdlIGFyZWEsIGFuZCBzZWVtcyB0byByZWludmVudCBhIGJ1bmNo IG9mIHRoZSBzdHVmZg0KPiA+ID4gaGVyZS4NCg0KV2UgY2FuIHVzZSBkcm1fYXRvbWljX2hlbHBl cl9kYW1hZ2VfbWVyZ2VkKCkgYnV0IGl0IHdvdWxkIG9ubHkgc2F2ZSB1cyBvbmUgZm9yIGxvb3Au DQoNCj4gPiANCj4gPiBBbHNvLCBkaWQgd2UgbWVyZ2UgdGhlIGlndHMgZm9yIHRoaXMgc3R1ZmY/ IFRoZXkgdW5mb3J0dW5hdGVseSBuZXZlcg0KPiA+IGxhbmRlZCwgd2hlbiB2bXdnZnggdGVhbSBk aWQgYWxsIHRoaXMgd29yaywgYnV0IGZvciBpOTE1IHdlIHJlYWxseQ0KPiA+IHNob3VsZG4ndCBl dmVuIGxhbmQgbmV3IHN1cHBvcnQgd2l0aG91dCB0ZXN0cy4NCj4gDQo+IExvIGFuZCBiZWhvbGQs IHdlIG1lcmdlIHRoZSB1YXBpIGVuYWJsaW5nIHdheSBlYXJsaWVyIHRoYW4gdGhpcyBwYXRjaCBo ZXJlOg0KPiANCj4gY29tbWl0IDA5M2EzYTMwMDAwOTI2YjhiZGE5ZWVmNzczZTRlZDUwNzkwNTMz NTANCj4gQXV0aG9yOiBKb3PDqSBSb2JlcnRvIGRlIFNvdXphIDxqb3NlLnNvdXphQGludGVsLmNv bT4NCj4gRGF0ZTogICBUaHUgSnVuIDI1IDE4OjAxOjQ3IDIwMjAgLTA3MDANCj4gDQo+ICAgIGRy bS9pOTE1OiBBZGQgcGxhbmUgZGFtYWdlIGNsaXBzIHByb3BlcnR5DQo+IA0KPiBBbmQgdGhlIGln dHMgYXJlIG5vd2hlcmUgbmVhciB0byBiZSBzZWVuLCBhdCBsZWFzdCB0aGUgc3R1ZmYgZnJvbQ0K PiB2bXdnZnggZGlkbid0IGxhbmQuIFBsZWFzZSBmaWxlIGEgSklSQSBpbnRlcm5hbGx5IGFuZCBw aW5nIG1lIG9uIHRoYXQNCj4gc28gdGhpcyBnZXRzIHNvcnRlZCBvdXQgYXNhcC4NCg0KSGVyZSB0 aGUgSUdUOiBodHRwczovL2dpdGxhYi5mcmVlZGVza3RvcC5vcmcvZHJtL2lndC1ncHUtdG9vbHMv LS9ibG9iL21hc3Rlci90ZXN0cy9rbXNfcHNyMl9zZi5jDQoNCj4gDQo+IFRoYW5rcywgRGFuaWVs DQo+IA0KPiA+ID4gPiAtLS0NCj4gPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkv aW50ZWxfcHNyLmMgfCAxMTMgKysrKysrKysrKysrKysrKysrKystLS0NCj4gPiA+ID4gIDEgZmls ZSBjaGFuZ2VkLCA5OSBpbnNlcnRpb25zKCspLCAxNCBkZWxldGlvbnMoLSkNCj4gPiA+ID4gDQo+ ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Bz ci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9wc3IuYw0KPiA+ID4gPiBp bmRleCBkOWEzOTVjNDg2ZDMuLmY1Yjk1MTliMzc1NiAxMDA2NDQNCj4gPiA+ID4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9wc3IuYw0KPiA+ID4gPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Bzci5jDQo+ID4gPiA+IEBAIC0xMjQyLDkg KzEyNDIsMTEgQEAgc3RhdGljIHZvaWQgcHNyMl9tYW5fdHJrX2N0bF9jYWxjKHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLA0KPiA+ID4gPiAgICAgICAgIGlmIChjbGlwLT55MSA9 PSAtMSkNCj4gPiA+ID4gICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsNCj4gPiA+ID4gDQo+ID4g PiA+ICsgICAgICAgZHJtX1dBUk5fT04oY3J0Y19zdGF0ZS0+dWFwaS5jcnRjLT5kZXYsIGNsaXAt PnkxICUgNCB8fCBjbGlwLT55MiAlIDQpOw0KPiA+ID4gPiArDQo+ID4gPiA+ICAgICAgICAgdmFs IHw9IFBTUjJfTUFOX1RSS19DVExfU0ZfUEFSVElBTF9GUkFNRV9VUERBVEU7DQo+ID4gPiA+ICAg ICAgICAgdmFsIHw9IFBTUjJfTUFOX1RSS19DVExfU1VfUkVHSU9OX1NUQVJUX0FERFIoY2xpcC0+ eTEgLyA0ICsgMSk7DQo+ID4gPiA+IC0gICAgICAgdmFsIHw9IFBTUjJfTUFOX1RSS19DVExfU1Vf UkVHSU9OX0VORF9BRERSKERJVl9ST1VORF9VUChjbGlwLT55MiwgNCkgKyAxKTsNCj4gPiA+ID4g KyAgICAgICB2YWwgfD0gUFNSMl9NQU5fVFJLX0NUTF9TVV9SRUdJT05fRU5EX0FERFIoY2xpcC0+ eTIgLyA0ICsgMSk7DQo+ID4gPiA+ICBleGl0Og0KPiA+ID4gPiAgICAgICAgIGNydGNfc3RhdGUt PnBzcjJfbWFuX3RyYWNrX2N0bCA9IHZhbDsNCj4gPiA+ID4gIH0NCj4gPiA+ID4gQEAgLTEyNjks OCArMTI3MSw4IEBAIGludCBpbnRlbF9wc3IyX3NlbF9mZXRjaF91cGRhdGUoc3RydWN0IGludGVs X2F0b21pY19zdGF0ZSAqc3RhdGUsDQo+ID4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc3RydWN0IGludGVsX2NydGMgKmNydGMpDQo+ID4gPiA+ICB7DQo+ID4gPiA+ICAgICAg ICAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUgPSBpbnRlbF9hdG9taWNfZ2V0 X25ld19jcnRjX3N0YXRlKHN0YXRlLCBjcnRjKTsNCj4gPiA+ID4gKyAgICAgICBzdHJ1Y3QgZHJt X3JlY3QgcGlwZV9jbGlwID0geyAueDEgPSAwLCAueTEgPSAtMSwgLngyID0gSU5UX01BWCwgLnky ID0gLTEgfTsNCj4gPiA+ID4gICAgICAgICBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKm5ld19w bGFuZV9zdGF0ZSwgKm9sZF9wbGFuZV9zdGF0ZTsNCj4gPiA+ID4gLSAgICAgICBzdHJ1Y3QgZHJt X3JlY3QgcGlwZV9jbGlwID0geyAueTEgPSAtMSB9Ow0KPiA+ID4gPiAgICAgICAgIHN0cnVjdCBp bnRlbF9wbGFuZSAqcGxhbmU7DQo+ID4gPiA+ICAgICAgICAgYm9vbCBmdWxsX3VwZGF0ZSA9IGZh bHNlOw0KPiA+ID4gPiAgICAgICAgIGludCBpLCByZXQ7DQo+ID4gPiA+IEBAIC0xMjgyLDEzICsx Mjg0LDI1IEBAIGludCBpbnRlbF9wc3IyX3NlbF9mZXRjaF91cGRhdGUoc3RydWN0IGludGVsX2F0 b21pY19zdGF0ZSAqc3RhdGUsDQo+ID4gPiA+ICAgICAgICAgaWYgKHJldCkNCj4gPiA+ID4gICAg ICAgICAgICAgICAgIHJldHVybiByZXQ7DQo+ID4gPiA+IA0KPiA+ID4gPiArICAgICAgIC8qDQo+ ID4gPiA+ICsgICAgICAgICogQ2FsY3VsYXRlIG1pbmltYWwgc2VsZWN0aXZlIGZldGNoIGFyZWEg b2YgZWFjaCBwbGFuZSBhbmQgY2FsY3VsYXRlDQo+ID4gPiA+ICsgICAgICAgICogdGhlIHBpcGUg ZGFtYWdlZCBhcmVhLg0KPiA+ID4gPiArICAgICAgICAqIEluIHRoZSBuZXh0IGxvb3AgdGhlIHBs YW5lIHNlbGVjdGl2ZSBmZXRjaCBhcmVhIHdpbGwgYWN0dWFsbHkgYmUgc2V0DQo+ID4gPiA+ICsg ICAgICAgICogdXNpbmcgd2hvbGUgcGlwZSBkYW1hZ2VkIGFyZWEuDQo+ID4gPiA+ICsgICAgICAg ICovDQo+ID4gPiA+ICAgICAgICAgZm9yX2VhY2hfb2xkbmV3X2ludGVsX3BsYW5lX2luX3N0YXRl KHN0YXRlLCBwbGFuZSwgb2xkX3BsYW5lX3N0YXRlLA0KPiA+ID4gPiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdfcGxhbmVfc3RhdGUsIGkpIHsNCj4gPiA+ ID4gLSAgICAgICAgICAgICAgIHN0cnVjdCBkcm1fcmVjdCAqc2VsX2ZldGNoX2FyZWEsIHRlbXA7 DQo+ID4gPiA+ICsgICAgICAgICAgICAgICBzdHJ1Y3QgZHJtX3JlY3Qgc3JjLCBkYW1hZ2VkX2Fy ZWEgPSB7IC55MSA9IC0xIH07DQo+ID4gPiA+ICsgICAgICAgICAgICAgICBzdHJ1Y3QgZHJtX21v ZGVfcmVjdCAqZGFtYWdlZF9jbGlwczsNCj4gPiA+ID4gKyAgICAgICAgICAgICAgIHUzMiBudW1f Y2xpcHMsIGo7DQo+ID4gPiA+IA0KPiA+ID4gPiAgICAgICAgICAgICAgICAgaWYgKG5ld19wbGFu ZV9zdGF0ZS0+dWFwaS5jcnRjICE9IGNydGNfc3RhdGUtPnVhcGkuY3J0YykNCj4gPiA+ID4gICAg ICAgICAgICAgICAgICAgICAgICAgY29udGludWU7DQo+ID4gPiA+IA0KPiA+ID4gPiArICAgICAg ICAgICAgICAgaWYgKCFuZXdfcGxhbmVfc3RhdGUtPnVhcGkudmlzaWJsZSAmJg0KPiA+ID4gPiAr ICAgICAgICAgICAgICAgICAgICFvbGRfcGxhbmVfc3RhdGUtPnVhcGkudmlzaWJsZSkNCj4gPiA+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7DQo+ID4gPiA+ICsNCj4gPiA+ID4g ICAgICAgICAgICAgICAgIC8qDQo+ID4gPiA+ICAgICAgICAgICAgICAgICAgKiBUT0RPOiBOb3Qg Y2xlYXIgaG93IHRvIGhhbmRsZSBwbGFuZXMgd2l0aCBuZWdhdGl2ZSBwb3NpdGlvbiwNCj4gPiA+ ID4gICAgICAgICAgICAgICAgICAqIGFsc28gcGxhbmVzIGFyZSBub3QgdXBkYXRlZCBpZiB0aGV5 IGhhdmUgYSBuZWdhdGl2ZSBYDQo+ID4gPiA+IEBAIC0xMzAwLDIzICsxMzE0LDk0IEBAIGludCBp bnRlbF9wc3IyX3NlbF9mZXRjaF91cGRhdGUoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3Rh dGUsDQo+ID4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KPiA+ID4gPiAgICAg ICAgICAgICAgICAgfQ0KPiA+ID4gPiANCj4gPiA+ID4gLSAgICAgICAgICAgICAgIGlmICghbmV3 X3BsYW5lX3N0YXRlLT51YXBpLnZpc2libGUpDQo+ID4gPiA+IC0gICAgICAgICAgICAgICAgICAg ICAgIGNvbnRpbnVlOw0KPiA+ID4gPiArICAgICAgICAgICAgICAgbnVtX2NsaXBzID0gZHJtX3Bs YW5lX2dldF9kYW1hZ2VfY2xpcHNfY291bnQoJm5ld19wbGFuZV9zdGF0ZS0+dWFwaSk7DQo+ID4g PiA+IA0KPiA+ID4gPiAgICAgICAgICAgICAgICAgLyoNCj4gPiA+ID4gLSAgICAgICAgICAgICAg ICAqIEZvciBub3cgZG9pbmcgYSBzZWxlY3RpdmUgZmV0Y2ggaW4gdGhlIHdob2xlIHBsYW5lIGFy ZWEsDQo+ID4gPiA+IC0gICAgICAgICAgICAgICAgKiBvcHRpbWl6YXRpb25zIHdpbGwgY29tZSBp biB0aGUgZnV0dXJlLg0KPiA+ID4gPiArICAgICAgICAgICAgICAgICogSWYgdmlzaWJpbGl0eSBv ciBwbGFuZSBtb3ZlZCwgbWFyayB0aGUgd2hvbGUgcGxhbmUgYXJlYSBhcw0KPiA+ID4gPiArICAg ICAgICAgICAgICAgICogZGFtYWdlZCBhcyBpdCBuZWVkcyB0byBiZSBjb21wbGV0ZSByZWRyYXcg aW4gdGhlIG5ldyBhbmQgb2xkDQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgKiBwb3NpdGlvbi4N Cj4gPiA+ID4gICAgICAgICAgICAgICAgICAqLw0KPiA+ID4gPiAtICAgICAgICAgICAgICAgc2Vs X2ZldGNoX2FyZWEgPSAmbmV3X3BsYW5lX3N0YXRlLT5wc3IyX3NlbF9mZXRjaF9hcmVhOw0KPiA+ ID4gPiAtICAgICAgICAgICAgICAgc2VsX2ZldGNoX2FyZWEtPnkxID0gbmV3X3BsYW5lX3N0YXRl LT51YXBpLnNyYy55MSA+PiAxNjsNCj4gPiA+ID4gLSAgICAgICAgICAgICAgIHNlbF9mZXRjaF9h cmVhLT55MiA9IG5ld19wbGFuZV9zdGF0ZS0+dWFwaS5zcmMueTIgPj4gMTY7DQo+ID4gPiA+ICsg ICAgICAgICAgICAgICBpZiAobmV3X3BsYW5lX3N0YXRlLT51YXBpLnZpc2libGUgIT0gb2xkX3Bs YW5lX3N0YXRlLT51YXBpLnZpc2libGUgfHwNCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAh ZHJtX3JlY3RfZXF1YWxzKCZuZXdfcGxhbmVfc3RhdGUtPnVhcGkuZHN0LA0KPiA+ID4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm9sZF9wbGFuZV9zdGF0ZS0+dWFwaS5k c3QpKSB7DQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGlmIChvbGRfcGxhbmVfc3Rh dGUtPnVhcGkudmlzaWJsZSkgew0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGRhbWFnZWRfYXJlYS55MSA9IG9sZF9wbGFuZV9zdGF0ZS0+dWFwaS5kc3QueTE7DQo+ID4g PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGFtYWdlZF9hcmVhLnkyID0gb2xk X3BsYW5lX3N0YXRlLT51YXBpLmRzdC55MjsNCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjbGlwX2FyZWFfdXBkYXRlKCZwaXBlX2NsaXAsICZkYW1hZ2VkX2FyZWEpOw0K PiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICB9DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgaWYgKG5ld19wbGFuZV9zdGF0ZS0+dWFwaS52aXNpYmxlKSB7 DQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGFtYWdlZF9hcmVhLnkx ID0gbmV3X3BsYW5lX3N0YXRlLT51YXBpLmRzdC55MTsNCj4gPiA+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBkYW1hZ2VkX2FyZWEueTIgPSBuZXdfcGxhbmVfc3RhdGUtPnVhcGku ZHN0LnkyOw0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaXBfYXJl YV91cGRhdGUoJnBpcGVfY2xpcCwgJmRhbWFnZWRfYXJlYSk7DQo+ID4gPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgIH0NCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7 DQo+ID4gPiA+ICsgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG5ld19wbGFuZV9zdGF0ZS0+dWFw aS5hbHBoYSAhPSBvbGRfcGxhbmVfc3RhdGUtPnVhcGkuYWxwaGEgfHwNCj4gPiA+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgKCFudW1fY2xpcHMgJiYNCj4gPiA+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIG5ld19wbGFuZV9zdGF0ZS0+dWFwaS5mYiAhPSBvbGRfcGxhbmVfc3Rh dGUtPnVhcGkuZmIpKSB7DQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIC8qDQo+ID4g PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAqIElmIHRoZSBwbGFuZSBkb24ndCBoYXZlIGRh bWFnZWQgYXJlYXMgYnV0IHRoZQ0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgKiBm cmFtZWJ1ZmZlciBjaGFuZ2VkIG9yIGFscGhhIGNoYW5nZWQsIG1hcmsgdGhlIHdob2xlDQo+ID4g PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAqIHBsYW5lIGFyZWEgYXMgZGFtYWdlZC4NCj4g PiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICovDQo+ID4gPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgIGRhbWFnZWRfYXJlYS55MSA9IG5ld19wbGFuZV9zdGF0ZS0+dWFwaS5kc3QueTE7 DQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGRhbWFnZWRfYXJlYS55MiA9IG5ld19w bGFuZV9zdGF0ZS0+dWFwaS5kc3QueTI7DQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAg IGNsaXBfYXJlYV91cGRhdGUoJnBpcGVfY2xpcCwgJmRhbWFnZWRfYXJlYSk7DQo+ID4gPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KPiA+ID4gPiArICAgICAgICAgICAgICAg fQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsgICAgICAgICAgICAgICBkcm1fcmVjdF9mcF90b19pbnQo JnNyYywgJm5ld19wbGFuZV9zdGF0ZS0+dWFwaS5zcmMpOw0KPiA+ID4gPiArICAgICAgICAgICAg ICAgZGFtYWdlZF9jbGlwcyA9IGRybV9wbGFuZV9nZXRfZGFtYWdlX2NsaXBzKCZuZXdfcGxhbmVf c3RhdGUtPnVhcGkpOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsgICAgICAgICAgICAgICBmb3IgKGog PSAwOyBqIDwgbnVtX2NsaXBzOyBqKyspIHsNCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgc3RydWN0IGRybV9yZWN0IGNsaXA7DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgY2xpcC54MSA9IGRhbWFnZWRfY2xpcHNbal0ueDE7DQo+ID4gPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgIGNsaXAueTEgPSBkYW1hZ2VkX2NsaXBzW2pdLnkxOw0KPiA+ID4g PiArICAgICAgICAgICAgICAgICAgICAgICBjbGlwLngyID0gZGFtYWdlZF9jbGlwc1tqXS54MjsN Cj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgY2xpcC55MiA9IGRhbWFnZWRfY2xpcHNb al0ueTI7DQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGlmIChkcm1fcmVjdF9pbnRl cnNlY3QoJmNsaXAsICZzcmMpKQ0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNsaXBfYXJlYV91cGRhdGUoJmRhbWFnZWRfYXJlYSwgJmNsaXApOw0KPiA+ID4gPiArICAg ICAgICAgICAgICAgfQ0KPiA+ID4gPiANCj4gPiA+ID4gLSAgICAgICAgICAgICAgIHRlbXAgPSAq c2VsX2ZldGNoX2FyZWE7DQo+ID4gPiA+IC0gICAgICAgICAgICAgICB0ZW1wLnkxICs9IG5ld19w bGFuZV9zdGF0ZS0+dWFwaS5kc3QueTE7DQo+ID4gPiA+IC0gICAgICAgICAgICAgICB0ZW1wLnky ICs9IG5ld19wbGFuZV9zdGF0ZS0+dWFwaS5kc3QueTI7DQo+ID4gPiA+IC0gICAgICAgICAgICAg ICBjbGlwX2FyZWFfdXBkYXRlKCZwaXBlX2NsaXAsICZ0ZW1wKTsNCj4gPiA+ID4gKyAgICAgICAg ICAgICAgIGlmIChkYW1hZ2VkX2FyZWEueTEgPT0gLTEpDQo+ID4gPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgIGNvbnRpbnVlOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsgICAgICAgICAgICAgICBk YW1hZ2VkX2FyZWEueTEgKz0gbmV3X3BsYW5lX3N0YXRlLT51YXBpLmRzdC55MSAtIHNyYy55MTsN Cj4gPiA+ID4gKyAgICAgICAgICAgICAgIGRhbWFnZWRfYXJlYS55MiArPSBuZXdfcGxhbmVfc3Rh dGUtPnVhcGkuZHN0LnkxIC0gc3JjLnkxOw0KPiA+ID4gPiArICAgICAgICAgICAgICAgY2xpcF9h cmVhX3VwZGF0ZSgmcGlwZV9jbGlwLCAmZGFtYWdlZF9hcmVhKTsNCj4gPiA+ID4gKyAgICAgICB9 DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgICAgICBpZiAoZnVsbF91cGRhdGUpDQo+ID4gPiA+ICsg ICAgICAgICAgICAgICBnb3RvIHNraXBfc2VsX2ZldGNoX3NldF9sb29wOw0KPiA+ID4gPiArDQo+ ID4gPiA+ICsgICAgICAgLyogSXQgbXVzdCBiZSBhbGlnbmVkIHRvIDQgbGluZXMgKi8NCj4gPiA+ ID4gKyAgICAgICBwaXBlX2NsaXAueTEgLT0gcGlwZV9jbGlwLnkxICUgNDsNCj4gPiA+ID4gKyAg ICAgICBpZiAocGlwZV9jbGlwLnkyICUgNCkNCj4gPiA+ID4gKyAgICAgICAgICAgICAgIHBpcGVf Y2xpcC55MiA9ICgocGlwZV9jbGlwLnkyIC8gNCkgKyAxKSAqIDQ7DQo+ID4gPiA+ICsNCj4gPiA+ ID4gKyAgICAgICAvKg0KPiA+ID4gPiArICAgICAgICAqIE5vdyB0aGF0IHdlIGhhdmUgdGhlIHBp cGUgZGFtYWdlZCBhcmVhIGNoZWNrIGlmIGl0IGludGVyc2VjdCB3aXRoDQo+ID4gPiA+ICsgICAg ICAgICogZXZlcnkgcGxhbmUsIGlmIGl0IGRvZXMgc2V0IHRoZSBwbGFuZSBzZWxlY3RpdmUgZmV0 Y2ggYXJlYS4NCj4gPiA+ID4gKyAgICAgICAgKi8NCj4gPiA+ID4gKyAgICAgICBmb3JfZWFjaF9v bGRuZXdfaW50ZWxfcGxhbmVfaW5fc3RhdGUoc3RhdGUsIHBsYW5lLCBvbGRfcGxhbmVfc3RhdGUs DQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5l d19wbGFuZV9zdGF0ZSwgaSkgew0KPiA+ID4gPiArICAgICAgICAgICAgICAgc3RydWN0IGRybV9y ZWN0ICpzZWxfZmV0Y2hfYXJlYSwgaW50ZXI7DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgICAgICAg ICAgICAgIGlmIChuZXdfcGxhbmVfc3RhdGUtPnVhcGkuY3J0YyAhPSBjcnRjX3N0YXRlLT51YXBp LmNydGMgfHwNCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAhbmV3X3BsYW5lX3N0YXRlLT51 YXBpLnZpc2libGUpDQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0K PiA+ID4gPiArDQo+ID4gPiA+ICsgICAgICAgICAgICAgICBpbnRlciA9IHBpcGVfY2xpcDsNCj4g PiA+ID4gKyAgICAgICAgICAgICAgIGlmICghZHJtX3JlY3RfaW50ZXJzZWN0KCZpbnRlciwgJm5l d19wbGFuZV9zdGF0ZS0+dWFwaS5kc3QpKQ0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAg ICBjb250aW51ZTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArICAgICAgICAgICAgICAgc2VsX2ZldGNo X2FyZWEgPSAmbmV3X3BsYW5lX3N0YXRlLT5wc3IyX3NlbF9mZXRjaF9hcmVhOw0KPiA+ID4gPiAr ICAgICAgICAgICAgICAgc2VsX2ZldGNoX2FyZWEtPnkxID0gaW50ZXIueTEgLSBuZXdfcGxhbmVf c3RhdGUtPnVhcGkuZHN0LnkxOw0KPiA+ID4gPiArICAgICAgICAgICAgICAgc2VsX2ZldGNoX2Fy ZWEtPnkyID0gaW50ZXIueTIgLSBuZXdfcGxhbmVfc3RhdGUtPnVhcGkuZHN0LnkxOw0KPiA+ID4g PiAgICAgICAgIH0NCj4gPiA+ID4gDQo+ID4gPiA+ICtza2lwX3NlbF9mZXRjaF9zZXRfbG9vcDoN Cj4gPiA+ID4gICAgICAgICBwc3IyX21hbl90cmtfY3RsX2NhbGMoY3J0Y19zdGF0ZSwgJnBpcGVf Y2xpcCwgZnVsbF91cGRhdGUpOw0KPiA+ID4gPiAgICAgICAgIHJldHVybiAwOw0KPiA+ID4gPiAg fQ0KPiA+ID4gPiAtLQ0KPiA+ID4gPiAyLjMwLjANCj4gPiA+ID4gDQo+ID4gPiA+IF9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQo+ID4gPiA+IEludGVsLWdm eCBtYWlsaW5nIGxpc3QNCj4gPiA+ID4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZw0K PiA+ID4gPiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lu dGVsLWdmeA0KPiA+ID4gDQo+ID4gPiANCj4gPiA+IA0KPiA+ID4gLS0NCj4gPiA+IERhbmllbCBW ZXR0ZXINCj4gPiA+IFNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbg0KPiA+ID4g aHR0cDovL2Jsb2cuZmZ3bGwuY2gNCj4gPiANCj4gPiANCj4gPiANCj4gPiAtLQ0KPiA+IERhbmll bCBWZXR0ZXINCj4gPiBTb2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24NCj4gPiBo dHRwOi8vYmxvZy5mZndsbC5jaA0KPiANCj4gDQo+IA0KDQpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdm eEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9pbnRlbC1nZngK