From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ander Conselvan de Oliveira Subject: [PATCH 07/35] drm/i915: Move toggling planes out of crtc enable/disable. Date: Tue, 21 Apr 2015 17:12:56 +0300 Message-ID: <1429625604-22252-8-git-send-email-ander.conselvan.de.oliveira@intel.com> References: <1429625604-22252-1-git-send-email-ander.conselvan.de.oliveira@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTP id 6E1EE6E5CD for ; Tue, 21 Apr 2015 07:13:40 -0700 (PDT) In-Reply-To: <1429625604-22252-1-git-send-email-ander.conselvan.de.oliveira@intel.com> 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 Cc: Ander Conselvan de Oliveira List-Id: intel-gfx@lists.freedesktop.org RnJvbTogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4LmludGVsLmNv bT4KClRoaXMgbWFrZXMgZGlzYWJsaW5nIHBsYW5lcyBtb3JlIGV4cGxpY2l0LgoKU2lnbmVkLW9m Zi1ieTogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4LmludGVsLmNv bT4KW2FuZGVyY286IGZpeGVkIHdhcm5pbmcgZHVlIHRvIHVzaW5nIGRybV9jcnRjIGluc3RlYWQg b2YgaW50ZWxfY3J0Y10KU2lnbmVkLW9mZi1ieTogQW5kZXIgQ29uc2VsdmFuIGRlIE9saXZlaXJh IDxhbmRlci5jb25zZWx2YW4uZGUub2xpdmVpcmFAaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jICB8ICA2ICsrLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kaXNwbGF5LmMgfCA0NiArKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0t LS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICAgICB8ICAxICsKIDMgZmlsZXMg Y2hhbmdlZCwgMzEgaW5zZXJ0aW9ucygrKSwgMjIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2RlYnVnZnMuYwppbmRleCA5YzJiOWU0Li5kMjYzZDBmIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2RlYnVnZnMuYwpAQCAtMzU5NCw4ICszNTk0LDcgQEAgc3RhdGljIHZvaWQgaHN3X3Ry YW5zX2VkcF9waXBlX0FfY3JjX3dhKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJCWludGVsX2Rp c3BsYXlfcG93ZXJfZ2V0KGRldl9wcml2LAogCQkJCQlQT1dFUl9ET01BSU5fUElQRV9QQU5FTF9G SVRURVIoUElQRV9BKSk7CiAKLQkJZGV2X3ByaXYtPmRpc3BsYXkuY3J0Y19kaXNhYmxlKCZjcnRj LT5iYXNlKTsKLQkJZGV2X3ByaXYtPmRpc3BsYXkuY3J0Y19lbmFibGUoJmNydGMtPmJhc2UpOwor CQlpbnRlbF9jcnRjX3Jlc2V0KGNydGMpOwogCX0KIAlkcm1fbW9kZXNldF91bmxvY2tfYWxsKGRl dik7CiB9CkBAIC0zNjE2LDggKzM2MTUsNyBAQCBzdGF0aWMgdm9pZCBoc3dfdW5kb190cmFuc19l ZHBfcGlwZV9BX2NyY193YShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCWlmIChjcnRjLT5jb25m aWctPnBjaF9wZml0LmZvcmNlX3RocnUpIHsKIAkJY3J0Yy0+Y29uZmlnLT5wY2hfcGZpdC5mb3Jj ZV90aHJ1ID0gZmFsc2U7CiAKLQkJZGV2X3ByaXYtPmRpc3BsYXkuY3J0Y19kaXNhYmxlKCZjcnRj LT5iYXNlKTsKLQkJZGV2X3ByaXYtPmRpc3BsYXkuY3J0Y19lbmFibGUoJmNydGMtPmJhc2UpOwor CQlpbnRlbF9jcnRjX3Jlc2V0KGNydGMpOwogCiAJCWludGVsX2Rpc3BsYXlfcG93ZXJfcHV0KGRl dl9wcml2LAogCQkJCQlQT1dFUl9ET01BSU5fUElQRV9QQU5FTF9GSVRURVIoUElQRV9BKSk7CmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKaW5kZXggMTJjMDJhNi4uMWEwZWM1MiAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwpAQCAtMTA3LDYgKzEwNyw4IEBAIHN0YXRp YyB2b2lkIHNrbF9pbml0X3NjYWxlcnMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGlu dGVsX2NydGMgKmludGVsX2NyCiAJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUp Owogc3RhdGljIGludCBpOXh4X2dldF9yZWZjbGsoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKmNydGNfc3RhdGUsCiAJCQkgICBpbnQgbnVtX2Nvbm5lY3RvcnMpOworc3RhdGljIHZvaWQg aW50ZWxfY3J0Y19lbmFibGVfcGxhbmVzKHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyk7CitzdGF0aWMg dm9pZCBpbnRlbF9jcnRjX2Rpc2FibGVfcGxhbmVzKHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyk7CiAK IHN0YXRpYyBzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZmluZF9lbmNvZGVyKHN0cnVjdCBp bnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwgaW50IHBpcGUpCiB7CkBAIC0zMTI4LDYgKzMxMzAs MTkgQEAgc3RhdGljIHZvaWQgaW50ZWxfdXBkYXRlX3ByaW1hcnlfcGxhbmVzKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYpCiAJfQogfQogCit2b2lkIGludGVsX2NydGNfcmVzZXQoc3RydWN0IGludGVs X2NydGMgKmNydGMpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9f aTkxNShjcnRjLT5iYXNlLmRldik7CisKKwlpZiAoIWNydGMtPmFjdGl2ZSkKKwkJcmV0dXJuOwor CisJaW50ZWxfY3J0Y19kaXNhYmxlX3BsYW5lcygmY3J0Yy0+YmFzZSk7CisJZGV2X3ByaXYtPmRp c3BsYXkuY3J0Y19kaXNhYmxlKCZjcnRjLT5iYXNlKTsKKwlkZXZfcHJpdi0+ZGlzcGxheS5jcnRj X2VuYWJsZSgmY3J0Yy0+YmFzZSk7CisJaW50ZWxfY3J0Y19lbmFibGVfcGxhbmVzKCZjcnRjLT5i YXNlKTsKK30KKwogdm9pZCBpbnRlbF9wcmVwYXJlX3Jlc2V0KHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYp OwpAQCAtMzE0OCw4ICszMTYzLDExIEBAIHZvaWQgaW50ZWxfcHJlcGFyZV9yZXNldChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KQogCSAqIGczMyBkb2NzIHNheSB3ZSBzaG91bGQgYXQgbGVhc3QgZGlz YWJsZSBhbGwgdGhlIHBsYW5lcy4KIAkgKi8KIAlmb3JfZWFjaF9pbnRlbF9jcnRjKGRldiwgY3J0 YykgewotCQlpZiAoY3J0Yy0+YWN0aXZlKQotCQkJZGV2X3ByaXYtPmRpc3BsYXkuY3J0Y19kaXNh YmxlKCZjcnRjLT5iYXNlKTsKKwkJaWYgKCFjcnRjLT5hY3RpdmUpCisJCQljb250aW51ZTsKKwor CQlpbnRlbF9jcnRjX2Rpc2FibGVfcGxhbmVzKCZjcnRjLT5iYXNlKTsKKwkJZGV2X3ByaXYtPmRp c3BsYXkuY3J0Y19kaXNhYmxlKCZjcnRjLT5iYXNlKTsKIAl9CiB9CiAKQEAgLTQ3NTgsOCArNDc3 Niw2IEBAIGludGVsX3ByZV9kaXNhYmxlX3ByaW1hcnkoc3RydWN0IGRybV9jcnRjICpjcnRjKQog CiBzdGF0aWMgdm9pZCBpbnRlbF9jcnRjX2VuYWJsZV9wbGFuZXMoc3RydWN0IGRybV9jcnRjICpj cnRjKQogewotCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0Yyhj cnRjKTsKLQogCWludGVsX2VuYWJsZV9wcmltYXJ5X2h3X3BsYW5lKGNydGMtPnByaW1hcnksIGNy dGMpOwogCWludGVsX2VuYWJsZV9zcHJpdGVfcGxhbmVzKGNydGMpOwogCWludGVsX2NydGNfdXBk YXRlX2N1cnNvcihjcnRjLCB0cnVlKTsKQEAgLTQ4NjUsOCArNDg4MSw2IEBAIHN0YXRpYyB2b2lk IGlyb25sYWtlX2NydGNfZW5hYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIAogCWlmIChIQVNf UENIX0NQVChkZXYpKQogCQljcHRfdmVyaWZ5X21vZGVzZXQoZGV2LCBpbnRlbF9jcnRjLT5waXBl KTsKLQotCWludGVsX2NydGNfZW5hYmxlX3BsYW5lcyhjcnRjKTsKIH0KIAogLyogSVBTIG9ubHkg ZXhpc3RzIG9uIFVMVCBtYWNoaW5lcyBhbmQgaXMgdGllZCB0byBwaXBlIEEuICovCkBAIC00OTkw LDcgKzUwMDQsNiBAQCBzdGF0aWMgdm9pZCBoYXN3ZWxsX2NydGNfZW5hYmxlKHN0cnVjdCBkcm1f Y3J0YyAqY3J0YykKIAkvKiBJZiB3ZSBjaGFuZ2UgdGhlIHJlbGF0aXZlIG9yZGVyIGJldHdlZW4g cGlwZS9wbGFuZXMgZW5hYmxpbmcsIHdlIG5lZWQKIAkgKiB0byBjaGFuZ2UgdGhlIHdvcmthcm91 bmQuICovCiAJaGFzd2VsbF9tb2RlX3NldF9wbGFuZXNfd29ya2Fyb3VuZChpbnRlbF9jcnRjKTsK LQlpbnRlbF9jcnRjX2VuYWJsZV9wbGFuZXMoY3J0Yyk7CiB9CiAKIHN0YXRpYyB2b2lkIGlyb25s YWtlX3BmaXRfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKQEAgLTUwMjAsOCArNTAz Myw2IEBAIHN0YXRpYyB2b2lkIGlyb25sYWtlX2NydGNfZGlzYWJsZShzdHJ1Y3QgZHJtX2NydGMg KmNydGMpCiAJaWYgKCFpbnRlbF9jcnRjLT5hY3RpdmUpCiAJCXJldHVybjsKIAotCWludGVsX2Ny dGNfZGlzYWJsZV9wbGFuZXMoY3J0Yyk7Ci0KIAlmb3JfZWFjaF9lbmNvZGVyX29uX2NydGMoZGV2 LCBjcnRjLCBlbmNvZGVyKQogCQllbmNvZGVyLT5kaXNhYmxlKGVuY29kZXIpOwogCkBAIC01MDg0 LDggKzUwOTUsNiBAQCBzdGF0aWMgdm9pZCBoYXN3ZWxsX2NydGNfZGlzYWJsZShzdHJ1Y3QgZHJt X2NydGMgKmNydGMpCiAJaWYgKCFpbnRlbF9jcnRjLT5hY3RpdmUpCiAJCXJldHVybjsKIAotCWlu dGVsX2NydGNfZGlzYWJsZV9wbGFuZXMoY3J0Yyk7Ci0KIAlmb3JfZWFjaF9lbmNvZGVyX29uX2Ny dGMoZGV2LCBjcnRjLCBlbmNvZGVyKSB7CiAJCWludGVsX29wcmVnaW9uX25vdGlmeV9lbmNvZGVy KGVuY29kZXIsIGZhbHNlKTsKIAkJZW5jb2Rlci0+ZGlzYWJsZShlbmNvZGVyKTsKQEAgLTU4Mjks OCArNTgzOCw2IEBAIHN0YXRpYyB2b2lkIHZhbGxleXZpZXdfY3J0Y19lbmFibGUoc3RydWN0IGRy bV9jcnRjICpjcnRjKQogCiAJZm9yX2VhY2hfZW5jb2Rlcl9vbl9jcnRjKGRldiwgY3J0YywgZW5j b2RlcikKIAkJZW5jb2Rlci0+ZW5hYmxlKGVuY29kZXIpOwotCi0JaW50ZWxfY3J0Y19lbmFibGVf cGxhbmVzKGNydGMpOwogfQogCiBzdGF0aWMgdm9pZCBpOXh4X3NldF9wbGxfZGl2aWRlcnMoc3Ry dWN0IGludGVsX2NydGMgKmNydGMpCkBAIC01ODg3LDggKzU4OTQsNiBAQCBzdGF0aWMgdm9pZCBp OXh4X2NydGNfZW5hYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIAogCWZvcl9lYWNoX2VuY29k ZXJfb25fY3J0YyhkZXYsIGNydGMsIGVuY29kZXIpCiAJCWVuY29kZXItPmVuYWJsZShlbmNvZGVy KTsKLQotCWludGVsX2NydGNfZW5hYmxlX3BsYW5lcyhjcnRjKTsKIH0KIAogc3RhdGljIHZvaWQg aTl4eF9wZml0X2Rpc2FibGUoc3RydWN0IGludGVsX2NydGMgKmNydGMpCkBAIC01OTE3LDggKzU5 MjIsNiBAQCBzdGF0aWMgdm9pZCBpOXh4X2NydGNfZGlzYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNy dGMpCiAJaWYgKCFpbnRlbF9jcnRjLT5hY3RpdmUpCiAJCXJldHVybjsKIAotCWludGVsX2NydGNf ZGlzYWJsZV9wbGFuZXMoY3J0Yyk7Ci0KIAkvKgogCSAqIE9uIGdlbjIgcGxhbmVzIGFyZSBkb3Vi bGUgYnVmZmVyZWQgYnV0IHRoZSBwaXBlIGlzbid0LCBzbyB3ZSBtdXN0CiAJICogd2FpdCBmb3Ig cGxhbmVzIHRvIGZ1bGx5IHR1cm4gb2ZmIGJlZm9yZSBkaXNhYmxpbmcgdGhlIHBpcGUuCkBAIC01 OTgyLDkgKzU5ODUsMTEgQEAgdm9pZCBpbnRlbF9jcnRjX2NvbnRyb2woc3RydWN0IGRybV9jcnRj ICpjcnRjLCBib29sIGVuYWJsZSkKIAkJCWludGVsX2NydGMtPmVuYWJsZWRfcG93ZXJfZG9tYWlu cyA9IGRvbWFpbnM7CiAKIAkJCWRldl9wcml2LT5kaXNwbGF5LmNydGNfZW5hYmxlKGNydGMpOwor CQkJaW50ZWxfY3J0Y19lbmFibGVfcGxhbmVzKGNydGMpOwogCQl9CiAJfSBlbHNlIHsKIAkJaWYg KGludGVsX2NydGMtPmFjdGl2ZSkgeworCQkJaW50ZWxfY3J0Y19kaXNhYmxlX3BsYW5lcyhjcnRj KTsKIAkJCWRldl9wcml2LT5kaXNwbGF5LmNydGNfZGlzYWJsZShjcnRjKTsKIAogCQkJZG9tYWlu cyA9IGludGVsX2NydGMtPmVuYWJsZWRfcG93ZXJfZG9tYWluczsKQEAgLTYwMTksNiArNjAyNCw3 IEBAIHN0YXRpYyB2b2lkIGludGVsX2NydGNfZGlzYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMp CiAJLyogY3J0YyBzaG91bGQgc3RpbGwgYmUgZW5hYmxlZCB3aGVuIHdlIGRpc2FibGUgaXQuICov CiAJV0FSTl9PTighY3J0Yy0+c3RhdGUtPmVuYWJsZSk7CiAKKwlpbnRlbF9jcnRjX2Rpc2FibGVf cGxhbmVzKGNydGMpOwogCWRldl9wcml2LT5kaXNwbGF5LmNydGNfZGlzYWJsZShjcnRjKTsKIAlk ZXZfcHJpdi0+ZGlzcGxheS5vZmYoY3J0Yyk7CiAKQEAgLTEyMjU4LDggKzEyMjY0LDEwIEBAIHN0 YXRpYyBpbnQgX19pbnRlbF9zZXRfbW9kZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJCWludGVs X2NydGNfZGlzYWJsZSgmaW50ZWxfY3J0Yy0+YmFzZSk7CiAKIAlmb3JfZWFjaF9pbnRlbF9jcnRj X21hc2tlZChkZXYsIHByZXBhcmVfcGlwZXMsIGludGVsX2NydGMpIHsKLQkJaWYgKGludGVsX2Ny dGMtPmJhc2Uuc3RhdGUtPmVuYWJsZSkKKwkJaWYgKGludGVsX2NydGMtPmJhc2Uuc3RhdGUtPmVu YWJsZSkgeworCQkJaW50ZWxfY3J0Y19kaXNhYmxlX3BsYW5lcygmaW50ZWxfY3J0Yy0+YmFzZSk7 CiAJCQlkZXZfcHJpdi0+ZGlzcGxheS5jcnRjX2Rpc2FibGUoJmludGVsX2NydGMtPmJhc2UpOwor CQl9CiAJfQogCiAJLyogY3J0Yy0+bW9kZSBpcyBhbHJlYWR5IHVzZWQgYnkgdGhlIC0+bW9kZV9z ZXQgY2FsbGJhY2tzLCBoZW5jZSB3ZSBuZWVkCkBAIC0xMjMwNyw2ICsxMjMxNSw3IEBAIHN0YXRp YyBpbnQgX19pbnRlbF9zZXRfbW9kZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJCXVwZGF0ZV9z Y2FubGluZV9vZmZzZXQoaW50ZWxfY3J0Yyk7CiAKIAkJZGV2X3ByaXYtPmRpc3BsYXkuY3J0Y19l bmFibGUoJmludGVsX2NydGMtPmJhc2UpOworCQlpbnRlbF9jcnRjX2VuYWJsZV9wbGFuZXMoJmlu dGVsX2NydGMtPmJhc2UpOwogCX0KIAogCS8qIEZJWE1FOiBhZGQgc3VicGl4ZWwgb3JkZXIgKi8K QEAgLTE0NzAzLDYgKzE0NzEyLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfc2FuaXRpemVfY3J0Yyhz dHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKIAkJcGxhbmUgPSBjcnRjLT5wbGFuZTsKIAkJdG9faW50 ZWxfcGxhbmVfc3RhdGUoY3J0Yy0+YmFzZS5wcmltYXJ5LT5zdGF0ZSktPnZpc2libGUgPSB0cnVl OwogCQljcnRjLT5wbGFuZSA9ICFwbGFuZTsKKwkJaW50ZWxfY3J0Y19kaXNhYmxlX3BsYW5lcygm Y3J0Yy0+YmFzZSk7CiAJCWRldl9wcml2LT5kaXNwbGF5LmNydGNfZGlzYWJsZSgmY3J0Yy0+YmFz ZSk7CiAJCWNydGMtPnBsYW5lID0gcGxhbmU7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKaW5k ZXggNGM0ODQ1MS4uZGM1M2Y1OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKQEAgLTk5NCw2 ICs5OTQsNyBAQCB2b2lkIGludGVsX21hcmtfYnVzeShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsK IHZvaWQgaW50ZWxfbWFya19pZGxlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwogdm9pZCBpbnRl bF9jcnRjX3Jlc3RvcmVfbW9kZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpOwogdm9pZCBpbnRlbF9j cnRjX2NvbnRyb2woc3RydWN0IGRybV9jcnRjICpjcnRjLCBib29sIGVuYWJsZSk7Cit2b2lkIGlu dGVsX2NydGNfcmVzZXQoc3RydWN0IGludGVsX2NydGMgKmNydGMpOwogdm9pZCBpbnRlbF9jcnRj X3VwZGF0ZV9kcG1zKHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyk7CiB2b2lkIGludGVsX2VuY29kZXJf ZGVzdHJveShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpOwogaW50IGludGVsX2Nvbm5lY3Rv cl9pbml0KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKik7Ci0tIAoyLjEuMAoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlz dApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK