From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sean Paul Subject: [PATCH 3/4] drm/msm: Remove msm_commit/worker, use atomic helper commit Date: Tue, 27 Mar 2018 12:31:53 -0400 Message-ID: <20180327163154.40374-4-seanpaul@chromium.org> References: <20180327163154.40374-1-seanpaul@chromium.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180327163154.40374-1-seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: freedreno-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Freedreno" To: freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: jsanka-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org, robdclark-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, Sean Paul , hoegsberg-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org, abhinavk-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org List-Id: linux-arm-msm@vger.kernel.org TW92aW5nIGZ1cnRoZXIgdG93YXJkcyBzd2l0Y2hpbmcgZnVsbHkgdG8gdGhlIHRoZSBhdG9taWMg aGVscGVycywgdGhpcwpwYXRjaCByZW1vdmVzIHRoZSBoYW5kLXJvbGxlZCB3b3JrZXIgbm9uYmxv Y2sgY29tbWl0IGNvZGUgYW5kIHVzZXMgdGhlCmF0b21pYyBoZWxwZXJzIGNvbW1pdF93b3JrIG1v ZGVsLgoKU2lnbmVkLW9mZi1ieTogU2VhbiBQYXVsIDxzZWFucGF1bEBjaHJvbWl1bS5vcmc+Ci0t LQogZHJpdmVycy9ncHUvZHJtL21zbS9tc21fYXRvbWljLmMgfCAxNDUgKysrKysrKysrLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2LmMgICAgfCAgIDEg LQogZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2LmggICAgfCAgIDQgLQogMyBmaWxlcyBjaGFu Z2VkLCAzOSBpbnNlcnRpb25zKCspLCAxMTEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL21zbS9tc21fYXRvbWljLmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9h dG9taWMuYwppbmRleCA5YzZmYTUyYTQwYjcuLmFmODI4ZGY2ZTA2MCAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL21zbS9tc21fYXRvbWljLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9t c21fYXRvbWljLmMKQEAgLTIwLDY2ICsyMCw2IEBACiAjaW5jbHVkZSAibXNtX2dlbS5oIgogI2lu Y2x1ZGUgIm1zbV9mZW5jZS5oIgogCi1zdHJ1Y3QgbXNtX2NvbW1pdCB7Ci0Jc3RydWN0IGRybV9k ZXZpY2UgKmRldjsKLQlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGU7Ci0Jc3RydWN0IHdv cmtfc3RydWN0IHdvcms7Ci0JdWludDMyX3QgY3J0Y19tYXNrOwotfTsKLQotc3RhdGljIHZvaWQg Y29tbWl0X3dvcmtlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspOwotCi0vKiBibG9jayB1bnRp bCBzcGVjaWZpZWQgY3J0Y3MgYXJlIG5vIGxvbmdlciBwZW5kaW5nIHVwZGF0ZSwgYW5kCi0gKiBh dG9taWNhbGx5IG1hcmsgdGhlbSBhcyBwZW5kaW5nIHVwZGF0ZQotICovCi1zdGF0aWMgaW50IHN0 YXJ0X2F0b21pYyhzdHJ1Y3QgbXNtX2RybV9wcml2YXRlICpwcml2LCB1aW50MzJfdCBjcnRjX21h c2spCi17Ci0JaW50IHJldDsKLQotCXNwaW5fbG9jaygmcHJpdi0+cGVuZGluZ19jcnRjc19ldmVu dC5sb2NrKTsKLQlyZXQgPSB3YWl0X2V2ZW50X2ludGVycnVwdGlibGVfbG9ja2VkKHByaXYtPnBl bmRpbmdfY3J0Y3NfZXZlbnQsCi0JCQkhKHByaXYtPnBlbmRpbmdfY3J0Y3MgJiBjcnRjX21hc2sp KTsKLQlpZiAocmV0ID09IDApIHsKLQkJREJHKCJzdGFydDogJTA4eCIsIGNydGNfbWFzayk7Ci0J CXByaXYtPnBlbmRpbmdfY3J0Y3MgfD0gY3J0Y19tYXNrOwotCX0KLQlzcGluX3VubG9jaygmcHJp di0+cGVuZGluZ19jcnRjc19ldmVudC5sb2NrKTsKLQotCXJldHVybiByZXQ7Ci19Ci0KLS8qIGNs ZWFyIHNwZWNpZmllZCBjcnRjcyAobm8gbG9uZ2VyIHBlbmRpbmcgdXBkYXRlKQotICovCi1zdGF0 aWMgdm9pZCBlbmRfYXRvbWljKHN0cnVjdCBtc21fZHJtX3ByaXZhdGUgKnByaXYsIHVpbnQzMl90 IGNydGNfbWFzaykKLXsKLQlzcGluX2xvY2soJnByaXYtPnBlbmRpbmdfY3J0Y3NfZXZlbnQubG9j ayk7Ci0JREJHKCJlbmQ6ICUwOHgiLCBjcnRjX21hc2spOwotCXByaXYtPnBlbmRpbmdfY3J0Y3Mg Jj0gfmNydGNfbWFzazsKLQl3YWtlX3VwX2FsbF9sb2NrZWQoJnByaXYtPnBlbmRpbmdfY3J0Y3Nf ZXZlbnQpOwotCXNwaW5fdW5sb2NrKCZwcml2LT5wZW5kaW5nX2NydGNzX2V2ZW50LmxvY2spOwot fQotCi1zdGF0aWMgc3RydWN0IG1zbV9jb21taXQgKmNvbW1pdF9pbml0KHN0cnVjdCBkcm1fYXRv bWljX3N0YXRlICpzdGF0ZSkKLXsKLQlzdHJ1Y3QgbXNtX2NvbW1pdCAqYyA9IGt6YWxsb2Moc2l6 ZW9mKCpjKSwgR0ZQX0tFUk5FTCk7Ci0KLQlpZiAoIWMpCi0JCXJldHVybiBOVUxMOwotCi0JYy0+ ZGV2ID0gc3RhdGUtPmRldjsKLQljLT5zdGF0ZSA9IHN0YXRlOwotCi0JSU5JVF9XT1JLKCZjLT53 b3JrLCBjb21taXRfd29ya2VyKTsKLQotCXJldHVybiBjOwotfQotCi1zdGF0aWMgdm9pZCBjb21t aXRfZGVzdHJveShzdHJ1Y3QgbXNtX2NvbW1pdCAqYykKLXsKLQllbmRfYXRvbWljKGMtPmRldi0+ ZGV2X3ByaXZhdGUsIGMtPmNydGNfbWFzayk7Ci0Ja2ZyZWUoYyk7Ci19Ci0KIHN0YXRpYyB2b2lk IG1zbV9hdG9taWNfd2FpdF9mb3JfY29tbWl0X2RvbmUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwK IAkJc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKm9sZF9zdGF0ZSkKIHsKQEAgLTEyNiw2ICs2Niwx MCBAQCBzdGF0aWMgdm9pZCBtc21fYXRvbWljX2NvbW1pdF90YWlsKHN0cnVjdCBkcm1fYXRvbWlj X3N0YXRlICpzdGF0ZSkKIAogCW1zbV9hdG9taWNfd2FpdF9mb3JfY29tbWl0X2RvbmUoZGV2LCBz dGF0ZSk7CiAKKwlkcm1fYXRvbWljX2hlbHBlcl9jb21taXRfaHdfZG9uZShzdGF0ZSk7CisKKwlk cm1fYXRvbWljX2hlbHBlcl93YWl0X2Zvcl92YmxhbmtzKGRldiwgc3RhdGUpOworCiAJZHJtX2F0 b21pY19oZWxwZXJfY2xlYW51cF9wbGFuZXMoZGV2LCBzdGF0ZSk7CiAKIAlrbXMtPmZ1bmNzLT5j b21wbGV0ZV9jb21taXQoa21zLCBzdGF0ZSk7CkBAIC0xMzQsMjEgKzc4LDI1IEBAIHN0YXRpYyB2 b2lkIG1zbV9hdG9taWNfY29tbWl0X3RhaWwoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRl KQogLyogVGhlIChwb3RlbnRpYWxseSkgYXN5bmNocm9ub3VzIHBhcnQgb2YgdGhlIGNvbW1pdC4g IEF0IHRoaXMgcG9pbnQKICAqIG5vdGhpbmcgY2FuIGZhaWwgc2hvcnQgb2YgYXJtYWdlZGRvbi4K ICAqLwotc3RhdGljIHZvaWQgY29tcGxldGVfY29tbWl0KHN0cnVjdCBtc21fY29tbWl0ICpjKQor c3RhdGljIHZvaWQgY29tbWl0X3RhaWwoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQog ewotCXN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSA9IGMtPnN0YXRlOwotCXN0cnVjdCBk cm1fZGV2aWNlICpkZXYgPSBzdGF0ZS0+ZGV2OworCWRybV9hdG9taWNfaGVscGVyX3dhaXRfZm9y X2ZlbmNlcyhzdGF0ZS0+ZGV2LCBzdGF0ZSwgZmFsc2UpOwogCi0JZHJtX2F0b21pY19oZWxwZXJf d2FpdF9mb3JfZmVuY2VzKGRldiwgc3RhdGUsIGZhbHNlKTsKKwlkcm1fYXRvbWljX2hlbHBlcl93 YWl0X2Zvcl9kZXBlbmRlbmNpZXMoc3RhdGUpOwogCiAJbXNtX2F0b21pY19jb21taXRfdGFpbChz dGF0ZSk7CiAKKwlkcm1fYXRvbWljX2hlbHBlcl9jb21taXRfY2xlYW51cF9kb25lKHN0YXRlKTsK KwogCWRybV9hdG9taWNfc3RhdGVfcHV0KHN0YXRlKTsKIH0KIAotc3RhdGljIHZvaWQgY29tbWl0 X3dvcmtlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCitzdGF0aWMgdm9pZCBjb21taXRfd29y ayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiB7Ci0JY29tcGxldGVfY29tbWl0KGNvbnRhaW5l cl9vZih3b3JrLCBzdHJ1Y3QgbXNtX2NvbW1pdCwgd29yayksIHRydWUpOworCXN0cnVjdCBkcm1f YXRvbWljX3N0YXRlICpzdGF0ZSA9IGNvbnRhaW5lcl9vZih3b3JrLAorCQkJCQkJICAgICAgc3Ry dWN0IGRybV9hdG9taWNfc3RhdGUsCisJCQkJCQkgICAgICBjb21taXRfd29yayk7CisJY29tbWl0 X3RhaWwoc3RhdGUpOwogfQogCiAvKioKQEAgLTE2NywxNyArMTE1LDEyIEBAIGludCBtc21fYXRv bWljX2NvbW1pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQlzdHJ1Y3QgZHJtX2F0b21pY19z dGF0ZSAqc3RhdGUsIGJvb2wgbm9uYmxvY2spCiB7CiAJc3RydWN0IG1zbV9kcm1fcHJpdmF0ZSAq cHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Ci0Jc3RydWN0IG1zbV9jb21taXQgKmM7CiAJc3RydWN0 IGRybV9jcnRjICpjcnRjOwogCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsKIAlz dHJ1Y3QgZHJtX3BsYW5lICpwbGFuZTsKIAlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpvbGRfcGxh bmVfc3RhdGUsICpuZXdfcGxhbmVfc3RhdGU7CiAJaW50IGksIHJldDsKIAotCXJldCA9IGRybV9h dG9taWNfaGVscGVyX3ByZXBhcmVfcGxhbmVzKGRldiwgc3RhdGUpOwotCWlmIChyZXQpCi0JCXJl dHVybiByZXQ7Ci0KIAkvKgogCSAqIE5vdGUgdGhhdCBwbGFuZS0+YXRvbWljX2FzeW5jX2NoZWNr KCkgc2hvdWxkIGZhaWwgaWYgd2UgbmVlZAogCSAqIHRvIHJlLWFzc2lnbiBod3BpcGUgb3IgYW55 dGhpbmcgdGhhdCB0b3VjaGVzIGdsb2JhbCBhdG9taWMKQEAgLTE4NSw0NCArMTI4LDM4IEBAIGlu dCBtc21fYXRvbWljX2NvbW1pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCSAqIGNhc2VzLgog CSAqLwogCWlmIChzdGF0ZS0+YXN5bmNfdXBkYXRlKSB7CisJCXJldCA9IGRybV9hdG9taWNfaGVs cGVyX3ByZXBhcmVfcGxhbmVzKGRldiwgc3RhdGUpOworCQlpZiAocmV0KQorCQkJcmV0dXJuIHJl dDsKKwogCQlkcm1fYXRvbWljX2hlbHBlcl9hc3luY19jb21taXQoZGV2LCBzdGF0ZSk7CiAJCWRy bV9hdG9taWNfaGVscGVyX2NsZWFudXBfcGxhbmVzKGRldiwgc3RhdGUpOwogCQlyZXR1cm4gMDsK IAl9CiAKLQljID0gY29tbWl0X2luaXQoc3RhdGUpOwotCWlmICghYykgewotCQlyZXQgPSAtRU5P TUVNOwotCQlnb3RvIGVycm9yOwotCX0KKwlyZXQgPSBkcm1fYXRvbWljX2hlbHBlcl9zZXR1cF9j b21taXQoc3RhdGUsIG5vbmJsb2NrKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OwogCi0JLyoK LQkgKiBGaWd1cmUgb3V0IHdoYXQgY3J0Y3Mgd2UgaGF2ZToKLQkgKi8KLQlmb3JfZWFjaF9uZXdf Y3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0YywgY3J0Y19zdGF0ZSwgaSkKLQkJYy0+Y3J0Y19tYXNr IHw9IGRybV9jcnRjX21hc2soY3J0Yyk7CisJSU5JVF9XT1JLKCZzdGF0ZS0+Y29tbWl0X3dvcmss IGNvbW1pdF93b3JrKTsKIAotCS8qCi0JICogRmlndXJlIG91dCB3aGF0IGZlbmNlIHRvIHdhaXQg Zm9yOgotCSAqLwotCWZvcl9lYWNoX29sZG5ld19wbGFuZV9pbl9zdGF0ZShzdGF0ZSwgcGxhbmUs IG9sZF9wbGFuZV9zdGF0ZSwgbmV3X3BsYW5lX3N0YXRlLCBpKSB7Ci0JCWlmICgobmV3X3BsYW5l X3N0YXRlLT5mYiAhPSBvbGRfcGxhbmVfc3RhdGUtPmZiKSAmJiBuZXdfcGxhbmVfc3RhdGUtPmZi KSB7Ci0JCQlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiA9IG1zbV9mcmFtZWJ1ZmZlcl9ibyhu ZXdfcGxhbmVfc3RhdGUtPmZiLCAwKTsKLQkJCXN0cnVjdCBtc21fZ2VtX29iamVjdCAqbXNtX29i aiA9IHRvX21zbV9ibyhvYmopOwotCQkJc3RydWN0IGRtYV9mZW5jZSAqZmVuY2UgPSByZXNlcnZh dGlvbl9vYmplY3RfZ2V0X2V4Y2xfcmN1KG1zbV9vYmotPnJlc3YpOwotCi0JCQlkcm1fYXRvbWlj X3NldF9mZW5jZV9mb3JfcGxhbmUobmV3X3BsYW5lX3N0YXRlLCBmZW5jZSk7Ci0JCX0KKwlyZXQg PSBkcm1fYXRvbWljX2hlbHBlcl9wcmVwYXJlX3BsYW5lcyhkZXYsIHN0YXRlKTsKKwlpZiAocmV0 KQorCQlyZXR1cm4gcmV0OworCisJaWYgKCFub25ibG9jaykgeworCQlyZXQgPSBkcm1fYXRvbWlj X2hlbHBlcl93YWl0X2Zvcl9mZW5jZXMoZGV2LCBzdGF0ZSwgdHJ1ZSk7CisJCWlmIChyZXQpCisJ CQlnb3RvIGVycm9yOwogCX0KIAogCS8qCi0JICogV2FpdCBmb3IgcGVuZGluZyB1cGRhdGVzIG9u IGFueSBvZiB0aGUgc2FtZSBjcnRjJ3MgYW5kIHRoZW4KLQkgKiBtYXJrIG91ciBzZXQgb2YgY3J0 YydzIGFzIGJ1c3k6CisJICogVGhpcyBpcyB0aGUgcG9pbnQgb2Ygbm8gcmV0dXJuIC0gZXZlcnl0 aGluZyBiZWxvdyBuZXZlciBmYWlscyBleGNlcHQKKwkgKiB3aGVuIHRoZSBodyBnb2VzIGJvbmdo aXRzLiBXaGljaCBtZWFucyB3ZSBjYW4gY29tbWl0IHRoZSBuZXcgc3RhdGUgb24KKwkgKiB0aGUg c29mdHdhcmUgc2lkZSBub3cuCisJICoKKwkgKiBzd2FwIGRyaXZlciBwcml2YXRlIHN0YXRlIHdo aWxlIHN0aWxsIGhvbGRpbmcgc3RhdGVfbG9jawogCSAqLwotCXJldCA9IHN0YXJ0X2F0b21pYyhk ZXYtPmRldl9wcml2YXRlLCBjLT5jcnRjX21hc2spOwotCWlmIChyZXQpCi0JCWdvdG8gZXJyX2Zy ZWU7Ci0KIAlCVUdfT04oZHJtX2F0b21pY19oZWxwZXJfc3dhcF9zdGF0ZShzdGF0ZSwgZmFsc2Up IDwgMCk7CiAKIAkvKgpAQCAtMjQyLDE3ICsxNzksMTMgQEAgaW50IG1zbV9hdG9taWNfY29tbWl0 KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJICovCiAKIAlkcm1fYXRvbWljX3N0YXRlX2dldChz dGF0ZSk7Ci0JaWYgKG5vbmJsb2NrKSB7Ci0JCXF1ZXVlX3dvcmsocHJpdi0+YXRvbWljX3dxLCAm Yy0+d29yayk7Ci0JCXJldHVybiAwOwotCX0KLQotCWNvbXBsZXRlX2NvbW1pdChjLCBmYWxzZSk7 CisJaWYgKG5vbmJsb2NrKQorCQlxdWV1ZV93b3JrKHN5c3RlbV91bmJvdW5kX3dxLCAmc3RhdGUt PmNvbW1pdF93b3JrKTsKKwllbHNlCisJCWNvbW1pdF90YWlsKHN0YXRlKTsKIAogCXJldHVybiAw OwogCi1lcnJfZnJlZToKLQlrZnJlZShjKTsKIGVycm9yOgogCWRybV9hdG9taWNfaGVscGVyX2Ns ZWFudXBfcGxhbmVzKGRldiwgc3RhdGUpOwogCXJldHVybiByZXQ7CmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vbXNtL21zbV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5j CmluZGV4IDdlOGY2NDAwNjJlZi4uZDFhNDVhNjhjMjg3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vbXNtL21zbV9kcnYuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9kcnYuYwpA QCAtNDU5LDcgKzQ1OSw2IEBAIHN0YXRpYyBpbnQgbXNtX2RybV9pbml0KHN0cnVjdCBkZXZpY2Ug KmRldiwgc3RydWN0IGRybV9kcml2ZXIgKmRydikKIAogCXByaXYtPndxID0gYWxsb2Nfb3JkZXJl ZF93b3JrcXVldWUoIm1zbSIsIDApOwogCXByaXYtPmF0b21pY193cSA9IGFsbG9jX29yZGVyZWRf d29ya3F1ZXVlKCJtc206YXRvbWljIiwgMCk7Ci0JaW5pdF93YWl0cXVldWVfaGVhZCgmcHJpdi0+ cGVuZGluZ19jcnRjc19ldmVudCk7CiAKIAlJTklUX0xJU1RfSEVBRCgmcHJpdi0+aW5hY3RpdmVf bGlzdCk7CiAJSU5JVF9MSVNUX0hFQUQoJnByaXYtPnZibGFua19jdHJsLmV2ZW50X2xpc3QpOwpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2LmggYi9kcml2ZXJzL2dwdS9k cm0vbXNtL21zbV9kcnYuaAppbmRleCBjNWI4Yzk4OWI4NTkuLmI4OWZhNTE4NmViOCAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJt L21zbS9tc21fZHJ2LmgKQEAgLTExNywxMCArMTE3LDYgQEAgc3RydWN0IG1zbV9kcm1fcHJpdmF0 ZSB7CiAJc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKndxOwogCXN0cnVjdCB3b3JrcXVldWVfc3Ry dWN0ICphdG9taWNfd3E7CiAKLQkvKiBjcnRjcyBwZW5kaW5nIGFzeW5jIGF0b21pYyB1cGRhdGVz OiAqLwotCXVpbnQzMl90IHBlbmRpbmdfY3J0Y3M7Ci0Jd2FpdF9xdWV1ZV9oZWFkX3QgcGVuZGlu Z19jcnRjc19ldmVudDsKLQogCXVuc2lnbmVkIGludCBudW1fcGxhbmVzOwogCXN0cnVjdCBkcm1f cGxhbmUgKnBsYW5lc1sxNl07CiAKLS0gClNlYW4gUGF1bCwgU29mdHdhcmUgRW5naW5lZXIsIEdv b2dsZSAvIENocm9taXVtIE9TCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpGcmVlZHJlbm8gbWFpbGluZyBsaXN0CkZyZWVkcmVub0BsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9m cmVlZHJlbm8K