From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lee Jones Subject: Re: [PATCH v4 03/17] mfd: madera: Add common support for Cirrus Logic Madera codecs Date: Tue, 8 Aug 2017 12:13:05 +0100 Message-ID: <20170808111305.7x267shqi65aeemg@dell> References: <1501235239-11145-1-git-send-email-rf@opensource.wolfsonmicro.com> <1501235239-11145-4-git-send-email-rf@opensource.wolfsonmicro.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <1501235239-11145-4-git-send-email-rf@opensource.wolfsonmicro.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: alsa-devel-bounces@alsa-project.org Sender: alsa-devel-bounces@alsa-project.org To: Richard Fitzgerald Cc: gnurou@gmail.com, alsa-devel@alsa-project.org, jason@lakedaemon.net, devicetree@vger.kernel.org, linus.walleij@linaro.org, patches@opensource.wolfsonmicro.com, linux-kernel@vger.kernel.org, robh+dt@kernel.org, linux-gpio@vger.kernel.org, broonie@kernel.org, tglx@linutronix.de List-Id: devicetree@vger.kernel.org T24gRnJpLCAyOCBKdWwgMjAxNywgUmljaGFyZCBGaXR6Z2VyYWxkIHdyb3RlOgoKPiBUaGlzIGFk ZHMgdGhlIGdlbmVyaWMgY29yZSBzdXBwb3J0IGZvciBDaXJydXMgTG9naWMgIk1hZGVyYSIgY2xh c3MgY29kZWNzLgo+IFRoZXNlIGFyZSBjb21wbGV4IGF1ZGlvIGNvZGVjIFNvQ3Mgd2l0aCBhIHZh cmlldHkgb2YgZGlnaXRhbCBhbmQgYW5hbG9ndWUKPiBJL08sIG9uYm9hcmQgYXVkaW8gcHJvY2Vz c2luZyBhbmQgRFNQcywgYW5kIG90aGVyIGZlYXR1cmVzLgo+IAo+IFRoZXNlIGNvZGVjcyBhcmUg YWxsIGJhc2VkIG9mZiBhIGNvbW1vbiBzZXQgb2YgaGFyZHdhcmUgSVAgc28gY2FuIGJlCj4gc3Vw cG9ydGVkIGJ5IGEgY29yZSBvZiBjb21tb24gY29kZSAod2l0aCBhIGZldyBtaW5vciBkZXZpY2Ut dG8tZGV2aWNlCj4gdmFyaWF0aW9ucykuCj4gCj4gU2lnbmVkLW9mZi1ieTogQ2hhcmxlcyBLZWVw YXggPGNrZWVwYXhAb3BlbnNvdXJjZS53b2xmc29ubWljcm8uY29tPgo+IFNpZ25lZC1vZmYtYnk6 IE5pa2VzaCBPc3dhbCA8TmlrZXNoLk9zd2FsQHdvbGZzb25taWNyby5jb20+Cj4gU2lnbmVkLW9m Zi1ieTogUmljaGFyZCBGaXR6Z2VyYWxkIDxyZkBvcGVuc291cmNlLndvbGZzb25taWNyby5jb20+ Cj4gLS0tCj4gQ2hhbmdlcyBzaW5jZSBWMzoKPiAtIEZpeGVkIG1pc3NpbmcgS2NvbmZpZyBkZXBl bmRlbmN5IG9uIFBJTkNUUkwKPiAtIGNvbW1lbnRlZCBwdXJwb3NlIG9mIG1hZGVyYV9uYW1lX2Zy b21fdHlwZSgpLCBjYWxsIGl0IGVhcmxpZXIKPiAgIGluIHByb2JlIGFuZCBzdG9yZSB0aGUgc3Ry aW5nIGluIGEgbWVtYmVyIG9mIHN0cnVjdCBtYWRlcmEKPiAtIHJlbW92ZWQgdGhlIG1hZGVyYV9n ZXRfbnVtX21pY2JpYXMgYW5kIG1hZGVyYV9nZXRfbnVtX2NoaWxkYmlhcwo+ICAgZXhwb3J0ZWQg ZnVuY3Rpb25zIGFuZCBpbnRyb2R1Y2VkIHN0YXRpYyBtYWRlcmFfc2V0X21pY2JpYXNfaW5mbwo+ ICAgdG8gaW5pdCB0aGlzIGluZm9ybWF0aW9uIGluIG1lbWJlcnMgb2Ygc3RydWN0IG1hZGVyYQo+ IC0gYWRqdXN0ZWQgdGhlIGNvbW1lbnRpbmcgb24gdGhlIHN3aXRjaCB0aGF0IGFkZHMgdGhlIExE TzEgY2hpbGQgZHJpdmVyCj4gLSBzcXVhc2hlZCB0aGUgdHdvIHN3aXRjaGVzIG9uIGhhcmR3YXJl IElEIGludG8gb25lICh3ZSB1c2VkIHRvIHJlLXJlYWQKPiAgIHRoZSBIV0lEIGFmdGVyIHJlc2V0 IGhlbmNlIHRoZSBzZWNvbmQgc3dpdGNoIG9uIGl0IGJ1dCBhcyB3ZSBkb24ndCBkbwo+ICAgdGhh dCBub3cgdGhlIHR3byBzd2l0Y2hlcyBjYW4gYmUgY29tYmluZWQpCj4gLSBwcmUtaW5pdCByZXQg dG8gcmVtb3ZlIHRoZSBlbHNlIHJldCA9IDAgaW4gbWFkZXJhX2dldF9yZXNldF9ncGlvCj4gICAK PiBDaGFuZ2VzIG5vdCBtYWRlIHRvIFYzIHJldmlldyBjb21tZW50czoKPiAtIGxlZnQgdGhlIGRl dl9kYmcgbWVzc2FnZXMgaW4gcnVudGltZV9zdXNwZW5kIGFuZCBydW50aW1lX3Jlc3VtZSwKPiAg IHRoZXkgYXJlIG9ubHkgX2RiZyBhbmQgdGhleSd2ZSBiZWVuIHVzZWZ1bCBpbiB0aGUgcGFzdCBm b3IgZGVidWdnaW5nCj4gIE1BSU5UQUlORVJTICAgICAgICAgICAgICAgICAgICAgIHwgICAzICsK PiAgZHJpdmVycy9tZmQvS2NvbmZpZyAgICAgICAgICAgICAgfCAgMjcgKysKPiAgZHJpdmVycy9t ZmQvTWFrZWZpbGUgICAgICAgICAgICAgfCAgIDQgKwo+ICBkcml2ZXJzL21mZC9tYWRlcmEtY29y ZS5jICAgICAgICB8IDYxMSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysK PiAgZHJpdmVycy9tZmQvbWFkZXJhLWkyYy5jICAgICAgICAgfCAxMzUgKysrKysrKysrCj4gIGRy aXZlcnMvbWZkL21hZGVyYS1zcGkuYyAgICAgICAgIHwgMTM1ICsrKysrKysrKwo+ICBkcml2ZXJz L21mZC9tYWRlcmEuaCAgICAgICAgICAgICB8ICA1NCArKysrCj4gIGluY2x1ZGUvbGludXgvbWZk L21hZGVyYS9jb3JlLmggIHwgMTc5ICsrKysrKysrKysrKwo+ICBpbmNsdWRlL2xpbnV4L21mZC9t YWRlcmEvcGRhdGEuaCB8ICA2MSArKysrCj4gIDkgZmlsZXMgY2hhbmdlZCwgMTIwOSBpbnNlcnRp b25zKCspCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL21mZC9tYWRlcmEtY29yZS5jCj4g IGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL21mZC9tYWRlcmEtaTJjLmMKPiAgY3JlYXRlIG1v ZGUgMTAwNjQ0IGRyaXZlcnMvbWZkL21hZGVyYS1zcGkuYwo+ICBjcmVhdGUgbW9kZSAxMDA2NDQg ZHJpdmVycy9tZmQvbWFkZXJhLmgKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvbGludXgv bWZkL21hZGVyYS9jb3JlLmgKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvbGludXgvbWZk L21hZGVyYS9wZGF0YS5oCj4gCj4gZGlmZiAtLWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5F UlMKPiBpbmRleCBmNzBkMjE4Li5mMzM1YjJhIDEwMDY0NAo+IC0tLSBhL01BSU5UQUlORVJTCj4g KysrIGIvTUFJTlRBSU5FUlMKPiBAQCAtMzM3Niw3ICszMzc2LDEwIEBAIEw6CXBhdGNoZXNAb3Bl bnNvdXJjZS53b2xmc29ubWljcm8uY29tCj4gIFQ6CWdpdCBodHRwczovL2dpdGh1Yi5jb20vQ2ly cnVzTG9naWMvbGludXgtZHJpdmVycy5naXQKPiAgVzoJaHR0cHM6Ly9naXRodWIuY29tL0NpcnJ1 c0xvZ2ljL2xpbnV4LWRyaXZlcnMvd2lraQo+ICBTOglTdXBwb3J0ZWQKPiArRjoJRG9jdW1lbnRh dGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21mZC9tYWRlcmEudHh0Cj4gIEY6CWluY2x1ZGUvbGlu dXgvbWZkL21hZGVyYS8qCj4gK0Y6CWRyaXZlcnMvbWZkL21hZGVyYSoKPiArRjoJZHJpdmVycy9t ZmQvY3M0N2wqCj4gIAo+ICBDTEVBTkNBQ0hFIEFQSQo+ICBNOglLb25yYWQgUnplc3p1dGVrIFdp bGsgPGtvbnJhZC53aWxrQG9yYWNsZS5jb20+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWZkL0tj b25maWcgYi9kcml2ZXJzL21mZC9LY29uZmlnCj4gaW5kZXggOTRhZDJjMS4uOWNhNzE3NCAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL21mZC9LY29uZmlnCj4gKysrIGIvZHJpdmVycy9tZmQvS2NvbmZp Zwo+IEBAIC0yMDgsNiArMjA4LDMzIEBAIGNvbmZpZyBNRkRfQ1JPU19FQ19TUEkKPiAgCSAgcmVz cG9uc2UgdGltZSBjYW5ub3QgYmUgZ3VhcmFudGVlZCwgd2Ugc3VwcG9ydCBpZ25vcmluZwo+ICAJ ICAncHJlLWFtYmxlJyBieXRlcyBiZWZvcmUgdGhlIHJlc3BvbnNlIGFjdHVhbGx5IHN0YXJ0cy4K PiAgCj4gK2NvbmZpZyBNRkRfTUFERVJBCj4gKwlib29sCj4gKwlzZWxlY3QgTUZEX0NPUkUKPiAr CXNlbGVjdCBSRUdNQVAKPiArCXNlbGVjdCBSRUdNQVBfSVJRCj4gKwlzZWxlY3QgTUFERVJBX0lS UQo+ICsKPiArY29uZmlnIE1GRF9NQURFUkFfSTJDCj4gKwlib29sICJDaXJydXMgTG9naWMgTWFk ZXJhIGNvZGVjcyB3aXRoIEkyQyIKPiArCXNlbGVjdCBNRkRfTUFERVJBCj4gKwlzZWxlY3QgUkVH TUFQX0kyQwo+ICsJZGVwZW5kcyBvbiBJMkMKPiArCWRlcGVuZHMgb24gUElOQ1RSTAo+ICsJaGVs cAo+ICsJICBTdXBwb3J0IGZvciB0aGUgQ2lycnVzIExvZ2ljIE1hZGVyYSBwbGF0Zm9ybSBhdWRp byBTb0MKPiArCSAgY29yZSBmdW5jdGlvbmFsaXR5IGNvbnRyb2xsZWQgdmlhIEkyQy4KPiArCj4g K2NvbmZpZyBNRkRfTUFERVJBX1NQSQo+ICsJYm9vbCAiQ2lycnVzIExvZ2ljIE1hZGVyYSBjb2Rl Y3Mgd2l0aCBTUEkiCj4gKwlzZWxlY3QgTUZEX01BREVSQQo+ICsJc2VsZWN0IFJFR01BUF9TUEkK PiArCWRlcGVuZHMgb24gU1BJX01BU1RFUgo+ICsJZGVwZW5kcyBvbiBQSU5DVFJMCj4gKwloZWxw Cj4gKwkgIFN1cHBvcnQgZm9yIHRoZSBDaXJydXMgTG9naWMgTWFkZXJhIHBsYXRmb3JtIGF1ZGlv IFNvQwo+ICsJICBjb3JlIGZ1bmN0aW9uYWxpdHkgY29udHJvbGxlZCB2aWEgU1BJLgo+ICsKPiAg Y29uZmlnIE1GRF9BU0lDMwo+ICAJYm9vbCAiQ29tcGFxIEFTSUMzIgo+ICAJZGVwZW5kcyBvbiBH UElPTElCICYmIEFSTQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21mZC9NYWtlZmlsZSBiL2RyaXZl cnMvbWZkL01ha2VmaWxlCj4gaW5kZXggMDgwNzkzYi4uNzFjNjU4YSAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL21mZC9NYWtlZmlsZQo+ICsrKyBiL2RyaXZlcnMvbWZkL01ha2VmaWxlCj4gQEAgLTcz LDYgKzczLDEwIEBAIG9iai0kKENPTkZJR19NRkRfV004MzUwX0kyQykJKz0gd204MzUwLWkyYy5v Cj4gIHdtODk5NC1vYmpzCQkJOj0gd204OTk0LWNvcmUubyB3bTg5OTQtaXJxLm8gd204OTk0LXJl Z21hcC5vCj4gIG9iai0kKENPTkZJR19NRkRfV004OTk0KQkrPSB3bTg5OTQubwo+ICAKPiArb2Jq LSQoQ09ORklHX01GRF9NQURFUkEpCSs9IG1hZGVyYS1jb3JlLm8KPiArb2JqLSQoQ09ORklHX01G RF9NQURFUkFfSTJDKQkrPSBtYWRlcmEtaTJjLm8KPiArb2JqLSQoQ09ORklHX01GRF9NQURFUkFf U1BJKQkrPSBtYWRlcmEtc3BpLm8KPiArCj4gIG9iai0kKENPTkZJR19UUFM2MTA1WCkJCSs9IHRw czYxMDV4Lm8KPiAgb2JqLSQoQ09ORklHX1RQUzY1MDEwKQkJKz0gdHBzNjUwMTAubwo+ICBvYmot JChDT05GSUdfVFBTNjUwN1gpCQkrPSB0cHM2NTA3eC5vCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv bWZkL21hZGVyYS1jb3JlLmMgYi9kcml2ZXJzL21mZC9tYWRlcmEtY29yZS5jCj4gbmV3IGZpbGUg bW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi4yZDgzYTU3Cj4gLS0tIC9kZXYvbnVsbAo+ICsr KyBiL2RyaXZlcnMvbWZkL21hZGVyYS1jb3JlLmMKPiBAQCAtMCwwICsxLDYxMSBAQAo+ICsvKgo+ ICsgKiBDb3JlIE1GRCBzdXBwb3J0IGZvciBDaXJydXMgTG9naWMgTWFkZXJhIGNvZGVjcwo+ICsg Kgo+ICsgKiBDb3B5cmlnaHQgMjAxNS0yMDE3IENpcnJ1cyBMb2dpYwoKTm8gYXV0aG9yPwoKPiAr ICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vciBtb2RpZnkKPiArICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKPiArICogcHVibGlzaGVkIGJ5IHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24uCj4gKyAqLwo+ICsKPiArI2luY2x1ZGUgPGxpbnV4L2Rldmlj ZS5oPgo+ICsjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KPiArI2luY2x1ZGUgPGxpbnV4L2Vyci5o Pgo+ICsjaW5jbHVkZSA8bGludXgvZ3Bpby5oPgo+ICsjaW5jbHVkZSA8bGludXgvbWZkL2NvcmUu aD4KPiArI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgo+ICsjaW5jbHVkZSA8bGludXgvbm90aWZp ZXIuaD4KPiArI2luY2x1ZGUgPGxpbnV4L29mLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9vZl9kZXZp Y2UuaD4KPiArI2luY2x1ZGUgPGxpbnV4L29mX2dwaW8uaD4KPiArI2luY2x1ZGUgPGxpbnV4L3Bs YXRmb3JtX2RldmljZS5oPgo+ICsjaW5jbHVkZSA8bGludXgvcG1fcnVudGltZS5oPgo+ICsjaW5j bHVkZSA8bGludXgvcmVnbWFwLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9yZWd1bGF0b3IvY29uc3Vt ZXIuaD4KPiArI2luY2x1ZGUgPGxpbnV4L3JlZ3VsYXRvci9tYWNoaW5lLmg+Cj4gKyNpbmNsdWRl IDxsaW51eC9yZWd1bGF0b3Ivb2ZfcmVndWxhdG9yLmg+Cj4gKwo+ICsjaW5jbHVkZSA8bGludXgv bWZkL21hZGVyYS9jb3JlLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9tZmQvbWFkZXJhL3JlZ2lzdGVy cy5oPgo+ICsKPiArI2luY2x1ZGUgIm1hZGVyYS5oIgo+ICsKPiArI2RlZmluZSBDUzQ3TDM1X1NJ TElDT05fSUQJMHg2MzYwCj4gKyNkZWZpbmUgQ1M0N0w4NV9TSUxJQ09OX0lECTB4NjMzOAo+ICsj ZGVmaW5lIENTNDdMOTBfU0lMSUNPTl9JRAkweDYzNjQKPiArCj4gKyNkZWZpbmUgTUFERVJBXzMy S1pfTUNMSzIJMQo+ICsKPiArc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBtYWRlcmFfY29yZV9z dXBwbGllc1tdID0gewo+ICsJIkFWREQiLAo+ICsJIkRCVkREMSIsCj4gK307Cj4gKwo+ICtzdGF0 aWMgY29uc3Qgc3RydWN0IG1mZF9jZWxsIG1hZGVyYV9sZG8xX2RldnNbXSA9IHsKPiArCXsgLm5h bWUgPSAibWFkZXJhLWxkbzEiIH0sCj4gK307Cj4gKwo+ICtzdGF0aWMgY29uc3QgY2hhciAqIGNv bnN0IGNzNDdsMzVfc3VwcGxpZXNbXSA9IHsKPiArCSJNSUNWREQiLAo+ICsJIkRCVkREMiIsCj4g KwkiQ1BWREQxIiwKPiArCSJDUFZERDIiLAo+ICsJIlNQS1ZERCIsCj4gK307Cj4gKwo+ICtzdGF0 aWMgY29uc3Qgc3RydWN0IG1mZF9jZWxsIGNzNDdsMzVfZGV2c1tdID0gewo+ICsJeyAubmFtZSA9 ICJtYWRlcmEtcGluY3RybCIsIH0sCj4gKwl7IC5uYW1lID0gIm1hZGVyYS1pcnEiLCB9LAo+ICsJ eyAubmFtZSA9ICJtYWRlcmEtbWljc3VwcCIsIH0sCj4gKwl7IC5uYW1lID0gIm1hZGVyYS1ncGlv IiwgfSwKPiArCXsgLm5hbWUgPSAibWFkZXJhLWV4dGNvbiIsIH0sCj4gKwl7Cj4gKwkJLm5hbWUg PSAiY3M0N2wzNS1jb2RlYyIsCj4gKwkJLnBhcmVudF9zdXBwbGllcyA9IGNzNDdsMzVfc3VwcGxp ZXMsCj4gKwkJLm51bV9wYXJlbnRfc3VwcGxpZXMgPSBBUlJBWV9TSVpFKGNzNDdsMzVfc3VwcGxp ZXMpLAo+ICsJfSwKPiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCBjaGFyICogY29uc3QgY3M0N2w4 NV9zdXBwbGllc1tdID0gewo+ICsJIk1JQ1ZERCIsCj4gKwkiREJWREQyIiwKPiArCSJEQlZERDMi LAo+ICsJIkRCVkRENCIsCj4gKwkiQ1BWREQxIiwKPiArCSJDUFZERDIiLAo+ICsJIlNQS1ZEREwi LAo+ICsJIlNQS1ZERFIiLAo+ICt9Owo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBtZmRfY2Vs bCBjczQ3bDg1X2RldnNbXSA9IHsKPiArCXsgLm5hbWUgPSAibWFkZXJhLXBpbmN0cmwiLCB9LAo+ ICsJeyAubmFtZSA9ICJtYWRlcmEtaXJxIiwgfSwKPiArCXsgLm5hbWUgPSAibWFkZXJhLW1pY3N1 cHAiIH0sCj4gKwl7IC5uYW1lID0gIm1hZGVyYS1ncGlvIiwgfSwKPiArCXsgLm5hbWUgPSAibWFk ZXJhLWV4dGNvbiIsIH0sCj4gKwl7Cj4gKwkJLm5hbWUgPSAiY3M0N2w4NS1jb2RlYyIsCj4gKwkJ LnBhcmVudF9zdXBwbGllcyA9IGNzNDdsODVfc3VwcGxpZXMsCj4gKwkJLm51bV9wYXJlbnRfc3Vw cGxpZXMgPSBBUlJBWV9TSVpFKGNzNDdsODVfc3VwcGxpZXMpLAo+ICsJfSwKPiArfTsKPiArCj4g K3N0YXRpYyBjb25zdCBjaGFyICogY29uc3QgY3M0N2w5MF9zdXBwbGllc1tdID0gewo+ICsJIk1J Q1ZERCIsCj4gKwkiREJWREQyIiwKPiArCSJEQlZERDMiLAo+ICsJIkRCVkRENCIsCj4gKwkiQ1BW REQxIiwKPiArCSJDUFZERDIiLAo+ICt9Owo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBtZmRf Y2VsbCBjczQ3bDkwX2RldnNbXSA9IHsKPiArCXsgLm5hbWUgPSAibWFkZXJhLXBpbmN0cmwiLCB9 LAo+ICsJeyAubmFtZSA9ICJtYWRlcmEtaXJxIiwgfSwKPiArCXsgLm5hbWUgPSAibWFkZXJhLW1p Y3N1cHAiLCB9LAo+ICsJeyAubmFtZSA9ICJtYWRlcmEtZ3BpbyIsIH0sCj4gKwl7IC5uYW1lID0g Im1hZGVyYS1leHRjb24iLCB9LAo+ICsJewo+ICsJCS5uYW1lID0gImNzNDdsOTAtY29kZWMiLAo+ ICsJCS5wYXJlbnRfc3VwcGxpZXMgPSBjczQ3bDkwX3N1cHBsaWVzLAo+ICsJCS5udW1fcGFyZW50 X3N1cHBsaWVzID0gQVJSQVlfU0laRShjczQ3bDkwX3N1cHBsaWVzKSwKPiArCX0sCj4gK307Cj4g Kwo+ICsvKiBVc2VkIGJ5IG1hZGVyYS1pMmMgYW5kIG1hZGVyYS1zcGkgZHJpdmVycyAqLwo+ICtj b25zdCBjaGFyICptYWRlcmFfbmFtZV9mcm9tX3R5cGUoZW51bSBtYWRlcmFfdHlwZSB0eXBlKQo+ ICt7Cj4gKwlzd2l0Y2ggKHR5cGUpIHsKPiArCWNhc2UgQ1M0N0wzNToKPiArCQlyZXR1cm4gIkNT NDdMMzUiOwo+ICsJY2FzZSBDUzQ3TDg1Ogo+ICsJCXJldHVybiAiQ1M0N0w4NSI7Cj4gKwljYXNl IENTNDdMOTA6Cj4gKwkJcmV0dXJuICJDUzQ3TDkwIjsKPiArCWNhc2UgQ1M0N0w5MToKPiArCQly ZXR1cm4gIkNTNDdMOTEiOwo+ICsJY2FzZSBXTTE4NDA6Cj4gKwkJcmV0dXJuICJXTTE4NDAiOwo+ ICsJZGVmYXVsdDoKPiArCQlyZXR1cm4gIlVua25vd24iOwo+ICsJfQo+ICt9Cj4gK0VYUE9SVF9T WU1CT0xfR1BMKG1hZGVyYV9uYW1lX2Zyb21fdHlwZSk7Cj4gKwo+ICsjZGVmaW5lIE1BREVSQV9C T09UX1BPTExfTUFYX0lOVEVSVkFMX1VTICA1MDAwCj4gKyNkZWZpbmUgTUFERVJBX0JPT1RfUE9M TF9USU1FT1VUX1VTCSAyNTAwMAo+ICsKPiArc3RhdGljIGludCBtYWRlcmFfd2FpdF9mb3JfYm9v dChzdHJ1Y3QgbWFkZXJhICptYWRlcmEpCj4gK3sKPiArCXVuc2lnbmVkIGludCB2YWw7Cj4gKwlp bnQgcmV0Owo+ICsKPiArCS8qCj4gKwkgKiBXZSBjYW4ndCB1c2UgYW4gaW50ZXJydXB0IGFzIHdl IG5lZWQgdG8gcnVudGltZSByZXN1bWUgdG8gZG8gc28sCj4gKwkgKiBzbyB3ZSBwb2xsIHRoZSBz dGF0dXMgYml0LiBUaGlzIHdvbid0IHJhY2Ugd2l0aCB0aGUgaW50ZXJydXB0Cj4gKwkgKiBoYW5k bGVyIGJlY2F1c2UgaXQgd2lsbCBiZSBibG9ja2VkIG9uIHJ1bnRpbWUgcmVzdW1lLgo+ICsJICov Cj4gKwlyZXQgPSByZWdtYXBfcmVhZF9wb2xsX3RpbWVvdXQobWFkZXJhLT5yZWdtYXAsCj4gKwkJ CQkgICAgICAgTUFERVJBX0lSUTFfUkFXX1NUQVRVU18xLAo+ICsJCQkJICAgICAgIHZhbCwKPiAr CQkJCSAgICAgICAodmFsICYgTUFERVJBX0JPT1RfRE9ORV9TVFMxKSwKPiArCQkJCSAgICAgICBN QURFUkFfQk9PVF9QT0xMX01BWF9JTlRFUlZBTF9VUywKPiArCQkJCSAgICAgICBNQURFUkFfQk9P VF9QT0xMX1RJTUVPVVRfVVMpOwo+ICsKPiArCWlmIChyZXQpCj4gKwkJZGV2X2VycihtYWRlcmEt PmRldiwgIlBvbGxpbmcgQk9PVF9ET05FX1NUUyBmYWlsZWQ6ICVkXG4iLCByZXQpOwo+ICsKPiAr CS8qCj4gKwkgKiBCT09UX0RPTkUgZGVmYXVsdHMgdG8gdW5tYXNrZWQgb24gYm9vdCBzbyB3ZSBt dXN0IGFjayBpdC4KPiArCSAqIERvIHRoaXMgdW5jb25kaXRpb25hbGx5IHRvIGF2b2lkIGludGVy cnVwdCBzdG9ybXMKPiArCSAqLwo+ICsJcmVnbWFwX3dyaXRlKG1hZGVyYS0+cmVnbWFwLCBNQURF UkFfSVJRMV9TVEFUVVNfMSwKPiArCQkgICAgIE1BREVSQV9CT09UX0RPTkVfRUlOVDEpOwo+ICsK PiArCXBtX3J1bnRpbWVfbWFya19sYXN0X2J1c3kobWFkZXJhLT5kZXYpOwo+ICsKPiArCXJldHVy biByZXQ7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgbWFkZXJhX3NvZnRfcmVzZXQoc3RydWN0IG1h ZGVyYSAqbWFkZXJhKQo+ICt7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCXJldCA9IHJlZ21hcF93cml0 ZShtYWRlcmEtPnJlZ21hcCwgTUFERVJBX1NPRlRXQVJFX1JFU0VULCAwKTsKPiArCWlmIChyZXQg IT0gMCkgewo+ICsJCWRldl9lcnIobWFkZXJhLT5kZXYsICJGYWlsZWQgdG8gc29mdCByZXNldCBk ZXZpY2U6ICVkXG4iLCByZXQpOwo+ICsJCXJldHVybiByZXQ7Cj4gKwl9Cj4gKwo+ICsJLyogQWxs b3cgdGltZSBmb3IgaW50ZXJuYWwgY2xvY2tzIHRvIHN0YXJ0dXAgYWZ0ZXIgcmVzZXQgKi8KPiAr CXVzbGVlcF9yYW5nZSgxMDAwLCAyMDAwKTsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiAr c3RhdGljIHZvaWQgbWFkZXJhX2VuYWJsZV9oYXJkX3Jlc2V0KHN0cnVjdCBtYWRlcmEgKm1hZGVy YSkKPiArewo+ICsJaWYgKG1hZGVyYS0+cmVzZXRfZ3BpbykKPiArCQlncGlvZF9zZXRfdmFsdWVf Y2Fuc2xlZXAobWFkZXJhLT5yZXNldF9ncGlvLCAwKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQg bWFkZXJhX2Rpc2FibGVfaGFyZF9yZXNldChzdHJ1Y3QgbWFkZXJhICptYWRlcmEpCj4gK3sKPiAr CWlmIChtYWRlcmEtPnJlc2V0X2dwaW8pIHsKPiArCQlncGlvZF9zZXRfdmFsdWVfY2Fuc2xlZXAo bWFkZXJhLT5yZXNldF9ncGlvLCAxKTsKPiArCQl1c2xlZXBfcmFuZ2UoMTAwMCwgMjAwMCk7Cj4g Kwl9Cj4gK30KPiArCj4gKyNpZmRlZiBDT05GSUdfUE0KPiArc3RhdGljIGludCBtYWRlcmFfcnVu dGltZV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KQo+ICt7Cj4gKwlzdHJ1Y3QgbWFkZXJhICpt YWRlcmEgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKPiArCWludCByZXQ7Cj4gKwo+ICsJZGV2X2Ri ZyhkZXYsICJMZWF2aW5nIHNsZWVwIG1vZGVcbiIpOwo+ICsKPiArCXJldCA9IHJlZ3VsYXRvcl9l bmFibGUobWFkZXJhLT5kY3ZkZCk7Cj4gKwlpZiAocmV0KSB7Cj4gKwkJZGV2X2VycihkZXYsICJG YWlsZWQgdG8gZW5hYmxlIERDVkREOiAlZFxuIiwgcmV0KTsKPiArCQlyZXR1cm4gcmV0Owo+ICsJ fQo+ICsKPiArCXJlZ2NhY2hlX2NhY2hlX29ubHkobWFkZXJhLT5yZWdtYXAsIGZhbHNlKTsKPiAr CXJlZ2NhY2hlX2NhY2hlX29ubHkobWFkZXJhLT5yZWdtYXBfMzJiaXQsIGZhbHNlKTsKPiArCj4g KwlyZXQgPSBtYWRlcmFfd2FpdF9mb3JfYm9vdChtYWRlcmEpOwo+ICsJaWYgKHJldCkKPiArCQln b3RvIGVycjsKPiArCj4gKwlyZXQgPSByZWdjYWNoZV9zeW5jKG1hZGVyYS0+cmVnbWFwKTsKPiAr CWlmIChyZXQpIHsKPiArCQlkZXZfZXJyKGRldiwgIkZhaWxlZCB0byByZXN0b3JlIDE2LWJpdCBy ZWdpc3RlciBjYWNoZVxuIik7Cj4gKwkJZ290byBlcnI7Cj4gKwl9Cj4gKwo+ICsJcmV0ID0gcmVn Y2FjaGVfc3luYyhtYWRlcmEtPnJlZ21hcF8zMmJpdCk7Cj4gKwlpZiAocmV0KSB7Cj4gKwkJZGV2 X2VycihkZXYsICJGYWlsZWQgdG8gcmVzdG9yZSAzMi1iaXQgcmVnaXN0ZXIgY2FjaGVcbiIpOwo+ ICsJCWdvdG8gZXJyOwo+ICsJfQo+ICsKPiArCXJldHVybiAwOwo+ICsKPiArZXJyOgo+ICsJcmVn Y2FjaGVfY2FjaGVfb25seShtYWRlcmEtPnJlZ21hcF8zMmJpdCwgdHJ1ZSk7Cj4gKwlyZWdjYWNo ZV9jYWNoZV9vbmx5KG1hZGVyYS0+cmVnbWFwLCB0cnVlKTsKPiArCXJlZ3VsYXRvcl9kaXNhYmxl KG1hZGVyYS0+ZGN2ZGQpOwo+ICsKPiArCXJldHVybiByZXQ7Cj4gK30KPiArCj4gK3N0YXRpYyBp bnQgbWFkZXJhX3J1bnRpbWVfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYpCj4gK3sKPiArCXN0 cnVjdCBtYWRlcmEgKm1hZGVyYSA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwo+ICsKPiArCWRldl9k YmcobWFkZXJhLT5kZXYsICJFbnRlcmluZyBzbGVlcCBtb2RlXG4iKTsKPiArCj4gKwlyZWdjYWNo ZV9jYWNoZV9vbmx5KG1hZGVyYS0+cmVnbWFwLCB0cnVlKTsKPiArCXJlZ2NhY2hlX21hcmtfZGly dHkobWFkZXJhLT5yZWdtYXApOwo+ICsJcmVnY2FjaGVfY2FjaGVfb25seShtYWRlcmEtPnJlZ21h cF8zMmJpdCwgdHJ1ZSk7Cj4gKwlyZWdjYWNoZV9tYXJrX2RpcnR5KG1hZGVyYS0+cmVnbWFwXzMy Yml0KTsKPiArCj4gKwlyZWd1bGF0b3JfZGlzYWJsZShtYWRlcmEtPmRjdmRkKTsKPiArCj4gKwly ZXR1cm4gMDsKPiArfQo+ICsjZW5kaWYKPiArCj4gK2NvbnN0IHN0cnVjdCBkZXZfcG1fb3BzIG1h ZGVyYV9wbV9vcHMgPSB7Cj4gKwlTRVRfUlVOVElNRV9QTV9PUFMobWFkZXJhX3J1bnRpbWVfc3Vz cGVuZCwKPiArCQkJICAgbWFkZXJhX3J1bnRpbWVfcmVzdW1lLAo+ICsJCQkgICBOVUxMKQo+ICt9 Owo+ICtFWFBPUlRfU1lNQk9MX0dQTChtYWRlcmFfcG1fb3BzKTsKPiArCj4gKyNpZmRlZiBDT05G SUdfT0YKPiArY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBtYWRlcmFfb2ZfbWF0Y2hbXSA9IHsK PiArCXsgLmNvbXBhdGlibGUgPSAiY2lycnVzLGNzNDdsMzUiLCAuZGF0YSA9ICh2b2lkICopQ1M0 N0wzNSB9LAo+ICsJeyAuY29tcGF0aWJsZSA9ICJjaXJydXMsY3M0N2w4NSIsIC5kYXRhID0gKHZv aWQgKilDUzQ3TDg1IH0sCj4gKwl7IC5jb21wYXRpYmxlID0gImNpcnJ1cyxjczQ3bDkwIiwgLmRh dGEgPSAodm9pZCAqKUNTNDdMOTAgfSwKPiArCXsgLmNvbXBhdGlibGUgPSAiY2lycnVzLGNzNDds OTEiLCAuZGF0YSA9ICh2b2lkICopQ1M0N0w5MSB9LAo+ICsJeyAuY29tcGF0aWJsZSA9ICJjaXJy dXMsd20xODQwIiwgLmRhdGEgPSAodm9pZCAqKVdNMTg0MCB9LAo+ICsJe30sCj4gK307Cj4gK0VY UE9SVF9TWU1CT0xfR1BMKG1hZGVyYV9vZl9tYXRjaCk7Cj4gKwo+ICt1bnNpZ25lZCBsb25nIG1h ZGVyYV9nZXRfdHlwZV9mcm9tX29mKHN0cnVjdCBkZXZpY2UgKmRldikKPiArewo+ICsJY29uc3Qg c3RydWN0IG9mX2RldmljZV9pZCAqaWQgPSBvZl9tYXRjaF9kZXZpY2UobWFkZXJhX29mX21hdGNo LCBkZXYpOwo+ICsKPiArCWlmIChpZCkKPiArCQlyZXR1cm4gKHVuc2lnbmVkIGxvbmcpaWQtPmRh dGE7Cj4gKwllbHNlCj4gKwkJcmV0dXJuIDA7Cj4gK30KPiArRVhQT1JUX1NZTUJPTF9HUEwobWFk ZXJhX2dldF90eXBlX2Zyb21fb2YpOwoKSSB0aGluayB0aGlzIGNvc3RzIG1vcmUgbGluZXMgdGhh biBpdCBzYXZlcy4KCkp1c3QgZG8gdGhpcyBpbiBib3RoIHRoZSBJMkMgYW5kIFNQSSBmaWxlcy4K Cj4gKyNlbmRpZgo+ICsKPiArc3RhdGljIGludCBtYWRlcmFfZ2V0X3Jlc2V0X2dwaW8oc3RydWN0 IG1hZGVyYSAqbWFkZXJhKQo+ICt7Cj4gKwlpbnQgcmV0ID0gMDsKPiArCj4gKwkvKiBXZSB1c2Ug MCBpbiBwZGF0YSB0byBpbmRpY2F0ZSBhIEdQSU8gaGFzIG5vdCBiZWVuIHNldCAqLwo+ICsJaWYg KGRldl9nZXRfcGxhdGRhdGEobWFkZXJhLT5kZXYpICYmIChtYWRlcmEtPnBkYXRhLnJlc2V0ID4g MCkpIHsKPiArCQkvKiBTdGFydCBvdXQgd2l0aCAvUkVTRVQgYXNzZXJ0ZWQgKi8KPiArCQlyZXQg PSBkZXZtX2dwaW9fcmVxdWVzdF9vbmUobWFkZXJhLT5kZXYsCj4gKwkJCQkJICAgIG1hZGVyYS0+ cGRhdGEucmVzZXQsCj4gKwkJCQkJICAgIEdQSU9GX0RJUl9PVVQgfCBHUElPRl9JTklUX0xPVywK PiArCQkJCQkgICAgIm1hZGVyYSByZXNldCIpOwo+ICsJCWlmICghcmV0KQo+ICsJCQltYWRlcmEt PnJlc2V0X2dwaW8gPSBncGlvX3RvX2Rlc2MobWFkZXJhLT5wZGF0YS5yZXNldCk7Cj4gKwl9IGVs c2Ugewo+ICsJCW1hZGVyYS0+cmVzZXRfZ3BpbyA9IGRldm1fZ3Bpb2RfZ2V0X29wdGlvbmFsKG1h ZGVyYS0+ZGV2LAo+ICsJCQkJCQkJICAgICAicmVzZXQiLAo+ICsJCQkJCQkJICAgICBHUElPRF9P VVRfTE9XKTsKPiArCQlpZiAoSVNfRVJSKG1hZGVyYS0+cmVzZXRfZ3BpbykpCj4gKwkJCXJldCA9 IFBUUl9FUlIobWFkZXJhLT5yZXNldF9ncGlvKTsKPiArCX0KPiArCj4gKwlpZiAocmV0ID09IC1F UFJPQkVfREVGRVIpCj4gKwkJcmV0dXJuIHJldDsKPiArCj4gKwlpZiAocmV0KSB7Cj4gKwkJZGV2 X2VycihtYWRlcmEtPmRldiwgIkZhaWxlZCB0byByZXF1ZXN0IC9SRVNFVDogJWRcbiIsIHJldCk7 Cj4gKwkJcmV0dXJuIHJldDsKPiArCX0KPiArCj4gKwlpZiAoIW1hZGVyYS0+cmVzZXRfZ3BpbykK PiArCQlkZXZfd2FybihtYWRlcmEtPmRldiwKPiArCQkJICJSdW5uaW5nIHdpdGhvdXQgcmVzZXQg R1BJTyBpcyBub3QgcmVjb21tZW5kZWRcbiIpOwo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ ICtzdGF0aWMgdm9pZCBtYWRlcmFfc2V0X21pY2JpYXNfaW5mbyhzdHJ1Y3QgbWFkZXJhICptYWRl cmEpCj4gK3sKPiArCS8qCj4gKwkgKiBjaGlsZGJpYXMgaXMgYW4gYXJyYXkgYmVjYXVzZSBmdXR1 cmUgY29kZWNzIGNhbiBoYXZlIGRpZmZlcmVudAo+ICsJICogY2hpbGRiaWFzZXMgZm9yIGVhY2gg bWljYmlhcwo+ICsJICovCj4gKwlzd2l0Y2ggKG1hZGVyYS0+dHlwZSkgewo+ICsJY2FzZSBDUzQ3 TDM1Ogo+ICsJCW1hZGVyYS0+bnVtX21pY2JpYXMgPSAyOwo+ICsJCW1hZGVyYS0+bnVtX2NoaWxk Ymlhc1swXSA9IDI7Cj4gKwkJbWFkZXJhLT5udW1fY2hpbGRiaWFzWzFdID0gMjsKPiArCQlyZXR1 cm47Cj4gKwljYXNlIENTNDdMODU6Cj4gKwljYXNlIFdNMTg0MDoKPiArCQltYWRlcmEtPm51bV9t aWNiaWFzID0gNDsKPiArCQlyZXR1cm47Cj4gKwljYXNlIENTNDdMOTA6Cj4gKwljYXNlIENTNDdM OTE6Cj4gKwkJbWFkZXJhLT5udW1fbWljYmlhcyA9IDI7Cj4gKwkJbWFkZXJhLT5udW1fY2hpbGRi aWFzWzBdID0gNDsKPiArCQltYWRlcmEtPm51bV9jaGlsZGJpYXNbMV0gPSA0Owo+ICsJCXJldHVy bjsKPiArCWRlZmF1bHQ6Cj4gKwkJcmV0dXJuOwo+ICsJfQo+ICt9Cj4gKwo+ICtpbnQgbWFkZXJh X2Rldl9pbml0KHN0cnVjdCBtYWRlcmEgKm1hZGVyYSkKPiArewo+ICsJc3RydWN0IGRldmljZSAq ZGV2ID0gbWFkZXJhLT5kZXY7Cj4gKwl1bnNpZ25lZCBpbnQgaHdpZDsKPiArCWludCAoKnBhdGNo X2ZuKShzdHJ1Y3QgbWFkZXJhICopID0gTlVMTDsKPiArCWNvbnN0IHN0cnVjdCBtZmRfY2VsbCAq bWZkX2RldnM7Cj4gKwlpbnQgbl9kZXZzID0gMDsKPiArCWludCBpLCByZXQ7Cj4gKwo+ICsJZGV2 X3NldF9kcnZkYXRhKG1hZGVyYS0+ZGV2LCBtYWRlcmEpOwo+ICsJQkxPQ0tJTkdfSU5JVF9OT1RJ RklFUl9IRUFEKCZtYWRlcmEtPm5vdGlmaWVyKTsKPiArCW1hZGVyYV9zZXRfbWljYmlhc19pbmZv KG1hZGVyYSk7Cj4gKwo+ICsJaWYgKGRldl9nZXRfcGxhdGRhdGEobWFkZXJhLT5kZXYpKSB7Cj4g KwkJbWVtY3B5KCZtYWRlcmEtPnBkYXRhLCBkZXZfZ2V0X3BsYXRkYXRhKG1hZGVyYS0+ZGV2KSwK PiArCQkgICAgICAgc2l6ZW9mKG1hZGVyYS0+cGRhdGEpKTsKPiArCX0KPiArCj4gKwlyZXQgPSBt YWRlcmFfZ2V0X3Jlc2V0X2dwaW8obWFkZXJhKTsKPiArCWlmIChyZXQpCj4gKwkJcmV0dXJuIHJl dDsKPiArCj4gKwlyZWdjYWNoZV9jYWNoZV9vbmx5KG1hZGVyYS0+cmVnbWFwLCB0cnVlKTsKPiAr CXJlZ2NhY2hlX2NhY2hlX29ubHkobWFkZXJhLT5yZWdtYXBfMzJiaXQsIHRydWUpOwo+ICsKPiAr CWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKG1hZGVyYV9jb3JlX3N1cHBsaWVzKTsgaSsrKQo+ ICsJCW1hZGVyYS0+Y29yZV9zdXBwbGllc1tpXS5zdXBwbHkgPSBtYWRlcmFfY29yZV9zdXBwbGll c1tpXTsKPiArCj4gKwltYWRlcmEtPm51bV9jb3JlX3N1cHBsaWVzID0gQVJSQVlfU0laRShtYWRl cmFfY29yZV9zdXBwbGllcyk7Cj4gKwo+ICsJLyoKPiArCSAqIE9uIHNvbWUgY29kZWNzIERDVkRE IGNvdWxkIGJlIHN1cHBsaWVkIGJ5IHRoZSBpbnRlcm5hbCBMRE8xLgo+ICsJICogRm9yIHRob3Nl IHdlIG11c3QgYWRkIHRoZSBMRE8xIGRyaXZlciBiZWZvcmUgcmVxdWVzdGluZyBEQ1ZERAo+ICsJ ICovCj4gKwlzd2l0Y2ggKG1hZGVyYS0+dHlwZSkgewo+ICsJY2FzZSBDUzQ3TDM1Ogo+ICsJY2Fz ZSBDUzQ3TDkwOgo+ICsJY2FzZSBDUzQ3TDkxOgo+ICsJCWJyZWFrOwo+ICsJY2FzZSBDUzQ3TDg1 Ogo+ICsJY2FzZSBXTTE4NDA6Cj4gKwkJcmV0ID0gbWZkX2FkZF9kZXZpY2VzKG1hZGVyYS0+ZGV2 LCBQTEFURk9STV9ERVZJRF9OT05FLAo+ICsJCQkJICAgICAgbWFkZXJhX2xkbzFfZGV2cywKPiAr CQkJCSAgICAgIEFSUkFZX1NJWkUobWFkZXJhX2xkbzFfZGV2cyksCj4gKwkJCQkgICAgICBOVUxM LCAwLCBOVUxMKTsKPiArCQlpZiAocmV0KSB7Cj4gKwkJCWRldl9lcnIoZGV2LCAiRmFpbGVkIHRv IGFkZCBMRE8xIGNoaWxkOiAlZFxuIiwgcmV0KTsKPiArCQkJcmV0dXJuIHJldDsKPiArCQl9Cj4g KwkJYnJlYWs7Cj4gKwlkZWZhdWx0Ogo+ICsJCS8qIG5vIHBvaW50IGNvbnRpbnVpbmcgaWYgdGhl IHR5cGUgaXMgdW5rbm93biAqLwoKTml0OiBzL25vL05vLwoKPiArCQlkZXZfZXJyKG1hZGVyYS0+ ZGV2LCAiVW5rbm93biBkZXZpY2UgdHlwZSAlZFxuIiwgbWFkZXJhLT50eXBlKTsKPiArCQlyZXR1 cm4gLUVOT0RFVjsKPiArCX0KPiArCj4gKwlyZXQgPSBkZXZtX3JlZ3VsYXRvcl9idWxrX2dldChk ZXYsIG1hZGVyYS0+bnVtX2NvcmVfc3VwcGxpZXMsCj4gKwkJCQkgICAgICBtYWRlcmEtPmNvcmVf c3VwcGxpZXMpOwo+ICsJaWYgKHJldCkgewo+ICsJCWRldl9lcnIoZGV2LCAiRmFpbGVkIHRvIHJl cXVlc3QgY29yZSBzdXBwbGllczogJWRcbiIsIHJldCk7Cj4gKwkJZ290byBlcnJfZGV2czsKPiAr CX0KPiArCj4gKwkvKgo+ICsJICogRG9uJ3QgdXNlIGRldnJlcyBoZXJlIGJlY2F1c2UgdGhlIG9u bHkgZGV2aWNlIHdlIGhhdmUgdG8gZ2V0Cj4gKwkgKiBhZ2FpbnN0IGlzIHRoZSBNRkQgZGV2aWNl IGFuZCBEQ1ZERCB3aWxsIGxpa2VseSBiZSBzdXBwbGllZCBieQo+ICsJICogb25lIG9mIGl0cyBj aGlsZHJlbi4gTWVhbmluZyB0aGF0IHRoZSByZWd1bGF0b3Igd2lsbCBiZQo+ICsJICogZGVzdHJv eWVkIGJ5IHRoZSB0aW1lIGRldnJlcyBjYWxscyByZWd1bGF0b3IgcHV0Lgo+ICsJICovCj4gKwlt YWRlcmEtPmRjdmRkID0gcmVndWxhdG9yX2dldF9leGNsdXNpdmUobWFkZXJhLT5kZXYsICJEQ1ZE RCIpOwo+ICsJaWYgKElTX0VSUihtYWRlcmEtPmRjdmRkKSkgewo+ICsJCXJldCA9IFBUUl9FUlIo bWFkZXJhLT5kY3ZkZCk7Cj4gKwkJZGV2X2VycihkZXYsICJGYWlsZWQgdG8gcmVxdWVzdCBEQ1ZE RDogJWRcbiIsIHJldCk7Cj4gKwkJZ290byBlcnJfZGV2czsKPiArCX0KPiArCj4gKwlyZXQgPSBy ZWd1bGF0b3JfYnVsa19lbmFibGUobWFkZXJhLT5udW1fY29yZV9zdXBwbGllcywKPiArCQkJCSAg ICBtYWRlcmEtPmNvcmVfc3VwcGxpZXMpOwo+ICsJaWYgKHJldCkgewo+ICsJCWRldl9lcnIoZGV2 LCAiRmFpbGVkIHRvIGVuYWJsZSBjb3JlIHN1cHBsaWVzOiAlZFxuIiwgcmV0KTsKPiArCQlnb3Rv IGVycl9kY3ZkZDsKPiArCX0KPiArCj4gKwlyZXQgPSByZWd1bGF0b3JfZW5hYmxlKG1hZGVyYS0+ ZGN2ZGQpOwo+ICsJaWYgKHJldCkgewo+ICsJCWRldl9lcnIoZGV2LCAiRmFpbGVkIHRvIGVuYWJs ZSBEQ1ZERDogJWRcbiIsIHJldCk7Cj4gKwkJZ290byBlcnJfZW5hYmxlOwo+ICsJfQo+ICsKPiAr CW1hZGVyYV9kaXNhYmxlX2hhcmRfcmVzZXQobWFkZXJhKTsKPiArCj4gKwlyZWdjYWNoZV9jYWNo ZV9vbmx5KG1hZGVyYS0+cmVnbWFwLCBmYWxzZSk7Cj4gKwlyZWdjYWNoZV9jYWNoZV9vbmx5KG1h ZGVyYS0+cmVnbWFwXzMyYml0LCBmYWxzZSk7Cj4gKwo+ICsJLyoKPiArCSAqIFZlcmlmeSB0aGF0 IHRoaXMgaXMgYSBjaGlwIHdlIGtub3cgYWJvdXQgYmVmb3JlIHdlCj4gKwkgKiBzdGFydGluZyBk b2luZyBhbnkgd3JpdGVzIHRvIGl0cyByZWdpc3RlcnMKPiArCSAqLwo+ICsJcmV0ID0gcmVnbWFw X3JlYWQobWFkZXJhLT5yZWdtYXAsIE1BREVSQV9TT0ZUV0FSRV9SRVNFVCwgJmh3aWQpOwo+ICsJ aWYgKHJldCkgewo+ICsJCWRldl9lcnIoZGV2LCAiRmFpbGVkIHRvIHJlYWQgSUQgcmVnaXN0ZXI6 ICVkXG4iLCByZXQpOwo+ICsJCWdvdG8gZXJyX3Jlc2V0Owo+ICsJfQo+ICsKPiArCXN3aXRjaCAo aHdpZCkgewo+ICsJY2FzZSBDUzQ3TDM1X1NJTElDT05fSUQ6Cj4gKwkJaWYgKElTX0VOQUJMRUQo Q09ORklHX01GRF9DUzQ3TDM1KSkgewo+ICsJCQlzd2l0Y2ggKG1hZGVyYS0+dHlwZSkgewo+ICsJ CQljYXNlIENTNDdMMzU6Cj4gKwkJCQlwYXRjaF9mbiA9IGNzNDdsMzVfcGF0Y2g7Cj4gKwkJCQlt ZmRfZGV2cyA9IGNzNDdsMzVfZGV2czsKPiArCQkJCW5fZGV2cyA9IEFSUkFZX1NJWkUoY3M0N2wz NV9kZXZzKTsKPiArCQkJCWJyZWFrOwo+ICsJCQlkZWZhdWx0Ogo+ICsJCQkJYnJlYWs7Cj4gKwkJ CX0KPiArCQl9Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIENTNDdMODVfU0lMSUNPTl9JRDoKPiArCQlp ZiAoSVNfRU5BQkxFRChDT05GSUdfTUZEX0NTNDdMODUpKSB7Cj4gKwkJCXN3aXRjaCAobWFkZXJh LT50eXBlKSB7Cj4gKwkJCWNhc2UgQ1M0N0w4NToKPiArCQkJY2FzZSBXTTE4NDA6Cj4gKwkJCQlw YXRjaF9mbiA9IGNzNDdsODVfcGF0Y2g7Cj4gKwkJCQltZmRfZGV2cyA9IGNzNDdsODVfZGV2czsK PiArCQkJCW5fZGV2cyA9IEFSUkFZX1NJWkUoY3M0N2w4NV9kZXZzKTsKPiArCQkJCWJyZWFrOwo+ ICsJCQlkZWZhdWx0Ogo+ICsJCQkJYnJlYWs7Cj4gKwkJCX0KPiArCQl9Cj4gKwkJYnJlYWs7Cj4g KwljYXNlIENTNDdMOTBfU0lMSUNPTl9JRDoKPiArCQlpZiAoSVNfRU5BQkxFRChDT05GSUdfTUZE X0NTNDdMOTApKSB7Cj4gKwkJCXN3aXRjaCAobWFkZXJhLT50eXBlKSB7Cj4gKwkJCWNhc2UgQ1M0 N0w5MDoKPiArCQkJY2FzZSBDUzQ3TDkxOgo+ICsJCQkJcGF0Y2hfZm4gPSBjczQ3bDkwX3BhdGNo Owo+ICsJCQkJbWZkX2RldnMgPSBjczQ3bDkwX2RldnM7Cj4gKwkJCQluX2RldnMgPSBBUlJBWV9T SVpFKGNzNDdsOTBfZGV2cyk7Cj4gKwkJCQlicmVhazsKPiArCQkJZGVmYXVsdDoKPiArCQkJCWJy ZWFrOwo+ICsJCQl9Cj4gKwkJfQo+ICsJCWJyZWFrOwo+ICsJZGVmYXVsdDoKPiArCQlkZXZfZXJy KG1hZGVyYS0+ZGV2LCAiVW5rbm93biBkZXZpY2UgSUQ6ICV4XG4iLCBod2lkKTsKPiArCQlyZXQg PSAtRUlOVkFMOwo+ICsJCWdvdG8gZXJyX3Jlc2V0Owo+ICsJfQo+ICsKPiArCWlmICghbl9kZXZz KSB7Cj4gKwkJZGV2X2VycihtYWRlcmEtPmRldiwgIkRldmljZSBJRCAweCV4IG5vdCBhICVzXG4i LCBod2lkLAo+ICsJCQltYWRlcmEtPnR5cGVfbmFtZSk7Cj4gKwkJcmV0ID0gLUVOT0RFVjsKPiAr CQlnb3RvIGVycl9yZXNldDsKPiArCX0KPiArCj4gKwkvKgo+ICsJICogSXQgbG9va3MgbGlrZSBh IGRldmljZSB3ZSBzdXBwb3J0LiBJZiB3ZSBkb24ndCBoYXZlIGEgaGFyZCByZXNldAo+ICsJICog d2UgY2FuIG5vdyBhdHRlbXB0IGEgc29mdCByZXNldAo+ICsJICovCj4gKwlpZiAoIW1hZGVyYS0+ cmVzZXRfZ3Bpbykgewo+ICsJCXJldCA9IG1hZGVyYV9zb2Z0X3Jlc2V0KG1hZGVyYSk7Cj4gKwkJ aWYgKHJldCkKPiArCQkJZ290byBlcnJfcmVzZXQ7Cj4gKwl9Cj4gKwo+ICsJcmV0ID0gbWFkZXJh X3dhaXRfZm9yX2Jvb3QobWFkZXJhKTsKPiArCWlmIChyZXQpIHsKPiArCQlkZXZfZXJyKG1hZGVy YS0+ZGV2LCAiRGV2aWNlIGZhaWxlZCBpbml0aWFsIGJvb3Q6ICVkXG4iLCByZXQpOwo+ICsJCWdv dG8gZXJyX3Jlc2V0Owo+ICsJfQo+ICsKPiArCXJldCA9IHJlZ21hcF9yZWFkKG1hZGVyYS0+cmVn bWFwLCBNQURFUkFfSEFSRFdBUkVfUkVWSVNJT04sCj4gKwkJCSAgJm1hZGVyYS0+cmV2KTsKPiAr CWlmIChyZXQpIHsKPiArCQlkZXZfZXJyKGRldiwgIkZhaWxlZCB0byByZWFkIHJldmlzaW9uIHJl Z2lzdGVyOiAlZFxuIiwgcmV0KTsKPiArCQlnb3RvIGVycl9yZXNldDsKPiArCX0KPiArCW1hZGVy YS0+cmV2ICY9IE1BREVSQV9IV19SRVZJU0lPTl9NQVNLOwo+ICsKPiArCWRldl9pbmZvKGRldiwg IiVzIHNpbGljb24gcmV2aXNpb24gJWRcbiIsIG1hZGVyYS0+dHlwZV9uYW1lLAo+ICsJCSBtYWRl cmEtPnJldik7Cj4gKwo+ICsJLyogQXBwbHkgaGFyZHdhcmUgcGF0Y2ggKi8KPiArCWlmIChwYXRj aF9mbikgewo+ICsJCXJldCA9IHBhdGNoX2ZuKG1hZGVyYSk7Cj4gKwkJaWYgKHJldCkgewo+ICsJ CQlkZXZfZXJyKG1hZGVyYS0+ZGV2LCAiRmFpbGVkIHRvIGFwcGx5IHBhdGNoICVkXG4iLCByZXQp Owo+ICsJCQlnb3RvIGVycl9yZXNldDsKPiArCQl9Cj4gKwl9Cj4gKwo+ICsJLyogSW5pdCAzMmsg Y2xvY2sgc291cmNlZCBmcm9tIE1DTEsyICovCj4gKwlyZXQgPSByZWdtYXBfdXBkYXRlX2JpdHMo bWFkZXJhLT5yZWdtYXAsCj4gKwkJCU1BREVSQV9DTE9DS18zMktfMSwKPiArCQkJTUFERVJBX0NM S18zMktfRU5BX01BU0sgfCBNQURFUkFfQ0xLXzMyS19TUkNfTUFTSywKPiArCQkJTUFERVJBX0NM S18zMktfRU5BIHwgTUFERVJBXzMyS1pfTUNMSzIpOwo+ICsJaWYgKHJldCkgewo+ICsJCWRldl9l cnIobWFkZXJhLT5kZXYsICJGYWlsZWQgdG8gaW5pdCAzMmsgY2xvY2s6ICVkXG4iLCByZXQpOwo+ ICsJCWdvdG8gZXJyX3Jlc2V0Owo+ICsJfQo+ICsKPiArCXBtX3J1bnRpbWVfc2V0X2FjdGl2ZSht YWRlcmEtPmRldik7Cj4gKwlwbV9ydW50aW1lX2VuYWJsZShtYWRlcmEtPmRldik7Cj4gKwlwbV9y dW50aW1lX3NldF9hdXRvc3VzcGVuZF9kZWxheShtYWRlcmEtPmRldiwgMTAwKTsKPiArCXBtX3J1 bnRpbWVfdXNlX2F1dG9zdXNwZW5kKG1hZGVyYS0+ZGV2KTsKPiArCj4gKwlyZXQgPSBtZmRfYWRk X2RldmljZXMobWFkZXJhLT5kZXYsIFBMQVRGT1JNX0RFVklEX05PTkUsCj4gKwkJCSAgICAgIG1m ZF9kZXZzLCBuX2RldnMsCj4gKwkJCSAgICAgIE5VTEwsIDAsIE5VTEwpOwo+ICsJaWYgKHJldCkg ewo+ICsJCWRldl9lcnIobWFkZXJhLT5kZXYsICJGYWlsZWQgdG8gYWRkIHN1YmRldmljZXM6ICVk XG4iLCByZXQpOwo+ICsJCWdvdG8gZXJyX3BtX3J1bnRpbWU7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJu IDA7Cj4gKwo+ICtlcnJfcG1fcnVudGltZToKPiArCXBtX3J1bnRpbWVfZGlzYWJsZShtYWRlcmEt PmRldik7Cj4gK2Vycl9yZXNldDoKPiArCW1hZGVyYV9lbmFibGVfaGFyZF9yZXNldChtYWRlcmEp Owo+ICsJcmVndWxhdG9yX2Rpc2FibGUobWFkZXJhLT5kY3ZkZCk7Cj4gK2Vycl9lbmFibGU6Cj4g KwlyZWd1bGF0b3JfYnVsa19kaXNhYmxlKG1hZGVyYS0+bnVtX2NvcmVfc3VwcGxpZXMsCj4gKwkJ CSAgICAgICBtYWRlcmEtPmNvcmVfc3VwcGxpZXMpOwo+ICtlcnJfZGN2ZGQ6Cj4gKwlyZWd1bGF0 b3JfcHV0KG1hZGVyYS0+ZGN2ZGQpOwo+ICtlcnJfZGV2czoKPiArCW1mZF9yZW1vdmVfZGV2aWNl cyhkZXYpOwo+ICsKPiArCXJldHVybiByZXQ7Cj4gK30KPiArRVhQT1JUX1NZTUJPTF9HUEwobWFk ZXJhX2Rldl9pbml0KTsKPiArCj4gK2ludCBtYWRlcmFfZGV2X2V4aXQoc3RydWN0IG1hZGVyYSAq bWFkZXJhKQo+ICt7Cj4gKwkvKiBQcmV2ZW50IGFueSBJUlFzIGJlaW5nIHNlcnZpY2VkIHdoaWxl IHdlIGNsZWFuIHVwICovCj4gKwlkaXNhYmxlX2lycShtYWRlcmEtPmlycSk7Cj4gKwo+ICsJLyoK PiArCSAqIERDVkREIGNvdWxkIGJlIHN1cHBsaWVkIGJ5IGEgY2hpbGQgbm9kZSwgd2UgbXVzdCBk aXNhYmxlIGl0IGJlZm9yZQo+ICsJICogcmVtb3ZpbmcgdGhlIGNoaWxkcmVuLCBhbmQgcHJldmVu dCBQTSBydW50aW1lIGZyb20gdHVybmluZyBpdCBiYWNrIG9uCj4gKwkgKi8KPiArCXBtX3J1bnRp bWVfZGlzYWJsZShtYWRlcmEtPmRldik7Cj4gKwo+ICsJcmVndWxhdG9yX2Rpc2FibGUobWFkZXJh LT5kY3ZkZCk7Cj4gKwlyZWd1bGF0b3JfcHV0KG1hZGVyYS0+ZGN2ZGQpOwo+ICsKPiArCW1mZF9y ZW1vdmVfZGV2aWNlcyhtYWRlcmEtPmRldik7Cj4gKwltYWRlcmFfZW5hYmxlX2hhcmRfcmVzZXQo bWFkZXJhKTsKPiArCj4gKwlyZWd1bGF0b3JfYnVsa19kaXNhYmxlKG1hZGVyYS0+bnVtX2NvcmVf c3VwcGxpZXMsCj4gKwkJCSAgICAgICBtYWRlcmEtPmNvcmVfc3VwcGxpZXMpOwo+ICsJcmV0dXJu IDA7Cj4gK30KPiArRVhQT1JUX1NZTUJPTF9HUEwobWFkZXJhX2Rldl9leGl0KTsKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9tZmQvbWFkZXJhLWkyYy5jIGIvZHJpdmVycy9tZmQvbWFkZXJhLWkyYy5j Cj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi44MGMyMzA0Cj4gLS0tIC9k ZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvbWZkL21hZGVyYS1pMmMuYwo+IEBAIC0wLDAgKzEsMTM1 IEBACj4gKy8qCj4gKyAqIEkyQyBidXMgaW50ZXJmYWNlIHRvIENpcnJ1cyBMb2dpYyBNYWRlcmEg Y29kZWNzCj4gKyAqCj4gKyAqIENvcHlyaWdodCAyMDE1LTIwMTcgQ2lycnVzIExvZ2ljCj4gKyAq Cj4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IgbW9kaWZ5Cj4gKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCj4gKyAqIHB1Ymxpc2hlZCBieSB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlIDxsaW51eC9k ZXZpY2UuaD4KPiArI2luY2x1ZGUgPGxpbnV4L2Vyci5oPgo+ICsjaW5jbHVkZSA8bGludXgvaTJj Lmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KPiArI2luY2x1ZGUgPGxpbnV4L3JlZ21h cC5oPgo+ICsjaW5jbHVkZSA8bGludXgvb2YuaD4KCk5pdDogQWxwaGFiZXRpY2FsLgoKPiArI2lu Y2x1ZGUgPGxpbnV4L21mZC9tYWRlcmEvY29yZS5oPgo+ICsKPiArI2luY2x1ZGUgIm1hZGVyYS5o Igo+ICsKPiArc3RhdGljIGludCBtYWRlcmFfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpp MmMsCj4gKwkJCSAgICBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCAqaWQpCj4gK3sKPiArCXN0 cnVjdCBtYWRlcmEgKm1hZGVyYTsKPiArCWNvbnN0IHN0cnVjdCByZWdtYXBfY29uZmlnICpyZWdt YXBfMTZiaXRfY29uZmlnID0gTlVMTDsKPiArCWNvbnN0IHN0cnVjdCByZWdtYXBfY29uZmlnICpy ZWdtYXBfMzJiaXRfY29uZmlnID0gTlVMTDsKPiArCXVuc2lnbmVkIGxvbmcgdHlwZTsKPiArCWNv bnN0IGNoYXIgKm5hbWU7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCWlmIChpMmMtPmRldi5vZl9ub2Rl KQo+ICsJCXR5cGUgPSBtYWRlcmFfZ2V0X3R5cGVfZnJvbV9vZigmaTJjLT5kZXYpOwo+ICsJZWxz ZQo+ICsJCXR5cGUgPSBpZC0+ZHJpdmVyX2RhdGE7Cj4gKwo+ICsJc3dpdGNoICh0eXBlKSB7Cj4g KwljYXNlIENTNDdMMzU6Cj4gKwkJaWYgKElTX0VOQUJMRUQoQ09ORklHX01GRF9DUzQ3TDM1KSkg ewo+ICsJCQlyZWdtYXBfMTZiaXRfY29uZmlnID0gJmNzNDdsMzVfMTZiaXRfaTJjX3JlZ21hcDsK PiArCQkJcmVnbWFwXzMyYml0X2NvbmZpZyA9ICZjczQ3bDM1XzMyYml0X2kyY19yZWdtYXA7Cj4g KwkJfQo+ICsJCWJyZWFrOwo+ICsJY2FzZSBDUzQ3TDg1Ogo+ICsJY2FzZSBXTTE4NDA6Cj4gKwkJ aWYgKElTX0VOQUJMRUQoQ09ORklHX01GRF9DUzQ3TDg1KSkgewo+ICsJCQlyZWdtYXBfMTZiaXRf Y29uZmlnID0gJmNzNDdsODVfMTZiaXRfaTJjX3JlZ21hcDsKPiArCQkJcmVnbWFwXzMyYml0X2Nv bmZpZyA9ICZjczQ3bDg1XzMyYml0X2kyY19yZWdtYXA7Cj4gKwkJfQo+ICsJCWJyZWFrOwo+ICsJ Y2FzZSBDUzQ3TDkwOgo+ICsJY2FzZSBDUzQ3TDkxOgo+ICsJCWlmIChJU19FTkFCTEVEKENPTkZJ R19NRkRfQ1M0N0w5MCkpIHsKPiArCQkJcmVnbWFwXzE2Yml0X2NvbmZpZyA9ICZjczQ3bDkwXzE2 Yml0X2kyY19yZWdtYXA7Cj4gKwkJCXJlZ21hcF8zMmJpdF9jb25maWcgPSAmY3M0N2w5MF8zMmJp dF9pMmNfcmVnbWFwOwo+ICsJCX0KPiArCQlicmVhazsKPiArCWRlZmF1bHQ6Cj4gKwkJZGV2X2Vy cigmaTJjLT5kZXYsCj4gKwkJCSJVbmtub3duIE1hZGVyYSBJMkMgZGV2aWNlIHR5cGUgJWxkXG4i LCB0eXBlKTsKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiArCX0KPiArCj4gKwluYW1lID0gbWFkZXJh X25hbWVfZnJvbV90eXBlKHR5cGUpOwo+ICsKPiArCWlmICghcmVnbWFwXzE2Yml0X2NvbmZpZykg ewo+ICsJCWRldl9lcnIoJmkyYy0+ZGV2LAo+ICsJCQkiS2VybmVsIGRvZXMgbm90IGluY2x1ZGUg c3VwcG9ydCBmb3IgJXNcbiIsIG5hbWUpOwo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsJfQo+ICsK PiArCW1hZGVyYSA9IGRldm1fa3phbGxvYygmaTJjLT5kZXYsIHNpemVvZigqbWFkZXJhKSwgR0ZQ X0tFUk5FTCk7Cj4gKwlpZiAoIW1hZGVyYSkKPiArCQlyZXR1cm4gLUVOT01FTTsKPiArCj4gKwo+ ICsJbWFkZXJhLT5yZWdtYXAgPSBkZXZtX3JlZ21hcF9pbml0X2kyYyhpMmMsIHJlZ21hcF8xNmJp dF9jb25maWcpOwo+ICsJaWYgKElTX0VSUihtYWRlcmEtPnJlZ21hcCkpIHsKPiArCQlyZXQgPSBQ VFJfRVJSKG1hZGVyYS0+cmVnbWFwKTsKPiArCQlkZXZfZXJyKCZpMmMtPmRldiwKPiArCQkJIkZh aWxlZCB0byBhbGxvY2F0ZSAxNi1iaXQgcmVnaXN0ZXIgbWFwOiAlZFxuIiwJcmV0KTsKPiArCQly ZXR1cm4gcmV0Owo+ICsJfQo+ICsKPiArCW1hZGVyYS0+cmVnbWFwXzMyYml0ID0gZGV2bV9yZWdt YXBfaW5pdF9pMmMoaTJjLCByZWdtYXBfMzJiaXRfY29uZmlnKTsKPiArCWlmIChJU19FUlIobWFk ZXJhLT5yZWdtYXBfMzJiaXQpKSB7Cj4gKwkJcmV0ID0gUFRSX0VSUihtYWRlcmEtPnJlZ21hcF8z MmJpdCk7Cj4gKwkJZGV2X2VycigmaTJjLT5kZXYsCj4gKwkJCSJGYWlsZWQgdG8gYWxsb2NhdGUg MzItYml0IHJlZ2lzdGVyIG1hcDogJWRcbiIsIHJldCk7Cj4gKwkJcmV0dXJuIHJldDsKPiArCX0K PiArCj4gKwltYWRlcmEtPnR5cGUgPSB0eXBlOwo+ICsJbWFkZXJhLT50eXBlX25hbWUgPSBuYW1l Owo+ICsJbWFkZXJhLT5kZXYgPSAmaTJjLT5kZXY7Cj4gKwltYWRlcmEtPmlycSA9IGkyYy0+aXJx Owo+ICsKPiArCXJldHVybiBtYWRlcmFfZGV2X2luaXQobWFkZXJhKTsKPiArfQo+ICsKPiArc3Rh dGljIGludCBtYWRlcmFfaTJjX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqaTJjKQo+ICt7Cj4g KwlzdHJ1Y3QgbWFkZXJhICptYWRlcmEgPSBkZXZfZ2V0X2RydmRhdGEoJmkyYy0+ZGV2KTsKPiAr Cj4gKwltYWRlcmFfZGV2X2V4aXQobWFkZXJhKTsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsK PiArc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIG1hZGVyYV9pMmNfaWRbXSA9IHsK PiArCXsgImNzNDdsMzUiLCBDUzQ3TDM1IH0sCj4gKwl7ICJjczQ3bDg1IiwgQ1M0N0w4NSB9LAo+ ICsJeyAiY3M0N2w5MCIsIENTNDdMOTAgfSwKPiArCXsgImNzNDdsOTEiLCBDUzQ3TDkxIH0sCj4g Kwl7ICJ3bTE4NDAiLCBXTTE4NDAgfSwKPiArCXsgfQo+ICt9Owo+ICtNT0RVTEVfREVWSUNFX1RB QkxFKGkyYywgbWFkZXJhX2kyY19pZCk7Cj4gKwo+ICtzdGF0aWMgc3RydWN0IGkyY19kcml2ZXIg bWFkZXJhX2kyY19kcml2ZXIgPSB7Cj4gKwkuZHJpdmVyID0gewo+ICsJCS5uYW1lCT0gIm1hZGVy YSIsCj4gKwkJLnBtCT0gJm1hZGVyYV9wbV9vcHMsCj4gKwkJLm9mX21hdGNoX3RhYmxlCT0gb2Zf bWF0Y2hfcHRyKG1hZGVyYV9vZl9tYXRjaCksCj4gKwl9LAo+ICsJLnByb2JlCQk9IG1hZGVyYV9p MmNfcHJvYmUsCj4gKwkucmVtb3ZlCQk9IG1hZGVyYV9pMmNfcmVtb3ZlLAo+ICsJLmlkX3RhYmxl CT0gbWFkZXJhX2kyY19pZCwKPiArfTsKPiArCj4gK21vZHVsZV9pMmNfZHJpdmVyKG1hZGVyYV9p MmNfZHJpdmVyKTsKPiArCj4gK01PRFVMRV9ERVNDUklQVElPTigiTWFkZXJhIEkyQyBidXMgaW50 ZXJmYWNlIik7Cj4gK01PRFVMRV9BVVRIT1IoIlJpY2hhcmQgRml0emdlcmFsZCA8cmZAb3BlbnNv dXJjZS53b2xmc29ubWljcm8uY29tPiIpOwo+ICtNT0RVTEVfTElDRU5TRSgiR1BMIHYyIik7Cj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWZkL21hZGVyYS1zcGkuYyBiL2RyaXZlcnMvbWZkL21hZGVy YS1zcGkuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uMTI1MmM1OQo+ IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL21mZC9tYWRlcmEtc3BpLmMKPiBAQCAtMCww ICsxLDEzNSBAQAo+ICsvKgo+ICsgKiBTUEkgYnVzIGludGVyZmFjZSB0byBDaXJydXMgTG9naWMg TWFkZXJhIGNvZGVjcwo+ICsgKgo+ICsgKiBDb3B5cmlnaHQgMjAxNS0yMDE3IENpcnJ1cyBMb2dp Ywo+ICsgKgo+ICsgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQo+ICsgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcwo+ICsgKiBwdWJsaXNoZWQg YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KPiArICovCj4gKwo+ICsjaW5jbHVkZSA8 bGludXgvZGV2aWNlLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9lcnIuaD4KPiArI2luY2x1ZGUgPGxp bnV4L21vZHVsZS5oPgo+ICsjaW5jbHVkZSA8bGludXgvcmVnbWFwLmg+Cj4gKyNpbmNsdWRlIDxs aW51eC9vZi5oPgo+ICsjaW5jbHVkZSA8bGludXgvc3BpL3NwaS5oPgoKTml0OiBBbHBoYWJldGlj YWwuCgo+ICsjaW5jbHVkZSA8bGludXgvbWZkL21hZGVyYS9jb3JlLmg+Cj4gKwo+ICsjaW5jbHVk ZSAibWFkZXJhLmgiCj4gKwo+ICtzdGF0aWMgaW50IG1hZGVyYV9zcGlfcHJvYmUoc3RydWN0IHNw aV9kZXZpY2UgKnNwaSkKPiArewo+ICsJY29uc3Qgc3RydWN0IHNwaV9kZXZpY2VfaWQgKmlkID0g c3BpX2dldF9kZXZpY2VfaWQoc3BpKTsKPiArCXN0cnVjdCBtYWRlcmEgKm1hZGVyYTsKPiArCWNv bnN0IHN0cnVjdCByZWdtYXBfY29uZmlnICpyZWdtYXBfMTZiaXRfY29uZmlnID0gTlVMTDsKPiAr CWNvbnN0IHN0cnVjdCByZWdtYXBfY29uZmlnICpyZWdtYXBfMzJiaXRfY29uZmlnID0gTlVMTDsK PiArCXVuc2lnbmVkIGxvbmcgdHlwZTsKPiArCWNvbnN0IGNoYXIgKm5hbWU7Cj4gKwlpbnQgcmV0 Owo+ICsKPiArCWlmIChzcGktPmRldi5vZl9ub2RlKQo+ICsJCXR5cGUgPSBtYWRlcmFfZ2V0X3R5 cGVfZnJvbV9vZigmc3BpLT5kZXYpOwo+ICsJZWxzZQo+ICsJCXR5cGUgPSBpZC0+ZHJpdmVyX2Rh dGE7Cj4gKwo+ICsJc3dpdGNoICh0eXBlKSB7Cj4gKwljYXNlIENTNDdMMzU6Cj4gKwkJaWYgKElT X0VOQUJMRUQoQ09ORklHX01GRF9DUzQ3TDM1KSkgewo+ICsJCQlyZWdtYXBfMTZiaXRfY29uZmln ID0gJmNzNDdsMzVfMTZiaXRfc3BpX3JlZ21hcDsKPiArCQkJcmVnbWFwXzMyYml0X2NvbmZpZyA9 ICZjczQ3bDM1XzMyYml0X3NwaV9yZWdtYXA7Cj4gKwkJfQo+ICsJCWJyZWFrOwo+ICsJY2FzZSBD UzQ3TDg1Ogo+ICsJY2FzZSBXTTE4NDA6Cj4gKwkJaWYgKElTX0VOQUJMRUQoQ09ORklHX01GRF9D UzQ3TDg1KSkgewo+ICsJCQlyZWdtYXBfMTZiaXRfY29uZmlnID0gJmNzNDdsODVfMTZiaXRfc3Bp X3JlZ21hcDsKPiArCQkJcmVnbWFwXzMyYml0X2NvbmZpZyA9ICZjczQ3bDg1XzMyYml0X3NwaV9y ZWdtYXA7Cj4gKwkJfQo+ICsJCWJyZWFrOwo+ICsJY2FzZSBDUzQ3TDkwOgo+ICsJY2FzZSBDUzQ3 TDkxOgo+ICsJCWlmIChJU19FTkFCTEVEKENPTkZJR19NRkRfQ1M0N0w5MCkpIHsKPiArCQkJcmVn bWFwXzE2Yml0X2NvbmZpZyA9ICZjczQ3bDkwXzE2Yml0X3NwaV9yZWdtYXA7Cj4gKwkJCXJlZ21h cF8zMmJpdF9jb25maWcgPSAmY3M0N2w5MF8zMmJpdF9zcGlfcmVnbWFwOwo+ICsJCX0KPiArCQli cmVhazsKPiArCWRlZmF1bHQ6Cj4gKwkJZGV2X2Vycigmc3BpLT5kZXYsCj4gKwkJCSJVbmtub3du IE1hZGVyYSBTUEkgZGV2aWNlIHR5cGUgJWxkXG4iLCB0eXBlKTsKPiArCQlyZXR1cm4gLUVJTlZB TDsKPiArCX0KPiArCj4gKwluYW1lID0gbWFkZXJhX25hbWVfZnJvbV90eXBlKHR5cGUpOwo+ICsK PiArCWlmICghcmVnbWFwXzE2Yml0X2NvbmZpZykgewo+ICsJCWRldl9lcnIoJnNwaS0+ZGV2LAo+ ICsJCQkiS2VybmVsIGRvZXMgbm90IGluY2x1ZGUgc3VwcG9ydCBmb3IgJXNcbiIsIG5hbWUpOwo+ ICsJCXJldHVybiAtRUlOVkFMOwo+ICsJfQo+ICsKPiArCW1hZGVyYSA9IGRldm1fa3phbGxvYygm c3BpLT5kZXYsIHNpemVvZigqbWFkZXJhKSwgR0ZQX0tFUk5FTCk7Cj4gKwlpZiAoIW1hZGVyYSkK PiArCQlyZXR1cm4gLUVOT01FTTsKPiArCj4gKwltYWRlcmEtPnJlZ21hcCA9IGRldm1fcmVnbWFw X2luaXRfc3BpKHNwaSwgcmVnbWFwXzE2Yml0X2NvbmZpZyk7Cj4gKwlpZiAoSVNfRVJSKG1hZGVy YS0+cmVnbWFwKSkgewo+ICsJCXJldCA9IFBUUl9FUlIobWFkZXJhLT5yZWdtYXApOwo+ICsJCWRl dl9lcnIoJnNwaS0+ZGV2LAo+ICsJCQkiRmFpbGVkIHRvIGFsbG9jYXRlIDE2LWJpdCByZWdpc3Rl ciBtYXA6ICVkXG4iLAlyZXQpOwo+ICsJCXJldHVybiByZXQ7Cj4gKwl9Cj4gKwo+ICsJbWFkZXJh LT5yZWdtYXBfMzJiaXQgPSBkZXZtX3JlZ21hcF9pbml0X3NwaShzcGksIHJlZ21hcF8zMmJpdF9j b25maWcpOwo+ICsJaWYgKElTX0VSUihtYWRlcmEtPnJlZ21hcF8zMmJpdCkpIHsKPiArCQlyZXQg PSBQVFJfRVJSKG1hZGVyYS0+cmVnbWFwXzMyYml0KTsKPiArCQlkZXZfZXJyKCZzcGktPmRldiwK PiArCQkJIkZhaWxlZCB0byBhbGxvY2F0ZSAzMi1iaXQgcmVnaXN0ZXIgbWFwOiAlZFxuIiwJcmV0 KTsKPiArCQlyZXR1cm4gcmV0Owo+ICsJfQo+ICsKPiArCW1hZGVyYS0+dHlwZSA9IHR5cGU7Cj4g KwltYWRlcmEtPnR5cGVfbmFtZSA9IG5hbWU7Cj4gKwltYWRlcmEtPmRldiA9ICZzcGktPmRldjsK PiArCW1hZGVyYS0+aXJxID0gc3BpLT5pcnE7Cj4gKwo+ICsJcmV0dXJuIG1hZGVyYV9kZXZfaW5p dChtYWRlcmEpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IG1hZGVyYV9zcGlfcmVtb3ZlKHN0cnVj dCBzcGlfZGV2aWNlICpzcGkpCj4gK3sKPiArCXN0cnVjdCBtYWRlcmEgKm1hZGVyYSA9IHNwaV9n ZXRfZHJ2ZGF0YShzcGkpOwo+ICsKPiArCW1hZGVyYV9kZXZfZXhpdChtYWRlcmEpOwo+ICsKPiAr CXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHNwaV9kZXZpY2VfaWQg bWFkZXJhX3NwaV9pZHNbXSA9IHsKPiArCXsgImNzNDdsMzUiLCBDUzQ3TDM1IH0sCj4gKwl7ICJj czQ3bDg1IiwgQ1M0N0w4NSB9LAo+ICsJeyAiY3M0N2w5MCIsIENTNDdMOTAgfSwKPiArCXsgImNz NDdsOTEiLCBDUzQ3TDkxIH0sCj4gKwl7ICJ3bTE4NDAiLCBXTTE4NDAgfSwKPiArCXsgfSwKPiAr fTsKPiArTU9EVUxFX0RFVklDRV9UQUJMRShzcGksIG1hZGVyYV9zcGlfaWRzKTsKPiArCj4gK3N0 YXRpYyBzdHJ1Y3Qgc3BpX2RyaXZlciBtYWRlcmFfc3BpX2RyaXZlciA9IHsKPiArCS5kcml2ZXIg PSB7Cj4gKwkJLm5hbWUJPSAibWFkZXJhIiwKPiArCQkub3duZXIJPSBUSElTX01PRFVMRSwKCklz IHRoaXMgcmVxdWlyZWQgZm9yIFNQSSBzdGlsbD8KCj4gKwkJLnBtCT0gJm1hZGVyYV9wbV9vcHMs Cj4gKwkJLm9mX21hdGNoX3RhYmxlCT0gb2ZfbWF0Y2hfcHRyKG1hZGVyYV9vZl9tYXRjaCksCj4g Kwl9LAo+ICsJLnByb2JlCQk9IG1hZGVyYV9zcGlfcHJvYmUsCj4gKwkucmVtb3ZlCQk9IG1hZGVy YV9zcGlfcmVtb3ZlLAo+ICsJLmlkX3RhYmxlCT0gbWFkZXJhX3NwaV9pZHMsCj4gK307Cj4gKwo+ ICttb2R1bGVfc3BpX2RyaXZlcihtYWRlcmFfc3BpX2RyaXZlcik7Cj4gKwo+ICtNT0RVTEVfREVT Q1JJUFRJT04oIk1hZGVyYSBTUEkgYnVzIGludGVyZmFjZSIpOwo+ICtNT0RVTEVfQVVUSE9SKCJS aWNoYXJkIEZpdHpnZXJhbGQgPHJmQG9wZW5zb3VyY2Uud29sZnNvbm1pY3JvLmNvbT4iKTsKPiAr TU9EVUxFX0xJQ0VOU0UoIkdQTCB2MiIpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21mZC9tYWRl cmEuaCBiL2RyaXZlcnMvbWZkL21hZGVyYS5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRl eCAwMDAwMDAwLi42NDVjYmE3Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvbWZkL21h ZGVyYS5oCj4gQEAgLTAsMCArMSw1NCBAQAo+ICsvKgo+ICsgKiBNRkQgaW50ZXJuYWxzIGZvciBD aXJydXMgTG9naWMgTWFkZXJhIGNvZGVjcwo+ICsgKgo+ICsgKiBDb3B5cmlnaHQgMjAxNS0yMDE3 IENpcnJ1cyBMb2dpYwo+ICsgKgo+ICsgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQo+ICsgKiBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcwo+ICsg KiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KPiArICovCj4gKwo+ ICsjaWZuZGVmIE1BREVSQV9NRkRfSAo+ICsjZGVmaW5lIE1BREVSQV9NRkRfSAo+ICsKPiArI2lu Y2x1ZGUgPGxpbnV4L29mLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9wbS5oPgo+ICsKPiArc3RydWN0 IG1hZGVyYTsKPiArCj4gK2V4dGVybiBjb25zdCBzdHJ1Y3QgZGV2X3BtX29wcyBtYWRlcmFfcG1f b3BzOwo+ICtleHRlcm4gY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBtYWRlcmFfb2ZfbWF0Y2hb XTsKPiArCj4gK2ludCBtYWRlcmFfZGV2X2luaXQoc3RydWN0IG1hZGVyYSAqbWFkZXJhKTsKPiAr aW50IG1hZGVyYV9kZXZfZXhpdChzdHJ1Y3QgbWFkZXJhICptYWRlcmEpOwo+ICsKPiArI2lmZGVm IENPTkZJR19PRgo+ICt1bnNpZ25lZCBsb25nIG1hZGVyYV9nZXRfdHlwZV9mcm9tX29mKHN0cnVj dCBkZXZpY2UgKmRldik7Cj4gKyNlbHNlCj4gK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBt YWRlcmFfZ2V0X3R5cGVfZnJvbV9vZihzdHJ1Y3QgZGV2aWNlICpkZXYpCj4gK3sKPiArCXJldHVy biAwOwo+ICt9Cj4gKyNlbmRpZgoKUmVtb3ZlIHRoaXMsIEkgZG9uJ3QgdGhpbmsgaXQgYWRkIG11 Y2ggKGFueXRoaW5nPykKCj4gK2NvbnN0IGNoYXIgKm1hZGVyYV9uYW1lX2Zyb21fdHlwZShlbnVt IG1hZGVyYV90eXBlIHR5cGUpOwo+ICsKPiArZXh0ZXJuIGNvbnN0IHN0cnVjdCByZWdtYXBfY29u ZmlnIGNzNDdsMzVfMTZiaXRfc3BpX3JlZ21hcDsKPiArZXh0ZXJuIGNvbnN0IHN0cnVjdCByZWdt YXBfY29uZmlnIGNzNDdsMzVfMzJiaXRfc3BpX3JlZ21hcDsKPiArZXh0ZXJuIGNvbnN0IHN0cnVj dCByZWdtYXBfY29uZmlnIGNzNDdsMzVfMTZiaXRfaTJjX3JlZ21hcDsKPiArZXh0ZXJuIGNvbnN0 IHN0cnVjdCByZWdtYXBfY29uZmlnIGNzNDdsMzVfMzJiaXRfaTJjX3JlZ21hcDsKPiAraW50IGNz NDdsMzVfcGF0Y2goc3RydWN0IG1hZGVyYSAqbWFkZXJhKTsKPiArCj4gK2V4dGVybiBjb25zdCBz dHJ1Y3QgcmVnbWFwX2NvbmZpZyBjczQ3bDg1XzE2Yml0X3NwaV9yZWdtYXA7Cj4gK2V4dGVybiBj b25zdCBzdHJ1Y3QgcmVnbWFwX2NvbmZpZyBjczQ3bDg1XzMyYml0X3NwaV9yZWdtYXA7Cj4gK2V4 dGVybiBjb25zdCBzdHJ1Y3QgcmVnbWFwX2NvbmZpZyBjczQ3bDg1XzE2Yml0X2kyY19yZWdtYXA7 Cj4gK2V4dGVybiBjb25zdCBzdHJ1Y3QgcmVnbWFwX2NvbmZpZyBjczQ3bDg1XzMyYml0X2kyY19y ZWdtYXA7Cj4gK2ludCBjczQ3bDg1X3BhdGNoKHN0cnVjdCBtYWRlcmEgKm1hZGVyYSk7Cj4gKwo+ ICtleHRlcm4gY29uc3Qgc3RydWN0IHJlZ21hcF9jb25maWcgY3M0N2w5MF8xNmJpdF9zcGlfcmVn bWFwOwo+ICtleHRlcm4gY29uc3Qgc3RydWN0IHJlZ21hcF9jb25maWcgY3M0N2w5MF8zMmJpdF9z cGlfcmVnbWFwOwo+ICtleHRlcm4gY29uc3Qgc3RydWN0IHJlZ21hcF9jb25maWcgY3M0N2w5MF8x NmJpdF9pMmNfcmVnbWFwOwo+ICtleHRlcm4gY29uc3Qgc3RydWN0IHJlZ21hcF9jb25maWcgY3M0 N2w5MF8zMmJpdF9pMmNfcmVnbWFwOwo+ICtpbnQgY3M0N2w5MF9wYXRjaChzdHJ1Y3QgbWFkZXJh ICptYWRlcmEpOwo+ICsKPiArI2VuZGlmCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbWZk L21hZGVyYS9jb3JlLmggYi9pbmNsdWRlL2xpbnV4L21mZC9tYWRlcmEvY29yZS5oCj4gbmV3IGZp bGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi4yMWFjNTQzCj4gLS0tIC9kZXYvbnVsbAo+ ICsrKyBiL2luY2x1ZGUvbGludXgvbWZkL21hZGVyYS9jb3JlLmgKPiBAQCAtMCwwICsxLDE3OSBA QAo+ICsvKgo+ICsgKiBNRkQgaW50ZXJuYWxzIGZvciBDaXJydXMgTG9naWMgTWFkZXJhIGNvZGVj cwo+ICsgKgo+ICsgKiBDb3B5cmlnaHQgMjAxNS0yMDE3IENpcnJ1cyBMb2dpYwo+ICsgKgo+ICsg KiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yIG1vZGlmeQo+ICsgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcwo+ICsgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbi4KPiArICovCj4gKwo+ICsjaWZuZGVmIE1BREVSQV9DT1JFX0gK PiArI2RlZmluZSBNQURFUkFfQ09SRV9ICj4gKwo+ICsjaW5jbHVkZSA8bGludXgvaW50ZXJydXB0 Lmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9ub3RpZmllci5oPgo+ICsjaW5jbHVkZSA8bGludXgvcmVn bWFwLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9ncGlvL2NvbnN1bWVyLmg+Cj4gKyNpbmNsdWRlIDxs aW51eC9pcnFjaGlwL2lycS1tYWRlcmEuaD4KPiArI2luY2x1ZGUgPGxpbnV4L21mZC9tYWRlcmEv cGRhdGEuaD4KPiArI2luY2x1ZGUgPGxpbnV4L3JlZ3VsYXRvci9jb25zdW1lci5oPgo+ICsjaW5j bHVkZSA8c291bmQvbWFkZXJhLXBkYXRhLmg+CgpOaXQ6IEFscGhhYmV0aWNhbC4KCj4gK2VudW0g bWFkZXJhX3R5cGUgewo+ICsJQ1M0N0wzNSA9IDEsCj4gKwlDUzQ3TDg1ID0gMiwKPiArCUNTNDdM OTAgPSAzLAo+ICsJQ1M0N0w5MSA9IDQsCj4gKwlXTTE4NDAgPSA3LAo+ICt9Owo+ICsKPiArI2Rl ZmluZSBNQURFUkFfTUFYX0NPUkVfU1VQUExJRVMJMgo+ICsjZGVmaW5lIE1BREVSQV9NQVhfR1BJ T1MJCTQwCj4gKwo+ICsjZGVmaW5lIENTNDdMMzVfTlVNX0dQSU9TCQkxNgo+ICsjZGVmaW5lIENT NDdMODVfTlVNX0dQSU9TCQk0MAo+ICsjZGVmaW5lIENTNDdMOTBfTlVNX0dQSU9TCQkzOAo+ICsK PiArI2RlZmluZSBNQURFUkFfTUFYX01JQ0JJQVMJCTQKPiArCj4gKy8qIE5vdGlmaWVyIGV2ZW50 cyAqLwo+ICsjZGVmaW5lIE1BREVSQV9OT1RJRllfVk9JQ0VfVFJJR0dFUgkweDEKPiArI2RlZmlu ZSBNQURFUkFfTk9USUZZX0hQREVUCQkweDIKPiArI2RlZmluZSBNQURFUkFfTk9USUZZX01JQ0RF VAkJMHg0Cj4gKwo+ICsvKiBHUElPIEZ1bmN0aW9uIERlZmluaXRpb25zICovCj4gKyNkZWZpbmUg TUFERVJBX0dQX0ZOX0FMVEVSTkFURQkJMHgwMAo+ICsjZGVmaW5lIE1BREVSQV9HUF9GTl9HUElP CQkweDAxCj4gKyNkZWZpbmUgTUFERVJBX0dQX0ZOX0RTUF9HUElPCQkweDAyCj4gKyNkZWZpbmUg TUFERVJBX0dQX0ZOX0lSUTEJCTB4MDMKPiArI2RlZmluZSBNQURFUkFfR1BfRk5fSVJRMgkJMHgw NAo+ICsjZGVmaW5lIE1BREVSQV9HUF9GTl9GTEwxX0NMT0NLCQkweDEwCj4gKyNkZWZpbmUgTUFE RVJBX0dQX0ZOX0ZMTDJfQ0xPQ0sJCTB4MTEKPiArI2RlZmluZSBNQURFUkFfR1BfRk5fRkxMM19D TE9DSwkJMHgxMgo+ICsjZGVmaW5lIE1BREVSQV9HUF9GTl9GTExBT19DTE9DSwkweDEzCj4gKyNk ZWZpbmUgTUFERVJBX0dQX0ZOX0ZMTDFfTE9DSwkJMHgxOAo+ICsjZGVmaW5lIE1BREVSQV9HUF9G Tl9GTEwyX0xPQ0sJCTB4MTkKPiArI2RlZmluZSBNQURFUkFfR1BfRk5fRkxMM19MT0NLCQkweDFB Cj4gKyNkZWZpbmUgTUFERVJBX0dQX0ZOX0ZMTEFPX0xPQ0sJCTB4MUIKPiArI2RlZmluZSBNQURF UkFfR1BfRk5fT1BDTEtfT1VUCQkweDQwCj4gKyNkZWZpbmUgTUFERVJBX0dQX0ZOX09QQ0xLX0FT WU5DX09VVAkweDQxCj4gKyNkZWZpbmUgTUFERVJBX0dQX0ZOX1BXTTEJCTB4NDgKPiArI2RlZmlu ZSBNQURFUkFfR1BfRk5fUFdNMgkJMHg0OQo+ICsjZGVmaW5lIE1BREVSQV9HUF9GTl9TUERJRl9P VVQJCTB4NEMKPiArI2RlZmluZSBNQURFUkFfR1BfRk5fSEVBRFBIT05FX0RFVAkweDUwCj4gKyNk ZWZpbmUgTUFERVJBX0dQX0ZOX01JQ19ERVQJCTB4NTgKPiArI2RlZmluZSBNQURFUkFfR1BfRk5f RFJDMV9TSUdOQUxfREVURUNUCTB4ODAKPiArI2RlZmluZSBNQURFUkFfR1BfRk5fRFJDMl9TSUdO QUxfREVURUNUCTB4ODEKPiArI2RlZmluZSBNQURFUkFfR1BfRk5fQVNSQzFfSU4xX0xPQ0sJMHg4 OAo+ICsjZGVmaW5lIE1BREVSQV9HUF9GTl9BU1JDMV9JTjJfTE9DSwkweDg5Cj4gKyNkZWZpbmUg TUFERVJBX0dQX0ZOX0FTUkMyX0lOMV9MT0NLCTB4OEEKPiArI2RlZmluZSBNQURFUkFfR1BfRk5f QVNSQzJfSU4yX0xPQ0sJMHg4Qgo+ICsjZGVmaW5lIE1BREVSQV9HUF9GTl9EU1BfSVJRMQkJMHhB MAo+ICsjZGVmaW5lIE1BREVSQV9HUF9GTl9EU1BfSVJRMgkJMHhBMQo+ICsjZGVmaW5lIE1BREVS QV9HUF9GTl9EU1BfSVJRMwkJMHhBMgo+ICsjZGVmaW5lIE1BREVSQV9HUF9GTl9EU1BfSVJRNAkJ MHhBMwo+ICsjZGVmaW5lIE1BREVSQV9HUF9GTl9EU1BfSVJRNQkJMHhBNAo+ICsjZGVmaW5lIE1B REVSQV9HUF9GTl9EU1BfSVJRNgkJMHhBNQo+ICsjZGVmaW5lIE1BREVSQV9HUF9GTl9EU1BfSVJR NwkJMHhBNgo+ICsjZGVmaW5lIE1BREVSQV9HUF9GTl9EU1BfSVJROAkJMHhBNwo+ICsjZGVmaW5l IE1BREVSQV9HUF9GTl9EU1BfSVJROQkJMHhBOAo+ICsjZGVmaW5lIE1BREVSQV9HUF9GTl9EU1Bf SVJRMTAJCTB4QTkKPiArI2RlZmluZSBNQURFUkFfR1BfRk5fRFNQX0lSUTExCQkweEFBCj4gKyNk ZWZpbmUgTUFERVJBX0dQX0ZOX0RTUF9JUlExMgkJMHhBQgo+ICsjZGVmaW5lIE1BREVSQV9HUF9G Tl9EU1BfSVJRMTMJCTB4QUMKPiArI2RlZmluZSBNQURFUkFfR1BfRk5fRFNQX0lSUTE0CQkweEFE Cj4gKyNkZWZpbmUgTUFERVJBX0dQX0ZOX0RTUF9JUlExNQkJMHhBRQo+ICsjZGVmaW5lIE1BREVS QV9HUF9GTl9EU1BfSVJRMTYJCTB4QUYKPiArI2RlZmluZSBNQURFUkFfR1BfRk5fSFBPVVQxTF9T QwkJMHhCMAo+ICsjZGVmaW5lIE1BREVSQV9HUF9GTl9IUE9VVDFSX1NDCQkweEIxCj4gKyNkZWZp bmUgTUFERVJBX0dQX0ZOX0hQT1VUMkxfU0MJCTB4QjIKPiArI2RlZmluZSBNQURFUkFfR1BfRk5f SFBPVVQyUl9TQwkJMHhCMwo+ICsjZGVmaW5lIE1BREVSQV9HUF9GTl9IUE9VVDNMX1NDCQkweEI0 Cj4gKyNkZWZpbmUgTUFERVJBX0dQX0ZOX0hQT1VUNFJfU0MJCTB4QjUKPiArI2RlZmluZSBNQURF UkFfR1BfRk5fU1BLT1VUTF9TQwkJMHhCNgo+ICsjZGVmaW5lIE1BREVSQV9HUF9GTl9TUEtPVVRS X1NDCQkweEI3Cj4gKyNkZWZpbmUgTUFERVJBX0dQX0ZOX0hQT1VUMUxfRU5BCTB4QzAKPiArI2Rl ZmluZSBNQURFUkFfR1BfRk5fSFBPVVQxUl9FTkEJMHhDMQo+ICsjZGVmaW5lIE1BREVSQV9HUF9G Tl9IUE9VVDJMX0VOQQkweEMyCj4gKyNkZWZpbmUgTUFERVJBX0dQX0ZOX0hQT1VUMlJfRU5BCTB4 QzMKPiArI2RlZmluZSBNQURFUkFfR1BfRk5fSFBPVVQzTF9FTkEJMHhDNAo+ICsjZGVmaW5lIE1B REVSQV9HUF9GTl9IUE9VVDRSX0VOQQkweEM1Cj4gKyNkZWZpbmUgTUFERVJBX0dQX0ZOX1NQS09V VExfRU5BCTB4QzYKPiArI2RlZmluZSBNQURFUkFfR1BfRk5fU1BLT1VUUl9FTkEJMHhDNwo+ICsj ZGVmaW5lIE1BREVSQV9HUF9GTl9IUE9VVDFMX0RJUwkweEQwCj4gKyNkZWZpbmUgTUFERVJBX0dQ X0ZOX0hQT1VUMVJfRElTCTB4RDEKPiArI2RlZmluZSBNQURFUkFfR1BfRk5fSFBPVVQyTF9ESVMJ MHhEMgo+ICsjZGVmaW5lIE1BREVSQV9HUF9GTl9IUE9VVDJSX0RJUwkweEQzCj4gKyNkZWZpbmUg TUFERVJBX0dQX0ZOX0hQT1VUM0xfRElTCTB4RDQKPiArI2RlZmluZSBNQURFUkFfR1BfRk5fSFBP VVQ0Ul9ESVMJMHhENQo+ICsjZGVmaW5lIE1BREVSQV9HUF9GTl9TUEtPVVRMX0RJUwkweEQ2Cj4g KyNkZWZpbmUgTUFERVJBX0dQX0ZOX1NQS09VVFJfRElTCTB4RDcKPiArI2RlZmluZSBNQURFUkFf R1BfRk5fU1BLX1NIVVRET1dOCTB4RTAKPiArI2RlZmluZSBNQURFUkFfR1BfRk5fU1BLX09WSF9T SFVURE9XTgkweEUxCj4gKyNkZWZpbmUgTUFERVJBX0dQX0ZOX1NQS19PVkhfV0FSTgkweEUyCj4g KyNkZWZpbmUgTUFERVJBX0dQX0ZOX1RJTUVSMV9TVEFUVVMJMHgxNDAKPiArI2RlZmluZSBNQURF UkFfR1BfRk5fVElNRVIyX1NUQVRVUwkweDE0MQo+ICsjZGVmaW5lIE1BREVSQV9HUF9GTl9USU1F UjNfU1RBVFVTCTB4MTQyCj4gKyNkZWZpbmUgTUFERVJBX0dQX0ZOX1RJTUVSNF9TVEFUVVMJMHgx NDMKPiArI2RlZmluZSBNQURFUkFfR1BfRk5fVElNRVI1X1NUQVRVUwkweDE0NAo+ICsjZGVmaW5l IE1BREVSQV9HUF9GTl9USU1FUjZfU1RBVFVTCTB4MTQ1Cj4gKyNkZWZpbmUgTUFERVJBX0dQX0ZO X1RJTUVSN19TVEFUVVMJMHgxNDYKPiArI2RlZmluZSBNQURFUkFfR1BfRk5fVElNRVI4X1NUQVRV UwkweDE0Nwo+ICsjZGVmaW5lIE1BREVSQV9HUF9GTl9FVkVOVExPRzFfRklGT19TVFMJMHgxNTAK PiArI2RlZmluZSBNQURFUkFfR1BfRk5fRVZFTlRMT0cyX0ZJRk9fU1RTCTB4MTUxCj4gKyNkZWZp bmUgTUFERVJBX0dQX0ZOX0VWRU5UTE9HM19GSUZPX1NUUwkweDE1Mgo+ICsjZGVmaW5lIE1BREVS QV9HUF9GTl9FVkVOVExPRzRfRklGT19TVFMJMHgxNTMKPiArI2RlZmluZSBNQURFUkFfR1BfRk5f RVZFTlRMT0c1X0ZJRk9fU1RTCTB4MTU0Cj4gKyNkZWZpbmUgTUFERVJBX0dQX0ZOX0VWRU5UTE9H Nl9GSUZPX1NUUwkweDE1NQo+ICsjZGVmaW5lIE1BREVSQV9HUF9GTl9FVkVOVExPRzdfRklGT19T VFMJMHgxNTYKPiArI2RlZmluZSBNQURFUkFfR1BfRk5fRVZFTlRMT0c4X0ZJRk9fU1RTCTB4MTU3 Cj4gKwo+ICtzdHJ1Y3Qgc25kX3NvY19kYXBtX2NvbnRleHQ7Cj4gKwo+ICsvKgo+ICsgKiBzdHJ1 Y3QgbWFkZXJhCj4gKyAqCj4gKyAqIFRoaXMgc2hvdWxkIG5vdCBiZSB1c2VkIGJ5IGFueXRoaW5n IGV4Y2VwdCBjaGlsZCBkcml2ZXJzIG9mIHRoZSBNYWRlcmEgTUZECj4gKyAqLwo+ICtzdHJ1Y3Qg bWFkZXJhIHsKPiArCXN0cnVjdCByZWdtYXAgKnJlZ21hcDsKPiArCXN0cnVjdCByZWdtYXAgKnJl Z21hcF8zMmJpdDsKPiArCj4gKwlzdHJ1Y3QgZGV2aWNlICpkZXY7Cj4gKwo+ICsJZW51bSBtYWRl cmFfdHlwZSB0eXBlOwo+ICsJdW5zaWduZWQgaW50IHJldjsKPiArCWNvbnN0IGNoYXIgKnR5cGVf bmFtZTsKPiArCj4gKwlzdHJ1Y3QgZ3Bpb19kZXNjICpyZXNldF9ncGlvOwo+ICsKPiArCWludCBu dW1fY29yZV9zdXBwbGllczsKPiArCXN0cnVjdCByZWd1bGF0b3JfYnVsa19kYXRhIGNvcmVfc3Vw cGxpZXNbTUFERVJBX01BWF9DT1JFX1NVUFBMSUVTXTsKPiArCXN0cnVjdCByZWd1bGF0b3IgKmRj dmRkOwo+ICsJYm9vbCBpbnRlcm5hbF9kY3ZkZDsKPiArCj4gKwlzdHJ1Y3QgbWFkZXJhX3BkYXRh IHBkYXRhOwo+ICsKPiArCXN0cnVjdCBkZXZpY2UgKmlycV9kZXY7Cj4gKwlpbnQgaXJxOwo+ICsK PiArCXVuc2lnbmVkIGludCBvdXRfY2xhbXBbTUFERVJBX01BWF9PVVRQVVRdOwo+ICsJdW5zaWdu ZWQgaW50IG91dF9zaG9ydGVkW01BREVSQV9NQVhfT1VUUFVUXTsKPiArCXVuc2lnbmVkIGludCBo cF9lbmE7Cj4gKwo+ICsJdW5zaWduZWQgaW50IG51bV9taWNiaWFzOwo+ICsJdW5zaWduZWQgaW50 IG51bV9jaGlsZGJpYXNbTUFERVJBX01BWF9NSUNCSUFTXTsKPiArCj4gKwlzdHJ1Y3Qgc25kX3Nv Y19kYXBtX2NvbnRleHQgKmRhcG07Cj4gKwo+ICsJc3RydWN0IGJsb2NraW5nX25vdGlmaWVyX2hl YWQgbm90aWZpZXI7Cj4gK307CgpJIHRoaW5rIHRoaXMgZGVzZXJ2ZXMgYSBrZXJuZWxkb2MgaGVh ZGVyLgoKPiArc3RhdGljIGlubGluZSBpbnQgbWFkZXJhX2NhbGxfbm90aWZpZXJzKHN0cnVjdCBt YWRlcmEgKm1hZGVyYSwKPiArCQkJCQl1bnNpZ25lZCBsb25nIGV2ZW50LAo+ICsJCQkJCXZvaWQg KmRhdGEpCj4gK3sKPiArCXJldHVybiBibG9ja2luZ19ub3RpZmllcl9jYWxsX2NoYWluKCZtYWRl cmEtPm5vdGlmaWVyLCBldmVudCwgZGF0YSk7Cj4gK30KPiArI2VuZGlmCgpXaGVyZSBpcyB0aGlz IGNhbGxlZCBmcm9tPwoKPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9tZmQvbWFkZXJhL3Bk YXRhLmggYi9pbmNsdWRlL2xpbnV4L21mZC9tYWRlcmEvcGRhdGEuaAo+IG5ldyBmaWxlIG1vZGUg MTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uYjNhZjQ3Ywo+IC0tLSAvZGV2L251bGwKPiArKysgYi9p bmNsdWRlL2xpbnV4L21mZC9tYWRlcmEvcGRhdGEuaAo+IEBAIC0wLDAgKzEsNjEgQEAKPiArLyoK PiArICogUGxhdGZvcm0gZGF0YSBmb3IgQ2lycnVzIExvZ2ljIE1hZGVyYSBjb2RlY3MKPiArICoK PiArICogQ29weXJpZ2h0IDIwMTUtMjAxNyBDaXJydXMgTG9naWMKPiArICoKPiArICogVGhpcyBw cm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt b2RpZnkKPiArICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSB2ZXJzaW9uIDIgYXMKPiArICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24uCj4gKyAqLwo+ICsKPiArI2lmbmRlZiBNQURFUkFfUERBVEFfSAo+ICsjZGVm aW5lIE1BREVSQV9QREFUQV9ICj4gKwo+ICsjaW5jbHVkZSA8bGludXgva2VybmVsLmg+Cj4gKyNp bmNsdWRlIDxsaW51eC9pcnFjaGlwL2lycS1tYWRlcmEtcGRhdGEuaD4KPiArI2luY2x1ZGUgPGxp bnV4L3JlZ3VsYXRvci9hcml6b25hLWxkbzEuaD4KPiArI2luY2x1ZGUgPGxpbnV4L3JlZ3VsYXRv ci9hcml6b25hLW1pY3N1cHAuaD4KPiArI2luY2x1ZGUgPGxpbnV4L3JlZ3VsYXRvci9tYWNoaW5l Lmg+Cj4gKyNpbmNsdWRlIDxzb3VuZC9tYWRlcmEtcGRhdGEuaD4KCkd1ZXNzIHdoYXQ/Cgo+ICsj ZGVmaW5lIE1BREVSQV9NQVhfTUlDQklBUwkJNAo+ICsjZGVmaW5lIE1BREVSQV9NQVhfQ0hJTERf TUlDQklBUwk0Cj4gKwo+ICsjZGVmaW5lIE1BREVSQV9NQVhfR1BTVwkJCTIKPiArCj4gK3N0cnVj dCBwaW5jdHJsX21hcDsKPiArCj4gKy8qKgo+ICsgKiBzdHJ1Y3QgbWFkZXJhX3BkYXRhIC0gQ29u ZmlndXJhdGlvbiBkYXRhIGZvciBNYWRlcmEgZGV2aWNlcwo+ICsgKgo+ICsgKiBAcmVzZXQ6CSAg ICBHUElPIGNvbnRyb2xsaW5nIC9SRVNFVCAoMCA9IG5vbmUpCj4gKyAqIEBsZG8xOgkgICAgU3Vi c3RydWN0IG9mIHBkYXRhIGZvciB0aGUgTERPMSByZWd1bGF0b3IKPiArICogQG1pY3ZkZDoJICAg IFN1YnN0cnVjdCBvZiBwZGF0YSBmb3IgdGhlIE1JQ1ZERCByZWd1bGF0b3IKPiArICogQGlycWNo aXA6CSAgICBTdWJzdHJ1Y3Qgb2YgcGRhdGEgZm9yIHRoZSBpcnFjaGlwIGRyaXZlcgo+ICsgKiBA Z3Bpb19iYXNlOgkgICAgQmFzZSBHUElPIG51bWJlcgo+ICsgKiBAZ3Bpb19jb25maWdzOiAgIEFy cmF5IG9mIEdQSU8gY29uZmlndXJhdGlvbnMgKFNlZSBEb2N1bWVudGF0aW9uL3BpbmN0cmwudHh0 KQo+ICsgKiBAbl9ncGlvX2NvbmZpZ3M6IE51bWJlciBvZiBlbnRyaWVzIGluIGdwaW9fY29uZmln cwo+ICsgKiBAY29kZWM6CSAgICBTdWJzdHJ1Y3R1cmUgb2YgcGRhdGEgZm9yIHRoZSBBU29DIGNv ZGVjIGRyaXZlcgo+ICsgKgkJICAgIFNlZSBpbmNsdWRlL3NvdW5kL21hZGVyYS1wZGF0YS5oCj4g KyAqIEBncHN3OgkgICAgR2VuZXJhbCBwdXJwb3NlIHN3aXRjaCBtb2RlIHNldHRpbmcgKFNlZSB0 aGUgU1cxX01PREUgZmllbGQKPiArICoJCSAgICBpbiB0aGUgZGF0YXNoZWV0IGZvciB0aGUgYXZh aWxhYmxlIHZhbHVlcyBmb3IgeW91ciBjb2RlYykKPiArICovCj4gK3N0cnVjdCBtYWRlcmFfcGRh dGEgewo+ICsJaW50IHJlc2V0Owo+ICsKPiArCXN0cnVjdCBhcml6b25hX2xkbzFfcGRhdGEgbGRv MTsKPiArCXN0cnVjdCBhcml6b25hX21pY3N1cHBfcGRhdGEgbWljdmRkOwo+ICsKPiArCXN0cnVj dCBtYWRlcmFfaXJxY2hpcF9wZGF0YSBpcnFjaGlwOwo+ICsKPiArCWludCBncGlvX2Jhc2U7Cj4g Kwo+ICsJY29uc3Qgc3RydWN0IHBpbmN0cmxfbWFwICpncGlvX2NvbmZpZ3M7Cj4gKwlpbnQgbl9n cGlvX2NvbmZpZ3M7Cj4gKwo+ICsJc3RydWN0IG1hZGVyYV9jb2RlY19wZGF0YSBjb2RlYzsKPiAr Cj4gKwl1MzIgZ3Bzd1tNQURFUkFfTUFYX0dQU1ddOwo+ICt9Owo+ICsKPiArI2VuZGlmCgpPbmNl IHlvdSBmaXhlZCBhbGwgb2YgbXkgY29tbWVudHMsIHBsZWFzZSBhcHBseSBteToKCkZvciBteSBv d24gcmVmZXJlbmNlOgogIEFja2VkLWZvci1NRkQtYnk6IExlZSBKb25lcyA8bGVlLmpvbmVzQGxp bmFyby5vcmc+CgotLSAKTGVlIEpvbmVzCkxpbmFybyBTVE1pY3JvZWxlY3Ryb25pY3MgTGFuZGlu ZyBUZWFtIExlYWQKTGluYXJvLm9yZyDilIIgT3BlbiBzb3VyY2Ugc29mdHdhcmUgZm9yIEFSTSBT b0NzCkZvbGxvdyBMaW5hcm86IEZhY2Vib29rIHwgVHdpdHRlciB8IEJsb2cKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWxzYS1kZXZlbCBtYWlsaW5nIGxp c3QKQWxzYS1kZXZlbEBhbHNhLXByb2plY3Qub3JnCmh0dHA6Ly9tYWlsbWFuLmFsc2EtcHJvamVj dC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbHNhLWRldmVsCg==