From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id 6BCFB89247 for ; Mon, 8 Apr 2019 16:54:47 +0000 (UTC) References: <20190408161533.2421-1-andi.shyti@intel.com> <20190408161533.2421-3-andi.shyti@intel.com> From: Tvrtko Ursulin Message-ID: <1c87195a-5d14-5e43-414b-eab934a0cd67@linux.intel.com> Date: Mon, 8 Apr 2019 17:54:44 +0100 MIME-Version: 1.0 In-Reply-To: <20190408161533.2421-3-andi.shyti@intel.com> Content-Language: en-US Subject: Re: [igt-dev] [PATCH v19 2/6] lib/i915: add gem_engine_topology library and for_each loop definition List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: Andi Shyti , IGT dev Cc: Andi Shyti List-ID: Ck9uIDA4LzA0LzIwMTkgMTc6MTUsIEFuZGkgU2h5dGkgd3JvdGU6Cj4gVGhlIGdlbV9lbmdpbmVf dG9wb2xvZ3kgbGlicmFyeSBpcyBhIHNldCBvZiBmdW5jdGlvbnMgdGhhdAo+IGludGVyZmFjZSB3 aXRoIHRoZSBxdWVyeSBhbmQgZ2V0cGFyYW0vc2V0cGFyYW0gaW9jdGxzLgo+IAo+IFRoZSBsaWJy YXJ5J3MgYWNjZXNzIHBvaW50IGlzIHRoZSAnaW50ZWxfaW5pdF9lbmdpbmVfbGlzdCgpJwo+IGZ1 bmN0aW9uIHRoYXQsIGV2ZXJ5dGltZSBpcyBjYWxsZWQsIGdlbmVyYXRlcyB0aGUgbGlzdCBvZiBh Y3RpdmUKPiBlbmdpbmVzIGFuZCByZXR1cm5zIHRoZW0gaW4gYSAnc3RydWN0IGludGVsX2VuZ2lu ZV9kYXRhJy4gVGhlCj4gc3RydWN0dXJlIGNvbnRhaW5zIG9ubHkgdGhlIGVuZ2luZXMgdGhhdCBh cmUgYWN0aXZlbHkgcHJlc2VudCBpbgo+IHRoZSBHUFUuCj4gCj4gVGhlIGZ1bmN0aW9uIGNhbiB3 b3JrIGluIGJvdGggdGhlIGNhc2VzIHRoYXQgdGhlIHF1ZXJ5IGFuZAo+IGdldHBhcmFtIGlvY3Rs cyBhcmUgaW1wbGVtZW50ZWQgb3Igbm90IGJ5IHRoZSBydW5uaW5nIGtlcm5lbC4gSW4KPiBjYXNl IHRoZXkgYXJlIGltcGxlbWVudGVkLCBhIHF1ZXJ5IGlzIG1hZGUgdG8gdGhlIGRyaXZlciB0byBm ZXRjaAo+IHRoZSBsaXN0IG9mIGFjdGl2ZSBlbmdpbmVzLiBJbiBjYXNlIHRoZXkgYXJlIG5vdCBp bXBsZW1lbnRlZCwgdGhlCj4gbGlzdCBpcyB0YWtlbiBmcm9tIHRoZSAnaW50ZWxfZXhlY3V0aW9u X2VuZ2luZXMyJyBhcnJheSBhbmQKPiBzdG9yZWQgb25seSBhZnRlciBjaGVja2luZyB0aGVpciBw cmVzZW5jZS4KPiAKPiBUaGUgZ2VtX2VuZ2luZV90b3BvbG9neSBsaWJyYXJ5IHByb3ZpZGVzIHNv bWUgaXRlcmF0aW9uIGhlbHBlcnM6Cj4gCj4gICAtIGludGVsX2dldF9jdXJyZW50X2VuZ2luZSgp OiBwcm92aWRlcyB0aGUgY3VycmVudCBlbmdpbmUgaW4gdGhlCj4gICAgIGl0ZXJhdGlvbi4KPiAK PiAgIC0gaW50ZWxfZ2V0X2N1cnJlbnRfcGh5c2ljYWxfZW5naW5lKCk6IHByb3ZpZGVzIHRoZSBj dXJyZW50Cj4gICAgIHBoeXNpY2FsIGVuZ2luZSwgaWYgdGhlIGN1cnJlbnQgZW5naW5lIGlzIGEg dmlydHVhbCBlbmdpbmUsCj4gICAgIGl0IG1vdmVzIGZvcndhcmQgdW50aWwgaXQgZmluZHMgYSBw aHlzaWNhbCBlbmdpbmUuCj4gCj4gICAtIGludGVsX25leHRfZW5naW5lKCkgaXQganVzdCBpbmNy ZW1lbnRzIHRoZSBjb3VudGVyIHNvIHRoYXQgaXQKPiAgICAgcG9pbnRzIHRvIHRoZSBuZXh0IGVu Z2luZS4KPiAKPiBFeHRlbmQgdGhlICdmb3JfZWFjaF9lbmdpbmVfY2xhc3NfaW5zdGFuY2UnIHNv IHRoYXQgaXQgY2FuIGxvb3AKPiB1c2luZyB0aGUgbmV3ICdpbnRlbF9pbml0X2VuZ2luZV9saXN0 KCknIGFuZCByZW5hbWUgaXQgdG8KPiAnZm9yX2VhY2hfY29udGV4dF9lbmdpbmUnLgo+IAo+IE1v dmUgJ19fZm9yX2VhY2hfZW5naW5lX2NsYXNzX2luc3RhbmNlJyB0byBnZW1fZW5naW5lX3RvcG9s b2d5LmgKPiBhbmQgcmVuYW1lIGl0IHRvICdfX2Zvcl9lYWNoX3N0YXRpY19lbmdpbmUnLgo+IAo+ IFVwZGF0ZSBhY2NvcmRpbmdseSB0ZXN0cy9wZXJmX3BtdS5jIHRvIHVzZSBjb3JyZWN0bHkgdGhl IG5ldwo+IGZvcl9lYWNoIGxvb3BzLgo+IAo+IFNpZ25lZC1vZmYtYnk6IEFuZGkgU2h5dGkgPGFu ZGkuc2h5dGlAaW50ZWwuY29tPgo+IC0tLQo+ICAgbGliL01ha2VmaWxlLnNvdXJjZXMgICAgICAg ICAgIHwgICAyICsKPiAgIGxpYi9pOTE1L2dlbV9lbmdpbmVfdG9wb2xvZ3kuYyB8IDI4MSArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAgIGxpYi9pOTE1L2dlbV9lbmdpbmVfdG9w b2xvZ3kuaCB8ICA3OCArKysrKysrKysKPiAgIGxpYi9pZ3QuaCAgICAgICAgICAgICAgICAgICAg ICB8ICAgMSArCj4gICBsaWIvaWd0X2d0LmggICAgICAgICAgICAgICAgICAgfCAgIDIgKwo+ICAg bGliL21lc29uLmJ1aWxkICAgICAgICAgICAgICAgIHwgICAxICsKPiAgIDYgZmlsZXMgY2hhbmdl ZCwgMzY1IGluc2VydGlvbnMoKykKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvaTkxNS9nZW1f ZW5naW5lX3RvcG9sb2d5LmMKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvaTkxNS9nZW1fZW5n aW5lX3RvcG9sb2d5LmgKPiAKPiBkaWZmIC0tZ2l0IGEvbGliL01ha2VmaWxlLnNvdXJjZXMgYi9s aWIvTWFrZWZpbGUuc291cmNlcwo+IGluZGV4IGUwMDM0N2Y5NDVjNS4uNDEzMzFjMmYyYjgwIDEw MDY0NAo+IC0tLSBhL2xpYi9NYWtlZmlsZS5zb3VyY2VzCj4gKysrIGIvbGliL01ha2VmaWxlLnNv dXJjZXMKPiBAQCAtMTMsNiArMTMsOCBAQCBsaWJfc291cmNlX2xpc3QgPQkgCVwKPiAgIAlpOTE1 L2dlbV9yaW5nLmMJXAo+ICAgCWk5MTUvZ2VtX21tYW4uYwlcCj4gICAJaTkxNS9nZW1fbW1hbi5o CVwKPiArCWk5MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5jCVwKPiArCWk5MTUvZ2VtX2VuZ2luZV90 b3BvbG9neS5oCVwKPiAgIAlpOTE1XzNkLmgJCVwKPiAgIAlpOTE1X3JlZy5oCQlcCj4gICAJaTkx NV9wY2lpZHMuaAkJXAo+IGRpZmYgLS1naXQgYS9saWIvaTkxNS9nZW1fZW5naW5lX3RvcG9sb2d5 LmMgYi9saWIvaTkxNS9nZW1fZW5naW5lX3RvcG9sb2d5LmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0 NAo+IGluZGV4IDAwMDAwMDAwMDAwMC4uMDZmNTM4MzcyYTRkCj4gLS0tIC9kZXYvbnVsbAo+ICsr KyBiL2xpYi9pOTE1L2dlbV9lbmdpbmVfdG9wb2xvZ3kuYwo+IEBAIC0wLDAgKzEsMjgxIEBACj4g Ky8qCj4gKyAqIENvcHlyaWdodCDCqSAyMDE5IEludGVsIENvcnBvcmF0aW9uCj4gKyAqCj4gKyAq IFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVy c29uIG9idGFpbmluZyBhCj4gKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRl ZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCj4gKyAqIHRvIGRlYWwgaW4g dGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0 YXRpb24KPiArICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxp c2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCj4gKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0 aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQo+ICsgKiBTb2Z0 d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25k aXRpb25zOgo+ICsgKgo+ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBw ZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0Cj4gKyAqIHBhcmFncmFwaCkgc2hh bGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0 aGUKPiArICogU29mdHdhcmUuCj4gKyAqCj4gKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAi QVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCj4gKyAqIElN UExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVS Q0hBTlRBQklMSVRZLAo+ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQg Tk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKPiArICogVEhFIEFVVEhPUlMgT1Ig Q09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RI RVIKPiArICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9S VCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKPiArICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJ T04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUwo+ICsgKiBJ TiBUSEUgU09GVFdBUkUuCj4gKyAqLwo+ICsKPiArI2luY2x1ZGUgImRybXRlc3QuaCIKPiArI2lu Y2x1ZGUgImlvY3RsX3dyYXBwZXJzLmgiCj4gKwo+ICsjaW5jbHVkZSAiaTkxNS9nZW1fZW5naW5l X3RvcG9sb2d5LmgiCj4gKwo+ICtzdGF0aWMgaW50IF9fZ2VtX3F1ZXJ5KGludCBmZCwgc3RydWN0 IGRybV9pOTE1X3F1ZXJ5ICpxKQo+ICt7Cj4gKwlpbnQgZXJyID0gMDsKPiArCj4gKwlpZiAoaWd0 X2lvY3RsKGZkLCBEUk1fSU9DVExfSTkxNV9RVUVSWSwgcSkpCj4gKwkJZXJyID0gLWVycm5vOwo+ ICsKPiArCWVycm5vID0gMDsKPiArCXJldHVybiBlcnI7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lk IGdlbV9xdWVyeShpbnQgZmQsIHN0cnVjdCBkcm1faTkxNV9xdWVyeSAqcSkKPiArewo+ICsJaWd0 X2Fzc2VydF9lcShfX2dlbV9xdWVyeShmZCwgcSksIDApOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9p ZCBxdWVyeV9lbmdpbmVzKGludCBmZCwKPiArCQkJICBzdHJ1Y3QgZHJtX2k5MTVfcXVlcnlfZW5n aW5lX2luZm8gKnF1ZXJ5X2VuZ2luZXMsCj4gKwkJCSAgaW50IGxlbmd0aCkKPiArewo+ICsJc3Ry dWN0IGRybV9pOTE1X3F1ZXJ5X2l0ZW0gaXRlbSA9IHsgfTsKPiArCXN0cnVjdCBkcm1faTkxNV9x dWVyeSBxdWVyeSA9IHsgfTsKPiArCj4gKwlpdGVtLnF1ZXJ5X2lkID0gRFJNX0k5MTVfUVVFUllf RU5HSU5FX0lORk87Cj4gKwlxdWVyeS5pdGVtc19wdHIgPSB0b191c2VyX3BvaW50ZXIoJml0ZW0p Owo+ICsJcXVlcnkubnVtX2l0ZW1zID0gMTsKPiArCWl0ZW0ubGVuZ3RoID0gbGVuZ3RoOwo+ICsK PiArCWl0ZW0uZGF0YV9wdHIgPSB0b191c2VyX3BvaW50ZXIocXVlcnlfZW5naW5lcyk7Cj4gKwo+ ICsJZ2VtX3F1ZXJ5KGZkLCAmcXVlcnkpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBjdHhfbWFw X2VuZ2luZXMoaW50IGZkLCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2RhdGEgKmVkLAo+ICsJCQkgICAg c3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtICpwYXJhbSkKPiArewo+ICsJc3RydWN0 IGk5MTVfY29udGV4dF9wYXJhbV9lbmdpbmVzICplbmdpbmVzID0KPiArCQkJKHN0cnVjdCBpOTE1 X2NvbnRleHRfcGFyYW1fZW5naW5lcyAqKSBwYXJhbS0+dmFsdWU7Cj4gKwlpbnQgaSA9IDA7Cj4g Kwo+ICsJZm9yICh0eXBlb2YoZW5naW5lcy0+Y2xhc3NfaW5zdGFuY2VbMF0pICpwID0KPiArCSAg ICAgJmVuZ2luZXMtPmNsYXNzX2luc3RhbmNlWzBdOwo+ICsJICAgICBpIDwgZWQtPm5lbmdpbmVz OyBpKyssIHArKykgewo+ICsJCXAtPmVuZ2luZV9jbGFzcyA9IGVkLT5lbmdpbmVzW2ldLmNsYXNz Owo+ICsJCXAtPmVuZ2luZV9pbnN0YW5jZSA9IGVkLT5lbmdpbmVzW2ldLmluc3RhbmNlOwo+ICsJ fQo+ICsKPiArCXBhcmFtLT5zaXplID0gb2Zmc2V0b2YodHlwZW9mKCplbmdpbmVzKSwgY2xhc3Nf aW5zdGFuY2VbaV0pOwo+ICsJZW5naW5lcy0+ZXh0ZW5zaW9ucyA9IDA7Cj4gKwo+ICsJZ2VtX2Nv bnRleHRfc2V0X3BhcmFtKGZkLCBwYXJhbSk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGluaXRf ZW5naW5lKHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZTIsCj4gKwkJCWludCBjbGFz cywgaW50IGluc3RhbmNlLCB1aW50NjRfdCBmbGFncykKPiArewo+ICsJY29uc3Qgc3RydWN0IGlu dGVsX2V4ZWN1dGlvbl9lbmdpbmUyICpfX2UyOwo+ICsJc3RhdGljIGNvbnN0IGNoYXIgKnVua25v d25fbmFtZSA9ICJ1bmtub3duIiwKPiArCQkJICAqdmlydHVhbF9uYW1lID0gInZpcnR1YWwiOwo+ ICsKPiArCWUyLT5jbGFzcyAgICA9IGNsYXNzOwo+ICsJZTItPmluc3RhbmNlID0gaW5zdGFuY2U7 Cj4gKwllMi0+ZmxhZ3MgICAgPSBmbGFnczsKPiArCj4gKwkvKiBlbmdpbmUgaXMgYSB2aXJ0dWFs IGVuZ2luZSAqLwo+ICsJaWYgKGNsYXNzID09IEk5MTVfRU5HSU5FX0NMQVNTX0lOVkFMSUQpIHsK PiArCQllMi0+bmFtZSA9IHZpcnR1YWxfbmFtZTsKPiArCQllMi0+aXNfdmlydHVhbCA9IHRydWU7 Cj4gKwkJcmV0dXJuOwo+ICsJfQo+ICsKPiArCV9fZm9yX2VhY2hfc3RhdGljX2VuZ2luZShfX2Uy KQo+ICsJCWlmIChfX2UyLT5jbGFzcyA9PSBjbGFzcyAmJiBfX2UyLT5pbnN0YW5jZSA9PSBpbnN0 YW5jZSkKPiArCQkJYnJlYWs7Cj4gKwo+ICsJaWYgKF9fZTItPm5hbWUpIHsKPiArCQllMi0+bmFt ZSA9IF9fZTItPm5hbWU7Cj4gKwl9IGVsc2Ugewo+ICsJCWlndF93YXJuKCJmb3VuZCB1bmtub3du IGVuZ2luZSAoJWQsICVkKSIsIGNsYXNzLCBpbnN0YW5jZSk7Cj4gKwkJZTItPm5hbWUgPSB1bmtu b3duX25hbWU7Cj4gKwl9Cj4gKwo+ICsJLyoganVzdCB0byByZW1hcmsgaXQgKi8KPiArCWUyLT5p c192aXJ0dWFsID0gZmFsc2U7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIHF1ZXJ5X2VuZ2luZV9s aXN0KGludCBmZCwgc3RydWN0IGludGVsX2VuZ2luZV9kYXRhICplZCkKPiArewo+ICsJdWludDhf dCBidWZmW1NJWkVPRl9RVUVSWV0gPSB7IH07Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcXVlcnlfZW5n aW5lX2luZm8gKnF1ZXJ5X2VuZ2luZSA9Cj4gKwkJCShzdHJ1Y3QgZHJtX2k5MTVfcXVlcnlfZW5n aW5lX2luZm8gKikgYnVmZjsKPiArCWludCBpOwo+ICsKPiArCXF1ZXJ5X2VuZ2luZXMoZmQsIHF1 ZXJ5X2VuZ2luZSwgU0laRU9GX1FVRVJZKTsKPiArCj4gKwlmb3IgKGkgPSAwOyBpIDwgcXVlcnlf ZW5naW5lLT5udW1fZW5naW5lczsgaSsrKQo+ICsJCWluaXRfZW5naW5lKCZlZC0+ZW5naW5lc1tp XSwKPiArCQkJICAgIHF1ZXJ5X2VuZ2luZS0+ZW5naW5lc1tpXS5lbmdpbmVfY2xhc3MsCj4gKwkJ CSAgICBxdWVyeV9lbmdpbmUtPmVuZ2luZXNbaV0uZW5naW5lX2luc3RhbmNlLCBpKTsKPiArCj4g KwllZC0+bmVuZ2luZXMgPSBxdWVyeV9lbmdpbmUtPm51bV9lbmdpbmVzOwo+ICt9Cj4gKwo+ICtz dHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIKPiArKmludGVsX2dldF9jdXJyZW50X2VuZ2lu ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2RhdGEgKmVkKQo+ICt7CgpPdXIgY29kaW5nIHN0eWxlIGlz Cgp0eXBlICoKZnVuY19uYW1lKC4uKQoKKFRha2UgY2FyZSBvZiBhbGwgaW5zdGFuY2VzIGluIHNv dXJjZSBhbmQgaGVhZGVyLikKCj4gKwlpZiAoIWVkLT5uKQo+ICsJCWVkLT5jdXJyZW50X2VuZ2lu ZSA9ICZlZC0+ZW5naW5lc1swXTsKPiArCWVsc2UgaWYgKGVkLT5uID49IGVkLT5uZW5naW5lcykK PiArCQllZC0+Y3VycmVudF9lbmdpbmUgPSBOVUxMOwo+ICsKPiArCXJldHVybiBlZC0+Y3VycmVu dF9lbmdpbmU7Cj4gK30KPiArCj4gK3ZvaWQgaW50ZWxfbmV4dF9lbmdpbmUoc3RydWN0IGludGVs X2VuZ2luZV9kYXRhICplZCkKPiArewo+ICsJaWYgKGVkLT5uICsgMSA8IGVkLT5uZW5naW5lcykg ewo+ICsJCWVkLT5uKys7Cj4gKwkJZWQtPmN1cnJlbnRfZW5naW5lID0gJmVkLT5lbmdpbmVzW2Vk LT5uXTsKPiArCX0gZWxzZSB7Cj4gKwkJZWQtPmN1cnJlbnRfZW5naW5lID0gTlVMTDsKPiArCX0K PiArfQo+ICsKPiArc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyCj4gKyppbnRlbF9nZXRf Y3VycmVudF9waHlzaWNhbF9lbmdpbmUoc3RydWN0IGludGVsX2VuZ2luZV9kYXRhICplZCkKPiAr ewo+ICsJc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplOwo+ICsKPiArCWZvciAoZSA9 IGludGVsX2dldF9jdXJyZW50X2VuZ2luZShlZCk7Cj4gKwkgICAgIGUgJiYgZS0+aXNfdmlydHVh bDsKPiArCSAgICAgaW50ZWxfbmV4dF9lbmdpbmUoZWQpKQo+ICsJCTsKPiArCj4gKwlyZXR1cm4g ZTsKPiArfQo+ICsKPiArc3RhdGljIGludCBnZW1fdG9wb2xvZ3lfZ2V0X3BhcmFtKGludCBmZCwg dWludDMyX3QgY3R4LAo+ICsJCQkJICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW0g KnApCj4gK3sKPiArCWludCBuZW5naW5lczsKPiArCWludCByZXQ7Cj4gKwo+ICsJaWYgKGlndF9v bmx5X2xpc3Rfc3VidGVzdHMoKSkKPiArCQlyZXR1cm4gLUVQRVJNOwoKUHV6emxpbmcgY2hvaWNl IG9mIGVycm5vLCBub3QgdGhhdCBpdCBtYXR0ZXJzLCBidXQgSSBhbSB0ZW1wdGVkIHRvIApzdWdn ZXN0IC1FTk9ERVYuCgo+ICsKPiArCXJldCA9IF9fZ2VtX2NvbnRleHRfZ2V0X3BhcmFtKGZkLCBw KTsKPiArCWlmIChyZXQpCj4gKwkJcmV0dXJuIHJldDsKPiArCj4gKwluZW5naW5lcyA9IHAtPnNp emUgPiBzaXplb2Yoc3RydWN0IGk5MTVfY29udGV4dF9wYXJhbV9lbmdpbmVzKSA/Cj4gKwkJICAg KHAtPnNpemUgLSBzaXplb2Yoc3RydWN0IGk5MTVfY29udGV4dF9wYXJhbV9lbmdpbmVzKSkgLwo+ ICsJCSAgICgyICogc2l6ZW9mKF9fdTE2KSkgOgo+ICsJCSAgIDA7Cj4gKwo+ICsJaWd0X2Fzc2Vy dF9mKG5lbmdpbmVzIDw9IEdFTV9NQVhfRU5HSU5FUywgInVuc3VwcG9ydGVkIGVuZ2luZSBjb3Vu dFxuIik7Cj4gKwo+ICsJcmV0dXJuIG5lbmdpbmVzOwo+ICt9Cj4gKwo+ICtzdHJ1Y3QgaW50ZWxf ZW5naW5lX2RhdGEgaW50ZWxfaW5pdF9lbmdpbmVfbGlzdChpbnQgZmQsIHVpbnQzMl90IGN0eF9p ZCkKPiArewo+ICsJSTkxNV9ERUZJTkVfQ09OVEVYVF9QQVJBTV9FTkdJTkVTKGVuZ2luZXMsIEdF TV9NQVhfRU5HSU5FUyk7Cj4gKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2RhdGEgZW5naW5lX2RhdGEg PSB7IH07Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW0gcGFyYW0gPSB7Cj4g KwkJLnBhcmFtID0gSTkxNV9DT05URVhUX1BBUkFNX0VOR0lORVMsCj4gKwkJLmN0eF9pZCA9IGN0 eF9pZCwKPiArCQkuc2l6ZSA9IFNJWkVPRl9DVFhfUEFSQU0sCj4gKwkJLnZhbHVlID0gdG9fdXNl cl9wb2ludGVyKCZlbmdpbmVzKSwKPiArCX07Cj4gKwlpbnQgbmVuZ2luZXMgPSBnZW1fdG9wb2xv Z3lfZ2V0X3BhcmFtKGZkLCBjdHhfaWQsICZwYXJhbSk7Cj4gKwlpbnQgaTsKPiArCj4gKwlpZiAo bmVuZ2luZXMgPCAwKSB7Cj4gKwkJLyogaWYga2VybmVsIGRvZXMgbm90IHN1cHBvcnQgZW5naW5l L2NvbnRleHQgbWFwcGluZyAqLwo+ICsJCWNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5n aW5lMiAqZTI7Cj4gKwo+ICsJCWlndF9kZWJ1ZygidXNpbmcgcHJlLWFsbG9jYXRlZCBlbmdpbmUg bGlzdFxuIik7Cj4gKwo+ICsJCV9fZm9yX2VhY2hfc3RhdGljX2VuZ2luZShlMikgewo+ICsJCQlz dHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKl9fZTIgPQo+ICsJCQkJJmVuZ2luZV9kYXRh LmVuZ2luZXNbZW5naW5lX2RhdGEubmVuZ2luZXNdOwo+ICsKPiArCQkJaWYgKCFpZ3Rfb25seV9s aXN0X3N1YnRlc3RzKCkpIHsKPiArCQkJCV9fZTItPmZsYWdzID0gZ2VtX2NsYXNzX2luc3RhbmNl X3RvX2ViX2ZsYWdzKGZkLAo+ICsJCQkJCQllMi0+Y2xhc3MsIGUyLT5pbnN0YW5jZSk7CgpXb3Vs ZCBpdCBtYWtlIHNlbnNlIHRvICJwb2lzb24iIGZsYWdzIHdpdGggbGlrZSAtMSAod2hlbiBsaXN0 aW5nIApzdWJ0ZXN0cykgc28gYW55IG1pc3Rha2VzIHdvdWxkIG5ldmVyIGhhdmUgYSBjaGFuY2Ug dG8gd29yaz8KCj4gKwo+ICsJCQkJaWYgKCFnZW1faGFzX3JpbmcoZmQsIF9fZTItPmZsYWdzKSkK PiArCQkJCQljb250aW51ZTsKPiArCQkJfQo+ICsKPiArCQkJX19lMi0+bmFtZSAgICAgICA9IGUy LT5uYW1lOwo+ICsJCQlfX2UyLT5pbnN0YW5jZSAgID0gZTItPmluc3RhbmNlOwo+ICsJCQlfX2Uy LT5jbGFzcyAgICAgID0gZTItPmNsYXNzOwo+ICsJCQlfX2UyLT5pc192aXJ0dWFsID0gZmFsc2U7 Cj4gKwo+ICsJCQllbmdpbmVfZGF0YS5uZW5naW5lcysrOwo+ICsJCX0KPiArCQlyZXR1cm4gZW5n aW5lX2RhdGE7Cj4gKwl9Cj4gKwo+ICsJaWYgKCFwYXJhbS5zaXplKSB7Cj4gKwkJLyogZWxzZSBp ZiBjb250ZXh0IGRvZXNuJ3QgaGF2ZSBtYXBwZWQgZW5naW5lcyAqLwo+ICsJCXF1ZXJ5X2VuZ2lu ZV9saXN0KGZkLCAmZW5naW5lX2RhdGEpOwo+ICsJCWN0eF9tYXBfZW5naW5lcyhmZCwgJmVuZ2lu ZV9kYXRhLCAmcGFyYW0pOwo+ICsKCkV4dHJhIGJsYW5rIGxpbmUuCgo+ICsJfSBlbHNlIHsKPiAr CQkvKiBjb250ZXh0IGhhcyBhIGxpc3Qgb2YgbWFwcGVkIGVuZ2luZXMgKi8KPiArCj4gKwkJZm9y IChpID0gMDsgaSA8IG5lbmdpbmVzOyBpKyspCj4gKwkJCWluaXRfZW5naW5lKCZlbmdpbmVfZGF0 YS5lbmdpbmVzW2ldLAo+ICsJCQkJICAgIGVuZ2luZXMuY2xhc3NfaW5zdGFuY2VbaV0uZW5naW5l X2NsYXNzLAo+ICsJCQkJICAgIGVuZ2luZXMuY2xhc3NfaW5zdGFuY2VbaV0uZW5naW5lX2luc3Rh bmNlLAo+ICsJCQkJICAgIGkpOwo+ICsKPiArCQllbmdpbmVfZGF0YS5uZW5naW5lcyA9IGk7Cj4g Kwl9Cj4gKwo+ICsJcmV0dXJuIGVuZ2luZV9kYXRhOwo+ICt9Cj4gKwo+ICtpbnQgZ2VtX2N0eF9n ZXRfZW5naW5lKGludCBmZCwgdWludDMyX3QgZW5naW5lLCB1aW50MzJfdCBjdHhfaWQsCj4gKwkJ ICAgICAgIHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSkKPiArewo+ICsJSTkxNV9E RUZJTkVfQ09OVEVYVF9QQVJBTV9FTkdJTkVTKGVuZ2luZXMsIEdFTV9NQVhfRU5HSU5FUyk7Cj4g KwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW0gcGFyYW0gPSB7Cj4gKwkJLnBhcmFt ID0gSTkxNV9DT05URVhUX1BBUkFNX0VOR0lORVMsCj4gKwkJLmN0eF9pZCA9IGN0eF9pZCwKPiAr CQkuc2l6ZSA9IFNJWkVPRl9DVFhfUEFSQU0sCj4gKwkJLnZhbHVlID0gdG9fdXNlcl9wb2ludGVy KCZlbmdpbmVzKSwKPiArCX07Cj4gKwlpbnQgbmVuZ2luZXMgPSBnZW1fdG9wb2xvZ3lfZ2V0X3Bh cmFtKGZkLCBjdHhfaWQsICZwYXJhbSk7Cj4gKwo+ICsJaWYgKG5lbmdpbmVzIDwgMCkKPiArCQly ZXR1cm4gbmVuZ2luZXM7Cj4gKwo+ICsJaWYgKCFwYXJhbS5zaXplIHx8ICFuZW5naW5lcykKPiAr CQlyZXR1cm4gLUVJTlZBTDsKPiArCj4gKwllLT5jbGFzcyA9IGVuZ2luZXMuY2xhc3NfaW5zdGFu Y2VbZW5naW5lXS5lbmdpbmVfY2xhc3M7Cj4gKwllLT5pbnN0YW5jZSA9IGVuZ2luZXMuY2xhc3Nf aW5zdGFuY2VbZW5naW5lXS5lbmdpbmVfaW5zdGFuY2U7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30K PiArCj4gK2Jvb2wgZ2VtX2hhc19lbmdpbmVfdG9wb2xvZ3koaW50IGZkKQo+ICt7Cj4gKwlzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW0gcGFyYW0gPSB7Cj4gKwkJLnBhcmFtID0gSTkx NV9DT05URVhUX1BBUkFNX0VOR0lORVMsCj4gKwl9Owo+ICsKPiArCXJldHVybiAhX19nZW1fY29u dGV4dF9nZXRfcGFyYW0oZmQsICZwYXJhbSk7Cj4gK30KPiBkaWZmIC0tZ2l0IGEvbGliL2k5MTUv Z2VtX2VuZ2luZV90b3BvbG9neS5oIGIvbGliL2k5MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5oCj4g bmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAuLjgwNmMyNjBiMTA3NAo+ IC0tLSAvZGV2L251bGwKPiArKysgYi9saWIvaTkxNS9nZW1fZW5naW5lX3RvcG9sb2d5LmgKPiBA QCAtMCwwICsxLDc4IEBACj4gKy8qCj4gKyAqIENvcHlyaWdodCDCqSAyMDE5IEludGVsIENvcnBv cmF0aW9uCj4gKyAqCj4gKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2Yg Y2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCj4gKyAqIGNvcHkgb2YgdGhpcyBzb2Z0 d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiks Cj4gKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1 ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KPiArICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1v ZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCj4gKyAqIGFuZC9v ciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3 aG9tIHRoZQo+ICsgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8g dGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgo+ICsgKgo+ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0 IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0Cj4g KyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFu dGlhbCBwb3J0aW9ucyBvZiB0aGUKPiArICogU29mdHdhcmUuCj4gKyAqCj4gKyAqIFRIRSBTT0ZU V0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBF WFBSRVNTIE9SCj4gKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhF IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAo+ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKPiAr ICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xB SU0sIERBTUFHRVMgT1IgT1RIRVIKPiArICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElP TiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKPiArICogRlJPTSwgT1VU IE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhF UiBERUFMSU5HUwo+ICsgKiBJTiBUSEUgU09GVFdBUkUuCj4gKyAqLwo+ICsKPiArI2lmbmRlZiBH RU1fRU5HSU5FX1RPUE9MT0dZX0gKPiArI2RlZmluZSBHRU1fRU5HSU5FX1RPUE9MT0dZX0gKPiAr Cj4gKyNpbmNsdWRlICJpZ3RfZ3QuaCIKPiArI2luY2x1ZGUgImk5MTVfZHJtLmgiCj4gKwo+ICsv Kgo+ICsgKiBMaW1pdCB3aGF0IHdlIHN1cHBvcnQgZm9yIHNpbXBsaWNpdHkgZHVlIGxpbWl0YXRp b24gaW4gaG93IG11Y2ggd2UKPiArICogY2FuIGFkZHJlc3MgdmlhIGV4ZWNidWYyLgo+ICsgKi8K PiArI2RlZmluZSBTSVpFT0ZfQ1RYX1BBUkFNCW9mZnNldG9mKHN0cnVjdCBpOTE1X2NvbnRleHRf cGFyYW1fZW5naW5lcywgXAo+ICsJCQkJCWNsYXNzX2luc3RhbmNlW0dFTV9NQVhfRU5HSU5FU10p Cj4gKyNkZWZpbmUgU0laRU9GX1FVRVJZCQlvZmZzZXRvZihzdHJ1Y3QgZHJtX2k5MTVfcXVlcnlf ZW5naW5lX2luZm8sIFwKPiArCQkJCQllbmdpbmVzW0dFTV9NQVhfRU5HSU5FU10pCgpEbyB5b3Ug bmVlZCB0aGVzZSB0d28gaW4gdGhlIGhlYWRlciBmaWxlPwoKPiArCj4gKyNkZWZpbmUgR0VNX01B WF9FTkdJTkVTCQlJOTE1X0VYRUNfUklOR19NQVNLICsgMQo+ICsKPiArc3RydWN0IGludGVsX2Vu Z2luZV9kYXRhIHsKPiArCXVpbnQzMl90IG5lbmdpbmVzOwo+ICsJdWludDMyX3QgbjsKPiArCWlu dCBlcnJvcjsKClVudXNlZD8KCj4gKwlzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmN1 cnJlbnRfZW5naW5lOwo+ICsJc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyIGVuZ2luZXNb R0VNX01BWF9FTkdJTkVTXTsKPiArfTsKPiArCj4gK2Jvb2wgZ2VtX2hhc19lbmdpbmVfdG9wb2xv Z3koaW50IGZkKTsKPiArc3RydWN0IGludGVsX2VuZ2luZV9kYXRhIGludGVsX2luaXRfZW5naW5l X2xpc3QoaW50IGZkLCB1aW50MzJfdCBjdHhfaWQpOwo+ICsKPiArLyogaXRlcmF0aW9uIGZ1bmN0 aW9ucyAqLwo+ICtzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIKPiArKmludGVsX2dldF9j dXJyZW50X2VuZ2luZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2RhdGEgKmVkKTsKPiArCj4gK3N0cnVj dCBpbnRlbF9leGVjdXRpb25fZW5naW5lMgo+ICsqaW50ZWxfZ2V0X2N1cnJlbnRfcGh5c2ljYWxf ZW5naW5lKHN0cnVjdCBpbnRlbF9lbmdpbmVfZGF0YSAqZWQpOwo+ICsKPiArdm9pZCBpbnRlbF9u ZXh0X2VuZ2luZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2RhdGEgKmVkKTsKPiArCj4gK2ludCBnZW1f Y3R4X2dldF9lbmdpbmUoaW50IGZkLCB1aW50MzJfdCBlbmdpbmUsIHVpbnQzMl90IGN0eF9pZCwK PiArCQkgICAgICAgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplKTsKPiArCj4gKyNk ZWZpbmUgX19mb3JfZWFjaF9zdGF0aWNfZW5naW5lKGVfXykgXAo+ICsJZm9yICgoZV9fKSA9IGlu dGVsX2V4ZWN1dGlvbl9lbmdpbmVzMjsgKGVfXyktPm5hbWU7IChlX18pKyspCj4gKwo+ICsjZGVm aW5lIGZvcl9lYWNoX2NvbnRleHRfZW5naW5lKGZkX18sIGN0eF9fLCBlX18pIFwKPiArCWZvciAo c3RydWN0IGludGVsX2VuZ2luZV9kYXRhIGlfXyA9IGludGVsX2luaXRfZW5naW5lX2xpc3QoZmRf XywgY3R4X18pOyBcCj4gKwkgICAgICgoZV9fKSA9IGludGVsX2dldF9jdXJyZW50X2VuZ2luZSgm aV9fKSk7IFwKPiArCSAgICAgaW50ZWxfbmV4dF9lbmdpbmUoJmlfXykpCj4gKwo+ICsvKiBuZWVk cyB0byByZXBsYWNlICJmb3JfZWFjaF9waHlzaWNhbF9lbmdpbmUiIHdoZW4gY29uZmxpY3RzIGFy ZSBmaXhlZCAqLwo+ICsjZGVmaW5lIF9fZm9yX2VhY2hfcGh5c2ljYWxfZW5naW5lKGZkX18sIGVf XykgXAo+ICsJZm9yIChzdHJ1Y3QgaW50ZWxfZW5naW5lX2RhdGEgaV9fID0gaW50ZWxfaW5pdF9l bmdpbmVfbGlzdChmZF9fLCAwKTsgXAo+ICsJICAgICAoKGVfXykgPSBpbnRlbF9nZXRfY3VycmVu dF9waHlzaWNhbF9lbmdpbmUoJmlfXykpOyBcCj4gKwkgICAgIGludGVsX25leHRfZW5naW5lKCZp X18pKQo+ICsKPiArI2VuZGlmIC8qIEdFTV9FTkdJTkVfVE9QT0xPR1lfSCAqLwo+IGRpZmYgLS1n aXQgYS9saWIvaWd0LmggYi9saWIvaWd0LmgKPiBpbmRleCA2NjU0YTY1OWMwNjIuLjAzZjE5Y2Ey ZGZiNiAxMDA2NDQKPiAtLS0gYS9saWIvaWd0LmgKPiArKysgYi9saWIvaWd0LmgKPiBAQCAtNTMs NSArNTMsNiBAQAo+ICAgI2luY2x1ZGUgIm1lZGlhX3NwaW4uaCIKPiAgICNpbmNsdWRlICJyZW5k ZXJjb3B5LmgiCj4gICAjaW5jbHVkZSAiaTkxNS9nZW1fbW1hbi5oIgo+ICsjaW5jbHVkZSAiaTkx NS9nZW1fZW5naW5lX3RvcG9sb2d5LmgiCj4gICAKPiAgICNlbmRpZiAvKiBJR1RfSCAqLwo+IGRp ZmYgLS1naXQgYS9saWIvaWd0X2d0LmggYi9saWIvaWd0X2d0LmgKPiBpbmRleCA0NzVjMGIzYzNj YzYuLjUyYjJmMWVhOTVhNSAxMDA2NDQKPiAtLS0gYS9saWIvaWd0X2d0LmgKPiArKysgYi9saWIv aWd0X2d0LmgKPiBAQCAtOTUsNiArOTUsOCBAQCBleHRlcm4gY29uc3Qgc3RydWN0IGludGVsX2V4 ZWN1dGlvbl9lbmdpbmUyIHsKPiAgIAljb25zdCBjaGFyICpuYW1lOwo+ICAgCWludCBjbGFzczsK PiAgIAlpbnQgaW5zdGFuY2U7Cj4gKwl1aW50NjRfdCBmbGFnczsKPiArCWJvb2wgaXNfdmlydHVh bDsKPiAgIH0gaW50ZWxfZXhlY3V0aW9uX2VuZ2luZXMyW107Cj4gICAKPiAgIHVuc2lnbmVkIGlu dAo+IGRpZmYgLS1naXQgYS9saWIvbWVzb24uYnVpbGQgYi9saWIvbWVzb24uYnVpbGQKPiBpbmRl eCA4OWRlMDZlNjkyNGEuLjkzYzAxZGFhNDIyMiAxMDA2NDQKPiAtLS0gYS9saWIvbWVzb24uYnVp bGQKPiArKysgYi9saWIvbWVzb24uYnVpbGQKPiBAQCAtNSw2ICs1LDcgQEAgbGliX3NvdXJjZXMg PSBbCj4gICAJJ2k5MTUvZ2VtX3N1Ym1pc3Npb24uYycsCj4gICAJJ2k5MTUvZ2VtX3JpbmcuYycs Cj4gICAJJ2k5MTUvZ2VtX21tYW4uYycsCj4gKwknaTkxNS9nZW1fZW5naW5lX3RvcG9sb2d5LmMn LAo+ICAgCSdpZ3RfY29sb3JfZW5jb2RpbmcuYycsCj4gICAJJ2lndF9kZWJ1Z2ZzLmMnLAo+ICAg CSdpZ3RfZGV2aWNlLmMnLAo+IAoKQ29kaW5nIHN0eWxlIGFuZCBxdWVzdGlvbiBhZ2FpbnN0IHRo ZSBoZWFkZXIgZmlsZSBhcmUgdGhlIG9ubHkgcmVhbCBvbmVzIApsZWZ0LiBPdGhlcndpc2UgbG9v a3MgZ29vZC4KClJlZ2FyZHMsCgpUdnJ0a28KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KaWd0LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9pZ3QtZGV2