From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: Re: [PATCH v3 17/19] drm/i915: Make setting color key atomic. Date: Fri, 19 Jun 2015 06:03:52 +0200 Message-ID: <558394A8.2090503@linux.intel.com> References: <1434364436-6366-1-git-send-email-maarten.lankhorst@linux.intel.com> <1434364436-6366-18-git-send-email-maarten.lankhorst@linux.intel.com> <20150618142123.GI3607@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTP id 89F986E407 for ; Thu, 18 Jun 2015 21:04:29 -0700 (PDT) In-Reply-To: <20150618142123.GI3607@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Matt Roper Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T3AgMTgtMDYtMTUgb20gMTY6MjEgc2NocmVlZiBNYXR0IFJvcGVyOgo+IE9uIE1vbiwgSnVuIDE1 LCAyMDE1IGF0IDEyOjMzOjU0UE0gKzAyMDAsIE1hYXJ0ZW4gTGFua2hvcnN0IHdyb3RlOgo+PiBC eSBtYWtpbmcgY29sb3Iga2V5IGF0b21pYyB0aGVyZSBhcmUgbm8gbW9yZSB0cmFuc2l0aW9uYWwg aGVscGVycy4KPj4gVGhlIHBsYW5lIGNoZWNrIGZ1bmN0aW9uIHdpbGwgcmVqZWN0IHRoZSBjb2xv ciBrZXkgd2hlbiBhIHNjYWxlciBpcwo+PiBhY3RpdmUuCj4+Cj4+IFNpZ25lZC1vZmYtYnk6IE1h YXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBsaW51eC5pbnRlbC5jb20+Cj4+IC0t LQo+PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljX3BsYW5lLmMgfCAgMSArCj4+ ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgICAgICB8ICA3ICsrLQo+PiAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAgICAgICAgfCAgNiArLS0KPj4gIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jICAgICAgIHwgODUgKysrKysrKysrKysr KysrLS0tLS0tLS0tLS0tLS0tLQo+PiAgNCBmaWxlcyBjaGFuZ2VkLCA0NiBpbnNlcnRpb25zKCsp LCA1MyBkZWxldGlvbnMoLSkKPj4KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2F0b21pY19wbGFuZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWlj X3BsYW5lLmMKPj4gaW5kZXggOTFkNTM3NjhkZjlkLi4xMGE4ZWNlZGM5NDIgMTAwNjQ0Cj4+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pY19wbGFuZS5jCj4+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pY19wbGFuZS5jCj4+IEBAIC01Niw2ICs1Niw3 IEBAIGludGVsX2NyZWF0ZV9wbGFuZV9zdGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSkKPj4g IAo+PiAgCXN0YXRlLT5iYXNlLnBsYW5lID0gcGxhbmU7Cj4+ICAJc3RhdGUtPmJhc2Uucm90YXRp b24gPSBCSVQoRFJNX1JPVEFURV8wKTsKPj4gKwlzdGF0ZS0+Y2tleS5mbGFncyA9IEk5MTVfU0VU X0NPTE9SS0VZX05PTkU7Cj4+ICAKPj4gIAlyZXR1cm4gc3RhdGU7Cj4+ICB9Cj4+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPj4gaW5kZXggNWZhY2QwNTAxYTM0Li43NDZjNzNkMmFi ODQgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPj4gQEAgLTQ0MDEs OSArNDQwMSw5IEBAIHN0YXRpYyBpbnQgc2tsX3VwZGF0ZV9zY2FsZXJfcGxhbmUoc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4+ICAJCXJldHVybiByZXQ7Cj4+ICAKPj4gIAkv KiBjaGVjayBjb2xvcmtleSAqLwo+PiAtCWlmIChXQVJOX09OKGludGVsX3BsYW5lLT5ja2V5LmZs YWdzICE9IEk5MTVfU0VUX0NPTE9SS0VZX05PTkUpKSB7Cj4+ICsJaWYgKHBsYW5lX3N0YXRlLT5j a2V5LmZsYWdzICE9IEk5MTVfU0VUX0NPTE9SS0VZX05PTkUpIHsKPj4gIAkJRFJNX0RFQlVHX0tN UygiW1BMQU5FOiVkXSBzY2FsaW5nIHdpdGggY29sb3Iga2V5IG5vdCBhbGxvd2VkIiwKPj4gLQkJ CWludGVsX3BsYW5lLT5iYXNlLmJhc2UuaWQpOwo+PiArCQkJICAgICAgaW50ZWxfcGxhbmUtPmJh c2UuYmFzZS5pZCk7Cj4+ICAJCXJldHVybiAtRUlOVkFMOwo+PiAgCX0KPj4gIAo+PiBAQCAtMTM3 MzMsNyArMTM3MzMsNyBAQCBpbnRlbF9jaGVja19wcmltYXJ5X3BsYW5lKHN0cnVjdCBkcm1fcGxh bmUgKnBsYW5lLAo+PiAgCj4+ICAJLyogdXNlIHNjYWxlciB3aGVuIGNvbG9ya2V5IGlzIG5vdCBy ZXF1aXJlZCAqLwo+PiAgCWlmIChJTlRFTF9JTkZPKHBsYW5lLT5kZXYpLT5nZW4gPj0gOSAmJgo+ PiAtCSAgICB0b19pbnRlbF9wbGFuZShwbGFuZSktPmNrZXkuZmxhZ3MgPT0gSTkxNV9TRVRfQ09M T1JLRVlfTk9ORSkgewo+PiArCSAgICBzdGF0ZS0+Y2tleS5mbGFncyA9PSBJOTE1X1NFVF9DT0xP UktFWV9OT05FKSB7Cj4+ICAJCW1pbl9zY2FsZSA9IDE7Cj4+ICAJCW1heF9zY2FsZSA9IHNrbF9t YXhfc2NhbGUodG9faW50ZWxfY3J0YyhjcnRjKSwgY3J0Y19zdGF0ZSk7Cj4+ICAJCWNhbl9wb3Np dGlvbiA9IHRydWU7Cj4+IEBAIC0xMzg4MSw3ICsxMzg4MSw2IEBAIHN0YXRpYyBzdHJ1Y3QgZHJt X3BsYW5lICppbnRlbF9wcmltYXJ5X3BsYW5lX2NyZWF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LAo+PiAgCXByaW1hcnktPmNoZWNrX3BsYW5lID0gaW50ZWxfY2hlY2tfcHJpbWFyeV9wbGFuZTsK Pj4gIAlwcmltYXJ5LT5jb21taXRfcGxhbmUgPSBpbnRlbF9jb21taXRfcHJpbWFyeV9wbGFuZTsK Pj4gIAlwcmltYXJ5LT5kaXNhYmxlX3BsYW5lID0gaW50ZWxfZGlzYWJsZV9wcmltYXJ5X3BsYW5l Owo+PiAtCXByaW1hcnktPmNrZXkuZmxhZ3MgPSBJOTE1X1NFVF9DT0xPUktFWV9OT05FOwo+PiAg CWlmIChIQVNfRkJDKGRldikgJiYgSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA0KQo+PiAgCQlwcmlt YXJ5LT5wbGFuZSA9ICFwaXBlOwo+PiAgCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4+IGlu ZGV4IDkzYjk1NDJhYjhkYy4uM2EyYWM4MmIwOTcwIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kcnYuaAo+PiBAQCAtMjc0LDYgKzI3NCw4IEBAIHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSB7 Cj4+ICAJICogICAgIHVwZGF0ZV9zY2FsZXJfcGxhbmUuCj4+ICAJICovCj4+ICAJaW50IHNjYWxl cl9pZDsKPj4gKwo+PiArCXN0cnVjdCBkcm1faW50ZWxfc3ByaXRlX2NvbG9ya2V5IGNrZXk7Cj4+ ICB9Owo+PiAgCj4+ICBzdHJ1Y3QgaW50ZWxfaW5pdGlhbF9wbGFuZV9jb25maWcgewo+PiBAQCAt NTg4LDkgKzU5MCw2IEBAIHN0cnVjdCBpbnRlbF9wbGFuZSB7Cj4+ICAJYm9vbCBjYW5fc2NhbGU7 Cj4+ICAJaW50IG1heF9kb3duc2NhbGU7Cj4+ICAKPj4gLQkvKiBGSVhNRSBjb252ZXJ0IHRvIHBy b3BlcnRpZXMgKi8KPj4gLQlzdHJ1Y3QgZHJtX2ludGVsX3Nwcml0ZV9jb2xvcmtleSBja2V5Owo+ PiAtCj4+ICAJLyogU2luY2Ugd2UgbmVlZCB0byBjaGFuZ2UgdGhlIHdhdGVybWFya3MgYmVmb3Jl L2FmdGVyCj4+ICAJICogZW5hYmxpbmcvZGlzYWJsaW5nIHRoZSBwbGFuZXMsIHdlIG5lZWQgdG8g c3RvcmUgdGhlIHBhcmFtZXRlcnMgaGVyZQo+PiAgCSAqIGFzIHRoZSBvdGhlciBwaWVjZXMgb2Yg dGhlIHN0cnVjdCBtYXkgbm90IHJlZmxlY3QgdGhlIHZhbHVlcyB3ZSB3YW50Cj4+IEBAIC0xMzkw LDcgKzEzODksNiBAQCBib29sIGludGVsX3Nkdm9faW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LCB1aW50MzJfdCBzZHZvX3JlZywgYm9vbCBpc19zZHZvYik7Cj4+ICAKPj4gIC8qIGludGVsX3Nw cml0ZS5jICovCj4+ICBpbnQgaW50ZWxfcGxhbmVfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LCBlbnVtIHBpcGUgcGlwZSwgaW50IHBsYW5lKTsKPj4gLWludCBpbnRlbF9wbGFuZV9yZXN0b3Jl KHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lKTsKPj4gIGludCBpbnRlbF9zcHJpdGVfc2V0X2NvbG9y a2V5KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4+ICAJCQkgICAgICBzdHJ1 Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdik7Cj4+ICBib29sIGludGVsX3BpcGVfdXBkYXRlX3N0YXJ0 KHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfc3ByaXRlLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUu Ywo+PiBpbmRleCAxNjhmOTBmMzQ2YzIuLjIxZDNmNzg4MmM0ZCAxMDA2NDQKPj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfc3ByaXRlLmMKPj4gQEAgLTE4Miw3ICsxODIsOCBAQCBza2xfdXBkYXRlX3Bs YW5lKHN0cnVjdCBkcm1fcGxhbmUgKmRybV9wbGFuZSwgc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ PiAgCWNvbnN0IGludCBwbGFuZSA9IGludGVsX3BsYW5lLT5wbGFuZSArIDE7Cj4+ICAJdTMyIHBs YW5lX2N0bCwgc3RyaWRlX2Rpdiwgc3RyaWRlOwo+PiAgCWludCBwaXhlbF9zaXplID0gZHJtX2Zv cm1hdF9wbGFuZV9jcHAoZmItPnBpeGVsX2Zvcm1hdCwgMCk7Cj4+IC0JY29uc3Qgc3RydWN0IGRy bV9pbnRlbF9zcHJpdGVfY29sb3JrZXkgKmtleSA9ICZpbnRlbF9wbGFuZS0+Y2tleTsKPj4gKwlj b25zdCBzdHJ1Y3QgZHJtX2ludGVsX3Nwcml0ZV9jb2xvcmtleSAqa2V5ID0KPj4gKwkJJnRvX2lu dGVsX3BsYW5lX3N0YXRlKGRybV9wbGFuZS0+c3RhdGUpLT5ja2V5Owo+PiAgCXVuc2lnbmVkIGxv bmcgc3VyZl9hZGRyOwo+PiAgCXUzMiB0aWxlX2hlaWdodCwgcGxhbmVfb2Zmc2V0LCBwbGFuZV9z aXplOwo+PiAgCXVuc2lnbmVkIGludCByb3RhdGlvbjsKPj4gQEAgLTM0NCw3ICszNDUsOCBAQCB2 bHZfdXBkYXRlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKmRwbGFuZSwgc3RydWN0IGRybV9jcnRj ICpjcnRjLAo+PiAgCXUzMiBzcHJjdGw7Cj4+ICAJdW5zaWduZWQgbG9uZyBzcHJzdXJmX29mZnNl dCwgbGluZWFyX29mZnNldDsKPj4gIAlpbnQgcGl4ZWxfc2l6ZSA9IGRybV9mb3JtYXRfcGxhbmVf Y3BwKGZiLT5waXhlbF9mb3JtYXQsIDApOwo+PiAtCWNvbnN0IHN0cnVjdCBkcm1faW50ZWxfc3By aXRlX2NvbG9ya2V5ICprZXkgPSAmaW50ZWxfcGxhbmUtPmNrZXk7Cj4+ICsJY29uc3Qgc3RydWN0 IGRybV9pbnRlbF9zcHJpdGVfY29sb3JrZXkgKmtleSA9Cj4+ICsJCSZ0b19pbnRlbF9wbGFuZV9z dGF0ZShkcGxhbmUtPnN0YXRlKS0+Y2tleTsKPj4gIAo+PiAgCXNwcmN0bCA9IFNQX0VOQUJMRTsK Pj4gIAo+PiBAQCAtNDg3LDcgKzQ4OSw4IEBAIGl2Yl91cGRhdGVfcGxhbmUoc3RydWN0IGRybV9w bGFuZSAqcGxhbmUsIHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPj4gIAl1MzIgc3ByY3RsLCBzcHJz Y2FsZSA9IDA7Cj4+ICAJdW5zaWduZWQgbG9uZyBzcHJzdXJmX29mZnNldCwgbGluZWFyX29mZnNl dDsKPj4gIAlpbnQgcGl4ZWxfc2l6ZSA9IGRybV9mb3JtYXRfcGxhbmVfY3BwKGZiLT5waXhlbF9m b3JtYXQsIDApOwo+PiAtCWNvbnN0IHN0cnVjdCBkcm1faW50ZWxfc3ByaXRlX2NvbG9ya2V5ICpr ZXkgPSAmaW50ZWxfcGxhbmUtPmNrZXk7Cj4+ICsJY29uc3Qgc3RydWN0IGRybV9pbnRlbF9zcHJp dGVfY29sb3JrZXkgKmtleSA9Cj4+ICsJCSZ0b19pbnRlbF9wbGFuZV9zdGF0ZShwbGFuZS0+c3Rh dGUpLT5ja2V5Owo+PiAgCj4+ICAJc3ByY3RsID0gU1BSSVRFX0VOQUJMRTsKPj4gIAo+PiBAQCAt NjI3LDcgKzYzMCw4IEBAIGlsa191cGRhdGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUs IHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPj4gIAl1bnNpZ25lZCBsb25nIGR2c3N1cmZfb2Zmc2V0 LCBsaW5lYXJfb2Zmc2V0Owo+PiAgCXUzMiBkdnNjbnRyLCBkdnNzY2FsZTsKPj4gIAlpbnQgcGl4 ZWxfc2l6ZSA9IGRybV9mb3JtYXRfcGxhbmVfY3BwKGZiLT5waXhlbF9mb3JtYXQsIDApOwo+PiAt CWNvbnN0IHN0cnVjdCBkcm1faW50ZWxfc3ByaXRlX2NvbG9ya2V5ICprZXkgPSAmaW50ZWxfcGxh bmUtPmNrZXk7Cj4+ICsJY29uc3Qgc3RydWN0IGRybV9pbnRlbF9zcHJpdGVfY29sb3JrZXkgKmtl eSA9Cj4+ICsJCSZ0b19pbnRlbF9wbGFuZV9zdGF0ZShwbGFuZS0+c3RhdGUpLT5ja2V5Owo+PiAg Cj4+ICAJZHZzY250ciA9IERWU19FTkFCTEU7Cj4+ICAKPj4gQEAgLTc3OCw3ICs3ODIsNyBAQCBp bnRlbF9jaGVja19zcHJpdGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4+ICAJLyog c2V0dXAgY2FuX3NjYWxlLCBtaW5fc2NhbGUsIG1heF9zY2FsZSAqLwo+PiAgCWlmIChJTlRFTF9J TkZPKGRldiktPmdlbiA+PSA5KSB7Cj4+ICAJCS8qIHVzZSBzY2FsZXIgd2hlbiBjb2xvcmtleSBp cyBub3QgcmVxdWlyZWQgKi8KPj4gLQkJaWYgKGludGVsX3BsYW5lLT5ja2V5LmZsYWdzID09IEk5 MTVfU0VUX0NPTE9SS0VZX05PTkUpIHsKPj4gKwkJaWYgKHN0YXRlLT5ja2V5LmZsYWdzID09IEk5 MTVfU0VUX0NPTE9SS0VZX05PTkUpIHsKPj4gIAkJCWNhbl9zY2FsZSA9IDE7Cj4+ICAJCQltaW5f c2NhbGUgPSAxOwo+PiAgCQkJbWF4X3NjYWxlID0gc2tsX21heF9zY2FsZShpbnRlbF9jcnRjLCBj cnRjX3N0YXRlKTsKPj4gQEAgLTc5OCw3ICs4MDIsNiBAQCBpbnRlbF9jaGVja19zcHJpdGVfcGxh bmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4+ICAJICogY29vcmRpbmF0ZXMgYW5kIHNpemVz LiBXZSBwcm9iYWJseSBuZWVkIHNvbWUgd2F5IHRvIGRlY2lkZSB3aGV0aGVyCj4+ICAJICogbW9y ZSBzdHJpY3QgY2hlY2tpbmcgc2hvdWxkIGJlIGRvbmUgaW5zdGVhZC4KPj4gIAkgKi8KPj4gLQo+ PiAgCWRybV9yZWN0X3JvdGF0ZShzcmMsIGZiLT53aWR0aCA8PCAxNiwgZmItPmhlaWdodCA8PCAx NiwKPj4gIAkJCXN0YXRlLT5iYXNlLnJvdGF0aW9uKTsKPj4gIAo+PiBAQCAtODA4LDcgKzgxMSw3 IEBAIGludGVsX2NoZWNrX3Nwcml0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPj4g IAl2c2NhbGUgPSBkcm1fcmVjdF9jYWxjX3ZzY2FsZV9yZWxheGVkKHNyYywgZHN0LCBtaW5fc2Nh bGUsIG1heF9zY2FsZSk7Cj4+ICAJQlVHX09OKHZzY2FsZSA8IDApOwo+PiAgCj4+IC0Jc3RhdGUt PnZpc2libGUgPSAgZHJtX3JlY3RfY2xpcF9zY2FsZWQoc3JjLCBkc3QsIGNsaXAsIGhzY2FsZSwg dnNjYWxlKTsKPj4gKwlzdGF0ZS0+dmlzaWJsZSA9IGRybV9yZWN0X2NsaXBfc2NhbGVkKHNyYywg ZHN0LCBjbGlwLCBoc2NhbGUsIHZzY2FsZSk7Cj4+ICAKPj4gIAljcnRjX3ggPSBkc3QtPngxOwo+ PiAgCWNydGNfeSA9IGRzdC0+eTE7Cj4+IEBAIC05NTAsNyArOTUzLDkgQEAgaW50IGludGVsX3Nw cml0ZV9zZXRfY29sb3JrZXkoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKPj4g IHsKPj4gIAlzdHJ1Y3QgZHJtX2ludGVsX3Nwcml0ZV9jb2xvcmtleSAqc2V0ID0gZGF0YTsKPj4g IAlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZTsKPj4gLQlzdHJ1Y3QgaW50ZWxfcGxhbmUgKmludGVs X3BsYW5lOwo+PiArCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlOwo+PiArCXN0 cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZTsKPj4gKwlzdHJ1Y3QgZHJtX21vZGVzZXRfYWNx dWlyZV9jdHggY3R4Owo+PiAgCWludCByZXQgPSAwOwo+IENhbiB3ZSBzaW1wbGlmeSB0aGlzIGJ5 IGp1c3QgY2FsbGluZwo+IGRybV9hdG9taWNfaGVscGVyX3BsYW5lX3NldF9wcm9wZXJ0eSgpIGFu ZCBsZXQgaXQgaGFuZGxlIHRoZSBhdG9taWMKPiB0cmFuc2FjdGlvbiBmb3IgdXM/Cj4Kc2V0X3By b3BlcnR5IHJlcXVpcmVzIGRybV9tb2Rlc2V0X2xvY2tfYWxsLCBhbmQgZG9pbmcgc28gcmVxdWly ZXMgbWFraW5nIGEgc3BlY2lmaWNhdGlvbiBmb3IgdGhlCmF0b21pYyBjb2xvciBrZXkgcHJvcGVy dHkgaGVyZS4gSSBkb24ndCBrbm93IGhvdyB3aGF0IGl0IHdvdWxkIGxvb2sgbGlrZSwgc28gY3Jl YXRpbmcgYW4gYXRvbWljCnByb3BlcnR5IGlzIGxlZnQgYXMgYSBUT0RPLgoKfk1hYXJ0ZW4KX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1h aWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK