From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Ser, Simon" Subject: Re: [igt-dev] [PATCH i-g-t] benchmarks/gem_wsim: Heap allocate VLA structs Date: Fri, 24 May 2019 08:27:02 +0000 Message-ID: References: <20190524072551.24429-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: Content-Language: en-US Content-ID: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "tvrtko.ursulin@linux.intel.com" , "intel-gfx@lists.freedesktop.org" , "chris@chris-wilson.co.uk" Cc: "igt-dev@lists.freedesktop.org" List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCAyMDE5LTA1LTI0IGF0IDA5OjIwICswMTAwLCBUdnJ0a28gVXJzdWxpbiB3cm90ZToN Cj4gT24gMjQvMDUvMjAxOSAwODoyNSwgQ2hyaXMgV2lsc29uIHdyb3RlOg0KPiA+IEFwcGFyZW50 bHkgVkxBIHN0cnVjdHMgKGUuZy4gc3RydWN0IHsgaW50IGFycmF5W2NvdW50XSB9KSBpcyBhIGdj Yw0KPiA+IGV4dGVuc2lvbiB0aGF0IGNsYW5nIHJlZnVzZXMgdG8gc3VwcG9ydCBhcyBoYW5kbGlu ZyBtZW1vcnkgbGF5b3V0IGlzIHRvbw0KPiA+IGRpZmZpY3VsdCBmb3IgaXQuDQo+ID4gDQo+ID4g TW92ZSB0aGUgb24tc3RhY2sgVkxBIHRvIHRoZSBoZWFwLg0KPiA+IA0KPiA+IFNpZ25lZC1vZmYt Ynk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPg0KPiA+IENjOiBUdnJ0 a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPg0KPiA+IC0tLQ0KPiA+ICAgYmVu Y2htYXJrcy9nZW1fd3NpbS5jIHwgMTQ2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0t LS0tLS0tLS0tLQ0KPiA+ICAgMSBmaWxlIGNoYW5nZWQsIDk1IGluc2VydGlvbnMoKyksIDUxIGRl bGV0aW9ucygtKQ0KPiA+IA0KPiA+IGRpZmYgLS1naXQgYS9iZW5jaG1hcmtzL2dlbV93c2ltLmMg Yi9iZW5jaG1hcmtzL2dlbV93c2ltLmMNCj4gPiBpbmRleCBlMmZmYjkzYTkuLjBhMDAzMmJmZiAx MDA2NDQNCj4gPiAtLS0gYS9iZW5jaG1hcmtzL2dlbV93c2ltLmMNCj4gPiArKysgYi9iZW5jaG1h cmtzL2dlbV93c2ltLmMNCj4gPiBAQCAtMTQ0MSw2ICsxNDQxLDQ4IEBAIHNldF9jdHhfc3NldShz dHJ1Y3QgY3R4ICpjdHgsIHVpbnQ2NF90IHNsaWNlX21hc2spDQo+ID4gICAJcmV0dXJuIHNsaWNl X21hc2s7DQo+ID4gICB9DQo+ID4gICANCj4gPiArc3RhdGljIHNpemVfdCBzaXplb2ZfbG9hZF9i YWxhbmNlKGludCBjb3VudCkNCj4gPiArew0KPiA+ICsJc3RydWN0IGk5MTVfY29udGV4dF9lbmdp bmVzX2xvYWRfYmFsYW5jZSAqcHRyOw0KPiA+ICsNCj4gPiArCWFzc2VydChzaXplb2YocHRyLT5l bmdpbmVzW2NvdW50XSkgPT0gY291bnQgKiBzaXplb2YocHRyLT5lbmdpbmVzWzBdKSk7DQo+IA0K PiBUaGlzIHNlZW1zIHdyb25nIC0gaXMgYm91bmQgdG8gdHJpZ2dlci4NCj4gDQo+ID4gKwlyZXR1 cm4gc2l6ZW9mKCpwdHIpICsgc2l6ZW9mKHB0ci0+ZW5naW5lc1tjb3VudF0pOw0KPiANCj4gU28g c2l6ZSBvZiBvZiBlbmdpbmUgbmVlZHMgdG8gYmUgbXVsdGlwbGllZCBieSBjb3VudC4NCj4gDQo+ ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBzdHJ1Y3QgaTkxNV9jb250ZXh0X2VuZ2luZXNfbG9h ZF9iYWxhbmNlICoNCj4gPiArYWxsb2NfbG9hZF9iYWxhbmNlKGludCBjb3VudCkNCj4gPiArew0K PiA+ICsJcmV0dXJuIGNhbGxvYygxLCBzaXplb2ZfbG9hZF9iYWxhbmNlKGNvdW50KSk7DQo+IA0K PiBIb3cgYWJvdXQgYWxsb2NhIHNvIGNsZWFudXAgaXMgc2ltcGxlcj8gT3IgaXMgYWxsb2NhIGFs c28gb24gdGhlIA0KPiB1bnBvcHVsYXIgbGlzdD8NCj4gDQo+IE9yIHBvc3NpYmx5IHdoYXQgU2lt b24gc3VnZ2VzdGVkLCBqdXN0IGEgbGFyZ2UgdGVtcG9yYXJ5IHN0YWNrIGFycmF5cyANCj4gd291 bGQgYmUgZW5vdWdoIGFuZCBlYXNpZXN0IGRpZmYuIEp1c3Qgd2l0aCBhbiBhc3NlcnQgdGhhdCBp dCBmaXRzLg0KPiANCj4gSSBjYW4gZG8gdGhhdCBpZiB5b3Ugd2FudD8NCg0KSSB0aGluayBBcmVr IGFscmVhZHkgaGFzIGEgcGF0Y2ggZm9yIHRoaXMuDQoNCj4gUmVnYXJkcywNCj4gDQo+IFR2cnRr bw0KPiANCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIHNpemVfdCBzaXplb2ZfcGFyYW1fZW5n aW5lcyhpbnQgY291bnQpDQo+ID4gK3sNCj4gPiArCXN0cnVjdCBpOTE1X2NvbnRleHRfcGFyYW1f ZW5naW5lcyAqcHRyOw0KPiA+ICsNCj4gPiArCWFzc2VydChzaXplb2YocHRyLT5lbmdpbmVzW2Nv dW50XSkgPT0gY291bnQgKiBzaXplb2YocHRyLT5lbmdpbmVzWzBdKSk7DQo+ID4gKwlyZXR1cm4g c2l6ZW9mKCpwdHIpICsgc2l6ZW9mKHB0ci0+ZW5naW5lc1tjb3VudF0pOw0KPiA+ICt9DQo+ID4g Kw0KPiA+ICtzdGF0aWMgc3RydWN0IGk5MTVfY29udGV4dF9wYXJhbV9lbmdpbmVzICoNCj4gPiAr YWxsb2NfcGFyYW1fZW5naW5lcyhpbnQgY291bnQpDQo+ID4gK3sNCj4gPiArCXJldHVybiBjYWxs b2MoMSwgc2l6ZW9mX3BhcmFtX2VuZ2luZXMoY291bnQpKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiAr c3RhdGljIHNpemVfdCBzaXplb2ZfZW5naW5lc19ib25kKGludCBjb3VudCkNCj4gPiArew0KPiA+ ICsJc3RydWN0IGk5MTVfY29udGV4dF9lbmdpbmVzX2JvbmQgKnB0cjsNCj4gPiArDQo+ID4gKwlh c3NlcnQoc2l6ZW9mKHB0ci0+ZW5naW5lc1tjb3VudF0pID09IGNvdW50ICogc2l6ZW9mKHB0ci0+ ZW5naW5lc1swXSkpOw0KPiA+ICsJcmV0dXJuIHNpemVvZigqcHRyKSArIHNpemVvZihwdHItPmVu Z2luZXNbY291bnRdKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIHN0cnVjdCBpOTE1X2Nv bnRleHRfZW5naW5lc19ib25kICoNCj4gPiArYWxsb2NfZW5naW5lc19ib25kKGludCBjb3VudCkN Cj4gPiArew0KPiA+ICsJcmV0dXJuIGNhbGxvYygxLCBzaXplb2ZfZW5naW5lc19ib25kKGNvdW50 KSk7DQo+ID4gK30NCj4gPiArDQo+ID4gICBzdGF0aWMgaW50DQo+ID4gICBwcmVwYXJlX3dvcmts b2FkKHVuc2lnbmVkIGludCBpZCwgc3RydWN0IHdvcmtsb2FkICp3cmssIHVuc2lnbmVkIGludCBm bGFncykNCj4gPiAgIHsNCj4gPiBAQCAtMTY3Niw2NiArMTcxOCw1NCBAQCBwcmVwYXJlX3dvcmts b2FkKHVuc2lnbmVkIGludCBpZCwgc3RydWN0IHdvcmtsb2FkICp3cmssIHVuc2lnbmVkIGludCBm bGFncykNCj4gPiAgIAkJfQ0KPiA+ICAgDQo+ID4gICAJCWlmIChjdHgtPmVuZ2luZV9tYXApIHsN Cj4gPiAtCQkJSTkxNV9ERUZJTkVfQ09OVEVYVF9QQVJBTV9FTkdJTkVTKHNldF9lbmdpbmVzLA0K PiA+IC0JCQkJCQkJICBjdHgtPmVuZ2luZV9tYXBfY291bnQgKyAxKTsNCj4gPiAtCQkJSTkxNV9E RUZJTkVfQ09OVEVYVF9FTkdJTkVTX0xPQURfQkFMQU5DRShsb2FkX2JhbGFuY2UsDQo+ID4gLQkJ CQkJCQkJIGN0eC0+ZW5naW5lX21hcF9jb3VudCk7DQo+ID4gKwkJCXN0cnVjdCBpOTE1X2NvbnRl eHRfcGFyYW1fZW5naW5lcyAqc2V0X2VuZ2luZXMgPQ0KPiA+ICsJCQkJYWxsb2NfcGFyYW1fZW5n aW5lcyhjdHgtPmVuZ2luZV9tYXBfY291bnQgKyAxKTsNCj4gPiArCQkJc3RydWN0IGk5MTVfY29u dGV4dF9lbmdpbmVzX2xvYWRfYmFsYW5jZSAqbG9hZF9iYWxhbmNlID0NCj4gPiArCQkJCWFsbG9j X2xvYWRfYmFsYW5jZShjdHgtPmVuZ2luZV9tYXBfY291bnQpOw0KPiA+ICAgCQkJc3RydWN0IGRy bV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtIHBhcmFtID0gew0KPiA+ICAgCQkJCS5jdHhfaWQgPSBj dHhfaWQsDQo+ID4gICAJCQkJLnBhcmFtID0gSTkxNV9DT05URVhUX1BBUkFNX0VOR0lORVMsDQo+ ID4gLQkJCQkuc2l6ZSA9IHNpemVvZihzZXRfZW5naW5lcyksDQo+ID4gLQkJCQkudmFsdWUgPSB0 b191c2VyX3BvaW50ZXIoJnNldF9lbmdpbmVzKSwNCj4gPiArCQkJCS5zaXplID0gc2l6ZW9mX3Bh cmFtX2VuZ2luZXMoY3R4LT5lbmdpbmVfbWFwX2NvdW50ICsgMSksDQo+ID4gKwkJCQkudmFsdWUg PSB0b191c2VyX3BvaW50ZXIoc2V0X2VuZ2luZXMpLA0KPiA+ICAgCQkJfTsNCj4gPiArCQkJc3Ry dWN0IGk5MTVfY29udGV4dF9lbmdpbmVzX2JvbmQgKmxhc3QgPSBOVUxMOw0KPiA+ICAgDQo+ID4g ICAJCQlpZiAoY3R4LT53YW50c19iYWxhbmNlKSB7DQo+ID4gLQkJCQlzZXRfZW5naW5lcy5leHRl bnNpb25zID0NCj4gPiAtCQkJCQl0b191c2VyX3BvaW50ZXIoJmxvYWRfYmFsYW5jZSk7DQo+ID4g KwkJCQlzZXRfZW5naW5lcy0+ZXh0ZW5zaW9ucyA9DQo+ID4gKwkJCQkJdG9fdXNlcl9wb2ludGVy KGxvYWRfYmFsYW5jZSk7DQo+ID4gICANCj4gPiAtCQkJCW1lbXNldCgmbG9hZF9iYWxhbmNlLCAw LCBzaXplb2YobG9hZF9iYWxhbmNlKSk7DQo+ID4gLQkJCQlsb2FkX2JhbGFuY2UuYmFzZS5uYW1l ID0NCj4gPiArCQkJCWxvYWRfYmFsYW5jZS0+YmFzZS5uYW1lID0NCj4gPiAgIAkJCQkJSTkxNV9D T05URVhUX0VOR0lORVNfRVhUX0xPQURfQkFMQU5DRTsNCj4gPiAtCQkJCWxvYWRfYmFsYW5jZS5u dW1fc2libGluZ3MgPQ0KPiA+ICsJCQkJbG9hZF9iYWxhbmNlLT5udW1fc2libGluZ3MgPQ0KPiA+ ICAgCQkJCQljdHgtPmVuZ2luZV9tYXBfY291bnQ7DQo+ID4gICANCj4gPiAgIAkJCQlmb3IgKGog PSAwOyBqIDwgY3R4LT5lbmdpbmVfbWFwX2NvdW50OyBqKyspDQo+ID4gLQkJCQkJbG9hZF9iYWxh bmNlLmVuZ2luZXNbal0gPQ0KPiA+ICsJCQkJCWxvYWRfYmFsYW5jZS0+ZW5naW5lc1tqXSA9DQo+ ID4gICAJCQkJCQlnZXRfZW5naW5lKGN0eC0+ZW5naW5lX21hcFtqXSk7DQo+ID4gLQkJCX0gZWxz ZSB7DQo+ID4gLQkJCQlzZXRfZW5naW5lcy5leHRlbnNpb25zID0gMDsNCj4gPiAgIAkJCX0NCj4g PiAgIA0KPiA+ICAgCQkJLyogUmVzZXJ2ZSBzbG90IGZvciB2aXJ0dWFsIGVuZ2luZS4gKi8NCj4g PiAtCQkJc2V0X2VuZ2luZXMuZW5naW5lc1swXS5lbmdpbmVfY2xhc3MgPQ0KPiA+ICsJCQlzZXRf ZW5naW5lcy0+ZW5naW5lc1swXS5lbmdpbmVfY2xhc3MgPQ0KPiA+ICAgCQkJCUk5MTVfRU5HSU5F X0NMQVNTX0lOVkFMSUQ7DQo+ID4gLQkJCXNldF9lbmdpbmVzLmVuZ2luZXNbMF0uZW5naW5lX2lu c3RhbmNlID0NCj4gPiArCQkJc2V0X2VuZ2luZXMtPmVuZ2luZXNbMF0uZW5naW5lX2luc3RhbmNl ID0NCj4gPiAgIAkJCQlJOTE1X0VOR0lORV9DTEFTU19JTlZBTElEX05PTkU7DQo+ID4gICANCj4g PiAgIAkJCWZvciAoaiA9IDE7IGogPD0gY3R4LT5lbmdpbmVfbWFwX2NvdW50OyBqKyspDQo+ID4g LQkJCQlzZXRfZW5naW5lcy5lbmdpbmVzW2pdID0NCj4gPiArCQkJCXNldF9lbmdpbmVzLT5lbmdp bmVzW2pdID0NCj4gPiAgIAkJCQkJZ2V0X2VuZ2luZShjdHgtPmVuZ2luZV9tYXBbaiAtIDFdKTsN Cj4gPiAgIA0KPiA+ICsJCQlsYXN0ID0gTlVMTDsNCj4gPiAgIAkJCWZvciAoaiA9IDA7IGogPCBj dHgtPmJvbmRfY291bnQ7IGorKykgew0KPiA+ICAgCQkJCXVuc2lnbmVkIGxvbmcgbWFzayA9IGN0 eC0+Ym9uZHNbal0ubWFzazsNCj4gPiAtCQkJCUk5MTVfREVGSU5FX0NPTlRFWFRfRU5HSU5FU19C T05EKGJvbmQsDQo+ID4gLQkJCQkJCQkJIF9fYnVpbHRpbl9wb3Bjb3VudChtYXNrKSk7DQo+ID4g LQkJCQlzdHJ1Y3QgaTkxNV9jb250ZXh0X2VuZ2luZXNfYm9uZCAqcCA9IE5VTEwsICpwcmV2Ow0K PiA+ICsJCQkJc3RydWN0IGk5MTVfY29udGV4dF9lbmdpbmVzX2JvbmQgKmJvbmQgPQ0KPiA+ICsJ CQkJCWFsbG9jX2VuZ2luZXNfYm9uZChfX2J1aWx0aW5fcG9wY291bnQobWFzaykpOw0KPiA+ICAg CQkJCXVuc2lnbmVkIGludCBiLCBlOw0KPiA+ICAgDQo+ID4gLQkJCQlwcmV2ID0gcDsNCj4gPiAt CQkJCXAgPSBhbGxvY2Eoc2l6ZW9mKGJvbmQpKTsNCj4gPiAtCQkJCWFzc2VydChwKTsNCj4gPiAt CQkJCW1lbXNldChwLCAwLCBzaXplb2YoYm9uZCkpOw0KPiA+IC0NCj4gPiAtCQkJCWlmIChqID09 IDApDQo+ID4gLQkJCQkJbG9hZF9iYWxhbmNlLmJhc2UubmV4dF9leHRlbnNpb24gPQ0KPiA+IC0J CQkJCQl0b191c2VyX3BvaW50ZXIocCk7DQo+ID4gLQkJCQllbHNlIGlmIChqIDwgKGN0eC0+Ym9u ZF9jb3VudCAtIDEpKQ0KPiA+IC0JCQkJCXByZXYtPmJhc2UubmV4dF9leHRlbnNpb24gPQ0KPiA+ IC0JCQkJCQl0b191c2VyX3BvaW50ZXIocCk7DQo+ID4gKwkJCQlib25kLT5iYXNlLm5leHRfZXh0 ZW5zaW9uID0gdG9fdXNlcl9wb2ludGVyKGxhc3QpOw0KPiA+ICsJCQkJYm9uZC0+YmFzZS5uYW1l ID0gSTkxNV9DT05URVhUX0VOR0lORVNfRVhUX0JPTkQ7DQo+ID4gICANCj4gPiAtCQkJCXAtPmJh c2UubmFtZSA9IEk5MTVfQ09OVEVYVF9FTkdJTkVTX0VYVF9CT05EOw0KPiA+IC0JCQkJcC0+dmly dHVhbF9pbmRleCA9IDA7DQo+ID4gLQkJCQlwLT5tYXN0ZXIgPSBnZXRfZW5naW5lKGN0eC0+Ym9u ZHNbal0ubWFzdGVyKTsNCj4gPiArCQkJCWJvbmQtPnZpcnR1YWxfaW5kZXggPSAwOw0KPiA+ICsJ CQkJYm9uZC0+bWFzdGVyID0gZ2V0X2VuZ2luZShjdHgtPmJvbmRzW2pdLm1hc3Rlcik7DQo+ID4g ICANCj4gPiAgIAkJCQlmb3IgKGIgPSAwLCBlID0gMDsgbWFzazsgZSsrLCBtYXNrID4+PSAxKSB7 DQo+ID4gICAJCQkJCXVuc2lnbmVkIGludCBpZHg7DQo+ID4gQEAgLTE3NDMsNDQgKzE3NzMsNTgg QEAgcHJlcGFyZV93b3JrbG9hZCh1bnNpZ25lZCBpbnQgaWQsIHN0cnVjdCB3b3JrbG9hZCAqd3Jr LCB1bnNpZ25lZCBpbnQgZmxhZ3MpDQo+ID4gICAJCQkJCWlmICghKG1hc2sgJiAxKSkNCj4gPiAg IAkJCQkJCWNvbnRpbnVlOw0KPiA+ICAgDQo+ID4gLQkJCQkJaWR4ID0gZmluZF9lbmdpbmUoJnNl dF9lbmdpbmVzLmVuZ2luZXNbMV0sDQo+ID4gKwkJCQkJaWR4ID0gZmluZF9lbmdpbmUoJnNldF9l bmdpbmVzLT5lbmdpbmVzWzFdLA0KPiA+ICAgCQkJCQkJCSAgY3R4LT5lbmdpbmVfbWFwX2NvdW50 LA0KPiA+ICAgCQkJCQkJCSAgZSk7DQo+ID4gLQkJCQkJcC0+ZW5naW5lc1tiKytdID0NCj4gPiAt CQkJCQkJc2V0X2VuZ2luZXMuZW5naW5lc1sxICsgaWR4XTsNCj4gPiArCQkJCQlib25kLT5lbmdp bmVzW2IrK10gPQ0KPiA+ICsJCQkJCQlzZXRfZW5naW5lcy0+ZW5naW5lc1sxICsgaWR4XTsNCj4g PiAgIAkJCQl9DQo+ID4gKw0KPiA+ICsJCQkJbGFzdCA9IGJvbmQ7DQo+ID4gICAJCQl9DQo+ID4g KwkJCWxvYWRfYmFsYW5jZS0+YmFzZS5uZXh0X2V4dGVuc2lvbiA9IHRvX3VzZXJfcG9pbnRlcihs YXN0KTsNCj4gPiAgIA0KPiA+ICAgCQkJZ2VtX2NvbnRleHRfc2V0X3BhcmFtKGZkLCAmcGFyYW0p Ow0KPiA+ICsNCj4gPiArCQkJd2hpbGUgKGxhc3QpIHsNCj4gPiArCQkJCXN0cnVjdCBpOTE1X2Nv bnRleHRfZW5naW5lc19ib25kICpuZXh0ID0NCj4gPiArCQkJCQlmcm9tX3VzZXJfcG9pbnRlcihs YXN0LT5iYXNlLm5leHRfZXh0ZW5zaW9uKTsNCj4gPiArCQkJCWZyZWUobGFzdCk7DQo+ID4gKwkJ CQlsYXN0ID0gbmV4dDsNCj4gPiArCQkJfQ0KPiA+ICsJCQlmcmVlKGxvYWRfYmFsYW5jZSk7DQo+ ID4gKwkJCWZyZWUoc2V0X2VuZ2luZXMpOw0KPiA+ICAgCQl9IGVsc2UgaWYgKGN0eC0+d2FudHNf YmFsYW5jZSkgew0KPiA+ICAgCQkJY29uc3QgdW5zaWduZWQgaW50IGNvdW50ID0gbnVtX2VuZ2lu ZXNfaW5fY2xhc3MoVkNTKTsNCj4gPiAtCQkJSTkxNV9ERUZJTkVfQ09OVEVYVF9FTkdJTkVTX0xP QURfQkFMQU5DRShsb2FkX2JhbGFuY2UsDQo+ID4gLQkJCQkJCQkJIGNvdW50KTsNCj4gPiAtCQkJ STkxNV9ERUZJTkVfQ09OVEVYVF9QQVJBTV9FTkdJTkVTKHNldF9lbmdpbmVzLA0KPiA+IC0JCQkJ CQkJICBjb3VudCArIDEpOw0KPiA+ICsJCQlzdHJ1Y3QgaTkxNV9jb250ZXh0X2VuZ2luZXNfbG9h ZF9iYWxhbmNlICpsb2FkX2JhbGFuY2UgPQ0KPiA+ICsJCQkJYWxsb2NfbG9hZF9iYWxhbmNlKGNv dW50KTsNCj4gPiArCQkJc3RydWN0IGk5MTVfY29udGV4dF9wYXJhbV9lbmdpbmVzICpzZXRfZW5n aW5lcyA9DQo+ID4gKwkJCQlhbGxvY19wYXJhbV9lbmdpbmVzKGNvdW50ICsgMSk7DQo+ID4gICAJ CQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW0gcGFyYW0gPSB7DQo+ID4gICAJCQkJ LmN0eF9pZCA9IGN0eF9pZCwNCj4gPiAgIAkJCQkucGFyYW0gPSBJOTE1X0NPTlRFWFRfUEFSQU1f RU5HSU5FUywNCj4gPiAtCQkJCS5zaXplID0gc2l6ZW9mKHNldF9lbmdpbmVzKSwNCj4gPiAtCQkJ CS52YWx1ZSA9IHRvX3VzZXJfcG9pbnRlcigmc2V0X2VuZ2luZXMpLA0KPiA+ICsJCQkJLnNpemUg PSBzaXplb2ZfcGFyYW1fZW5naW5lcyhjb3VudCArIDEpLA0KPiA+ICsJCQkJLnZhbHVlID0gdG9f dXNlcl9wb2ludGVyKHNldF9lbmdpbmVzKSwNCj4gPiAgIAkJCX07DQo+ID4gICANCj4gPiAtCQkJ c2V0X2VuZ2luZXMuZXh0ZW5zaW9ucyA9IHRvX3VzZXJfcG9pbnRlcigmbG9hZF9iYWxhbmNlKTsN Cj4gPiArCQkJc2V0X2VuZ2luZXMtPmV4dGVuc2lvbnMgPSB0b191c2VyX3BvaW50ZXIobG9hZF9i YWxhbmNlKTsNCj4gPiAgIA0KPiA+IC0JCQlzZXRfZW5naW5lcy5lbmdpbmVzWzBdLmVuZ2luZV9j bGFzcyA9DQo+ID4gKwkJCXNldF9lbmdpbmVzLT5lbmdpbmVzWzBdLmVuZ2luZV9jbGFzcyA9DQo+ ID4gICAJCQkJSTkxNV9FTkdJTkVfQ0xBU1NfSU5WQUxJRDsNCj4gPiAtCQkJc2V0X2VuZ2luZXMu ZW5naW5lc1swXS5lbmdpbmVfaW5zdGFuY2UgPQ0KPiA+ICsJCQlzZXRfZW5naW5lcy0+ZW5naW5l c1swXS5lbmdpbmVfaW5zdGFuY2UgPQ0KPiA+ICAgCQkJCUk5MTVfRU5HSU5FX0NMQVNTX0lOVkFM SURfTk9ORTsNCj4gPiAtCQkJZmlsbF9lbmdpbmVzX2NsYXNzKCZzZXRfZW5naW5lcy5lbmdpbmVz WzFdLCBWQ1MpOw0KPiA+ICsJCQlmaWxsX2VuZ2luZXNfY2xhc3MoJnNldF9lbmdpbmVzLT5lbmdp bmVzWzFdLCBWQ1MpOw0KPiA+ICAgDQo+ID4gLQkJCW1lbXNldCgmbG9hZF9iYWxhbmNlLCAwLCBz aXplb2YobG9hZF9iYWxhbmNlKSk7DQo+ID4gLQkJCWxvYWRfYmFsYW5jZS5iYXNlLm5hbWUgPQ0K PiA+ICsJCQlsb2FkX2JhbGFuY2UtPmJhc2UubmFtZSA9DQo+ID4gICAJCQkJSTkxNV9DT05URVhU X0VOR0lORVNfRVhUX0xPQURfQkFMQU5DRTsNCj4gPiAtCQkJbG9hZF9iYWxhbmNlLm51bV9zaWJs aW5ncyA9IGNvdW50Ow0KPiA+ICsJCQlsb2FkX2JhbGFuY2UtPm51bV9zaWJsaW5ncyA9IGNvdW50 Ow0KPiA+ICAgDQo+ID4gLQkJCWZpbGxfZW5naW5lc19jbGFzcygmbG9hZF9iYWxhbmNlLmVuZ2lu ZXNbMF0sIFZDUyk7DQo+ID4gKwkJCWZpbGxfZW5naW5lc19jbGFzcygmbG9hZF9iYWxhbmNlLT5l bmdpbmVzWzBdLCBWQ1MpOw0KPiA+ICAgDQo+ID4gICAJCQlnZW1fY29udGV4dF9zZXRfcGFyYW0o ZmQsICZwYXJhbSk7DQo+ID4gKw0KPiA+ICsJCQlmcmVlKHNldF9lbmdpbmVzKTsNCj4gPiArCQkJ ZnJlZShsb2FkX2JhbGFuY2UpOw0KPiA+ICAgCQl9DQo+ID4gICANCj4gPiAgIAkJaWYgKHdyay0+ c3NldSkgew0KPiA+IA0KPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXw0KPiBpZ3QtZGV2IG1haWxpbmcgbGlzdA0KPiBpZ3QtZGV2QGxpc3RzLmZyZWVkZXNr dG9wLm9yZw0KPiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2lndC1kZXYNCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeA==