From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alex Deucher Subject: Re: [PATCH 1/2] drm/amd/pp: Remove manual mode for power_dpm_force_performance_level Date: Mon, 29 Jan 2018 17:26:05 -0500 Message-ID: References: <1516879614-11533-1-git-send-email-Rex.Zhu@amd.com> <51c6111b-78ec-36f8-b5e0-4a23ccea6de4@amd.com> <0ce63372-dc11-9710-f11d-0cf6abf326b4@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: "Zhu, Rex" Cc: "Kuehling, Felix" , "amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" T24gTW9uLCBKYW4gMjksIDIwMTggYXQgNDo1MSBQTSwgWmh1LCBSZXggPFJleC5aaHVAYW1kLmNv bT4gd3JvdGU6Cj4+SSdkIHByZWZlciB0byBrZWVwIHRoZSByZXF1aXJlbWVudCB0byBzZWxlY3Qg bWFudWFsIG1vZGUgdG8gYmUgYWJsZSB0bwo+Pm1hbnVhbGx5IG1lc3Mgd2l0aCB0aGUgY2xvY2sg bGV2ZWxzLiAgVGhpcyBhbHNvIG1ha2VzIHNpbXBsaWZpZXMgdGhlCj4+cHJvZmlsZSBpbnRlcmZh Y2UgYnkgb25seSBhbGxvd2luZyB5b3UgdG8gY2hhbmdlIHRoZSBwcm9maWxlIGlmIHlvdQo+PnNl bGVjdCBtYW51YWwgbW9kZSBmaXJzdC4gIFRoYXQgd2F5IHdlIGRvbid0IGhhdmUgdG8gYWRkIGFu IEFVVE8KPj5wcm9maWxlIHRvIHRoZSBwcm9maWxlIHNlbGVjdGlvbiB0byBsZXQgdGhlIGRyaXZl ciBwaWNrIHRoZSBwcm9maWxlLgo+PnRoYXQgY2FuIGhhcHBlbiBhdXRvbWF0aWNhbGx5IGlmIHRo ZSB1c2VyIHNldHMgdGhlIGZvcmNlX3BlcmZvcm1hbmNlCj4+bGV2ZWwgdG8gYXV0by4KPgo+Cj4g SGkgQWxleO+8jAo+Cj4KPiBzbyB5b3UgbWVhbiB1c2UgImF1dG8iICBzdGF0ZSBvZiBmb3JjZV9w ZXJmb3JtYW5jZV9sZXZlIGFzIHJlc2V0IG1vZGUgdG8gYWxsCj4gdGhlIHBlcmZvcm1hbmNlIHJl bGF0ZWQgc3lzZnMuCgpNeSB0aGlua2luZyB3YXMgdGhhdCB3aXRoIGZvcmNlX3BlcmZvcm1hbmNl X2xldmVsIHNldCB0byBhdXRvLCB0aGUKZHJpdmVyIHdpbGwgaGFuZGxlIGV2ZXJ5dGhpbmcgYnkg aXRzZWxmLiAgVGhlIGRyaXZlciB3b3VsZCBwaWNrIHRoZQpwb3dlciBwcm9maWxlIGR5bmFtaWNh bGx5LCBhbGwgb2YgdGhlIGRwbSBzdGF0ZXMgcmVsZXZhbnQgdG8gdGhlIHBvd2VyCnByb2ZpbGVz IHdvdWxkIGJlIGVuYWJsZWQsIGV0Yy4gIElmIHRoZSB1c2VyIHNlbGVjdHMgbWFudWFsIGluCmZv cmNlX3BlcmZvcm1hbmNlX2xldmVsLCB0aGVuIHRoZXkgY2FuIHNlbGVjdCB3aGljaCBzY2xrL21j bGsvcGNpZSBkcG0Kc3RhdGVzIGFyZSBhY3RpdmUgYXMgYmVmb3JlLCBhbmQgbm93IHdpdGggdGhl IHByb2ZpbGUgc3R1ZmYsIHRoZXkgY2FuCnNlbGVjdCBlaXRoZXIgYSBwcmVkZWZpbmVkIHByb2Zp bGUgKHZpZGVvLCB2ciwgM2QsIGV0Yy4pIG9yIGEgY3VzdG9tCm9uZS4gIElmIHRoZXkgd2FudCB0 byBnbyBiYWNrIHRvIGF1dG9tYXRpYyBkcml2ZXIgY29udHJvbCwgdGhleSBqdXN0CnN3aXRjaCBm b3JjZV9wZXJmb3JtYW5jZV9sZXZlbCBiYWNrIHRvIGF1dG8uICBUaGF0IHdheSB3ZSBoYXZlIGp1 c3QKb25lIGludGVyZmFjZSB0byBjb250cm9sIHRoZSBiZWhhdmlvciBhbmQgdGhlcmUgYXJlIGZl d2VyIGNvcm5lciBjYXNlcwp3aGVyZSBmZWF0dXJlcyBpbnRlcmFjdC4gIEVpdGhlciBzZWxlY3Qg YXV0byBhbmQgbGV0IHRoZSBkcml2ZXIgaGFuZGxlCml0IGFsbCwgb3Igc2VsZWN0IG1hbnVhbCBh bmQgdHdlYWsgZXZlcnl0aGluZyBtYW51YWxseS4KCkFsZXgKCj4KPgo+IEN1cnJlbnRseSB3ZSBq dXN0IHVuZm9yZSB0aGUgY2xvY2sgcmFuZ2UgaW4gdGhlIGF1dG8gc3RhdGUuCj4KPgo+IEFueXdh eSwgSSB3aWxsIGRyb3AgdGhpcyBwYXRjaC4KPgo+Cj4gQmVzdCBSZWdhcmRzCj4KPiBSZXgKPgo+ Cj4KPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IEZyb206IEFsZXggRGV1Y2hl ciA8YWxleGRldWNoZXJAZ21haWwuY29tPgo+IFNlbnQ6IFR1ZXNkYXksIEphbnVhcnkgMzAsIDIw MTggMjowMiBBTQo+Cj4gVG86IFpodSwgUmV4Cj4gQ2M6IEt1ZWhsaW5nLCBGZWxpeDsgYW1kLWdm eEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBTdWJqZWN0OiBSZTogW1BBVENIIDEvMl0gZHJtL2Ft ZC9wcDogUmVtb3ZlIG1hbnVhbCBtb2RlIGZvcgo+IHBvd2VyX2RwbV9mb3JjZV9wZXJmb3JtYW5j ZV9sZXZlbAo+Cj4gT24gTW9uLCBKYW4gMjksIDIwMTggYXQgNzowMyBBTSwgWmh1LCBSZXggPFJl eC5aaHVAYW1kLmNvbT4gd3JvdGU6Cj4+IEhpIEFsZXgsCj4+Cj4+PkhvdyBhYm91dCB3ZSBtYWtl IHRoZSBwcm9maWxlIHNlbGVjdGlvbiBkZXBlbmRlbnQgb24gc2VsZWN0aW5nIHRoZSBtYW51YWwK Pj4+IGZvcmNlX3BlcmZvcm1hbmNlX2xldmVsCj4+Cj4+IElmIHNvLCB3ZSBuZWVkIHRvIGNoZWNr IHBtLmRwbS5mb3JjZWRfbGV2ZWwgIGJlZm9yZSAicHJvZmlsZSBoZXVyaXN0aWNzIgo+PiBhbmQg ImRpc2FibGUgcG93ZXIgY29udGFpbm1lbnQiIGFzIHNhbWUgYXMgcHBfZHBtX3NjbGsvbWNsay9w Y2llLgo+Pgo+PiBpZiAoYWRldi0+cG0uZHBtLmZvcmNlZF9sZXZlbCAmIChBTURfRFBNX0ZPUkNF RF9MRVZFTF9BVVRPIHwKPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFNRF9EUE1f Rk9SQ0VEX0xFVkVMX0xPVyB8Cj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTURf RFBNX0ZPUkNFRF9MRVZFTF9ISUdIKSkKPj4gICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7 Cj4+Cj4+IEhvdyBhYm91dCBkZWxldGUganVkZ2luZyBjb2RlIGJlZm9yZSBmb3JjZV9jbG9ja19s ZXZlbCBhbmQganVzdCBjaGFuZ2UKPj4gZm9yY2VfbGV2ZWwgdG8gbWFudWFsIGFmdGVyIGZvcmNl X2Nsb2NrX2xldmVsLiBQbGVhc2Ugc2VlIHRoZSBhdHRhY2hlZAo+PiBwYXRjaC4KPj4KPj4gVGhp cyBjaGFuZ2UgaGF2ZSBubyBpbXBhY3Qgb24gZXhpc3RpbmcgaW50ZXJmYWNlIGFuZCB0b29scy4K Pj4gSXQganVzdCByZWZpbmUgdGhlIGxvZ2ljIG9mIHBvd2VyX2RwbV9mb3JjZV9wZXJmb3JtYW5j ZV9sZXZlbCBhbmQKPj4gcHBfZHBtX3NjbGsvbWNsay9wY2llLgo+PiBBbHNvIGhhcyBubyBpbXBh Y3QgdG8gcG93ZXIvY29tcHV0ZXIgcHJvZmlsZSBtb2RlIG9uIHNtdTcuCj4+Cj4+IFRoZSBkaWZm ZXJlbmNlIGlzOgo+Pgo+PiBOZXcgdXNlciBjYW4gaGF2ZSBvbmUgbGVzcyBjb21tYW5kIG5lZWQg dG8gaW5wdXQgaWYgdGhleSB3YW50IHRvIHVzZQo+PiBwcF9kcG1fc2Nsay9tY2xrL3BjaWUuCj4K PiBJJ2QgcHJlZmVyIHRvIGtlZXAgdGhlIHJlcXVpcmVtZW50IHRvIHNlbGVjdCBtYW51YWwgbW9k ZSB0byBiZSBhYmxlIHRvCj4gbWFudWFsbHkgbWVzcyB3aXRoIHRoZSBjbG9jayBsZXZlbHMuICBU aGlzIGFsc28gbWFrZXMgc2ltcGxpZmllcyB0aGUKPiBwcm9maWxlIGludGVyZmFjZSBieSBvbmx5 IGFsbG93aW5nIHlvdSB0byBjaGFuZ2UgdGhlIHByb2ZpbGUgaWYgeW91Cj4gc2VsZWN0IG1hbnVh bCBtb2RlIGZpcnN0LiAgVGhhdCB3YXkgd2UgZG9uJ3QgaGF2ZSB0byBhZGQgYW4gQVVUTwo+IHBy b2ZpbGUgdG8gdGhlIHByb2ZpbGUgc2VsZWN0aW9uIHRvIGxldCB0aGUgZHJpdmVyIHBpY2sgdGhl IHByb2ZpbGUuCj4gdGhhdCBjYW4gaGFwcGVuIGF1dG9tYXRpY2FsbHkgaWYgdGhlIHVzZXIgc2V0 cyB0aGUgZm9yY2VfcGVyZm9ybWFuY2UKPiBsZXZlbCB0byBhdXRvLgo+Cj4gQWxleAo+Cj4+Cj4+ Cj4+IEJlc3QgUmVnYXJkcwo+PiBSZXgKPj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0KPj4g RnJvbTogQWxleCBEZXVjaGVyIFttYWlsdG86YWxleGRldWNoZXJAZ21haWwuY29tXQo+PiBTZW50 OiBTYXR1cmRheSwgSmFudWFyeSAyNywgMjAxOCA3OjUxIEFNCj4+IFRvOiBaaHUsIFJleAo+PiBD YzogS3VlaGxpbmcsIEZlbGl4OyBhbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+PiBTdWJq ZWN0OiBSZTogW1BBVENIIDEvMl0gZHJtL2FtZC9wcDogUmVtb3ZlIG1hbnVhbCBtb2RlIGZvcgo+ PiBwb3dlcl9kcG1fZm9yY2VfcGVyZm9ybWFuY2VfbGV2ZWwKPj4KPj4gSSB0aGluayB3ZSBoYXZl IHR3byB1c2UgY2FzZXMgZm9yIHRoZSBwcm9maWxlczoKPj4KPj4gMS4gYXV0b21hdGljIHByb2Zp bGUgc3dpdGNoaW5nIGZvciBkaWZmZXJlbnQgZHJpdmVyIHVzZSBjYXNlcyAyLiBtYW51YWxseQo+ PiB0d2Vha2luZyBwcm9maWxlcy9jbG9ja3MvcG93ZXIgZm9yIHRlc3RpbmcKPj4KPj4gSG93IGFi b3V0IHdlIG1ha2UgdGhlIHByb2ZpbGUgc2VsZWN0aW9uIGRlcGVuZGVudCBvbiBzZWxlY3Rpbmcg dGhlIG1hbnVhbAo+PiBmb3JjZV9wZXJmb3JtYW5jZV9sZXZlbCBhbmQgbm90IGFkZCBhbiBhdXRv IHRvIHRoZSBwcm9maWxlIHNlbGVjdG9yLiAgVGhlbgo+PiB3aGVuIHlvdSBzZWxlY3QgbWFudWFs IHlvdSBjYW4gdHdlYWsgdGhlIGNsb2NrcyBhbmQgcHJvZmlsZSBoZXVyaXN0aWNzIGFuZAo+PiBw b3dlciBjb250YWlubWVudCB2aWEgdGhlaXIgcmVzcGVjdGl2ZSBrbm9icy4KPj4KPj4KPj4gQWxl eAo+Pgo+PiBPbiBGcmksIEphbiAyNiwgMjAxOCBhdCAzOjA4IFBNLCBaaHUsIFJleCA8UmV4Llpo dUBhbWQuY29tPiB3cm90ZToKPj4+PkV4aXN0aW5nIHRvb2xzIGFuZCB1c2VycyBleHBlY3QgdGhh dCBzd2l0Y2hpbmcgYmFjayB0byBhdXRvIHJlbW92ZXMKPj4+PnRoZSBtYW51YWwgY2xvY2sgc2V0 dGluZ3MuIElmIHlvdSBhbGxvdyBjaGFuZ2luZyB0aGUgY2xvY2sgaW4gYXV0bwo+Pj4+bW9kZSwg dGhhdCB3b24ndCBoYXBwZW4gYW55IG1vcmUuCj4+Pgo+Pj4KPj4+IEkgaGF2ZSBzZW50IHRoZSBw YXRjaCB2MiB0byBmaXggdGhpcyBwcm9ibGVtLiB1c2VyIGNhbiBzd2l0aCBiYWNrIGF1dG8KPj4+ IG1vZGUgYW5kIGFsbCBtYW51YWwgY2xvY2sgc2V0dGluZyB3aWxsIGJlIHJlbW92ZWQuCj4+Pgo+ Pj4KPj4+Pk9uZSBtb3JlIHJlYXNvbiB3aHkgYWxsb3dpbmcgdGhlIHVzZXIgdG8gc2V0IHBwX2Rw bV9zY2tsL21jbGsKPj4+PnNob3VsZG4ndCBiZSAgYWxsb3dlZCBpbiBhdXRvLW1vZGUuCj4+Pgo+ Pj4gdGhpcyBpcyBhbiBvbGQgbG9naWMsIG1heWJlIHJlZiByYWRlb24gZHJpdmVyLgo+Pj4gRHJp dmVyIGNhbiBhbGxvdyB0byBzZXQgcHBfZHBtX3NjbGsvbWNsayByYW5nZSBpbiBhdXRvL2hpZ2gv bG93IG1vZGUuCj4+Pgo+Pj4gQmVzdCBSZWdhcmRzCj4+PiBSZXgKPj4+IF9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCj4+PiBGcm9tOiBLdWVobGluZywgRmVsaXgKPj4+IFNlbnQ6IFNh dHVyZGF5LCBKYW51YXJ5IDI3LCAyMDE4IDM6MzIgQU0KPj4+IFRvOiBaaHUsIFJleDsgYW1kLWdm eEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPj4+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggMS8yXSBkcm0v YW1kL3BwOiBSZW1vdmUgbWFudWFsIG1vZGUgZm9yCj4+PiBwb3dlcl9kcG1fZm9yY2VfcGVyZm9y bWFuY2VfbGV2ZWwKPj4+Cj4+PiBPbiAyMDE4LTAxLTI2IDAyOjIwIFBNLCBaaHUsIFJleCB3cm90 ZToKPj4+Pgo+Pj4+ID4xLiBZb3UncmUgYnJlYWtpbmcgdGhlIHNlbWFudGljcyBvZiB0aGUgZXhp c3RpbmcgcHBfZHBtX3NjbGsvbWNsay9wY2llCj4+Pj4gPiAgICBpbnRlcmZhY2VzLCB3aGljaCBh ZmZlY3RzIGV4aXN0aW5nIHRvb2xzCj4+Pj4KPj4+Pgo+Pj4+IFJleDogSSBkb24ndCB0aGluayB0 aGUgcGF0Y2ggd2lsbCBhZmZlY3RzIGV4aXN0aW5nIHRvb2xzLgo+Pj4+Cj4+Pj4KPj4+PiBVc2Vy IHNldCAibWFudWFsIiB0byBwb3dlcl9wZXJmb3JtYW5jZV9sZXZlbCwgYW5kIHRoZW4gY2hhbmdl IHRoZQo+Pj4+IGNsb2NrIHJhbmdlIHRocm91Z2ggIHBwX2RwbV9zY2xrL21jbGsvcGNpZS4KPj4+ Pgo+Pj4+Cj4+Pj4gd2l0aCB0aGlzIHBhdGNoLCBVc2VyIGRvbnQgbmVlZCB0byBzZXQgIm1hbnVh bCIgY29tbWFuZCwgIGlmIHN0aWxsCj4+Pj4gcmVjZWl2ZSB0aGUgbWFudWFsIGNvbW1hbmQsIGRy aXZlciBqdXN0IHJldHVybiBzdWNlc3MgdG8gdXNlciBpbgo+Pj4+IG9yZGVyIG5vdCAgYnJlYWsg ZXhpc3RpbmcKPj4+Pgo+Pj4+IHRvb2xzLgo+Pj4+Cj4+Pgo+Pj4gRXhpc3RpbmcgdG9vbHMgYW5k IHVzZXJzIGV4cGVjdCB0aGF0IHN3aXRjaGluZyBiYWNrIHRvIGF1dG8gcmVtb3Zlcwo+Pj4gdGhl IG1hbnVhbCBjbG9jayBzZXR0aW5ncy4gSWYgeW91IGFsbG93IGNoYW5naW5nIHRoZSBjbG9jayBp biBhdXRvCj4+PiBtb2RlLCB0aGF0IHdvbid0IGhhcHBlbiBhbnkgbW9yZS4KPj4+Cj4+Pj4KPj4+ PiAgPjIuIFlvdSdyZSB0YWtpbmcgdGhlIGNsb2NrIGxpbWl0cyBvdXQgb2YgdGhlIHBvd2VyIHBy b2ZpbGUuCj4+Pj4gID4gIEF1dG9tYXRpY2FsbHkgYWRqdXN0aW5nIHRoZSBtaW5pbXVtIHNjbGsv bWNsayBpcyBhIHJlcXVpcmVtZW50IGZvcgo+Pj4+ICA+ICAgdGhlIGNvbXB1dGUgcG93ZXIgcHJv ZmlsZQo+Pj4+Cj4+Pj4KPj4+PiBSZXg6IEluIHZlZ2ExMCwgdW5kZXIgZGVmYXVsdCBjb21wdXQg bW9kZSh3aXRoCj4+Pj4gYnVzeV9zZXRfcG9pbnQvZnBzL3VzZV9ybGNfYnVzeS9taW5fYWN0aXZl X2xldmVsIHNldCksIGp1c3QgdHdvCj4+Pj4gcGVyZm9ybWFuY2UgbGV2ZWxzIGxlZnQKPj4+PiAo bGV2ZWwwIGFuZCBsZXZlbDcpLiBhbmQgY2xvY2sganVzdCBzd2l0Y2ggYmV0d2VlbiBsb3dlc3Qg YW5kIGhpZ2hlc3QuCj4+Pj4KPj4+PiBJIGFtIG5vdCBzdXJlIGluIHRoaXMgY2FzZSwgZHJpdmVy IHN0aWxsIGNhbiBzZXQgbWluIHNjbGsvbWNsay4KPj4+Cj4+PiBPbmUgbW9yZSByZWFzb24gd2h5 IGFsbG93aW5nIHRoZSB1c2VyIHRvIHNldCBwcF9kcG1fc2NrbC9tY2xrCj4+PiBzaG91bGRuJ3Qg YmUgYWxsb3dlZCBpbiBhdXRvLW1vZGUuCj4+Pgo+Pj4gUmVnYXJkcywKPj4+ICAgRmVsaXgKPj4+ Cj4+Pj4KPj4+PiBCZXN0IFJlZ2FyZHMKPj4+PiBSZXgKPj4+Pgo+Pj4+Cj4+Pj4gLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCj4+Pj4gLS0tCj4+Pj4gKkZyb206KiBLdWVobGluZywgRmVsaXgKPj4+PiAqU2VudDoqIFNh dHVyZGF5LCBKYW51YXJ5IDI3LCAyMDE4IDEyOjQ5IEFNCj4+Pj4gKlRvOiogWmh1LCBSZXg7IGFt ZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4+Pj4gKlN1YmplY3Q6KiBSZTogW1BBVENIIDEv Ml0gZHJtL2FtZC9wcDogUmVtb3ZlIG1hbnVhbCBtb2RlIGZvcgo+Pj4+IHBvd2VyX2RwbV9mb3Jj ZV9wZXJmb3JtYW5jZV9sZXZlbAo+Pj4+Cj4+Pj4gSGkgUmV4LAo+Pj4+Cj4+Pj4gSSB0aGluayBJ IHVuZGVyc3RhbmQgd2hhdCB5b3UncmUgdHJ5aW5nIHRvIGRvLiBUbyBzdW1tYXJpemUgbXkKPj4+ PiBjb25jZXJucywgdGhlcmUgYXJlIHR3byByZWFzb25zIEknbSBhZ2FpbnN0IHlvdXIgcGxhbjoK Pj4+Pgo+Pj4+ICAxLiBZb3UncmUgYnJlYWtpbmcgdGhlIHNlbWFudGljcyBvZiB0aGUgZXhpc3Rp bmcgcHBfZHBtX3NjbGsvbWNsay9wY2llCj4+Pj4gICAgIGludGVyZmFjZXMsIHdoaWNoIGFmZmVj dHMgZXhpc3RpbmcgdG9vbHMgIDIuIFlvdSdyZSB0YWtpbmcgdGhlCj4+Pj4gY2xvY2sgbGltaXRz IG91dCBvZiB0aGUgcG93ZXIgcHJvZmlsZS4KPj4+PiAgICAgQXV0b21hdGljYWxseSBhZGp1c3Rp bmcgdGhlIG1pbmltdW0gc2Nsay9tY2xrIGlzIGEgcmVxdWlyZW1lbnQgZm9yCj4+Pj4gICAgIHRo ZSBjb21wdXRlIHBvd2VyIHByb2ZpbGUKPj4+Pgo+Pj4+IFJlZ2FyZHMsCj4+Pj4gICBGZWxpeAo+ Pj4+Cj4+Pj4gT24gMjAxOC0wMS0yNiAwNzo1MCBBTSwgWmh1LCBSZXggd3JvdGU6Cj4+Pj4gPgo+ Pj4+ID4gSGkgRmVsaXgsCj4+Pj4gPgo+Pj4+ID4KPj4+PiA+ID5UaGF0IHdvdWxkIG1ha2Ugc2Vu c2UuIEJ1dCBzd2l0Y2hpbmcgdG8gbWFudWFsIG1vZGUgd291bGQgZGlzYWJsZQo+Pj4+ID4gPnBy b2ZpbGVzIGFuZCBhdXRvbWF0aWMgcHJvZmlsZSBzZWxlY3Rpb24uIFRoYXQgd2FzIG9uZSByZWFz b24gd2h5Cj4+Pj4gPiA+SSBvYmplY3RlZCB0byB5b3VyIHBsYW4gdG8gY29udHJvbCBwcm9maWxl IGNsb2NrIGxpbWl0cyB1c2luZwo+Pj4+ID4gPnRoZXNlCj4+Pj4gZmlsZXMuCj4+Pj4gPgo+Pj4+ ID4gUmV4Ogo+Pj4+ID4KPj4+PiA+Cj4+Pj4gPiBJIGFtIG5vdCB2ZXJ5IGNsZWFyIHRoZSBvbGQg bG9naWMgb2YgZ2Z4L2NvbXB1dGUgcG93ZXIgcHJvZmlsZSBzd2l0Y2guCj4+Pj4gPgo+Pj4+ID4K Pj4+PiA+IEJ1dCB3aXRoIG5ldyBzeXNmcywKPj4+PiA+Cj4+Pj4gPgo+Pj4+ID4KPj4+PiA+IFRo ZSBsb2dpYyBpcyh0aG9zZSBzeXNmcyBhcmUgaW5kZXBlbmRlbnQpCj4+Pj4gPgo+Pj4+ID4gIDEu IGNvbmZpZ3VyZSB1cGh5c3QvZG93bmh5c3QvbWluX2F0aXZpdHkgdGhyb3VnaAo+Pj4+ID4gcG93 ZXJfcHJvZmlsZV9tb2RlLAo+Pj4+ID4KPj4+PiA+ICAgICAgIDIuIGFkanVzdCBjbG9jayByYW5n ZSB0aHJvdWdoIHBwX2RwbV9zY2xrL21jbGsvcGNpZS4ob25jZQo+Pj4+ID4gdGhpcyBzeXNmZnMg d2FzIGNhbGxlZCwgc2V0IHRoZSBkcG0gbGV2ZWwgbW9kZSB0byB1bmtub3duKQo+Pj4+ID4KPj4+ PiA+ICAgICAgIDMuIGFkanVzdCBwb3dlciBsaW1pdCB0aHJvdWdoIHBwX29kX3Bvd2VyX2xpbWl0 KG1heWJlIGVxdWFsCj4+Pj4gPiB0byBkaXNhYmxlIHBvd2VyIGNvbnRhaW5tZW50KS4KPj4+PiA+ Cj4+Pj4gPgo+Pj4+ID4KPj4+PiA+IEluIHRob3NlIGZ1bmN0aW9ucywgZHJpdmVyIGRvIG5vdCBj aGVjayB0aGUgZHBtIGxldmVsIG1vZGUuCj4+Pj4gPgo+Pj4+ID4gdGhlIGRwbSBsZXZlbCBtb2Rl IGp1c3QgdXNlZCBieSBwb3dlcl9kcG1fZm9yY2VfcGVyZm9ybWFuY2VfbGV2ZWwKPj4+PiA+IGZ1 bmN0aW9ucy4KPj4+PiA+Cj4+Pj4gPgo+Pj4+ID4gQmVzdCBSZWdhcmRzCj4+Pj4gPgo+Pj4+ID4g UmV4Cj4+Pj4gPgo+Pj4+ID4KPj4+PiA+Cj4+Pj4gPgo+Pj4+ID4KPj4+PiA+IC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K Pj4+PiA+IC0tLS0tCj4+Pj4gPiAqRnJvbToqIEt1ZWhsaW5nLCBGZWxpeAo+Pj4+ID4gKlNlbnQ6 KiBGcmlkYXksIEphbnVhcnkgMjYsIDIwMTggODoyNiBBTQo+Pj4+ID4gKlRvOiogWmh1LCBSZXg7 IGFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4+Pj4gPiAqU3ViamVjdDoqIFJlOiBbUEFU Q0ggMS8yXSBkcm0vYW1kL3BwOiBSZW1vdmUgbWFudWFsIG1vZGUgZm9yCj4+Pj4gPiBwb3dlcl9k cG1fZm9yY2VfcGVyZm9ybWFuY2VfbGV2ZWwKPj4+PiA+Cj4+Pj4gPiBPbiAyMDE4LTAxLTI1IDA3 OjA3IFBNLCBaaHUsIFJleCB3cm90ZToKPj4+PiA+ID4gSSBhbHNvIHRoaW5rIGFib3V0IHRoaXMg cHJvYmxlbS4KPj4+PiA+ID4ganVzdCB0aGluayB1c2VyIHNob3VsZCB1bmZvcmNlZCBjbGsgbGV2 ZWwgdGhyb3VnaCBwcCBkcG0KPj4+PiA+ID4gc2Nsay9tY2xrL3BjaWUgaWYgdGhleSBjaGFuZ2Ug dGhlIGNsb2NrIGxvZ2ljIHRocm91Z2ggdGhvc2Ugc3lzZnMuCj4+Pj4gPiA+Cj4+Pj4gPiA+IFRo ZSBsb2dpYyBzZWVtcyB3ZWlyZCwgQXMgd2Ugc3VwcGx5IG1hbnkgc3lzZnMgZm9yIGFkanVzdCBj bG9jawo+Pj4+ID4gPiByYW5nZS4KPj4+PiA+ID4KPj4+PiA+ID4gV2UgY2FuIGZpeCB0aGlzIHBy b2JsZW0gYnkgY2hhbmdlIGN1cnJlbnQgbW9kZSB0byBtYW51YWwgbW9kZQo+Pj4+ID4gPiBhZnRl ciB1c2VyIGNhbGwgcHAgZHBtIHNjbGsvbWNsay9wY2llLgo+Pj4+ID4gPgo+Pj4+ID4gPiBCdXQg YW5vdGhlciB0aGlua++8jGlmIHVzZXIgY2hhbmdlIGJhY2sgdGhlIGNsayByYW5nZSB0aHJvdWdo IHBwCj4+Pj4gPiA+IGRwbQo+Pj4+IGNsay4KPj4+PiA+ID4KPj4+PiA+ID4gd2UgYXJlIGluIG1h bnVhbCBtb2RlLCBhbmQgdXNlciBzZXQgYXV0byBtb2RlLCBpbiBmYWN0LCBkcml2ZXIKPj4+PiA+ ID4gY2hhbmdlIG5vdGhpbmcuCj4+Pj4gPgo+Pj4+ID4gV2l0aCBwcm9maWxlcywgc3dpdGNoaW5n IGJhY2sgdG8gYXV0byBtb2RlIHdvdWxkIHNlbGVjdCB0aGUKPj4+PiA+IGFwcHJvcHJpYXRlIHBy b2ZpbGUsIHdoaWNoIG1heSBoYXZlIGEgZGlmZmVyZW50IGNsb2NrIG1hc2suIEZvcgo+Pj4+ID4g ZXhhbXBsZSBmb3IgY29tcHV0ZSB3ZSBlbmFibGUgb25seSB0aGUgaGlnaGVzdCB0d28gc2NsayBs ZXZlbHMuCj4+Pj4gPgo+Pj4+ID4gPgo+Pj4+ID4gPiBDb21wYXJhdGl2ZWx5IHNwZWFraW5nLCBi ZXR0ZXIgc2V0IG1hbnVhbCBtb2RlIGFmdGVyIHVzZXIgY2FsbCBwcAo+Pj4+ID4gZHBtIGNsay4K Pj4+PiA+Cj4+Pj4gPiBUaGF0IHdvdWxkIG1ha2Ugc2Vuc2UuIEJ1dCBzd2l0Y2hpbmcgdG8gbWFu dWFsIG1vZGUgd291bGQgZGlzYWJsZQo+Pj4+ID4gcHJvZmlsZXMgYW5kIGF1dG9tYXRpYyBwcm9m aWxlIHNlbGVjdGlvbi4gVGhhdCB3YXMgb25lIHJlYXNvbiB3aHkgSQo+Pj4+ID4gb2JqZWN0ZWQg dG8geW91ciBwbGFuIHRvIGNvbnRyb2wgcHJvZmlsZSBjbG9jayBsaW1pdHMgdXNpbmcgdGhlc2UK Pj4+PiA+IGZpbGVzLgo+Pj4+ID4KPj4+PiA+IFJlZ2FyZHMsCj4+Pj4gPiAgIEZlbGl4Cj4+Pj4g Pgo+Pj4+ID4gPiBUaGFua3MgdmVyeSBtdWNoLgo+Pj4+ID4gPgo+Pj4+ID4gPiBCZXN0IFJlZ2Fy ZHMKPj4+PiA+ID4gUmV4Cj4+Pj4gPiA+Cj4+Pj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4+Pj4gLS0tCj4+Pj4g PiA+ICpGcm9tOiogS3VlaGxpbmcsIEZlbGl4Cj4+Pj4gPiA+ICpTZW50OiogRnJpZGF5LCBKYW51 YXJ5IDI2LCAyMDE4IDEyOjU1OjE5IEFNCj4+Pj4gPiA+ICpUbzoqIGFtZC1nZnhAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnOyBaaHUsIFJleAo+Pj4+ID4gPiAqU3ViamVjdDoqIFJlOiBbUEFUQ0ggMS8y XSBkcm0vYW1kL3BwOiBSZW1vdmUgbWFudWFsIG1vZGUgZm9yCj4+Pj4gPiA+IHBvd2VyX2RwbV9m b3JjZV9wZXJmb3JtYW5jZV9sZXZlbAo+Pj4+ID4gPgo+Pj4+ID4gPiBUaGlzIHBhdGNoIGJyZWFr cyB1bmZvcmNpbmcgb2YgY2xvY2tzLCB3aGljaCBpcyBjdXJyZW50bHkgZG9uZSBieQo+Pj4+ID4g PiBzd2l0Y2hpbmcgYmFjayBmcm9tICJtYW51YWwiIHRvICJhdXRvIi4gQnkgcmVtb3ZpbmcgIm1h bnVhbCIKPj4+PiA+ID4gbW9kZSwgeW91IHJlbW92ZSB0aGUgYWJpbGl0eSB0byB1bnNldCBmb3Jj ZWQgY2xvY2tzLgo+Pj4+ID4gPgo+Pj4+ID4gPiBSZWdhcmRzLAo+Pj4+ID4gPiAgIEZlbGl4Cj4+ Pj4gPiA+Cj4+Pj4gPiA+Cj4+Pj4gPiA+IE9uIDIwMTgtMDEtMjUgMDY6MjYgQU0sIFJleCBaaHUg d3JvdGU6Cj4+Pj4gPiA+ID4gRHJpdmVyIGRvIG5vdCBtYWludGFpbiBtYW51YWwgbW9kZSBmb3IK Pj4+PiA+ID4gPiBkcG1fZm9yY2VfcGVyZm9ybWFuY2VfbGV2ZWwsIFVzZXIgY2FuIHNldCBzY2xr L21jbGsvcGNpZSByYW5nZQo+Pj4+ID4gPiA+IHRocm91Z2gKPj4+PiA+ID4gcHBfZHBtX3NjbGsv cHBfZHBtX21jbGsvcHBfZHBtX3BjaWUKPj4+PiA+ID4gPiBkaXJlY3RseS4KPj4+PiA+ID4gPgo+ Pj4+ID4gPiA+IEluIG9yZGVyIHRvIG5vdCBicmVhayBjdXJyZW50bHkgdG9vbHMsIHdoZW4gc2V0 ICJtYW51YWwiIHRvCj4+Pj4gPiA+ID4gcG93ZXJfZHBtX2ZvcmNlX3BlcmZvcm1hbmNlX2xldmVs IGRyaXZlciB3aWxsIGRvIG5vdGhpbmcgYW5kCj4+Pj4gPiA+ID4ganVzdCByZXR1cm4gc3VjY2Vz c2Z1bC4KPj4+PiA+ID4gPgo+Pj4+ID4gPiA+IENoYW5nZS1JZDogSWFmNjcyYjlhYmM3ZmE1N2I3 NjVjZWI3ZmEyZmJhNmFkM2U4MGM1MGIKPj4+PiA+ID4gPiBTaWduZWQtb2ZmLWJ5OiBSZXggWmh1 IDxSZXguWmh1QGFtZC5jb20+Cj4+Pj4gPiA+ID4gLS0tCj4+Pj4gPiA+ID4gIGRyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9wbS5jICAgICAgICAgICAgIHwgIDMgKy0tCj4+Pj4gPiA+ ID4gIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2NpX2RwbS5jICAgICAgICAgICAgICAgIHwg IDUgLS0tLS0KPj4+PiA+ID4gPiAgZHJpdmVycy9ncHUvZHJtL2FtZC9pbmNsdWRlL2tnZF9wcF9p bnRlcmZhY2UuaCAgICAgfCAxNQo+Pj4+ID4gKysrKysrKy0tLS0tLS0tCj4+Pj4gPiA+ID4gIGRy aXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2h3bWdyL2N6X2h3bWdyLmMgICAgIHwgIDQgLS0t LQo+Pj4+ID4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9od21nci9ydl9od21n ci5jICAgICB8ICAxIC0KPj4+PiA+ID4gPiAgZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkv aHdtZ3Ivc211N19od21nci5jICAgfCAgNiAtLS0tLS0KPj4+PiA+ID4gPiAgZHJpdmVycy9ncHUv ZHJtL2FtZC9wb3dlcnBsYXkvaHdtZ3IvdmVnYTEwX2h3bWdyLmMgfCAgNiAtLS0tLS0KPj4+PiA+ ID4gPiAgNyBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDMyIGRlbGV0aW9ucygtKQo+ Pj4+ID4gPiA+Cj4+Pj4gPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L2FtZGdwdV9wbS5jCj4+Pj4gPiA+IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1k Z3B1X3BtLmMKPj4+PiA+ID4gPiBpbmRleCAxODEyMDA5Li42NmI0ZGYwIDEwMDY0NAo+Pj4+ID4g PiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9wbS5jCj4+Pj4gPiA+ ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3BtLmMKPj4+PiA+ID4g PiBAQCAtMTUyLDcgKzE1Miw2IEBAIHN0YXRpYyBzc2l6ZV90Cj4+Pj4gPiA+IGFtZGdwdV9nZXRf ZHBtX2ZvcmNlZF9wZXJmb3JtYW5jZV9sZXZlbChzdHJ1Y3QgZGV2aWNlICpkZXYsCj4+Pj4gPiA+ ID4gICAgICAgICAgICAgICAgICAgICAgICAobGV2ZWwgPT0gQU1EX0RQTV9GT1JDRURfTEVWRUxf QVVUTykgPwo+Pj4+ICJhdXRvIiA6Cj4+Pj4gPiA+ID4gICAgICAgICAgICAgICAgICAgICAgICAo bGV2ZWwgPT0gQU1EX0RQTV9GT1JDRURfTEVWRUxfTE9XKSA/ICJsb3ciCj4+Pj4gPiA+ID4gOgo+ Pj4+ID4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAgKGxldmVsID09IEFNRF9EUE1fRk9SQ0VE X0xFVkVMX0hJR0gpID8KPj4+PiAiaGlnaCIgOgo+Pj4+ID4gPiA+IC0gICAgICAgICAgICAgICAg ICAgICAobGV2ZWwgPT0gQU1EX0RQTV9GT1JDRURfTEVWRUxfTUFOVUFMKSA/Cj4+Pj4gPiA+ICJt YW51YWwiIDoKPj4+PiA+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgIChsZXZlbCA9PQo+Pj4+ ID4gPiBBTURfRFBNX0ZPUkNFRF9MRVZFTF9QUk9GSUxFX1NUQU5EQVJEKSA/ICJwcm9maWxlX3N0 YW5kYXJkIiA6Cj4+Pj4gPiA+ID4gICAgICAgICAgICAgICAgICAgICAgICAobGV2ZWwgPT0KPj4+ PiA+ID4gQU1EX0RQTV9GT1JDRURfTEVWRUxfUFJPRklMRV9NSU5fU0NMSykgPyAicHJvZmlsZV9t aW5fc2NsayIgOgo+Pj4+ID4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAgKGxldmVsID09Cj4+ Pj4gPiA+IEFNRF9EUE1fRk9SQ0VEX0xFVkVMX1BST0ZJTEVfTUlOX01DTEspID8gInByb2ZpbGVf bWluX21jbGsiIDoKPj4+PiA+ID4gPiBAQCAtMTg2LDcgKzE4NSw3IEBAIHN0YXRpYyBzc2l6ZV90 Cj4+Pj4gPiA+IGFtZGdwdV9zZXRfZHBtX2ZvcmNlZF9wZXJmb3JtYW5jZV9sZXZlbChzdHJ1Y3Qg ZGV2aWNlICpkZXYsCj4+Pj4gPiA+ID4gICAgICAgIH0gZWxzZSBpZiAoc3RybmNtcCgiYXV0byIs IGJ1Ziwgc3RybGVuKCJhdXRvIikpID09IDApIHsKPj4+PiA+ID4gPiAgICAgICAgICAgICAgICBs ZXZlbCA9IEFNRF9EUE1fRk9SQ0VEX0xFVkVMX0FVVE87Cj4+Pj4gPiA+ID4gICAgICAgIH0gZWxz ZSBpZiAoc3RybmNtcCgibWFudWFsIiwgYnVmLCBzdHJsZW4oIm1hbnVhbCIpKSA9PSAwKSB7Cj4+ Pj4gPiA+ID4gLSAgICAgICAgICAgICBsZXZlbCA9IEFNRF9EUE1fRk9SQ0VEX0xFVkVMX01BTlVB TDsKPj4+PiA+ID4gPiArICAgICAgICAgICAgIHByX2luZm8oIk5vIG5lZWQgdG8gc2V0IG1hbnVh bCBtb2RlLCBKdXN0IGdvCj4+Pj4gYWhlYWRcbiIpOwo+Pj4+ID4gPiA+ICAgICAgICB9IGVsc2Ug aWYgKHN0cm5jbXAoInByb2ZpbGVfZXhpdCIsIGJ1ZiwKPj4+PiA+ID4gc3RybGVuKCJwcm9maWxl X2V4aXQiKSkgPT0gMCkgewo+Pj4+ID4gPiA+ICAgICAgICAgICAgICAgIGxldmVsID0gQU1EX0RQ TV9GT1JDRURfTEVWRUxfUFJPRklMRV9FWElUOwo+Pj4+ID4gPiA+ICAgICAgICB9IGVsc2UgaWYg KHN0cm5jbXAoInByb2ZpbGVfc3RhbmRhcmQiLCBidWYsCj4+Pj4gPiA+IHN0cmxlbigicHJvZmls ZV9zdGFuZGFyZCIpKSA9PSAwKSB7Cj4+Pj4gPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2NpX2RwbS5jCj4+Pj4gPiA+IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvY2lfZHBtLmMKPj4+PiA+ID4gPiBpbmRleCBhYjQ1MjMyLi44ZGRjOTc4IDEwMDY0NAo+ Pj4+ID4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2NpX2RwbS5jCj4+Pj4g PiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvY2lfZHBtLmMKPj4+PiA+ID4g PiBAQCAtNjYzOSwxMSArNjYzOSw2IEBAIHN0YXRpYyBpbnQgY2lfZHBtX2ZvcmNlX2Nsb2NrX2xl dmVsKHZvaWQKPj4+PiA+ICpoYW5kbGUsCj4+Pj4gPiA+ID4gICAgICAgIHN0cnVjdCBhbWRncHVf ZGV2aWNlICphZGV2ID0gKHN0cnVjdCBhbWRncHVfZGV2aWNlCj4+Pj4gPiA+ID4gKiloYW5kbGU7 Cj4+Pj4gPiA+ID4gICAgICAgIHN0cnVjdCBjaV9wb3dlcl9pbmZvICpwaSA9IGNpX2dldF9waShh ZGV2KTsKPj4+PiA+ID4gPgo+Pj4+ID4gPiA+IC0gICAgIGlmIChhZGV2LT5wbS5kcG0uZm9yY2Vk X2xldmVsICYgKEFNRF9EUE1fRk9SQ0VEX0xFVkVMX0FVVE8gfAo+Pj4+ID4gPiA+IC0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEFNRF9EUE1fRk9SQ0VEX0xFVkVMX0xPVyB8Cj4+Pj4gPiA+ ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU1EX0RQTV9GT1JDRURfTEVWRUxfSElH SCkpCj4+Pj4gPiA+ID4gLSAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPj4+PiA+ID4gPiAt Cj4+Pj4gPiA+ID4gICAgICAgIHN3aXRjaCAodHlwZSkgewo+Pj4+ID4gPiA+ICAgICAgICBjYXNl IFBQX1NDTEs6Cj4+Pj4gPiA+ID4gICAgICAgICAgICAgICAgaWYgKCFwaS0+c2Nsa19kcG1fa2V5 X2Rpc2FibGVkKSBkaWZmIC0tZ2l0Cj4+Pj4gPiA+ID4gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2lu Y2x1ZGUva2dkX3BwX2ludGVyZmFjZS5oCj4+Pj4gPiA+IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9p bmNsdWRlL2tnZF9wcF9pbnRlcmZhY2UuaAo+Pj4+ID4gPiA+IGluZGV4IGI5YWE5ZjQuLjNmYWI2 ODYgMTAwNjQ0Cj4+Pj4gPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9pbmNsdWRlL2tn ZF9wcF9pbnRlcmZhY2UuaAo+Pj4+ID4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvaW5j bHVkZS9rZ2RfcHBfaW50ZXJmYWNlLmgKPj4+PiA+ID4gPiBAQCAtNDEsMTQgKzQxLDEzIEBAIHN0 cnVjdCBhbWRfdmNlX3N0YXRlIHsKPj4+PiA+ID4gPgo+Pj4+ID4gPiA+ICBlbnVtIGFtZF9kcG1f Zm9yY2VkX2xldmVsIHsKPj4+PiA+ID4gPiAgICAgICAgQU1EX0RQTV9GT1JDRURfTEVWRUxfQVVU TyA9IDB4MSwKPj4+PiA+ID4gPiAtICAgICBBTURfRFBNX0ZPUkNFRF9MRVZFTF9NQU5VQUwgPSAw eDIsCj4+Pj4gPiA+ID4gLSAgICAgQU1EX0RQTV9GT1JDRURfTEVWRUxfTE9XID0gMHg0LAo+Pj4+ ID4gPiA+IC0gICAgIEFNRF9EUE1fRk9SQ0VEX0xFVkVMX0hJR0ggPSAweDgsCj4+Pj4gPiA+ID4g LSAgICAgQU1EX0RQTV9GT1JDRURfTEVWRUxfUFJPRklMRV9TVEFOREFSRCA9IDB4MTAsCj4+Pj4g PiA+ID4gLSAgICAgQU1EX0RQTV9GT1JDRURfTEVWRUxfUFJPRklMRV9NSU5fU0NMSyA9IDB4MjAs Cj4+Pj4gPiA+ID4gLSAgICAgQU1EX0RQTV9GT1JDRURfTEVWRUxfUFJPRklMRV9NSU5fTUNMSyA9 IDB4NDAsCj4+Pj4gPiA+ID4gLSAgICAgQU1EX0RQTV9GT1JDRURfTEVWRUxfUFJPRklMRV9QRUFL ID0gMHg4MCwKPj4+PiA+ID4gPiAtICAgICBBTURfRFBNX0ZPUkNFRF9MRVZFTF9QUk9GSUxFX0VY SVQgPSAweDEwMCwKPj4+PiA+ID4gPiArICAgICBBTURfRFBNX0ZPUkNFRF9MRVZFTF9MT1cgPSAw eDIsCj4+Pj4gPiA+ID4gKyAgICAgQU1EX0RQTV9GT1JDRURfTEVWRUxfSElHSCA9IDB4NCwKPj4+ PiA+ID4gPiArICAgICBBTURfRFBNX0ZPUkNFRF9MRVZFTF9QUk9GSUxFX1NUQU5EQVJEID0gMHg4 LAo+Pj4+ID4gPiA+ICsgICAgIEFNRF9EUE1fRk9SQ0VEX0xFVkVMX1BST0ZJTEVfTUlOX1NDTEsg PSAweDEwLAo+Pj4+ID4gPiA+ICsgICAgIEFNRF9EUE1fRk9SQ0VEX0xFVkVMX1BST0ZJTEVfTUlO X01DTEsgPSAweDIwLAo+Pj4+ID4gPiA+ICsgICAgIEFNRF9EUE1fRk9SQ0VEX0xFVkVMX1BST0ZJ TEVfUEVBSyA9IDB4NDAsCj4+Pj4gPiA+ID4gKyAgICAgQU1EX0RQTV9GT1JDRURfTEVWRUxfUFJP RklMRV9FWElUID0gMHg4MCwKPj4+PiA+ID4gPiAgfTsKPj4+PiA+ID4gPgo+Pj4+ID4gPiA+ICBl bnVtIGFtZF9wbV9zdGF0ZV90eXBlIHsKPj4+PiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2FtZC9wb3dlcnBsYXkvaHdtZ3IvY3pfaHdtZ3IuYwo+Pj4+ID4gPiBiL2RyaXZlcnMv Z3B1L2RybS9hbWQvcG93ZXJwbGF5L2h3bWdyL2N6X2h3bWdyLmMKPj4+PiA+ID4gPiBpbmRleCBk ZWM4ZGQ5Li42MGQyODBjIDEwMDY0NAo+Pj4+ID4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9h bWQvcG93ZXJwbGF5L2h3bWdyL2N6X2h3bWdyLmMKPj4+PiA+ID4gPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vYW1kL3Bvd2VycGxheS9od21nci9jel9od21nci5jCj4+Pj4gPiA+ID4gQEAgLTEyNTAs NyArMTI1MCw2IEBAIHN0YXRpYyBpbnQgY3pfZHBtX2ZvcmNlX2RwbV9sZXZlbChzdHJ1Y3QKPj4+ PiA+ID4gcHBfaHdtZ3IgKmh3bWdyLAo+Pj4+ID4gPiA+ICAgICAgICBjYXNlIEFNRF9EUE1fRk9S Q0VEX0xFVkVMX0FVVE86Cj4+Pj4gPiA+ID4gICAgICAgICAgICAgICAgcmV0ID0gY3pfcGhtX3Vu Zm9yY2VfZHBtX2xldmVscyhod21ncik7Cj4+Pj4gPiA+ID4gICAgICAgICAgICAgICAgYnJlYWs7 Cj4+Pj4gPiA+ID4gLSAgICAgY2FzZSBBTURfRFBNX0ZPUkNFRF9MRVZFTF9NQU5VQUw6Cj4+Pj4g PiA+ID4gICAgICAgIGNhc2UgQU1EX0RQTV9GT1JDRURfTEVWRUxfUFJPRklMRV9FWElUOgo+Pj4+ ID4gPiA+ICAgICAgICBkZWZhdWx0Ogo+Pj4+ID4gPiA+ICAgICAgICAgICAgICAgIGJyZWFrOwo+ Pj4+ID4gPiA+IEBAIC0xNTU4LDkgKzE1NTcsNiBAQCBzdGF0aWMgaW50IGN6X2dldF9kYWxfcG93 ZXJfbGV2ZWwoc3RydWN0Cj4+Pj4gPiA+IHBwX2h3bWdyICpod21nciwKPj4+PiA+ID4gPiAgc3Rh dGljIGludCBjel9mb3JjZV9jbG9ja19sZXZlbChzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyLAo+Pj4+ ID4gPiA+ICAgICAgICAgICAgICAgIGVudW0gcHBfY2xvY2tfdHlwZSB0eXBlLCB1aW50MzJfdCBt YXNrKSAgewo+Pj4+ID4gPiA+IC0gICAgIGlmIChod21nci0+ZHBtX2xldmVsICE9IEFNRF9EUE1f Rk9SQ0VEX0xFVkVMX01BTlVBTCkKPj4+PiA+ID4gPiAtICAgICAgICAgICAgIHJldHVybiAtRUlO VkFMOwo+Pj4+ID4gPiA+IC0KPj4+PiA+ID4gPiAgICAgICAgc3dpdGNoICh0eXBlKSB7Cj4+Pj4g PiA+ID4gICAgICAgIGNhc2UgUFBfU0NMSzoKPj4+PiA+ID4gPiAgICAgICAgICAgICAgICBzbXVt X3NlbmRfbXNnX3RvX3NtY193aXRoX3BhcmFtZXRlcihod21nciwKPj4+PiA+ID4gPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvaHdtZ3IvcnZfaHdtZ3IuYwo+Pj4+ ID4gPiBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2h3bWdyL3J2X2h3bWdyLmMKPj4+ PiA+ID4gPiBpbmRleCA0MDlhNTZiLi5lZGRjYmNkIDEwMDY0NAo+Pj4+ID4gPiA+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2h3bWdyL3J2X2h3bWdyLmMKPj4+PiA+ID4gPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9od21nci9ydl9od21nci5jCj4+Pj4g PiA+ID4gQEAgLTYwNSw3ICs2MDUsNiBAQCBzdGF0aWMgaW50IHJ2X2RwbV9mb3JjZV9kcG1fbGV2 ZWwoc3RydWN0Cj4+Pj4gPiA+IHBwX2h3bWdyICpod21nciwKPj4+PiA+ID4gPgo+Pj4+ID4gPiBQ UFNNQ19NU0dfU2V0U29mdE1heEZjbGtCeUZyZXEsCj4+Pj4gPiA+ID4KPj4+PiA+ID4gUkFWRU5f VU1EX1BTVEFURV9NSU5fRkNMSyk7Cj4+Pj4gPiA+ID4gICAgICAgICAgICAgICAgYnJlYWs7Cj4+ Pj4gPiA+ID4gLSAgICAgY2FzZSBBTURfRFBNX0ZPUkNFRF9MRVZFTF9NQU5VQUw6Cj4+Pj4gPiA+ ID4gICAgICAgIGNhc2UgQU1EX0RQTV9GT1JDRURfTEVWRUxfUFJPRklMRV9FWElUOgo+Pj4+ID4g PiA+ICAgICAgICBkZWZhdWx0Ogo+Pj4+ID4gPiA+ICAgICAgICAgICAgICAgIGJyZWFrOwo+Pj4+ ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9od21nci9z bXU3X2h3bWdyLmMKPj4+PiA+ID4gYi9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9od21n ci9zbXU3X2h3bWdyLmMKPj4+PiA+ID4gPiBpbmRleCAxM2RiNzVjLi5lM2E4Mzc0IDEwMDY0NAo+ Pj4+ID4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2h3bWdyL3NtdTdf aHdtZ3IuYwo+Pj4+ID4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2h3 bWdyL3NtdTdfaHdtZ3IuYwo+Pj4+ID4gPiA+IEBAIC0yNzk4LDcgKzI3OTgsNiBAQCBzdGF0aWMg aW50IHNtdTdfZm9yY2VfZHBtX2xldmVsKHN0cnVjdAo+Pj4+ID4gPiBwcF9od21nciAqaHdtZ3Is Cj4+Pj4gPiA+ID4gICAgICAgICAgICAgICAgc211N19mb3JjZV9jbG9ja19sZXZlbChod21nciwg UFBfTUNMSywKPj4+PiA+ID4gPiAxPDxtY2xrX21hc2spOwo+Pj4+ID4gPiA+ICAgICAgICAgICAg ICAgIHNtdTdfZm9yY2VfY2xvY2tfbGV2ZWwoaHdtZ3IsIFBQX1BDSUUsCj4+Pj4gPiA+ID4gMTw8 cGNpZV9tYXNrKTsKPj4+PiA+ID4gPiAgICAgICAgICAgICAgICBicmVhazsKPj4+PiA+ID4gPiAt ICAgICBjYXNlIEFNRF9EUE1fRk9SQ0VEX0xFVkVMX01BTlVBTDoKPj4+PiA+ID4gPiAgICAgICAg Y2FzZSBBTURfRFBNX0ZPUkNFRF9MRVZFTF9QUk9GSUxFX0VYSVQ6Cj4+Pj4gPiA+ID4gICAgICAg IGRlZmF1bHQ6Cj4+Pj4gPiA+ID4gICAgICAgICAgICAgICAgYnJlYWs7Cj4+Pj4gPiA+ID4gQEAg LTQzMTEsMTEgKzQzMTAsNiBAQCBzdGF0aWMgaW50IHNtdTdfZm9yY2VfY2xvY2tfbGV2ZWwoc3Ry dWN0Cj4+Pj4gPiA+IHBwX2h3bWdyICpod21nciwKPj4+PiA+ID4gPiAgewo+Pj4+ID4gPiA+ICAg ICAgICBzdHJ1Y3Qgc211N19od21nciAqZGF0YSA9IChzdHJ1Y3Qgc211N19od21ncgo+Pj4+ID4g KikoaHdtZ3ItPmJhY2tlbmQpOwo+Pj4+ID4gPiA+Cj4+Pj4gPiA+ID4gLSAgICAgaWYgKGh3bWdy LT5yZXF1ZXN0X2RwbV9sZXZlbCAmIChBTURfRFBNX0ZPUkNFRF9MRVZFTF9BVVRPIHwKPj4+PiA+ ID4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFNRF9EUE1fRk9SQ0VE X0xFVkVMX0xPVyB8Cj4+Pj4gPiA+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBBTURfRFBNX0ZPUkNFRF9MRVZFTF9ISUdIKSkKPj4+PiA+ID4gPiAtICAgICAgICAgICAg IHJldHVybiAtRUlOVkFMOwo+Pj4+ID4gPiA+IC0KPj4+PiA+ID4gPiAgICAgICAgc3dpdGNoICh0 eXBlKSB7Cj4+Pj4gPiA+ID4gICAgICAgIGNhc2UgUFBfU0NMSzoKPj4+PiA+ID4gPiAgICAgICAg ICAgICAgICBpZiAoIWRhdGEtPnNjbGtfZHBtX2tleV9kaXNhYmxlZCkgZGlmZiAtLWdpdAo+Pj4+ ID4gPiA+IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvaHdtZ3IvdmVnYTEwX2h3bWdy LmMKPj4+PiA+ID4gYi9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9od21nci92ZWdhMTBf aHdtZ3IuYwo+Pj4+ID4gPiA+IGluZGV4IDZiMjg4OTYuLjgyODY3N2UgMTAwNjQ0Cj4+Pj4gPiA+ ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvaHdtZ3IvdmVnYTEwX2h3bWdy LmMKPj4+PiA+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9od21nci92 ZWdhMTBfaHdtZ3IuYwo+Pj4+ID4gPiA+IEBAIC00MjQxLDcgKzQyNDEsNiBAQCBzdGF0aWMgaW50 Cj4+Pj4gPiA+ID4gdmVnYTEwX2RwbV9mb3JjZV9kcG1fbGV2ZWwoc3RydWN0Cj4+Pj4gPiA+IHBw X2h3bWdyICpod21nciwKPj4+PiA+ID4gPiAgICAgICAgICAgICAgICB2ZWdhMTBfZm9yY2VfY2xv Y2tfbGV2ZWwoaHdtZ3IsIFBQX1NDTEssCj4+Pj4gMTw8c2Nsa19tYXNrKTsKPj4+PiA+ID4gPiAg ICAgICAgICAgICAgICB2ZWdhMTBfZm9yY2VfY2xvY2tfbGV2ZWwoaHdtZ3IsIFBQX01DTEssCj4+ Pj4gMTw8bWNsa19tYXNrKTsKPj4+PiA+ID4gPiAgICAgICAgICAgICAgICBicmVhazsKPj4+PiA+ ID4gPiAtICAgICBjYXNlIEFNRF9EUE1fRk9SQ0VEX0xFVkVMX01BTlVBTDoKPj4+PiA+ID4gPiAg ICAgICAgY2FzZSBBTURfRFBNX0ZPUkNFRF9MRVZFTF9QUk9GSUxFX0VYSVQ6Cj4+Pj4gPiA+ID4g ICAgICAgIGRlZmF1bHQ6Cj4+Pj4gPiA+ID4gICAgICAgICAgICAgICAgYnJlYWs7Cj4+Pj4gPiA+ ID4gQEAgLTQ1MDAsMTEgKzQ0OTksNiBAQCBzdGF0aWMgaW50Cj4+Pj4gPiA+ID4gdmVnYTEwX2Zv cmNlX2Nsb2NrX2xldmVsKHN0cnVjdAo+Pj4+ID4gPiBwcF9od21nciAqaHdtZ3IsCj4+Pj4gPiA+ ID4gIHsKPj4+PiA+ID4gPiAgICAgICAgc3RydWN0IHZlZ2ExMF9od21nciAqZGF0YSA9IChzdHJ1 Y3QgdmVnYTEwX2h3bWdyCj4+Pj4gPiA+ICopKGh3bWdyLT5iYWNrZW5kKTsKPj4+PiA+ID4gPgo+ Pj4+ID4gPiA+IC0gICAgIGlmIChod21nci0+cmVxdWVzdF9kcG1fbGV2ZWwgJiAoQU1EX0RQTV9G T1JDRURfTEVWRUxfQVVUTyB8Cj4+Pj4gPiA+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgQU1EX0RQTV9GT1JDRURfTEVWRUxfTE9XIHwKPj4+PiA+ID4gPiAtICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBBTURfRFBNX0ZPUkNFRF9MRVZFTF9ISUdIKSkKPj4+PiA+ID4gPiAtICAg ICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+Pj4+ID4gPiA+IC0KPj4+PiA+ID4gPiAgICAgICAg c3dpdGNoICh0eXBlKSB7Cj4+Pj4gPiA+ID4gICAgICAgIGNhc2UgUFBfU0NMSzoKPj4+PiA+ID4g PiAgICAgICAgICAgICAgICBkYXRhLT5zbWNfc3RhdGVfdGFibGUuZ2Z4X2Jvb3RfbGV2ZWwgPSBt YXNrID8KPj4+PiA+ID4gKGZmcyhtYXNrKSAtIDEpIDogMDsKPj4+PiA+ID4KPj4+PiA+Cj4+Pj4K Pj4+Cj4+Pgo+Pj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KPj4+IGFtZC1nZnggbWFpbGluZyBsaXN0Cj4+PiBhbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwo+Pj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9h bWQtZ2Z4Cj4+PgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwphbWQtZ2Z4IG1haWxpbmcgbGlzdAphbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRw czovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2FtZC1nZngK