From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:43071) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RIh2o-0004A9-Bo for qemu-devel@nongnu.org; Tue, 25 Oct 2011 09:27:56 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RIh2e-00042c-U9 for qemu-devel@nongnu.org; Tue, 25 Oct 2011 09:27:54 -0400 Received: from mx1.redhat.com ([209.132.183.28]:29646) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RIh2e-00042Q-El for qemu-devel@nongnu.org; Tue, 25 Oct 2011 09:27:44 -0400 Message-ID: <4EA6B947.5030005@redhat.com> Date: Tue, 25 Oct 2011 15:27:35 +0200 From: Gerd Hoffmann MIME-Version: 1.0 References: <1314891739-1881-1-git-send-email-kraxel@redhat.com> <20111024184320.GA29718@otherpad.lan.raisama.net> <4EA5B51F.8040502@codemonkey.ws> <4EA6A9CD.5080103@redhat.com> In-Reply-To: <4EA6A9CD.5080103@redhat.com> Content-Type: multipart/mixed; boundary="------------070707030704020204040102" Subject: Re: [Qemu-devel] [PATCH 0/4] add "make check" List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Kevin Wolf Cc: Avi Kivity , Markus Armbruster , qemu-devel@nongnu.org This is a multi-part message in MIME format. --------------070707030704020204040102 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Hi, >> I was hoping for more, but maybe we just need to start here and grow >> organically, I'll queue it again. > > A while ago I played with some simple IDE tests. It basically was a > small x86 kernel with an empty image that sends IDE commands and prints > some results, and a script that invokes the guest and checks whether the > test has passed or failed. That reminds me that I've started toying with running tests inside a guest too. Stopped working on it a while back due to other priorities. Attached what I have so far. > So at first I started with my own multiboot kernel and copied over some > parts of kvm-unittest's libc. Clearly not the best idea once it's more > than a couple of lines, so at some point I took the code and integrated > with my real kvm-unittests repository. > > Now I don't have to duplicate code any more, but at the same time > there's no chance that a 'make check' in an upstream qemu tree could run > this. Tests for other devices will have exactly the same problem. > > Any suggestions on how to go forward with this kind of tests? Should > this go into qemu or into kvm-unittests? Or should kvm-unittests be > merged into the qemu tree? Or is the approach completely wrong? I think we should have some framework to run tests inside the guest in the qemu source tree. I'm not sure kvm-unittests is the right tool for the job though. It is quite low-level and mainly targets the kvm bits inside the linux kernel. Testing -- for example -- usb device emulation would pretty much require writing a usb stack for kvm-unitests ... cheers, Gerd --------------070707030704020204040102 Content-Type: text/plain; name="0001-initramfs-test-framework.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0001-initramfs-test-framework.patch" RnJvbSAwOTZmNjhlYTA4YzNjNGJhZjFiYmRjNTQ5YjI1N2E2N2VjYzg3ZTI1IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHZXJkIEhvZmZtYW5uIDxrcmF4ZWxAcmVkaGF0LmNv bT4KRGF0ZTogVHVlLCAxMyBTZXAgMjAxMSAxNzozODozNyArMDIwMApTdWJqZWN0OiBbUEFU Q0hdIGluaXRyYW1mcyB0ZXN0IGZyYW1ld29yawoKU2lnbmVkLW9mZi1ieTogR2VyZCBIb2Zm bWFubiA8a3JheGVsQHJlZGhhdC5jb20+Ci0tLQogaW5pdHJhbWZzLy5naXRpZ25vcmUgICAg ICAgICB8ICAgIDMgKwogaW5pdHJhbWZzLzEwLXFlbXUtdWRldi5ydWxlcyB8ICAgIDUgKwog aW5pdHJhbWZzL01ha2VmaWxlICAgICAgICAgICB8ICAgMzYgKysrKysrKwogaW5pdHJhbWZz L1JFQURNRSAgICAgICAgICAgICB8ICAgNDQgKysrKysrKysKIGluaXRyYW1mcy9pbml0LmMg ICAgICAgICAgICAgfCAgMjI1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKwogaW5pdHJhbWZzL2luaXRyYW1mcy1ib290ICAgICB8ICAgMzIgKysrKysrCiBp bml0cmFtZnMvaW5pdHJhbWZzLWNyZWF0ZSAgIHwgIDExMSArKysrKysrKysrKysrKysrKysr KysKIGluaXRyYW1mcy90ZXN0LWVoY2kgICAgICAgICAgfCAgICAzICsKIGluaXRyYW1mcy90 ZXN0LWVoY2kuZ29vZCAgICAgfCAgICA4ICsrCiBpbml0cmFtZnMvdGVzdC1oZWxsby5jICAg ICAgIHwgICAgNyArKwogaW5pdHJhbWZzL3Rlc3QtaGVsbG8uZ29vZCAgICB8ICAgIDEgKwog aW5pdHJhbWZzL3Rlc3QtdWhjaSAgICAgICAgICB8ICAgIDMgKwogaW5pdHJhbWZzL3Rlc3Qt dWhjaS5nb29kICAgICB8ICAgIDMgKwogMTMgZmlsZXMgY2hhbmdlZCwgNDgxIGluc2VydGlv bnMoKyksIDAgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgaW5pdHJhbWZzLy5n aXRpZ25vcmUKIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbml0cmFtZnMvMTAtcWVtdS11ZGV2LnJ1 bGVzCiBjcmVhdGUgbW9kZSAxMDA2NDQgaW5pdHJhbWZzL01ha2VmaWxlCiBjcmVhdGUgbW9k ZSAxMDA2NDQgaW5pdHJhbWZzL1JFQURNRQogY3JlYXRlIG1vZGUgMTAwNjQ0IGluaXRyYW1m cy9pbml0LmMKIGNyZWF0ZSBtb2RlIDEwMDc1NSBpbml0cmFtZnMvaW5pdHJhbWZzLWJvb3QK IGNyZWF0ZSBtb2RlIDEwMDc1NSBpbml0cmFtZnMvaW5pdHJhbWZzLWNyZWF0ZQogY3JlYXRl IG1vZGUgMTAwNzU1IGluaXRyYW1mcy90ZXN0LWVoY2kKIGNyZWF0ZSBtb2RlIDEwMDY0NCBp bml0cmFtZnMvdGVzdC1laGNpLmdvb2QKIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbml0cmFtZnMv dGVzdC1oZWxsby5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgaW5pdHJhbWZzL3Rlc3QtaGVsbG8u Z29vZAogY3JlYXRlIG1vZGUgMTAwNzU1IGluaXRyYW1mcy90ZXN0LXVoY2kKIGNyZWF0ZSBt b2RlIDEwMDY0NCBpbml0cmFtZnMvdGVzdC11aGNpLmdvb2QKCmRpZmYgLS1naXQgYS9pbml0 cmFtZnMvLmdpdGlnbm9yZSBiL2luaXRyYW1mcy8uZ2l0aWdub3JlCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlY2U0MmMKLS0tIC9kZXYvbnVsbAorKysgYi9pbml0 cmFtZnMvLmdpdGlnbm9yZQpAQCAtMCwwICsxLDMgQEAKK2luaXRyYW1mcy5jcGlvLmd6Citp bml0Cit0ZXN0LWhlbGxvCmRpZmYgLS1naXQgYS9pbml0cmFtZnMvMTAtcWVtdS11ZGV2LnJ1 bGVzIGIvaW5pdHJhbWZzLzEwLXFlbXUtdWRldi5ydWxlcwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi5mYjVjYzBhCi0tLSAvZGV2L251bGwKKysrIGIvaW5pdHJhbWZz LzEwLXFlbXUtdWRldi5ydWxlcwpAQCAtMCwwICsxLDUgQEAKKyMgbG9hZCBtb2R1bGVzCitE UklWRVIhPSI/KiIsIEVOVntNT0RBTElBU309PSI/KiIsIFJVTis9Ii9zYmluL21vZHByb2Jl IC1iICRlbnZ7TU9EQUxJQVN9IgorCisjIHZpcnRpbyBjb25zb2xlCitLRVJORUw9PSJ2cG9y dCoiLCBBVFRSe25hbWV9PT0iPyoiLCBTWU1MSU5LKz0idmlydGlvLXBvcnRzLyRhdHRye25h bWV9IgpkaWZmIC0tZ2l0IGEvaW5pdHJhbWZzL01ha2VmaWxlIGIvaW5pdHJhbWZzL01ha2Vm aWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkYjJiNzYKLS0tIC9k ZXYvbnVsbAorKysgYi9pbml0cmFtZnMvTWFrZWZpbGUKQEAgLTAsMCArMSwzNiBAQAorCitD Qwk6PSBnY2MKK0NGTEFHUwk6PSAtTzIgLWcgLVdhbGwKK0xERkxBR1MJOj0gLWx1dGlsCisK K1RPT0xTCTo9IGluaXQKK1RFU1RfQwk6PSB0ZXN0LWhlbGxvCitURVNUX1NICTo9IHRlc3Qt dWhjaSB0ZXN0LWVoY2kKKworVEFSR0VUUyA6PSAkKFRPT0xTKSAkKFRFU1RfQykgaW5pdHJh bWZzLmNwaW8uZ3oKK1RFU1RTCTo9ICQoVEVTVF9DKSAkKFRFU1RfU0gpCisKK3J1bi10ZXN0 LXVoY2kgOiBRRU1VX0FSR1MgOj0gLXVzYiAtZGV2aWNlIHVzYi10YWJsZXQKK3J1bi10ZXN0 LWVoY2kgOiBRRU1VX0FSR1MgOj0gLXJlYWRjb25maWcgLi4vZG9jcy9pY2g5LWVoY2ktdWhj aS5jZmcKKworZGVmYXVsdCBhbGw6ICQoVEFSR0VUUykKKworY2xlYW46CisJcm0gLWYgJChU QVJHRVRTKSAqLm8gKn4KKwlybSAtZiBvcmcucWVtdS5pbml0cmFtZnMubG9nCisKK2luaXQ6 IGluaXQubwordGVzdC1oZWxsbzogdGVzdC1oZWxsby5vCisKK2luaXRyYW1mcy5jcGlvLmd6 OiAkKFRPT0xTKSAkKFRFU1RTKSBpbml0cmFtZnMtY3JlYXRlCisJLi9pbml0cmFtZnMtY3Jl YXRlICRAICQoVEVTVFMpCisKK2Jvb3Qgc2hlbGw6ICQoVEFSR0VUUykKKwkuL2luaXRyYW1m cy1ib290CisKK3J1bi10ZXN0LSU6ICQoVEFSR0VUUykKKwkuL2luaXRyYW1mcy1ib290IC90 ZXN0cy90ZXN0LSQqICQoUUVNVV9BUkdTKQorCWRpZmYgLXUgb3JnLnFlbXUuaW5pdHJhbWZz LmxvZyB0ZXN0LSQqLmdvb2QKKworcnVuLXRlc3RzOiAkKHBhdHN1YnN0ICUscnVuLSUsJChU RVNUUykpCisKZGlmZiAtLWdpdCBhL2luaXRyYW1mcy9SRUFETUUgYi9pbml0cmFtZnMvUkVB RE1FCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5NTA0YWQKLS0tIC9k ZXYvbnVsbAorKysgYi9pbml0cmFtZnMvUkVBRE1FCkBAIC0wLDAgKzEsNDQgQEAKKworVGhp cyBpcyBhbiBleHBlcmltZW50YWwgdGVzdCBmcmFtZXdvcmsuCisKK0Rlc2lnbiBnb2Fscwor LS0tLS0tLS0tLS0tCisKKyAgKiBBbGxvdyBydW5uaW5nIHRlc3RzIHdpdGhpbiBhIGd1ZXN0 LgorICAqIEJlIHNtYWxsIGVub3VndGggdGhhdCBpdCBjYW4gZWFzaWx5IGJlIGluY2x1ZGVk IGluCisgICAgdGhlIHFlbXUgc291cmNlIHRyZWUuCisgICogRG9uJ3QgcmVxdWlyZSBzZXR1 cCBhbmQvb3IgZG93bmxvYWRpbmcgc3R1ZmYKKyAgICAoaS5lLiBndWVzdCBpbWFnZXMpIGZy b20gdGhlIGludGVybmV0LgorICAqIEJlIGVhc3kgdG8gdXNlLgorCisKK0hvdyBpdCB3b3Jr cworLS0tLS0tLS0tLS0tCisKK0l0IGNyZWF0ZXMgYSBsaW51eCBpbml0cmFtZnMgZnJvbSB0 aGUgYml0cyBmb3VuZCBvbiB0aGUgaG9zdCBtYWNoaW5lLAordGhlbiBib290cyB0aGUgaG9z dCBrZXJuZWwgd2l0aCB0aGUgaW5pdHJhbWZzIGp1c3QgY3JlYXRlZCB3aXRoaW4KK3FlbXUu ICBBIHNwZWNpYWwgaW5pdCBoYW5kbGVzIHRoZSBzZXR1cCAoY3JlYXRlIGNvcmUgZGV2aWNl cywgbW91bnQKK2ZpbGVzeXN0ZW1zLCBzdGFydCB1ZGV2KSwgY29tbWFuZCBleGVjdXRpb24g YW5kIHNodXRkb3duLgorCitPYnZpb3VzbHkgcmVxdWlyZXMgYSBsaW51eCBob3N0LiAgSXQg YWxzbyBuZWVkcyB1ZGV2IGZvciBkZXZpY2Ugc2V0dXAKK2FuZCBtb2R1bGUgbG9hZGluZyBh bmQgdmlydGlvLXNlcmlhbCBzdXBwb3J0IGZvciBsb2dnaW5nLgorCisKK0dldHRpbmcgc3Rh cnRlZAorLS0tLS0tLS0tLS0tLS0tCisKK0p1c3QgdHlwZSAibWFrZSBib290IiwgYSBmZXcg c2Vjb25kcyBsYXRlciB5b3Ugc2hvdWxkIGJlIGdyZWV0ZWQgYnkKK3RoZSBndWVzdHMgYmFz aCBwcm9tcHQuICBZb3UgY2FuIGxvb2sgYXJvdW5kIG5vdy4gIEV4aXRpbmcgdGhlIHNoZWxs Cit3aWxsIHNodXRkb3duIHRoZSBndWVzdC4gIFlvdSdsbCBmaW5kIHRoZSBzaGVsbCBvdXRw dXQgbG9nZ2VkIGluIHRoZQorIm9yZy5xZW11LmluaXRyYW1mcy5sb2ciIGZpbGUuCisKKwor UnVuIHRlc3RzCistLS0tLS0tLS0KKworVHlwZSAibWFrZSBydW4tdGVzdC0kbmFtZSIgZm9y IGEgc2luZ2xlIHRlc3Qgb3IgIm1ha2UgcnVuLXRlc3RzIiB0bworcnVuIGFsbCBvZiB0aGVt LiAgVGhpcyB3aWxsIHJ1biB0aGUgdGVzdCBwcm9ncmFtIGluc3RlYWQgb2YgdGhlIHNoZWxs LAordGhlbiBjb21wYXJlIHRoZSBhY3R1YWwgb3V0cHV0IHdpdGggdGhlIGV4cGVjdGVkIG91 dHB1dC4KKworVGhpcyBjYW4gcHJvYmFibHkgYmUgcmVmaW5lZCAuLi4KKwpkaWZmIC0tZ2l0 IGEvaW5pdHJhbWZzL2luaXQuYyBiL2luaXRyYW1mcy9pbml0LmMKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uOTRhODc2NAotLS0gL2Rldi9udWxsCisrKyBiL2luaXRy YW1mcy9pbml0LmMKQEAgLTAsMCArMSwyMjUgQEAKKyNpbmNsdWRlIDxzdGRpby5oPgorI2lu Y2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0ZGFyZy5oPgorI2luY2x1ZGUgPHN0ZGJv b2wuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNs dWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8cHR5Lmg+CisK KyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2luY2x1 ZGUgPHN5cy93YWl0Lmg+CisjaW5jbHVkZSA8c3lzL21vdW50Lmg+CisjaW5jbHVkZSA8c3lz L3JlYm9vdC5oPgorI2luY2x1ZGUgPHN5cy9zZWxlY3QuaD4KKworI2RlZmluZSBBUlJBWV9T SVpFKHgpIChzaXplb2YoeCkvc2l6ZW9mKHhbMF0pKQorCitzdGF0aWMgY29uc3QgY2hhciAq bG9nZGV2ID0gIi9kZXYvdmlydGlvLXBvcnRzL29yZy5xZW11LmluaXRyYW1mcy5sb2ciOwor CitzdGF0aWMgc3RydWN0IHsKKyAgICBtb2RlX3QgICAgIG1vZGU7CisgICAgY29uc3QgY2hh ciAqcGF0aDsKKyAgICBpbnQgICAgICAgIG1ham9yOworICAgIGludCAgICAgICAgbWlub3I7 Cit9IGNkZXZzW10gPSB7CisgICAgeyAwNjY2LCAiL2Rldi9udWxsIiwgICAgMSwgIDMgfSwK KyAgICB7IDA2MDAsICIvZGV2L2NvbnNvbGUiLCA1LCAgMSB9LAorICAgIHsgMDY2NiwgIi9k ZXYvcHRteCIsICAgIDUsICAyIH0sCisgICAgeyAwNjYwLCAiL2Rldi9rbXNnIiwgICAgMSwg MTEgfSwKK307CisKK3N0YXRpYyBzdHJ1Y3QgeworICAgIGNvbnN0IGNoYXIgKmRlc3Q7Cisg ICAgY29uc3QgY2hhciAqdHlwZTsKK30gZnNbXSA9IHsKKyAgICB7ICIvcHJvYyIsICJwcm9j IiB9LAorICAgIHsgIi9zeXMiLCAic3lzZnMiIH0sCisgICAgeyAiL3N5cy9rZXJuZWwvZGVi dWciLCAiZGVidWdmcyIgfSwKKyAgICB7ICIvZGV2L3B0cyIsICJkZXZwdHMiIH0sCisgICAg eyAiL2Rldi9zaG0iLCAidG1wZnMiIH0sCit9OworCitpbnQgcnVuKGNvbnN0IGNoYXIgKmNt ZCwgLi4uKQoreworICAgIHZhX2xpc3QgYXJnczsKKyAgICBjaGFyICphcmd2WzE2XSwgKmFy ZzsKKyAgICBpbnQgaSwgcGlkOworCisgICAgdmFfc3RhcnQoYXJncywgY21kKTsKKyAgICBh cmd2WzBdID0gKGNoYXIqKWNtZDsKKyAgICBmb3IgKGkgPSAxOyBpIDwgQVJSQVlfU0laRShh cmd2KS0xOyBpKyspIHsKKyAgICAgICAgYXJnID0gdmFfYXJnKGFyZ3MsIGNoYXIqKTsKKyAg ICAgICAgaWYgKGFyZyA9PSBOVUxMKSB7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg fQorICAgICAgICBhcmd2W2ldID0gYXJnOworICAgIH0KKyAgICBhcmd2W2ldID0gTlVMTDsK KyAgICB2YV9lbmQoYXJncyk7CisKKyAgICBwaWQgPSBmb3JrKCk7CisgICAgaWYgKHBpZCAh PSAwKSB7CisgICAgICAgIC8qIHBhcmVudCAqLworICAgICAgICBpZiAocGlkIDwgMCkgewor ICAgICAgICAgICAgcGVycm9yKCJmb3JrIik7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJu IHBpZDsKKyAgICB9CisgICAgLyogY2hpbGQgKi8KKyAgICBleGVjdihjbWQsIGFyZ3YpOwor ICAgIGZwcmludGYoc3RkZXJyLCAiZXhlYyAlczogJXNcbiIsIGNtZCwgc3RyZXJyb3IoZXJy bm8pKTsKKyAgICBleGl0KDEpOworfQorCitpbnQgZm9yd2FyZChpbnQgZnJvbV9mZCwgaW50 IHRvX2ZkLCBpbnQgbG9nX2ZkKQoreworICAgIGludCBsZW4sIHBvcywgcmM7CisgICAgY2hh ciBidWZbNTEyXTsKKworICAgIGxlbiA9IHJlYWQoZnJvbV9mZCwgYnVmLCBzaXplb2YoYnVm KSk7CisgICAgaWYgKGxlbiA8IDApIHsKKyAgICAgICAgcmV0dXJuIGxlbjsKKyAgICB9Cisg ICAgZm9yIChwb3MgPSAwOyBwb3MgPCBsZW47IHBvcyArPSByYykgeworICAgICAgICByYyA9 IHdyaXRlKHRvX2ZkLCBidWYgKyBwb3MsIGxlbiAtIHBvcyk7CisgICAgICAgIGlmIChyYyA8 IDApIHsKKyAgICAgICAgICAgIHJldHVybiByYzsKKyAgICAgICAgfQorICAgIH0KKyAgICBp ZiAobG9nX2ZkICE9IC0xKSB7CisgICAgICAgIGZvciAocG9zID0gMDsgcG9zIDwgbGVuOyBw b3MgKz0gcmMpIHsKKyAgICAgICAgICAgIHJjID0gd3JpdGUobG9nX2ZkLCBidWYgKyBwb3Ms IGxlbiAtIHBvcyk7CisgICAgICAgICAgICBpZiAocmMgPCAwKSB7CisgICAgICAgICAgICAg ICAgcmV0dXJuIHJjOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHJl dHVybiBsZW47Cit9CisKK3N0YXRpYyB2b2lkCit0dHlfcmF3KGludCBmZCkKK3sKKyAgICBz dHJ1Y3QgdGVybWlvcyB0YXR0cjsKKworICAgIHRjZ2V0YXR0cihmZCwgJnRhdHRyKTsKKyAg ICB0YXR0ci5jX2xmbGFnICY9IH4oSUNBTk9OfEVDSE8pOworICAgIHRhdHRyLmNfY2NbVk1J Tl0gPSAxOworICAgIHRhdHRyLmNfY2NbVlRJTUVdID0gMDsKKyAgICB0Y3NldGF0dHIoZmQs IFRDU0FGTFVTSCwgJnRhdHRyKTsKK30KKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFy Z3ZbXSkKK3sKKyAgICBjb25zdCBjaGFyICpjb21tYW5kOworICAgIHBpZF90IGNtZHBpZCwg cGlkOworICAgIGludCBzdGF0dXMsIGksIHJjLCBwdHksIGxvZzsKKyAgICBib29sIGNtZF9l eGl0LCBlb2Zfc2VlbjsKKworICAgIC8qIHNheSBoaSAqLworICAgIGZwcmludGYoc3RkZXJy LCAiLSotIHFlbXUgaW5pdHJhbWZzIHN0YXJ0aW5nIC0qLVxuIik7CisKKyAgICAvKiBtb3Vu dCBmaWxlc3lzdGVtcyAqLworICAgIGZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGZzKTsg aSsrKSB7CisgICAgICAgIHJjID0gbW91bnQoZnNbaV0udHlwZSwgZnNbaV0uZGVzdCwgZnNb aV0udHlwZSwgMCwgTlVMTCk7CisgICAgICAgIGlmIChyYyA8IDApIHsKKyAgICAgICAgICAg IGZwcmludGYoc3RkZXJyLCAibW91bnQgJXMgYXQgJXM6ICVzXG4iLAorICAgICAgICAgICAg ICAgICAgICBmc1tpXS50eXBlLCBmc1tpXS5kZXN0LCBzdHJlcnJvcihlcnJubykpOworICAg ICAgICB9CisgICAgfQorCisgICAgLyogY3JlYXRlIGJhc2ljIGNoYXJkZXZzICovCisgICAg Zm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoY2RldnMpOyBpKyspIHsKKyAgICAgICAgcmMg PSBta25vZChjZGV2c1tpXS5wYXRoLCBjZGV2c1tpXS5tb2RlIHwgU19JRkNIUiwKKyAgICAg ICAgICAgICAgICAgICBtYWtlZGV2KGNkZXZzW2ldLm1ham9yLCBjZGV2c1tpXS5taW5vcikp OworICAgICAgICBpZiAocmMgPCAwICYmIGVycm5vICE9IEVFWElTVCkgeworICAgICAgICAg ICAgZnByaW50ZihzdGRlcnIsICJta25vZCAlcyA6ICVzXG4iLAorICAgICAgICAgICAgICAg ICAgICBjZGV2c1tpXS5wYXRoLCBzdHJlcnJvcihlcnJubykpOworICAgICAgICB9CisgICAg fQorCisgICAgLyogc3RhcnQgdWRldiwgbGV0IGl0IGNyZWF0ZSBkZXZpY2VzICovCisgICAg ZnByaW50ZihzdGRlcnIsICItKi0gc3RhcnRpbmcgdWRldiAtKi1cbiIpOworICAgIHJ1bigi L3NiaW4vZGVwbW9kIiwgIi1hIiwgTlVMTCk7CisgICAgcnVuKCIvc2Jpbi91ZGV2ZCIsICIt LWRhZW1vbiIsICItLXJlc29sdmUtbmFtZXM9bmV2ZXIiLCBOVUxMKTsKKyAgICBydW4oIi9z YmluL3VkZXZhZG0iLCAidHJpZ2dlciIsICItLWFjdGlvbj1hZGQiLCBOVUxMKTsKKworICAg IC8qIHdhaXQgdW50aWwgdmlydGlvLXNlcmlhbCBpcyB1cCduJ3J1bm5pbmcgKi8KKyAgICBm b3IgKGxvZyA9IC0xLCBpID0gMDsgbG9nID09IC0xICYmIGkgPCAzMjsgaSsrKSB7CisgICAg ICAgIHNsZWVwKDEpOworICAgICAgICBydW4oIi9zYmluL3VkZXZhZG0iLCAic2V0dGxlIiwg TlVMTCk7CisgICAgICAgIGxvZyA9IG9wZW4obG9nZGV2LCBPX1dST05MWSk7CisgICAgfQor ICAgIGlmIChsb2cgPT0gLTEpIHsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJvcGVuICVz OiAlc1xuIiwgbG9nZGV2LCBzdHJlcnJvcihlcnJubykpOworICAgIH0KKworICAgIC8qIHNl dHVwIGVudmlyb25tZW50ICovCisgICAgc2V0ZW52KCJQQVRIIiwgIi9zYmluOi9iaW4iLCAx KTsKKworICAgIC8qIHJ1biBvdXIgY29tbWFuZCBpbiBhIHBzZXV0byB0dHkgKi8KKyAgICBj b21tYW5kID0gZ2V0ZW52KCJRRU1VX1JVTiIpOworICAgIGlmIChjb21tYW5kID09IE5VTEwp IHsKKyAgICAgICAgY29tbWFuZCA9ICIvYmluL2Jhc2giOworICAgIH0KKyAgICBmcHJpbnRm KHN0ZGVyciwgIi0qLSBydW5uaW5nICVzIC0qLVxuIiwgY29tbWFuZCk7CisKKyAgICB0dHlf cmF3KDApOworICAgIGNtZHBpZCA9IGZvcmtwdHkoJnB0eSwgTlVMTCwgTlVMTCwgTlVMTCk7 CisgICAgaWYgKGNtZHBpZCA9PSAwKSB7CisgICAgICAgIC8qIGNoaWxkICovCisgICAgICAg IGV4ZWNsKGNvbW1hbmQsIGNvbW1hbmQsIE5VTEwpOworICAgICAgICBmcHJpbnRmKHN0ZGVy ciwgImV4ZWMgJXM6ICVzXG4iLCBjb21tYW5kLCBzdHJlcnJvcihlcnJubykpOworICAgICAg ICBleGl0KDEpOworICAgIH0KKworICAgIC8qIG1haW4gbG9vcCAqLworICAgIGNtZF9leGl0 ID0gZmFsc2U7CisgICAgZW9mX3NlZW4gPSBmYWxzZTsKKyAgICBkbyB7CisgICAgICAgIGZk X3NldCByZDsKKworICAgICAgICAvKiByZWFwIGNoaWxkcmVuIGFuZCB6b21iaWVzICovCisg ICAgICAgIGZvciAoOzspIHsKKyAgICAgICAgICAgIHBpZCA9IHdhaXRwaWQoLTEsICZzdGF0 dXMsIFdOT0hBTkcpOworICAgICAgICAgICAgaWYgKHBpZCA8PSAwKSB7CisgICAgICAgICAg ICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAocGlkID09IGNt ZHBpZCkgeworICAgICAgICAgICAgICAgIGNtZF9leGl0ID0gdHJ1ZTsKKyAgICAgICAgICAg IH0KKyAgICAgICAgfQorCisgICAgICAgIC8qIGZvcndhcmQgZGF0YSBiZXR3ZWVuIHN0ZGlv IChha2EgL2Rldi9jb25zb2xlKSBhbmQgcHNldWRvIHR0eSAqLworICAgICAgICBpZiAoIWVv Zl9zZWVuKSB7CisgICAgICAgICAgICBGRF9aRVJPKCZyZCk7CisgICAgICAgICAgICBGRF9T RVQoMCwgJnJkKTsKKyAgICAgICAgICAgIEZEX1NFVChwdHksICZyZCk7CisgICAgICAgICAg ICByYyA9IHNlbGVjdChwdHkrMSwgJnJkLCBOVUxMLCBOVUxMLCBOVUxMKTsKKyAgICAgICAg ICAgIGlmIChyYyA+IDApIHsKKyAgICAgICAgICAgICAgICBpZiAoRkRfSVNTRVQoMCwgJnJk KSkgeworICAgICAgICAgICAgICAgICAgICAvKiBzdGRpbiAtPiBwc2V1ZG8gdHR5ICovCisg ICAgICAgICAgICAgICAgICAgIGlmIChmb3J3YXJkKDAsIHB0eSwgLTEpIDw9IDApIHsKKyAg ICAgICAgICAgICAgICAgICAgICAgIGVvZl9zZWVuID0gMTsKKyAgICAgICAgICAgICAgICAg ICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoRkRfSVNTRVQo cHR5LCAmcmQpKSB7CisgICAgICAgICAgICAgICAgICAgIC8qIHBzZXVkbyB0dHkgLT4gc3Rk b3V0ICsgbG9nICovCisgICAgICAgICAgICAgICAgICAgIGlmIChmb3J3YXJkKHB0eSwgMSwg bG9nKSA8PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBlb2Zfc2VlbiA9IDE7Cisg ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9 CisgICAgICAgIH0KKyAgICB9IHdoaWxlICghY21kX2V4aXQgfHwgIWVvZl9zZWVuKTsKKwor ICAgIC8qIHBvd2VyZG93biB2bSAqLworICAgIGZwcmludGYoc3RkZXJyLCAiLSotIHFlbXUg aW5pdHJhbWZzIGRvbmUgLSotXG4iKTsKKyAgICByZWJvb3QoUkJfUE9XRVJfT0ZGKTsKKwor ICAgIC8qIGtlZXAgZ2NjIGhhcHB5IDspICovCisgICAgcmV0dXJuIDA7Cit9CmRpZmYgLS1n aXQgYS9pbml0cmFtZnMvaW5pdHJhbWZzLWJvb3QgYi9pbml0cmFtZnMvaW5pdHJhbWZzLWJv b3QKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNDg4NGE2ZAotLS0gL2Rl di9udWxsCisrKyBiL2luaXRyYW1mcy9pbml0cmFtZnMtYm9vdApAQCAtMCwwICsxLDMyIEBA CisjIS9iaW4vc2gKKworYmFzZT0iJChkaXJuYW1lICQwKSIKK2NvbW1hbmQ9IiQxIgorc2hp ZnQ7CisKK2Nhc2UgIiQodW5hbWUgLW0pIiBpbgorCXg4Nl82NCkJcWVtdT0ieDg2XzY0LXNv ZnRtbXUvcWVtdS1zeXN0ZW0teDg2XzY0IgorCQk7OworCWk/ODYpCXFlbXU9ImkzODYtc29m dG1tdS9xZW11LXN5c3RlbS1pMzg2IgorCQk7OworCSopCWVjaG8gInVua25vd24gYXJjaDog JCh1bmFtZSAtbSkiCisJCWV4aXQgMQorCQk7OworZXNhYworCitrZXJuZWw9IiQoZWNobyAv Ym9vdC92bWxpbnUqJCh1bmFtZSAtcikqKSIKK2luaXRyZD0iaW5pdHJhbWZzLmNwaW8uZ3oi CithcHBlbmQ9ImNvbnNvbGU9dHR5UzAiCitpZiB0ZXN0ICIkY29tbWFuZCIgIT0gIiI7IHRo ZW4KKwlhcHBlbmQ9IiRhcHBlbmQgUUVNVV9SVU49JGNvbW1hbmQiCitmaQorCitleGVjIC4u LyRxZW11IC1ub2dyYXBoaWMgLW5vLXJlYm9vdCBcCisJLW1hY2hpbmUgYWNjZWw9a3ZtOnRj ZyBcCisJLWtlcm5lbCAiJGtlcm5lbCIgXAorCS1pbml0cmQgIiRpbml0cmQiIFwKKwktYXBw ZW5kICIkYXBwZW5kIiBcCisJLWNoYXJkZXYgZmlsZSxpZD1jbWRsb2cscGF0aD1vcmcucWVt dS5pbml0cmFtZnMubG9nIFwKKwktZGV2aWNlIHZpcnRpby1zZXJpYWwgXAorCS1kZXZpY2Ug dmlydHNlcmlhbHBvcnQsbmFtZT1vcmcucWVtdS5pbml0cmFtZnMubG9nLGNoYXJkZXY9Y21k bG9nIFwKKwkiJEAiCmRpZmYgLS1naXQgYS9pbml0cmFtZnMvaW5pdHJhbWZzLWNyZWF0ZSBi L2luaXRyYW1mcy9pbml0cmFtZnMtY3JlYXRlCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4 IDAwMDAwMDAuLjQ1MjVjMTEKLS0tIC9kZXYvbnVsbAorKysgYi9pbml0cmFtZnMvaW5pdHJh bWZzLWNyZWF0ZQpAQCAtMCwwICsxLDExMSBAQAorIyEvYmluL2Jhc2gKKyMKKyMgQ3JlYXRl IGEgc2ltcGxlIGxpbnV4IGluaXRyYW1mcyB3aXRoIHRoZSBzdHVmZiBmb3VuZCBvbiB0aGUg aG9zdC4KKyMgSW50ZW50ZWQgdG8gYmUgdXNlZCBmb3IgYSBxdWljayBib290IHRlc3Qgd2l0 aCB0aGUgaG9zdCBrZXJuZWwuCisjCisKK2Jhc2U9IiQoZGlybmFtZSAkMCkiCitmaWxlPSIk ezEtaW5pdHJhbWZzLmNwaW8uZ3p9Ijsgc2hpZnQKK3Rlc3RzPSIkKiIKKworIyBjcmVhdGUg d29yayBkaXIKK1dPUks9IiR7VE1QRElSLS90bXB9LyR7MCMjKi99LSQkIgorbWtkaXIgIiRX T1JLIiB8fCBleGl0IDEKK3RyYXAgJ3JtIC1yZiAiJFdPUksiJyBFWElUCisKKworIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjCisjIGhlbHBlciBmdW5jdGlvbnMKKworZnVuY3Rpb24gYWRk X2RpcnMoKSB7CisJbG9jYWwgZGVzdD0iJFdPUksvZnMiCisJbG9jYWwgZGlyCisJZm9yIGRp ciBpbiBkZXYgZGV2L3B0cyBkZXYvc2htIGV0YyBwcm9jIHN5cyBcCisJCSAgIHZhciB2YXIv dG1wIC92YXIvbG9nIHRtcAorCWRvCisJCW1rZGlyIC1wICIkZGVzdC8kZGlyIgorCWRvbmUK K30KKworZnVuY3Rpb24gYWRkX2JpbmFyeSgpIHsKKwlsb2NhbCBkZXN0PSIkV09SSy9mcyQx Ijsgc2hpZnQKKwlsb2NhbCBpdGVtCisKKyAgICAgICAJbWtkaXIgLXAgIiRkZXN0IgorCWZv ciBpdGVtIGluICQqOyBkbworCQljcCAtTCAiJCh3aGljaCAkaXRlbSkiICIkZGVzdCIgfHwg ZXhpdCAxCisJZG9uZQorfQorCitmdW5jdGlvbiBhZGRfc3ltbGluaygpIHsKKwlsb2NhbCB0 YXJnZXQ9IiQxIgorCWxvY2FsIG5hbWU9IiQyIgorCWxuIC1zICIkdGFyZ2V0IiAiJFdPUksv ZnMkbmFtZSIKK30KKworZnVuY3Rpb24gYWRkX2RhdGEoKSB7CisJbG9jYWwgZGVzdD0iJFdP UksvZnMiCisJbG9jYWwgaXRlbQorCisJZm9yIGl0ZW0gaW4gJCo7IGRvCisJICAgICAgIAlt a2RpciAtcCAkKGRpcm5hbWUgIiRkZXN0LyRpdGVtIikKKwkJY3AgLUwgIiRpdGVtIiAiJGRl c3QvJGl0ZW0iIHx8IGV4aXQgMQorCWRvbmUKK30KKworZnVuY3Rpb24gYWRkX2RhdGFfdG9f ZGlyKCkgeworCWxvY2FsIGRlc3Q9IiRXT1JLL2ZzJDEiOyBzaGlmdAorCWxvY2FsIGl0ZW0K KworICAgICAgIAlta2RpciAtcCAiJGRlc3QiCisJZm9yIGl0ZW0gaW4gJCo7IGRvCisJCWNw IC1MICIkaXRlbSIgIiRkZXN0IiB8fCBleGl0IDEKKwlkb25lCit9CisKK2Z1bmN0aW9uIGFk ZF9saWJzKCkgeworCWxvY2FsIGl0ZW0gZGVzdAorCWZvciBpdGVtIGluICQobGRkICRXT1JL L2ZzL2luaXQgJFdPUksvZnMvYmluLyogJFdPUksvZnMvc2Jpbi8qIFwKKwkJCSRXT1JLL2Zz L3Rlc3RzLyogJFdPUksvZnMvbGliL3VkZXYvKmlkKTsgZG8KKwkJdGVzdCAtZiAiJGl0ZW0i IHx8IGNvbnRpbnVlCisJCXRlc3QgLWYgIiRXT1JLL2ZzJGl0ZW0iICYmIGNvbnRpbnVlCisJ CWRlc3Q9JChkaXJuYW1lICIkV09SSy9mcyRpdGVtIikKKwkJbWtkaXIgLXAgIiRkZXN0Igor CQljcCAtTCAiJGl0ZW0iICIkZGVzdCIKKwlkb25lCit9CisKK2Z1bmN0aW9uIGFkZF9tb2R1 bGVzKCkgeworCWxvY2FsIGl0ZW0KKworCWVjaG8gLW4gPiAiJFdPUksvbW9kdWxlcyIKKwlm b3IgaXRlbSBpbiAkKjsgZG8KKwkJbW9kcHJvYmUgLS1zaG93LWRlcGVuZHMgJGl0ZW0gMj4v ZGV2L251bGwgXAorCQkJfCBhd2sgJ3sgcHJpbnQgJDIgfScgPj4gIiRXT1JLL21vZHVsZXMi CisJZG9uZQorCWFkZF9kYXRhICQoc29ydCAiJFdPUksvbW9kdWxlcyIgfCB1bmlxKQorfQor CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBtYWluCisKK2FkZF9kaXJzCithZGRf YmluYXJ5IC8gJGJhc2UvaW5pdAorZm9yIHQgaW4gJHRlc3RzOyBkbworCWFkZF9iaW5hcnkg L3Rlc3RzICRiYXNlLyR0OworZG9uZQorYWRkX2JpbmFyeSAvYmluIGJhc2ggbHMgY2F0IG1v cmUgZG1lc2cgcHMgdW5hbWUgZmluZCBzb3J0IGdyZXAgdW5pcQorYWRkX2JpbmFyeSAvc2Jp biBsc3BjaSBsc3VzYiBtb3VudCB1bW91bnQgdWRldmQgdWRldmFkbSBibGtpZAorYWRkX2Jp bmFyeSAvc2JpbiBkZXBtb2QgaW5zbW9kIGxzbW9kIG1vZGluZm8gbW9kcHJvYmUgcm1tb2Qg aXAKK2FkZF9zeW1saW5rIGJhc2ggL2Jpbi9zaAorYWRkX2RhdGEgL3Vzci9zaGFyZS9od2Rh dGEvKi5pZHMKK2FkZF9kYXRhIC9saWIvdWRldi8qaWQKK2FkZF9kYXRhIC9saWIvdWRldi9y dWxlcy5kLzYwLXBlcnNpc3RlbnQtc3RvcmFnZS5ydWxlcworYWRkX2RhdGFfdG9fZGlyIC9s aWIvdWRldi9ydWxlcy5kICRiYXNlLzEwLXFlbXUtdWRldi5ydWxlcworYWRkX2xpYnMKK2Fk ZF9tb2R1bGVzIHZpcnRpb19wY2kgdmlydGlvX2JsayB2aXJ0aW9fbmV0IHZpcnRpb19jb25z b2xlIFwKKwl2aXJ0aW9fYmFsbG9vbiB2aXJ0aW8tcm5nIDlwbmV0X3ZpcnRpbyA5cCBcCisJ YXRhX3BpaXggYWhjaSBzZF9tb2Qgc3JfbW9kIHNnIGUxMDAwIDgxMzljcAorCisoY2QgJFdP UksvZnM7IGZpbmQgLXByaW50IHwgY3BpbyAtbyAtUiAwOjAgLUggbmV3YykgfCBnemlwID4g IiRmaWxlIgpkaWZmIC0tZ2l0IGEvaW5pdHJhbWZzL3Rlc3QtZWhjaSBiL2luaXRyYW1mcy90 ZXN0LWVoY2kKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYmQ0YmI1Ywot LS0gL2Rldi9udWxsCisrKyBiL2luaXRyYW1mcy90ZXN0LWVoY2kKQEAgLTAsMCArMSwzIEBA CisjIS9iaW4vc2gKKy9zYmluL2xzcGNpIC1zMWQKKy9zYmluL2xzdXNiIHwgc29ydApkaWZm IC0tZ2l0IGEvaW5pdHJhbWZzL3Rlc3QtZWhjaS5nb29kIGIvaW5pdHJhbWZzL3Rlc3QtZWhj aS5nb29kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRkOWM2YjgKLS0t IC9kZXYvbnVsbAorKysgYi9pbml0cmFtZnMvdGVzdC1laGNpLmdvb2QKQEAgLTAsMCArMSw4 IEBACiswMDoxZC4wIFVTQiBDb250cm9sbGVyOiBJbnRlbCBDb3Jwb3JhdGlvbiA4MjgwMUkg KElDSDkgRmFtaWx5KSBVU0IgVUhDSSBDb250cm9sbGVyICMxIChyZXYgMDMpDQorMDA6MWQu MSBVU0IgQ29udHJvbGxlcjogSW50ZWwgQ29ycG9yYXRpb24gODI4MDFJIChJQ0g5IEZhbWls eSkgVVNCIFVIQ0kgQ29udHJvbGxlciAjMiAocmV2IDAzKQ0KKzAwOjFkLjIgVVNCIENvbnRy b2xsZXI6IEludGVsIENvcnBvcmF0aW9uIDgyODAxSSAoSUNIOSBGYW1pbHkpIFVTQiBVSENJ IENvbnRyb2xsZXIgIzMgKHJldiAwMykNCiswMDoxZC43IFVTQiBDb250cm9sbGVyOiBJbnRl bCBDb3Jwb3JhdGlvbiA4MjgwMUkgKElDSDkgRmFtaWx5KSBVU0IyIEVIQ0kgQ29udHJvbGxl ciAjMSAocmV2IDAzKQ0KK0J1cyAwMDEgRGV2aWNlIDAwMTogSUQgMWQ2YjowMDAyIExpbnV4 IEZvdW5kYXRpb24gMi4wIHJvb3QgaHViDQorQnVzIDAwMiBEZXZpY2UgMDAxOiBJRCAxZDZi OjAwMDEgTGludXggRm91bmRhdGlvbiAxLjEgcm9vdCBodWINCitCdXMgMDAzIERldmljZSAw MDE6IElEIDFkNmI6MDAwMSBMaW51eCBGb3VuZGF0aW9uIDEuMSByb290IGh1Yg0KK0J1cyAw MDQgRGV2aWNlIDAwMTogSUQgMWQ2YjowMDAxIExpbnV4IEZvdW5kYXRpb24gMS4xIHJvb3Qg aHViDQpkaWZmIC0tZ2l0IGEvaW5pdHJhbWZzL3Rlc3QtaGVsbG8uYyBiL2luaXRyYW1mcy90 ZXN0LWhlbGxvLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTVjZTJk MgotLS0gL2Rldi9udWxsCisrKyBiL2luaXRyYW1mcy90ZXN0LWhlbGxvLmMKQEAgLTAsMCAr MSw3IEBACisjaW5jbHVkZSA8c3RkaW8uaD4KKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIg KmFyZ3ZbXSkKK3sKKyAgICBwcmludGYoIkhlbGxvIHdvcmxkIVxuIik7CisgICAgcmV0dXJu IDA7Cit9CmRpZmYgLS1naXQgYS9pbml0cmFtZnMvdGVzdC1oZWxsby5nb29kIGIvaW5pdHJh bWZzL3Rlc3QtaGVsbG8uZ29vZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li5kZmQ2ODk1Ci0tLSAvZGV2L251bGwKKysrIGIvaW5pdHJhbWZzL3Rlc3QtaGVsbG8uZ29v ZApAQCAtMCwwICsxIEBACitIZWxsbyB3b3JsZCENCmRpZmYgLS1naXQgYS9pbml0cmFtZnMv dGVzdC11aGNpIGIvaW5pdHJhbWZzL3Rlc3QtdWhjaQpuZXcgZmlsZSBtb2RlIDEwMDc1NQpp bmRleCAwMDAwMDAwLi4wYWY3MGUwCi0tLSAvZGV2L251bGwKKysrIGIvaW5pdHJhbWZzL3Rl c3QtdWhjaQpAQCAtMCwwICsxLDMgQEAKKyMhL2Jpbi9zaAorL3NiaW4vbHNwY2kgLXMxLjIK Ky9zYmluL2xzdXNiIHwgc29ydApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt LWdpdCBhL2luaXRyYW1mcy90ZXN0LXVoY2kuZ29vZCBiL2luaXRyYW1mcy90ZXN0LXVoY2ku Z29vZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jODcyNzFlCi0tLSAv ZGV2L251bGwKKysrIGIvaW5pdHJhbWZzL3Rlc3QtdWhjaS5nb29kCkBAIC0wLDAgKzEsMyBA QAorMDA6MDEuMiBVU0IgQ29udHJvbGxlcjogSW50ZWwgQ29ycG9yYXRpb24gODIzNzFTQiBQ SUlYMyBVU0IgW05hdG9tYS9Ucml0b24gSUldIChyZXYgMDEpDQorQnVzIDAwMSBEZXZpY2Ug MDAxOiBJRCAxZDZiOjAwMDEgTGludXggRm91bmRhdGlvbiAxLjEgcm9vdCBodWINCitCdXMg MDAxIERldmljZSAwMDI6IElEIDA2Mjc6MDAwMSBBZG9tYXggVGVjaG5vbG9neSBDby4sIEx0 ZCANCi0tIAoxLjcuMQoK --------------070707030704020204040102--