drm: Branch 'master' - 6 commits
[email protected] (GitLab Mirror) Mon, 18 Mar 2019 15:51:06 +0000 (UTC)
| Newsgroups | gmane.comp.video.dri.patches |
|---|---|
| Message-ID | <[email protected]> |
IGRhdGEvYW1kZ3B1LmlkcyAgICAgICAgICAgICAgIHwgICAgMSAKIHRlc3RzL2FtZGdwdS9hbWRn cHVfdGVzdC5jICAgIHwgICAxNCAKIHRlc3RzL2FtZGdwdS9iYXNpY190ZXN0cy5jICAgIHwgMTIy OCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KIHRlc3RzL2FtZGdw dS9kZWFkbG9ja190ZXN0cy5jIHwgIDEwMyArKysKIDQgZmlsZXMgY2hhbmdlZCwgMTM0MyBpbnNl cnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQoKTmV3IGNvbW1pdHM6CmNvbW1pdCA4NTJhOWQyMGFk NjQ1ZDM5OTc3NGEyYjNmZjE3NDY1MjE4NDFiYTU0CkF1dGhvcjogQ3VpLCBGbG9yYSA8RmxvcmEu Q3VpQGFtZC5jb20+CkRhdGU6ICAgRnJpIE1hciAxNSAwODo1MToyMSAyMDE5ICswMDAwCgogICAg dGVzdHMvYW1kZ3B1OiBhZGQgbWVtY3B5IGRyYXcgdGVzdAogICAgCiAgICBhZGQgbWVtY3B5IGRy YXcgdGVzdCBmb3IgZ2Z4OQogICAgCiAgICBTaWduZWQtb2ZmLWJ5OiBGbG9yYSBDdWkgPGZsb3Jh LmN1aUBhbWQuY29tPgogICAgVGVzdGVkLWJ5OiBSdWkgVGVuZyA8cnVpLnRlbmdAYW1kLmNvbT4K ICAgIFNpZ25lZC1vZmYtYnk6IEFsZXggRGV1Y2hlciA8YWxleGFuZGVyLmRldWNoZXJAYW1kLmNv bT4KCmRpZmYgLS1naXQgYS90ZXN0cy9hbWRncHUvYmFzaWNfdGVzdHMuYyBiL3Rlc3RzL2FtZGdw dS9iYXNpY190ZXN0cy5jCmluZGV4IDBiYTYxOTkzLi5hMzY0ZjY3YSAxMDA2NDQKLS0tIGEvdGVz dHMvYW1kZ3B1L2Jhc2ljX3Rlc3RzLmMKKysrIGIvdGVzdHMvYW1kZ3B1L2Jhc2ljX3Rlc3RzLmMK QEAgLTM0Myw3ICszNDMsOCBAQCBzdGF0aWMgY29uc3QgdWludDMyX3QgcHJlYW1ibGVjYWNoZV9n Zng5W10gPSB7CiB9OwogCiBlbnVtIHBzX3R5cGUgewotCVBTX0NPTlNUCisJUFNfQ09OU1QsCisJ UFNfVEVYCiB9OwogCiBzdGF0aWMgY29uc3QgdWludDMyX3QgcHNfY29uc3Rfc2hhZGVyX2dmeDlb XSA9IHsKQEAgLTM5MSw2ICszOTIsNDkgQEAgc3RhdGljIGNvbnN0IHVpbnQzMl90IHBzX2NvbnN0 X2NvbnRleHRfcmVnX2dmeDlbXVsyXSA9IHsKICAgICB7MHhBMUM1LCAweDAwMDAwMDA0fSwgLy97 IG1tU1BJX1NIQURFUl9DT0xfRk9STUFULCAgIDB4MDAwMDAwMDQgfQogfTsKIAorc3RhdGljIGNv bnN0IHVpbnQzMl90IHBzX3RleF9zaGFkZXJfZ2Z4OVtdID0geworICAgIDB4QkVGQzAwMEMsIDB4 QkU4RTAxN0UsIDB4QkVGRTA3N0UsIDB4RDQxODAwMDAsCisgICAgMHhENDE5MDAwMSwgMHhENDFD MDEwMCwgMHhENDFEMDEwMSwgMHhGMDgwMEYwMCwKKyAgICAweDAwNDAwMjA2LCAweEJFRkUwMTBF LCAweEJGOEMwRjcwLCAweEQyOTYwMDAwLAorICAgIDB4MDAwMjA3MDIsIDB4RDI5NjAwMDEsIDB4 MDAwMjBCMDQsIDB4QzQwMDFDMEYsCisgICAgMHgwMDAwMDEwMCwgMHhCRjgxMDAwMAorfTsKKwor c3RhdGljIGNvbnN0IHVpbnQzMl90IHBzX3RleF9zaGFkZXJfcGF0Y2hpbmZvX29mZnNldF9nZng5 W10gPSB7CisgICAgMHgwMDAwMDAwQgorfTsKKworc3RhdGljIGNvbnN0IHVpbnQzMl90IHBzX3Rl eF9zaGFkZXJfcGF0Y2hpbmZvX2NvZGVfc2l6ZV9nZng5ID0gNjsKKworc3RhdGljIGNvbnN0IHVp bnQzMl90IHBzX3RleF9zaGFkZXJfcGF0Y2hpbmZvX2NvZGVfZ2Z4OVtdWzEwXVs2XSA9IHsKKyAg ICB7eyAweEJGODAwMDAwLCAweEJGODAwMDAwLCAweEJGODAwMDAwLCAweEJGODAwMDAwLCAweEM0 MDAxODkwLCAweDAwMDAwMDAwIH0sCisgICAgIHsgMHhCRjgwMDAwMCwgMHhCRjgwMDAwMCwgMHhC RjgwMDAwMCwgMHhCRjgwMDAwMCwgMHhDNDAwMTgwMSwgMHgwMDAwMDAwMiB9LAorICAgICB7IDB4 QkY4MDAwMDAsIDB4QkY4MDAwMDAsIDB4QkY4MDAwMDAsIDB4QkY4MDAwMDAsIDB4QzQwMDE4MDMs IDB4MDAwMDAzMDIgfSwKKyAgICAgeyAweEJGODAwMDAwLCAweEJGODAwMDAwLCAweEJGODAwMDAw LCAweEJGODAwMDAwLCAweEM0MDAxODAzLCAweDAwMDAwNTAyIH0sCisgICAgIHsgMHhEMjk2MDAw MCwgMHgwMDAyMDcwMiwgMHhEMjk2MDAwMSwgMHgwMDAyMEIwNCwgMHhDNDAwMUMwRiwgMHgwMDAw MDEwMCB9LAorICAgICB7IDB4RDI5NTAwMDAsIDB4MDAwMjA3MDIsIDB4RDI5NTAwMDEsIDB4MDAw MjBCMDQsIDB4QzQwMDFDMEYsIDB4MDAwMDAxMDAgfSwKKyAgICAgeyAweEQyOTQwMDAwLCAweDAw MDIwNzAyLCAweEQyOTQwMDAxLCAweDAwMDIwQjA0LCAweEM0MDAxQzBGLCAweDAwMDAwMTAwIH0s CisgICAgIHsgMHhEMjk3MDAwMCwgMHgwMDAyMDcwMiwgMHhEMjk3MDAwMSwgMHgwMDAyMEIwNCwg MHhDNDAwMUMwRiwgMHgwMDAwMDEwMCB9LAorICAgICB7IDB4RDI5ODAwMDAsIDB4MDAwMjA3MDIs IDB4RDI5ODAwMDEsIDB4MDAwMjBCMDQsIDB4QzQwMDFDMEYsIDB4MDAwMDAxMDAgfSwKKyAgICAg eyAweEJGODAwMDAwLCAweEJGODAwMDAwLCAweEJGODAwMDAwLCAweEJGODAwMDAwLCAweEM0MDAx ODBGLCAweDA1MDQwMzAyIH0KKyAgICB9Cit9OworCitzdGF0aWMgY29uc3QgdWludDMyX3QgcHNf dGV4X3NoX3JlZ2lzdGVyc19nZng5W11bMl0gPSB7CisgICAgezB4MkMwQSwgMHgwMDBDMDA4MX0s Ly97IG1tU1BJX1NIQURFUl9QR01fUlNSQzFfUFMsIDB4MDAwQzAwODEgfSwKKyAgICB7MHgyQzBC LCAweDAwMDAwMDE4fSwgLy97IG1tU1BJX1NIQURFUl9QR01fUlNSQzJfUFMsIDB4MDAwMDAwMTgg fQorfTsKKworc3RhdGljIGNvbnN0IHVpbnQzMl90IHBzX3RleF9jb250ZXh0X3JlZ19nZng5W11b Ml0gPSB7CisgICAgezB4QTFCNCwgMHgwMDAwMDAwMn0sIC8veyBtbVNQSV9QU19JTlBVVF9BRERS LCAgICAgICAweDAwMDAwMDAyIH0sCisgICAgezB4QTFCNiwgMHgwMDAwMDAwMX0sIC8veyBtbVNQ SV9QU19JTl9DT05UUk9MLCAgICAgICAweDAwMDAwMDAxIH0sCisgICAgezB4QTA4RiwgMHgwMDAw MDAwRn0sIC8veyBtbUNCX1NIQURFUl9NQVNLLCAgICAgICAgICAweDAwMDAwMDBGIH0sCisgICAg ezB4QTIwMywgMHgwMDAwMDAxMH0sIC8veyBtbURCX1NIQURFUl9DT05UUk9MLCAgICAgICAweDAw MDAwMDEwIH0sCisgICAgezB4QTFDNCwgMHgwMDAwMDAwMH0sIC8veyBtbVNQSV9TSEFERVJfWl9G T1JNQVQsICAgICAweDAwMDAwMDAwIH0sCisgICAgezB4QTFCOCwgMHgwMDAwMDAwMH0sIC8veyBt bVNQSV9CQVJZQ19DTlRMLCAgICAgICAgICAweDAwMDAwMDAwIC8qIEFsd2F5cyAwIGZvciBub3cg Ki99LAorICAgIHsweEExQzUsIDB4MDAwMDAwMDR9LCAvL3sgbW1TUElfU0hBREVSX0NPTF9GT1JN QVQsICAgMHgwMDAwMDAwNCAgfQorfTsKKwogc3RhdGljIGNvbnN0IHVpbnQzMl90IHZzX1JlY3RQ b3NUZXhGYXN0X3NoYWRlcl9nZng5W10gPSB7CiAgICAgMHg3RTAwMEIwMCwgMHgwMjAwMDBGMywg MHhEMDQyMDAwQSwgMHgwMDAxMDEwMCwKICAgICAweDdFMDIwMjAyLCAweDdFMDQwMjAwLCAweDAy MDAwMEYzLCAweDdFMDYwMjA2LApAQCAtMjQyNSw2ICsyNDY5LDEzIEBAIHN0YXRpYyBpbnQgYW1k Z3B1X2RyYXdfbG9hZF9wc19zaGFkZXIodWludDhfdCAqcHRyLCBpbnQgcHNfdHlwZSkKIAkJCXBh dGNoaW5mb19jb2RlX3NpemUgPSBwc19jb25zdF9zaGFkZXJfcGF0Y2hpbmZvX2NvZGVfc2l6ZV9n Zng5OwogCQkJcGF0Y2hjb2RlX29mZnNldCA9IHBzX2NvbnN0X3NoYWRlcl9wYXRjaGluZm9fb2Zm c2V0X2dmeDk7CiAJCQlicmVhazsKKwkJY2FzZSBQU19URVg6CisJCQlzaGFkZXIgPSBwc190ZXhf c2hhZGVyX2dmeDk7CisJCQlzaGFkZXJfc2l6ZSA9IHNpemVvZihwc190ZXhfc2hhZGVyX2dmeDkp OworCQkJcGF0Y2hpbmZvX2NvZGUgPSAoY29uc3QgdWludDMyX3QgKilwc190ZXhfc2hhZGVyX3Bh dGNoaW5mb19jb2RlX2dmeDk7CisJCQlwYXRjaGluZm9fY29kZV9zaXplID0gcHNfdGV4X3NoYWRl cl9wYXRjaGluZm9fY29kZV9zaXplX2dmeDk7CisJCQlwYXRjaGNvZGVfb2Zmc2V0ID0gcHNfdGV4 X3NoYWRlcl9wYXRjaGluZm9fb2Zmc2V0X2dmeDk7CisJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJ CXJldHVybiAtMTsKIAkJCWJyZWFrOwpAQCAtMjU3OCw3ICsyNjI5LDkgQEAgc3RhdGljIGludCBh bWRncHVfZHJhd19zZXR1cF9hbmRfd3JpdGVfZHJhd2JsdF9zdGF0ZSh1aW50MzJfdCAqcHRyKQog CXJldHVybiBpOwogfQogCi1zdGF0aWMgaW50IGFtZGdwdV9kcmF3X3ZzX1JlY3RQb3NUZXhGYXN0 X3dyaXRlMmh3KHVpbnQzMl90ICpwdHIsIHVpbnQ2NF90IHNoYWRlcl9hZGRyKQorc3RhdGljIGlu dCBhbWRncHVfZHJhd192c19SZWN0UG9zVGV4RmFzdF93cml0ZTJodyh1aW50MzJfdCAqcHRyLAor CQkJCQkJICBpbnQgcHNfdHlwZSwKKwkJCQkJCSAgdWludDY0X3Qgc2hhZGVyX2FkZHIpCiB7CiAJ aW50IGkgPSAwOwogCkBAIC0yNjI1LDcgKzI2NzgsMTMgQEAgc3RhdGljIGludCBhbWRncHVfZHJh d192c19SZWN0UG9zVGV4RmFzdF93cml0ZTJodyh1aW50MzJfdCAqcHRyLCB1aW50NjRfdCBzaGFk ZXIKIAogCXB0cltpKytdID0gUEFDS0VUMyhQS1QzX1NFVF9TSF9SRUcsIDQpOwogCXB0cltpKytd ID0gMHg1MDsKLQlpICs9IDQ7CisJaSArPSAyOworCWlmIChwc190eXBlID09IFBTX0NPTlNUKSB7 CisJCWkgKz0gMjsKKwl9IGVsc2UgaWYgKHBzX3R5cGUgPT0gUFNfVEVYKSB7CisJCXB0cltpKytd ID0gMHgzZjgwMDAwMDsKKwkJcHRyW2krK10gPSAweDNmODAwMDAwOworCX0KIAogCXB0cltpKytd ID0gUEFDS0VUMyhQS1QzX1NFVF9TSF9SRUcsIDQpOwogCXB0cltpKytdID0gMHg1NDsKQEAgLTI2 MzQsMTcgKzI2OTMsMjYgQEAgc3RhdGljIGludCBhbWRncHVfZHJhd192c19SZWN0UG9zVGV4RmFz dF93cml0ZTJodyh1aW50MzJfdCAqcHRyLCB1aW50NjRfdCBzaGFkZXIKIAlyZXR1cm4gaTsKIH0K IAotc3RhdGljIGludCBhbWRncHVfZHJhd19wc193cml0ZTJodyh1aW50MzJfdCAqcHRyLCB1aW50 NjRfdCBzaGFkZXJfYWRkcikKK3N0YXRpYyBpbnQgYW1kZ3B1X2RyYXdfcHNfd3JpdGUyaHcodWlu dDMyX3QgKnB0ciwKKwkJCQkgICBpbnQgcHNfdHlwZSwKKwkJCQkgICB1aW50NjRfdCBzaGFkZXJf YWRkcikKIHsKIAlpbnQgaSwgajsKIAljb25zdCB1aW50MzJfdCAqc2hfcmVnaXN0ZXJzOwogCWNv bnN0IHVpbnQzMl90ICpjb250ZXh0X3JlZ2lzdGVyczsKIAl1aW50MzJfdCBudW1fc2hfcmVnLCBu dW1fY29udGV4dF9yZWc7CiAKLQlzaF9yZWdpc3RlcnMgPSAoY29uc3QgdWludDMyX3QgKilwc19j b25zdF9zaF9yZWdpc3RlcnNfZ2Z4OTsKLQljb250ZXh0X3JlZ2lzdGVycyA9IChjb25zdCB1aW50 MzJfdCAqKXBzX2NvbnN0X2NvbnRleHRfcmVnX2dmeDk7Ci0JbnVtX3NoX3JlZyA9IHBzX251bV9z aF9yZWdpc3RlcnNfZ2Z4OTsKLQludW1fY29udGV4dF9yZWcgPSBwc19udW1fY29udGV4dF9yZWdp c3RlcnNfZ2Z4OTsKKwlpZiAocHNfdHlwZSA9PSBQU19DT05TVCkgeworCQlzaF9yZWdpc3RlcnMg PSAoY29uc3QgdWludDMyX3QgKilwc19jb25zdF9zaF9yZWdpc3RlcnNfZ2Z4OTsKKwkJY29udGV4 dF9yZWdpc3RlcnMgPSAoY29uc3QgdWludDMyX3QgKilwc19jb25zdF9jb250ZXh0X3JlZ19nZng5 OworCQludW1fc2hfcmVnID0gcHNfbnVtX3NoX3JlZ2lzdGVyc19nZng5OworCQludW1fY29udGV4 dF9yZWcgPSBwc19udW1fY29udGV4dF9yZWdpc3RlcnNfZ2Z4OTsKKwl9IGVsc2UgaWYgKHBzX3R5 cGUgPT0gUFNfVEVYKSB7CisJCXNoX3JlZ2lzdGVycyA9IChjb25zdCB1aW50MzJfdCAqKXBzX3Rl eF9zaF9yZWdpc3RlcnNfZ2Z4OTsKKwkJY29udGV4dF9yZWdpc3RlcnMgPSAoY29uc3QgdWludDMy X3QgKilwc190ZXhfY29udGV4dF9yZWdfZ2Z4OTsKKwkJbnVtX3NoX3JlZyA9IHBzX251bV9zaF9y ZWdpc3RlcnNfZ2Z4OTsKKwkJbnVtX2NvbnRleHRfcmVnID0gcHNfbnVtX2NvbnRleHRfcmVnaXN0 ZXJzX2dmeDk7CisJfQogCiAJaSA9IDA7CiAKQEAgLTI3NDYsOSArMjgxNCw5IEBAIHZvaWQgYW1k Z3B1X21lbXNldF9kcmF3KGFtZGdwdV9kZXZpY2VfaGFuZGxlIGRldmljZV9oYW5kbGUsCiAKIAlp ICs9IGFtZGdwdV9kcmF3X3NldHVwX2FuZF93cml0ZV9kcmF3Ymx0X3N0YXRlKHB0cl9jbWQgKyBp KTsKIAotCWkgKz0gYW1kZ3B1X2RyYXdfdnNfUmVjdFBvc1RleEZhc3Rfd3JpdGUyaHcocHRyX2Nt ZCArIGksIG1jX2FkZHJlc3Nfc2hhZGVyX3ZzKTsKKwlpICs9IGFtZGdwdV9kcmF3X3ZzX1JlY3RQ b3NUZXhGYXN0X3dyaXRlMmh3KHB0cl9jbWQgKyBpLCBQU19DT05TVCwgbWNfYWRkcmVzc19zaGFk ZXJfdnMpOwogCi0JaSArPSBhbWRncHVfZHJhd19wc193cml0ZTJodyhwdHJfY21kICsgaSwgbWNf YWRkcmVzc19zaGFkZXJfcHMpOworCWkgKz0gYW1kZ3B1X2RyYXdfcHNfd3JpdGUyaHcocHRyX2Nt ZCArIGksIFBTX0NPTlNULCBtY19hZGRyZXNzX3NoYWRlcl9wcyk7CiAKIAlwdHJfY21kW2krK10g PSBQQUNLRVQzKFBLVDNfU0VUX1NIX1JFRywgNCk7CiAJcHRyX2NtZFtpKytdID0gMHhjOwpAQCAt Mjg1Myw2ICsyOTIxLDE3OCBAQCBzdGF0aWMgdm9pZCBhbWRncHVfbWVtc2V0X2RyYXdfdGVzdChh bWRncHVfZGV2aWNlX2hhbmRsZSBkZXZpY2VfaGFuZGxlLAogCUNVX0FTU0VSVF9FUVVBTChyLCAw KTsKIH0KIAorc3RhdGljIHZvaWQgYW1kZ3B1X21lbWNweV9kcmF3KGFtZGdwdV9kZXZpY2VfaGFu ZGxlIGRldmljZV9oYW5kbGUsCisJCQkgICAgICAgYW1kZ3B1X2JvX2hhbmRsZSBib19zaGFkZXJf cHMsCisJCQkgICAgICAgYW1kZ3B1X2JvX2hhbmRsZSBib19zaGFkZXJfdnMsCisJCQkgICAgICAg dWludDY0X3QgbWNfYWRkcmVzc19zaGFkZXJfcHMsCisJCQkgICAgICAgdWludDY0X3QgbWNfYWRk cmVzc19zaGFkZXJfdnMsCisJCQkgICAgICAgdWludDMyX3QgcmluZykKK3sKKwlhbWRncHVfY29u dGV4dF9oYW5kbGUgY29udGV4dF9oYW5kbGU7CisJYW1kZ3B1X2JvX2hhbmRsZSBib19kc3QsIGJv X3NyYywgYm9fY21kLCByZXNvdXJjZXNbNV07CisJdm9sYXRpbGUgdW5zaWduZWQgY2hhciAqcHRy X2RzdDsKKwl1bnNpZ25lZCBjaGFyICpwdHJfc3JjOworCXVpbnQzMl90ICpwdHJfY21kOworCXVp bnQ2NF90IG1jX2FkZHJlc3NfZHN0LCBtY19hZGRyZXNzX3NyYywgbWNfYWRkcmVzc19jbWQ7CisJ YW1kZ3B1X3ZhX2hhbmRsZSB2YV9kc3QsIHZhX3NyYywgdmFfY21kOworCWludCBpLCByOworCWlu dCBib19zaXplID0gMTYzODQ7CisJaW50IGJvX2NtZF9zaXplID0gNDA5NjsKKwlzdHJ1Y3QgYW1k Z3B1X2NzX3JlcXVlc3QgaWJzX3JlcXVlc3QgPSB7MH07CisJc3RydWN0IGFtZGdwdV9jc19pYl9p bmZvIGliX2luZm89IHswfTsKKwl1aW50MzJfdCBoYW5nX3N0YXRlLCBoYW5ncywgZXhwaXJlZDsK KwlhbWRncHVfYm9fbGlzdF9oYW5kbGUgYm9fbGlzdDsKKwlzdHJ1Y3QgYW1kZ3B1X2NzX2ZlbmNl IGZlbmNlX3N0YXR1cyA9IHswfTsKKworCXIgPSBhbWRncHVfY3NfY3R4X2NyZWF0ZShkZXZpY2Vf aGFuZGxlLCAmY29udGV4dF9oYW5kbGUpOworCUNVX0FTU0VSVF9FUVVBTChyLCAwKTsKKworCXIg PSBhbWRncHVfYm9fYWxsb2NfYW5kX21hcChkZXZpY2VfaGFuZGxlLCBib19jbWRfc2l6ZSwgNDA5 NiwKKwkJCQkgICAgQU1ER1BVX0dFTV9ET01BSU5fR1RULCAwLAorCQkJCSAgICAmYm9fY21kLCAo dm9pZCAqKikmcHRyX2NtZCwKKwkJCQkgICAgJm1jX2FkZHJlc3NfY21kLCAmdmFfY21kKTsKKwlD VV9BU1NFUlRfRVFVQUwociwgMCk7CisKKwlyID0gYW1kZ3B1X2JvX2FsbG9jX2FuZF9tYXAoZGV2 aWNlX2hhbmRsZSwgYm9fc2l6ZSwgNDA5NiwKKwkJCQkJQU1ER1BVX0dFTV9ET01BSU5fVlJBTSwg MCwKKwkJCQkJJmJvX3NyYywgKHZvaWQgKiopJnB0cl9zcmMsCisJCQkJCSZtY19hZGRyZXNzX3Ny YywgJnZhX3NyYyk7CisJQ1VfQVNTRVJUX0VRVUFMKHIsIDApOworCisJciA9IGFtZGdwdV9ib19h bGxvY19hbmRfbWFwKGRldmljZV9oYW5kbGUsIGJvX3NpemUsIDQwOTYsCisJCQkJCUFNREdQVV9H RU1fRE9NQUlOX1ZSQU0sIDAsCisJCQkJCSZib19kc3QsICh2b2lkICoqKSZwdHJfZHN0LAorCQkJ CQkmbWNfYWRkcmVzc19kc3QsICZ2YV9kc3QpOworCUNVX0FTU0VSVF9FUVVBTChyLCAwKTsKKwor CW1lbXNldChwdHJfc3JjLCAweDU1LCBib19zaXplKTsKKworCWkgPSAwOworCWkgKz0gYW1kZ3B1 X2RyYXdfaW5pdChwdHJfY21kICsgaSk7CisKKwlpICs9IGFtZGdwdV9kcmF3X3NldHVwX2FuZF93 cml0ZV9kcmF3Ymx0X3N1cmZfaW5mbyhwdHJfY21kICsgaSwgbWNfYWRkcmVzc19kc3QpOworCisJ aSArPSBhbWRncHVfZHJhd19zZXR1cF9hbmRfd3JpdGVfZHJhd2JsdF9zdGF0ZShwdHJfY21kICsg aSk7CisKKwlpICs9IGFtZGdwdV9kcmF3X3ZzX1JlY3RQb3NUZXhGYXN0X3dyaXRlMmh3KHB0cl9j bWQgKyBpLCBQU19URVgsIG1jX2FkZHJlc3Nfc2hhZGVyX3ZzKTsKKworCWkgKz0gYW1kZ3B1X2Ry YXdfcHNfd3JpdGUyaHcocHRyX2NtZCArIGksIFBTX1RFWCwgbWNfYWRkcmVzc19zaGFkZXJfcHMp OworCisJcHRyX2NtZFtpKytdID0gUEFDS0VUMyhQS1QzX1NFVF9TSF9SRUcsIDgpOworCXB0cl9j bWRbaSsrXSA9IDB4YzsKKwlwdHJfY21kW2krK10gPSBtY19hZGRyZXNzX3NyYyA+PiA4OworCXB0 cl9jbWRbaSsrXSA9IG1jX2FkZHJlc3Nfc3JjID4+IDQwIHwgMHgxMGUwMDAwMDsKKwlwdHJfY21k W2krK10gPSAweDdjMDFmOworCXB0cl9jbWRbaSsrXSA9IDB4OTA1MDBmYWM7CisJcHRyX2NtZFtp KytdID0gMHgzZTAwMDsKKwlpICs9IDM7CisKKwlwdHJfY21kW2krK10gPSBQQUNLRVQzKFBLVDNf U0VUX1NIX1JFRywgNCk7CisJcHRyX2NtZFtpKytdID0gMHgxNDsKKwlwdHJfY21kW2krK10gPSAw eDkyOworCWkgKz0gMzsKKworCXB0cl9jbWRbaSsrXSA9IFBBQ0tFVDMoUEtUM19TRVRfU0hfUkVH LCAxKTsKKwlwdHJfY21kW2krK10gPSAweDE5MTsKKwlwdHJfY21kW2krK10gPSAwOworCisJaSAr PSBhbWRncHVfZHJhd19kcmF3KHB0cl9jbWQgKyBpKTsKKworCXdoaWxlIChpICYgNykKKwkJcHRy X2NtZFtpKytdID0gIDB4ZmZmZjEwMDA7IC8qIHR5cGUzIG5vcCBwYWNrZXQgKi8KKworCXJlc291 cmNlc1swXSA9IGJvX2RzdDsKKwlyZXNvdXJjZXNbMV0gPSBib19zcmM7CisJcmVzb3VyY2VzWzJd ID0gYm9fc2hhZGVyX3BzOworCXJlc291cmNlc1szXSA9IGJvX3NoYWRlcl92czsKKwlyZXNvdXJj ZXNbNF0gPSBib19jbWQ7CisJciA9IGFtZGdwdV9ib19saXN0X2NyZWF0ZShkZXZpY2VfaGFuZGxl LCA1LCByZXNvdXJjZXMsIE5VTEwsICZib19saXN0KTsKKwlDVV9BU1NFUlRfRVFVQUwociwgMCk7 CisKKwlpYl9pbmZvLmliX21jX2FkZHJlc3MgPSBtY19hZGRyZXNzX2NtZDsKKwlpYl9pbmZvLnNp emUgPSBpOworCWlic19yZXF1ZXN0LmlwX3R5cGUgPSBBTURHUFVfSFdfSVBfR0ZYOworCWlic19y ZXF1ZXN0LnJpbmcgPSByaW5nOworCWlic19yZXF1ZXN0LnJlc291cmNlcyA9IGJvX2xpc3Q7CisJ aWJzX3JlcXVlc3QubnVtYmVyX29mX2licyA9IDE7CisJaWJzX3JlcXVlc3QuaWJzID0gJmliX2lu Zm87CisJaWJzX3JlcXVlc3QuZmVuY2VfaW5mby5oYW5kbGUgPSBOVUxMOworCXIgPSBhbWRncHVf Y3Nfc3VibWl0KGNvbnRleHRfaGFuZGxlLCAwLCAmaWJzX3JlcXVlc3QsIDEpOworCUNVX0FTU0VS VF9FUVVBTChyLCAwKTsKKworCWZlbmNlX3N0YXR1cy5pcF90eXBlID0gQU1ER1BVX0hXX0lQX0dG WDsKKwlmZW5jZV9zdGF0dXMuaXBfaW5zdGFuY2UgPSAwOworCWZlbmNlX3N0YXR1cy5yaW5nID0g cmluZzsKKwlmZW5jZV9zdGF0dXMuY29udGV4dCA9IGNvbnRleHRfaGFuZGxlOworCWZlbmNlX3N0 YXR1cy5mZW5jZSA9IGlic19yZXF1ZXN0LnNlcV9ubzsKKworCS8qIHdhaXQgZm9yIElCIGFjY29t cGxpc2hlZCAqLworCXIgPSBhbWRncHVfY3NfcXVlcnlfZmVuY2Vfc3RhdHVzKCZmZW5jZV9zdGF0 dXMsCisJCQkJCSBBTURHUFVfVElNRU9VVF9JTkZJTklURSwKKwkJCQkJIDAsICZleHBpcmVkKTsK KwlDVV9BU1NFUlRfRVFVQUwociwgMCk7CisJQ1VfQVNTRVJUX0VRVUFMKGV4cGlyZWQsIHRydWUp OworCisJLyogdmVyaWZ5IGlmIG1lbWNweSB0ZXN0IHJlc3VsdCBtZWV0cyB3aXRoIGV4cGVjdGVk ICovCisJaSA9IDA7CisJd2hpbGUoaSA8IGJvX3NpemUpIHsKKwkJQ1VfQVNTRVJUX0VRVUFMKHB0 cl9kc3RbaV0sIHB0cl9zcmNbaV0pOworCQlpKys7CisJfQorCisJciA9IGFtZGdwdV9ib19saXN0 X2Rlc3Ryb3koYm9fbGlzdCk7CisJQ1VfQVNTRVJUX0VRVUFMKHIsIDApOworCisJciA9IGFtZGdw dV9ib191bm1hcF9hbmRfZnJlZShib19zcmMsIHZhX3NyYywgbWNfYWRkcmVzc19zcmMsIGJvX3Np emUpOworCUNVX0FTU0VSVF9FUVVBTChyLCAwKTsKKwlyID0gYW1kZ3B1X2JvX3VubWFwX2FuZF9m cmVlKGJvX2RzdCwgdmFfZHN0LCBtY19hZGRyZXNzX2RzdCwgYm9fc2l6ZSk7CisJQ1VfQVNTRVJU X0VRVUFMKHIsIDApOworCisJciA9IGFtZGdwdV9ib191bm1hcF9hbmRfZnJlZShib19jbWQsIHZh X2NtZCwgbWNfYWRkcmVzc19jbWQsIGJvX2NtZF9zaXplKTsKKwlDVV9BU1NFUlRfRVFVQUwociwg MCk7CisKKwlyID0gYW1kZ3B1X2NzX2N0eF9mcmVlKGNvbnRleHRfaGFuZGxlKTsKKwlDVV9BU1NF UlRfRVFVQUwociwgMCk7Cit9CisKK3N0YXRpYyB2b2lkIGFtZGdwdV9tZW1jcHlfZHJhd190ZXN0 KGFtZGdwdV9kZXZpY2VfaGFuZGxlIGRldmljZV9oYW5kbGUsIHVpbnQzMl90IHJpbmcpCit7CisJ YW1kZ3B1X2JvX2hhbmRsZSBib19zaGFkZXJfcHMsIGJvX3NoYWRlcl92czsKKwl2b2lkICpwdHJf c2hhZGVyX3BzOworCXZvaWQgKnB0cl9zaGFkZXJfdnM7CisJdWludDY0X3QgbWNfYWRkcmVzc19z aGFkZXJfcHMsIG1jX2FkZHJlc3Nfc2hhZGVyX3ZzOworCWFtZGdwdV92YV9oYW5kbGUgdmFfc2hh ZGVyX3BzLCB2YV9zaGFkZXJfdnM7CisJaW50IGJvX3NoYWRlcl9zaXplID0gNDA5NjsKKwlpbnQg cjsKKworCXIgPSBhbWRncHVfYm9fYWxsb2NfYW5kX21hcChkZXZpY2VfaGFuZGxlLCBib19zaGFk ZXJfc2l6ZSwgNDA5NiwKKwkJCQkJQU1ER1BVX0dFTV9ET01BSU5fVlJBTSwgMCwKKwkJCQkJJmJv X3NoYWRlcl9wcywgJnB0cl9zaGFkZXJfcHMsCisJCQkJCSZtY19hZGRyZXNzX3NoYWRlcl9wcywg JnZhX3NoYWRlcl9wcyk7CisJQ1VfQVNTRVJUX0VRVUFMKHIsIDApOworCisJciA9IGFtZGdwdV9i b19hbGxvY19hbmRfbWFwKGRldmljZV9oYW5kbGUsIGJvX3NoYWRlcl9zaXplLCA0MDk2LAorCQkJ CQlBTURHUFVfR0VNX0RPTUFJTl9WUkFNLCAwLAorCQkJCQkmYm9fc2hhZGVyX3ZzLCAmcHRyX3No YWRlcl92cywKKwkJCQkJJm1jX2FkZHJlc3Nfc2hhZGVyX3ZzLCAmdmFfc2hhZGVyX3ZzKTsKKwlD VV9BU1NFUlRfRVFVQUwociwgMCk7CisKKwlyID0gYW1kZ3B1X2RyYXdfbG9hZF9wc19zaGFkZXIo cHRyX3NoYWRlcl9wcywgUFNfVEVYKTsKKwlDVV9BU1NFUlRfRVFVQUwociwgMCk7CisKKwlyID0g YW1kZ3B1X2RyYXdfbG9hZF92c19zaGFkZXIocHRyX3NoYWRlcl92cyk7CisJQ1VfQVNTRVJUX0VR VUFMKHIsIDApOworCisJYW1kZ3B1X21lbWNweV9kcmF3KGRldmljZV9oYW5kbGUsIGJvX3NoYWRl cl9wcywgYm9fc2hhZGVyX3ZzLAorCQkJbWNfYWRkcmVzc19zaGFkZXJfcHMsIG1jX2FkZHJlc3Nf c2hhZGVyX3ZzLCByaW5nKTsKKworCXIgPSBhbWRncHVfYm9fdW5tYXBfYW5kX2ZyZWUoYm9fc2hh ZGVyX3BzLCB2YV9zaGFkZXJfcHMsIG1jX2FkZHJlc3Nfc2hhZGVyX3BzLCBib19zaGFkZXJfc2l6 ZSk7CisJQ1VfQVNTRVJUX0VRVUFMKHIsIDApOworCisJciA9IGFtZGdwdV9ib191bm1hcF9hbmRf ZnJlZShib19zaGFkZXJfdnMsIHZhX3NoYWRlcl92cywgbWNfYWRkcmVzc19zaGFkZXJfdnMsIGJv X3NoYWRlcl9zaXplKTsKKwlDVV9BU1NFUlRfRVFVQUwociwgMCk7Cit9CisKIHN0YXRpYyB2b2lk IGFtZGdwdV9kcmF3X3Rlc3Qodm9pZCkKIHsKIAlpbnQgcjsKQEAgLTI4NjIsNiArMzEwMiw4IEBA IHN0YXRpYyB2b2lkIGFtZGdwdV9kcmF3X3Rlc3Qodm9pZCkKIAlyID0gYW1kZ3B1X3F1ZXJ5X2h3 X2lwX2luZm8oZGV2aWNlX2hhbmRsZSwgQU1ER1BVX0hXX0lQX0dGWCwgMCwgJmluZm8pOwogCUNV X0FTU0VSVF9FUVVBTChyLCAwKTsKIAotCWZvciAocmluZ19pZCA9IDA7ICgxIDw8IHJpbmdfaWQp ICYgaW5mby5hdmFpbGFibGVfcmluZ3M7IHJpbmdfaWQrKykKKwlmb3IgKHJpbmdfaWQgPSAwOyAo MSA8PCByaW5nX2lkKSAmIGluZm8uYXZhaWxhYmxlX3JpbmdzOyByaW5nX2lkKyspIHsKIAkJYW1k Z3B1X21lbXNldF9kcmF3X3Rlc3QoZGV2aWNlX2hhbmRsZSwgcmluZ19pZCk7CisJCWFtZGdwdV9t ZW1jcHlfZHJhd190ZXN0KGRldmljZV9oYW5kbGUsIHJpbmdfaWQpOworCX0KIH0KY29tbWl0IDAw ZGQ5YjcyYTEzODYzZGQ3M2NmMTM0MGYzNzAwYTJiYjAwZjBmZTMKQXV0aG9yOiBDdWksIEZsb3Jh IDxGbG9yYS5DdWlAYW1kLmNvbT4KRGF0ZTogICBGcmkgTWFyIDE1IDA4OjUxOjE4IDIwMTkgKzAw MDAKCiAgICB0ZXN0cy9hbWRncHU6IGFkZCBtZW1zZXQgZHJhdyB0ZXN0CiAgICAKICAgIGFkZCBt ZW1zZXQgZHJhdyB0ZXN0IGZvciBnZng5CiAgICAKICAgIFNpZ25lZC1vZmYtYnk6IEZsb3JhIEN1 aSA8ZmxvcmEuY3VpQGFtZC5jb20+CiAgICBUZXN0ZWQtYnk6IFJ1aSBUZW5nIDxydWkudGVuZ0Bh bWQuY29tPgogICAgU2lnbmVkLW9mZi1ieTogQWxleCBEZXVjaGVyIDxhbGV4YW5kZXIuZGV1Y2hl ckBhbWQuY29tPgoKZGlmZiAtLWdpdCBhL3Rlc3RzL2FtZGdwdS9hbWRncHVfdGVzdC5jIGIvdGVz dHMvYW1kZ3B1L2FtZGdwdV90ZXN0LmMKaW5kZXggOGNjODdiMTMuLmE3OTNjYTdkIDEwMDY0NAot LS0gYS90ZXN0cy9hbWRncHUvYW1kZ3B1X3Rlc3QuYworKysgYi90ZXN0cy9hbWRncHUvYW1kZ3B1 X3Rlc3QuYwpAQCAtNDQ1LDYgKzQ0NSwxMSBAQCBzdGF0aWMgdm9pZCBhbWRncHVfZGlzYWJsZV9z dWl0ZXMoKQogCWlmIChmYW1pbHlfaWQgPCBBTURHUFVfRkFNSUxZX0FJIHx8IGZhbWlseV9pZCA+ IEFNREdQVV9GQU1JTFlfUlYpCiAJCWlmIChhbWRncHVfc2V0X3Rlc3RfYWN0aXZlKEJBU0lDX1RF U1RTX1NUUiwgIkRpc3BhdGNoIFRlc3QiLCBDVV9GQUxTRSkpCiAJCQlmcHJpbnRmKHN0ZGVyciwg InRlc3QgZGVhY3RpdmF0aW9uIGZhaWxlZCAtICVzXG4iLCBDVV9nZXRfZXJyb3JfbXNnKCkpOwor CisJLyogVGhpcyB0ZXN0IHdhcyByYW4gb24gR0ZYOSBvbmx5ICovCisJaWYgKGZhbWlseV9pZCA8 IEFNREdQVV9GQU1JTFlfQUkgfHwgZmFtaWx5X2lkID4gQU1ER1BVX0ZBTUlMWV9SVikKKwkJaWYg KGFtZGdwdV9zZXRfdGVzdF9hY3RpdmUoQkFTSUNfVEVTVFNfU1RSLCAiRHJhdyBUZXN0IiwgQ1Vf RkFMU0UpKQorCQkJZnByaW50ZihzdGRlcnIsICJ0ZXN0IGRlYWN0aXZhdGlvbiBmYWlsZWQgLSAl c1xuIiwgQ1VfZ2V0X2Vycm9yX21zZygpKTsKIH0KIAogLyogVGhlIG1haW4oKSBmdW5jdGlvbiBm b3Igc2V0dGluZyB1cCBhbmQgcnVubmluZyB0aGUgdGVzdHMuCmRpZmYgLS1naXQgYS90ZXN0cy9h bWRncHUvYmFzaWNfdGVzdHMuYyBiL3Rlc3RzL2FtZGdwdS9iYXNpY190ZXN0cy5jCmluZGV4IDJm NTU5ZjRlLi4wYmE2MTk5MyAxMDA2NDQKLS0tIGEvdGVzdHMvYW1kZ3B1L2Jhc2ljX3Rlc3RzLmMK KysrIGIvdGVzdHMvYW1kZ3B1L2Jhc2ljX3Rlc3RzLmMKQEAgLTUwLDYgKzUwLDcgQEAgc3RhdGlj IHZvaWQgYW1kZ3B1X3NlbWFwaG9yZV90ZXN0KHZvaWQpOwogc3RhdGljIHZvaWQgYW1kZ3B1X3N5 bmNfZGVwZW5kZW5jeV90ZXN0KHZvaWQpOwogc3RhdGljIHZvaWQgYW1kZ3B1X2JvX2V2aWN0aW9u X3Rlc3Qodm9pZCk7CiBzdGF0aWMgdm9pZCBhbWRncHVfZGlzcGF0Y2hfdGVzdCh2b2lkKTsKK3N0 YXRpYyB2b2lkIGFtZGdwdV9kcmF3X3Rlc3Qodm9pZCk7CiAKIHN0YXRpYyB2b2lkIGFtZGdwdV9j b21tYW5kX3N1Ym1pc3Npb25fd3JpdGVfbGluZWFyX2hlbHBlcih1bnNpZ25lZCBpcF90eXBlKTsK IHN0YXRpYyB2b2lkIGFtZGdwdV9jb21tYW5kX3N1Ym1pc3Npb25fY29uc3RfZmlsbF9oZWxwZXIo dW5zaWduZWQgaXBfdHlwZSk7CkBAIC03Miw2ICs3Myw3IEBAIENVX1Rlc3RJbmZvIGJhc2ljX3Rl c3RzW10gPSB7CiAJeyAiU1cgc2VtYXBob3JlIFRlc3QiLCAgYW1kZ3B1X3NlbWFwaG9yZV90ZXN0 IH0sCiAJeyAiU3luYyBkZXBlbmRlbmN5IFRlc3QiLCAgYW1kZ3B1X3N5bmNfZGVwZW5kZW5jeV90 ZXN0IH0sCiAJeyAiRGlzcGF0Y2ggVGVzdCIsICBhbWRncHVfZGlzcGF0Y2hfdGVzdCB9LAorCXsg IkRyYXcgVGVzdCIsICBhbWRncHVfZHJhd190ZXN0IH0sCiAJQ1VfVEVTVF9JTkZPX05VTEwsCiB9 OwogI2RlZmluZSBCVUZGRVJfU0laRSAoOCAqIDEwMjQpCkBAIC0zMTgsNiArMzIwLDk5IEBAIHN0 YXRpYyBjb25zdCB1aW50MzJfdCBidWZmZXJjb3B5X2NzX3NoYWRlcl9nZng5W10gPSB7CiAgICAg MHhCRjhDMEY3MCwgMHhFMDFDMjAwMCwgMHg4MDAxMDEwMCwgMHhCRjgxMDAwMAogfTsKIAorc3Rh dGljIGNvbnN0IHVpbnQzMl90IHByZWFtYmxlY2FjaGVfZ2Z4OVtdID0geworCTB4YzAwMjY5MDAs IDB4ODEsIDB4ODAwMDAwMDAsIDB4NDAwMDQwMDAsIDB4YzAwMjY5MDAsIDB4OGMsIDB4YWE5OWFh YWEsIDB4MCwKKwkweGMwMDI2OTAwLCAweDkwLCAweDgwMDAwMDAwLCAweDQwMDA0MDAwLCAweGMw MDI2OTAwLCAweDk0LCAweDgwMDAwMDAwLCAweDQwMDA0MDAwLAorCTB4YzAwMjY5MDAsIDB4YjQs ICAweDAsIDB4M2Y4MDAwMDAsIDB4YzAwMTY5MDAsIDB4MTAzLCAweDAsCisJMHhjMDAxNjkwMCwg MHgyMDgsIDB4MCwgMHhjMDAxNjkwMCwgMHgyOTAsIDB4MCwKKwkweGMwMDE2OTAwLCAweDJhMSwg MHgwLCAweGMwMDI2OTAwLCAweDJhZCwgMHgwLCAweDAsCisJMHhjMDAxNjkwMCwgMHgyZDUsIDB4 MTAwMDAsIDB4YzAwMTY5MDAsICAweDJkYywgMHgwLAorCTB4YzAwNjY5MDAsIDB4MmRlLCAweDAs IDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweGMwMDI2OTAwLCAweDJlNSwgMHgwLCAweDAsCisJ MHhjMDA1NjkwMCwgMHgyZjksIDB4NSwgMHgzZjgwMDAwMCwgMHgzZjgwMDAwMCwgMHgzZjgwMDAw MCwgMHgzZjgwMDAwMCwKKwkweGMwMDI2OTAwLCAweDMxMSwgIDB4MywgMHgwLCAweGMwMDI2OTAw LCAweDMxNiwgMHgxZSwgMHgyMCwKKwkweGMwMDE2OTAwLCAweDM0OSwgMHgwLCAweGMwMDE2OTAw LCAweDM1OCwgMHgwLCAweGMwMDE2OTAwLCAweDM2NywgMHgwLAorCTB4YzAwMTY5MDAsIDB4Mzc2 LCAweDAsIDB4YzAwMTY5MDAsIDB4Mzg1LCAweDAsIDB4YzAwMTY5MDAsIDB4MTksIDB4MCwKKwkw eGMwMDU2OTAwLCAweGU4LCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwKKwkweGMwMDc2OTAwLCAw eDFlMSwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLAorCTB4YzAwMjY5MDAsIDB4 MjA0LCAweDkwMDAwLCAweDQsIDB4YzAwNDY5MDAsIDB4MjBjLCAweDAsIDB4MCwgMHgwLCAweDAs CisJMHhjMDAxNjkwMCwgMHgyYjIsIDB4MCwgMHhjMDAyNjkwMCwgMHgzMGUsIDB4ZmZmZmZmZmYs IDB4ZmZmZmZmZmYsCisJMHhjMDAxNjkwMCwgMHgzMTQsIDB4MCwgMHhjMDAwMmYwMCwgMHgxLCAw eGMwMDE2OTAwLCAweDEsIDB4MSwKKwkweGMwMDE2OTAwLCAweDE4LCAweDIsIDB4YzAwMTY5MDAs IDB4MjA2LCAweDMwMCwgMHhjMDAxNzkwMCwgMHgyMDAwMDI0MywgMHgwLAorCTB4YzAwMTc5MDAs IDB4MjQ4LCAweGZmZmZmZmZmLCAweGMwMDE3OTAwLCAweDI0OSwgMHgwLCAweGMwMDE3OTAwLCAw eDI0YSwgMHgwLAorCTB4YzAwMTc5MDAsIDB4MjRiLCAweDAKK307CisKK2VudW0gcHNfdHlwZSB7 CisJUFNfQ09OU1QKK307CisKK3N0YXRpYyBjb25zdCB1aW50MzJfdCBwc19jb25zdF9zaGFkZXJf Z2Z4OVtdID0geworICAgIDB4N0UwMDAyMDAsIDB4N0UwMjAyMDEsIDB4N0UwNDAyMDIsIDB4N0Uw NjAyMDMsCisgICAgMHhEMjk2MDAwMCwgMHgwMDAyMDMwMCwgMHhEMjk2MDAwMSwgMHgwMDAyMDcw MiwKKyAgICAweEM0MDAxQzBGLCAweDAwMDAwMTAwLCAweEJGODEwMDAwCit9OworCitzdGF0aWMg Y29uc3QgdWludDMyX3QgcHNfY29uc3Rfc2hhZGVyX3BhdGNoaW5mb19jb2RlX3NpemVfZ2Z4OSA9 IDY7CisKK3N0YXRpYyBjb25zdCB1aW50MzJfdCBwc19jb25zdF9zaGFkZXJfcGF0Y2hpbmZvX2Nv ZGVfZ2Z4OVtdWzEwXVs2XSA9IHsKKyAgICB7eyAweEJGODAwMDAwLCAweEJGODAwMDAwLCAweEJG ODAwMDAwLCAweEJGODAwMDAwLCAweEM0MDAxODkwLCAweDAwMDAwMDAwIH0sCisgICAgIHsgMHhC RjgwMDAwMCwgMHhCRjgwMDAwMCwgMHhCRjgwMDAwMCwgMHhCRjgwMDAwMCwgMHhDNDAwMTgwMSwg MHgwMDAwMDAwMCB9LAorICAgICB7IDB4QkY4MDAwMDAsIDB4QkY4MDAwMDAsIDB4QkY4MDAwMDAs IDB4QkY4MDAwMDAsIDB4QzQwMDE4MDMsIDB4MDAwMDAxMDAgfSwKKyAgICAgeyAweEJGODAwMDAw LCAweEJGODAwMDAwLCAweEJGODAwMDAwLCAweEJGODAwMDAwLCAweEM0MDAxODAzLCAweDAwMDAw MzAwIH0sCisgICAgIHsgMHhEMjk2MDAwMCwgMHgwMDAyMDMwMCwgMHhEMjk2MDAwMSwgMHgwMDAy MDcwMiwgMHhDNDAwMUMwRiwgMHgwMDAwMDEwMCB9LAorICAgICB7IDB4RDI5NTAwMDAsIDB4MDAw MjAzMDAsIDB4RDI5NTAwMDEsIDB4MDAwMjA3MDIsIDB4QzQwMDFDMEYsIDB4MDAwMDAxMDAgfSwK KyAgICAgeyAweEQyOTQwMDAwLCAweDAwMDIwMzAwLCAweEQyOTQwMDAxLCAweDAwMDIwNzAyLCAw eEM0MDAxQzBGLCAweDAwMDAwMTAwIH0sCisgICAgIHsgMHhEMjk3MDAwMCwgMHgwMDAyMDMwMCwg MHhEMjk3MDAwMSwgMHgwMDAyMDcwMiwgMHhDNDAwMUMwRiwgMHgwMDAwMDEwMCB9LAorICAgICB7 IDB4RDI5ODAwMDAsIDB4MDAwMjAzMDAsIDB4RDI5ODAwMDEsIDB4MDAwMjA3MDIsIDB4QzQwMDFD MEYsIDB4MDAwMDAxMDAgfSwKKyAgICAgeyAweEJGODAwMDAwLCAweEJGODAwMDAwLCAweEJGODAw MDAwLCAweEJGODAwMDAwLCAweEM0MDAxODBGLCAweDAzMDIwMTAwIH0KKyAgICB9Cit9OworCitz dGF0aWMgY29uc3QgdWludDMyX3QgcHNfY29uc3Rfc2hhZGVyX3BhdGNoaW5mb19vZmZzZXRfZ2Z4 OVtdID0geworICAgIDB4MDAwMDAwMDQKK307CisKK3N0YXRpYyBjb25zdCB1aW50MzJfdCBwc19u dW1fc2hfcmVnaXN0ZXJzX2dmeDkgPSAyOworCitzdGF0aWMgY29uc3QgdWludDMyX3QgcHNfY29u c3Rfc2hfcmVnaXN0ZXJzX2dmeDlbXVsyXSA9IHsKKyAgICB7MHgyQzBBLCAweDAwMEMwMDQwfSwv L3sgbW1TUElfU0hBREVSX1BHTV9SU1JDMV9QUywgMHgwMDBDMDA0MCB9LAorICAgIHsweDJDMEIs IDB4MDAwMDAwMDh9LCAvL3sgbW1TUElfU0hBREVSX1BHTV9SU1JDMl9QUywgMHgwMDAwMDAwOCB9 Cit9OworCitzdGF0aWMgY29uc3QgdWludDMyX3QgcHNfbnVtX2NvbnRleHRfcmVnaXN0ZXJzX2dm eDkgPSA3OworCitzdGF0aWMgY29uc3QgdWludDMyX3QgcHNfY29uc3RfY29udGV4dF9yZWdfZ2Z4 OVtdWzJdID0geworICAgIHsweEExQjQsIDB4MDAwMDAwMDJ9LCAvL3sgbW1TUElfUFNfSU5QVVRf QUREUiwgICAgICAgMHgwMDAwMDAwMiB9LAorICAgIHsweEExQjYsIDB4MDAwMDAwMDB9LCAvL3sg bW1TUElfUFNfSU5fQ09OVFJPTCwgICAgICAgMHgwMDAwMDAwMCB9LAorICAgIHsweEEwOEYsIDB4 MDAwMDAwMEZ9LCAvL3sgbW1DQl9TSEFERVJfTUFTSywgICAgICAgICAgMHgwMDAwMDAwRiB9LAor ICAgIHsweEEyMDMsIDB4MDAwMDAwMTB9LCAvL3sgbW1EQl9TSEFERVJfQ09OVFJPTCwgICAgICAg MHgwMDAwMDAxMCB9LAorICAgIHsweEExQzQsIDB4MDAwMDAwMDB9LCAvL3sgbW1TUElfU0hBREVS X1pfRk9STUFULCAgICAgMHgwMDAwMDAwMCB9LAorICAgIHsweEExQjgsIDB4MDAwMDAwMDB9LCAv L3sgbW1TUElfQkFSWUNfQ05UTCwgICAgICAgICAgMHgwMDAwMDAwMCAvKiBBbHdheXMgMCBmb3Ig bm93ICovfSwKKyAgICB7MHhBMUM1LCAweDAwMDAwMDA0fSwgLy97IG1tU1BJX1NIQURFUl9DT0xf Rk9STUFULCAgIDB4MDAwMDAwMDQgfQorfTsKKworc3RhdGljIGNvbnN0IHVpbnQzMl90IHZzX1Jl Y3RQb3NUZXhGYXN0X3NoYWRlcl9nZng5W10gPSB7CisgICAgMHg3RTAwMEIwMCwgMHgwMjAwMDBG MywgMHhEMDQyMDAwQSwgMHgwMDAxMDEwMCwKKyAgICAweDdFMDIwMjAyLCAweDdFMDQwMjAwLCAw eDAyMDAwMEYzLCAweDdFMDYwMjA2LAorICAgIDB4N0UwODAyMDQsIDB4RDEwMDAwMDEsIDB4MDAy QTAzMDIsIDB4N0M4NDAwODAsCisgICAgMHg3RTAwMDIwMCwgMHg3RTA0MDIwMywgMHg3RTBBMDIw MSwgMHhEMTAwMDAwMywKKyAgICAweDAwMkEwNzA0LCAweDdFMEMwMjA3LCAweDdFMEUwMjA1LCAw eDAwMDAwMTAxLAorICAgIDB4MDAwMjA1MDUsIDB4N0UwNDAyMDgsIDB4N0UwQTAyRjIsIDB4MDAw NjA5MDMsCisgICAgMHgwMDA4MEQwNywgMHg3RTBDMDIwOSwgMHhDNDAwMDhDRiwgMHgwNTAyMDEw MCwKKyAgICAweEM0MDAwMjBGLCAweDA1MDYwNDAzLCAweEJGODEwMDAwCit9OworCitzdGF0aWMg Y29uc3QgdWludDMyX3QgY2FjaGVkX2NtZF9nZng5W10gPSB7CisJMHhjMDAxNjkwMCwgMHgwLCAw eDAsIDB4YzAwMjY5MDAsIDB4MywgMHgyYSwgMHgwLAorCTB4YzAwNDY5MDAsIDB4YSwgMHgwLCAw eDAsIDB4MCwgMHgyMDAwMjAsCisJMHhjMDAxNjkwMCwgMHg4MywgMHhmZmZmLCAweGMwMDI2OTAw LCAweDhlLCAweGYsIDB4ZiwKKwkweGMwMDU2OTAwLCAweDEwNSwgMHgwLCAweDAsICAweDAsIDB4 MCwgMHgxMiwKKwkweGMwMDI2OTAwLCAweDEwYiwgMHgwLCAweDAsIDB4YzAwMTY5MDAsIDB4MWUw LCAweDAsCisJMHhjMDAzNjkwMCwgMHgyMDAsIDB4MCwgMHgxMDAwMCwgMHhjYzAwMTEsCisJMHhj MDAyNjkwMCwgMHgyOTIsIDB4MjAsIDB4NjAyMDFiOCwKKwkweGMwMDI2OTAwLCAweDJiMCwgMHgw LCAweDAsIDB4YzAwMTY5MDAsIDB4MmY4LCAweDAKK307CisKIGludCBhbWRncHVfYm9fYWxsb2Nf YW5kX21hcF9yYXcoYW1kZ3B1X2RldmljZV9oYW5kbGUgZGV2LCB1bnNpZ25lZCBzaXplLAogCQkJ dW5zaWduZWQgYWxpZ25tZW50LCB1bnNpZ25lZCBoZWFwLCB1aW50NjRfdCBhbGxvY19mbGFncywK IAkJCXVpbnQ2NF90IG1hcHBpbmdfZmxhZ3MsIGFtZGdwdV9ib19oYW5kbGUgKmJvLCB2b2lkICoq Y3B1LApAQCAtMjMxMSwzICsyNDA2LDQ2MiBAQCBzdGF0aWMgdm9pZCBhbWRncHVfZGlzcGF0Y2hf dGVzdCh2b2lkKQogCQlhbWRncHVfbWVtY3B5X2Rpc3BhdGNoX3Rlc3QoZGV2aWNlX2hhbmRsZSwg QU1ER1BVX0hXX0lQX0dGWCwgcmluZ19pZCk7CiAJfQogfQorCitzdGF0aWMgaW50IGFtZGdwdV9k cmF3X2xvYWRfcHNfc2hhZGVyKHVpbnQ4X3QgKnB0ciwgaW50IHBzX3R5cGUpCit7CisJaW50IGk7 CisJdWludDMyX3Qgc2hhZGVyX29mZnNldD0gMjU2OworCXVpbnQzMl90IG1lbV9vZmZzZXQsIHBh dGNoX2NvZGVfb2Zmc2V0OworCXVpbnQzMl90IHNoYWRlcl9zaXplLCBwYXRjaGluZm9fY29kZV9z aXplOworCWNvbnN0IHVpbnQzMl90ICpzaGFkZXI7CisJY29uc3QgdWludDMyX3QgKnBhdGNoaW5m b19jb2RlOworCWNvbnN0IHVpbnQzMl90ICpwYXRjaGNvZGVfb2Zmc2V0OworCisJc3dpdGNoIChw c190eXBlKSB7CisJCWNhc2UgUFNfQ09OU1Q6CisJCQlzaGFkZXIgPSBwc19jb25zdF9zaGFkZXJf Z2Z4OTsKKwkJCXNoYWRlcl9zaXplID0gc2l6ZW9mKHBzX2NvbnN0X3NoYWRlcl9nZng5KTsKKwkJ CXBhdGNoaW5mb19jb2RlID0gKGNvbnN0IHVpbnQzMl90ICopcHNfY29uc3Rfc2hhZGVyX3BhdGNo aW5mb19jb2RlX2dmeDk7CisJCQlwYXRjaGluZm9fY29kZV9zaXplID0gcHNfY29uc3Rfc2hhZGVy X3BhdGNoaW5mb19jb2RlX3NpemVfZ2Z4OTsKKwkJCXBhdGNoY29kZV9vZmZzZXQgPSBwc19jb25z dF9zaGFkZXJfcGF0Y2hpbmZvX29mZnNldF9nZng5OworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJ CQlyZXR1cm4gLTE7CisJCQlicmVhazsKKwl9CisKKwkvKiB3cml0ZSBtYWluIHNoYWRlciBwcm9n cmFtICovCisJZm9yIChpID0gMCA7IGkgPCAxMDsgaSsrKSB7CisJCW1lbV9vZmZzZXQgPSBpICog c2hhZGVyX29mZnNldDsKKwkJbWVtY3B5KHB0ciArIG1lbV9vZmZzZXQsIHNoYWRlciwgc2hhZGVy X3NpemUpOworCX0KKworCS8qIG92ZXJ3cml0ZSBwYXRjaCBjb2RlcyAqLworCWZvciAoaSA9IDAg OyBpIDwgMTA7IGkrKykgeworCQltZW1fb2Zmc2V0ID0gaSAqIHNoYWRlcl9vZmZzZXQgKyBwYXRj aGNvZGVfb2Zmc2V0WzBdICogc2l6ZW9mKHVpbnQzMl90KTsKKwkJcGF0Y2hfY29kZV9vZmZzZXQg PSBpICogcGF0Y2hpbmZvX2NvZGVfc2l6ZTsKKwkJbWVtY3B5KHB0ciArIG1lbV9vZmZzZXQsCisJ CQlwYXRjaGluZm9fY29kZSArIHBhdGNoX2NvZGVfb2Zmc2V0LAorCQkJcGF0Y2hpbmZvX2NvZGVf c2l6ZSAqIHNpemVvZih1aW50MzJfdCkpOworCX0KKworCXJldHVybiAwOworfQorCisvKiBsb2Fk IFJlY3RQb3NUZXhGYXN0X1ZTICovCitzdGF0aWMgaW50IGFtZGdwdV9kcmF3X2xvYWRfdnNfc2hh ZGVyKHVpbnQ4X3QgKnB0cikKK3sKKwljb25zdCB1aW50MzJfdCAqc2hhZGVyOworCXVpbnQzMl90 IHNoYWRlcl9zaXplOworCisJc2hhZGVyID0gdnNfUmVjdFBvc1RleEZhc3Rfc2hhZGVyX2dmeDk7 CisJc2hhZGVyX3NpemUgPSBzaXplb2YodnNfUmVjdFBvc1RleEZhc3Rfc2hhZGVyX2dmeDkpOwor CisJbWVtY3B5KHB0ciwgc2hhZGVyLCBzaGFkZXJfc2l6ZSk7CisKKwlyZXR1cm4gMDsKK30KKwor c3RhdGljIGludCBhbWRncHVfZHJhd19pbml0KHVpbnQzMl90ICpwdHIpCit7CisJaW50IGkgPSAw OworCWNvbnN0IHVpbnQzMl90ICpwcmVhbWJsZWNhY2hlX3B0cjsKKwl1aW50MzJfdCBwcmVhbWJs ZWNhY2hlX3NpemU7CisKKwkvKiBXcml0ZSBjb250ZXh0IGNvbnRyb2wgYW5kIGxvYWQgc2hhZG93 aW5nIHJlZ2lzdGVyIGlmIG5lY2Vzc2FyeSAqLworCXB0cltpKytdID0gUEFDS0VUMyhQS1QzX0NP TlRFWFRfQ09OVFJPTCwgMSk7CisJcHRyW2krK10gPSAweDgwMDAwMDAwOworCXB0cltpKytdID0g MHg4MDAwMDAwMDsKKworCXByZWFtYmxlY2FjaGVfcHRyID0gcHJlYW1ibGVjYWNoZV9nZng5Owor CXByZWFtYmxlY2FjaGVfc2l6ZSA9IHNpemVvZihwcmVhbWJsZWNhY2hlX2dmeDkpOworCisJbWVt Y3B5KHB0ciArIGksIHByZWFtYmxlY2FjaGVfcHRyLCBwcmVhbWJsZWNhY2hlX3NpemUpOworCXJl dHVybiBpICsgcHJlYW1ibGVjYWNoZV9zaXplL3NpemVvZih1aW50MzJfdCk7Cit9CisKK3N0YXRp YyBpbnQgYW1kZ3B1X2RyYXdfc2V0dXBfYW5kX3dyaXRlX2RyYXdibHRfc3VyZl9pbmZvKHVpbnQz Ml90ICpwdHIsCisJCQkJCQkJIHVpbnQ2NF90IGRzdF9hZGRyKQoreworCWludCBpID0gMDsKKwor CS8qIHNldHVwIGNvbG9yIGJ1ZmZlciAqLworCS8qIG9mZnNldCAgIHJlZworCSAgIDB4QTMxOCAg IENCX0NPTE9SMF9CQVNFCisJICAgMHhBMzE5ICAgQ0JfQ09MT1IwX0JBU0VfRVhUCisJICAgMHhB MzFBICAgQ0JfQ09MT1IwX0FUVFJJQjIKKwkgICAweEEzMUIgICBDQl9DT0xPUjBfVklFVworCSAg IDB4QTMxQyAgIENCX0NPTE9SMF9JTkZPCisJICAgMHhBMzFEICAgQ0JfQ09MT1IwX0FUVFJJQgor CSAgIDB4QTMxRSAgIENCX0NPTE9SMF9EQ0NfQ09OVFJPTAorCSAgIDB4QTMxRiAgIENCX0NPTE9S MF9DTUFTSworCSAgIDB4QTMyMCAgIENCX0NPTE9SMF9DTUFTS19CQVNFX0VYVAorCSAgIDB4QTMy MSAgIENCX0NPTE9SMF9GTUFTSworCSAgIDB4QTMyMiAgIENCX0NPTE9SMF9GTUFTS19CQVNFX0VY VAorCSAgIDB4QTMyMyAgIENCX0NPTE9SMF9DTEVBUl9XT1JEMAorCSAgIDB4QTMyNCAgIENCX0NP TE9SMF9DTEVBUl9XT1JEMQorCSAgIDB4QTMyNSAgIENCX0NPTE9SMF9EQ0NfQkFTRQorCSAgIDB4 QTMyNiAgIENCX0NPTE9SMF9EQ0NfQkFTRV9FWFQgKi8KKwlwdHJbaSsrXSA9IFBBQ0tFVDMoUEFD S0VUM19TRVRfQ09OVEVYVF9SRUcsIDE1KTsKKwlwdHJbaSsrXSA9IDB4MzE4OworCXB0cltpKytd ID0gZHN0X2FkZHIgPj4gODsKKwlwdHJbaSsrXSA9IGRzdF9hZGRyID4+IDQwOworCXB0cltpKytd ID0gMHg3YzAxZjsKKwlwdHJbaSsrXSA9IDA7CisJcHRyW2krK10gPSAweDUwNDM4OworCXB0cltp KytdID0gMHgxMDE0MDAwMDsKKwlpICs9IDk7CisKKwkvKiBtbUNCX01SVDBfRVBJVENIICovCisJ cHRyW2krK10gPSBQQUNLRVQzKFBBQ0tFVDNfU0VUX0NPTlRFWFRfUkVHLCAxKTsKKwlwdHJbaSsr XSA9IDB4MWU4OworCXB0cltpKytdID0gMHgxZjsKKworCS8qIDB4QTMyQiAgIENCX0NPTE9SMV9C QVNFICovCisJcHRyW2krK10gPSBQQUNLRVQzKFBBQ0tFVDNfU0VUX0NPTlRFWFRfUkVHLCAxKTsK KwlwdHJbaSsrXSA9IDB4MzJiOworCXB0cltpKytdID0gMDsKKworCS8qIDB4QTMzQSAgIENCX0NP TE9SMV9CQVNFICovCisJcHRyW2krK10gPSBQQUNLRVQzKFBBQ0tFVDNfU0VUX0NPTlRFWFRfUkVH LCAxKTsKKwlwdHJbaSsrXSA9IDB4MzNhOworCXB0cltpKytdID0gMDsKKworCS8qIFNQSV9TSEFE RVJfQ09MX0ZPUk1BVCAqLworCXB0cltpKytdID0gUEFDS0VUMyhQQUNLRVQzX1NFVF9DT05URVhU X1JFRywgMSk7CisJcHRyW2krK10gPSAweDFjNTsKKwlwdHJbaSsrXSA9IDk7CisKKwkvKiBTZXR1 cCBkZXB0aCBidWZmZXIgKi8KKwkvKiBtbURCX1pfSU5GTyAqLworCXB0cltpKytdID0gUEFDS0VU MyhQQUNLRVQzX1NFVF9DT05URVhUX1JFRywgMik7CisJcHRyW2krK10gPSAweGU7CisJaSArPSAy OworCisJcmV0dXJuIGk7Cit9CisKK3N0YXRpYyBpbnQgYW1kZ3B1X2RyYXdfc2V0dXBfYW5kX3dy aXRlX2RyYXdibHRfc3RhdGUodWludDMyX3QgKnB0cikKK3sKKwlpbnQgaSA9IDA7CisJY29uc3Qg dWludDMyX3QgKmNhY2hlZF9jbWRfcHRyOworCXVpbnQzMl90IGNhY2hlZF9jbWRfc2l6ZTsKKwor CS8qIG1tUEFfU0NfVElMRV9TVEVFUklOR19PVkVSUklERSAqLworCXB0cltpKytdID0gUEFDS0VU MyhQQUNLRVQzX1NFVF9DT05URVhUX1JFRywgMSk7CisJcHRyW2krK10gPSAweGQ3OworCXB0cltp KytdID0gMDsKKworCXB0cltpKytdID0gMHhmZmZmMTAwMDsKKwlwdHJbaSsrXSA9IDB4YzAwMjEw MDA7CisKKwlwdHJbaSsrXSA9IFBBQ0tFVDMoUEFDS0VUM19TRVRfQ09OVEVYVF9SRUcsIDEpOwor CXB0cltpKytdID0gMHhkNzsKKwlwdHJbaSsrXSA9IDE7CisKKwkvKiBtbVBBX1NDX0FBX1NBTVBM RV9MT0NTX1BJWEVMX1gwWTBfMCAqLworCXB0cltpKytdID0gUEFDS0VUMyhQQUNLRVQzX1NFVF9D T05URVhUX1JFRywgMTYpOworCXB0cltpKytdID0gMHgyZmU7CisJaSArPSAxNjsKKworCS8qIG1t UEFfU0NfQ0VOVFJPSURfUFJJT1JJVFlfMCAqLworCXB0cltpKytdID0gUEFDS0VUMyhQQUNLRVQz X1NFVF9DT05URVhUX1JFRywgMik7CisJcHRyW2krK10gPSAweDJmNTsKKwlpICs9IDI7CisKKwlj YWNoZWRfY21kX3B0ciA9IGNhY2hlZF9jbWRfZ2Z4OTsKKwljYWNoZWRfY21kX3NpemUgPSBzaXpl b2YoY2FjaGVkX2NtZF9nZng5KTsKKworCW1lbWNweShwdHIgKyBpLCBjYWNoZWRfY21kX3B0ciwg Y2FjaGVkX2NtZF9zaXplKTsKKwlpICs9IGNhY2hlZF9jbWRfc2l6ZS9zaXplb2YodWludDMyX3Qp OworCisJcmV0dXJuIGk7Cit9CisKK3N0YXRpYyBpbnQgYW1kZ3B1X2RyYXdfdnNfUmVjdFBvc1Rl eEZhc3Rfd3JpdGUyaHcodWludDMyX3QgKnB0ciwgdWludDY0X3Qgc2hhZGVyX2FkZHIpCit7CisJ aW50IGkgPSAwOworCisJLyogbW1QQV9DTF9WU19PVVRfQ05UTCAqLworCXB0cltpKytdID0gUEFD S0VUMyhQQUNLRVQzX1NFVF9DT05URVhUX1JFRywgMSk7CisJcHRyW2krK10gPSAweDIwNzsKKwlw dHJbaSsrXSA9IDA7CisKKwkvKiBtbVNQSV9TSEFERVJfUEdNX1JTUkMzX1ZTICovCisJcHRyW2kr K10gPSBQQUNLRVQzKFBLVDNfU0VUX1NIX1JFRywgMSk7CisJcHRyW2krK10gPSAweDQ2OworCXB0 cltpKytdID0gMHhmZmZmOworCisJLyogbW1TUElfU0hBREVSX1BHTV9MT19WUy4uLm1tU1BJX1NI QURFUl9QR01fSElfVlMgKi8KKwlwdHJbaSsrXSA9IFBBQ0tFVDMoUEtUM19TRVRfU0hfUkVHLCAy KTsKKwlwdHJbaSsrXSA9IDB4NDg7CisJcHRyW2krK10gPSBzaGFkZXJfYWRkciA+PiA4OworCXB0 cltpKytdID0gc2hhZGVyX2FkZHIgPj4gNDA7CisKKwkvKiBtbVNQSV9TSEFERVJfUEdNX1JTUkMx X1ZTICovCisJcHRyW2krK10gPSBQQUNLRVQzKFBLVDNfU0VUX1NIX1JFRywgMSk7CisJcHRyW2kr K10gPSAweDRhOworCXB0cltpKytdID0gMHhjMDA4MTsKKwkvKiBtbVNQSV9TSEFERVJfUEdNX1JT UkMyX1ZTICovCisJcHRyW2krK10gPSBQQUNLRVQzKFBLVDNfU0VUX1NIX1JFRywgMSk7CisJcHRy W2krK10gPSAweDRiOworCXB0cltpKytdID0gMHgxODsKKworCS8qIG1tU1BJX1ZTX09VVF9DT05G SUcgKi8KKwlwdHJbaSsrXSA9IFBBQ0tFVDMoUEFDS0VUM19TRVRfQ09OVEVYVF9SRUcsIDEpOwor CXB0cltpKytdID0gMHgxYjE7CisJcHRyW2krK10gPSAyOworCisJLyogbW1TUElfU0hBREVSX1BP U19GT1JNQVQgKi8KKwlwdHJbaSsrXSA9IFBBQ0tFVDMoUEFDS0VUM19TRVRfQ09OVEVYVF9SRUcs IDEpOworCXB0cltpKytdID0gMHgxYzM7CisJcHRyW2krK10gPSA0OworCisJcHRyW2krK10gPSBQ QUNLRVQzKFBLVDNfU0VUX1NIX1JFRywgNCk7CisJcHRyW2krK10gPSAweDRjOworCWkgKz0gMjsK KwlwdHJbaSsrXSA9IDB4NDIwMDAwMDA7CisJcHRyW2krK10gPSAweDQyMDAwMDAwOworCisJcHRy W2krK10gPSBQQUNLRVQzKFBLVDNfU0VUX1NIX1JFRywgNCk7CisJcHRyW2krK10gPSAweDUwOwor CWkgKz0gNDsKKworCXB0cltpKytdID0gUEFDS0VUMyhQS1QzX1NFVF9TSF9SRUcsIDQpOworCXB0 cltpKytdID0gMHg1NDsKKwlpICs9IDQ7CisKKwlyZXR1cm4gaTsKK30KKworc3RhdGljIGludCBh bWRncHVfZHJhd19wc193cml0ZTJodyh1aW50MzJfdCAqcHRyLCB1aW50NjRfdCBzaGFkZXJfYWRk cikKK3sKKwlpbnQgaSwgajsKKwljb25zdCB1aW50MzJfdCAqc2hfcmVnaXN0ZXJzOworCWNvbnN0 IHVpbnQzMl90ICpjb250ZXh0X3JlZ2lzdGVyczsKKwl1aW50MzJfdCBudW1fc2hfcmVnLCBudW1f Y29udGV4dF9yZWc7CisKKwlzaF9yZWdpc3RlcnMgPSAoY29uc3QgdWludDMyX3QgKilwc19jb25z dF9zaF9yZWdpc3RlcnNfZ2Z4OTsKKwljb250ZXh0X3JlZ2lzdGVycyA9IChjb25zdCB1aW50MzJf dCAqKXBzX2NvbnN0X2NvbnRleHRfcmVnX2dmeDk7CisJbnVtX3NoX3JlZyA9IHBzX251bV9zaF9y ZWdpc3RlcnNfZ2Z4OTsKKwludW1fY29udGV4dF9yZWcgPSBwc19udW1fY29udGV4dF9yZWdpc3Rl cnNfZ2Z4OTsKKworCWkgPSAwOworCisJLyogMHgyYzA3ICAgU1BJX1NIQURFUl9QR01fUlNSQzNf UFMKKwkgICAweDJjMDggICBTUElfU0hBREVSX1BHTV9MT19QUworCSAgIDB4MmMwOSAgIFNQSV9T SEFERVJfUEdNX0hJX1BTICovCisJc2hhZGVyX2FkZHIgKz0gMjU2ICogOTsKKwlwdHJbaSsrXSA9 IFBBQ0tFVDMoUEtUM19TRVRfU0hfUkVHLCAzKTsKKwlwdHJbaSsrXSA9IDB4NzsKKwlwdHJbaSsr XSA9IDB4ZmZmZjsKKwlwdHJbaSsrXSA9IHNoYWRlcl9hZGRyID4+IDg7CisJcHRyW2krK10gPSBz aGFkZXJfYWRkciA+PiA0MDsKKworCWZvciAoaiA9IDA7IGogPCBudW1fc2hfcmVnOyBqKyspIHsK KwkJcHRyW2krK10gPSBQQUNLRVQzKFBLVDNfU0VUX1NIX1JFRywgMSk7CisJCXB0cltpKytdID0g c2hfcmVnaXN0ZXJzW2ogKiAyXSAtIDB4MmMwMDsKKwkJcHRyW2krK10gPSBzaF9yZWdpc3RlcnNb aiAqIDIgKyAxXTsKKwl9CisKKwlmb3IgKGogPSAwOyBqIDwgbnVtX2NvbnRleHRfcmVnOyBqKysp IHsKKwkJaWYgKGNvbnRleHRfcmVnaXN0ZXJzW2ogKiAyXSAhPSAweEExQzUpIHsKKwkJCXB0cltp KytdID0gUEFDS0VUMyhQQUNLRVQzX1NFVF9DT05URVhUX1JFRywgMSk7CisJCQlwdHJbaSsrXSA9 IGNvbnRleHRfcmVnaXN0ZXJzW2ogKiAyXSAtIDB4YTAwMDsKKwkJCXB0cltpKytdID0gY29udGV4 dF9yZWdpc3RlcnNbaiAqIDIgKyAxXTsKKwkJfQorCisJCWlmIChjb250ZXh0X3JlZ2lzdGVyc1tq ICogMl0gPT0gMHhBMUI0KSB7CisJCQlwdHJbaSsrXSA9IFBBQ0tFVDMoUEFDS0VUM19TRVRfQ09O VEVYVF9SRUcsIDEpOworCQkJcHRyW2krK10gPSAweDFiMzsKKwkJCXB0cltpKytdID0gMjsKKwkJ fQorCX0KKworCXJldHVybiBpOworfQorCitzdGF0aWMgaW50IGFtZGdwdV9kcmF3X2RyYXcodWlu dDMyX3QgKnB0cikKK3sKKwlpbnQgaSA9IDA7CisKKwkvKiBtbUlBX01VTFRJX1ZHVF9QQVJBTSAq LworCXB0cltpKytdID0gUEFDS0VUMyhQQUNLRVQzX1NFVF9VQ09ORklHX1JFRywgMSk7CisJcHRy W2krK10gPSAweDQwMDAwMjU4OworCXB0cltpKytdID0gMHhkMDBmZjsKKworCS8qIG1tVkdUX1BS SU1JVElWRV9UWVBFICovCisJcHRyW2krK10gPSBQQUNLRVQzKFBBQ0tFVDNfU0VUX1VDT05GSUdf UkVHLCAxKTsKKwlwdHJbaSsrXSA9IDB4MTAwMDAyNDI7CisJcHRyW2krK10gPSAweDExOworCisJ cHRyW2krK10gPSBQQUNLRVQzKFBBQ0tFVDNfRFJBV19JTkRFWF9BVVRPLCAxKTsKKwlwdHJbaSsr XSA9IDM7CisJcHRyW2krK10gPSAyOworCisJcmV0dXJuIGk7Cit9CisKK3ZvaWQgYW1kZ3B1X21l bXNldF9kcmF3KGFtZGdwdV9kZXZpY2VfaGFuZGxlIGRldmljZV9oYW5kbGUsCisJCQlhbWRncHVf Ym9faGFuZGxlIGJvX3NoYWRlcl9wcywKKwkJCWFtZGdwdV9ib19oYW5kbGUgYm9fc2hhZGVyX3Zz LAorCQkJdWludDY0X3QgbWNfYWRkcmVzc19zaGFkZXJfcHMsCisJCQl1aW50NjRfdCBtY19hZGRy ZXNzX3NoYWRlcl92cywKKwkJCXVpbnQzMl90IHJpbmdfaWQpCit7CisJYW1kZ3B1X2NvbnRleHRf aGFuZGxlIGNvbnRleHRfaGFuZGxlOworCWFtZGdwdV9ib19oYW5kbGUgYm9fZHN0LCBib19jbWQs IHJlc291cmNlc1s0XTsKKwl2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICpwdHJfZHN0OworCXVpbnQz Ml90ICpwdHJfY21kOworCXVpbnQ2NF90IG1jX2FkZHJlc3NfZHN0LCBtY19hZGRyZXNzX2NtZDsK KwlhbWRncHVfdmFfaGFuZGxlIHZhX2RzdCwgdmFfY21kOworCWludCBpLCByOworCWludCBib19k c3Rfc2l6ZSA9IDE2Mzg0OworCWludCBib19jbWRfc2l6ZSA9IDQwOTY7CisJc3RydWN0IGFtZGdw dV9jc19yZXF1ZXN0IGlic19yZXF1ZXN0ID0gezB9OworCXN0cnVjdCBhbWRncHVfY3NfaWJfaW5m byBpYl9pbmZvID0gezB9OworCXN0cnVjdCBhbWRncHVfY3NfZmVuY2UgZmVuY2Vfc3RhdHVzID0g ezB9OworCXVpbnQzMl90IGV4cGlyZWQ7CisJYW1kZ3B1X2JvX2xpc3RfaGFuZGxlIGJvX2xpc3Q7 CisKKwlyID0gYW1kZ3B1X2NzX2N0eF9jcmVhdGUoZGV2aWNlX2hhbmRsZSwgJmNvbnRleHRfaGFu ZGxlKTsKKwlDVV9BU1NFUlRfRVFVQUwociwgMCk7CisKKwlyID0gYW1kZ3B1X2JvX2FsbG9jX2Fu ZF9tYXAoZGV2aWNlX2hhbmRsZSwgYm9fY21kX3NpemUsIDQwOTYsCisJCQkJCUFNREdQVV9HRU1f RE9NQUlOX0dUVCwgMCwKKwkJCQkJJmJvX2NtZCwgKHZvaWQgKiopJnB0cl9jbWQsCisJCQkJCSZt Y19hZGRyZXNzX2NtZCwgJnZhX2NtZCk7CisgICAgICAgIENVX0FTU0VSVF9FUVVBTChyLCAwKTsK KworCXIgPSBhbWRncHVfYm9fYWxsb2NfYW5kX21hcChkZXZpY2VfaGFuZGxlLCBib19kc3Rfc2l6 ZSwgNDA5NiwKKwkJCQkJQU1ER1BVX0dFTV9ET01BSU5fVlJBTSwgMCwKKwkJCQkJJmJvX2RzdCwg KHZvaWQgKiopJnB0cl9kc3QsCisJCQkJCSZtY19hZGRyZXNzX2RzdCwgJnZhX2RzdCk7CisJQ1Vf QVNTRVJUX0VRVUFMKHIsIDApOworCisJaSA9IDA7CisJaSArPSBhbWRncHVfZHJhd19pbml0KHB0 cl9jbWQgKyBpKTsKKworCWkgKz0gYW1kZ3B1X2RyYXdfc2V0dXBfYW5kX3dyaXRlX2RyYXdibHRf c3VyZl9pbmZvKHB0cl9jbWQgKyBpLCBtY19hZGRyZXNzX2RzdCk7CisKKwlpICs9IGFtZGdwdV9k cmF3X3NldHVwX2FuZF93cml0ZV9kcmF3Ymx0X3N0YXRlKHB0cl9jbWQgKyBpKTsKKworCWkgKz0g YW1kZ3B1X2RyYXdfdnNfUmVjdFBvc1RleEZhc3Rfd3JpdGUyaHcocHRyX2NtZCArIGksIG1jX2Fk ZHJlc3Nfc2hhZGVyX3ZzKTsKKworCWkgKz0gYW1kZ3B1X2RyYXdfcHNfd3JpdGUyaHcocHRyX2Nt ZCArIGksIG1jX2FkZHJlc3Nfc2hhZGVyX3BzKTsKKworCXB0cl9jbWRbaSsrXSA9IFBBQ0tFVDMo UEtUM19TRVRfU0hfUkVHLCA0KTsKKwlwdHJfY21kW2krK10gPSAweGM7CisJcHRyX2NtZFtpKytd ID0gMHgzMzMzMzMzMzsKKwlwdHJfY21kW2krK10gPSAweDMzMzMzMzMzOworCXB0cl9jbWRbaSsr XSA9IDB4MzMzMzMzMzM7CisJcHRyX2NtZFtpKytdID0gMHgzMzMzMzMzMzsKKworCWkgKz0gYW1k Z3B1X2RyYXdfZHJhdyhwdHJfY21kICsgaSk7CisKKwl3aGlsZSAoaSAmIDcpCisJCXB0cl9jbWRb aSsrXSA9ICAweGZmZmYxMDAwOyAvKiB0eXBlMyBub3AgcGFja2V0ICovCisKKwlyZXNvdXJjZXNb MF0gPSBib19kc3Q7CisJcmVzb3VyY2VzWzFdID0gYm9fc2hhZGVyX3BzOworCXJlc291cmNlc1sy XSA9IGJvX3NoYWRlcl92czsKKwlyZXNvdXJjZXNbM10gPSBib19jbWQ7CisJciA9IGFtZGdwdV9i b19saXN0X2NyZWF0ZShkZXZpY2VfaGFuZGxlLCAzLCByZXNvdXJjZXMsIE5VTEwsICZib19saXN0 KTsKKwlDVV9BU1NFUlRfRVFVQUwociwgMCk7CisKKwlpYl9pbmZvLmliX21jX2FkZHJlc3MgPSBt Y19hZGRyZXNzX2NtZDsKKwlpYl9pbmZvLnNpemUgPSBpOworCWlic19yZXF1ZXN0LmlwX3R5cGUg PSBBTURHUFVfSFdfSVBfR0ZYOworCWlic19yZXF1ZXN0LnJpbmcgPSByaW5nX2lkOworCWlic19y ZXF1ZXN0LnJlc291cmNlcyA9IGJvX2xpc3Q7CisJaWJzX3JlcXVlc3QubnVtYmVyX29mX2licyA9 IDE7CisJaWJzX3JlcXVlc3QuaWJzID0gJmliX2luZm87CisJaWJzX3JlcXVlc3QuZmVuY2VfaW5m by5oYW5kbGUgPSBOVUxMOworCisJLyogc3VibWl0IENTICovCisJciA9IGFtZGdwdV9jc19zdWJt aXQoY29udGV4dF9oYW5kbGUsIDAsICZpYnNfcmVxdWVzdCwgMSk7CisJQ1VfQVNTRVJUX0VRVUFM KHIsIDApOworCisJciA9IGFtZGdwdV9ib19saXN0X2Rlc3Ryb3koYm9fbGlzdCk7CisJQ1VfQVNT RVJUX0VRVUFMKHIsIDApOworCisJZmVuY2Vfc3RhdHVzLmlwX3R5cGUgPSBBTURHUFVfSFdfSVBf R0ZYOworCWZlbmNlX3N0YXR1cy5pcF9pbnN0YW5jZSA9IDA7CisJZmVuY2Vfc3RhdHVzLnJpbmcg PSByaW5nX2lkOworCWZlbmNlX3N0YXR1cy5jb250ZXh0ID0gY29udGV4dF9oYW5kbGU7CisJZmVu Y2Vfc3RhdHVzLmZlbmNlID0gaWJzX3JlcXVlc3Quc2VxX25vOworCisJLyogd2FpdCBmb3IgSUIg YWNjb21wbGlzaGVkICovCisJciA9IGFtZGdwdV9jc19xdWVyeV9mZW5jZV9zdGF0dXMoJmZlbmNl X3N0YXR1cywKKwkJCQkJIEFNREdQVV9USU1FT1VUX0lORklOSVRFLAorCQkJCQkgMCwgJmV4cGly ZWQpOworCUNVX0FTU0VSVF9FUVVBTChyLCAwKTsKKwlDVV9BU1NFUlRfRVFVQUwoZXhwaXJlZCwg dHJ1ZSk7CisKKwkvKiB2ZXJpZnkgaWYgbWVtc2V0IHRlc3QgcmVzdWx0IG1lZXRzIHdpdGggZXhw ZWN0ZWQgKi8KKwlpID0gMDsKKwl3aGlsZShpIDwgYm9fZHN0X3NpemUpIHsKKwkJQ1VfQVNTRVJU X0VRVUFMKHB0cl9kc3RbaSsrXSwgMHgzMyk7CisJfQorCisJciA9IGFtZGdwdV9ib191bm1hcF9h bmRfZnJlZShib19kc3QsIHZhX2RzdCwgbWNfYWRkcmVzc19kc3QsIGJvX2RzdF9zaXplKTsKKwlD VV9BU1NFUlRfRVFVQUwociwgMCk7CisKKwlyID0gYW1kZ3B1X2JvX3VubWFwX2FuZF9mcmVlKGJv X2NtZCwgdmFfY21kLCBtY19hZGRyZXNzX2NtZCwgYm9fY21kX3NpemUpOworCUNVX0FTU0VSVF9F UVVBTChyLCAwKTsKKworCXIgPSBhbWRncHVfY3NfY3R4X2ZyZWUoY29udGV4dF9oYW5kbGUpOwor CUNVX0FTU0VSVF9FUVVBTChyLCAwKTsKK30KKworc3RhdGljIHZvaWQgYW1kZ3B1X21lbXNldF9k cmF3X3Rlc3QoYW1kZ3B1X2RldmljZV9oYW5kbGUgZGV2aWNlX2hhbmRsZSwKKwkJCQkgICAgdWlu dDMyX3QgcmluZykKK3sKKwlhbWRncHVfYm9faGFuZGxlIGJvX3NoYWRlcl9wcywgYm9fc2hhZGVy X3ZzOworCXZvaWQgKnB0cl9zaGFkZXJfcHM7CisJdm9pZCAqcHRyX3NoYWRlcl92czsKKwl1aW50 NjRfdCBtY19hZGRyZXNzX3NoYWRlcl9wcywgbWNfYWRkcmVzc19zaGFkZXJfdnM7CisJYW1kZ3B1 X3ZhX2hhbmRsZSB2YV9zaGFkZXJfcHMsIHZhX3NoYWRlcl92czsKKwlpbnQgcjsKKwlpbnQgYm9f c2hhZGVyX3NpemUgPSA0MDk2OworCisJciA9IGFtZGdwdV9ib19hbGxvY19hbmRfbWFwKGRldmlj ZV9oYW5kbGUsIGJvX3NoYWRlcl9zaXplLCA0MDk2LAorCQkJCQlBTURHUFVfR0VNX0RPTUFJTl9W UkFNLCAwLAorCQkJCQkmYm9fc2hhZGVyX3BzLCAmcHRyX3NoYWRlcl9wcywKKwkJCQkJJm1jX2Fk ZHJlc3Nfc2hhZGVyX3BzLCAmdmFfc2hhZGVyX3BzKTsKKwlDVV9BU1NFUlRfRVFVQUwociwgMCk7 CisKKwlyID0gYW1kZ3B1X2JvX2FsbG9jX2FuZF9tYXAoZGV2aWNlX2hhbmRsZSwgYm9fc2hhZGVy X3NpemUsIDQwOTYsCisJCQkJCUFNREdQVV9HRU1fRE9NQUlOX1ZSQU0sIDAsCisJCQkJCSZib19z aGFkZXJfdnMsICZwdHJfc2hhZGVyX3ZzLAorCQkJCQkmbWNfYWRkcmVzc19zaGFkZXJfdnMsICZ2 YV9zaGFkZXJfdnMpOworCUNVX0FTU0VSVF9FUVVBTChyLCAwKTsKKworCXIgPSBhbWRncHVfZHJh d19sb2FkX3BzX3NoYWRlcihwdHJfc2hhZGVyX3BzLCBQU19DT05TVCk7CisJQ1VfQVNTRVJUX0VR VUFMKHIsIDApOworCisJciA9IGFtZGdwdV9kcmF3X2xvYWRfdnNfc2hhZGVyKHB0cl9zaGFkZXJf dnMpOworCUNVX0FTU0VSVF9FUVVBTChyLCAwKTsKKworCWFtZGdwdV9tZW1zZXRfZHJhdyhkZXZp Y2VfaGFuZGxlLCBib19zaGFkZXJfcHMsIGJvX3NoYWRlcl92cywKKwkJCW1jX2FkZHJlc3Nfc2hh ZGVyX3BzLCBtY19hZGRyZXNzX3NoYWRlcl92cywgcmluZyk7CisKKwlyID0gYW1kZ3B1X2JvX3Vu bWFwX2FuZF9mcmVlKGJvX3NoYWRlcl9wcywgdmFfc2hhZGVyX3BzLCBtY19hZGRyZXNzX3NoYWRl cl9wcywgYm9fc2hhZGVyX3NpemUpOworCUNVX0FTU0VSVF9FUVVBTChyLCAwKTsKKworCXIgPSBh bWRncHVfYm9fdW5tYXBfYW5kX2ZyZWUoYm9fc2hhZGVyX3ZzLCB2YV9zaGFkZXJfdnMsIG1jX2Fk ZHJlc3Nfc2hhZGVyX3ZzLCBib19zaGFkZXJfc2l6ZSk7CisJQ1VfQVNTRVJUX0VRVUFMKHIsIDAp OworfQorCitzdGF0aWMgdm9pZCBhbWRncHVfZHJhd190ZXN0KHZvaWQpCit7CisJaW50IHI7CisJ c3RydWN0IGRybV9hbWRncHVfaW5mb19od19pcCBpbmZvOworCXVpbnQzMl90IHJpbmdfaWQ7CisK KwlyID0gYW1kZ3B1X3F1ZXJ5X2h3X2lwX2luZm8oZGV2aWNlX2hhbmRsZSwgQU1ER1BVX0hXX0lQ X0dGWCwgMCwgJmluZm8pOworCUNVX0FTU0VSVF9FUVVBTChyLCAwKTsKKworCWZvciAocmluZ19p ZCA9IDA7ICgxIDw8IHJpbmdfaWQpICYgaW5mby5hdmFpbGFibGVfcmluZ3M7IHJpbmdfaWQrKykK KwkJYW1kZ3B1X21lbXNldF9kcmF3X3Rlc3QoZGV2aWNlX2hhbmRsZSwgcmluZ19pZCk7Cit9CmNv bW1pdCBjMWNlZDBiYWZkYjRjODE3YTMwZmY3YjhjNGNlYjdkYjFlOTNlY2M1CkF1dGhvcjogQ3Vp LCBGbG9yYSA8RmxvcmEuQ3VpQGFtZC5jb20+CkRhdGU6ICAgRnJpIE1hciAxNSAwODo1MToxMyAy MDE5ICswMDAwCgogICAgdGVzdHMvYW1kZ3B1OiBhZGQgbWVtY3B5IGRpc3BhdGNoIHRlc3QKICAg IAogICAgYWRkIG1lbWNweSBkaXNwYXRjaCB0ZXN0IGZvciBnZng5CiAgICAKICAgIFNpZ25lZC1v ZmYtYnk6IEZsb3JhIEN1aSA8ZmxvcmEuY3VpQGFtZC5jb20+CiAgICBUZXN0ZWQtYnk6IFJ1aSBU ZW5nIDxydWkudGVuZ0BhbWQuY29tPgogICAgUmV2aWV3ZWQtYnk6IEhhd2tpbmcgWmhhbmcgPEhh d2tpbmcuWmhhbmdAYW1kLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEFsZXggRGV1Y2hlciA8YWxl eGFuZGVyLmRldWNoZXJAYW1kLmNvbT4KCmRpZmYgLS1naXQgYS90ZXN0cy9hbWRncHUvYmFzaWNf dGVzdHMuYyBiL3Rlc3RzL2FtZGdwdS9iYXNpY190ZXN0cy5jCmluZGV4IGZlNmRiMDlhLi4yZjU1 OWY0ZSAxMDA2NDQKLS0tIGEvdGVzdHMvYW1kZ3B1L2Jhc2ljX3Rlc3RzLmMKKysrIGIvdGVzdHMv YW1kZ3B1L2Jhc2ljX3Rlc3RzLmMKQEAgLTI5NCw2ICsyOTQsNyBAQCBzdGF0aWMgIHVpbnQzMl90 IHNoYWRlcl9iaW5bXSA9IHsKIAogZW51bSBjc190eXBlIHsKIAlDU19CVUZGRVJDTEVBUiwKKwlD U19CVUZGRVJDT1BZCiB9OwogCiBzdGF0aWMgY29uc3QgdWludDMyX3QgYnVmZmVyY2xlYXJfY3Nf c2hhZGVyX2dmeDlbXSA9IHsKQEAgLTMxMiw2ICszMTMsMTEgQEAgc3RhdGljIGNvbnN0IHVpbnQz Ml90IGJ1ZmZlcmNsZWFyX2NzX3NoYWRlcl9yZWdpc3RlcnNfZ2Z4OVtdWzJdID0gewogCiBzdGF0 aWMgY29uc3QgdWludDMyX3QgYnVmZmVyY2xlYXJfY3Nfc2hhZGVyX3JlZ2lzdGVyc19udW1fZ2Z4 OSA9IDU7CiAKK3N0YXRpYyBjb25zdCB1aW50MzJfdCBidWZmZXJjb3B5X2NzX3NoYWRlcl9nZng5 W10gPSB7CisgICAgMHhEMUZEMDAwMCwgMHgwNDAxMEMwOCwgMHhFMDBDMjAwMCwgMHg4MDAwMDEw MCwKKyAgICAweEJGOEMwRjcwLCAweEUwMUMyMDAwLCAweDgwMDEwMTAwLCAweEJGODEwMDAwCit9 OworCiBpbnQgYW1kZ3B1X2JvX2FsbG9jX2FuZF9tYXBfcmF3KGFtZGdwdV9kZXZpY2VfaGFuZGxl IGRldiwgdW5zaWduZWQgc2l6ZSwKIAkJCXVuc2lnbmVkIGFsaWdubWVudCwgdW5zaWduZWQgaGVh cCwgdWludDY0X3QgYWxsb2NfZmxhZ3MsCiAJCQl1aW50NjRfdCBtYXBwaW5nX2ZsYWdzLCBhbWRn cHVfYm9faGFuZGxlICpibywgdm9pZCAqKmNwdSwKQEAgLTE5MjAsNiArMTkyNiwxMCBAQCBzdGF0 aWMgaW50IGFtZGdwdV9kaXNwYXRjaF9sb2FkX2NzX3NoYWRlcih1aW50OF90ICpwdHIsCiAJCQlz aGFkZXIgPSBidWZmZXJjbGVhcl9jc19zaGFkZXJfZ2Z4OTsKIAkJCXNoYWRlcl9zaXplID0gc2l6 ZW9mKGJ1ZmZlcmNsZWFyX2NzX3NoYWRlcl9nZng5KTsKIAkJCWJyZWFrOworCQljYXNlIENTX0JV RkZFUkNPUFk6CisJCQlzaGFkZXIgPSBidWZmZXJjb3B5X2NzX3NoYWRlcl9nZng5OworCQkJc2hh ZGVyX3NpemUgPSBzaXplb2YoYnVmZmVyY29weV9jc19zaGFkZXJfZ2Z4OSk7CisJCQlicmVhazsK IAkJZGVmYXVsdDoKIAkJCXJldHVybiAtMTsKIAkJCWJyZWFrOwpAQCAtMjEzNCw2ICsyMTQ0LDE1 MSBAQCBzdGF0aWMgdm9pZCBhbWRncHVfbWVtc2V0X2Rpc3BhdGNoX3Rlc3QoYW1kZ3B1X2Rldmlj ZV9oYW5kbGUgZGV2aWNlX2hhbmRsZSwKIAlDVV9BU1NFUlRfRVFVQUwociwgMCk7CiB9CiAKK3Zv aWQgYW1kZ3B1X21lbWNweV9kaXNwYXRjaF90ZXN0KGFtZGdwdV9kZXZpY2VfaGFuZGxlIGRldmlj ZV9oYW5kbGUsCisJCQkJIHVpbnQzMl90IGlwX3R5cGUsCisJCQkJIHVpbnQzMl90IHJpbmcpCit7 CisJYW1kZ3B1X2NvbnRleHRfaGFuZGxlIGNvbnRleHRfaGFuZGxlOworCWFtZGdwdV9ib19oYW5k bGUgYm9fc3JjLCBib19kc3QsIGJvX3NoYWRlciwgYm9fY21kLCByZXNvdXJjZXNbNF07CisJdm9s YXRpbGUgdW5zaWduZWQgY2hhciAqcHRyX2RzdDsKKwl2b2lkICpwdHJfc2hhZGVyOworCXVuc2ln bmVkIGNoYXIgKnB0cl9zcmM7CisJdWludDMyX3QgKnB0cl9jbWQ7CisJdWludDY0X3QgbWNfYWRk cmVzc19zcmMsIG1jX2FkZHJlc3NfZHN0LCBtY19hZGRyZXNzX3NoYWRlciwgbWNfYWRkcmVzc19j bWQ7CisJYW1kZ3B1X3ZhX2hhbmRsZSB2YV9zcmMsIHZhX2RzdCwgdmFfc2hhZGVyLCB2YV9jbWQ7 CisJaW50IGksIHI7CisJaW50IGJvX2RzdF9zaXplID0gMTYzODQ7CisJaW50IGJvX3NoYWRlcl9z aXplID0gNDA5NjsKKwlpbnQgYm9fY21kX3NpemUgPSA0MDk2OworCXN0cnVjdCBhbWRncHVfY3Nf cmVxdWVzdCBpYnNfcmVxdWVzdCA9IHswfTsKKwlzdHJ1Y3QgYW1kZ3B1X2NzX2liX2luZm8gaWJf aW5mbz0gezB9OworCXVpbnQzMl90IGV4cGlyZWQ7CisJYW1kZ3B1X2JvX2xpc3RfaGFuZGxlIGJv X2xpc3Q7CisJc3RydWN0IGFtZGdwdV9jc19mZW5jZSBmZW5jZV9zdGF0dXMgPSB7MH07CisKKwly ID0gYW1kZ3B1X2NzX2N0eF9jcmVhdGUoZGV2aWNlX2hhbmRsZSwgJmNvbnRleHRfaGFuZGxlKTsK KwlDVV9BU1NFUlRfRVFVQUwociwgMCk7CisKKwlyID0gYW1kZ3B1X2JvX2FsbG9jX2FuZF9tYXAo ZGV2aWNlX2hhbmRsZSwgYm9fY21kX3NpemUsIDQwOTYsCisJCQkJICAgIEFNREdQVV9HRU1fRE9N QUlOX0dUVCwgMCwKKwkJCQkgICAgJmJvX2NtZCwgKHZvaWQgKiopJnB0cl9jbWQsCisJCQkJICAg ICZtY19hZGRyZXNzX2NtZCwgJnZhX2NtZCk7CisJQ1VfQVNTRVJUX0VRVUFMKHIsIDApOworCisJ ciA9IGFtZGdwdV9ib19hbGxvY19hbmRfbWFwKGRldmljZV9oYW5kbGUsIGJvX3NoYWRlcl9zaXpl LCA0MDk2LAorCQkJCQlBTURHUFVfR0VNX0RPTUFJTl9WUkFNLCAwLAorCQkJCQkmYm9fc2hhZGVy LCAmcHRyX3NoYWRlciwKKwkJCQkJJm1jX2FkZHJlc3Nfc2hhZGVyLCAmdmFfc2hhZGVyKTsKKwlD VV9BU1NFUlRfRVFVQUwociwgMCk7CisKKwlyID0gYW1kZ3B1X2Rpc3BhdGNoX2xvYWRfY3Nfc2hh ZGVyKHB0cl9zaGFkZXIsIENTX0JVRkZFUkNPUFkgKTsKKwlDVV9BU1NFUlRfRVFVQUwociwgMCk7 CisKKwlyID0gYW1kZ3B1X2JvX2FsbG9jX2FuZF9tYXAoZGV2aWNlX2hhbmRsZSwgYm9fZHN0X3Np emUsIDQwOTYsCisJCQkJCUFNREdQVV9HRU1fRE9NQUlOX1ZSQU0sIDAsCisJCQkJCSZib19zcmMs ICh2b2lkICoqKSZwdHJfc3JjLAorCQkJCQkmbWNfYWRkcmVzc19zcmMsICZ2YV9zcmMpOworCUNV X0FTU0VSVF9FUVVBTChyLCAwKTsKKworCXIgPSBhbWRncHVfYm9fYWxsb2NfYW5kX21hcChkZXZp Y2VfaGFuZGxlLCBib19kc3Rfc2l6ZSwgNDA5NiwKKwkJCQkJQU1ER1BVX0dFTV9ET01BSU5fVlJB TSwgMCwKKwkJCQkJJmJvX2RzdCwgKHZvaWQgKiopJnB0cl9kc3QsCisJCQkJCSZtY19hZGRyZXNz X2RzdCwgJnZhX2RzdCk7CisJQ1VfQVNTRVJUX0VRVUFMKHIsIDApOworCisJbWVtc2V0KHB0cl9z cmMsIDB4NTUsIGJvX2RzdF9zaXplKTsKKworCWkgPSAwOworCWkgKz0gYW1kZ3B1X2Rpc3BhdGNo X2luaXQocHRyX2NtZCArIGksIGlwX3R5cGUpOworCisJLyogIElzc3VlIGNvbW1hbmRzIHRvIHNl dCBjdSBtYXNrIHVzZWQgaW4gY3VycmVudCBkaXNwYXRjaCAqLworCWkgKz0gYW1kZ3B1X2Rpc3Bh dGNoX3dyaXRlX2N1bWFzayhwdHJfY21kICsgaSk7CisKKwkvKiBXcml0ZXMgc2hhZGVyIHN0YXRl IHRvIEhXICovCisJaSArPSBhbWRncHVfZGlzcGF0Y2hfd3JpdGUyaHcocHRyX2NtZCArIGksIG1j X2FkZHJlc3Nfc2hhZGVyKTsKKworCS8qIFdyaXRlIGNvbnN0YW50IGRhdGEgKi8KKwkvKiBXcml0 ZXMgdGhlIHRleHR1cmUgcmVzb3VyY2UgY29uc3RhbnRzIGRhdGEgdG8gdGhlIFNHUFJzICovCisJ cHRyX2NtZFtpKytdID0gUEFDS0VUM19DT01QVVRFKFBLVDNfU0VUX1NIX1JFRywgNCk7CisJcHRy X2NtZFtpKytdID0gMHgyNDA7CisJcHRyX2NtZFtpKytdID0gbWNfYWRkcmVzc19zcmM7CisJcHRy X2NtZFtpKytdID0gKG1jX2FkZHJlc3Nfc3JjID4+IDMyKSB8IDB4MTAwMDAwOworCXB0cl9jbWRb aSsrXSA9IDB4NDAwOworCXB0cl9jbWRbaSsrXSA9IDB4NzRmYWM7CisKKwkvKiBXcml0ZXMgdGhl IFVBViBjb25zdGFudCBkYXRhIHRvIHRoZSBTR1BScy4gKi8KKwlwdHJfY21kW2krK10gPSBQQUNL RVQzX0NPTVBVVEUoUEtUM19TRVRfU0hfUkVHLCA0KTsKKwlwdHJfY21kW2krK10gPSAweDI0NDsK KwlwdHJfY21kW2krK10gPSBtY19hZGRyZXNzX2RzdDsKKwlwdHJfY21kW2krK10gPSAobWNfYWRk cmVzc19kc3QgPj4gMzIpIHwgMHgxMDAwMDA7CisJcHRyX2NtZFtpKytdID0gMHg0MDA7CisJcHRy X2NtZFtpKytdID0gMHg3NGZhYzsKKworCS8qIGRpc3BhdGNoIGRpcmVjdCBjb21tYW5kICovCisJ cHRyX2NtZFtpKytdID0gUEFDS0VUM19DT01QVVRFKFBBQ0tFVDNfRElTUEFUQ0hfRElSRUNULCAz KTsKKwlwdHJfY21kW2krK10gPSAweDEwOworCXB0cl9jbWRbaSsrXSA9IDE7CisJcHRyX2NtZFtp KytdID0gMTsKKwlwdHJfY21kW2krK10gPSAxOworCisJd2hpbGUgKGkgJiA3KQorCQlwdHJfY21k W2krK10gPSAgMHhmZmZmMTAwMDsgLyogdHlwZTMgbm9wIHBhY2tldCAqLworCisJcmVzb3VyY2Vz WzBdID0gYm9fc2hhZGVyOworCXJlc291cmNlc1sxXSA9IGJvX3NyYzsKKwlyZXNvdXJjZXNbMl0g PSBib19kc3Q7CisJcmVzb3VyY2VzWzNdID0gYm9fY21kOworCXIgPSBhbWRncHVfYm9fbGlzdF9j cmVhdGUoZGV2aWNlX2hhbmRsZSwgNCwgcmVzb3VyY2VzLCBOVUxMLCAmYm9fbGlzdCk7CisJQ1Vf QVNTRVJUX0VRVUFMKHIsIDApOworCisJaWJfaW5mby5pYl9tY19hZGRyZXNzID0gbWNfYWRkcmVz c19jbWQ7CisJaWJfaW5mby5zaXplID0gaTsKKwlpYnNfcmVxdWVzdC5pcF90eXBlID0gaXBfdHlw ZTsKKwlpYnNfcmVxdWVzdC5yaW5nID0gcmluZzsKKwlpYnNfcmVxdWVzdC5yZXNvdXJjZXMgPSBi b19saXN0OworCWlic19yZXF1ZXN0Lm51bWJlcl9vZl9pYnMgPSAxOworCWlic19yZXF1ZXN0Lmli cyA9ICZpYl9pbmZvOworCWlic19yZXF1ZXN0LmZlbmNlX2luZm8uaGFuZGxlID0gTlVMTDsKKwly ID0gYW1kZ3B1X2NzX3N1Ym1pdChjb250ZXh0X2hhbmRsZSwgMCwgJmlic19yZXF1ZXN0LCAxKTsK KwlDVV9BU1NFUlRfRVFVQUwociwgMCk7CisKKwlmZW5jZV9zdGF0dXMuaXBfdHlwZSA9IGlwX3R5 cGU7CisJZmVuY2Vfc3RhdHVzLmlwX2luc3RhbmNlID0gMDsKKwlmZW5jZV9zdGF0dXMucmluZyA9 IHJpbmc7CisJZmVuY2Vfc3RhdHVzLmNvbnRleHQgPSBjb250ZXh0X2hhbmRsZTsKKwlmZW5jZV9z dGF0dXMuZmVuY2UgPSBpYnNfcmVxdWVzdC5zZXFfbm87CisKKwkvKiB3YWl0IGZvciBJQiBhY2Nv bXBsaXNoZWQgKi8KKwlyID0gYW1kZ3B1X2NzX3F1ZXJ5X2ZlbmNlX3N0YXR1cygmZmVuY2Vfc3Rh dHVzLAorCQkJCQkgQU1ER1BVX1RJTUVPVVRfSU5GSU5JVEUsCisJCQkJCSAwLCAmZXhwaXJlZCk7 CisJQ1VfQVNTRVJUX0VRVUFMKHIsIDApOworCUNVX0FTU0VSVF9FUVVBTChleHBpcmVkLCB0cnVl KTsKKworCS8qIHZlcmlmeSBpZiBtZW1jcHkgdGVzdCByZXN1bHQgbWVldHMgd2l0aCBleHBlY3Rl ZCAqLworCWkgPSAwOworCXdoaWxlKGkgPCBib19kc3Rfc2l6ZSkgeworCQlDVV9BU1NFUlRfRVFV QUwocHRyX2RzdFtpXSwgcHRyX3NyY1tpXSk7CisJCWkrKzsKKwl9CisKKwlyID0gYW1kZ3B1X2Jv X2xpc3RfZGVzdHJveShib19saXN0KTsKKwlDVV9BU1NFUlRfRVFVQUwociwgMCk7CisKKwlyID0g YW1kZ3B1X2JvX3VubWFwX2FuZF9mcmVlKGJvX3NyYywgdmFfc3JjLCBtY19hZGRyZXNzX3NyYywg Ym9fZHN0X3NpemUpOworCUNVX0FTU0VSVF9FUVVBTChyLCAwKTsKKwlyID0gYW1kZ3B1X2JvX3Vu bWFwX2FuZF9mcmVlKGJvX2RzdCwgdmFfZHN0LCBtY19hZGRyZXNzX2RzdCwgYm9fZHN0X3NpemUp OworCUNVX0FTU0VSVF9FUVVBTChyLCAwKTsKKworCXIgPSBhbWRncHVfYm9fdW5tYXBfYW5kX2Zy ZWUoYm9fY21kLCB2YV9jbWQsIG1jX2FkZHJlc3NfY21kLCBib19jbWRfc2l6ZSk7CisJQ1VfQVNT RVJUX0VRVUFMKHIsIDApOworCisJciA9IGFtZGdwdV9ib191bm1hcF9hbmRfZnJlZShib19zaGFk ZXIsIHZhX3NoYWRlciwgbWNfYWRkcmVzc19zaGFkZXIsIGJvX3NoYWRlcl9zaXplKTsKKwlDVV9B U1NFUlRfRVFVQUwociwgMCk7CisKKwlyID0gYW1kZ3B1X2NzX2N0eF9mcmVlKGNvbnRleHRfaGFu ZGxlKTsKKwlDVV9BU1NFUlRfRVFVQUwociwgMCk7Cit9CiBzdGF0aWMgdm9pZCBhbWRncHVfZGlz cGF0Y2hfdGVzdCh2b2lkKQogewogCWludCByOwpAQCAtMjE0MywxMiArMjI5OCwxNiBAQCBzdGF0 aWMgdm9pZCBhbWRncHVfZGlzcGF0Y2hfdGVzdCh2b2lkKQogCXIgPSBhbWRncHVfcXVlcnlfaHdf aXBfaW5mbyhkZXZpY2VfaGFuZGxlLCBBTURHUFVfSFdfSVBfQ09NUFVURSwgMCwgJmluZm8pOwog CUNVX0FTU0VSVF9FUVVBTChyLCAwKTsKIAotCWZvciAocmluZ19pZCA9IDA7ICgxIDw8IHJpbmdf aWQpICYgaW5mby5hdmFpbGFibGVfcmluZ3M7IHJpbmdfaWQrKykKKwlmb3IgKHJpbmdfaWQgPSAw OyAoMSA8PCByaW5nX2lkKSAmIGluZm8uYXZhaWxhYmxlX3JpbmdzOyByaW5nX2lkKyspIHsKIAkJ YW1kZ3B1X21lbXNldF9kaXNwYXRjaF90ZXN0KGRldmljZV9oYW5kbGUsIEFNREdQVV9IV19JUF9D T01QVVRFLCByaW5nX2lkKTsKKwkJYW1kZ3B1X21lbWNweV9kaXNwYXRjaF90ZXN0KGRldmljZV9o YW5kbGUsIEFNREdQVV9IV19JUF9DT01QVVRFLCByaW5nX2lkKTsKKwl9CiAKIAlyID0gYW1kZ3B1 X3F1ZXJ5X2h3X2lwX2luZm8oZGV2aWNlX2hhbmRsZSwgQU1ER1BVX0hXX0lQX0dGWCwgMCwgJmlu Zm8pOwogCUNVX0FTU0VSVF9FUVVBTChyLCAwKTsKIAotCWZvciAocmluZ19pZCA9IDA7ICgxIDw8 IHJpbmdfaWQpICYgaW5mby5hdmFpbGFibGVfcmluZ3M7IHJpbmdfaWQrKykKKwlmb3IgKHJpbmdf aWQgPSAwOyAoMSA8PCByaW5nX2lkKSAmIGluZm8uYXZhaWxhYmxlX3JpbmdzOyByaW5nX2lkKysp IHsKIAkJYW1kZ3B1X21lbXNldF9kaXNwYXRjaF90ZXN0KGRldmljZV9oYW5kbGUsIEFNREdQVV9I V19JUF9HRlgsIHJpbmdfaWQpOworCQlhbWRncHVfbWVtY3B5X2Rpc3BhdGNoX3Rlc3QoZGV2aWNl X2hhbmRsZSwgQU1ER1BVX0hXX0lQX0dGWCwgcmluZ19pZCk7CisJfQogfQpjb21taXQgOGRiNGUy ZGI0MTQ5MWJhMDViN2ZlNGRhMDcyNTExNGJiZjIzNzhiMgpBdXRob3I6IEN1aSwgRmxvcmEgPEZs b3JhLkN1aUBhbWQuY29tPgpEYXRlOiAgIEZyaSBNYXIgMTUgMDg6NTA6NTQgMjAxOSArMDAwMAoK ICAgIHRlc3RzL2FtZGdwdTogYWRkIG1lbXNldCBkaXNwYXRjaCB0ZXN0CiAgICAKICAgIGFkZCBt ZW1zZXQgZGlzcGF0Y2ggdGVzdCBmb3IgZ2Z4OQogICAgdjI6IGRpc2FibGUgZGlzcGF0Y2ggdGVz dCBmb3Igb3RoZXIgQVNJQ3MKICAgIAogICAgU2lnbmVkLW9mZi1ieTogRmxvcmEgQ3VpIDxmbG9y YS5jdWlAYW1kLmNvbT4KICAgIFRlc3RlZC1ieTogUnVpIFRlbmcgPHJ1aS50ZW5nQGFtZC5jb20+ CiAgICBSZXZpZXdlZC1ieTogSGF3a2luZyBaaGFuZyA8SGF3a2luZy5aaGFuZ0BhbWQuY29tPgog ICAgU2lnbmVkLW9mZi1ieTogQWxleCBEZXVjaGVyIDxhbGV4YW5kZXIuZGV1Y2hlckBhbWQuY29t PgoKZGlmZiAtLWdpdCBhL3Rlc3RzL2FtZGdwdS9hbWRncHVfdGVzdC5jIGIvdGVzdHMvYW1kZ3B1 L2FtZGdwdV90ZXN0LmMKaW5kZXggMzhiOGE2ODEuLjhjYzg3YjEzIDEwMDY0NAotLS0gYS90ZXN0 cy9hbWRncHUvYW1kZ3B1X3Rlc3QuYworKysgYi90ZXN0cy9hbWRncHUvYW1kZ3B1X3Rlc3QuYwpA QCAtNDQwLDYgKzQ0MCwxMSBAQCBzdGF0aWMgdm9pZCBhbWRncHVfZGlzYWJsZV9zdWl0ZXMoKQog CWlmIChmYW1pbHlfaWQgPCBBTURHUFVfRkFNSUxZX1ZJIHx8IGZhbWlseV9pZCA+IEFNREdQVV9G QU1JTFlfUlYpCiAJCWlmIChhbWRncHVfc2V0X3Rlc3RfYWN0aXZlKEJBU0lDX1RFU1RTX1NUUiwg IlN5bmMgZGVwZW5kZW5jeSBUZXN0IiwgQ1VfRkFMU0UpKQogCQkJZnByaW50ZihzdGRlcnIsICJ0 ZXN0IGRlYWN0aXZhdGlvbiBmYWlsZWQgLSAlc1xuIiwgQ1VfZ2V0X2Vycm9yX21zZygpKTsKKwor CS8qIFRoaXMgdGVzdCB3YXMgcmFuIG9uIEdGWDkgb25seSAqLworCWlmIChmYW1pbHlfaWQgPCBB TURHUFVfRkFNSUxZX0FJIHx8IGZhbWlseV9pZCA+IEFNREdQVV9GQU1JTFlfUlYpCisJCWlmIChh bWRncHVfc2V0X3Rlc3RfYWN0aXZlKEJBU0lDX1RFU1RTX1NUUiwgIkRpc3BhdGNoIFRlc3QiLCBD VV9GQUxTRSkpCisJCQlmcHJpbnRmKHN0ZGVyciwgInRlc3QgZGVhY3RpdmF0aW9uIGZhaWxlZCAt ICVzXG4iLCBDVV9nZXRfZXJyb3JfbXNnKCkpOwogfQogCiAvKiBUaGUgbWFpbigpIGZ1bmN0aW9u IGZvciBzZXR0aW5nIHVwIGFuZCBydW5uaW5nIHRoZSB0ZXN0cy4KZGlmZiAtLWdpdCBhL3Rlc3Rz L2FtZGdwdS9iYXNpY190ZXN0cy5jIGIvdGVzdHMvYW1kZ3B1L2Jhc2ljX3Rlc3RzLmMKaW5kZXgg ZGJhZTRkNTMuLmZlNmRiMDlhIDEwMDY0NAotLS0gYS90ZXN0cy9hbWRncHUvYmFzaWNfdGVzdHMu YworKysgYi90ZXN0cy9hbWRncHUvYmFzaWNfdGVzdHMuYwpAQCAtNDksNiArNDksNyBAQCBzdGF0 aWMgdm9pZCBhbWRncHVfdXNlcnB0cl90ZXN0KHZvaWQpOwogc3RhdGljIHZvaWQgYW1kZ3B1X3Nl bWFwaG9yZV90ZXN0KHZvaWQpOwogc3RhdGljIHZvaWQgYW1kZ3B1X3N5bmNfZGVwZW5kZW5jeV90 ZXN0KHZvaWQpOwogc3RhdGljIHZvaWQgYW1kZ3B1X2JvX2V2aWN0aW9uX3Rlc3Qodm9pZCk7Citz dGF0aWMgdm9pZCBhbWRncHVfZGlzcGF0Y2hfdGVzdCh2b2lkKTsKIAogc3RhdGljIHZvaWQgYW1k Z3B1X2NvbW1hbmRfc3VibWlzc2lvbl93cml0ZV9saW5lYXJfaGVscGVyKHVuc2lnbmVkIGlwX3R5 cGUpOwogc3RhdGljIHZvaWQgYW1kZ3B1X2NvbW1hbmRfc3VibWlzc2lvbl9jb25zdF9maWxsX2hl bHBlcih1bnNpZ25lZCBpcF90eXBlKTsKQEAgLTcwLDYgKzcxLDcgQEAgQ1VfVGVzdEluZm8gYmFz aWNfdGVzdHNbXSA9IHsKIAl7ICJDb21tYW5kIHN1Ym1pc3Npb24gVGVzdCAoU0RNQSkiLCBhbWRn cHVfY29tbWFuZF9zdWJtaXNzaW9uX3NkbWEgfSwKIAl7ICJTVyBzZW1hcGhvcmUgVGVzdCIsICBh bWRncHVfc2VtYXBob3JlX3Rlc3QgfSwKIAl7ICJTeW5jIGRlcGVuZGVuY3kgVGVzdCIsICBhbWRn cHVfc3luY19kZXBlbmRlbmN5X3Rlc3QgfSwKKwl7ICJEaXNwYXRjaCBUZXN0IiwgIGFtZGdwdV9k aXNwYXRjaF90ZXN0IH0sCiAJQ1VfVEVTVF9JTkZPX05VTEwsCiB9OwogI2RlZmluZSBCVUZGRVJf U0laRSAoOCAqIDEwMjQpCkBAIC0xMTcsNiArMTE5LDcgQEAgQ1VfVGVzdEluZm8gYmFzaWNfdGVz dHNbXSA9IHsKICNkZWZpbmUgUEFDS0VUMyhvcCwgbikJKChQQUNLRVRfVFlQRTMgPDwgMzApIHwJ CQkJXAogCQkJICgoKG9wKSAmIDB4RkYpIDw8IDgpIHwJCQkJXAogCQkJICgobikgJiAweDNGRkYp IDw8IDE2KQorI2RlZmluZSBQQUNLRVQzX0NPTVBVVEUob3AsIG4pIFBBQ0tFVDMob3AsIG4pIHwg KDEgPDwgMSkKIAogLyogUGFja2V0IDMgdHlwZXMgKi8KICNkZWZpbmUJUEFDS0VUM19OT1AJCQkJ CTB4MTAKQEAgLTI0NSw4ICsyNDgsMTEgQEAgQ1VfVGVzdEluZm8gYmFzaWNfdGVzdHNbXSA9IHsK ICNkZWZpbmUJCVBBQ0tFVDNfU0VUX1NIX1JFR19TVEFSVAkJCTB4MDAwMDJjMDAKIAogI2RlZmlu ZQlQQUNLRVQzX0RJU1BBVENIX0RJUkVDVAkJCQkweDE1Ci0KLQorI2RlZmluZSBQQUNLRVQzX0VW RU5UX1dSSVRFCQkJCTB4NDYKKyNkZWZpbmUgUEFDS0VUM19BQ1FVSVJFX01FTQkJCQkweDU4Cisj ZGVmaW5lIFBBQ0tFVDNfU0VUX0NPTlRFWFRfUkVHCQkJCTB4NjkKKyNkZWZpbmUgUEFDS0VUM19T RVRfVUNPTkZJR19SRUcJCQkJMHg3OQorI2RlZmluZSBQQUNLRVQzX0RSQVdfSU5ERVhfQVVUTwkJ CQkweDJECiAvKiBnZnggOCAqLwogI2RlZmluZSBtbUNPTVBVVEVfUEdNX0xPICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJlMGMKICNkZWZp bmUgbW1DT01QVVRFX1BHTV9SU1JDMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgMHgyZTEyCkBAIC0yODYsNiArMjkyLDI1IEBAIHN0YXRpYyAgdWlu dDMyX3Qgc2hhZGVyX2JpbltdID0gewogI2RlZmluZSBDT0RFX09GRlNFVCA1MTIKICNkZWZpbmUg REFUQV9PRkZTRVQgMTAyNAogCitlbnVtIGNzX3R5cGUgeworCUNTX0JVRkZFUkNMRUFSLAorfTsK Kworc3RhdGljIGNvbnN0IHVpbnQzMl90IGJ1ZmZlcmNsZWFyX2NzX3NoYWRlcl9nZng5W10gPSB7 CisgICAgMHhEMUZEMDAwMCwgMHgwNDAxMEMwOCwgMHg3RTAyMDIwNCwgMHg3RTA0MDIwNSwKKyAg ICAweDdFMDYwMjA2LCAweDdFMDgwMjA3LCAweEUwMUMyMDAwLCAweDgwMDAwMTAwLAorICAgIDB4 QkY4MTAwMDAKK307CisKK3N0YXRpYyBjb25zdCB1aW50MzJfdCBidWZmZXJjbGVhcl9jc19zaGFk ZXJfcmVnaXN0ZXJzX2dmeDlbXVsyXSA9IHsKKwl7MHgyZTEyLCAweDAwMEMwMDQxfSwJLy97IG1t Q09NUFVURV9QR01fUlNSQzEsCSAgMHgwMDBDMDA0MSB9LAorCXsweDJlMTMsIDB4MDAwMDAwOTB9 LAkvL3sgbW1DT01QVVRFX1BHTV9SU1JDMiwJICAweDAwMDAwMDkwIH0sCisJezB4MmUwNywgMHgw MDAwMDA0MH0sCS8veyBtbUNPTVBVVEVfTlVNX1RIUkVBRF9YLCAweDAwMDAwMDQwIH0sCisJezB4 MmUwOCwgMHgwMDAwMDAwMX0sCS8veyBtbUNPTVBVVEVfTlVNX1RIUkVBRF9ZLCAweDAwMDAwMDAx IH0sCisJezB4MmUwOSwgMHgwMDAwMDAwMX0sCS8veyBtbUNPTVBVVEVfTlVNX1RIUkVBRF9aLCAw eDAwMDAwMDAxIH0KK307CisKK3N0YXRpYyBjb25zdCB1aW50MzJfdCBidWZmZXJjbGVhcl9jc19z aGFkZXJfcmVnaXN0ZXJzX251bV9nZng5ID0gNTsKIAogaW50IGFtZGdwdV9ib19hbGxvY19hbmRf bWFwX3JhdyhhbWRncHVfZGV2aWNlX2hhbmRsZSBkZXYsIHVuc2lnbmVkIHNpemUsCiAJCQl1bnNp Z25lZCBhbGlnbm1lbnQsIHVuc2lnbmVkIGhlYXAsIHVpbnQ2NF90IGFsbG9jX2ZsYWdzLApAQCAt MTg4MywzICsxOTA4LDI0NyBAQCBzdGF0aWMgdm9pZCBhbWRncHVfc3luY19kZXBlbmRlbmN5X3Rl c3Qodm9pZCkKIAogCWZyZWUoaWJzX3JlcXVlc3QuZGVwZW5kZW5jaWVzKTsKIH0KKworc3RhdGlj IGludCBhbWRncHVfZGlzcGF0Y2hfbG9hZF9jc19zaGFkZXIodWludDhfdCAqcHRyLAorCQkJCQkg ICBpbnQgY3NfdHlwZSkKK3sKKwl1aW50MzJfdCBzaGFkZXJfc2l6ZTsKKwljb25zdCB1aW50MzJf dCAqc2hhZGVyOworCisJc3dpdGNoIChjc190eXBlKSB7CisJCWNhc2UgQ1NfQlVGRkVSQ0xFQVI6 CisJCQlzaGFkZXIgPSBidWZmZXJjbGVhcl9jc19zaGFkZXJfZ2Z4OTsKKwkJCXNoYWRlcl9zaXpl ID0gc2l6ZW9mKGJ1ZmZlcmNsZWFyX2NzX3NoYWRlcl9nZng5KTsKKwkJCWJyZWFrOworCQlkZWZh dWx0OgorCQkJcmV0dXJuIC0xOworCQkJYnJlYWs7CisJfQorCisJbWVtY3B5KHB0ciwgc2hhZGVy LCBzaGFkZXJfc2l6ZSk7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgYW1kZ3B1X2Rpc3Bh dGNoX2luaXQodWludDMyX3QgKnB0ciwgdWludDMyX3QgaXBfdHlwZSkKK3sKKwlpbnQgaSA9IDA7 CisKKwkvKiBXcml0ZSBjb250ZXh0IGNvbnRyb2wgYW5kIGxvYWQgc2hhZG93aW5nIHJlZ2lzdGVy IGlmIG5lY2Vzc2FyeSAqLworCWlmIChpcF90eXBlID09IEFNREdQVV9IV19JUF9HRlgpIHsKKwkJ cHRyW2krK10gPSBQQUNLRVQzKFBLVDNfQ09OVEVYVF9DT05UUk9MLCAxKTsKKwkJcHRyW2krK10g PSAweDgwMDAwMDAwOworCQlwdHJbaSsrXSA9IDB4ODAwMDAwMDA7CisJfQorCisJLyogSXNzdWUg Y29tbWFuZHMgdG8gc2V0IGRlZmF1bHQgY29tcHV0ZSBzdGF0ZS4gKi8KKwkvKiBjbGVhciBtbUNP TVBVVEVfU1RBUlRfWiAtIG1tQ09NUFVURV9TVEFSVF9YICovCisJcHRyW2krK10gPSBQQUNLRVQz X0NPTVBVVEUoUEtUM19TRVRfU0hfUkVHLCAzKTsKKwlwdHJbaSsrXSA9IDB4MjA0OworCWkgKz0g MzsKKwkvKiBjbGVhciBtbUNPTVBVVEVfUkVTT1VSQ0VfTElNSVRTICovCisJcHRyW2krK10gPSBQ QUNLRVQzX0NPTVBVVEUoUEtUM19TRVRfU0hfUkVHLCAxKTsKKwlwdHJbaSsrXSA9IDB4MjE1Owor CXB0cltpKytdID0gMDsKKwkvKiBjbGVhciBtbUNPTVBVVEVfVE1QUklOR19TSVpFICovCisJcHRy W2krK10gPSBQQUNLRVQzX0NPTVBVVEUoUEtUM19TRVRfU0hfUkVHLCAxKTsKKwlwdHJbaSsrXSA9 IDB4MjE4OworCXB0cltpKytdID0gMDsKKworCXJldHVybiBpOworfQorCitzdGF0aWMgaW50IGFt ZGdwdV9kaXNwYXRjaF93cml0ZV9jdW1hc2sodWludDMyX3QgKnB0cikKK3sKKwlpbnQgaSA9IDA7 CisKKwkvKiAgSXNzdWUgY29tbWFuZHMgdG8gc2V0IGN1IG1hc2sgdXNlZCBpbiBjdXJyZW50IGRp c3BhdGNoICovCisJLyogc2V0IG1tQ09NUFVURV9TVEFUSUNfVEhSRUFEX01HTVRfU0UxIC0gbW1D T01QVVRFX1NUQVRJQ19USFJFQURfTUdNVF9TRTAgKi8KKwlwdHJbaSsrXSA9IFBBQ0tFVDNfQ09N UFVURShQS1QzX1NFVF9TSF9SRUcsIDIpOworCXB0cltpKytdID0gMHgyMTY7CisJcHRyW2krK10g PSAweGZmZmZmZmZmOworCXB0cltpKytdID0gMHhmZmZmZmZmZjsKKwkvKiBzZXQgbW1DT01QVVRF X1NUQVRJQ19USFJFQURfTUdNVF9TRTMgLSBtbUNPTVBVVEVfU1RBVElDX1RIUkVBRF9NR01UX1NF MiAqLworCXB0cltpKytdID0gUEFDS0VUM19DT01QVVRFKFBLVDNfU0VUX1NIX1JFRywgMik7CisJ cHRyW2krK10gPSAweDIxOTsKKwlwdHJbaSsrXSA9IDB4ZmZmZmZmZmY7CisJcHRyW2krK10gPSAw eGZmZmZmZmZmOworCisJcmV0dXJuIGk7Cit9CisKK3N0YXRpYyBpbnQgYW1kZ3B1X2Rpc3BhdGNo X3dyaXRlMmh3KHVpbnQzMl90ICpwdHIsIHVpbnQ2NF90IHNoYWRlcl9hZGRyKQoreworCWludCBp LCBqOworCisJaSA9IDA7CisKKwkvKiBXcml0ZXMgc2hhZGVyIHN0YXRlIHRvIEhXICovCisJLyog c2V0IG1tQ09NUFVURV9QR01fSEkgLSBtbUNPTVBVVEVfUEdNX0xPICovCisJcHRyW2krK10gPSBQ QUNLRVQzX0NPTVBVVEUoUEtUM19TRVRfU0hfUkVHLCAyKTsKKwlwdHJbaSsrXSA9IDB4MjBjOwor CXB0cltpKytdID0gKHNoYWRlcl9hZGRyID4+IDgpOworCXB0cltpKytdID0gKHNoYWRlcl9hZGRy ID4+IDQwKTsKKwkvKiB3cml0ZSBzaCByZWdzKi8KKwlmb3IgKGogPSAwOyBqIDwgYnVmZmVyY2xl YXJfY3Nfc2hhZGVyX3JlZ2lzdGVyc19udW1fZ2Z4OTsgaisrKSB7CisJCXB0cltpKytdID0gUEFD S0VUM19DT01QVVRFKFBLVDNfU0VUX1NIX1JFRywgMSk7CisJCS8qIC0gR2Z4OVNoUmVnQmFzZSAq LworCQlwdHJbaSsrXSA9IGJ1ZmZlcmNsZWFyX2NzX3NoYWRlcl9yZWdpc3RlcnNfZ2Z4OVtqXVsw XSAtIDB4MmMwMDsKKwkJcHRyW2krK10gPSBidWZmZXJjbGVhcl9jc19zaGFkZXJfcmVnaXN0ZXJz X2dmeDlbal1bMV07CisJfQorCisJcmV0dXJuIGk7Cit9CisKK3N0YXRpYyB2b2lkIGFtZGdwdV9t ZW1zZXRfZGlzcGF0Y2hfdGVzdChhbWRncHVfZGV2aWNlX2hhbmRsZSBkZXZpY2VfaGFuZGxlLAor CQkJCQkgdWludDMyX3QgaXBfdHlwZSwKKwkJCQkJIHVpbnQzMl90IHJpbmcpCit7CisJYW1kZ3B1 X2NvbnRleHRfaGFuZGxlIGNvbnRleHRfaGFuZGxlOworCWFtZGdwdV9ib19oYW5kbGUgYm9fZHN0 LCBib19zaGFkZXIsIGJvX2NtZCwgcmVzb3VyY2VzWzNdOworCXZvbGF0aWxlIHVuc2lnbmVkIGNo YXIgKnB0cl9kc3Q7CisJdm9pZCAqcHRyX3NoYWRlcjsKKwl1aW50MzJfdCAqcHRyX2NtZDsKKwl1 aW50NjRfdCBtY19hZGRyZXNzX2RzdCwgbWNfYWRkcmVzc19zaGFkZXIsIG1jX2FkZHJlc3NfY21k OworCWFtZGdwdV92YV9oYW5kbGUgdmFfZHN0LCB2YV9zaGFkZXIsIHZhX2NtZDsKKwlpbnQgaSwg cjsKKwlpbnQgYm9fZHN0X3NpemUgPSAxNjM4NDsKKwlpbnQgYm9fc2hhZGVyX3NpemUgPSA0MDk2 OworCWludCBib19jbWRfc2l6ZSA9IDQwOTY7CisJc3RydWN0IGFtZGdwdV9jc19yZXF1ZXN0IGli c19yZXF1ZXN0ID0gezB9OworCXN0cnVjdCBhbWRncHVfY3NfaWJfaW5mbyBpYl9pbmZvPSB7MH07 CisJYW1kZ3B1X2JvX2xpc3RfaGFuZGxlIGJvX2xpc3Q7CisJc3RydWN0IGFtZGdwdV9jc19mZW5j ZSBmZW5jZV9zdGF0dXMgPSB7MH07CisJdWludDMyX3QgZXhwaXJlZDsKKworCXIgPSBhbWRncHVf Y3NfY3R4X2NyZWF0ZShkZXZpY2VfaGFuZGxlLCAmY29udGV4dF9oYW5kbGUpOworCUNVX0FTU0VS VF9FUVVBTChyLCAwKTsKKworCXIgPSBhbWRncHVfYm9fYWxsb2NfYW5kX21hcChkZXZpY2VfaGFu ZGxlLCBib19jbWRfc2l6ZSwgNDA5NiwKKwkJCQkJQU1ER1BVX0dFTV9ET01BSU5fR1RULCAwLAor CQkJCQkmYm9fY21kLCAodm9pZCAqKikmcHRyX2NtZCwKKwkJCQkJJm1jX2FkZHJlc3NfY21kLCAm dmFfY21kKTsKKwlDVV9BU1NFUlRfRVFVQUwociwgMCk7CisKKwlyID0gYW1kZ3B1X2JvX2FsbG9j X2FuZF9tYXAoZGV2aWNlX2hhbmRsZSwgYm9fc2hhZGVyX3NpemUsIDQwOTYsCisJCQkJCUFNREdQ VV9HRU1fRE9NQUlOX1ZSQU0sIDAsCisJCQkJCSZib19zaGFkZXIsICZwdHJfc2hhZGVyLAorCQkJ CQkmbWNfYWRkcmVzc19zaGFkZXIsICZ2YV9zaGFkZXIpOworCUNVX0FTU0VSVF9FUVVBTChyLCAw KTsKKworCXIgPSBhbWRncHVfZGlzcGF0Y2hfbG9hZF9jc19zaGFkZXIocHRyX3NoYWRlciwgQ1Nf QlVGRkVSQ0xFQVIpOworCUNVX0FTU0VSVF9FUVVBTChyLCAwKTsKKworCXIgPSBhbWRncHVfYm9f YWxsb2NfYW5kX21hcChkZXZpY2VfaGFuZGxlLCBib19kc3Rfc2l6ZSwgNDA5NiwKKwkJCQkJQU1E R1BVX0dFTV9ET01BSU5fVlJBTSwgMCwKKwkJCQkJJmJvX2RzdCwgKHZvaWQgKiopJnB0cl9kc3Qs CisJCQkJCSZtY19hZGRyZXNzX2RzdCwgJnZhX2RzdCk7CisJQ1VfQVNTRVJUX0VRVUFMKHIsIDAp OworCisJaSA9IDA7CisJaSArPSBhbWRncHVfZGlzcGF0Y2hfaW5pdChwdHJfY21kICsgaSwgaXBf dHlwZSk7CisKKwkvKiAgSXNzdWUgY29tbWFuZHMgdG8gc2V0IGN1IG1hc2sgdXNlZCBpbiBjdXJy ZW50IGRpc3BhdGNoICovCisJaSArPSBhbWRncHVfZGlzcGF0Y2hfd3JpdGVfY3VtYXNrKHB0cl9j bWQgKyBpKTsKKworCS8qIFdyaXRlcyBzaGFkZXIgc3RhdGUgdG8gSFcgKi8KKwlpICs9IGFtZGdw dV9kaXNwYXRjaF93cml0ZTJodyhwdHJfY21kICsgaSwgbWNfYWRkcmVzc19zaGFkZXIpOworCisJ LyogV3JpdGUgY29uc3RhbnQgZGF0YSAqLworCS8qIFdyaXRlcyB0aGUgVUFWIGNvbnN0YW50IGRh dGEgdG8gdGhlIFNHUFJzLiAqLworCXB0cl9jbWRbaSsrXSA9IFBBQ0tFVDNfQ09NUFVURShQS1Qz X1NFVF9TSF9SRUcsIDQpOworCXB0cl9jbWRbaSsrXSA9IDB4MjQwOworCXB0cl9jbWRbaSsrXSA9 IG1jX2FkZHJlc3NfZHN0OworCXB0cl9jbWRbaSsrXSA9IChtY19hZGRyZXNzX2RzdCA+PiAzMikg fCAweDEwMDAwMDsKKwlwdHJfY21kW2krK10gPSAweDQwMDsKKwlwdHJfY21kW2krK10gPSAweDc0 ZmFjOworCisJLyogU2V0cyBhIHJhbmdlIG9mIHBpeGVsIHNoYWRlciBjb25zdGFudHMgKi8KKwlw dHJfY21kW2krK10gPSBQQUNLRVQzX0NPTVBVVEUoUEtUM19TRVRfU0hfUkVHLCA0KTsKKwlwdHJf Y21kW2krK10gPSAweDI0NDsKKwlwdHJfY21kW2krK10gPSAweDIyMjIyMjIyOworCXB0cl9jbWRb aSsrXSA9IDB4MjIyMjIyMjI7CisJcHRyX2NtZFtpKytdID0gMHgyMjIyMjIyMjsKKwlwdHJfY21k W2krK10gPSAweDIyMjIyMjIyOworCisJLyogZGlzcGF0Y2ggZGlyZWN0IGNvbW1hbmQgKi8KKwlw dHJfY21kW2krK10gPSBQQUNLRVQzX0NPTVBVVEUoUEFDS0VUM19ESVNQQVRDSF9ESVJFQ1QsIDMp OworCXB0cl9jbWRbaSsrXSA9IDB4MTA7CisJcHRyX2NtZFtpKytdID0gMTsKKwlwdHJfY21kW2kr K10gPSAxOworCXB0cl9jbWRbaSsrXSA9IDE7CisKKwl3aGlsZSAoaSAmIDcpCisJCXB0cl9jbWRb aSsrXSA9ICAweGZmZmYxMDAwOyAvKiB0eXBlMyBub3AgcGFja2V0ICovCisKKwlyZXNvdXJjZXNb MF0gPSBib19kc3Q7CisJcmVzb3VyY2VzWzFdID0gYm9fc2hhZGVyOworCXJlc291cmNlc1syXSA9 IGJvX2NtZDsKKwlyID0gYW1kZ3B1X2JvX2xpc3RfY3JlYXRlKGRldmljZV9oYW5kbGUsIDMsIHJl c291cmNlcywgTlVMTCwgJmJvX2xpc3QpOworCUNVX0FTU0VSVF9FUVVBTChyLCAwKTsKKworCWli X2luZm8uaWJfbWNfYWRkcmVzcyA9IG1jX2FkZHJlc3NfY21kOworCWliX2luZm8uc2l6ZSA9IGk7 CisJaWJzX3JlcXVlc3QuaXBfdHlwZSA9IGlwX3R5cGU7CisJaWJzX3JlcXVlc3QucmluZyA9IHJp bmc7CisJaWJzX3JlcXVlc3QucmVzb3VyY2VzID0gYm9fbGlzdDsKKwlpYnNfcmVxdWVzdC5udW1i ZXJfb2ZfaWJzID0gMTsKKwlpYnNfcmVxdWVzdC5pYnMgPSAmaWJfaW5mbzsKKwlpYnNfcmVxdWVz dC5mZW5jZV9pbmZvLmhhbmRsZSA9IE5VTEw7CisKKwkvKiBzdWJtaXQgQ1MgKi8KKwlyID0gYW1k Z3B1X2NzX3N1Ym1pdChjb250ZXh0X2hhbmRsZSwgMCwgJmlic19yZXF1ZXN0LCAxKTsKKwlDVV9B U1NFUlRfRVFVQUwociwgMCk7CisKKwlyID0gYW1kZ3B1X2JvX2xpc3RfZGVzdHJveShib19saXN0 KTsKKwlDVV9BU1NFUlRfRVFVQUwociwgMCk7CisKKwlmZW5jZV9zdGF0dXMuaXBfdHlwZSA9IGlw X3R5cGU7CisJZmVuY2Vfc3RhdHVzLmlwX2luc3RhbmNlID0gMDsKKwlmZW5jZV9zdGF0dXMucmlu ZyA9IHJpbmc7CisJZmVuY2Vfc3RhdHVzLmNvbnRleHQgPSBjb250ZXh0X2hhbmRsZTsKKwlmZW5j ZV9zdGF0dXMuZmVuY2UgPSBpYnNfcmVxdWVzdC5zZXFfbm87CisKKwkvKiB3YWl0IGZvciBJQiBh Y2NvbXBsaXNoZWQgKi8KKwlyID0gYW1kZ3B1X2NzX3F1ZXJ5X2ZlbmNlX3N0YXR1cygmZmVuY2Vf c3RhdHVzLAorCQkJCQkgQU1ER1BVX1RJTUVPVVRfSU5GSU5JVEUsCisJCQkJCSAwLCAmZXhwaXJl ZCk7CisJQ1VfQVNTRVJUX0VRVUFMKHIsIDApOworCUNVX0FTU0VSVF9FUVVBTChleHBpcmVkLCB0 cnVlKTsKKworCS8qIHZlcmlmeSBpZiBtZW1zZXQgdGVzdCByZXN1bHQgbWVldHMgd2l0aCBleHBl Y3RlZCAqLworCWkgPSAwOworCXdoaWxlKGkgPCBib19kc3Rfc2l6ZSkgeworCQlDVV9BU1NFUlRf RVFVQUwocHRyX2RzdFtpKytdLCAweDIyKTsKKwl9CisKKwlyID0gYW1kZ3B1X2JvX3VubWFwX2Fu ZF9mcmVlKGJvX2RzdCwgdmFfZHN0LCBtY19hZGRyZXNzX2RzdCwgYm9fZHN0X3NpemUpOworCUNV X0FTU0VSVF9FUVVBTChyLCAwKTsKKworCXIgPSBhbWRncHVfYm9fdW5tYXBfYW5kX2ZyZWUoYm9f c2hhZGVyLCB2YV9zaGFkZXIsIG1jX2FkZHJlc3Nfc2hhZGVyLCBib19zaGFkZXJfc2l6ZSk7CisJ Q1VfQVNTRVJUX0VRVUFMKHIsIDApOworCisJciA9IGFtZGdwdV9ib191bm1hcF9hbmRfZnJlZShi b19jbWQsIHZhX2NtZCwgbWNfYWRkcmVzc19jbWQsIGJvX2NtZF9zaXplKTsKKwlDVV9BU1NFUlRf RVFVQUwociwgMCk7CisKKwlyID0gYW1kZ3B1X2NzX2N0eF9mcmVlKGNvbnRleHRfaGFuZGxlKTsK KwlDVV9BU1NFUlRfRVFVQUwociwgMCk7Cit9CisKK3N0YXRpYyB2b2lkIGFtZGdwdV9kaXNwYXRj aF90ZXN0KHZvaWQpCit7CisJaW50IHI7CisJc3RydWN0IGRybV9hbWRncHVfaW5mb19od19pcCBp bmZvOworCXVpbnQzMl90IHJpbmdfaWQ7CisKKwlyID0gYW1kZ3B1X3F1ZXJ5X2h3X2lwX2luZm8o ZGV2aWNlX2hhbmRsZSwgQU1ER1BVX0hXX0lQX0NPTVBVVEUsIDAsICZpbmZvKTsKKwlDVV9BU1NF UlRfRVFVQUwociwgMCk7CisKKwlmb3IgKHJpbmdfaWQgPSAwOyAoMSA8PCByaW5nX2lkKSAmIGlu Zm8uYXZhaWxhYmxlX3JpbmdzOyByaW5nX2lkKyspCisJCWFtZGdwdV9tZW1zZXRfZGlzcGF0Y2hf dGVzdChkZXZpY2VfaGFuZGxlLCBBTURHUFVfSFdfSVBfQ09NUFVURSwgcmluZ19pZCk7CisKKwly ID0gYW1kZ3B1X3F1ZXJ5X2h3X2lwX2luZm8oZGV2aWNlX2hhbmRsZSwgQU1ER1BVX0hXX0lQX0dG WCwgMCwgJmluZm8pOworCUNVX0FTU0VSVF9FUVVBTChyLCAwKTsKKworCWZvciAocmluZ19pZCA9 IDA7ICgxIDw8IHJpbmdfaWQpICYgaW5mby5hdmFpbGFibGVfcmluZ3M7IHJpbmdfaWQrKykKKwkJ YW1kZ3B1X21lbXNldF9kaXNwYXRjaF90ZXN0KGRldmljZV9oYW5kbGUsIEFNREdQVV9IV19JUF9H RlgsIHJpbmdfaWQpOworfQpjb21taXQgOGM2ZGJkNzkzODA5MmZmNjRiNjRiYjhkNjM3ZDU2YjBk YzNmN2ZjOQpBdXRob3I6IEN1aSwgRmxvcmEgPEZsb3JhLkN1aUBhbWQuY29tPgpEYXRlOiAgIFdl ZCBNYXIgNiAwNjozNzoxMyAyMDE5ICswMDAwCgogICAgdGVzdHMvYW1kZ3B1OiBhZGQgZGVhZGxv Y2sgdGVzdCBmb3Igc2RtYQogICAgCiAgICBkZWFkbG9jayB0ZXN0IGZvciBzZG1hIHdpbGwgY2F1 c2UgZ3B1IHJlY292ZXJ0eS4KICAgIGRpc2FibGUgdGhlIHRlc3QgZm9yIG5vdyB1bnRpbCBHUFUg cmVzZXQgcmVjb3ZlcnkgY291bGQgc3Vydml2ZSBhdCBsZWFzdAogICAgMTAwMCB0aW1lcyB0ZXN0 LgogICAgCiAgICB2MjogYWRkIG1vZHByb2JlIHBhcmFtZXRlcgogICAgCiAgICBSZXZpZXdlZC1h bmQtdGVzdGVkLWJ5OiBFdmFuIFF1YW4gPGV2YW4ucXVhbkBhbWQuY29tPgogICAgQWNrZWQtYnk6 IENocmlzdGlhbiBLw7ZuaWcgPGNocmlzdGlhbi5rb2VuaWdAYW1kLmNvbT4KICAgIFNpZ25lZC1v ZmYtYnk6IEZsb3JhIEN1aSA8ZmxvcmEuY3VpQGFtZC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBB bGV4IERldWNoZXIgPGFsZXhhbmRlci5kZXVjaGVyQGFtZC5jb20+CgpkaWZmIC0tZ2l0IGEvdGVz dHMvYW1kZ3B1L2FtZGdwdV90ZXN0LmMgYi90ZXN0cy9hbWRncHUvYW1kZ3B1X3Rlc3QuYwppbmRl eCBlYmY0NDA5OC4uMzhiOGE2ODEgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2FtZGdwdS9hbWRncHVfdGVz dC5jCisrKyBiL3Rlc3RzL2FtZGdwdS9hbWRncHVfdGVzdC5jCkBAIC00MjYsNiArNDI2LDEwIEBA IHN0YXRpYyB2b2lkIGFtZGdwdV9kaXNhYmxlX3N1aXRlcygpCiAJCQkiY29tcHV0ZSByaW5nIGJs b2NrIHRlc3QgKHNldCBhbWRncHUubG9ja3VwX3RpbWVvdXQ9NTApIiwgQ1VfRkFMU0UpKQogCQlm cHJpbnRmKHN0ZGVyciwgInRlc3QgZGVhY3RpdmF0aW9uIGZhaWxlZCAtICVzXG4iLCBDVV9nZXRf ZXJyb3JfbXNnKCkpOwogCisJaWYgKGFtZGdwdV9zZXRfdGVzdF9hY3RpdmUoREVBRExPQ0tfVEVT VFNfU1RSLAorCQkJCSJzZG1hIHJpbmcgYmxvY2sgdGVzdCAoc2V0IGFtZGdwdS5sb2NrdXBfdGlt ZW91dD01MCkiLCBDVV9GQUxTRSkpCisJCWZwcmludGYoc3RkZXJyLCAidGVzdCBkZWFjdGl2YXRp b24gZmFpbGVkIC0gJXNcbiIsIENVX2dldF9lcnJvcl9tc2coKSk7CisKIAlpZiAoYW1kZ3B1X3Nl dF90ZXN0X2FjdGl2ZShCT19URVNUU19TVFIsICJNZXRhZGF0YSIsIENVX0ZBTFNFKSkKIAkJZnBy aW50ZihzdGRlcnIsICJ0ZXN0IGRlYWN0aXZhdGlvbiBmYWlsZWQgLSAlc1xuIiwgQ1VfZ2V0X2Vy cm9yX21zZygpKTsKIApkaWZmIC0tZ2l0IGEvdGVzdHMvYW1kZ3B1L2RlYWRsb2NrX3Rlc3RzLmMg Yi90ZXN0cy9hbWRncHUvZGVhZGxvY2tfdGVzdHMuYwppbmRleCBhNmMyNjM1ZC4uOTEzNjhjMTUg MTAwNjQ0Ci0tLSBhL3Rlc3RzL2FtZGdwdS9kZWFkbG9ja190ZXN0cy5jCisrKyBiL3Rlc3RzL2Ft ZGdwdS9kZWFkbG9ja190ZXN0cy5jCkBAIC05Niw2ICs5Niw5IEBACiAKICNkZWZpbmUgbW1WTV9D T05URVhUMF9QQUdFX1RBQkxFX0JBU0VfQUREUiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgMHg1NGYKIAorI2RlZmluZSBTRE1BX1BLVF9IRUFERVJfT1AoeCkJKHggJiAweGZm KQorI2RlZmluZSBTRE1BX09QX1BPTExfUkVHTUVNICA4CisKIHN0YXRpYyAgYW1kZ3B1X2Rldmlj ZV9oYW5kbGUgZGV2aWNlX2hhbmRsZTsKIHN0YXRpYyAgdWludDMyX3QgIG1ham9yX3ZlcnNpb247 CiBzdGF0aWMgIHVpbnQzMl90ICBtaW5vcl92ZXJzaW9uOwpAQCAtMTEwLDYgKzExMyw3IEBAIHN0 YXRpYyB2b2lkIGFtZGdwdV9kZWFkbG9ja19nZngodm9pZCk7CiBzdGF0aWMgdm9pZCBhbWRncHVf ZGVhZGxvY2tfY29tcHV0ZSh2b2lkKTsKIHN0YXRpYyB2b2lkIGFtZGdwdV9pbGxlZ2FsX3JlZ19h Y2Nlc3MoKTsKIHN0YXRpYyB2b2lkIGFtZGdwdV9pbGxlZ2FsX21lbV9hY2Nlc3MoKTsKK3N0YXRp YyB2b2lkIGFtZGdwdV9kZWFkbG9ja19zZG1hKHZvaWQpOwogCiBDVV9CT09MIHN1aXRlX2RlYWRs b2NrX3Rlc3RzX2VuYWJsZSh2b2lkKQogewpAQCAtMTcxLDYgKzE3NSw3IEBAIGludCBzdWl0ZV9k ZWFkbG9ja190ZXN0c19jbGVhbih2b2lkKQogQ1VfVGVzdEluZm8gZGVhZGxvY2tfdGVzdHNbXSA9 IHsKIAl7ICJnZnggcmluZyBibG9jayB0ZXN0IChzZXQgYW1kZ3B1LmxvY2t1cF90aW1lb3V0PTUw KSIsIGFtZGdwdV9kZWFkbG9ja19nZnggfSwKIAl7ICJjb21wdXRlIHJpbmcgYmxvY2sgdGVzdCAo c2V0IGFtZGdwdS5sb2NrdXBfdGltZW91dD01MCkiLCBhbWRncHVfZGVhZGxvY2tfY29tcHV0ZSB9 LAorCXsgInNkbWEgcmluZyBibG9jayB0ZXN0IChzZXQgYW1kZ3B1LmxvY2t1cF90aW1lb3V0PTUw KSIsIGFtZGdwdV9kZWFkbG9ja19zZG1hIH0sCiAJeyAiaWxsZWdhbCByZWcgYWNjZXNzIHRlc3Qi LCBhbWRncHVfaWxsZWdhbF9yZWdfYWNjZXNzIH0sCiAJeyAiaWxsZWdhbCBtZW0gYWNjZXNzIHRl c3QgKHNldCBhbWRncHUudm1fZmF1bHRfc3RvcD0yKSIsIGFtZGdwdV9pbGxlZ2FsX21lbV9hY2Nl c3MgfSwKIAlDVV9URVNUX0lORk9fTlVMTCwKQEAgLTI2MCw3ICsyNjUsNiBAQCBzdGF0aWMgdm9p ZCBhbWRncHVfZGVhZGxvY2tfaGVscGVyKHVuc2lnbmVkIGlwX3R5cGUpCiAJaWJzX3JlcXVlc3Qu aWJzID0gJmliX2luZm87CiAJaWJzX3JlcXVlc3QucmVzb3VyY2VzID0gYm9fbGlzdDsKIAlpYnNf cmVxdWVzdC5mZW5jZV9pbmZvLmhhbmRsZSA9IE5VTEw7Ci0KIAlmb3IgKGkgPSAwOyBpIDwgMjAw OyBpKyspIHsKIAkJciA9IGFtZGdwdV9jc19zdWJtaXQoY29udGV4dF9oYW5kbGUsIDAsJmlic19y ZXF1ZXN0LCAxKTsKIAkJQ1VfQVNTRVJUX0VRVUFMKChyID09IDAgfHwgciA9PSAtRUNBTkNFTEVE KSwgMSk7CkBAIC0yOTEsNiArMjk1LDEwMyBAQCBzdGF0aWMgdm9pZCBhbWRncHVfZGVhZGxvY2tf aGVscGVyKHVuc2lnbmVkIGlwX3R5cGUpCiAJQ1VfQVNTRVJUX0VRVUFMKHIsIDApOwogfQogCitz dGF0aWMgdm9pZCBhbWRncHVfZGVhZGxvY2tfc2RtYSh2b2lkKQoreworCWFtZGdwdV9jb250ZXh0 X2hhbmRsZSBjb250ZXh0X2hhbmRsZTsKKwlhbWRncHVfYm9faGFuZGxlIGliX3Jlc3VsdF9oYW5k bGU7CisJdm9pZCAqaWJfcmVzdWx0X2NwdTsKKwl1aW50NjRfdCBpYl9yZXN1bHRfbWNfYWRkcmVz czsKKwlzdHJ1Y3QgYW1kZ3B1X2NzX3JlcXVlc3QgaWJzX3JlcXVlc3Q7CisJc3RydWN0IGFtZGdw dV9jc19pYl9pbmZvIGliX2luZm87CisJc3RydWN0IGFtZGdwdV9jc19mZW5jZSBmZW5jZV9zdGF0 dXM7CisJdWludDMyX3QgZXhwaXJlZDsKKwlpbnQgaSwgcjsKKwlhbWRncHVfYm9fbGlzdF9oYW5k bGUgYm9fbGlzdDsKKwlhbWRncHVfdmFfaGFuZGxlIHZhX2hhbmRsZTsKKwlzdHJ1Y3QgZHJtX2Ft ZGdwdV9pbmZvX2h3X2lwIGluZm87CisJdWludDMyX3QgcmluZ19pZDsKKworCXIgPSBhbWRncHVf cXVlcnlfaHdfaXBfaW5mbyhkZXZpY2VfaGFuZGxlLCBBTURHUFVfSFdfSVBfRE1BLCAwLCAmaW5m byk7CisJQ1VfQVNTRVJUX0VRVUFMKHIsIDApOworCisJciA9IGFtZGdwdV9jc19jdHhfY3JlYXRl KGRldmljZV9oYW5kbGUsICZjb250ZXh0X2hhbmRsZSk7CisJQ1VfQVNTRVJUX0VRVUFMKHIsIDAp OworCisJZm9yIChyaW5nX2lkID0gMDsgKDEgPDwgcmluZ19pZCkgJiBpbmZvLmF2YWlsYWJsZV9y aW5nczsgcmluZ19pZCsrKSB7CisJCXIgPSBwdGhyZWFkX2NyZWF0ZSgmc3RyZXNzX3RocmVhZCwg TlVMTCwgd3JpdGVfbWVtX2FkZHJlc3MsIE5VTEwpOworCQlDVV9BU1NFUlRfRVFVQUwociwgMCk7 CisKKwkJciA9IGFtZGdwdV9ib19hbGxvY19hbmRfbWFwX3JhdyhkZXZpY2VfaGFuZGxlLCA0MDk2 LCA0MDk2LAorCQkJCUFNREdQVV9HRU1fRE9NQUlOX0dUVCwgMCwgdXNlX3VjX210eXBlID8gQU1E R1BVX1ZNX01UWVBFX1VDIDogMCwKKwkJCQkJCQkgICAgJmliX3Jlc3VsdF9oYW5kbGUsICZpYl9y ZXN1bHRfY3B1LAorCQkJCQkJCSAgICAmaWJfcmVzdWx0X21jX2FkZHJlc3MsICZ2YV9oYW5kbGUp OworCQlDVV9BU1NFUlRfRVFVQUwociwgMCk7CisKKwkJciA9IGFtZGdwdV9nZXRfYm9fbGlzdChk ZXZpY2VfaGFuZGxlLCBpYl9yZXN1bHRfaGFuZGxlLCBOVUxMLAorCQkJCSAgICAgICAmYm9fbGlz dCk7CisJCUNVX0FTU0VSVF9FUVVBTChyLCAwKTsKKworCQlwdHIgPSBpYl9yZXN1bHRfY3B1Owor CQlpID0gMDsKKworCQlwdHJbaSsrXSA9IFNETUFfUEtUX0hFQURFUl9PUChTRE1BX09QX1BPTExf UkVHTUVNKSB8CisJCQkJKDAgPDwgMjYpIHwgLyogV0FJVF9SRUdfTUVNICovCisJCQkJKDQgPDwg MjgpIHwgLyogIT0gKi8KKwkJCQkoMSA8PCAzMSk7IC8qIG1lbW9yeSAqLworCQlwdHJbaSsrXSA9 IChpYl9yZXN1bHRfbWNfYWRkcmVzcyArIDI1Nio0KSAmIDB4ZmZmZmZmZmM7CisJCXB0cltpKytd ID0gKChpYl9yZXN1bHRfbWNfYWRkcmVzcyArIDI1Nio0KSA+PiAzMikgJiAweGZmZmZmZmZmOwor CQlwdHJbaSsrXSA9IDB4MDAwMDAwMDA7IC8qIHJlZmVyZW5jZSB2YWx1ZSAqLworCQlwdHJbaSsr XSA9IDB4ZmZmZmZmZmY7IC8qIGFuZCBtYXNrICovCisJCXB0cltpKytdID0gIDQgfCAvKiBwb2xs IGludGVydmFsICovCisJCQkJKDB4ZmZmIDw8IDE2KTsgLyogcmV0cnkgY291bnQgKi8KKworCQlm b3IgKDsgaSA8IDE2OyBpKyspCisJCQlwdHJbaV0gPSAwOworCisJCXB0clsyNTZdID0gMHgwOyAv KiB0aGUgbWVtb3J5IHdlIHdhaXQgb24gdG8gY2hhbmdlICovCisKKwkJbWVtc2V0KCZpYl9pbmZv LCAwLCBzaXplb2Yoc3RydWN0IGFtZGdwdV9jc19pYl9pbmZvKSk7CisJCWliX2luZm8uaWJfbWNf YWRkcmVzcyA9IGliX3Jlc3VsdF9tY19hZGRyZXNzOworCQlpYl9pbmZvLnNpemUgPSAxNjsKKwor CQltZW1zZXQoJmlic19yZXF1ZXN0LCAwLCBzaXplb2Yoc3RydWN0IGFtZGdwdV9jc19yZXF1ZXN0 KSk7CisJCWlic19yZXF1ZXN0LmlwX3R5cGUgPSBBTURHUFVfSFdfSVBfRE1BOworCQlpYnNfcmVx dWVzdC5yaW5nID0gcmluZ19pZDsKKwkJaWJzX3JlcXVlc3QubnVtYmVyX29mX2licyA9IDE7CisJ CWlic19yZXF1ZXN0LmlicyA9ICZpYl9pbmZvOworCQlpYnNfcmVxdWVzdC5yZXNvdXJjZXMgPSBi b19saXN0OworCQlpYnNfcmVxdWVzdC5mZW5jZV9pbmZvLmhhbmRsZSA9IE5VTEw7CisKKwkJZm9y IChpID0gMDsgaSA8IDIwMDsgaSsrKSB7CisJCQlyID0gYW1kZ3B1X2NzX3N1Ym1pdChjb250ZXh0 X2hhbmRsZSwgMCwmaWJzX3JlcXVlc3QsIDEpOworCQkJQ1VfQVNTRVJUX0VRVUFMKChyID09IDAg fHwgciA9PSAtRUNBTkNFTEVEKSwgMSk7CisKKwkJfQorCisJCW1lbXNldCgmZmVuY2Vfc3RhdHVz LCAwLCBzaXplb2Yoc3RydWN0IGFtZGdwdV9jc19mZW5jZSkpOworCQlmZW5jZV9zdGF0dXMuY29u dGV4dCA9IGNvbnRleHRfaGFuZGxlOworCQlmZW5jZV9zdGF0dXMuaXBfdHlwZSA9IEFNREdQVV9I V19JUF9ETUE7CisJCWZlbmNlX3N0YXR1cy5pcF9pbnN0YW5jZSA9IDA7CisJCWZlbmNlX3N0YXR1 cy5yaW5nID0gcmluZ19pZDsKKwkJZmVuY2Vfc3RhdHVzLmZlbmNlID0gaWJzX3JlcXVlc3Quc2Vx X25vOworCisJCXIgPSBhbWRncHVfY3NfcXVlcnlfZmVuY2Vfc3RhdHVzKCZmZW5jZV9zdGF0dXMs CisJCQkJQU1ER1BVX1RJTUVPVVRfSU5GSU5JVEUsMCwgJmV4cGlyZWQpOworCQlDVV9BU1NFUlRf RVFVQUwoKHIgPT0gMCB8fCByID09IC1FQ0FOQ0VMRUQpLCAxKTsKKworCQlwdGhyZWFkX2pvaW4o c3RyZXNzX3RocmVhZCwgTlVMTCk7CisKKwkJciA9IGFtZGdwdV9ib19saXN0X2Rlc3Ryb3koYm9f bGlzdCk7CisJCUNVX0FTU0VSVF9FUVVBTChyLCAwKTsKKworCQlyID0gYW1kZ3B1X2JvX3VubWFw X2FuZF9mcmVlKGliX3Jlc3VsdF9oYW5kbGUsIHZhX2hhbmRsZSwKKwkJCQkJICAgICBpYl9yZXN1 bHRfbWNfYWRkcmVzcywgNDA5Nik7CisJCUNVX0FTU0VSVF9FUVVBTChyLCAwKTsKKwl9CisJciA9 IGFtZGdwdV9jc19jdHhfZnJlZShjb250ZXh0X2hhbmRsZSk7CisJQ1VfQVNTRVJUX0VRVUFMKHIs IDApOworfQorCiBzdGF0aWMgdm9pZCBiYWRfYWNjZXNzX2hlbHBlcihpbnQgcmVnX2FjY2VzcykK IHsKIAlhbWRncHVfY29udGV4dF9oYW5kbGUgY29udGV4dF9oYW5kbGU7CmNvbW1pdCBjOGJjNjlh MTY1ZTFlYzYyY2NlYTU2ZWZiYjcwYjE4NTQzMzc2MDZiCkF1dGhvcjogQWxleCBEZXVjaGVyIDxh bGV4YW5kZXIuZGV1Y2hlckBhbWQuY29tPgpEYXRlOiAgIFR1ZSBNYXIgNSAxMToxNDozMSAyMDE5 IC0wNTAwCgogICAgYW1kZ3B1OiBhZGQgbWFya2V0aW5nIG5hbWUgZm9yIEFNRCBSYWRlb24gVklJ CiAgICAKICAgIFNpZ25lZC1vZmYtYnk6IEFsZXggRGV1Y2hlciA8YWxleGFuZGVyLmRldWNoZXJA YW1kLmNvbT4KCmRpZmYgLS1naXQgYS9kYXRhL2FtZGdwdS5pZHMgYi9kYXRhL2FtZGdwdS5pZHMK aW5kZXggZDI0YzdlZTYuLmY2MTQ5N2U0IDEwMDY0NAotLS0gYS9kYXRhL2FtZGdwdS5pZHMKKysr IGIvZGF0YS9hbWRncHUuaWRzCkBAIC00NSw2ICs0NSw3IEBACiA2NjY1LAk4MywJQU1EIFJhZGVv biAoVE0pIFI1IE0zMjAKIDY2NjcsCTAsCUFNRCBSYWRlb24gUjUgTTIwMCBTZXJpZXMKIDY2NkYs CTAsCUFNRCBSYWRlb24gSEQgODUwME0KKzY2QUYsCUMxLAlBTUQgUmFkZW9uIFZJSQogNjc4MCwJ MCwJQVRJIEZpcmVQcm8gViAoRmlyZUdMIFYpIEdyYXBoaWNzIEFkYXB0ZXIKIDY3OEEsCTAsCUFU SSBGaXJlUHJvIFYgKEZpcmVHTCBWKSBHcmFwaGljcyBBZGFwdGVyCiA2Nzk4LAkwLAlBTUQgUmFk ZW9uIEhEIDc5MDAgU2VyaWVzCgoKLS0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KRHJpLXBhdGNoZXMgbWFpbGluZyBsaXN0CkRyaS1wYXRjaGVzQGxpc3Rz LnNvdXJjZWZvcmdlLm5ldApodHRwczovL2xpc3RzLnNvdXJjZWZvcmdlLm5ldC9saXN0cy9saXN0 aW5mby9kcmktcGF0Y2hlcwo=