From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Tvrtko Ursulin Date: Mon, 20 May 2019 15:47:16 +0100 Message-Id: <20190520144739.13111-5-tvrtko.ursulin@linux.intel.com> In-Reply-To: <20190520144739.13111-1-tvrtko.ursulin@linux.intel.com> References: <20190520144739.13111-1-tvrtko.ursulin@linux.intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t 04/27] trace.pl: Virtual engine support List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: igt-dev@lists.freedesktop.org Cc: Intel-gfx@lists.freedesktop.org, Tvrtko Ursulin List-ID: RnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KCkFkZCB2aXJ0 dWFsL3F1ZXVlIHRpbWVsaW5lcyB0byBib3RoIHN0ZG91dCBhbmQgSFRNTCBvdXRwdXQuCgpBIG5l dyB0aW1lbGluZSBpcyBjcmVhdGVkIGZvciBlYWNoIHF1ZXVlL3ZpcnR1YWwgZW5naW5lIHRvIGRp c3BsYXkKYXNzb2NpYXRlZCByZXF1ZXN0cyBpbiBxdWV1ZWQgYW5kIHJ1bm5hYmxlIHN0YXRlcy4g T25jZSByZXF1ZXN0cyBhcmUKc3VibWl0dGVkIHRvIGEgcmVhbCBlbmdpbmUgZm9yIGV4ZWN1dGlu ZyB0aGV5IHNob3cgdXAgb24gdGhlIHBoeXNpY2FsCmVuZ2luZSB0aW1lbGluZS4KClNpZ25lZC1v ZmYtYnk6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+CkNjOiBDaHJp cyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KUmV2aWV3ZWQtYnk6IENocmlzIFdp bHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgotLS0KIHNjcmlwdHMvdHJhY2UucGwgfCAy MzggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0KIDEgZmls ZSBjaGFuZ2VkLCAyMDggaW5zZXJ0aW9ucygrKSwgMzAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvc2NyaXB0cy90cmFjZS5wbCBiL3NjcmlwdHMvdHJhY2UucGwKaW5kZXggYWMxNDFhNTE0MDU1 Li4xZjQ5NTNiMDJlZjYgMTAwNzU1Ci0tLSBhL3NjcmlwdHMvdHJhY2UucGwKKysrIGIvc2NyaXB0 cy90cmFjZS5wbApAQCAtMjcsMTEgKzI3LDE2IEBAIHVzZSB3YXJuaW5nczsKIHVzZSA1LjAxMDsK IAogbXkgJGdpZCA9IDA7Ci1teSAoJWRiLCAlcXVldWUsICVzdWJtaXQsICVub3RpZnksICVyaW5n cywgJWN0eGRiLCAlcmluZ21hcCwgJXJlcXdhaXQsCitteSAoJWRiLCAldmRiLCAlcXVldWUsICVz dWJtaXQsICVub3RpZnksICVyaW5ncywgJWN0eGRiLCAlcmluZ21hcCwgJXJlcXdhaXQsCiAgICAg JWN0eHRpbWVsaW5lcyk7CitteSAoJWNpZHMsICVjdHhtYXApOworbXkgJGNpZCA9IDA7CitteSAl cXVldWVzOwogbXkgQGZyZXFzOwogCi1teSAkbWF4X2l0ZW1zID0gMzAwMDsKK3VzZSBjb25zdGFu dCBWRU5HID0+ICcyNTU6MjU0JzsKKworbXkgJG1heF9yZXF1ZXN0cyA9IDEwMDA7CiBteSAkd2lk dGhfdXMgPSAzMjAwMDsKIG15ICRjb3JyZWN0X2R1cmF0aW9ucyA9IDA7CiBteSAlaWdub3JlX3Jp bmc7CkBAIC0xODEsMjEgKzE4NiwyMSBAQCBzdWIgYXJnX3RyYWNlCiAJcmV0dXJuIEBfOwogfQog Ci1zdWIgYXJnX21heF9pdGVtcworc3ViIGFyZ19tYXhfcmVxdWVzdHMKIHsKIAlteSAkdmFsOwog CiAJcmV0dXJuIHVubGVzcyBzY2FsYXIoQF8pOwogCi0JaWYgKCRfWzBdIGVxICctLW1heC1pdGVt cycgb3IgJF9bMF0gZXEgJy1tJykgeworCWlmICgkX1swXSBlcSAnLS1tYXgtcmVxdWVzdHMnIG9y ICRfWzBdIGVxICctbScpIHsKIAkJc2hpZnQgQF87CiAJCSR2YWwgPSBzaGlmdCBAXzsKLQl9IGVs c2lmICgkX1swXSA9fiAvLS1tYXgtaXRlbXM9KFxkKykvKSB7CisJfSBlbHNpZiAoJF9bMF0gPX4g Ly0tbWF4LXJlcXVlc3RzPShcZCspLykgewogCQlzaGlmdCBAXzsKIAkJJHZhbCA9ICQxOwogCX0K IAotCSRtYXhfaXRlbXMgPSBpbnQoJHZhbCkgaWYgZGVmaW5lZCAkdmFsOworCSRtYXhfcmVxdWVz dHMgPSBpbnQoJHZhbCkgaWYgZGVmaW5lZCAkdmFsOwogCiAJcmV0dXJuIEBfOwogfQpAQCAtMjky LDcgKzI5Nyw3IEBAIHdoaWxlIChAYXJncykgewogCUBhcmdzID0gYXJnX2F2Z19kZWxheV9zdGF0 cyhAYXJncyk7CiAJQGFyZ3MgPSBhcmdfZ3B1X3RpbWVsaW5lKEBhcmdzKTsKIAlAYXJncyA9IGFy Z190cmFjZShAYXJncyk7Ci0JQGFyZ3MgPSBhcmdfbWF4X2l0ZW1zKEBhcmdzKTsKKwlAYXJncyA9 IGFyZ19tYXhfcmVxdWVzdHMoQGFyZ3MpOwogCUBhcmdzID0gYXJnX3pvb21fd2lkdGgoQGFyZ3Mp OwogCUBhcmdzID0gYXJnX3NwbGl0X3JlcXVlc3RzKEBhcmdzKTsKIAlAYXJncyA9IGFyZ19pZ25v cmVfcmluZyhAYXJncyk7CkBAIC0zMzEsNiArMzM2LDEzIEBAIHN1YiBzYW5pdGl6ZV9jdHgKIAl9 CiB9CiAKK3N1YiBpc192ZW5nCit7CisJbXkgKCRjbGFzcywgJGluc3RhbmNlKSA9IHNwbGl0ICc6 Jywgc2hpZnQ7CisKKwlyZXR1cm4gJGluc3RhbmNlIGVxICcyNTQnOworfQorCiAjIE1haW4gaW5w dXQgbG9vcCAtIHBhcnNlIGxpbmVzIGFuZCBidWlsZCB0aGUgaW50ZXJuYWwgcmVwcmVzZW50YXRp b24gb2YgdGhlCiAjIHRyYWNlIHVzaW5nIGEgaGFzaCBvZiByZXF1ZXN0cyBhbmQgc29tZSBhdXhp bGxpYXJ5IGRhdGEgc3RydWN0dXJlcy4KIG15ICRwcmV2X2ZyZXEgPSAwOwpAQCAtMzczLDYgKzM4 NSw3IEBAIHdoaWxlICg8PikgewogCQkJJGN0eCA9ICR0cHsnY3R4J307CiAJCQkkb3JpZ19jdHgg PSAkY3R4OwogCQkJJGN0eCA9IHNhbml0aXplX2N0eCgkY3R4LCAkcmluZyk7CisJCQkkcmluZyA9 IFZFTkcgaWYgaXNfdmVuZygkcmluZyk7CiAJCQkka2V5ID0gZGJfa2V5KCRyaW5nLCAkY3R4LCAk c2Vxbm8pOwogCQl9CiAJfQpAQCAtMzgxLDYgKzM5NCw3IEBAIHdoaWxlICg8PikgewogCQlteSAl cnc7CiAKIAkJbmV4dCBpZiBleGlzdHMgJHJlcXdhaXR7JGtleX07CisJCWRpZSBpZiAkcmluZyBl cSBWRU5HIGFuZCBub3QgZXhpc3RzICRxdWV1ZXN7JGN0eH07CiAKIAkJJHJ3eydrZXknfSA9ICRr ZXk7CiAJCSRyd3sncmluZyd9ID0gJHJpbmc7CkBAIC0zODksOSArNDAzLDE5IEBAIHdoaWxlICg8 PikgewogCQkkcnd7J3N0YXJ0J30gPSAkdGltZTsKIAkJJHJlcXdhaXR7JGtleX0gPSBcJXJ3Owog CX0gZWxzaWYgKCR0cF9uYW1lIGVxICdpOTE1Omk5MTVfcmVxdWVzdF93YWl0X2VuZDonKSB7Ci0J CW5leHQgdW5sZXNzIGV4aXN0cyAkcmVxd2FpdHska2V5fTsKKwkJZGllIGlmICRyaW5nIGVxIFZF TkcgYW5kIG5vdCBleGlzdHMgJHF1ZXVlc3skY3R4fTsKIAotCQkkcmVxd2FpdHska2V5fS0+eydl bmQnfSA9ICR0aW1lOworCQlpZiAoZXhpc3RzICRyZXF3YWl0eyRrZXl9KSB7CisJCQkkcmVxd2Fp dHska2V5fS0+eydlbmQnfSA9ICR0aW1lOworCQl9IGVsc2UgeyAjIFZpcnR1YWwgZW5naW5lCisJ CQlteSAkdmtleSA9IGRiX2tleShWRU5HLCAkY3R4LCAkc2Vxbm8pOworCisJCQlkaWUgdW5sZXNz IGV4aXN0cyAkcmVxd2FpdHskdmtleX07CisKKwkJCSMgSWYgdGhlIHdhaXQgc3RhcnRlZCBvbiB0 aGUgdmlydHVhbCBlbmdpbmUsIGF0dHJpYnV0ZQorCQkJIyBpdCB0byBpdCBjb21wbGV0ZWx5Lgor CQkJJHJlcXdhaXR7JHZrZXl9LT57J2VuZCd9ID0gJHRpbWU7CisJCX0KIAl9IGVsc2lmICgkdHBf bmFtZSBlcSAnaTkxNTppOTE1X3JlcXVlc3RfYWRkOicpIHsKIAkJaWYgKGV4aXN0cyAkcXVldWV7 JGtleX0pIHsKIAkJCSRjdHhkYnskb3JpZ19jdHh9Kys7CkBAIC00MDIsMTkgKzQyNiw1MiBAQCB3 aGlsZSAoPD4pIHsKIAkJfQogCiAJCSRxdWV1ZXska2V5fSA9ICR0aW1lOworCQlpZiAoJHJpbmcg ZXEgVkVORyBhbmQgbm90IGV4aXN0cyAkcXVldWVzeyRjdHh9KSB7CisJCQkkcXVldWVzeyRjdHh9 ID0gMSA7CisJCQkkY2lkc3skY3R4fSA9ICRjaWQrKzsKKwkJCSRjdHhtYXB7JGNpZHN7JGN0eH19 ID0gJGN0eDsKKwkJfQogCX0gZWxzaWYgKCR0cF9uYW1lIGVxICdpOTE1Omk5MTVfcmVxdWVzdF9z dWJtaXQ6JykgewogCQlkaWUgaWYgZXhpc3RzICRzdWJtaXR7JGtleX07CiAJCWRpZSB1bmxlc3Mg ZXhpc3RzICRxdWV1ZXska2V5fTsKKwkJZGllIGlmICRyaW5nIGVxIFZFTkcgYW5kIG5vdCBleGlz dHMgJHF1ZXVlc3skY3R4fTsKIAogCQkkc3VibWl0eyRrZXl9ID0gJHRpbWU7CiAJfSBlbHNpZiAo JHRwX25hbWUgZXEgJ2k5MTU6aTkxNV9yZXF1ZXN0X2luOicpIHsKKwkJbXkgKCRxLCAkcyk7CiAJ CW15ICVyZXE7CiAKIAkJIyBwcmVlbXB0aW9uCiAJCWRlbGV0ZSAkZGJ7JGtleX0gaWYgZXhpc3Rz ICRkYnska2V5fTsKIAotCQlkaWUgdW5sZXNzIGV4aXN0cyAkcXVldWV7JGtleX07Ci0JCWRpZSB1 bmxlc3MgZXhpc3RzICRzdWJtaXR7JGtleX07CisJCXVubGVzcyAoZXhpc3RzICRxdWV1ZXska2V5 fSkgeworCQkJIyBWaXJ0dWFsIGVuZ2luZQorCQkJbXkgJHZrZXkgPSBkYl9rZXkoVkVORywgJGN0 eCwgJHNlcW5vKTsKKwkJCW15ICVyZXE7CisKKwkJCWRpZSB1bmxlc3MgZXhpc3RzICRxdWV1ZXN7 JGN0eH07CisJCQlkaWUgdW5sZXNzIGV4aXN0cyAkcXVldWV7JHZrZXl9OworCQkJZGllIHVubGVz cyBleGlzdHMgJHN1Ym1pdHskdmtleX07CisKKwkJCSMgQ3JlYXRlIHNlcGFyYXRlIHJlcXVlc3Qg cmVjb3JkIG9uIHRoZSBxdWV1ZSB0aW1lbGluZQorCQkJJHEgPSAkcXVldWV7JHZrZXl9OworCQkJ JHMgPSAkc3VibWl0eyR2a2V5fTsKKwkJCSRyZXF7J3F1ZXVlJ30gPSAkcTsKKwkJCSRyZXF7J3N1 Ym1pdCd9ID0gJHM7CisJCQkkcmVxeydzdGFydCd9ID0gJHRpbWU7CisJCQkkcmVxeydlbmQnfSA9 ICR0aW1lOworCQkJJHJlcXsncmluZyd9ID0gVkVORzsKKwkJCSRyZXF7J3NlcW5vJ30gPSAkc2Vx bm87CisJCQkkcmVxeydjdHgnfSA9ICRjdHg7CisJCQkkcmVxeyduYW1lJ30gPSAkY3R4IC4gJy8n IC4gJHNlcW5vOworCQkJJHJlcXsnZ2xvYmFsJ30gPSAkdHB7J2dsb2JhbCd9OworCQkJJHJlcXsn cG9ydCd9ID0gJHRweydwb3J0J307CisKKwkJCSR2ZGJ7JHZrZXl9ID0gXCVyZXE7CisJCX0gZWxz ZSB7CisJCQkkcSA9ICRxdWV1ZXska2V5fTsKKwkJCSRzID0gJHN1Ym1pdHska2V5fTsKKwkJfQog CiAJCSRyZXF7J3N0YXJ0J30gPSAkdGltZTsKIAkJJHJlcXsncmluZyd9ID0gJHJpbmc7CkBAIC00 MjQsOCArNDgxLDkgQEAgd2hpbGUgKDw+KSB7CiAJCSRyZXF7J25hbWUnfSA9ICRjdHggLiAnLycg LiAkc2Vxbm87CiAJCSRyZXF7J2dsb2JhbCd9ID0gJHRweydnbG9iYWwnfTsKIAkJJHJlcXsncG9y dCd9ID0gJHRweydwb3J0J307Ci0JCSRyZXF7J3F1ZXVlJ30gPSAkcXVldWV7JGtleX07Ci0JCSRy ZXF7J3N1Ym1pdCd9ID0gJHN1Ym1pdHska2V5fTsKKwkJJHJlcXsncXVldWUnfSA9ICRxOworCQkk cmVxeydzdWJtaXQnfSA9ICRzOworCQkkcmVxeyd2aXJ0dWFsJ30gPSAxIGlmIGV4aXN0cyAkcXVl dWVzeyRjdHh9OwogCQkkcmluZ3N7JHJpbmd9ID0gJGdpZCsrIHVubGVzcyBleGlzdHMgJHJpbmdz eyRyaW5nfTsKIAkJJHJpbmdtYXB7JHJpbmdzeyRyaW5nfX0gPSAkcmluZzsKIAkJJGRieyRrZXl9 ID0gXCVyZXE7CkBAIC03MjAsOCArNzc4LDEwIEBAIGZvcmVhY2ggbXkgJGtleSAoQHNvcnRlZF9r ZXlzKSB7CiAKIAkkcnVubmluZ3skcmluZ30gKz0gJGVuZCAtICRzdGFydCBpZiAkY29ycmVjdF9k dXJhdGlvbnMgb3IKIAkJCQkJICAgIG5vdCBleGlzdHMgJGRieyRrZXl9LT57J25vLWVuZCd9Owot CSRydW5uYWJsZXskcmluZ30gKz0gJGRieyRrZXl9LT57J2V4ZWN1dGUtZGVsYXknfTsKLQkkcXVl dWVkeyRyaW5nfSArPSAkc3RhcnQgLSAkZGJ7JGtleX0tPnsnZXhlY3V0ZS1kZWxheSd9IC0gJGRi eyRrZXl9LT57J3F1ZXVlJ307CisJdW5sZXNzIChleGlzdHMgJGRieyRrZXl9LT57J3ZpcnR1YWwn fSkgeworCQkkcnVubmFibGV7JHJpbmd9ICs9ICRkYnska2V5fS0+eydleGVjdXRlLWRlbGF5J307 CisJCSRxdWV1ZWR7JHJpbmd9ICs9ICRzdGFydCAtICRkYnska2V5fS0+eydleGVjdXRlLWRlbGF5 J30gLSAkZGJ7JGtleX0tPnsncXVldWUnfTsKKwl9CiAKIAkkYmF0Y2hfY291bnR7JHJpbmd9Kys7 CiAKQEAgLTg0MCw2ICs5MDAsMTIgQEAgZm9yZWFjaCBteSAka2V5IChrZXlzICVyZXF3YWl0KSB7 CiAJJHJlcXd7JHJlcXdhaXR7JGtleX0tPnsncmluZyd9fSArPSAkcmVxd2FpdHska2V5fS0+eydl bmQnfSAtICRyZXF3YWl0eyRrZXl9LT57J3N0YXJ0J307CiB9CiAKKyMgQWRkIHVwIGFsbCByZXF1 ZXN0IHdhaXRzIHBlciB2aXJ0dWFsIGVuZ2luZQorbXkgJXZyZXF3OworZm9yZWFjaCBteSAka2V5 IChrZXlzICVyZXF3YWl0KSB7CisJJHZyZXF3eyRyZXF3YWl0eyRrZXl9LT57J2N0eCd9fSArPSAk cmVxd2FpdHska2V5fS0+eydlbmQnfSAtICRyZXF3YWl0eyRrZXl9LT57J3N0YXJ0J307Cit9CisK IHNheSBzcHJpbnRmKCdHUFU6ICUuMmYlJSBpZGxlLCAlLjJmJSUgYnVzeScsCiAJICAgICAkZmxh dF9idXN5eydncHUtaWRsZSd9LCAkZmxhdF9idXN5eydncHUtYnVzeSd9KSB1bmxlc3MgJGh0bWw7 CiAKQEAgLTk2MSwxOCArMTAyNywyNCBAQCBFTkRIVE1MCiBzdWIgaHRtbF9zdGF0cwogewogCW15 ICgkc3RhdHMsICRncm91cCwgJGlkKSA9IEBfOworCW15ICR2ZW5nID0gZXhpc3RzICRzdGF0cy0+ eyd2aXJ0dWFsJ30gPyAxIDogMDsKIAlteSAkbmFtZTsKIAotCSRuYW1lID0gJ1JpbmcnIC4gJGdy b3VwOworCSRuYW1lID0gJHZlbmcgPyAnVmlydHVhbCcgOiAnUmluZyc7CisJJG5hbWUgLj0gJGdy b3VwOwogCSRuYW1lIC49ICc8YnI+PHNtYWxsPjxicj4nOwotCSRuYW1lIC49IHNwcmludGYoJyUu MmYnLCAkc3RhdHMtPnsnaWRsZSd9KSAuICclIGlkbGU8YnI+PGJyPic7Ci0JJG5hbWUgLj0gc3By aW50ZignJS4yZicsICRzdGF0cy0+eydidXN5J30pIC4gJyUgYnVzeTxicj4nOworCXVubGVzcyAo JHZlbmcpIHsKKwkJJG5hbWUgLj0gc3ByaW50ZignJS4yZicsICRzdGF0cy0+eydpZGxlJ30pIC4g JyUgaWRsZTxicj48YnI+JzsKKwkJJG5hbWUgLj0gc3ByaW50ZignJS4yZicsICRzdGF0cy0+eydi dXN5J30pIC4gJyUgYnVzeTxicj4nOworCX0KIAkkbmFtZSAuPSBzcHJpbnRmKCclLjJmJywgJHN0 YXRzLT57J3J1bm5hYmxlJ30pIC4gJyUgcnVubmFibGU8YnI+JzsKIAkkbmFtZSAuPSBzcHJpbnRm KCclLjJmJywgJHN0YXRzLT57J3F1ZXVlZCd9KSAuICclIHF1ZXVlZDxicj48YnI+JzsKIAkkbmFt ZSAuPSBzcHJpbnRmKCclLjJmJywgJHN0YXRzLT57J3dhaXQnfSkgLiAnJSB3YWl0PGJyPjxicj4n OwogCSRuYW1lIC49ICRzdGF0cy0+eydjb3VudCd9IC4gJyBiYXRjaGVzPGJyPic7Ci0JJG5hbWUg Lj0gc3ByaW50ZignJS4yZicsICRzdGF0cy0+eydhdmcnfSkgLiAndXMgYXZnIGJhdGNoPGJyPic7 Ci0JJG5hbWUgLj0gc3ByaW50ZignJS4yZicsICRzdGF0cy0+eyd0b3RhbC1hdmcnfSkgLiAndXMg YXZnIGVuZ2luZSBiYXRjaDxicj4nOworCXVubGVzcyAoJHZlbmcpIHsKKwkJJG5hbWUgLj0gc3By aW50ZignJS4yZicsICRzdGF0cy0+eydhdmcnfSkgLiAndXMgYXZnIGJhdGNoPGJyPic7CisJCSRu YW1lIC49IHNwcmludGYoJyUuMmYnLCAkc3RhdHMtPnsndG90YWwtYXZnJ30pIC4gJ3VzIGF2ZyBl bmdpbmUgYmF0Y2g8YnI+JzsKKwl9CiAJJG5hbWUgLj0gJzwvc21hbGw+JzsKIAogCXByaW50ICJc dHtpZDogJGlkLCBjb250ZW50OiAnJG5hbWUnfSxcbiI7CkBAIC05ODEsMTcgKzEwNTMsMjQgQEAg c3ViIGh0bWxfc3RhdHMKIHN1YiBzdGRpb19zdGF0cwogewogCW15ICgkc3RhdHMsICRncm91cCwg JGlkKSA9IEBfOworCW15ICR2ZW5nID0gZXhpc3RzICRzdGF0cy0+eyd2aXJ0dWFsJ30gPyAxIDog MDsKIAlteSAkc3RyOwogCi0JJHN0ciA9ICdSaW5nJyAuICRncm91cCAuICc6ICc7CisJJHN0ciA9 ICR2ZW5nID8gJ1ZpcnR1YWwnIDogJ1JpbmcnOworCSRzdHIgLj0gJGdyb3VwIC4gJzogJzsKIAkk c3RyIC49ICRzdGF0cy0+eydjb3VudCd9IC4gJyBiYXRjaGVzLCAnOwotCSRzdHIgLj0gc3ByaW50 ZignJS4yZiAoJS4yZikgYXZnIGJhdGNoIHVzLCAnLCAkc3RhdHMtPnsnYXZnJ30sICRzdGF0cy0+ eyd0b3RhbC1hdmcnfSk7Ci0JJHN0ciAuPSBzcHJpbnRmKCclLjJmJywgJHN0YXRzLT57J2lkbGUn fSkgLiAnJSBpZGxlLCAnOwotCSRzdHIgLj0gc3ByaW50ZignJS4yZicsICRzdGF0cy0+eydidXN5 J30pIC4gJyUgYnVzeSwgJzsKKwl1bmxlc3MgKCR2ZW5nKSB7CisJCSRzdHIgLj0gc3ByaW50Zign JS4yZiAoJS4yZikgYXZnIGJhdGNoIHVzLCAnLAorCQkJCSRzdGF0cy0+eydhdmcnfSwgJHN0YXRz LT57J3RvdGFsLWF2Zyd9KTsKKwkJJHN0ciAuPSBzcHJpbnRmKCclLjJmJywgJHN0YXRzLT57J2lk bGUnfSkgLiAnJSBpZGxlLCAnOworCQkkc3RyIC49IHNwcmludGYoJyUuMmYnLCAkc3RhdHMtPnsn YnVzeSd9KSAuICclIGJ1c3ksICc7CisJfQorCiAJJHN0ciAuPSBzcHJpbnRmKCclLjJmJywgJHN0 YXRzLT57J3J1bm5hYmxlJ30pIC4gJyUgcnVubmFibGUsICc7CiAJJHN0ciAuPSBzcHJpbnRmKCcl LjJmJywgJHN0YXRzLT57J3F1ZXVlZCd9KSAuICclIHF1ZXVlZCwgJzsKIAkkc3RyIC49IHNwcmlu dGYoJyUuMmYnLCAkc3RhdHMtPnsnd2FpdCd9KSAuICclIHdhaXQnOwotCWlmICgkYXZnX2RlbGF5 X3N0YXRzKSB7CisKKwlpZiAoJGF2Z19kZWxheV9zdGF0cyBhbmQgbm90ICR2ZW5nKSB7CiAJCSRz dHIgLj0gJywgc3VibWl0L2V4ZWN1dGUvc2F2ZS1hdmc9KCc7CiAJCSRzdHIgLj0gc3ByaW50Zign JS4yZi8lLjJmLyUuMmYpJywgJHN0YXRzLT57J3N1Ym1pdCd9LCAkc3RhdHMtPnsnZXhlY3V0ZSd9 LCAkc3RhdHMtPnsnc2F2ZSd9KTsKIAl9CkBAIC0xMDEzLDggKzEwOTIsMTYgQEAgZm9yZWFjaCBt eSAkZ3JvdXAgKHNvcnQga2V5cyAlcmluZ3MpIHsKIAogCSRzdGF0c3snaWRsZSd9ID0gKDEuMCAt ICRmbGF0X2J1c3l7JHJpbmd9IC8gJGVsYXBzZWQpICogMTAwLjA7CiAJJHN0YXRzeydidXN5J30g PSAkcnVubmluZ3skcmluZ30gLyAkZWxhcHNlZCAqIDEwMC4wOwotCSRzdGF0c3sncnVubmFibGUn fSA9ICRydW5uYWJsZXskcmluZ30gLyAkZWxhcHNlZCAqIDEwMC4wOwotCSRzdGF0c3sncXVldWVk J30gPSAkcXVldWVkeyRyaW5nfSAvICRlbGFwc2VkICogMTAwLjA7CisJaWYgKGV4aXN0cyAkcnVu bmFibGV7JHJpbmd9KSB7CisJCSRzdGF0c3sncnVubmFibGUnfSA9ICRydW5uYWJsZXskcmluZ30g LyAkZWxhcHNlZCAqIDEwMC4wOworCX0gZWxzZSB7CisJCSRzdGF0c3sncnVubmFibGUnfSA9IDA7 CisJfQorCWlmIChleGlzdHMgJHF1ZXVlZHskcmluZ30pIHsKKwkJJHN0YXRzeydxdWV1ZWQnfSA9 ICRxdWV1ZWR7JHJpbmd9IC8gJGVsYXBzZWQgKiAxMDAuMDsKKwl9IGVsc2UgeworCQkkc3RhdHN7 J3F1ZXVlZCd9ID0gMDsKKwl9CiAJJHJlcXd7JHJpbmd9ID0gMCB1bmxlc3MgZXhpc3RzICRyZXF3 eyRyaW5nfTsKIAkkc3RhdHN7J3dhaXQnfSA9ICRyZXF3eyRyaW5nfSAvICRlbGFwc2VkICogMTAw LjA7CiAJJHN0YXRzeydjb3VudCd9ID0gJGJhdGNoX2NvdW50eyRyaW5nfTsKQEAgLTEwMzEsNiAr MTExOCw1OSBAQCBmb3JlYWNoIG15ICRncm91cCAoc29ydCBrZXlzICVyaW5ncykgewogCX0KIH0K IAorc3ViIHNvcnRWUXVldWUgeworCW15ICRhcyA9ICR2ZGJ7JGF9LT57J3F1ZXVlJ307CisJbXkg JGJzID0gJHZkYnskYn0tPnsncXVldWUnfTsKKwlteSAkdmFsOworCisJJHZhbCA9ICRhcyA8PT4g JGJzOworCSR2YWwgPSAkYSBjbXAgJGIgaWYgJHZhbCA9PSAwOworCisJcmV0dXJuICR2YWw7Cit9 CisKK215IEBzb3J0ZWRfdmtleXMgPSBzb3J0IHNvcnRWUXVldWUga2V5cyAldmRiOworbXkgKCV2 cXVldWVkLCAldnJ1bm5hYmxlKTsKKworZm9yZWFjaCBteSAka2V5IChAc29ydGVkX3ZrZXlzKSB7 CisJbXkgJGN0eCA9ICR2ZGJ7JGtleX0tPnsnY3R4J307CisKKwkkdmRieyRrZXl9LT57J3N1Ym1p dC1kZWxheSd9ID0gJHZkYnska2V5fS0+eydzdWJtaXQnfSAtICR2ZGJ7JGtleX0tPnsncXVldWUn fTsKKwkkdmRieyRrZXl9LT57J2V4ZWN1dGUtZGVsYXknfSA9ICR2ZGJ7JGtleX0tPnsnc3RhcnQn fSAtICR2ZGJ7JGtleX0tPnsnc3VibWl0J307CisKKwkkdnF1ZXVlZHskY3R4fSArPSAkdmRieyRr ZXl9LT57J3N1Ym1pdC1kZWxheSd9OworCSR2cnVubmFibGV7JGN0eH0gKz0gJHZkYnska2V5fS0+ eydleGVjdXRlLWRlbGF5J307Cit9CisKK215ICR2ZW5nX2lkID0gJGVuZ2luZV9zdGFydF9pZCAr IHNjYWxhcihrZXlzICVyaW5ncyk7CisKK2ZvcmVhY2ggbXkgJGNpZCAoc29ydCBrZXlzICVjdHht YXApIHsKKwlteSAkY3R4ID0gJGN0eG1hcHskY2lkfTsKKwlteSAkZWxhcHNlZCA9ICRsYXN0X3Rz IC0gJGZpcnN0X3RzOworCW15ICVzdGF0czsKKworCSRzdGF0c3sndmlydHVhbCd9ID0gMTsKKwlp ZiAoZXhpc3RzICR2cnVubmFibGV7JGN0eH0pIHsKKwkJJHN0YXRzeydydW5uYWJsZSd9ID0gJHZy dW5uYWJsZXskY3R4fSAvICRlbGFwc2VkICogMTAwLjA7CisJfSBlbHNlIHsKKwkJJHN0YXRzeydy dW5uYWJsZSd9ID0gMDsKKwl9CisJaWYgKGV4aXN0cyAkdnF1ZXVlZHskY3R4fSkgeworCQkkc3Rh dHN7J3F1ZXVlZCd9ID0gJHZxdWV1ZWR7JGN0eH0gLyAkZWxhcHNlZCAqIDEwMC4wOworCX0gZWxz ZSB7CisJCSRzdGF0c3sncXVldWVkJ30gPSAwOworCX0KKwkkdnJlcXd7JGN0eH0gPSAwIHVubGVz cyBleGlzdHMgJHZyZXF3eyRjdHh9OworCSRzdGF0c3snd2FpdCd9ID0gJHZyZXF3eyRjdHh9IC8g JGVsYXBzZWQgKiAxMDAuMDsKKwkkc3RhdHN7J2NvdW50J30gPSBzY2FsYXIoZ3JlcCB7JGN0eCA9 PSAkdmRieyRffS0+eydjdHgnfX0ga2V5cyAldmRiKTsKKworCWlmICgkaHRtbCkgeworCQlodG1s X3N0YXRzKFwlc3RhdHMsICRjaWQsICR2ZW5nX2lkKyspOworCX0gZWxzZSB7CisJCXN0ZGlvX3N0 YXRzKFwlc3RhdHMsICRjaWQsICR2ZW5nX2lkKyspOworCX0KK30KKwogZXhpdCAwIHVubGVzcyAk aHRtbDsKIAogcHJpbnQgPDxFTkRIVE1MOwpAQCAtMTEzNCw2ICsxMjc0LDcgQEAgc3ViIGJveF9z dHlsZQogfQogCiBteSAkaSA9IDA7CitteSAkcmVxID0gMDsKIGZvcmVhY2ggbXkgJGtleSAoc29y dCBzb3J0UXVldWUga2V5cyAlZGIpIHsKIAlteSAoJG5hbWUsICRjdHgsICRzZXFubykgPSAoJGRi eyRrZXl9LT57J25hbWUnfSwgJGRieyRrZXl9LT57J2N0eCd9LCAkZGJ7JGtleX0tPnsnc2Vxbm8n fSk7CiAJbXkgKCRxdWV1ZSwgJHN0YXJ0LCAkbm90aWZ5LCAkZW5kKSA9ICgkZGJ7JGtleX0tPnsn cXVldWUnfSwgJGRieyRrZXl9LT57J3N0YXJ0J30sICRkYnska2V5fS0+eydub3RpZnknfSwgJGRi eyRrZXl9LT57J2VuZCd9KTsKQEAgLTExNDcsNyArMTI4OCw3IEBAIGZvcmVhY2ggbXkgJGtleSAo c29ydCBzb3J0UXVldWUga2V5cyAlZGIpIHsKIAlteSAkc2tleTsKIAogCSMgc3VibWl0IHRvIGV4 ZWN1dGUKLQl1bmxlc3MgKGV4aXN0cyAkc2tpcF9ib3h7J3F1ZXVlJ30pIHsKKwl1bmxlc3MgKGV4 aXN0cyAkc2tpcF9ib3h7J3F1ZXVlJ30gb3IgZXhpc3RzICRkYnska2V5fS0+eyd2aXJ0dWFsJ30p IHsKIAkJJHNrZXkgPSAyICogJG1heF9zZXFubyAqICRjdHggKyAyICogJHNlcW5vOwogCQkkc3R5 bGUgPSBib3hfc3R5bGUoJGN0eCwgJ3F1ZXVlJyk7CiAJCSRjb250ZW50ID0gIiRuYW1lPGJyPiRk Ynska2V5fS0+eydzdWJtaXQtZGVsYXknfXVzIDxzbWFsbD4oJGRieyRrZXl9LT57J2V4ZWN1dGUt ZGVsYXknfXVzKTwvc21hbGw+IjsKQEAgLTExNTgsNyArMTI5OSw3IEBAIGZvcmVhY2ggbXkgJGtl eSAoc29ydCBzb3J0UXVldWUga2V5cyAlZGIpIHsKIAogCSMgZXhlY3V0ZSB0byBzdGFydAogCSRl bmdpbmVfc3RhcnQgPSAkZGJ7JGtleX0tPnsnc3RhcnQnfSB1bmxlc3MgZGVmaW5lZCAkZW5naW5l X3N0YXJ0OwotCXVubGVzcyAoZXhpc3RzICRza2lwX2JveHsncmVhZHknfSkgeworCXVubGVzcyAo ZXhpc3RzICRza2lwX2JveHsncmVhZHknfSBvciBleGlzdHMgJGRieyRrZXl9LT57J3ZpcnR1YWwn fSkgewogCQkkc2tleSA9IDIgKiAkbWF4X3NlcW5vICogJGN0eCArIDIgKiAkc2Vxbm8gKyAxOwog CQkkc3R5bGUgPSBib3hfc3R5bGUoJGN0eCwgJ3JlYWR5Jyk7CiAJCSRjb250ZW50ID0gIjxzbWFs bD4kbmFtZTxicj4kZGJ7JGtleX0tPnsnZXhlY3V0ZS1kZWxheSd9dXM8L3NtYWxsPiI7CkBAIC0x MTk5LDcgKzEzNDAsNyBAQCBmb3JlYWNoIG15ICRrZXkgKHNvcnQgc29ydFF1ZXVlIGtleXMgJWRi KSB7CiAKIAkkbGFzdF90cyA9ICRlbmQ7CiAKLQlsYXN0IGlmICRpID4gJG1heF9pdGVtczsKKwls YXN0IGlmICsrJHJlcSA+ICRtYXhfcmVxdWVzdHM7CiB9CiAKIHB1c2ggQGZyZXFzLCBbJHByZXZf ZnJlcV90cywgJGxhc3RfdHMsICRwcmV2X2ZyZXFdIGlmICRwcmV2X2ZyZXE7CkBAIC0xMjMyLDYg KzEzNzMsNDMgQEAgaWYgKCRncHVfdGltZWxpbmUpIHsKIAl9CiB9CiAKKyRyZXEgPSAwOworJHZl bmdfaWQgPSAkZW5naW5lX3N0YXJ0X2lkICsgc2NhbGFyKGtleXMgJXJpbmdzKTsKK2ZvcmVhY2gg bXkgJGtleSAoQHNvcnRlZF92a2V5cykgeworCW15ICgkbmFtZSwgJGN0eCwgJHNlcW5vKSA9ICgk dmRieyRrZXl9LT57J25hbWUnfSwgJHZkYnska2V5fS0+eydjdHgnfSwgJHZkYnska2V5fS0+eydz ZXFubyd9KTsKKwlteSAkcXVldWUgPSAkdmRieyRrZXl9LT57J3F1ZXVlJ307CisJbXkgJHN1Ym1p dCA9ICR2ZGJ7JGtleX0tPnsnc3VibWl0J307CisJbXkgJGVuZ2luZV9zdGFydCA9ICRkYnska2V5 fS0+eydlbmdpbmUtc3RhcnQnfTsKKwlteSAoJGNvbnRlbnQsICRzdHlsZSwgJHN0YXJ0ZW5kLCAk c2tleSk7CisJbXkgJGdyb3VwID0gJHZlbmdfaWQgKyAkY2lkc3skY3R4fTsKKwlteSAkc3ViZ3Jv dXAgPSAkY3R4IC0gJG1pbl9jdHg7CisJbXkgJHR5cGUgPSAnIHR5cGU6IFwncmFuZ2VcJywnOwor CW15ICRkdXJhdGlvbjsKKworCSMgc3VibWl0IHRvIGV4ZWN1dGUKKwl1bmxlc3MgKGV4aXN0cyAk c2tpcF9ib3h7J3F1ZXVlJ30pIHsKKwkJJHNrZXkgPSAyICogJG1heF9zZXFubyAqICRjdHggKyAy ICogJHNlcW5vOworCQkkc3R5bGUgPSBib3hfc3R5bGUoJGN0eCwgJ3F1ZXVlJyk7CisJCSRjb250 ZW50ID0gIiRuYW1lPGJyPiR2ZGJ7JGtleX0tPnsnc3VibWl0LWRlbGF5J311cyA8c21hbGw+KCR2 ZGJ7JGtleX0tPnsnZXhlY3V0ZS1kZWxheSd9dXMpPC9zbWFsbD4iOworCQkkc3RhcnRlbmQgPSAn c3RhcnQ6ICcgLiAkcXVldWUgLiAnLCBlbmQ6ICcgLiAkc3VibWl0OworCQlwcmludCAiXHR7aWQ6 ICRpLCBrZXk6ICRza2V5LCAkdHlwZSBncm91cDogJGdyb3VwLCBzdWJncm91cDogJHN1Ymdyb3Vw LCBzdWJncm91cE9yZGVyOiAkc3ViZ3JvdXAsIGNvbnRlbnQ6ICckY29udGVudCcsICRzdGFydGVu ZCwgc3R5bGU6IFwnJHN0eWxlXCd9LFxuIjsKKwkJJGkrKzsKKwl9CisKKwkjIGV4ZWN1dGUgdG8g c3RhcnQKKwkkZW5naW5lX3N0YXJ0ID0gJHZkYnska2V5fS0+eydzdGFydCd9IHVubGVzcyBkZWZp bmVkICRlbmdpbmVfc3RhcnQ7CisJdW5sZXNzIChleGlzdHMgJHNraXBfYm94eydyZWFkeSd9KSB7 CisJCSRza2V5ID0gMiAqICRtYXhfc2Vxbm8gKiAkY3R4ICsgMiAqICRzZXFubyArIDE7CisJCSRz dHlsZSA9IGJveF9zdHlsZSgkY3R4LCAncmVhZHknKTsKKwkJJGNvbnRlbnQgPSAiPHNtYWxsPiRu YW1lPGJyPiR2ZGJ7JGtleX0tPnsnZXhlY3V0ZS1kZWxheSd9dXM8L3NtYWxsPiI7CisJCSRzdGFy dGVuZCA9ICdzdGFydDogJyAuICRzdWJtaXQgLiAnLCBlbmQ6ICcgLiAkZW5naW5lX3N0YXJ0Owor CQlwcmludCAiXHR7aWQ6ICRpLCBrZXk6ICRza2V5LCAkdHlwZSBncm91cDogJGdyb3VwLCBzdWJn cm91cDogJHN1Ymdyb3VwLCBzdWJncm91cE9yZGVyOiAkc3ViZ3JvdXAsIGNvbnRlbnQ6ICckY29u dGVudCcsICRzdGFydGVuZCwgc3R5bGU6IFwnJHN0eWxlXCd9LFxuIjsKKwkJJGkrKzsKKwl9CisK KwlsYXN0IGlmICsrJHJlcSA+ICRtYXhfcmVxdWVzdHM7Cit9CisKIG15ICRlbmRfdHMgPSAkZmly c3RfdHMgKyAkd2lkdGhfdXM7CiAkZmlyc3RfdHMgPSAkZmlyc3RfdHM7CiAKLS0gCjIuMjAuMQoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KaWd0LWRldiBt YWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2