Received: by 2002:a25:868d:0:0:0:0:0 with SMTP id z13csp429777ybk; Wed, 20 May 2020 03:18:11 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwT78/fVfYth9qy6yNXJIQf3g4NNzmvVx/voQ0HTvC/UK52Xj8khv7PJ0gpLm4YoUPN9C3i X-Received: by 2002:a50:81e6:: with SMTP id 93mr2835116ede.45.1589969891701; Wed, 20 May 2020 03:18:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1589969891; cv=none; d=google.com; s=arc-20160816; b=L+MbmxJzhB3OUOFcsvdr0Vpem50QFcEAVmyv6iz+03Tvy+Li8y6z5V6PnAXOn46yi4 QE2zrG1lHaVZVonc1QoECGhHk6jhImBI2MU+1S+3+SYJaVJ/vijQJ3K/CPJvhUb1Un0b g90qurRdzqbvMVfZFdRGFsCfNNcGXWh1TYEf6Swf02i28qKvw+Bl+GrQOODt6Qk6ae9B yPfv334g17XWH3eV0o+nFNqV+OR0b8Kb8Wb9gLTgwoi7kE74hlxpVKCkmL44ujKvO90I B+m2yeiAnZ3ktEuteuxT9drLUBevIGyV9FqFaHeC2tiM7rjHm0H6vXBZfaSEDKxT2Qe9 gr1Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:date:cc:to:from:subject:message-id :dkim-signature; bh=k+NG86gV1VTkyJNWj7cxTMZ5aDp81eAOhDYA7/vwqCE=; b=L4YKloFGHpkFzzNZ+iLFfOzqr5VuKGa08Phbd7kxR1Yrbo8TRkrf+Nv2vYefUkTE5C VTZg4Xq6dGFtnGlWsZH9Hpy4zoD+S0px9fPZR5sMtOymZmhD95SWyKbbAZwcX8yWefXX 6cnKd09kHGsTsdpp/E1Pi+e8xy/kkKyFOdOiPjtcQDoDwD84k1R1k5VhDujOMOl1oJ/T 73Ptd4dz2UtqrgbGjpIh4QxKtegwdBaf+zmUxqEVx01/8eZ5biu0pNjH/Z10jM2FMhPw HK0ToC7cY7y7XSy7r8iIzitQ7KKv4nsm+NFyiZ6Q2c192iGOSF8IMg9EGvguNjjej9e+ 3Y6A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@mediatek.com header.s=dk header.b="SSYXOI/c"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=mediatek.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id k4si1284237edi.24.2020.05.20.03.17.47; Wed, 20 May 2020 03:18:11 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@mediatek.com header.s=dk header.b="SSYXOI/c"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=mediatek.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726985AbgETKPb (ORCPT + 99 others); Wed, 20 May 2020 06:15:31 -0400 Received: from mailgw01.mediatek.com ([210.61.82.183]:6820 "EHLO mailgw01.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1726546AbgETKPb (ORCPT ); Wed, 20 May 2020 06:15:31 -0400 X-UUID: aac94775700741b591edbf836ef6959a-20200520 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:MIME-Version:Content-Type:References:In-Reply-To:Date:CC:To:From:Subject:Message-ID; bh=k+NG86gV1VTkyJNWj7cxTMZ5aDp81eAOhDYA7/vwqCE=; b=SSYXOI/crI6JooNPrlOFVlWb7AsYXqghni02TFMnyBQFYFKbCmK+2Fhf2ovdXmyZ2/v5W9JJaAvBAbPz3Pla+iLAaFLriRSzo9KrjRp6RHrQ9UegfD9cgBp64ZHRbO2bP23EBBPPWfZ5P//xBrmuwiG/r/4Hts0EbmFeUkH7eW0=; X-UUID: aac94775700741b591edbf836ef6959a-20200520 Received: from mtkcas11.mediatek.inc [(172.21.101.40)] by mailgw01.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.10 Build 0809 with TLS) with ESMTP id 653516365; Wed, 20 May 2020 18:15:18 +0800 Received: from mtkcas07.mediatek.inc (172.21.101.84) by mtkmbs01n2.mediatek.inc (172.21.101.79) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Wed, 20 May 2020 18:15:14 +0800 Received: from [172.21.84.99] (172.21.84.99) by mtkcas07.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Wed, 20 May 2020 18:15:14 +0800 Message-ID: <1589969715.2612.2.camel@mtksdccf07> Subject: Re: [PATCH v4 2/4] kasan: record and print the free track From: Walter Wu To: Dmitry Vyukov CC: Andrey Ryabinin , Alexander Potapenko , kasan-dev , Linux-MM , LKML , Linux ARM , wsd_upstream , Date: Wed, 20 May 2020 18:15:15 +0800 In-Reply-To: References: <20200519022517.24182-1-walter-zh.wu@mediatek.com> <1589947387.29577.35.camel@mtksdccf07> <1589951659.4440.4.camel@mtksdccf07> <1589955526.4440.22.camel@mtksdccf07> <1589966220.14692.24.camel@mtksdccf07> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.2.3-0ubuntu6 MIME-Version: 1.0 X-TM-SNTS-SMTP: C4DDA34A0765A151098AC81CFCA7596A207EFC9A552F7AD0DE4CC90F519764DF2000:8 X-MTK: N Content-Transfer-Encoding: base64 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org T24gV2VkLCAyMDIwLTA1LTIwIGF0IDExOjQ0ICswMjAwLCAnRG1pdHJ5IFZ5dWtvdicgdmlhIGth c2FuLWRldiB3cm90ZToNCj4gT24gV2VkLCBNYXkgMjAsIDIwMjAgYXQgMTE6MTcgQU0gV2FsdGVy IFd1IDx3YWx0ZXItemgud3VAbWVkaWF0ZWsuY29tPiB3cm90ZToNCj4gPiA+ID4gT24gV2VkLCAy MDIwLTA1LTIwIGF0IDEzOjE0ICswODAwLCBXYWx0ZXIgV3Ugd3JvdGU6DQo+ID4gPiA+ID4gPiBP biBXZWQsIE1heSAyMCwgMjAyMCBhdCA2OjAzIEFNIFdhbHRlciBXdSA8d2FsdGVyLXpoLnd1QG1l ZGlhdGVrLmNvbT4gd3JvdGU6DQo+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gT24gVHVl LCBNYXkgMTksIDIwMjAgYXQgNDoyNSBBTSBXYWx0ZXIgV3UgPHdhbHRlci16aC53dUBtZWRpYXRl ay5jb20+IHdyb3RlOg0KPiA+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiA+IE1vdmUg ZnJlZSB0cmFjayBmcm9tIHNsdWIgYWxsb2MgbWV0YS1kYXRhIHRvIHNsdWIgZnJlZSBtZXRhLWRh dGEgaW4NCj4gPiA+ID4gPiA+ID4gPiA+IG9yZGVyIHRvIG1ha2Ugc3RydWN0IGthc2FuX2ZyZWVf bWV0YSBzaXplIGlzIDE2IGJ5dGVzLiBJdCBpcyBhIGdvb2QNCj4gPiA+ID4gPiA+ID4gPiA+IHNp emUgYmVjYXVzZSBpdCBpcyB0aGUgbWluaW1hbCByZWR6b25lIHNpemUgYW5kIGEgZ29vZCBudW1i ZXIgb2YNCj4gPiA+ID4gPiA+ID4gPiA+IGFsaWdubWVudC4NCj4gPiA+ID4gPiA+ID4gPiA+DQo+ ID4gPiA+ID4gPiA+ID4gPiBGb3IgZnJlZSB0cmFjayBpbiBnZW5lcmljIEtBU0FOLCB3ZSBkbyB0 aGUgbW9kaWZpY2F0aW9uIGluIHN0cnVjdA0KPiA+ID4gPiA+ID4gPiA+ID4ga2FzYW5fYWxsb2Nf bWV0YSBhbmQga2FzYW5fZnJlZV9tZXRhOg0KPiA+ID4gPiA+ID4gPiA+ID4gLSByZW1vdmUgZnJl ZSB0cmFjayBmcm9tIGthc2FuX2FsbG9jX21ldGEuDQo+ID4gPiA+ID4gPiA+ID4gPiAtIGFkZCBm cmVlIHRyYWNrIGludG8ga2FzYW5fZnJlZV9tZXRhLg0KPiA+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ ID4gPiA+ID4gPiA+IFsxXWh0dHBzOi8vYnVnemlsbGEua2VybmVsLm9yZy9zaG93X2J1Zy5jZ2k/ aWQ9MTk4NDM3DQo+ID4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+ID4gU2lnbmVkLW9m Zi1ieTogV2FsdGVyIFd1IDx3YWx0ZXItemgud3VAbWVkaWF0ZWsuY29tPg0KPiA+ID4gPiA+ID4g PiA+ID4gU3VnZ2VzdGVkLWJ5OiBEbWl0cnkgVnl1a292IDxkdnl1a292QGdvb2dsZS5jb20+DQo+ ID4gPiA+ID4gPiA+ID4gPiBDYzogQW5kcmV5IFJ5YWJpbmluIDxhcnlhYmluaW5AdmlydHVvenpv LmNvbT4NCj4gPiA+ID4gPiA+ID4gPiA+IENjOiBEbWl0cnkgVnl1a292IDxkdnl1a292QGdvb2ds ZS5jb20+DQo+ID4gPiA+ID4gPiA+ID4gPiBDYzogQWxleGFuZGVyIFBvdGFwZW5rbyA8Z2xpZGVy QGdvb2dsZS5jb20+DQo+ID4gPiA+ID4gPiA+ID4gPiAtLS0NCj4gPiA+ID4gPiA+ID4gPiA+ICBt bS9rYXNhbi9jb21tb24uYyAgfCAyMiArKy0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ID4gPiA+ID4g PiA+ID4gPiAgbW0va2FzYW4vZ2VuZXJpYy5jIHwgMTggKysrKysrKysrKysrKysrKysrDQo+ID4g PiA+ID4gPiA+ID4gPiAgbW0va2FzYW4va2FzYW4uaCAgIHwgIDcgKysrKysrKw0KPiA+ID4gPiA+ ID4gPiA+ID4gIG1tL2thc2FuL3JlcG9ydC5jICB8IDIwIC0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ ID4gPiA+ID4gPiA+ID4gPiAgbW0va2FzYW4vdGFncy5jICAgIHwgMzcgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKw0KPiA+ID4gPiA+ID4gPiA+ID4gIDUgZmlsZXMgY2hhbmdl ZCwgNjQgaW5zZXJ0aW9ucygrKSwgNDAgZGVsZXRpb25zKC0pDQo+ID4gPiA+ID4gPiA+ID4gPg0K PiA+ID4gPiA+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL21tL2thc2FuL2NvbW1vbi5jIGIvbW0va2Fz YW4vY29tbW9uLmMNCj4gPiA+ID4gPiA+ID4gPiA+IGluZGV4IDhiYzYxODI4OWJiMS4uNDdiNTM5 MTJmMzIyIDEwMDY0NA0KPiA+ID4gPiA+ID4gPiA+ID4gLS0tIGEvbW0va2FzYW4vY29tbW9uLmMN Cj4gPiA+ID4gPiA+ID4gPiA+ICsrKyBiL21tL2thc2FuL2NvbW1vbi5jDQo+ID4gPiA+ID4gPiA+ ID4gPiBAQCAtNTEsNyArNTEsNyBAQCBkZXBvdF9zdGFja19oYW5kbGVfdCBrYXNhbl9zYXZlX3N0 YWNrKGdmcF90IGZsYWdzKQ0KPiA+ID4gPiA+ID4gPiA+ID4gICAgICAgICByZXR1cm4gc3RhY2tf ZGVwb3Rfc2F2ZShlbnRyaWVzLCBucl9lbnRyaWVzLCBmbGFncyk7DQo+ID4gPiA+ID4gPiA+ID4g PiAgfQ0KPiA+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiA+IC1zdGF0aWMgaW5saW5l IHZvaWQgc2V0X3RyYWNrKHN0cnVjdCBrYXNhbl90cmFjayAqdHJhY2ssIGdmcF90IGZsYWdzKQ0K PiA+ID4gPiA+ID4gPiA+ID4gK3ZvaWQga2FzYW5fc2V0X3RyYWNrKHN0cnVjdCBrYXNhbl90cmFj ayAqdHJhY2ssIGdmcF90IGZsYWdzKQ0KPiA+ID4gPiA+ID4gPiA+ID4gIHsNCj4gPiA+ID4gPiA+ ID4gPiA+ICAgICAgICAgdHJhY2stPnBpZCA9IGN1cnJlbnQtPnBpZDsNCj4gPiA+ID4gPiA+ID4g PiA+ICAgICAgICAgdHJhY2stPnN0YWNrID0ga2FzYW5fc2F2ZV9zdGFjayhmbGFncyk7DQo+ID4g PiA+ID4gPiA+ID4gPiBAQCAtMjk5LDI0ICsyOTksNiBAQCBzdHJ1Y3Qga2FzYW5fZnJlZV9tZXRh ICpnZXRfZnJlZV9pbmZvKHN0cnVjdCBrbWVtX2NhY2hlICpjYWNoZSwNCj4gPiA+ID4gPiA+ID4g PiA+ICAgICAgICAgcmV0dXJuICh2b2lkICopb2JqZWN0ICsgY2FjaGUtPmthc2FuX2luZm8uZnJl ZV9tZXRhX29mZnNldDsNCj4gPiA+ID4gPiA+ID4gPiA+ICB9DQo+ID4gPiA+ID4gPiA+ID4gPg0K PiA+ID4gPiA+ID4gPiA+ID4gLQ0KPiA+ID4gPiA+ID4gPiA+ID4gLXN0YXRpYyB2b2lkIGthc2Fu X3NldF9mcmVlX2luZm8oc3RydWN0IGttZW1fY2FjaGUgKmNhY2hlLA0KPiA+ID4gPiA+ID4gPiA+ ID4gLSAgICAgICAgICAgICAgIHZvaWQgKm9iamVjdCwgdTggdGFnKQ0KPiA+ID4gPiA+ID4gPiA+ ID4gLXsNCj4gPiA+ID4gPiA+ID4gPiA+IC0gICAgICAgc3RydWN0IGthc2FuX2FsbG9jX21ldGEg KmFsbG9jX21ldGE7DQo+ID4gPiA+ID4gPiA+ID4gPiAtICAgICAgIHU4IGlkeCA9IDA7DQo+ID4g PiA+ID4gPiA+ID4gPiAtDQo+ID4gPiA+ID4gPiA+ID4gPiAtICAgICAgIGFsbG9jX21ldGEgPSBn ZXRfYWxsb2NfaW5mbyhjYWNoZSwgb2JqZWN0KTsNCj4gPiA+ID4gPiA+ID4gPiA+IC0NCj4gPiA+ ID4gPiA+ID4gPiA+IC0jaWZkZWYgQ09ORklHX0tBU0FOX1NXX1RBR1NfSURFTlRJRlkNCj4gPiA+ ID4gPiA+ID4gPiA+IC0gICAgICAgaWR4ID0gYWxsb2NfbWV0YS0+ZnJlZV90cmFja19pZHg7DQo+ ID4gPiA+ID4gPiA+ID4gPiAtICAgICAgIGFsbG9jX21ldGEtPmZyZWVfcG9pbnRlcl90YWdbaWR4 XSA9IHRhZzsNCj4gPiA+ID4gPiA+ID4gPiA+IC0gICAgICAgYWxsb2NfbWV0YS0+ZnJlZV90cmFj a19pZHggPSAoaWR4ICsgMSkgJSBLQVNBTl9OUl9GUkVFX1NUQUNLUzsNCj4gPiA+ID4gPiA+ID4g PiA+IC0jZW5kaWYNCj4gPiA+ID4gPiA+ID4gPiA+IC0NCj4gPiA+ID4gPiA+ID4gPiA+IC0gICAg ICAgc2V0X3RyYWNrKCZhbGxvY19tZXRhLT5mcmVlX3RyYWNrW2lkeF0sIEdGUF9OT1dBSVQpOw0K PiA+ID4gPiA+ID4gPiA+ID4gLX0NCj4gPiA+ID4gPiA+ID4gPiA+IC0NCj4gPiA+ID4gPiA+ID4g PiA+ICB2b2lkIGthc2FuX3BvaXNvbl9zbGFiKHN0cnVjdCBwYWdlICpwYWdlKQ0KPiA+ID4gPiA+ ID4gPiA+ID4gIHsNCj4gPiA+ID4gPiA+ID4gPiA+ICAgICAgICAgdW5zaWduZWQgbG9uZyBpOw0K PiA+ID4gPiA+ID4gPiA+ID4gQEAgLTQ5Miw3ICs0NzQsNyBAQCBzdGF0aWMgdm9pZCAqX19rYXNh bl9rbWFsbG9jKHN0cnVjdCBrbWVtX2NhY2hlICpjYWNoZSwgY29uc3Qgdm9pZCAqb2JqZWN0LA0K PiA+ID4gPiA+ID4gPiA+ID4gICAgICAgICAgICAgICAgIEtBU0FOX0tNQUxMT0NfUkVEWk9ORSk7 DQo+ID4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+ID4gICAgICAgICBpZiAoY2FjaGUt PmZsYWdzICYgU0xBQl9LQVNBTikNCj4gPiA+ID4gPiA+ID4gPiA+IC0gICAgICAgICAgICAgICBz ZXRfdHJhY2soJmdldF9hbGxvY19pbmZvKGNhY2hlLCBvYmplY3QpLT5hbGxvY190cmFjaywgZmxh Z3MpOw0KPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgIGthc2FuX3NldF90cmFjaygm Z2V0X2FsbG9jX2luZm8oY2FjaGUsIG9iamVjdCktPmFsbG9jX3RyYWNrLCBmbGFncyk7DQo+ID4g PiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+ID4gICAgICAgICByZXR1cm4gc2V0X3RhZyhv YmplY3QsIHRhZyk7DQo+ID4gPiA+ID4gPiA+ID4gPiAgfQ0KPiA+ID4gPiA+ID4gPiA+ID4gZGlm ZiAtLWdpdCBhL21tL2thc2FuL2dlbmVyaWMuYyBiL21tL2thc2FuL2dlbmVyaWMuYw0KPiA+ID4g PiA+ID4gPiA+ID4gaW5kZXggMzM3MmJkY2FmOTJhLi43NjNkOGExM2UwYWMgMTAwNjQ0DQo+ID4g PiA+ID4gPiA+ID4gPiAtLS0gYS9tbS9rYXNhbi9nZW5lcmljLmMNCj4gPiA+ID4gPiA+ID4gPiA+ ICsrKyBiL21tL2thc2FuL2dlbmVyaWMuYw0KPiA+ID4gPiA+ID4gPiA+ID4gQEAgLTM0NCwzICsz NDQsMjEgQEAgdm9pZCBrYXNhbl9yZWNvcmRfYXV4X3N0YWNrKHZvaWQgKmFkZHIpDQo+ID4gPiA+ ID4gPiA+ID4gPiAgICAgICAgIGFsbG9jX2luZm8tPmF1eF9zdGFja1sxXSA9IGFsbG9jX2luZm8t PmF1eF9zdGFja1swXTsNCj4gPiA+ID4gPiA+ID4gPiA+ICAgICAgICAgYWxsb2NfaW5mby0+YXV4 X3N0YWNrWzBdID0ga2FzYW5fc2F2ZV9zdGFjayhHRlBfTk9XQUlUKTsNCj4gPiA+ID4gPiA+ID4g PiA+ICB9DQo+ID4gPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ID4gPiArdm9pZCBrYXNh bl9zZXRfZnJlZV9pbmZvKHN0cnVjdCBrbWVtX2NhY2hlICpjYWNoZSwNCj4gPiA+ID4gPiA+ID4g PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqb2JqZWN0LCB1OCB0YWcp DQo+ID4gPiA+ID4gPiA+ID4gPiArew0KPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgICBzdHJ1Y3Qg a2FzYW5fZnJlZV9tZXRhICpmcmVlX21ldGE7DQo+ID4gPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ ID4gPiA+ID4gPiArICAgICAgIGZyZWVfbWV0YSA9IGdldF9mcmVlX2luZm8oY2FjaGUsIG9iamVj dCk7DQo+ID4gPiA+ID4gPiA+ID4gPiArICAgICAgIGthc2FuX3NldF90cmFjaygmZnJlZV9tZXRh LT5mcmVlX3RyYWNrLCBHRlBfTk9XQUlUKTsNCj4gPiA+ID4gPiA+ID4gPiA+ICt9DQo+ID4gPiA+ ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ID4gPiArc3RydWN0IGthc2FuX3RyYWNrICprYXNh bl9nZXRfZnJlZV90cmFjayhzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGUsDQo+ID4gPiA+ID4gPiA+ ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKm9iamVjdCwgdTggdGFn KQ0KPiA+ID4gPiA+ID4gPiA+ID4gK3sNCj4gPiA+ID4gPiA+ID4gPiA+ICsgICAgICAgc3RydWN0 IGthc2FuX2ZyZWVfbWV0YSAqZnJlZV9tZXRhOw0KPiA+ID4gPiA+ID4gPiA+ID4gKw0KPiA+ID4g PiA+ID4gPiA+ID4gKyAgICAgICBmcmVlX21ldGEgPSBnZXRfZnJlZV9pbmZvKGNhY2hlLCBvYmpl Y3QpOw0KPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgICByZXR1cm4gJmZyZWVfbWV0YS0+ZnJlZV90 cmFjazsNCj4gPiA+ID4gPiA+ID4gPiA+ICt9DQo+ID4gPiA+ID4gPiA+ID4gPiBkaWZmIC0tZ2l0 IGEvbW0va2FzYW4va2FzYW4uaCBiL21tL2thc2FuL2thc2FuLmgNCj4gPiA+ID4gPiA+ID4gPiA+ IGluZGV4IGE3MzkxYmM4MzA3MC4uYWQ4OTdlYzM2NTQ1IDEwMDY0NA0KPiA+ID4gPiA+ID4gPiA+ ID4gLS0tIGEvbW0va2FzYW4va2FzYW4uaA0KPiA+ID4gPiA+ID4gPiA+ID4gKysrIGIvbW0va2Fz YW4va2FzYW4uaA0KPiA+ID4gPiA+ID4gPiA+ID4gQEAgLTEyNyw2ICsxMjcsOSBAQCBzdHJ1Y3Qg a2FzYW5fZnJlZV9tZXRhIHsNCj4gPiA+ID4gPiA+ID4gPiA+ICAgICAgICAgICogT3RoZXJ3aXNl IGl0IG1pZ2h0IGJlIHVzZWQgZm9yIHRoZSBhbGxvY2F0b3IgZnJlZWxpc3QuDQo+ID4gPiA+ID4g PiA+ID4gPiAgICAgICAgICAqLw0KPiA+ID4gPiA+ID4gPiA+ID4gICAgICAgICBzdHJ1Y3QgcWxp c3Rfbm9kZSBxdWFyYW50aW5lX2xpbms7DQo+ID4gPiA+ID4gPiA+ID4gPiArI2lmZGVmIENPTkZJ R19LQVNBTl9HRU5FUklDDQo+ID4gPiA+ID4gPiA+ID4gPiArICAgICAgIHN0cnVjdCBrYXNhbl90 cmFjayBmcmVlX3RyYWNrOw0KPiA+ID4gPiA+ID4gPiA+ID4gKyNlbmRpZg0KPiA+ID4gPiA+ID4g PiA+ID4gIH07DQo+ID4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+ID4gIHN0cnVjdCBr YXNhbl9hbGxvY19tZXRhICpnZXRfYWxsb2NfaW5mbyhzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGUs DQo+ID4gPiA+ID4gPiA+ID4gPiBAQCAtMTY4LDYgKzE3MSwxMCBAQCB2b2lkIGthc2FuX3JlcG9y dF9pbnZhbGlkX2ZyZWUodm9pZCAqb2JqZWN0LCB1bnNpZ25lZCBsb25nIGlwKTsNCj4gPiA+ID4g PiA+ID4gPiA+ICBzdHJ1Y3QgcGFnZSAqa2FzYW5fYWRkcl90b19wYWdlKGNvbnN0IHZvaWQgKmFk ZHIpOw0KPiA+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiA+ICBkZXBvdF9zdGFja19o YW5kbGVfdCBrYXNhbl9zYXZlX3N0YWNrKGdmcF90IGZsYWdzKTsNCj4gPiA+ID4gPiA+ID4gPiA+ ICt2b2lkIGthc2FuX3NldF90cmFjayhzdHJ1Y3Qga2FzYW5fdHJhY2sgKnRyYWNrLCBnZnBfdCBm bGFncyk7DQo+ID4gPiA+ID4gPiA+ID4gPiArdm9pZCBrYXNhbl9zZXRfZnJlZV9pbmZvKHN0cnVj dCBrbWVtX2NhY2hlICpjYWNoZSwgdm9pZCAqb2JqZWN0LCB1OCB0YWcpOw0KPiA+ID4gPiA+ID4g PiA+ID4gK3N0cnVjdCBrYXNhbl90cmFjayAqa2FzYW5fZ2V0X2ZyZWVfdHJhY2soc3RydWN0IGtt ZW1fY2FjaGUgKmNhY2hlLA0KPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB2b2lkICpvYmplY3QsIHU4IHRhZyk7DQo+ID4gPiA+ID4gPiA+ID4gPg0KPiA+ ID4gPiA+ID4gPiA+ID4gICNpZiBkZWZpbmVkKENPTkZJR19LQVNBTl9HRU5FUklDKSAmJiBcDQo+ ID4gPiA+ID4gPiA+ID4gPiAgICAgICAgIChkZWZpbmVkKENPTkZJR19TTEFCKSB8fCBkZWZpbmVk KENPTkZJR19TTFVCKSkNCj4gPiA+ID4gPiA+ID4gPiA+IGRpZmYgLS1naXQgYS9tbS9rYXNhbi9y ZXBvcnQuYyBiL21tL2thc2FuL3JlcG9ydC5jDQo+ID4gPiA+ID4gPiA+ID4gPiBpbmRleCA2Zjhm MmJmOGY1M2IuLjk2ZDI2NTdmZTcwZiAxMDA2NDQNCj4gPiA+ID4gPiA+ID4gPiA+IC0tLSBhL21t L2thc2FuL3JlcG9ydC5jDQo+ID4gPiA+ID4gPiA+ID4gPiArKysgYi9tbS9rYXNhbi9yZXBvcnQu Yw0KPiA+ID4gPiA+ID4gPiA+ID4gQEAgLTE1OSwyNiArMTU5LDYgQEAgc3RhdGljIHZvaWQgZGVz Y3JpYmVfb2JqZWN0X2FkZHIoc3RydWN0IGttZW1fY2FjaGUgKmNhY2hlLCB2b2lkICpvYmplY3Qs DQo+ID4gPiA+ID4gPiA+ID4gPiAgICAgICAgICAgICAgICAgKHZvaWQgKikob2JqZWN0X2FkZHIg KyBjYWNoZS0+b2JqZWN0X3NpemUpKTsNCj4gPiA+ID4gPiA+ID4gPiA+ICB9DQo+ID4gPiA+ID4g PiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+ID4gLXN0YXRpYyBzdHJ1Y3Qga2FzYW5fdHJhY2sgKmth c2FuX2dldF9mcmVlX3RyYWNrKHN0cnVjdCBrbWVtX2NhY2hlICpjYWNoZSwNCj4gPiA+ID4gPiA+ ID4gPiA+IC0gICAgICAgICAgICAgICB2b2lkICpvYmplY3QsIHU4IHRhZykNCj4gPiA+ID4gPiA+ ID4gPiA+IC17DQo+ID4gPiA+ID4gPiA+ID4gPiAtICAgICAgIHN0cnVjdCBrYXNhbl9hbGxvY19t ZXRhICphbGxvY19tZXRhOw0KPiA+ID4gPiA+ID4gPiA+ID4gLSAgICAgICBpbnQgaSA9IDA7DQo+ ID4gPiA+ID4gPiA+ID4gPiAtDQo+ID4gPiA+ID4gPiA+ID4gPiAtICAgICAgIGFsbG9jX21ldGEg PSBnZXRfYWxsb2NfaW5mbyhjYWNoZSwgb2JqZWN0KTsNCj4gPiA+ID4gPiA+ID4gPiA+IC0NCj4g PiA+ID4gPiA+ID4gPiA+IC0jaWZkZWYgQ09ORklHX0tBU0FOX1NXX1RBR1NfSURFTlRJRlkNCj4g PiA+ID4gPiA+ID4gPiA+IC0gICAgICAgZm9yIChpID0gMDsgaSA8IEtBU0FOX05SX0ZSRUVfU1RB Q0tTOyBpKyspIHsNCj4gPiA+ID4gPiA+ID4gPiA+IC0gICAgICAgICAgICAgICBpZiAoYWxsb2Nf bWV0YS0+ZnJlZV9wb2ludGVyX3RhZ1tpXSA9PSB0YWcpDQo+ID4gPiA+ID4gPiA+ID4gPiAtICAg ICAgICAgICAgICAgICAgICAgICBicmVhazsNCj4gPiA+ID4gPiA+ID4gPiA+IC0gICAgICAgfQ0K PiA+ID4gPiA+ID4gPiA+ID4gLSAgICAgICBpZiAoaSA9PSBLQVNBTl9OUl9GUkVFX1NUQUNLUykN Cj4gPiA+ID4gPiA+ID4gPiA+IC0gICAgICAgICAgICAgICBpID0gYWxsb2NfbWV0YS0+ZnJlZV90 cmFja19pZHg7DQo+ID4gPiA+ID4gPiA+ID4gPiAtI2VuZGlmDQo+ID4gPiA+ID4gPiA+ID4gPiAt DQo+ID4gPiA+ID4gPiA+ID4gPiAtICAgICAgIHJldHVybiAmYWxsb2NfbWV0YS0+ZnJlZV90cmFj a1tpXTsNCj4gPiA+ID4gPiA+ID4gPiA+IC19DQo+ID4gPiA+ID4gPiA+ID4gPiAtDQo+ID4gPiA+ ID4gPiA+ID4gPiAgI2lmZGVmIENPTkZJR19LQVNBTl9HRU5FUklDDQo+ID4gPiA+ID4gPiA+ID4g PiAgc3RhdGljIHZvaWQgcHJpbnRfc3RhY2soZGVwb3Rfc3RhY2tfaGFuZGxlX3Qgc3RhY2spDQo+ ID4gPiA+ID4gPiA+ID4gPiAgew0KPiA+ID4gPiA+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL21tL2th c2FuL3RhZ3MuYyBiL21tL2thc2FuL3RhZ3MuYw0KPiA+ID4gPiA+ID4gPiA+ID4gaW5kZXggMjVi NzczNGU3MDEzLi4yMDFkZWU1ZDZhZTAgMTAwNjQ0DQo+ID4gPiA+ID4gPiA+ID4gPiAtLS0gYS9t bS9rYXNhbi90YWdzLmMNCj4gPiA+ID4gPiA+ID4gPiA+ICsrKyBiL21tL2thc2FuL3RhZ3MuYw0K PiA+ID4gPiA+ID4gPiA+ID4gQEAgLTE2MiwzICsxNjIsNDAgQEAgdm9pZCBfX2h3YXNhbl90YWdf bWVtb3J5KHVuc2lnbmVkIGxvbmcgYWRkciwgdTggdGFnLCB1bnNpZ25lZCBsb25nIHNpemUpDQo+ ID4gPiA+ID4gPiA+ID4gPiAgICAgICAgIGthc2FuX3BvaXNvbl9zaGFkb3coKHZvaWQgKilhZGRy LCBzaXplLCB0YWcpOw0KPiA+ID4gPiA+ID4gPiA+ID4gIH0NCj4gPiA+ID4gPiA+ID4gPiA+ICBF WFBPUlRfU1lNQk9MKF9faHdhc2FuX3RhZ19tZW1vcnkpOw0KPiA+ID4gPiA+ID4gPiA+ID4gKw0K PiA+ID4gPiA+ID4gPiA+ID4gK3ZvaWQga2FzYW5fc2V0X2ZyZWVfaW5mbyhzdHJ1Y3Qga21lbV9j YWNoZSAqY2FjaGUsDQo+ID4gPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHZvaWQgKm9iamVjdCwgdTggdGFnKQ0KPiA+ID4gPiA+ID4gPiA+ID4gK3sNCj4gPiA+ ID4gPiA+ID4gPiA+ICsgICAgICAgc3RydWN0IGthc2FuX2FsbG9jX21ldGEgKmFsbG9jX21ldGE7 DQo+ID4gPiA+ID4gPiA+ID4gPiArICAgICAgIHU4IGlkeCA9IDA7DQo+ID4gPiA+ID4gPiA+ID4g PiArDQo+ID4gPiA+ID4gPiA+ID4gPiArICAgICAgIGFsbG9jX21ldGEgPSBnZXRfYWxsb2NfaW5m byhjYWNoZSwgb2JqZWN0KTsNCj4gPiA+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gPiA+ ICsjaWZkZWYgQ09ORklHX0tBU0FOX1NXX1RBR1NfSURFTlRJRlkNCj4gPiA+ID4gPiA+ID4gPiA+ ICsgICAgICAgaWR4ID0gYWxsb2NfbWV0YS0+ZnJlZV90cmFja19pZHg7DQo+ID4gPiA+ID4gPiA+ ID4gPiArICAgICAgIGFsbG9jX21ldGEtPmZyZWVfcG9pbnRlcl90YWdbaWR4XSA9IHRhZzsNCj4g PiA+ID4gPiA+ID4gPiA+ICsgICAgICAgYWxsb2NfbWV0YS0+ZnJlZV90cmFja19pZHggPSAoaWR4 ICsgMSkgJSBLQVNBTl9OUl9GUkVFX1NUQUNLUzsNCj4gPiA+ID4gPiA+ID4gPiA+ICsjZW5kaWYN Cj4gPiA+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gPiA+ICsgICAgICAga2FzYW5fc2V0 X3RyYWNrKCZhbGxvY19tZXRhLT5mcmVlX3RyYWNrW2lkeF0sIEdGUF9OT1dBSVQpOw0KPiA+ID4g PiA+ID4gPiA+ID4gK30NCj4gPiA+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gPiA+ICtz dHJ1Y3Qga2FzYW5fdHJhY2sgKmthc2FuX2dldF9mcmVlX3RyYWNrKHN0cnVjdCBrbWVtX2NhY2hl ICpjYWNoZSwNCj4gPiA+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdm9pZCAqb2JqZWN0LCB1OCB0YWcpDQo+ID4gPiA+ID4gPiA+ID4gPiArew0KPiA+ID4gPiA+ ID4gPiA+ID4gKyAgICAgICBzdHJ1Y3Qga2FzYW5fYWxsb2NfbWV0YSAqYWxsb2NfbWV0YTsNCj4g PiA+ID4gPiA+ID4gPiA+ICsgICAgICAgaW50IGkgPSAwOw0KPiA+ID4gPiA+ID4gPiA+ID4gKw0K PiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgICBhbGxvY19tZXRhID0gZ2V0X2FsbG9jX2luZm8oY2Fj aGUsIG9iamVjdCk7DQo+ID4gPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ID4gPiArI2lm ZGVmIENPTkZJR19LQVNBTl9TV19UQUdTX0lERU5USUZZDQo+ID4gPiA+ID4gPiA+ID4gPiArICAg ICAgIGZvciAoaSA9IDA7IGkgPCBLQVNBTl9OUl9GUkVFX1NUQUNLUzsgaSsrKSB7DQo+ID4gPiA+ ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgaWYgKGFsbG9jX21ldGEtPmZyZWVfcG9pbnRlcl90 YWdbaV0gPT0gdGFnKQ0KPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg YnJlYWs7DQo+ID4gPiA+ID4gPiA+ID4gPiArICAgICAgIH0NCj4gPiA+ID4gPiA+ID4gPiA+ICsg ICAgICAgaWYgKGkgPT0gS0FTQU5fTlJfRlJFRV9TVEFDS1MpDQo+ID4gPiA+ID4gPiA+ID4gPiAr ICAgICAgICAgICAgICAgaSA9IGFsbG9jX21ldGEtPmZyZWVfdHJhY2tfaWR4Ow0KPiA+ID4gPiA+ ID4gPiA+ID4gKyNlbmRpZg0KPiA+ID4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiA+ID4g KyAgICAgICByZXR1cm4gJmFsbG9jX21ldGEtPmZyZWVfdHJhY2tbaV07DQo+ID4gPiA+ID4gPiA+ ID4gPiArfQ0KPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gSGkgV2FsdGVyLA0KPiA+ ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gRlRSIEkndmUgdXBsb2FkZWQgdGhpcyBmb3Ig cmV2aWV3IHB1cnBvc2VzIGhlcmU6DQo+ID4gPiA+ID4gPiA+ID4gaHR0cHM6Ly9saW51eC1yZXZp ZXcuZ29vZ2xlc291cmNlLmNvbS9jL2xpbnV4L2tlcm5lbC9naXQvdG9ydmFsZHMvbGludXgvKy8y NDU4DQo+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiBEaWZmIGZyb20gdGhlIHByZXZp b3VzIHZlcnNpb24gaXMgYXZhaWxhYmxlIGFzOg0KPiA+ID4gPiA+ID4gPiA+IGh0dHBzOi8vbGlu dXgtcmV2aWV3Lmdvb2dsZXNvdXJjZS5jb20vYy9saW51eC9rZXJuZWwvZ2l0L3RvcnZhbGRzL2xp bnV4LysvMjQ1OC8xLi4yDQo+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiBJJ3ZlIHRl c3RlZCB0aGlzIGxvY2FsbHkgYW5kIHdpdGggc3l6a2FsbGVyLiBUaGlzIGlzIDoNCj4gPiA+ID4g PiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+IFsgICA4MC41ODMwMjFdWyAgICBDM10gRnJlZWQgYnkg dGFzayAwOg0KPiA+ID4gPiA+ID4gPiA+IFsgICA4MC41ODM0ODBdWyAgICBDM10gIGthc2FuX3Nh dmVfc3RhY2srMHgxYi8weDQwIG1tL2thc2FuL2NvbW1vbi5jOjQ5DQo+ID4gPiA+ID4gPiA+ID4g WyAgIDgwLjU4NDA1Nl1bICAgIEMzXSAga2FzYW5fc2V0X3RyYWNrKzB4MWMvMHgzMCBtbS9rYXNh bi9jb21tb24uYzo1Nw0KPiA+ID4gPiA+ID4gPiA+IFsgICA4MC41ODQ2MTddWyAgICBDM10gIGth c2FuX3NldF9mcmVlX2luZm8rMHgxYi8weDMwIG1tL2thc2FuL2dlbmVyaWMuYzozNTQNCj4gPiA+ ID4gPiA+ID4gPiBbICAgODAuNTg1MjIxXVsgICAgQzNdICBfX2thc2FuX3NsYWJfZnJlZSsweGQ4 LzB4MTIwIG1tL2thc2FuL2NvbW1vbi5jOjQzOA0KPiA+ID4gPiA+ID4gPiA+IFsgICA4MC41ODU4 MTRdWyAgICBDM10gIF9fY2FjaGVfZnJlZSBtbS9zbGFiLmM6MzQyNiBbaW5saW5lXQ0KPiA+ID4g PiA+ID4gPiA+IFsgICA4MC41ODU4MTRdWyAgICBDM10gIGtmcmVlKzB4MTBiLzB4MmIwIG1tL3Ns YWIuYzozNzU3DQo+ID4gPiA+ID4gPiA+ID4gWyAgIDgwLjU4NjI5MV1bICAgIEMzXSAga2FzYW5f cmN1X3JlY2xhaW0rMHgxNi8weDQzIFt0ZXN0X2thc2FuXQ0KPiA+ID4gPiA+ID4gPiA+IFsgICA4 MC41ODcwMDldWyAgICBDM10gIHJjdV9kb19iYXRjaCBrZXJuZWwvcmN1L3RyZWUuYzoyMjA3IFtp bmxpbmVdDQo+ID4gPiA+ID4gPiA+ID4gWyAgIDgwLjU4NzAwOV1bICAgIEMzXSAgcmN1X2NvcmUr MHg1OWYvMHgxMzcwIGtlcm5lbC9yY3UvdHJlZS5jOjI0MzQNCj4gPiA+ID4gPiA+ID4gPiBbICAg ODAuNTg3NTM3XVsgICAgQzNdICBfX2RvX3NvZnRpcnErMHgyNmMvMHg5ZmEga2VybmVsL3NvZnRp cnEuYzoyOTINCj4gPiA+ID4gPiA+ID4gPiBbICAgODAuNTg4MDg1XVsgICAgQzNdDQo+ID4gPiA+ ID4gPiA+ID4gWyAgIDgwLjU4ODM2N11bICAgIEMzXSBMYXN0IG9uZSBjYWxsX3JjdSgpIGNhbGwg c3RhY2s6DQo+ID4gPiA+ID4gPiA+ID4gWyAgIDgwLjU4OTA1Ml1bICAgIEMzXSAga2FzYW5fc2F2 ZV9zdGFjaysweDFiLzB4NDAgbW0va2FzYW4vY29tbW9uLmM6NDkNCj4gPiA+ID4gPiA+ID4gPiBb ICAgODAuNTg5NjIyXVsgICAgQzNdICBrYXNhbl9yZWNvcmRfYXV4X3N0YWNrKzB4ODIvMHhiMCBt bS9rYXNhbi9nZW5lcmljLmM6MzQ1DQo+ID4gPiA+ID4gPiA+ID4gWyAgIDgwLjU5MDI1NF1bICAg IEMzXSAgX19jYWxsX3JjdSBrZXJuZWwvcmN1L3RyZWUuYzoyNjcyIFtpbmxpbmVdDQo+ID4gPiA+ ID4gPiA+ID4gWyAgIDgwLjU5MDI1NF1bICAgIEMzXSAgY2FsbF9yY3UrMHgxNGYvMHg3ZjAga2Vy bmVsL3JjdS90cmVlLmM6Mjc0Ng0KPiA+ID4gPiA+ID4gPiA+IFsgICA4MC41OTA3ODJdWyAgICBD M10gIGthc2FuX3JjdV91YWYrMHhlNC8weGViIFt0ZXN0X2thc2FuXQ0KPiA+ID4gPiA+ID4gPiA+ IFsgICA4MC41OTE2OTddWyAgICBDM10gIGttYWxsb2NfdGVzdHNfaW5pdCsweGJjLzB4MTA5NyBb dGVzdF9rYXNhbl0NCj4gPiA+ID4gPiA+ID4gPiBbICAgODAuNTkyOTAwXVsgICAgQzNdICBkb19v bmVfaW5pdGNhbGwrMHgxMGEvMHg3ZDAgaW5pdC9tYWluLmM6MTE5Ng0KPiA+ID4gPiA+ID4gPiA+ IFsgICA4MC41OTM0OTRdWyAgICBDM10gIGRvX2luaXRfbW9kdWxlKzB4MWU2LzB4NmQwIGtlcm5l bC9tb2R1bGUuYzozNTM5DQo+ID4gPiA+ID4gPiA+ID4gWyAgIDgwLjU5NDA2Nl1bICAgIEMzXSAg bG9hZF9tb2R1bGUrMHg3NDY0LzB4OTQ1MCBrZXJuZWwvbW9kdWxlLmM6Mzg5MA0KPiA+ID4gPiA+ ID4gPiA+IFsgICA4MC41OTQ2MjZdWyAgICBDM10gIF9fZG9fc3lzX2luaXRfbW9kdWxlKzB4MWUz LzB4MjIwIGtlcm5lbC9tb2R1bGUuYzozOTUzDQo+ID4gPiA+ID4gPiA+ID4gWyAgIDgwLjU5NTI2 NV1bICAgIEMzXSAgZG9fc3lzY2FsbF82NCsweGY2LzB4N2QwIGFyY2gveDg2L2VudHJ5L2NvbW1v bi5jOjI5NQ0KPiA+ID4gPiA+ID4gPiA+IFsgICA4MC41OTU4MjJdWyAgICBDM10gIGVudHJ5X1NZ U0NBTExfNjRfYWZ0ZXJfaHdmcmFtZSsweDQ5LzB4YjMNCj4gPiA+ID4gPiA+ID4gPg0KPiA+ID4g PiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gT3ZlcmFsbCB0aGlzIGxvb2tzIHZlcnkgZ29vZCB0 byBtZS4NCj4gPiA+ID4gPiA+ID4gPiBCdXQgdGhlcmUgaXMgb25lIGFzcGVjdCB0aGF0IGJvdGhl cnMgbWUuIEluIHRoZSBwcmV2aW91cyBwYXRjaCB5b3UgaGFkDQo+ID4gPiA+ID4gPiA+ID4gY29k ZSB0aGF0IHJldHVybmVkIE5VTEwgZnJvbSBrYXNhbl9nZXRfZnJlZV90cmFjaygpIGlmIHRoZSBv YmplY3QgaXMNCj4gPiA+ID4gPiA+ID4gPiBsaXZlICh3aGljaCBtZWFucyBmcmVlIG1ldGEgaXMg bm90IGF2YWlsYWJsZSwgaXQncyBvY2N1cGllZCBieSBvYmplY3QNCj4gPiA+ID4gPiA+ID4gPiBk YXRhKS4gTm93IHlvdSBkcm9wcGVkIHRoYXQgY29kZSwgYnV0IEkgdGhpbmsgd2Ugc3RpbGwgbmVl ZCBpdC4NCj4gPiA+ID4gPiA+ID4gPiBPdGhlcndpc2Ugd2UgY2FzdCB1c2VyIG9iamVjdCBkYXRh IHRvIGZyZWUgbWV0YSBhbmQgcHJpbnQgdGhlIGZyZWUNCj4gPiA+ID4gPiA+ID4gPiBzdGFjay9w aWQgZnJvbSB3aGF0ZXZlciBnYXJiYWdlIGlzIHRoZXJlLiBUaGlzIG1heSBsZWFkIHRvIHZlcnkN Cj4gPiA+ID4gPiA+ID4gPiBjb25mdXNpbmcgb3V0cHV0IGFuZCBwb3RlbnRpYWxseSB0byBjcmFz aGVzIGluIHN0YWNrZGVwb3QuDQo+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4NCj4gPiA+ ID4gPiA+ID4gWWVzLCBJIHRvdGFsbHkgYWdyZWUgd2l0aCB5b3UuIEluIHRoZSBwcmV2aW91cyBl bWFpbCBJIHRob3VnaHQgdGhhdA0KPiA+ID4gPiA+ID4gPiB0aGVyZSBpcyBhIHByb2JsZW0gd2l0 aCBmcmVlIHRyYWNrLCBidXQgSSBkaWQgbm90IHBvaW50IGl0IG91dC4gVGhhbmsNCj4gPiA+ID4g PiA+ID4geW91IGZvciBwb2ludGluZyB0aGlzIHByb2JsZW0uIEFzIHlvdSBtZW50aW9uZWQsIHdl IHNob3VsZCBmaXggaXQuDQo+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gV2hhdCBkbyB5 b3UgdGhpbmsgYWJvdXQgdGhpcyBwYXRjaCBvbiB0b3Agb2YgeW91ciBwYXRjaGVzPw0KPiA+ID4g PiA+ID4gPiA+IGh0dHBzOi8vbGludXgtcmV2aWV3Lmdvb2dsZXNvdXJjZS5jb20vYy9saW51eC9r ZXJuZWwvZ2l0L3RvcnZhbGRzL2xpbnV4LysvMjQ3OA0KPiA+ID4gPiA+ID4gPiA+IFRoaXMgd2F5 IHdlIHZlcnkgcHJlY2lzZWx5IG1hcmsgdGhlIHBlcmlvZCBvZiB0aW1lIHdoZW4gdGhlIG9iamVj dCBoYXMNCj4gPiA+ID4gPiA+ID4gPiBmcmVlIHRyYWNrIGxpdmUgYW5kIHNldC4NCj4gPiA+ID4g PiA+ID4gPiBJZiBpdCBsb29rcyBnb29kIHRvIHlvdSwgZmVlbCBmcmVlIHRvIGluY29ycG9yYXRl IGl0IGludG8geW91ciBzZXJpZXMuDQo+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4NCj4g PiA+ID4gPiA+ID4gVGhhbmsgeW91IGZvciBwcm92aWRpbmcgZ29vZCBpZGVhIHNvbHV0aW9uLg0K PiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiBJIHNhdyB0aGlzIHBhdGNoLCB0aGF0IGlzIGEg Z3JlYXQgcGF0Y2guIEkgdGhpbmsgaXQgY2FuIGZpeCB0aGUgaXNzdWUNCj4gPiA+ID4gPiA+ID4g d2hpY2ggaGFzIGdhcmJhZ2Ugc3RhY2suIGl0IHNob3VsZCB3b3JrIGFzIGRlc2NyaWJlZCBiZWxv dy4NCj4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gMSkuIFdoZW4gb2JqZWN0IGlzIGxpdmUs IHRoZW4gZG9uJ3QgcHJpbnQgZnJlZSBzdGFjay4NCj4gPiA+ID4gPiA+ID4gMikuIFdoZW4gb2Jq ZWN0IGlzIE5PVCBhbGl2ZSwgYWZ0ZXIgZnJlZSBvYmplY3Q6DQo+ID4gPiA+ID4gPiA+IDJhKS4g d2hlbiBvYmplY3QgaXMgaW4gcXVhcmFudGluZSwgdGhlbiBpdCBjYW4gcHJpbnQgZnJlZSBzdGFj aw0KPiA+ID4gPiA+ID4gPiAyYikuIHdoZW4gb2JqZWN0IGlzIE5PVCBpbiBxdWFyYW50aW5lLCB0 aGVuIGl0IGNhbiBOT1QgcHJpbnQgZnJlZSBzdGFjay4NCj4gPiA+ID4gPiA+ID4NCj4gPiA+ID4g PiA+ID4gSSBoYXZlIGEgcXVlc3Rpb24gYWJvdXQgMiksIHdoeSB3ZSBkb24ndCBkaXJlY3RseSB1 c2UNCj4gPiA+ID4gPiA+ID4gS0FTQU5fS01BTExPQ19GUkVFPyBpZiB3ZSBkaXJlY3RseSB1c2Ug aXQsIHRoZW4gMmIpIGNhbiBwcmludCBmcmVlDQo+ID4gPiA+ID4gPiA+IHN0YWNrPyAyYikgbWF5 IGhhcyB1c2UtYWZ0ZXItZnJlZT8gc28gdGhhdCBpdCBtYXkgbmVlZCBmcmVlIHN0YWNrLg0KPiA+ ID4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+ID4gQWJvdXQgMmIpLCBJIHNlZSBhbm90aGVyIHF1ZXN0 aW9uLiBXaGVuIGRvIHFsaW5rX2ZyZWUoKSwgaXQgd2lsbCBiZQ0KPiA+ID4gPiB3cml0dGVuIEtB U0FOX0tNQUxMT0NfRlJFRSBmcm9tIEtBU0FOX0tNQUxMT0NfRlJFRVRSQUNLPyBpZiB3ZSBkb24n dA0KPiA+ID4gPiB3cml0ZSBzaGFkb3cgbWVtb3J5LCBpdCBpcyBzdGlsbCBLQVNBTl9LTUFMTE9D X0ZSRUVUUkFDSywgdGhlbiAyYikgd2lsbA0KPiA+ID4gPiBoYXZlIGZyZWUgc3RhY2s/IEJlY2F1 c2UgSSBzZWUgeW91IGFkZCBLQVNBTl9LTUFMTE9DX0ZSRUVUUkFDSyB0byBnZXQNCj4gPiA+ID4g dXNlLWFmdGVyLWZyZWUgaW4gZ2V0X3NoYWRvd19idWdfdHlwZSgpLiBzbyBzaG91bGQgaXQgbm90 IHdyaXRlDQo+ID4gPiA+IEtBU0FOX0tNQUxMT0NfRlJFRT8NCj4gPiA+DQo+ID4gPiBJdCBtYXkg b3IgbWF5IG5vdCB3b3JrLg0KPiA+ID4gVGhlIHBvdGVudGlhbCBwcm9ibGVtIGlzIHRoYXQgd2hl biBxbGlua19mcmVlIGNhbGxzIF9fX2NhY2hlX2ZyZWUsDQo+ID4gPiBzbGFiL3NsdWIgbWF5IHN0 YXJ0IHVzaW5nIG9iamVjdCBtZW1vcnkgZm9yIGl0cyBvd24gcHVycG9zZXMsIGUuZy4NCj4gPiA+ IHN0b3JlIHRoZSBuZXh0IGxpbmsuIFRoaXMgbmV4dCBsaW5rIG1heSBvdmVyd3JpdGUgcGFydCBv ZiBmcmVlIG1ldGEuDQo+ID4gPiBJdCBhY3R1YWxseSBtYXkgd29yayBiZWNhdXNlIHRoZSBzbGFi L3NsaWIgbmV4dCBsaW5rIGlzIGxpa2VseSB0bw0KPiA+ID4gb3ZlcmxhcCB3aXRoIGthc2FuX2Zy ZWVfbWV0YS5xdWFyYW50aW5lX2xpbmsgb25seS4gQW5kIHdlIG1heSBoYXZlDQo+ID4gPiBrYXNh bl9mcmVlX21ldGEuZnJlZV90cmFjayBpbnRhY3Qgd2hpbGUgS0FTQU5fS01BTExPQ19GUkVFIGlz IHNldC4gQnV0DQo+ID4gPiB0aGlzIG5lZWRzIGNhcmVmdWwgY2hlY2tpbmcgZm9yIGJvdGggc2xh YiBhbmQgc2x1YiBhbmQgaWYgdGhleSBtYXkgdXNlDQo+ID4gPiBtb3JlIHRoYW4gMSB3b3JkIGlu IHNvbWUgY29uZmlndXJhdGlvbnMuDQo+ID4gPg0KPiA+DQo+ID4gVGhpcyBwcm9ibGVtIGxvb2tz IGxpa2UgZXhpc3RpbmcsIGV2ZW4gd2l0aG91dCB0aGlzIGNoYW5nZT8gY3VycmVudGx5DQo+ID4g S0FTQU4gbWF5IGdldCB3cm9uZyBmcmVlIHN0YWNrPw0KPiANCj4gTm8sIHdlIHNob3VsZCBub3Qg aGF2ZSB0aGlzIHByb2JsZW0gbm93LiBDdXJyZW50bHkgZnJlZSB0cmFjayBpcw0KPiBzdG9yZWQg aW4gYWxsb2MgbWV0YS4gQWxsb2MgbWV0YSBkb2VzIG5vdCBvdmVybGFwIHdpdGggdGhlIG9iamVj dC4NCj4gSXQncyBvbmx5IGZyZWUgbWV0YSB0aGF0IG92ZXJsYXBzIHdpdGggdGhlIG9iamVjdCBh bmQgc2xhYiBtZXRhZGF0YSBhdA0KPiBkaWZmZXJlbnQgcGVyaW9kcyBvZiB0aGUgYmxvY2sgbGlm ZXRpbWUuIFNjaGVtYXRpY2FsbHkgd2hhdCB3ZSBoYXZlDQo+IGlzOg0KPiANCj4gc3RydWN0IGJs b2NrX3Qgew0KPiAgIGFsbG9jX21ldGEga2FzYW5fYWxsb2NfbWV0YTsNCj4gICB1bmlvbiB7DQo+ ICAgICB1c2VyX2RhdGEgY2hhcltOXTsNCj4gICAgIHNsYWJfbWV0YSBzbGFiX21ldGE7DQo+ICAg ICBmcmVlX21ldGEga2FzYW5fZnJlZV9tZXRhOw0KPiAgIH07DQo+IH0NCj4gDQo+IGZyZWVfbWV0 YSBzaGFyZWQgc3RvcmFnZSBzcGFjZSB3aXRoIDIgb3RoZXIgdGhpbmdzLg0KPiANCg0KQWguLi5J IGZvcmdldCBpdCBpcyBzdG9yZWQgaW4gYWxsb2MgbWF0YSwgWWVzLCBpdCBzaG91bGQgbm90IGhh dmUgdGhpcw0KcHJvYmxlbS4NCg0KVGhhbmtzIGZvciB5b3VyIGRldGFpbGVkIGV4cGxhbmF0aW9u DQoNCj4gPiBSZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhlIHNoYWRvdyBtZW1vcnkgY29udGVudCBp cw0KPiA+IEtBU0FOX0tNQUxMT0NfRlJFRVRSQUNLIG9yIEtBU0FOX0tNQUxMT0NfRlJFRSwgaXQg bWF5IGhhdmUgdGhpcyBwcm9ibGVtPw0KPiANCj4gS0FTQU5fS01BTExPQ19GUkVFVFJBQ0sgaXMg c2V0IG9ubHkgd2hlbiBub2JvZHkgZWxzZSB1c2VzIHRoZSBzdG9yYWdlLg0KPiANCg0KT2ssIEkg d2lsbCB1c2UgS0FTQU5fS01BTExPQ19GUkVFLiBJZiB5b3UgaGF2ZSBhbnkgY29uY2VybnMsIHBs ZWFzZSB0ZWxsIG1lLg0KVGhhbmtzLg0KDQo+ID4gQnV0IGJlY2F1c2Ugb2Yga2FzYW5fZ2V0X2Zy ZWVfdHJhY2soKSBoYXZlIGNvbmRpdGlvbnMgdG8gZ2V0IGZyZWUgdHJhY2ssDQo+ID4gc28gdGhh dCBpZiBzaGFkb3cgbWVtb3J5IGNvbnRlbnQgaXMgS0FTQU5fS01BTExPQ19GUkVFLCB0aGVuIGl0 IHdpbGwNCj4gPiBhdm9pZCB0aGlzIHByb2JsZW0gYW5kIGFsd2F5cyBwcmludCByaWdodCBmcmVl IHN0YWNrLg0KPiANCj4gDQo+IA0KPiA+ID4gPiA+ID4gV2UgY2FuJ3QgdXNlIEtBU0FOX0tNQUxM T0NfRlJFRSBiZWNhdXNlIG9mIHRoaXMgcGFydDoNCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiBz dGF0aWMgYm9vbCBfX2thc2FuX3NsYWJfZnJlZShzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGUsIHZv aWQgKm9iamVjdCwNCj4gPiA+ID4gPiA+ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcg aXAsIGJvb2wgcXVhcmFudGluZSkNCj4gPiA+ID4gPiA+IHsNCj4gPiA+ID4gPiA+IC4uLg0KPiA+ ID4gPiA+ID4gICAgIGthc2FuX3BvaXNvbl9zaGFkb3cob2JqZWN0LCByb3VuZGVkX3VwX3NpemUs IEtBU0FOX0tNQUxMT0NfRlJFRSk7DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gICAgIGlmICgo SVNfRU5BQkxFRChDT05GSUdfS0FTQU5fR0VORVJJQykgJiYgIXF1YXJhbnRpbmUpIHx8DQo+ID4g PiA+ID4gPiAgICAgICAgICAgICB1bmxpa2VseSghKGNhY2hlLT5mbGFncyAmIFNMQUJfS0FTQU4p KSkNCj4gPiA+ID4gPiA+ICAgICAgICAgcmV0dXJuIGZhbHNlOw0KPiA+ID4gPiA+ID4NCj4gPiA+ ID4gPiA+ICAgICBrYXNhbl9zZXRfZnJlZV9pbmZvKGNhY2hlLCBvYmplY3QsIHRhZyk7DQo+ID4g PiA+ID4gPiAuLi4NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBPaywgSSBzZWUu IFdoZW4gcmV0dXJuIGZhbHNlLCB0aGVuIHRoZSBzaGFkb3cgbWVtb3J5IGNvbnRlbnQgaGFzDQo+ ID4gPiA+ID4gS0FTQU5fS01BTExPQ19GUkVFLCBidXQgaXQgZG9lc24ndCBzZXQgZnJlZSBzdGFj aywgc28gdGhhdCB3ZSBuZWVkIHRvDQo+ID4gPiA+ID4gYXZvaWQgdGhpcyBzaXR1YXRpb24uIFRo YW5rIGZvciB5b3UgcmVtaW5kZXIuDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4g PiBXZSBtYXkgc2V0IEtBU0FOX0tNQUxMT0NfRlJFRSwgYnV0IG5vdCBzZXQgdGhlIHRyYWNrIChv ciBldmVuIGhhdmUNCj4gPiA+ID4gPiA+IG1lbW9yeSBmb3IgdGhlIHRyYWNrISkuDQo+ID4gPiA+ ID4gPiBUaGUgb2JqZWN0IG1heSBub3QgaGF2ZSBmcmVlIG1ldGEgYWxsb2NhdGVkIGF0IGFsbCwg ZS5nLiB2ZXJ5IGxhcmdlDQo+ID4gPiA+ID4gPiBvYmplY3Qgd2l0aCBjdG9yIChubyBwbGFjZSB0 byBzdG9yZSBtZXRhKSwgb3IgaXQgbWF5IGJlIGluIGEgbWVtcG9vbDoNCj4gPiA+ID4gPiA+IGh0 dHBzOi8vZWxpeGlyLmJvb3RsaW4uY29tL2xpbnV4L3Y1LjctcmM2L3NvdXJjZS9tbS9tZW1wb29s LmMjTDEwOQ0KPiA+ID4gPiA+ID4gYW5kIG1lbXBvb2wgbWF5IGJlIHVzaW5nIHRoZSBvYmplY3Qg bWVtb3J5IGl0c2VsZiAoZm9yIGl0cyBvd24gbmV4dA0KPiA+ID4gPiA+ID4gbGluayBvciBzb21l dGhpbmcpLg0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IEtBU0FOX0tNQUxMT0NfRlJFRVRSQUNL IHZlcnkgZXhwbGljaXRseSB0cmFja3MgdGhlIGV4YWN0IGNvbmRpdGlvbiB3ZQ0KPiA+ID4gPiA+ ID4gd2FudDogd2UgaGF2ZSBtZXRhIGluZm8gbGl2ZSBub3cgYW5kIHdlIGhhdmUgZnJlZSB0cmFj ayBzZXQuDQo+IA0KDQoNCg==