Re: [RFC PATCH v3 09/19] target/arm: Add named cpu model infra + graviton3 named model
Khushit Shah <[email protected]> Wed, 5 Aug 2026 11:35:11 +0000
| Newsgroups | org.nongnu.qemu-arm,dev.linux.lists.kvmarm,org.nongnu.qemu-devel |
|---|---|
| Message-ID | <[email protected]> |
DQoNCj4gT24gMjYgSnVsIDIwMjYsIGF0IDc6MDTigK9QTSwgRXJpYyBBdWdlciA8ZXJpYy5hdWdl ckByZWRoYXQuY29tPiB3cm90ZToNCj4gDQo+ICEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfA0KPiAgQ0FVVElPTjogRXh0 ZXJuYWwgRW1haWwNCj4gDQo+IHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIQ0KPiANCj4gSGkgS2h1c2hpdCwNCj4gDQo+ IE9uIDcvMTYvMjYgMTE6MzggUE0sIEtodXNoaXQgU2hhaCB3cm90ZToNCj4+IEZyb206IFNoYWp1 IEFicmFoYW0gPHNoYWp1LmFicmFoYW1AbnV0YW5peC5jb20+DQo+PiANCj4+IEludHJvZHVjZSBh IHNtYWxsIG5hbWVkLUNQVS1tb2RlbCBsYXllciBvbiB0b3Agb2YgdGhlIGZpZWxkLWJhY2tlZA0K Pj4gcHJvcGVydHkgaW5mcmFzdHJ1Y3R1cmUuIEVhY2ggbW9kZWwgaXMgYSBmbGF0IHRhYmxlIG9m IChuYW1lLCB2YWx1ZSkNCj4+IG92ZXJyaWRlcyBhbmQgYSBwYXJlbnQgcG9pbnRlci4gQXQgaW5z dGFuY2UtaW5pdCwgdGhlIHBhcmVudCBjaGFpbiBpcw0KPj4gd2Fsa2VkIHJvb3QtZmlyc3QgYW5k IGV2ZXJ5IGxldmVsJ3MgcHJvcGVydGllcyBhcmUgYXBwbGllZCB2aWEgUU9NLA0KPj4gc28gYSBj aGlsZCBlbnRyeSBvdmVycmlkZXMgaXRzIGFuY2VzdG9ycyBmb3IgdGhlIHNhbWUgbmFtZS4NCj4+ IA0KPj4gRm9yIGV4YW1wbGUsIHRoZSBncmF2aXRvbjMtdjEgbmFtZWQgbW9kZWwgaGllcmFyY2h5 IGlzOg0KPj4gbm9uLXplcm8tZGVmYXVsdHMtdjEgICAgS25vd24gbm9uLXplcm8gZGVmYXVsdCBJ RCByZWdzIGZpZWxkIHZhbHVlcw0KPj4gIGFybS12OF80LWEtdjEgICAgICAgQVJNdjguNC1BIGFy Y2hpdGVjdHVyYWwgbWFuZGF0ZQ0KPj4gICAgbmVvdmVyc2UtdjEtdjEgICAgTmVvdmVyc2UgVjEN Cj4+ICAgICAgZ3Jhdml0b24zLXYxICAgIEFXUyBHcmF2aXRvbjMNCj4+IA0KPj4gbm9uLXplcm8t ZGVmYXVsdHMtdjE6DQo+PiAgIEZpZWxkIHRoYXQgc2hvdWxkIGJlIHBvcHVsYXRlZCB3aXRoIHNv bWUgbm9uIHplcm8gdmFsdWUgYnkgZGVmYXVsdC4NCj4gZm9sbG93aW5nIHdoaWNoIHNwZWNpZmlj YXRpb24/IFRoaXMgaXMgbm90IGNsZWFyIHRvIG1lLiBJcyB0aGF0IGxheWVyDQo+IHJlYWxseSBt ZWFuaW5nZnVsPyBTaG91bGRuJ3Qgd2Ugc3RhcnQgd2l0aCB0aGUgbmV4dCBvbmU/DQoNCk9rYXks IG1ha2VzIHNlbnNlLiBXZSBjYW4gZ2V0IHJpZCBvZiB0aGlzIGxheWVyLg0KDQo+PiANCj4+IGFy bS12OF80LWEtdjE6DQo+PiAgT25seSBmZWF0dXJlcyBtYW5kYXRlZCBieSB0aGUgQVJNIEFSTS4N Cj4+IA0KPj4gbmVvdmVyc2UtdjEtdjE6DQo+PiAgUmVmZXJlbmNlIG1hbnVhbCBkZXJpdmVkIGZl YXR1cmUgdmFsdWVzIGZvciB0aGUgcmVmZXJlbmNlIGNvcmUuDQo+PiAgVmFsdWVzIGRpZmZlciBm cm9tIFRSTSB2YWx1ZXMgYmFzZWQgb24gd2hhdCB3YXMgZXhwb3NlZCB0byB0aGUgZ3Vlc3QNCj4+ ICB3aXRoIC1jcHUgaG9zdC4NCj4+IA0KPj4gZ3Jhdml0b24zLXYxOg0KPj4gIFNvQyBpbnRlZ3Jh dGlvbiBjaG9pY2VzIChjcnlwdG8gcGluLCBjYWNoZSBoaW50cywgUEF1dGggYWxnKS4NCj4+IA0K Pj4gVGhlIG1vZGVsIHZhbHVlcyBhcmUgZmlndXJlZCBvdXQgZnJvbSBJRCByZWdpc3RlciBkdW1w IHZpc2libGUgdG8NCj4+IFFFTVUgd2l0aCAtY3B1IGhvc3Qgb24gR3Jhdml0b24zIG1hY2hpbmUu DQo+PiANCj4+IE1vZGVsIHJlYWxpemF0aW9uOg0KPj4gMS4gWmVybyBvdXQgSUQgcmVncyBhcnJh eS4NCj4+IDIuIEFkZCBhbGwgcHJvcGVydGllcyB0byB0aGUgQ1BVIE9iamVjdA0KPj4gMy4gYXJt X3JlYWxpemVfbW9kZWxfY2hhaW46IFdhbGsgdGhlIHBhcmVudCBjaGFpbiBmcm9tIHJvb3QgZmly c3QgYW5kDQo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBseSBhbGwgdGhlIHByb3Bl cnRpZXMuDQo+PiANCj4+IENvLWF1dGhvcmVkLWJ5OiBTaGFqdSBBYnJhaGFtIDxzaGFqdS5hYnJh aGFtQG51dGFuaXguY29tPg0KPj4gU2lnbmVkLW9mZi1ieTogS2h1c2hpdCBTaGFoIDxraHVzaGl0 LnNoYWhAbnV0YW5peC5jb20+DQo+PiAtLS0NCj4+IGh3L2FybS92aXJ0LmMgICAgICAgICAgICAg ICB8ICAgNSArDQo+PiB0YXJnZXQvYXJtL2FybS1jcHUtbW9kZWxzLmMgfCAzMzYgKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrDQo+PiB0YXJnZXQvYXJtL2FybS1jcHUtbW9kZWxz LmggfCAgMzUgKysrKw0KPj4gdGFyZ2V0L2FybS9tZXNvbi5idWlsZCAgICAgIHwgICA3ICstDQo+ PiA0IGZpbGVzIGNoYW5nZWQsIDM4MSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQ0KPj4g Y3JlYXRlIG1vZGUgMTAwNjQ0IHRhcmdldC9hcm0vYXJtLWNwdS1tb2RlbHMuYw0KPj4gY3JlYXRl IG1vZGUgMTAwNjQ0IHRhcmdldC9hcm0vYXJtLWNwdS1tb2RlbHMuaA0KPj4gDQo+PiBkaWZmIC0t Z2l0IGEvaHcvYXJtL3ZpcnQuYyBiL2h3L2FybS92aXJ0LmMNCj4+IGluZGV4IGZlMTkwMzA4ODYu LjM0ZTU2ZGMxZjEgMTAwNjQ0DQo+PiAtLS0gYS9ody9hcm0vdmlydC5jDQo+PiArKysgYi9ody9h cm0vdmlydC5jDQo+PiBAQCAtMzgxMiw2ICszODEyLDExIEBAIHN0YXRpYyBHUHRyQXJyYXkgKnZp cnRfZ2V0X3ZhbGlkX2NwdV90eXBlcyhjb25zdCBNYWNoaW5lU3RhdGUgKm1zKQ0KPj4gICAgICAg ICAgICAgZ19wdHJfYXJyYXlfYWRkKHZjdCwgZ19zdHJkdXAoQVJNX0NQVV9UWVBFX05BTUUoImhv c3QiKSkpOw0KPj4gICAgICAgICB9DQo+PiAgICAgfQ0KPj4gKyAgICBpZiAoa3ZtX2VuYWJsZWQo KSAmJiB0YXJnZXRfYWFyY2g2NCgpKSB7DQo+PiArICAgICAgICBnX3B0cl9hcnJheV9hZGQodmN0 LCBnX3N0cmR1cChBUk1fQ1BVX1RZUEVfTkFNRSgiYXJtLXY4XzQtYS12MSIpKSk7DQo+PiArICAg ICAgICBnX3B0cl9hcnJheV9hZGQodmN0LCBnX3N0cmR1cChBUk1fQ1BVX1RZUEVfTkFNRSgibmVv dmVyc2UtdjEtdjEiKSkpOw0KPj4gKyAgICAgICAgZ19wdHJfYXJyYXlfYWRkKHZjdCwgZ19zdHJk dXAoQVJNX0NQVV9UWVBFX05BTUUoImdyYXZpdG9uMy12MSIpKSk7DQo+PiArICAgIH0NCj4+ICAg ICBnX3B0cl9hcnJheV9hZGQodmN0LCBnX3N0cmR1cChBUk1fQ1BVX1RZUEVfTkFNRSgibWF4Iikp KTsgcmV0dXJuIHZjdDsgZGlmZiAtLWdpdCBhL3RhcmdldC9hcm0vYXJtLWNwdS1tb2RlbHMuYw0K Pj4gYi90YXJnZXQvYXJtL2FybS1jcHUtbW9kZWxzLmMgbmV3IGZpbGUgbW9kZSAxMDA2NDQgaW5k ZXgNCj4+IDAwMDAwMDAwMDAuLjc0N2UwZGYwMTAgLS0tIC9kZXYvbnVsbCArKysgYi90YXJnZXQv YXJtL2FybS1jcHUtbW9kZWxzLmMNCj4+IEBAIC0wLDAgKzEsMzM2IEBAICsvKiArICogQVJNIG5h bWVkIENQVSBtb2RlbCBkZWZpbml0aW9ucy4gKyAqICsgKg0KPj4gRWFjaCBtb2RlbCBpcyBkZWZp bmVkIGFzIGFuIGFycmF5IG9mIE1PREVMX1BST1AgbWFjcm8sIGxpc3Rpbmcgb25seSArDQo+PiAq IHRoZSBwcm9wZXJ0aWVzIHRoYXQgRElGRkVSIGZyb20gdGhlIHBhcmVudCBtb2RlbC4gKyAqICsg KiBBdA0KPj4gcmVhbGlzYXRpb24gdGhlIHBhcmVudCBjaGFpbiBpcyB3YWxrZWQgcm9vdC1maXJz dCBhbmQgKyAqIGV2ZXJ5DQo+PiBsZXZlbCdzIHByb3BzIGFyZSBhcHBsaWVkIHZpYSBRT00sIHNv IHRoZSBsZWFmJ3MgdmFsdWVzICsgKiBuYXR1cmFsbHkNCj4+IG92ZXJyaWRlIGl0cyBhbmNlc3Rv cnMuICsgKiArICogSGllcmFyY2h5OiArICogKyAqDQo+PiBub24temVyby1kZWZhdWx0cy12MSBL bm93biBub24temVybyBkZWZhdWx0IElEIHJlZyBmaWVsZCB2YWx1ZXMgKyAqDQo+PiBhcm0tdjhf NC1hLXYxIEFSTXY4LjQtQSBhcmNoaXRlY3R1cmFsIG1hbmRhdGUgKyAqIG5lb3ZlcnNlLXYxLXYx DQo+PiBOZW92ZXJzZSBWMSAoVFJNIDEwMjY0OSkgKyAqIGdyYXZpdG9uMy12MSBBV1MgR3Jhdml0 b24zICsgKiArICoNCj4+IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9yLWxhdGVy ICsgKi8gKyArI2luY2x1ZGUgInFlbXUvb3NkZXAuaCINCj4+ICsjaW5jbHVkZSAicWFwaS9lcnJv ci5oIg0KPj4gKyNpbmNsdWRlICJxZW11L2Vycm9yLXJlcG9ydC5oIg0KPj4gKyNpbmNsdWRlICJz eXN0ZW0va3ZtLmgiDQo+PiArI2luY2x1ZGUgImNwdS5oIg0KPj4gKyNpbmNsdWRlICJpbnRlcm5h bHMuaCINCj4+ICsjaW5jbHVkZSAia3ZtX2FybS5oIg0KPj4gKyNpbmNsdWRlICJhcm0tY3B1LW1v ZGVscy5oIg0KPj4gKyNpbmNsdWRlICJjcHUtaWRyZWdzLmgiDQo+PiArDQo+PiArI2RlZmluZSBN T0RFTF9QUk9QX0ZJRUxEX1NUUiAgc3RyDQo+PiArI2RlZmluZSBNT0RFTF9QUk9QX0ZJRUxEX0JP T0wgYg0KPj4gKyNkZWZpbmUgTU9ERUxfUFJPUF9GSUVMRF9OVU0gIG51bQ0KPj4gKw0KPj4gKyNk ZWZpbmUgTU9ERUxfUFJPUChfbmFtZSwgX3R5cGUsIF92YWx1ZSkgXA0KPj4gKyAgICB7IC5uYW1l ID0gKF9uYW1lKSwgLnR5cGUgPSBBUk1fTU9ERUxfUFJPUF8jI190eXBlLCBcDQo+PiArICAgICAg LnUuTU9ERUxfUFJPUF9GSUVMRF8jI190eXBlID0gKF92YWx1ZSkgfQ0KPj4gKw0KPj4gKyNkZWZp bmUgTU9ERUxfUFJPUF9FTkQgIHsgLm5hbWUgPSBOVUxMIH0NCj4gDQo+IFJlZ2FyZGluZyBzZXR0 aW5ncyBzb21laG93IHdlIGVuZCB1cCB3aXRoIHNvbWV0aGluZyB0aGF0IGlzIHF1aXRlDQo+IHNp bWlsYXIgdG8gVENHIENQVQ0KPiBkZWZpbml0aW9ucyBsaWtlIGluDQo+IGFhcmNoNjRfbmVvdmVy c2VfbjFfaW5pdGZuKCkuIFRvIG1lIHRoaXMgaXMgaW4gZ2VuZXJhbCBtb3JlIHJlYWRhYmxlDQo+ IGJlY2F1c2Ugd2UgdXNlIG5hbWUgZmllbGRzIGluc3RlYWQgb2YgcHV0dGluZyB0aGUgZnVsbCBy ZWcgdmFsdWUuDQo+IFRoaXMgZG9lcyBub3QgcHJldmVudCB1cyBmcm9tIGFkZGluZyBjb21tZW50 cyBhbG9uZyBzZXR0aW5ncyB0byBtYWtlDQo+IHRoaXMgbW9yZSByZWFkYWJsZSBhbmQgZXhwbGlj aXQuDQoNCkNhbiB5b3UgcGxlYXNlIHNwZWNpZnkgZnVydGhlciBvbiB3aGF0IHR5cGVzIG9mIGNv bW1lbnRzPw0KTGlrZSB3aGF0IGRvZXMgZWFjaCBwcm9wZXJ0eSB2YWx1ZSBtZWFucz8NCg0KPj4g Kw0KPj4gKy8qDQo+PiArICogVGhlc2UgZmllbGRzIHNob3VsZCBiZSBwb3B1bGF0ZWQgd2l0aCBz b21lIG5vbi16ZXJvIGRlZmF1bHQgdmFsdWVzLg0KPj4gKyAqLw0KPj4gK3N0YXRpYyBjb25zdCBB cm1Nb2RlbFByb3BWYWx1ZSBub25femVyb19kZWZhdWx0c192MV9wcm9wc1tdID0gew0KPj4gKyAg ICAvKiBJRF9BQTY0UEZSMF9FTDEgKi8NCj4+ICsgICAgTU9ERUxfUFJPUCgiU1lTUkVHX0lEX0FB NjRQRlIwX0VMMV9FTDAiLCBOVU0sIDBiMDAwMSksDQo+PiArICAgIE1PREVMX1BST1AoIlNZU1JF R19JRF9BQTY0UEZSMF9FTDFfRUwxIiwgTlVNLCAwYjAwMDEpLA0KPj4gKyAgICBNT0RFTF9QUk9Q KCJTWVNSRUdfSURfQUE2NFBGUjBfRUwxX0ZQIiwgTlVNLCAwYjExMTEpLA0KPj4gKyAgICBNT0RF TF9QUk9QKCJTWVNSRUdfSURfQUE2NFBGUjBfRUwxX0FkdlNJTUQiLCBOVU0sIDBiMTExMSksDQo+ PiArDQo+PiArICAgIC8qIElEX0FBNjRQRlIxX0VMMSAqLw0KPj4gKyAgICBNT0RFTF9QUk9QKCJT WVNSRUdfSURfQUE2NFBGUjFfRUwxX01URV9mcmFjIiwgTlVNLCAwYjExMTEpLA0KPiBzbyBJIHN0 aWxsIGJlbGlldmUgd2Ugd2FudCBhIHdyYXBwZXIgdGhhdCB0cmFuc3BhcmVudGx5IGVpdGhlciBz ZXRzIGENCj4gcHJvcCBpZiB0aGUgZmllbGQgaGFwcGVucyB0byBiZSB3cml0YWJsZSBvciBzaW1w bHkgcGVyZm9ybXMgY2hlY2tzDQo+IGFnYWluc3QgdGhlIGhvc3QgaWYgdGhlIHByb3AgaXMgbm90 IGF2YWlsYWJsZS4NCg0KQ2Fu4oCZdCB3ZSBkbyB0aGF0IGVhc2lseSBhZnRlcndhcmRzIG9uY2Ug dGhlIElEIHJlZyB2aWV3IGlzIGZpbmFsaXNlZD8NCkRvaW5nIGl0IGhlcmUgbWVhbnMgYWxsIHRo ZSBxbXAgcGF0aHMgd2hpY2ggZG8gbm90IGludGVuZCB0byBhY3R1YWxseQ0KY3JlYXRlIGFueSB2 Q1BVcyB3aWxsIGVycm9yIG91dCBoZXJlLCB3aGljaCBpcyB1bmRlc2lyYWJsZS4NCg0KPj4gKw0K Pj4gKyAgICAvKiBJRF9BQTY0TU1GUjBfRUwxICovDQo+PiArICAgIE1PREVMX1BST1AoIlNZU1JF R19JRF9BQTY0TU1GUjBfRUwxX1RHcmFuNjQiLCBOVU0sIDBiMTExMSksDQo+PiArICAgIE1PREVM X1BST1AoIlNZU1JFR19JRF9BQTY0TU1GUjBfRUwxX1RHcmFuNCIsIE5VTSwgMGIxMTExKSwNCj4+ ICsgICAgTU9ERUxfUFJPUCgiU1lTUkVHX0lEX0FBNjRNTUZSMF9FTDFfVEdyYW4xNl8yIiwgTlVN LCAwYjAwMDEpLA0KPj4gKyAgICBNT0RFTF9QUk9QKCJTWVNSRUdfSURfQUE2NE1NRlIwX0VMMV9U R3JhbjY0XzIiLCBOVU0sIDBiMDAwMSksDQo+PiArICAgIE1PREVMX1BST1AoIlNZU1JFR19JRF9B QTY0TU1GUjBfRUwxX1RHcmFuNF8yIiwgTlVNLCAwYjAwMDEpLA0KPj4gKw0KPj4gKyAgICAvKiBJ RF9BQTY0REZSMF9FTDEgKi8NCj4+ICsgICAgTU9ERUxfUFJPUCgiU1lTUkVHX0lEX0FBNjRERlIw X0VMMV9EZWJ1Z1ZlciIsIE5VTSwgMHg2KSwNCj4+ICsgICAgTU9ERUxfUFJPUCgiU1lTUkVHX0lE X0FBNjRERlIwX0VMMV9Eb3VibGVMb2NrIiwgTlVNLCAwYjExMTEpLA0KPj4gKw0KPj4gKyAgICAv KiBDVFJfRUwwICovDQo+PiArICAgIE1PREVMX1BST1AoIlNZU1JFR19DVFJfRUwwX0wxSXAiLCBO VU0sIDBiMTApLA0KPj4gKyAgICBNT0RFTF9QUk9QKCJTWVNSRUdfQ1RSX0VMMF9SRVMxXzMxIiwg TlVNLCAxKSwNCj4+ICsNCj4+ICsgICAgLyogSURfQUE2NE1NRlI0X0VMMSAqLw0KPj4gKyAgICBN T0RFTF9QUk9QKCJTWVNSRUdfSURfQUE2NE1NRlI0X0VMMV9FMkgwIiwgTlVNLCAwYjExMTEpLA0K Pj4gKw0KPj4gKyAgICBNT0RFTF9QUk9QX0VORCwNCj4+ICt9Ow0KPiANCj4gVG8gZWFzZSB0aGUg cmV2aWV3IEkgd291bGQgc3VnZ2VzdCB0byBwdXQgYSBkdW1wIG9mIGFsbCBpZCByZWdzIG9mIGEN Cj4gbGVhZiBtb2RlbCBpbiB0aGUgY29tbWl0IGRlc2NyaXB0aW9uLiBJdCBpcyBsZXNzIGVycm9y IHByb25lIHRoYXQNCj4gdW5kZXJzdGFuZGluZyB0aGUgdmFyaW91cyBvdmVycmlkZXMuDQo+IEkg d291bGQgc3VnZ2VzdCB0byBoYXZlIHNlcGFyYXRlIHBhdGNoZXMgZm9yIGVhY2ggbW9kZWwgdG9v Lg0KDQpBY2sgdG8gYm90aC4gV2lsbCBkbyB0aGlzIGluIHY0Lg0KDQo+IFNvIHlvdSBzYWlkIGEg bGVhZiBtb2RlbCBzaGFsbCBoYXZlIGV4cGxpY2l0IHZhbHVlcyBmb3IgZWFjaCBmaWVsZCwNCj4g aW5jbHVkaW5nIG5vbiB3cml0YWJsZSBvbmVzLiBUaGUgY29kZSBkb2VzIG5vdCBjaGVjayB0aGF0 LiBIb3cgZG8gd2UNCj4gbWFrZSBzdXJlIHdlIGFyZSBub3QgbWlzc2luZyBzZXR0aW5ncz8NCg0K SSBhbSBub3Qgc3VyZSB3aGVyZSBJIHNheSB0aGF0LCBhc3N1bXB0aW9uIGlzOg0KQmFzZSBtb2Rl bCBzdGFydHMgd2l0aCBhIHplcm9lZCBJTyByZWcgdmlldywgZWFjaCBtb2RlbCBpbg0KY2hhaW4g YXBwbGllcyBzb21lIHNldHRpbmdzLCBhIGNoaWxkIG1vZGVs4oCZcyBzZXR0aW5nDQpvdmVycmlk ZXMgcGFyZW50c+KAmSBzZXR0aW5ncy4NCg0KRm9yIHZlcmlmaWNhdGlvbiB3ZSBjYW4gZHVtcCB0 aGUgbGVhZiBJRCByZWdzIHZpZXcsIGl0DQpzaG91bGQgbWF0Y2ggd2l0aCB0aGUgb25lIGluIHRo ZSBjb21taXQgbWVzc2FnZSBhcyBwZXINCnlvdXIgc3VnZ2VzdGlvbi4NCj4+ICsNCj4+ICtzdGF0 aWMgY29uc3QgQXJtTW9kZWxQcm9wVmFsdWUgYXJtdjhfNF9hX3YxX3Byb3BzW10gPSB7DQo+PiAr ICAgIE1PREVMX1BST1AoIlNZU1JFR19JRF9BQTY0SVNBUjBfRUwxX0NSQzMyIiwgTlVNLCAxKSwN Cj4+ICsgICAgTU9ERUxfUFJPUCgiU1lTUkVHX0lEX0FBNjRJU0FSMF9FTDFfQXRvbWljIiwgTlVN LCAyKSwNCj4+ICsgICAgTU9ERUxfUFJPUCgiU1lTUkVHX0lEX0FBNjRNTUZSMV9FTDFfSFBEUyIs IE5VTSwgMSksDQo+PiArICAgIE1PREVMX1BST1AoIlNZU1JFR19JRF9BQTY0TU1GUjFfRUwxX0xP IiwgTlVNLCAxKSwNCj4+ICsNCj4+ICsgICAgTU9ERUxfUFJPUCgiU1lTUkVHX0lEX0FBNjRJU0FS MV9FTDFfRFBCIiwgTlVNLCAxKSwNCj4+ICsNCj4+ICsgICAgTU9ERUxfUFJPUCgiU1lTUkVHX0lE X0FBNjRQRlIwX0VMMV9SQVMiLCBOVU0sIDEpLA0KPj4gKyAgICBNT0RFTF9QUk9QKCJTWVNSRUdf SURfQUE2NFBGUjFfRUwxX1JBU19mcmFjIiwgTlVNLCAwKSwNCj4+ICsNCj4+ICsgICAgTU9ERUxf UFJPUCgiU1lTUkVHX0lEX0FBNjRNTUZSMV9FTDFfUEFOIiwgTlVNLCAyKSwNCj4+ICsgICAgTU9E RUxfUFJPUCgiU1lTUkVHX0lEX0FBNjRNTUZSMl9FTDFfVUFPIiwgTlVNLCAxKSwNCj4+ICsgICAg TU9ERUxfUFJPUCgiU1lTUkVHX0lEX0FBNjRNTUZSMl9FTDFfQ25QIiwgTlVNLCAxKSwNCj4+ICsg ICAgTU9ERUxfUFJPUCgiU1lTUkVHX0lEX0FBNjRNTUZSMl9FTDFfSUVTQiIsIE5VTSwgMSksDQo+ PiArDQo+PiArICAgIE1PREVMX1BST1AoIlNZU1JFR19JRF9BQTY0UEZSMF9FTDFfRElUIiwgTlVN LCAxKSwNCj4+ICsgICAgTU9ERUxfUFJPUCgiU1lTUkVHX0lEX0FBNjRERlIwX0VMMV9EZWJ1Z1Zl ciIsIE5VTSwgOSksDQo+PiArICAgIE1PREVMX1BST1AoIlNZU1JFR19JRF9BQTY0REZSMF9FTDFf UE1VVmVyIiwgTlVNLCA1KSwNCj4+ICsgICAgTU9ERUxfUFJPUCgiU1lTUkVHX0lEX0FBNjRJU0FS MF9FTDFfVFMiLCBOVU0sIDEpLA0KPj4gKyAgICBNT0RFTF9QUk9QKCJTWVNSRUdfSURfQUE2NElT QVIxX0VMMV9MUkNQQyIsIE5VTSwgMiksDQo+PiArICAgIE1PREVMX1BST1AoIlNZU1JFR19JRF9B QTY0TU1GUjJfRUwxX0FUIiwgTlVNLCAxKSwNCj4+ICsgICAgTU9ERUxfUFJPUCgiU1lTUkVHX0lE X0FBNjRNTUZSMl9FTDFfSURTIiwgTlVNLCAxKSwNCj4+ICsgICAgLyogS1ZNIHplcm9lcyBvdXQg dGhlc2UgZmllbGQgd2hlbiBNVEUgaXMgbm90IGVuYWJsZWQuICovDQo+PiArICAgIE1PREVMX1BS T1AoIlNZU1JFR19JRF9BQTY0UEZSMV9FTDFfTVRFX2ZyYWMiLCBOVU0sIDApLA0KPj4gKyAgICBN T0RFTF9QUk9QX0VORCwNCj4+ICt9Ow0KPj4gKw0KPj4gK3N0YXRpYyBjb25zdCBBcm1Nb2RlbFBy b3BWYWx1ZSBuZW92ZXJzZV92MV92MV9wcm9wc1tdID0gew0KPj4gKyAgICBNT0RFTF9QUk9QKCJT WVNSRUdfTUlEUl9FTDFfSW1wbGVtZW50ZXIiLCBOVU0sIDB4NDEpLA0KPj4gKyAgICBNT0RFTF9Q Uk9QKCJTWVNSRUdfTUlEUl9FTDFfVmFyaWFudCIsIE5VTSwgMHgxKSwNCj4+ICsgICAgTU9ERUxf UFJPUCgiU1lTUkVHX01JRFJfRUwxX0FyY2hpdGVjdHVyZSIsIE5VTSwgMHhGKSwNCj4+ICsgICAg TU9ERUxfUFJPUCgiU1lTUkVHX01JRFJfRUwxX1BhcnROdW0iLCBOVU0sIDB4RDQwKSwNCj4+ICsg ICAgTU9ERUxfUFJPUCgiU1lTUkVHX01JRFJfRUwxX1JldmlzaW9uIiwgTlVNLCAweDEpLA0KPj4g Kw0KPj4gKyAgICBNT0RFTF9QUk9QKCJTWVNSRUdfSURfQUE2NERGUjBfRUwxX0JSUHMiLCBOVU0s IDB4NSksDQo+PiArICAgIE1PREVMX1BST1AoIlNZU1JFR19JRF9BQTY0REZSMF9FTDFfV1JQcyIs IE5VTSwgMHgzKSwNCj4+ICsgICAgTU9ERUxfUFJPUCgiU1lTUkVHX0lEX0FBNjRERlIwX0VMMV9D VFhfQ01QcyIsIE5VTSwgMHgxKSwNCj4+ICsgICAgTU9ERUxfUFJPUCgiU1lTUkVHX0lEX0FBNjRE RlIwX0VMMV9Eb3VibGVMb2NrIiwgTlVNLCAweEYpLA0KPj4gKw0KPj4gKyAgICBNT0RFTF9QUk9Q KCJTWVNSRUdfSURfQUE2NElTQVIwX0VMMV9SRE0iLCBOVU0sIDEpLA0KPj4gKyAgICBNT0RFTF9Q Uk9QKCJTWVNSRUdfSURfQUE2NElTQVIwX0VMMV9EUCIsIE5VTSwgMSksDQo+PiArICAgIE1PREVM X1BST1AoIlNZU1JFR19JRF9BQTY0SVNBUjBfRUwxX0ZITSIsIE5VTSwgMSksDQo+PiArDQo+PiAr ICAgIE1PREVMX1BST1AoIlNZU1JFR19JRF9BQTY0SVNBUjFfRUwxX0RQQiIsIE5VTSwgMiksDQo+ PiArICAgIE1PREVMX1BST1AoIlNZU1JFR19JRF9BQTY0SVNBUjFfRUwxX0pTQ1ZUIiwgTlVNLCAx KSwNCj4+ICsgICAgTU9ERUxfUFJPUCgiU1lTUkVHX0lEX0FBNjRJU0FSMV9FTDFfRkNNQSIsIE5V TSwgMSksDQo+PiArICAgIE1PREVMX1BST1AoIlNZU1JFR19JRF9BQTY0SVNBUjFfRUwxX0JGMTYi LCBOVU0sIDEpLA0KPj4gKyAgICBNT0RFTF9QUk9QKCJTWVNSRUdfSURfQUE2NElTQVIxX0VMMV9E R0giLCBOVU0sIDEpLA0KPj4gKyAgICBNT0RFTF9QUk9QKCJTWVNSRUdfSURfQUE2NElTQVIxX0VM MV9JOE1NIiwgTlVNLCAxKSwNCj4+ICsNCj4+ICsgICAgTU9ERUxfUFJPUCgiU1lTUkVHX0lEX0FB NjRQRlIwX0VMMV9GUCIsIE5VTSwgMSksDQo+PiArICAgIE1PREVMX1BST1AoIlNZU1JFR19JRF9B QTY0UEZSMF9FTDFfQWR2U0lNRCIsIE5VTSwgMSksDQo+PiArDQo+PiArICAgIE1PREVMX1BST1Ao IlNZU1JFR19JRF9BQTY0UEZSMF9FTDFfUkFTIiwgTlVNLCAyKSwNCj4+ICsgICAgTU9ERUxfUFJP UCgiU1lTUkVHX0lEX0FBNjRQRlIxX0VMMV9SQVNfZnJhYyIsIE5VTSwgMCksDQo+PiArDQo+PiAr ICAgIE1PREVMX1BST1AoIlNZU1JFR19JRF9BQTY0UEZSMF9FTDFfQ1NWMiIsIE5VTSwgMSksDQo+ PiArICAgIE1PREVMX1BST1AoIlNZU1JFR19JRF9BQTY0UEZSMV9FTDFfQ1NWMl9mcmFjIiwgTlVN LCAwKSwNCj4+ICsNCj4+ICsgICAgTU9ERUxfUFJPUCgiU1lTUkVHX0lEX0FBNjRQRlIwX0VMMV9D U1YzIiwgTlVNLCAxKSwNCj4+ICsNCj4+ICsgICAgTU9ERUxfUFJPUCgiU1lTUkVHX0lEX0FBNjRQ RlIxX0VMMV9TU0JTIiwgTlVNLCAyKSwNCj4+ICsNCj4+ICsgICAgTU9ERUxfUFJPUCgiU1lTUkVH X0lEX0FBNjRNTUZSMF9FTDFfUEFSYW5nZSIsIE5VTSwgNSksDQo+PiArICAgIE1PREVMX1BST1Ao IlNZU1JFR19JRF9BQTY0TU1GUjBfRUwxX0FTSURCaXRzIiwgTlVNLCAyKSwNCj4+ICsgICAgTU9E RUxfUFJPUCgiU1lTUkVHX0lEX0FBNjRNTUZSMF9FTDFfQmlnRW5kIiwgTlVNLCAxKSwNCj4+ICsg ICAgTU9ERUxfUFJPUCgiU1lTUkVHX0lEX0FBNjRNTUZSMF9FTDFfU05TTWVtIiwgTlVNLCAxKSwN Cj4+ICsgICAgTU9ERUxfUFJPUCgiU1lTUkVHX0lEX0FBNjRNTUZSMF9FTDFfVEdyYW40IiwgTlVN LCAwKSwNCj4+ICsgICAgTU9ERUxfUFJPUCgiU1lTUkVHX0lEX0FBNjRNTUZSMF9FTDFfVEdyYW4x NiIsIE5VTSwgMSksDQo+PiArICAgIE1PREVMX1BST1AoIlNZU1JFR19JRF9BQTY0TU1GUjBfRUwx X1RHcmFuNjQiLCBOVU0sIDApLA0KPj4gKyAgICBNT0RFTF9QUk9QKCJTWVNSRUdfSURfQUE2NE1N RlIwX0VMMV9UR3JhbjRfMiIsIE5VTSwgMCksDQo+PiArICAgIE1PREVMX1BST1AoIlNZU1JFR19J RF9BQTY0TU1GUjBfRUwxX1RHcmFuMTZfMiIsIE5VTSwgMCksDQo+PiArICAgIE1PREVMX1BST1Ao IlNZU1JFR19JRF9BQTY0TU1GUjBfRUwxX1RHcmFuNjRfMiIsIE5VTSwgMCksDQo+PiArICAgIE1P REVMX1BST1AoIlNZU1JFR19JRF9BQTY0TU1GUjFfRUwxX0hBRkRCUyIsIE5VTSwgMiksDQo+PiAr ICAgIE1PREVMX1BST1AoIlNZU1JFR19JRF9BQTY0TU1GUjFfRUwxX1ZNSURCaXRzIiwgTlVNLCAy KSwNCj4+ICsgICAgTU9ERUxfUFJPUCgiU1lTUkVHX0lEX0FBNjRNTUZSMV9FTDFfVkgiLCBOVU0s IDEpLA0KPj4gKyAgICBNT0RFTF9QUk9QKCJTWVNSRUdfSURfQUE2NE1NRlIxX0VMMV9IUERTIiwg TlVNLCAyKSwNCj4+ICsgICAgTU9ERUxfUFJPUCgiU1lTUkVHX0lEX0FBNjRNTUZSMV9FTDFfWE5Y IiwgTlVNLCAxKSwNCj4+ICsgICAgTU9ERUxfUFJPUCgiU1lTUkVHX0lEX0FBNjRNTUZSMV9FTDFf U3BlY1NFSSIsIE5VTSwgMCksDQo+PiArDQo+PiArICAgIE1PREVMX1BST1AoIlNZU1JFR19JRF9B QTY0TU1GUjJfRUwxX0ZXQiIsIE5VTSwgMSksDQo+PiArICAgIE1PREVMX1BST1AoIlNZU1JFR19J RF9BQTY0TU1GUjJfRUwxX0JCTSIsIE5VTSwgMiksDQo+PiArICAgIE1PREVMX1BST1AoIlNZU1JF R19JRF9BQTY0TU1GUjJfRUwxX0VWVCIsIE5VTSwgMiksDQo+PiArDQo+PiArICAgIE1PREVMX1BS T1AoIlNZU1JFR19JRF9BQTY0TU1GUjRfRUwxX0UySDAiLCBOVU0sIDApLA0KPj4gKw0KPj4gKyAg ICBNT0RFTF9QUk9QKCJTWVNSRUdfQ1RSX0VMMF9JbWluTGluZSIsIE5VTSwgNCksDQo+PiArICAg IE1PREVMX1BST1AoIlNZU1JFR19DVFJfRUwwX0wxSXAiLCBOVU0sIDMpLA0KPj4gKyAgICBNT0RF TF9QUk9QKCJTWVNSRUdfQ1RSX0VMMF9EbWluTGluZSIsIE5VTSwgNCksDQo+PiArICAgIE1PREVM X1BST1AoIlNZU1JFR19DVFJfRUwwX0VSRyIsIE5VTSwgNCksDQo+PiArICAgIE1PREVMX1BST1Ao IlNZU1JFR19DVFJfRUwwX0NXRyIsIE5VTSwgNCksDQo+PiArDQo+PiArICAgIE1PREVMX1BST1Ao IlNZU1JFR19EQ1pJRF9FTDBfQlMiLCBOVU0sIDB4NCksDQo+PiArDQo+PiArICAgIC8qIHBhdXRo ICovDQo+PiArICAgIE1PREVMX1BST1AoIlNZU1JFR19JRF9BQTY0SVNBUjFfRUwxX0FQQSIsIE5V TSwgMyksDQo+PiArICAgIE1PREVMX1BST1AoIlNZU1JFR19JRF9BQTY0SVNBUjFfRUwxX0dQQSIs IE5VTSwgMSksDQo+PiArDQo+PiArICAgIC8qIHN2ZSAqLw0KPj4gKyAgICBNT0RFTF9QUk9QKCJT WVNSRUdfSURfQUE2NFBGUjBfRUwxX1NWRSIsIE5VTSwgMSksDQo+PiArICAgIE1PREVMX1BST1Ao IlNZU1JFR19JRF9BQTY0WkZSMF9FTDFfQkYxNiIsIE5VTSwgMSksDQo+PiArICAgIE1PREVMX1BS T1AoIlNZU1JFR19JRF9BQTY0WkZSMF9FTDFfSThNTSIsIE5VTSwgMSksDQo+PiArICAgIE1PREVM X1BST1AoInN2ZTEyOCIsIEJPT0wsIHRydWUpLA0KPj4gKw0KPj4gKyAgICBNT0RFTF9QUk9QX0VO RCwNCj4+ICt9Ow0KPj4gKw0KPj4gK3N0YXRpYyBjb25zdCBBcm1Nb2RlbFByb3BWYWx1ZSBncmF2 aXRvbjNfdjFfcHJvcHNbXSA9IHsNCj4+ICsgICAgTU9ERUxfUFJPUCgiU1lTUkVHX0lEX0FBNjRJ U0FSMF9FTDFfQUVTIiwgTlVNLCAyKSwNCj4+ICsgICAgTU9ERUxfUFJPUCgiU1lTUkVHX0lEX0FB NjRJU0FSMF9FTDFfU0hBMSIsIE5VTSwgMSksDQo+PiArICAgIE1PREVMX1BST1AoIlNZU1JFR19J RF9BQTY0SVNBUjBfRUwxX1NIQTIiLCBOVU0sIDIpLA0KPj4gKyAgICBNT0RFTF9QUk9QKCJTWVNS RUdfSURfQUE2NElTQVIwX0VMMV9TSEEzIiwgTlVNLCAxKSwNCj4+ICsgICAgTU9ERUxfUFJPUCgi U1lTUkVHX0lEX0FBNjRJU0FSMF9FTDFfU00zIiwgTlVNLCAxKSwNCj4+ICsgICAgTU9ERUxfUFJP UCgiU1lTUkVHX0lEX0FBNjRJU0FSMF9FTDFfU000IiwgTlVNLCAxKSwNCj4+ICsgICAgTU9ERUxf UFJPUCgiU1lTUkVHX0lEX0FBNjRJU0FSMF9FTDFfUk5EUiIsIE5VTSwgMSksDQo+PiArDQo+PiAr ICAgIE1PREVMX1BST1AoIlNZU1JFR19DVFJfRUwwX0lEQyIsIE5VTSwgMSksDQo+PiArICAgIE1P REVMX1BST1AoIlNZU1JFR19DVFJfRUwwX0RJQyIsIE5VTSwgMSksDQo+PiArDQo+PiArICAgIE1P REVMX1BST1AoIlNZU1JFR19SRVZJRFJfRUwxX1ZBTCIsIE5VTSwgMSksDQo+PiArDQo+PiArICAg IE1PREVMX1BST1BfRU5ELA0KPj4gK307DQo+PiArDQo+PiArc3RhdGljIGNvbnN0IEFybU5hbWVk Q3B1TW9kZWwgYXJtX2NwdV9tb2RlbHNbXSA9IHsNCj4+ICsgICAgew0KPj4gKyAgICAgICAgLm5h bWUgICA9ICJub24temVyby1kZWZhdWx0cy12MSIsDQo+PiArICAgICAgICAucGFyZW50ID0gTlVM TCwNCj4+ICsgICAgICAgIC5wcm9wcyAgPSBub25femVyb19kZWZhdWx0c192MV9wcm9wcywNCj4+ ICsgICAgfSwNCj4+ICsgICAgew0KPj4gKyAgICAgICAgLm5hbWUgICA9ICJhcm0tdjhfNC1hLXYx IiwNCj4+ICsgICAgICAgIC5wYXJlbnQgPSAibm9uLXplcm8tZGVmYXVsdHMtdjEiLA0KPj4gKyAg ICAgICAgLnByb3BzICA9IGFybXY4XzRfYV92MV9wcm9wcywNCj4+ICsgICAgfSwNCj4+ICsgICAg ew0KPj4gKyAgICAgICAgLm5hbWUgICA9ICJuZW92ZXJzZS12MS12MSIsDQo+PiArICAgICAgICAu cGFyZW50ID0gImFybS12OF80LWEtdjEiLA0KPj4gKyAgICAgICAgLnByb3BzICA9IG5lb3ZlcnNl X3YxX3YxX3Byb3BzLA0KPj4gKyAgICB9LA0KPj4gKyAgICB7DQo+PiArICAgICAgICAubmFtZSAg ID0gImdyYXZpdG9uMy12MSIsDQo+PiArICAgICAgICAucGFyZW50ID0gIm5lb3ZlcnNlLXYxLXYx IiwNCj4+ICsgICAgICAgIC5wcm9wcyAgPSBncmF2aXRvbjNfdjFfcHJvcHMsDQo+PiArICAgIH0s DQo+PiArfTsNCj4+ICsNCj4+ICtzdGF0aWMgQVJNQ1BVSW5mbyBhcm1fbmFtZWRfY3B1X2luZm9z W0FSUkFZX1NJWkUoYXJtX2NwdV9tb2RlbHMpXTsNCj4+ICtjb25zdCBBcm1OYW1lZENwdU1vZGVs ICphcm1fZmluZF9tb2RlbChjb25zdCBjaGFyICpuYW1lKQ0KPj4gK3sNCj4+ICsgICAgc2l6ZV90 IGk7DQo+PiArICAgIGZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGFybV9jcHVfbW9kZWxzKTsg aSsrKSB7DQo+PiArICAgICAgICBpZiAoZ19zdHJfZXF1YWwoYXJtX2NwdV9tb2RlbHNbaV0ubmFt ZSwgbmFtZSkpIHsNCj4+ICsgICAgICAgICAgICByZXR1cm4gJmFybV9jcHVfbW9kZWxzW2ldOw0K Pj4gKyAgICAgICAgfQ0KPj4gKyAgICB9DQo+PiArICAgIHJldHVybiBOVUxMOw0KPj4gK30NCj4+ ICsNCj4+ICtzdGF0aWMgdm9pZCBhcm1fYXBwbHlfbW9kZWxfcHJvcHMoT2JqZWN0ICpvYmosIGNv bnN0IEFybU1vZGVsUHJvcFZhbHVlICpwcm9wcywNCj4+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgRXJyb3IgKiplcnJwKQ0KPj4gK3sNCj4+ICsgICAgY29uc3QgQXJtTW9kZWxQ cm9wVmFsdWUgKnB2Ow0KPj4gKyAgICBFUlJQX0dVQVJEKCk7DQo+PiArDQo+PiArICAgIGZvciAo cHYgPSBwcm9wczsgcHYtPm5hbWU7IHB2KyspIHsNCj4+ICsgICAgICAgIHN3aXRjaCAocHYtPnR5 cGUpIHsNCj4+ICsgICAgICAgIGNhc2UgQVJNX01PREVMX1BST1BfQk9PTDoNCj4+ICsgICAgICAg ICAgICBvYmplY3RfcHJvcGVydHlfc2V0X2Jvb2wob2JqLCBwdi0+bmFtZSwgcHYtPnUuYiwgZXJy cCk7DQo+PiArICAgICAgICAgICAgYnJlYWs7DQo+PiArICAgICAgICBjYXNlIEFSTV9NT0RFTF9Q Uk9QX05VTToNCj4+ICsgICAgICAgICAgICBvYmplY3RfcHJvcGVydHlfc2V0X3VpbnQob2JqLCBw di0+bmFtZSwgcHYtPnUubnVtLCBlcnJwKTsNCj4+ICsgICAgICAgICAgICBicmVhazsNCj4+ICsg ICAgICAgIGRlZmF1bHQ6DQo+PiArICAgICAgICAgICAgZ19hc3NlcnRfbm90X3JlYWNoZWQoKTsN Cj4+ICsgICAgICAgIH0NCj4+ICsgICAgICAgIGlmICgqZXJycCkgew0KPj4gKyAgICAgICAgICAg IGVycm9yX3ByZXBlbmQoZXJycCwgInByb3BlcnR5ICclcyc6ICIsIHB2LT5uYW1lKTsNCj4+ICsg ICAgICAgICAgICByZXR1cm47DQo+PiArICAgICAgICB9DQo+PiArICAgIH0NCj4+ICt9DQo+PiAr DQo+PiArc3RhdGljIHZvaWQgYXJtX3JlYWxpemVfbW9kZWxfY2hhaW4oT2JqZWN0ICpvYmosIGNv bnN0IEFybU5hbWVkQ3B1TW9kZWwgKm1vZGVsLA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEVycm9yICoqZXJycCkNCj4+ICt7DQo+PiArICAgIGNvbnN0IEFybU5hbWVk Q3B1TW9kZWwgKmN1ciwgKnBhcmVudDsNCj4+ICsgICAgY29uc3QgQXJtTmFtZWRDcHVNb2RlbCAq Y2hhaW5bQVJSQVlfU0laRShhcm1fY3B1X21vZGVscyldOw0KPj4gKyAgICBzaXplX3QgZGVwdGgg PSAwOw0KPj4gKyAgICBmb3IgKGN1ciA9IG1vZGVsOyBjdXI7ICkgew0KPj4gKyAgICAgICAgaWYg KGRlcHRoID49IEFSUkFZX1NJWkUoY2hhaW4pKSB7DQo+PiArICAgICAgICAgICAgZXJyb3Jfc2V0 ZyhlcnJwLCAibW9kZWwgJyVzJzogcGFyZW50IGNoYWluIHRvbyBkZWVwICINCj4+ICsgICAgICAg ICAgICAgICAgICAgICAgICIocG9zc2libGUgY3ljbGUpIiwgbW9kZWwtPm5hbWUpOw0KPj4gKyAg ICAgICAgICAgIHJldHVybjsNCj4+ICsgICAgICAgIH0NCj4+ICsgICAgICAgIGNoYWluW2RlcHRo KytdID0gY3VyOw0KPj4gKw0KPj4gKyAgICAgICAgaWYgKCFjdXItPnBhcmVudCkgew0KPj4gKyAg ICAgICAgICAgIGJyZWFrOw0KPj4gKyAgICAgICAgfQ0KPj4gKyAgICAgICAgcGFyZW50ID0gYXJt X2ZpbmRfbW9kZWwoY3VyLT5wYXJlbnQpOw0KPj4gKyAgICAgICAgaWYgKCFwYXJlbnQpIHsNCj4+ ICsgICAgICAgICAgICBlcnJvcl9zZXRnKGVycnAsICJtb2RlbCAnJXMnOiB1bmtub3duIHBhcmVu dCAnJXMnIiwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGN1ci0+bmFtZSwgY3VyLT5wYXJl bnQpOw0KPj4gKyAgICAgICAgICAgIHJldHVybjsNCj4+ICsgICAgICAgIH0NCj4+ICsgICAgICAg IGN1ciA9IHBhcmVudDsNCj4+ICsgICAgfQ0KPj4gKw0KPj4gKyAgICB3aGlsZSAoZGVwdGgtLSkg ew0KPj4gKyAgICAgICAgYXJtX2FwcGx5X21vZGVsX3Byb3BzKG9iaiwgY2hhaW5bZGVwdGhdLT5w cm9wcywgZXJycCk7DQo+PiArICAgICAgICBpZiAoKmVycnApIHsNCj4+ICsgICAgICAgICAgICBy ZXR1cm47DQo+PiArICAgICAgICB9DQo+PiArICAgIH0NCj4+ICt9DQo+PiArDQo+PiArc3RhdGlj IHZvaWQgYXJtX25hbWVkX2NwdV9pbml0Zm4oT2JqZWN0ICpvYmopDQo+PiArew0KPj4gKyAgICBB Uk1DUFUgKmNwdSA9IEFSTV9DUFUob2JqKTsNCj4+ICsgICAgQVJNQ1BVQ2xhc3MgKmFjYyA9IEFS TV9DUFVfR0VUX0NMQVNTKG9iaik7DQo+PiArICAgIGNvbnN0IEFybU5hbWVkQ3B1TW9kZWwgKm1v ZGVsID0gYXJtX2ZpbmRfbW9kZWwoYWNjLT5pbmZvLT5uYW1lKTsNCj4+ICsgICAgaWYgKCFtb2Rl bCkgew0KPj4gKyAgICAgICAgZXJyb3JfcmVwb3J0KCInJXMnIENQVSBtb2RlbCBlbnRyeSBub3Qg Zm91bmQpIiwNCj4+ICsgICAgICAgICAgICAgICAgICAgICBhY2MtPmluZm8tPm5hbWUpOw0KPj4g KyAgICAgICAgcmV0dXJuOw0KPj4gKyAgICB9DQo+PiArDQo+PiArICAgIGlmICgha3ZtX2VuYWJs ZWQoKSkgew0KPj4gKyAgICAgICAgZXJyb3JfcmVwb3J0KCInJXMnIENQVSBtb2RlbCByZXF1aXJl cyBLVk0gKC1hY2NlbCBrdm0pIiwNCj4+ICsgICAgICAgICAgICAgICAgICAgICBhY2MtPmluZm8t Pm5hbWUpOw0KPj4gKyAgICAgICAgcmV0dXJuOw0KPj4gKyAgICB9DQo+PiArDQo+PiArICAgIGt2 bV9hcm1fc2V0X2NwdV9mZWF0dXJlc19mcm9tX2hvc3QoY3B1KTsNCj4+ICsgICAgaWYgKCFhcm1f ZmVhdHVyZSgmY3B1LT5lbnYsIEFSTV9GRUFUVVJFX0FBUkNINjQpKSB7DQo+PiArICAgICAgICBy ZXR1cm47DQo+PiArICAgIH0NCj4+ICsNCj4+ICsgICAgLyogMS4gUmVzZXQgSUQgcmVncyB0byAw ICovDQo+PiArICAgIG1lbXNldChjcHUtPmlzYXIuaWRyZWdzLCAwLCBzaXplb2YoY3B1LT5pc2Fy LmlkcmVncykpOw0KPj4gKw0KPj4gKyAgICAvKiAyLiBBZGQgc3ZlTk5OTiBhbmQgU1lTUkVHXyBw cm9wZXJ0aWVzICovDQo+PiArICAgIGFhcmNoNjRfYWRkX3N2ZV9wcm9wZXJ0aWVzKG9iaik7DQo+ PiArICAgIGFhcmNoNjRfYWRkX2lkcmVnc19wcm9wZXJ0aWVzKG9iaik7DQo+PiArDQo+PiArICAg IC8qIDMuIFJlYWxpemUgdGhlIG1vZGVsIGNoYWluLiAqLw0KPj4gKyAgICBhcm1fcmVhbGl6ZV9t b2RlbF9jaGFpbihvYmosIG1vZGVsLCAmZXJyb3JfYWJvcnQpOw0KPj4gK30NCj4+ICsNCj4+ICt2 b2lkIGFybV9yZWdpc3Rlcl9uYW1lZF9jcHVfbW9kZWxzKHZvaWQpDQo+PiArew0KPj4gKyAgICBz aXplX3QgaTsNCj4+ICsgICAgZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoYXJtX2NwdV9tb2Rl bHMpOyBpKyspIHsNCj4+ICsgICAgICAgIGFybV9uYW1lZF9jcHVfaW5mb3NbaV0ubmFtZSA9IGFy bV9jcHVfbW9kZWxzW2ldLm5hbWU7DQo+PiArICAgICAgICBhcm1fbmFtZWRfY3B1X2luZm9zW2ld LmluaXRmbiA9IGFybV9uYW1lZF9jcHVfaW5pdGZuOw0KPj4gKyAgICAgICAgYXJtX2NwdV9yZWdp c3RlcigmYXJtX25hbWVkX2NwdV9pbmZvc1tpXSk7DQo+PiArICAgIH0NCj4+ICt9DQo+PiArDQo+ PiArdHlwZV9pbml0KGFybV9yZWdpc3Rlcl9uYW1lZF9jcHVfbW9kZWxzKQ0KPj4gZGlmZiAtLWdp dCBhL3RhcmdldC9hcm0vYXJtLWNwdS1tb2RlbHMuaCBiL3RhcmdldC9hcm0vYXJtLWNwdS1tb2Rl bHMuaA0KPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4+IGluZGV4IDAwMDAwMDAwMDAuLmFjNGU1 MTA0OTkNCj4+IC0tLSAvZGV2L251bGwNCj4+ICsrKyBiL3RhcmdldC9hcm0vYXJtLWNwdS1tb2Rl bHMuaA0KPj4gQEAgLTAsMCArMSwzNSBAQA0KPj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVy OiBHUEwtMi4wLW9yLWxhdGVyICovDQo+PiArLyoNCj4+ICsgKiBBUk0gbmFtZWQgQ1BVIG1vZGVs IGRlZmluaXRpb25zIC0gcHVibGljIEFQSS4NCj4+ICsgKi8NCj4+ICsjaWZuZGVmIEFSTV9DUFVf TU9ERUxTX0gNCj4+ICsjZGVmaW5lIEFSTV9DUFVfTU9ERUxTX0gNCj4+ICsNCj4+ICsjaW5jbHVk ZSAicWFwaS9lcnJvci5oIg0KPj4gKyNpbmNsdWRlICJxb20vb2JqZWN0LmgiDQo+PiArDQo+PiAr dHlwZWRlZiBlbnVtIEFybU1vZGVsUHJvcFR5cGUgew0KPj4gKyAgICBBUk1fTU9ERUxfUFJPUF9C T09MLA0KPj4gKyAgICBBUk1fTU9ERUxfUFJPUF9OVU0sDQo+PiArfSBBcm1Nb2RlbFByb3BUeXBl Ow0KPj4gKw0KPj4gK3R5cGVkZWYgc3RydWN0IEFybU1vZGVsUHJvcFZhbHVlIHsNCj4+ICsgICAg Y29uc3QgY2hhciAgICAgKm5hbWU7DQo+PiArICAgIEFybU1vZGVsUHJvcFR5cGUgdHlwZTsNCj4+ ICsgICAgdW5pb24gew0KPj4gKyAgICAgICAgYm9vbCAgICAgICAgICAgIGI7DQo+PiArICAgICAg ICB1aW50NjRfdCAgICAgICAgbnVtOw0KPj4gKyAgICB9IHU7DQo+PiArfSBBcm1Nb2RlbFByb3BW YWx1ZTsNCj4+ICsNCj4+ICt0eXBlZGVmIHN0cnVjdCBBcm1OYW1lZENwdU1vZGVsIHsNCj4+ICsg ICAgY29uc3QgY2hhciAgICAgICAgICAgICAgKm5hbWU7DQo+PiArICAgIGNvbnN0IGNoYXIgICAg ICAgICAgICAgICpwYXJlbnQ7DQo+PiArICAgIGNvbnN0IEFybU1vZGVsUHJvcFZhbHVlICpwcm9w czsNCj4+ICt9IEFybU5hbWVkQ3B1TW9kZWw7DQo+PiArDQo+PiArdm9pZCBhcm1fcmVnaXN0ZXJf bmFtZWRfY3B1X21vZGVscyh2b2lkKTsNCj4+ICsNCj4+ICtjb25zdCBBcm1OYW1lZENwdU1vZGVs ICphcm1fZmluZF9tb2RlbChjb25zdCBjaGFyICpuYW1lKTsNCj4+ICsNCj4+ICsjZW5kaWYgLyog QVJNX0NQVV9NT0RFTFNfSCAqLw0KPj4gZGlmZiAtLWdpdCBhL3RhcmdldC9hcm0vbWVzb24uYnVp bGQgYi90YXJnZXQvYXJtL21lc29uLmJ1aWxkDQo+PiBpbmRleCA2NGQxZWM2M2FiLi43MmVlZDFi Y2M2IDEwMDY0NA0KPj4gLS0tIGEvdGFyZ2V0L2FybS9tZXNvbi5idWlsZA0KPj4gKysrIGIvdGFy Z2V0L2FybS9tZXNvbi5idWlsZA0KPj4gQEAgLTEwLDcgKzEwLDcgQEAgYXJtX3VzZXJfc3MuYWRk KGZpbGVzKCdnZGJzdHViLmMnKSkNCj4+IA0KPj4gYXJtX3NzLmFkZCh3aGVuOiAnVEFSR0VUX0FB UkNINjQnLCBpZl90cnVlOiBmaWxlcygNCj4+ICAgJ2NwdTY0LmMnLA0KPj4gLSAgJ2dkYnN0dWI2 NC5jJw0KPj4gKyAgJ2dkYnN0dWI2NC5jJywNCj4+ICkpDQo+PiANCj4+IGFybV9jb21tb25fc3Mu YWRkKGZpbGVzKA0KPj4gQEAgLTIxLDcgKzIxLDEwIEBAIGFybV9jb21tb25fc3lzdGVtX3NzLmFk ZChmaWxlcygNCj4+ICAgJ2FybS1xbXAtY21kcy5jJywNCj4+ICAgJ2NwdS1pZHJlZ3MuYycsDQo+ PiApKQ0KPj4gLWFybV9zeXN0ZW1fc3MuYWRkKHdoZW46ICdDT05GSUdfS1ZNJywgaWZfdHJ1ZTog ZmlsZXMoJ2h5cF9nZGJzdHViLmMnLCAna3ZtLmMnKSkNCj4+ICthcm1fc3lzdGVtX3NzLmFkZCh3 aGVuOiAnVEFSR0VUX0FBUkNINjQnLCBpZl90cnVlOiBmaWxlcygnYXJtLWNwdS1tb2RlbHMuYycp KQ0KPj4gK2FybV9zeXN0ZW1fc3MuYWRkKHdoZW46ICdDT05GSUdfS1ZNJywNCj4+ICsgICAgICAg ICAgICAgICAgICBpZl90cnVlOiBmaWxlcygnaHlwX2dkYnN0dWIuYycsDQo+PiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJ2t2bS5jJykpDQo+PiBhcm1fc3lzdGVtX3NzLmFkZCh3 aGVuOiAnQ09ORklHX0hWRicsIGlmX3RydWU6IGZpbGVzKCdoeXBfZ2Ric3R1Yi5jJykpDQo+PiAN Cj4+IGFybV91c2VyX3NzLmFkZChmaWxlcygnY3B1LmMnKSkNCj4gVGhhbmtzDQo+IA0KPiBFcmlj DQoNCg0K