From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lionel Landwerlin Subject: Re: [PATCH 4/4] drm/i915: expose rcs topology through discovery uAPI Date: Fri, 10 Nov 2017 16:37:33 +0000 Message-ID: References: <20171108162238.4072-1-lionel.g.landwerlin@intel.com> <20171108162238.4072-5-lionel.g.landwerlin@intel.com> <4bdf0c94-de73-1412-6dd8-8b039969e212@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id 4832B6E270 for ; Fri, 10 Nov 2017 16:37:35 +0000 (UTC) In-Reply-To: <4bdf0c94-de73-1412-6dd8-8b039969e212@linux.intel.com> 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: Tvrtko Ursulin , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gMDkvMTEvMTcgMTc6MzQsIFR2cnRrbyBVcnN1bGluIHdyb3RlOgo+Cj4gT24gMDgvMTEvMjAx NyAxNjoyMiwgTGlvbmVsIExhbmR3ZXJsaW4gd3JvdGU6Cj4+IFdpdGggdGhlIGludHJvZHVjdGlv biBvZiBhc3ltZXRyaWMgc2xpY2VzIGluIENOTCwgd2UgY2Fubm90IHJlbHkgb24KPj4gdGhlIHBy ZXZpb3VzIFNVQlNMSUNFX01BU0sgZ2V0cGFyYW0uIEhlcmUgd2UgaW50cm9kdWNlIGEgbW9yZSBk ZXRhaWxlZAo+PiB3YXkgb2YgcXVlcnlpbmcgdGhlIEdlbidzIEdQVSB0b3BvbG9neSB0aGF0IGRv ZXNuJ3QgYWdncmVnYXRlIG51bWJlcnMuCj4+Cj4+IFRoaXMgaXMgZXNzZW50aWFsIGZvciBtb25p dG9yaW5nIHBhcnRzIG9mIHRoZSBHUFUgd2l0aCB0aGUgT0EgdW5pdCwKPj4gYmVjYXVzZSBjb3Vu dGVycyBuZWVkIHRvIGJlIG5vcm1hbGl6ZWQgdG8gdGhlIG51bWJlciBvZgo+PiBFVXMvc3Vic2xp Y2VzL3NsaWNlcy4gVGhlIGN1cnJlbnQgYWdncmVnYXRlZCBudW1iZXJzIGxpa2UgRVVfVE9UQUwg ZG8KPj4gbm90IGdpdmVzIHVzIHN1ZmZpY2llbnQgaW5mb3JtYXRpb24uCj4+Cj4+IFRoaXMgY2hh bmdlIGludHJvZHVjZSBhIG5ldyB3YXkgdG8gcXVlcnkgcHJvcGVydGllcyBvZiB0aGUgR1BVLCBt YWtpbmcKPj4gcm9vbSBmb3IgbmV3IHF1ZXJpZXMgKHNvbWUgbWVkaWEgcmVsYXRlZCB0b3BvbG9n eSBjb3VsZCBiZSBleHBvc2VkIGluCj4+IHRoZSBmdXR1cmUpLgo+Pgo+PiBBcyBhIGJvbnVzIHdl IGNhbiBkcmF3IHJlcHJlc2VudGF0aW9ucyBvZiB0aGUgR1BVIDoKPj4KPj4gwqDCoMKgwqDCoMKg wqDCoCBodHRwczovL2ltZ3VyLmNvbS9hL3Z1cXBhCj4+Cj4+IFNpZ25lZC1vZmYtYnk6IExpb25l bCBMYW5kd2VybGluIDxsaW9uZWwuZy5sYW5kd2VybGluQGludGVsLmNvbT4KPj4gLS0tCj4+IMKg IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3F1ZXJ5X2luZm8uYyB8IDY0IAo+PiArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysKPj4gwqAgaW5jbHVkZS91YXBpL2RybS9pOTE1X2Ry bS5owqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNTUgCj4+ICsrKysrKysrKysrKysrKysrKysr KysrKysrKysKPj4gwqAgMiBmaWxlcyBjaGFuZ2VkLCAxMTkgaW5zZXJ0aW9ucygrKQo+Pgo+PiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcXVlcnlfaW5mby5jIAo+PiBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3F1ZXJ5X2luZm8uYwo+PiBpbmRleCAyMTQzNGMz OTM1ODIuLjQ1YzViMjllMDk4OCAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcXVlcnlfaW5mby5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3F1 ZXJ5X2luZm8uYwo+PiBAQCAtMjUsNiArMjUsNjggQEAKPj4gwqAgI2luY2x1ZGUgImk5MTVfZHJ2 LmgiCj4+IMKgICNpbmNsdWRlIDx1YXBpL2RybS9pOTE1X2RybS5oPgo+PiDCoCArc3RhdGljIGlu dCBxdWVyeV9pbmZvX3Jjc190b3BvbG9neShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGRybV9p OTE1X3F1ZXJ5X2luZm8gKmFyZ3MpCj4+ICt7Cj4+ICvCoMKgwqAgY29uc3Qgc3RydWN0IHNzZXVf ZGV2X2luZm8gKnNzZXUgPSAmSU5URUxfSU5GTyhkZXZfcHJpdiktPnNzZXU7Cj4+ICvCoMKgwqAg c3RydWN0IGRybV9pOTE1X3Jjc190b3BvbG9neV9pbmZvIF9fdXNlciAqdXNlcl90b3BvbG9neSA9 Cj4+ICvCoMKgwqDCoMKgwqDCoCB1NjRfdG9fdXNlcl9wdHIoYXJncy0+aW5mb19wdHIpOwo+PiAr wqDCoMKgIHN0cnVjdCBkcm1faTkxNV9yY3NfdG9wb2xvZ3lfaW5mbyB0b3BvbG9neTsKPj4gK8Kg wqDCoCB1MzIgZGF0YV9zaXplLCB0b3RhbF9zaXplOwo+PiArwqDCoMKgIGNvbnN0IHU4ICpkYXRh ID0gTlVMTDsKPj4gK8KgwqDCoCBpbnQgcmV0Owo+PiArCj4+ICvCoMKgwqAgLyogTm90IHN1cHBv cnRlZCBvbiBnZW4gPCA4LiAqLwo+PiArwqDCoMKgIGlmIChzc2V1LT5tYXhfc2xpY2VzID09IDAp Cj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gLUVOT0RFVjsKPj4gKwo+PiArwqDCoMKgIHN3aXRj aCAoYXJncy0+cXVlcnlfcGFyYW1zWzBdKSB7Cj4+ICvCoMKgwqAgY2FzZSBJOTE1X1JDU19UT1BP TE9HWV9TTElDRToKPj4gK8KgwqDCoMKgwqDCoMKgIHRvcG9sb2d5LnBhcmFtc1swXSA9IHNzZXUt Pm1heF9zbGljZXM7Cj4+ICvCoMKgwqDCoMKgwqDCoCBkYXRhX3NpemUgPSBzaXplb2Yoc3NldS0+ c2xpY2VfbWFzayk7Cj4+ICvCoMKgwqDCoMKgwqDCoCBkYXRhID0gJnNzZXUtPnNsaWNlX21hc2s7 Cj4KPiBSZWdhcmRsZXNzIG9mIHRoZSBzb2x1dGlvbiwgeW91IHdpbGwgbmVlZCB0byB0cmFuc2xh dGUgdGhlIGludGVybmFsIAo+IGtlcm5lbCBkYXRhIGludG8gc29tZXRoaW5nIHN0cmljdGx5IGRl ZmluZWQgaW4gdGhlIHVBUEkgaGVhZGVycywgCj4gb3RoZXJ3aXNlIHdlIGxlYWsgaW50ZXJuYWwg b3JnYW5pemF0aW9uIGludG8gQUJJLgoKU3VyZSwgSSdsbCBhZGQgYW4gYXNzZXJ0IHRvIG1ha2Ug c3VyZSB0aGF0IGl0IGlzIHU4LCBzbyBpZiBpdCBkb2VzIApzd2l0Y2ggdG8gdTE2L3UzMiBhdCBz b21lIHBvaW50LCBwZW9wbGUgd2lsbCByZW1lbWJlciB0byBtYWludGFpbiB0aGUgQVBJLgoKPgo+ PiArwqDCoMKgwqDCoMKgwqAgYnJlYWs7Cj4+ICsKPj4gK8KgwqDCoCBjYXNlIEk5MTVfUkNTX1RP UE9MT0dZX1NVQlNMSUNFOgo+PiArwqDCoMKgwqDCoMKgwqAgdG9wb2xvZ3kucGFyYW1zWzBdID0g c3NldS0+bWF4X3NsaWNlczsKPj4gK8KgwqDCoMKgwqDCoMKgIHRvcG9sb2d5LnBhcmFtc1sxXSA9 IEFMSUdOKHNzZXUtPm1heF9zdWJzbGljZXMsIDgpIC8gODsKPj4gK8KgwqDCoMKgwqDCoMKgIGRh dGFfc2l6ZSA9IHNzZXUtPm1heF9zbGljZXMgKiB0b3BvbG9neS5wYXJhbXNbMV07Cj4+ICvCoMKg wqDCoMKgwqDCoCBkYXRhID0gc3NldS0+c3Vic2xpY2VzX21hc2s7Cj4+ICvCoMKgwqDCoMKgwqDC oCBicmVhazsKPj4gKwo+PiArwqDCoMKgIGNhc2UgSTkxNV9SQ1NfVE9QT0xPR1lfRVU6Cj4+ICvC oMKgwqDCoMKgwqDCoCB0b3BvbG9neS5wYXJhbXNbMl0gPSBBTElHTihzc2V1LT5tYXhfZXVzX3Bl cl9zdWJzbGljZSwgOCkgLyA4Owo+PiArwqDCoMKgwqDCoMKgwqAgdG9wb2xvZ3kucGFyYW1zWzFd ID0gc3NldS0+bWF4X3N1YnNsaWNlcyAqIHRvcG9sb2d5LnBhcmFtc1syXTsKPj4gK8KgwqDCoMKg wqDCoMKgIHRvcG9sb2d5LnBhcmFtc1swXSA9IHNzZXUtPm1heF9zbGljZXM7Cj4+ICvCoMKgwqDC oMKgwqDCoCBkYXRhX3NpemUgPSBzc2V1LT5tYXhfc2xpY2VzICogdG9wb2xvZ3kucGFyYW1zWzFd Owo+PiArwqDCoMKgwqDCoMKgwqAgZGF0YSA9IHNzZXUtPmV1X21hc2s7Cj4+ICvCoMKgwqDCoMKg wqDCoCBicmVhazsKPj4gKwo+PiArwqDCoMKgIGRlZmF1bHQ6Cj4+ICvCoMKgwqDCoMKgwqDCoCBy ZXR1cm4gLUVJTlZBTDsKPj4gK8KgwqDCoCB9Cj4+ICsKPj4gK8KgwqDCoCB0b3RhbF9zaXplID0g c2l6ZW9mKHRvcG9sb2d5KSArIGRhdGFfc2l6ZTsKPj4gKwo+PiArwqDCoMKgIGlmIChhcmdzLT5p bmZvX3B0cl9sZW4gPT0gMCkgewo+PiArwqDCoMKgwqDCoMKgwqAgYXJncy0+aW5mb19wdHJfbGVu ID0gdG90YWxfc2l6ZTsKPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiAwOwo+PiArwqDCoMKgIH0K Pj4gKwo+PiArwqDCoMKgIGlmIChhcmdzLT5pbmZvX3B0cl9sZW4gPCB0b3RhbF9zaXplKQo+PiAr wqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FSU5WQUw7Cj4+ICsKPj4gK8KgwqDCoCByZXQgPSBjb3B5 X3RvX3VzZXIodXNlcl90b3BvbG9neSwgJnRvcG9sb2d5LCBzaXplb2YodG9wb2xvZ3kpKTsKPj4g K8KgwqDCoCBpZiAocmV0KQo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FRkFVTFQ7Cj4+ICsK Pj4gK8KgwqDCoCByZXQgPSBjb3B5X3RvX3VzZXIodXNlcl90b3BvbG9neSArIDEsIGRhdGEsIGRh dGFfc2l6ZSk7Cj4+ICvCoMKgwqAgaWYgKHJldCkKPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiAt RUZBVUxUOwo+PiArCj4+ICvCoMKgwqAgcmV0dXJuIDA7Cj4+ICt9Cj4+ICsKPj4gwqAgc3RhdGlj IHU4IHVzZXJfY2xhc3NfbWFwW0k5MTVfRU5HSU5FX0NMQVNTX01BWF0gPSB7Cj4+IMKgwqDCoMKg wqAgW0k5MTVfRU5HSU5FX0NMQVNTX09USEVSXSA9IE9USEVSX0NMQVNTLAo+PiDCoMKgwqDCoMKg IFtJOTE1X0VOR0lORV9DTEFTU19SRU5ERVJdID0gUkVOREVSX0NMQVNTLAo+PiBAQCAtMTEyLDYg KzE3NCw4IEBAIGludCBpOTE1X3F1ZXJ5X2luZm9faW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRl diwgCj4+IHZvaWQgKmRhdGEsCj4+IMKgwqDCoMKgwqAgc3dpdGNoIChhcmdzLT5xdWVyeSkgewo+ PiDCoMKgwqDCoMKgIGNhc2UgSTkxNV9RVUVSWV9JTkZPX0VOR0lORToKPj4gwqDCoMKgwqDCoMKg wqDCoMKgIHJldHVybiBxdWVyeV9pbmZvX2VuZ2luZShkZXZfcHJpdiwgYXJncyk7Cj4+ICvCoMKg wqAgY2FzZSBJOTE1X1FVRVJZX0lORk9fUkNTX1RPUE9MT0dZOgo+PiArwqDCoMKgwqDCoMKgwqAg cmV0dXJuIHF1ZXJ5X2luZm9fcmNzX3RvcG9sb2d5KGRldl9wcml2LCBhcmdzKTsKPj4gwqDCoMKg wqDCoCBkZWZhdWx0Ogo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FSU5WQUw7Cj4+IMKg wqDCoMKgwqAgfQo+PiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oIGIv aW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oCj4+IGluZGV4IGM2MDI2NjE2MzAwZS4uNWI2YTg5 OTVhOTQ4IDEwMDY0NAo+PiAtLS0gYS9pbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJtLmgKPj4gKysr IGIvaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oCj4+IEBAIC0xNTY5LDYgKzE1NjksNjEgQEAg c3RydWN0IGRybV9pOTE1X2VuZ2luZV9pbmZvIHsKPj4gwqDCoMKgwqDCoCBfX3U4IHJzdmQyWzZd Owo+PiDCoCB9Owo+PiDCoCArLyogUXVlcnkgUkNTIHRvcG9sb2d5Lgo+PiArICoKPj4gKyAqIGRy bV9pOTE1X3F1ZXJ5X2luZm8ucXVlcnlfcGFyYW1zWzBdIHNob3VsZCBiZSBzZXQgdG8gb25lIG9m IHRoZQo+PiArICogSTkxNV9SQ1NfVE9QT0xPR1lfKiBkZWZpbmUuCj4+ICsgKgo+PiArICogZHJt X2k5MTVfZ2VtX3F1ZXJ5X2luZm8uaW5mb19wdHIgd2lsbCBiZSB3cml0dGVuIHRvIHdpdGgKPj4g KyAqIGRybV9pOTE1X3Jjc190b3BvbG9neV9pbmZvLgo+PiArICovCj4+ICsjZGVmaW5lIEk5MTVf UVVFUllfSU5GT19SQ1NfVE9QT0xPR1nCoMKgwqAgMSAvKiB2ZXJzaW9uIDEgKi8KPj4gKwo+PiAr LyogUXVlcnkgUkNTIHNsaWNlIHRvcG9sb2d5Cj4+ICsgKgo+PiArICogVGhlIG1lYW5pbmcgb2Yg dGhlIGRybV9pOTE1X3Jjc190b3BvbG9neV9pbmZvIGZpZWxkcyBpcyA6Cj4+ICsgKgo+PiArICog cGFyYW1zWzBdOiBudW1iZXIgb2Ygc2xpY2VzCj4+ICsgKgo+PiArICogZGF0YTogRWFjaCBiaXQg aW5kaWNhdGVzIHdoZXRoZXIgYSBzbGljZSBpcyBhdmFpbGFibGUgKDEpIG9yIAo+PiBmdXNlZCBv ZmYgKDApLgo+PiArICogRm9ybXVsYSB0byB0ZWxsIGlmIHNsaWNlIFggaXMgYXZhaWxhYmxlIDoK Pj4gKyAqCj4+ICsgKsKgwqDCoMKgwqDCoMKgwqAgKGRhdGFbWCAvIDhdID4+IChYICUgOCkpICYg MQo+PiArICovCj4+ICsjZGVmaW5lIEk5MTVfUkNTX1RPUE9MT0dZX1NMSUNFwqDCoMKgwqDCoMKg wqAgMCAvKiB2ZXJzaW9uIDEgKi8KPj4gKy8qIFF1ZXJ5IFJDUyBzdWJzbGljZSB0b3BvbG9neQo+ PiArICoKPj4gKyAqIFRoZSBtZWFuaW5nIG9mIHRoZSBkcm1faTkxNV9yY3NfdG9wb2xvZ3lfaW5m byBmaWVsZHMgaXMgOgo+PiArICoKPj4gKyAqIHBhcmFtc1swXTogbnVtYmVyIG9mIHNsaWNlcwo+ PiArICogcGFyYW1zWzFdOiBzbGljZSBzdHJpZGUKPj4gKyAqCj4+ICsgKiBkYXRhOiBlYWNoIGJp dCBpbmRpY2F0ZXMgd2hldGhlciBhIHN1YnNsaWNlIGlzIGF2YWlsYWJsZSAoMSkgb3IgCj4+IGZ1 c2VkIG9mZgo+PiArICogKDApLiBGb3JtdWxhIHRvIHRlbGwgaWYgc2xpY2UgWCBzdWJzbGljZSBZ IGlzIGF2YWlsYWJsZSA6Cj4+ICsgKgo+PiArICrCoMKgwqDCoMKgwqDCoMKgIChkYXRhWyhYICog cGFyYW1zWzFdKSArIFkgLyA4XSA+PiAoWSAlIDgpKSAmIDEKPj4gKyAqLwo+PiArI2RlZmluZSBJ OTE1X1JDU19UT1BPTE9HWV9TVUJTTElDRcKgwqDCoCAxIC8qIHZlcnNpb24gMSAqLwo+PiArLyog UXVlcnkgUkNTIEVVIHRvcG9sb2d5Cj4+ICsgKgo+PiArICogVGhlIG1lYW5pbmcgb2YgdGhlIGRy bV9pOTE1X3Jjc190b3BvbG9neV9pbmZvIGZpZWxkcyBpcyA6Cj4+ICsgKgo+PiArICogcGFyYW1z WzBdOiBudW1iZXIgb2Ygc2xpY2VzCj4+ICsgKiBwYXJhbXNbMV06IHNsaWNlIHN0cmlkZQo+PiAr ICogcGFyYW1zWzJdOiBzdWJzbGljZSBzdHJpZGUKPj4gKyAqCj4+ICsgKiBkYXRhOiBFYWNoIGJp dCBpbmRpY2F0ZXMgd2hldGhlciBhIHN1YnNsaWNlIGlzIGF2YWlsYWJsZSAoMSkgb3IgCj4+IGZ1 c2VkIG9mZgo+PiArICogKDApLiBGb3JtdWxhIHRvIHRlbGwgaWYgc2xpY2UgWCBzdWJzbGljZSBZ IGV1IFogaXMgYXZhaWxhYmxlIDoKPj4gKyAqCj4+ICsgKsKgwqDCoMKgwqDCoMKgwqAgKGRhdGFb WCAqIHBhcmFtc1sxXSArIFkgKiBwYXJhbXNbMl0gKyBaIC8gOF0gPj4gKFogJSA4KSkgJiAxCj4+ ICsgKi8KPj4gKyNkZWZpbmUgSTkxNV9SQ1NfVE9QT0xPR1lfRVXCoMKgwqDCoMKgwqDCoCAyIC8q IHZlcnNpb24gMSAqLwo+PiArCj4+ICtzdHJ1Y3QgZHJtX2k5MTVfcmNzX3RvcG9sb2d5X2luZm8g ewo+PiArwqDCoMKgIF9fdTMyIHBhcmFtc1s2XTsKPj4gKwo+PiArwqDCoMKgIF9fdTggZGF0YVtd Owo+Cj4gWW91IGRvbid0IHVzZSB0aGlzIG1hcmtlciBpbiB0aGUgcGF0Y2guCj4KPiBCdXQgaW4g Z2VuZXJhbCB3b3VsZCBpdCBiZSBmZWFzaWJsZSB0byBkZWZpbmUgYW5kIG5hbWUgdGhlIHJldHVy bmVkIAo+IGRhdGEgbW9yZSBwcmVjaXNlbHk/IExpa2U6Cj4KPiBzdHJ1Y3QgZHJtX2VuZ2luZV9y Y3NfZW5naW5lX2luZm8gewo+IMKgwqDCoMKgLi4uCj4gwqDCoMKgwqAvZXhpc3Rpbmdfc3R1ZmYv Cj4gwqDCoMKgwqAuLi4KPgo+ICNkZWZpbmUgSEFTX1RPUE9MT0dZCj4gwqDCoMKgwqB1MzIgZmxh Z3M7Cj4KPiDCoMKgwqDCoHN0cnVjdCB7Cj4gwqDCoMKgwqDCoMKgwqAgdTMyIHRoaXM7Cj4gwqDC oMKgwqDCoMKgwqAgdTMyIHRoYXQ7Cj4gwqDCoMKgwqDCoMKgwqAgLi4uCj4gwqDCoMKgwqDCoMKg wqAgdTggbWFza1tTT01FX0ZVVFVSRV9QUk9PRl9OVU1CRVJdOwo+IMKgwqDCoMKgfSBzbGljZV90 b3BvbG9neTsKPgo+IMKgwqDCoMKgc3RydWN0IHsKPiDCoMKgwqDCoMKgwqDCoCB1MzIgdGhpczsK PiDCoMKgwqDCoMKgwqDCoCB1MzIgdGhhdDsKPiDCoMKgwqDCoMKgwqDCoCAuLi4KPiDCoMKgwqDC oMKgwqDCoCB1OCBtYXNrW1NPTUVfRlVUVVJFX1BST09GX05VTUJFUl07Cj4gwqDCoMKgwqB9IHN1 YnNsaWNlX3RvcG9sb2d5Owo+Cj4gwqDCoMKgwqBzdHJ1Y3Qgewo+IMKgwqDCoMKgwqDCoMKgIHUz MiB0aGlzOwo+IMKgwqDCoMKgwqDCoMKgIHUzMiB0aGF0Owo+IMKgwqDCoMKgwqDCoMKgIC4uLgo+ IMKgwqDCoMKgwqDCoMKgIHU4IG1hc2tbU09NRV9GVVRVUkVfUFJPT0ZfTlVNQkVSXTsKPiDCoMKg wqDCoH0gZXVfdG9wb2xvZ3k7Cj4gfTsKCkknbSBwcmV0dHkgc3VyZSB3ZSdsbCBuZWVkIHRvIGV4 cG9zZSBtb3JlIHRoYW4gdGhlc2UgMyBwcm9wZXJ0aWVzIGhlcmUgCihzbGljZS9zdWJzbGljZS9l dXMpIHNvb24uClNvbWUgb2YgdGhlIGNvbXBvbmVudHMgcmVzaWRpbmcgaW4gdGhlIHN1YnNsaWNl IGNvdWxkIGJlIG9mIGludGVyZXN0LgpTbyBJJ20gcmVsdWN0YW50IHRvIGhhdmUgYWxsIG9mIHRo aXMgd2l0aGluIGEgc2luZ2xlIHN0cnVjdCB3aGljaCB3ZSAKY2FuJ3QgY2hhbmdlIHRoZSBzaXpl IG9mLgpIYXZpbmcgYW4gZW51bSBmb3IgZWFjaCBwcm9wZXJ0eSBhbmQgcG9zc2libHkgYW4gYXNz b2NpYXRlZCBzdHJ1Y3QgZm9yIAplYWNoIGlzIGZpbmUgdGhvdWdoLgoKPgo+IFRoYXQgc2FpZCwg cGVyaGFwcyBSQ1MgdG9wb2xvZ3kgYmVsb25ncyBtb3JlIHRvIHRoZSBHUFUgdGhhbiB0aGUgCj4g cmVuZGVyIGVuZ2luZS4KPgo+IFJlZ2FyZHMsCj4KPiBUdnJ0a28KPgo+PiArfTsKPj4gwqAgwqAg c3RydWN0IGRybV9pOTE1X3F1ZXJ5X2luZm8gewo+PiDCoMKgwqDCoMKgIC8qIGluL291dDogUHJv dG9jb2wgdmVyc2lvbiByZXF1ZXN0ZWQvc3VwcG9ydGVkLiBXaGVuIHNldCB0byAwLCAKPj4gdGhl Cj4+Cj4KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCklu dGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRw czovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=