From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Kuehling, Felix" Subject: Re: [PATCH 04/16 v2] drm/amd/display: Add tracing to dc Date: Fri, 7 Dec 2018 20:32:16 +0000 Message-ID: References: <3179d43f-1c48-3987-ba6d-ce70052cc07c@gmail.com> <20181130145706.5984-1-David.Francis@amd.com> <66a179f3-88e1-42c5-3e61-52aec61fa1ce@amd.com> <7ec7a6fc-a1d5-61e2-da46-2660b7b46281@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <7ec7a6fc-a1d5-61e2-da46-2660b7b46281-5C7GfCeVMHo@public.gmane.org> Content-Language: en-US Content-ID: List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: "Wentland, Harry" , "Francis, David" , "amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" T24gMjAxOC0xMi0wNyA5OjQ2IGEubS4sIFdlbnRsYW5kLCBIYXJyeSB3cm90ZToNCj4gT24gMjAx OC0xMi0wNyA5OjQxIGEubS4sIFdlbnRsYW5kLCBIYXJyeSB3cm90ZToNCj4+IE9uIDIwMTgtMTIt MDcgMTI6NDAgYS5tLiwgS3VlaGxpbmcsIEZlbGl4IHdyb3RlOg0KPj4+IFRoaXMgY2hhbmdlIHNl ZW1zIHRvIGJlIGJyZWFraW5nIHRoZSBidWlsZCBmb3IgbWUuIEknbSBnZXR0aW5nIGVycm9ycyBs aWtlIHRoaXM6DQo+Pj4NCj4+PiAgICAgQ0MgW01dICBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS8uLi9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG0ubw0KPj4+IEluIGZpbGUgaW5jbHVkZWQg ZnJvbSAuLi9pbmNsdWRlL3RyYWNlL2V2ZW50cy90bGIuaDo5OjAsDQo+Pj4gICAgICAgICAgICAg ICAgICAgIGZyb20gLi4vYXJjaC94ODYvaW5jbHVkZS9hc20vbW11X2NvbnRleHQuaDoxMCwNCj4+ PiAgICAgICAgICAgICAgICAgICAgZnJvbSAuLi9pbmNsdWRlL2xpbnV4L21tdV9jb250ZXh0Lmg6 NSwNCj4+PiAgICAgICAgICAgICAgICAgICAgZnJvbSAuLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9hbWRncHVfYW1ka2ZkLmg6MzAsDQo+Pj4gICAgICAgICAgICAgICAgICAgIGZyb20gLi4v ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1Lmg6ODUsDQo+Pj4gICAgICAgICAgICAg ICAgICAgIGZyb20gLi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9hbWRn cHVfZG0vYW1kZ3B1X2RtLmM6MzQ6DQo+Pj4gLi4vaW5jbHVkZS9saW51eC90cmFjZXBvaW50Lmg6 Mjg1OjIwOiBlcnJvcjogcmVkZWZpbml0aW9uIG9mIMOiX190cHN0cnRhYl9hbWRncHVfZGNfcnJl Z8OiDQo+Pj4gICAgIHN0YXRpYyBjb25zdCBjaGFyIF9fdHBzdHJ0YWJfIyNuYW1lW10gICAgIFwN Cj4+PiAgICAgICAgICAgICAgICAgICAgICAgXg0KPj4+IC4uL2luY2x1ZGUvbGludXgvdHJhY2Vw b2ludC5oOjI5MzoyOiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8gw6JERUZJTkVfVFJBQ0Vf Rk7Dog0KPj4+ICAgICBERUZJTkVfVFJBQ0VfRk4obmFtZSwgTlVMTCwgTlVMTCk7DQo+Pj4gICAg IF4NCj4+PiAuLi9pbmNsdWRlL3RyYWNlL2RlZmluZV90cmFjZS5oOjI4OjI6IG5vdGU6IGluIGV4 cGFuc2lvbiBvZiBtYWNybyDDokRFRklORV9UUkFDRcOiDQo+Pj4gICAgIERFRklORV9UUkFDRShu YW1lKQ0KPj4+ICAgICBeDQo+Pj4gLi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlz cGxheS9hbWRncHVfZG0vLi9hbWRncHVfZG1fdHJhY2UuaDozNDoxOiBub3RlOiBpbiBleHBhbnNp b24gb2YgbWFjcm8gw6JUUkFDRV9FVkVOVMOiDQo+Pj4gICAgVFJBQ0VfRVZFTlQoYW1kZ3B1X2Rj X3JyZWcsDQo+Pj4gICAgXg0KPj4+DQo+Pj4gSSBoYXZlIGEgbG9jYWwgY2hhbmdlIHRoYXQgYWRk cyAjaW5jbHVkZSA8YW1kZ3B1X2FtZGtmZC5oPiB0byBhbWRncHUuaCwgd2hpY2ggcHVsbHMgaW4g aW5jbHVkZS90cmFjZS9ldmVudHMvdGxiLmguIFRoYXQgc2VlbXMgdG8gY3JlYXRlIHNvbWUga2lu ZCBvZiBjb25mbGljdCB3aXRoIHRyYWNlIGRlZmluaXRpb25zLiBBbnkgaWRlYXMgaG93IHRvIGZp eCB0aGlzPyBJdCBzZWVtcyBhIGJpdCBmcmFnaWxlIGlmIGFkZGluZyBzb21lIHJhbmRvbSBpbmNs dWRlIGNhbiBicmVhayB0aGUgYnVpbGQgbGlrZSB0aGlzLg0KPj4+DQo+PiBUaGF0J3MgdGhlIHRy YWNlIHN1YnN5c3RlbSBmb3IgeW91LiBEYXZpZCBhbmQgSSBhcmUgdHJ5aW5nIHRvIHVuZGVyc3Rh bmQgd2hhdCdzIGdvaW5nIG9uLiBJIHRoaW5rIHRoZSBwcm9ibGVtIGlzIHRoYXQgYm90aCB0bGIu aCBhbmQgYW1kZ3B1X2RtX3RyYWNlLmggZGVmaW5lIHRyYWNlIGV2ZW50cyBhbmQgd2Ugbm93IGlu Y2x1ZGUgYm90aCBoZXJlLg0KPj4NCj4+IEkgdGhpbmsgd2UnZCB3YW50IHRvIGluY2x1ZGUgbmVp dGhlciB0cmFjZSBldmVudHMgZnJvbSBhbWRncHUuaCB0byBhdm9pZCB0aGlzIHByb2JsZW0gaW4g dGhlIGZ1dHVyZSwgc28gd2UnbGwgcHJvYmFibHkgaGF2ZSB0byAoYSkgY2xlYW4gdXAgdGhlIGRj LmggaW5jbHVkZSB0byBvbmx5IGNvbnRhaW4gd2hhdCBhbWRncHUuaCBuZWVkcyBhbmQgKGIpIGNs ZWFuIHVwIGFtZGdwdV9hbWRrZmQuaCB0byBvbmx5IGNvbnRhaW4gd2hhdCBhbWRncHUuaCBuZWVk cy4gQXQgdGhlIGVuZCBhbWRncHUuaCBkb2Vzbid0IGNhcmUgYWJvdXQgdGhlIHRyYWNlci4gVGhl IHByb2JsZW0gc2VlbXMgdGhhdCBkYy5oIGFuZCBhbWRncHVfYW1ka2ZkLmggYXJlIHRoZSBtYWlu IGluY2x1ZGVzIGZvciBvdXIgcmVzcGVjdGl2ZSBkcml2ZXJzIGJ1dCBhcmUgYWxzbyB3aG9sZXNh bGUgaW5jbHVkZWQgaW4gYW1kZ3B1LmguDQo+Pg0KPiBBcG9sb2dpZXMgZm9yIHRoZSBzcGFtLg0K Pg0KPiBKdXN0IG5vdGljZWQgdGhhdCBhbWRncHUuaCBpbmNsdWRlcyBvbmx5IGFtZGdwdV9kbS5o IHdoaWNoIGlzIGNsZWFuLiBUaGUgcHJvYmxlbSBpcyB0aGF0IGluY2x1ZGluZyBhbWRncHUuaCBm cm9tIGFtZGdwdV9kbS5jIG5vdyBwdWxscyBpbiB5b3VyIHRyYWNlIGV2ZW50cyAoZnJvbSB0bGIu aCkgd2hpY2ggd2UgZG9uJ3QgZXhwZWN0IGFuZCBjYXJlIGFib3V0LiBJIHRoaW5rIHdlIHNob3Vs ZCBtYWtlIHN1cmUgYW1kZ3B1Lmggd29uJ3QgaW5jbHVkZSBhbnl0aGluZyB0aGF0IGRlZmluZXMg VFJBQ0VfRVZFTlRzLg0KDQphbWRncHVfYW1ka2ZkLmggZGVmaW5lcyBhIG1hY3JvIHRoYXQgdXNl cyB1c2VfbW0gYW5kIHVudXNlX21tLiBUaGVyZWZvcmUNCml0IG5lZWRzIHRvIGluY2x1ZGUgbW11 X2NvbnRleHQuaCwgd2hpY2ggcHVsbHMgaW4gdGhlIGNvbmZsaWN0aW5nIHRyYWNlDQpldmVudHMu IE1heWJlIHdlIGNhbiBtb3ZlIHRoYXQgaW50byBhIGRpZmZlcmVudCBoZWFkZXIgZmlsZSB0aGF0 IGRvZXNuJ3QNCmdldCBpbmNsdWRlZCBpbiBhbWRncHUuaC4gT3IgZmluZCBhbm90aGVyIHdheSB0 byBhdm9pZCBpbmNsdWRpbmcNCmFtZGdwdV9hbWRrZmQuaCBpbiBhbWRncHUuaC4NCg0KVGhhbmtz LA0KwqAgRmVsaXgNCg0KDQoNCj4NCj4gSGFycnkNCj4NCj4+IEhhcnJ5DQo+Pg0KPj4+IFRoYW5r cywNCj4+PiAgICAgRmVsaXgNCj4+Pg0KPj4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ Pj4gRnJvbTogYW1kLWdmeCA8YW1kLWdmeC1ib3VuY2VzQGxpc3RzLmZyZWVkZXNrdG9wLm9yZz4g T24gQmVoYWxmIE9mIERhdmlkIEZyYW5jaXMNCj4+PiBTZW50OiBGcmlkYXksIE5vdmVtYmVyIDMw LCAyMDE4IDk6NTcgQU0NCj4+PiBUbzogYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcNCj4+ PiBDYzogRnJhbmNpcywgRGF2aWQgPERhdmlkLkZyYW5jaXNAYW1kLmNvbT4NCj4+PiBTdWJqZWN0 OiBbUEFUQ0ggMDQvMTYgdjJdIGRybS9hbWQvZGlzcGxheTogQWRkIHRyYWNpbmcgdG8gZGMNCj4+ Pg0KPj4+IFtXaHldDQo+Pj4gVHJhY2luZyBpcyBhIHVzZWZ1bCBhbmQgY2hlYXAgZGVidWcgZnVu Y3Rpb25hbGl0eQ0KPj4+DQo+Pj4gW0hvd10NCj4+PiBUaGlzIGNyZWF0ZXMgYSBuZXcgdHJhY2Ug c3lzdGVtIGFtZGdwdV9kbSwgY3VycmVudGx5IHdpdGggdGhyZWUgdHJhY2UgZXZlbnRzDQo+Pj4N Cj4+PiBhbWRncHVfZGNfcnJlZyBhbmQgYW1kZ3B1X2RjX3dyZWcgcmVwb3J0IHRoZSBhZGRyZXNz IGFuZCB2YWx1ZSBvZiBhbnkgZGMgcmVnaXN0ZXIgcmVhZHMgYW5kIHdyaXRlcw0KPj4+DQo+Pj4g YW1kZ3B1X2RjX3BlcmZvcm1hbmNlIHJlcXVpcmVzIGF0IGxlYXN0IG9uZSBvZiB0aG9zZSB0d28g dG8gYmUgZW5hYmxlZC4gIEl0IGNvdW50cyB0aGUgcmVnaXN0ZXIgcmVhZHMgYW5kIHdyaXRlcyBz aW5jZSB0aGUgbGFzdCBlbnRyeQ0KPj4+DQo+Pj4gdjI6IERvbid0IGNoZWNrIGZvciBOVUxMIGJl Zm9yZSBrZnJlZQ0KPj4+DQo+Pj4gU2lnbmVkLW9mZi1ieTogRGF2aWQgRnJhbmNpcyA8RGF2aWQu RnJhbmNpc0BhbWQuY29tPg0KPj4+IFJldmlld2VkLWJ5OiBIYXJyeSBXZW50bGFuZCA8SGFycnku V2VudGxhbmRAYW1kLmNvbT4NCj4+PiBBY2tlZC1ieTogTGVvIExpIDxzdW5wZW5nLmxpQGFtZC5j b20+DQo+Pj4gLS0tDQo+Pj4gICAgLi4uL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2Ft ZGdwdV9kbS5jIHwgICAzICsNCj4+PiAgICAuLi4vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdw dV9kbV90cmFjZS5oICAgfCAxMDQgKysrKysrKysrKysrKysrKysrDQo+Pj4gICAgZHJpdmVycy9n cHUvZHJtL2FtZC9kaXNwbGF5L2RjL2NvcmUvZGMuYyAgICAgIHwgIDE5ICsrKysNCj4+PiAgICBk cml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvZGNfdHlwZXMuaCAgICAgfCAgIDggKysNCj4+ PiAgICAuLi4vYW1kL2Rpc3BsYXkvZGMvZGNuMTAvZGNuMTBfY21fY29tbW9uLmMgICAgfCAgIDQg Ky0NCj4+PiAgICBkcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvZG1fc2VydmljZXMuaCAg fCAgMTIgKy0NCj4+PiAgICA2IGZpbGVzIGNoYW5nZWQsIDE0NiBpbnNlcnRpb25zKCspLCA0IGRl bGV0aW9ucygtKSAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxh eS9hbWRncHVfZG0vYW1kZ3B1X2RtX3RyYWNlLmgNCj4+Pg0KPj4+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbS5jIGIvZHJpdmVycy9n cHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG0uYw0KPj4+IGluZGV4IDc2YjFh ZWJkY2EwYy4uMzc2OTI3YzhiY2M2IDEwMDY0NA0KPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9h bWQvZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtLmMNCj4+PiArKysgYi9kcml2ZXJzL2dwdS9k cm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbS5jDQo+Pj4gQEAgLTIzLDYgKzIzLDkg QEANCj4+PiAgICAgKg0KPj4+ICAgICAqLw0KPj4+ICAgIA0KPj4+ICsvKiBUaGUgY2FwcmljZXMg b2YgdGhlIHByZXByb2Nlc3NvciByZXF1aXJlIHRoYXQgdGhpcyBiZSBkZWNsYXJlZCByaWdodA0K Pj4+ICtoZXJlICovICNkZWZpbmUgQ1JFQVRFX1RSQUNFX1BPSU5UUw0KPj4+ICsNCj4+PiAgICAj aW5jbHVkZSAiZG1fc2VydmljZXNfdHlwZXMuaCINCj4+PiAgICAjaW5jbHVkZSAiZGMuaCINCj4+ PiAgICAjaW5jbHVkZSAiZGMvaW5jL2NvcmVfdHlwZXMuaCINCj4+PiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG1fdHJhY2UuaCBiL2Ry aXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtX3RyYWNlLmgNCj4+ PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPj4+IGluZGV4IDAwMDAwMDAwMDAwMC4uZDg5ODk4MTY4 NGQ1DQo+Pj4gLS0tIC9kZXYvbnVsbA0KPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlz cGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtX3RyYWNlLmgNCj4+PiBAQCAtMCwwICsxLDEwNCBAQA0K Pj4+ICsvKg0KPj4+ICsgKiBDb3B5cmlnaHQgMjAxOCBBZHZhbmNlZCBNaWNybyBEZXZpY2VzLCBJ bmMuDQo+Pj4gKyAqDQo+Pj4gKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUg b2YgY2hhcmdlLCB0byBhbnkgcGVyc29uDQo+Pj4gK29idGFpbmluZyBhDQo+Pj4gKyAqIGNvcHkg b2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUN Cj4+PiArIlNvZnR3YXJlIiksDQo+Pj4gKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhv dXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0DQo+Pj4gK2xpbWl0YXRpb24NCj4+PiAr ICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3Ry aWJ1dGUsDQo+Pj4gK3N1YmxpY2Vuc2UsDQo+Pj4gKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0 aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tDQo+Pj4gK3RoZQ0KPj4+ ICsgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxv d2luZyBjb25kaXRpb25zOg0KPj4+ICsgKg0KPj4+ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5v dGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZQ0KPj4+ICtpbmNsdWRlZCBp bg0KPj4+ICsgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0 d2FyZS4NCj4+PiArICoNCj4+PiArICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIs IFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsDQo+Pj4gK0VYUFJFU1MgT1INCj4+PiArICog SU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRg0K Pj4+ICtNRVJDSEFOVEFCSUxJVFksDQo+Pj4gKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVA0KPj4+ICtTSEFMTA0KPj4+ ICsgKiBUSEUgQ09QWVJJR0hUIEhPTERFUihTKSBPUiBBVVRIT1IoUykgQkUgTElBQkxFIEZPUiBB TlkgQ0xBSU0sDQo+Pj4gK0RBTUFHRVMgT1INCj4+PiArICogT1RIRVIgTElBQklMSVRZLCBXSEVU SEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUg0KPj4+ICtPVEhFUldJU0UsDQo+ Pj4gKyAqIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09G VFdBUkUgT1IgVEhFIFVTRQ0KPj4+ICtPUg0KPj4+ICsgKiBPVEhFUiBERUFMSU5HUyBJTiBUSEUg U09GVFdBUkUuDQo+Pj4gKyAqDQo+Pj4gKyAqIEF1dGhvcnM6IEFNRA0KPj4+ICsgKg0KPj4+ICsg Ki8NCj4+PiArDQo+Pj4gKyN1bmRlZiBUUkFDRV9TWVNURU0NCj4+PiArI2RlZmluZSBUUkFDRV9T WVNURU0gYW1kZ3B1X2RtDQo+Pj4gKw0KPj4+ICsjaWYgIWRlZmluZWQoX0FNREdQVV9ETV9UUkFD RV9IKSB8fCBkZWZpbmVkKFRSQUNFX0hFQURFUl9NVUxUSV9SRUFEKQ0KPj4+ICsjZGVmaW5lIF9B TURHUFVfRE1fVFJBQ0VfSF8NCj4+PiArDQo+Pj4gKyNpbmNsdWRlIDxsaW51eC90cmFjZXBvaW50 Lmg+DQo+Pj4gKw0KPj4+ICtUUkFDRV9FVkVOVChhbWRncHVfZGNfcnJlZywNCj4+PiArCVRQX1BS T1RPKHVuc2lnbmVkIGxvbmcgKnJlYWRfY291bnQsIHVpbnQzMl90IHJlZywgdWludDMyX3QgdmFs dWUpLA0KPj4+ICsJVFBfQVJHUyhyZWFkX2NvdW50LCByZWcsIHZhbHVlKSwNCj4+PiArCVRQX1NU UlVDVF9fZW50cnkoDQo+Pj4gKwkJCV9fZmllbGQodWludDMyX3QsIHJlZykNCj4+PiArCQkJX19m aWVsZCh1aW50MzJfdCwgdmFsdWUpDQo+Pj4gKwkJKSwNCj4+PiArCVRQX2Zhc3RfYXNzaWduKA0K Pj4+ICsJCQlfX2VudHJ5LT5yZWcgPSByZWc7DQo+Pj4gKwkJCV9fZW50cnktPnZhbHVlID0gdmFs dWU7DQo+Pj4gKwkJCSpyZWFkX2NvdW50ID0gKnJlYWRfY291bnQgKyAxOw0KPj4+ICsJCSksDQo+ Pj4gKwlUUF9wcmludGsoInJlZz0weCUwOGx4LCB2YWx1ZT0weCUwOGx4IiwNCj4+PiArCQkJKHVu c2lnbmVkIGxvbmcpX19lbnRyeS0+cmVnLA0KPj4+ICsJCQkodW5zaWduZWQgbG9uZylfX2VudHJ5 LT52YWx1ZSkNCj4+PiArKTsNCj4+PiArDQo+Pj4gK1RSQUNFX0VWRU5UKGFtZGdwdV9kY193cmVn LA0KPj4+ICsJVFBfUFJPVE8odW5zaWduZWQgbG9uZyAqd3JpdGVfY291bnQsIHVpbnQzMl90IHJl ZywgdWludDMyX3QgdmFsdWUpLA0KPj4+ICsJVFBfQVJHUyh3cml0ZV9jb3VudCwgcmVnLCB2YWx1 ZSksDQo+Pj4gKwlUUF9TVFJVQ1RfX2VudHJ5KA0KPj4+ICsJCQlfX2ZpZWxkKHVpbnQzMl90LCBy ZWcpDQo+Pj4gKwkJCV9fZmllbGQodWludDMyX3QsIHZhbHVlKQ0KPj4+ICsJCSksDQo+Pj4gKwlU UF9mYXN0X2Fzc2lnbigNCj4+PiArCQkJX19lbnRyeS0+cmVnID0gcmVnOw0KPj4+ICsJCQlfX2Vu dHJ5LT52YWx1ZSA9IHZhbHVlOw0KPj4+ICsJCQkqd3JpdGVfY291bnQgPSAqd3JpdGVfY291bnQg KyAxOw0KPj4+ICsJCSksDQo+Pj4gKwlUUF9wcmludGsoInJlZz0weCUwOGx4LCB2YWx1ZT0weCUw OGx4IiwNCj4+PiArCQkJKHVuc2lnbmVkIGxvbmcpX19lbnRyeS0+cmVnLA0KPj4+ICsJCQkodW5z aWduZWQgbG9uZylfX2VudHJ5LT52YWx1ZSkNCj4+PiArKTsNCj4+PiArDQo+Pj4gKw0KPj4+ICtU UkFDRV9FVkVOVChhbWRncHVfZGNfcGVyZm9ybWFuY2UsDQo+Pj4gKwlUUF9QUk9UTyh1bnNpZ25l ZCBsb25nIHJlYWRfY291bnQsIHVuc2lnbmVkIGxvbmcgd3JpdGVfY291bnQsDQo+Pj4gKwkJdW5z aWduZWQgbG9uZyAqbGFzdF9yZWFkLCB1bnNpZ25lZCBsb25nICpsYXN0X3dyaXRlLA0KPj4+ICsJ CWNvbnN0IGNoYXIgKmZ1bmMsIHVuc2lnbmVkIGludCBsaW5lKSwNCj4+PiArCVRQX0FSR1MocmVh ZF9jb3VudCwgd3JpdGVfY291bnQsIGxhc3RfcmVhZCwgbGFzdF93cml0ZSwgZnVuYywgbGluZSks DQo+Pj4gKwlUUF9TVFJVQ1RfX2VudHJ5KA0KPj4+ICsJCQlfX2ZpZWxkKHVpbnQzMl90LCByZWFk cykNCj4+PiArCQkJX19maWVsZCh1aW50MzJfdCwgd3JpdGVzKQ0KPj4+ICsJCQlfX2ZpZWxkKHVp bnQzMl90LCByZWFkX2RlbHRhKQ0KPj4+ICsJCQlfX2ZpZWxkKHVpbnQzMl90LCB3cml0ZV9kZWx0 YSkNCj4+PiArCQkJX19zdHJpbmcoZnVuYywgZnVuYykNCj4+PiArCQkJX19maWVsZCh1aW50MzJf dCwgbGluZSkNCj4+PiArCQkJKSwNCj4+PiArCVRQX2Zhc3RfYXNzaWduKA0KPj4+ICsJCQlfX2Vu dHJ5LT5yZWFkcyA9IHJlYWRfY291bnQ7DQo+Pj4gKwkJCV9fZW50cnktPndyaXRlcyA9IHdyaXRl X2NvdW50Ow0KPj4+ICsJCQlfX2VudHJ5LT5yZWFkX2RlbHRhID0gcmVhZF9jb3VudCAtICpsYXN0 X3JlYWQ7DQo+Pj4gKwkJCV9fZW50cnktPndyaXRlX2RlbHRhID0gd3JpdGVfY291bnQgLSAqbGFz dF93cml0ZTsNCj4+PiArCQkJX19hc3NpZ25fc3RyKGZ1bmMsIGZ1bmMpOw0KPj4+ICsJCQlfX2Vu dHJ5LT5saW5lID0gbGluZTsNCj4+PiArCQkJKmxhc3RfcmVhZCA9IHJlYWRfY291bnQ7DQo+Pj4g KwkJCSpsYXN0X3dyaXRlID0gd3JpdGVfY291bnQ7DQo+Pj4gKwkJCSksDQo+Pj4gKwlUUF9wcmlu dGsoIiVzOiVkIHJlYWRzPSUwOGxkICglMDhsZCB0b3RhbCksIHdyaXRlcz0lMDhsZCAoJTA4bGQg dG90YWwpIiwNCj4+PiArCQkJX19nZXRfc3RyKGZ1bmMpLCBfX2VudHJ5LT5saW5lLA0KPj4+ICsJ CQkodW5zaWduZWQgbG9uZylfX2VudHJ5LT5yZWFkX2RlbHRhLA0KPj4+ICsJCQkodW5zaWduZWQg bG9uZylfX2VudHJ5LT5yZWFkcywNCj4+PiArCQkJKHVuc2lnbmVkIGxvbmcpX19lbnRyeS0+d3Jp dGVfZGVsdGEsDQo+Pj4gKwkJCSh1bnNpZ25lZCBsb25nKV9fZW50cnktPndyaXRlcykNCj4+PiAr KTsNCj4+PiArI2VuZGlmIC8qIF9BTURHUFVfRE1fVFJBQ0VfSF8gKi8NCj4+PiArDQo+Pj4gKyN1 bmRlZiBUUkFDRV9JTkNMVURFX1BBVEgNCj4+PiArI2RlZmluZSBUUkFDRV9JTkNMVURFX1BBVEgg Lg0KPj4+ICsjZGVmaW5lIFRSQUNFX0lOQ0xVREVfRklMRSBhbWRncHVfZG1fdHJhY2UgI2luY2x1 ZGUNCj4+PiArPHRyYWNlL2RlZmluZV90cmFjZS5oPg0KPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvY29yZS9kYy5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9k aXNwbGF5L2RjL2NvcmUvZGMuYw0KPj4+IGluZGV4IGRiYTZiNTc4MzBjNy4uMzkwM2IyYzBhNmYx IDEwMDY0NA0KPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9jb3JlL2Rj LmMNCj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvY29yZS9kYy5jDQo+ Pj4gQEAgLTE3NSw2ICsxNzUsMTcgQEAgc3RhdGljIGJvb2wgY3JlYXRlX2xpbmtzKA0KPj4+ICAg IAlyZXR1cm4gZmFsc2U7DQo+Pj4gICAgfQ0KPj4+ICAgIA0KPj4+ICtzdGF0aWMgc3RydWN0IGRj X3BlcmZfdHJhY2UgKmRjX3BlcmZfdHJhY2VfY3JlYXRlKHZvaWQpIHsNCj4+PiArCXJldHVybiBr emFsbG9jKHNpemVvZihzdHJ1Y3QgZGNfcGVyZl90cmFjZSksIEdGUF9LRVJORUwpOyB9DQo+Pj4g Kw0KPj4+ICtzdGF0aWMgdm9pZCBkY19wZXJmX3RyYWNlX2Rlc3Ryb3koc3RydWN0IGRjX3BlcmZf dHJhY2UgKipwZXJmX3RyYWNlKSB7DQo+Pj4gKwlrZnJlZSgqcGVyZl90cmFjZSk7DQo+Pj4gKwkq cGVyZl90cmFjZSA9IE5VTEw7DQo+Pj4gK30NCj4+PiArDQo+Pj4gICAgLyoqDQo+Pj4gICAgICoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqDQo+Pj4gICAgICogIEZ1bmN0aW9uOiBkY19zdHJlYW1fYWRqdXN0 X3ZtaW5fdm1heCBAQCAtNTM2LDYgKzU0Nyw4IEBAIHN0YXRpYyB2b2lkIGRlc3RydWN0KHN0cnVj dCBkYyAqZGMpDQo+Pj4gICAgCWlmIChkYy0+Y3R4LT5jcmVhdGVkX2Jpb3MpDQo+Pj4gICAgCQlk YWxfYmlvc19wYXJzZXJfZGVzdHJveSgmZGMtPmN0eC0+ZGNfYmlvcyk7DQo+Pj4gICAgDQo+Pj4g KwlkY19wZXJmX3RyYWNlX2Rlc3Ryb3koJmRjLT5jdHgtPnBlcmZfdHJhY2UpOw0KPj4+ICsNCj4+ PiAgICAJa2ZyZWUoZGMtPmN0eCk7DQo+Pj4gICAgCWRjLT5jdHggPSBOVUxMOw0KPj4+ICAgIA0K Pj4+IEBAIC02NTksNiArNjcyLDEyIEBAIHN0YXRpYyBib29sIGNvbnN0cnVjdChzdHJ1Y3QgZGMg KmRjLA0KPj4+ICAgIAkJZ290byBmYWlsOw0KPj4+ICAgIAl9DQo+Pj4gICAgDQo+Pj4gKwlkY19j dHgtPnBlcmZfdHJhY2UgPSBkY19wZXJmX3RyYWNlX2NyZWF0ZSgpOw0KPj4+ICsJaWYgKCFkY19j dHgtPnBlcmZfdHJhY2UpIHsNCj4+PiArCQlBU1NFUlRfQ1JJVElDQUwoZmFsc2UpOw0KPj4+ICsJ CWdvdG8gZmFpbDsNCj4+PiArCX0NCj4+PiArDQo+Pj4gICAgCS8qIENyZWF0ZSBHUElPIHNlcnZp Y2UgKi8NCj4+PiAgICAJZGNfY3R4LT5ncGlvX3NlcnZpY2UgPSBkYWxfZ3Bpb19zZXJ2aWNlX2Ny ZWF0ZSgNCj4+PiAgICAJCQlkY192ZXJzaW9uLA0KPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vYW1kL2Rpc3BsYXkvZGMvZGNfdHlwZXMuaCBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlz cGxheS9kYy9kY190eXBlcy5oDQo+Pj4gaW5kZXggNmUxMmQ2NDBkMDIwLi44MzkwYmFlZGFmNzEg MTAwNjQ0DQo+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2RjX3R5cGVz LmgNCj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvZGNfdHlwZXMuaA0K Pj4+IEBAIC03MywxMCArNzMsMTggQEAgc3RydWN0IGh3X2FzaWNfaWQgew0KPj4+ICAgIAl2b2lk ICphdG9tYmlvc19iYXNlX2FkZHJlc3M7DQo+Pj4gICAgfTsNCj4+PiAgICANCj4+PiArc3RydWN0 IGRjX3BlcmZfdHJhY2Ugew0KPj4+ICsJdW5zaWduZWQgbG9uZyByZWFkX2NvdW50Ow0KPj4+ICsJ dW5zaWduZWQgbG9uZyB3cml0ZV9jb3VudDsNCj4+PiArCXVuc2lnbmVkIGxvbmcgbGFzdF9lbnRy eV9yZWFkOw0KPj4+ICsJdW5zaWduZWQgbG9uZyBsYXN0X2VudHJ5X3dyaXRlOw0KPj4+ICt9Ow0K Pj4+ICsNCj4+PiAgICBzdHJ1Y3QgZGNfY29udGV4dCB7DQo+Pj4gICAgCXN0cnVjdCBkYyAqZGM7 DQo+Pj4gICAgDQo+Pj4gICAgCXZvaWQgKmRyaXZlcl9jb250ZXh0OyAvKiBlLmcuIGFtZGdwdV9k ZXZpY2UgKi8NCj4+PiArCXN0cnVjdCBkY19wZXJmX3RyYWNlICpwZXJmX3RyYWNlOw0KPj4+ICAg IAl2b2lkICpjZ3NfZGV2aWNlOw0KPj4+ICAgIA0KPj4+ICAgIAllbnVtIGRjZV9lbnZpcm9ubWVu dCBkY2VfZW52aXJvbm1lbnQ7DQo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQv ZGlzcGxheS9kYy9kY24xMC9kY24xMF9jbV9jb21tb24uYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQv ZGlzcGxheS9kYy9kY24xMC9kY24xMF9jbV9jb21tb24uYw0KPj4+IGluZGV4IDNlZWE0NDA5MmEw NC4uNzQ2OTMzM2EyYzhhIDEwMDY0NA0KPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlz cGxheS9kYy9kY24xMC9kY24xMF9jbV9jb21tb24uYw0KPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvZGlzcGxheS9kYy9kY24xMC9kY24xMF9jbV9jb21tb24uYw0KPj4+IEBAIC0zMjQsNyAr MzI0LDcgQEAgYm9vbCBjbV9oZWxwZXJfdHJhbnNsYXRlX2N1cnZlX3RvX2h3X2Zvcm1hdCgNCj4+ PiAgICAJaWYgKG91dHB1dF90ZiA9PSBOVUxMIHx8IGx1dF9wYXJhbXMgPT0gTlVMTCB8fCBvdXRw dXRfdGYtPnR5cGUgPT0gVEZfVFlQRV9CWVBBU1MpDQo+Pj4gICAgCQlyZXR1cm4gZmFsc2U7DQo+ Pj4gICAgDQo+Pj4gLQlQRVJGX1RSQUNFKCk7DQo+Pj4gKwlQRVJGX1RSQUNFX0NUWChvdXRwdXRf dGYtPmN0eCk7DQo+Pj4gICAgDQo+Pj4gICAgCWNvcm5lcl9wb2ludHMgPSBsdXRfcGFyYW1zLT5j b3JuZXJfcG9pbnRzOw0KPj4+ICAgIAlyZ2JfcmVzdWx0ZWQgPSBsdXRfcGFyYW1zLT5yZ2JfcmVz dWx0ZWQ7IEBAIC01MTMsNyArNTEzLDcgQEAgYm9vbCBjbV9oZWxwZXJfdHJhbnNsYXRlX2N1cnZl X3RvX2RlZ2FtbWFfaHdfZm9ybWF0KA0KPj4+ICAgIAlpZiAob3V0cHV0X3RmID09IE5VTEwgfHwg bHV0X3BhcmFtcyA9PSBOVUxMIHx8IG91dHB1dF90Zi0+dHlwZSA9PSBURl9UWVBFX0JZUEFTUykN Cj4+PiAgICAJCXJldHVybiBmYWxzZTsNCj4+PiAgICANCj4+PiAtCVBFUkZfVFJBQ0UoKTsNCj4+ PiArCVBFUkZfVFJBQ0VfQ1RYKG91dHB1dF90Zi0+Y3R4KTsNCj4+PiAgICANCj4+PiAgICAJY29y bmVyX3BvaW50cyA9IGx1dF9wYXJhbXMtPmNvcm5lcl9wb2ludHM7DQo+Pj4gICAgCXJnYl9yZXN1 bHRlZCA9IGx1dF9wYXJhbXMtPnJnYl9yZXN1bHRlZDsgZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9hbWQvZGlzcGxheS9kYy9kbV9zZXJ2aWNlcy5oIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9k aXNwbGF5L2RjL2RtX3NlcnZpY2VzLmgNCj4+PiBpbmRleCAyODEyOGMwMmRlMDAuLjE5NjFjYzZk OTE0MyAxMDA2NDQNCj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvZG1f c2VydmljZXMuaA0KPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9kbV9z ZXJ2aWNlcy5oDQo+Pj4gQEAgLTMxLDYgKzMxLDggQEANCj4+PiAgICANCj4+PiAgICAjZGVmaW5l IF9fRE1fU0VSVklDRVNfSF9fDQo+Pj4gICAgDQo+Pj4gKyNpbmNsdWRlICJhbWRncHVfZG1fdHJh Y2UuaCINCj4+PiArDQo+Pj4gICAgLyogVE9ETzogcmVtb3ZlIHdoZW4gREMgaXMgY29tcGxldGUu ICovICAjaW5jbHVkZSAiZG1fc2VydmljZXNfdHlwZXMuaCINCj4+PiAgICAjaW5jbHVkZSAibG9n Z2VyX2ludGVyZmFjZS5oIg0KPj4+IEBAIC03MCw2ICs3Miw3IEBAIHN0YXRpYyBpbmxpbmUgdWlu dDMyX3QgZG1fcmVhZF9yZWdfZnVuYygNCj4+PiAgICAJfQ0KPj4+ICAgICNlbmRpZg0KPj4+ICAg IAl2YWx1ZSA9IGNnc19yZWFkX3JlZ2lzdGVyKGN0eC0+Y2dzX2RldmljZSwgYWRkcmVzcyk7DQo+ Pj4gKwl0cmFjZV9hbWRncHVfZGNfcnJlZygmY3R4LT5wZXJmX3RyYWNlLT5yZWFkX2NvdW50LCBh ZGRyZXNzLCB2YWx1ZSk7DQo+Pj4gICAgDQo+Pj4gICAgCXJldHVybiB2YWx1ZTsNCj4+PiAgICB9 DQo+Pj4gQEAgLTkwLDYgKzkzLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGRtX3dyaXRlX3JlZ19m dW5jKA0KPj4+ICAgIAl9DQo+Pj4gICAgI2VuZGlmDQo+Pj4gICAgCWNnc193cml0ZV9yZWdpc3Rl cihjdHgtPmNnc19kZXZpY2UsIGFkZHJlc3MsIHZhbHVlKTsNCj4+PiArCXRyYWNlX2FtZGdwdV9k Y193cmVnKCZjdHgtPnBlcmZfdHJhY2UtPndyaXRlX2NvdW50LCBhZGRyZXNzLCB2YWx1ZSk7DQo+ Pj4gICAgfQ0KPj4+ICAgIA0KPj4+ICAgIHN0YXRpYyBpbmxpbmUgdWludDMyX3QgZG1fcmVhZF9p bmRleF9yZWcoIEBAIC0zNTEsOCArMzU1LDEyIEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBkbV9nZXRf ZWxhcHNlX3RpbWVfaW5fbnMoc3RydWN0IGRjX2NvbnRleHQgKmN0eCwNCj4+PiAgICAvKg0KPj4+ ICAgICAqIHBlcmZvcm1hbmNlIHRyYWNpbmcNCj4+PiAgICAgKi8NCj4+PiAtdm9pZCBkbV9wZXJm X3RyYWNlX3RpbWVzdGFtcChjb25zdCBjaGFyICpmdW5jX25hbWUsIHVuc2lnbmVkIGludCBsaW5l KTsNCj4+PiAtI2RlZmluZSBQRVJGX1RSQUNFKCkJZG1fcGVyZl90cmFjZV90aW1lc3RhbXAoX19m dW5jX18sIF9fTElORV9fKQ0KPj4+ICsjZGVmaW5lIFBFUkZfVFJBQ0UoKQl0cmFjZV9hbWRncHVf ZGNfcGVyZm9ybWFuY2UoQ1RYLT5wZXJmX3RyYWNlLT5yZWFkX2NvdW50LFwNCj4+PiArCQlDVFgt PnBlcmZfdHJhY2UtPndyaXRlX2NvdW50LCAmQ1RYLT5wZXJmX3RyYWNlLT5sYXN0X2VudHJ5X3Jl YWQsXA0KPj4+ICsJCSZDVFgtPnBlcmZfdHJhY2UtPmxhc3RfZW50cnlfd3JpdGUsIF9fZnVuY19f LCBfX0xJTkVfXykNCj4+PiArI2RlZmluZSBQRVJGX1RSQUNFX0NUWChfX0NUWCkJdHJhY2VfYW1k Z3B1X2RjX3BlcmZvcm1hbmNlKF9fQ1RYLT5wZXJmX3RyYWNlLT5yZWFkX2NvdW50LFwNCj4+PiAr CQlfX0NUWC0+cGVyZl90cmFjZS0+d3JpdGVfY291bnQsICZfX0NUWC0+cGVyZl90cmFjZS0+bGFz dF9lbnRyeV9yZWFkLFwNCj4+PiArCQkmX19DVFgtPnBlcmZfdHJhY2UtPmxhc3RfZW50cnlfd3Jp dGUsIF9fZnVuY19fLCBfX0xJTkVfXykNCj4+PiAgICANCj4+PiAgICANCj4+PiAgICAvKg0KPj4+ IC0tDQo+Pj4gMi4xNy4xDQo+Pj4NCj4+PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXw0KPj4+IGFtZC1nZnggbWFpbGluZyBsaXN0DQo+Pj4gYW1kLWdmeEBs aXN0cy5mcmVlZGVza3RvcC5vcmcNCj4+PiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2FtZC1nZngNCj4+PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXw0KPj4+IGFtZC1nZnggbWFpbGluZyBsaXN0DQo+Pj4gYW1kLWdm eEBsaXN0cy5mcmVlZGVza3RvcC5vcmcNCj4+PiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2FtZC1nZngNCj4+Pg0KPj4gX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18NCj4+IGFtZC1nZnggbWFpbGluZyBsaXN0DQo+PiBh bWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZw0KPj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4DQo+Pg0KX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KYW1kLWdmeCBtYWlsaW5nIGxpc3QKYW1kLWdmeEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9hbWQtZ2Z4Cg==