Received: by 2002:a25:1985:0:0:0:0:0 with SMTP id 127csp402382ybz; Wed, 22 Apr 2020 00:04:43 -0700 (PDT) X-Google-Smtp-Source: APiQypLZ5Cn9xR3akNr8grpCL/mzBWdjD95tvC6aosPGHKOZq+i2P0NCXjVY2xY1VeL8LLBQRTIt X-Received: by 2002:a05:6402:286:: with SMTP id l6mr13969610edv.134.1587539082956; Wed, 22 Apr 2020 00:04:42 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1587539082; cv=none; d=google.com; s=arc-20160816; b=Jtdc2ZXtutmsvQPHWPPjEU7ost+BrYEYJPsd88LT0Uh66FI/2ups7J2NR1Zoun6lkY VjSnlEwMHX7GcdWLpxCrcYsobAljFWVyF6iJ6EsHmhLLLuWrzeGGbbVXh+AgOl/qGO1Q 9XWRdwb+cGkRN6xNr1zOB7BOZfENiqkE23pCl47jVGDWGdVr1IazrKu3Z5ZTs+GqioN2 Mef8IgMx78nCkJ0WC7v/EVF+hs3rmUwL4DGY/+J/5t308snUuaaZVZqAvXSCWOswusKZ zMCPdkbr7y9ExW8tp8/nbn+Flpk5vlgKQXFZIicpw1mloOwfAKkt5MidSAOKwT0UDaOn VpeQ== 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=WZlVM4OFd9xlCa1HjfJepeR66sjCPRA5ojG3YrOAAXg=; b=QO5vtASi4a+5PkppoeOimFjxhv4DqdUpNJgzaaUVTmmZw3pfbSYggQ5rwoZS4wqjSs F9ug1QEw5FGL4+2xIaVNim9HW9wP0HmJk8bDCXSPvNvYudVjAHCdF3rq0KFr0sGnr4g/ n/UCmQTN41CaqB0S03Dw4fRuCVd/3vNnObi9z7tb1CL4jjfnfkhq79X6qAim2Xie0MnU lZJ4lYAoMZMXOMY+beaRNhGagFY3E+rTWXmXyYL8eRC8a5ErQWByqeF3JyX2ph4lwn3I gq0QhjsjgFcYoHLL8JIt7H78AzkOlVLZiDplfulf3mdP9f216JhTg9s5S2Vf1haNP5Fe TlBQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@mediatek.com header.s=dk header.b=PIdqx8uF; 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 b9si3290661ejq.79.2020.04.22.00.04.19; Wed, 22 Apr 2020 00:04:42 -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=PIdqx8uF; 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 S1726335AbgDVHA4 (ORCPT + 99 others); Wed, 22 Apr 2020 03:00:56 -0400 Received: from mailgw02.mediatek.com ([210.61.82.184]:14078 "EHLO mailgw02.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1725810AbgDVHAz (ORCPT ); Wed, 22 Apr 2020 03:00:55 -0400 X-UUID: 8b0ad01e5700497b8c4efdc4ab5e2653-20200422 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=WZlVM4OFd9xlCa1HjfJepeR66sjCPRA5ojG3YrOAAXg=; b=PIdqx8uFu16qo03Lghostthy9PtQVFXGO4jwVgcU6qYR/0Waaz4kVfupYk1hYKKlzu87FYbKW1X7mt+NTgZGbdEdb4BYvvqxsz/b31wkQglatQHPyBMHIOO8926MXt5v2D8vY1JeqbRw76VUE6sS91GPOJMCr/simvL41cH0nV0=; X-UUID: 8b0ad01e5700497b8c4efdc4ab5e2653-20200422 Received: from mtkcas11.mediatek.inc [(172.21.101.40)] by mailgw02.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.10 Build 0809 with TLS) with ESMTP id 618651464; Wed, 22 Apr 2020 15:00:46 +0800 Received: from MTKCAS36.mediatek.inc (172.27.4.186) by mtkmbs07n1.mediatek.inc (172.21.101.16) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Wed, 22 Apr 2020 15:00:44 +0800 Received: from [10.17.3.153] (10.17.3.153) by MTKCAS36.mediatek.inc (172.27.4.170) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Wed, 22 Apr 2020 15:00:41 +0800 Message-ID: <1587538807.24163.102.camel@mhfsdcap03> Subject: Re: [PATCH v4 5/5] media: platform: Add jpeg dec/enc feature From: Xia Jiang To: Tomasz Figa CC: Hans Verkuil , Mauro Carvalho Chehab , Rob Herring , "Matthias Brugger" , Rick Chang , "linux-media@vger.kernel.org" , "devicetree@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" , "linux-mediatek@lists.infradead.org" , Marek Szyprowski , srv_heupstream Date: Wed, 22 Apr 2020 15:00:07 +0800 In-Reply-To: References: <20191017084033.28299-1-xia.jiang@mediatek.com> <20191017084033.28299-6-xia.jiang@mediatek.com> <20191023103945.GA41089@chromium.org> <1575626384.17879.81.camel@mhfsdcap03> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.10.4-0ubuntu2 MIME-Version: 1.0 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 T24gVHVlLCAyMDIwLTAzLTEwIGF0IDEzOjE3ICswOTAwLCBUb21hc3ogRmlnYSB3cm90ZToNCj4g SGkgWGlhLA0KPiANCj4gT24gRnJpLCBEZWMgNiwgMjAxOSBhdCA2OjU5IFBNIFhpYSBKaWFuZyA8 eGlhLmppYW5nQG1lZGlhdGVrLmNvbT4gd3JvdGU6DQo+ID4NCj4gPiBPbiBXZWQsIDIwMTktMTAt MjMgYXQgMTg6MzkgKzA4MDAsIFRvbWFzeiBGaWdhIHdyb3RlOg0KPiA+ID4gSGkgWGlhLA0KPiA+ ID4NCj4gPiA+IE9uIFRodSwgT2N0IDE3LCAyMDE5IGF0IDA0OjQwOjM4UE0gKzA4MDAsIFhpYSBK aWFuZyB3cm90ZToNCj4gPiA+ID4gQWRkIG10ayBqcGVnIGVuY29kZSB2NGwyIGRyaXZlciBiYXNl ZCBvbiBqcGVnIGRlY29kZSwgYmVjYXVzZSB0aGF0IGpwZWcNCj4gPiA+ID4gZGVjb2RlIGFuZCBl bmNvZGUgaGF2ZSBncmVhdCBzaW1pbGFyaXRpZXMgd2l0aCBmdW5jdGlvbiBvcGVyYXRpb24uDQo+ ID4gPiA+DQo+ID4gPiA+IFNpZ25lZC1vZmYtYnk6IFhpYSBKaWFuZyA8eGlhLmppYW5nQG1lZGlh dGVrLmNvbT4NCj4gPiA+ID4gLS0tDQo+ID4gPiA+IHY0OiBzcGxpdCBtdGtfanBlZ190cnlfZm10 X21wbGFuZSgpIHRvIHR3byBmdW5jdGlvbnMsIG9uZSBmb3IgZW5jb2RlciwNCj4gPiA+ID4gICAg IG9uZSBmb3IgZGVjb2Rlci4NCj4gPiA+ID4gICAgIHNwbGl0IG10a19qcGVnX3NldF9kZWZhdWx0 X3BhcmFtcygpIHRvIHR3byBmdW5jdGlvbnMsIG9uZSBmb3INCj4gPiA+ID4gICAgIGVuY29kZXIs IG9uZSBmb3IgZGVjb2Rlci4NCj4gPiA+ID4gICAgIGFkZCBjcm9wcGluZyBzdXBwb3J0IGZvciBl bmNvZGVyIGluIGcvc19zZWxlY3Rpb24gaW9jdGxzLg0KPiA+ID4gPiAgICAgY2hhbmdlIGV4aWYg bW9kZSBzdXBwb3J0IGJ5IHVzaW5nIFY0TDJfSlBFR19BQ1RJVkVfTUFSS0VSX0FQUDEuDQo+ID4g PiA+ICAgICBjaGFuZ2UgTVRLX0pQRUdfTUFYX1dJRFRIL01US19KUEVHX01BWF9IRUlHSCBmcm9t IDgxOTIgdG8gNjU1MzUgYnkNCj4gPiA+ID4gICAgIHNwZWNpZmljYXRpb24uDQo+ID4gPiA+ICAg ICBtb3ZlIHdpZHRoIHNoaWZ0aW5nIG9wZXJhdGlvbiBiZWhpbmQgYWxpZ25pbmcgb3BlcmF0aW9u IGluDQo+ID4gPiA+ICAgICBtdGtfanBlZ190cnlfZW5jX2ZtdF9tcGxhbmUoKSBmb3IgYnVnIGZp eC4NCj4gPiA+ID4gICAgIGZpeCB1c2VyIGFidXNlaW5nIGRhdGFfb2Zmc2V0IGlzc3VlIGZvciBE TUFCVUYgaW4NCj4gPiA+ID4gICAgIG10a19qcGVnX3NldF9lbmNfc3JjKCkuDQo+ID4gPiA+ICAg ICBmaXgga2J1aWxkIHdhcmluZ3M6IGNoYW5nZSBNVEtfSlBFR19NSU5fSEVJR0hUL01US19KUEVH X01BWF9IRUlHSFQNCj4gPiA+ID4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIE1US19KUEVH X01JTl9XSURUSC9NVEtfSlBFR19NQVhfV0lEVEggZnJvbQ0KPiA+ID4gPiAgICAgICAgICAgICAg ICAgICAgICAgICAnaW50JyB0eXBlIHRvICd1bnNpZ25lZCBpbnQnIHR5cGUuDQo+ID4gPiA+ICAg ICAgICAgICAgICAgICAgICAgICAgIGZpeCBtc2xlYWRpbmdseSBpbmRlbnRlZCBvZiAnZWxzZScu DQo+ID4gPiA+DQo+ID4gPiA+IHYzOiBkZWxldGUgQ2hhbmdlLUlkLg0KPiA+ID4gPiAgICAgb25s eSB0ZXN0IG9uY2UgaGFuZGxlci0+ZXJyb3IgYWZ0ZXIgdGhlIGxhc3QgdjRsMl9jdHJsX25ld19z dGQoKS4NCj4gPiA+ID4gICAgIHNlcGVyYXRlIGNoYW5nZXMgb2YgdjRsMi1jdHJscy5jIGFuZCB2 NGwyLWNvbnRyb2xzLmggdG8gbmV3IHBhdGNoLg0KPiA+ID4gPg0KPiA+ID4gPiB2MjogZml4IGNv bXBsaWFuY2UgdGVzdCBmYWlsLCBjaGVjayBjcmVhdGVkIGJ1ZmZlciBzaXplIGluIGRyaXZlci4N Cj4gPiA+ID4gLS0tDQo+ID4gPiA+ICBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay1qcGVnL01h a2VmaWxlICAgICAgfCAgIDUgKy0NCj4gPiA+ID4gIC4uLi9tZWRpYS9wbGF0Zm9ybS9tdGstanBl Zy9tdGtfanBlZ19jb3JlLmMgICB8IDczMSArKysrKysrKysrKysrKystLS0NCj4gPiA+ID4gIC4u Li9tZWRpYS9wbGF0Zm9ybS9tdGstanBlZy9tdGtfanBlZ19jb3JlLmggICB8IDEyMyArKy0NCj4g PiA+ID4gIC4uLi9tZWRpYS9wbGF0Zm9ybS9tdGstanBlZy9tdGtfanBlZ19kZWNfaHcuaCB8ICAg NyArLQ0KPiA+ID4gPiAgLi4uL21lZGlhL3BsYXRmb3JtL210ay1qcGVnL210a19qcGVnX2VuY19o dy5jIHwgMTc1ICsrKysrDQo+ID4gPiA+ICAuLi4vbWVkaWEvcGxhdGZvcm0vbXRrLWpwZWcvbXRr X2pwZWdfZW5jX2h3LmggfCAgNjAgKysNCj4gPiA+ID4gIC4uLi9wbGF0Zm9ybS9tdGstanBlZy9t dGtfanBlZ19lbmNfcmVnLmggICAgICB8ICA0OSArKw0KPiA+ID4gPiAgNyBmaWxlcyBjaGFuZ2Vk LCAxMDA0IGluc2VydGlvbnMoKyksIDE0NiBkZWxldGlvbnMoLSkNCj4gPiA+ID4gIGNyZWF0ZSBt b2RlIDEwMDY0NCBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay1qcGVnL210a19qcGVnX2VuY19o dy5jDQo+ID4gPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9t dGstanBlZy9tdGtfanBlZ19lbmNfaHcuaA0KPiA+ID4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRy aXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLWpwZWcvbXRrX2pwZWdfZW5jX3JlZy5oDQo+ID4gPiA+ DQo+ID4gPg0KPiA+ID4gRmlyc3Qgb2YgYWxsLCB0aGFua3MgZm9yIHRoZSBwYXRjaCENCj4gPiA+ DQo+ID4gPiBQbGVhc2UgY2hlY2sgbXkgY29tbWVudHMgYmVsb3cuDQo+ID4gPg0KPiA+ID4gTXkg Z2VuZXJhbCBmZWVsaW5nIGFib3V0IHRoaXMgY29kZSBpcyB0aGF0IHRoZSBlbmNvZGVyIGhhcmR3 YXJlIGJsb2NrIGlzDQo+ID4gPiBjb21wbGV0ZWx5IG9ydGhvZ29uYWwgZnJvbSB0aGUgZGVjb2Rl ciBibG9jayBhbmQgdGhlcmUgaXMgdmVyeSBsaXR0bGUgY29kZQ0KPiA+ID4gcmV1c2UgZnJvbSB0 aGUgb3JpZ2luYWwgZGVjb2RlciBkcml2ZXIuDQo+ID4gPg0KPiA+ID4gTW9yZW92ZXIsIGEgbG90 IG9mIGV4aXN0aW5nIGNvZGUgbm93IG5lZWRzIGlmIChkZWNvZGVyKSB7IC4uLiB9IGVsc2Ugey4u LiB9DQo+ID4gPiBzZWdtZW50cywgd2hpY2ggY29tcGxpY2F0ZXMgdGhlIGNvZGUuDQo+ID4gPg0K PiA+ID4gV291bGQgaXQgcGVyaGFwcyBtYWtlIHNlbnNlIHRvIGluc3RlYWQgY3JlYXRlIGEgc2Vw YXJhdGUgbXRrLWpwZWctZW5jDQo+ID4gPiBkcml2ZXI/DQo+ID4gPg0KPiA+ID4gSXQgd291bGQg YWxzbyBnaXZlIHVzIGEgZnJlc2ggc3RhcnQgaW4gdGVybXMgb2YgY29kZSBxdWFsaXR5LCBhcyB0 aGUNCj4gPiA+IGV4aXN0aW5nIG10ay1qcGVnIGRyaXZlciBoYXMgYSBsb3Qgb2YgcXVhbGl0eSBp c3N1ZXMgdW5mb3J0dW5hdGVseS4gKFNvbWUNCj4gPiA+IG9mIG15IGNvbW1lbnRzIHRvIHRoaXMg cGF0Y2ggYWN0dWFsbHkgcmVsYXRlIHRvIHRoZSBpc3N1ZXMgd2l0aCB0aGUNCj4gPiA+IG9yaWdp bmFsIGNvZGUsIG5vdCBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2gsIGJ1dCB3ZSBuZWVkIHRvIGZp eCB0aGVtIGlmDQo+ID4gPiBjaGFuZ2luZyB0aGlzIGRyaXZlciBhbHJlYWR5LikNCj4gPiA+DQo+ ID4gRGVhciBUb21hc3osDQo+ID4NCj4gPiBJIGhhdmVkIGZpeGVkIHRoZSBkcml2ZXIgYnkgZm9s bG93aW5nIHlvdXIgYWR2aWNlIGluIGdlbmVyYWwuDQo+ID4NCj4gPiBQbGVhc2UgY2hlY2sgbXkg cmVwbHkgYmVsb3cuDQo+IA0KPiBTb3JyeSwgSSBtaXNzZWQgdGhpcyBtZXNzYWdlIG9yaWdpbmFs bHkuIFJlcGxpZWQgYmVsb3cuDQoNCkRlYXIgVG9tYXN6LA0KDQpUaGFuayB5b3UgZm9yIHlvdXIg cmVwbHkuSSBoYXZlIGNoYW5nZWQgdGhlIGRyaXZlciBpbiB0aGUgVjggdmVyc2lvbg0KYnkgZm9s bG93aW5nIHlvdXIgZ29vZCBhZHZpY2UuDQo+IA0KPiBbc25pcF0NCj4gPiA+ID4gKyAgIH0NCj4g PiA+ID4gKyAgIHBhcmFtLT5lbmNfdyA9IHFfZGF0YV9zcmMtPnc7DQo+ID4gPiA+ICsgICBwYXJh bS0+ZW5jX2ggPSBxX2RhdGFfc3JjLT5oOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsgICBpZiAoanBl Z19wYXJhbXMtPmVuY19xdWFsaXR5ID49IDk3KQ0KPiA+ID4gPiArICAgICAgICAgICBwYXJhbS0+ ZW5jX3F1YWxpdHkgPSBKUEVHX0VOQ09ERV9RVUFMSVRZX1E5NzsNCj4gPiA+ID4gKyAgIGVsc2Ug aWYgKGpwZWdfcGFyYW1zLT5lbmNfcXVhbGl0eSA+PSA5NSkNCj4gPiA+ID4gKyAgICAgICAgICAg cGFyYW0tPmVuY19xdWFsaXR5ID0gSlBFR19FTkNPREVfUVVBTElUWV9ROTU7DQo+ID4gPg0KPiA+ ID4gSSdtIHdvbmRlcmluZyBpZiB0aGUgYXBwbGljYXRpb24gcmVxdWVzdHMgOTYsIGl0IGRvZXNu J3QgZXhwZWN0IHRoZSBxdWFsaXR5IHRvDQo+ID4gPiBiZSBfYXRfbGVhc3RfIDk2Lg0KPiA+IG91 ciBqcGVnIGVuYyBodyBkbyBub3Qgc3VwcG9ydCBxdWFsaXR5IDk2LG9ubHkgc3VwcG9ydCAxNSBr aW5kcyBvZiBxdWFudA0KPiA+IHRhYmxlIGxpc3RlZCBoZXJlLCBzbyBpZiB0aGUgYXBwbGljYXRp b24gcmVxdWVzdHMgOTYsYSBuZWFyZXN0IGFuZA0KPiA+IGhpZ2hlc3QgcXVhbGl0eSB3aWxsIGJl IGdpdmVuLg0KPiA+ID4NCj4gDQo+IEp1c3QgdG8gY2xhcmlmeSBteSBjb21tZW50LCBpZiBJIHJl bWVtYmVyIGNvcnJlY3RseSwgdGhlIEpQRUcgc3RhbmRhcmQNCj4gZGVmaW5lcyB0aGUgMTAwIGxl dmVscywgc28gaWYgdGhlIGFwcGxpY2F0aW9uIHJlcXVlc3RzIGxldmVsIDk2LCBidXQNCj4gdGhl IGhhcmR3YXJlIHByb3ZpZGVzIG9ubHkgOTUgYW5kIDk3LCB0aGUgcXVhbGl0eSBzaG91bGQgYmUg ZmF2b3JlZA0KPiBhbmQgOTcgdXNlZC4NCmRvbmUuDQo+IA0KPiBbc25pcF0NCj4gPiA+DQo+ID4g PiA+ICsgICBwYXJhbS0+bWVtX3N0cmlkZSA9IG10a19qcGVnX2FsaWduKHdpZHRoX2V2ZW4sIChp c180MjAgPyAxNiA6IDMyKSk7DQo+ID4gPg0KPiA+ID4gV2hhdCdzIHRoZSBkaWZmZXJlbmNlIGJl dHdlZW4gaW1nX3N0cmlkZSBhbmQgbWVtX3N0cmlkZT8NCj4gPg0KPiA+IEluIHRoZW9yeSwgbWVt X3N0cmlkZSBuZWVkID49IGltZ19zdHJpZGUsYnV0IHdlIHVzZSB0aGUgc2FtZSBpcyBvaw0KPiA+ ID4NCj4gPiA+ID4gKyAgIHBhcmFtLT50b3RhbF9lbmNkdSA9DQo+ID4gPiA+ICsgICAgICAgICAg ICgocGFkZGluZ193aWR0aCA+PiA0KSAqIChwYWRkaW5nX2hlaWdodCA+PiAoaXNfNDIwID8gNCA6 IDMpKSAqDQo+ID4gPiA+ICsgICAgICAgICAgIChpc180MjAgPyA2IDogNCkpIC0gMTsNCj4gPiA+ DQo+ID4gPiBUaGUgY29tbWVudCBhYm92ZSB0aGUgc3RydWN0IHNheXMgdGhpcyBpcyB0aGUgdG90 YWwgbnVtYmVyIG9mIDh4OCBibG9ja3MuDQo+ID4gPiBXaHkgd291bGQgaXQgZGVwZW5kIG9uIHdo ZXRoZXIgdGhlIGZvcm1hdCBpcyBZVVYgNDoyOjA/IFNpbmNlIHdlIHNob3VsZA0KPiA+ID4gaGF2 ZSBhbHJlYWR5IGFsaWduZWQgdGhlIHdpZHRoIGFuZCBoZWlnaHQgaW4gdHJ5X2ZtdCwgdGhpcyBz aG91bGQgYmUgYXMNCj4gPiA+IHNpbXBsZSBhcyAod2lkdGggLyA4KSAqIChoZWlnaHQgLyA4KS4N Cj4gPiBiZWN1YXNlIHRoZSBpbWFnZSBzaXplIGlzIHcqaCoxLjUgZm9yIHl1djQyMCBmb3JtYXQs IGJ1dCB3KmgqMiBmb3INCj4gPiB5dXY0MjIsc28gZm9yIHl1djQyMDogd18xNi84KmhfMTYvOCox LjUtMShiZWNhdXNlIHRoZSBodyB3aWxsIHN0YXJ0IGF0DQo+ID4gbnVtYmVyIDApLCB5dXY0MjI6 IHdfMzIvOCpoXzgvOCoyLTEsdGhpcyBudW1iZXIgaXMgZXF1YWwgdG8gbXkgY29kZS4NCj4gDQo+ IERvIHlvdSBtZWFuIHRoYXQgdGhpcyBhbHNvIGluY2x1ZGVzIHRoZSBDYiBhbmQgQ3IgOHg4IGJs b2NrcyBzZXBhcmF0ZWx5Pw0KPiBJZiBzbywgY291bGQgaXQgYmUgcmV3cml0dGVuIGFzIGJlbG93 IHRvIGltcHJvdmUgdGhlIHJlYWRhYmlsaXR5Pw0KPiANCj4gbHVtYV9ibG9ja3MgPSB3aWR0aCAv IDggKiBoZWlnaHQgLyA4Ow0KPiBpZiAoaXNfNDIwKQ0KPiAgICAgY2hyb21hX2Jsb2NrcyA9IGx1 bWFfYmxvY2tzIC8gNDsNCj4gZWxzZQ0KPiAgICAgY2hyb21hX2Jsb2NrcyA9IGx1bWFfYmxvY2tz IC8gMjsNCj4gcGFyYW0tPmxhc3RfZW5jZHUgPSBsdW1hX2Jsb2NrcyArIDIgKiBjaHJvbWFfYmxv Y2tzIC0gMTsNCj4gDQo+IEFsc28sIGRvZXMgaXQgbWVhbiB0aGF0IHRoaXMgbnVtYmVyIGlzIGFj dHVhbGx5IHRoZSBpbmRleCBvZiB0aGUgbGFzdA0KPiBibG9jaywgbm90IHRoZSB0b3RhbCBudW1i ZXIgb2YgYmxvY2tzPw0KeWVzLg0KPiBJZiBzbywgdGhlIGZpZWxkIHNob3VsZCBiZSBwcm9iYWJs eSByZW5hbWVkIHRvIGxhc3RfZW5jZHUgYW5kIHRoZQ0KPiBkZXNjcmlwdGlvbiB1cGRhdGVkIGFj Y29yZGluZ2x5Lg0KPiANCj4gW3NuaXBdDQo+ID4gPiBDb3VsZCB3ZSBpbnN0ZWFkIGNoZWNrIHRo ZSBidWZmZXIgYWRkcmVzcyBhbGlnbm1lbnQgaW4gLmJ1Zl9wcmVwYXJlIGFuZCBmYWlsIGlmDQo+ ID4gPiBpdCdzIG5vdCBiaWcgZW5vdWdoPw0KPiA+ID4NCj4gPiA+ID4gKyAgIGJzLT5kbWFfYWRk cl9vZmZzZXQgPSBwLT5lbmFibGVfZXhpZiA/IE1US19KUEVHX0RFRkFVTFRfRVhJRl9TSVpFIDog MDsNCj4gPiA+ID4gKyAgIGJzLT5kbWFfYWRkcl9vZmZzZXRtYXNrID0gYnMtPmRtYV9hZGRyICYg SlBFR19FTkNfRFNUX0FERFJfT0ZGU0VUX01BU0s7DQo+ID4gPg0KPiA+ID4gV2hhdCBpcyB0aGUg bWVhbmluZyBvZiB0aGlzIG9mZnNldCBtYXNrPw0KPiA+IG91ciBhY3R1YWwgZGVzdGluYXRpb24g YWRkcmVzcyA9IGRlc3RpbmF0aW9uIGFkZHJlc3MgKyBvZmZzZXQgYWRkcmVzcysNCj4gPiBkZXN0 aW5hdGlvbiBhZGRyZXNzIG9mZnNldCBtYXNrLlRoZSBtYXNrIDA6Tm8gb2Zmc2V0LDF+MTU6b2Zm c2V0IGJ5dGUNCj4gPiBmcm9tIHRoZSAxNi1ieXRlIGFsaWduZWQNCj4gDQo+IFNvIHdlIGhhdmUg ZG1hX2FkZHIsIGRtYV9hZGRyX29mZnNldCBhbmQgZG1hX2FkZHJfb2Zmc2V0bWFzay4gV2h5IGRv DQo+IHdlIG5lZWQgZG1hX2FkZHJfb2Zmc2V0PyBXb3VsZCB0aGUgc2FtZSBvcGVyYXRpb24gYmUg YWNoaWV2ZWQgd2l0aCB0aGUNCj4gY29kZSBiZWxvdz8NCkJlY2F1c2UgaW4gZXhpZiBtb2RlLCB0 aGUgYmVnaW5uaW5nIG9mIHRoZSBkZXN0aW5hdGlvbiBidWZmZXIob2Zmc2V0KSBzaG91bGQgYmUg cmVzZXJ2ZWQNCmZvciB0aGUgYXBwbGljYXRpb24gdG8gZmlsbChJIGV4cGxhaW5lZCB0aGlzIG1v cmUgaW4gbXkgcmVwbHkgdG8gdGhlIHY3DQpyZXZpc2lvbikuDQo+IGRtYV9hZGRyID0gdmIyX2Rt YV9jb250aWdfcGxhbmVfZG1hX2FkZHIoZHN0X2J1ZiwgMCk7DQo+IGlmIChwLT5lbmFibGVfZXhp ZikNCj4gICAgIGRtYV9hZGRyICs9IE1US19KUEVHX0RFRkFVTFRfRVhJRl9TSVpFOw0KPiBicy0+ ZG1hX2FkZHIgPSBkbWFfYWRkciAmIH5KUEVHX0VOQ19EU1RfQUREUl9PRkZTRVRfTUFTSzsNCj4g YnMtPmRtYV9hZGRyX29mZnNldCA9IDA7DQo+IGJzLT5kbWFfYWRkcl9vZmZzZXRtYXNrID0gZG1h X2FkZHIgJiBKUEVHX0VOQ19EU1RfQUREUl9PRkZTRVRfTUFTSzsNCj4gDQo+IE9yIGRvZXMgdGhl IGhhcmR3YXJlIHdyaXRlIHNvbWV0aGluZyBkaXJlY3RseSBhdCBicy0+ZG1hX2FkZHIgKHNvbWUN Cj4gdGFncz8pIGFuZCB0aGVuIHRoZSBlbmNvZGVkIGltYWdlIGF0IHRoZSBmaW5hbCBkZXNpbnRh dGlvbiBhZGRyZXNzPw0KPiANCkhhcmR3YXJlIGp1c3Qgd3JpdGUgZW5jb2RlZCBpbWFnZSBhdCB0 aGUgZmluYWwgZGVzdGluYXRpb24gYWRkcmVzcy4NCj4gW3NuaXBdDQo+ID4gPiA+IC1zdGF0aWMg dm9pZCBtdGtfanBlZ19zZXRfZGVmYXVsdF9wYXJhbXMoc3RydWN0IG10a19qcGVnX2N0eCAqY3R4 KQ0KPiA+ID4gPiArc3RhdGljIHZvaWQgbXRrX2pwZWdfc2V0X2VuY19kZWZhdWx0X3BhcmFtcyhz dHJ1Y3QgbXRrX2pwZWdfY3R4ICpjdHgpDQo+ID4gPiA+ICt7DQo+ID4gPiA+ICsgICBzdHJ1Y3Qg bXRrX2pwZWdfcV9kYXRhICpxID0gJmN0eC0+b3V0X3E7DQo+ID4gPiA+ICsgICBpbnQgYWxpZ25f dywgYWxpZ25faDsNCj4gPiA+ID4gKw0KPiA+ID4gPiArICAgY3R4LT5maC5jdHJsX2hhbmRsZXIg PSAmY3R4LT5jdHJsX2hkbDsNCj4gPiA+ID4gKw0KPiA+ID4gPiArICAgY3R4LT5jb2xvcnNwYWNl ID0gVjRMMl9DT0xPUlNQQUNFX0pQRUcsDQo+ID4gPiA+ICsgICBjdHgtPnljYmNyX2VuYyA9IFY0 TDJfWUNCQ1JfRU5DX0RFRkFVTFQ7DQo+ID4gPiA+ICsgICBjdHgtPnF1YW50aXphdGlvbiA9IFY0 TDJfUVVBTlRJWkFUSU9OX0RFRkFVTFQ7DQo+ID4gPiA+ICsgICBjdHgtPnhmZXJfZnVuYyA9IFY0 TDJfWEZFUl9GVU5DX0RFRkFVTFQ7DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgIHEtPncgPSBNVEtf SlBFR19NSU5fV0lEVEg7DQo+ID4gPiA+ICsgICBxLT5oID0gTVRLX0pQRUdfTUlOX0hFSUdIVDsN Cj4gPiA+ID4gKw0KPiA+ID4gPiArICAgcS0+Zm10ID0gbXRrX2pwZWdfZmluZF9mb3JtYXQoY3R4 LCBWNEwyX1BJWF9GTVRfWVVZViwNCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIE1US19KUEVHX0ZNVF9UWVBFX09VVFBVVCk7DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAg IGFsaWduX3cgPSBxLT53Ow0KPiA+ID4gPiArICAgYWxpZ25faCA9IHEtPmg7DQo+ID4gPiA+ICsg ICBhbGlnbl93ID0gcm91bmRfdXAoYWxpZ25fdywgMik7DQo+ID4gPiA+ICsgICB2NGxfYm91bmRf YWxpZ25faW1hZ2UoJmFsaWduX3csIE1US19KUEVHX01JTl9XSURUSCwgTVRLX0pQRUdfTUFYX1dJ RFRILA0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgIDUsICZhbGlnbl9oLCBNVEtf SlBFR19NSU5fSEVJR0hULA0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgIE1US19K UEVHX01BWF9IRUlHSFQsIDMsIDApOw0KPiA+ID4gPiArICAgYWxpZ25fdyA9IGFsaWduX3cgPDwg MTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArICAgaWYgKGFsaWduX3cgPCBNVEtfSlBFR19NSU5fV0lE VEggJiYNCj4gPiA+ID4gKyAgICAgICAoYWxpZ25fdyArIDMyKSA8PSBNVEtfSlBFR19NQVhfV0lE VEgpDQo+ID4gPiA+ICsgICAgICAgICAgIGFsaWduX3cgKz0gMzI7DQo+ID4gPiA+ICsgICBpZiAo YWxpZ25faCA8IE1US19KUEVHX01JTl9IRUlHSFQgJiYNCj4gPiA+ID4gKyAgICAgICAoYWxpZ25f aCArIDgpIDw9IE1US19KUEVHX01BWF9IRUlHSFQpDQo+ID4gPiA+ICsgICAgICAgICAgIGFsaWdu X2ggKz0gODsNCj4gPiA+ID4gKw0KPiA+ID4gPiArICAgcS0+c2l6ZWltYWdlWzBdID0gYWxpZ25f dyAqIGFsaWduX2g7DQo+ID4gPiA+ICsgICBxLT5ieXRlc3BlcmxpbmVbMF0gPSBhbGlnbl93Ow0K PiA+ID4gPiArDQo+ID4gPiA+ICsgICBxID0gJmN0eC0+Y2FwX3E7DQo+ID4gPiA+ICsgICBxLT53 ID0gTVRLX0pQRUdfTUlOX1dJRFRIOw0KPiA+ID4gPiArICAgcS0+aCA9IE1US19KUEVHX01JTl9I RUlHSFQ7DQo+ID4gPiA+ICsgICBxLT5mbXQgPSBtdGtfanBlZ19maW5kX2Zvcm1hdChjdHgsIFY0 TDJfUElYX0ZNVF9KUEVHLA0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgTVRLX0pQRUdfRk1UX1RZUEVfQ0FQVFVSRSk7DQo+ID4gPiA+ICsgICBxLT5ieXRlc3Blcmxp bmVbMF0gPSAwOw0KPiA+ID4gPiArICAgcS0+c2l6ZWltYWdlWzBdID0gTVRLX0pQRUdfREVGQVVM VF9TSVpFSU1BR0U7DQo+ID4gPiA+ICt9DQo+ID4gPg0KPiA+ID4gQ291bGQgd2UganVzdCBjcmVh dGUgYW4gYXJiaXRyYXJ5IHY0bDJfcGl4X2Zvcm1hdF9tcGxhbmUgc3RydWN0IGFuZCBjYWxsDQo+ ID4gPiBzX2ZtdCBpbnN0ZWFkPyBJbiBnZW5lcmFsLCBhbGwgb2YgdGhlIGNvbnN0YW50IHZhbHVl cyBhbmQgYWxpZ25tZW50cyBzaG91bGQNCj4gPiA+IGJlIGFscmVhZHkgZW5zdXJlZCBieSB0cnlf Zm10LCBzbyB0aGlzIGZ1bmN0aW9uIHNob3VsZCBiZSByZWR1bmRhbnQuDQo+ID4gaWYgY2FuY2Vs IHRoaXMgZnVuY3Rpb24sdGhlIHY0bDItY29tcGxpYW5jZSB0ZXN0IHdpbGwgZmFpbA0KPiANCj4g U29ycnksIEkgZ3Vlc3MgbXkgY29tbWVudCB3YXMgbm90IGNsZWFyLiBXZSBuZWVkIHRvIGluaXRp YWxpemUgdGhlDQo+IGRlZmF1bHQgcGFyYW1ldGVycy4gSG93ZXZlciwgdGhlIGNvbnRlbnRzIG9m IHRoaXMgZnVuY3Rpb24gc2VlbSB0bw0KPiBoZWF2aWx5IGR1cGxpY2F0ZSB3aXRoIHRoZSBjb2Rl IHRoYXQgc2hvdWxkIGJlIGluIHRyeV9mbXQsIHNvIGNvdWxkIHdlDQo+IGp1c3QgY2FsbCB0cnlf Zm10IGZyb20gaGVyZSBpbnN0ZWFkIG9mIHJlcGVhdGluZyB0aGUgY2FsY3VsYXRpb25zPw0KZG9u ZS4NCj4gDQo+IFtzbmlwXQ0KPiA+ID4gPiAtICAgcmV0ID0gZGV2bV9yZXF1ZXN0X2lycSgmcGRl di0+ZGV2LCBkZWNfaXJxLCBtdGtfanBlZ19kZWNfaXJxLCAwLA0KPiA+ID4gPiArICAgcmV0ID0g ZGV2bV9yZXF1ZXN0X2lycSgmcGRldi0+ZGV2LCBqcGVnX2lycSwgbXRrX2pwZWdfaXJxLCAwLA0K PiA+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZGV2LT5uYW1lLCBqcGVnKTsNCj4g PiA+ID4gICAgIGlmIChyZXQpIHsNCj4gPiA+ID4gLSAgICAgICAgICAgZGV2X2VycigmcGRldi0+ ZGV2LCAiRmFpbGVkIHRvIHJlcXVlc3QgZGVjX2lycSAlZCAoJWQpXG4iLA0KPiA+ID4gPiAtICAg ICAgICAgICAgICAgICAgIGRlY19pcnEsIHJldCk7DQo+ID4gPiA+IC0gICAgICAgICAgIHJldCA9 IC1FSU5WQUw7DQo+ID4gPg0KPiA+ID4gVGhpcyByZW1vdmFsIG9mIHJldCBhc3NpZ25tZW50IGxv b2tzIGxpa2UgYSBzZXBhcmF0ZSBmaXggdGhhdCBzaG91bGQgYmUNCj4gPiA+IGRvbmUgaW4gaXRz IG93biBwYXRjaC4NCj4gPiB0aGlzIGNoYW5nZSBpcyBiZWNhdXNlIG9mIHRoZSBhZGRpbmcgb2Yg anBlZyBlbmMgZHJpdmVyLG5vdCB0aGUgb3JpZ25hbA0KPiA+IGRyaXZlcicgcXVlc3Rpb24sIHNo b3VsZCBJIG1vdmUgaXQgdG8gdGhlIG9yaWduYWwgZHJpdmVyJ3MgcGF0Y2g/DQo+IA0KPiBZZXMs IHBsZWFzZS4NCmRvbmUuDQo+IA0KPiA+ID4NCj4gPiA+ID4gKyAgICAgICAgICAgZGV2X2Vycigm cGRldi0+ZGV2LCAiRmFpbGVkIHRvIHJlcXVlc3QganBlZ19pcnEgJWQgKCVkKVxuIiwNCj4gPiA+ ID4gKyAgICAgICAgICAgICAgICAgICBqcGVnX2lycSwgcmV0KTsNCj4gPiA+ID4gICAgICAgICAg ICAgZ290byBlcnJfcmVxX2lycTsNCj4gPiA+ID4gICAgIH0NCj4gPiA+ID4NCj4gPiA+ID4gQEAg LTExNDAsMzMgKzE2MDIsMzUgQEAgc3RhdGljIGludCBtdGtfanBlZ19wcm9iZShzdHJ1Y3QgcGxh dGZvcm1fZGV2aWNlICpwZGV2KQ0KPiA+ID4gPiAgICAgICAgICAgICBnb3RvIGVycl9tMm1faW5p dDsNCj4gPiA+ID4gICAgIH0NCj4gPiA+ID4NCj4gPiA+ID4gLSAgIGpwZWctPmRlY192ZGV2ID0g dmlkZW9fZGV2aWNlX2FsbG9jKCk7DQo+ID4gPiA+IC0gICBpZiAoIWpwZWctPmRlY192ZGV2KSB7 DQo+ID4gPiA+ICsgICBqcGVnLT52ZmRfanBlZyA9IHZpZGVvX2RldmljZV9hbGxvYygpOw0KPiA+ ID4gPiArICAgaWYgKCFqcGVnLT52ZmRfanBlZykgew0KPiA+ID4gPiAgICAgICAgICAgICByZXQg PSAtRU5PTUVNOw0KPiA+ID4gPiAtICAgICAgICAgICBnb3RvIGVycl9kZWNfdmRldl9hbGxvYzsN Cj4gPiA+ID4gKyAgICAgICAgICAgZ290byBlcnJfdmZkX2pwZWdfYWxsb2M7DQo+ID4gPiA+ICAg ICB9DQo+ID4gPiA+IC0gICBzbnByaW50ZihqcGVnLT5kZWNfdmRldi0+bmFtZSwgc2l6ZW9mKGpw ZWctPmRlY192ZGV2LT5uYW1lKSwNCj4gPiA+ID4gLSAgICAgICAgICAgICIlcy1kZWMiLCBNVEtf SlBFR19OQU1FKTsNCj4gPiA+ID4gLSAgIGpwZWctPmRlY192ZGV2LT5mb3BzID0gJm10a19qcGVn X2ZvcHM7DQo+ID4gPiA+IC0gICBqcGVnLT5kZWNfdmRldi0+aW9jdGxfb3BzID0gJm10a19qcGVn X2lvY3RsX29wczsNCj4gPiA+ID4gLSAgIGpwZWctPmRlY192ZGV2LT5taW5vciA9IC0xOw0KPiA+ ID4gPiAtICAganBlZy0+ZGVjX3ZkZXYtPnJlbGVhc2UgPSB2aWRlb19kZXZpY2VfcmVsZWFzZTsN Cj4gPiA+ID4gLSAgIGpwZWctPmRlY192ZGV2LT5sb2NrID0gJmpwZWctPmxvY2s7DQo+ID4gPiA+ IC0gICBqcGVnLT5kZWNfdmRldi0+djRsMl9kZXYgPSAmanBlZy0+djRsMl9kZXY7DQo+ID4gPiA+ IC0gICBqcGVnLT5kZWNfdmRldi0+dmZsX2RpciA9IFZGTF9ESVJfTTJNOw0KPiA+ID4gPiAtICAg anBlZy0+ZGVjX3ZkZXYtPmRldmljZV9jYXBzID0gVjRMMl9DQVBfU1RSRUFNSU5HIHwNCj4gPiA+ ID4gKyAgIHNucHJpbnRmKGpwZWctPnZmZF9qcGVnLT5uYW1lLCBzaXplb2YoanBlZy0+dmZkX2pw ZWctPm5hbWUpLA0KPiA+ID4gPiArICAgICAgICAgICAgIiVzLSVzIiwgTVRLX0pQRUdfTkFNRSwN Cj4gPiA+ID4gKyAgICAgICAgICAgIGpwZWctPm1vZGUgPT0gTVRLX0pQRUdfRU5DID8gImVuYyIg OiAiZGVjIik7DQo+ID4gPiA+ICsgICBqcGVnLT52ZmRfanBlZy0+Zm9wcyA9ICZtdGtfanBlZ19m b3BzOw0KPiA+ID4gPiArICAganBlZy0+dmZkX2pwZWctPmlvY3RsX29wcyA9ICZtdGtfanBlZ19p b2N0bF9vcHM7DQo+ID4gPiA+ICsgICBqcGVnLT52ZmRfanBlZy0+bWlub3IgPSAtMTsNCj4gPiA+ ID4gKyAgIGpwZWctPnZmZF9qcGVnLT5yZWxlYXNlID0gdmlkZW9fZGV2aWNlX3JlbGVhc2U7DQo+ ID4gPiA+ICsgICBqcGVnLT52ZmRfanBlZy0+bG9jayA9ICZqcGVnLT5sb2NrOw0KPiA+ID4gPiAr ICAganBlZy0+dmZkX2pwZWctPnY0bDJfZGV2ID0gJmpwZWctPnY0bDJfZGV2Ow0KPiA+ID4gPiAr ICAganBlZy0+dmZkX2pwZWctPnZmbF9kaXIgPSBWRkxfRElSX00yTTsNCj4gPiA+ID4gKyAgIGpw ZWctPnZmZF9qcGVnLT5kZXZpY2VfY2FwcyA9IFY0TDJfQ0FQX1NUUkVBTUlORyB8DQo+ID4gPiA+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWNEwyX0NBUF9WSURFT19NMk1fTVBM QU5FOw0KPiA+ID4gPg0KPiA+ID4gPiAtICAgcmV0ID0gdmlkZW9fcmVnaXN0ZXJfZGV2aWNlKGpw ZWctPmRlY192ZGV2LCBWRkxfVFlQRV9HUkFCQkVSLCAzKTsNCj4gPiA+ID4gKyAgIHJldCA9IHZp ZGVvX3JlZ2lzdGVyX2RldmljZShqcGVnLT52ZmRfanBlZywgVkZMX1RZUEVfR1JBQkJFUiwgLTEp Ow0KPiA+ID4NCj4gPiA+IFRoZSBjaGFuZ2UgZnJvbSAzIHRvIC0xIGFsc28gbG9va3MgbGlrZSBz b21ldGhpbmcgZm9yIGEgc2VwYXJhdGUgcGF0Y2guDQo+ID4gc2FtZSBhcyB0aGUgYWJvdmUgcmVw bHkNCj4gDQo+IERpdHRvLg0KZG9uZS4NCj4gDQo+IFtzbmlwXQ0KPiA+ID4gPiBAQCAtMTcsMjMg KzE4LDc3IEBADQo+ID4gPiA+DQo+ID4gPiA+ICAjZGVmaW5lIE1US19KUEVHX0ZNVF9GTEFHX0RF Q19PVVRQVVQgICAgICAgQklUKDApDQo+ID4gPiA+ICAjZGVmaW5lIE1US19KUEVHX0ZNVF9GTEFH X0RFQ19DQVBUVVJFICAgICAgQklUKDEpDQo+ID4gPiA+ICsjZGVmaW5lIE1US19KUEVHX0ZNVF9G TEFHX0VOQ19PVVRQVVQgICAgICAgQklUKDIpDQo+ID4gPiA+ICsjZGVmaW5lIE1US19KUEVHX0ZN VF9GTEFHX0VOQ19DQVBUVVJFICAgICAgQklUKDMpDQo+ID4gPiA+DQo+ID4gPiA+ICAjZGVmaW5l IE1US19KUEVHX0ZNVF9UWVBFX09VVFBVVCAgIDENCj4gPiA+ID4gICNkZWZpbmUgTVRLX0pQRUdf Rk1UX1RZUEVfQ0FQVFVSRSAgMg0KPiA+ID4gPg0KPiA+ID4gPiAtI2RlZmluZSBNVEtfSlBFR19N SU5fV0lEVEggMzINCj4gPiA+ID4gLSNkZWZpbmUgTVRLX0pQRUdfTUlOX0hFSUdIVCAgICAgICAg MzINCj4gPiA+ID4gLSNkZWZpbmUgTVRLX0pQRUdfTUFYX1dJRFRIIDgxOTINCj4gPiA+ID4gLSNk ZWZpbmUgTVRLX0pQRUdfTUFYX0hFSUdIVCAgICAgICAgODE5Mg0KPiA+ID4gPiArI2RlZmluZSBN VEtfSlBFR19NSU5fV0lEVEggMzJVDQo+ID4gPiA+ICsjZGVmaW5lIE1US19KUEVHX01JTl9IRUlH SFQgICAgICAgIDMyVQ0KPiA+ID4gPiArI2RlZmluZSBNVEtfSlBFR19NQVhfV0lEVEggNjU1MzVV DQo+ID4gPiA+ICsjZGVmaW5lIE1US19KUEVHX01BWF9IRUlHSFQgICAgICAgIDY1NTM1VQ0KPiA+ ID4NCj4gPiA+IFdoeSBpcyBpdCBva2F5IHRvIGNoYW5nZSB0aGlzIGZyb20gODE5MiB0byA2NTUz NT8NCj4gPiBvdXIgaHcgc3VwcG9ydCBtYXggd2lkdGgvaGVpZ2h0IHRvIDY1NTM1DQo+IA0KPiBE b2VzIHRoaXMgYWxzbyBhcHBseSB0byB0aGUgSlBFRyBkZWNvZGVyIG9uIE1UODE3MyBmb3Igd2hp Y2ggdGhlDQo+IGRyaXZlciB3YXMgZGV2ZWxvcGVkPw0KeWVzLg0KPiANCj4gW3NuaXBdDQo+ID4g PiA+ICsvKioNCj4gPiA+ID4gKyAqIGpwZWdfZW5jX3BhcmFtIC0gcGFyYW1ldGVycyBvZiBqcGVn IGVuY29kZSBjb250cm9sDQo+ID4gPiA+ICsgKiBAZW5hYmxlX2V4aWY6ICAgRVhJRiBlbmFibGUg Zm9yIGpwZWcgZW5jb2RlIG1vZGUNCj4gPiA+ID4gKyAqIEBlbmNfcXVhbGl0eTogICBkZXN0aW5h dGlvbiBpbWFnZSBxdWFsaXR5IGluIGVuY29kZSBtb2RlDQo+ID4gPiA+ICsgKiBAcmVzdGFydF9p bnRlcnZhbDogICAgICBKUEVHIHJlc3RhcnQgaW50ZXJ2YWwgZm9yIEpQRUcgZW5jb2RpbmcNCj4g PiA+ID4gKyAqLw0KPiA+ID4gPiArc3RydWN0IGpwZWdfZW5jX3BhcmFtIHsNCj4gPiA+ID4gKyAg IHUzMiBlbmFibGVfZXhpZjsNCj4gPiA+DQo+ID4gPiBTaG91bGRuJ3QgdGhpcyBiZSBhIGJvb2w/ DQo+ID4gdGhpcyB2YWx1ZSBpcyBzZXRlZCBieSBWNEwyX0NJRF9KUEVHX0FDVElWRV9NQVJLRVIg Y29udHJvbCxpdHMnIHZhbHVlIGlzDQo+ID4gVjRMMl9KUEVHX0FDVElWRV9NQVJLRVJfQVBQMSgx PDwxKSxub3QgYSBib29sDQo+IA0KPiBJbiB0aGlzIGNhc2UsIHBsZWFzZSBjYWxsIGl0IGFjdGl2 ZV9tYXJrZXIgYW5kIGFsc28gdXBkYXRlIHRoZSBjb21tZW50DQo+IGFib3ZlIGFjY29yZGluZ2x5 Lg0KPiANCj4gU3RpbGwsIGlmIHRoaXMgZHJpdmVyIG9ubHkgY2FyZXMgYWJvdXQgVjRMMl9KUEVH X0FDVElWRV9NQVJLRVJfQVBQMSwNCj4gYm9vbCBlbmFibGVfZXhpZiwgYXNzaWduZWQgIGJ5IHRo ZSBjb2RlIGFwcHJvcHJpYXRlbHksIHdvdWxkIG1ha2UgbW9yZQ0KPiBzZW5zZS4NCmRvbmUuDQo+ IA0KPiBbc25pcF0NCj4gPiA+ID4gKw0KPiA+ID4gPiArc3RhdGljIHZvaWQgbXRrX2pwZWdfZW5j X3NldF9lbmNGb3JtYXQodm9pZCBfX2lvbWVtICpiYXNlLCB1MzIgZW5jX2Zvcm1hdCkNCj4gPiA+ ID4gK3sNCj4gPiA+ID4gKyAgIHUzMiB2YWx1ZTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArICAgdmFs dWUgPSByZWFkbChiYXNlICsgSlBHRU5DX0NUUkwpOw0KPiA+ID4gPiArICAgdmFsdWUgJj0gfkpQ RUdfRU5DX0NUUkxfWVVWX0JJVDsNCj4gPiA+ID4gKyAgIHZhbHVlIHw9IEpQR0VOQ19GT1JNQVQo ZW5jX2Zvcm1hdCk7DQo+ID4gPiA+ICsgICB3cml0ZWwodmFsdWUsIGJhc2UgKyBKUEdFTkNfQ1RS TCk7DQo+ID4gPg0KPiA+ID4gVGhlIG1vZGVsIEkgc3VnZ2VzdGVkIGFib3ZlIGFsc28gYXZvaWRz IHRoaXMga2luZCBvZiByZWFkIG1vZGlmeSB3cml0ZQ0KPiA+ID4gb3BlcmF0aW9ucywgd2hpY2gg anVzdCB1bm5lY2Vzc2FyaWx5IGFkZCBzeW5jaHJvbm91cyBNTUlPIHJvdW5kIHRyaXBzLCB3aGlj aA0KPiA+ID4gbWVhbnMgbW9yZSBDUFUgb3ZlcmhlYWQuDQo+ID4gPg0KPiA+ID4gR2l2ZW4gdGhh dCB0aGUgZnVsbCBzdGF0ZSBpcyBhbHdheXMga25vd24gYnkgdGhlIGRyaXZlciwgaXQgY2FuIGp1 c3Qgd3JpdGUNCj4gPiA+IGFsbCB0aGUgcmVnaXN0ZXIgdmFsdWVzIHdpdGhvdXQgdGhlIG5lZWQg dG8gcmVhZCB0aGVtIGJhY2suDQo+ID4gdGhlIEpQR0VOQ19DVFJMIHJlZ2lzdGVyIGhhcyAzMiBi aXRzLGRpZmZlcmVudCBiaXRzIGhhdmUgZGlmZmVyZW50DQo+ID4gbWVhbmluZ3MuIGVuY2Zvcm1h dCBpcyBiaXQgM340LHNvIHdlIG5lZWQgcmVhZHkgYmVmb3JlIHdyaXRlIHRvDQo+ID4gZ3VhcmFu dGVlIG90aGVyIGJpdHMnIHZhbHVlIG5vdCBiZSBjaGFuZ2VkDQo+IA0KPiBJIGV4cGxhaW5lZCB0 aGlzIG1vcmUgaW4gbXkgcmV2aWV3IGNvbW1lbnRzIHRvIHRoZSBsYXRlc3QgcmV2aXNpb24sDQo+ IGJ1dCB0aGlzIGlzIGp1c3Qgc29sdmluZyBhIHByb2JsZW0gdGhhdCBpcyBpbnRyb2R1Y2VkIGJ5 IHRoZSBkZXNpZ24gb2YNCj4gdGhlIGNvZGUuIElmIHRoZSBjb2RlIHdhcyBkZXNpZ25lZCBzbyB0 aGF0IDEgcmVnaXN0ZXIgaXMgb25seSBjaGFuZ2VkDQo+IGluIDEgZnVuY3Rpb24sIHRoZXJlIHdv dWxkIGJlIG5vIG5lZWQgdG8gcmVhZCBiYWNrIHRoZSByZWdpc3RlcnMsDQo+IGJlY2F1c2UgdGhl IGZ1bmN0aW9uIHdvdWxkIGluaXRpYWxpemUgdGhlIGZ1bGwgcmVnaXN0ZXIgYXQgYSB0aW1lLg0K PiBUaGF0J3Mgd2hhdCBtb3N0IG9mIHRoZSBvdGhlciBkcml2ZXJzIGRvLg0KZG9uZS4NCj4gDQo+ IFtzbmlwXQ0KPiA+ID4gPiArZW51bSB7DQo+ID4gPiA+ICsgICBNVEtfSlBFR19FTkNfUkVTVUxU X0RPTkUgICAgICAgICAgICAgICAgPSAwLA0KPiA+ID4gPiArICAgTVRLX0pQRUdfRU5DX1JFU1VM VF9TVEFMTCwNCj4gPiA+ID4gKyAgIE1US19KUEVHX0VOQ19SRVNVTFRfVkNPREVDX0lSUSwNCj4g PiA+ID4gKyAgIE1US19KUEVHX0VOQ19SRVNVTFRfRVJST1JfVU5LTk9XTg0KPiA+ID4gPiArfTsN Cj4gPiA+DQo+ID4gPiBEbyB3ZSBuZWVkIHRoZXNlIGludGVybWVkaWF0ZSBlcnJvciBjb2Rlcz8g Q291bGQgd2UganVzdCB1c2UgZXJybm8gdmFsdWVzDQo+ID4gPiBpbnN0ZWFkPw0KPiA+IHdlIGNh biBqdXN0IHVzZSBlcnJubyB2YWx1ZXMsYnV0IG91ciBpbnRlcnJ1cHQgc3RhdHVzIGhhdmUgdGhy ZWUNCj4gPiBzdGF0ZSxkb25lL3N0YWxsLHZjb2RlYyBpcnEsbWF5YmUgbGlzdGluZyB0aGVtIGhl cmUgbWFrZXMgbW9yZSBjbGFyaXR5DQo+IA0KPiBJIHN1Z2dlc3RlZCBhbm90aGVyIGFwcHJvYWNo IGluIG15IGNvbW1lbnRzIGZvciB0aGUgbGF0ZXN0IHJldmlzaW9uLg0KPiBHZW5lcmFsbHkgdGhl IGludGVycnVwdCBoYW5kbGVyIGlzIHRoZSBvbmx5IHBsYWNlIHdoZXJlIHRoaXMgZXJyb3INCj4g aGFuZGxpbmcgaXMgZG9uZSwgc28gdGhlIGludGVybWVkaWF0ZSBlcnJvciBjb2RlcyBzaG91bGRu J3QgYmUNCj4gbmVjZXNzYXJ5LCBhcyB0aGUgaW50ZXJydXB0IGhhbmRsZXIgd291bGQgZGlyZWN0 bHkgc2lnbmFsIGFueSBpc3N1ZXMNCj4gdG8gVjRMMi4NCkkgaGF2ZSByZW1vdmVkIHRoZSBNVEtf SlBFR19FTkNfUkVTVUxUX0VSUk9SX1VOS05PV04uDQo+IA0KPiBbc25pcF0NCj4gPiA+ID4gKyNk ZWZpbmUgSlBHRU5DX0ZPUk1BVCh4KSAgICAgICAgICAgKCgoeCkgJiAzKSA8PCAzKQ0KPiA+ID4g PiArI2RlZmluZSBKUEdFTkNfV0lEVEhfSEVJR0hUKHcsIGgpICAoKCh3KSA8PCAxNikgfCAoaCkp DQo+ID4gPiA+ICsjZGVmaW5lIEpQR0VOQ19JTklUX09GRlNFVCh4KSAgICAgICAgICAgICAgKCh4 KSAmICh+MHhGKSkNCj4gPiA+ID4gKyNkZWZpbmUgSlBHRU5DX09GRlNFVF9NQVNLKHgpICAgICAg ICAgICAgICAoKHgpICYgMHhGKQ0KPiA+ID4gPiArI2RlZmluZSBKUEdFTkNfRFNUX0FERFIoeCkg ICAgICAgICAoKHgpICYgKH4weEYpKQ0KPiA+ID4gPiArI2RlZmluZSBKUEdFTkNfU1RBTExfQURE Uih4LCB5KSAgICAgICAgICAgICgoKHgpICsgKHkpKSAmICh+MHhGKSkNCj4gPiA+ID4gKyNkZWZp bmUgSlBHRU5DX1FVQUxJVFlfTUFTSyAgICAgICAgICAgICAgICAweEZGRkYwMDAwDQo+ID4gPiA+ ICsjZGVmaW5lIEpQR0VOQ19TRVRfUVVBTElUWSh4LCB5KSAgICgoKHgpICYgSlBHRU5DX1FVQUxJ VFlfTUFTSykgfCAoeSkpDQo+ID4gPg0KPiA+ID4gSlBHRU5DX1FVQUxJVFlfTUFTSyBpcyBvbmx5 IHVzZWQgaGVyZSwgc28gMHhmZmZmMDAwMCBjb3VsZCBiZSBqdXN0IHVzZWQNCj4gPiA+IGRpcmVj dGx5Lg0KPiA+IGRvbmUNCj4gPiA+DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyNlbmRpZiAvKiBfTVRL X0pQRUdfRU5DX1JFR19IICovDQo+ID4gPg0KPiA+ID4gSSBjYW4gc2VlIHNvbWUgYml0cyBkZWZp bmVkIGluIG10a19qcGVnX2VuY19ody5oIGFzIHdlbGwuIFBlcmhhcHMgYWxsIHRoZXNlDQo+ID4g PiBjb3VsZCBiZSBtb3ZlZCB0aGVyZSB0b28sIHdoaWNoIHdvdWxkIG1ha2UgdXMgaGF2ZSAxIGZp bGUgbGVzcz8NCj4gPiBtb3ZlZCBiaXRzIGRlZmluZWQgIGFuZCByZWdpc3RlciBkZWZpbmVkIHRv IG10a19qcGVnX2VuY19yZWcuaCwgYnV0IHRoZQ0KPiA+IGZ1bmN0aW9ucyBkZWNsYXJhdGlvbiBh Ym91dCBqcGVnIGVuYyBodyB3ZXJlIGluIG10a19qcGVnX2VuY19ody5oLCBpcw0KPiA+IHRoYXQg b2s/DQo+IA0KPiBNeSBzdWdnZXN0aW9uIHdhcyB0aGUgb3RoZXIgd2F5IGFyb3VuZCAtIGhhdmUg YWxsIHRoZSBlbmNvZGVyLXNwZWNpZmljDQo+IGRlZmluaXRpb25zIGluIG10a19qcGVnX2VuY19o dy5oIGFuZCByZW1vdmUgbXRrX2pwZWdfZW5jX3JlZy5oLg0KPiANCj4gSW4gZ2VuZXJhbCwgdGhp cyBpcyBhIHJlbGF0aXZlbHkgc2ltcGxlIGhhcmR3YXJlIGJsb2NrIGFuZCB3ZSBzaG91bGQNCj4g YmUgYWJsZSB0byBqdXN0IGhhdmUgb25lIGZpbGUgdGhhdCBkZWFscyB3aXRoIGhhcmR3YXJlIHJl Z2lzdGVycy4gVGhlbg0KPiB0aGVyZSB3b3VsZCBiZSBubyBuZWVkIGZvciBoZWFkZXJzLCBhcyB0 aGUgcmVnaXN0ZXIgZGVmaW5pdGlvbnMgY291bGQNCj4gYmUgcHV0IGRpcmVjdGx5IGluIHRoZSBz b3VyY2UgZmlsZS4gQSBydWxlIG9mIHRodW1iIGlzIHRvIHVzZSBhIGhlYWRlcg0KPiB3aGVuIHNv bWV0aGluZyBuZWVkcyB0byBiZSBzaGFyZWQgYmV0d2VlbiBtdWx0aXBsZSBzb3VyY2UgZmlsZXMu DQpkb25lLg0KPiANCj4gQmVzdCByZWdhcmRzLA0KPiBUb21hc3oNCg0K