From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wei Liu Subject: [PATCH v3 05/11] x86emul: use eflags definitions in x86-defns.h Date: Wed, 1 Feb 2017 12:02:33 +0000 Message-ID: <20170201120239.13993-6-wei.liu2@citrix.com> References: <20170201120239.13993-1-wei.liu2@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cYtcb-0007mt-9x for xen-devel@lists.xenproject.org; Wed, 01 Feb 2017 12:02:45 +0000 In-Reply-To: <20170201120239.13993-1-wei.liu2@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Xen-devel Cc: Wei Liu List-Id: xen-devel@lists.xenproject.org QmFzaWNhbGx5IHRoaXMgcGF0Y2ggZG9lcyAncy9FRkxHXy9YODZfRUZMQUdTXy9nJyBhbmQgd2l0 aCBpbmRlbnRhdGlvbgpmaXhlZCB1cC4gQW5kIHJlbW92ZSB0aGUgZHVwbGljYXRlcyBpbiB4ODZf ZW11YWx0ZS5jLiAgVGhpcyBpbiB0dXJuCnJlcXVpcmVzIHVzZXJzcGFjZSB0ZXN0IGhhcm5lc3Mg dG8gaW5jbHVkZSB4ODYtZGVmbnMuaC4gQWxzbyByZW1vdmUgYQpmZXcgZHVwbGljYXRlcyBpbiB1 c2Vyc3BhY2UgaGFybmVzcyBwcm9ncmFtLgoKTm8gZnVuY3Rpb25hbCBjaGFuZ2UuCgpTaWduZWQt b2ZmLWJ5OiBXZWkgTGl1IDx3ZWkubGl1MkBjaXRyaXguY29tPgpSZXZpZXdlZC1ieTogSmFuIEJl dWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgotLS0KdjM6CjEuIEFkYXB0IGJ1aWxkIHN5c3RlbSB0 byBwcmV2aW91cyBwYXRjaAoyLiBBZGQgc3BhY2VzIGFyb3VuZCAifCIKLS0tCiB0b29scy9mdXp6 L3g4Nl9pbnN0cnVjdGlvbl9lbXVsYXRvci9NYWtlZmlsZSB8ICAgNCArLQogdG9vbHMvdGVzdHMv eDg2X2VtdWxhdG9yL01ha2VmaWxlICAgICAgICAgICAgfCAgIDQgKy0KIHRvb2xzL3Rlc3RzL3g4 Nl9lbXVsYXRvci90ZXN0X3g4Nl9lbXVsYXRvci5jIHwgICA5IC0KIHRvb2xzL3Rlc3RzL3g4Nl9l bXVsYXRvci94ODZfZW11bGF0ZS5oICAgICAgIHwgICAxICsKIHhlbi9hcmNoL3g4Ni94ODZfZW11 bGF0ZS94ODZfZW11bGF0ZS5jICAgICAgIHwgMzIxICsrKysrKysrKysrKystLS0tLS0tLS0tLS0t LQogNSBmaWxlcyBjaGFuZ2VkLCAxNjAgaW5zZXJ0aW9ucygrKSwgMTc5IGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL3Rvb2xzL2Z1enoveDg2X2luc3RydWN0aW9uX2VtdWxhdG9yL01ha2VmaWxl IGIvdG9vbHMvZnV6ei94ODZfaW5zdHJ1Y3Rpb25fZW11bGF0b3IvTWFrZWZpbGUKaW5kZXggZDVj NWJiYTBiMC4uMjQwYmM1OGIwNiAxMDA2NDQKLS0tIGEvdG9vbHMvZnV6ei94ODZfaW5zdHJ1Y3Rp b25fZW11bGF0b3IvTWFrZWZpbGUKKysrIGIvdG9vbHMvZnV6ei94ODZfaW5zdHJ1Y3Rpb25fZW11 bGF0b3IvTWFrZWZpbGUKQEAgLTExLDcgKzExLDcgQEAgZW5kaWYKIHg4Nl9lbXVsYXRlL3g4Nl9l bXVsYXRlLmMgeDg2X2VtdWxhdGUveDg2X2VtdWxhdGUuaDoKIAlbIC1MIHg4Nl9lbXVsYXRlIF0g fHwgbG4gLXNmICQoWEVOX1JPT1QpL3hlbi9hcmNoL3g4Ni94ODZfZW11bGF0ZSAuCiAKLWFzbS94 ODYtdmVuZG9ycy5oOgorYXNtL3g4Ni12ZW5kb3JzLmggYXNtL3g4Ni1kZWZucy5oOgogCVsgLUwg YXNtIF0gfHwgbG4gLXNmICQoWEVOX1JPT1QpL3hlbi9pbmNsdWRlL2FzbS14ODYgYXNtCiAKIHg4 Nl9lbXVsYXRlLmMgeDg2X2VtdWxhdGUuaDogJToKQEAgLTE5LDcgKzE5LDcgQEAgeDg2X2VtdWxh dGUuYyB4ODZfZW11bGF0ZS5oOiAlOgogCiBDRkxBR1MgKz0gJChDRkxBR1NfeGVuaW5jbHVkZSkg LURfX1hFTl9UT09MU19fIC1JLgogCi14ODZfZW11bGF0ZS5oOiBhc20veDg2LXZlbmRvcnMuaAor eDg2X2VtdWxhdGUuaDogYXNtL3g4Ni12ZW5kb3JzLmggYXNtL3g4Ni1kZWZucy5oCiAKIHg4Nl9l bXVsYXRlLm86IHg4Nl9lbXVsYXRlLmMgeDg2X2VtdWxhdGUuaCB4ODZfZW11bGF0ZS94ODZfZW11 bGF0ZS5jIHg4Nl9lbXVsYXRlL3g4Nl9lbXVsYXRlLmgKIApkaWZmIC0tZ2l0IGEvdG9vbHMvdGVz dHMveDg2X2VtdWxhdG9yL01ha2VmaWxlIGIvdG9vbHMvdGVzdHMveDg2X2VtdWxhdG9yL01ha2Vm aWxlCmluZGV4IGJkMWM0ZDY2NGUuLjY5NzgyODgyOTQgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rz L3g4Nl9lbXVsYXRvci9NYWtlZmlsZQorKysgYi90b29scy90ZXN0cy94ODZfZW11bGF0b3IvTWFr ZWZpbGUKQEAgLTQzLDEwICs0MywxMCBAQCBpbnN0YWxsOgogeDg2X2VtdWxhdGUveDg2X2VtdWxh dGUuYyB4ODZfZW11bGF0ZS94ODZfZW11bGF0ZS5oOgogCVsgLUwgeDg2X2VtdWxhdGUgXSB8fCBs biAtc2YgJChYRU5fUk9PVCkveGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRlIC4KIAotYXNtL3g4Ni12 ZW5kb3JzLmg6Cithc20veDg2LXZlbmRvcnMuaCBhc20veDg2LWRlZm5zLmg6CiAJWyAtTCBhc20g XSB8fCBsbiAtc2YgJChYRU5fUk9PVCkveGVuL2luY2x1ZGUvYXNtLXg4NiBhc20KIAoteDg2X2Vt dWxhdGUuaDogYXNtL3g4Ni12ZW5kb3JzLmgKK3g4Nl9lbXVsYXRlLmg6IGFzbS94ODYtdmVuZG9y cy5oIGFzbS94ODYtZGVmbnMuaAogCiBIT1NUQ0ZMQUdTICs9ICQoQ0ZMQUdTX3hlbmluY2x1ZGUp IC1JLgogCmRpZmYgLS1naXQgYS90b29scy90ZXN0cy94ODZfZW11bGF0b3IvdGVzdF94ODZfZW11 bGF0b3IuYyBiL3Rvb2xzL3Rlc3RzL3g4Nl9lbXVsYXRvci90ZXN0X3g4Nl9lbXVsYXRvci5jCmlu ZGV4IDkyNGZkMzZmMTguLjI3MjAwZTAyODMgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3RzL3g4Nl9l bXVsYXRvci90ZXN0X3g4Nl9lbXVsYXRvci5jCisrKyBiL3Rvb2xzL3Rlc3RzL3g4Nl9lbXVsYXRv ci90ZXN0X3g4Nl9lbXVsYXRvci5jCkBAIC0yMywxNSArMjMsNiBAQCBzdGF0aWMgY29uc3Qgc3Ry dWN0IHsKICNlbmRpZgogfTsKIAotLyogRUZMQUdTIGJpdCBkZWZpbml0aW9ucy4gKi8KLSNkZWZp bmUgRUZMR19PRiAoMTw8MTEpCi0jZGVmaW5lIEVGTEdfREYgKDE8PDEwKQotI2RlZmluZSBFRkxH X1NGICgxPDw3KQotI2RlZmluZSBFRkxHX1pGICgxPDw2KQotI2RlZmluZSBFRkxHX0FGICgxPDw0 KQotI2RlZmluZSBFRkxHX1BGICgxPDwyKQotI2RlZmluZSBFRkxHX0NGICgxPDwwKQotCiBzdGF0 aWMgdW5zaWduZWQgaW50IGJ5dGVzX3JlYWQ7CiAKIHN0YXRpYyBpbnQgcmVhZCgKZGlmZiAtLWdp dCBhL3Rvb2xzL3Rlc3RzL3g4Nl9lbXVsYXRvci94ODZfZW11bGF0ZS5oIGIvdG9vbHMvdGVzdHMv eDg2X2VtdWxhdG9yL3g4Nl9lbXVsYXRlLmgKaW5kZXggZGIyODcwMDRlNi4uZTA2NGRlYWVlYSAx MDA2NDQKLS0tIGEvdG9vbHMvdGVzdHMveDg2X2VtdWxhdG9yL3g4Nl9lbXVsYXRlLmgKKysrIGIv dG9vbHMvdGVzdHMveDg2X2VtdWxhdG9yL3g4Nl9lbXVsYXRlLmgKQEAgLTYsNiArNiw3IEBACiAj aW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8eGVuL3hlbi5oPgogCisjaW5jbHVkZSA8YXNt L3g4Ni1kZWZucy5oPgogI2luY2x1ZGUgPGFzbS94ODYtdmVuZG9ycy5oPgogCiAjZGVmaW5lIEJV RygpIGFib3J0KCkKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni94ODZfZW11bGF0ZS94ODZfZW11 bGF0ZS5jIGIveGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRlL3g4Nl9lbXVsYXRlLmMKaW5kZXggMjFk ZDk4Y2ViYy4uNmU4MjIxZDlkOCAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRl L3g4Nl9lbXVsYXRlLmMKKysrIGIveGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRlL3g4Nl9lbXVsYXRl LmMKQEAgLTQ0NywyNiArNDQ3LDYgQEAgdHlwZWRlZiB1bmlvbiB7CiAjZGVmaW5lIENSNF9GU0dT QkFTRSAgICgxPDwxNikKICNkZWZpbmUgQ1I0X09TWFNBVkUgICAgKDE8PDE4KQogCi0vKiBFRkxB R1MgYml0IGRlZmluaXRpb25zLiAqLwotI2RlZmluZSBFRkxHX0lEICAgKDE8PDIxKQotI2RlZmlu ZSBFRkxHX1ZJUCAgKDE8PDIwKQotI2RlZmluZSBFRkxHX1ZJRiAgKDE8PDE5KQotI2RlZmluZSBF RkxHX0FDICAgKDE8PDE4KQotI2RlZmluZSBFRkxHX1ZNICAgKDE8PDE3KQotI2RlZmluZSBFRkxH X1JGICAgKDE8PDE2KQotI2RlZmluZSBFRkxHX05UICAgKDE8PDE0KQotI2RlZmluZSBFRkxHX0lP UEwgKDM8PDEyKQotI2RlZmluZSBFRkxHX09GICAgKDE8PDExKQotI2RlZmluZSBFRkxHX0RGICAg KDE8PDEwKQotI2RlZmluZSBFRkxHX0lGICAgKDE8PDkpCi0jZGVmaW5lIEVGTEdfVEYgICAoMTw8 OCkKLSNkZWZpbmUgRUZMR19TRiAgICgxPDw3KQotI2RlZmluZSBFRkxHX1pGICAgKDE8PDYpCi0j ZGVmaW5lIEVGTEdfQUYgICAoMTw8NCkKLSNkZWZpbmUgRUZMR19QRiAgICgxPDwyKQotI2RlZmlu ZSBFRkxHX01CUyAgKDE8PDEpCi0jZGVmaW5lIEVGTEdfQ0YgICAoMTw8MCkKLQogLyogRmxvYXRp bmcgcG9pbnQgc3RhdHVzIHdvcmQgZGVmaW5pdGlvbnMuICovCiAjZGVmaW5lIEZTV19FUyAgICAo MVUgPDwgNykKIApAQCAtNTIxLDE0ICs1MDEsMTYgQEAgdHlwZWRlZiB1bmlvbiB7CiAgKiBUaGVz ZSBFRkxBR1MgYml0cyBhcmUgcmVzdG9yZWQgZnJvbSBzYXZlZCB2YWx1ZSBkdXJpbmcgZW11bGF0 aW9uLCBhbmQKICAqIGFueSBjaGFuZ2VzIGFyZSB3cml0dGVuIGJhY2sgdG8gdGhlIHNhdmVkIHZh bHVlIGFmdGVyIGVtdWxhdGlvbi4KICAqLwotI2RlZmluZSBFRkxBR1NfTUFTSyAoRUZMR19PRnxF RkxHX1NGfEVGTEdfWkZ8RUZMR19BRnxFRkxHX1BGfEVGTEdfQ0YpCisjZGVmaW5lIEVGTEFHU19N QVNLIChYODZfRUZMQUdTX09GIHwgWDg2X0VGTEFHU19TRiB8IFg4Nl9FRkxBR1NfWkYgfCBcCisg ICAgICAgICAgICAgICAgICAgICBYODZfRUZMQUdTX0FGIHwgWDg2X0VGTEFHU19QRiB8IFg4Nl9F RkxBR1NfQ0YpCiAKIC8qCiAgKiBUaGVzZSBFRkxBR1MgYml0cyBhcmUgbW9kaWZpYWJsZSAoYnkg UE9QRiBhbmQgSVJFVCksIHBvc3NpYmx5IHN1YmplY3QKICAqIHRvIGZ1cnRoZXIgQ1BMIGFuZCBJ T1BMIGNvbnN0cmFpbnRzLgogICovCi0jZGVmaW5lIEVGTEFHU19NT0RJRklBQkxFIChFRkxHX0lE fEVGTEdfQUN8RUZMR19SRnxFRkxHX05UfEVGTEdfSU9QTHwgXAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgRUZMR19ERnxFRkxHX0lGfEVGTEdfVEZ8RUZMQUdTX01BU0spCisjZGVmaW5lIEVG TEFHU19NT0RJRklBQkxFIChYODZfRUZMQUdTX0lEIHwgWDg2X0VGTEFHU19BQyB8IFg4Nl9FRkxB R1NfUkYgfCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICBYODZfRUZMQUdTX05UIHwgWDg2 X0VGTEFHU19JT1BMIHwgWDg2X0VGTEFHU19ERiB8IFwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIFg4Nl9FRkxBR1NfSUYgfCBYODZfRUZMQUdTX1RGIHwgRUZMQUdTX01BU0spCiAKIC8qIEJl Zm9yZSBleGVjdXRpbmcgaW5zdHJ1Y3Rpb246IHJlc3RvcmUgbmVjZXNzYXJ5IGJpdHMgaW4gRUZM QUdTLiAqLwogI2RlZmluZSBfUFJFX0VGTEFHUyhfc2F2LCBfbXNrLCBfdG1wKSAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwKQEAgLTc2MSw3ICs3NDMsOCBAQCBkbyB7ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiB9 IHdoaWxlICgwKQogI2RlZmluZSByZWdpc3Rlcl9hZGRyZXNzX2FkanVzdChyZWcsIGFkaikgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIF9yZWdpc3Rlcl9hZGRyZXNzX2luY3Jl bWVudChyZWcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBfcmVncy5fZWZsYWdzICYgRUZMR19ERiA/IC0oYWRqKSA6 IChhZGopLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9yZWdzLl9lZmxhZ3Mg JiBYODZfRUZMQUdTX0RGID8gICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC0oYWRqKSA6IChhZGopLCAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGFkX2J5dGVzKQogCiAjZGVmaW5lIHNwX3ByZV9kZWMoZGVj KSAoeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC03 ODQsNyArNzY3LDcgQEAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIHJjID0gb3BzLT5pbnNuX2ZldGNo KHg4Nl9zZWdfY3MsIGlwLCBOVUxMLCAwLCBjdHh0KTsgICAgICAgICAgICAgICAgXAogICAgIGlm ICggcmMgKSBnb3RvIGRvbmU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAogICAgIF9yZWdzLnIoaXApID0gaXA7ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHNpbmdsZXN0ZXAgPSBfcmVncy5fZWZs YWdzICYgRUZMR19URjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHNpbmds ZXN0ZXAgPSBfcmVncy5fZWZsYWdzICYgWDg2X0VGTEFHU19URjsgICAgICAgICAgICAgICAgICAg ICAgICAgXAogfSB3aGlsZSAoMCkKIAogI2RlZmluZSB2YWxpZGF0ZV9mYXJfYnJhbmNoKGNzLCBp cCkgKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXApAQCAtODAxLDcgKzc4NCw3 IEBAIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKICNkZWZpbmUgY29tbWl0X2Zhcl9icmFuY2goY3MsIG5ld2lw KSAoeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB2YWxpZGF0ZV9mYXJf YnJhbmNoKGNzLCBuZXdpcCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK ICAgICBfcmVncy5yKGlwKSA9IChuZXdpcCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwKLSAgICBzaW5nbGVzdGVwID0gX3JlZ3MuX2VmbGFncyAmIEVGTEdf VEY7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBzaW5nbGVzdGVwID0gX3Jl Z3MuX2VmbGFncyAmIFg4Nl9FRkxBR1NfVEY7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAg ICBvcHMtPndyaXRlX3NlZ21lbnQoeDg2X3NlZ19jcywgY3MsIGN0eHQpOyAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKIH0pCiAKQEAgLTg1NCw3ICs4MzcsNyBAQCBzdGF0aWMgaW50IF9nZXRf ZnB1KAogICAgICAgICBpZiAoIHR5cGUgPj0gWDg2RU1VTF9GUFVfeW1tICkKICAgICAgICAgewog ICAgICAgICAgICAgLyogU2hvdWxkIGJlIHVucmVhY2hhYmxlIGlmIFZFWCBkZWNvZGluZyBpcyB3 b3JraW5nIGNvcnJlY3RseS4gKi8KLSAgICAgICAgICAgIEFTU0VSVCgoY3IwICYgQ1IwX1BFKSAm JiAhKGN0eHQtPnJlZ3MtPl9lZmxhZ3MgJiBFRkxHX1ZNKSk7CisgICAgICAgICAgICBBU1NFUlQo KGNyMCAmIENSMF9QRSkgJiYgIShjdHh0LT5yZWdzLT5fZWZsYWdzICYgWDg2X0VGTEFHU19WTSkp OwogICAgICAgICB9CiAgICAgICAgIGlmICggY3IwICYgQ1IwX0VNICkKICAgICAgICAgewpAQCAt OTQ2LDcgKzkyOSw4IEBAIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICA6IFtl ZmxhZ3NdICIrZyIgKF9yZWdzLl9lZmxhZ3MpLCAgICAgICAgICAgICAgICAgICAgIFwKICAgICAg ICAgICAgICAgICAgICAgIFt0bXBdICI9JnIiICh0bXBfKSwgIittIiAoZmljKSAgICAgICAgICAg ICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICA6IFtmdW5jXSAicm0iIChzdHViLmZ1bmMp LCAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgIFttYXNr XSAiaSIgKEVGTEdfWkZ8RUZMR19QRnxFRkxHX0NGKSApOyAgICAgICAgICAgIFwKKyAgICAgICAg ICAgICAgICAgICAgIFttYXNrXSAiaSIgKFg4Nl9FRkxBR1NfWkZ8WDg2X0VGTEFHU19QRnwgICAg ICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFg4Nl9FRkxBR1NfQ0Yp ICk7ICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBwdXRfc3R1YihzdHViKTsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKIH0gd2hpbGUgKDAp CiAKQEAgLTk4OCw3ICs5NzIsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcHV0X2xvb3BfY291bnQo CiAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCiAgICAgICAgIGdvdG8gY29tcGxldGVfaW5zbjsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgfSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0g ICAgaWYgKCBtYXhfcmVwcyA+IDEgJiYgKF9yZWdzLl9lZmxhZ3MgJiBFRkxHX1RGKSAmJiAgICAg ICAgICAgICAgICAgICBcCisgICAgaWYgKCBtYXhfcmVwcyA+IDEgJiYgKF9yZWdzLl9lZmxhZ3Mg JiBYODZfRUZMQUdTX1RGKSAmJiAgICAgICAgICAgICBcCiAgICAgICAgICAhaXNfYnJhbmNoX3N0 ZXAoY3R4dCwgb3BzKSApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAg ICAgIG1heF9yZXBzID0gMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcCiAgICAgbWF4X3JlcHM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC0xMDIyLDcgKzEwMDYsNyBAQCBzdGF0 aWMgdm9pZCBfX3B1dF9yZXBfcHJlZml4KAogLyogQ2xpcCBtYXhpbXVtIHJlcGV0aXRpb25zIHNv IHRoYXQgdGhlIGluZGV4IHJlZ2lzdGVyIGF0IG1vc3QganVzdCB3cmFwcy4gKi8KICNkZWZpbmUg dHJ1bmNhdGVfZWFfYW5kX3JlcHMoZWEsIHJlcHMsIGJ5dGVzX3Blcl9yZXApICh7ICAgICAgICAg ICAgICAgICAgXAogICAgIHVuc2lnbmVkIGxvbmcgdG9kb19fLCBlYV9fID0gdHJ1bmNhdGVfd29y ZChlYSwgYWRfYnl0ZXMpOyAgICAgICAgICAgICBcCi0gICAgaWYgKCAhKF9yZWdzLl9lZmxhZ3Mg JiBFRkxHX0RGKSApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBp ZiAoICEoX3JlZ3MuX2VmbGFncyAmIFg4Nl9FRkxBR1NfREYpICkgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAogICAgICAgICB0b2RvX18gPSB0cnVuY2F0ZV93b3JkKC0oZWEpLCBhZF9i eXRlcykgLyAoYnl0ZXNfcGVyX3JlcCk7ICAgICAgICBcCiAgICAgZWxzZSBpZiAoIHRydW5jYXRl X3dvcmQoKGVhKSArIChieXRlc19wZXJfcmVwKSAtIDEsIGFkX2J5dGVzKSA8IGVhX18gKVwKICAg ICAgICAgdG9kb19fID0gMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXApAQCAtMTE0MywyOCArMTEyNywyOCBAQCB0ZXN0X2NjKAogICAgIHN3 aXRjaCAoIChjb25kaXRpb24gJiAxNSkgPj4gMSApCiAgICAgewogICAgIGNhc2UgMDogLyogbyAq LwotICAgICAgICByYyB8PSAoZmxhZ3MgJiBFRkxHX09GKTsKKyAgICAgICAgcmMgfD0gKGZsYWdz ICYgWDg2X0VGTEFHU19PRik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgMTogLyogYi9jL25h ZSAqLwotICAgICAgICByYyB8PSAoZmxhZ3MgJiBFRkxHX0NGKTsKKyAgICAgICAgcmMgfD0gKGZs YWdzICYgWDg2X0VGTEFHU19DRik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgMjogLyogei9l ICovCi0gICAgICAgIHJjIHw9IChmbGFncyAmIEVGTEdfWkYpOworICAgICAgICByYyB8PSAoZmxh Z3MgJiBYODZfRUZMQUdTX1pGKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSAzOiAvKiBiZS9u YSAqLwotICAgICAgICByYyB8PSAoZmxhZ3MgJiAoRUZMR19DRnxFRkxHX1pGKSk7CisgICAgICAg IHJjIHw9IChmbGFncyAmIChYODZfRUZMQUdTX0NGIHwgWDg2X0VGTEFHU19aRikpOwogICAgICAg ICBicmVhazsKICAgICBjYXNlIDQ6IC8qIHMgKi8KLSAgICAgICAgcmMgfD0gKGZsYWdzICYgRUZM R19TRik7CisgICAgICAgIHJjIHw9IChmbGFncyAmIFg4Nl9FRkxBR1NfU0YpOwogICAgICAgICBi cmVhazsKICAgICBjYXNlIDU6IC8qIHAvcGUgKi8KLSAgICAgICAgcmMgfD0gKGZsYWdzICYgRUZM R19QRik7CisgICAgICAgIHJjIHw9IChmbGFncyAmIFg4Nl9FRkxBR1NfUEYpOwogICAgICAgICBi cmVhazsKICAgICBjYXNlIDc6IC8qIGxlL25nICovCi0gICAgICAgIHJjIHw9IChmbGFncyAmIEVG TEdfWkYpOworICAgICAgICByYyB8PSAoZmxhZ3MgJiBYODZfRUZMQUdTX1pGKTsKICAgICAgICAg LyogZmFsbCB0aHJvdWdoICovCiAgICAgY2FzZSA2OiAvKiBsL25nZSAqLwotICAgICAgICByYyB8 PSAoIShmbGFncyAmIEVGTEdfU0YpICE9ICEoZmxhZ3MgJiBFRkxHX09GKSk7CisgICAgICAgIHJj IHw9ICghKGZsYWdzICYgWDg2X0VGTEFHU19TRikgIT0gIShmbGFncyAmIFg4Nl9FRkxBR1NfT0Yp KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC0xMTc5LDcgKzExNjMsNyBAQCBnZXRfY3Bs KAogewogICAgIHN0cnVjdCBzZWdtZW50X3JlZ2lzdGVyIHJlZzsKIAotICAgIGlmICggY3R4dC0+ cmVncy0+X2VmbGFncyAmIEVGTEdfVk0gKQorICAgIGlmICggY3R4dC0+cmVncy0+X2VmbGFncyAm IFg4Nl9FRkxBR1NfVk0gKQogICAgICAgICByZXR1cm4gMzsKIAogICAgIGlmICggKG9wcy0+cmVh ZF9zZWdtZW50ID09IE5VTEwpIHx8CkBAIC0xMTk3LDcgKzExODEsNyBAQCBfbW9kZV9pb3BsKAog ICAgIGludCBjcGwgPSBnZXRfY3BsKGN0eHQsIG9wcyk7CiAgICAgaWYgKCBjcGwgPT0gLTEgKQog ICAgICAgICByZXR1cm4gLTE7Ci0gICAgcmV0dXJuIGNwbCA8PSBNQVNLX0VYVFIoY3R4dC0+cmVn cy0+X2VmbGFncywgRUZMR19JT1BMKTsKKyAgICByZXR1cm4gY3BsIDw9IE1BU0tfRVhUUihjdHh0 LT5yZWdzLT5fZWZsYWdzLCBYODZfRUZMQUdTX0lPUEwpOwogfQogCiAjZGVmaW5lIG1vZGVfcmlu ZzAoKSAoeyAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC0xMjE3LDcgKzEyMDEsNyBAQCBf bW9kZV9pb3BsKAogICAgICAgICByYyA9IG9wcy0+cmVhZF9jcig0LCAmY3I0LCBjdHh0KTsgICAg ICAgICAgICAgICAgICAgIFwKICAgICAgICAgaWYgKCByYyAhPSBYODZFTVVMX09LQVkgKSBnb3Rv IGRvbmU7ICAgICAgICAgICAgICAgICBcCiAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICEhKGNyNCAmIChfcmVncy5fZWZs YWdzICYgRUZMR19WTSA/IENSNF9WTUUgOiBDUjRfUFZJKSk7IFwKKyAgICAhIShjcjQgJiAoX3Jl Z3MuX2VmbGFncyAmIFg4Nl9FRkxBR1NfVk0gPyBDUjRfVk1FIDogQ1I0X1BWSSkpOyBcCiB9KQog CiBzdGF0aWMgaW50IGlvcG9ydF9hY2Nlc3NfY2hlY2soCkBAIC0xMjMwLDcgKzEyMTQsNyBAQCBz dGF0aWMgaW50IGlvcG9ydF9hY2Nlc3NfY2hlY2soCiAgICAgc3RydWN0IHNlZ21lbnRfcmVnaXN0 ZXIgdHI7CiAgICAgaW50IHJjID0gWDg2RU1VTF9PS0FZOwogCi0gICAgaWYgKCAhKGN0eHQtPnJl Z3MtPl9lZmxhZ3MgJiBFRkxHX1ZNKSAmJiBtb2RlX2lvcGwoKSApCisgICAgaWYgKCAhKGN0eHQt PnJlZ3MtPl9lZmxhZ3MgJiBYODZfRUZMQUdTX1ZNKSAmJiBtb2RlX2lvcGwoKSApCiAgICAgICAg IHJldHVybiBYODZFTVVMX09LQVk7CiAKICAgICBmYWlsX2lmKG9wcy0+cmVhZF9zZWdtZW50ID09 IE5VTEwpOwpAQCAtMTI5OSw3ICsxMjgzLDcgQEAgaW5fcHJvdG1vZGUoCiAgICAgc3RydWN0IHg4 Nl9lbXVsYXRlX2N0eHQgKmN0eHQsCiAgICAgY29uc3Qgc3RydWN0IHg4Nl9lbXVsYXRlX29wcyAg Km9wcykKIHsKLSAgICByZXR1cm4gIShpbl9yZWFsbW9kZShjdHh0LCBvcHMpIHx8IChjdHh0LT5y ZWdzLT5fZWZsYWdzICYgRUZMR19WTSkpOworICAgIHJldHVybiAhKGluX3JlYWxtb2RlKGN0eHQs IG9wcykgfHwgKGN0eHQtPnJlZ3MtPl9lZmxhZ3MgJiBYODZfRUZMQUdTX1ZNKSk7CiB9CiAKICNk ZWZpbmUgRUFYIDAKQEAgLTE4MjIsOCArMTgwNiw4IEBAIHN0YXRpYyBpbnQgaW5qZWN0X3N3aW50 KGVudW0geDg2X3N3aW50X3R5cGUgdHlwZSwKICAgICAgICAgICAgICAqIGEgMzJiaXQgT1MuICBT b21lb25lIHdpdGggbWFueSBUVUlUcyBjYW4gc2VlIGFib3V0IHJlYWRpbmcgdGhlCiAgICAgICAg ICAgICAgKiBUU1MgU29mdHdhcmUgSW50ZXJydXB0IFJlZGlyZWN0aW9uIGJpdG1hcC4KICAgICAg ICAgICAgICAqLwotICAgICAgICAgICAgaWYgKCAoY3R4dC0+cmVncy0+X2VmbGFncyAmIEVGTEdf Vk0pICYmCi0gICAgICAgICAgICAgICAgICgoY3R4dC0+cmVncy0+X2VmbGFncyAmIEVGTEdfSU9Q TCkgIT0gRUZMR19JT1BMKSApCisgICAgICAgICAgICBpZiAoIChjdHh0LT5yZWdzLT5fZWZsYWdz ICYgWDg2X0VGTEFHU19WTSkgJiYKKyAgICAgICAgICAgICAgICAgKChjdHh0LT5yZWdzLT5fZWZs YWdzICYgWDg2X0VGTEFHU19JT1BMKSAhPSBYODZfRUZMQUdTX0lPUEwpICkKICAgICAgICAgICAg ICAgICBnb3RvIHJhaXNlX2V4bjsKIAogICAgICAgICAgICAgLyoKQEAgLTIzMTMsNyArMjI5Nyw3 IEBAIHg4Nl9kZWNvZGUoCiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIEJV RygpOyAvKiBTaG91bGRuJ3QgYmUgcG9zc2libGUuICovCiAgICAgICAgICAgICBjYXNlIDI6Ci0g ICAgICAgICAgICAgICAgaWYgKCBzdGF0ZS0+cmVncy0+X2VmbGFncyAmIEVGTEdfVk0gKQorICAg ICAgICAgICAgICAgIGlmICggc3RhdGUtPnJlZ3MtPl9lZmxhZ3MgJiBYODZfRUZMQUdTX1ZNICkK ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgLyogZmFsbCB0aHJv dWdoICovCiAgICAgICAgICAgICBjYXNlIDQ6CkBAIC0yNjc2LDcgKzI2NjAsOCBAQCB4ODZfZW11 bGF0ZSgKICAgICBzdHJ1Y3QgeDg2X2VtdWxhdGVfc3RhdGUgc3RhdGU7CiAgICAgaW50IHJjOwog ICAgIHVpbnQ4X3QgYiwgZDsKLSAgICBib29sIHNpbmdsZXN0ZXAgPSAoX3JlZ3MuX2VmbGFncyAm IEVGTEdfVEYpICYmICFpc19icmFuY2hfc3RlcChjdHh0LCBvcHMpOworICAgIGJvb2wgc2luZ2xl c3RlcCA9IChfcmVncy5fZWZsYWdzICYgWDg2X0VGTEFHU19URikgJiYKKwkgICAgIWlzX2JyYW5j aF9zdGVwKGN0eHQsIG9wcyk7CiAgICAgc3RydWN0IG9wZXJhbmQgc3JjID0geyAucmVnID0gUFRS X1BPSVNPTiB9OwogICAgIHN0cnVjdCBvcGVyYW5kIGRzdCA9IHsgLnJlZyA9IFBUUl9QT0lTT04g fTsKICAgICBlbnVtIHg4Nl9zd2ludF90eXBlIHN3aW50X3R5cGU7CkBAIC0yOTU0LDMzICsyOTM5 LDM0IEBAIHg4Nl9lbXVsYXRlKAogICAgICAgICB1aW50OF90IGFsID0gX3JlZ3MuYWw7CiAgICAg ICAgIHVuc2lnbmVkIGludCBlZmxhZ3MgPSBfcmVncy5fZWZsYWdzOwogCi0gICAgICAgIF9yZWdz Ll9lZmxhZ3MgJj0gfihFRkxHX0NGfEVGTEdfQUZ8RUZMR19TRnxFRkxHX1pGfEVGTEdfUEYpOwot ICAgICAgICBpZiAoICgoYWwgJiAweDBmKSA+IDkpIHx8IChlZmxhZ3MgJiBFRkxHX0FGKSApCisg ICAgICAgIF9yZWdzLl9lZmxhZ3MgJj0gfihYODZfRUZMQUdTX0NGIHwgWDg2X0VGTEFHU19BRiB8 IFg4Nl9FRkxBR1NfU0YgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgWDg2X0VGTEFHU19a RiB8IFg4Nl9FRkxBR1NfUEYpOworICAgICAgICBpZiAoICgoYWwgJiAweDBmKSA+IDkpIHx8IChl ZmxhZ3MgJiBYODZfRUZMQUdTX0FGKSApCiAgICAgICAgIHsKLSAgICAgICAgICAgIF9yZWdzLl9l ZmxhZ3MgfD0gRUZMR19BRjsKLSAgICAgICAgICAgIGlmICggYiA9PSAweDJmICYmIChhbCA8IDYg fHwgKGVmbGFncyAmIEVGTEdfQ0YpKSApCi0gICAgICAgICAgICAgICAgX3JlZ3MuX2VmbGFncyB8 PSBFRkxHX0NGOworICAgICAgICAgICAgX3JlZ3MuX2VmbGFncyB8PSBYODZfRUZMQUdTX0FGOwor ICAgICAgICAgICAgaWYgKCBiID09IDB4MmYgJiYgKGFsIDwgNiB8fCAoZWZsYWdzICYgWDg2X0VG TEFHU19DRikpICkKKyAgICAgICAgICAgICAgICBfcmVncy5fZWZsYWdzIHw9IFg4Nl9FRkxBR1Nf Q0Y7CiAgICAgICAgICAgICBfcmVncy5hbCArPSAoYiA9PSAweDI3KSA/IDYgOiAtNjsKICAgICAg ICAgfQotICAgICAgICBpZiAoIChhbCA+IDB4OTkpIHx8IChlZmxhZ3MgJiBFRkxHX0NGKSApCisg ICAgICAgIGlmICggKGFsID4gMHg5OSkgfHwgKGVmbGFncyAmIFg4Nl9FRkxBR1NfQ0YpICkKICAg ICAgICAgewogICAgICAgICAgICAgX3JlZ3MuYWwgKz0gKGIgPT0gMHgyNykgPyAweDYwIDogLTB4 NjA7Ci0gICAgICAgICAgICBfcmVncy5fZWZsYWdzIHw9IEVGTEdfQ0Y7CisgICAgICAgICAgICBf cmVncy5fZWZsYWdzIHw9IFg4Nl9FRkxBR1NfQ0Y7CiAgICAgICAgIH0KLSAgICAgICAgX3JlZ3Mu X2VmbGFncyB8PSAhX3JlZ3MuYWwgPyBFRkxHX1pGIDogMDsKLSAgICAgICAgX3JlZ3MuX2VmbGFn cyB8PSAoKGludDhfdClfcmVncy5hbCA8IDApID8gRUZMR19TRiA6IDA7Ci0gICAgICAgIF9yZWdz Ll9lZmxhZ3MgfD0gZXZlbl9wYXJpdHkoX3JlZ3MuYWwpID8gRUZMR19QRiA6IDA7CisgICAgICAg IF9yZWdzLl9lZmxhZ3MgfD0gIV9yZWdzLmFsID8gWDg2X0VGTEFHU19aRiA6IDA7CisgICAgICAg IF9yZWdzLl9lZmxhZ3MgfD0gKChpbnQ4X3QpX3JlZ3MuYWwgPCAwKSA/IFg4Nl9FRkxBR1NfU0Yg OiAwOworICAgICAgICBfcmVncy5fZWZsYWdzIHw9IGV2ZW5fcGFyaXR5KF9yZWdzLmFsKSA/IFg4 Nl9FRkxBR1NfUEYgOiAwOwogICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBjYXNlIDB4Mzc6 IC8qIGFhYSAqLwogICAgIGNhc2UgMHgzZjogLyogYWFzICovCi0gICAgICAgIF9yZWdzLl9lZmxh Z3MgJj0gfkVGTEdfQ0Y7Ci0gICAgICAgIGlmICggKF9yZWdzLmFsID4gOSkgfHwgKF9yZWdzLl9l ZmxhZ3MgJiBFRkxHX0FGKSApCisgICAgICAgIF9yZWdzLl9lZmxhZ3MgJj0gflg4Nl9FRkxBR1Nf Q0Y7CisgICAgICAgIGlmICggKF9yZWdzLmFsID4gOSkgfHwgKF9yZWdzLl9lZmxhZ3MgJiBYODZf RUZMQUdTX0FGKSApCiAgICAgICAgIHsKICAgICAgICAgICAgIF9yZWdzLmFsICs9IChiID09IDB4 MzcpID8gNiA6IC02OwogICAgICAgICAgICAgX3JlZ3MuYWggKz0gKGIgPT0gMHgzNykgPyAxIDog LTE7Ci0gICAgICAgICAgICBfcmVncy5fZWZsYWdzIHw9IEVGTEdfQ0YgfCBFRkxHX0FGOworICAg ICAgICAgICAgX3JlZ3MuX2VmbGFncyB8PSBYODZfRUZMQUdTX0NGIHwgWDg2X0VGTEFHU19BRjsK ICAgICAgICAgfQogICAgICAgICBfcmVncy5hbCAmPSAweDBmOwogICAgICAgICBicmVhazsKQEAg LTMwODYsMTIgKzMwNzIsMTIgQEAgeDg2X2VtdWxhdGUoCiAgICAgICAgICAgICAgICAgZ290byBk b25lOwogICAgICAgICAgICAgaWYgKCBzcmNfcnBsID4gKGRzdC52YWwgJiAzKSApCiAgICAgICAg ICAgICB7Ci0gICAgICAgICAgICAgICAgX3JlZ3MuX2VmbGFncyB8PSBFRkxHX1pGOworICAgICAg ICAgICAgICAgIF9yZWdzLl9lZmxhZ3MgfD0gWDg2X0VGTEFHU19aRjsKICAgICAgICAgICAgICAg ICBkc3QudmFsID0gKGRzdC52YWwgJiB+MykgfCBzcmNfcnBsOwogICAgICAgICAgICAgfQogICAg ICAgICAgICAgZWxzZQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIF9yZWdzLl9lZmxh Z3MgJj0gfkVGTEdfWkY7CisgICAgICAgICAgICAgICAgX3JlZ3MuX2VmbGFncyAmPSB+WDg2X0VG TEFHU19aRjsKICAgICAgICAgICAgICAgICBkc3QudHlwZSA9IE9QX05PTkU7CiAgICAgICAgICAg ICB9CiAgICAgICAgICAgICBnZW5lcmF0ZV9leGNlcHRpb25faWYoIWluX3Byb3Rtb2RlKGN0eHQs IG9wcyksIEVYQ19VRCk7CkBAIC0zMzU0LDcgKzMzNDAsNyBAQCB4ODZfZW11bGF0ZSgKICAgICAg ICAgICAgIGdvdG8gZG9uZTsKIAogICAgICAgICBfcmVncy5yKGlwKSA9IGltbTE7Ci0gICAgICAg IHNpbmdsZXN0ZXAgPSBfcmVncy5fZWZsYWdzICYgRUZMR19URjsKKyAgICAgICAgc2luZ2xlc3Rl cCA9IF9yZWdzLl9lZmxhZ3MgJiBYODZfRUZMQUdTX1RGOwogICAgICAgICBicmVhazsKIAogICAg IGNhc2UgMHg5YjogIC8qIHdhaXQvZndhaXQgKi8KQEAgLTMzNjYsOCArMzM1Miw4IEBAIHg4Nl9l bXVsYXRlKAogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgMHg5YzogLyogcHVzaGYgKi8KLSAg ICAgICAgaWYgKCAoX3JlZ3MuX2VmbGFncyAmIEVGTEdfVk0pICYmCi0gICAgICAgICAgICAgTUFT S19FWFRSKF9yZWdzLl9lZmxhZ3MsIEVGTEdfSU9QTCkgIT0gMyApCisgICAgICAgIGlmICggKF9y ZWdzLl9lZmxhZ3MgJiBYODZfRUZMQUdTX1ZNKSAmJgorICAgICAgICAgICAgIE1BU0tfRVhUUihf cmVncy5fZWZsYWdzLCBYODZfRUZMQUdTX0lPUEwpICE9IDMgKQogICAgICAgICB7CiAgICAgICAg ICAgICBjcjQgPSAwOwogICAgICAgICAgICAgaWYgKCBvcF9ieXRlcyA9PSAyICYmIG9wcy0+cmVh ZF9jciApCkBAIC0zMzc3LDIxICszMzYzLDIxIEBAIHg4Nl9lbXVsYXRlKAogICAgICAgICAgICAg ICAgICAgICBnb3RvIGRvbmU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBnZW5lcmF0ZV9l eGNlcHRpb25faWYoIShjcjQgJiBDUjRfVk1FKSwgRVhDX0dQLCAwKTsKLSAgICAgICAgICAgIHNy Yy52YWwgPSAoX3JlZ3MuZmxhZ3MgJiB+RUZMR19JRikgfCBFRkxHX0lPUEw7Ci0gICAgICAgICAg ICBpZiAoIF9yZWdzLl9lZmxhZ3MgJiBFRkxHX1ZJRiApCi0gICAgICAgICAgICAgICAgc3JjLnZh bCB8PSBFRkxHX0lGOworICAgICAgICAgICAgc3JjLnZhbCA9IChfcmVncy5mbGFncyAmIH5YODZf RUZMQUdTX0lGKSB8IFg4Nl9FRkxBR1NfSU9QTDsKKyAgICAgICAgICAgIGlmICggX3JlZ3MuX2Vm bGFncyAmIFg4Nl9FRkxBR1NfVklGICkKKyAgICAgICAgICAgICAgICBzcmMudmFsIHw9IFg4Nl9F RkxBR1NfSUY7CiAgICAgICAgIH0KICAgICAgICAgZWxzZQotICAgICAgICAgICAgc3JjLnZhbCA9 IF9yZWdzLnIoZmxhZ3MpICYgfihFRkxHX1ZNIHwgRUZMR19SRik7CisgICAgICAgICAgICBzcmMu dmFsID0gX3JlZ3MucihmbGFncykgJiB+KFg4Nl9FRkxBR1NfVk0gfCBYODZfRUZMQUdTX1JGKTsK ICAgICAgICAgZ290byBwdXNoOwogCiAgICAgY2FzZSAweDlkOiAvKiBwb3BmICovIHsKLSAgICAg ICAgdWludDMyX3QgbWFzayA9IEVGTEdfVklQIHwgRUZMR19WSUYgfCBFRkxHX1ZNOworICAgICAg ICB1aW50MzJfdCBtYXNrID0gWDg2X0VGTEFHU19WSVAgfCBYODZfRUZMQUdTX1ZJRiB8IFg4Nl9F RkxBR1NfVk07CiAKICAgICAgICAgY3I0ID0gMDsKICAgICAgICAgaWYgKCAhbW9kZV9yaW5nMCgp ICkKICAgICAgICAgewotICAgICAgICAgICAgaWYgKCBfcmVncy5fZWZsYWdzICYgRUZMR19WTSAp CisgICAgICAgICAgICBpZiAoIF9yZWdzLl9lZmxhZ3MgJiBYODZfRUZMQUdTX1ZNICkKICAgICAg ICAgICAgIHsKICAgICAgICAgICAgICAgICBpZiAoIG9wX2J5dGVzID09IDIgJiYgb3BzLT5yZWFk X2NyICkKICAgICAgICAgICAgICAgICB7CkBAIC0zNDAwLDEyICszMzg2LDEyIEBAIHg4Nl9lbXVs YXRlKAogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBkb25lOwogICAgICAgICAgICAgICAg IH0KICAgICAgICAgICAgICAgICBnZW5lcmF0ZV9leGNlcHRpb25faWYoIShjcjQgJiBDUjRfVk1F KSAmJgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNQVNLX0VYVFIoX3Jl Z3MuX2VmbGFncywgRUZMR19JT1BMKSAhPSAzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBNQVNLX0VYVFIoX3JlZ3MuX2VmbGFncywgWDg2X0VGTEFHU19JT1BMKSAhPSAz LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFWENfR1AsIDApOwogICAg ICAgICAgICAgfQotICAgICAgICAgICAgbWFzayB8PSBFRkxHX0lPUEw7CisgICAgICAgICAgICBt YXNrIHw9IFg4Nl9FRkxBR1NfSU9QTDsKICAgICAgICAgICAgIGlmICggIW1vZGVfaW9wbCgpICkK LSAgICAgICAgICAgICAgICBtYXNrIHw9IEVGTEdfSUY7CisgICAgICAgICAgICAgICAgbWFzayB8 PSBYODZfRUZMQUdTX0lGOwogICAgICAgICB9CiAgICAgICAgIC8qIDY0LWJpdCBtb2RlOiBQT1Ag ZGVmYXVsdHMgdG8gYSA2NC1iaXQgb3BlcmFuZC4gKi8KICAgICAgICAgaWYgKCBtb2RlXzY0Yml0 KCkgJiYgKG9wX2J5dGVzID09IDQpICkKQEAgLTM0MTgsMzIgKzM0MDQsMzMgQEAgeDg2X2VtdWxh dGUoCiAgICAgICAgICAgICBkc3QudmFsID0gKHVpbnQxNl90KWRzdC52YWwgfCAoX3JlZ3MuX2Vm bGFncyAmIDB4ZmZmZjAwMDB1KTsKICAgICAgICAgICAgIGlmICggY3I0ICYgQ1I0X1ZNRSApCiAg ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYgKCBkc3QudmFsICYgRUZMR19JRiApCisg ICAgICAgICAgICAgICAgaWYgKCBkc3QudmFsICYgWDg2X0VGTEFHU19JRiApCiAgICAgICAgICAg ICAgICAgewotICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZV9leGNlcHRpb25faWYoX3JlZ3Mu X2VmbGFncyAmIEVGTEdfVklQLCBFWENfR1AsIDApOwotICAgICAgICAgICAgICAgICAgICBkc3Qu dmFsIHw9IEVGTEdfVklGOworICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZV9leGNlcHRpb25f aWYoX3JlZ3MuX2VmbGFncyAmIFg4Nl9FRkxBR1NfVklQLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgRVhDX0dQLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgZHN0 LnZhbCB8PSBYODZfRUZMQUdTX1ZJRjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg ICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBkc3QudmFsICY9IH5FRkxHX1ZJRjsKLSAgICAg ICAgICAgICAgICBtYXNrICY9IH5FRkxHX1ZJRjsKKyAgICAgICAgICAgICAgICAgICAgZHN0LnZh bCAmPSB+WDg2X0VGTEFHU19WSUY7CisgICAgICAgICAgICAgICAgbWFzayAmPSB+WDg2X0VGTEFH U19WSUY7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgZHN0LnZhbCAmPSBFRkxB R1NfTU9ESUZJQUJMRTsKICAgICAgICAgX3JlZ3MuX2VmbGFncyAmPSBtYXNrOwotICAgICAgICBf cmVncy5fZWZsYWdzIHw9IChkc3QudmFsICYgfm1hc2spIHwgRUZMR19NQlM7CisgICAgICAgIF9y ZWdzLl9lZmxhZ3MgfD0gKGRzdC52YWwgJiB+bWFzaykgfCBYODZfRUZMQUdTX01CUzsKICAgICAg ICAgYnJlYWs7CiAgICAgfQogCiAgICAgY2FzZSAweDllOiAvKiBzYWhmICovCiAgICAgICAgIGlm ICggbW9kZV82NGJpdCgpICkKICAgICAgICAgICAgIHZjcHVfbXVzdF9oYXZlKGxhaGZfbG0pOwot ICAgICAgICAqKHVpbnQ4X3QgKikmX3JlZ3MuX2VmbGFncyA9IChfcmVncy5haCAmIEVGTEFHU19N QVNLKSB8IEVGTEdfTUJTOworICAgICAgICAqKHVpbnQ4X3QgKikmX3JlZ3MuX2VmbGFncyA9IChf cmVncy5haCAmIEVGTEFHU19NQVNLKSB8IFg4Nl9FRkxBR1NfTUJTOwogICAgICAgICBicmVhazsK IAogICAgIGNhc2UgMHg5ZjogLyogbGFoZiAqLwogICAgICAgICBpZiAoIG1vZGVfNjRiaXQoKSAp CiAgICAgICAgICAgICB2Y3B1X211c3RfaGF2ZShsYWhmX2xtKTsKLSAgICAgICAgX3JlZ3MuYWgg PSAoX3JlZ3MuX2VmbGFncyAmIEVGTEFHU19NQVNLKSB8IEVGTEdfTUJTOworICAgICAgICBfcmVn cy5haCA9IChfcmVncy5fZWZsYWdzICYgRUZMQUdTX01BU0spIHwgWDg2X0VGTEFHU19NQlM7CiAg ICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSAweGE0IC4uLiAweGE1OiAvKiBtb3ZzICovIHsKQEAg LTM0ODcsOCArMzQ3NCw4IEBAIHg4Nl9lbXVsYXRlKAogICAgICAgICBwdXRfcmVwX3ByZWZpeCgx KTsKICAgICAgICAgLyogY21wOiBkc3QgLSBzcmMgPT0+IHNyYz0qJSVlZGksZHN0PSolJWVzaSA9 PT4gKiUlZXNpIC0gKiUlZWRpICovCiAgICAgICAgIGVtdWxhdGVfMm9wX1NyY1YoImNtcCIsIHNy YywgZHN0LCBfcmVncy5fZWZsYWdzKTsKLSAgICAgICAgaWYgKCAocmVwZV9wcmVmaXgoKSAmJiAh KF9yZWdzLl9lZmxhZ3MgJiBFRkxHX1pGKSkgfHwKLSAgICAgICAgICAgICAocmVwbmVfcHJlZml4 KCkgJiYgKF9yZWdzLl9lZmxhZ3MgJiBFRkxHX1pGKSkgKQorICAgICAgICBpZiAoIChyZXBlX3By ZWZpeCgpICYmICEoX3JlZ3MuX2VmbGFncyAmIFg4Nl9FRkxBR1NfWkYpKSB8fAorICAgICAgICAg ICAgIChyZXBuZV9wcmVmaXgoKSAmJiAoX3JlZ3MuX2VmbGFncyAmIFg4Nl9FRkxBR1NfWkYpKSAp CiAgICAgICAgICAgICBfcmVncy5yKGlwKSA9IG5leHRfZWlwOwogICAgICAgICBicmVhazsKICAg ICB9CkBAIC0zNTM3LDggKzM1MjQsOCBAQCB4ODZfZW11bGF0ZSgKICAgICAgICAgLyogY21wOiAl JWVheCAtIColJWVkaSA9PT4gc3JjPSUlZWF4LGRzdD0qJSVlZGkgPT0+IHNyYyAtIGRzdCAqLwog ICAgICAgICBkc3QuYnl0ZXMgPSBzcmMuYnl0ZXM7CiAgICAgICAgIGVtdWxhdGVfMm9wX1NyY1Yo ImNtcCIsIGRzdCwgc3JjLCBfcmVncy5fZWZsYWdzKTsKLSAgICAgICAgaWYgKCAocmVwZV9wcmVm aXgoKSAmJiAhKF9yZWdzLl9lZmxhZ3MgJiBFRkxHX1pGKSkgfHwKLSAgICAgICAgICAgICAocmVw bmVfcHJlZml4KCkgJiYgKF9yZWdzLl9lZmxhZ3MgJiBFRkxHX1pGKSkgKQorICAgICAgICBpZiAo IChyZXBlX3ByZWZpeCgpICYmICEoX3JlZ3MuX2VmbGFncyAmIFg4Nl9FRkxBR1NfWkYpKSB8fAor ICAgICAgICAgICAgIChyZXBuZV9wcmVmaXgoKSAmJiAoX3JlZ3MuX2VmbGFncyAmIFg4Nl9FRkxB R1NfWkYpKSApCiAgICAgICAgICAgICBfcmVncy5yKGlwKSA9IG5leHRfZWlwOwogICAgICAgICBi cmVhazsKICAgICB9CkBAIC0zNjgzLDcgKzM2NzAsNyBAQCB4ODZfZW11bGF0ZSgKICAgICAgICAg Z290byBkb25lOwogCiAgICAgY2FzZSAweGNlOiAvKiBpbnRvICovCi0gICAgICAgIGlmICggIShf cmVncy5fZWZsYWdzICYgRUZMR19PRikgKQorICAgICAgICBpZiAoICEoX3JlZ3MuX2VmbGFncyAm IFg4Nl9FRkxBR1NfT0YpICkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBzcmMudmFsID0g RVhDX09GOwogICAgICAgICBzd2ludF90eXBlID0geDg2X3N3aW50X2ludG87CkBAIC0zNjkxLDcg KzM2NzgsNyBAQCB4ODZfZW11bGF0ZSgKIAogICAgIGNhc2UgMHhjZjogLyogaXJldCAqLyB7CiAg ICAgICAgIHVuc2lnbmVkIGxvbmcgc2VsLCBlaXAsIGVmbGFnczsKLSAgICAgICAgdWludDMyX3Qg bWFzayA9IEVGTEdfVklQIHwgRUZMR19WSUYgfCBFRkxHX1ZNOworICAgICAgICB1aW50MzJfdCBt YXNrID0gWDg2X0VGTEFHU19WSVAgfCBYODZfRUZMQUdTX1ZJRiB8IFg4Nl9FRkxBR1NfVk07CiAK ICAgICAgICAgZmFpbF9pZighaW5fcmVhbG1vZGUoY3R4dCwgb3BzKSk7CiAgICAgICAgIGlmICgg KHJjID0gcmVhZF91bG9uZyh4ODZfc2VnX3NzLCBzcF9wb3N0X2luYyhvcF9ieXRlcyksCkBAIC0z NzA1LDcgKzM2OTIsNyBAQCB4ODZfZW11bGF0ZSgKICAgICAgICAgICAgIGVmbGFncyA9ICh1aW50 MTZfdCllZmxhZ3MgfCAoX3JlZ3MuX2VmbGFncyAmIDB4ZmZmZjAwMDB1KTsKICAgICAgICAgZWZs YWdzICY9IEVGTEFHU19NT0RJRklBQkxFOwogICAgICAgICBfcmVncy5fZWZsYWdzICY9IG1hc2s7 Ci0gICAgICAgIF9yZWdzLl9lZmxhZ3MgfD0gKGVmbGFncyAmIH5tYXNrKSB8IEVGTEdfTUJTOwor ICAgICAgICBfcmVncy5fZWZsYWdzIHw9IChlZmxhZ3MgJiB+bWFzaykgfCBYODZfRUZMQUdTX01C UzsKICAgICAgICAgaWYgKCAocmMgPSBsb2FkX3NlZyh4ODZfc2VnX2NzLCBzZWwsIDEsICZjcywg Y3R4dCwgb3BzKSkgfHwKICAgICAgICAgICAgICAocmMgPSBjb21taXRfZmFyX2JyYW5jaCgmY3Ms ICh1aW50MzJfdCllaXApKSApCiAgICAgICAgICAgICBnb3RvIGRvbmU7CkBAIC0zNzM3LDE1ICsz NzI0LDE1IEBAIHg4Nl9lbXVsYXRlKAogICAgICAgICAgICAgZ2VuZXJhdGVfZXhjZXB0aW9uX2lm KCFiYXNlLCBFWENfREUpOwogICAgICAgICAgICAgX3JlZ3MuYXggPSAoKGFsIC8gYmFzZSkgPDwg OCkgfCAoYWwgJSBiYXNlKTsKICAgICAgICAgfQotICAgICAgICBfcmVncy5fZWZsYWdzICY9IH4o RUZMR19TRnxFRkxHX1pGfEVGTEdfUEYpOwotICAgICAgICBfcmVncy5fZWZsYWdzIHw9ICFfcmVn cy5hbCA/IEVGTEdfWkYgOiAwOwotICAgICAgICBfcmVncy5fZWZsYWdzIHw9ICgoaW50OF90KV9y ZWdzLmFsIDwgMCkgPyBFRkxHX1NGIDogMDsKLSAgICAgICAgX3JlZ3MuX2VmbGFncyB8PSBldmVu X3Bhcml0eShfcmVncy5hbCkgPyBFRkxHX1BGIDogMDsKKyAgICAgICAgX3JlZ3MuX2VmbGFncyAm PSB+KFg4Nl9FRkxBR1NfU0YgfCBYODZfRUZMQUdTX1pGIHwgWDg2X0VGTEFHU19QRik7CisgICAg ICAgIF9yZWdzLl9lZmxhZ3MgfD0gIV9yZWdzLmFsID8gWDg2X0VGTEFHU19aRiA6IDA7CisgICAg ICAgIF9yZWdzLl9lZmxhZ3MgfD0gKChpbnQ4X3QpX3JlZ3MuYWwgPCAwKSA/IFg4Nl9FRkxBR1Nf U0YgOiAwOworICAgICAgICBfcmVncy5fZWZsYWdzIHw9IGV2ZW5fcGFyaXR5KF9yZWdzLmFsKSA/ IFg4Nl9FRkxBR1NfUEYgOiAwOwogICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBjYXNlIDB4 ZDY6IC8qIHNhbGMgKi8KLSAgICAgICAgX3JlZ3MuYWwgPSAoX3JlZ3MuX2VmbGFncyAmIEVGTEdf Q0YpID8gMHhmZiA6IDB4MDA7CisgICAgICAgIF9yZWdzLmFsID0gKF9yZWdzLl9lZmxhZ3MgJiBY ODZfRUZMQUdTX0NGKSA/IDB4ZmYgOiAweDAwOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2Ug MHhkNzogLyogeGxhdCAqLyB7CkBAIC00MjYzLDcgKzQyNTAsNyBAQCB4ODZfZW11bGF0ZSgKIAog ICAgIGNhc2UgMHhlMCAuLi4gMHhlMjogLyogbG9vcHsseixuen0gKi8gewogICAgICAgICB1bnNp Z25lZCBsb25nIGNvdW50ID0gZ2V0X2xvb3BfY291bnQoJl9yZWdzLCBhZF9ieXRlcyk7Ci0gICAg ICAgIGludCBkb19qbXAgPSAhKF9yZWdzLl9lZmxhZ3MgJiBFRkxHX1pGKTsgLyogbG9vcG56ICov CisgICAgICAgIGludCBkb19qbXAgPSAhKF9yZWdzLl9lZmxhZ3MgJiBYODZfRUZMQUdTX1pGKTsg LyogbG9vcG56ICovCiAKICAgICAgICAgaWYgKCBiID09IDB4ZTEgKQogICAgICAgICAgICAgZG9f am1wID0gIWRvX2ptcDsgLyogbG9vcHogKi8KQEAgLTQzNTEsNyArNDMzOCw3IEBAIHg4Nl9lbXVs YXRlKAogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgMHhmNTogLyogY21jICovCi0gICAgICAg IF9yZWdzLl9lZmxhZ3MgXj0gRUZMR19DRjsKKyAgICAgICAgX3JlZ3MuX2VmbGFncyBePSBYODZf RUZMQUdTX0NGOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgMHhmNiAuLi4gMHhmNzogLyog R3JwMyAqLwpAQCAtNDM3MSwyMSArNDM1OCwyMSBAQCB4ODZfZW11bGF0ZSgKICAgICAgICAgICAg IGVtdWxhdGVfMW9wKCJuZWciLCBkc3QsIF9yZWdzLl9lZmxhZ3MpOwogICAgICAgICAgICAgYnJl YWs7CiAgICAgICAgIGNhc2UgNDogLyogbXVsICovCi0gICAgICAgICAgICBfcmVncy5fZWZsYWdz ICY9IH4oRUZMR19PRnxFRkxHX0NGKTsKKyAgICAgICAgICAgIF9yZWdzLl9lZmxhZ3MgJj0gfihY ODZfRUZMQUdTX09GIHwgWDg2X0VGTEFHU19DRik7CiAgICAgICAgICAgICBzd2l0Y2ggKCBkc3Qu Ynl0ZXMgKQogICAgICAgICAgICAgewogICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAg ICAgIGRzdC52YWwgPSBfcmVncy5hbDsKICAgICAgICAgICAgICAgICBkc3QudmFsICo9IHNyYy52 YWw7CiAgICAgICAgICAgICAgICAgaWYgKCAodWludDhfdClkc3QudmFsICE9ICh1aW50MTZfdClk c3QudmFsICkKLSAgICAgICAgICAgICAgICAgICAgX3JlZ3MuX2VmbGFncyB8PSBFRkxHX09GfEVG TEdfQ0Y7CisgICAgICAgICAgICAgICAgICAgIF9yZWdzLl9lZmxhZ3MgfD0gWDg2X0VGTEFHU19P RiB8IFg4Nl9FRkxBR1NfQ0Y7CiAgICAgICAgICAgICAgICAgZHN0LmJ5dGVzID0gMjsKICAgICAg ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICAgICBk c3QudmFsID0gX3JlZ3MuYXg7CiAgICAgICAgICAgICAgICAgZHN0LnZhbCAqPSBzcmMudmFsOwog ICAgICAgICAgICAgICAgIGlmICggKHVpbnQxNl90KWRzdC52YWwgIT0gKHVpbnQzMl90KWRzdC52 YWwgKQotICAgICAgICAgICAgICAgICAgICBfcmVncy5fZWZsYWdzIHw9IEVGTEdfT0Z8RUZMR19D RjsKKyAgICAgICAgICAgICAgICAgICAgX3JlZ3MuX2VmbGFncyB8PSBYODZfRUZMQUdTX09GIHwg WDg2X0VGTEFHU19DRjsKICAgICAgICAgICAgICAgICBfcmVncy5keCA9IGRzdC52YWwgPj4gMTY7 CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAjaWZkZWYgX194ODZfNjRfXwpAQCAtNDM5Myw3ICs0 MzgwLDcgQEAgeDg2X2VtdWxhdGUoCiAgICAgICAgICAgICAgICAgZHN0LnZhbCA9IF9yZWdzLl9l YXg7CiAgICAgICAgICAgICAgICAgZHN0LnZhbCAqPSBzcmMudmFsOwogICAgICAgICAgICAgICAg IGlmICggKHVpbnQzMl90KWRzdC52YWwgIT0gZHN0LnZhbCApCi0gICAgICAgICAgICAgICAgICAg IF9yZWdzLl9lZmxhZ3MgfD0gRUZMR19PRnxFRkxHX0NGOworICAgICAgICAgICAgICAgICAgICBf cmVncy5fZWZsYWdzIHw9IFg4Nl9FRkxBR1NfT0YgfCBYODZfRUZMQUdTX0NGOwogICAgICAgICAg ICAgICAgIF9yZWdzLnJkeCA9IGRzdC52YWwgPj4gMzI7CiAgICAgICAgICAgICAgICAgYnJlYWs7 CiAjZW5kaWYKQEAgLTQ0MDEsNyArNDM4OCw3IEBAIHg4Nl9lbXVsYXRlKAogICAgICAgICAgICAg ICAgIHVbMF0gPSBzcmMudmFsOwogICAgICAgICAgICAgICAgIHVbMV0gPSBfcmVncy5yKGF4KTsK ICAgICAgICAgICAgICAgICBpZiAoIG11bF9kYmwodSkgKQotICAgICAgICAgICAgICAgICAgICBf cmVncy5fZWZsYWdzIHw9IEVGTEdfT0Z8RUZMR19DRjsKKyAgICAgICAgICAgICAgICAgICAgX3Jl Z3MuX2VmbGFncyB8PSBYODZfRUZMQUdTX09GIHwgWDg2X0VGTEFHU19DRjsKICAgICAgICAgICAg ICAgICBfcmVncy5yKGR4KSA9IHVbMV07CiAgICAgICAgICAgICAgICAgZHN0LnZhbCA9IHVbMF07 CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC00NDA5LDEzICs0Mzk2LDEzIEBAIHg4Nl9lbXVs YXRlKAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgNTogLyogaW11bCAqLwogICAg ICAgICBpbXVsOgotICAgICAgICAgICAgX3JlZ3MuX2VmbGFncyAmPSB+KEVGTEdfT0Z8RUZMR19D Rik7CisgICAgICAgICAgICBfcmVncy5fZWZsYWdzICY9IH4oWDg2X0VGTEFHU19PRiB8IFg4Nl9F RkxBR1NfQ0YpOwogICAgICAgICAgICAgc3dpdGNoICggZHN0LmJ5dGVzICkKICAgICAgICAgICAg IHsKICAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAgICBkc3QudmFsID0gKGludDhf dClzcmMudmFsICogKGludDhfdClfcmVncy5hbDsKICAgICAgICAgICAgICAgICBpZiAoIChpbnQ4 X3QpZHN0LnZhbCAhPSAoaW50MTZfdClkc3QudmFsICkKLSAgICAgICAgICAgICAgICAgICAgX3Jl Z3MuX2VmbGFncyB8PSBFRkxHX09GfEVGTEdfQ0Y7CisgICAgICAgICAgICAgICAgICAgIF9yZWdz Ll9lZmxhZ3MgfD0gWDg2X0VGTEFHU19PRiB8IFg4Nl9FRkxBR1NfQ0Y7CiAgICAgICAgICAgICAg ICAgQVNTRVJUKGIgPiAweDZiKTsKICAgICAgICAgICAgICAgICBkc3QuYnl0ZXMgPSAyOwogICAg ICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDQyMyw3ICs0NDEwLDcgQEAgeDg2X2VtdWxhdGUoCiAg ICAgICAgICAgICAgICAgZHN0LnZhbCA9ICgodWludDMyX3QpKGludDE2X3Qpc3JjLnZhbCAqCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAodWludDMyX3QpKGludDE2X3QpX3JlZ3MuYXgpOwog ICAgICAgICAgICAgICAgIGlmICggKGludDE2X3QpZHN0LnZhbCAhPSAoaW50MzJfdClkc3QudmFs ICkKLSAgICAgICAgICAgICAgICAgICAgX3JlZ3MuX2VmbGFncyB8PSBFRkxHX09GfEVGTEdfQ0Y7 CisgICAgICAgICAgICAgICAgICAgIF9yZWdzLl9lZmxhZ3MgfD0gWDg2X0VGTEFHU19PRiB8IFg4 Nl9FRkxBR1NfQ0Y7CiAgICAgICAgICAgICAgICAgaWYgKCBiID4gMHg2YiApCiAgICAgICAgICAg ICAgICAgICAgIF9yZWdzLmR4ID0gZHN0LnZhbCA+PiAxNjsKICAgICAgICAgICAgICAgICBicmVh azsKQEAgLTQ0MzIsNyArNDQxOSw3IEBAIHg4Nl9lbXVsYXRlKAogICAgICAgICAgICAgICAgIGRz dC52YWwgPSAoKHVpbnQ2NF90KShpbnQzMl90KXNyYy52YWwgKgogICAgICAgICAgICAgICAgICAg ICAgICAgICAgKHVpbnQ2NF90KShpbnQzMl90KV9yZWdzLl9lYXgpOwogICAgICAgICAgICAgICAg IGlmICggKGludDMyX3QpZHN0LnZhbCAhPSBkc3QudmFsICkKLSAgICAgICAgICAgICAgICAgICAg X3JlZ3MuX2VmbGFncyB8PSBFRkxHX09GfEVGTEdfQ0Y7CisgICAgICAgICAgICAgICAgICAgIF9y ZWdzLl9lZmxhZ3MgfD0gWDg2X0VGTEFHU19PRiB8IFg4Nl9FRkxBR1NfQ0Y7CiAgICAgICAgICAg ICAgICAgaWYgKCBiID4gMHg2YiApCiAgICAgICAgICAgICAgICAgICAgIF9yZWdzLnJkeCA9IGRz dC52YWwgPj4gMzI7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC00NDQxLDcgKzQ0MjgsNyBA QCB4ODZfZW11bGF0ZSgKICAgICAgICAgICAgICAgICB1WzBdID0gc3JjLnZhbDsKICAgICAgICAg ICAgICAgICB1WzFdID0gX3JlZ3MucihheCk7CiAgICAgICAgICAgICAgICAgaWYgKCBpbXVsX2Ri bCh1KSApCi0gICAgICAgICAgICAgICAgICAgIF9yZWdzLl9lZmxhZ3MgfD0gRUZMR19PRnxFRkxH X0NGOworICAgICAgICAgICAgICAgICAgICBfcmVncy5fZWZsYWdzIHw9IFg4Nl9FRkxBR1NfT0Yg fCBYODZfRUZMQUdTX0NGOwogICAgICAgICAgICAgICAgIGlmICggYiA+IDB4NmIgKQogICAgICAg ICAgICAgICAgICAgICBfcmVncy5yKGR4KSA9IHVbMV07CiAgICAgICAgICAgICAgICAgZHN0LnZh bCA9IHVbMF07CkBAIC00NTQyLDQ2ICs0NTI5LDQ3IEBAIHg4Nl9lbXVsYXRlKAogICAgICAgICBi cmVhazsKIAogICAgIGNhc2UgMHhmODogLyogY2xjICovCi0gICAgICAgIF9yZWdzLl9lZmxhZ3Mg Jj0gfkVGTEdfQ0Y7CisgICAgICAgIF9yZWdzLl9lZmxhZ3MgJj0gflg4Nl9FRkxBR1NfQ0Y7CiAg ICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSAweGY5OiAvKiBzdGMgKi8KLSAgICAgICAgX3JlZ3Mu X2VmbGFncyB8PSBFRkxHX0NGOworICAgICAgICBfcmVncy5fZWZsYWdzIHw9IFg4Nl9FRkxBR1Nf Q0Y7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSAweGZhOiAvKiBjbGkgKi8KICAgICAgICAg aWYgKCBtb2RlX2lvcGwoKSApCi0gICAgICAgICAgICBfcmVncy5fZWZsYWdzICY9IH5FRkxHX0lG OworICAgICAgICAgICAgX3JlZ3MuX2VmbGFncyAmPSB+WDg2X0VGTEFHU19JRjsKICAgICAgICAg ZWxzZQogICAgICAgICB7CiAgICAgICAgICAgICBnZW5lcmF0ZV9leGNlcHRpb25faWYoIW1vZGVf dmlmKCksIEVYQ19HUCwgMCk7Ci0gICAgICAgICAgICBfcmVncy5fZWZsYWdzICY9IH5FRkxHX1ZJ RjsKKyAgICAgICAgICAgIF9yZWdzLl9lZmxhZ3MgJj0gflg4Nl9FRkxBR1NfVklGOwogICAgICAg ICB9CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSAweGZiOiAvKiBzdGkgKi8KICAgICAgICAg aWYgKCBtb2RlX2lvcGwoKSApCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmICggIShfcmVncy5f ZWZsYWdzICYgRUZMR19JRikgKQorICAgICAgICAgICAgaWYgKCAhKF9yZWdzLl9lZmxhZ3MgJiBY ODZfRUZMQUdTX0lGKSApCiAgICAgICAgICAgICAgICAgY3R4dC0+cmV0aXJlLnN0aSA9IHRydWU7 Ci0gICAgICAgICAgICBfcmVncy5fZWZsYWdzIHw9IEVGTEdfSUY7CisgICAgICAgICAgICBfcmVn cy5fZWZsYWdzIHw9IFg4Nl9FRkxBR1NfSUY7CiAgICAgICAgIH0KICAgICAgICAgZWxzZQogICAg ICAgICB7Ci0gICAgICAgICAgICBnZW5lcmF0ZV9leGNlcHRpb25faWYoKF9yZWdzLl9lZmxhZ3Mg JiBFRkxHX1ZJUCkgfHwgIW1vZGVfdmlmKCksCisgICAgICAgICAgICBnZW5lcmF0ZV9leGNlcHRp b25faWYoKF9yZWdzLl9lZmxhZ3MgJiBYODZfRUZMQUdTX1ZJUCkgfHwKKwkJCQkgICFtb2RlX3Zp ZigpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVYQ19HUCwgMCk7Ci0gICAg ICAgICAgICBpZiAoICEoX3JlZ3MuX2VmbGFncyAmIEVGTEdfVklGKSApCisgICAgICAgICAgICBp ZiAoICEoX3JlZ3MuX2VmbGFncyAmIFg4Nl9FRkxBR1NfVklGKSApCiAgICAgICAgICAgICAgICAg Y3R4dC0+cmV0aXJlLnN0aSA9IHRydWU7Ci0gICAgICAgICAgICBfcmVncy5fZWZsYWdzIHw9IEVG TEdfVklGOworICAgICAgICAgICAgX3JlZ3MuX2VmbGFncyB8PSBYODZfRUZMQUdTX1ZJRjsKICAg ICAgICAgfQogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgMHhmYzogLyogY2xkICovCi0gICAg ICAgIF9yZWdzLl9lZmxhZ3MgJj0gfkVGTEdfREY7CisgICAgICAgIF9yZWdzLl9lZmxhZ3MgJj0g flg4Nl9FRkxBR1NfREY7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSAweGZkOiAvKiBzdGQg Ki8KLSAgICAgICAgX3JlZ3MuX2VmbGFncyB8PSBFRkxHX0RGOworICAgICAgICBfcmVncy5fZWZs YWdzIHw9IFg4Nl9FRkxBR1NfREY7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSAweGZlOiAv KiBHcnA0ICovCkBAIC00NjQzLDcgKzQ2MzEsNyBAQCB4ODZfZW11bGF0ZSgKICAgICAgICAgICAg ICAgICBnb3RvIGRvbmU7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSA0OiAvKiB2 ZXJyIC8gdmVydyAqLwotICAgICAgICAgICAgX3JlZ3MuX2VmbGFncyAmPSB+RUZMR19aRjsKKyAg ICAgICAgICAgIF9yZWdzLl9lZmxhZ3MgJj0gflg4Nl9FRkxBR1NfWkY7CiAgICAgICAgICAgICBz d2l0Y2ggKCByYyA9IHByb3Rtb2RlX2xvYWRfc2VnKHg4Nl9zZWdfbm9uZSwgc3JjLnZhbCwgZmFs c2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzcmVnLCBj dHh0LCBvcHMpICkKICAgICAgICAgICAgIHsKQEAgLTQ2NTEsNyArNDYzOSw3IEBAIHg4Nl9lbXVs YXRlKAogICAgICAgICAgICAgICAgIGlmICggc3JlZy5hdHRyLmZpZWxkcy5zICYmCiAgICAgICAg ICAgICAgICAgICAgICAoKG1vZHJtX3JlZyAmIDEpID8gKChzcmVnLmF0dHIuZmllbGRzLnR5cGUg JiAweGEpID09IDB4MikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAo KHNyZWcuYXR0ci5maWVsZHMudHlwZSAmIDB4YSkgIT0gMHg4KSkgKQotICAgICAgICAgICAgICAg ICAgICBfcmVncy5fZWZsYWdzIHw9IEVGTEdfWkY7CisgICAgICAgICAgICAgICAgICAgIF9yZWdz Ll9lZmxhZ3MgfD0gWDg2X0VGTEFHU19aRjsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg ICAgICAgIGNhc2UgWDg2RU1VTF9FWENFUFRJT046CiAgICAgICAgICAgICAgICAgaWYgKCBjdHh0 LT5ldmVudF9wZW5kaW5nICkKQEAgLTQ2ODEsOSArNDY2OSw5IEBAIHg4Nl9lbXVsYXRlKAogICAg ICAgICAgICAgdmNwdV9tdXN0X2hhdmUoc21hcCk7CiAgICAgICAgICAgICBnZW5lcmF0ZV9leGNl cHRpb25faWYodmV4LnBmeCB8fCAhbW9kZV9yaW5nMCgpLCBFWENfVUQpOwogCi0gICAgICAgICAg ICBfcmVncy5fZWZsYWdzICY9IH5FRkxHX0FDOworICAgICAgICAgICAgX3JlZ3MuX2VmbGFncyAm PSB+WDg2X0VGTEFHU19BQzsKICAgICAgICAgICAgIGlmICggbW9kcm0gPT0gMHhjYiApCi0gICAg ICAgICAgICAgICAgX3JlZ3MuX2VmbGFncyB8PSBFRkxHX0FDOworICAgICAgICAgICAgICAgIF9y ZWdzLl9lZmxhZ3MgfD0gWDg2X0VGTEFHU19BQzsKICAgICAgICAgICAgIGdvdG8gY29tcGxldGVf aW5zbjsKIAogI2lmZGVmIF9fWEVOX18KQEAgLTQ3MTcsNyArNDcwNSw3IEBAIHg4Nl9lbXVsYXRl KAogICAgICAgICAgICAgZ2VuZXJhdGVfZXhjZXB0aW9uX2lmKCF2Y3B1X2hhc19ydG0oKSAmJiAh dmNwdV9oYXNfaGxlKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVhDX1VE KTsKICAgICAgICAgICAgIC8qIE5laXRoZXIgSExFIG5vciBSVE0gY2FuIGJlIGFjdGl2ZSB3aGVu IHdlIGdldCBoZXJlLiAqLwotICAgICAgICAgICAgX3JlZ3MuX2VmbGFncyB8PSBFRkxHX1pGOwor ICAgICAgICAgICAgX3JlZ3MuX2VmbGFncyB8PSBYODZfRUZMQUdTX1pGOwogICAgICAgICAgICAg Z290byBjb21wbGV0ZV9pbnNuOwogCiAgICAgICAgIGNhc2UgMHhkZjogLyogaW52bHBnYSAqLwpA QCAtNDg2OCw3ICs0ODU2LDcgQEAgeDg2X2VtdWxhdGUoCiAKICAgICBjYXNlIFg4NkVNVUxfT1BD KDB4MGYsIDB4MDIpOiAvKiBsYXIgKi8KICAgICAgICAgZ2VuZXJhdGVfZXhjZXB0aW9uX2lmKCFp bl9wcm90bW9kZShjdHh0LCBvcHMpLCBFWENfVUQpOwotICAgICAgICBfcmVncy5fZWZsYWdzICY9 IH5FRkxHX1pGOworICAgICAgICBfcmVncy5fZWZsYWdzICY9IH5YODZfRUZMQUdTX1pGOwogICAg ICAgICBzd2l0Y2ggKCByYyA9IHByb3Rtb2RlX2xvYWRfc2VnKHg4Nl9zZWdfbm9uZSwgc3JjLnZh bCwgZmFsc2UsICZzcmVnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGN0eHQsIG9wcykgKQogICAgICAgICB7CkBAIC00ODg4LDEyICs0ODc2LDEyIEBAIHg4Nl9lbXVs YXRlKAogICAgICAgICAgICAgICAgIGNhc2UgMHgwOTogLyogYXZhaWxhYmxlIDMyLzY0LWJpdCBU U1MgKi8KICAgICAgICAgICAgICAgICBjYXNlIDB4MGI6IC8qIGJ1c3kgMzIvNjQtYml0IFRTUyAq LwogICAgICAgICAgICAgICAgIGNhc2UgMHgwYzogLyogMzIvNjQtYml0IGNhbGwgZ2F0ZSAqLwot ICAgICAgICAgICAgICAgICAgICBfcmVncy5fZWZsYWdzIHw9IEVGTEdfWkY7CisgICAgICAgICAg ICAgICAgICAgIF9yZWdzLl9lZmxhZ3MgfD0gWDg2X0VGTEFHU19aRjsKICAgICAgICAgICAgICAg ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAg ICAgZWxzZQotICAgICAgICAgICAgICAgIF9yZWdzLl9lZmxhZ3MgfD0gRUZMR19aRjsKKyAgICAg ICAgICAgICAgICBfcmVncy5fZWZsYWdzIHw9IFg4Nl9FRkxBR1NfWkY7CiAgICAgICAgICAgICBi cmVhazsKICAgICAgICAgY2FzZSBYODZFTVVMX0VYQ0VQVElPTjoKICAgICAgICAgICAgIGlmICgg Y3R4dC0+ZXZlbnRfcGVuZGluZyApCkBAIC00OTA2LDcgKzQ4OTQsNyBAQCB4ODZfZW11bGF0ZSgK ICAgICAgICAgICAgIHJjID0gWDg2RU1VTF9PS0FZOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg ICAgIH0KLSAgICAgICAgaWYgKCBfcmVncy5fZWZsYWdzICYgRUZMR19aRiApCisgICAgICAgIGlm ICggX3JlZ3MuX2VmbGFncyAmIFg4Nl9FRkxBR1NfWkYgKQogICAgICAgICAgICAgZHN0LnZhbCA9 ICgoc3JlZy5hdHRyLmJ5dGVzICYgMHhmZikgPDwgOCkgfAogICAgICAgICAgICAgICAgICAgICAg ICgoc3JlZy5saW1pdCA+PiAoc3JlZy5hdHRyLmZpZWxkcy5nID8gMTIgOiAwKSkgJgogICAgICAg ICAgICAgICAgICAgICAgICAweGYwMDAwKSB8CkBAIC00OTE3LDcgKzQ5MDUsNyBAQCB4ODZfZW11 bGF0ZSgKIAogICAgIGNhc2UgWDg2RU1VTF9PUEMoMHgwZiwgMHgwMyk6IC8qIGxzbCAqLwogICAg ICAgICBnZW5lcmF0ZV9leGNlcHRpb25faWYoIWluX3Byb3Rtb2RlKGN0eHQsIG9wcyksIEVYQ19V RCk7Ci0gICAgICAgIF9yZWdzLl9lZmxhZ3MgJj0gfkVGTEdfWkY7CisgICAgICAgIF9yZWdzLl9l ZmxhZ3MgJj0gflg4Nl9FRkxBR1NfWkY7CiAgICAgICAgIHN3aXRjaCAoIHJjID0gcHJvdG1vZGVf bG9hZF9zZWcoeDg2X3NlZ19ub25lLCBzcmMudmFsLCBmYWxzZSwgJnNyZWcsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4dCwgb3BzKSApCiAgICAgICAgIHsKQEAg LTQ5MzQsMTIgKzQ5MjIsMTIgQEAgeDg2X2VtdWxhdGUoCiAgICAgICAgICAgICAgICAgY2FzZSAw eDAyOiAvKiBMRFQgKi8KICAgICAgICAgICAgICAgICBjYXNlIDB4MDk6IC8qIGF2YWlsYWJsZSAz Mi82NC1iaXQgVFNTICovCiAgICAgICAgICAgICAgICAgY2FzZSAweDBiOiAvKiBidXN5IDMyLzY0 LWJpdCBUU1MgKi8KLSAgICAgICAgICAgICAgICAgICAgX3JlZ3MuX2VmbGFncyB8PSBFRkxHX1pG OworICAgICAgICAgICAgICAgICAgICBfcmVncy5fZWZsYWdzIHw9IFg4Nl9FRkxBR1NfWkY7CiAg ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg IH0KICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBfcmVncy5fZWZsYWdzIHw9IEVG TEdfWkY7CisgICAgICAgICAgICAgICAgX3JlZ3MuX2VmbGFncyB8PSBYODZfRUZMQUdTX1pGOwog ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgWDg2RU1VTF9FWENFUFRJT046CiAgICAg ICAgICAgICBpZiAoIGN0eHQtPmV2ZW50X3BlbmRpbmcgKQpAQCAtNDk1Miw3ICs0OTQwLDcgQEAg eDg2X2VtdWxhdGUoCiAgICAgICAgICAgICByYyA9IFg4NkVNVUxfT0tBWTsKICAgICAgICAgICAg IGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGlmICggX3JlZ3MuX2VmbGFncyAmIEVGTEdfWkYg KQorICAgICAgICBpZiAoIF9yZWdzLl9lZmxhZ3MgJiBYODZfRUZMQUdTX1pGICkKICAgICAgICAg ICAgIGRzdC52YWwgPSBzcmVnLmxpbWl0OwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBkc3Qu dHlwZSA9IE9QX05PTkU7CkBAIC00OTg4LDcgKzQ5NzYsNyBAQCB4ODZfZW11bGF0ZSgKICAgICAg ICAgICAgIGNzLmF0dHIuYnl0ZXMgPSAweGE5YjsgLyogTCtEQitQK1MrQ29kZSAqLwogCiAgICAg ICAgICAgICBfcmVncy5yY3ggPSBfcmVncy5yaXA7Ci0gICAgICAgICAgICBfcmVncy5yMTEgPSBf cmVncy5fZWZsYWdzICYgfkVGTEdfUkY7CisgICAgICAgICAgICBfcmVncy5yMTEgPSBfcmVncy5f ZWZsYWdzICYgflg4Nl9FRkxBR1NfUkY7CiAKICAgICAgICAgICAgIGlmICggKHJjID0gb3BzLT5y ZWFkX21zcihtb2RlXzY0Yml0KCkgPyBNU1JfTFNUQVIgOiBNU1JfQ1NUQVIsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1zcl9jb250ZW50LCBjdHh0KSkgIT0gMCApCkBA IC00OTk3LDcgKzQ5ODUsNyBAQCB4ODZfZW11bGF0ZSgKIAogICAgICAgICAgICAgaWYgKCAocmMg PSBvcHMtPnJlYWRfbXNyKE1TUl9GTUFTSywgJm1zcl9jb250ZW50LCBjdHh0KSkgIT0gMCApCiAg ICAgICAgICAgICAgICAgZ290byBkb25lOwotICAgICAgICAgICAgX3JlZ3MuX2VmbGFncyAmPSB+ KG1zcl9jb250ZW50IHwgRUZMR19SRik7CisgICAgICAgICAgICBfcmVncy5fZWZsYWdzICY9IH4o bXNyX2NvbnRlbnQgfCBYODZfRUZMQUdTX1JGKTsKICAgICAgICAgfQogICAgICAgICBlbHNlCiAj ZW5kaWYKQEAgLTUwMDYsNyArNDk5NCw3IEBAIHg4Nl9lbXVsYXRlKAogCiAgICAgICAgICAgICBf cmVncy5yKGN4KSA9IF9yZWdzLl9laXA7CiAgICAgICAgICAgICBfcmVncy5fZWlwID0gbXNyX2Nv bnRlbnQ7Ci0gICAgICAgICAgICBfcmVncy5fZWZsYWdzICY9IH4oRUZMR19WTSB8IEVGTEdfSUYg fCBFRkxHX1JGKTsKKyAgICAgICAgICAgIF9yZWdzLl9lZmxhZ3MgJj0gfihYODZfRUZMQUdTX1ZN IHwgWDg2X0VGTEFHU19JRiB8IFg4Nl9FRkxBR1NfUkYpOwogICAgICAgICB9CiAKICAgICAgICAg ZmFpbF9pZihvcHMtPndyaXRlX3NlZ21lbnQgPT0gTlVMTCk7CkBAIC01MDE2LDIwICs1MDA0LDIw IEBAIHg4Nl9lbXVsYXRlKAogCiAgICAgICAgIC8qCiAgICAgICAgICAqIFNZU0NBTEwgKHVubGlr ZSBtb3N0IGluc3RydWN0aW9ucykgZXZhbHVhdGVzIGl0cyBzaW5nbGVzdGVwIGFjdGlvbgotICAg ICAgICAgKiBiYXNlZCBvbiB0aGUgcmVzdWx0aW5nIEVGTEdfVEYsIG5vdCB0aGUgc3RhcnRpbmcg RUZMR19URi4KKyAgICAgICAgICogYmFzZWQgb24gdGhlIHJlc3VsdGluZyBFRkxBR1MuVEYsIG5v dCB0aGUgc3RhcnRpbmcgRUZMQUdTLlRGLgogICAgICAgICAgKgogICAgICAgICAgKiBBcyB0aGUg I0RCIGlzIHJhaXNlZCBhZnRlciB0aGUgQ1BMIGNoYW5nZSBhbmQgYmVmb3JlIHRoZSBPUyBjYW4K ICAgICAgICAgICogc3dpdGNoIHN0YWNrLCBpdCBpcyBhIGxhcmdlIHJpc2sgZm9yIHByaXZpbGVn ZSBlc2NhbGF0aW9uLgogICAgICAgICAgKgotICAgICAgICAgKiA2NGJpdCBrZXJuZWxzIHNob3Vs ZCBtYXNrIEVGTEdfVEYgaW4gTVNSX0ZNQVNLIHRvIGF2b2lkIGFueQorICAgICAgICAgKiA2NGJp dCBrZXJuZWxzIHNob3VsZCBtYXNrIEVGTEFHUy5URiBpbiBNU1JfRk1BU0sgdG8gYXZvaWQgYW55 CiAgICAgICAgICAqIHZ1bG5lcmFiaWxpdHkuICBSdW5uaW5nIHRoZSAjREIgaGFuZGxlciBvbiBh biBJU1Qgc3RhY2sgaXMgYWxzbyBhCiAgICAgICAgICAqIG1pdGlnYXRpb24uCiAgICAgICAgICAq Ci0gICAgICAgICAqIDMyYml0IGtlcm5lbHMgaGF2ZSBubyBhYmlsaXR5IHRvIG1hc2sgRUZMR19U RiBhdCBhbGwuICBUaGVpciBvbmx5Ci0gICAgICAgICAqIG1pdGlnYXRpb24gaXMgdG8gdXNlIGEg dGFzayBnYXRlIGZvciBoYW5kbGluZyAjREIgKG9yIHRvIG5vdCB1c2UKLSAgICAgICAgICogZW5h YmxlIEVGRVIuU0NFIHRvIHN0YXJ0IHdpdGgpLgorICAgICAgICAgKiAzMmJpdCBrZXJuZWxzIGhh dmUgbm8gYWJpbGl0eSB0byBtYXNrIEVGTEFHUy5URiBhdCBhbGwuCisgICAgICAgICAqIFRoZWly IG9ubHkgbWl0aWdhdGlvbiBpcyB0byB1c2UgYSB0YXNrIGdhdGUgZm9yIGhhbmRsaW5nCisgICAg ICAgICAqICNEQiAob3IgdG8gbm90IHVzZSBlbmFibGUgRUZFUi5TQ0UgdG8gc3RhcnQgd2l0aCku CiAgICAgICAgICAqLwotICAgICAgICBzaW5nbGVzdGVwID0gX3JlZ3MuX2VmbGFncyAmIEVGTEdf VEY7CisgICAgICAgIHNpbmdsZXN0ZXAgPSBfcmVncy5fZWZsYWdzICYgWDg2X0VGTEFHU19URjsK IAogICAgICAgICBicmVhazsKICAgICB9CkBAIC01MjYwLDcgKzUyNDgsNyBAQCB4ODZfZW11bGF0 ZSgKICAgICAgICAgaWYgKCBsbSA8IDAgKQogICAgICAgICAgICAgZ290byBjYW5ub3RfZW11bGF0 ZTsKIAotICAgICAgICBfcmVncy5fZWZsYWdzICY9IH4oRUZMR19WTSB8IEVGTEdfSUYgfCBFRkxH X1JGKTsKKyAgICAgICAgX3JlZ3MuX2VmbGFncyAmPSB+KFg4Nl9FRkxBR1NfVk0gfCBYODZfRUZM QUdTX0lGIHwgWDg2X0VGTEFHU19SRik7CiAKICAgICAgICAgY3Muc2VsID0gbXNyX2NvbnRlbnQg JiB+MzsgLyogU0VMRUNUT1JfUlBMX01BU0sgKi8KICAgICAgICAgY3MuYmFzZSA9IDA7ICAgLyog ZmxhdCBzZWdtZW50ICovCkBAIC01Mjg2LDcgKzUyNzQsNyBAQCB4ODZfZW11bGF0ZSgKICAgICAg ICAgICAgIGdvdG8gZG9uZTsKICAgICAgICAgX3JlZ3MucihzcCkgPSBsbSA/IG1zcl9jb250ZW50 IDogKHVpbnQzMl90KW1zcl9jb250ZW50OwogCi0gICAgICAgIHNpbmdsZXN0ZXAgPSBfcmVncy5f ZWZsYWdzICYgRUZMR19URjsKKyAgICAgICAgc2luZ2xlc3RlcCA9IF9yZWdzLl9lZmxhZ3MgJiBY ODZfRUZMQUdTX1RGOwogICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTUzMjgsNyArNTMxNiw3 IEBAIHg4Nl9lbXVsYXRlKAogICAgICAgICBfcmVncy5yKGlwKSA9IG9wX2J5dGVzID09IDggPyBf cmVncy5yKGR4KSA6IF9yZWdzLl9lZHg7CiAgICAgICAgIF9yZWdzLnIoc3ApID0gb3BfYnl0ZXMg PT0gOCA/IF9yZWdzLnIoY3gpIDogX3JlZ3MuX2VjeDsKIAotICAgICAgICBzaW5nbGVzdGVwID0g X3JlZ3MuX2VmbGFncyAmIEVGTEdfVEY7CisgICAgICAgIHNpbmdsZXN0ZXAgPSBfcmVncy5fZWZs YWdzICYgWDg2X0VGTEFHU19URjsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC01NTE3LDE0 ICs1NTA1LDE1IEBAIHg4Nl9lbXVsYXRlKAogICAgICAgICAgICAgICAgICAgICgoZHN0Lm9yaWdf dmFsIDw8IHNoaWZ0KSB8CiAgICAgICAgICAgICAgICAgICAgICgoc3JjLnZhbCA+PiAod2lkdGgg LSBzaGlmdCkpICYgKCgxdWxsIDw8IHNoaWZ0KSAtIDEpKSkpOwogICAgICAgICBkc3QudmFsID0g dHJ1bmNhdGVfd29yZChkc3QudmFsLCBkc3QuYnl0ZXMpOwotICAgICAgICBfcmVncy5fZWZsYWdz ICY9IH4oRUZMR19PRnxFRkxHX1NGfEVGTEdfWkZ8RUZMR19QRnxFRkxHX0NGKTsKKyAgICAgICAg X3JlZ3MuX2VmbGFncyAmPSB+KFg4Nl9FRkxBR1NfT0YgfCBYODZfRUZMQUdTX1NGIHwgWDg2X0VG TEFHU19aRiB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICBYODZfRUZMQUdTX1BGIHwgWDg2 X0VGTEFHU19DRik7CiAgICAgICAgIGlmICggKGRzdC52YWwgPj4gKChiICYgOCkgPyAoc2hpZnQg LSAxKSA6ICh3aWR0aCAtIHNoaWZ0KSkpICYgMSApCi0gICAgICAgICAgICBfcmVncy5fZWZsYWdz IHw9IEVGTEdfQ0Y7CisgICAgICAgICAgICBfcmVncy5fZWZsYWdzIHw9IFg4Nl9FRkxBR1NfQ0Y7 CiAgICAgICAgIGlmICggKChkc3QudmFsIF4gZHN0Lm9yaWdfdmFsKSA+PiAod2lkdGggLSAxKSkg JiAxICkKLSAgICAgICAgICAgIF9yZWdzLl9lZmxhZ3MgfD0gRUZMR19PRjsKLSAgICAgICAgX3Jl Z3MuX2VmbGFncyB8PSAoKGRzdC52YWwgPj4gKHdpZHRoIC0gMSkpICYgMSkgPyBFRkxHX1NGIDog MDsKLSAgICAgICAgX3JlZ3MuX2VmbGFncyB8PSAoZHN0LnZhbCA9PSAwKSA/IEVGTEdfWkYgOiAw OwotICAgICAgICBfcmVncy5fZWZsYWdzIHw9IGV2ZW5fcGFyaXR5KGRzdC52YWwpID8gRUZMR19Q RiA6IDA7CisgICAgICAgICAgICBfcmVncy5fZWZsYWdzIHw9IFg4Nl9FRkxBR1NfT0Y7CisgICAg ICAgIF9yZWdzLl9lZmxhZ3MgfD0gKChkc3QudmFsID4+ICh3aWR0aCAtIDEpKSAmIDEpID8gWDg2 X0VGTEFHU19TRiA6IDA7CisgICAgICAgIF9yZWdzLl9lZmxhZ3MgfD0gKGRzdC52YWwgPT0gMCkg PyBYODZfRUZMQUdTX1pGIDogMDsKKyAgICAgICAgX3JlZ3MuX2VmbGFncyB8PSBldmVuX3Bhcml0 eShkc3QudmFsKSA/IFg4Nl9FRkxBR1NfUEYgOiAwOwogICAgICAgICBicmVhazsKICAgICB9CiAK QEAgLTU2MjQsNyArNTYxMyw3IEBAIHg4Nl9lbXVsYXRlKAogICAgICAgICBzcmMudmFsID0gX3Jl Z3MucihheCk7CiAgICAgICAgIC8qIGNtcDogJSVlYXggLSBkc3QgPT0+IGRzdCBhbmQgc3JjIHN3 YXBwZWQgZm9yIG1hY3JvIGludm9jYXRpb24gKi8KICAgICAgICAgZW11bGF0ZV8yb3BfU3JjVigi Y21wIiwgZHN0LCBzcmMsIF9yZWdzLl9lZmxhZ3MpOwotICAgICAgICBpZiAoIF9yZWdzLl9lZmxh Z3MgJiBFRkxHX1pGICkKKyAgICAgICAgaWYgKCBfcmVncy5fZWZsYWdzICYgWDg2X0VGTEFHU19a RiApCiAgICAgICAgIHsKICAgICAgICAgICAgIC8qIFN1Y2Nlc3M6IHdyaXRlIGJhY2sgdG8gbWVt b3J5LiAqLwogICAgICAgICAgICAgZHN0LnZhbCA9IHNyYy5vcmlnX3ZhbDsKQEAgLTU2NjMsNyAr NTY1Miw3IEBAIHg4Nl9lbXVsYXRlKAogICAgICAgICBhc20gKCAicG9wY250ICUxLCUwIiA6ICI9 ciIgKGRzdC52YWwpIDogInJtIiAoc3JjLnZhbCkgKTsKICAgICAgICAgX3JlZ3MuX2VmbGFncyAm PSB+RUZMQUdTX01BU0s7CiAgICAgICAgIGlmICggIWRzdC52YWwgKQotICAgICAgICAgICAgX3Jl Z3MuX2VmbGFncyB8PSBFRkxHX1pGOworICAgICAgICAgICAgX3JlZ3MuX2VmbGFncyB8PSBYODZf RUZMQUdTX1pGOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgWDg2RU1VTF9PUEMoMHgwZiwg MHhiYSk6IC8qIEdycDggKi8KQEAgLTU2ODgsMjEgKzU2NzcsMjEgQEAgeDg2X2VtdWxhdGUoCiAg ICAgICAgIGFzbSAoICJic2YgJTIsJTAiIEFTTV9GTEFHX09VVCgsICI7IHNldHogJTEiKQogICAg ICAgICAgICAgICA6ICI9ciIgKGRzdC52YWwpLCBBU01fRkxBR19PVVQoIj1AY2N6IiwgIj1xbSIp ICh6ZikKICAgICAgICAgICAgICAgOiAicm0iIChzcmMudmFsKSApOwotICAgICAgICBfcmVncy5f ZWZsYWdzICY9IH5FRkxHX1pGOworICAgICAgICBfcmVncy5fZWZsYWdzICY9IH5YODZfRUZMQUdT X1pGOwogICAgICAgICBpZiAoICh2ZXgucGZ4ID09IHZleF9mMykgJiYgdmNwdV9oYXNfYm1pMSgp ICkKICAgICAgICAgewotICAgICAgICAgICAgX3JlZ3MuX2VmbGFncyAmPSB+RUZMR19DRjsKKyAg ICAgICAgICAgIF9yZWdzLl9lZmxhZ3MgJj0gflg4Nl9FRkxBR1NfQ0Y7CiAgICAgICAgICAgICBp ZiAoIHpmICkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBfcmVncy5fZWZsYWdzIHw9 IEVGTEdfQ0Y7CisgICAgICAgICAgICAgICAgX3JlZ3MuX2VmbGFncyB8PSBYODZfRUZMQUdTX0NG OwogICAgICAgICAgICAgICAgIGRzdC52YWwgPSBvcF9ieXRlcyAqIDg7CiAgICAgICAgICAgICB9 CiAgICAgICAgICAgICBlbHNlIGlmICggIWRzdC52YWwgKQotICAgICAgICAgICAgICAgIF9yZWdz Ll9lZmxhZ3MgfD0gRUZMR19aRjsKKyAgICAgICAgICAgICAgICBfcmVncy5fZWZsYWdzIHw9IFg4 Nl9FRkxBR1NfWkY7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAoIHpmICkKICAgICAgICAg ewotICAgICAgICAgICAgX3JlZ3MuX2VmbGFncyB8PSBFRkxHX1pGOworICAgICAgICAgICAgX3Jl Z3MuX2VmbGFncyB8PSBYODZfRUZMQUdTX1pGOwogICAgICAgICAgICAgZHN0LnR5cGUgPSBPUF9O T05FOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwpAQCAtNTcxNSwyNSArNTcwNCwyNSBAQCB4 ODZfZW11bGF0ZSgKICAgICAgICAgYXNtICggImJzciAlMiwlMCIgQVNNX0ZMQUdfT1VUKCwgIjsg c2V0eiAlMSIpCiAgICAgICAgICAgICAgIDogIj1yIiAoZHN0LnZhbCksIEFTTV9GTEFHX09VVCgi PUBjY3oiLCAiPXFtIikgKHpmKQogICAgICAgICAgICAgICA6ICJybSIgKHNyYy52YWwpICk7Ci0g ICAgICAgIF9yZWdzLl9lZmxhZ3MgJj0gfkVGTEdfWkY7CisgICAgICAgIF9yZWdzLl9lZmxhZ3Mg Jj0gflg4Nl9FRkxBR1NfWkY7CiAgICAgICAgIGlmICggKHZleC5wZnggPT0gdmV4X2YzKSAmJiB2 Y3B1X2hhc19semNudCgpICkKICAgICAgICAgewotICAgICAgICAgICAgX3JlZ3MuX2VmbGFncyAm PSB+RUZMR19DRjsKKyAgICAgICAgICAgIF9yZWdzLl9lZmxhZ3MgJj0gflg4Nl9FRkxBR1NfQ0Y7 CiAgICAgICAgICAgICBpZiAoIHpmICkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBf cmVncy5fZWZsYWdzIHw9IEVGTEdfQ0Y7CisgICAgICAgICAgICAgICAgX3JlZ3MuX2VmbGFncyB8 PSBYODZfRUZMQUdTX0NGOwogICAgICAgICAgICAgICAgIGRzdC52YWwgPSBvcF9ieXRlcyAqIDg7 CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICB7CiAgICAgICAg ICAgICAgICAgZHN0LnZhbCA9IG9wX2J5dGVzICogOCAtIDEgLSBkc3QudmFsOwogICAgICAgICAg ICAgICAgIGlmICggIWRzdC52YWwgKQotICAgICAgICAgICAgICAgICAgICBfcmVncy5fZWZsYWdz IHw9IEVGTEdfWkY7CisgICAgICAgICAgICAgICAgICAgIF9yZWdzLl9lZmxhZ3MgfD0gWDg2X0VG TEFHU19aRjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBlbHNlIGlmICggemYg KQogICAgICAgICB7Ci0gICAgICAgICAgICBfcmVncy5fZWZsYWdzIHw9IEVGTEdfWkY7CisgICAg ICAgICAgICBfcmVncy5fZWZsYWdzIHw9IFg4Nl9FRkxBR1NfWkY7CiAgICAgICAgICAgICBkc3Qu dHlwZSA9IE9QX05PTkU7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CkBAIC01ODA3LDcgKzU3 OTYsNyBAQCB4ODZfZW11bGF0ZSgKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg X3JlZ3MuX2VmbGFncyAmPSB+RUZMQUdTX01BU0s7CiAgICAgICAgICAgICAgICAgaWYgKCBjYXJy eSApCi0gICAgICAgICAgICAgICAgICAgIF9yZWdzLl9lZmxhZ3MgfD0gRUZMR19DRjsKKyAgICAg ICAgICAgICAgICAgICAgX3JlZ3MuX2VmbGFncyB8PSBYODZfRUZMQUdTX0NGOwogICAgICAgICAg ICAgICAgIGJyZWFrOwogI2VuZGlmCiAKQEAgLTU4NTAsNyArNTgzOSw3IEBAIHg4Nl9lbXVsYXRl KAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBfcmVncy5fZWZsYWdzICY9IH5F RkxBR1NfTUFTSzsKICAgICAgICAgICAgICAgICBpZiAoIGNhcnJ5ICkKLSAgICAgICAgICAgICAg ICAgICAgX3JlZ3MuX2VmbGFncyB8PSBFRkxHX0NGOworICAgICAgICAgICAgICAgICAgICBfcmVn cy5fZWZsYWdzIHw9IFg4Nl9FRkxBR1NfQ0Y7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAjZW5k aWYKICAgICAgICAgICAgIH0KQEAgLTU4OTksNyArNTg4OCw3IEBAIHg4Nl9lbXVsYXRlKAogICAg ICAgICAgICAgLyogRXhwZWN0ZWQgIT0gYWN0dWFsOiBzdG9yZSBhY3R1YWwgdG8gckRYOnJBWCBh bmQgY2xlYXIgWkYuICovCiAgICAgICAgICAgICBfcmVncy5yKGF4KSA9ICEocmV4X3ByZWZpeCAm IFJFWF9XKSA/IG9sZC0+dTMyWzBdIDogb2xkLT51NjRbMF07CiAgICAgICAgICAgICBfcmVncy5y KGR4KSA9ICEocmV4X3ByZWZpeCAmIFJFWF9XKSA/IG9sZC0+dTMyWzFdIDogb2xkLT51NjRbMV07 Ci0gICAgICAgICAgICBfcmVncy5fZWZsYWdzICY9IH5FRkxHX1pGOworICAgICAgICAgICAgX3Jl Z3MuX2VmbGFncyAmPSB+WDg2X0VGTEFHU19aRjsKICAgICAgICAgfQogICAgICAgICBlbHNlCiAg ICAgICAgIHsKQEAgLTU5MjEsNyArNTkxMCw3IEBAIHg4Nl9lbXVsYXRlKAogICAgICAgICAgICAg aWYgKCAocmMgPSBvcHMtPmNtcHhjaGcoZWEubWVtLnNlZywgZWEubWVtLm9mZiwgb2xkLCBhdXgs CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcF9ieXRlcywgY3R4dCkpICE9 IFg4NkVNVUxfT0tBWSApCiAgICAgICAgICAgICAgICAgZ290byBkb25lOwotICAgICAgICAgICAg X3JlZ3MuX2VmbGFncyB8PSBFRkxHX1pGOworICAgICAgICAgICAgX3JlZ3MuX2VmbGFncyB8PSBY ODZfRUZMQUdTX1pGOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTYwNzAs NyArNjA1OSw3IEBAIHg4Nl9lbXVsYXRlKAogICAgIGNhc2UgWDg2RU1VTF9PUENfNjYoMHgwZjM4 LCAweGY2KTogLyogYWRjeCByL20sciAqLwogICAgIGNhc2UgWDg2RU1VTF9PUENfRjMoMHgwZjM4 LCAweGY2KTogLyogYWRveCByL20sciAqLwogICAgIHsKLSAgICAgICAgdW5zaWduZWQgaW50IG1h c2sgPSByZXBfcHJlZml4KCkgPyBFRkxHX09GIDogRUZMR19DRjsKKyAgICAgICAgdW5zaWduZWQg aW50IG1hc2sgPSByZXBfcHJlZml4KCkgPyBYODZfRUZMQUdTX09GIDogWDg2X0VGTEFHU19DRjsK ICAgICAgICAgdW5zaWduZWQgaW50IGF1eCA9IF9yZWdzLl9lZmxhZ3MgJiBtYXNrID8gfjAgOiAw OwogICAgICAgICBib29sIGNhcnJ5OwogCkBAIC02MjYzLDcgKzYyNTIsNyBAQCB4ODZfZW11bGF0 ZSgKICAgICAgICAgcmMgPSBYODZFTVVMX09LQVk7CiAgICAgfQogCi0gICAgY3R4dC0+cmVncy0+ X2VmbGFncyAmPSB+RUZMR19SRjsKKyAgICBjdHh0LT5yZWdzLT5fZWZsYWdzICY9IH5YODZfRUZM QUdTX1JGOwogCiAgZG9uZToKICAgICBfcHV0X2ZwdSgpOwotLSAKMi4xMS4wCgoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcg bGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRl dmVsCg==