From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Zanoni, Paulo R" Subject: Re: [PATCH] drm/i915/skl: Update DDI buffer translation programming. Date: Fri, 21 Aug 2015 18:23:03 +0000 Message-ID: <1440181380.2672.57.camel@intel.com> References: <1438811946-13598-1-git-send-email-rodrigo.vivi@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id 93D976E0A9 for ; Fri, 21 Aug 2015 11:23:05 -0700 (PDT) In-Reply-To: <1438811946-13598-1-git-send-email-rodrigo.vivi@intel.com> 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: "intel-gfx@lists.freedesktop.org" , "Vivi, Rodrigo" Cc: "Runyan, Arthur J" List-Id: intel-gfx@lists.freedesktop.org RW0gUXVhLCAyMDE1LTA4LTA1IMOgcyAxNDo1OSAtMDcwMCwgUm9kcmlnbyBWaXZpIGVzY3JldmV1 Og0KPiBTS0wtWSBjYW4gbm93IHVzZSB0aGUgc2FtZSBwcm9ncmFtbWluZyBmb3IgYWxsIFZjY0lP IHZhbHVlcyBhZnRlciBhbiANCj4gYWRqdXN0bWVudCB0byBJX2Jvb3N0Lg0KPiBTS0wtVSBEUCB0 YWJsZSBhZGp1c3RtZW50cy4NCj4gMS4gICAgICAgUmVtb3ZlIFNLTCBZIDAuOTVWIGZyb20gIlNL TCBIIGFuZCBTIiBjb2x1bW5zIGluIGFsbCB0YWJsZXMuDQo+ICAgVGhlIG90aGVyIFNLTCBZIGNv bHVtbiByZW1vdmVzIHRoZSAiMC44NVYgVmNjSU8iIHNvIGl0IG5vdyBhcHBsaWVzIA0KPiB0byBh bGwgdm9sdGFnZXMuDQo+IDIuICAgICAgIERQIHRhYmxlIGNoYW5nZXMgU0tMIFUgNDAwbVYrMGRi IGR3b3JkIDAgdmFsdWUgZnJvbSAyMDE2aCB0byANCj4gMjAxQmguDQo+IDMuICAgICAgIERQIHRh YmxlIGNoYW5nZXMgU0tMIFUgNjAwbXYrMGRiIGR3b3JkIDAgdmFsdWUgZnJvbSAyMDE2aCB0byAN Cj4gMjAxQmguDQo+IDQuICAgICAgIERQIHRhYmxlIGluY3JlYXNlcyBJX2Jvb3N0IHRvIGxldmVs IDMgZm9yIFNLTCBZIDQwMG12KzkuNWRiLg0KPiANCj4gUmVmZXJlbmNlOiBHcmFwaGljcyBTcGVj IENoYW5nZSByOTc5NjINCj4gQ2M6IEFydGh1ciBSdW55YW4gPGFydGh1ci5qLnJ1bnlhbkBpbnRl bC5jb20+DQo+IFNpZ25lZC1vZmYtYnk6IFJvZHJpZ28gVml2aSA8cm9kcmlnby52aXZpQGludGVs LmNvbT4NCg0KZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmM6IEluIGZ1bmN0aW9uIOKA mHNrbF9nZXRfYnVmX3RyYW5zX2Rw4oCZOg0KZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRp LmM6MzM4OjI3OiB3YXJuaW5nOiB1bnVzZWQgdmFyaWFibGUNCuKAmGRldl9wcml24oCZIFstV3Vu dXNlZC12YXJpYWJsZV0NCmRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jOiBJbiBmdW5j dGlvbiDigJhza2xfZ2V0X2J1Zl90cmFuc19oZG1p4oCZOg0KZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZGRpLmM6Mzk0OjI3OiB3YXJuaW5nOiB1bnVzZWQgdmFyaWFibGUNCuKAmGRldl9wcml2 4oCZIFstV3VudXNlZC12YXJpYWJsZV0NCg0KV2l0aCB0aGF0IGZpeGVkOg0KUmV2aWV3ZWQtYnk6 IFBhdWxvIFphbm9uaSA8cGF1bG8uci56YW5vbmlAaW50ZWwuY29tPg0KDQo+IC0tLQ0KPiAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMgfCA3MyArKysrKysrKysrKysrKy0tLS0tLS0t LS0tLS0tLS0NCj4gLS0tLS0tLS0tLQ0KPiAgMSBmaWxlIGNoYW5nZWQsIDI1IGluc2VydGlvbnMo KyksIDQ4IGRlbGV0aW9ucygtKQ0KPiANCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2RkaS5jIA0KPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jDQo+ IGluZGV4IDlhNDBiZmIuLjllNWEyMWIgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2RkaS5jDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5j DQo+IEBAIC0xMjgsNyArMTI4LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBkZGlfYnVmX3RyYW5z IA0KPiBiZHdfZGRpX3RyYW5zbGF0aW9uc19oZG1pW10gPSB7DQo+ICAJeyAweDgwRkZGRkZGLCAw eDAwMUIwMDAyLCAweDAgfSwvKiA5OgkxMDAwCTEwMDAJMAk+ICovDQo+IA0KPiAgfTsNCj4gIA0K PiAtLyogU2t5bGFrZSBILCBTLCBhbmQgU2t5bGFrZSBZIHdpdGggMC45NVYgVmNjSU8gKi8NCj4g Ky8qIFNreWxha2UgSCBhbmQgUyAqLw0KPiAgc3RhdGljIGNvbnN0IHN0cnVjdCBkZGlfYnVmX3Ry YW5zIHNrbF9kZGlfdHJhbnNsYXRpb25zX2RwW10gPSB7DQo+ICAJeyAweDAwMDAyMDE2LCAweDAw MDAwMEEwLCAweDAgfSwNCj4gIAl7IDB4MDAwMDUwMTIsIDB4MDAwMDAwOUIsIDB4MCB9LA0KPiBA QCAtMTQzLDIzICsxNDMsMjMgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBkZGlfYnVmX3RyYW5zIA0K PiBza2xfZGRpX3RyYW5zbGF0aW9uc19kcFtdID0gew0KPiAgDQo+ICAvKiBTa3lsYWtlIFUgKi8N Cj4gIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyBza2xfdV9kZGlfdHJhbnNsYXRp b25zX2RwW10gPSB7DQo+IC0JeyAweDAwMDAyMDE2LCAweDAwMDAwMEEyLCAweDAgfSwNCj4gKwl7 IDB4MDAwMDIwMUIsIDB4MDAwMDAwQTIsIDB4MCB9LA0KPiAgCXsgMHgwMDAwNTAxMiwgMHgwMDAw MDA4OCwgMHgwIH0sDQo+ICAJeyAweDAwMDA3MDExLCAweDAwMDAwMDg3LCAweDAgfSwNCj4gLQl7 IDB4ODAwMDkwMTAsIDB4MDAwMDAwQzcsIDB4MSB9LAkvKiBVc2VzIElfYm9vc3QgKi8NCj4gLQl7 IDB4MDAwMDIwMTYsIDB4MDAwMDAwOUQsIDB4MCB9LA0KPiArCXsgMHg4MDAwOTAxMCwgMHgwMDAw MDBDNywgMHgxIH0sCS8qIFVzZXMgSV9ib29zdCANCj4gbGV2ZWwgMHgxICovDQo+ICsJeyAweDAw MDAyMDFCLCAweDAwMDAwMDlELCAweDAgfSwNCj4gIAl7IDB4MDAwMDUwMTIsIDB4MDAwMDAwQzcs IDB4MCB9LA0KPiAgCXsgMHgwMDAwNzAxMSwgMHgwMDAwMDBDNywgMHgwIH0sDQo+ICAJeyAweDAw MDAyMDE2LCAweDAwMDAwMDg4LCAweDAgfSwNCj4gIAl7IDB4MDAwMDUwMTIsIDB4MDAwMDAwQzcs IDB4MCB9LA0KPiAgfTsNCj4gIA0KPiAtLyogU2t5bGFrZSBZIHdpdGggMC44NVYgVmNjSU8gKi8N Cj4gLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyBza2xfeV8wODV2X2RkaV90cmFu c2xhdGlvbnNfZHBbXSA9IA0KPiB7DQo+ICsvKiBTa3lsYWtlIFkgKi8NCj4gK3N0YXRpYyBjb25z dCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyBza2xfeV9kZGlfdHJhbnNsYXRpb25zX2RwW10gPSB7DQo+ ICAJeyAweDAwMDAwMDE4LCAweDAwMDAwMEEyLCAweDAgfSwNCj4gIAl7IDB4MDAwMDUwMTIsIDB4 MDAwMDAwODgsIDB4MCB9LA0KPiAgCXsgMHgwMDAwNzAxMSwgMHgwMDAwMDA4NywgMHgwIH0sDQo+ IC0JeyAweDgwMDA5MDEwLCAweDAwMDAwMEM3LCAweDEgfSwJLyogVXNlcyBJX2Jvb3N0ICovDQo+ ICsJeyAweDgwMDA5MDEwLCAweDAwMDAwMEM3LCAweDMgfSwJLyogVXNlcyBJX2Jvb3N0IA0KPiBs ZXZlbCAweDMgKi8NCj4gIAl7IDB4MDAwMDAwMTgsIDB4MDAwMDAwOUQsIDB4MCB9LA0KPiAgCXsg MHgwMDAwNTAxMiwgMHgwMDAwMDBDNywgMHgwIH0sDQo+ICAJeyAweDAwMDA3MDExLCAweDAwMDAw MEM3LCAweDAgfSwNCj4gQEAgLTE2OCw3ICsxNjgsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRk aV9idWZfdHJhbnMgDQo+IHNrbF95XzA4NXZfZGRpX3RyYW5zbGF0aW9uc19kcFtdID0gew0KPiAg fTsNCj4gIA0KPiAgLyoNCj4gLSAqIFNreWxha2UgSCBhbmQgUywgYW5kIFNreWxha2UgWSB3aXRo IDAuOTVWIFZjY0lPDQo+ICsgKiBTa3lsYWtlIEggYW5kIFMNCj4gICAqIGVEUCAxLjQgbG93IHZz d2luZyB0cmFuc2xhdGlvbiBwYXJhbWV0ZXJzDQo+ICAgKi8NCj4gIHN0YXRpYyBjb25zdCBzdHJ1 Y3QgZGRpX2J1Zl90cmFucyBza2xfZGRpX3RyYW5zbGF0aW9uc19lZHBbXSA9IHsNCj4gQEAgLTIw MiwxMCArMjAyLDEwIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyANCj4gc2ts X3VfZGRpX3RyYW5zbGF0aW9uc19lZHBbXSA9IHsNCj4gIH07DQo+ICANCj4gIC8qDQo+IC0gKiBT a3lsYWtlIFkgd2l0aCAwLjk1ViBWY2NJTw0KPiArICogU2t5bGFrZSBZDQo+ICAgKiBlRFAgMS40 IGxvdyB2c3dpbmcgdHJhbnNsYXRpb24gcGFyYW1ldGVycw0KPiAgICovDQo+IC1zdGF0aWMgY29u c3Qgc3RydWN0IGRkaV9idWZfdHJhbnMgc2tsX3lfMDg1dl9kZGlfdHJhbnNsYXRpb25zX2VkcFtd IA0KPiA9IHsNCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyBza2xfeV9kZGlf dHJhbnNsYXRpb25zX2VkcFtdID0gew0KPiAgCXsgMHgwMDAwMDAxOCwgMHgwMDAwMDBBOCwgMHgw IH0sDQo+ICAJeyAweDAwMDA0MDEzLCAweDAwMDAwMEFCLCAweDAgfSwNCj4gIAl7IDB4MDAwMDcw MTEsIDB4MDAwMDAwQTQsIDB4MCB9LA0KPiBAQCAtMjE4LDcgKzIxOCw3IEBAIHN0YXRpYyBjb25z dCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyANCj4gc2tsX3lfMDg1dl9kZGlfdHJhbnNsYXRpb25zX2Vk cFtdID0gew0KPiAgCXsgMHgwMDAwMDAxOCwgMHgwMDAwMDA4QSwgMHgwIH0sDQo+ICB9Ow0KPiAg DQo+IC0vKiBTa3lsYWtlIEgsIFMgYW5kIFUsIGFuZCBTa3lsYWtlIFkgd2l0aCAwLjk1ViBWY2NJ TyAqLw0KPiArLyogU2t5bGFrZSBVLCBIIGFuZCBTICovDQo+ICBzdGF0aWMgY29uc3Qgc3RydWN0 IGRkaV9idWZfdHJhbnMgc2tsX2RkaV90cmFuc2xhdGlvbnNfaGRtaVtdID0gew0KPiAgCXsgMHgw MDAwMDAxOCwgMHgwMDAwMDBBQywgMHgwIH0sDQo+ICAJeyAweDAwMDA1MDEyLCAweDAwMDAwMDlE LCAweDAgfSwNCj4gQEAgLTIzMyw4ICsyMzMsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRkaV9i dWZfdHJhbnMgDQo+IHNrbF9kZGlfdHJhbnNsYXRpb25zX2hkbWlbXSA9IHsNCj4gIAl7IDB4MDAw MDAwMTgsIDB4MDAwMDAwQzcsIDB4MCB9LA0KPiAgfTsNCj4gIA0KPiAtLyogU2t5bGFrZSBZIHdp dGggMC44NVYgVmNjSU8gKi8NCj4gLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyBz a2xfeV8wODV2X2RkaV90cmFuc2xhdGlvbnNfaGRtaVtdIA0KPiA9IHsNCj4gKy8qIFNreWxha2Ug WSAqLw0KPiArc3RhdGljIGNvbnN0IHN0cnVjdCBkZGlfYnVmX3RyYW5zIHNrbF95X2RkaV90cmFu c2xhdGlvbnNfaGRtaVtdID0gew0KPiAgCXsgMHgwMDAwMDAxOCwgMHgwMDAwMDBBMSwgMHgwIH0s DQo+ICAJeyAweDAwMDA1MDEyLCAweDAwMDAwMERGLCAweDAgfSwNCj4gIAl7IDB4MDAwMDcwMTEs IDB4MDAwMDAwODQsIDB4MCB9LA0KPiBAQCAtMjQ0LDcgKzI0NCw3IEBAIHN0YXRpYyBjb25zdCBz dHJ1Y3QgZGRpX2J1Zl90cmFucyANCj4gc2tsX3lfMDg1dl9kZGlfdHJhbnNsYXRpb25zX2hkbWlb XSA9IHsNCj4gIAl7IDB4MDAwMDYwMTMsIDB4MDAwMDAwQzcsIDB4MCB9LA0KPiAgCXsgMHgwMDAw MDAxOCwgMHgwMDAwMDA4QSwgMHgwIH0sDQo+ICAJeyAweDAwMDAzMDE1LCAweDAwMDAwMEM3LCAw eDAgfSwJLyogRGVmYXVsdCAqLw0KPiAtCXsgMHg4MDAwMzAxNSwgMHgwMDAwMDBDNywgMHg3IH0s CS8qIFVzZXMgSV9ib29zdCAqLw0KPiArCXsgMHg4MDAwMzAxNSwgMHgwMDAwMDBDNywgMHg3IH0s CS8qIFVzZXMgSV9ib29zdCANCj4gbGV2ZWwgMHg3ICovDQo+ICAJeyAweDAwMDAwMDE4LCAweDAw MDAwMEM3LCAweDAgfSwNCj4gIH07DQo+ICANCj4gQEAgLTMzNywxNyArMzM3LDEwIEBAIHN0YXRp YyBjb25zdCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyANCj4gKnNrbF9nZXRfYnVmX3RyYW5zX2RwKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsDQo+ICB7DQo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsNCj4gIAljb25zdCBzdHJ1Y3QgZGRpX2J1Zl90 cmFucyAqZGRpX3RyYW5zbGF0aW9uczsNCj4gLQlzdGF0aWMgaW50IGlzXzA5NXYgPSAtMTsNCj4g IA0KPiAtCWlmIChpc18wOTV2ID09IC0xKSB7DQo+IC0JCXUzMiBzcHIxID0gSTkxNV9SRUFEKFVB SU1JX1NQUjEpOw0KPiAtDQo+IC0JCWlzXzA5NXYgPSBzcHIxICYgU0tMX1ZDQ0lPX01BU0s7DQo+ IC0JfQ0KPiAtDQo+IC0JaWYgKElTX1NLTF9VTFgoZGV2KSAmJiAhaXNfMDk1dikgew0KPiAtCQlk ZGlfdHJhbnNsYXRpb25zID0gc2tsX3lfMDg1dl9kZGlfdHJhbnNsYXRpb25zX2RwOw0KPiAtCQkq bl9lbnRyaWVzID0gDQo+IEFSUkFZX1NJWkUoc2tsX3lfMDg1dl9kZGlfdHJhbnNsYXRpb25zX2Rw KTsNCj4gKwlpZiAoSVNfU0tMX1VMWChkZXYpKSB7DQo+ICsJCWRkaV90cmFuc2xhdGlvbnMgPSBz a2xfeV9kZGlfdHJhbnNsYXRpb25zX2RwOw0KPiArCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShz a2xfeV9kZGlfdHJhbnNsYXRpb25zX2RwKTsNCj4gIAl9IGVsc2UgaWYgKElTX1NLTF9VTFQoZGV2 KSkgew0KPiAgCQlkZGlfdHJhbnNsYXRpb25zID0gc2tsX3VfZGRpX3RyYW5zbGF0aW9uc19kcDsN Cj4gIAkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoc2tsX3VfZGRpX3RyYW5zbGF0aW9uc19kcCk7 DQo+IEBAIC0zNjQsMjMgKzM1NywxNCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRkaV9idWZfdHJh bnMgDQo+ICpza2xfZ2V0X2J1Zl90cmFuc19lZHAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwNCj4g IHsNCj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2 YXRlOw0KPiAgCWNvbnN0IHN0cnVjdCBkZGlfYnVmX3RyYW5zICpkZGlfdHJhbnNsYXRpb25zOw0K PiAtCXN0YXRpYyBpbnQgaXNfMDk1diA9IC0xOw0KPiAgDQo+IC0JaWYgKGlzXzA5NXYgPT0gLTEp IHsNCj4gLQkJdTMyIHNwcjEgPSBJOTE1X1JFQUQoVUFJTUlfU1BSMSk7DQo+IC0NCj4gLQkJaXNf MDk1diA9IHNwcjEgJiBTS0xfVkNDSU9fTUFTSzsNCj4gLQl9DQo+IC0NCj4gLQlpZiAoSVNfU0tM X1VMWChkZXYpICYmICFpc18wOTV2KSB7DQo+ICsJaWYgKElTX1NLTF9VTFgoZGV2KSkgew0KPiAg CQlpZiAoZGV2X3ByaXYtPmVkcF9sb3dfdnN3aW5nKSB7DQo+IC0JCQlkZGlfdHJhbnNsYXRpb25z ID0gDQo+IHNrbF95XzA4NXZfZGRpX3RyYW5zbGF0aW9uc19lZHA7DQo+IC0JCQkqbl9lbnRyaWVz ID0NCj4gLQkJCQlBUlJBWV9TSVpFKHNrbF95XzA4NXZfZGRpX3RyYW5zbGF0aW8NCj4gbnNfZWRw KTsNCj4gKwkJCWRkaV90cmFuc2xhdGlvbnMgPSANCj4gc2tsX3lfZGRpX3RyYW5zbGF0aW9uc19l ZHA7DQo+ICsJCQkqbl9lbnRyaWVzID0gDQo+IEFSUkFZX1NJWkUoc2tsX3lfZGRpX3RyYW5zbGF0 aW9uc19lZHApOw0KPiAgCQl9IGVsc2Ugew0KPiAtCQkJZGRpX3RyYW5zbGF0aW9ucyA9IA0KPiBz a2xfeV8wODV2X2RkaV90cmFuc2xhdGlvbnNfZHA7DQo+IC0JCQkqbl9lbnRyaWVzID0NCj4gLQkJ CQlBUlJBWV9TSVpFKHNrbF95XzA4NXZfZGRpX3RyYW5zbGF0aW8NCj4gbnNfZHApOw0KPiArCQkJ ZGRpX3RyYW5zbGF0aW9ucyA9IA0KPiBza2xfeV9kZGlfdHJhbnNsYXRpb25zX2RwOw0KPiArCQkJ Km5fZW50cmllcyA9IA0KPiBBUlJBWV9TSVpFKHNrbF95X2RkaV90cmFuc2xhdGlvbnNfZHApOw0K PiAgCQl9DQo+ICAJfSBlbHNlIGlmIChJU19TS0xfVUxUKGRldikpIHsNCj4gIAkJaWYgKGRldl9w cml2LT5lZHBfbG93X3Zzd2luZykgew0KPiBAQCAtNDA5LDE3ICszOTMsMTAgQEAgc2tsX2dldF9i dWZfdHJhbnNfaGRtaShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LA0KPiAgew0KPiAgCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7DQo+ICAJY29uc3Qg c3RydWN0IGRkaV9idWZfdHJhbnMgKmRkaV90cmFuc2xhdGlvbnM7DQo+IC0Jc3RhdGljIGludCBp c18wOTV2ID0gLTE7DQo+IC0NCj4gLQlpZiAoaXNfMDk1diA9PSAtMSkgew0KPiAtCQl1MzIgc3By MSA9IEk5MTVfUkVBRChVQUlNSV9TUFIxKTsNCj4gLQ0KPiAtCQlpc18wOTV2ID0gc3ByMSAmIFNL TF9WQ0NJT19NQVNLOw0KPiAtCX0NCj4gIA0KPiAtCWlmIChJU19TS0xfVUxYKGRldikgJiYgIWlz XzA5NXYpIHsNCj4gLQkJZGRpX3RyYW5zbGF0aW9ucyA9IHNrbF95XzA4NXZfZGRpX3RyYW5zbGF0 aW9uc19oZG1pOw0KPiAtCQkqbl9lbnRyaWVzID0gDQo+IEFSUkFZX1NJWkUoc2tsX3lfMDg1dl9k ZGlfdHJhbnNsYXRpb25zX2hkbWkpOw0KPiArCWlmIChJU19TS0xfVUxYKGRldikpIHsNCj4gKwkJ ZGRpX3RyYW5zbGF0aW9ucyA9IHNrbF95X2RkaV90cmFuc2xhdGlvbnNfaGRtaTsNCj4gKwkJKm5f ZW50cmllcyA9IA0KPiBBUlJBWV9TSVpFKHNrbF95X2RkaV90cmFuc2xhdGlvbnNfaGRtaSk7DQo+ ICAJfSBlbHNlIHsNCj4gIAkJZGRpX3RyYW5zbGF0aW9ucyA9IHNrbF9kZGlfdHJhbnNsYXRpb25z X2hkbWk7DQo+ICAJCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKHNrbF9kZGlfdHJhbnNsYXRpb25z X2hkbWkpOwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJ bnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=