From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49033) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fwrm7-0001DC-Nz for qemu-devel@nongnu.org; Mon, 03 Sep 2018 12:32:29 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fwrm2-0006E0-Fs for qemu-devel@nongnu.org; Mon, 03 Sep 2018 12:32:27 -0400 Received: from mail-40136.protonmail.ch ([185.70.40.136]:13756) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1fwrm1-0006Bh-Nf for qemu-devel@nongnu.org; Mon, 03 Sep 2018 12:32:22 -0400 Date: Mon, 03 Sep 2018 16:32:10 +0000 From: Ryan El Kochta Reply-To: Ryan El Kochta Message-ID: <45OPfGmaK-Sz9ZGzbGSmlE0AgSRiVp3mCkNrkJC2k6s4c9wOOcegenAJ6muFQwlGl1gBTMordKEgVU2tv9dThhXMDKaJPSZ6tNTMclo_n1E=@protonmail.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="b1_bb6f4ae9194fd87cb913f05e40e3403d" Subject: [Qemu-devel] [PATCH] input-linux: customizable grab toggle keys v3 List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: "qemu-devel@nongnu.org" , Gerd Hoffmann This is a multi-part message in MIME format. --b1_bb6f4ae9194fd87cb913f05e40e3403d Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 VGhpcyBwYXRjaCBhZGRzIGEgbmV3IG9wdGlvbiB0byB0aGUgaW5wdXQtbGludXggb2JqZWN0OgoK Z3JhYl90b2dnbGU9a2V5LWtleS1rZXkKClRoZXNlIGtleXMgY2FuIGJlIG9uZSBvZiB0aGUgZm9s bG93aW5nOgoKKiBsY3RybAoqIHJjdHJsCiogbGFsdAoqIHJhbHQKKiBsc2hpZnQKKiByc2hpZnQK KiBiYWNrdGljawoqIHNjcm9sbGxvY2sKClRoZSB1c2VyIGNhbiBwaWNrIGFueSBjb21iaW5hdGlv biBvZiB0aGVzZSBrZXlzLiBUaGUgVk0ncyBncmFiCm9mIHRoZSBldmRldiBkZXZpY2Ugd2lsbCBi ZSB0b2dnbGVkIHdoZW4gYWxsIG9mIHRoZSBzZWxlY3RlZAprZXlzIGFyZSBwcmVzc2VkIGF0IHRo ZSBzYW1lIHRpbWUuIElmIGdyYWJfdG9nZ2xlIGlzIG5vdCBzcGVjaWZpZWQKb3IgbWFsZm9ybWVk LCB0aGUgY3VycmVudCBkZWZhdWx0IG9mIGxjdHJsK3JjdHJsIHdpbGwgYmUgdXNlZC4KCklmIHNj cm9sbGxvY2sgaXMgc2VsZWN0ZWQgYXMgb25lIG9mIHRoZSBncmFiX3RvZ2dsZSBrZXlzLCBpdAp3 aWxsIGJlIGVudGlyZWx5IGRpc2FibGVkIGFuZCBub3QgcGFzc2VkIHRvIHRoZSBndWVzdCBhdCBh bGwuClRoaXMgaXMgdG8gcHJldmVudCBlbmFibGluZyBpdCB3aGlsZSBhdHRlbXB0aW5nIHRvIGxl YXZlIG9yIGVudGVyCnRoZSBWTS4gT24gdGhlIGhvc3QsIHNjcm9sbGxvY2sgY2FuIGJlIGRpc2Fi bGVkIHVzaW5nIHhtb2RtYXAuCgpGaXJzdCwgZmluZCB0aGUgbW9kaWZpZXIgdGhhdCBTY3JvbGxf TG9jayBpcyBib3VuZCB0bzoKCiQgeG1vZG1hcCAtcG0KClRoZW4sIHJlbW92ZSBTY3JvbGxfTG9j ayBmcm9tIGl0LCByZXBsYWNpbmcgbW9kWCB3aXRoIHRoZSBtb2RpZmllcjoKCiQgeG1vZG1hcCAt ZSAncmVtb3ZlIG1vZFggPSBTY3JvbGxfTG9jaycKCklmIFNjcm9sbF9Mb2NrIGlzIG5vdCBib3Vu ZCB0byBhbnkgbW9kaWZpZXIsIGl0IGlzIGFscmVhZHkgZGlzYWJsZWQuCgpUbyBzYXZlIHRoZSBj aGFuZ2VzLCBhZGQgdGhlbSB0byB5b3VyIHhpbml0cmMuCgpJIGhhdmUgYWxzbyBhdHRhY2hlZCB0 aGUgcGF0Y2ggY29udGFpbmVkIGluIHRoZSBib2R5IG9mIHRoaXMgZW1haWwKc2luY2UgbXkgbWFp bCBjbGllbnQgZG9lcyBub3Qgc2VlbSB0byBiZWhhdmUgd2VsbCB3aXRoIHBhdGNoZXMuCklmIHRo aXMgaXMgYSBwcm9ibGVtLCBwbGVhc2UgbGV0IG1lIGtub3cuCgpTaWduZWQtb2ZmLWJ5OiBSeWFu IEVsIEtvY2h0YSA8bGlnaHRuMW5nc3RyMWtlQHByb3Rvbm1haWwuY29tPgotLS0KdWkvaW5wdXQt bGludXguYyB8IDE1NiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrLQoxIGZpbGUgY2hhbmdlZCwgMTUzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvdWkvaW5wdXQtbGludXguYyBiL3VpL2lucHV0LWxpbnV4LmMKaW5kZXggOTcy MDMzM2IyYy4uMmNiYzg3NzY2NyAxMDA2NDQKLS0tIGEvdWkvaW5wdXQtbGludXguYworKysgYi91 aS9pbnB1dC1saW51eC5jCkBAIC0xMiw2ICsxMiw3IEBACiNpbmNsdWRlICJzeXNlbXUvc3lzZW11 LmgiCiNpbmNsdWRlICJ1aS9pbnB1dC5oIgojaW5jbHVkZSAicW9tL29iamVjdF9pbnRlcmZhY2Vz LmgiCisjaW5jbHVkZSAiaW5jbHVkZS9xZW11L2N1dGlscy5oIgoKI2luY2x1ZGUgPHN5cy9pb2N0 bC5oPgojaW5jbHVkZSAic3RhbmRhcmQtaGVhZGVycy9saW51eC9pbnB1dC5oIgpAQCAtNjMsNiAr NjQsMTEgQEAgc3RydWN0IElucHV0TGludXggewogICAgIHN0cnVjdCBpbnB1dF9ldmVudCBldmVu dDsKICAgICBpbnQgICAgICAgICByZWFkX29mZnNldDsKCisgICAgY2hhciAgICAgICAgKmdyYWJf dG9nZ2xlOworICAgIGludCAgICAgICAgIGdyYWJfdG9nZ2xlX2xlbjsKKyAgICBpbnQgICAgICAg ICAqZ3JhYl90b2dnbGVfbGlzdDsKKyAgICBib29sICAgICAgICBza2lwX3Njcm9sbGxvY2s7CisK ICAgICBRVEFJTFFfRU5UUlkoSW5wdXRMaW51eCkgbmV4dDsKfTsKCkBAIC05OCw2ICsxMDQsMjUg QEAgc3RhdGljIHZvaWQgaW5wdXRfbGludXhfdG9nZ2xlX2dyYWIoSW5wdXRMaW51eCAqaWwpCiAg ICAgfQp9Cgorc3RhdGljIGJvb2wgaW5wdXRfbGludXhfY2hlY2tfZ3JhYl90b2dnbGUoSW5wdXRM aW51eCAqaWwpCit7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGlsLT5ncmFiX3RvZ2ds ZV9sZW47IGkrKykgeworICAgICAgICBpZiAoIWlsLT5rZXlkb3duW2lsLT5ncmFiX3RvZ2dsZV9s aXN0W2ldXSkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQor ICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgYm9vbCBpbnB1dF9saW51eF9jaGVja19za2lw X3Njcm9sbGxvY2soSW5wdXRMaW51eCAqaWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzdHJ1Y3QgaW5wdXRfZXZlbnQgKmV2ZW50KQoreworICAgIGlmIChpbC0+c2tp cF9zY3JvbGxsb2NrICYmIGV2ZW50LT5jb2RlID09IEtFWV9TQ1JPTExMT0NLKSB7CisgICAgICAg IHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKc3RhdGljIHZvaWQg aW5wdXRfbGludXhfaGFuZGxlX2tleWJvYXJkKElucHV0TGludXggKmlsLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpbnB1dF9ldmVudCAqZXZlbnQpCnsK QEAgLTEyOCwxNCArMTUzLDEzIEBAIHN0YXRpYyB2b2lkIGlucHV0X2xpbnV4X2hhbmRsZV9rZXli b2FyZChJbnB1dExpbnV4ICppbCwKICAgICAgICAgfQoKICAgICAgICAgLyogc2VuZCBldmVudCB0 byBndWVzdCB3aGVuIGdyYWIgaXMgYWN0aXZlICovCi0gICAgICAgIGlmIChpbC0+Z3JhYl9hY3Rp dmUpIHsKKyAgICAgICAgaWYgKGlsLT5ncmFiX2FjdGl2ZSAmJiAhaW5wdXRfbGludXhfY2hlY2tf c2tpcF9zY3JvbGxsb2NrKGlsLCBldmVudCkpIHsKICAgICAgICAgICAgIGludCBxY29kZSA9IHFl bXVfaW5wdXRfbGludXhfdG9fcWNvZGUoZXZlbnQtPmNvZGUpOwogICAgICAgICAgICAgcWVtdV9p bnB1dF9ldmVudF9zZW5kX2tleV9xY29kZShOVUxMLCBxY29kZSwgZXZlbnQtPnZhbHVlKTsKICAg ICAgICAgfQoKICAgICAgICAgLyogaG90a2V5IC0+IHJlY29yZCBzd2l0Y2ggcmVxdWVzdCAuLi4g Ki8KLSAgICAgICAgaWYgKGlsLT5rZXlkb3duW0tFWV9MRUZUQ1RSTF0gJiYKLSAgICAgICAgICAg IGlsLT5rZXlkb3duW0tFWV9SSUdIVENUUkxdKSB7CisgICAgICAgIGlmIChpbnB1dF9saW51eF9j aGVja19ncmFiX3RvZ2dsZShpbCkpIHsKICAgICAgICAgICAgIGlsLT5ncmFiX3JlcXVlc3QgPSB0 cnVlOwogICAgICAgICB9CgpAQCAtMjc0LDYgKzI5OCwxNSBAQCBzdGF0aWMgdm9pZCBpbnB1dF9s aW51eF9jb21wbGV0ZShVc2VyQ3JlYXRhYmxlICp1YywgRXJyb3IgKiplcnJwKQogICAgICAgICBy ZXR1cm47CiAgICAgfQoKKyAgICBpZighaWwtPmdyYWJfdG9nZ2xlIHx8ICFpbC0+Z3JhYl90b2dn bGVfbGVuIHx8ICFpbC0+Z3JhYl90b2dnbGVfbGlzdCkgeworICAgICAgICBpbC0+c2tpcF9zY3Jv bGxsb2NrID0gZmFsc2U7CisgICAgICAgIGlsLT5ncmFiX3RvZ2dsZSA9IE5VTEw7CisgICAgICAg IGlsLT5ncmFiX3RvZ2dsZV9sZW4gPSAyOworICAgICAgICBpbC0+Z3JhYl90b2dnbGVfbGlzdCA9 IGdfbmV3KGludCwgMik7CisgICAgICAgIGlsLT5ncmFiX3RvZ2dsZV9saXN0WzBdID0gS0VZX0xF RlRDVFJMOworICAgICAgICBpbC0+Z3JhYl90b2dnbGVfbGlzdFsxXSA9IEtFWV9SSUdIVENUUkw7 CisgICAgfQorCiAgICAgaWwtPmZkID0gb3BlbihpbC0+ZXZkZXYsIE9fUkRXUik7CiAgICAgaWYg KGlsLT5mZCA8IDApICB7CiAgICAgICAgIGVycm9yX3NldGdfZmlsZV9vcGVuKGVycnAsIGVycm5v LCBpbC0+ZXZkZXYpOwpAQCAtNDEwLDExICs0NDMsMTI4IEBAIHN0YXRpYyB2b2lkIGlucHV0X2xp bnV4X3NldF9yZXBlYXQoT2JqZWN0ICpvYmosIGJvb2wgdmFsdWUsCiAgICAgaWwtPnJlcGVhdCA9 IHZhbHVlOwp9Cgorc3RhdGljIHZvaWQgaW5wdXRfbGludXhfcG9wdWxhdGVfZ3JhYl90b2dnbGUo SW5wdXRMaW51eCAqaWwpCit7CisgICAgY2hhciAqb3JpZywgKnNhdmVwdHIsICp0b2tlbjsKKyAg ICB1bnNpZ25lZCBjbnRyID0gMDsKKworICAgIC8qCisgICAgICogSWYgbm8gZ3JhYl90b2dnbGUg c3RyaW5nIHdhcyBwcm92aWRlZCwgcmV0dXJuLgorICAgICAqIFRoaXMgd2lsbCBiZSBjbGVhbmVk IHVwIGluIHRoZSBpbnB1dF9saW51eF9jb21wbGV0ZSgpCisgICAgICogZnVuY3Rpb24gYW5kIHJl c2V0IHRvIGJvdGggQ3RybCBrZXlzLgorICAgICAqLworICAgIGlmICghaWwtPmdyYWJfdG9nZ2xl KSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpbC0+c2tpcF9zY3JvbGxsb2NrID0g ZmFsc2U7CisKKyAgICAvKiBDcmVhdGUgYSBuZXcgc3RyaW5nIGZvciBzdHJ0b2tfciAqLworICAg IG9yaWcgPSBnX3N0cmR1cChpbC0+Z3JhYl90b2dnbGUpOworCisgICAgLyoKKyAgICAgKiBJdGVy YXRlIHRocm91Z2ggZWFjaCB0b2tlbiBpbiB0aGUgc3RyaW5nLAorICAgICAqIHNlcGFyYXRlZCBi eSBkYXNoZXMsIGFuZCBhZGQgaXQgdG8gdGhlIGlsLT5ncmFiX3RvZ2dsZV9saXN0CisgICAgICog YXJyYXkuCisgICAgICoKKyAgICAgKiBVbmZvcnR1bmF0ZWx5IHRoaXMgbXVzdCBiZSBkb25lIHR3 aWNlIGluIG9yZGVyIHRvCisgICAgICogZGV0ZXJtaW5lIGhvdyBtdWNoIG1lbW9yeSB3aWxsIGJl IGFsbG9jYXRlZCBsYXRlciBvbi4KKyAgICAgKi8KKworICAgIC8qIEZpcnN0IGl0ZXJhdGlvbiAq LworICAgIGlsLT5ncmFiX3RvZ2dsZV9sZW4gPSAwOworICAgIHNhdmVwdHIgPSBvcmlnOworICAg IHdoaWxlIChzdHJ0b2tfcihzYXZlcHRyLCAiLSIsICZzYXZlcHRyKSkgeworICAgICAgICBpbC0+ Z3JhYl90b2dnbGVfbGVuKys7CisgICAgICAgIC8qIElmIHRoaXMgb3ZlcmZsb3dzLCB1c2UgdGhl IGRlZmF1bHQgKi8KKyAgICAgICAgaWYgKGlsLT5ncmFiX3RvZ2dsZV9sZW4gPCAwKSB7CisgICAg ICAgICAgICBpbC0+Z3JhYl90b2dnbGVfbGVuID0gMDsKKyAgICAgICAgICAgIGJyZWFrOworICAg ICAgICB9CisgICAgfQorCisgICAgLyoKKyAgICAgKiBJZiB0aGUgY291bnQgZm91bmQgemVybyB0 b2tlbnMsIHJldHVybiBhbiBlbXB0eSBsaXN0LgorICAgICAqIEFnYWluLCB0aGlzIHdpbGwgYmUg Y2xlYW5lZCB1cCBpbiBpbnB1dF9saW51eF9jb21wbGV0ZSgpLgorICAgICAqLworICAgIGlmICgh aWwtPmdyYWJfdG9nZ2xlX2xlbikgeworICAgICAgICBnX2ZyZWUob3JpZyk7CisgICAgICAgIHJl dHVybjsKKyAgICB9CisKKyAgICAvKiBTZWNvbmQgc2NhbiAqLworICAgIGlsLT5ncmFiX3RvZ2ds ZV9saXN0ID0gZ19uZXcoaW50LCBpbC0+Z3JhYl90b2dnbGVfbGVuKTsKKyAgICBzdHJjcHkob3Jp ZywgaWwtPmdyYWJfdG9nZ2xlKTsKKyAgICBzYXZlcHRyID0gb3JpZzsKKworICAgIC8qIEFkZCBl YWNoIHRva2VuJ3Mga2V5IHRvIHRoZSBsaXN0ICovCisgICAgd2hpbGUgKCh0b2tlbiA9IHN0cnRv a19yKHNhdmVwdHIsICItIiwgJnNhdmVwdHIpKSkgeworICAgICAgICBpZiAoIXN0cmNtcCh0b2tl biwgImxjdHJsIikpIHsKKyAgICAgICAgICAgIGlsLT5ncmFiX3RvZ2dsZV9saXN0W2NudHJdID0g S0VZX0xFRlRDVFJMOworICAgICAgICB9IGVsc2UgaWYgKCFzdHJjbXAodG9rZW4sICJyY3RybCIp KSB7CisgICAgICAgICAgICBpbC0+Z3JhYl90b2dnbGVfbGlzdFtjbnRyXSA9IEtFWV9SSUdIVENU Ukw7CisgICAgICAgIH0gZWxzZSBpZiAoIXN0cmNtcCh0b2tlbiwgImxhbHQiKSkgeworICAgICAg ICAgICAgaWwtPmdyYWJfdG9nZ2xlX2xpc3RbY250cl0gPSBLRVlfTEVGVEFMVDsKKyAgICAgICAg fSBlbHNlIGlmICghc3RyY21wKHRva2VuLCAicmFsdCIpKSB7CisgICAgICAgICAgICBpbC0+Z3Jh Yl90b2dnbGVfbGlzdFtjbnRyXSA9IEtFWV9SSUdIVEFMVDsKKyAgICAgICAgfSBlbHNlIGlmICgh c3RyY21wKHRva2VuLCAibHNoaWZ0IikpIHsKKyAgICAgICAgICAgIGlsLT5ncmFiX3RvZ2dsZV9s aXN0W2NudHJdID0gS0VZX0xFRlRTSElGVDsKKyAgICAgICAgfSBlbHNlIGlmICghc3RyY21wKHRv a2VuLCAicnNoaWZ0IikpIHsKKyAgICAgICAgICAgIGlsLT5ncmFiX3RvZ2dsZV9saXN0W2NudHJd ID0gS0VZX1JJR0hUU0hJRlQ7CisgICAgICAgIH0gZWxzZSBpZiAoIXN0cmNtcCh0b2tlbiwgImJh Y2t0aWNrIikpIHsKKyAgICAgICAgICAgIGlsLT5ncmFiX3RvZ2dsZV9saXN0W2NudHJdID0gS0VZ X0dSQVZFOworICAgICAgICB9IGVsc2UgaWYgKCFzdHJjbXAodG9rZW4sICJzY3JvbGxsb2NrIikp IHsKKyAgICAgICAgICAgIGlsLT5ncmFiX3RvZ2dsZV9saXN0W2NudHJdID0gS0VZX1NDUk9MTExP Q0s7CisgICAgICAgICAgICBpbC0+c2tpcF9zY3JvbGxsb2NrID0gdHJ1ZTsKKyAgICAgICAgfSBl bHNlIHsKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAqIElmIGFueSBvZiB0aGUgcGFyYW1l dGVycyBhcmUgaW52YWxpZCwKKyAgICAgICAgICAgICogc3RpY2sgdG8gdGhlIGRlZmF1bHQgb2Yg TEN0cmwrUkN0cmwuCisgICAgICAgICAgICAqCisgICAgICAgICAgICAqIFdlIGNvdWxkIGp1c3Qg c2tpcCB0aGF0IHBhcmFtZXRlciwgYnV0CisgICAgICAgICAgICAqIHRoYXQgbWVhbnMgaWYgeW91 IGlucHV0IG9ubHkgaW52YWxpZCBwYXJhbWV0ZXJzLAorICAgICAgICAgICAgKiB0aGVyZSB3b3Vs ZCBiZSBubyB3YXkgdG8gZXNjYXBlIHRoZSBWTS4KKyAgICAgICAgICAgICovCisgICAgICAgICAg ICBpbC0+Z3JhYl90b2dnbGVfbGVuID0gMDsKKyAgICAgICAgICAgIGdfZnJlZShvcmlnKTsKKyAg ICAgICAgICAgIGdfZnJlZShpbC0+Z3JhYl90b2dnbGVfbGlzdCk7CisgICAgICAgICAgICByZXR1 cm47CisgICAgICAgIH0KKworICAgICAgICBjbnRyKys7CisgICAgfQorICAgIGdfZnJlZShvcmln KTsKK30KKworc3RhdGljIGNoYXIgKmlucHV0X2xpbnV4X2dldF9ncmFiX3RvZ2dsZShPYmplY3Qg Km9iaiwgRXJyb3IgKiplcnJwKQoreworICAgIElucHV0TGludXggKmlsID0gSU5QVVRfTElOVVgo b2JqKTsKKworICAgIHJldHVybiBnX3N0cmR1cChpbC0+Z3JhYl90b2dnbGUpOworfQorCitzdGF0 aWMgdm9pZCBpbnB1dF9saW51eF9zZXRfZ3JhYl90b2dnbGUoT2JqZWN0ICpvYmosIGNvbnN0IGNo YXIgKnZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVycm9y ICoqZXJycCkKK3sKKyAgICBJbnB1dExpbnV4ICppbCA9IElOUFVUX0xJTlVYKG9iaik7CisKKyAg ICBpZiAoaWwtPmdyYWJfdG9nZ2xlKSB7CisgICAgICAgIGVycm9yX3NldGcoZXJycCwgImdyYWJf dG9nZ2xlIHByb3BlcnR5IGFscmVhZHkgc2V0Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg ICAgaWwtPmdyYWJfdG9nZ2xlID0gZ19zdHJkdXAodmFsdWUpOworCisgICAgaW5wdXRfbGludXhf cG9wdWxhdGVfZ3JhYl90b2dnbGUoaWwpOworfQorCnN0YXRpYyB2b2lkIGlucHV0X2xpbnV4X2lu c3RhbmNlX2luaXQoT2JqZWN0ICpvYmopCnsKICAgICBvYmplY3RfcHJvcGVydHlfYWRkX3N0cihv YmosICJldmRldiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRfbGludXhfZ2V0 X2V2ZGV2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0X2xpbnV4X3NldF9ldmRl diwgTlVMTCk7CisgICAgb2JqZWN0X3Byb3BlcnR5X2FkZF9zdHIob2JqLCAiZ3JhYl90b2dnbGUi LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0X2xpbnV4X2dldF9ncmFiX3RvZ2ds ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dF9saW51eF9zZXRfZ3JhYl90b2dn bGUsIE5VTEwpOwogICAgIG9iamVjdF9wcm9wZXJ0eV9hZGRfYm9vbChvYmosICJncmFiX2FsbCIs CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0X2xpbnV4X2dldF9ncmFiX2FsbCwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRfbGludXhfc2V0X2dyYWJfYWxsLCBO VUxMKTsKLS0KMi4xOC4w --b1_bb6f4ae9194fd87cb913f05e40e3403d Content-Type: text/x-patch; name="0001-input-linux-customizable-grab-toggle-keys-v3.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=0001-input-linux-customizable-grab-toggle-keys-v3.patch RnJvbSBmOWYxM2I5MTU5Mjg3N2JjYTFlMjAxY2IyMDg3N2I3ODc2ZDVjZjA0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSeWFuIEVsIEtvY2h0YSA8bGlnaHRuMW5nc3RyMWtlQHByb3Rv bm1haWwuY29tPgpEYXRlOiBNb24sIDMgU2VwIDIwMTggMTI6MTk6NTEgLTA0MDAKU3ViamVjdDog W1BBVENIXSBpbnB1dC1saW51eDogY3VzdG9taXphYmxlIGdyYWIgdG9nZ2xlIGtleXMgdjMKClRo aXMgcGF0Y2ggYWRkcyBhIG5ldyBvcHRpb24gdG8gdGhlIGlucHV0LWxpbnV4IG9iamVjdDoKCmdy YWJfdG9nZ2xlPWtleS1rZXkta2V5CgpUaGVzZSBrZXlzIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxv d2luZzoKCiogbGN0cmwKKiByY3RybAoqIGxhbHQKKiByYWx0CiogbHNoaWZ0CiogcnNoaWZ0Ciog YmFja3RpY2sKKiBzY3JvbGxsb2NrCgpUaGUgdXNlciBjYW4gcGljayBhbnkgY29tYmluYXRpb24g b2YgdGhlc2Uga2V5cy4gVGhlIFZNJ3MgZ3JhYgpvZiB0aGUgZXZkZXYgZGV2aWNlIHdpbGwgYmUg dG9nZ2xlZCB3aGVuIGFsbCBvZiB0aGUgc2VsZWN0ZWQKa2V5cyBhcmUgcHJlc3NlZCBhdCB0aGUg c2FtZSB0aW1lLiBJZiBncmFiX3RvZ2dsZSBpcyBub3Qgc3BlY2lmaWVkCm9yIG1hbGZvcm1lZCwg dGhlIGN1cnJlbnQgZGVmYXVsdCBvZiBsY3RybCtyY3RybCB3aWxsIGJlIHVzZWQuCgpJZiBzY3Jv bGxsb2NrIGlzIHNlbGVjdGVkIGFzIG9uZSBvZiB0aGUgZ3JhYl90b2dnbGUga2V5cywgaXQKd2ls bCBiZSBlbnRpcmVseSBkaXNhYmxlZCBhbmQgbm90IHBhc3NlZCB0byB0aGUgZ3Vlc3QgYXQgYWxs LgpUaGlzIGlzIHRvIHByZXZlbnQgZW5hYmxpbmcgaXQgd2hpbGUgYXR0ZW1wdGluZyB0byBsZWF2 ZSBvciBlbnRlcgp0aGUgVk0uIE9uIHRoZSBob3N0LCBzY3JvbGxsb2NrIGNhbiBiZSBkaXNhYmxl ZCB1c2luZyB4bW9kbWFwLgoKRmlyc3QsIGZpbmQgdGhlIG1vZGlmaWVyIHRoYXQgU2Nyb2xsX0xv Y2sgaXMgYm91bmQgdG86Cgp4bW9kbWFwIC1wbQoKVGhlbiwgcmVtb3ZlIFNjcm9sbF9Mb2NrIGZy b20gaXQsIHJlcGxhY2luZyBtb2RYIHdpdGggdGhlIG1vZGlmaWVyOgoKeG1vZG1hcCAtZSAncmVt b3ZlIG1vZFggPSBTY3JvbGxfTG9jaycKCklmIFNjcm9sbF9Mb2NrIGlzIG5vdCBib3VuZCB0byBh bnkgbW9kaWZpZXIsIGl0IGlzIGFscmVhZHkgZGlzYWJsZWQuCgpUbyBzYXZlIHRoZSBjaGFuZ2Vz LCBhZGQgdGhlbSB0byB5b3VyIHhpbml0cmMuCgpTaWduZWQtb2ZmLWJ5OiBSeWFuIEVsIEtvY2h0 YSA8bGlnaHRuMW5nc3RyMWtlQHByb3Rvbm1haWwuY29tPgotLS0KIHVpL2lucHV0LWxpbnV4LmMg fCAxNTYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KIDEg ZmlsZSBjaGFuZ2VkLCAxNTMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS91aS9pbnB1dC1saW51eC5jIGIvdWkvaW5wdXQtbGludXguYwppbmRleCA5NzIwMzMzYjJj Li4yY2JjODc3NjY3IDEwMDY0NAotLS0gYS91aS9pbnB1dC1saW51eC5jCisrKyBiL3VpL2lucHV0 LWxpbnV4LmMKQEAgLTEyLDYgKzEyLDcgQEAKICNpbmNsdWRlICJzeXNlbXUvc3lzZW11LmgiCiAj aW5jbHVkZSAidWkvaW5wdXQuaCIKICNpbmNsdWRlICJxb20vb2JqZWN0X2ludGVyZmFjZXMuaCIK KyNpbmNsdWRlICJpbmNsdWRlL3FlbXUvY3V0aWxzLmgiCiAKICNpbmNsdWRlIDxzeXMvaW9jdGwu aD4KICNpbmNsdWRlICJzdGFuZGFyZC1oZWFkZXJzL2xpbnV4L2lucHV0LmgiCkBAIC02Myw2ICs2 NCwxMSBAQCBzdHJ1Y3QgSW5wdXRMaW51eCB7CiAgICAgc3RydWN0IGlucHV0X2V2ZW50IGV2ZW50 OwogICAgIGludCAgICAgICAgIHJlYWRfb2Zmc2V0OwogCisgICAgY2hhciAgICAgICAgKmdyYWJf dG9nZ2xlOworICAgIGludCAgICAgICAgIGdyYWJfdG9nZ2xlX2xlbjsKKyAgICBpbnQgICAgICAg ICAqZ3JhYl90b2dnbGVfbGlzdDsKKyAgICBib29sICAgICAgICBza2lwX3Njcm9sbGxvY2s7CisK ICAgICBRVEFJTFFfRU5UUlkoSW5wdXRMaW51eCkgbmV4dDsKIH07CiAKQEAgLTk4LDYgKzEwNCwy NSBAQCBzdGF0aWMgdm9pZCBpbnB1dF9saW51eF90b2dnbGVfZ3JhYihJbnB1dExpbnV4ICppbCkK ICAgICB9CiB9CiAKK3N0YXRpYyBib29sIGlucHV0X2xpbnV4X2NoZWNrX2dyYWJfdG9nZ2xlKElu cHV0TGludXggKmlsKQoreworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpbC0+Z3JhYl90 b2dnbGVfbGVuOyBpKyspIHsKKyAgICAgICAgaWYgKCFpbC0+a2V5ZG93bltpbC0+Z3JhYl90b2dn bGVfbGlzdFtpXV0pIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAg IH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGJvb2wgaW5wdXRfbGludXhfY2hlY2tf c2tpcF9zY3JvbGxsb2NrKElucHV0TGludXggKmlsLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc3RydWN0IGlucHV0X2V2ZW50ICpldmVudCkKK3sKKyAgICBpZiAoaWwt PnNraXBfc2Nyb2xsbG9jayAmJiBldmVudC0+Y29kZSA9PSBLRVlfU0NST0xMTE9DSykgeworICAg ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBzdGF0aWMg dm9pZCBpbnB1dF9saW51eF9oYW5kbGVfa2V5Ym9hcmQoSW5wdXRMaW51eCAqaWwsCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGlucHV0X2V2ZW50ICpldmVu dCkKIHsKQEAgLTEyOCwxNCArMTUzLDEzIEBAIHN0YXRpYyB2b2lkIGlucHV0X2xpbnV4X2hhbmRs ZV9rZXlib2FyZChJbnB1dExpbnV4ICppbCwKICAgICAgICAgfQogCiAgICAgICAgIC8qIHNlbmQg ZXZlbnQgdG8gZ3Vlc3Qgd2hlbiBncmFiIGlzIGFjdGl2ZSAqLwotICAgICAgICBpZiAoaWwtPmdy YWJfYWN0aXZlKSB7CisgICAgICAgIGlmIChpbC0+Z3JhYl9hY3RpdmUgJiYgIWlucHV0X2xpbnV4 X2NoZWNrX3NraXBfc2Nyb2xsbG9jayhpbCwgZXZlbnQpKSB7CiAgICAgICAgICAgICBpbnQgcWNv ZGUgPSBxZW11X2lucHV0X2xpbnV4X3RvX3Fjb2RlKGV2ZW50LT5jb2RlKTsKICAgICAgICAgICAg IHFlbXVfaW5wdXRfZXZlbnRfc2VuZF9rZXlfcWNvZGUoTlVMTCwgcWNvZGUsIGV2ZW50LT52YWx1 ZSk7CiAgICAgICAgIH0KIAogICAgICAgICAvKiBob3RrZXkgLT4gcmVjb3JkIHN3aXRjaCByZXF1 ZXN0IC4uLiAqLwotICAgICAgICBpZiAoaWwtPmtleWRvd25bS0VZX0xFRlRDVFJMXSAmJgotICAg ICAgICAgICAgaWwtPmtleWRvd25bS0VZX1JJR0hUQ1RSTF0pIHsKKyAgICAgICAgaWYgKGlucHV0 X2xpbnV4X2NoZWNrX2dyYWJfdG9nZ2xlKGlsKSkgewogICAgICAgICAgICAgaWwtPmdyYWJfcmVx dWVzdCA9IHRydWU7CiAgICAgICAgIH0KIApAQCAtMjc0LDYgKzI5OCwxNSBAQCBzdGF0aWMgdm9p ZCBpbnB1dF9saW51eF9jb21wbGV0ZShVc2VyQ3JlYXRhYmxlICp1YywgRXJyb3IgKiplcnJwKQog ICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgaWYoIWlsLT5ncmFiX3RvZ2dsZSB8fCAhaWwt PmdyYWJfdG9nZ2xlX2xlbiB8fCAhaWwtPmdyYWJfdG9nZ2xlX2xpc3QpIHsKKyAgICAgICAgaWwt PnNraXBfc2Nyb2xsbG9jayA9IGZhbHNlOworICAgICAgICBpbC0+Z3JhYl90b2dnbGUgPSBOVUxM OworICAgICAgICBpbC0+Z3JhYl90b2dnbGVfbGVuID0gMjsKKyAgICAgICAgaWwtPmdyYWJfdG9n Z2xlX2xpc3QgPSBnX25ldyhpbnQsIDIpOworICAgICAgICBpbC0+Z3JhYl90b2dnbGVfbGlzdFsw XSA9IEtFWV9MRUZUQ1RSTDsKKyAgICAgICAgaWwtPmdyYWJfdG9nZ2xlX2xpc3RbMV0gPSBLRVlf UklHSFRDVFJMOworICAgIH0KKwogICAgIGlsLT5mZCA9IG9wZW4oaWwtPmV2ZGV2LCBPX1JEV1Ip OwogICAgIGlmIChpbC0+ZmQgPCAwKSAgewogICAgICAgICBlcnJvcl9zZXRnX2ZpbGVfb3Blbihl cnJwLCBlcnJubywgaWwtPmV2ZGV2KTsKQEAgLTQxMCwxMSArNDQzLDEyOCBAQCBzdGF0aWMgdm9p ZCBpbnB1dF9saW51eF9zZXRfcmVwZWF0KE9iamVjdCAqb2JqLCBib29sIHZhbHVlLAogICAgIGls LT5yZXBlYXQgPSB2YWx1ZTsKIH0KIAorc3RhdGljIHZvaWQgaW5wdXRfbGludXhfcG9wdWxhdGVf Z3JhYl90b2dnbGUoSW5wdXRMaW51eCAqaWwpCit7CisgICAgY2hhciAqb3JpZywgKnNhdmVwdHIs ICp0b2tlbjsKKyAgICB1bnNpZ25lZCBjbnRyID0gMDsKKworICAgIC8qCisgICAgICogSWYgbm8g Z3JhYl90b2dnbGUgc3RyaW5nIHdhcyBwcm92aWRlZCwgcmV0dXJuLgorICAgICAqIFRoaXMgd2ls bCBiZSBjbGVhbmVkIHVwIGluIHRoZSBpbnB1dF9saW51eF9jb21wbGV0ZSgpCisgICAgICogZnVu Y3Rpb24gYW5kIHJlc2V0IHRvIGJvdGggQ3RybCBrZXlzLgorICAgICAqLworICAgIGlmICghaWwt PmdyYWJfdG9nZ2xlKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpbC0+c2tpcF9z Y3JvbGxsb2NrID0gZmFsc2U7CisKKyAgICAvKiBDcmVhdGUgYSBuZXcgc3RyaW5nIGZvciBzdHJ0 b2tfciAqLworICAgIG9yaWcgPSBnX3N0cmR1cChpbC0+Z3JhYl90b2dnbGUpOworCisgICAgLyoK KyAgICAgKiBJdGVyYXRlIHRocm91Z2ggZWFjaCB0b2tlbiBpbiB0aGUgc3RyaW5nLAorICAgICAq IHNlcGFyYXRlZCBieSBkYXNoZXMsIGFuZCBhZGQgaXQgdG8gdGhlIGlsLT5ncmFiX3RvZ2dsZV9s aXN0CisgICAgICogYXJyYXkuCisgICAgICoKKyAgICAgKiBVbmZvcnR1bmF0ZWx5IHRoaXMgbXVz dCBiZSBkb25lIHR3aWNlIGluIG9yZGVyIHRvCisgICAgICogZGV0ZXJtaW5lIGhvdyBtdWNoIG1l bW9yeSB3aWxsIGJlIGFsbG9jYXRlZCBsYXRlciBvbi4KKyAgICAgKi8KKworICAgIC8qIEZpcnN0 IGl0ZXJhdGlvbiAqLworICAgIGlsLT5ncmFiX3RvZ2dsZV9sZW4gPSAwOworICAgIHNhdmVwdHIg PSBvcmlnOworICAgIHdoaWxlIChzdHJ0b2tfcihzYXZlcHRyLCAiLSIsICZzYXZlcHRyKSkgewor ICAgICAgICBpbC0+Z3JhYl90b2dnbGVfbGVuKys7CisgICAgICAgIC8qIElmIHRoaXMgb3ZlcmZs b3dzLCB1c2UgdGhlIGRlZmF1bHQgKi8KKyAgICAgICAgaWYgKGlsLT5ncmFiX3RvZ2dsZV9sZW4g PCAwKSB7CisgICAgICAgICAgICBpbC0+Z3JhYl90b2dnbGVfbGVuID0gMDsKKyAgICAgICAgICAg IGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgLyoKKyAgICAgKiBJZiB0aGUgY291bnQg Zm91bmQgemVybyB0b2tlbnMsIHJldHVybiBhbiBlbXB0eSBsaXN0LgorICAgICAqIEFnYWluLCB0 aGlzIHdpbGwgYmUgY2xlYW5lZCB1cCBpbiBpbnB1dF9saW51eF9jb21wbGV0ZSgpLgorICAgICAq LworICAgIGlmICghaWwtPmdyYWJfdG9nZ2xlX2xlbikgeworICAgICAgICBnX2ZyZWUob3JpZyk7 CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvKiBTZWNvbmQgc2NhbiAqLworICAgIGls LT5ncmFiX3RvZ2dsZV9saXN0ID0gZ19uZXcoaW50LCBpbC0+Z3JhYl90b2dnbGVfbGVuKTsKKyAg ICBzdHJjcHkob3JpZywgaWwtPmdyYWJfdG9nZ2xlKTsKKyAgICBzYXZlcHRyID0gb3JpZzsKKwor ICAgIC8qIEFkZCBlYWNoIHRva2VuJ3Mga2V5IHRvIHRoZSBsaXN0ICovCisgICAgd2hpbGUgKCh0 b2tlbiA9IHN0cnRva19yKHNhdmVwdHIsICItIiwgJnNhdmVwdHIpKSkgeworICAgICAgICBpZiAo IXN0cmNtcCh0b2tlbiwgImxjdHJsIikpIHsKKyAgICAgICAgICAgIGlsLT5ncmFiX3RvZ2dsZV9s aXN0W2NudHJdID0gS0VZX0xFRlRDVFJMOworICAgICAgICB9IGVsc2UgaWYgKCFzdHJjbXAodG9r ZW4sICJyY3RybCIpKSB7CisgICAgICAgICAgICBpbC0+Z3JhYl90b2dnbGVfbGlzdFtjbnRyXSA9 IEtFWV9SSUdIVENUUkw7CisgICAgICAgIH0gZWxzZSBpZiAoIXN0cmNtcCh0b2tlbiwgImxhbHQi KSkgeworICAgICAgICAgICAgaWwtPmdyYWJfdG9nZ2xlX2xpc3RbY250cl0gPSBLRVlfTEVGVEFM VDsKKyAgICAgICAgfSBlbHNlIGlmICghc3RyY21wKHRva2VuLCAicmFsdCIpKSB7CisgICAgICAg ICAgICBpbC0+Z3JhYl90b2dnbGVfbGlzdFtjbnRyXSA9IEtFWV9SSUdIVEFMVDsKKyAgICAgICAg fSBlbHNlIGlmICghc3RyY21wKHRva2VuLCAibHNoaWZ0IikpIHsKKyAgICAgICAgICAgIGlsLT5n cmFiX3RvZ2dsZV9saXN0W2NudHJdID0gS0VZX0xFRlRTSElGVDsKKyAgICAgICAgfSBlbHNlIGlm ICghc3RyY21wKHRva2VuLCAicnNoaWZ0IikpIHsKKyAgICAgICAgICAgIGlsLT5ncmFiX3RvZ2ds ZV9saXN0W2NudHJdID0gS0VZX1JJR0hUU0hJRlQ7CisgICAgICAgIH0gZWxzZSBpZiAoIXN0cmNt cCh0b2tlbiwgImJhY2t0aWNrIikpIHsKKyAgICAgICAgICAgIGlsLT5ncmFiX3RvZ2dsZV9saXN0 W2NudHJdID0gS0VZX0dSQVZFOworICAgICAgICB9IGVsc2UgaWYgKCFzdHJjbXAodG9rZW4sICJz Y3JvbGxsb2NrIikpIHsKKyAgICAgICAgICAgIGlsLT5ncmFiX3RvZ2dsZV9saXN0W2NudHJdID0g S0VZX1NDUk9MTExPQ0s7CisgICAgICAgICAgICBpbC0+c2tpcF9zY3JvbGxsb2NrID0gdHJ1ZTsK KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAqIElmIGFueSBv ZiB0aGUgcGFyYW1ldGVycyBhcmUgaW52YWxpZCwKKyAgICAgICAgICAgICogc3RpY2sgdG8gdGhl IGRlZmF1bHQgb2YgTEN0cmwrUkN0cmwuCisgICAgICAgICAgICAqCisgICAgICAgICAgICAqIFdl IGNvdWxkIGp1c3Qgc2tpcCB0aGF0IHBhcmFtZXRlciwgYnV0CisgICAgICAgICAgICAqIHRoYXQg bWVhbnMgaWYgeW91IGlucHV0IG9ubHkgaW52YWxpZCBwYXJhbWV0ZXJzLAorICAgICAgICAgICAg KiB0aGVyZSB3b3VsZCBiZSBubyB3YXkgdG8gZXNjYXBlIHRoZSBWTS4KKyAgICAgICAgICAgICov CisgICAgICAgICAgICBpbC0+Z3JhYl90b2dnbGVfbGVuID0gMDsKKyAgICAgICAgICAgIGdfZnJl ZShvcmlnKTsKKyAgICAgICAgICAgIGdfZnJlZShpbC0+Z3JhYl90b2dnbGVfbGlzdCk7CisgICAg ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBjbnRyKys7CisgICAgfQorICAg IGdfZnJlZShvcmlnKTsKK30KKworc3RhdGljIGNoYXIgKmlucHV0X2xpbnV4X2dldF9ncmFiX3Rv Z2dsZShPYmplY3QgKm9iaiwgRXJyb3IgKiplcnJwKQoreworICAgIElucHV0TGludXggKmlsID0g SU5QVVRfTElOVVgob2JqKTsKKworICAgIHJldHVybiBnX3N0cmR1cChpbC0+Z3JhYl90b2dnbGUp OworfQorCitzdGF0aWMgdm9pZCBpbnB1dF9saW51eF9zZXRfZ3JhYl90b2dnbGUoT2JqZWN0ICpv YmosIGNvbnN0IGNoYXIgKnZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEVycm9yICoqZXJycCkKK3sKKyAgICBJbnB1dExpbnV4ICppbCA9IElOUFVUX0xJTlVY KG9iaik7CisKKyAgICBpZiAoaWwtPmdyYWJfdG9nZ2xlKSB7CisgICAgICAgIGVycm9yX3NldGco ZXJycCwgImdyYWJfdG9nZ2xlIHByb3BlcnR5IGFscmVhZHkgc2V0Iik7CisgICAgICAgIHJldHVy bjsKKyAgICB9CisgICAgaWwtPmdyYWJfdG9nZ2xlID0gZ19zdHJkdXAodmFsdWUpOworCisgICAg aW5wdXRfbGludXhfcG9wdWxhdGVfZ3JhYl90b2dnbGUoaWwpOworfQorCiBzdGF0aWMgdm9pZCBp bnB1dF9saW51eF9pbnN0YW5jZV9pbml0KE9iamVjdCAqb2JqKQogewogICAgIG9iamVjdF9wcm9w ZXJ0eV9hZGRfc3RyKG9iaiwgImV2ZGV2IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp bnB1dF9saW51eF9nZXRfZXZkZXYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRf bGludXhfc2V0X2V2ZGV2LCBOVUxMKTsKKyAgICBvYmplY3RfcHJvcGVydHlfYWRkX3N0cihvYmos ICJncmFiX3RvZ2dsZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRfbGludXhf Z2V0X2dyYWJfdG9nZ2xlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0X2xpbnV4 X3NldF9ncmFiX3RvZ2dsZSwgTlVMTCk7CiAgICAgb2JqZWN0X3Byb3BlcnR5X2FkZF9ib29sKG9i aiwgImdyYWJfYWxsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRfbGludXhf Z2V0X2dyYWJfYWxsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dF9saW51eF9z ZXRfZ3JhYl9hbGwsIE5VTEwpOwotLSAKMi4xOC4wCgo= --b1_bb6f4ae9194fd87cb913f05e40e3403d--