From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [PATCH i-g-t 4/6] tests/perf_pmu: Add tests for engine queued/runnable/running stats Date: Wed, 6 Jun 2018 13:49:05 +0100 Message-ID: <20180606124907.13139-5-tvrtko.ursulin@linux.intel.com> References: <20180606124907.13139-1-tvrtko.ursulin@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x244.google.com (mail-wm0-x244.google.com [IPv6:2a00:1450:400c:c09::244]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3F9996F00D for ; Wed, 6 Jun 2018 12:49:20 +0000 (UTC) Received: by mail-wm0-x244.google.com with SMTP id x6-v6so11244337wmc.3 for ; Wed, 06 Jun 2018 05:49:20 -0700 (PDT) In-Reply-To: <20180606124907.13139-1-tvrtko.ursulin@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: igt-dev@lists.freedesktop.org Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org RnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KClNpbXBsZSB0 ZXN0cyB0byBjaGVjayByZXBvcnRlZCBxdWV1ZSBkZXB0aHMgYXJlIGNvcnJlY3QuCgp2MjoKICog SW1wcm92ZW1lbnRzIHNpbWlsYXIgdG8gb25lcyBmcm9tIGk5MTVfcXVlcnkuYy4KClNpZ25lZC1v ZmYtYnk6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+Ci0tLQogdGVz dHMvcGVyZl9wbXUuYyB8IDI1OCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDI1OCBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0 IGEvdGVzdHMvcGVyZl9wbXUuYyBiL3Rlc3RzL3BlcmZfcG11LmMKaW5kZXggNDU3MGY5MjZkN2Zl Li43ODhlYTA5Y2M2YTAgMTAwNjQ0Ci0tLSBhL3Rlc3RzL3BlcmZfcG11LmMKKysrIGIvdGVzdHMv cGVyZl9wbXUuYwpAQCAtMTY5LDYgKzE2OSw3IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgZTJyaW5n KGludCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSkKICNk ZWZpbmUgVEVTVF9SVU5USU1FX1BNICg4KQogI2RlZmluZSBGTEFHX0xPTkcgKDE2KQogI2RlZmlu ZSBGTEFHX0hBTkcgKDMyKQorI2RlZmluZSBURVNUX0NPTlRFWFRTICg2NCkKIAogc3RhdGljIGln dF9zcGluX3QgKiBfX3NwaW5fcG9sbChpbnQgZmQsIHVpbnQzMl90IGN0eCwgdW5zaWduZWQgbG9u ZyBmbGFncykKIHsKQEAgLTk1Miw2ICs5NTMsMjIzIEBAIG11bHRpX2NsaWVudChpbnQgZ2VtX2Zk LCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUpCiAJYXNzZXJ0X3dpdGhp bl9lcHNpbG9uKHZhbFsxXSwgcGVyZl9zbGVwdFsxXSwgdG9sZXJhbmNlKTsKIH0KIAorc3RhdGlj IGRvdWJsZSBjYWxjX3F1ZXVlZCh1aW50NjRfdCBkX3ZhbCwgdWludDY0X3QgZF9ucykKK3sKKwly ZXR1cm4gKGRvdWJsZSlkX3ZhbCAqIDFlOSAvIEk5MTVfU0FNUExFX1FVRVVFRF9ESVZJU09SIC8g ZF9uczsKK30KKworc3RhdGljIHZvaWQKK3F1ZXVlZChpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3Qg aW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUsIHVuc2lnbmVkIGludCBmbGFncykKK3sKKwljb25z dCB1bnNpZ25lZCBsb25nIGVuZ2luZSA9IGUycmluZyhnZW1fZmQsIGUpOworCWNvbnN0IHVpbnQz Ml90IGJiZSA9IE1JX0JBVENIX0JVRkZFUl9FTkQ7CisJY29uc3QgdW5zaWduZWQgaW50IG1heF9y cSA9IDEwOworCWRvdWJsZSBxdWV1ZWRbbWF4X3JxICsgMV07CisJdW5zaWduZWQgaW50IG4sIGk7 CisJdWludDY0X3QgdmFsWzJdOworCXVpbnQ2NF90IHRzWzJdOworCXVpbnQzMl90IGJvOworCWlu dCBmZDsKKworCWlndF9yZXF1aXJlX3N3X3N5bmMoKTsKKwlpZiAoZmxhZ3MgJiBURVNUX0NPTlRF WFRTKQorCQlnZW1fcmVxdWlyZV9jb250ZXh0cyhnZW1fZmQpOworCisJbWVtc2V0KHF1ZXVlZCwg MCwgc2l6ZW9mKHF1ZXVlZCkpOworCisJYm8gPSBnZW1fY3JlYXRlKGdlbV9mZCwgNDA5Nik7CisJ Z2VtX3dyaXRlKGdlbV9mZCwgYm8sIDQwOTIsICZiYmUsIHNpemVvZihiYmUpKTsKKworCWZkID0g b3Blbl9wbXUoSTkxNV9QTVVfRU5HSU5FX1FVRVVFRChlLT5jbGFzcywgZS0+aW5zdGFuY2UpKTsK KworCWZvciAobiA9IDA7IG4gPD0gbWF4X3JxOyBuKyspIHsKKwkJSUdUX0NPUktfRkVOQ0UoY29y ayk7CisJCWludCBmZW5jZSA9IC0xOworCisJCWdlbV9xdWllc2NlbnRfZ3B1KGdlbV9mZCk7CisK KwkJaWYgKG4pCisJCQlmZW5jZSA9IGlndF9jb3JrX3BsdWcoJmNvcmssIC0xKTsKKworCQlmb3Ig KGkgPSAwOyBpIDwgbjsgaSsrKSB7CisJCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0 MiBvYmogPSB7IH07CisJCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNidWZmZXIyIGViID0geyB9 OworCisJCQlvYmouaGFuZGxlID0gYm87CisKKwkJCWViLmJ1ZmZlcl9jb3VudCA9IDE7CisJCQll Yi5idWZmZXJzX3B0ciA9IHRvX3VzZXJfcG9pbnRlcigmb2JqKTsKKworCQkJZWIuZmxhZ3MgPSBl bmdpbmUgfCBJOTE1X0VYRUNfRkVOQ0VfSU47CisJCQlpZiAoZmxhZ3MgJiBURVNUX0NPTlRFWFRT KQorCQkJCWViLnJzdmQxID0gZ2VtX2NvbnRleHRfY3JlYXRlKGdlbV9mZCk7CisJCQllYi5yc3Zk MiA9IGZlbmNlOworCisJCQlnZW1fZXhlY2J1ZihnZW1fZmQsICZlYik7CisKKwkJCWlmIChmbGFn cyAmIFRFU1RfQ09OVEVYVFMpCisJCQkJZ2VtX2NvbnRleHRfZGVzdHJveShnZW1fZmQsIGViLnJz dmQxKTsKKwkJfQorCisJCXZhbFswXSA9IF9fcG11X3JlYWRfc2luZ2xlKGZkLCAmdHNbMF0pOwor CQl1c2xlZXAoYmF0Y2hfZHVyYXRpb25fbnMgLyAxMDAwKTsKKwkJdmFsWzFdID0gX19wbXVfcmVh ZF9zaW5nbGUoZmQsICZ0c1sxXSk7CisKKwkJcXVldWVkW25dID0gY2FsY19xdWV1ZWQodmFsWzFd IC0gdmFsWzBdLCB0c1sxXSAtIHRzWzBdKTsKKwkJaWd0X2luZm8oIm49JXUgcXVldWVkPSUuMmZc biIsIG4sIHF1ZXVlZFtuXSk7CisKKwkJaWYgKGZlbmNlID49IDApCisJCQlpZ3RfY29ya191bnBs dWcoJmNvcmspOworCisJCWZvciAoaSA9IDA7IGkgPCBuOyBpKyspCisJCQlnZW1fc3luYyhnZW1f ZmQsIGJvKTsKKwl9CisKKwljbG9zZShmZCk7CisKKwlnZW1fY2xvc2UoZ2VtX2ZkLCBibyk7CisK Kwlmb3IgKGkgPSAwOyBpIDw9IG1heF9ycTsgaSsrKQorCQlhc3NlcnRfd2l0aGluX2Vwc2lsb24o cXVldWVkW2ldLCBpLCB0b2xlcmFuY2UpOworfQorCitzdGF0aWMgdW5zaWduZWQgbG9uZyBfX3F1 ZXJ5X3dhaXQoaWd0X3NwaW5fdCAqc3BpbiwgdW5zaWduZWQgaW50IG4pCit7CisJc3RydWN0IHRp bWVzcGVjIHRzID0geyB9OworCXVuc2lnbmVkIGxvbmcgdDsKKworCWlndF9uc2VjX2VsYXBzZWQo JnRzKTsKKworCWlmIChzcGluLT5ydW5uaW5nKSB7CisJCWlndF9zcGluX2J1c3l3YWl0X3VudGls X3J1bm5pbmcoc3Bpbik7CisJfSBlbHNlIHsKKwkJaWd0X2RlYnVnKCJfX3NwaW5fd2FpdCAtIHVz bGVlcCBtb2RlXG4iKTsKKwkJdXNsZWVwKDUwMGUzKTsgLyogQmV0dGVyIHRoYW4gbm90aGluZyEg Ki8KKwl9CisKKwl0ID0gaWd0X25zZWNfZWxhcHNlZCgmdHMpOworCisJcmV0dXJuIHNwaW4tPnJ1 bm5pbmcgPyB0IDogNTAwZTYgLyBuOworfQorCitzdGF0aWMgdm9pZAorcnVubmFibGUoaW50IGdl bV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplKQoreworCWNvbnN0 IHVuc2lnbmVkIGxvbmcgZW5naW5lID0gZTJyaW5nKGdlbV9mZCwgZSk7CisJYm9vbCBjb250ZXh0 cyA9IGdlbV9oYXNfY29udGV4dHMoZ2VtX2ZkKTsKKwljb25zdCB1bnNpZ25lZCBpbnQgbWF4X3Jx ID0gMTA7CisJaWd0X3NwaW5fdCAqc3BpblttYXhfcnEgKyAxXTsKKwlkb3VibGUgcnVubmFibGVb bWF4X3JxICsgMV07CisJdWludDMyX3QgY3R4W21heF9ycV07CisJdW5zaWduZWQgaW50IG4sIGk7 CisJdWludDY0X3QgdmFsWzJdOworCXVpbnQ2NF90IHRzWzJdOworCWludCBmZDsKKworCW1lbXNl dChydW5uYWJsZSwgMCwgc2l6ZW9mKHJ1bm5hYmxlKSk7CisKKwlpZiAoY29udGV4dHMpIHsKKwkJ Zm9yIChpID0gMDsgaSA8IG1heF9ycTsgaSsrKQorCQkJY3R4W2ldID0gZ2VtX2NvbnRleHRfY3Jl YXRlKGdlbV9mZCk7CisJfQorCisJZmQgPSBvcGVuX3BtdShJOTE1X1BNVV9FTkdJTkVfUlVOTkFC TEUoZS0+Y2xhc3MsIGUtPmluc3RhbmNlKSk7CisKKwlmb3IgKG4gPSAwOyBuIDw9IG1heF9ycTsg bisrKSB7CisJCWdlbV9xdWllc2NlbnRfZ3B1KGdlbV9mZCk7CisKKwkJZm9yIChpID0gMDsgaSA8 IG47IGkrKykgeworCQkJdWludDMyX3QgY3R4XyA9IGNvbnRleHRzID8gY3R4W2ldIDogMDsKKwor CQkJaWYgKGkgPT0gMCkKKwkJCQlzcGluW2ldID0gX19zcGluX3BvbGwoZ2VtX2ZkLCBjdHhfLCBl bmdpbmUpOworCQkJZWxzZQorCQkJCXNwaW5baV0gPSBfX2lndF9zcGluX2JhdGNoX25ldyhnZW1f ZmQsIGN0eF8sCisJCQkJCQkJICAgICAgIGVuZ2luZSwgMCk7CisJCX0KKworCQlpZiAobikKKwkJ CXVzbGVlcChfX3F1ZXJ5X3dhaXQoc3BpblswXSwgbikgKiBuKTsKKworCQl2YWxbMF0gPSBfX3Bt dV9yZWFkX3NpbmdsZShmZCwgJnRzWzBdKTsKKwkJdXNsZWVwKGJhdGNoX2R1cmF0aW9uX25zIC8g MTAwMCk7CisJCXZhbFsxXSA9IF9fcG11X3JlYWRfc2luZ2xlKGZkLCAmdHNbMV0pOworCisJCXJ1 bm5hYmxlW25dID0gY2FsY19xdWV1ZWQodmFsWzFdIC0gdmFsWzBdLCB0c1sxXSAtIHRzWzBdKTsK KwkJaWd0X2luZm8oIm49JXUgcnVubmFibGU9JS4yZlxuIiwgbiwgcnVubmFibGVbbl0pOworCisJ CWZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKKwkJCWVuZF9zcGluKGdlbV9mZCwgc3BpbltpXSwg RkxBR19TWU5DKTsKKwkJCWlndF9zcGluX2JhdGNoX2ZyZWUoZ2VtX2ZkLCBzcGluW2ldKTsKKwkJ fQorCX0KKworCWlmIChjb250ZXh0cykgeworCQlmb3IgKGkgPSAwOyBpIDwgbWF4X3JxOyBpKysp CisJCQlnZW1fY29udGV4dF9kZXN0cm95KGdlbV9mZCwgY3R4W2ldKTsKKwl9CisKKwljbG9zZShm ZCk7CisKKwlhc3NlcnRfd2l0aGluX2Vwc2lsb24ocnVubmFibGVbMF0sIDAsIHRvbGVyYW5jZSk7 CisJaWd0X2Fzc2VydChydW5uYWJsZVttYXhfcnFdID4gMC4wKTsKKworCWlmIChjb250ZXh0cykK KwkJYXNzZXJ0X3dpdGhpbl9lcHNpbG9uKHJ1bm5hYmxlW21heF9ycV0gLSBydW5uYWJsZVttYXhf cnEgLSAxXSwKKwkJCQkgICAgICAxLCB0b2xlcmFuY2UpOworfQorCitzdGF0aWMgdm9pZAorcnVu bmluZyhpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUp Cit7CisJY29uc3QgdW5zaWduZWQgbG9uZyBlbmdpbmUgPSBlMnJpbmcoZ2VtX2ZkLCBlKTsKKwlj b25zdCB1bnNpZ25lZCBpbnQgbWF4X3JxID0gMTA7CisJaWd0X3NwaW5fdCAqc3BpblttYXhfcnEg KyAxXTsKKwlkb3VibGUgcnVubmluZ1ttYXhfcnEgKyAxXTsKKwl1bnNpZ25lZCBpbnQgbiwgaTsK Kwl1aW50NjRfdCB2YWxbMl07CisJdWludDY0X3QgdHNbMl07CisJaW50IGZkOworCisJbWVtc2V0 KHJ1bm5pbmcsIDAsIHNpemVvZihydW5uaW5nKSk7CisJbWVtc2V0KHNwaW4sIDAsIHNpemVvZihz cGluKSk7CisKKwlmZCA9IG9wZW5fcG11KEk5MTVfUE1VX0VOR0lORV9SVU5OSU5HKGUtPmNsYXNz LCBlLT5pbnN0YW5jZSkpOworCisJZm9yIChuID0gMDsgbiA8PSBtYXhfcnE7IG4rKykgeworCQln ZW1fcXVpZXNjZW50X2dwdShnZW1fZmQpOworCisJCWZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsK KwkJCWlmIChpID09IDApCisJCQkJc3BpbltpXSA9IF9fc3Bpbl9wb2xsKGdlbV9mZCwgMCwgZW5n aW5lKTsKKwkJCWVsc2UKKwkJCQlzcGluW2ldID0gX19pZ3Rfc3Bpbl9iYXRjaF9uZXcoZ2VtX2Zk LCAwLAorCQkJCQkJCSAgICAgICBlbmdpbmUsIDApOworCQl9CisKKwkJaWYgKG4pCisJCQl1c2xl ZXAoX19xdWVyeV93YWl0KHNwaW5bMF0sIG4pICogbik7CisKKwkJdmFsWzBdID0gX19wbXVfcmVh ZF9zaW5nbGUoZmQsICZ0c1swXSk7CisJCXVzbGVlcChiYXRjaF9kdXJhdGlvbl9ucyAvIDEwMDAp OworCQl2YWxbMV0gPSBfX3BtdV9yZWFkX3NpbmdsZShmZCwgJnRzWzFdKTsKKworCQlydW5uaW5n W25dID0gY2FsY19xdWV1ZWQodmFsWzFdIC0gdmFsWzBdLCB0c1sxXSAtIHRzWzBdKTsKKwkJaWd0 X2luZm8oIm49JXUgcnVubmluZz0lLjJmXG4iLCBuLCBydW5uaW5nW25dKTsKKworCQlmb3IgKGkg PSAwOyBpIDwgbjsgaSsrKSB7CisJCQllbmRfc3BpbihnZW1fZmQsIHNwaW5baV0sIEZMQUdfU1lO Qyk7CisJCQlpZ3Rfc3Bpbl9iYXRjaF9mcmVlKGdlbV9mZCwgc3BpbltpXSk7CisJCX0KKwl9CisK KwljbG9zZShmZCk7CisKKwlhc3NlcnRfd2l0aGluX2Vwc2lsb24ocnVubmluZ1swXSwgMCwgdG9s ZXJhbmNlKTsKKwlmb3IgKGkgPSAxOyBpIDw9IG1heF9ycTsgaSsrKQorCQlpZ3RfYXNzZXJ0KHJ1 bm5pbmdbaV0gPiAwKTsKK30KKwogLyoqCiAgKiBUZXN0cyB0aGF0IGk5MTUgUE1VIGNvcmVjdGx5 IGVycm9ycyBvdXQgaW4gaW52YWxpZCBpbml0aWFsaXphdGlvbi4KICAqIGk5MTUgUE1VIGlzIHVu Y29yZSBQTVUsIHRodXM6CkBAIC0xNjg0LDYgKzE5MDIsMTUgQEAgaWd0X21haW4KIAkJaWd0X3N1 YnRlc3RfZigiaW5pdC1zZW1hLSVzIiwgZS0+bmFtZSkKIAkJCWluaXQoZmQsIGUsIEk5MTVfU0FN UExFX1NFTUEpOwogCisJCWlndF9zdWJ0ZXN0X2YoImluaXQtcXVldWVkLSVzIiwgZS0+bmFtZSkK KwkJCWluaXQoZmQsIGUsIEk5MTVfU0FNUExFX1FVRVVFRCk7CisKKwkJaWd0X3N1YnRlc3RfZigi aW5pdC1ydW5uYWJsZS0lcyIsIGUtPm5hbWUpCisJCQlpbml0KGZkLCBlLCBJOTE1X1NBTVBMRV9S VU5OQUJMRSk7CisKKwkJaWd0X3N1YnRlc3RfZigiaW5pdC1ydW5uaW5nLSVzIiwgZS0+bmFtZSkK KwkJCWluaXQoZmQsIGUsIEk5MTVfU0FNUExFX1JVTk5JTkcpOworCiAJCWlndF9zdWJ0ZXN0X2dy b3VwIHsKIAkJCWlndF9maXh0dXJlIHsKIAkJCQlnZW1fcmVxdWlyZV9lbmdpbmUoZmQsIGUtPmNs YXNzLCBlLT5pbnN0YW5jZSk7CkBAIC0xNzg5LDYgKzIwMTYsMjcgQEAgaWd0X21haW4KIAogCQkJ aWd0X3N1YnRlc3RfZigiYnVzeS1oYW5nLSVzIiwgZS0+bmFtZSkKIAkJCQlzaW5nbGUoZmQsIGUs IFRFU1RfQlVTWSB8IEZMQUdfSEFORyk7CisKKwkJCS8qKgorCQkJICogVGVzdCB0aGF0IHF1ZXVl ZCBtZXRyaWMgd29ya3MuCisJCQkgKi8KKwkJCWlndF9zdWJ0ZXN0X2YoInF1ZXVlZC0lcyIsIGUt Pm5hbWUpCisJCQkJcXVldWVkKGZkLCBlLCAwKTsKKworCQkJaWd0X3N1YnRlc3RfZigicXVldWVk LWNvbnRleHRzLSVzIiwgZS0+bmFtZSkKKwkJCQlxdWV1ZWQoZmQsIGUsIFRFU1RfQ09OVEVYVFMp OworCisJCQkvKioKKwkJCSAqIFRlc3QgdGhhdCBydW5uYWJsZSBtZXRyaWMgd29ya3MuCisJCQkg Ki8KKwkJCWlndF9zdWJ0ZXN0X2YoInJ1bm5hYmxlLSVzIiwgZS0+bmFtZSkKKwkJCQlydW5uYWJs ZShmZCwgZSk7CisKKwkJCS8qKgorCQkJICogVGVzdCB0aGF0IHJ1bm5pbmcgbWV0cmljIHdvcmtz LgorCQkJICovCisJCQlpZ3Rfc3VidGVzdF9mKCJydW5uaW5nLSVzIiwgZS0+bmFtZSkKKwkJCQly dW5uaW5nKGZkLCBlKTsKIAkJfQogCiAJCS8qKgpAQCAtMTg4MSw2ICsyMTI5LDE2IEBAIGlndF9t YWluCiAJCQkJCSAgICAgIGUtPm5hbWUpCiAJCQkJCXNpbmdsZShyZW5kZXJfZmQsIGUsCiAJCQkJ CSAgICAgICBURVNUX0JVU1kgfCBURVNUX1RSQUlMSU5HX0lETEUpOworCQkJCWlndF9zdWJ0ZXN0 X2YoInJlbmRlci1ub2RlLXF1ZXVlZC0lcyIsIGUtPm5hbWUpCisJCQkJCXF1ZXVlZChyZW5kZXJf ZmQsIGUsIDApOworCQkJCWlndF9zdWJ0ZXN0X2YoInJlbmRlci1ub2RlLXF1ZXVlZC1jb250ZXh0 cy0lcyIsCisJCQkJCSAgICAgIGUtPm5hbWUpCisJCQkJCXF1ZXVlZChyZW5kZXJfZmQsIGUsIFRF U1RfQ09OVEVYVFMpOworCQkJCWlndF9zdWJ0ZXN0X2YoInJlbmRlci1ub2RlLXJ1bm5hYmxlLSVz IiwKKwkJCQkJICAgICAgZS0+bmFtZSkKKwkJCQkJcnVubmFibGUocmVuZGVyX2ZkLCBlKTsKKwkJ CQlpZ3Rfc3VidGVzdF9mKCJyZW5kZXItbm9kZS1ydW5uaW5nLSVzIiwgZS0+bmFtZSkKKwkJCQkJ cnVubmluZyhyZW5kZXJfZmQsIGUpOwogCQkJfQogCQl9CiAKLS0gCjIuMTcuMQoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcg bGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==