From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 3/5] drm/i915/execlists: Direct submit onto idle engines Date: Wed, 9 May 2018 15:27:59 +0100 Message-ID: <20180509142801.28130-3-chris@chris-wilson.co.uk> References: <20180509142801.28130-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from fireflyinternet.com (mail.fireflyinternet.com [109.228.58.192]) by gabe.freedesktop.org (Postfix) with ESMTPS id DFD4D6ED32 for ; Wed, 9 May 2018 14:28:15 +0000 (UTC) In-Reply-To: <20180509142801.28130-1-chris@chris-wilson.co.uk> 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 List-Id: intel-gfx@lists.freedesktop.org QnlwYXNzIHVzaW5nIHRoZSB0YXNrbGV0IHRvIHN1Ym1pdCB0aGUgZmlyc3QgcmVxdWVzdCB0byBI VywgYXMgdGhlCnRhc2tsZXQgbWF5IGJlIGRlZmVycmVkIHVudG8ga3NvZnRpcnFkIGFuZCBhdCBh IG1pbmltdW0gd2lsbCBhZGQgaW4KZXhjZXNzIG9mIDEwdXMgKGFuZCBtYXliZSB0ZW5zIG9mIG1p bGxpc2Vjb25kcykgdG8gb3VyIGV4ZWN1dGlvbgpsYXRlbmN5LiBUaGlzIGxhdGVuY3kgcmVkdWN0 aW9uIGlzIG1vc3Qgbm90YWJsZSB3aGVuIGV4ZWN1dGlvbiBmbG93cwpiZXR3ZWVuIGVuZ2luZXMu Cgp2MjogQmV3YXJlIGhhbmRsaW5nIHByZWVtcHRpb24gY29tcGxldGlvbiBmcm9tIHRoZSBkaXJl Y3Qgc3VibWl0IHBhdGggYXMKd2VsbC4KdjM6IE1ha2UgdGhlIGFidXNlIGNsZWFyIGFuZCB0cmFj ayBvdXIgZXh0cmEgc3RhdGUgaW5zaWRlIGk5MTVfdGFza2xldC4KClN1Z2dlc3RlZC1ieTogVHZy dGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KU2lnbmVkLW9mZi1ieTogQ2hy aXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+CkNjOiBUdnJ0a28gVXJzdWxpbiA8 dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf dGFza2xldC5oICAgICAgICAgfCAyNCArKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9ndWNfc3VibWlzc2lvbi5jIHwgMTAgKystCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9s cmMuYyAgICAgICAgICAgIHwgNzEgKysrKysrKysrKysrKysrKystLS0tCiAzIGZpbGVzIGNoYW5n ZWQsIDg5IGluc2VydGlvbnMoKyksIDE2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfdGFza2xldC5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV90YXNrbGV0LmgKaW5kZXggNDJiMDAyYjg4ZWRiLi45OWUyZmEyMjQxYmEgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdGFza2xldC5oCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfdGFza2xldC5oCkBAIC04LDggKzgsMTEgQEAKICNkZWZpbmUgX0k5MTVfVEFT S0xFVF9IXwogCiAjaW5jbHVkZSA8bGludXgvYXRvbWljLmg+CisjaW5jbHVkZSA8bGludXgvYml0 b3BzLmg+CiAjaW5jbHVkZSA8bGludXgvaW50ZXJydXB0Lmg+CiAKKyNpbmNsdWRlICJpOTE1X2dl bS5oIgorCiAvKioKICAqIHN0cnVjdCBpOTE1X3Rhc2tsZXQgLSB3cmFwcGVyIGFyb3VuZCB0YXNr bGV0X3N0cnVjdAogICoKQEAgLTE5LDYgKzIyLDggQEAKICAqLwogc3RydWN0IGk5MTVfdGFza2xl dCB7CiAJc3RydWN0IHRhc2tsZXRfc3RydWN0IGJhc2U7CisJdW5zaWduZWQgbG9uZyBmbGFnczsK KyNkZWZpbmUgSTkxNV9UQVNLTEVUX0RJUkVDVF9TVUJNSVQgQklUKDApCiB9OwogCiBzdGF0aWMg aW5saW5lIHZvaWQgaTkxNV90YXNrbGV0X2luaXQoc3RydWN0IGk5MTVfdGFza2xldCAqdCwKQEAg LTQzLDYgKzQ4LDE0IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpOTE1X3Rhc2tsZXRfaXNfZW5hYmxl ZChjb25zdCBzdHJ1Y3QgaTkxNV90YXNrbGV0ICp0KQogCXJldHVybiBsaWtlbHkoIWF0b21pY19y ZWFkKCZ0LT5iYXNlLmNvdW50KSk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgYm9vbCBpOTE1X3Rhc2ts ZXRfaXNfZGlyZWN0X3N1Ym1pdChjb25zdCBzdHJ1Y3QgaTkxNV90YXNrbGV0ICp0KQoreworCS8q IE9ubHkgbGVnYWwgdG8gYmUgY2hlY2tlZCBmcm9tIGluc2lkZSB0aGUgdGFza2xldC4gKi8KKwlH RU1fQlVHX09OKCFpOTE1X3Rhc2tsZXRfaXNfcnVubmluZyh0KSk7CisKKwlyZXR1cm4gdC0+Zmxh Z3MgJiBJOTE1X1RBU0tMRVRfRElSRUNUX1NVQk1JVDsKK30KKwogc3RhdGljIGlubGluZSB2b2lk IGk5MTVfdGFza2xldF9zY2hlZHVsZShzdHJ1Y3QgaTkxNV90YXNrbGV0ICp0KQogewogCXRhc2ts ZXRfaGlfc2NoZWR1bGUoJnQtPmJhc2UpOwpAQCAtNzUsNCArODgsMTUgQEAgc3RhdGljIGlubGlu ZSB2b2lkIGk5MTVfdGFza2xldF9zZXRfZnVuYyhzdHJ1Y3QgaTkxNV90YXNrbGV0ICp0LAogCWk5 MTVfdGFza2xldF91bmxvY2sodCk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgdm9pZCBfX2k5MTVfdGFz a2xldF9ydW4oY29uc3Qgc3RydWN0IGk5MTVfdGFza2xldCAqdCkKK3sKKwl0LT5iYXNlLmZ1bmMo dC0+YmFzZS5kYXRhKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGk5MTVfdGFza2xldF9ydW4o Y29uc3Qgc3RydWN0IGk5MTVfdGFza2xldCAqdCkKK3sKKwlHRU1fQlVHX09OKCFpOTE1X3Rhc2ts ZXRfaXNfcnVubmluZyh0KSk7CisJX19pOTE1X3Rhc2tsZXRfcnVuKHQpOworfQorCiAjZW5kaWYg LyogX0k5MTVfVEFTS0xFVF9IXyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZ3VjX3N1Ym1pc3Npb24uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19z dWJtaXNzaW9uLmMKaW5kZXggYTdhZmM5NzZjM2I5Li5mMmRlZDE3OTY1MjMgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19zdWJtaXNzaW9uLmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uYwpAQCAtNzU0LDE0ICs3NTQsMTgg QEAgc3RhdGljIGJvb2wgX19ndWNfZGVxdWV1ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmUpCiAKIHN0YXRpYyB2b2lkIGd1Y19kZXF1ZXVlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSkKIHsKLQl1bnNpZ25lZCBsb25nIGZsYWdzOworCXVuc2lnbmVkIGxvbmcgdW5pbml0aWFs aXplZF92YXIoZmxhZ3MpOwogCWJvb2wgc3VibWl0OwogCiAJbG9jYWxfaXJxX3NhdmUoZmxhZ3Mp OwogCi0Jc3Bpbl9sb2NrKCZlbmdpbmUtPnRpbWVsaW5lLmxvY2spOworCWlmICghaTkxNV90YXNr bGV0X2lzX2RpcmVjdF9zdWJtaXQoJmVuZ2luZS0+ZXhlY2xpc3RzLnRhc2tsZXQpKQorCQlzcGlu X2xvY2soJmVuZ2luZS0+dGltZWxpbmUubG9jayk7CisKIAlzdWJtaXQgPSBfX2d1Y19kZXF1ZXVl KGVuZ2luZSk7Ci0Jc3Bpbl91bmxvY2soJmVuZ2luZS0+dGltZWxpbmUubG9jayk7CisKKwlpZiAo IWk5MTVfdGFza2xldF9pc19kaXJlY3Rfc3VibWl0KCZlbmdpbmUtPmV4ZWNsaXN0cy50YXNrbGV0 KSkKKwkJc3Bpbl91bmxvY2soJmVuZ2luZS0+dGltZWxpbmUubG9jayk7CiAKIAlpZiAoc3VibWl0 KQogCQlndWNfc3VibWl0KGVuZ2luZSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9scmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCmluZGV4IDUz OWZhMDNkNzYwMC4uMDlmZGVkOWQ0MDlmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9scmMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwpAQCAt MzU2LDEzICszNTYsMTUgQEAgZXhlY2xpc3RzX3Vud2luZF9pbmNvbXBsZXRlX3JlcXVlc3RzKHN0 cnVjdCBpbnRlbF9lbmdpbmVfZXhlY2xpc3RzICpleGVjbGlzdHMpCiB7CiAJc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lID0KIAkJY29udGFpbmVyX29mKGV4ZWNsaXN0cywgdHlwZW9mKCpl bmdpbmUpLCBleGVjbGlzdHMpOwotCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisJdW5zaWduZWQgbG9u ZyB1bmluaXRpYWxpemVkX3ZhcihmbGFncyk7CiAKLQlzcGluX2xvY2tfaXJxc2F2ZSgmZW5naW5l LT50aW1lbGluZS5sb2NrLCBmbGFncyk7CisJaWYgKCFpOTE1X3Rhc2tsZXRfaXNfZGlyZWN0X3N1 Ym1pdCgmZXhlY2xpc3RzLT50YXNrbGV0KSkKKwkJc3Bpbl9sb2NrX2lycXNhdmUoJmVuZ2luZS0+ dGltZWxpbmUubG9jaywgZmxhZ3MpOwogCiAJX191bndpbmRfaW5jb21wbGV0ZV9yZXF1ZXN0cyhl bmdpbmUpOwogCi0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZW5naW5lLT50aW1lbGluZS5sb2Nr LCBmbGFncyk7CisJaWYgKCFpOTE1X3Rhc2tsZXRfaXNfZGlyZWN0X3N1Ym1pdCgmZXhlY2xpc3Rz LT50YXNrbGV0KSkKKwkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZW5naW5lLT50aW1lbGluZS5s b2NrLCBmbGFncyk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgdm9pZApAQCAtNjAxLDYgKzYwMyw4IEBA IHN0YXRpYyBib29sIF9fZXhlY2xpc3RzX2RlcXVldWUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lKQogCQkgKi8KIAkJR0VNX0JVR19PTighZXhlY2xpc3RzX2lzX2FjdGl2ZShleGVjbGlz dHMsCiAJCQkJCQlFWEVDTElTVFNfQUNUSVZFX1VTRVIpKTsKKwkJR0VNX0JVR19PTihleGVjbGlz dHNfaXNfYWN0aXZlKGV4ZWNsaXN0cywKKwkJCQkJICAgICAgIEVYRUNMSVNUU19BQ1RJVkVfUFJF RU1QVCkpOwogCQlHRU1fQlVHX09OKCFwb3J0X2NvdW50KCZwb3J0WzBdKSk7CiAJCWlmIChwb3J0 X2NvdW50KCZwb3J0WzBdKSA+IDEpCiAJCQlyZXR1cm4gZmFsc2U7CkBAIC03NTcsMTIgKzc2MSwx NiBAQCBzdGF0aWMgYm9vbCBfX2V4ZWNsaXN0c19kZXF1ZXVlKHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSkKIHN0YXRpYyB2b2lkIGV4ZWNsaXN0c19kZXF1ZXVlKHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZSkKIHsKIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2V4ZWNsaXN0cyAqIGNv bnN0IGV4ZWNsaXN0cyA9ICZlbmdpbmUtPmV4ZWNsaXN0czsKLQl1bnNpZ25lZCBsb25nIGZsYWdz OworCXVuc2lnbmVkIGxvbmcgdW5pbml0aWFsaXplZF92YXIoZmxhZ3MpOwogCWJvb2wgc3VibWl0 OwogCi0Jc3Bpbl9sb2NrX2lycXNhdmUoJmVuZ2luZS0+dGltZWxpbmUubG9jaywgZmxhZ3MpOwor CWlmICghaTkxNV90YXNrbGV0X2lzX2RpcmVjdF9zdWJtaXQoJmV4ZWNsaXN0cy0+dGFza2xldCkp CisJCXNwaW5fbG9ja19pcnFzYXZlKCZlbmdpbmUtPnRpbWVsaW5lLmxvY2ssIGZsYWdzKTsKKwog CXN1Ym1pdCA9IF9fZXhlY2xpc3RzX2RlcXVldWUoZW5naW5lKTsKLQlzcGluX3VubG9ja19pcnFy ZXN0b3JlKCZlbmdpbmUtPnRpbWVsaW5lLmxvY2ssIGZsYWdzKTsKKworCWlmICghaTkxNV90YXNr bGV0X2lzX2RpcmVjdF9zdWJtaXQoJmV4ZWNsaXN0cy0+dGFza2xldCkpCisJCXNwaW5fdW5sb2Nr X2lycXJlc3RvcmUoJmVuZ2luZS0+dGltZWxpbmUubG9jaywgZmxhZ3MpOwogCiAJaWYgKHN1Ym1p dCkKIAkJZXhlY2xpc3RzX3N1Ym1pdF9wb3J0cyhlbmdpbmUpOwpAQCAtMTE2MiwxNiArMTE3MCw1 MiBAQCBzdGF0aWMgdm9pZCBxdWV1ZV9yZXF1ZXN0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSwKIAkJICAgICAgJmxvb2t1cF9wcmlvbGlzdChlbmdpbmUsIHByaW8pLT5yZXF1ZXN0cyk7 CiB9CiAKLXN0YXRpYyB2b2lkIF9fc3VibWl0X3F1ZXVlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSwgaW50IHByaW8pCitzdGF0aWMgdm9pZCBfX3dha2V1cF9xdWV1ZShzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUsIGludCBwcmlvKQogewogCWVuZ2luZS0+ZXhlY2xpc3RzLnF1 ZXVlX3ByaW9yaXR5ID0gcHJpbzsKK30KKworc3RhdGljIHZvaWQgX19zY2hlZHVsZV9xdWV1ZShz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCit7CiAJaTkxNV90YXNrbGV0X3NjaGVkdWxl KCZlbmdpbmUtPmV4ZWNsaXN0cy50YXNrbGV0KTsKIH0KIAorc3RhdGljIGJvb2wgX19kaXJlY3Rf c3VibWl0KHN0cnVjdCBpbnRlbF9lbmdpbmVfZXhlY2xpc3RzICpjb25zdCBleGVjbGlzdHMpCit7 CisJc3RydWN0IGk5MTVfdGFza2xldCAqIGNvbnN0IHQgPSAmZXhlY2xpc3RzLT50YXNrbGV0Owor CisJaWYgKCF0YXNrbGV0X3RyeWxvY2soJnQtPmJhc2UpKQorCQlyZXR1cm4gZmFsc2U7CisKKwl0 LT5mbGFncyB8PSBJOTE1X1RBU0tMRVRfRElSRUNUX1NVQk1JVDsKKwlpOTE1X3Rhc2tsZXRfcnVu KHQpOworCXQtPmZsYWdzICY9IH5JOTE1X1RBU0tMRVRfRElSRUNUX1NVQk1JVDsKKworCXRhc2ts ZXRfdW5sb2NrKCZ0LT5iYXNlKTsKKwlyZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIHZvaWQgX19z dWJtaXRfcXVldWUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQoreworCXN0cnVjdCBp bnRlbF9lbmdpbmVfZXhlY2xpc3RzICogY29uc3QgZXhlY2xpc3RzID0gJmVuZ2luZS0+ZXhlY2xp c3RzOworCisJR0VNX0JVR19PTighZW5naW5lLT5pOTE1LT5ndC5hd2FrZSk7CisKKwkvKiBJZiBp bnNpZGUgR1BVIHJlc2V0LCB0aGUgdGFza2xldCB3aWxsIGJlIHF1ZXVlZCBsYXRlci4gKi8KKwlp ZiAoIWk5MTVfdGFza2xldF9pc19lbmFibGVkKCZleGVjbGlzdHMtPnRhc2tsZXQpKQorCQlyZXR1 cm47CisKKwkvKiBEaXJlY3RseSBzdWJtaXQgdGhlIGZpcnN0IHJlcXVlc3QgdG8gcmVkdWNlIHRo ZSBpbml0aWFsIGxhdGVuY3kgKi8KKwlpZiAocG9ydF9pc3NldChleGVjbGlzdHMtPnBvcnQpIHx8 ICFfX2RpcmVjdF9zdWJtaXQoZXhlY2xpc3RzKSkKKwkJX19zY2hlZHVsZV9xdWV1ZShlbmdpbmUp OworfQorCiBzdGF0aWMgdm9pZCBzdWJtaXRfcXVldWUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lLCBpbnQgcHJpbykKIHsKLQlpZiAocHJpbyA+IGVuZ2luZS0+ZXhlY2xpc3RzLnF1ZXVl X3ByaW9yaXR5KQotCQlfX3N1Ym1pdF9xdWV1ZShlbmdpbmUsIHByaW8pOworCWlmIChwcmlvID4g ZW5naW5lLT5leGVjbGlzdHMucXVldWVfcHJpb3JpdHkpIHsKKwkJX193YWtldXBfcXVldWUoZW5n aW5lLCBwcmlvKTsKKwkJX19zdWJtaXRfcXVldWUoZW5naW5lKTsKKwl9CiB9CiAKIHN0YXRpYyB2 b2lkIGV4ZWNsaXN0c19zdWJtaXRfcmVxdWVzdChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpyZXF1ZXN0 KQpAQCAtMTE4MywxMCArMTIyNyw5IEBAIHN0YXRpYyB2b2lkIGV4ZWNsaXN0c19zdWJtaXRfcmVx dWVzdChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpyZXF1ZXN0KQogCXNwaW5fbG9ja19pcnFzYXZlKCZl bmdpbmUtPnRpbWVsaW5lLmxvY2ssIGZsYWdzKTsKIAogCXF1ZXVlX3JlcXVlc3QoZW5naW5lLCAm cmVxdWVzdC0+c2NoZWQsIHJxX3ByaW8ocmVxdWVzdCkpOwotCXN1Ym1pdF9xdWV1ZShlbmdpbmUs IHJxX3ByaW8ocmVxdWVzdCkpOwotCiAJR0VNX0JVR19PTighZW5naW5lLT5leGVjbGlzdHMuZmly c3QpOwogCUdFTV9CVUdfT04obGlzdF9lbXB0eSgmcmVxdWVzdC0+c2NoZWQubGluaykpOworCXN1 Ym1pdF9xdWV1ZShlbmdpbmUsIHJxX3ByaW8ocmVxdWVzdCkpOwogCiAJc3Bpbl91bmxvY2tfaXJx cmVzdG9yZSgmZW5naW5lLT50aW1lbGluZS5sb2NrLCBmbGFncyk7CiB9CkBAIC0xMzE0LDggKzEz NTcsMTAgQEAgc3RhdGljIHZvaWQgZXhlY2xpc3RzX3NjaGVkdWxlKHN0cnVjdCBpOTE1X3JlcXVl c3QgKnJlcXVlc3QsCiAJCX0KIAogCQlpZiAocHJpbyA+IGVuZ2luZS0+ZXhlY2xpc3RzLnF1ZXVl X3ByaW9yaXR5ICYmCi0JCSAgICBpOTE1X3N3X2ZlbmNlX2RvbmUoJnNjaGVkX3RvX3JlcXVlc3Qo bm9kZSktPnN1Ym1pdCkpCi0JCQlfX3N1Ym1pdF9xdWV1ZShlbmdpbmUsIHByaW8pOworCQkgICAg aTkxNV9zd19mZW5jZV9kb25lKCZzY2hlZF90b19yZXF1ZXN0KG5vZGUpLT5zdWJtaXQpKSB7CisJ CQlfX3dha2V1cF9xdWV1ZShlbmdpbmUsIHByaW8pOworCQkJX19zY2hlZHVsZV9xdWV1ZShlbmdp bmUpOworCQl9CiAJfQogCiAJc3Bpbl91bmxvY2tfaXJxKCZlbmdpbmUtPnRpbWVsaW5lLmxvY2sp OwotLSAKMi4xNy4wCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1n ZngK