From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Shankar, Uma" Subject: Re: [RFC v5 2/8] drm: Add Plane Degamma properties Date: Wed, 14 Nov 2018 13:59:12 +0000 Message-ID: References: <1537085731-6355-1-git-send-email-uma.shankar@intel.com> <1537085731-6355-3-git-send-email-uma.shankar@intel.com> <20181114010834.GA5645@mdroper-desk.amr.corp.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20181114010834.GA5645@mdroper-desk.amr.corp.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: "Roper, Matthew D" Cc: "dcastagna@chromium.org" , "intel-gfx@lists.freedesktop.org" , "alexandru-cosmin.gheorghe@arm.com" , "dri-devel@lists.freedesktop.org" , "seanpaul@chromium.org" , "Syrjala, Ville" , "harry.wentland@amd.com" , "Lankhorst, Maarten" List-Id: dri-devel@lists.freedesktop.org DQoNCj4tLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPkZyb206IFJvcGVyLCBNYXR0aGV3IEQN Cj5TZW50OiBXZWRuZXNkYXksIE5vdmVtYmVyIDE0LCAyMDE4IDY6MzkgQU0NCj5UbzogU2hhbmth ciwgVW1hIDx1bWEuc2hhbmthckBpbnRlbC5jb20+DQo+Q2M6IGludGVsLWdmeEBsaXN0cy5mcmVl ZGVza3RvcC5vcmc7IGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmc7DQo+ZGNhc3RhZ25h QGNocm9taXVtLm9yZzsgYWxleGFuZHJ1LWNvc21pbi5naGVvcmdoZUBhcm0uY29tOw0KPnNlYW5w YXVsQGNocm9taXVtLm9yZzsgU3lyamFsYSwgVmlsbGUgPHZpbGxlLnN5cmphbGFAaW50ZWwuY29t PjsNCj5oYXJyeS53ZW50bGFuZEBhbWQuY29tOyBMYW5raG9yc3QsIE1hYXJ0ZW4gPG1hYXJ0ZW4u bGFua2hvcnN0QGludGVsLmNvbT4NCj5TdWJqZWN0OiBSZTogW0ludGVsLWdmeF0gW1JGQyB2NSAy LzhdIGRybTogQWRkIFBsYW5lIERlZ2FtbWEgcHJvcGVydGllcw0KPg0KPk9uIFN1biwgU2VwIDE2 LCAyMDE4IGF0IDAxOjQ1OjI1UE0gKzA1MzAsIFVtYSBTaGFua2FyIHdyb3RlOg0KPj4gQWRkIFBs YW5lIERlZ2FtbWEgYXMgYSBibG9iIHByb3BlcnR5IGFuZCBwbGFuZSBkZWdhbW1hIHNpemUgYXMg YSByYW5nZQ0KPj4gcHJvcGVydHkuDQo+Pg0KPj4gdjI6IFJlYmFzZQ0KPj4NCj4+IHYzOiBGaXhl ZCBTZWFuLCBQYXVsJ3MgcmV2aWV3IGNvbW1lbnRzLiBNb3ZlZCB0aGUgcHJvcGVydHkgZnJvbQ0K Pj4gbW9kZV9jb25maWcgdG8gZHJtX3BsYW5lLiBDcmVhdGVkIGEgaGVscGVyIGZ1bmN0aW9uIHRv IGluc3RhbnRpYXRlDQo+PiB0aGVzZSBwcm9wZXJ0aWVzIGFuZCByZW1vdmVkIGZyb20gZHJtX21v ZGVfY3JlYXRlX3N0YW5kYXJkX3Byb3BlcnRpZXMNCj4+IEFkZGVkIHByb3BlcnR5IGRvY3VtZW50 YXRpb24gYXMgc3VnZ2VzdGVkIGJ5IERhbmllbCwgVmV0dGVyLg0KPj4NCj4+IHY0OiBSZWJhc2UN Cj4+DQo+PiB2NTogQWRkZWQgIkRpc3BsYXkgQ29sb3IgSGFyZHdhcmUgUGlwZWxpbmUiIGZsb3cg dG8ga2VybmVsDQo+PiBkb2N1bWVudGF0aW9uIGFzIHN1Z2dlc3RlZCBieSAiVmlsbGUgU3lyamFs YSIgYW5kICJCcmlhbiBTdGFya2V5Ii4NCj4+IE1vdmVkIHRoZSBwcm9wZXJ0eSBjcmVhdGlvbiB0 byBkcm1fY29sb3JfbWdtdC5jIGZpbGUgdG8gY29uc29saWRhdGUNCj4+IGFsbCBjb2xvciBvcGVy YXRpb25zIGF0IG9uZSBwbGFjZS4NCj4+DQo+PiBTaWduZWQtb2ZmLWJ5OiBVbWEgU2hhbmthciA8 dW1hLnNoYW5rYXJAaW50ZWwuY29tPg0KPj4gUmV2aWV3ZWQtYnk6IEFsZXhhbmRydSBHaGVvcmdo ZSA8YWxleGFuZHJ1LWNvc21pbi5naGVvcmdoZUBhcm0uY29tPg0KPj4gLS0tDQo+PiAgRG9jdW1l bnRhdGlvbi9ncHUvZHJtLWttcy5yc3QgICAgICAgfCA5MA0KPisrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysNCj4+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pYy5jICAgICAg ICB8IDEzICsrKysrKw0KPj4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX2hlbHBlci5jIHwg IDYgKysrDQo+PiAgZHJpdmVycy9ncHUvZHJtL2RybV9jb2xvcl9tZ210LmMgICAgfCA0NCArKysr KysrKysrKysrKysrLS0NCj4+ICBpbmNsdWRlL2RybS9kcm1fcGxhbmUuaCAgICAgICAgICAgICB8 IDI0ICsrKysrKysrKysNCj4+ICA1IGZpbGVzIGNoYW5nZWQsIDE3NCBpbnNlcnRpb25zKCspLCAz IGRlbGV0aW9ucygtKQ0KPj4NCj4+IGRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dwdS9kcm0t a21zLnJzdA0KPj4gYi9Eb2N1bWVudGF0aW9uL2dwdS9kcm0ta21zLnJzdCBpbmRleCBmOGY1YmYx Li4yNTNkNTQ2IDEwMDY0NA0KPj4gLS0tIGEvRG9jdW1lbnRhdGlvbi9ncHUvZHJtLWttcy5yc3QN Cj4+ICsrKyBiL0RvY3VtZW50YXRpb24vZ3B1L2RybS1rbXMucnN0DQo+PiBAQCAtNTUxLDEyICs1 NTEsMTAyIEBAIFBsYW5lIENvbXBvc2l0aW9uIFByb3BlcnRpZXMgIENvbG9yIE1hbmFnZW1lbnQN Cj4+IFByb3BlcnRpZXMNCj4+ICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4+DQo+PiAr QmVsb3cgaXMgaG93IGEgdHlwaWNhbCBoYXJkd2FyZSBwaXBlbGluZSBmb3IgY29sb3Igd2lsbCBs b29rIGxpa2U6DQo+PiArDQo+PiArLi4ga2VybmVsLXJlbmRlcjo6IERPVA0KPj4gKyAgIDphbHQ6 IERpc3BsYXkgQ29sb3IgUGlwZWxpbmUNCj4+ICsgICA6Y2FwdGlvbjogRGlzcGxheSBDb2xvciBQ aXBlbGluZSBPdmVydmlldw0KPj4gKw0KPj4gKyAgIGRpZ3JhcGggIktNUyIgew0KPj4gKyAgICAg IG5vZGUgW3NoYXBlPWJveF0NCj4+ICsNCj4+ICsgICAgICBzdWJncmFwaCBjbHVzdGVyX3N0YXRp YyB7DQo+PiArICAgICAgICAgIHN0eWxlPWRhc2hlZA0KPj4gKyAgICAgICAgICBsYWJlbD0iRGlz cGxheSBDb2xvciBIYXJkd2FyZSBCbG9ja3MiDQo+PiArDQo+PiArICAgICAgICAgIG5vZGUgW2Jn Y29sb3I9Z3JleSBzdHlsZT1maWxsZWRdDQo+PiArICAgICAgICAgICJQbGFuZSBEZWdhbW1hIEEi IC0+ICJQbGFuZSBDU0MvQ1RNIEEiDQo+PiArICAgICAgICAgICJQbGFuZSBDU0MvQ1RNIEEiIC0+ ICJQbGFuZSBHYW1tYSBBIg0KPj4gKyAgICAgICAgICAiUGlwZSBCbGVuZGVyIiBbY29sb3I9bGln aHRibHVlLHN0eWxlPWZpbGxlZCwgd2lkdGg9NS4yNSwgaGVpZ2h0PTAuNzVdOw0KPj4gKyAgICAg ICAgICAiUGxhbmUgR2FtbWEgQSIgLT4gIlBpcGUgQmxlbmRlciINCj4+ICsJICAiUGlwZSBCbGVu ZGVyIiAtPiAiUGlwZSBEZUdhbW1hIg0KPj4gKyAgICAgICAgICAiUGlwZSBEZUdhbW1hIiAtPiAi UGlwZSBDU0MvQ1RNIg0KPj4gKyAgICAgICAgICAiUGlwZSBDU0MvQ1RNIiAtPiAiUGlwZSBHYW1t YSINCj4+ICsgICAgICAgICAgIlBpcGUgR2FtbWEiIC0+ICJQaXBlIE91dHB1dCINCj4+ICsgICAg ICB9DQo+PiArDQo+PiArICAgICAgc3ViZ3JhcGggY2x1c3Rlcl9zdGF0aWMgew0KPj4gKyAgICAg ICAgICBzdHlsZT1kYXNoZWQNCj4+ICsNCj4+ICsgICAgICAgICAgbm9kZSBbc2hhcGU9Ym94XQ0K Pj4gKyAgICAgICAgICAiUGxhbmUgRGVnYW1tYSBCIiAtPiAiUGxhbmUgQ1NDL0NUTSBCIg0KPj4g KyAgICAgICAgICAiUGxhbmUgQ1NDL0NUTSBCIiAtPiAiUGxhbmUgR2FtbWEgQiINCj4+ICsgICAg ICAgICAgIlBsYW5lIEdhbW1hIEIiIC0+ICJQaXBlIEJsZW5kZXIiDQo+PiArICAgICAgfQ0KPj4g Kw0KPj4gKyAgICAgIHN1YmdyYXBoIGNsdXN0ZXJfc3RhdGljIHsNCj4+ICsgICAgICAgICAgc3R5 bGU9ZGFzaGVkDQo+PiArDQo+PiArICAgICAgICAgIG5vZGUgW3NoYXBlPWJveF0NCj4+ICsgICAg ICAgICAgIlBsYW5lIERlZ2FtbWEgQyIgLT4gIlBsYW5lIENTQy9DVE0gQyINCj4+ICsgICAgICAg ICAgIlBsYW5lIENTQy9DVE0gQyIgLT4gIlBsYW5lIEdhbW1hIEMiDQo+PiArICAgICAgICAgICJQ bGFuZSBHYW1tYSBDIiAtPiAiUGlwZSBCbGVuZGVyIg0KPj4gKyAgICAgIH0NCj4+ICsNCj4+ICsg ICAgICBzdWJncmFwaCBjbHVzdGVyX2ZiIHsNCj4+ICsgICAgICAgICAgc3R5bGU9ZGFzaGVkDQo+ PiArICAgICAgICAgIGxhYmVsPSJSQU0iDQo+PiArDQo+PiArICAgICAgICAgIG5vZGUgW3NoYXBl PWJveCB3aWR0aD0xLjcgaGVpZ2h0PTAuMl0NCj4+ICsNCj4+ICsgICAgICAgICAgIkZCIDEiIC0+ ICJQbGFuZSBEZWdhbW1hIEEiDQo+PiArICAgICAgICAgICJGQiAyIiAtPiAiUGxhbmUgRGVnYW1t YSBCIg0KPj4gKyAgICAgICAgICAiRkIgMyIgLT4gIlBsYW5lIERlZ2FtbWEgQyINCj4+ICsgICAg ICB9DQo+PiArICAgfQ0KPj4gKw0KPj4gK0luIHJlYWwgd29ybGQgdXNlY2FzZXMsDQo+PiArDQo+ PiArMS4gUGxhbmUgRGVnYW1tYSBjYW4gYmUgdXNlZCB0byBsaW5lYXJpemUgYSBub24gbGluZWFy IGdhbW1hIGVuY29kZWQNCj4+ICtmcmFtZWJ1ZmZlci4gVGhpcyBpcyBuZWVkZWQgdG8gZG8gYW55 IGxpbmVhciBtYXRoIGxpa2UgY29sb3Igc3BhY2UNCj4+ICtjb252ZXJzaW9uLiBGb3IgZXgsIGxp bmVhcml6ZSBmcmFtZXMgZW5jb2RlZCBpbiBTUkdCIG9yIGJ5IEhEUiBjdXJ2ZS4NCj4+ICsNCj4+ ICsyLiBMYXRlciBQbGFuZSBDVE0gYmxvY2sgY2FuIGNvbnZlcnQgdGhlIGNvbnRlbnQgdG8gc29t ZSBkaWZmZXJlbnQNCj4+ICtjb2xvcnNwYWNlLiBGb3IgZXgsIFNSR0IgdG8gQlQyMDIwIGV0Yy4N Cj4+ICsNCj4+ICszLiBQbGFuZSBHYW1tYSBibG9jayBjYW4gYmUgdXNlZCBsYXRlciB0byByZS1h cHBseSB0aGUgbm9uLWxpbmVhcg0KPj4gK2N1cnZlLiBUaGlzIGNhbiBhbHNvIGJlIHVzZWQgdG8g YXBwbHkgVG9uZSBNYXBwaW5nIGZvciBIRFIgdXNlY2FzZXMuDQo+PiArDQo+PiArQWxsIHRoZSBs YXllcnMgb3IgZnJhbWVidWZmZXJzIG5lZWQgdG8gYmUgY29udmVydGVkIHRvIHNhbWUgY29sb3IN Cj4+ICtzcGFjZSBhbmQgZm9ybWF0IGJlZm9yZSBibGVuZGluZy4gVGhlIHBsYW5lIGNvbG9yIGhh cmR3YXJlIGJsb2NrcyBjYW4NCj4+ICtoZWxwIHdpdGggdGhpcy4gT25jZSB0aGUgRGF0YSBpcyBi bGVuZGVkLCBzaW1pbGFyIGNvbG9yIHByb2Nlc3NpbmcNCj4+ICtjYW4gYmUgZG9uZSBvbiBibGVu ZGVkIG91dHB1dCB1c2luZyBwaXBlIGNvbG9yIGhhcmR3YXJlIGJsb2Nrcy4NCj4+ICsNCj4+ICtE Uk0gUHJvcGVydGllcyBoYXZlIGJlZW4gY3JlYXRlZCB0byBkZWZpbmUgYW5kIGV4cG9zZSBhbGwg dGhlc2UNCj4+ICtoYXJkd2FyZSBibG9ja3MgdG8gdXNlcnNwYWNlLiBBIHVzZXJzcGFjZSBhcHBs aWNhdGlvbiAoY29tcG9zaXRvciBvcg0KPj4gK2FueSBjb2xvciBhcHApIGNhbiB1c2UgdGhlc2Ug aW50ZXJmYWNlcyBhbmQgZGVmaW5lIHBvbGljaWVzIHRvDQo+PiArZWZmaWNpZW50bHkgdXNlIHRo ZSBkaXNwbGF5IGhhcmR3YXJlIGZvciBzdWNoIGNvbG9yIG9wZXJhdGlvbnMuDQo+PiArDQo+PiAr UGlwZSBDb2xvciBNYW5hZ2VtZW50IFByb3BlcnRpZXMNCj4+ICstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0NCj4+ICsNCj4+ICAuLiBrZXJuZWwtZG9jOjogZHJpdmVycy9ncHUvZHJt L2RybV9jb2xvcl9tZ210LmMNCj4+ICAgICA6ZG9jOiBvdmVydmlldw0KPj4NCj4+ICAuLiBrZXJu ZWwtZG9jOjogZHJpdmVycy9ncHUvZHJtL2RybV9jb2xvcl9tZ210LmMNCj4+ICAgICA6ZXhwb3J0 Og0KPj4NCj4+ICtQbGFuZSBDb2xvciBNYW5hZ2VtZW50IFByb3BlcnRpZXMNCj4+ICstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4+ICsNCj4+ICsuLiBrZXJuZWwtZG9jOjogZHJp dmVycy9ncHUvZHJtL2RybV9jb2xvcl9tZ210LmMNCj4+ICsgICA6ZG9jOiBQbGFuZSBDb2xvciBQ cm9wZXJ0aWVzDQo+PiArDQo+PiArLi4ga2VybmVsLWRvYzo6IGRyaXZlcnMvZ3B1L2RybS9kcm1f Y29sb3JfbWdtdC5jDQo+PiArICAgOmRvYzogZXhwb3J0DQo+PiArDQo+PiAgVGlsZSBHcm91cCBQ cm9wZXJ0eQ0KPj4gIC0tLS0tLS0tLS0tLS0tLS0tLS0NCj4+DQo+PiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2RybV9hdG9taWMuYw0KPj4gYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21p Yy5jIGluZGV4IGQwNDc4YWIuLmU3MTY2MTQgMTAwNjQ0DQo+PiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vZHJtX2F0b21pYy5jDQo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pYy5jDQo+ PiBAQCAtODU3LDYgKzg1Nyw4IEBAIHN0YXRpYyBpbnQgZHJtX2F0b21pY19wbGFuZV9zZXRfcHJv cGVydHkoc3RydWN0DQo+PiBkcm1fcGxhbmUgKnBsYW5lLCAgew0KPj4gIAlzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2ID0gcGxhbmUtPmRldjsNCj4+ICAJc3RydWN0IGRybV9tb2RlX2NvbmZpZyAqY29u ZmlnID0gJmRldi0+bW9kZV9jb25maWc7DQo+PiArCWJvb2wgcmVwbGFjZWQgPSBmYWxzZTsNCj4+ ICsJaW50IHJldDsNCj4+DQo+PiAgCWlmIChwcm9wZXJ0eSA9PSBjb25maWctPnByb3BfZmJfaWQp IHsNCj4+ICAJCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gZHJtX2ZyYW1lYnVmZmVyX2xv b2t1cChkZXYsDQo+TlVMTCwNCj4+IHZhbCk7IEBAIC05MTAsNiArOTEyLDEzIEBAIHN0YXRpYyBp bnQgZHJtX2F0b21pY19wbGFuZV9zZXRfcHJvcGVydHkoc3RydWN0DQo+ZHJtX3BsYW5lICpwbGFu ZSwNCj4+ICAJCXN0YXRlLT5jb2xvcl9lbmNvZGluZyA9IHZhbDsNCj4+ICAJfSBlbHNlIGlmIChw cm9wZXJ0eSA9PSBwbGFuZS0+Y29sb3JfcmFuZ2VfcHJvcGVydHkpIHsNCj4+ICAJCXN0YXRlLT5j b2xvcl9yYW5nZSA9IHZhbDsNCj4+ICsJfSBlbHNlIGlmIChwcm9wZXJ0eSA9PSBwbGFuZS0+ZGVn YW1tYV9sdXRfcHJvcGVydHkpIHsNCj4+ICsJCXJldCA9IGRybV9hdG9taWNfcmVwbGFjZV9wcm9w ZXJ0eV9ibG9iX2Zyb21faWQoZGV2LA0KPj4gKwkJCQkJJnN0YXRlLT5kZWdhbW1hX2x1dCwNCj4+ ICsJCQkJCXZhbCwgLTEsIHNpemVvZihzdHJ1Y3QgZHJtX2NvbG9yX2x1dCksDQo+PiArCQkJCQkm cmVwbGFjZWQpOw0KPj4gKwkJc3RhdGUtPmNvbG9yX21nbXRfY2hhbmdlZCB8PSByZXBsYWNlZDsN Cj4+ICsJCXJldHVybiByZXQ7DQo+PiAgCX0gZWxzZSBpZiAocGxhbmUtPmZ1bmNzLT5hdG9taWNf c2V0X3Byb3BlcnR5KSB7DQo+PiAgCQlyZXR1cm4gcGxhbmUtPmZ1bmNzLT5hdG9taWNfc2V0X3By b3BlcnR5KHBsYW5lLCBzdGF0ZSwNCj4+ICAJCQkJcHJvcGVydHksIHZhbCk7DQo+PiBAQCAtOTgw LDYgKzk4OSw5IEBAIHN0YXRpYyBpbnQgZHJtX2F0b21pY19wbGFuZV9zZXRfcHJvcGVydHkoc3Ry dWN0DQo+ZHJtX3BsYW5lICpwbGFuZSwNCj4+ICAJCSp2YWwgPSBzdGF0ZS0+Y29sb3JfZW5jb2Rp bmc7DQo+PiAgCX0gZWxzZSBpZiAocHJvcGVydHkgPT0gcGxhbmUtPmNvbG9yX3JhbmdlX3Byb3Bl cnR5KSB7DQo+PiAgCQkqdmFsID0gc3RhdGUtPmNvbG9yX3JhbmdlOw0KPj4gKwl9IGVsc2UgaWYg KHByb3BlcnR5ID09IHBsYW5lLT5kZWdhbW1hX2x1dF9wcm9wZXJ0eSkgew0KPj4gKwkJKnZhbCA9 IChzdGF0ZS0+ZGVnYW1tYV9sdXQpID8NCj4+ICsJCQlzdGF0ZS0+ZGVnYW1tYV9sdXQtPmJhc2Uu aWQgOiAwOw0KPj4gIAl9IGVsc2UgaWYgKHBsYW5lLT5mdW5jcy0+YXRvbWljX2dldF9wcm9wZXJ0 eSkgew0KPj4gIAkJcmV0dXJuIHBsYW5lLT5mdW5jcy0+YXRvbWljX2dldF9wcm9wZXJ0eShwbGFu ZSwgc3RhdGUsDQo+cHJvcGVydHksIHZhbCk7DQo+PiAgCX0gZWxzZSB7DQo+PiBAQCAtMTEyMCw2 ICsxMTMyLDcgQEAgc3RhdGljIHZvaWQgZHJtX2F0b21pY19wbGFuZV9wcmludF9zdGF0ZShzdHJ1 Y3QNCj5kcm1fcHJpbnRlciAqcCwNCj4+ICAJCSAgIGRybV9nZXRfY29sb3JfZW5jb2RpbmdfbmFt ZShzdGF0ZS0+Y29sb3JfZW5jb2RpbmcpKTsNCj4+ICAJZHJtX3ByaW50ZihwLCAiXHRjb2xvci1y YW5nZT0lc1xuIiwNCj4+ICAJCSAgIGRybV9nZXRfY29sb3JfcmFuZ2VfbmFtZShzdGF0ZS0+Y29s b3JfcmFuZ2UpKTsNCj4+ICsJZHJtX3ByaW50ZihwLCAiXHRjb2xvcl9tZ210X2NoYW5nZWQ9JWRc biIsDQo+PiArc3RhdGUtPmNvbG9yX21nbXRfY2hhbmdlZCk7DQo+Pg0KPj4gIAlpZiAocGxhbmUt PmZ1bmNzLT5hdG9taWNfcHJpbnRfc3RhdGUpDQo+PiAgCQlwbGFuZS0+ZnVuY3MtPmF0b21pY19w cmludF9zdGF0ZShwLCBzdGF0ZSk7IGRpZmYgLS1naXQNCj4+IGEvZHJpdmVycy9ncHUvZHJtL2Ry bV9hdG9taWNfaGVscGVyLmMNCj4+IGIvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVy LmMNCj4+IGluZGV4IDJjMjNhNDguLjIwMzEzN2UgMTAwNjQ0DQo+PiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYw0KPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9h dG9taWNfaGVscGVyLmMNCj4+IEBAIC0zNjE0LDYgKzM2MTQsMTAgQEAgdm9pZA0KPj4gX19kcm1f YXRvbWljX2hlbHBlcl9wbGFuZV9kdXBsaWNhdGVfc3RhdGUoc3RydWN0IGRybV9wbGFuZSAqcGxh bmUsDQo+Pg0KPj4gIAlzdGF0ZS0+ZmVuY2UgPSBOVUxMOw0KPj4gIAlzdGF0ZS0+Y29tbWl0ID0g TlVMTDsNCj4+ICsNCj4+ICsJaWYgKHN0YXRlLT5kZWdhbW1hX2x1dCkNCj4+ICsJCWRybV9wcm9w ZXJ0eV9ibG9iX2dldChzdGF0ZS0+ZGVnYW1tYV9sdXQpOw0KPj4gKwlzdGF0ZS0+Y29sb3JfbWdt dF9jaGFuZ2VkID0gZmFsc2U7DQo+PiAgfQ0KPj4gIEVYUE9SVF9TWU1CT0woX19kcm1fYXRvbWlj X2hlbHBlcl9wbGFuZV9kdXBsaWNhdGVfc3RhdGUpOw0KPj4NCj4+IEBAIC0zNjU4LDYgKzM2NjIs OCBAQCB2b2lkDQo+PiBfX2RybV9hdG9taWNfaGVscGVyX3BsYW5lX2Rlc3Ryb3lfc3RhdGUoc3Ry dWN0IGRybV9wbGFuZV9zdGF0ZSAqc3RhdGUpDQo+Pg0KPj4gIAlpZiAoc3RhdGUtPmNvbW1pdCkN Cj4+ICAJCWRybV9jcnRjX2NvbW1pdF9wdXQoc3RhdGUtPmNvbW1pdCk7DQo+PiArDQo+PiArCWRy bV9wcm9wZXJ0eV9ibG9iX3B1dChzdGF0ZS0+ZGVnYW1tYV9sdXQpOw0KPj4gIH0NCj4+ICBFWFBP UlRfU1lNQk9MKF9fZHJtX2F0b21pY19oZWxwZXJfcGxhbmVfZGVzdHJveV9zdGF0ZSk7DQo+Pg0K Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fY29sb3JfbWdtdC5jDQo+PiBiL2Ry aXZlcnMvZ3B1L2RybS9kcm1fY29sb3JfbWdtdC5jDQo+PiBpbmRleCAxYmRjYzFhLi5kOGE5ZThi IDEwMDY0NA0KPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9jb2xvcl9tZ210LmMNCj4+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fY29sb3JfbWdtdC5jDQo+PiBAQCAtMjksMTEgKzI5LDEx IEBADQo+PiAgLyoqDQo+PiAgICogRE9DOiBvdmVydmlldw0KPj4gICAqDQo+PiAtICogQ29sb3Ig bWFuYWdlbWVudCBvciBjb2xvciBzcGFjZSBhZGp1c3RtZW50cyBpcyBzdXBwb3J0ZWQgdGhyb3Vn aCBhDQo+PiBzZXQgb2YgNQ0KPj4gLSAqIHByb3BlcnRpZXMgb24gdGhlICZkcm1fY3J0YyBvYmpl Y3QuIFRoZXkgYXJlIHNldCB1cCBieSBjYWxsaW5nDQo+PiArICogUGlwZSBDb2xvciBtYW5hZ2Vt ZW50IG9yIGNvbG9yIHNwYWNlIGFkanVzdG1lbnRzIGlzIHN1cHBvcnRlZA0KPj4gKyB0aHJvdWdo IGENCj4+ICsgKiBzZXQgb2YgNSBwcm9wZXJ0aWVzIG9uIHRoZSAmZHJtX2NydGMgb2JqZWN0LiBU aGV5IGFyZSBzZXQgdXAgYnkNCj4+ICsgY2FsbGluZw0KPj4gICAqIGRybV9jcnRjX2VuYWJsZV9j b2xvcl9tZ210KCkuDQo+PiAgICoNCj4+IC0gKiAiREVHQU1NQV9MVVTigJ06DQo+PiArICogIkRF R0FNTUFfTFVUDQo+DQo+VGhpcyBjaGFuZ2Ugc2VlbXMgdW5yZWxhdGVkL3Vud2FudGVkLg0KDQpV cGRhdGVkIENvbG9yIE1hbmFnZW1lbnQgdG8gUGlwZSBDb2xvciBNYW5hZ2VtZW50IGhlcmUuIFRo ZSBsYXN0IHBhcnQsDQpERUdBTU1BX0xVVCBjaGFuZ2UgY2FuIGJlIGRyb3BwZWQgYW5kIGtlcHQg YXMgaXMuIFdpbGwgdXBkYXRlIHRoaXMuDQoNCj4+ICAgKglCbG9iIHByb3BlcnR5IHRvIHNldCB0 aGUgZGVnYW1tYSBsb29rdXAgdGFibGUgKExVVCkgbWFwcGluZyBwaXhlbCBkYXRhDQo+PiAgICoJ ZnJvbSB0aGUgZnJhbWVidWZmZXIgYmVmb3JlIGl0IGlzIGdpdmVuIHRvIHRoZSB0cmFuc2Zvcm1h dGlvbiBtYXRyaXguDQo+PiAgICoJVGhlIGRhdGEgaXMgaW50ZXJwcmV0ZWQgYXMgYW4gYXJyYXkg b2YgJnN0cnVjdCBkcm1fY29sb3JfbHV0IGVsZW1lbnRzLg0KPj4gQEAgLTQ5MSwzICs0OTEsNDEg QEAgaW50IGRybV9wbGFuZV9jcmVhdGVfY29sb3JfcHJvcGVydGllcyhzdHJ1Y3QNCj5kcm1fcGxh bmUgKnBsYW5lLA0KPj4gIAlyZXR1cm4gMDsNCj4+ICB9DQo+PiAgRVhQT1JUX1NZTUJPTChkcm1f cGxhbmVfY3JlYXRlX2NvbG9yX3Byb3BlcnRpZXMpOw0KPj4gKw0KPj4gKy8qKg0KPj4gKyAqIERP QzogUGxhbmUgQ29sb3IgUHJvcGVydGllcw0KPj4gKyAqDQo+PiArICogUGxhbmUgQ29sb3IgbWFu YWdlbWVudCBvciBjb2xvciBzcGFjZSBhZGp1c3RtZW50cyBpcyBzdXBwb3J0ZWQNCj4+ICsgKiB0 aHJvdWdoIGEgc2V0IG9mIDUgcHJvcGVydGllcyBvbiB0aGUgJmRybV9wbGFuZSBvYmplY3QuDQo+ PiArICoNCj4+ICsgKiBkZWdhbW1hX2x1dF9wcm9wZXJ0eToNCj4+ICsgKiAgICAgQmxvYiBwcm9w ZXJ0eSB3aGljaCBhbGxvd3MgYSB1c2Vyc3BhY2UgdG8gcHJvdmlkZSBMVVQgdmFsdWVzDQo+PiAr ICogICAgIHRvIGFwcGx5IGRlZ2FtbWEgY3VydmUgdXNpbmcgdGhlIGgvdyBwbGFuZSBkZWdhbW1h IHByb2Nlc3NpbmcNCj4+ICsgKiAgICAgZW5naW5lLCB0aGVyZWJ5IG1ha2luZyB0aGUgY29udGVu dCBhcyBsaW5lYXIgZm9yIGZ1cnRoZXIgY29sb3INCj4+ICsgKiAgICAgcHJvY2Vzc2luZy4NCj4+ ICsgKg0KPj4gKyAqIGRlZ2FtbWFfbHV0X3NpemVfcHJvcGVydHk6DQo+PiArICogICAgIFJhbmdl IFByb3BlcnR5IHRvIGluZGljYXRlIHNpemUgb2YgdGhlIHBsYW5lIGRlZ2FtbWEgTFVULg0KPg0K PkVsc2V3aGVyZSB3ZSdyZSBkb2N1bWVudGluZyB0aGUgc3RyaW5nIG5hbWUgZm9yIHRoZSBwcm9w ZXJ0eSwgd2hpY2ggaXMgcGFydCBvZg0KPnRoZSBBQkkgKGUuZy4sICJERUdBTU1BX0xVVCIpIGJ1 dCBoZXJlIHlvdSdyZSBkb2N1bWVudGluZyB0aGUgcHJvcGVydHkNCj52YXJpYWJsZSBuYW1lIGlu IHRoZSBjb2RlLg0KDQpPaywgd2lsbCBjaGFuZ2UgdGhpcyB0byBiZSBjb25zaXN0ZW50IHdpdGgg cGlwZSBjb2xvciBwcm9wZXJ0eSBkb2N1bWVudGF0aW9uLiBUaGFua3MuLg0KDQo+SSB0aGluayB0 aGVyZSB3YXMgYWxzbyBkaXNjdXNzaW9uIGF0IG9uZSBwb2ludCBvZiBoYXZpbmcgYSBtb3JlIGNv bXBsZXggTFVUDQo+aW50ZXJmYWNlIHRoYXQgZGVhbHMgd2l0aCB0aGluZ3MgbGlrZSBub24tbGlu ZWFyIHJhbmdlcyBhbmQgc3VjaC4NCj5JZiB0aGF0J3Mgc3RpbGwgcGxhbm5lZCwgd291bGQgaXQg YmUgbGF5ZXJlZCBvbiB0b3Agb2YgdGhlc2UgcHJvcGVydGllcywgb3Igd291bGQgaXQNCj5iZSBh IGNvbXBsZXRlbHkgc2VwYXJhdGUsIHJlcGxhY2VtZW50IEFCSSBkb3duIHRoZSByb2FkPw0KDQpU aGUgbm9uLWxpbmVhciBhbmQgbXVsdGktc2VnbWVudCBwYXJ0IGlzIGEgYml0IHRyaWNreS4gIFdl IGNhbiBkZXZlbG9wIHRoYXQgb24gdG9wDQpvZiB0aGlzIHByb3BlcnR5IGJ5IGNyZWF0aW5nIGEg c2VnbWVudCBsdXQgcHJvcGVydHkgYmxvYiB3aGljaCBqdXN0IHRlbGxzIHRoZSBudW1iZXIgb2YN CnNlZ21lbnRzIGFuZCBzaXplIG9mIGVhY2ggc2VnbWVudC4gVGhlIGFjdHVhbCBsdXQgdmFsdWVz IGNhbiBiZSBwYXNzZWQgdGhyb3VnaCB0aGUNCmN1cnJlbnQgcHJvcGVydHkuIERyaXZlciBjYW4g dGhlbiB1c2UgZGF0YSBvZiBib3RoIHRoZXNlIHByb3BlcnRpZXMgYW5kIHVzZSBpdCBhcyBwZXIN CnJlc3BlY3RpdmUgaGFyZHdhcmUgdG8gcHJvZ3JhbSBMVVQuDQoNCklmIHRoZSBibG9iIHByb3Bl cnR5IGlzIG5vdCBzZXQgd2hpbGUgcGxhbmUgZGVnYW1tYSBpcyBzZXQsIGRyaXZlciBmdW5jdGlv bnMgaW4gdGhlIGxlZ2FjeSB3YXkNCmFuZCBwcm9ncmFtIGx1dHMgaW4gYSBsaW5lYXIgZmFzaGlv biAoYmFzaWNhbGx5IGFzIHBlciBsZWdhY3kgZGVzaWduKS4NClRoaXMgaXMganVzdCBteSB0aG91 Z2h0IG9uIHRoYXQgb25lLiBCZXR0ZXIgaWRlYXMgYXJlIHdlbGNvbWUuDQoNCj4+ICsgKi8NCj4+ ICtpbnQgZHJtX3BsYW5lX2NvbG9yX2NyZWF0ZV9wcm9wKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs DQo+PiArCQkJCXN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lKQ0KPj4gK3sNCj4+ICsJc3RydWN0IGRy bV9wcm9wZXJ0eSAqcHJvcDsNCj4+ICsNCj4+ICsJcHJvcCA9IGRybV9wcm9wZXJ0eV9jcmVhdGUo ZGV2LA0KPj4gKwkJCURSTV9NT0RFX1BST1BfQkxPQiwNCj4+ICsJCQkiUExBTkVfREVHQU1NQV9M VVQiLCAwKTsNCj4+ICsJaWYgKCFwcm9wKQ0KPj4gKwkJcmV0dXJuIC1FTk9NRU07DQo+PiArCXBs YW5lLT5kZWdhbW1hX2x1dF9wcm9wZXJ0eSA9IHByb3A7DQo+PiArDQo+PiArCXByb3AgPSBkcm1f cHJvcGVydHlfY3JlYXRlX3JhbmdlKGRldiwNCj4+ICsJCQlEUk1fTU9ERV9QUk9QX0lNTVVUQUJM RSwNCj4+ICsJCQkiUExBTkVfREVHQU1NQV9MVVRfU0laRSIsIDAsIFVJTlRfTUFYKTsNCj4+ICsJ aWYgKCFwcm9wKQ0KPj4gKwkJcmV0dXJuIC1FTk9NRU07DQo+DQo+SWYgdGhpcyBmYWlscywgc2hv dWxkIHdlIHRyeSB0byBjbGVhbiB1cCB0aGUgZWFybGllciBwcm9wZXJ0eT8gIEl0IGxvb2tzIHRo ZSBpOTE1DQo+Y2FsbHNpdGUgZm9yIHRoaXMgZnVuY3Rpb24gKGluIHBhdGNoICM2IG9mIHRoZSBz ZXJpZXMpIGRvZXNuJ3QgY2hlY2sgdGhlIHJldHVybiB2YWx1ZSwNCj5zbyBldmVuIGlmIHdlIHJl dHVybiAtRU5PTUVNLCB0aGUgZHJpdmVyIHdpbGwgY29udGludWUgd2l0aCBzb21lIHByb3BlcnRp ZXMNCj5jcmVhdGVkIGFuZCBzb21lIG5vdC4NCg0KU3VyZSwgSSB3aWxsIGZpeCB0aGlzLiBUaGFu a3MuLg0KDQo+QWN0dWFsbHksIGFzaWRlIGZyb20gdXNpbmcgbmFtZXMgIlBMQU5FX0ZPTyIgaW5z dGVhZCBvZiAiRk9PLCIgaXMgdGhlcmUgYQ0KPnJlYXNvbiB3aHkgd2UgbmVlZCB0byBjcmVhdGUg bmV3IHByb3BlcnRpZXMgZm9yIHBsYW5lcz8gIEkgdGhpbmsgd2UgY291bGQgc3RpbGwNCj5hdHRh Y2ggdGhlIHNhbWUgcHJvcGVydGllcyB3ZSdyZSBhbHJlYWR5IHVzaW5nIGZvciBDUlRDJ3MgKGRl di0NCj4+bW9kZV9jb25maWcuZGVnYW1tYV9sdXRfcHJvcGVydHkgYW5kIHN1Y2gpIHNpbmNlIGFm YWlrIHRoZXJlIGlzbid0IGFueXRoaW5nDQo+dGhhdCBwcmV2ZW50cyB1cyBmcm9tIGF0dGFjaGlu ZyB0aGUgc2FtZSBwcm9wZXJ0eSB0byBkaWZmZXJlbnQga2luZHMgb2YNCj5kcm1fb2JqZWN0J3Mu DQoNClRoaXMgcG9pbnQgd2FzIGRpc2N1c3NlZCB3aGVuIHdlIHdlcmUgcGxhbm5pbmcgdGhpcy4g UGxhbmUgY29sb3IgaXMgbGl0dGxlIGRpZmZlcmVudCB0aGFuDQpwaXBlIGNvbG9yLCBhbmQgY29t ZXMgaGFuZHkgZm9yIG1ha2luZyBwcmUgYmxlbmRpbmcgZnJhbWVidWZmZXIgY29udmVyc2lvbi4g QWxzbywgd2UNCmNhbiBleHRlbmQgaXQgdG8gaGFuZGxlIG11bHRpIHNlZ21lbnQgYW5kIG5vbi1s aW5lYXIgTFVUJ3MuIEhlbmNlLCB3ZSB0aG91Z2h0IHRvIGtlZXAgaXQNCnNlcGFyYXRlIGZyb20g cGlwZSBjb2xvciBwcm9wZXJ0aWVzLiANCg0KUmVnYXJkcywNClVtYSBTaGFua2FyDQo+DQo+TWF0 dA0KPg0KPj4gKwlwbGFuZS0+ZGVnYW1tYV9sdXRfc2l6ZV9wcm9wZXJ0eSA9IHByb3A7DQo+PiAr DQo+PiArCXJldHVybiAwOw0KPj4gK30NCj4+ICtFWFBPUlRfU1lNQk9MKGRybV9wbGFuZV9jb2xv cl9jcmVhdGVfcHJvcCk7DQo+PiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX3BsYW5lLmgg Yi9pbmNsdWRlL2RybS9kcm1fcGxhbmUuaCBpbmRleA0KPj4gMTZmNWI2NjYuLjdmMGQ5NjEgMTAw NjQ0DQo+PiAtLS0gYS9pbmNsdWRlL2RybS9kcm1fcGxhbmUuaA0KPj4gKysrIGIvaW5jbHVkZS9k cm0vZHJtX3BsYW5lLmgNCj4+IEBAIC0xODIsNiArMTgyLDE0IEBAIHN0cnVjdCBkcm1fcGxhbmVf c3RhdGUgew0KPj4gIAkgKi8NCj4+ICAJYm9vbCB2aXNpYmxlOw0KPj4NCj4+ICsJLyogQGRlZ2Ft bWFfbHV0Og0KPj4gKwkgKg0KPj4gKwkgKiBMb29rdXAgdGFibGUgZm9yIGNvbnZlcnRpbmcgZnJh bWVidWZmZXIgcGl4ZWwgZGF0YSBiZWZvcmUgYXBwbHkgdGhlDQo+PiArCSAqIGNvbG9yIGNvbnZl cnNpb24gbWF0cml4IEBjdG0uIFNlZSBkcm1fcGxhbmVfZW5hYmxlX2NvbG9yX21nbXQoKS4NCj5U aGUNCj4+ICsJICogYmxvYiAoaWYgbm90IE5VTEwpIGlzIGFuIGFycmF5IG9mICZzdHJ1Y3QgZHJt X2NvbG9yX2x1dF9leHQuDQo+PiArCSAqLw0KPj4gKwlzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2Ig KmRlZ2FtbWFfbHV0Ow0KPj4gKw0KPj4gIAkvKioNCj4+ICAJICogQGNvbW1pdDogVHJhY2tzIHRo ZSBwZW5kaW5nIGNvbW1pdCB0byBwcmV2ZW50IHVzZS1hZnRlci1mcmVlDQo+Y29uZGl0aW9ucywN Cj4+ICAJICogYW5kIGZvciBhc3luYyBwbGFuZSB1cGRhdGVzLg0KPj4gQEAgLTE5Miw2ICsyMDAs OCBAQCBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlIHsNCj4+DQo+PiAgCS8qKiBAc3RhdGU6IGJhY2tw b2ludGVyIHRvIGdsb2JhbCBkcm1fYXRvbWljX3N0YXRlICovDQo+PiAgCXN0cnVjdCBkcm1fYXRv bWljX3N0YXRlICpzdGF0ZTsNCj4+ICsNCj4+ICsJdTggY29sb3JfbWdtdF9jaGFuZ2VkIDogMTsN Cj4+ICB9Ow0KPj4NCj4+ICBzdGF0aWMgaW5saW5lIHN0cnVjdCBkcm1fcmVjdA0KPj4gQEAgLTY5 Miw2ICs3MDIsMTggQEAgc3RydWN0IGRybV9wbGFuZSB7DQo+PiAgCSAqIFNlZSBkcm1fcGxhbmVf Y3JlYXRlX2NvbG9yX3Byb3BlcnRpZXMoKS4NCj4+ICAJICovDQo+PiAgCXN0cnVjdCBkcm1fcHJv cGVydHkgKmNvbG9yX3JhbmdlX3Byb3BlcnR5Ow0KPj4gKw0KPj4gKwkvKioNCj4+ICsJICogQGRl Z2FtbWFfbHV0X3Byb3BlcnR5OiBPcHRpb25hbCBQbGFuZSBwcm9wZXJ0eSB0byBzZXQgdGhlIExV VA0KPj4gKwkgKiB1c2VkIHRvIGNvbnZlcnQgdGhlIGZyYW1lYnVmZmVyJ3MgY29sb3JzIHRvIGxp bmVhciBnYW1tYS4NCj4+ICsJICovDQo+PiArCXN0cnVjdCBkcm1fcHJvcGVydHkgKmRlZ2FtbWFf bHV0X3Byb3BlcnR5Ow0KPj4gKw0KPj4gKwkvKioNCj4+ICsJICogQGRlZ2FtbWFfbHV0X3NpemVf cHJvcGVydHk6IE9wdGlvbmFsIFBsYW5lIHByb3BlcnR5IGZvciB0aGUNCj4+ICsJICogc2l6ZSBv ZiB0aGUgZGVnYW1tYSBMVVQgYXMgc3VwcG9ydGVkIGJ5IHRoZSBkcml2ZXIgKHJlYWQtb25seSku DQo+PiArCSAqLw0KPj4gKwlzdHJ1Y3QgZHJtX3Byb3BlcnR5ICpkZWdhbW1hX2x1dF9zaXplX3By b3BlcnR5Ow0KPj4gIH07DQo+Pg0KPj4gICNkZWZpbmUgb2JqX3RvX3BsYW5lKHgpIGNvbnRhaW5l cl9vZih4LCBzdHJ1Y3QgZHJtX3BsYW5lLCBiYXNlKSBAQA0KPj4gLTc0MSw2ICs3NjMsOCBAQCBz dGF0aWMgaW5saW5lIHUzMiBkcm1fcGxhbmVfbWFzayhjb25zdCBzdHJ1Y3QNCj4+IGRybV9wbGFu ZSAqcGxhbmUpICBpbnQgZHJtX21vZGVfcGxhbmVfc2V0X29ial9wcm9wKHN0cnVjdCBkcm1fcGxh bmUNCj4qcGxhbmUsDQo+PiAgCQkJCSAgICAgICBzdHJ1Y3QgZHJtX3Byb3BlcnR5ICpwcm9wZXJ0 eSwNCj4+ICAJCQkJICAgICAgIHVpbnQ2NF90IHZhbHVlKTsNCj4+ICtpbnQgZHJtX3BsYW5lX2Nv bG9yX2NyZWF0ZV9wcm9wKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsDQo+PiArCQkJCXN0cnVjdCBk cm1fcGxhbmUgKnBsYW5lKTsNCj4+DQo+PiAgLyoqDQo+PiAgICogZHJtX3BsYW5lX2ZpbmQgLSBm aW5kIGEgJmRybV9wbGFuZQ0KPj4gLS0NCj4+IDEuOS4xDQo+Pg0KPj4gX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCj4+IEludGVsLWdmeCBtYWlsaW5nIGxp c3QNCj4+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcNCj4+IGh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4DQo+DQo+LS0NCj5NYXR0 IFJvcGVyDQo+R3JhcGhpY3MgU29mdHdhcmUgRW5naW5lZXINCj5Jb1RHIFBsYXRmb3JtIEVuYWJs aW5nICYgRGV2ZWxvcG1lbnQNCj5JbnRlbCBDb3Jwb3JhdGlvbg0KPig5MTYpIDM1Ni0yNzk1DQpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZngg bWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0 cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK