From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lionel Landwerlin Subject: Re: [PATCH v6 0/5] drm/i915: Expose more GPU properties through sysfs Date: Wed, 13 Dec 2017 15:06:30 +0000 Message-ID: <8648f0e8-e6b3-396f-d06e-a337dc3d7312@intel.com> References: <20171204150238.28011-1-lionel.g.landwerlin@intel.com> <03194f3a-258b-a4bc-2b67-6c4ac992075f@linux.intel.com> <1512989417.5315.38.camel@linux.intel.com> <708a205b-9ab1-b332-6cdf-8183a44a02fa@linux.intel.com> <20171211210538.vrgo24htiz6aho5l@phenom.ffwll.local> <7ace9df4-0fb6-13c7-7ad6-8ceff52373eb@intel.com> <20171213081717.GE526@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20171213081717.GE526@phenom.ffwll.local> Content-Language: en-US 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@lists.freedesktop.org, dri-devel@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gMTMvMTIvMTcgMDg6MTcsIERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4gT24gVHVlLCBEZWMgMTIs IDIwMTcgYXQgMDI6MzM6MzhQTSArMDAwMCwgTGlvbmVsIExhbmR3ZXJsaW4gd3JvdGU6Cj4+IE9u IDEyLzEyLzE3IDExOjE5LCBUdnJ0a28gVXJzdWxpbiB3cm90ZToKPj4+IE9uIDExLzEyLzIwMTcg MjE6MDUsIERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4+Pj4gT24gTW9uLCBEZWMgMTEsIDIwMTcgYXQg MDI6Mzg6NTNQTSArMDAwMCwgVHZydGtvIFVyc3VsaW4gd3JvdGU6Cj4+Pj4+IE9uIDExLzEyLzIw MTcgMTA6NTAsIEpvb25hcyBMYWh0aW5lbiB3cm90ZToKPj4+Pj4+ICsgRGFuaWVsLCBDaHJpcwo+ Pj4+Pj4KPj4+Pj4+IE9uIFRodSwgMjAxNy0xMi0wNyBhdCAwOToyMSArMDAwMCwgVHZydGtvIFVy c3VsaW4gd3JvdGU6Cj4+Pj4+Pj4gT24gMDQvMTIvMjAxNyAxNTowMiwgTGlvbmVsIExhbmR3ZXJs aW4gd3JvdGU6Cj4+Pj4+Pj4+IEhpLAo+Pj4+Pj4+Pgo+Pj4+Pj4+PiBBZnRlciBkaXNjdXNzaW9u IHdpdGggQ2hyaXMsIEpvb25hcyAmIFR2cnRrbywgdGhpcyBzZXJpZXMgYWRkcyBhbgo+Pj4+Pj4+ PiBhZGRpdGlvbmFsIGNvbW1pdCB0byBsaW5rIHRoZSByZW5kZXIgbm9kZSBiYWNrIHRvIHRoZSBj YXJkIHRocm91Z2ggYQo+Pj4+Pj4+PiBzeW1saW5rLiBNYWtpbmcgaXQgb2J2aW91cyBmcm9tIGFu IGFwcGxpY2F0aW9uIHVzaW5nCj4+Pj4+Pj4+IGEgcmVuZGVyIG5vZGUgdG8KPj4+Pj4+Pj4ga25v dyB3aGVyZSB0byBnZXQgdGhlIGluZm9ybWF0aW9uIGl0IG5lZWRzLgo+Pj4+Pj4+IEltcG9ydGFu dCB0aGluZyB0byBtZW50aW9uIGFzIHdlbGwgaXMgdGhhdCBpdCBpcyB0cml2aWFsCj4+Pj4+Pj4g dG8gZ2V0IGZyb20gdGhlCj4+Pj4+Pj4gbWFzdGVyIGRybSBmZCB0byB0aGUgc3lzZnMgcm9vdCwg dmlhIGZzdGF0IGFuZCBvcGVuZGlyCj4+Pj4+Pj4gL3N5cy9kZXYvY2hhci88bWFqb3I+OjxtaW5v cj4uIFdpdGggdGhlIGFkZGl0aW9uIG9mIHRoZQo+Pj4+Pj4+IGNhcmQgc3ltbGluayB0bwo+Pj4+ Pj4+IHJlbmRlciBub2RlcyBpdCBpcyB0cml2aWFsIGZvciByZW5kZXIgbm9kZSBmZCBhcyB3ZWxs Lgo+Pj4+Pj4+Cj4+Pj4+Pj4gSSBhbSBoYXBweSB3aXRoIHRoaXMgYXBwcm9hY2ggLSBpdCBpcyBl eHRlbnNpYmxlLCBmbGV4aWJsZSBhbmQgYXZvaWRzCj4+Pj4+Pj4gaXNzdWVzIHdpdGggaW9jdGwg dmVyc2lvbmluZyBvciB3aGF0bm90LiBXaXRoIG9uZSB2YWx1ZQo+Pj4+Pj4+IHBlciBmaWxlIGl0 IGlzCj4+Pj4+Pj4gdHJpdmlhbCBmb3IgdXNlcnNwYWNlIHRvIGFjY2Vzcy4KPj4+Pj4+Pgo+Pj4+ Pj4+IFNvIGZvciB3aGF0IEknbSBjb25jZXJuZWQsIGdpdmVuIGhvdyBncHV0b3Agd291bGQgdXNl Cj4+Pj4+Pj4gYWxsIG9mIHRoaXMgYW5kIHNvCj4+Pj4+Pj4gYmUgdGhlIHVzZXJzcGFjZSwgaWYg ZXZlcnlvbmUgZWxzZSBpcyBoYXBweSwgSSB0aGluayB3ZSBjb3VsZCBkbyBhCj4+Pj4+Pj4gZGV0 YWlsZWQgcmV2aWV3IGFuZCBwcmVoYXBzIGFsc28gdGhpbmsgYWJvdXQgaW5jbHVkaW5nIGdwdXRv cCBpbiBzb21lCj4+Pj4+Pj4gZGlzdHJpYnV0aW9uIHRvIG1ha2UgdGhlIGNhc2UgMTAwJSBzdHJh aWdodGZvcndhcmQuCj4+Pj4+PiBGb3IgdGhlIEdQVSB0b3BvbG9neSBJIGFncmVlIHRoaXMgaXMg dGhlIHJpZ2h0IGNob2ljZSwgaXQncwo+Pj4+Pj4gZ29pbmcgdG8gYmUKPj4+Pj4+IGFib3V0IHRv cG9sb2d5IGFmdGVyIGFsbCwgYW5kIGRpcmVjdG9yeSB0cmVlIGlzIHRoZSBwZXJmZWN0IGNhbmRp ZGF0ZS4KPj4+Pj4+IEFuZCBpZiBhIG5ldyBwbGF0Zm9ybSBhcHBlYXJzLCB0aGVuIGl0J3MgYSBu ZXcgcGxhdGZvcm0gYW5kIG1heSBjaGFuZ2UKPj4+Pj4+IHRoZSB0b3BvbG9neSB3ZWxsIHRoZSBo YXJkd2FyZSB0b3BvbG9neSBoYXMgY2hhbmdlZC4KPj4+Pj4+Cj4+Pj4+PiBGb3IgdGhlIGVuZ2lu ZSBlbnVtZXJhdGlvbiwgSSdtIG5vdCBlcXVhbGx5IHNvbGQgZm9yIHN5c2ZzCj4+Pj4+PiBleHBv c2luZyBpdC4KPj4+Pj4+IEl0J3MgYSAibGluZWFyIGxpc3Qgb2YgZW5naW5lIGluc3RhbmNlcyB3 aXRoIGZsYWdzIiBob3cgdGhlIHVzZXJzcGFjZQo+Pj4+Pj4gaXMgZ29pbmcgdG8gYmUgbG9va2lu ZyBhdCB0aGVtLiBBbmQgaXQncyBhbHNvIGluZm9ybWF0aW9uCj4+Pj4+PiBhYm91dCB3aGF0IHRv Cj4+Pj4+PiBwYXNzIHRvIGFuIElPQ1RMIGFzIGFyZ3VtZW50cyBhZnRlciBkZWNpc2lvbiBoYXMg YmVlbiBtYWRlLCBhbmQgdGhlbgo+Pj4+Pj4geW91IGFscmVhZHkgaGF2ZSB0aGUgRkQgeW91IGtu b3cgeW91J2xsIGJlIGRlYWxpbmcgd2l0aCwgYXQgaGFuZC4gU28KPj4+Pj4+IGFub3RoZXIgSU9D VEwgZm9yIHRoYXQgc2VlbXMgbW9yZSBjb252ZW5pZW50Lgo+Pj4+PiBBcGFydCBmcm9tIG1vcmUg ZmxleGliaWxpdHkgYW5kIGVhc2llciB0byBleHRlbmQsIHN5c2ZzIG1pZ2h0IGJlCj4+Pj4+IGEg YmV0dGVyCj4+Pj4+IGZpdCBmb3IgYXBwbGljYXRpb25zIHdoaWNoIGRvIG5vdCBvdGhlcndpc2Ug bmVlZCBhIGRybSBmZC4gU2F5IGEKPj4+Pj4gdG9wLWxpa2UKPj4+Pj4gdG9vbCB3aGljaCBzaG93 cyBlbmdpbmUgdXRpbGl6YXRpb24sIG9yIHRob3NlIHBhdGNoZXMgSSBSRkMtZWQgcmVjZW50bHkK Pj4+Pj4gd2hpY2ggZG8gdGhlIHNhbWUgYnV0IHBlciBEUk0gY2xpZW50Lgo+Pj4+Pgo+Pj4+PiBP a2F5LCB0aGVzZSBzdGF0cyBhcmUgbm93IGF2YWlsYWJsZSBhbHNvIHZpYSBQTVUgc28gdGhlIGFy Z3VtZW50Cj4+Pj4+IGlzIG5vdCB0aGUKPj4+Pj4gc3Ryb25nZXN0IEkgYWRtaXQsIGJ1dCBJIHN0 aWxsIGZpbmQgaXQgcXVpdGUgbmVhdC4gSXQgYWxzbyBtaWdodAo+Pj4+PiBhbGxvdyB1cyB0bwo+ Pj4+PiBkZWZpbmUgb3VyIG93biBwb2xpY3kgd2l0aCByZWdhcmRzIHRvIG5lZWRlZCBwcml2aWxl Z2UgdG8gYWNjZXNzIHRoZXNlCj4+Pj4+IHN0YXRzLCBhbmQgbm90IGJlIGdvdmVybmVkIGJ5IHRo ZSBwZXJmIEFQSSBydWxlcy4KPj4+PiBIb3cgZXhhY3RseSBpcyBzeXNmcyBlYXNpZXIgdG8gZXh0 ZW5kIHRoYW4gaW9jdGw/IFRoZXJlJ3MgbG90cyBvZgo+Pj4gRWFzaWVyIGFzIGluIG5vIG5lZWQg dG8gdmVyc2lvbiwgYWRkIGhhc190aGlzL2hhc190aGF0IG1hcmtlcnMsIHRyeSB0bwo+Pj4gZ3Vl c3MgdG9kYXkgaG93IGJpZyBhIGZpZWxkIGZvciBzb21ldGhpbmcgbWlnaHQgYmUgbmVlZGVkIGlu IHRoZSBmdXR1cmUKPj4+IGFuZCBzaW1pbGFyLgo+Pj4KPj4+PiBzZXJpYWxpemluZyBhbmQgZGVz ZXJpYWxpemluZyBnb2luZyBvbiwgaW1lIHRoYXQncyBtb3JlIGJvaWxlcnBsYXRlLiBJbW8KPj4+ PiB0aGUgb25seSByZWFzb24gZm9yIHN5c2ZzIGlzIHdoZW4geW91IF9tdXN0XyBhY2Nlc3MgaXQg d2l0aG91dCBoYXZpbmcgYW4KPj4+PiBmZCB0byB0aGUgZ3B1LiBUaGUgaW52ZXJzZSBpcyBnZW5l cmFsbHkgbm90IHRydWUgKGkuZS4gdXNpbmcgc3lzZnMgd2hlbgo+Pj4+IHlvdSBoYXZlIHRoZSBm ZCBhbHJlYWR5KSwgYW5kIGFzIHNvb24gYXMgeW91IGFkZCBhIHdyaXRlYWJsZSBmaWVsZCBoZXJl Cj4+Pj4geW91J3JlIHNjcmV3ZWQgKGJlY2F1c2Ugc3lzZnMgY2FuJ3QgYmUgcGFzc2VkIHRvIGFu eW9uZSBlbHNlIGJ1dCByb290LAo+Pj4+IGNvbXBhcmVkIHRvIGRybSBmZCAtIHZpeiB0aGUgYmFj a2xpZ2h0IGZpYXNjbykuCj4+PiBJIHdvdWxkIHBlcmhhcHMgZXhwYW5kIHRoZSAibXVzdCBhY2Nl c3Mgd2l0aG91dCBoYXZpbmcgYSBkcm0gZmQiIHRvCj4+PiAibW9yZSBjb252ZW5pZW50IHRvIGFj Y2VzcyB3aXRob3V0IGEgZHJtIGZkIi4gTXkgdXNlIGNhc2UgaGVyZSB3YXMgdGhlCj4+PiBwZXIt Y2xpZW50IGVuZ2luZSB1c2FnZSBzdGF0cy4gRXF1aXZhbGVuY2Ugd2l0aCAvcHJvYy88cGlkPi9z dGF0LCBvcgo+Pj4gZXZlbiAvcHJvYy9zdGF0IGlmIHlvdSB3YW50LiBTbyBJIHdhcyBpbnRlcmVz dGVkIGluIGNyZWF0aW5nIGEgZm9vdGhvbGQKPj4+IGluIHN5c2ZzIGZvciB0aGF0IHB1cnBvc2Uu Cj4+Pgo+Pj4gTm8gd3JpdGFibGUgZmllbGRzIHdlcmUgaW1hZ2luZWQgaW4gYWxsIHRoZXNlIHR3 byB0byB0aHJlZSB1c2UgY2FzZXMuCj4+Pgo+Pj4+IEJ1dCBldmVuIHdpdGhvdXQgd3JpdGVhYmxl IGZpZWxkczogVGhpbmsgb2YgaGlnaGx5IGNvbnRhaW5lZAo+Pj4+IGNvbnRhaW5lcnMvY2xpZW50 cyB3aGljaCBvbmx5IGdldCB0aGUgZHJtIGZkIHRvIHJlbmRlci4gSWYgc3lzZnMgaXMKPj4+PiBn b25lLAo+Pj4+IHdpbGwgdGhleSBmYWxsIG9uIHRoZWlyIGZhY2VzPyBBdG0gImRybSBmZCBpcyBh bGwgeW91IG5lZWQiIGlzIHZlcnkKPj4+PiBkZWVwbHkKPj4+PiBpbmdyYWluZWQgaW50byBvdXIg dmFyaW91cyBPUyBzdGFja3MuCj4+PiBPa2F5LCB0aGlzIGlzIHNvbWV0aGluZyB3aGljaCB3YXMg bWVudGlvbmVkIGJ1dCBJIHRoaW5rIHRoZSBhbnN3ZXIgd2FzCj4+PiB1bmNsZWFyLiBJZiBjdXJy ZW50IHN0YWNrcyBkbyB3b3JrIHdpdGhvdXQgc3lzZnMgdGhlbiB0aGlzIGlzIGEgZ29vZAo+Pj4g YXJndW1lbnQgdG8ga2VlcCB0aGF0IGFiaWxpdHkuCj4+Pgo+Pj4gQXMgSSBzYWlkIEkgYW0gT0sg dG8gZHJvcCB0aGUgZW5naW5lIGluZm8gYml0cyBmcm9tIHRoaXMgc2VyaWVzLgo+Pj4gUXVlc3Rp b24gZm9yIExpb25lbCwgZ3B1LXRvcCBhbmQgTWVzYSB0aGVuIGlzIHdoZXRoZXIgc3lzZnMgd29y a3MgZm9yCj4+PiB0aGVtLCBmb3IgdGhlIHJlbWFpbmluZyB0b3BvbG9neSBpbmZvcm1hdGlvbi4g QXR0cmFjdGl2ZW5lc3Mgb2Ygc3lzZnMKPj4+IHRoZXJlIHdhcyB0aGF0IGl0IGxvb2tlZCBlYXNp ZXIgdG8gYmUgZnV0dXJlIHByb29mIGZvciBtb3JlIG9yIGxlc3MKPj4+IGh5cG90aGV0aWNhbCBm dXR1cmUgdG9wb2xvZ2llcy4KPj4gV2UgZGlkIGEgY291cGxlIG9mIHZlcnNpb25zIHdpdGggaW9j dGxzIDoKPj4KPj4gaHR0cHM6Ly9wYXRjaHdvcmsuZnJlZWRlc2t0b3Aub3JnL3BhdGNoLzE4NTk1 OS8gKHRocm91Z2ggR0VUX1BBUkFNKQo+PiBodHRwczovL3BhdGNod29yay5mcmVlZGVza3RvcC5v cmcvc2VyaWVzLzMzNDM2LyAodGhvdWdoIGEgbmV3IGRpc2NvdmVyeSB1QVBJCj4+IGluaXRpYWxs eSB0YXJnZXRlZCBhdCB0aGUgZW5naW5lIGRpc2NvdmVyeSkKPj4KPj4gRXZlbnR1YWxseSBDaHJp cyBzdWdnZXN0ZWQgc3lzZnMgKHdoaWNoIEkgZmluZCBraW5kIG9mIGNvbnZlbmllbnQpLCBldmVu Cj4+IHRob3VnaCB5b3UgRGFuaWVsIHJhaXNlZCBhIHZhbGlkIHBvaW50IHdpdGggc2FuZGJveGVk IHByb2Nlc3Nlcy4KPj4KPj4gSSBwZXJzb25hbGx5IGRvbid0IGNhcmUgbXVjaCBpbiB3aGljaCB3 YXkgdGhpcyBzaG91bGQgYmUgaW1wbGVtZW50ZWQuCj4+IEp1c3QgZ2l2ZSBtZSBzb21lIGRpcmVj dGlvbiA6KQo+Pgo+PiBEYW5pZWw6IFdvdWxkIHNvbWV0aGluZyBpbiB0aGUgc3R5bGUgb2YKPj4g aHR0cHM6Ly9wYXRjaHdvcmsuZnJlZWRlc2t0b3Aub3JnL3Nlcmllcy8zMzQzNi8gd29yaz8gSWYg eWVzLCB3aGF0IHdvdWxkIHlvdQo+PiByZWNvbW1lbmQgdG8gY2hhbmdlPwo+IHRiaCBJIGZlZWwg YmFkIGRlcmFpbGluZyB0aGlzIGV2ZW4gZnVydGhlciwgYnV0IEkgdGhpbmsgaWYgeW91IHdhbnQg YSBtb3JlCj4gZmxleGlibGUgcXVlcnkgaW9jdGwgdGhhdCdzIGVhc2llciB0byBleHRlbmQgd2Ug Y291bGQgbWF5YmUgbG9vayBhdCB0aGUKPiBjaHVuayBsaXN0IGFwcHJvYWNoIGFtZGdwdV9jc19p b2N0bCB1c2VzOiBBbGwgdGhlIG1hc3NpdmUgcGlsZSBvZiBleGVjYnVmCj4gbWV0YWRhdGEgaXMg c3VwcGxpZWQgaW4gYSBjaHVuayBsaXN0LCBhbmQgaWYgeW91IHdhbnQgdG8gZXh0ZW5kIG5ldyBz dHVmZiwKPiBvciBhZGQgYSBuZXcgdHlwZSwgeW91IGFkZCBhIG5ldyBjaHVua19pZC4gVGhlIGNo dW5rcyB0aGVtc2VsdmVzIGFyZSBhbGwKPiBsaW5lYXJpemVkIGludG8gb25lIGFsbG9jYXRpb24u Cj4KPiBXZSBjb3VsZCB1c2UgdGhlIGV4YWN0IHNhbWUgdHJpY2sgZm9yIG91dHB1dCwgYW5kIHJl cXVpcmUgdGhhdCB1c2Vyc3BhY2UKPiBzaW1wbHkganVtcHMgb3ZlciBjaHVua3MgaXQgZG9lc24n dCB1bmRlcnN0YW5kLiBQcm9udG8sIHlvdSBoYXZlIHlvdXIKPiBpbnN0YS1leHRlbnNpYmlsaXR5 Lgo+Cj4gSWYgeW91IHdhbnQgdG8gZ28gZmFuY3ksIGFkZCBhIGh1Z2UgZmxhZ3MgZmllbGRzIHNv IHlvdSBjYW4gc2VsZWN0IHdoYXQKPiBraW5kcyBvZiBjaHVua3MgeW91IHdhbnQgKHlvdSBuZWVk IHRoZSBmbGFncyBmaWVsZCBhbnl3YXlzKS4KPgo+IFF1ZXJ5aW5nIHdvdWxkIGJlIHRoZSB1c3Vh bCB0d28tc3RlcCBwcm9jZXNzOgo+Cj4gMS4gaW9jdGwgY2FsbCB3aXRoIGNodW5rX3NpemUgPT0g MCwgdG8gcXVlcnkgdGhlIGtlcm5lbCBob3cgbXVjaCB0aGUKPiBrZXJuZWwgc2hvdWxkIGFsbG9j YXRlLiBLZXJuZWwgd291bGQganVzdCB3YWxrIGFsbCB0aGUgYXZhaWxhYmxlIGNodW5rcwo+IGFu ZCBhZGQgdXAgKHdpdGggYSBiaXQgb2Ygc2VxX2ZpbGUgc3R5bGUgYWJzdHJhY3Rpb24gdGhpcyBj b3VsZCBsb29rIHZlcnkKPiBuZWF0LCBldmVuIHdoZW4gZGVhbGluZyB3aXRoIGh1Z2UgbnVtYmVy IG9mIGNodW5rcykuCj4KPiAyLiBVc2Vyc3BhY2UgYWxsb2NhdGVzIHN1ZmZpY2llbnQgYW1vdW50 cyBvZiBtZW1vcnkgZm9yIGFsbCB0aGUgY2h1bmtzIGl0Cj4gd2FudHMsIGNhbGxzIHRoZSBpb2N0 bCBhZ2Fpbiwga2VybmVsIGZpbGxzIHRoZW0gYWxsIG91dCBpbnRvIHRoaXMgc2luZ2xlCj4gb25l IGFycmF5Lgo+Cj4gQXNpZGU6IFZCVCBhbG1vc3Qgd29ya3MgbGlrZSB0aGF0IChtaW51cyB0aGUg ZmV3IHBsYWNlcyB0aGV5IHNjcmV3ZWQgdXAKPiBhbmQgeW91IG5lZWQgdG8ga25vdyB0aGUgc2l6 ZSBvZiB0aGUgbmV4dCBibG9jaykuCgpPa2F5LCBjb29sLiBMb29rcyBhIGxvdCBsaWtlIGhvdyBz b21lIHZ1bGthbiBlbnRyeXBvaW50cyB3b3JrLgpUaGF0J3MgYWxzbyBub3QgdG9vIGRpc3NpbWls YXIgZnJvbSB3aGF0IHdhcyBkb25lIGluIHRoZSBzZWNvbmQgaW9jdGwgCmF0dGVtcHQuCkkgZ3Vl c3MgSSBjb3VsZCByZW5hbWUgYSBmZXcgdGhpbmdzIGFuZCBkcm9wIHRoZSBlbmdpbmUgZGlzY292 ZXJ5IChhdCAKbGVhc3QgaW5pdGlhbGx5KSBhbmQgc3VibWl0IGFnYWluLgoKVGhhbmtzIQoKPgo+ IENoZWVycywgRGFuaWVsCj4KPj4gVGhhbmtzIQo+Pgo+PiAtCj4+IExpb25lbAo+Pgo+Pj4gUmVn YXJkcywKPj4+Cj4+PiBUdnJ0a28KPj4+Cj4+Pgo+Pj4+IC1EYW5pZWwKPj4+Pgo+Pj4+Pj4gU28g SSdkIHNheSBmb3IgdGhlIEdQVSB0b3BvbG9neSBwYXJ0LCB3ZSBnbyBmb3J3YXJkIHdpdGggdGhl Cj4+Pj4+PiByZXZpZXcgYW5kCj4+Pj4+PiBtYWtlIHN1cmUgd2UgZG9uJ3QgZXhwb3NlIGRyaXZl ciBpbnRlcm5hbCBiaXRzIHRoYXQgY291bGQgYnJlYWsgd2hlbgo+Pj4+Pj4gcmVmYWN0b3Jpbmcg Y29kZS4gSWYgdGhlIGV4cG9zZWQgTiBiaXRzIG9mIGluZm9ybWF0aW9uIGFyZSBzdHJpY3RseQo+ Pj4+Pj4gdGllZCB0byB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSwgd2Ugc2hvdWxkIGhhdmUgbm8g dHJvdWJsZSBtYWludGFpbmluZwo+Pj4+Pj4gdGhhdCBmb3IgdGhlIGZvcmVzZWVhYmxlIGZ1dHVy ZS4KPj4+Pj4+Cj4+Pj4+PiBUaGVuIHdlIGNhbiBjb250aW51ZSBvbiBhYm91dCB0aGUgZW5naW5l IGRpc2NvdmVyeSBpbiBwYXJhbGxlbCwgbm90Cj4+Pj4+PiBibG9ja2luZyBHUFUgdG9wb2xvZ3kg ZGlzY292ZXJ5Lgo+Pj4+PiBJIGNhbiBsaXZlIHdpdGggdGhhdCwgYnV0IHdvdWxkIGxpa2UgdG8g a2VlcCB0aGUgZ3QvZW5naW5lcy8gbmFtZXNwYWNlCj4+Pj4+IHJlc2VydmVkIGZvciB0aGUgZXZl bnR1YWxpdHkgd2l0aCBnbyB3aXRoIGVuZ2luZSBpbmZvIGluIHN5c2ZzCj4+Pj4+IGF0IGEgbGF0 ZXIKPj4+Pj4gc3RhZ2UgdGhlbi4KPj4+Pj4KPj4+Pj4gQWxzbywgTGlvbmVsLCBkaWQgeW91IGhh dmUgcGxhbnMgdG8gdXNlIHRoZSBlbmdpbmUgaW5mbyBzdHJhaWdodAo+Pj4+PiBhd2F5IGluIGdw dQo+Pj4+PiB0b3AsIG9yIHlvdSBvbmx5IG5lZWRlZCB0b3BvbG9neT8gSSB0aGluayB5b3Ugd2Vy ZSBkcmF3aW5nIGEgbmljZSBibG9jawo+Pj4+PiBkaWFncmFtIG9mIGEgR1BVIHNvIGRvIHlvdSBu ZWVkIGl0IGZvciB0aGF0Pwo+Pj4+Pgo+Pj4+PiBSZWdhcmRzLAo+Pj4+Pgo+Pj4+PiBUdnJ0a28K CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1n ZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK