From mboxrd@z Thu Jan 1 00:00:00 1970 From: Imre Deak Subject: Re: [PATCH v2 2/2] drm/i915/bxt: Fix inadvertent CPU snooping due to incorrect MOCS config Date: Thu, 28 Apr 2016 20:15:24 +0300 Message-ID: <1461863724.9253.90.camel@intel.com> References: <1461674662-29353-1-git-send-email-imre.deak@intel.com> <1461674662-29353-2-git-send-email-imre.deak@intel.com> <20160426125726.GJ27856@nuc-i3427.alporthouse.com> <1461676675.18080.18.camel@intel.com> <20160426132321.GL27856@nuc-i3427.alporthouse.com> <571F7AA3.8080509@intel.com> <20160426144201.GP27856@nuc-i3427.alporthouse.com> <1461686466.18080.64.camel@intel.com> <20160428081731.GP2558@phenom.ffwll.local> <1461832735.9253.17.camel@intel.com> <20160428144837.GF5784@phenom.ffwll.local> Reply-To: imre.deak@intel.com Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTP id 02F926EDAA for ; Thu, 28 Apr 2016 17:15:27 +0000 (UTC) In-Reply-To: <20160428144837.GF5784@phenom.ffwll.local> 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: Eero Tamminen , Valtteri Rantala , intel-gfx@lists.freedesktop.org, Michael T Frederick List-Id: intel-gfx@lists.freedesktop.org T24gdG8sIDIwMTYtMDQtMjggYXQgMTY6NDggKzAyMDAsIERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4g T24gVGh1LCBBcHIgMjgsIDIwMTYgYXQgMTE6Mzg6NTVBTSArMDMwMCwgSW1yZSBEZWFrIHdyb3Rl Ogo+ID4gT24gdG8sIDIwMTYtMDQtMjggYXQgMTA6MTcgKzAyMDAsIERhbmllbCBWZXR0ZXIgd3Jv dGU6Cj4gPiA+IE9uIFR1ZSwgQXByIDI2LCAyMDE2IGF0IDA3OjAxOjA2UE0gKzAzMDAsIEltcmUg RGVhayB3cm90ZToKPiA+ID4gPiBPbiB0aSwgMjAxNi0wNC0yNiBhdCAxNTo0MiArMDEwMCwgQ2hy aXMgV2lsc29uIHdyb3RlOgo+ID4gPiA+ID4gT24gVHVlLCBBcHIgMjYsIDIwMTYgYXQgMDU6MjY6 NDNQTSArMDMwMCwgRWVybyBUYW1taW5lbgo+ID4gPiA+ID4gd3JvdGU6Cj4gPiA+ID4gPiA+IEhp LAo+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gT24gMjYuMDQuMjAxNiAxNjoyMywgQ2hyaXMgV2ls c29uIHdyb3RlOgo+ID4gPiA+ID4gPiA+IE9uIFR1ZSwgQXByIDI2LCAyMDE2IGF0IDA0OjE3OjU1 UE0gKzAzMDAsIEltcmUgRGVhawo+ID4gPiA+ID4gPiA+IHdyb3RlOgo+ID4gPiA+ID4gPiA+ID4g T24gdGksIDIwMTYtMDQtMjYgYXQgMTM6NTcgKzAxMDAsIENocmlzIFdpbHNvbiB3cm90ZToKPiA+ ID4gPiA+ID4gPiA+ID4gT24gVHVlLCBBcHIgMjYsIDIwMTYgYXQgMDM6NDQ6MjJQTSArMDMwMCwg SW1yZSBEZWFrCj4gPiA+ID4gPiA+ID4gPiA+IHdyb3RlOgo+ID4gPiA+ID4gPiA+ID4gPiA+IFNl dHRpbmcgYSB3cml0ZS1iYWNrIGNhY2hlIHBvbGljeSBpbiB0aGUgTU9DUyBlbnRyeQo+ID4gPiA+ ID4gPiA+ID4gPiA+IGRlZmluaXRpb24gYWxzbwo+ID4gPiA+ID4gPiA+ID4gPiA+IGltcGxpZXMg c25vb3BpbmcsIHdoaWNoIGhhcyBhIGNvbnNpZGVyYWJsZQo+ID4gPiA+ID4gPiA+ID4gPiA+IG92 ZXJoZWFkLiBUaGlzCj4gPiA+ID4gPiA+ID4gPiA+ID4gaXMKPiA+ID4gPiA+ID4gPiA+ID4gPiB1 bmV4cGVjdGVkIGZvciBhIGZldyByZWFzb25zOgo+ID4gPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ ID4gPiA+ID4gSWYgaXQgaXMgc25vb3BpbmcsIHRoZW4gSSBkb24ndCBzZWUgd2h5IGl0IGlzCj4g PiA+ID4gPiA+ID4gPiA+IHVuZGVzaXJhYmxlIHRvCj4gPiA+ID4gPiA+ID4gPiA+IGhhdmUgaXQK PiA+ID4gPiA+ID4gPiA+ID4gYXZhaWxhYmxlIGluIGEgbW9jcyBzZXR0aW5nLiBJZiBpdCBpcyBi b2d1cyBhbmQgdGhlCj4gPiA+ID4gPiA+ID4gPiA+IGJpdCBpcwo+ID4gPiA+ID4gPiA+ID4gPiB1 bmRlZmluZWQsCj4gPiA+ID4gPiA+ID4gPiA+IHRoZW4gYnkgYWxsIG1lYW5zIHJlbW92ZSBpdC4K PiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gTm9uZSBvZiB0aGVzZSBlbnRyaWVzIGFy ZSB1c2VkIGFsb25lIGZvciBjb2hlcmVudAo+ID4gPiA+ID4gPiA+ID4gc3VyZmFjZXMuIEZvcgo+ ID4gPiA+ID4gPiA+ID4gdGhhdAo+ID4gPiA+ID4gPiA+ID4gdGhlIGFwcGxpY2F0aW9uIHdvdWxk IGhhdmUgdG8gdXNlIGVudHJ5IGluZGV4IzEgb3IgIzIKPiA+ID4gPiA+ID4gPiA+IF9hbmRfCj4g PiA+ID4gPiA+ID4gPiBjYWxsIHRoZQo+ID4gPiA+ID4gPiA+ID4gc2V0IGNhY2hpbmcgSU9DVEwg dG8gc2V0IHRoZSBjb3JyZXNwb25kaW5nIGJ1ZmZlciB0byBiZQo+ID4gPiA+ID4gPiA+ID4gY2Fj aGVkLgo+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+IE5vLCB0aGUgYXBwbGljYXRpb24gZG9l c24ndC4gVGhlcmUgYXJlIHN1ZmZpY2VudAo+ID4gPiA+ID4gPiA+IGludGVyZmFjZXMKPiA+ID4g PiA+ID4gPiBleHBvc2VkIHRoYXQKPiA+ID4gPiA+ID4gPiB1c2Vyc3BhY2UgY2FuIGJ5cGFzcyB0 aGUga2VybmVsIGlmIGl0IHNvIGRlc2lyZWQuCj4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4g PiBUaGUKPiA+ID4gPiA+ID4gPiA+IHByb2JsZW0gaXMgdGhhdCB3aXRob3V0IHNldHRpbmcgdGhl IGJ1ZmZlciB0byBiZQo+ID4gPiA+ID4gPiA+ID4gY2FjaGVhYmxlIHRoZQo+ID4gPiA+ID4gPiA+ ID4gZXhwZWN0YXRpb24gaXMgdGhhdCB3ZSB3b24ndCBiZSBzbm9vcGluZyBhbmQgaW5jdXIgdGhl Cj4gPiA+ID4gPiA+ID4gPiBjb3JyZXNwb25kaW5nCj4gPiA+ID4gPiA+ID4gPiBvdmVyaGVhZC4g VGhpcyBpcyB3aGF0IHRoaXMgcGF0Y2ggYWRkcmVzc2VzLgo+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ ID4gPiA+IE5vdCB0cnVlLgo+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gVGhlIGJpdCBp cyBhbHNvIGJvZ3VzLCBpZiB3ZSB3YW50ZWQgc25vb3BpbmcgdmlhIE1PQ1MKPiA+ID4gPiA+ID4g PiA+IHdlJ2QgdXNlCj4gPiA+ID4gPiA+ID4gPiB0aGUKPiA+ID4gPiA+ID4gPiA+IGRlZGljYXRl ZCBIVyBmbGFnIGZvciB0aGF0Lgo+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+IEJ1dCB5b3Ug a2VlcCBzYXlpbmcgdGhpcyBiaXQgKmVuYWJsZXMqIHNub29waW5nLiBTbwo+ID4gPiA+ID4gPiA+ IGVpdGhlciBpdAo+ID4gPiA+ID4gPiA+IGRvZXMgb3IgaXQKPiA+ID4gPiA+ID4gPiBkb2Vzbid0 Lgo+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gSWYgd2Ugd2FudGVkIHRvIGhhdmUgYSBz bm9vcGluZyBNT0NTIGVudHJ5IHdlIHNob3VsZAo+ID4gPiA+ID4gPiA+ID4gYWRkIHRoYXQKPiA+ ID4gPiA+ID4gPiA+IHNlcGFyYXRlbHkgKGFzIGEgZm9ydGggZW50cnkpLCBidXQgd2UnZCBuZWVk IHRoaXMKPiA+ID4gPiA+ID4gPiA+IGNoYW5nZSBhcyBhCj4gPiA+ID4gPiA+ID4gPiBmaXggZm9y Cj4gPiA+ID4gPiA+ID4gPiBjdXJyZW50IHVzZXJzLgo+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4g PiA+IFRoZSBjdXJyZW50IHVzZXJzIHdobyBhcmUgZ2V0dGluZyB3aGF0IHRoZXkgcmVxdWVzdCBi dXQKPiA+ID4gPiA+ID4gPiBkb24ndAo+ID4gPiA+ID4gPiA+IGtub3cgd2hhdAo+ID4gPiA+ID4g PiA+IHRoZXkgd2VyZSByZXF1ZXN0aW5nPwo+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gV2hhdCB0 aGlzIGtlcm5lbCBBQkkgKGluZGV4IGVudHJ5ICMyKSBoYXMgYmVlbiBhZ3JlZWQgJgo+ID4gPiA+ ID4gPiBkb2N1bWVudGVkCj4gPiA+ID4gPiA+IHRvIHByb3ZpZGU/Cj4gPiA+ID4gPiAKPiA+ID4g PiA+IFRoZSBBQkkgaXMgd2hhdCB3ZSBhZ3JlZSBtYWtlcyBzZW5zZSBiZXR3ZWVuIGhhcmR3YXJl IC8KPiA+ID4gPiA+IGtlcm5lbCAvCj4gPiA+ID4gPiB1c2Vyc3BhY2UsIGFuZCB0aGVuIHdlIHN0 aWNrIHRvIGl0Lgo+ID4gPiA+ID4gCj4gPiA+ID4gPiA+IEkgdGhvdWdodCB0aGlzIGVudHJ5IGlz IHN1cHBvc2VkIHRvIHJlcGxhY2UgdGhlIHdyaXRlYmFjawo+ID4gPiA+ID4gPiBMTEMvZUxMQwo+ ID4gPiA+ID4gPiBjYWNoZSBNT0NTIHNldHRpbmcgTWVzYSBpcyB1c2luZyBvbiAoZS5nLiBCRFcp IHRvIHNwZWVkIHVwCj4gPiA+ID4gPiA+IGFjY2Vzc2VzCj4gPiA+ID4gPiA+IHRvIGEgbWVtb3J5 IGFyZWEgd2hpY2ggaXQga25vd3MgYWx3YXlzIHRvIGJlIGFjY2Vzc2VkIHNvCj4gPiA+ID4gPiA+ IHRoYXQgaXQKPiA+ID4gPiA+ID4gY2FuCj4gPiA+ID4gPiA+IGJlIGNhY2hlZC4KPiA+ID4gPiA+ IAo+ID4gPiA+ID4gV2hpY2ggaXQgZG9lcy4uLiBPbmx5IGl0IHNwZWVkcyB1cyB3cml0ZWJhY2sg ZnJvbSB0aGUgQ1BVLAo+ID4gPiA+ID4gbm90IHRoZQo+ID4gPiA+ID4gR1BVLiA7KQo+ID4gPiA+ ID4gCj4gPiA+ID4gPiBUaGUgY29uZnVzaW9uIHNlZW1zIHRvIGJlIGluIG1pc3Rha2luZyAhbGxj IGZvciBsbGMuIFdlIGhhdmUKPiA+ID4gPiA+IHRvIGNvbWUKPiA+ID4gPiA+IHRvCj4gPiA+ID4g PiBzb21lIGFncmVlbWVudCBvbiB3aGV0aGVyIGl0IG1ha2VzIHNlbnNlIGhhdmluZyBtdWx0aXBs ZQo+ID4gPiA+ID4gZW50cmllcyBmb3IKPiA+ID4gPiA+IHRoZQo+ID4gPiA+ID4gc2FtZSBmb2xs b3dzLVBURSBtb2NzIG9yIHdoZXRoZXIgaXQgbWFrZXMgbW9yZSBzZW5zZSB0bwo+ID4gPiA+ID4g ZXhwb3NlIHRoZSBodwo+ID4gPiA+ID4gY2FwYWJpbHRpZXMuCj4gPiA+ID4gCj4gPiA+ID4gTm90 ZSB0aGF0IHdlIGNhbid0IGp1c3Qgc2F5IHRvIE1lc2EgdG8gdXNlIGluZGV4ICMwIG9uIEJYVAo+ ID4gPiA+IGluc3RlYWQgb2YKPiA+ID4gPiBpbmRleCAjMiwgc2luY2UgaW5kZXggIzAgdHVybnMg b2ZmIGNhY2hpbmcgaW4gR1BVIEwzLCBzbyB3ZSdkCj4gPiA+ID4gaGF2ZSB0bwo+ID4gPiA+IGFs c28gcmVkZWZpbmUgdGhhdCB0byBiZSBMMyBjYWNoZWQuIEFuZCBJIGRvbid0IGtub3cgd2hhdAo+ ID4gPiA+IHR1cm5pbmcgb24gTDMKPiA+ID4gPiBjYWNoaW5nIGZvciBpbmRleCAjMCB3b3VsZCBi cmVhaywgSSB3b3VsZCByYXRoZXIgYXZvaWQgZG9pbmcKPiA+ID4gPiB0aGF0LiBJbW8KPiA+ID4g PiBkZWZpbmluZyB0aGUgZW50cmllcyB0aGUgZm9sbG93aW5nIHdheSB3b3VsZCBhbGxvdyB1cyB0 byB1c2UKPiA+ID4gPiB0aGUgc2FtZQo+ID4gPiA+IGluZGV4ZXMgb24gR0VOOSByZWdhcmRsZXNz IG9mIGl0IGJlaW5nIFNLTCBvciBCWFQ6Cj4gPiA+ID4gIzA6IHVuY2FjaGVkIChuZWl0aGVyIGlu IEwzIG5vciBpbiAoZSlMTEMpCj4gPiA+ID4gIzE6IFBURSBwYXNzdGhyb3VnaAo+ID4gPiAKPiA+ ID4gU28gb3VyIHJlbmRlcmNweSBpbiBpZ3QgZG9lcyBzZXQgTU9DUyBlbnRyeSAxLiBPciBob3cg ZXhhY3RseSBkbwo+ID4gPiBhbGwgdGhlCj4gPiA+IHNldF9jYWNoaW5nIHZzLiByZW5kZXJjcHkg dGVzdHMgd2UgY3VycmVudGx5IGhhdmUgcGFzcz8gSnVzdCBub3Q/Cj4gPiAKPiA+IFdlIGRvbid0 IGhhdmUgdGVzdHMgZm9yIGNvaGVyZW50IHN1cmZhY2VzLiBUaGUgY3VycmVudCByZW5kZXJjcHkK PiA+IHRlc3QKPiA+IGp1c3QgdXNlcyB1bmNhY2hlZCBidWZmZXJzLCBzbyB0aGV5IGFyZSBmbHVz aGVkIGJlZm9yZSBjaGVja2luZyB0aGUKPiA+IHJlc3VsdC4gSSBjb3VsZCBhZGQgYSBuZXcgc3Vi dGVzdCB0byByZW5kZXJjcHkgdG8gdGVzdCB3aXRoIGEKPiA+IGNhY2hlZC9jb2hlcmVudCBzdXJm YWNlLgo+ID4gCj4gPiA+IEFsc28sIHlvdSdyZSBndWFyYW5hdGVlaW5nIHRoYXQgb3BlbmNsL2xp YnZhIGRvbid0IHNjcmV3IHRoaXMgdXAKPiA+ID4gZWl0aGVyPwo+ID4gCj4gPiBJZiB0aGV5IGRv bid0IHNldCB0aGUgZ2l2ZW4gYnVmZmVyIHRvIGJlIGNhY2hlZCB2aWEgdGhlIHNldF9jYWNoaW5n Cj4gPiBJT0NUTCAoYXMgYSBjb25zZXF1ZW5jZSBtYWtpbmcgdGhlbSBjb2hlcmVudCkgdGhleSBh cmUgYWxyZWFkeQo+ID4gc2NyZXdlZAo+ID4gb24gQ0hWLiBJZiB0aGV5IGNhbGwgdGhlIElPQ1RM IHRoZXkgYXJlIGZpbmUgb24gQlhUIHRvby4KPiAKPiBXZSBkbyBpbXBsaWNpdCBzZXRfY2FjaGlu ZyB3aGVuIGRpc3BsYXlpbmcgc29tZXRoaW5nIHRvIHNvbWV0aGluZwo+IGNvaGVyZW50LiBUbyBt YWtlIHRoYXQgd29yayB1c2Vyc3BhY2Ugc2hvdWxkIHVzZSB0aGUgInVzZSBQVEUiIG1vZGUgYnkK PiBkZWZhdWx0LCBleGNlcHQgd2hlbiB0aGV5IHJlYWxseSBrbm93IHdoYXQgdGhleSdyZSBkb2lu Zy4KPiBUaGF0J3MgYWxzbyB0aGUgbW9kZSB0aGF0J3Mgc3VwcG9zZWQgdG8gZ2l2ZSB5b3UgdGhl IG1vc3QgcmVhc29uYWJsZQo+IHBlcmZvcm1hbmNlLiBCdXQgc29tZWhvdyB0aGF0IG1vZGUgZW5k ZWQgdXAgaW4gTU9DUyBlbnRyeSAxLCBzbyBwcmV0dHkgbXVjaAo+IGd1YXJhbnRlZWQgdXNlcnNw YWNlIHdpbGwgZ2V0IGl0IHdyb25nLiBNZXNhIGp1c3QgaGl0IGEgcGVyZiBzbmFnLCBidXQKPiBt aWdodCBhcyB3ZWxsIGhhdmUgYmVlbiB2aXN1YWwgY29ycnVwdGlvbi4gSSB0aGluayBpdCdkIGJl IGEgbG90IHNhZmUgdG8KPiBtYWtlICJ1c2UgUFRFIiBlbnRyeSAwLgoKTWVzYSB1c2VzIGVudHJp ZXMgMSBhbmQgMi4gSWYgc29tZXRoaW5nIGVsc2UgbGlrZSBvcGVuY2wgb3IgbGlidmEgKG9yCmV2 ZW4gTWVzYSBmb3IgdGhhdCBtYXR0ZXIpIHVzZXMgaW5kZXggMCBmb3IgUFRFIHBhc3MtdGhyb3Vn aCB0aGF0J3MgYQpidWcgb24gaXRzIG93bi4gSSBkb24ndCBrbm93IGlmIHRoaXMgaXMgdGhlIGNh c2UsIGJ1dCBpdCdzIGEgc2VwYXJhdGUKaXNzdWUgZnJvbSB3aGF0IEknbSB0cnlpbmcgdG8gZml4 IGhlcmUuCgpUaGlzIGlzbid0IGFib3V0IGEgY2FzZSB3aGVyZSBhIFBURSBwYXNzLXRocm91Z2gg ZW50cnkgbmVlZHMgdG8gYmUKcHJvdmlkZWQsIGJ1dCBhYm91dCB0aGUgY2FzZSB3aGVyZSBhIGNh Y2hlZCBidXQgbm9uLWNvaGVyZW50IG9uZSBpcwpuZWVkZWQuIE1lc2EgYXNzdW1lcyB0aGlzIHRv IGJlIGVudHJ5IDIgYW5kIEkgZG9uJ3Qgc2VlIHdoeSB3ZSBjb3VsZG4ndAptYWtlIHN1cmUgdGhh dCB0aGlzIGFzc3VtcHRpb24gaG9sZHMuIE5vdGUgdGhhdCB0aGlzIGVudHJ5IG9uIEJYVCBjb3Vs ZApiZSBib3RoIGEgUFRFIHBhc3MtdGhyb3VnaCBvbmUgYXMgaW4gdGhpcyBwYXRjaCBvciBMTEMt VUMuCgotLUltcmUKCj4gPiA+IEl0J3MgVUFCSSwgYW5kIHdlJ3ZlIGJvdGNoZWQgaXQuIFNtZWxs cyBsaWtlIHdlIG5lZWQgdG8gaGF2ZSBhCj4gPiA+IGxvdCBtb3JlCj4gPiA+IHNvbGlkIHN0b3J5 IGFuZCBtYWtlIHN1cmUgd2UgZ2V0IHRoaXMgcmlnaHQgdGhpcyB0aW1lIGFyb3VuZC4KPiA+ID4g VGhlcmUncyBhbHNvCj4gPiA+IHRoZSAiaG93IGRvZXMgZG1hLWJ1ZiBtbWFwIHN1cHBvcnQgZml0 IGluIiBxdWVzdGlvbi4KPiA+ID4gCj4gPiA+IE9oIGFuZCBub3BlLCBub25lIG9mIHRoZSByZWxl dmFudCB0ZXN0Y2FzZXMgYXJlIGluIEJBVCBhdCBhbGwuCj4gPiA+IAo+ID4gPiA+ICMyOiBjYWNo ZWQgZXZlcnl3aGVyZSAoTDMgKyAoZSlMTEMgaWYgaXQgZXhpc3RzKSwgbm9uLWNvaGVyZW50Cj4g PiA+ID4gIzM6IGNhY2hlZCBldmVyeXdoZXJlLCBjb2hlcmVudAo+ID4gPiA+IAo+ID4gPiA+IEkn bSBub3Qgc3VyZSBpZiB0aGVyZSBpcyBldmVuIGEgdXNlciBmb3IgY29oZXJlbnQgc3VyZmFjZXMg YXRtLAo+ID4gPiA+IHNvIHRoZW4KPiA+ID4gPiB3ZSBjb3VsZCBkZWxheSBhZGRpbmcgIzMgdW50 aWwgaXQncyByZWFsbHkgbmVlZGVkLgo+ID4gPiAKPiA+ID4gVGhlIHByb2JsZW0gd2l0aCB0aGUg YWJvdmUgaXMgdGhhdCB0aGUgdmFyaW91cyBhY2Nlc3MgcGF0aHMgb24KPiA+ID4gU29DCj4gPiA+ ICh3aXRob3V0IExMQykgYW5kIGJpZyBjb3JlICh3aXRoIGxsYykgYXJlIG1hc3NpdmVseSBkaWZm ZXJlbnQuCj4gPiA+IFlvdSBuZWVkCj4gPiA+IGxvdHMgb2YgZGlmZmVyZW50IGNhc2VzIGluIHVw bG9hZC9kb3dubG9hZCBwYXRocyBmb3IgbWF4IHNwZWVkCj4gPiA+IGFueXdheS4KPiA+IAo+ID4g VGhlIGN1cnJlbnQgYXNzdW1wdGlvbiBldmVyeXdoZXJlIGluIHVzZXIgc3BhY2UgaXMgdGhlIGFi b3ZlIHRocmVlCj4gPiBlbnRyaWVzIHdpdGggdGhlaXIgZGVmaW5pdGlvbiBhYm92ZSBhcyBmYXIg YXMgSSBrbm93LiBUaGVyZSBhcmUgbm8KPiA+IHVzZXJzIHRoYXQgd291bGQgdXNlIGEgTU9DUyBl bnRyeSB0byBnZXQgYSBjb2hlcmVudCBzdXJmYWNlLCB3ZQo+ID4gY291bGQKPiA+IGFkZCB0aGF0 IGFzIGEgNHRoIGVudHJ5IG9uY2UgYSB1c2VyIGFyaXNlcy4KX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1n ZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==