From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Rafael J. Wysocki" Subject: Re: [DMC_BUGFIX_SKL_V2 1/5] drm/i915/skl: Added a check for the hardware status of csr fw before loading. Date: Wed, 23 Sep 2015 22:49:36 +0200 Message-ID: <56031060.9040708@intel.com> References: <1440533169-32265-1-git-send-email-animesh.manna@intel.com> <1440533169-32265-2-git-send-email-animesh.manna@intel.com> <20150826131012.GR1367@phenom.ffwll.local> <55DDC8EE.1060107@intel.com> <20150902085409.GH1367@phenom.ffwll.local> <55F09686.7080308@intel.com> <20150910144527.GY2767@phenom.ffwll.local> <55F1D4B0.7050104@intel.com> <20150914074612.GE3383@phenom.ffwll.local> <55F9C1A9.7000106@intel.com> <20150923075738.GF3383@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTP id 67D926EC2F for ; Wed, 23 Sep 2015 13:49:39 -0700 (PDT) In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Daniel Vetter Cc: Daniel Vetter , intel-gfx List-Id: intel-gfx@lists.freedesktop.org T24gOS8yMy8yMDE1IDc6MTcgUE0sIERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4gYWNwaV90YXJnZXRf c3lzdGVtX3N0YXRlKCkgc2VlbXMgdG8gYmUgYWxtb3N0IHRoZSB0aGluZyB3ZSdyZSBsb29raW5n Cj4gZm9yLCBleGNlcHQgdGhhdCBpdCdzIG9ubHkgdmFsaWQgaW4gdGhlIHN1c3BlbmQgY2FsbGJh Y2tzIHNpbmNlIGl0Cj4gZ2V0cyByZXNldCB0byBBQ1BJX1NUQVRFX1MwIHdoZW4gcmVzdW1pbmcu IFNvIHByb2JhYmx5IHdlIHdhbnQKPiBzb21ldGhpbmcgZWxzZSAuLi4KClJpZ2h0LgoKVGhlIGlk ZWEgaXMgdG8gYWRkIGEgd2F5IGZvciBkcml2ZXJzIHRvIGNoZWNrIGlmCihhKSBzdXNwZW5kIGlz IGdvaW5nIHRvIGVudGVyIHRoZSBCSU9TCihiKSByZXN1bWUgaGFzIGJlZW4gdHJpZ2dlcmVkIGJ5 IHRoZSBCSU9TCmFuZCB0aGF0J3MgcmVhbGx5IHdoYXQgZHJpdmVycyBuZWVkIHRvIGtub3cuCgpG b3Igc3VzcGVuZC10by1pZGxlIHRob3NlIHR3byB3aWxsIHJldHVybiBmYWxzZSBhbmQgZm9yIFMz IHRoZXknbGwgCnJldHVybiB0cnVlLgoKV291bGQgdGhhdCBoZWxwPwoKVGhhbmtzLApSYWZhZWwK Cgo+IE9uIFdlZCwgU2VwIDIzLCAyMDE1IGF0IDY6MjggUE0sIERhbmllbCBWZXR0ZXIgPGRhbmll bEBmZndsbC5jaD4gd3JvdGU6Cj4+IEFjdHVhbGx5IGFkZCBSYWZhZWwgdGhpcyB0aW1lIGFyb3Vu ZCAuLi4KPj4gLURhbmllbAo+Pgo+PiBPbiBXZWQsIFNlcCAyMywgMjAxNSBhdCA2OjI3IFBNLCBE YW5pZWwgVmV0dGVyIDxkYW5pZWxAZmZ3bGwuY2g+IHdyb3RlOgo+Pj4gT24gV2VkLCBTZXAgMjMs IDIwMTUgYXQgOTo1NyBBTSwgRGFuaWVsIFZldHRlciA8ZGFuaWVsQGZmd2xsLmNoPiB3cm90ZToK Pj4+PiBPbiBUaHUsIFNlcCAxNywgMjAxNSBhdCAxMjo1MzoyMUFNICswNTMwLCBBbmltZXNoIE1h bm5hIHdyb3RlOgo+Pj4+Pgo+Pj4+PiBPbiA5LzE0LzIwMTUgMToxNiBQTSwgRGFuaWVsIFZldHRl ciB3cm90ZToKPj4+Pj4+IE9uIEZyaSwgU2VwIDExLCAyMDE1IGF0IDEyOjM2OjI0QU0gKzA1MzAs IEFuaW1lc2ggTWFubmEgd3JvdGU6Cj4+Pj4+Pj4gT24gOS8xMC8yMDE1IDg6MTUgUE0sIERhbmll bCBWZXR0ZXIgd3JvdGU6Cj4+Pj4+Pj4+IE9uIFRodSwgU2VwIDEwLCAyMDE1IGF0IDAxOjU4OjU0 QU0gKzA1MzAsIEFuaW1lc2ggTWFubmEgd3JvdGU6Cj4+Pj4+Pj4+PiBPbiA5LzIvMjAxNSAyOjI0 IFBNLCBEYW5pZWwgVmV0dGVyIHdyb3RlOgo+Pj4+Pj4+Pj4+IE9uIFdlZCwgQXVnIDI2LCAyMDE1 IGF0IDA3OjQwOjU0UE0gKzA1MzAsIEFuaW1lc2ggTWFubmEgd3JvdGU6Cj4+Pj4+Pj4+Pj4+IE9u IDgvMjYvMjAxNSA2OjQwIFBNLCBEYW5pZWwgVmV0dGVyIHdyb3RlOgo+Pj4+Pj4+Pj4+Pj4gT24g V2VkLCBBdWcgMjYsIDIwMTUgYXQgMDE6MzY6MDVBTSArMDUzMCwgQW5pbWVzaCBNYW5uYSB3cm90 ZToKPj4+Pj4+Pj4+Pj4+PiBEbWMgd2lsbCByZXN0b3JlIHRoZSBjc3IgcHJvZ3JhbSBleGNlcHQg REM5LCBjb2xkIGJvb3QsCj4+Pj4+Pj4+Pj4+Pj4gd2FybSByZXNldCwgUENJIGZ1bmN0aW9uIGxl dmVsIHJlc2V0LCBhbmQgaGliZXJuYXRlL3N1c3BlbmQuCj4+Pj4+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+ Pj4+PiBpbnRlbF9jc3JfbG9hZF9wcm9ncmFtKCkgZnVuY3Rpb24gaXMgdXNlZCB0byBsb2FkIHRo ZSBmaXJtd2FyZQo+Pj4+Pj4+Pj4+Pj4+IGRhdGEgZnJvbSBrZXJuZWwgbWVtb3J5IHRvIGNzciBh ZGRyZXNzIHNwYWNlLgo+Pj4+Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+Pj4+Pj4gQWxsIHZhbHVlcyBvZiBj c3IgYWRkcmVzcyBzcGFjZSB3aWxsIGJlIHplcm8gaWYgaXQgZ290IHJlc2V0IGFuZAo+Pj4+Pj4+ Pj4+Pj4+IHRoZSBmaXJzdCBieXRlIG9mIGNzciBwcm9ncmFtIGlzIGFsd2F5cyBhIG5vbi16ZXJv IGlmIGZpcm13YXJlCj4+Pj4+Pj4+Pj4+Pj4gaXMgbG9hZGVkIHN1Y2Nlc3NmdWx5LiBCYXNlZCBv biBoYXJkd2FyZSBzdGF0dXMgd2lsbCBsb2FkIHRoZQo+Pj4+Pj4+Pj4+Pj4+IGZpcm13YXJlLgo+ Pj4+Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+Pj4+Pj4gV2l0aG91dCB0aGlzIGNvbmRpdGlvbiBjaGVjayBp ZiB3ZSBvdmVyd3JpdGUgdGhlIGZpcm13YXJlIGRhdGEgdGhlCj4+Pj4+Pj4+Pj4+Pj4gY291bnRl cnMgZXhwb3NlZCBmb3IgZGM1L2RjNiAoaGVscCBmb3IgZGVidWdnaW5nKSB3aWxsIGJlIG51bGxp ZmllZC4KPj4+Pj4+Pj4+Pj4gQmFjYXVzZSBvZiB0aGUgYWJvdmUgcmVhc29uIG1lbnRpb25lZCBq dXN0IGFib3ZlIHdlIG5lZWQgdG8gYmxvY2sgZmlybXdhcmUgbG9hZGluZyBhZ2Fpbi4KPj4+Pj4+ Pj4+Pj4gU28gb25seSBXQVJOX09OIHdpbGwgbm90IGhlbHAuCj4+Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+ Pj4+Cj4+Pj4+Pj4+Pj4+Pj4gdjE6IEluaXRpYWwgdmVyc2lvbi4KPj4+Pj4+Pj4+Pj4+Pgo+Pj4+ Pj4+Pj4+Pj4+IHYyOiBCYXNlZCBvbiByZXZpZXcgY29tbWVudHMgZnJvbSBEYW5pZWwsCj4+Pj4+ Pj4+Pj4+Pj4gLSBBZGRlZCBhIGNoZWNrIHRvIGtub3cgaGFyZHdhcmUgc3RhdHVzIGFuZCBsb2Fk IHRoZSBmaXJtd2FyZSBpZiBub3QgbG9hZGVkLgo+Pj4+Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+Pj4+Pj4g Q2M6IERhbmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJAaW50ZWwuY29tPgo+Pj4+Pj4+Pj4+Pj4+ IENjOiBEYW1pZW4gTGVzcGlhdSA8ZGFtaWVuLmxlc3BpYXVAaW50ZWwuY29tPgo+Pj4+Pj4+Pj4+ Pj4+IENjOiBJbXJlIERlYWsgPGltcmUuZGVha0BpbnRlbC5jb20+Cj4+Pj4+Pj4+Pj4+Pj4gQ2M6 IFN1bmlsIEthbWF0aCA8c3VuaWwua2FtYXRoQGludGVsLmNvbT4KPj4+Pj4+Pj4+Pj4+PiBTaWdu ZWQtb2ZmLWJ5OiBBbmltZXNoIE1hbm5hIDxhbmltZXNoLm1hbm5hQGludGVsLmNvbT4KPj4+Pj4+ Pj4+Pj4+PiBTaWduZWQtb2ZmLWJ5OiBWYXRoc2FsYSBOYWdhcmFqdSA8dmF0aHNhbGEubmFnYXJh anVAaW50ZWwuY29tPgo+Pj4+Pj4+Pj4+Pj4+IC0tLQo+Pj4+Pj4+Pj4+Pj4+ICAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfY3NyLmMgfCA5ICsrKysrKysrKwo+Pj4+Pj4+Pj4+Pj4+ICAgMSBm aWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKQo+Pj4+Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+Pj4+Pj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Nzci5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfY3NyLmMKPj4+Pj4+Pj4+Pj4+PiBpbmRleCBiYTFhZTAzLi42ODJj YzI2IDEwMDY0NAo+Pj4+Pj4+Pj4+Pj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Nzci5jCj4+Pj4+Pj4+Pj4+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY3Ny LmMKPj4+Pj4+Pj4+Pj4+PiBAQCAtMjUyLDYgKzI1MiwxNSBAQCB2b2lkIGludGVsX2Nzcl9sb2Fk X3Byb2dyYW0oc3RydWN0IGRybV9kZXZpY2UgKmRldikKPj4+Pj4+Pj4+Pj4+PiAgICAgICAgICAg ICAgIHJldHVybjsKPj4+Pj4+Pj4+Pj4+PiAgICAgICB9Cj4+Pj4+Pj4+Pj4+Pj4gKyAgICAgLyoK Pj4+Pj4+Pj4+Pj4+PiArICAgICAgKiBEbWMgd2lsbCByZXN0b3JlIHRoZSBjc3IgdGhlIHByb2dy YW0gZXhjZXB0IERDOSwgY29sZCBib290LAo+Pj4+Pj4+Pj4+Pj4+ICsgICAgICAqIHdhcm0gcmVz ZXQsIFBDSSBmdW5jdGlvbiBsZXZlbCByZXNldCwgYW5kIGhpYmVybmF0ZS9zdXNwZW5kLgo+Pj4+ Pj4+Pj4+Pj4+ICsgICAgICAqIFRoaXMgY29uZGl0aW9uIHdpbGwgaGVscCB0byBjaGVjayBpZiBj c3IgYWRkcmVzcyBzcGFjZSBpcyByZXNldC8KPj4+Pj4+Pj4+Pj4+PiArICAgICAgKiBub3QgbG9h ZGVkLgo+Pj4+Pj4+Pj4+Pj4+ICsgICAgICAqLwo+Pj4+Pj4+Pj4+Pj4gQXRtIHdlIGNhbGwgdGhp cyBmcm9tIGRyaXZlciBsb2FkIGFuZCByZXN1bWUsIHdoaWNoIGRvZXNuIHNlZW0gdG8gY292ZXIK Pj4+Pj4+Pj4+Pj4+IGFsbCB0aGUgY2FzZXMgeW91IG1lbnRpb24gaW4gdGhlIGNvbW1lbnQuIFNo b3VsZCB0aGlzIGJlIGEgV0FSTl9PTgo+Pj4+Pj4+Pj4+Pj4gaW5zdGVhZD8gT3IgZG8gd2UgaGF2 ZSB0cm91YmxlcyBpbiBvdXIgaW5pdCBzZXF1ZW5jZSB3aGVyZSB3ZSBsb2FkIHRvbwo+Pj4+Pj4+ Pj4+Pj4gbWFueSB0aW1lcz8KPj4+Pj4+Pj4+Pj4gWWVzLCB0aGUgYWJvdmUgc3RhdGVtZW50IHRh a2VuIGZyb20gYnNwZWMgdG8gZGVzY3JpYmUgYWJvdXQgdGhlIHNwZWNpYWwgY2FzZXMgZG1jIHdp bGwgbm90IHJlc3RvcmUgdGhlIGZpcm13YXJlLgo+Pj4+Pj4+Pj4+PiBBZ3JlZSwgSW4gb3VyIGNh c2VzIGNvbGQgYm9vdCBhbmQgaGliZXJuYXRlL3N1c3BlbmQgbWFpbmx5IHdlIG5lZWQgdG8gbG9h ZCB0aGUgZmlybXdhcmUgYWdhaW4sIHNvIGluIG15Cj4+Pj4+Pj4+Pj4+IHNlY29uZCBzZW50ZW5j ZSBJIHdhbnRlZCB0byBjb21tZW50IG1haW5seSByZWdhcmRpbmcgdGhpcyBjb25kaXRpb24gY2hl Y2sgYWRkZWQgZm9yIHN1c3BlbmQtaGliZXJuYXRlKHJlc2V0KQo+Pj4+Pj4+Pj4+PiBhbmQgY29s ZCBib290KG5vdCBsb2FkZWQpLgo+Pj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4+PiBBbnl3YXlzIHRoZSBz YW1lIGFwaSBsYXRlciBjYW4gYmUgdXNlZCB0byBsb2FkIHRoZSBmaXJtd2FyZSBmcm9tIGFueXdo ZXJlLCBzbyBteSBpbnRlbnRpb24gdG8gY2hlY2sgZmlybXdhcmUgbG9hZGVkIG9yIG5vdC4KPj4+ Pj4+Pj4+Pj4gSWYgYWxyZWFkeSBsb2FkZWQgdGhlbiBub3QgdG8gb3ZlcndyaXRlIHRoZSBjc3Ig YWRkcmVzcyBzcGFjZSB0byBtYWludGFpbiB0aGUgZGM1L2RjNiBjb3VudGVyIHZhbHVlLgo+Pj4+ Pj4+Pj4+Pgo+Pj4+Pj4+Pj4+PiBDYW4gdGhlIGJlbG93IGNvbW1lbnQgbW9yZSBjbGVhciB0byB5 b3UuCj4+Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+Pj4+ICAgICAgICAgLyoKPj4+Pj4+Pj4+Pj4gICAgICAg ICAgKiBEbWMgd2lsbCByZXN0b3JlIHRoZSBjc3IgdGhlIHByb2dyYW0gZXhjZXB0IERDOSwgY29s ZCBib290LAo+Pj4+Pj4+Pj4+PiAgICAgICAgICAqIHdhcm0gcmVzZXQsIFBDSSBmdW5jdGlvbiBs ZXZlbCByZXNldCwgYW5kIGhpYmVybmF0ZS9zdXNwZW5kLgo+Pj4+Pj4+Pj4+PiAgICAgICAgICAq IElmIGZpcm13YXJlIGlzIHJlc3RvcmVkIGJ5IGRtYyB0aGVuIG5vIG5lZWQgdG8gbG9hZCBhZ2Fp biB3aGljaAo+Pj4+Pj4+Pj4+PiAgICAgICAgICAqIHdpbGwga2VlcCB0aGUgZGM1L2RjNiBjb3Vu dGVyIGV4cG9zZWQgYnkgZmlybXdhcmUuCj4+Pj4+Pj4+Pj4+ICAgICAgICAgICovCj4+Pj4+Pj4+ Pj4+Cj4+Pj4+Pj4+Pj4+IE5vIGlzc3VlIGluIGluaXQgc2VxdWVuY2UuCj4+Pj4+Pj4+Pj4gVGhh dCBzZWVtcyB0byBzdGlsbCBjb3ZlciBhbGwgdGhlIGNhbGxlcnMgb2YgdGhlIGZ1bmN0aW9uIGFm YWljcyAtIHdlIGRvCj4+Pj4+Pj4+Pj4gcGNpIHJlc2V0cyBvdmVyIHN1c3BlbmQgcmVzdW1lIHVu Y29uZGl0aW9uYWxseS4gU28gSSBzdGlsbCBkb24ndAo+Pj4+Pj4+Pj4+IHVuZGVyc3RhbmQgd2hl cmUgZXhhY3RseSB3ZSB0cnkgdG8gbG9hZCB0aGUgZG1jIGZpcm13YXJlIGluIGk5MTUua28gd2hl bgo+Pj4+Pj4+Pj4+IGl0J3MgYWxyZWFkeSBsb2FkZWQuCj4+Pj4+Pj4+PiBEdXJpbmcgcmVzdW1l IGludGVsX2Nzcl9sb2FkX3Byb2dyYW0oKSB3aWxsIGJlIGNhbGxlZCBmcm9tCj4+Pj4+Pj4+PiBp bnRlbF9ydW50aW1lX3Jlc3VtZSgpLgo+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+IGludGVsX3J1bnRpbWVf cmVzdW1lKCktPiBza2xfcmVzdW1lX3ByZXBhcmUoKS0+IGludGVsX2Nzcl9sb2FkX3Byb2dyYW0o KQo+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+IER1cmluZyBQYzEwIGVudHJ5IHRlc3RpbmcgSSBjYW4gc2Vl IGRtYyBpcyByZXN0b3JpbmcgYmFjayB0aGUgZmlybXdhcmUgYWx3YXlzLAo+Pj4+Pj4+Pj4gYnV0 IGFzIHlvdSBtZW50aW9uZWQgcGNpLXJlc2V0IGNhbiBoYXBwZW4gdW5jb25kaXRpb25hbGx5LCBi dXQgc3RpbGwgdGhlbgo+Pj4+Pj4+Pj4gYWxzbyBkdXJpbmcgcmVzdW1lIGludGVsX3J1bnRpbWVf cmVzdW1lKCkgd2lsbCBiZSBjYWxsZWQgYW5kIGJhc2VkIG9uCj4+Pj4+Pj4+PiByZWdpc3RlciBy ZWFkIG9mIGNzci1iYXNlLWFkZHJlc3MgZmlybXdhcmUgbG9hZGluZyB3aWxsIGhhcHBlbi4KPj4+ Pj4+Pj4gQnV0IGluIHlvdXIgY29tbWVudCB5b3UncmUgc2F5aW5nIGl0IHdvbid0IGdldCByZXN0 b3JlZCBpbiBjYXNlIG9mIGRjOSBhbmQKPj4+Pj4+Pj4gc3VzcGVuZC4gU28gdGhhdCBzZWVtcyB0 byBtaXNtYXRjaCB3aGF0IHlvdSdyZSBzYXlpbmcgaGVyZSAoYW5kIHdoYXQgdGhlCj4+Pj4+Pj4+ IGNvbW1pdCBtZXNzYWdlIHNheXMpIGFuZCB3aGF0IHRoZSBjb2RlIGRvZXMuIEFuZCB0aGlzIGZ1 bmN0aW9uIGhlcmUgaXMKPj4+Pj4+Pj4gY2FsbGVkIGZvciByZXN1bWUgYWZ0ZXIgc3VzcGVuZC9o aWJlcm5hdGUgb25seS4KPj4+Pj4+PiBwYzEwIGVudHJ5IGV4cGxhbmF0aW9uIEkgdG9sZCBpcyBm b3Igc2t5bGFrZS4gZGM5IGluIHNreWxha2UgaXMgbm90IHBvc3NpYmxlLgo+Pj4+Pj4+IEkgdGhp bmsgeW91IGFyZSBjb25mdXNpbmcgYmV0d2VlbiBkYzYgYW5kIGRjOS4gUGMxMCBjYW4gYmUgYWNo aWV2ZWQgYnkKPj4+Pj4+PiBlbnRlcmluZyBpbnRvIGRjNiAobm90IGRjOSkgZm9yIHNreWxha2Uu IGRjOSBpcyB0aGUgbG93ZXN0IHBvc3NpYmxlIHN0YXRlCj4+Pj4+Pj4gZm9yIGJyb3h0b24gd2hp Y2ggaXMgbm90IHByZXNlbnQgZm9yIHNreWxha2UuCj4+Pj4+PiBJIGhhdmUgbm8gaWRlYSBhdCBh bGwgYWJvdXQgZGlmZmVyZW50IHBjIGxldmVscyBvbiBza2wuIFdoYXQgSSdtIHRhbGtpbmcKPj4+ Pj4+IGFib3V0IGlzIHN5c3RlbSBzdXNwZW5kL3Jlc3VtZSBhbmQgZHJpdmVyIGxvYWQsIHdoaWNo IGFyZSB0aGUgcGxhY2VzIHRoaXMKPj4+Pj4+IGZ1bmN0aW9uIGdldHMgY2FsbGVkLiBBdCBsZWFz dCBhZmFpY3MuCj4+Pj4+Pgo+Pj4+Pj4+IEhlcmUgaW50ZWxfY3NyX2xvYWRfcHJvZ3JhbSgpIHdp bGwgYmUgdXNlZCBmb3IgYm90aCBza3lsYWtlIGFuZCBicm94dG9uLCBhbmQgaW5zdHJ1Y3Rpb24K Pj4+Pj4+PiBleGVjdXRpb24gZmxvdyB3aWxsIGJlIGRpZmZlcmVudCBpbiBjYXNlIG9mIHN1c3Bl bmQvcmVzdW1lIHdoaWNoIEkgdGhpbmsgaXMgY29uZnVzaW5nCj4+Pj4+Pj4geW91Lgo+Pj4+Pj4g VGhhdCBzZWVtcyBsaWtlIHJlYWxseSBpbXBvcnRhbnQgaW5mb3JtYXRpb24uIFdoYXQncyBkaWZm ZXJlbnQgb24gYnh0Pwo+Pj4+Pj4gVGhlc2UgYXJlIHRoZSBraW5kIG9mIGRldGFpbHMgeW91IHNo b3VsZCBleHBsYWluIGluIHRoZSBjb21taXQgbWVzc2FnZSAuLi4KPj4+Pj4+Cj4+Pj4+Pj4gSSBh bSByZWFkeSBleHBsYWluIHlvdSBpbiBkZXRhaWwuIEl0IHdpbGwgYmUgZ29vZCBpZiB3ZSBkaXNj dXNzIHNwZWNpZmljIHVzZS1jYXNlIHNjZW5hcmlvCj4+Pj4+Pj4gYW5kIGl0eiBzb2Z0d2FyZSBk ZXNpZ24gZm9yIHNwZWNpZmljIHBsYXRmb3JtLiBBbm90aGVyIHBvaW50IC0gYXMgZG1jIHJlbGF0 ZWQgY29kZSBmb3IKPj4+Pj4+PiBicm94dG9uIGlzIG5vdCBtZXJnZWQgYmV0dGVyIGZpcnN0IHdl IGNsb3NlIGRlc2lnbiBmb3Igc2t5bGFrZS4gTm93LCBJIGhhdmUgYWRkZWQgZGM5Cj4+Pj4+Pj4g ZGVzY3JpcHRpb24gaW4gY29tbWVudCB0aGlua2luZyBvZiBmdXR1cmUuIElmIHlvdSB3YW50IEkg Y2FuIHJlbW92ZSBmb3Igbm93IGFuZCBsYXRlcgo+Pj4+Pj4+IGNhbiBhZGQgaW4gYnh0IHBhdGNo IHNlcmllcyBmb3IgZW5hYmxpbmcgZG1jLiBXaWxsIHdhaXQgZm9yIHlvdXIgcmVwbHkuCj4+Pj4+ PiBUaGlzIHF1ZXN0aW9uIGhlcmUgaXNuJ3QgYWJvdXQgdGhlIG92ZXJhbGwgZGVzaWduIGFuZCBo b3cgdG8gaGFuZGxlIHBvd2VyCj4+Pj4+PiB3ZWxscyBpbiBza2wvYnh0LiBUaGF0J3MgYSBzZXBh cmF0ZSBkaXNjdXNzaW9uIGFuZCB0cmFja2VkIHNvbWV3aGVyZSBlbHNlLgo+Pj4+Pj4gSSdtIHJl YWxseSBqdXN0IGNvbmZ1c2VkIGFib3V0IHdoZW4gZXhhY3RseSB3ZSBuZWVkIHRvIHJlbG9hZCB0 byBmaXJtd2FyZSwKPj4+Pj4+IGFuZCB3aHkgd2UgbmVlZCBhIHJ1bnRpbWUgY2hlY2sgZm9yIHRo YXQuIE5vcm1hbGx5IHdlIHNob3VsZCBrbm93IHdoZW4gdG8KPj4+Pj4+IHJlbG9hZCB0aGUgZmly bXdhcmUgYW5kIGp1c3QgZWl0aGVyIHJlbG9hZCBvciBub3QsIHdpdGhvdXQgY2hlY2tpbmcgaHcK Pj4+Pj4+IHN0YXRlLiBBbmQgSSBkb24ndCBsaWtlIGNoZWNraW5nIGZvciBodyBzdGF0ZSBzaW5j ZSBhdCBsZWFzdCBpbiB0aGUgcGFzdAo+Pj4+Pj4gdGhhdCBraW5kIG9mIGNvZGUgZW5kZWQgdXAg YmVpbmcgZnJhZ2lsZSAtIGl0J3MgYW4gaWxsdXNpb24gdGhhdCBpdCBkb2VzCj4+Pj4+PiB0aGUg cmlnaHQgdGhpbmcgbm8gbWF0dGVyIHdoYXQsIHNpbmNlIG9mdGVuIHRoZXJlJ3Mgb3RoZXIgdHJp Y2t5IG9yZGVyaW5nCj4+Pj4+PiBjb25zdHJhaW50cy4gQW5kIGlmIHlvdSBoYXZlIGF1dG9tYXRp YyBkdWN0LXRhcGUgbGlrZSB0aGVuIG5vIG9uZSB3aWxsCj4+Pj4+PiBldmVyIHNwb3QgdGhvc2Ug b3RoZXIsIGhhcmRlciB0byBzcG90IGlzc3VlcywgdW50aWwgYW4gZXhwZW5zaXZlIGN1c3RvbWVy Cj4+Pj4+PiBlc2NhbGF0aW9uIGhhcHBlbnMuCj4+Pj4+Pgo+Pj4+Pj4gU28gd2hhdCBJIHdhbnQg dG8ga25vdyBoZXJlIGlzOgo+Pj4+Pj4gLSBXaGVuIGV4YWN0bHkgZG8gd2UgbmVlZCB0byByZWxv YWQgZG1jIGZpcm13YXJlLgo+Pj4+PiBJbiBza2wsIGR1cmluZyBkcml2ZXIgbG9hZCBmaXJzdCB0 aW1lIHdlIGxvYWQgdGhlIGZpcm13YXJlLCBkdXJpbmcgbm9ybWFsCj4+Pj4+IHN1c3BlbmQtcmVz dW1lIChkYzYgZW50cnkvZXhpdCkKPj4+Pj4gbm8gbmVlZCB0byByZWxvYWQgdGhlIGZpcm13YXJl IGFnYWluIGFzIGRtYyB3aWxsIHRha2UgY2FyZSBvZiBpdC4gQnV0IGR1cmluZwo+Pj4+PiBzdXNw ZW5kL2hpYmVybmF0aW9uCj4+Pj4+IGRtYyB3aWxsIG5vdCByZXN0b3JlIHRoZSBmaXJtd2FyZS4g SW4gdGhhdCBjYXNlIGRyaXZlciBuZWVkIHRvIHJlbG9hZCBpdAo+Pj4+PiBhZ2Fpbi4gSSBkbyBu b3Qga25vdwo+Pj4+PiBob3cgdG8gZGlmZmVyZW50aWF0ZSBwbS1zdXNwZW5kIGFuZCBzdXNwZW5k LWhpYmVybmF0aW9uIGFuZCB0aG91Z2h0IGJvdGggdGhlCj4+Pj4+IGNhc2VzCj4+Pj4+IGludGVs X3J1bnRpbWVfcmVzdW1lKCkgd2lsbCBiZSBjYWxsZWQgd2hlcmUgd2UgY2FuIGNoZWNrIHRoZSBo L3cgc3RhdGUgYW5kCj4+Pj4+IHJlbG9hZCB0aGUKPj4+Pj4gZmlybXdhcmUgaWYgZG1jIGlzIG5v dCByZXN0b3JlZC4KPj4+Pj4KPj4+Pj4gSW4gYnh0LCBkdXJpbmcgZHJpdmVyIGxvYWQgZmlyc3Qg dGltZSB3ZSBsb2FkIHRoZSBmaXJtd2FyZSwgZHVyaW5nIG5vcm1hbAo+Pj4+PiBzdXNwZW5kLXJl c3VtZQo+Pj4+PiBkaXNwbGF5IGVuZ2luZSB3aWxsIGVudGVyIGludG8gZGM5IGFuZCBkbWMgd2ls bCBub3QgcmVzdG9yZSB0aGUgZmlybXdhcmUuIFNvCj4+Pj4+IGV2ZXJ5Cj4+Pj4+IHN1c3BlbmQt cmVzdW1lIHdlIG5lZWQgdG8gcmVsb2FkIHRoZSBmaXJtd2FyZS4KPj4+Pj4+IC0gV2hhdCBleGFj dGx5IGlzIHRoZSByZWFzb24gd2h5IHdlIGNhbid0IG1ha2UgdGhhdCBkZWNpc2lvbiBzdGF0aWNh bGx5IGluCj4+Pj4+PiAgICB0aGUgY29kZSAoYnkgY2FsbGluZyBjc3JfbG9hZCBhdCB0aGUgcmln aHQgc3BvdHMpLgo+Pj4+PiBBcyBJIG1lbnRpb25lZCBiZWZvcmUgaW4gY2FzZSBvZiBza3lsYWtl IGNhbiB3ZSBkaWZmZXJlbnRpYXRlIGJldHdlZW4KPj4+Pj4gInJlc3VtZSBmcm9tIHBtLXN1c3Bl bmQiIHdpdGggInJlc3VtZSBmcm9tIHN1c3BlbmQtaGliZXJuYXRpb24iIGluc2lkZQo+Pj4+PiBk cml2ZXI/Cj4+Pj4+Cj4+Pj4+IEluIGNhc2Ugb2YgYnJveHRvbiwgZXZlcnkgdGltZSB3ZSBuZWVk IHRvIHJlbG9hZCwgc28gd2UgY2FuIGRlY2lkZQo+Pj4+PiBzdGF0aWNhbGx5Lgo+Pj4+IE9mIGNv dXJzZSB3ZSBjYW4gZGlmZmVyZW50aWF0ZSBiZXR3ZWVuIGFsbCB0aGUgZGlmZmVyZW50IHJlc3Vt ZSBwYXRocywgYW5kCj4+Pj4gd2UgYWxzbyBoYXZlIGEgcGVyLXBsYXRmb3JtIHNwbGl0IHRvIHRh a2UgY2FyZSBvZiBieHQgdnMuIHNrbC4gQW5kIHRoZXJlCj4+Pj4gYXJlIGFjdHVhbGx5IDMgZGlm ZmVyZW50IHJlc3VtZSBwYXRoczoKPj4+Pgo+Pj4+IC0gcnVudGltZSBQTSByZXN1bWUuIFRoaXMg Y2FsbHMgdGhlIHJ1bnRpbWVfcmVzdW1lIGhvb2suIEl0IHNvdW5kcyBsaWtlIG9uCj4+Pj4gICAg c2tsIHdlIHNob3VsZCBfbm90XyBsb2FkIHRoZSBjc3IgZmlybXdhcmUsIGJ1dCBvbiBieHQgd2Ug c2hvdWxkIGxvYWQgaXQuCj4+Pj4gICAgVGhpcyBjYW4gYmUgZml4ZWQgYnkgcmVtb3ZpbmcgdGhl IGludGVsX2Nzcl9sb2FkX3Byb2dyYW0gY2FsbCBmcm9tCj4+Pj4gICAgc2tsX3Jlc3VtZV9wcmVw YXJlLgo+Pj4+IC0gcmVzdW1lIGZyb20gaGliZXJuYXRlLXRvLWRpc2sgKGkuZS4gc3lzdGVtIGNv bXBsZXRlbHkgb2ZmLCBzdGF0ZSBzdG9yZWQKPj4+PiAgICBvbiB0aGUgc3dhcCBwYXJ0aXRpb24p IGlzIGRvbmUgYnkgY2FsbGluZyB0aGUgdGhhdyBjYWxsYmFja3MuCj4+Pj4gLSByZXN1bWUgZnJv bSBzdXNwZW5kLXRvLW1lbSAoaS5lLiBzeXN0ZW0gaW4gbG93LXBvd2VyIHdpdGggb25seSBtZW1v cnkKPj4+PiAgICBpbiBzZWxmLXJlZnJlc2gsIGFsbCBzdGF0ZSBzdG9yZWQgaW4gbWVtb3J5KSBp cyBkb25lIGJ5IGNhbGxpbmcgdGhlCj4+Pj4gICAgcmVzdW1lIGNhbGxiYWNrcy4KPj4+Pgo+Pj4+ IEZvciBpOTE1IHdlIHVzZSB1bmlmaWVkIGhhbmRsZXJzIGluIG91ciBkZXZfcG1fb3BzIGZvciBi b3RoIHRoYXcgYW5kCj4+Pj4gcmVzdW1lLCBidXQgaXQgc291bmRzIGxpa2UgdGhhdCB3b24ndCBi ZSBhIHByb2JsZW0gZm9yIHNrbC9ieHQgc2luY2Ugd2UKPj4+PiBuZWVkIHRvIHJlbG9hZCB0aGUg Y3NyIGZpcm13YXJlIGluIGFsbCBjYXNlcy4gQWx0aG91Z2ggSSdtIG5vdCBwZXJmZWN0bHkKPj4+ PiBzdXJlIHNpbmNlIHlvdSBkb24ndCBleHBsYWluIHdoYXQga2luZCBvZiByZXN1bWUgeW91IG1l YW4gZXhhY3RseSAoc2luY2UKPj4+PiB5b3UgZG9uJ3QgdXNlIHRoZSBsaW51eCBuYW1lcyBmb3Ig dGhlbSkuCj4+Pj4KPj4+PiBBbnl3YXkgaXQgc291bmRzIGxpa2Ugd2UgY2FuIHJlcGxhY2UgdGhp cyBwYXRjaCBieSBvbmUgd2hlcmUgd2UgcmVtb3ZlCj4+Pj4gdGhhdCBlcnJvcm5vdXMgY3NyIGxv YWQgY2FsbCBmcm9tIHNrbCBydW50aW1lIHBtIHJlc3VtZSBhbmQgdGhhdCdzIGFsbC4KPj4+PiBC dXQgSSBzdWdnZXN0IHRvIG1ha2Ugc3VyZSB3ZSBnZXQgdGhpcyByaWdodCB3ZSBrZWVwIHRoZSBj aGVjayB5b3UncmUKPj4+PiBhZGRpbmcgaGVyZSwgYnV0IHdyYXAgaXQgaW4gYSBXQVJOX09OLiBU aGVuIHdlJ2xsIGdldCBhIGJhY2t0cmFjZSB3aGVuCj4+Pj4gdGhpcyBpcyBnb2luZyB3cm9uZyBh Z2Fpbi4gTGlrZSB0aGlzOgo+Pj4+Cj4+Pj4gICAgICAgICAgaWYgKFdBUk5fT04oY3NyX2xvYWRl ZF9hbHJlYWR5KCkpKQo+Pj4+ICAgICAgICAgICAgICAgICAgcmV0dXJuOwo+Pj4+Cj4+Pj4gQWxz byB3aGVuIHJlZG9pbmcgdGhlIGNvbW1pdHMgcGxlYXNlIGV4cGxhaW4gaW4gZGV0YWlsIHdoYXQg ZXhhY3RseSBhcmUKPj4+PiB0aGUgcmVxdWlyZW1lbnRzIGxpa2UgeW91J3ZlIGRvbmUgYWJvdmUs IGJ1dCBwbGVhc2UgdXNlIHRoZSBzdGFuZGFyZCBsaW51eAo+Pj4+IG5hbWVzLCBpLmUuICJydW50 aW1lIFBNIiBhbmQgImhpYmVybmF0ZS10by1kaXNrIiBhbmQgInN1c3BlbmQtdG8tbWVtIi4KPj4+ IE9rIGhvb3JheSB0aGVyZSdzIG1vcmUgc3VzcGVuZC10by1zb21ldGhpbmcgdGhpbmdzIEkndmUg dG90YWxseSBtaXNzZWQ6Cj4+PiAtIHN1c3BlbmQtdG8taWRsZSAoZG9uZSBieSBjYXQgZnJlZXpl ID4gL3N5cy9wb3dlci9zdGF0ZSkgYW5kCj4+PiAtIHN1c3BlbmQgKGRvbmUgYnkgY2F0IHN1c3Bl bmQgPiAvc3lzL3Bvd2VyL3N0YXRlKQo+Pj4KPj4+IEFuZCBhcHBhcmVudGx5IHRoZXJlJ3MgcmVh bGx5IG5vIHdheSB0byBkcml2ZXJzIHRvIHRlbGwgdGhlbSBhcGFydC4KPj4+IFJhZmFlbCwgaXMg dGhlcmUgcmVhbGx5IG5vIHdheSBmb3IgZHJpdmVycyB0byB0YWtlIGRpZmZlcmVudCBwYXRocyBm b3IKPj4+IHRoZXNlIDMgc3VzcGVuZCBjYXNlcz8gSSB0cmllZCBncmVwcGluZyBmb3IgUE1fU1VT UEVORF9PTi9TVEFORFkvTUVNCj4+PiBhbmQgZGlkbid0IHNwb3QgYW55dGhpbmcuCj4+Pgo+Pj4g QWxzbyB3ZSdyZSBjb21wbGV0ZWx5IG1pc3NpbmcgdGVzdCBjb3ZlcmFnZSBmb3IgdGhhdCBpbiBp Z3QuIFRoYXQgaXMKPj4+IHNvbWV0aGluZyB0aGF0IG5lZWRzIHRvIGJlIGZpeGVkIGFzYXAgKHll dCBhbm90aGVyIGNhc2Ugb2YKPj4+IGNvbWJpbmF0b3JpYWwgZXhwbG9zaW9uIGluIGlndCB0ZXN0 cywgeWF5KS4gQW5kIGF0IGxlYXN0IG9uZSBvZiB0aG9zZQo+Pj4gc3VzcGVuZC10by1pZGxlIHRl c3RjYXNlIGJldHRlciBiZSBpbiB0aGUgQkFULgo+Pj4gLURhbmllbAo+Pj4gLS0KPj4+IERhbmll bCBWZXR0ZXIKPj4+IFNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgo+Pj4gKzQx ICgwKSA3OSAzNjUgNTcgNDggLSBodHRwOi8vYmxvZy5mZndsbC5jaAo+Pgo+Pgo+PiAtLQo+PiBE YW5pZWwgVmV0dGVyCj4+IFNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgo+PiAr NDEgKDApIDc5IDM2NSA1NyA0OCAtIGh0dHA6Ly9ibG9nLmZmd2xsLmNoCj4KPgoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcg bGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK