From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [DMC_BUGFIX_SKL_V2 1/5] drm/i915/skl: Added a check for the hardware status of csr fw before loading. Date: Mon, 28 Sep 2015 08:52:56 +0200 Message-ID: <20150928065256.GH3383@phenom.ffwll.local> References: <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> <56031060.9040708@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wi0-f177.google.com (mail-wi0-f177.google.com [209.85.212.177]) by gabe.freedesktop.org (Postfix) with ESMTPS id DBC8E6E614 for ; Sun, 27 Sep 2015 23:50:03 -0700 (PDT) Received: by wiclk2 with SMTP id lk2so86847759wic.1 for ; Sun, 27 Sep 2015 23:50:02 -0700 (PDT) Content-Disposition: inline In-Reply-To: <56031060.9040708@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "Rafael J. Wysocki" Cc: Daniel Vetter , intel-gfx List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBTZXAgMjMsIDIwMTUgYXQgMTA6NDk6MzZQTSArMDIwMCwgUmFmYWVsIEouIFd5c29j a2kgd3JvdGU6Cj4gT24gOS8yMy8yMDE1IDc6MTcgUE0sIERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4g PmFjcGlfdGFyZ2V0X3N5c3RlbV9zdGF0ZSgpIHNlZW1zIHRvIGJlIGFsbW9zdCB0aGUgdGhpbmcg d2UncmUgbG9va2luZwo+ID5mb3IsIGV4Y2VwdCB0aGF0IGl0J3Mgb25seSB2YWxpZCBpbiB0aGUg c3VzcGVuZCBjYWxsYmFja3Mgc2luY2UgaXQKPiA+Z2V0cyByZXNldCB0byBBQ1BJX1NUQVRFX1Mw IHdoZW4gcmVzdW1pbmcuIFNvIHByb2JhYmx5IHdlIHdhbnQKPiA+c29tZXRoaW5nIGVsc2UgLi4u Cj4gCj4gUmlnaHQuCj4gCj4gVGhlIGlkZWEgaXMgdG8gYWRkIGEgd2F5IGZvciBkcml2ZXJzIHRv IGNoZWNrIGlmCj4gKGEpIHN1c3BlbmQgaXMgZ29pbmcgdG8gZW50ZXIgdGhlIEJJT1MKPiAoYikg cmVzdW1lIGhhcyBiZWVuIHRyaWdnZXJlZCBieSB0aGUgQklPUwo+IGFuZCB0aGF0J3MgcmVhbGx5 IHdoYXQgZHJpdmVycyBuZWVkIHRvIGtub3cuCj4gCj4gRm9yIHN1c3BlbmQtdG8taWRsZSB0aG9z ZSB0d28gd2lsbCByZXR1cm4gZmFsc2UgYW5kIGZvciBTMyB0aGV5J2xsIHJldHVybgo+IHRydWUu Cj4gCj4gV291bGQgdGhhdCBoZWxwPwoKTm90IHN1cmUgdGhhdCBtYXRjaGVzIGV4YXh0bHkgd2hh dCB3ZSdkIG5lZWQgaGVyZSAuLi4gRXNzZW50aWFsbHkgd2UgbmVlZAp0byBrbm93IHdoZXRoZXIg d2UndmUgYmVlbiBpbiBTMy9TNCAoZmlybXdhcmUgaGFzIGJlZW4gZWF0ZW4pIG9yIGluIG9uZSBv Zgp0aGUgaGlnaGVyIHN1c3BlbmQtdG8taWRsZS9zdGFuZGJ5IHN0YXRlcyAoZmlybXdhcmUgc3Rp bGwgYWxpdmUsIGRvbid0CmRpc3R1cmIgaXQpLiBBZGRpdGlvbmFsIGZ1biB0aGF0IGp1c3QgY3Jv c3NlZCBteSBtaW5kIGlzIHRoYXQgaWYgdGhlCnN1c3BlbmQtdG8tbWVtIGlzIGFib3J0ZWQgKHNv bWUgb3RoZXIgZHJpdmVyIGZhaWxlZCkgdGhlbiB0aGF0IGZ1bmN0aW9uCnNob3VsZCBfbm90XyBp bmRpY2F0ZSB0aGF0IHdlJ3ZlIGJlZW4gaW4gUzMuIFNvIG1heWJlIHNvbWV0aGluZyBsaWtlCgph Y3BpX3NvdXJjZV9zeXN0ZW1fc3RhdGUoKSB3aGljaCB1c3VhbGx5IGlzIFMwIGFuZCBvbmx5IHdo ZW4gYWNwaQpzdWNjZXNzZnVsbHkgd2VudCBpbnRvIHRoZSBzdXNwZW5kIHN0YXRlIGluIHBsYXRm b3JtX3N1c3BlbmRfb3BzLT5lbnRlciBpdApnZXRzIHNldCB0byB0aGUgdmFsdWUgb2YgYWNwaV90 YXJnZXRfc3lzdGVtX3N0YXRlLiBBbmQgdGhlbiByZXNldCBvbmNlIHRoZQpyZXN1bWUgaGFzIGNv bXBsZXRlZC4gSSB0aGluayB0aGF0IHdvdWxkIGJlIHdoYXQgd2UnZCB3YW50IGhlcmUuCgpBbnl3 YXkgSSdsbCBwdWxsIGluIEFuaW1lc2ggc2VyaWVzIG1lYW53aGlsZSwgYW1lbmRlZCB3aXRoIGEg RklYTUUKY29tbWVudC4KLURhbmllbAoKPiAKPiBUaGFua3MsCj4gUmFmYWVsCj4gCj4gCj4gPk9u IFdlZCwgU2VwIDIzLCAyMDE1IGF0IDY6MjggUE0sIERhbmllbCBWZXR0ZXIgPGRhbmllbEBmZnds bC5jaD4gd3JvdGU6Cj4gPj5BY3R1YWxseSBhZGQgUmFmYWVsIHRoaXMgdGltZSBhcm91bmQgLi4u Cj4gPj4tRGFuaWVsCj4gPj4KPiA+Pk9uIFdlZCwgU2VwIDIzLCAyMDE1IGF0IDY6MjcgUE0sIERh bmllbCBWZXR0ZXIgPGRhbmllbEBmZndsbC5jaD4gd3JvdGU6Cj4gPj4+T24gV2VkLCBTZXAgMjMs IDIwMTUgYXQgOTo1NyBBTSwgRGFuaWVsIFZldHRlciA8ZGFuaWVsQGZmd2xsLmNoPiB3cm90ZToK PiA+Pj4+T24gVGh1LCBTZXAgMTcsIDIwMTUgYXQgMTI6NTM6MjFBTSArMDUzMCwgQW5pbWVzaCBN YW5uYSB3cm90ZToKPiA+Pj4+Pgo+ID4+Pj4+T24gOS8xNC8yMDE1IDE6MTYgUE0sIERhbmllbCBW ZXR0ZXIgd3JvdGU6Cj4gPj4+Pj4+T24gRnJpLCBTZXAgMTEsIDIwMTUgYXQgMTI6MzY6MjRBTSAr MDUzMCwgQW5pbWVzaCBNYW5uYSB3cm90ZToKPiA+Pj4+Pj4+T24gOS8xMC8yMDE1IDg6MTUgUE0s IERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4gPj4+Pj4+Pj5PbiBUaHUsIFNlcCAxMCwgMjAxNSBhdCAw MTo1ODo1NEFNICswNTMwLCBBbmltZXNoIE1hbm5hIHdyb3RlOgo+ID4+Pj4+Pj4+Pk9uIDkvMi8y MDE1IDI6MjQgUE0sIERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4gPj4+Pj4+Pj4+Pk9uIFdlZCwgQXVn IDI2LCAyMDE1IGF0IDA3OjQwOjU0UE0gKzA1MzAsIEFuaW1lc2ggTWFubmEgd3JvdGU6Cj4gPj4+ Pj4+Pj4+Pj5PbiA4LzI2LzIwMTUgNjo0MCBQTSwgRGFuaWVsIFZldHRlciB3cm90ZToKPiA+Pj4+ Pj4+Pj4+Pj5PbiBXZWQsIEF1ZyAyNiwgMjAxNSBhdCAwMTozNjowNUFNICswNTMwLCBBbmltZXNo IE1hbm5hIHdyb3RlOgo+ID4+Pj4+Pj4+Pj4+Pj5EbWMgd2lsbCByZXN0b3JlIHRoZSBjc3IgcHJv Z3JhbSBleGNlcHQgREM5LCBjb2xkIGJvb3QsCj4gPj4+Pj4+Pj4+Pj4+Pndhcm0gcmVzZXQsIFBD SSBmdW5jdGlvbiBsZXZlbCByZXNldCwgYW5kIGhpYmVybmF0ZS9zdXNwZW5kLgo+ID4+Pj4+Pj4+ Pj4+Pj4KPiA+Pj4+Pj4+Pj4+Pj4+aW50ZWxfY3NyX2xvYWRfcHJvZ3JhbSgpIGZ1bmN0aW9uIGlz IHVzZWQgdG8gbG9hZCB0aGUgZmlybXdhcmUKPiA+Pj4+Pj4+Pj4+Pj4+ZGF0YSBmcm9tIGtlcm5l bCBtZW1vcnkgdG8gY3NyIGFkZHJlc3Mgc3BhY2UuCj4gPj4+Pj4+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+ Pj4+Pj5BbGwgdmFsdWVzIG9mIGNzciBhZGRyZXNzIHNwYWNlIHdpbGwgYmUgemVybyBpZiBpdCBn b3QgcmVzZXQgYW5kCj4gPj4+Pj4+Pj4+Pj4+PnRoZSBmaXJzdCBieXRlIG9mIGNzciBwcm9ncmFt IGlzIGFsd2F5cyBhIG5vbi16ZXJvIGlmIGZpcm13YXJlCj4gPj4+Pj4+Pj4+Pj4+PmlzIGxvYWRl ZCBzdWNjZXNzZnVseS4gQmFzZWQgb24gaGFyZHdhcmUgc3RhdHVzIHdpbGwgbG9hZCB0aGUKPiA+ Pj4+Pj4+Pj4+Pj4+ZmlybXdhcmUuCj4gPj4+Pj4+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+Pj4+Pj5XaXRo b3V0IHRoaXMgY29uZGl0aW9uIGNoZWNrIGlmIHdlIG92ZXJ3cml0ZSB0aGUgZmlybXdhcmUgZGF0 YSB0aGUKPiA+Pj4+Pj4+Pj4+Pj4+Y291bnRlcnMgZXhwb3NlZCBmb3IgZGM1L2RjNiAoaGVscCBm b3IgZGVidWdnaW5nKSB3aWxsIGJlIG51bGxpZmllZC4KPiA+Pj4+Pj4+Pj4+PkJhY2F1c2Ugb2Yg dGhlIGFib3ZlIHJlYXNvbiBtZW50aW9uZWQganVzdCBhYm92ZSB3ZSBuZWVkIHRvIGJsb2NrIGZp cm13YXJlIGxvYWRpbmcgYWdhaW4uCj4gPj4+Pj4+Pj4+Pj5TbyBvbmx5IFdBUk5fT04gd2lsbCBu b3QgaGVscC4KPiA+Pj4+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+Pj4+Cj4gPj4+Pj4+Pj4+Pj4+PnYxOiBJ bml0aWFsIHZlcnNpb24uCj4gPj4+Pj4+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+Pj4+Pj52MjogQmFzZWQg b24gcmV2aWV3IGNvbW1lbnRzIGZyb20gRGFuaWVsLAo+ID4+Pj4+Pj4+Pj4+Pj4tIEFkZGVkIGEg Y2hlY2sgdG8ga25vdyBoYXJkd2FyZSBzdGF0dXMgYW5kIGxvYWQgdGhlIGZpcm13YXJlIGlmIG5v dCBsb2FkZWQuCj4gPj4+Pj4+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+Pj4+Pj5DYzogRGFuaWVsIFZldHRl ciA8ZGFuaWVsLnZldHRlckBpbnRlbC5jb20+Cj4gPj4+Pj4+Pj4+Pj4+PkNjOiBEYW1pZW4gTGVz cGlhdSA8ZGFtaWVuLmxlc3BpYXVAaW50ZWwuY29tPgo+ID4+Pj4+Pj4+Pj4+Pj5DYzogSW1yZSBE ZWFrIDxpbXJlLmRlYWtAaW50ZWwuY29tPgo+ID4+Pj4+Pj4+Pj4+Pj5DYzogU3VuaWwgS2FtYXRo IDxzdW5pbC5rYW1hdGhAaW50ZWwuY29tPgo+ID4+Pj4+Pj4+Pj4+Pj5TaWduZWQtb2ZmLWJ5OiBB bmltZXNoIE1hbm5hIDxhbmltZXNoLm1hbm5hQGludGVsLmNvbT4KPiA+Pj4+Pj4+Pj4+Pj4+U2ln bmVkLW9mZi1ieTogVmF0aHNhbGEgTmFnYXJhanUgPHZhdGhzYWxhLm5hZ2FyYWp1QGludGVsLmNv bT4KPiA+Pj4+Pj4+Pj4+Pj4+LS0tCj4gPj4+Pj4+Pj4+Pj4+PiAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfY3NyLmMgfCA5ICsrKysrKysrKwo+ID4+Pj4+Pj4+Pj4+Pj4gIDEgZmlsZSBjaGFu Z2VkLCA5IGluc2VydGlvbnMoKykKPiA+Pj4+Pj4+Pj4+Pj4+Cj4gPj4+Pj4+Pj4+Pj4+PmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jc3IuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Nzci5jCj4gPj4+Pj4+Pj4+Pj4+PmluZGV4IGJhMWFlMDMuLjY4MmNjMjYg MTAwNjQ0Cj4gPj4+Pj4+Pj4+Pj4+Pi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Nz ci5jCj4gPj4+Pj4+Pj4+Pj4+PisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Nzci5j Cj4gPj4+Pj4+Pj4+Pj4+PkBAIC0yNTIsNiArMjUyLDE1IEBAIHZvaWQgaW50ZWxfY3NyX2xvYWRf cHJvZ3JhbShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ID4+Pj4+Pj4+Pj4+Pj4gICAgICAgICAg ICAgIHJldHVybjsKPiA+Pj4+Pj4+Pj4+Pj4+ICAgICAgfQo+ID4+Pj4+Pj4+Pj4+Pj4rICAgICAv Kgo+ID4+Pj4+Pj4+Pj4+Pj4rICAgICAgKiBEbWMgd2lsbCByZXN0b3JlIHRoZSBjc3IgdGhlIHBy b2dyYW0gZXhjZXB0IERDOSwgY29sZCBib290LAo+ID4+Pj4+Pj4+Pj4+Pj4rICAgICAgKiB3YXJt IHJlc2V0LCBQQ0kgZnVuY3Rpb24gbGV2ZWwgcmVzZXQsIGFuZCBoaWJlcm5hdGUvc3VzcGVuZC4K PiA+Pj4+Pj4+Pj4+Pj4+KyAgICAgICogVGhpcyBjb25kaXRpb24gd2lsbCBoZWxwIHRvIGNoZWNr IGlmIGNzciBhZGRyZXNzIHNwYWNlIGlzIHJlc2V0Lwo+ID4+Pj4+Pj4+Pj4+Pj4rICAgICAgKiBu b3QgbG9hZGVkLgo+ID4+Pj4+Pj4+Pj4+Pj4rICAgICAgKi8KPiA+Pj4+Pj4+Pj4+Pj5BdG0gd2Ug Y2FsbCB0aGlzIGZyb20gZHJpdmVyIGxvYWQgYW5kIHJlc3VtZSwgd2hpY2ggZG9lc24gc2VlbSB0 byBjb3Zlcgo+ID4+Pj4+Pj4+Pj4+PmFsbCB0aGUgY2FzZXMgeW91IG1lbnRpb24gaW4gdGhlIGNv bW1lbnQuIFNob3VsZCB0aGlzIGJlIGEgV0FSTl9PTgo+ID4+Pj4+Pj4+Pj4+Pmluc3RlYWQ/IE9y IGRvIHdlIGhhdmUgdHJvdWJsZXMgaW4gb3VyIGluaXQgc2VxdWVuY2Ugd2hlcmUgd2UgbG9hZCB0 b28KPiA+Pj4+Pj4+Pj4+Pj5tYW55IHRpbWVzPwo+ID4+Pj4+Pj4+Pj4+WWVzLCB0aGUgYWJvdmUg c3RhdGVtZW50IHRha2VuIGZyb20gYnNwZWMgdG8gZGVzY3JpYmUgYWJvdXQgdGhlIHNwZWNpYWwg Y2FzZXMgZG1jIHdpbGwgbm90IHJlc3RvcmUgdGhlIGZpcm13YXJlLgo+ID4+Pj4+Pj4+Pj4+QWdy ZWUsIEluIG91ciBjYXNlcyBjb2xkIGJvb3QgYW5kIGhpYmVybmF0ZS9zdXNwZW5kIG1haW5seSB3 ZSBuZWVkIHRvIGxvYWQgdGhlIGZpcm13YXJlIGFnYWluLCBzbyBpbiBteQo+ID4+Pj4+Pj4+Pj4+ c2Vjb25kIHNlbnRlbmNlIEkgd2FudGVkIHRvIGNvbW1lbnQgbWFpbmx5IHJlZ2FyZGluZyB0aGlz IGNvbmRpdGlvbiBjaGVjayBhZGRlZCBmb3Igc3VzcGVuZC1oaWJlcm5hdGUocmVzZXQpCj4gPj4+ Pj4+Pj4+Pj5hbmQgY29sZCBib290KG5vdCBsb2FkZWQpLgo+ID4+Pj4+Pj4+Pj4+Cj4gPj4+Pj4+ Pj4+Pj5Bbnl3YXlzIHRoZSBzYW1lIGFwaSBsYXRlciBjYW4gYmUgdXNlZCB0byBsb2FkIHRoZSBm aXJtd2FyZSBmcm9tIGFueXdoZXJlLCBzbyBteSBpbnRlbnRpb24gdG8gY2hlY2sgZmlybXdhcmUg bG9hZGVkIG9yIG5vdC4KPiA+Pj4+Pj4+Pj4+PklmIGFscmVhZHkgbG9hZGVkIHRoZW4gbm90IHRv IG92ZXJ3cml0ZSB0aGUgY3NyIGFkZHJlc3Mgc3BhY2UgdG8gbWFpbnRhaW4gdGhlIGRjNS9kYzYg Y291bnRlciB2YWx1ZS4KPiA+Pj4+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+Pj4+Q2FuIHRoZSBiZWxvdyBj b21tZW50IG1vcmUgY2xlYXIgdG8geW91Lgo+ID4+Pj4+Pj4+Pj4+Cj4gPj4+Pj4+Pj4+Pj4gICAg ICAgIC8qCj4gPj4+Pj4+Pj4+Pj4gICAgICAgICAqIERtYyB3aWxsIHJlc3RvcmUgdGhlIGNzciB0 aGUgcHJvZ3JhbSBleGNlcHQgREM5LCBjb2xkIGJvb3QsCj4gPj4+Pj4+Pj4+Pj4gICAgICAgICAq IHdhcm0gcmVzZXQsIFBDSSBmdW5jdGlvbiBsZXZlbCByZXNldCwgYW5kIGhpYmVybmF0ZS9zdXNw ZW5kLgo+ID4+Pj4+Pj4+Pj4+ICAgICAgICAgKiBJZiBmaXJtd2FyZSBpcyByZXN0b3JlZCBieSBk bWMgdGhlbiBubyBuZWVkIHRvIGxvYWQgYWdhaW4gd2hpY2gKPiA+Pj4+Pj4+Pj4+PiAgICAgICAg ICogd2lsbCBrZWVwIHRoZSBkYzUvZGM2IGNvdW50ZXIgZXhwb3NlZCBieSBmaXJtd2FyZS4KPiA+ Pj4+Pj4+Pj4+PiAgICAgICAgICovCj4gPj4+Pj4+Pj4+Pj4KPiA+Pj4+Pj4+Pj4+Pk5vIGlzc3Vl IGluIGluaXQgc2VxdWVuY2UuCj4gPj4+Pj4+Pj4+PlRoYXQgc2VlbXMgdG8gc3RpbGwgY292ZXIg YWxsIHRoZSBjYWxsZXJzIG9mIHRoZSBmdW5jdGlvbiBhZmFpY3MgLSB3ZSBkbwo+ID4+Pj4+Pj4+ Pj5wY2kgcmVzZXRzIG92ZXIgc3VzcGVuZCByZXN1bWUgdW5jb25kaXRpb25hbGx5LiBTbyBJIHN0 aWxsIGRvbid0Cj4gPj4+Pj4+Pj4+PnVuZGVyc3RhbmQgd2hlcmUgZXhhY3RseSB3ZSB0cnkgdG8g bG9hZCB0aGUgZG1jIGZpcm13YXJlIGluIGk5MTUua28gd2hlbgo+ID4+Pj4+Pj4+Pj5pdCdzIGFs cmVhZHkgbG9hZGVkLgo+ID4+Pj4+Pj4+PkR1cmluZyByZXN1bWUgaW50ZWxfY3NyX2xvYWRfcHJv Z3JhbSgpIHdpbGwgYmUgY2FsbGVkIGZyb20KPiA+Pj4+Pj4+Pj5pbnRlbF9ydW50aW1lX3Jlc3Vt ZSgpLgo+ID4+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+PmludGVsX3J1bnRpbWVfcmVzdW1lKCktPiBza2xf cmVzdW1lX3ByZXBhcmUoKS0+IGludGVsX2Nzcl9sb2FkX3Byb2dyYW0oKQo+ID4+Pj4+Pj4+Pgo+ ID4+Pj4+Pj4+PkR1cmluZyBQYzEwIGVudHJ5IHRlc3RpbmcgSSBjYW4gc2VlIGRtYyBpcyByZXN0 b3JpbmcgYmFjayB0aGUgZmlybXdhcmUgYWx3YXlzLAo+ID4+Pj4+Pj4+PmJ1dCBhcyB5b3UgbWVu dGlvbmVkIHBjaS1yZXNldCBjYW4gaGFwcGVuIHVuY29uZGl0aW9uYWxseSwgYnV0IHN0aWxsIHRo ZW4KPiA+Pj4+Pj4+Pj5hbHNvIGR1cmluZyByZXN1bWUgaW50ZWxfcnVudGltZV9yZXN1bWUoKSB3 aWxsIGJlIGNhbGxlZCBhbmQgYmFzZWQgb24KPiA+Pj4+Pj4+Pj5yZWdpc3RlciByZWFkIG9mIGNz ci1iYXNlLWFkZHJlc3MgZmlybXdhcmUgbG9hZGluZyB3aWxsIGhhcHBlbi4KPiA+Pj4+Pj4+PkJ1 dCBpbiB5b3VyIGNvbW1lbnQgeW91J3JlIHNheWluZyBpdCB3b24ndCBnZXQgcmVzdG9yZWQgaW4g Y2FzZSBvZiBkYzkgYW5kCj4gPj4+Pj4+Pj5zdXNwZW5kLiBTbyB0aGF0IHNlZW1zIHRvIG1pc21h dGNoIHdoYXQgeW91J3JlIHNheWluZyBoZXJlIChhbmQgd2hhdCB0aGUKPiA+Pj4+Pj4+PmNvbW1p dCBtZXNzYWdlIHNheXMpIGFuZCB3aGF0IHRoZSBjb2RlIGRvZXMuIEFuZCB0aGlzIGZ1bmN0aW9u IGhlcmUgaXMKPiA+Pj4+Pj4+PmNhbGxlZCBmb3IgcmVzdW1lIGFmdGVyIHN1c3BlbmQvaGliZXJu YXRlIG9ubHkuCj4gPj4+Pj4+PnBjMTAgZW50cnkgZXhwbGFuYXRpb24gSSB0b2xkIGlzIGZvciBz a3lsYWtlLiBkYzkgaW4gc2t5bGFrZSBpcyBub3QgcG9zc2libGUuCj4gPj4+Pj4+PkkgdGhpbmsg eW91IGFyZSBjb25mdXNpbmcgYmV0d2VlbiBkYzYgYW5kIGRjOS4gUGMxMCBjYW4gYmUgYWNoaWV2 ZWQgYnkKPiA+Pj4+Pj4+ZW50ZXJpbmcgaW50byBkYzYgKG5vdCBkYzkpIGZvciBza3lsYWtlLiBk YzkgaXMgdGhlIGxvd2VzdCBwb3NzaWJsZSBzdGF0ZQo+ID4+Pj4+Pj5mb3IgYnJveHRvbiB3aGlj aCBpcyBub3QgcHJlc2VudCBmb3Igc2t5bGFrZS4KPiA+Pj4+Pj5JIGhhdmUgbm8gaWRlYSBhdCBh bGwgYWJvdXQgZGlmZmVyZW50IHBjIGxldmVscyBvbiBza2wuIFdoYXQgSSdtIHRhbGtpbmcKPiA+ Pj4+Pj5hYm91dCBpcyBzeXN0ZW0gc3VzcGVuZC9yZXN1bWUgYW5kIGRyaXZlciBsb2FkLCB3aGlj aCBhcmUgdGhlIHBsYWNlcyB0aGlzCj4gPj4+Pj4+ZnVuY3Rpb24gZ2V0cyBjYWxsZWQuIEF0IGxl YXN0IGFmYWljcy4KPiA+Pj4+Pj4KPiA+Pj4+Pj4+SGVyZSBpbnRlbF9jc3JfbG9hZF9wcm9ncmFt KCkgd2lsbCBiZSB1c2VkIGZvciBib3RoIHNreWxha2UgYW5kIGJyb3h0b24sIGFuZCBpbnN0cnVj dGlvbgo+ID4+Pj4+Pj5leGVjdXRpb24gZmxvdyB3aWxsIGJlIGRpZmZlcmVudCBpbiBjYXNlIG9m IHN1c3BlbmQvcmVzdW1lIHdoaWNoIEkgdGhpbmsgaXMgY29uZnVzaW5nCj4gPj4+Pj4+PnlvdS4K PiA+Pj4+Pj5UaGF0IHNlZW1zIGxpa2UgcmVhbGx5IGltcG9ydGFudCBpbmZvcm1hdGlvbi4gV2hh dCdzIGRpZmZlcmVudCBvbiBieHQ/Cj4gPj4+Pj4+VGhlc2UgYXJlIHRoZSBraW5kIG9mIGRldGFp bHMgeW91IHNob3VsZCBleHBsYWluIGluIHRoZSBjb21taXQgbWVzc2FnZSAuLi4KPiA+Pj4+Pj4K PiA+Pj4+Pj4+SSBhbSByZWFkeSBleHBsYWluIHlvdSBpbiBkZXRhaWwuIEl0IHdpbGwgYmUgZ29v ZCBpZiB3ZSBkaXNjdXNzIHNwZWNpZmljIHVzZS1jYXNlIHNjZW5hcmlvCj4gPj4+Pj4+PmFuZCBp dHogc29mdHdhcmUgZGVzaWduIGZvciBzcGVjaWZpYyBwbGF0Zm9ybS4gQW5vdGhlciBwb2ludCAt IGFzIGRtYyByZWxhdGVkIGNvZGUgZm9yCj4gPj4+Pj4+PmJyb3h0b24gaXMgbm90IG1lcmdlZCBi ZXR0ZXIgZmlyc3Qgd2UgY2xvc2UgZGVzaWduIGZvciBza3lsYWtlLiBOb3csIEkgaGF2ZSBhZGRl ZCBkYzkKPiA+Pj4+Pj4+ZGVzY3JpcHRpb24gaW4gY29tbWVudCB0aGlua2luZyBvZiBmdXR1cmUu IElmIHlvdSB3YW50IEkgY2FuIHJlbW92ZSBmb3Igbm93IGFuZCBsYXRlcgo+ID4+Pj4+Pj5jYW4g YWRkIGluIGJ4dCBwYXRjaCBzZXJpZXMgZm9yIGVuYWJsaW5nIGRtYy4gV2lsbCB3YWl0IGZvciB5 b3VyIHJlcGx5Lgo+ID4+Pj4+PlRoaXMgcXVlc3Rpb24gaGVyZSBpc24ndCBhYm91dCB0aGUgb3Zl cmFsbCBkZXNpZ24gYW5kIGhvdyB0byBoYW5kbGUgcG93ZXIKPiA+Pj4+Pj53ZWxscyBpbiBza2wv Ynh0LiBUaGF0J3MgYSBzZXBhcmF0ZSBkaXNjdXNzaW9uIGFuZCB0cmFja2VkIHNvbWV3aGVyZSBl bHNlLgo+ID4+Pj4+PkknbSByZWFsbHkganVzdCBjb25mdXNlZCBhYm91dCB3aGVuIGV4YWN0bHkg d2UgbmVlZCB0byByZWxvYWQgdG8gZmlybXdhcmUsCj4gPj4+Pj4+YW5kIHdoeSB3ZSBuZWVkIGEg cnVudGltZSBjaGVjayBmb3IgdGhhdC4gTm9ybWFsbHkgd2Ugc2hvdWxkIGtub3cgd2hlbiB0bwo+ ID4+Pj4+PnJlbG9hZCB0aGUgZmlybXdhcmUgYW5kIGp1c3QgZWl0aGVyIHJlbG9hZCBvciBub3Qs IHdpdGhvdXQgY2hlY2tpbmcgaHcKPiA+Pj4+Pj5zdGF0ZS4gQW5kIEkgZG9uJ3QgbGlrZSBjaGVj a2luZyBmb3IgaHcgc3RhdGUgc2luY2UgYXQgbGVhc3QgaW4gdGhlIHBhc3QKPiA+Pj4+Pj50aGF0 IGtpbmQgb2YgY29kZSBlbmRlZCB1cCBiZWluZyBmcmFnaWxlIC0gaXQncyBhbiBpbGx1c2lvbiB0 aGF0IGl0IGRvZXMKPiA+Pj4+Pj50aGUgcmlnaHQgdGhpbmcgbm8gbWF0dGVyIHdoYXQsIHNpbmNl IG9mdGVuIHRoZXJlJ3Mgb3RoZXIgdHJpY2t5IG9yZGVyaW5nCj4gPj4+Pj4+Y29uc3RyYWludHMu IEFuZCBpZiB5b3UgaGF2ZSBhdXRvbWF0aWMgZHVjdC10YXBlIGxpa2UgdGhlbiBubyBvbmUgd2ls bAo+ID4+Pj4+PmV2ZXIgc3BvdCB0aG9zZSBvdGhlciwgaGFyZGVyIHRvIHNwb3QgaXNzdWVzLCB1 bnRpbCBhbiBleHBlbnNpdmUgY3VzdG9tZXIKPiA+Pj4+Pj5lc2NhbGF0aW9uIGhhcHBlbnMuCj4g Pj4+Pj4+Cj4gPj4+Pj4+U28gd2hhdCBJIHdhbnQgdG8ga25vdyBoZXJlIGlzOgo+ID4+Pj4+Pi0g V2hlbiBleGFjdGx5IGRvIHdlIG5lZWQgdG8gcmVsb2FkIGRtYyBmaXJtd2FyZS4KPiA+Pj4+Pklu IHNrbCwgZHVyaW5nIGRyaXZlciBsb2FkIGZpcnN0IHRpbWUgd2UgbG9hZCB0aGUgZmlybXdhcmUs IGR1cmluZyBub3JtYWwKPiA+Pj4+PnN1c3BlbmQtcmVzdW1lIChkYzYgZW50cnkvZXhpdCkKPiA+ Pj4+Pm5vIG5lZWQgdG8gcmVsb2FkIHRoZSBmaXJtd2FyZSBhZ2FpbiBhcyBkbWMgd2lsbCB0YWtl IGNhcmUgb2YgaXQuIEJ1dCBkdXJpbmcKPiA+Pj4+PnN1c3BlbmQvaGliZXJuYXRpb24KPiA+Pj4+ PmRtYyB3aWxsIG5vdCByZXN0b3JlIHRoZSBmaXJtd2FyZS4gSW4gdGhhdCBjYXNlIGRyaXZlciBu ZWVkIHRvIHJlbG9hZCBpdAo+ID4+Pj4+YWdhaW4uIEkgZG8gbm90IGtub3cKPiA+Pj4+PmhvdyB0 byBkaWZmZXJlbnRpYXRlIHBtLXN1c3BlbmQgYW5kIHN1c3BlbmQtaGliZXJuYXRpb24gYW5kIHRo b3VnaHQgYm90aCB0aGUKPiA+Pj4+PmNhc2VzCj4gPj4+Pj5pbnRlbF9ydW50aW1lX3Jlc3VtZSgp IHdpbGwgYmUgY2FsbGVkIHdoZXJlIHdlIGNhbiBjaGVjayB0aGUgaC93IHN0YXRlIGFuZAo+ID4+ Pj4+cmVsb2FkIHRoZQo+ID4+Pj4+ZmlybXdhcmUgaWYgZG1jIGlzIG5vdCByZXN0b3JlZC4KPiA+ Pj4+Pgo+ID4+Pj4+SW4gYnh0LCBkdXJpbmcgZHJpdmVyIGxvYWQgZmlyc3QgdGltZSB3ZSBsb2Fk IHRoZSBmaXJtd2FyZSwgZHVyaW5nIG5vcm1hbAo+ID4+Pj4+c3VzcGVuZC1yZXN1bWUKPiA+Pj4+ PmRpc3BsYXkgZW5naW5lIHdpbGwgZW50ZXIgaW50byBkYzkgYW5kIGRtYyB3aWxsIG5vdCByZXN0 b3JlIHRoZSBmaXJtd2FyZS4gU28KPiA+Pj4+PmV2ZXJ5Cj4gPj4+Pj5zdXNwZW5kLXJlc3VtZSB3 ZSBuZWVkIHRvIHJlbG9hZCB0aGUgZmlybXdhcmUuCj4gPj4+Pj4+LSBXaGF0IGV4YWN0bHkgaXMg dGhlIHJlYXNvbiB3aHkgd2UgY2FuJ3QgbWFrZSB0aGF0IGRlY2lzaW9uIHN0YXRpY2FsbHkgaW4K PiA+Pj4+Pj4gICB0aGUgY29kZSAoYnkgY2FsbGluZyBjc3JfbG9hZCBhdCB0aGUgcmlnaHQgc3Bv dHMpLgo+ID4+Pj4+QXMgSSBtZW50aW9uZWQgYmVmb3JlIGluIGNhc2Ugb2Ygc2t5bGFrZSBjYW4g d2UgZGlmZmVyZW50aWF0ZSBiZXR3ZWVuCj4gPj4+Pj4icmVzdW1lIGZyb20gcG0tc3VzcGVuZCIg d2l0aCAicmVzdW1lIGZyb20gc3VzcGVuZC1oaWJlcm5hdGlvbiIgaW5zaWRlCj4gPj4+Pj5kcml2 ZXI/Cj4gPj4+Pj4KPiA+Pj4+PkluIGNhc2Ugb2YgYnJveHRvbiwgZXZlcnkgdGltZSB3ZSBuZWVk IHRvIHJlbG9hZCwgc28gd2UgY2FuIGRlY2lkZQo+ID4+Pj4+c3RhdGljYWxseS4KPiA+Pj4+T2Yg Y291cnNlIHdlIGNhbiBkaWZmZXJlbnRpYXRlIGJldHdlZW4gYWxsIHRoZSBkaWZmZXJlbnQgcmVz dW1lIHBhdGhzLCBhbmQKPiA+Pj4+d2UgYWxzbyBoYXZlIGEgcGVyLXBsYXRmb3JtIHNwbGl0IHRv IHRha2UgY2FyZSBvZiBieHQgdnMuIHNrbC4gQW5kIHRoZXJlCj4gPj4+PmFyZSBhY3R1YWxseSAz IGRpZmZlcmVudCByZXN1bWUgcGF0aHM6Cj4gPj4+Pgo+ID4+Pj4tIHJ1bnRpbWUgUE0gcmVzdW1l LiBUaGlzIGNhbGxzIHRoZSBydW50aW1lX3Jlc3VtZSBob29rLiBJdCBzb3VuZHMgbGlrZSBvbgo+ ID4+Pj4gICBza2wgd2Ugc2hvdWxkIF9ub3RfIGxvYWQgdGhlIGNzciBmaXJtd2FyZSwgYnV0IG9u IGJ4dCB3ZSBzaG91bGQgbG9hZCBpdC4KPiA+Pj4+ICAgVGhpcyBjYW4gYmUgZml4ZWQgYnkgcmVt b3ZpbmcgdGhlIGludGVsX2Nzcl9sb2FkX3Byb2dyYW0gY2FsbCBmcm9tCj4gPj4+PiAgIHNrbF9y ZXN1bWVfcHJlcGFyZS4KPiA+Pj4+LSByZXN1bWUgZnJvbSBoaWJlcm5hdGUtdG8tZGlzayAoaS5l LiBzeXN0ZW0gY29tcGxldGVseSBvZmYsIHN0YXRlIHN0b3JlZAo+ID4+Pj4gICBvbiB0aGUgc3dh cCBwYXJ0aXRpb24pIGlzIGRvbmUgYnkgY2FsbGluZyB0aGUgdGhhdyBjYWxsYmFja3MuCj4gPj4+ Pi0gcmVzdW1lIGZyb20gc3VzcGVuZC10by1tZW0gKGkuZS4gc3lzdGVtIGluIGxvdy1wb3dlciB3 aXRoIG9ubHkgbWVtb3J5Cj4gPj4+PiAgIGluIHNlbGYtcmVmcmVzaCwgYWxsIHN0YXRlIHN0b3Jl ZCBpbiBtZW1vcnkpIGlzIGRvbmUgYnkgY2FsbGluZyB0aGUKPiA+Pj4+ICAgcmVzdW1lIGNhbGxi YWNrcy4KPiA+Pj4+Cj4gPj4+PkZvciBpOTE1IHdlIHVzZSB1bmlmaWVkIGhhbmRsZXJzIGluIG91 ciBkZXZfcG1fb3BzIGZvciBib3RoIHRoYXcgYW5kCj4gPj4+PnJlc3VtZSwgYnV0IGl0IHNvdW5k cyBsaWtlIHRoYXQgd29uJ3QgYmUgYSBwcm9ibGVtIGZvciBza2wvYnh0IHNpbmNlIHdlCj4gPj4+ Pm5lZWQgdG8gcmVsb2FkIHRoZSBjc3IgZmlybXdhcmUgaW4gYWxsIGNhc2VzLiBBbHRob3VnaCBJ J20gbm90IHBlcmZlY3RseQo+ID4+Pj5zdXJlIHNpbmNlIHlvdSBkb24ndCBleHBsYWluIHdoYXQg a2luZCBvZiByZXN1bWUgeW91IG1lYW4gZXhhY3RseSAoc2luY2UKPiA+Pj4+eW91IGRvbid0IHVz ZSB0aGUgbGludXggbmFtZXMgZm9yIHRoZW0pLgo+ID4+Pj4KPiA+Pj4+QW55d2F5IGl0IHNvdW5k cyBsaWtlIHdlIGNhbiByZXBsYWNlIHRoaXMgcGF0Y2ggYnkgb25lIHdoZXJlIHdlIHJlbW92ZQo+ ID4+Pj50aGF0IGVycm9ybm91cyBjc3IgbG9hZCBjYWxsIGZyb20gc2tsIHJ1bnRpbWUgcG0gcmVz dW1lIGFuZCB0aGF0J3MgYWxsLgo+ID4+Pj5CdXQgSSBzdWdnZXN0IHRvIG1ha2Ugc3VyZSB3ZSBn ZXQgdGhpcyByaWdodCB3ZSBrZWVwIHRoZSBjaGVjayB5b3UncmUKPiA+Pj4+YWRkaW5nIGhlcmUs IGJ1dCB3cmFwIGl0IGluIGEgV0FSTl9PTi4gVGhlbiB3ZSdsbCBnZXQgYSBiYWNrdHJhY2Ugd2hl bgo+ID4+Pj50aGlzIGlzIGdvaW5nIHdyb25nIGFnYWluLiBMaWtlIHRoaXM6Cj4gPj4+Pgo+ID4+ Pj4gICAgICAgICBpZiAoV0FSTl9PTihjc3JfbG9hZGVkX2FscmVhZHkoKSkpCj4gPj4+PiAgICAg ICAgICAgICAgICAgcmV0dXJuOwo+ID4+Pj4KPiA+Pj4+QWxzbyB3aGVuIHJlZG9pbmcgdGhlIGNv bW1pdHMgcGxlYXNlIGV4cGxhaW4gaW4gZGV0YWlsIHdoYXQgZXhhY3RseSBhcmUKPiA+Pj4+dGhl IHJlcXVpcmVtZW50cyBsaWtlIHlvdSd2ZSBkb25lIGFib3ZlLCBidXQgcGxlYXNlIHVzZSB0aGUg c3RhbmRhcmQgbGludXgKPiA+Pj4+bmFtZXMsIGkuZS4gInJ1bnRpbWUgUE0iIGFuZCAiaGliZXJu YXRlLXRvLWRpc2siIGFuZCAic3VzcGVuZC10by1tZW0iLgo+ID4+Pk9rIGhvb3JheSB0aGVyZSdz IG1vcmUgc3VzcGVuZC10by1zb21ldGhpbmcgdGhpbmdzIEkndmUgdG90YWxseSBtaXNzZWQ6Cj4g Pj4+LSBzdXNwZW5kLXRvLWlkbGUgKGRvbmUgYnkgY2F0IGZyZWV6ZSA+IC9zeXMvcG93ZXIvc3Rh dGUpIGFuZAo+ID4+Pi0gc3VzcGVuZCAoZG9uZSBieSBjYXQgc3VzcGVuZCA+IC9zeXMvcG93ZXIv c3RhdGUpCj4gPj4+Cj4gPj4+QW5kIGFwcGFyZW50bHkgdGhlcmUncyByZWFsbHkgbm8gd2F5IHRv IGRyaXZlcnMgdG8gdGVsbCB0aGVtIGFwYXJ0Lgo+ID4+PlJhZmFlbCwgaXMgdGhlcmUgcmVhbGx5 IG5vIHdheSBmb3IgZHJpdmVycyB0byB0YWtlIGRpZmZlcmVudCBwYXRocyBmb3IKPiA+Pj50aGVz ZSAzIHN1c3BlbmQgY2FzZXM/IEkgdHJpZWQgZ3JlcHBpbmcgZm9yIFBNX1NVU1BFTkRfT04vU1RB TkRZL01FTQo+ID4+PmFuZCBkaWRuJ3Qgc3BvdCBhbnl0aGluZy4KPiA+Pj4KPiA+Pj5BbHNvIHdl J3JlIGNvbXBsZXRlbHkgbWlzc2luZyB0ZXN0IGNvdmVyYWdlIGZvciB0aGF0IGluIGlndC4gVGhh dCBpcwo+ID4+PnNvbWV0aGluZyB0aGF0IG5lZWRzIHRvIGJlIGZpeGVkIGFzYXAgKHlldCBhbm90 aGVyIGNhc2Ugb2YKPiA+Pj5jb21iaW5hdG9yaWFsIGV4cGxvc2lvbiBpbiBpZ3QgdGVzdHMsIHlh eSkuIEFuZCBhdCBsZWFzdCBvbmUgb2YgdGhvc2UKPiA+Pj5zdXNwZW5kLXRvLWlkbGUgdGVzdGNh c2UgYmV0dGVyIGJlIGluIHRoZSBCQVQuCj4gPj4+LURhbmllbAo+ID4+Pi0tCj4gPj4+RGFuaWVs IFZldHRlcgo+ID4+PlNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgo+ID4+Pis0 MSAoMCkgNzkgMzY1IDU3IDQ4IC0gaHR0cDovL2Jsb2cuZmZ3bGwuY2gKPiA+Pgo+ID4+Cj4gPj4t LQo+ID4+RGFuaWVsIFZldHRlcgo+ID4+U29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0 aW9uCj4gPj4rNDEgKDApIDc5IDM2NSA1NyA0OCAtIGh0dHA6Ly9ibG9nLmZmd2xsLmNoCj4gPgo+ ID4KPiAKCi0tIApEYW5pZWwgVmV0dGVyClNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3Jh dGlvbgpodHRwOi8vYmxvZy5mZndsbC5jaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2ludGVsLWdmeAo=