From mboxrd@z Thu Jan 1 00:00:00 1970 From: Vince Hsu Subject: Re: [RFC PATCH 2/3] dvfs: add support for GK20A Date: Thu, 18 Dec 2014 18:37:40 +0800 Message-ID: <5492AE74.7010503@nvidia.com> References: <1418884092-14448-1-git-send-email-vinceh@nvidia.com> <1418884092-14448-3-git-send-email-vinceh@nvidia.com> <5492A8E6.1040508@nvidia.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: nouveau-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Nouveau" To: Ben Skeggs Cc: Roy Spliet , Ben Skeggs , "nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" List-Id: nouveau.vger.kernel.org Ck9uIDEyLzE4LzIwMTQgMDY6MjUgUE0sIEJlbiBTa2VnZ3Mgd3JvdGU6Cj4gT24gVGh1LCBEZWMg MTgsIDIwMTQgYXQgODoxMyBQTSwgVmluY2UgSHN1IDx2aW5jZWhAbnZpZGlhLmNvbT4gd3JvdGU6 Cj4+IEhlbGxvIEJlbiwKPj4KPj4gT24gMTIvMTgvMjAxNCAwNTozNCBQTSwgQmVuIFNrZWdncyB3 cm90ZToKPj4+IE9uIFRodSwgRGVjIDE4LCAyMDE0IGF0IDQ6MjggUE0sIFZpbmNlIEhzdSA8dmlu Y2VoQG52aWRpYS5jb20+IHdyb3RlOgo+Pj4+IFRoaXMgcGF0Y2ggY3JlYXRlcyBhIHN1YmRldiBm b3IgRFZGUyAoRHluYW1pYyBWb2x0YWdlIGFuZCBGcmVxdWVuY3kKPj4+PiBTY2FsaW5nKQo+Pj4+ IHN1cHBvcnQgaW4gTm91dmVhdS4gVGhpcyBzdWJkZXYgcmVmZXJzIHRvIHRoZSBzdGF0dXMgaW5m b3JtYXRpb24gcHJvdmlkZWQKPj4+PiBieQo+Pj4+IHRoZSBOVklESUEgaGFyZHdhcmUgYW5kIHRy aWVzIHRvIGFkanVzdCB0aGUgcGVyZm9ybWFuY2UgbGV2ZWwgYmFzZWQgb24KPj4+PiB0aGUKPj4+ PiBjYWxjdWxhdGVkIHRhcmdldC4gT25seSB0aGUgR0syMEEgaXMgc3VwcG9ydGVkIHJpZ2h0IG5v dy4KPj4+IEhleSBWaW5jZSwKPj4+Cj4+PiBJJ2Qgbm90IG1ha2UgYSBuZXcgc3ViZGV2LCBidXQg aW1wbGVtZW50IHRoaXMgaW4gdGhlIFBNVSAoUFdSCj4+PiBjdXJyZW50bHkpIHN1YmRldi4gIFRo ZSB1Y29kZSB0aGF0J3Mgc3VwcG9zZWQgdG8gYmUgcnVubmluZyB0aGVyZSBjYW4KPj4+IGRvIHRo ZSBwZXJmb3JtYW5jZSBtb25pdG9yaW5nIGluIGEgbW9yZSBjb21wbGV4IGltcGxlbWVudGF0aW9u LCBhbmQKPj4+IGl0J3MgUE1VIGNvdW50ZXJzIHlvdSdyZSB0b3VjaGluZyB0byBnZXQgdGhlIHVz YWdlIHN0YXRzIDopICBCdXQgdGhlCj4+PiBzaW1wbGVyIG9uLWhvc3QgaW1wbGVtZW50YXRpb24g aXMgdG90YWxseSBmaW5lLgo+PiBZZWFoLCBJIGtub3cgd2UgaGF2ZSB0aGUgY291bnRlcnMgZGVm aW5lZCBpbiBkYWVtb24uYy4gTWFydGluIHJlbWluZGVkIG1lCj4+IHRoYXQgUm95IGhhZCBhIHBh dGNoIHRvIHJlbW92ZSB0aGF0LCBzb3JyeSB0aGF0IEkgY291bGQgbm90IGZpbmQgdGhlIGxpbmsK Pj4gbm93LiBBbm90aGVyIHJlYXNvbiBJIGRpZCBub3QgdXNlIHRoZSBub3V2ZWF1X3NwZWNzaWcg aXMgYmVjYXVzZSBJIGhhZCB0bwo+PiBjcmVhdGUgc29tZSBudmlmIHN0cnVjdHVyZXMgdG8gYWNj ZXNzIHRoZSBjb3VudGVycyBhbmQgdGhhdCdzIG5vdAo+PiBzdHJhaWdodGZvcndhcmQuIEknbSBo YXBweSB0byBoZWFyIHlvdSdyZSBmaW5lIHdpdGggdGhlIG9uLWhvc3QKPj4gaW1wbGVtZW50YXRp b24uIDopCj4+Cj4+IEkgd2lsbCBtb3ZlIGFsbCB0byBQV1Igc3ViZGV2IGluIHRoZSBuZXh0IHZl cnNpb24uCj4+Pgo+Pj4gVGhlIGN1cnJlbnQgYmFzZSBQTVUgaW1wbGVtZW50YXRpb24gdHJpZXMg dG8gZG8gYSBsb3Qgb2Ygc3R1ZmYgdGhhdAo+Pj4geW91IGRvbid0IG5lZWQsIGp1c3Qgb3ZlcnJp ZGUgdGhlIGltcGxlbWVudGF0aW9uIGVudGlyZWx5IGZvciBHSzIwQQo+Pj4gZm9yIG5vdyBpZiB0 aGF0J3MgZWFzaWVyIHRoYW4gcmV3b3JraW5nIGl0Lgo+PiBTbyBjdXJyZW50bHkgdGhlcmUgaXMg bm8gZEdQVSB1c2luZyB0aGUgUE1VPyBJIGp1c3QgZG9uJ3Qgd2FudCB0byBicmVhayBhbnkKPj4g ZEdQVSBmdW5jdGlvbnMuIDspCj4gV2UgdXBsb2FkIGEgY3VzdG9tIGZpcm13YXJlIHRvIGl0LCB3 aGljaCB3ZSAoY3VycmVudGx5KSBvbmx5IHVzZSBhcyBhCj4gc2NyaXB0IGludGVycHJldGVyIGZv ciBtZW1vcnkgY2xvY2sgY2hhbmdlcy4gIEJ1dCBmb3IgeW91ciBuZWVkcyByaWdodAo+IG5vdywg aXQnZCBiZSBmaW5lIHRvIGlnbm9yZSBhbGwgdGhlIGNvbW1vbiBjb2RlIHRoZXJlIGZvciBHSzIw QS4KVW5kZXJzdGFuZC4gVGhhbmtzIQoKVmluY2UKPgo+Pj4KPj4+IEFzaWRlIGZyb20gdGhlIHN1 YmRldiBtb3ZlLCBpdCBsb29rcyBnb29kIHNvIGZhciB0byBtZS4gIEdsYWQgdG8gc2VlCj4+PiB0 aGUgQ0xLIHN0dWZmIGlzbid0IHRvdGFsbHkgdXNlbGVzcywgZGVzcGl0ZSBpdCBuZWVkaW5nIGEg KmxvdCogb2YKPj4+IHdvcmsuCj4+IEJUVywgY2FuIHdlIGFkZCBzb21lIGV4ZWN1dGlvbiB0aW1l IGluZm9ybWF0aW9uIGZvciBwc3RhdGU/IEkgbWVhbiBzb21ldGhpbmcKPj4gbGlrZSAiL3N5cy9k ZXZpY2VzL3N5c3RlbS9jcHUvY3B1MC9jcHVmcmVxL3N0YXRzL3RpbWVfaW5fc3RhdGUiLiBJIGtu b3cgd2UKPj4gZG9uJ3Qgd2FudCB0byBjaGFuZ2UgdGhlIHVzZXIgc3BhY2UgQUJJIHRob3VnaC4K Pj4KPj4gVGhhbmtzLAo+PiBWaW5jZQo+Pgo+Pgo+Pj4gVGhhbmtzLAo+Pj4gQmVuLgo+Pj4KPj4+ PiBTaWduZWQtb2ZmLWJ5OiBWaW5jZSBIc3UgPHZpbmNlaEBudmlkaWEuY29tPgo+Pj4+IC0tLQo+ Pj4+ICAgIGRybS9LYnVpbGQgICAgICAgICAgICAgICAgICAgICB8ICAgMiArCj4+Pj4gICAgZHJt L2NvcmUvaW5jbHVkZS9zdWJkZXYvZHZmcy5oIHwgICAxICsKPj4+PiAgICBkcm0vY29yZS9zdWJk ZXYvZHZmcy9iYXNlLmMgICAgfCAgIDEgKwo+Pj4+ICAgIGRybS9jb3JlL3N1YmRldi9kdmZzL2dr MjBhLmMgICB8ICAgMSArCj4+Pj4gICAgZHJtL2NvcmUvc3ViZGV2L2R2ZnMvcHJpdi5oICAgIHwg ICAxICsKPj4+PiAgICBudmttL2VuZ2luZS9kZXZpY2UvbnZlMC5jICAgICAgfCAgIDIgKwo+Pj4+ ICAgIG52a20vaW5jbHVkZS9jb3JlL2RldmljZS5oICAgICB8ICAgMSArCj4+Pj4gICAgbnZrbS9p bmNsdWRlL3N1YmRldi9kdmZzLmggICAgIHwgIDMwICsrKysrKysrCj4+Pj4gICAgbnZrbS9zdWJk ZXYvTWFrZWZpbGUuYW0gICAgICAgIHwgICA1ICstCj4+Pj4gICAgbnZrbS9zdWJkZXYvZHZmcy9N YWtlZmlsZS5hbSAgIHwgICA2ICsrCj4+Pj4gICAgbnZrbS9zdWJkZXYvZHZmcy9iYXNlLmMgICAg ICAgIHwgMTI5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPj4+PiAgICBudmtt L3N1YmRldi9kdmZzL2drMjBhLmMgICAgICAgfCAxNTYKPj4+PiArKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKwo+Pj4+ICAgIG52a20vc3ViZGV2L2R2ZnMvcHJpdi5oICAg ICAgICB8ICA0MyArKysrKysrKysrKysKPj4+PiAgICAxMyBmaWxlcyBjaGFuZ2VkLCAzNzYgaW5z ZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKPj4+PiAgICBjcmVhdGUgbW9kZSAxMjAwMDAgZHJt L2NvcmUvaW5jbHVkZS9zdWJkZXYvZHZmcy5oCj4+Pj4gICAgY3JlYXRlIG1vZGUgMTIwMDAwIGRy bS9jb3JlL3N1YmRldi9kdmZzL2Jhc2UuYwo+Pj4+ICAgIGNyZWF0ZSBtb2RlIDEyMDAwMCBkcm0v Y29yZS9zdWJkZXYvZHZmcy9nazIwYS5jCj4+Pj4gICAgY3JlYXRlIG1vZGUgMTIwMDAwIGRybS9j b3JlL3N1YmRldi9kdmZzL3ByaXYuaAo+Pj4+ICAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBudmttL2lu Y2x1ZGUvc3ViZGV2L2R2ZnMuaAo+Pj4+ICAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBudmttL3N1YmRl di9kdmZzL01ha2VmaWxlLmFtCj4+Pj4gICAgY3JlYXRlIG1vZGUgMTAwNjQ0IG52a20vc3ViZGV2 L2R2ZnMvYmFzZS5jCj4+Pj4gICAgY3JlYXRlIG1vZGUgMTAwNjQ0IG52a20vc3ViZGV2L2R2ZnMv Z2syMGEuYwo+Pj4+ICAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBudmttL3N1YmRldi9kdmZzL3ByaXYu aAo+Pj4+Cj4+Pj4gZGlmZiAtLWdpdCBhL2RybS9LYnVpbGQgYi9kcm0vS2J1aWxkCj4+Pj4gaW5k ZXggMDYxZDlmYWVmODM2Li5lN2ViMDVlNjY2YTAgMTAwNjQ0Cj4+Pj4gLS0tIGEvZHJtL0tidWls ZAo+Pj4+ICsrKyBiL2RybS9LYnVpbGQKPj4+PiBAQCAtMjI3LDYgKzIyNyw4IEBAIG5vdXZlYXUt eSArPSBjb3JlL3N1YmRldi92b2x0L2Jhc2Uubwo+Pj4+ICAgIG5vdXZlYXUteSArPSBjb3JlL3N1 YmRldi92b2x0L2dwaW8ubwo+Pj4+ICAgIG5vdXZlYXUteSArPSBjb3JlL3N1YmRldi92b2x0L252 NDAubwo+Pj4+ICAgIG5vdXZlYXUteSArPSBjb3JlL3N1YmRldi92b2x0L2drMjBhLm8KPj4+PiAr bm91dmVhdS15ICs9IGNvcmUvc3ViZGV2L2R2ZnMvYmFzZS5vCj4+Pj4gK25vdXZlYXUteSArPSBj b3JlL3N1YmRldi9kdmZzL2drMjBhLm8KPj4+Pgo+Pj4+ICAgIG5vdXZlYXUteSArPSBjb3JlL2Vu Z2luZS9mYWxjb24ubwo+Pj4+ICAgIG5vdXZlYXUteSArPSBjb3JlL2VuZ2luZS94dGVuc2Eubwo+ Pj4+IGRpZmYgLS1naXQgYS9kcm0vY29yZS9pbmNsdWRlL3N1YmRldi9kdmZzLmgKPj4+PiBiL2Ry bS9jb3JlL2luY2x1ZGUvc3ViZGV2L2R2ZnMuaAo+Pj4+IG5ldyBmaWxlIG1vZGUgMTIwMDAwCj4+ Pj4gaW5kZXggMDAwMDAwMDAwMDAwLi41NTNhNjk2ODM1MGIKPj4+PiAtLS0gL2Rldi9udWxsCj4+ Pj4gKysrIGIvZHJtL2NvcmUvaW5jbHVkZS9zdWJkZXYvZHZmcy5oCj4+Pj4gQEAgLTAsMCArMSBA QAo+Pj4+ICsuLi8uLi8uLi8uLi9udmttL2luY2x1ZGUvc3ViZGV2L2R2ZnMuaAo+Pj4+IFwgTm8g bmV3bGluZSBhdCBlbmQgb2YgZmlsZQo+Pj4+IGRpZmYgLS1naXQgYS9kcm0vY29yZS9zdWJkZXYv ZHZmcy9iYXNlLmMgYi9kcm0vY29yZS9zdWJkZXYvZHZmcy9iYXNlLmMKPj4+PiBuZXcgZmlsZSBt b2RlIDEyMDAwMAo+Pj4+IGluZGV4IDAwMDAwMDAwMDAwMC4uMjk2MzM0ZWU1MmQxCj4+Pj4gLS0t IC9kZXYvbnVsbAo+Pj4+ICsrKyBiL2RybS9jb3JlL3N1YmRldi9kdmZzL2Jhc2UuYwo+Pj4+IEBA IC0wLDAgKzEgQEAKPj4+PiArLi4vLi4vLi4vLi4vbnZrbS9zdWJkZXYvZHZmcy9iYXNlLmMKPj4+ PiBcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKPj4+PiBkaWZmIC0tZ2l0IGEvZHJtL2NvcmUv c3ViZGV2L2R2ZnMvZ2syMGEuYyBiL2RybS9jb3JlL3N1YmRldi9kdmZzL2drMjBhLmMKPj4+PiBu ZXcgZmlsZSBtb2RlIDEyMDAwMAo+Pj4+IGluZGV4IDAwMDAwMDAwMDAwMC4uZDA1ZDQ5M2UzZmM5 Cj4+Pj4gLS0tIC9kZXYvbnVsbAo+Pj4+ICsrKyBiL2RybS9jb3JlL3N1YmRldi9kdmZzL2drMjBh LmMKPj4+PiBAQCAtMCwwICsxIEBACj4+Pj4gKy4uLy4uLy4uLy4uL252a20vc3ViZGV2L2R2ZnMv Z2syMGEuYwo+Pj4+IFwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo+Pj4+IGRpZmYgLS1naXQg YS9kcm0vY29yZS9zdWJkZXYvZHZmcy9wcml2LmggYi9kcm0vY29yZS9zdWJkZXYvZHZmcy9wcml2 LmgKPj4+PiBuZXcgZmlsZSBtb2RlIDEyMDAwMAo+Pj4+IGluZGV4IDAwMDAwMDAwMDAwMC4uOWI0 NzFkYzQ0ZjQ4Cj4+Pj4gLS0tIC9kZXYvbnVsbAo+Pj4+ICsrKyBiL2RybS9jb3JlL3N1YmRldi9k dmZzL3ByaXYuaAo+Pj4+IEBAIC0wLDAgKzEgQEAKPj4+PiArLi4vLi4vLi4vLi4vbnZrbS9zdWJk ZXYvZHZmcy9wcml2LmgKPj4+PiBcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKPj4+PiBkaWZm IC0tZ2l0IGEvbnZrbS9lbmdpbmUvZGV2aWNlL252ZTAuYyBiL252a20vZW5naW5lL2RldmljZS9u dmUwLmMKPj4+PiBpbmRleCBiYTc5MjJkMzEzNTEuLjVhODMwYTM3YTE1ZCAxMDA2NDQKPj4+PiAt LS0gYS9udmttL2VuZ2luZS9kZXZpY2UvbnZlMC5jCj4+Pj4gKysrIGIvbnZrbS9lbmdpbmUvZGV2 aWNlL252ZTAuYwo+Pj4+IEBAIC00MSw2ICs0MSw3IEBACj4+Pj4gICAgI2luY2x1ZGUgPHN1YmRl di9iYXIuaD4KPj4+PiAgICAjaW5jbHVkZSA8c3ViZGV2L3B3ci5oPgo+Pj4+ICAgICNpbmNsdWRl IDxzdWJkZXYvdm9sdC5oPgo+Pj4+ICsjaW5jbHVkZSA8c3ViZGV2L2R2ZnMuaD4KPj4+Pgo+Pj4+ ICAgICNpbmNsdWRlIDxlbmdpbmUvZGV2aWNlLmg+Cj4+Pj4gICAgI2luY2x1ZGUgPGVuZ2luZS9k bWFvYmouaD4KPj4+PiBAQCAtMTgwLDYgKzE4MSw3IEBAIG52ZTBfaWRlbnRpZnkoc3RydWN0IG5v dXZlYXVfZGV2aWNlICpkZXZpY2UpCj4+Pj4gICAgICAgICAgICAgICAgICAgZGV2aWNlLT5vY2xh c3NbTlZERVZfRU5HSU5FX0NPUFkyICBdID0KPj4+PiAmbnZlMF9jb3B5Ml9vY2xhc3M7Cj4+Pj4g ICAgICAgICAgICAgICAgICAgZGV2aWNlLT5vY2xhc3NbTlZERVZfRU5HSU5FX1BFUkZNT05dID0K Pj4+PiAmZ2syMGFfcGVyZm1vbl9vY2xhc3M7Cj4+Pj4gICAgICAgICAgICAgICAgICAgZGV2aWNl LT5vY2xhc3NbTlZERVZfU1VCREVWX1ZPTFQgICBdID0KPj4+PiAmZ2syMGFfdm9sdF9vY2xhc3M7 Cj4+Pj4gKyAgICAgICAgICAgICAgIGRldmljZS0+b2NsYXNzW05WREVWX1NVQkRFVl9EVkZTICAg XSA9IGdrMjBhX2R2ZnNfb2NsYXNzOwo+Pj4+ICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+Pj4+ ICAgICAgICAgICBjYXNlIDB4ZjA6Cj4+Pj4gICAgICAgICAgICAgICAgICAgZGV2aWNlLT5jbmFt ZSA9ICJHSzExMCI7Cj4+Pj4gZGlmZiAtLWdpdCBhL252a20vaW5jbHVkZS9jb3JlL2RldmljZS5o IGIvbnZrbS9pbmNsdWRlL2NvcmUvZGV2aWNlLmgKPj4+PiBpbmRleCAyZWMyZTUwZDM2NzYuLjE2 MmZhNmEzY2ZjYyAxMDA2NDQKPj4+PiAtLS0gYS9udmttL2luY2x1ZGUvY29yZS9kZXZpY2UuaAo+ Pj4+ICsrKyBiL252a20vaW5jbHVkZS9jb3JlL2RldmljZS5oCj4+Pj4gQEAgLTM5LDYgKzM5LDcg QEAgZW51bSBudl9zdWJkZXZfdHlwZSB7Cj4+Pj4gICAgICAgICAgIE5WREVWX1NVQkRFVl9WT0xU LAo+Pj4+ICAgICAgICAgICBOVkRFVl9TVUJERVZfVEhFUk0sCj4+Pj4gICAgICAgICAgIE5WREVW X1NVQkRFVl9DTE9DSywKPj4+PiArICAgICAgIE5WREVWX1NVQkRFVl9EVkZTLAo+Pj4+Cj4+Pj4g ICAgICAgICAgIE5WREVWX0VOR0lORV9GSVJTVCwKPj4+PiAgICAgICAgICAgTlZERVZfRU5HSU5F X0RNQU9CSiA9IE5WREVWX0VOR0lORV9GSVJTVCwKPj4+PiBkaWZmIC0tZ2l0IGEvbnZrbS9pbmNs dWRlL3N1YmRldi9kdmZzLmggYi9udmttL2luY2x1ZGUvc3ViZGV2L2R2ZnMuaAo+Pj4+IG5ldyBm aWxlIG1vZGUgMTAwNjQ0Cj4+Pj4gaW5kZXggMDAwMDAwMDAwMDAwLi4zODUxNjI5YTBkZTQKPj4+ PiAtLS0gL2Rldi9udWxsCj4+Pj4gKysrIGIvbnZrbS9pbmNsdWRlL3N1YmRldi9kdmZzLmgKPj4+ PiBAQCAtMCwwICsxLDMwIEBACj4+Pj4gKyNpZm5kZWYgX19OT1VWRUFVX0RWRlNfSF9fCj4+Pj4g KyNkZWZpbmUgX19OT1VWRUFVX0RWRlNfSF9fCj4+Pj4gKwo+Pj4+ICsjaW5jbHVkZSA8Y29yZS9z dWJkZXYuaD4KPj4+PiArI2luY2x1ZGUgPGNvcmUvZGV2aWNlLmg+Cj4+Pj4gKwo+Pj4+ICsjaW5j bHVkZSA8c3ViZGV2L3RpbWVyLmg+Cj4+Pj4gKwo+Pj4+ICtzdHJ1Y3Qgbm91dmVhdV9kdmZzX2Rh dGEgewo+Pj4+ICsgICAgICAgaW50IHBfbG9hZF90YXJnZXQ7Cj4+Pj4gKyAgICAgICBpbnQgcF9s b2FkX21heDsKPj4+PiArICAgICAgIGludCBwX3Ntb290aDsKPj4+PiArICAgICAgIHVuc2lnbmVk IGludCBhdmdfbG9hZDsKPj4+PiArfTsKPj4+PiArCj4+Pj4gK3N0cnVjdCBub3V2ZWF1X2R2ZnMg ewo+Pj4+ICsgICAgICAgc3RydWN0IG5vdXZlYXVfc3ViZGV2IGJhc2U7Cj4+Pj4gKyAgICAgICBz dHJ1Y3Qgbm91dmVhdV9hbGFybSBhbGFybTsKPj4+PiArICAgICAgIHN0cnVjdCBub3V2ZWF1X2R2 ZnNfZGF0YSAqZGF0YTsKPj4+PiArfTsKPj4+PiArCj4+Pj4gK3N0YXRpYyBpbmxpbmUgc3RydWN0 IG5vdXZlYXVfZHZmcyAqCj4+Pj4gK25vdXZlYXVfZHZmcyh2b2lkICpvYmopCj4+Pj4gK3sKPj4+ PiArICAgICAgIHJldHVybiAodm9pZCAqKW52X2RldmljZShvYmopLT5zdWJkZXZbTlZERVZfU1VC REVWX0RWRlNdOwo+Pj4+ICt9Cj4+Pj4gKwo+Pj4+ICtleHRlcm4gc3RydWN0IG5vdXZlYXVfb2Ns YXNzICpnazIwYV9kdmZzX29jbGFzczsKPj4+PiArCj4+Pj4gKyNlbmRpZgo+Pj4+IGRpZmYgLS1n aXQgYS9udmttL3N1YmRldi9NYWtlZmlsZS5hbSBiL252a20vc3ViZGV2L01ha2VmaWxlLmFtCj4+ Pj4gaW5kZXggNWE0OGRkYjg3OTgxLi4zZDExZTA4MzMwMzIgMTAwNjQ0Cj4+Pj4gLS0tIGEvbnZr bS9zdWJkZXYvTWFrZWZpbGUuYW0KPj4+PiArKysgYi9udmttL3N1YmRldi9NYWtlZmlsZS5hbQo+ Pj4+IEBAIC0xLDUgKzEsNSBAQAo+Pj4+ICAgIFNVQkRJUlMgPSBiYXIgYnVzIGJpb3MgY2xvY2sg ZGV2aW5pdCBmYiBmdXNlIGdwaW8gaTJjIGlidXMgaW5zdG1lbSBcCj4+Pj4gLSAgICAgICAgIGx0 YyBtYyBteG0gcHdyIHRoZXJtIHRpbWVyIHZtIHZvbHQKPj4+PiArICAgICAgICAgbHRjIG1jIG14 bSBwd3IgdGhlcm0gdGltZXIgdm0gdm9sdCBkdmZzCj4+Pj4KPj4+PiAgICBub2luc3RfTFRMSUJS QVJJRVMgPSBsaWJzdWJkZXYubGEKPj4+Pgo+Pj4+IEBAIC0yMiw0ICsyMiw1IEBAIGxpYnN1YmRl dl9sYV9MSUJBREQgICA9IGJhci9saWJiYXIubGEgXAo+Pj4+ICAgICAgICAgICAgICAgICAgICAg ICAgICAgdGhlcm0vbGlidGhlcm0ubGEgXAo+Pj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAg dGltZXIvbGlidGltZXIubGEgXAo+Pj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgdm0vbGli dm0ubGEgXAo+Pj4+IC0gICAgICAgICAgICAgICAgICAgICAgIHZvbHQvbGlidm9sdC5sYQo+Pj4+ ICsgICAgICAgICAgICAgICAgICAgICAgIHZvbHQvbGlidm9sdC5sYSBcCj4+Pj4gKyAgICAgICAg ICAgICAgICAgICAgICAgZHZmcy9kdmZzLmxhCj4+Pj4gZGlmZiAtLWdpdCBhL252a20vc3ViZGV2 L2R2ZnMvTWFrZWZpbGUuYW0gYi9udmttL3N1YmRldi9kdmZzL01ha2VmaWxlLmFtCj4+Pj4gbmV3 IGZpbGUgbW9kZSAxMDA2NDQKPj4+PiBpbmRleCAwMDAwMDAwMDAwMDAuLmMwOWQ0ZWM0MTI0ZAo+ Pj4+IC0tLSAvZGV2L251bGwKPj4+PiArKysgYi9udmttL3N1YmRldi9kdmZzL01ha2VmaWxlLmFt Cj4+Pj4gQEAgLTAsMCArMSw2IEBACj4+Pj4gK25vaW5zdF9MVExJQlJBUklFUyA9IGxpYmR2ZnMu bGEKPj4+PiArCj4+Pj4gK2xpYmR2ZnNfbGFfU09VUkNFUyA9IGJhc2UuYyBcCj4+Pj4gKyAgICAg ICAgICAgICAgICAgICAgIGdrMjBhLmMKPj4+PiArCj4+Pj4gK2luY2x1ZGUgJChzcmNkaXIpLy4u L01ha2VmaWxlLnN1YmRldgo+Pj4+IGRpZmYgLS1naXQgYS9udmttL3N1YmRldi9kdmZzL2Jhc2Uu YyBiL252a20vc3ViZGV2L2R2ZnMvYmFzZS5jCj4+Pj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPj4+ PiBpbmRleCAwMDAwMDAwMDAwMDAuLjg4YWUyMDE4NDBhOAo+Pj4+IC0tLSAvZGV2L251bGwKPj4+ PiArKysgYi9udmttL3N1YmRldi9kdmZzL2Jhc2UuYwo+Pj4+IEBAIC0wLDAgKzEsMTI5IEBACj4+ Pj4gKy8qCj4+Pj4gKyAqIENvcHlyaWdodCAoYykgMjAxNCwgTlZJRElBIENPUlBPUkFUSU9OLiBB bGwgcmlnaHRzIHJlc2VydmVkLgo+Pj4+ICsgKgo+Pj4+ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVi eSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKPj4+PiBh Cj4+Pj4gKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0 aW9uIGZpbGVzICh0aGUKPj4+PiAiU29mdHdhcmUiKSwKPj4+PiArICogdG8gZGVhbCBpbiB0aGUg U29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQKPj4+PiBsaW1p dGF0aW9uCj4+Pj4gKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBw dWJsaXNoLCBkaXN0cmlidXRlLAo+Pj4+IHN1YmxpY2Vuc2UsCj4+Pj4gKyAqIGFuZC9vciBzZWxs IGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRo ZQo+Pj4+ICsgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhl IGZvbGxvd2luZyBjb25kaXRpb25zOgo+Pj4+ICsgKgo+Pj4+ICsgKiBUaGUgYWJvdmUgY29weXJp Z2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZQo+Pj4+IGluY2x1 ZGVkIGluCj4+Pj4gKyAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhl IFNvZnR3YXJlLgo+Pj4+ICsgKgo+Pj4+ICsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFT IElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwKPj4+PiBFWFBSRVNTIE9SCj4+Pj4g KyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMg T0YKPj4+PiBNRVJDSEFOVEFCSUxJVFksCj4+Pj4gKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVAo+Pj4+IFNIQUxMCj4+ Pj4gKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5Z IENMQUlNLCBEQU1BR0VTIE9SCj4+Pj4gT1RIRVIKPj4+PiArICogTElBQklMSVRZLCBXSEVUSEVS IElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsCj4+Pj4gQVJJU0lO Rwo+Pj4+ICsgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FS RSBPUiBUSEUgVVNFIE9SIE9USEVSCj4+Pj4gKyAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4K Pj4+PiArICovCj4+Pj4gKwo+Pj4+ICsjaW5jbHVkZSA8Y29yZS9vcHRpb24uaD4KPj4+PiArCj4+ Pj4gKyNpbmNsdWRlIDxzdWJkZXYvY2xvY2suaD4KPj4+PiArI2luY2x1ZGUgPHN1YmRldi9kdmZz Lmg+Cj4+Pj4gKyNpbmNsdWRlIDxzdWJkZXYvdm9sdC5oPgo+Pj4+ICsKPj4+PiArI2luY2x1ZGUg InByaXYuaCIKPj4+PiArCj4+Pj4gK3N0YXRpYyB2b2lkCj4+Pj4gK19ub3V2ZWF1X2R2ZnNfd29y ayhzdHJ1Y3Qgbm91dmVhdV9hbGFybSAqYWxhcm0pCj4+Pj4gK3sKPj4+PiArICAgICAgIHN0cnVj dCBub3V2ZWF1X2R2ZnMgKmR2ZnMgPSBjb250YWluZXJfb2YoYWxhcm0sIHN0cnVjdAo+Pj4+IG5v dXZlYXVfZHZmcywKPj4+PiArICAgICAgICAgICAgICAgICAgICAgICBhbGFybSk7Cj4+Pj4gKyAg ICAgICBzdHJ1Y3Qgbm91dmVhdV9kdmZzX2RhdGEgKmRhdGEgPSBkdmZzLT5kYXRhOwo+Pj4+ICsg ICAgICAgc3RydWN0IG5vdXZlYXVfb2JqZWN0ICpvYmplY3QgPSBudl9vYmplY3QoZHZmcyk7Cj4+ Pj4gKyAgICAgICBzdHJ1Y3Qgbm91dmVhdV9kdmZzX2ltcGwgKmltcGwgPSAodm9pZCAqKW9iamVj dC0+b2NsYXNzOwo+Pj4+ICsgICAgICAgc3RydWN0IG5vdXZlYXVfZHZmc19kZXZfc3RhdHVzIHN0 YXR1czsKPj4+PiArICAgICAgIHUzMiB1dGlsaXphdGlvbiA9IDA7Cj4+Pj4gKyAgICAgICBpbnQg c3RhdGUsIHJldDsKPj4+PiArCj4+Pj4gKyAgICAgICByZXQgPSBpbXBsLT5nZXRfZGV2X3N0YXR1 cyhkdmZzLCAmc3RhdHVzKTsKPj4+PiArICAgICAgIGlmIChyZXQpIHsKPj4+PiArICAgICAgICAg ICAgICAgbnZfd2FybihkdmZzLCAiZmFpbGVkIHRvIGdldCBkZXZpY2Ugc3RhdHVzXG4iKTsKPj4+ PiArICAgICAgICAgICAgICAgZ290byByZXNjaGVkOwo+Pj4+ICsgICAgICAgfQo+Pj4+ICsKPj4+ PiArICAgICAgIGlmIChzdGF0dXMudG90YWwpCj4+Pj4gKyAgICAgICAgICAgICAgIHV0aWxpemF0 aW9uID0gZGl2X3U2NCgodTY0KXN0YXR1cy5idXN5ICogMTAwLAo+Pj4+IHN0YXR1cy50b3RhbCk7 Cj4+Pj4gKwo+Pj4+ICsgICAgICAgZGF0YS0+YXZnX2xvYWQgPSAoZGF0YS0+cF9zbW9vdGggKiBk YXRhLT5hdmdfbG9hZCkgKyB1dGlsaXphdGlvbjsKPj4+PiArICAgICAgIGRhdGEtPmF2Z19sb2Fk IC89IGRhdGEtPnBfc21vb3RoICsgMTsKPj4+PiArICAgICAgIG52X3RyYWNlKGR2ZnMsICJ1dGls aXphdGlvbiA9ICVkICUlLCBhdmdfbG9hZCA9ICVkICUlXG4iLAo+Pj4+ICsgICAgICAgICAgICAg ICAgICAgICAgIHV0aWxpemF0aW9uLCBkYXRhLT5hdmdfbG9hZCk7Cj4+Pj4gKwo+Pj4+ICsgICAg ICAgcmV0ID0gaW1wbC0+Z2V0X2N1cl9zdGF0ZShkdmZzLCAmc3RhdGUpOwo+Pj4+ICsgICAgICAg aWYgKHJldCkgewo+Pj4+ICsgICAgICAgICAgICAgICBudl93YXJuKGR2ZnMsICJmYWlsZWQgdG8g Z2V0IGN1cnJlbnQgc3RhdGVcbiIpOwo+Pj4+ICsgICAgICAgICAgICAgICBnb3RvIHJlc2NoZWQ7 Cj4+Pj4gKyAgICAgICB9Cj4+Pj4gKwo+Pj4+ICsgICAgICAgaWYgKGltcGwtPmdldF90YXJnZXRf c3RhdGUoZHZmcywgJnN0YXRlLCBkYXRhLT5hdmdfbG9hZCkpIHsKPj4+PiArICAgICAgICAgICAg ICAgbnZfdHJhY2UoZHZmcywgInNldCBuZXcgc3RhdGUgdG8gJWRcbiIsIHN0YXRlKTsKPj4+PiAr ICAgICAgICAgICAgICAgaW1wbC0+dGFyZ2V0KGR2ZnMsICZzdGF0ZSk7Cj4+Pj4gKyAgICAgICB9 Cj4+Pj4gKwo+Pj4+ICtyZXNjaGVkOgo+Pj4+ICsgICAgICAgaW1wbC0+cmVzZXRfZGV2X3N0YXR1 cyhkdmZzKTsKPj4+PiArICAgICAgIG5vdXZlYXVfdGltZXJfYWxhcm0oZHZmcywgMTAwMDAwMDAw LCBhbGFybSk7Cj4+Pj4gK30KPj4+PiArCj4+Pj4gK2ludAo+Pj4+ICtfbm91dmVhdV9kdmZzX2Zp bmkoc3RydWN0IG5vdXZlYXVfb2JqZWN0ICpvYmplY3QsIGJvb2wgc3VzcGVuZCkKPj4+PiArewo+ Pj4+ICsgICAgICAgc3RydWN0IG5vdXZlYXVfZHZmcyAqZHZmcyA9ICh2b2lkICopb2JqZWN0Owo+ Pj4+ICsKPj4+PiArICAgICAgIG5vdXZlYXVfdGltZXJfYWxhcm1fY2FuY2VsKGR2ZnMsICZkdmZz LT5hbGFybSk7Cj4+Pj4gKwo+Pj4+ICsgICAgICAgcmV0dXJuIG5vdXZlYXVfc3ViZGV2X2Zpbmko JmR2ZnMtPmJhc2UsIHN1c3BlbmQpOwo+Pj4+ICt9Cj4+Pj4gKwo+Pj4+ICtpbnQKPj4+PiArX25v dXZlYXVfZHZmc19pbml0KHN0cnVjdCBub3V2ZWF1X29iamVjdCAqb2JqZWN0KQo+Pj4+ICt7Cj4+ Pj4gKyAgICAgICBzdHJ1Y3Qgbm91dmVhdV9kdmZzICpkdmZzID0gKHZvaWQgKilvYmplY3Q7Cj4+ Pj4gKyAgICAgICBzdHJ1Y3Qgbm91dmVhdV9jbG9jayAqY2xrID0gbm91dmVhdV9jbG9jayhvYmpl Y3QpOwo+Pj4+ICsgICAgICAgc3RydWN0IG5vdXZlYXVfdm9sdCAqdm9sdCA9IG5vdXZlYXVfdm9s dChvYmplY3QpOwo+Pj4+ICsgICAgICAgaW50IHJldDsKPj4+PiArCj4+Pj4gKyAgICAgICByZXQg PSBub3V2ZWF1X3N1YmRldl9pbml0KCZkdmZzLT5iYXNlKTsKPj4+PiArICAgICAgIGlmIChyZXQp Cj4+Pj4gKyAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4+Pj4gKwo+Pj4+ICsgICAgICAgaWYg KCFjbGsgfHwgIXZvbHQpCj4+Pj4gKyAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+Pj4+ ICsKPj4+PiArICAgICAgIG5vdXZlYXVfdGltZXJfYWxhcm0oZHZmcywgMjAwMDAwMDAwMCwgJmR2 ZnMtPmFsYXJtKTsKPj4+PiArCj4+Pj4gKyAgICAgICByZXR1cm4gMDsKPj4+PiArfQo+Pj4+ICsK Pj4+PiArdm9pZAo+Pj4+ICtfbm91dmVhdV9kdmZzX2R0b3Ioc3RydWN0IG5vdXZlYXVfb2JqZWN0 ICpvYmplY3QpCj4+Pj4gK3sKPj4+PiArICAgICAgIHN0cnVjdCBub3V2ZWF1X2R2ZnMgKmR2ZnMg PSAodm9pZCAqKW9iamVjdDsKPj4+PiArCj4+Pj4gKyAgICAgICBub3V2ZWF1X3N1YmRldl9kZXN0 cm95KCZkdmZzLT5iYXNlKTsKPj4+PiArfQo+Pj4+ICsKPj4+PiAraW50Cj4+Pj4gK25vdXZlYXVf ZHZmc19jcmVhdGVfKHN0cnVjdCBub3V2ZWF1X29iamVjdCAqcGFyZW50LAo+Pj4+ICsgICAgICAg ICAgICAgICAgICAgICAgIHN0cnVjdCBub3V2ZWF1X29iamVjdCAqZW5naW5lLAo+Pj4+ICsgICAg ICAgICAgICAgICAgICAgICAgIHN0cnVjdCBub3V2ZWF1X29jbGFzcyAqb2NsYXNzLAo+Pj4+ICsg ICAgICAgICAgICAgICAgICAgICAgIGludCBzaXplLCB2b2lkICoqcG9iamVjdCkKPj4+PiArewo+ Pj4+ICsgICAgICAgc3RydWN0IG5vdXZlYXVfZHZmcyAqZHZmczsKPj4+PiArICAgICAgIGludCBy ZXQ7Cj4+Pj4gKwo+Pj4+ICsgICAgICAgcmV0ID0gbm91dmVhdV9zdWJkZXZfY3JlYXRlXyhwYXJl bnQsIGVuZ2luZSwgb2NsYXNzLCAwLCAiRFZGUyIsCj4+Pj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICJkdmZzIiwgc2l6ZSwgcG9iamVjdCk7Cj4+Pj4gKyAgICAgICBkdmZz ID0gKnBvYmplY3Q7Cj4+Pj4gKyAgICAgICBpZiAocmV0KQo+Pj4+ICsgICAgICAgICAgICAgICBy ZXR1cm4gcmV0Owo+Pj4+ICsKPj4+PiArICAgICAgIG5vdXZlYXVfYWxhcm1faW5pdCgmZHZmcy0+ YWxhcm0sIF9ub3V2ZWF1X2R2ZnNfd29yayk7Cj4+Pj4gKwo+Pj4+ICsgICAgICAgcmV0dXJuIDA7 Cj4+Pj4gK30KPj4+PiBkaWZmIC0tZ2l0IGEvbnZrbS9zdWJkZXYvZHZmcy9nazIwYS5jIGIvbnZr bS9zdWJkZXYvZHZmcy9nazIwYS5jCj4+Pj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPj4+PiBpbmRl eCAwMDAwMDAwMDAwMDAuLmVmZWJkMmMxMGY5OQo+Pj4+IC0tLSAvZGV2L251bGwKPj4+PiArKysg Yi9udmttL3N1YmRldi9kdmZzL2drMjBhLmMKPj4+PiBAQCAtMCwwICsxLDE1NiBAQAo+Pj4+ICsv Kgo+Pj4+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMTQsIE5WSURJQSBDT1JQT1JBVElPTi4gQWxsIHJp Z2h0cyByZXNlcnZlZC4KPj4+PiArICoKPj4+PiArICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3Jh bnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCj4+Pj4gYQo+Pj4+ ICsgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBm aWxlcyAodGhlCj4+Pj4gIlNvZnR3YXJlIiksCj4+Pj4gKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3 YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0Cj4+Pj4gbGltaXRhdGlv bgo+Pj4+ICsgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlz aCwgZGlzdHJpYnV0ZSwKPj4+PiBzdWJsaWNlbnNlLAo+Pj4+ICsgKiBhbmQvb3Igc2VsbCBjb3Bp ZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKPj4+ PiArICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xs b3dpbmcgY29uZGl0aW9uczoKPj4+PiArICoKPj4+PiArICogVGhlIGFib3ZlIGNvcHlyaWdodCBu b3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUKPj4+PiBpbmNsdWRlZCBp bgo+Pj4+ICsgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0 d2FyZS4KPj4+PiArICoKPj4+PiArICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIs IFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCj4+Pj4gRVhQUkVTUyBPUgo+Pj4+ICsgKiBJ TVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCj4+ Pj4gTUVSQ0hBTlRBQklMSVRZLAo+Pj4+ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQKPj4+PiBTSEFMTAo+Pj4+ICsg KiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJ TSwgREFNQUdFUyBPUgo+Pj4+IE9USEVSCj4+Pj4gKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBB TiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLAo+Pj4+IEFSSVNJTkcKPj4+ PiArICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1Ig VEhFIFVTRSBPUiBPVEhFUgo+Pj4+ICsgKiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCj4+Pj4g KyAqLwo+Pj4+ICsKPj4+PiArI2luY2x1ZGUgPHN1YmRldi9jbG9jay5oPgo+Pj4+ICsjaW5jbHVk ZSA8c3ViZGV2L2R2ZnMuaD4KPj4+PiArI2luY2x1ZGUgPHN1YmRldi92b2x0Lmg+Cj4+Pj4gKwo+ Pj4+ICsjaW5jbHVkZSAicHJpdi5oIgo+Pj4+ICsKPj4+PiArI2RlZmluZSBCVVNZX1NMT1QgICAg ICAwCj4+Pj4gKyNkZWZpbmUgQ0xLX1NMT1QgICAgICAgNwo+Pj4+ICsKPj4+PiArc3RydWN0IGdr MjBhX2R2ZnNfcHJpdiB7Cj4+Pj4gKyAgICAgICBzdHJ1Y3Qgbm91dmVhdV9kdmZzIGJhc2U7Cj4+ Pj4gK307Cj4+Pj4gKwo+Pj4+ICtzdGF0aWMgaW50Cj4+Pj4gK2drMjBhX2R2ZnNfdGFyZ2V0KHN0 cnVjdCBub3V2ZWF1X2R2ZnMgKmR2ZnMsIGludCAqc3RhdGUpCj4+Pj4gK3sKPj4+PiArICAgICAg IHN0cnVjdCBub3V2ZWF1X2Nsb2NrICpjbGsgPSBub3V2ZWF1X2Nsb2NrKGR2ZnMpOwo+Pj4+ICsK Pj4+PiArICAgICAgIHJldHVybiBub3V2ZWF1X2Nsb2NrX2FzdGF0ZShjbGssICpzdGF0ZSwgMCwg ZmFsc2UpOwo+Pj4+ICt9Cj4+Pj4gKwo+Pj4+ICtzdGF0aWMgaW50Cj4+Pj4gK2drMjBhX2R2ZnNf Z2V0X2N1cl9zdGF0ZShzdHJ1Y3Qgbm91dmVhdV9kdmZzICpkdmZzLCBpbnQgKnN0YXRlKQo+Pj4+ ICt7Cj4+Pj4gKyAgICAgICBzdHJ1Y3Qgbm91dmVhdV9jbG9jayAqY2xrID0gbm91dmVhdV9jbG9j ayhkdmZzKTsKPj4+PiArCj4+Pj4gKyAgICAgICAqc3RhdGUgPSBjbGstPnBzdGF0ZTsKPj4+PiAr ICAgICAgIHJldHVybiAwOwo+Pj4+ICt9Cj4+Pj4gKwo+Pj4+ICtzdGF0aWMgaW50Cj4+Pj4gK2dr MjBhX2R2ZnNfZ2V0X3RhcmdldF9zdGF0ZShzdHJ1Y3Qgbm91dmVhdV9kdmZzICpkdmZzLCBpbnQg KnN0YXRlLCBpbnQKPj4+PiBsb2FkKQo+Pj4+ICt7Cj4+Pj4gKyAgICAgICBzdHJ1Y3Qgbm91dmVh dV9kdmZzX2RhdGEgKmRhdGEgPSBkdmZzLT5kYXRhOwo+Pj4+ICsgICAgICAgc3RydWN0IG5vdXZl YXVfY2xvY2sgKmNsayA9IG5vdXZlYXVfY2xvY2soZHZmcyk7Cj4+Pj4gKyAgICAgICBpbnQgY3Vy X2xldmVsLCBsZXZlbDsKPj4+PiArCj4+Pj4gKyAgICAgICAvKiBGb3IgR0syMEEsIHRoZSBwZXJm b3JtYW5jZSBsZXZlbCBpcyBkaXJlY3RseSBtYXBwZWQgdG8gcHN0YXRlCj4+Pj4gKi8KPj4+PiAr ICAgICAgIGxldmVsID0gY3VyX2xldmVsID0gY2xrLT5wc3RhdGU7Cj4+Pj4gKwo+Pj4+ICsgICAg ICAgaWYgKGxvYWQgPiBkYXRhLT5wX2xvYWRfbWF4KSB7Cj4+Pj4gKyAgICAgICAgICAgICAgIGxl dmVsID0gbWluKGNsay0+c3RhdGVfbnIgLSAxLCBsZXZlbCArIChjbGstPnN0YXRlX25yIC8KPj4+ PiAzKSk7Cj4+Pj4gKyAgICAgICB9IGVsc2Ugewo+Pj4+ICsgICAgICAgICAgICAgICBsZXZlbCAr PSAoKGxvYWQgLSBkYXRhLT5wX2xvYWRfdGFyZ2V0KSAqIDEwIC8KPj4+PiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGRhdGEtPnBfbG9hZF90YXJnZXQpIC8gMjsKPj4+PiArICAgICAg ICAgICAgICAgbGV2ZWwgPSBtYXgoMCwgbGV2ZWwpOwo+Pj4+ICsgICAgICAgICAgICAgICBsZXZl bCA9IG1pbihjbGstPnN0YXRlX25yIC0gMSwgbGV2ZWwpOwo+Pj4+ICsgICAgICAgfQo+Pj4+ICsK Pj4+PiArICAgICAgIG52X3RyYWNlKGR2ZnMsICJjdXIgbGV2ZWwgPSAlZCwgbmV3IGxldmVsID0g JWRcbiIsIGN1cl9sZXZlbCwKPj4+PiBsZXZlbCk7Cj4+Pj4gKwo+Pj4+ICsgICAgICAgKnN0YXRl ID0gbGV2ZWw7Cj4+Pj4gKwo+Pj4+ICsgICAgICAgaWYgKGxldmVsID09IGN1cl9sZXZlbCkKPj4+ PiArICAgICAgICAgICAgICAgcmV0dXJuIDA7Cj4+Pj4gKyAgICAgICBlbHNlCj4+Pj4gKyAgICAg ICAgICAgICAgIHJldHVybiAxOwo+Pj4+ICt9Cj4+Pj4gKwo+Pj4+ICtzdGF0aWMgaW50Cj4+Pj4g K2drMjBhX2R2ZnNfZ2V0X2Rldl9zdGF0dXMoc3RydWN0IG5vdXZlYXVfZHZmcyAqZHZmcywKPj4+ PiArICAgICAgIHN0cnVjdCBub3V2ZWF1X2R2ZnNfZGV2X3N0YXR1cyAqc3RhdHVzKQo+Pj4+ICt7 Cj4+Pj4gKyAgICAgICBzdGF0dXMtPmJ1c3kgPSBudl9yZDMyKGR2ZnMsIDB4MTBhNTA4ICsgKEJV U1lfU0xPVCAqIDB4MTApKTsKPj4+PiArICAgICAgIHN0YXR1cy0+dG90YWw9IG52X3JkMzIoZHZm cywgMHgxMGE1MDggKyAoQ0xLX1NMT1QgKiAweDEwKSk7Cj4+Pj4gKyAgICAgICByZXR1cm4gMDsK Pj4+PiArfQo+Pj4+ICsKPj4+PiArc3RhdGljIHZvaWQKPj4+PiArZ2syMGFfZHZmc19yZXNldF9k ZXZfc3RhdHVzKHN0cnVjdCBub3V2ZWF1X2R2ZnMgKmR2ZnMpCj4+Pj4gK3sKPj4+PiArICAgICAg IG52X3dyMzIoZHZmcywgMHgxMGE1MDggKyAoQlVTWV9TTE9UICogMHgxMCksIDB4ODAwMDAwMDAp Owo+Pj4+ICsgICAgICAgbnZfd3IzMihkdmZzLCAweDEwYTUwOCArIChDTEtfU0xPVCAqIDB4MTAp LCAweDgwMDAwMDAwKTsKPj4+PiArfQo+Pj4+ICsKPj4+PiArc3RhdGljIGludAo+Pj4+ICtnazIw YV9kdmZzX2luaXQoc3RydWN0IG5vdXZlYXVfb2JqZWN0ICpvYmplY3QpCj4+Pj4gK3sKPj4+PiAr ICAgICAgIHN0cnVjdCBnazIwYV9kdmZzX3ByaXYgKnByaXYgPSAodm9pZCAqKW9iamVjdDsKPj4+ PiArICAgICAgIGludCByZXQ7Cj4+Pj4gKwo+Pj4+ICsgICAgICAgLyogaW5pdCBwd3IgcGVyZiBj b3VudGVyICovCj4+Pj4gKyAgICAgICBudl93cjMyKHByaXYsIDB4MTBhNTA0ICsgKEJVU1lfU0xP VCAqIDB4MTApLCAweDAwMjAwMDAxKTsKPj4+PiArICAgICAgIG52X3dyMzIocHJpdiwgMHgxMGE1 MGMgKyAoQlVTWV9TTE9UICogMHgxMCksIDB4MDAwMDAwMDIpOwo+Pj4+ICsgICAgICAgbnZfd3Iz Mihwcml2LCAweDEwYTUwYyArIChDTEtfU0xPVCAqIDB4MTApLCAweDAwMDAwMDAzKTsKPj4+PiAr Cj4+Pj4gKyAgICAgICByZXQgPSBub3V2ZWF1X2R2ZnNfaW5pdCgmcHJpdi0+YmFzZSk7Cj4+Pj4g KyAgICAgICBpZiAocmV0KQo+Pj4+ICsgICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+Pj4+ICsK Pj4+PiArICAgICAgIHJldHVybiAwOwo+Pj4+ICt9Cj4+Pj4gKwo+Pj4+ICtzdHJ1Y3Qgbm91dmVh dV9kdmZzX2RhdGEgZ2syMGFfZHZmc19kYXRhID0gewo+Pj4+ICsgICAgICAgLnBfbG9hZF90YXJn ZXQgPSA3MCwKPj4+PiArICAgICAgIC5wX2xvYWRfbWF4ID0gOTAsCj4+Pj4gKyAgICAgICAucF9z bW9vdGggPSAxLAo+Pj4+ICt9Owo+Pj4+ICsKPj4+PiArc3RhdGljIGludAo+Pj4+ICtnazIwYV9k dmZzX2N0b3Ioc3RydWN0IG5vdXZlYXVfb2JqZWN0ICpwYXJlbnQsIHN0cnVjdCBub3V2ZWF1X29i amVjdAo+Pj4+ICplbmdpbmUsCj4+Pj4gKyAgICAgICAgICAgIHN0cnVjdCBub3V2ZWF1X29jbGFz cyAqb2NsYXNzLCB2b2lkICpkYXRhLCB1MzIgc2l6ZSwKPj4+PiArICAgICAgICAgICAgc3RydWN0 IG5vdXZlYXVfb2JqZWN0ICoqcG9iamVjdCkKPj4+PiArewo+Pj4+ICsgICAgICAgc3RydWN0IGdr MjBhX2R2ZnNfcHJpdiAqcHJpdjsKPj4+PiArICAgICAgIHN0cnVjdCBub3V2ZWF1X2R2ZnMgKmR2 ZnM7Cj4+Pj4gKyAgICAgICBpbnQgcmV0Owo+Pj4+ICsKPj4+PiArICAgICAgIHJldCA9IG5vdXZl YXVfZHZmc19jcmVhdGUocGFyZW50LCBlbmdpbmUsIG9jbGFzcywgJnByaXYpOwo+Pj4+ICsgICAg ICAgKnBvYmplY3QgPSBudl9vYmplY3QocHJpdik7Cj4+Pj4gKyAgICAgICBpZiAocmV0KQo+Pj4+ ICsgICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+Pj4+ICsKPj4+PiArICAgICAgIGR2ZnMgPSAm cHJpdi0+YmFzZTsKPj4+PiArICAgICAgIGR2ZnMtPmRhdGEgPSAmZ2syMGFfZHZmc19kYXRhOwo+ Pj4+ICsKPj4+PiArICAgICAgIHJldHVybiAwOwo+Pj4+ICt9Cj4+Pj4gKwo+Pj4+ICtzdHJ1Y3Qg bm91dmVhdV9vY2xhc3MgKgo+Pj4+ICtnazIwYV9kdmZzX29jbGFzcyA9ICYoc3RydWN0IG5vdXZl YXVfZHZmc19pbXBsKSB7Cj4+Pj4gKyAgICAgICAuYmFzZS5oYW5kbGUgPSBOVl9TVUJERVYoRFZG UywgMHhlYSksCj4+Pj4gKyAgICAgICAuYmFzZS5vZnVuY3MgPSAmKHN0cnVjdCBub3V2ZWF1X29m dW5jcykgewo+Pj4+ICsgICAgICAgICAgICAgICAuY3RvciA9IGdrMjBhX2R2ZnNfY3RvciwKPj4+ PiArICAgICAgICAgICAgICAgLmR0b3IgPSBfbm91dmVhdV9kdmZzX2R0b3IsCj4+Pj4gKyAgICAg ICAgICAgICAgIC5pbml0ID0gZ2syMGFfZHZmc19pbml0LAo+Pj4+ICsgICAgICAgICAgICAgICAu ZmluaSA9IF9ub3V2ZWF1X2R2ZnNfZmluaSwKPj4+PiArICAgICAgIH0sCj4+Pj4gKyAgICAgICAu Z2V0X2Rldl9zdGF0dXMgPSBnazIwYV9kdmZzX2dldF9kZXZfc3RhdHVzLAo+Pj4+ICsgICAgICAg LnJlc2V0X2Rldl9zdGF0dXMgPSBnazIwYV9kdmZzX3Jlc2V0X2Rldl9zdGF0dXMsCj4+Pj4gKyAg ICAgICAudGFyZ2V0ID0gZ2syMGFfZHZmc190YXJnZXQsCj4+Pj4gKyAgICAgICAuZ2V0X2N1cl9z dGF0ZSA9IGdrMjBhX2R2ZnNfZ2V0X2N1cl9zdGF0ZSwKPj4+PiArICAgICAgIC5nZXRfdGFyZ2V0 X3N0YXRlID0gZ2syMGFfZHZmc19nZXRfdGFyZ2V0X3N0YXRlLAo+Pj4+ICt9LmJhc2U7Cj4+Pj4g ZGlmZiAtLWdpdCBhL252a20vc3ViZGV2L2R2ZnMvcHJpdi5oIGIvbnZrbS9zdWJkZXYvZHZmcy9w cml2LmgKPj4+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+Pj4+IGluZGV4IDAwMDAwMDAwMDAwMC4u OTVjOGEwMGEwMWMxCj4+Pj4gLS0tIC9kZXYvbnVsbAo+Pj4+ICsrKyBiL252a20vc3ViZGV2L2R2 ZnMvcHJpdi5oCj4+Pj4gQEAgLTAsMCArMSw0MyBAQAo+Pj4+ICsjaWZuZGVmIF9fTlZLTV9EVkZT X1BSSVZfSF9fCj4+Pj4gKyNkZWZpbmUgX19OVktNX0RWRlNfUFJJVl9IX18KPj4+PiArCj4+Pj4g KyNpbmNsdWRlIDxzdWJkZXYvZHZmcy5oPgo+Pj4+ICsKPj4+PiArc3RydWN0IG5vdXZlYXVfZHZm c19kZXZfc3RhdHVzIHsKPj4+PiArICAgICAgIHVuc2lnbmVkIGxvbmcgdG90YWw7Cj4+Pj4gKyAg ICAgICB1bnNpZ25lZCBsb25nIGJ1c3k7Cj4+Pj4gKyAgICAgICBpbnQgY3VyX3N0YXRlOwo+Pj4+ ICt9Owo+Pj4+ICsKPj4+PiArc3RydWN0IG5vdXZlYXVfZHZmc19pbXBsIHsKPj4+PiArICAgICAg IHN0cnVjdCBub3V2ZWF1X29jbGFzcyBiYXNlOwo+Pj4+ICsgICAgICAgaW50ICgqZ2V0X2Rldl9z dGF0dXMpKHN0cnVjdCBub3V2ZWF1X2R2ZnMgKiwKPj4+PiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHN0cnVjdCBub3V2ZWF1X2R2ZnNfZGV2X3N0YXR1cyAqKTsKPj4+PiArICAgICAg IHZvaWQgKCpyZXNldF9kZXZfc3RhdHVzKShzdHJ1Y3Qgbm91dmVhdV9kdmZzICopOwo+Pj4+ICsg ICAgICAgaW50ICgqdGFyZ2V0KShzdHJ1Y3Qgbm91dmVhdV9kdmZzICosIGludCAqc3RhdGUpOwo+ Pj4+ICsgICAgICAgaW50ICgqZ2V0X2N1cl9zdGF0ZSkoc3RydWN0IG5vdXZlYXVfZHZmcyAqLCBp bnQgKnN0YXRlKTsKPj4+PiArICAgICAgIGludCAoKmdldF90YXJnZXRfc3RhdGUpKHN0cnVjdCBu b3V2ZWF1X2R2ZnMgKiwgaW50ICpzdGF0ZSwgaW50Cj4+Pj4gbG9hZCk7Cj4+Pj4gK307Cj4+Pj4g Kwo+Pj4+ICsjZGVmaW5lIG5vdXZlYXVfZHZmc19jcmVhdGUocCxlLG8sZCkKPj4+PiBcCj4+Pj4g KyAgICAgICBub3V2ZWF1X2R2ZnNfY3JlYXRlXygocCksIChlKSwgKG8pLCBzaXplb2YoKipkKSwg KHZvaWQgKiopZCkKPj4+PiArI2RlZmluZSBub3V2ZWF1X2R2ZnNfZGVzdHJveShwKSAoewo+Pj4+ IFwKPj4+PiArICAgICAgIHN0cnVjdCBub3V2ZWF1X2R2ZnMgKmQgPSAocCk7Cj4+Pj4gXAo+Pj4+ ICsgICAgICAgX25vdXZlYXVfZHZmc19kdG9yKG52X29iamVjdChkKSk7Cj4+Pj4gXAo+Pj4+ICt9 KQo+Pj4+ICsjZGVmaW5lIG5vdXZlYXVfZHZmc19pbml0KHApICh7Cj4+Pj4gXAo+Pj4+ICsgICAg ICAgc3RydWN0IG5vdXZlYXVfZHZmcyAqZCA9IChwKTsKPj4+PiBcCj4+Pj4gKyAgICAgICBfbm91 dmVhdV9kdmZzX2luaXQobnZfb2JqZWN0KGQpKTsKPj4+PiBcCj4+Pj4gK30pCj4+Pj4gKyNkZWZp bmUgbm91dmVhdV9kdmZzX2ZpbmkocCxzKSAoewo+Pj4+IFwKPj4+PiArICAgICAgIHN0cnVjdCBu b3V2ZWF1X2R2ZnMgKmQgPSAocCk7Cj4+Pj4gXAo+Pj4+ICsgICAgICAgX25vdXZlYXVfZHZmc19m aW5pKG52X29iamVjdChkKSwgKHMpKTsKPj4+PiBcCj4+Pj4gK30pCj4+Pj4gKwo+Pj4+ICtpbnQg bm91dmVhdV9kdmZzX2NyZWF0ZV8oc3RydWN0IG5vdXZlYXVfb2JqZWN0ICosIHN0cnVjdCBub3V2 ZWF1X29iamVjdAo+Pj4+ICosCj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVj dCBub3V2ZWF1X29jbGFzcyAqLCBpbnQsIHZvaWQgKiopOwo+Pj4+ICt2b2lkIF9ub3V2ZWF1X2R2 ZnNfZHRvcihzdHJ1Y3Qgbm91dmVhdV9vYmplY3QgKik7Cj4+Pj4gK2ludCBfbm91dmVhdV9kdmZz X2luaXQoc3RydWN0IG5vdXZlYXVfb2JqZWN0ICopOwo+Pj4+ICtpbnQgX25vdXZlYXVfZHZmc19m aW5pKHN0cnVjdCBub3V2ZWF1X29iamVjdCAqLCBib29sIHN1c3BlbmQpOwo+Pj4+ICsKPj4+PiAr I2VuZGlmCj4+Pj4gLS0KPj4+PiAxLjkuMQo+Pj4+Cj4+Pj4gX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KPj4+PiBOb3V2ZWF1IG1haWxpbmcgbGlzdAo+Pj4+ IE5vdXZlYXVAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4+Pj4gaHR0cDovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL25vdXZlYXUKPj4KPj4KPj4gLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KPj4gVGhpcyBlbWFpbCBtZXNzYWdlIGlzIGZvciB0aGUgc29sZSB1c2Ugb2Yg dGhlIGludGVuZGVkIHJlY2lwaWVudChzKSBhbmQgbWF5Cj4+IGNvbnRhaW4KPj4gY29uZmlkZW50 aWFsIGluZm9ybWF0aW9uLiAgQW55IHVuYXV0aG9yaXplZCByZXZpZXcsIHVzZSwgZGlzY2xvc3Vy ZSBvcgo+PiBkaXN0cmlidXRpb24KPj4gaXMgcHJvaGliaXRlZC4gIElmIHlvdSBhcmUgbm90IHRo ZSBpbnRlbmRlZCByZWNpcGllbnQsIHBsZWFzZSBjb250YWN0IHRoZQo+PiBzZW5kZXIgYnkKPj4g cmVwbHkgZW1haWwgYW5kIGRlc3Ryb3kgYWxsIGNvcGllcyBvZiB0aGUgb3JpZ2luYWwgbWVzc2Fn ZS4KPj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCk5vdXZlYXUgbWFpbGluZyBsaXN0Ck5vdXZlYXVAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9ub3V2ZWF1Cg==