From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wei Liu Subject: [PATCH v2 05/12] x86emul: use eflags definitions in x86-defns.h Date: Tue, 31 Jan 2017 11:08:02 +0000 Message-ID: <20170131110809.30001-6-wei.liu2@citrix.com> References: <20170131110809.30001-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.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cYWIP-0000Uk-9Z for xen-devel@lists.xenproject.org; Tue, 31 Jan 2017 11:08:21 +0000 In-Reply-To: <20170131110809.30001-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: Andrew Cooper , Wei Liu , Jan Beulich List-Id: xen-devel@lists.xenproject.org QmFzaWNhbGx5IHRoaXMgcGF0Y2ggZG9lcyAncy9FRkxHXy9YODZfRUZMQUdTXy9nJyBhbmQgd2l0 aCBpbmRlbnRhdGlvbgpmaXhlZCB1cC4gQW5kIHJlbW92ZSB0aGUgZHVwbGljYXRlcyBpbiB4ODZf ZW11YWx0ZS5jLiAgVGhpcyBpbiB0dXJuCnJlcXVpcmVzIHVzZXJzcGFjZSB0ZXN0IGhhcm5lc3Mg dG8gaW5jbHVkZSB4ODYtZGVmbnMuaC4gQWxzbyByZW1vdmUgYQpmZXcgZHVwbGljYXRlcyBpbiB1 c2Vyc3BhY2UgaGFybmVzcyBwcm9ncmFtLgoKTm8gZnVuY3Rpb25hbCBjaGFuZ2UuCgpTaWduZWQt b2ZmLWJ5OiBXZWkgTGl1IDx3ZWkubGl1MkBjaXRyaXguY29tPgotLS0KQ2M6IEphbiBCZXVsaWNo IDxqYmV1bGljaEBzdXNlLmNvbT4KQ2M6IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNp dHJpeC5jb20+Ci0tLQogdG9vbHMvdGVzdHMveDg2X2VtdWxhdG9yL3Rlc3RfeDg2X2VtdWxhdG9y LmMgfCAgIDkgLQogdG9vbHMvdGVzdHMveDg2X2VtdWxhdG9yL3g4Nl9lbXVsYXRlLmggICAgICAg fCAgIDEgKwogeGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRlL3g4Nl9lbXVsYXRlLmMgICAgICAgfCAz MjEgKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tCiAzIGZpbGVzIGNoYW5nZWQsIDE1NiBpbnNl cnRpb25zKCspLCAxNzUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdHMveDg2 X2VtdWxhdG9yL3Rlc3RfeDg2X2VtdWxhdG9yLmMgYi90b29scy90ZXN0cy94ODZfZW11bGF0b3Iv dGVzdF94ODZfZW11bGF0b3IuYwppbmRleCA5MjRmZDM2ZjE4Li4yNzIwMGUwMjgzIDEwMDY0NAot LS0gYS90b29scy90ZXN0cy94ODZfZW11bGF0b3IvdGVzdF94ODZfZW11bGF0b3IuYworKysgYi90 b29scy90ZXN0cy94ODZfZW11bGF0b3IvdGVzdF94ODZfZW11bGF0b3IuYwpAQCAtMjMsMTUgKzIz LDYgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB7CiAjZW5kaWYKIH07CiAKLS8qIEVGTEFHUyBiaXQg ZGVmaW5pdGlvbnMuICovCi0jZGVmaW5lIEVGTEdfT0YgKDE8PDExKQotI2RlZmluZSBFRkxHX0RG ICgxPDwxMCkKLSNkZWZpbmUgRUZMR19TRiAoMTw8NykKLSNkZWZpbmUgRUZMR19aRiAoMTw8NikK LSNkZWZpbmUgRUZMR19BRiAoMTw8NCkKLSNkZWZpbmUgRUZMR19QRiAoMTw8MikKLSNkZWZpbmUg RUZMR19DRiAoMTw8MCkKLQogc3RhdGljIHVuc2lnbmVkIGludCBieXRlc19yZWFkOwogCiBzdGF0 aWMgaW50IHJlYWQoCmRpZmYgLS1naXQgYS90b29scy90ZXN0cy94ODZfZW11bGF0b3IveDg2X2Vt dWxhdGUuaCBiL3Rvb2xzL3Rlc3RzL3g4Nl9lbXVsYXRvci94ODZfZW11bGF0ZS5oCmluZGV4IDIy Njc2MDJjZTkuLjAwNDY1MTQyMjAgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3RzL3g4Nl9lbXVsYXRv ci94ODZfZW11bGF0ZS5oCisrKyBiL3Rvb2xzL3Rlc3RzL3g4Nl9lbXVsYXRvci94ODZfZW11bGF0 ZS5oCkBAIC02LDYgKzYsNyBAQAogI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPHhlbi94 ZW4uaD4KIAorI2luY2x1ZGUgIi4uLy4uLy4uL3hlbi9pbmNsdWRlL2FzbS14ODYveDg2LWRlZm5z LmgiCiAjaW5jbHVkZSAiLi4vLi4vLi4veGVuL2luY2x1ZGUvYXNtLXg4Ni94ODYtdmVuZG9ycy5o IgogCiAjZGVmaW5lIEJVRygpIGFib3J0KCkKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni94ODZf ZW11bGF0ZS94ODZfZW11bGF0ZS5jIGIveGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRlL3g4Nl9lbXVs YXRlLmMKaW5kZXggMjFkZDk4Y2ViYy4uMWQyZDAxOWNjNyAxMDA2NDQKLS0tIGEveGVuL2FyY2gv eDg2L3g4Nl9lbXVsYXRlL3g4Nl9lbXVsYXRlLmMKKysrIGIveGVuL2FyY2gveDg2L3g4Nl9lbXVs YXRlL3g4Nl9lbXVsYXRlLmMKQEAgLTQ0NywyNiArNDQ3LDYgQEAgdHlwZWRlZiB1bmlvbiB7CiAj ZGVmaW5lIENSNF9GU0dTQkFTRSAgICgxPDwxNikKICNkZWZpbmUgQ1I0X09TWFNBVkUgICAgKDE8 PDE4KQogCi0vKiBFRkxBR1MgYml0IGRlZmluaXRpb25zLiAqLwotI2RlZmluZSBFRkxHX0lEICAg KDE8PDIxKQotI2RlZmluZSBFRkxHX1ZJUCAgKDE8PDIwKQotI2RlZmluZSBFRkxHX1ZJRiAgKDE8 PDE5KQotI2RlZmluZSBFRkxHX0FDICAgKDE8PDE4KQotI2RlZmluZSBFRkxHX1ZNICAgKDE8PDE3 KQotI2RlZmluZSBFRkxHX1JGICAgKDE8PDE2KQotI2RlZmluZSBFRkxHX05UICAgKDE8PDE0KQot I2RlZmluZSBFRkxHX0lPUEwgKDM8PDEyKQotI2RlZmluZSBFRkxHX09GICAgKDE8PDExKQotI2Rl ZmluZSBFRkxHX0RGICAgKDE8PDEwKQotI2RlZmluZSBFRkxHX0lGICAgKDE8PDkpCi0jZGVmaW5l IEVGTEdfVEYgICAoMTw8OCkKLSNkZWZpbmUgRUZMR19TRiAgICgxPDw3KQotI2RlZmluZSBFRkxH X1pGICAgKDE8PDYpCi0jZGVmaW5lIEVGTEdfQUYgICAoMTw8NCkKLSNkZWZpbmUgRUZMR19QRiAg ICgxPDwyKQotI2RlZmluZSBFRkxHX01CUyAgKDE8PDEpCi0jZGVmaW5lIEVGTEdfQ0YgICAoMTw8 MCkKLQogLyogRmxvYXRpbmcgcG9pbnQgc3RhdHVzIHdvcmQgZGVmaW5pdGlvbnMuICovCiAjZGVm aW5lIEZTV19FUyAgICAoMVUgPDwgNykKIApAQCAtNTIxLDE0ICs1MDEsMTYgQEAgdHlwZWRlZiB1 bmlvbiB7CiAgKiBUaGVzZSBFRkxBR1MgYml0cyBhcmUgcmVzdG9yZWQgZnJvbSBzYXZlZCB2YWx1 ZSBkdXJpbmcgZW11bGF0aW9uLCBhbmQKICAqIGFueSBjaGFuZ2VzIGFyZSB3cml0dGVuIGJhY2sg dG8gdGhlIHNhdmVkIHZhbHVlIGFmdGVyIGVtdWxhdGlvbi4KICAqLwotI2RlZmluZSBFRkxBR1Nf TUFTSyAoRUZMR19PRnxFRkxHX1NGfEVGTEdfWkZ8RUZMR19BRnxFRkxHX1BGfEVGTEdfQ0YpCisj ZGVmaW5lIEVGTEFHU19NQVNLIChYODZfRUZMQUdTX09GfFg4Nl9FRkxBR1NfU0Z8WDg2X0VGTEFH U19aRnxYODZfRUZMQUdTX0FGfCBcCisgICAgICAgICAgICAgICAgICAgICBYODZfRUZMQUdTX1BG fFg4Nl9FRkxBR1NfQ0YpCiAKIC8qCiAgKiBUaGVzZSBFRkxBR1MgYml0cyBhcmUgbW9kaWZpYWJs ZSAoYnkgUE9QRiBhbmQgSVJFVCksIHBvc3NpYmx5IHN1YmplY3QKICAqIHRvIGZ1cnRoZXIgQ1BM IGFuZCBJT1BMIGNvbnN0cmFpbnRzLgogICovCi0jZGVmaW5lIEVGTEFHU19NT0RJRklBQkxFIChF RkxHX0lEfEVGTEdfQUN8RUZMR19SRnxFRkxHX05UfEVGTEdfSU9QTHwgXAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgRUZMR19ERnxFRkxHX0lGfEVGTEdfVEZ8RUZMQUdTX01BU0spCisjZGVm aW5lIEVGTEFHU19NT0RJRklBQkxFIChYODZfRUZMQUdTX0lEfFg4Nl9FRkxBR1NfQUN8WDg2X0VG TEFHU19SRnwgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICBYODZfRUZMQUdTX05UfFg4 Nl9FRkxBR1NfSU9QTHxYODZfRUZMQUdTX0RGfCBcCisgICAgICAgICAgICAgICAgICAgICAgICAg ICBYODZfRUZMQUdTX0lGfFg4Nl9FRkxBR1NfVEZ8RUZMQUdTX01BU0spCiAKIC8qIEJlZm9yZSBl eGVjdXRpbmcgaW5zdHJ1Y3Rpb246IHJlc3RvcmUgbmVjZXNzYXJ5IGJpdHMgaW4gRUZMQUdTLiAq LwogI2RlZmluZSBfUFJFX0VGTEFHUyhfc2F2LCBfbXNrLCBfdG1wKSAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKQEAgLTc2MSw3ICs3NDMsOCBAQCBkbyB7ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiB9IHdoaWxl ICgwKQogI2RlZmluZSByZWdpc3Rlcl9hZGRyZXNzX2FkanVzdChyZWcsIGFkaikgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAogICAgIF9yZWdpc3Rlcl9hZGRyZXNzX2luY3JlbWVudChy ZWcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBfcmVncy5fZWZsYWdzICYgRUZMR19ERiA/IC0oYWRqKSA6IChhZGop LCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9yZWdzLl9lZmxhZ3MgJiBYODZf RUZMQUdTX0RGID8gICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0o YWRqKSA6IChhZGopLCAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGFkX2J5dGVzKQogCiAjZGVmaW5lIHNwX3ByZV9kZWMoZGVjKSAoeyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC03ODQsNyAr NzY3LDcgQEAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIHJjID0gb3BzLT5pbnNuX2ZldGNoKHg4Nl9z ZWdfY3MsIGlwLCBOVUxMLCAwLCBjdHh0KTsgICAgICAgICAgICAgICAgXAogICAgIGlmICggcmMg KSBnb3RvIGRvbmU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXAogICAgIF9yZWdzLnIoaXApID0gaXA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAotICAgIHNpbmdsZXN0ZXAgPSBfcmVncy5fZWZsYWdzICYg RUZMR19URjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHNpbmdsZXN0ZXAg PSBfcmVncy5fZWZsYWdzICYgWDg2X0VGTEFHU19URjsgICAgICAgICAgICAgICAgICAgICAgICAg XAogfSB3aGlsZSAoMCkKIAogI2RlZmluZSB2YWxpZGF0ZV9mYXJfYnJhbmNoKGNzLCBpcCkgKHsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXApAQCAtODAxLDcgKzc4NCw3IEBAIGRv IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKICNkZWZpbmUgY29tbWl0X2Zhcl9icmFuY2goY3MsIG5ld2lwKSAoeyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB2YWxpZGF0ZV9mYXJfYnJhbmNo KGNzLCBuZXdpcCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBf cmVncy5yKGlwKSA9IChuZXdpcCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKLSAgICBzaW5nbGVzdGVwID0gX3JlZ3MuX2VmbGFncyAmIEVGTEdfVEY7ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBzaW5nbGVzdGVwID0gX3JlZ3MuX2Vm bGFncyAmIFg4Nl9FRkxBR1NfVEY7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBvcHMt PndyaXRlX3NlZ21lbnQoeDg2X3NlZ19jcywgY3MsIGN0eHQpOyAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKIH0pCiAKQEAgLTg1NCw3ICs4MzcsNyBAQCBzdGF0aWMgaW50IF9nZXRfZnB1KAog ICAgICAgICBpZiAoIHR5cGUgPj0gWDg2RU1VTF9GUFVfeW1tICkKICAgICAgICAgewogICAgICAg ICAgICAgLyogU2hvdWxkIGJlIHVucmVhY2hhYmxlIGlmIFZFWCBkZWNvZGluZyBpcyB3b3JraW5n IGNvcnJlY3RseS4gKi8KLSAgICAgICAgICAgIEFTU0VSVCgoY3IwICYgQ1IwX1BFKSAmJiAhKGN0 eHQtPnJlZ3MtPl9lZmxhZ3MgJiBFRkxHX1ZNKSk7CisgICAgICAgICAgICBBU1NFUlQoKGNyMCAm IENSMF9QRSkgJiYgIShjdHh0LT5yZWdzLT5fZWZsYWdzICYgWDg2X0VGTEFHU19WTSkpOwogICAg ICAgICB9CiAgICAgICAgIGlmICggY3IwICYgQ1IwX0VNICkKICAgICAgICAgewpAQCAtOTQ2LDcg KzkyOSw4IEBAIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICA6IFtlZmxhZ3Nd ICIrZyIgKF9yZWdzLl9lZmxhZ3MpLCAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAg ICAgICAgICAgIFt0bXBdICI9JnIiICh0bXBfKSwgIittIiAoZmljKSAgICAgICAgICAgICAgICAg ICAgIFwKICAgICAgICAgICAgICAgICAgICA6IFtmdW5jXSAicm0iIChzdHViLmZ1bmMpLCAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgIFttYXNrXSAiaSIg KEVGTEdfWkZ8RUZMR19QRnxFRkxHX0NGKSApOyAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAg ICAgICAgIFttYXNrXSAiaSIgKFg4Nl9FRkxBR1NfWkZ8WDg2X0VGTEFHU19QRnwgICAgICAgICAg IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFg4Nl9FRkxBR1NfQ0YpICk7ICAg ICAgICAgICAgICAgICAgICAgIFwKICAgICBwdXRfc3R1YihzdHViKTsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKIH0gd2hpbGUgKDApCiAKQEAg LTk4OCw3ICs5NzIsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcHV0X2xvb3BfY291bnQoCiAgICAg ICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcCiAgICAgICAgIGdvdG8gY29tcGxldGVfaW5zbjsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgfSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgaWYg KCBtYXhfcmVwcyA+IDEgJiYgKF9yZWdzLl9lZmxhZ3MgJiBFRkxHX1RGKSAmJiAgICAgICAgICAg ICAgICAgICBcCisgICAgaWYgKCBtYXhfcmVwcyA+IDEgJiYgKF9yZWdzLl9lZmxhZ3MgJiBYODZf RUZMQUdTX1RGKSAmJiAgICAgICAgICAgICBcCiAgICAgICAgICAhaXNfYnJhbmNoX3N0ZXAoY3R4 dCwgb3BzKSApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIG1h eF9yZXBzID0gMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcCiAgICAgbWF4X3JlcHM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC0xMDIyLDcgKzEwMDYsNyBAQCBzdGF0aWMgdm9p ZCBfX3B1dF9yZXBfcHJlZml4KAogLyogQ2xpcCBtYXhpbXVtIHJlcGV0aXRpb25zIHNvIHRoYXQg dGhlIGluZGV4IHJlZ2lzdGVyIGF0IG1vc3QganVzdCB3cmFwcy4gKi8KICNkZWZpbmUgdHJ1bmNh dGVfZWFfYW5kX3JlcHMoZWEsIHJlcHMsIGJ5dGVzX3Blcl9yZXApICh7ICAgICAgICAgICAgICAg ICAgXAogICAgIHVuc2lnbmVkIGxvbmcgdG9kb19fLCBlYV9fID0gdHJ1bmNhdGVfd29yZChlYSwg YWRfYnl0ZXMpOyAgICAgICAgICAgICBcCi0gICAgaWYgKCAhKF9yZWdzLl9lZmxhZ3MgJiBFRkxH X0RGKSApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoICEo X3JlZ3MuX2VmbGFncyAmIFg4Nl9FRkxBR1NfREYpICkgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAogICAgICAgICB0b2RvX18gPSB0cnVuY2F0ZV93b3JkKC0oZWEpLCBhZF9ieXRlcykg LyAoYnl0ZXNfcGVyX3JlcCk7ICAgICAgICBcCiAgICAgZWxzZSBpZiAoIHRydW5jYXRlX3dvcmQo KGVhKSArIChieXRlc19wZXJfcmVwKSAtIDEsIGFkX2J5dGVzKSA8IGVhX18gKVwKICAgICAgICAg dG9kb19fID0gMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXApAQCAtMTE0MywyOCArMTEyNywyOCBAQCB0ZXN0X2NjKAogICAgIHN3aXRjaCAo IChjb25kaXRpb24gJiAxNSkgPj4gMSApCiAgICAgewogICAgIGNhc2UgMDogLyogbyAqLwotICAg ICAgICByYyB8PSAoZmxhZ3MgJiBFRkxHX09GKTsKKyAgICAgICAgcmMgfD0gKGZsYWdzICYgWDg2 X0VGTEFHU19PRik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgMTogLyogYi9jL25hZSAqLwot ICAgICAgICByYyB8PSAoZmxhZ3MgJiBFRkxHX0NGKTsKKyAgICAgICAgcmMgfD0gKGZsYWdzICYg WDg2X0VGTEFHU19DRik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgMjogLyogei9lICovCi0g ICAgICAgIHJjIHw9IChmbGFncyAmIEVGTEdfWkYpOworICAgICAgICByYyB8PSAoZmxhZ3MgJiBY ODZfRUZMQUdTX1pGKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSAzOiAvKiBiZS9uYSAqLwot ICAgICAgICByYyB8PSAoZmxhZ3MgJiAoRUZMR19DRnxFRkxHX1pGKSk7CisgICAgICAgIHJjIHw9 IChmbGFncyAmIChYODZfRUZMQUdTX0NGfFg4Nl9FRkxBR1NfWkYpKTsKICAgICAgICAgYnJlYWs7 CiAgICAgY2FzZSA0OiAvKiBzICovCi0gICAgICAgIHJjIHw9IChmbGFncyAmIEVGTEdfU0YpOwor ICAgICAgICByYyB8PSAoZmxhZ3MgJiBYODZfRUZMQUdTX1NGKTsKICAgICAgICAgYnJlYWs7CiAg ICAgY2FzZSA1OiAvKiBwL3BlICovCi0gICAgICAgIHJjIHw9IChmbGFncyAmIEVGTEdfUEYpOwor ICAgICAgICByYyB8PSAoZmxhZ3MgJiBYODZfRUZMQUdTX1BGKTsKICAgICAgICAgYnJlYWs7CiAg ICAgY2FzZSA3OiAvKiBsZS9uZyAqLwotICAgICAgICByYyB8PSAoZmxhZ3MgJiBFRkxHX1pGKTsK KyAgICAgICAgcmMgfD0gKGZsYWdzICYgWDg2X0VGTEFHU19aRik7CiAgICAgICAgIC8qIGZhbGwg dGhyb3VnaCAqLwogICAgIGNhc2UgNjogLyogbC9uZ2UgKi8KLSAgICAgICAgcmMgfD0gKCEoZmxh Z3MgJiBFRkxHX1NGKSAhPSAhKGZsYWdzICYgRUZMR19PRikpOworICAgICAgICByYyB8PSAoIShm bGFncyAmIFg4Nl9FRkxBR1NfU0YpICE9ICEoZmxhZ3MgJiBYODZfRUZMQUdTX09GKSk7CiAgICAg ICAgIGJyZWFrOwogICAgIH0KIApAQCAtMTE3OSw3ICsxMTYzLDcgQEAgZ2V0X2NwbCgKIHsKICAg ICBzdHJ1Y3Qgc2VnbWVudF9yZWdpc3RlciByZWc7CiAKLSAgICBpZiAoIGN0eHQtPnJlZ3MtPl9l ZmxhZ3MgJiBFRkxHX1ZNICkKKyAgICBpZiAoIGN0eHQtPnJlZ3MtPl9lZmxhZ3MgJiBYODZfRUZM QUdTX1ZNICkKICAgICAgICAgcmV0dXJuIDM7CiAKICAgICBpZiAoIChvcHMtPnJlYWRfc2VnbWVu dCA9PSBOVUxMKSB8fApAQCAtMTE5Nyw3ICsxMTgxLDcgQEAgX21vZGVfaW9wbCgKICAgICBpbnQg Y3BsID0gZ2V0X2NwbChjdHh0LCBvcHMpOwogICAgIGlmICggY3BsID09IC0xICkKICAgICAgICAg cmV0dXJuIC0xOwotICAgIHJldHVybiBjcGwgPD0gTUFTS19FWFRSKGN0eHQtPnJlZ3MtPl9lZmxh Z3MsIEVGTEdfSU9QTCk7CisgICAgcmV0dXJuIGNwbCA8PSBNQVNLX0VYVFIoY3R4dC0+cmVncy0+ X2VmbGFncywgWDg2X0VGTEFHU19JT1BMKTsKIH0KIAogI2RlZmluZSBtb2RlX3JpbmcwKCkgKHsg ICAgICAgICAgICAgICAgICAgICAgICAgXApAQCAtMTIxNyw3ICsxMjAxLDcgQEAgX21vZGVfaW9w bCgKICAgICAgICAgcmMgPSBvcHMtPnJlYWRfY3IoNCwgJmNyNCwgY3R4dCk7ICAgICAgICAgICAg ICAgICAgICBcCiAgICAgICAgIGlmICggcmMgIT0gWDg2RU1VTF9PS0FZICkgZ290byBkb25lOyAg ICAgICAgICAgICAgICAgXAogICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAhIShjcjQgJiAoX3JlZ3MuX2VmbGFncyAmIEVG TEdfVk0gPyBDUjRfVk1FIDogQ1I0X1BWSSkpOyBcCisgICAgISEoY3I0ICYgKF9yZWdzLl9lZmxh Z3MgJiBYODZfRUZMQUdTX1ZNID8gQ1I0X1ZNRSA6IENSNF9QVkkpKTsgXAogfSkKIAogc3RhdGlj IGludCBpb3BvcnRfYWNjZXNzX2NoZWNrKApAQCAtMTIzMCw3ICsxMjE0LDcgQEAgc3RhdGljIGlu dCBpb3BvcnRfYWNjZXNzX2NoZWNrKAogICAgIHN0cnVjdCBzZWdtZW50X3JlZ2lzdGVyIHRyOwog ICAgIGludCByYyA9IFg4NkVNVUxfT0tBWTsKIAotICAgIGlmICggIShjdHh0LT5yZWdzLT5fZWZs YWdzICYgRUZMR19WTSkgJiYgbW9kZV9pb3BsKCkgKQorICAgIGlmICggIShjdHh0LT5yZWdzLT5f ZWZsYWdzICYgWDg2X0VGTEFHU19WTSkgJiYgbW9kZV9pb3BsKCkgKQogICAgICAgICByZXR1cm4g WDg2RU1VTF9PS0FZOwogCiAgICAgZmFpbF9pZihvcHMtPnJlYWRfc2VnbWVudCA9PSBOVUxMKTsK QEAgLTEyOTksNyArMTI4Myw3IEBAIGluX3Byb3Rtb2RlKAogICAgIHN0cnVjdCB4ODZfZW11bGF0 ZV9jdHh0ICpjdHh0LAogICAgIGNvbnN0IHN0cnVjdCB4ODZfZW11bGF0ZV9vcHMgICpvcHMpCiB7 Ci0gICAgcmV0dXJuICEoaW5fcmVhbG1vZGUoY3R4dCwgb3BzKSB8fCAoY3R4dC0+cmVncy0+X2Vm bGFncyAmIEVGTEdfVk0pKTsKKyAgICByZXR1cm4gIShpbl9yZWFsbW9kZShjdHh0LCBvcHMpIHx8 IChjdHh0LT5yZWdzLT5fZWZsYWdzICYgWDg2X0VGTEFHU19WTSkpOwogfQogCiAjZGVmaW5lIEVB WCAwCkBAIC0xODIyLDggKzE4MDYsOCBAQCBzdGF0aWMgaW50IGluamVjdF9zd2ludChlbnVtIHg4 Nl9zd2ludF90eXBlIHR5cGUsCiAgICAgICAgICAgICAgKiBhIDMyYml0IE9TLiAgU29tZW9uZSB3 aXRoIG1hbnkgVFVJVHMgY2FuIHNlZSBhYm91dCByZWFkaW5nIHRoZQogICAgICAgICAgICAgICog VFNTIFNvZnR3YXJlIEludGVycnVwdCBSZWRpcmVjdGlvbiBiaXRtYXAuCiAgICAgICAgICAgICAg Ki8KLSAgICAgICAgICAgIGlmICggKGN0eHQtPnJlZ3MtPl9lZmxhZ3MgJiBFRkxHX1ZNKSAmJgot ICAgICAgICAgICAgICAgICAoKGN0eHQtPnJlZ3MtPl9lZmxhZ3MgJiBFRkxHX0lPUEwpICE9IEVG TEdfSU9QTCkgKQorICAgICAgICAgICAgaWYgKCAoY3R4dC0+cmVncy0+X2VmbGFncyAmIFg4Nl9F RkxBR1NfVk0pICYmCisgICAgICAgICAgICAgICAgICgoY3R4dC0+cmVncy0+X2VmbGFncyAmIFg4 Nl9FRkxBR1NfSU9QTCkgIT0gWDg2X0VGTEFHU19JT1BMKSApCiAgICAgICAgICAgICAgICAgZ290 byByYWlzZV9leG47CiAKICAgICAgICAgICAgIC8qCkBAIC0yMzEzLDcgKzIyOTcsNyBAQCB4ODZf ZGVjb2RlKAogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBCVUcoKTsgLyog U2hvdWxkbid0IGJlIHBvc3NpYmxlLiAqLwogICAgICAgICAgICAgY2FzZSAyOgotICAgICAgICAg ICAgICAgIGlmICggc3RhdGUtPnJlZ3MtPl9lZmxhZ3MgJiBFRkxHX1ZNICkKKyAgICAgICAgICAg ICAgICBpZiAoIHN0YXRlLT5yZWdzLT5fZWZsYWdzICYgWDg2X0VGTEFHU19WTSApCiAgICAgICAg ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIC8qIGZhbGwgdGhyb3VnaCAqLwog ICAgICAgICAgICAgY2FzZSA0OgpAQCAtMjY3Niw3ICsyNjYwLDggQEAgeDg2X2VtdWxhdGUoCiAg ICAgc3RydWN0IHg4Nl9lbXVsYXRlX3N0YXRlIHN0YXRlOwogICAgIGludCByYzsKICAgICB1aW50 OF90IGIsIGQ7Ci0gICAgYm9vbCBzaW5nbGVzdGVwID0gKF9yZWdzLl9lZmxhZ3MgJiBFRkxHX1RG KSAmJiAhaXNfYnJhbmNoX3N0ZXAoY3R4dCwgb3BzKTsKKyAgICBib29sIHNpbmdsZXN0ZXAgPSAo X3JlZ3MuX2VmbGFncyAmIFg4Nl9FRkxBR1NfVEYpICYmCisJICAgICFpc19icmFuY2hfc3RlcChj dHh0LCBvcHMpOwogICAgIHN0cnVjdCBvcGVyYW5kIHNyYyA9IHsgLnJlZyA9IFBUUl9QT0lTT04g fTsKICAgICBzdHJ1Y3Qgb3BlcmFuZCBkc3QgPSB7IC5yZWcgPSBQVFJfUE9JU09OIH07CiAgICAg ZW51bSB4ODZfc3dpbnRfdHlwZSBzd2ludF90eXBlOwpAQCAtMjk1NCwzMyArMjkzOSwzNCBAQCB4 ODZfZW11bGF0ZSgKICAgICAgICAgdWludDhfdCBhbCA9IF9yZWdzLmFsOwogICAgICAgICB1bnNp Z25lZCBpbnQgZWZsYWdzID0gX3JlZ3MuX2VmbGFnczsKIAotICAgICAgICBfcmVncy5fZWZsYWdz ICY9IH4oRUZMR19DRnxFRkxHX0FGfEVGTEdfU0Z8RUZMR19aRnxFRkxHX1BGKTsKLSAgICAgICAg aWYgKCAoKGFsICYgMHgwZikgPiA5KSB8fCAoZWZsYWdzICYgRUZMR19BRikgKQorICAgICAgICBf cmVncy5fZWZsYWdzICY9IH4oWDg2X0VGTEFHU19DRnxYODZfRUZMQUdTX0FGfFg4Nl9FRkxBR1Nf U0Z8CisgICAgICAgICAgICAgICAgICAgICAgICAgICBYODZfRUZMQUdTX1pGfFg4Nl9FRkxBR1Nf UEYpOworICAgICAgICBpZiAoICgoYWwgJiAweDBmKSA+IDkpIHx8IChlZmxhZ3MgJiBYODZfRUZM QUdTX0FGKSApCiAgICAgICAgIHsKLSAgICAgICAgICAgIF9yZWdzLl9lZmxhZ3MgfD0gRUZMR19B RjsKLSAgICAgICAgICAgIGlmICggYiA9PSAweDJmICYmIChhbCA8IDYgfHwgKGVmbGFncyAmIEVG TEdfQ0YpKSApCi0gICAgICAgICAgICAgICAgX3JlZ3MuX2VmbGFncyB8PSBFRkxHX0NGOworICAg ICAgICAgICAgX3JlZ3MuX2VmbGFncyB8PSBYODZfRUZMQUdTX0FGOworICAgICAgICAgICAgaWYg KCBiID09IDB4MmYgJiYgKGFsIDwgNiB8fCAoZWZsYWdzICYgWDg2X0VGTEFHU19DRikpICkKKyAg ICAgICAgICAgICAgICBfcmVncy5fZWZsYWdzIHw9IFg4Nl9FRkxBR1NfQ0Y7CiAgICAgICAgICAg ICBfcmVncy5hbCArPSAoYiA9PSAweDI3KSA/IDYgOiAtNjsKICAgICAgICAgfQotICAgICAgICBp ZiAoIChhbCA+IDB4OTkpIHx8IChlZmxhZ3MgJiBFRkxHX0NGKSApCisgICAgICAgIGlmICggKGFs ID4gMHg5OSkgfHwgKGVmbGFncyAmIFg4Nl9FRkxBR1NfQ0YpICkKICAgICAgICAgewogICAgICAg ICAgICAgX3JlZ3MuYWwgKz0gKGIgPT0gMHgyNykgPyAweDYwIDogLTB4NjA7Ci0gICAgICAgICAg ICBfcmVncy5fZWZsYWdzIHw9IEVGTEdfQ0Y7CisgICAgICAgICAgICBfcmVncy5fZWZsYWdzIHw9 IFg4Nl9FRkxBR1NfQ0Y7CiAgICAgICAgIH0KLSAgICAgICAgX3JlZ3MuX2VmbGFncyB8PSAhX3Jl Z3MuYWwgPyBFRkxHX1pGIDogMDsKLSAgICAgICAgX3JlZ3MuX2VmbGFncyB8PSAoKGludDhfdClf cmVncy5hbCA8IDApID8gRUZMR19TRiA6IDA7Ci0gICAgICAgIF9yZWdzLl9lZmxhZ3MgfD0gZXZl bl9wYXJpdHkoX3JlZ3MuYWwpID8gRUZMR19QRiA6IDA7CisgICAgICAgIF9yZWdzLl9lZmxhZ3Mg fD0gIV9yZWdzLmFsID8gWDg2X0VGTEFHU19aRiA6IDA7CisgICAgICAgIF9yZWdzLl9lZmxhZ3Mg fD0gKChpbnQ4X3QpX3JlZ3MuYWwgPCAwKSA/IFg4Nl9FRkxBR1NfU0YgOiAwOworICAgICAgICBf cmVncy5fZWZsYWdzIHw9IGV2ZW5fcGFyaXR5KF9yZWdzLmFsKSA/IFg4Nl9FRkxBR1NfUEYgOiAw OwogICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBjYXNlIDB4Mzc6IC8qIGFhYSAqLwogICAg IGNhc2UgMHgzZjogLyogYWFzICovCi0gICAgICAgIF9yZWdzLl9lZmxhZ3MgJj0gfkVGTEdfQ0Y7 Ci0gICAgICAgIGlmICggKF9yZWdzLmFsID4gOSkgfHwgKF9yZWdzLl9lZmxhZ3MgJiBFRkxHX0FG KSApCisgICAgICAgIF9yZWdzLl9lZmxhZ3MgJj0gflg4Nl9FRkxBR1NfQ0Y7CisgICAgICAgIGlm ICggKF9yZWdzLmFsID4gOSkgfHwgKF9yZWdzLl9lZmxhZ3MgJiBYODZfRUZMQUdTX0FGKSApCiAg ICAgICAgIHsKICAgICAgICAgICAgIF9yZWdzLmFsICs9IChiID09IDB4MzcpID8gNiA6IC02Owog ICAgICAgICAgICAgX3JlZ3MuYWggKz0gKGIgPT0gMHgzNykgPyAxIDogLTE7Ci0gICAgICAgICAg ICBfcmVncy5fZWZsYWdzIHw9IEVGTEdfQ0YgfCBFRkxHX0FGOworICAgICAgICAgICAgX3JlZ3Mu X2VmbGFncyB8PSBYODZfRUZMQUdTX0NGIHwgWDg2X0VGTEFHU19BRjsKICAgICAgICAgfQogICAg ICAgICBfcmVncy5hbCAmPSAweDBmOwogICAgICAgICBicmVhazsKQEAgLTMwODYsMTIgKzMwNzIs MTIgQEAgeDg2X2VtdWxhdGUoCiAgICAgICAgICAgICAgICAgZ290byBkb25lOwogICAgICAgICAg ICAgaWYgKCBzcmNfcnBsID4gKGRzdC52YWwgJiAzKSApCiAgICAgICAgICAgICB7Ci0gICAgICAg ICAgICAgICAgX3JlZ3MuX2VmbGFncyB8PSBFRkxHX1pGOworICAgICAgICAgICAgICAgIF9yZWdz Ll9lZmxhZ3MgfD0gWDg2X0VGTEFHU19aRjsKICAgICAgICAgICAgICAgICBkc3QudmFsID0gKGRz dC52YWwgJiB+MykgfCBzcmNfcnBsOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZQog ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIF9yZWdzLl9lZmxhZ3MgJj0gfkVGTEdfWkY7 CisgICAgICAgICAgICAgICAgX3JlZ3MuX2VmbGFncyAmPSB+WDg2X0VGTEFHU19aRjsKICAgICAg ICAgICAgICAgICBkc3QudHlwZSA9IE9QX05PTkU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg ICBnZW5lcmF0ZV9leGNlcHRpb25faWYoIWluX3Byb3Rtb2RlKGN0eHQsIG9wcyksIEVYQ19VRCk7 CkBAIC0zMzU0LDcgKzMzNDAsNyBAQCB4ODZfZW11bGF0ZSgKICAgICAgICAgICAgIGdvdG8gZG9u ZTsKIAogICAgICAgICBfcmVncy5yKGlwKSA9IGltbTE7Ci0gICAgICAgIHNpbmdsZXN0ZXAgPSBf cmVncy5fZWZsYWdzICYgRUZMR19URjsKKyAgICAgICAgc2luZ2xlc3RlcCA9IF9yZWdzLl9lZmxh Z3MgJiBYODZfRUZMQUdTX1RGOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgMHg5YjogIC8q IHdhaXQvZndhaXQgKi8KQEAgLTMzNjYsOCArMzM1Miw4IEBAIHg4Nl9lbXVsYXRlKAogICAgICAg ICBicmVhazsKIAogICAgIGNhc2UgMHg5YzogLyogcHVzaGYgKi8KLSAgICAgICAgaWYgKCAoX3Jl Z3MuX2VmbGFncyAmIEVGTEdfVk0pICYmCi0gICAgICAgICAgICAgTUFTS19FWFRSKF9yZWdzLl9l ZmxhZ3MsIEVGTEdfSU9QTCkgIT0gMyApCisgICAgICAgIGlmICggKF9yZWdzLl9lZmxhZ3MgJiBY ODZfRUZMQUdTX1ZNKSAmJgorICAgICAgICAgICAgIE1BU0tfRVhUUihfcmVncy5fZWZsYWdzLCBY ODZfRUZMQUdTX0lPUEwpICE9IDMgKQogICAgICAgICB7CiAgICAgICAgICAgICBjcjQgPSAwOwog ICAgICAgICAgICAgaWYgKCBvcF9ieXRlcyA9PSAyICYmIG9wcy0+cmVhZF9jciApCkBAIC0zMzc3 LDIxICszMzYzLDIxIEBAIHg4Nl9lbXVsYXRlKAogICAgICAgICAgICAgICAgICAgICBnb3RvIGRv bmU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBnZW5lcmF0ZV9leGNlcHRpb25faWYoIShj cjQgJiBDUjRfVk1FKSwgRVhDX0dQLCAwKTsKLSAgICAgICAgICAgIHNyYy52YWwgPSAoX3JlZ3Mu ZmxhZ3MgJiB+RUZMR19JRikgfCBFRkxHX0lPUEw7Ci0gICAgICAgICAgICBpZiAoIF9yZWdzLl9l ZmxhZ3MgJiBFRkxHX1ZJRiApCi0gICAgICAgICAgICAgICAgc3JjLnZhbCB8PSBFRkxHX0lGOwor ICAgICAgICAgICAgc3JjLnZhbCA9IChfcmVncy5mbGFncyAmIH5YODZfRUZMQUdTX0lGKSB8IFg4 Nl9FRkxBR1NfSU9QTDsKKyAgICAgICAgICAgIGlmICggX3JlZ3MuX2VmbGFncyAmIFg4Nl9FRkxB R1NfVklGICkKKyAgICAgICAgICAgICAgICBzcmMudmFsIHw9IFg4Nl9FRkxBR1NfSUY7CiAgICAg ICAgIH0KICAgICAgICAgZWxzZQotICAgICAgICAgICAgc3JjLnZhbCA9IF9yZWdzLnIoZmxhZ3Mp ICYgfihFRkxHX1ZNIHwgRUZMR19SRik7CisgICAgICAgICAgICBzcmMudmFsID0gX3JlZ3Mucihm bGFncykgJiB+KFg4Nl9FRkxBR1NfVk0gfCBYODZfRUZMQUdTX1JGKTsKICAgICAgICAgZ290byBw dXNoOwogCiAgICAgY2FzZSAweDlkOiAvKiBwb3BmICovIHsKLSAgICAgICAgdWludDMyX3QgbWFz ayA9IEVGTEdfVklQIHwgRUZMR19WSUYgfCBFRkxHX1ZNOworICAgICAgICB1aW50MzJfdCBtYXNr ID0gWDg2X0VGTEFHU19WSVAgfCBYODZfRUZMQUdTX1ZJRiB8IFg4Nl9FRkxBR1NfVk07CiAKICAg ICAgICAgY3I0ID0gMDsKICAgICAgICAgaWYgKCAhbW9kZV9yaW5nMCgpICkKICAgICAgICAgewot ICAgICAgICAgICAgaWYgKCBfcmVncy5fZWZsYWdzICYgRUZMR19WTSApCisgICAgICAgICAgICBp ZiAoIF9yZWdzLl9lZmxhZ3MgJiBYODZfRUZMQUdTX1ZNICkKICAgICAgICAgICAgIHsKICAgICAg ICAgICAgICAgICBpZiAoIG9wX2J5dGVzID09IDIgJiYgb3BzLT5yZWFkX2NyICkKICAgICAgICAg ICAgICAgICB7CkBAIC0zNDAwLDEyICszMzg2LDEyIEBAIHg4Nl9lbXVsYXRlKAogICAgICAgICAg ICAgICAgICAgICAgICAgZ290byBkb25lOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg ICAgICBnZW5lcmF0ZV9leGNlcHRpb25faWYoIShjcjQgJiBDUjRfVk1FKSAmJgotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNQVNLX0VYVFIoX3JlZ3MuX2VmbGFncywgRUZM R19JT1BMKSAhPSAzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNQVNL X0VYVFIoX3JlZ3MuX2VmbGFncywgWDg2X0VGTEFHU19JT1BMKSAhPSAzLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBFWENfR1AsIDApOwogICAgICAgICAgICAgfQotICAg ICAgICAgICAgbWFzayB8PSBFRkxHX0lPUEw7CisgICAgICAgICAgICBtYXNrIHw9IFg4Nl9FRkxB R1NfSU9QTDsKICAgICAgICAgICAgIGlmICggIW1vZGVfaW9wbCgpICkKLSAgICAgICAgICAgICAg ICBtYXNrIHw9IEVGTEdfSUY7CisgICAgICAgICAgICAgICAgbWFzayB8PSBYODZfRUZMQUdTX0lG OwogICAgICAgICB9CiAgICAgICAgIC8qIDY0LWJpdCBtb2RlOiBQT1AgZGVmYXVsdHMgdG8gYSA2 NC1iaXQgb3BlcmFuZC4gKi8KICAgICAgICAgaWYgKCBtb2RlXzY0Yml0KCkgJiYgKG9wX2J5dGVz ID09IDQpICkKQEAgLTM0MTgsMzIgKzM0MDQsMzMgQEAgeDg2X2VtdWxhdGUoCiAgICAgICAgICAg ICBkc3QudmFsID0gKHVpbnQxNl90KWRzdC52YWwgfCAoX3JlZ3MuX2VmbGFncyAmIDB4ZmZmZjAw MDB1KTsKICAgICAgICAgICAgIGlmICggY3I0ICYgQ1I0X1ZNRSApCiAgICAgICAgICAgICB7Ci0g ICAgICAgICAgICAgICAgaWYgKCBkc3QudmFsICYgRUZMR19JRiApCisgICAgICAgICAgICAgICAg aWYgKCBkc3QudmFsICYgWDg2X0VGTEFHU19JRiApCiAgICAgICAgICAgICAgICAgewotICAgICAg ICAgICAgICAgICAgICBnZW5lcmF0ZV9leGNlcHRpb25faWYoX3JlZ3MuX2VmbGFncyAmIEVGTEdf VklQLCBFWENfR1AsIDApOwotICAgICAgICAgICAgICAgICAgICBkc3QudmFsIHw9IEVGTEdfVklG OworICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZV9leGNlcHRpb25faWYoX3JlZ3MuX2VmbGFn cyAmIFg4Nl9FRkxBR1NfVklQLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgRVhDX0dQLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgZHN0LnZhbCB8PSBYODZfRUZM QUdTX1ZJRjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAg ICAgICAgICAgICAgICBkc3QudmFsICY9IH5FRkxHX1ZJRjsKLSAgICAgICAgICAgICAgICBtYXNr ICY9IH5FRkxHX1ZJRjsKKyAgICAgICAgICAgICAgICAgICAgZHN0LnZhbCAmPSB+WDg2X0VGTEFH U19WSUY7CisgICAgICAgICAgICAgICAgbWFzayAmPSB+WDg2X0VGTEFHU19WSUY7CiAgICAgICAg ICAgICB9CiAgICAgICAgIH0KICAgICAgICAgZHN0LnZhbCAmPSBFRkxBR1NfTU9ESUZJQUJMRTsK ICAgICAgICAgX3JlZ3MuX2VmbGFncyAmPSBtYXNrOwotICAgICAgICBfcmVncy5fZWZsYWdzIHw9 IChkc3QudmFsICYgfm1hc2spIHwgRUZMR19NQlM7CisgICAgICAgIF9yZWdzLl9lZmxhZ3MgfD0g KGRzdC52YWwgJiB+bWFzaykgfCBYODZfRUZMQUdTX01CUzsKICAgICAgICAgYnJlYWs7CiAgICAg fQogCiAgICAgY2FzZSAweDllOiAvKiBzYWhmICovCiAgICAgICAgIGlmICggbW9kZV82NGJpdCgp ICkKICAgICAgICAgICAgIHZjcHVfbXVzdF9oYXZlKGxhaGZfbG0pOwotICAgICAgICAqKHVpbnQ4 X3QgKikmX3JlZ3MuX2VmbGFncyA9IChfcmVncy5haCAmIEVGTEFHU19NQVNLKSB8IEVGTEdfTUJT OworICAgICAgICAqKHVpbnQ4X3QgKikmX3JlZ3MuX2VmbGFncyA9IChfcmVncy5haCAmIEVGTEFH U19NQVNLKSB8IFg4Nl9FRkxBR1NfTUJTOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgMHg5 ZjogLyogbGFoZiAqLwogICAgICAgICBpZiAoIG1vZGVfNjRiaXQoKSApCiAgICAgICAgICAgICB2 Y3B1X211c3RfaGF2ZShsYWhmX2xtKTsKLSAgICAgICAgX3JlZ3MuYWggPSAoX3JlZ3MuX2VmbGFn cyAmIEVGTEFHU19NQVNLKSB8IEVGTEdfTUJTOworICAgICAgICBfcmVncy5haCA9IChfcmVncy5f ZWZsYWdzICYgRUZMQUdTX01BU0spIHwgWDg2X0VGTEFHU19NQlM7CiAgICAgICAgIGJyZWFrOwog CiAgICAgY2FzZSAweGE0IC4uLiAweGE1OiAvKiBtb3ZzICovIHsKQEAgLTM0ODcsOCArMzQ3NCw4 IEBAIHg4Nl9lbXVsYXRlKAogICAgICAgICBwdXRfcmVwX3ByZWZpeCgxKTsKICAgICAgICAgLyog Y21wOiBkc3QgLSBzcmMgPT0+IHNyYz0qJSVlZGksZHN0PSolJWVzaSA9PT4gKiUlZXNpIC0gKiUl ZWRpICovCiAgICAgICAgIGVtdWxhdGVfMm9wX1NyY1YoImNtcCIsIHNyYywgZHN0LCBfcmVncy5f ZWZsYWdzKTsKLSAgICAgICAgaWYgKCAocmVwZV9wcmVmaXgoKSAmJiAhKF9yZWdzLl9lZmxhZ3Mg JiBFRkxHX1pGKSkgfHwKLSAgICAgICAgICAgICAocmVwbmVfcHJlZml4KCkgJiYgKF9yZWdzLl9l ZmxhZ3MgJiBFRkxHX1pGKSkgKQorICAgICAgICBpZiAoIChyZXBlX3ByZWZpeCgpICYmICEoX3Jl Z3MuX2VmbGFncyAmIFg4Nl9FRkxBR1NfWkYpKSB8fAorICAgICAgICAgICAgIChyZXBuZV9wcmVm aXgoKSAmJiAoX3JlZ3MuX2VmbGFncyAmIFg4Nl9FRkxBR1NfWkYpKSApCiAgICAgICAgICAgICBf cmVncy5yKGlwKSA9IG5leHRfZWlwOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0zNTM3LDgg KzM1MjQsOCBAQCB4ODZfZW11bGF0ZSgKICAgICAgICAgLyogY21wOiAlJWVheCAtIColJWVkaSA9 PT4gc3JjPSUlZWF4LGRzdD0qJSVlZGkgPT0+IHNyYyAtIGRzdCAqLwogICAgICAgICBkc3QuYnl0 ZXMgPSBzcmMuYnl0ZXM7CiAgICAgICAgIGVtdWxhdGVfMm9wX1NyY1YoImNtcCIsIGRzdCwgc3Jj LCBfcmVncy5fZWZsYWdzKTsKLSAgICAgICAgaWYgKCAocmVwZV9wcmVmaXgoKSAmJiAhKF9yZWdz Ll9lZmxhZ3MgJiBFRkxHX1pGKSkgfHwKLSAgICAgICAgICAgICAocmVwbmVfcHJlZml4KCkgJiYg KF9yZWdzLl9lZmxhZ3MgJiBFRkxHX1pGKSkgKQorICAgICAgICBpZiAoIChyZXBlX3ByZWZpeCgp ICYmICEoX3JlZ3MuX2VmbGFncyAmIFg4Nl9FRkxBR1NfWkYpKSB8fAorICAgICAgICAgICAgIChy ZXBuZV9wcmVmaXgoKSAmJiAoX3JlZ3MuX2VmbGFncyAmIFg4Nl9FRkxBR1NfWkYpKSApCiAgICAg ICAgICAgICBfcmVncy5yKGlwKSA9IG5leHRfZWlwOwogICAgICAgICBicmVhazsKICAgICB9CkBA IC0zNjgzLDcgKzM2NzAsNyBAQCB4ODZfZW11bGF0ZSgKICAgICAgICAgZ290byBkb25lOwogCiAg ICAgY2FzZSAweGNlOiAvKiBpbnRvICovCi0gICAgICAgIGlmICggIShfcmVncy5fZWZsYWdzICYg RUZMR19PRikgKQorICAgICAgICBpZiAoICEoX3JlZ3MuX2VmbGFncyAmIFg4Nl9FRkxBR1NfT0Yp ICkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBzcmMudmFsID0gRVhDX09GOwogICAgICAg ICBzd2ludF90eXBlID0geDg2X3N3aW50X2ludG87CkBAIC0zNjkxLDcgKzM2NzgsNyBAQCB4ODZf ZW11bGF0ZSgKIAogICAgIGNhc2UgMHhjZjogLyogaXJldCAqLyB7CiAgICAgICAgIHVuc2lnbmVk IGxvbmcgc2VsLCBlaXAsIGVmbGFnczsKLSAgICAgICAgdWludDMyX3QgbWFzayA9IEVGTEdfVklQ IHwgRUZMR19WSUYgfCBFRkxHX1ZNOworICAgICAgICB1aW50MzJfdCBtYXNrID0gWDg2X0VGTEFH U19WSVAgfCBYODZfRUZMQUdTX1ZJRiB8IFg4Nl9FRkxBR1NfVk07CiAKICAgICAgICAgZmFpbF9p ZighaW5fcmVhbG1vZGUoY3R4dCwgb3BzKSk7CiAgICAgICAgIGlmICggKHJjID0gcmVhZF91bG9u Zyh4ODZfc2VnX3NzLCBzcF9wb3N0X2luYyhvcF9ieXRlcyksCkBAIC0zNzA1LDcgKzM2OTIsNyBA QCB4ODZfZW11bGF0ZSgKICAgICAgICAgICAgIGVmbGFncyA9ICh1aW50MTZfdCllZmxhZ3MgfCAo X3JlZ3MuX2VmbGFncyAmIDB4ZmZmZjAwMDB1KTsKICAgICAgICAgZWZsYWdzICY9IEVGTEFHU19N T0RJRklBQkxFOwogICAgICAgICBfcmVncy5fZWZsYWdzICY9IG1hc2s7Ci0gICAgICAgIF9yZWdz Ll9lZmxhZ3MgfD0gKGVmbGFncyAmIH5tYXNrKSB8IEVGTEdfTUJTOworICAgICAgICBfcmVncy5f ZWZsYWdzIHw9IChlZmxhZ3MgJiB+bWFzaykgfCBYODZfRUZMQUdTX01CUzsKICAgICAgICAgaWYg KCAocmMgPSBsb2FkX3NlZyh4ODZfc2VnX2NzLCBzZWwsIDEsICZjcywgY3R4dCwgb3BzKSkgfHwK ICAgICAgICAgICAgICAocmMgPSBjb21taXRfZmFyX2JyYW5jaCgmY3MsICh1aW50MzJfdCllaXAp KSApCiAgICAgICAgICAgICBnb3RvIGRvbmU7CkBAIC0zNzM3LDE1ICszNzI0LDE1IEBAIHg4Nl9l bXVsYXRlKAogICAgICAgICAgICAgZ2VuZXJhdGVfZXhjZXB0aW9uX2lmKCFiYXNlLCBFWENfREUp OwogICAgICAgICAgICAgX3JlZ3MuYXggPSAoKGFsIC8gYmFzZSkgPDwgOCkgfCAoYWwgJSBiYXNl KTsKICAgICAgICAgfQotICAgICAgICBfcmVncy5fZWZsYWdzICY9IH4oRUZMR19TRnxFRkxHX1pG fEVGTEdfUEYpOwotICAgICAgICBfcmVncy5fZWZsYWdzIHw9ICFfcmVncy5hbCA/IEVGTEdfWkYg OiAwOwotICAgICAgICBfcmVncy5fZWZsYWdzIHw9ICgoaW50OF90KV9yZWdzLmFsIDwgMCkgPyBF RkxHX1NGIDogMDsKLSAgICAgICAgX3JlZ3MuX2VmbGFncyB8PSBldmVuX3Bhcml0eShfcmVncy5h bCkgPyBFRkxHX1BGIDogMDsKKyAgICAgICAgX3JlZ3MuX2VmbGFncyAmPSB+KFg4Nl9FRkxBR1Nf U0Z8WDg2X0VGTEFHU19aRnxYODZfRUZMQUdTX1BGKTsKKyAgICAgICAgX3JlZ3MuX2VmbGFncyB8 PSAhX3JlZ3MuYWwgPyBYODZfRUZMQUdTX1pGIDogMDsKKyAgICAgICAgX3JlZ3MuX2VmbGFncyB8 PSAoKGludDhfdClfcmVncy5hbCA8IDApID8gWDg2X0VGTEFHU19TRiA6IDA7CisgICAgICAgIF9y ZWdzLl9lZmxhZ3MgfD0gZXZlbl9wYXJpdHkoX3JlZ3MuYWwpID8gWDg2X0VGTEFHU19QRiA6IDA7 CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIGNhc2UgMHhkNjogLyogc2FsYyAqLwotICAg ICAgICBfcmVncy5hbCA9IChfcmVncy5fZWZsYWdzICYgRUZMR19DRikgPyAweGZmIDogMHgwMDsK KyAgICAgICAgX3JlZ3MuYWwgPSAoX3JlZ3MuX2VmbGFncyAmIFg4Nl9FRkxBR1NfQ0YpID8gMHhm ZiA6IDB4MDA7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSAweGQ3OiAvKiB4bGF0ICovIHsK QEAgLTQyNjMsNyArNDI1MCw3IEBAIHg4Nl9lbXVsYXRlKAogCiAgICAgY2FzZSAweGUwIC4uLiAw eGUyOiAvKiBsb29weyx6LG56fSAqLyB7CiAgICAgICAgIHVuc2lnbmVkIGxvbmcgY291bnQgPSBn ZXRfbG9vcF9jb3VudCgmX3JlZ3MsIGFkX2J5dGVzKTsKLSAgICAgICAgaW50IGRvX2ptcCA9ICEo X3JlZ3MuX2VmbGFncyAmIEVGTEdfWkYpOyAvKiBsb29wbnogKi8KKyAgICAgICAgaW50IGRvX2pt cCA9ICEoX3JlZ3MuX2VmbGFncyAmIFg4Nl9FRkxBR1NfWkYpOyAvKiBsb29wbnogKi8KIAogICAg ICAgICBpZiAoIGIgPT0gMHhlMSApCiAgICAgICAgICAgICBkb19qbXAgPSAhZG9fam1wOyAvKiBs b29weiAqLwpAQCAtNDM1MSw3ICs0MzM4LDcgQEAgeDg2X2VtdWxhdGUoCiAgICAgICAgIGJyZWFr OwogCiAgICAgY2FzZSAweGY1OiAvKiBjbWMgKi8KLSAgICAgICAgX3JlZ3MuX2VmbGFncyBePSBF RkxHX0NGOworICAgICAgICBfcmVncy5fZWZsYWdzIF49IFg4Nl9FRkxBR1NfQ0Y7CiAgICAgICAg IGJyZWFrOwogCiAgICAgY2FzZSAweGY2IC4uLiAweGY3OiAvKiBHcnAzICovCkBAIC00MzcxLDIx ICs0MzU4LDIxIEBAIHg4Nl9lbXVsYXRlKAogICAgICAgICAgICAgZW11bGF0ZV8xb3AoIm5lZyIs IGRzdCwgX3JlZ3MuX2VmbGFncyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSA0 OiAvKiBtdWwgKi8KLSAgICAgICAgICAgIF9yZWdzLl9lZmxhZ3MgJj0gfihFRkxHX09GfEVGTEdf Q0YpOworICAgICAgICAgICAgX3JlZ3MuX2VmbGFncyAmPSB+KFg4Nl9FRkxBR1NfT0Z8WDg2X0VG TEFHU19DRik7CiAgICAgICAgICAgICBzd2l0Y2ggKCBkc3QuYnl0ZXMgKQogICAgICAgICAgICAg ewogICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgIGRzdC52YWwgPSBfcmVncy5h bDsKICAgICAgICAgICAgICAgICBkc3QudmFsICo9IHNyYy52YWw7CiAgICAgICAgICAgICAgICAg aWYgKCAodWludDhfdClkc3QudmFsICE9ICh1aW50MTZfdClkc3QudmFsICkKLSAgICAgICAgICAg ICAgICAgICAgX3JlZ3MuX2VmbGFncyB8PSBFRkxHX09GfEVGTEdfQ0Y7CisgICAgICAgICAgICAg ICAgICAgIF9yZWdzLl9lZmxhZ3MgfD0gWDg2X0VGTEFHU19PRnxYODZfRUZMQUdTX0NGOwogICAg ICAgICAgICAgICAgIGRzdC5ieXRlcyA9IDI7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg ICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgICAgZHN0LnZhbCA9IF9yZWdzLmF4OwogICAg ICAgICAgICAgICAgIGRzdC52YWwgKj0gc3JjLnZhbDsKICAgICAgICAgICAgICAgICBpZiAoICh1 aW50MTZfdClkc3QudmFsICE9ICh1aW50MzJfdClkc3QudmFsICkKLSAgICAgICAgICAgICAgICAg ICAgX3JlZ3MuX2VmbGFncyB8PSBFRkxHX09GfEVGTEdfQ0Y7CisgICAgICAgICAgICAgICAgICAg IF9yZWdzLl9lZmxhZ3MgfD0gWDg2X0VGTEFHU19PRnxYODZfRUZMQUdTX0NGOwogICAgICAgICAg ICAgICAgIF9yZWdzLmR4ID0gZHN0LnZhbCA+PiAxNjsKICAgICAgICAgICAgICAgICBicmVhazsK ICNpZmRlZiBfX3g4Nl82NF9fCkBAIC00MzkzLDcgKzQzODAsNyBAQCB4ODZfZW11bGF0ZSgKICAg ICAgICAgICAgICAgICBkc3QudmFsID0gX3JlZ3MuX2VheDsKICAgICAgICAgICAgICAgICBkc3Qu dmFsICo9IHNyYy52YWw7CiAgICAgICAgICAgICAgICAgaWYgKCAodWludDMyX3QpZHN0LnZhbCAh PSBkc3QudmFsICkKLSAgICAgICAgICAgICAgICAgICAgX3JlZ3MuX2VmbGFncyB8PSBFRkxHX09G fEVGTEdfQ0Y7CisgICAgICAgICAgICAgICAgICAgIF9yZWdzLl9lZmxhZ3MgfD0gWDg2X0VGTEFH U19PRnxYODZfRUZMQUdTX0NGOwogICAgICAgICAgICAgICAgIF9yZWdzLnJkeCA9IGRzdC52YWwg Pj4gMzI7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAjZW5kaWYKQEAgLTQ0MDEsNyArNDM4OCw3 IEBAIHg4Nl9lbXVsYXRlKAogICAgICAgICAgICAgICAgIHVbMF0gPSBzcmMudmFsOwogICAgICAg ICAgICAgICAgIHVbMV0gPSBfcmVncy5yKGF4KTsKICAgICAgICAgICAgICAgICBpZiAoIG11bF9k YmwodSkgKQotICAgICAgICAgICAgICAgICAgICBfcmVncy5fZWZsYWdzIHw9IEVGTEdfT0Z8RUZM R19DRjsKKyAgICAgICAgICAgICAgICAgICAgX3JlZ3MuX2VmbGFncyB8PSBYODZfRUZMQUdTX09G fFg4Nl9FRkxBR1NfQ0Y7CiAgICAgICAgICAgICAgICAgX3JlZ3MucihkeCkgPSB1WzFdOwogICAg ICAgICAgICAgICAgIGRzdC52YWwgPSB1WzBdOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAt NDQwOSwxMyArNDM5NiwxMyBAQCB4ODZfZW11bGF0ZSgKICAgICAgICAgICAgIGJyZWFrOwogICAg ICAgICBjYXNlIDU6IC8qIGltdWwgKi8KICAgICAgICAgaW11bDoKLSAgICAgICAgICAgIF9yZWdz Ll9lZmxhZ3MgJj0gfihFRkxHX09GfEVGTEdfQ0YpOworICAgICAgICAgICAgX3JlZ3MuX2VmbGFn cyAmPSB+KFg4Nl9FRkxBR1NfT0Z8WDg2X0VGTEFHU19DRik7CiAgICAgICAgICAgICBzd2l0Y2gg KCBkc3QuYnl0ZXMgKQogICAgICAgICAgICAgewogICAgICAgICAgICAgY2FzZSAxOgogICAgICAg ICAgICAgICAgIGRzdC52YWwgPSAoaW50OF90KXNyYy52YWwgKiAoaW50OF90KV9yZWdzLmFsOwog ICAgICAgICAgICAgICAgIGlmICggKGludDhfdClkc3QudmFsICE9IChpbnQxNl90KWRzdC52YWwg KQotICAgICAgICAgICAgICAgICAgICBfcmVncy5fZWZsYWdzIHw9IEVGTEdfT0Z8RUZMR19DRjsK KyAgICAgICAgICAgICAgICAgICAgX3JlZ3MuX2VmbGFncyB8PSBYODZfRUZMQUdTX09GfFg4Nl9F RkxBR1NfQ0Y7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGIgPiAweDZiKTsKICAgICAgICAgICAg ICAgICBkc3QuYnl0ZXMgPSAyOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDQyMyw3ICs0 NDEwLDcgQEAgeDg2X2VtdWxhdGUoCiAgICAgICAgICAgICAgICAgZHN0LnZhbCA9ICgodWludDMy X3QpKGludDE2X3Qpc3JjLnZhbCAqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodWludDMy X3QpKGludDE2X3QpX3JlZ3MuYXgpOwogICAgICAgICAgICAgICAgIGlmICggKGludDE2X3QpZHN0 LnZhbCAhPSAoaW50MzJfdClkc3QudmFsICkKLSAgICAgICAgICAgICAgICAgICAgX3JlZ3MuX2Vm bGFncyB8PSBFRkxHX09GfEVGTEdfQ0Y7CisgICAgICAgICAgICAgICAgICAgIF9yZWdzLl9lZmxh Z3MgfD0gWDg2X0VGTEFHU19PRnxYODZfRUZMQUdTX0NGOwogICAgICAgICAgICAgICAgIGlmICgg YiA+IDB4NmIgKQogICAgICAgICAgICAgICAgICAgICBfcmVncy5keCA9IGRzdC52YWwgPj4gMTY7 CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC00NDMyLDcgKzQ0MTksNyBAQCB4ODZfZW11bGF0 ZSgKICAgICAgICAgICAgICAgICBkc3QudmFsID0gKCh1aW50NjRfdCkoaW50MzJfdClzcmMudmFs ICoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1aW50NjRfdCkoaW50MzJfdClfcmVncy5f ZWF4KTsKICAgICAgICAgICAgICAgICBpZiAoIChpbnQzMl90KWRzdC52YWwgIT0gZHN0LnZhbCAp Ci0gICAgICAgICAgICAgICAgICAgIF9yZWdzLl9lZmxhZ3MgfD0gRUZMR19PRnxFRkxHX0NGOwor ICAgICAgICAgICAgICAgICAgICBfcmVncy5fZWZsYWdzIHw9IFg4Nl9FRkxBR1NfT0Z8WDg2X0VG TEFHU19DRjsKICAgICAgICAgICAgICAgICBpZiAoIGIgPiAweDZiICkKICAgICAgICAgICAgICAg ICAgICAgX3JlZ3MucmR4ID0gZHN0LnZhbCA+PiAzMjsKICAgICAgICAgICAgICAgICBicmVhazsK QEAgLTQ0NDEsNyArNDQyOCw3IEBAIHg4Nl9lbXVsYXRlKAogICAgICAgICAgICAgICAgIHVbMF0g PSBzcmMudmFsOwogICAgICAgICAgICAgICAgIHVbMV0gPSBfcmVncy5yKGF4KTsKICAgICAgICAg ICAgICAgICBpZiAoIGltdWxfZGJsKHUpICkKLSAgICAgICAgICAgICAgICAgICAgX3JlZ3MuX2Vm bGFncyB8PSBFRkxHX09GfEVGTEdfQ0Y7CisgICAgICAgICAgICAgICAgICAgIF9yZWdzLl9lZmxh Z3MgfD0gWDg2X0VGTEFHU19PRnxYODZfRUZMQUdTX0NGOwogICAgICAgICAgICAgICAgIGlmICgg YiA+IDB4NmIgKQogICAgICAgICAgICAgICAgICAgICBfcmVncy5yKGR4KSA9IHVbMV07CiAgICAg ICAgICAgICAgICAgZHN0LnZhbCA9IHVbMF07CkBAIC00NTQyLDQ2ICs0NTI5LDQ3IEBAIHg4Nl9l bXVsYXRlKAogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgMHhmODogLyogY2xjICovCi0gICAg ICAgIF9yZWdzLl9lZmxhZ3MgJj0gfkVGTEdfQ0Y7CisgICAgICAgIF9yZWdzLl9lZmxhZ3MgJj0g flg4Nl9FRkxBR1NfQ0Y7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSAweGY5OiAvKiBzdGMg Ki8KLSAgICAgICAgX3JlZ3MuX2VmbGFncyB8PSBFRkxHX0NGOworICAgICAgICBfcmVncy5fZWZs YWdzIHw9IFg4Nl9FRkxBR1NfQ0Y7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSAweGZhOiAv KiBjbGkgKi8KICAgICAgICAgaWYgKCBtb2RlX2lvcGwoKSApCi0gICAgICAgICAgICBfcmVncy5f ZWZsYWdzICY9IH5FRkxHX0lGOworICAgICAgICAgICAgX3JlZ3MuX2VmbGFncyAmPSB+WDg2X0VG TEFHU19JRjsKICAgICAgICAgZWxzZQogICAgICAgICB7CiAgICAgICAgICAgICBnZW5lcmF0ZV9l eGNlcHRpb25faWYoIW1vZGVfdmlmKCksIEVYQ19HUCwgMCk7Ci0gICAgICAgICAgICBfcmVncy5f ZWZsYWdzICY9IH5FRkxHX1ZJRjsKKyAgICAgICAgICAgIF9yZWdzLl9lZmxhZ3MgJj0gflg4Nl9F RkxBR1NfVklGOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSAweGZiOiAv KiBzdGkgKi8KICAgICAgICAgaWYgKCBtb2RlX2lvcGwoKSApCiAgICAgICAgIHsKLSAgICAgICAg ICAgIGlmICggIShfcmVncy5fZWZsYWdzICYgRUZMR19JRikgKQorICAgICAgICAgICAgaWYgKCAh KF9yZWdzLl9lZmxhZ3MgJiBYODZfRUZMQUdTX0lGKSApCiAgICAgICAgICAgICAgICAgY3R4dC0+ cmV0aXJlLnN0aSA9IHRydWU7Ci0gICAgICAgICAgICBfcmVncy5fZWZsYWdzIHw9IEVGTEdfSUY7 CisgICAgICAgICAgICBfcmVncy5fZWZsYWdzIHw9IFg4Nl9FRkxBR1NfSUY7CiAgICAgICAgIH0K ICAgICAgICAgZWxzZQogICAgICAgICB7Ci0gICAgICAgICAgICBnZW5lcmF0ZV9leGNlcHRpb25f aWYoKF9yZWdzLl9lZmxhZ3MgJiBFRkxHX1ZJUCkgfHwgIW1vZGVfdmlmKCksCisgICAgICAgICAg ICBnZW5lcmF0ZV9leGNlcHRpb25faWYoKF9yZWdzLl9lZmxhZ3MgJiBYODZfRUZMQUdTX1ZJUCkg fHwKKwkJCQkgICFtb2RlX3ZpZigpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEVYQ19HUCwgMCk7Ci0gICAgICAgICAgICBpZiAoICEoX3JlZ3MuX2VmbGFncyAmIEVGTEdfVklG KSApCisgICAgICAgICAgICBpZiAoICEoX3JlZ3MuX2VmbGFncyAmIFg4Nl9FRkxBR1NfVklGKSAp CiAgICAgICAgICAgICAgICAgY3R4dC0+cmV0aXJlLnN0aSA9IHRydWU7Ci0gICAgICAgICAgICBf cmVncy5fZWZsYWdzIHw9IEVGTEdfVklGOworICAgICAgICAgICAgX3JlZ3MuX2VmbGFncyB8PSBY ODZfRUZMQUdTX1ZJRjsKICAgICAgICAgfQogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgMHhm YzogLyogY2xkICovCi0gICAgICAgIF9yZWdzLl9lZmxhZ3MgJj0gfkVGTEdfREY7CisgICAgICAg IF9yZWdzLl9lZmxhZ3MgJj0gflg4Nl9FRkxBR1NfREY7CiAgICAgICAgIGJyZWFrOwogCiAgICAg Y2FzZSAweGZkOiAvKiBzdGQgKi8KLSAgICAgICAgX3JlZ3MuX2VmbGFncyB8PSBFRkxHX0RGOwor ICAgICAgICBfcmVncy5fZWZsYWdzIHw9IFg4Nl9FRkxBR1NfREY7CiAgICAgICAgIGJyZWFrOwog CiAgICAgY2FzZSAweGZlOiAvKiBHcnA0ICovCkBAIC00NjQzLDcgKzQ2MzEsNyBAQCB4ODZfZW11 bGF0ZSgKICAgICAgICAgICAgICAgICBnb3RvIGRvbmU7CiAgICAgICAgICAgICBicmVhazsKICAg ICAgICAgY2FzZSA0OiAvKiB2ZXJyIC8gdmVydyAqLwotICAgICAgICAgICAgX3JlZ3MuX2VmbGFn cyAmPSB+RUZMR19aRjsKKyAgICAgICAgICAgIF9yZWdzLl9lZmxhZ3MgJj0gflg4Nl9FRkxBR1Nf WkY7CiAgICAgICAgICAgICBzd2l0Y2ggKCByYyA9IHByb3Rtb2RlX2xvYWRfc2VnKHg4Nl9zZWdf bm9uZSwgc3JjLnZhbCwgZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICZzcmVnLCBjdHh0LCBvcHMpICkKICAgICAgICAgICAgIHsKQEAgLTQ2NTEsNyAr NDYzOSw3IEBAIHg4Nl9lbXVsYXRlKAogICAgICAgICAgICAgICAgIGlmICggc3JlZy5hdHRyLmZp ZWxkcy5zICYmCiAgICAgICAgICAgICAgICAgICAgICAoKG1vZHJtX3JlZyAmIDEpID8gKChzcmVn LmF0dHIuZmllbGRzLnR5cGUgJiAweGEpID09IDB4MikKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgOiAoKHNyZWcuYXR0ci5maWVsZHMudHlwZSAmIDB4YSkgIT0gMHg4KSkg KQotICAgICAgICAgICAgICAgICAgICBfcmVncy5fZWZsYWdzIHw9IEVGTEdfWkY7CisgICAgICAg ICAgICAgICAgICAgIF9yZWdzLl9lZmxhZ3MgfD0gWDg2X0VGTEFHU19aRjsKICAgICAgICAgICAg ICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgWDg2RU1VTF9FWENFUFRJT046CiAgICAgICAg ICAgICAgICAgaWYgKCBjdHh0LT5ldmVudF9wZW5kaW5nICkKQEAgLTQ2ODEsOSArNDY2OSw5IEBA IHg4Nl9lbXVsYXRlKAogICAgICAgICAgICAgdmNwdV9tdXN0X2hhdmUoc21hcCk7CiAgICAgICAg ICAgICBnZW5lcmF0ZV9leGNlcHRpb25faWYodmV4LnBmeCB8fCAhbW9kZV9yaW5nMCgpLCBFWENf VUQpOwogCi0gICAgICAgICAgICBfcmVncy5fZWZsYWdzICY9IH5FRkxHX0FDOworICAgICAgICAg ICAgX3JlZ3MuX2VmbGFncyAmPSB+WDg2X0VGTEFHU19BQzsKICAgICAgICAgICAgIGlmICggbW9k cm0gPT0gMHhjYiApCi0gICAgICAgICAgICAgICAgX3JlZ3MuX2VmbGFncyB8PSBFRkxHX0FDOwor ICAgICAgICAgICAgICAgIF9yZWdzLl9lZmxhZ3MgfD0gWDg2X0VGTEFHU19BQzsKICAgICAgICAg ICAgIGdvdG8gY29tcGxldGVfaW5zbjsKIAogI2lmZGVmIF9fWEVOX18KQEAgLTQ3MTcsNyArNDcw NSw3IEBAIHg4Nl9lbXVsYXRlKAogICAgICAgICAgICAgZ2VuZXJhdGVfZXhjZXB0aW9uX2lmKCF2 Y3B1X2hhc19ydG0oKSAmJiAhdmNwdV9oYXNfaGxlKCksCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgRVhDX1VEKTsKICAgICAgICAgICAgIC8qIE5laXRoZXIgSExFIG5vciBSVE0g Y2FuIGJlIGFjdGl2ZSB3aGVuIHdlIGdldCBoZXJlLiAqLwotICAgICAgICAgICAgX3JlZ3MuX2Vm bGFncyB8PSBFRkxHX1pGOworICAgICAgICAgICAgX3JlZ3MuX2VmbGFncyB8PSBYODZfRUZMQUdT X1pGOwogICAgICAgICAgICAgZ290byBjb21wbGV0ZV9pbnNuOwogCiAgICAgICAgIGNhc2UgMHhk ZjogLyogaW52bHBnYSAqLwpAQCAtNDg2OCw3ICs0ODU2LDcgQEAgeDg2X2VtdWxhdGUoCiAKICAg ICBjYXNlIFg4NkVNVUxfT1BDKDB4MGYsIDB4MDIpOiAvKiBsYXIgKi8KICAgICAgICAgZ2VuZXJh dGVfZXhjZXB0aW9uX2lmKCFpbl9wcm90bW9kZShjdHh0LCBvcHMpLCBFWENfVUQpOwotICAgICAg ICBfcmVncy5fZWZsYWdzICY9IH5FRkxHX1pGOworICAgICAgICBfcmVncy5fZWZsYWdzICY9IH5Y ODZfRUZMQUdTX1pGOwogICAgICAgICBzd2l0Y2ggKCByYyA9IHByb3Rtb2RlX2xvYWRfc2VnKHg4 Nl9zZWdfbm9uZSwgc3JjLnZhbCwgZmFsc2UsICZzcmVnLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGN0eHQsIG9wcykgKQogICAgICAgICB7CkBAIC00ODg4LDEyICs0 ODc2LDEyIEBAIHg4Nl9lbXVsYXRlKAogICAgICAgICAgICAgICAgIGNhc2UgMHgwOTogLyogYXZh aWxhYmxlIDMyLzY0LWJpdCBUU1MgKi8KICAgICAgICAgICAgICAgICBjYXNlIDB4MGI6IC8qIGJ1 c3kgMzIvNjQtYml0IFRTUyAqLwogICAgICAgICAgICAgICAgIGNhc2UgMHgwYzogLyogMzIvNjQt Yml0IGNhbGwgZ2F0ZSAqLwotICAgICAgICAgICAgICAgICAgICBfcmVncy5fZWZsYWdzIHw9IEVG TEdfWkY7CisgICAgICAgICAgICAgICAgICAgIF9yZWdzLl9lZmxhZ3MgfD0gWDg2X0VGTEFHU19a RjsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAg ICAgICAgfQogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIF9yZWdzLl9lZmxhZ3Mg fD0gRUZMR19aRjsKKyAgICAgICAgICAgICAgICBfcmVncy5fZWZsYWdzIHw9IFg4Nl9FRkxBR1Nf WkY7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBYODZFTVVMX0VYQ0VQVElPTjoK ICAgICAgICAgICAgIGlmICggY3R4dC0+ZXZlbnRfcGVuZGluZyApCkBAIC00OTA2LDcgKzQ4OTQs NyBAQCB4ODZfZW11bGF0ZSgKICAgICAgICAgICAgIHJjID0gWDg2RU1VTF9PS0FZOwogICAgICAg ICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKCBfcmVncy5fZWZsYWdzICYgRUZM R19aRiApCisgICAgICAgIGlmICggX3JlZ3MuX2VmbGFncyAmIFg4Nl9FRkxBR1NfWkYgKQogICAg ICAgICAgICAgZHN0LnZhbCA9ICgoc3JlZy5hdHRyLmJ5dGVzICYgMHhmZikgPDwgOCkgfAogICAg ICAgICAgICAgICAgICAgICAgICgoc3JlZy5saW1pdCA+PiAoc3JlZy5hdHRyLmZpZWxkcy5nID8g MTIgOiAwKSkgJgogICAgICAgICAgICAgICAgICAgICAgICAweGYwMDAwKSB8CkBAIC00OTE3LDcg KzQ5MDUsNyBAQCB4ODZfZW11bGF0ZSgKIAogICAgIGNhc2UgWDg2RU1VTF9PUEMoMHgwZiwgMHgw Myk6IC8qIGxzbCAqLwogICAgICAgICBnZW5lcmF0ZV9leGNlcHRpb25faWYoIWluX3Byb3Rtb2Rl KGN0eHQsIG9wcyksIEVYQ19VRCk7Ci0gICAgICAgIF9yZWdzLl9lZmxhZ3MgJj0gfkVGTEdfWkY7 CisgICAgICAgIF9yZWdzLl9lZmxhZ3MgJj0gflg4Nl9FRkxBR1NfWkY7CiAgICAgICAgIHN3aXRj aCAoIHJjID0gcHJvdG1vZGVfbG9hZF9zZWcoeDg2X3NlZ19ub25lLCBzcmMudmFsLCBmYWxzZSwg JnNyZWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4dCwgb3Bz KSApCiAgICAgICAgIHsKQEAgLTQ5MzQsMTIgKzQ5MjIsMTIgQEAgeDg2X2VtdWxhdGUoCiAgICAg ICAgICAgICAgICAgY2FzZSAweDAyOiAvKiBMRFQgKi8KICAgICAgICAgICAgICAgICBjYXNlIDB4 MDk6IC8qIGF2YWlsYWJsZSAzMi82NC1iaXQgVFNTICovCiAgICAgICAgICAgICAgICAgY2FzZSAw eDBiOiAvKiBidXN5IDMyLzY0LWJpdCBUU1MgKi8KLSAgICAgICAgICAgICAgICAgICAgX3JlZ3Mu X2VmbGFncyB8PSBFRkxHX1pGOworICAgICAgICAgICAgICAgICAgICBfcmVncy5fZWZsYWdzIHw9 IFg4Nl9FRkxBR1NfWkY7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg ICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBf cmVncy5fZWZsYWdzIHw9IEVGTEdfWkY7CisgICAgICAgICAgICAgICAgX3JlZ3MuX2VmbGFncyB8 PSBYODZfRUZMQUdTX1pGOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgWDg2RU1V TF9FWENFUFRJT046CiAgICAgICAgICAgICBpZiAoIGN0eHQtPmV2ZW50X3BlbmRpbmcgKQpAQCAt NDk1Miw3ICs0OTQwLDcgQEAgeDg2X2VtdWxhdGUoCiAgICAgICAgICAgICByYyA9IFg4NkVNVUxf T0tBWTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGlmICggX3JlZ3Mu X2VmbGFncyAmIEVGTEdfWkYgKQorICAgICAgICBpZiAoIF9yZWdzLl9lZmxhZ3MgJiBYODZfRUZM QUdTX1pGICkKICAgICAgICAgICAgIGRzdC52YWwgPSBzcmVnLmxpbWl0OwogICAgICAgICBlbHNl CiAgICAgICAgICAgICBkc3QudHlwZSA9IE9QX05PTkU7CkBAIC00OTg4LDcgKzQ5NzYsNyBAQCB4 ODZfZW11bGF0ZSgKICAgICAgICAgICAgIGNzLmF0dHIuYnl0ZXMgPSAweGE5YjsgLyogTCtEQitQ K1MrQ29kZSAqLwogCiAgICAgICAgICAgICBfcmVncy5yY3ggPSBfcmVncy5yaXA7Ci0gICAgICAg ICAgICBfcmVncy5yMTEgPSBfcmVncy5fZWZsYWdzICYgfkVGTEdfUkY7CisgICAgICAgICAgICBf cmVncy5yMTEgPSBfcmVncy5fZWZsYWdzICYgflg4Nl9FRkxBR1NfUkY7CiAKICAgICAgICAgICAg IGlmICggKHJjID0gb3BzLT5yZWFkX21zcihtb2RlXzY0Yml0KCkgPyBNU1JfTFNUQVIgOiBNU1Jf Q1NUQVIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1zcl9jb250ZW50 LCBjdHh0KSkgIT0gMCApCkBAIC00OTk3LDcgKzQ5ODUsNyBAQCB4ODZfZW11bGF0ZSgKIAogICAg ICAgICAgICAgaWYgKCAocmMgPSBvcHMtPnJlYWRfbXNyKE1TUl9GTUFTSywgJm1zcl9jb250ZW50 LCBjdHh0KSkgIT0gMCApCiAgICAgICAgICAgICAgICAgZ290byBkb25lOwotICAgICAgICAgICAg X3JlZ3MuX2VmbGFncyAmPSB+KG1zcl9jb250ZW50IHwgRUZMR19SRik7CisgICAgICAgICAgICBf cmVncy5fZWZsYWdzICY9IH4obXNyX2NvbnRlbnQgfCBYODZfRUZMQUdTX1JGKTsKICAgICAgICAg fQogICAgICAgICBlbHNlCiAjZW5kaWYKQEAgLTUwMDYsNyArNDk5NCw3IEBAIHg4Nl9lbXVsYXRl KAogCiAgICAgICAgICAgICBfcmVncy5yKGN4KSA9IF9yZWdzLl9laXA7CiAgICAgICAgICAgICBf cmVncy5fZWlwID0gbXNyX2NvbnRlbnQ7Ci0gICAgICAgICAgICBfcmVncy5fZWZsYWdzICY9IH4o RUZMR19WTSB8IEVGTEdfSUYgfCBFRkxHX1JGKTsKKyAgICAgICAgICAgIF9yZWdzLl9lZmxhZ3Mg Jj0gfihYODZfRUZMQUdTX1ZNIHwgWDg2X0VGTEFHU19JRiB8IFg4Nl9FRkxBR1NfUkYpOwogICAg ICAgICB9CiAKICAgICAgICAgZmFpbF9pZihvcHMtPndyaXRlX3NlZ21lbnQgPT0gTlVMTCk7CkBA IC01MDE2LDIwICs1MDA0LDIwIEBAIHg4Nl9lbXVsYXRlKAogCiAgICAgICAgIC8qCiAgICAgICAg ICAqIFNZU0NBTEwgKHVubGlrZSBtb3N0IGluc3RydWN0aW9ucykgZXZhbHVhdGVzIGl0cyBzaW5n bGVzdGVwIGFjdGlvbgotICAgICAgICAgKiBiYXNlZCBvbiB0aGUgcmVzdWx0aW5nIEVGTEdfVEYs IG5vdCB0aGUgc3RhcnRpbmcgRUZMR19URi4KKyAgICAgICAgICogYmFzZWQgb24gdGhlIHJlc3Vs dGluZyBYODZfRUZMQUdTX1RGLCBub3QgdGhlIHN0YXJ0aW5nIFg4Nl9FRkxBR1NfVEYuCiAgICAg ICAgICAqCiAgICAgICAgICAqIEFzIHRoZSAjREIgaXMgcmFpc2VkIGFmdGVyIHRoZSBDUEwgY2hh bmdlIGFuZCBiZWZvcmUgdGhlIE9TIGNhbgogICAgICAgICAgKiBzd2l0Y2ggc3RhY2ssIGl0IGlz IGEgbGFyZ2UgcmlzayBmb3IgcHJpdmlsZWdlIGVzY2FsYXRpb24uCiAgICAgICAgICAqCi0gICAg ICAgICAqIDY0Yml0IGtlcm5lbHMgc2hvdWxkIG1hc2sgRUZMR19URiBpbiBNU1JfRk1BU0sgdG8g YXZvaWQgYW55CisgICAgICAgICAqIDY0Yml0IGtlcm5lbHMgc2hvdWxkIG1hc2sgWDg2X0VGTEFH U19URiBpbiBNU1JfRk1BU0sgdG8gYXZvaWQgYW55CiAgICAgICAgICAqIHZ1bG5lcmFiaWxpdHku ICBSdW5uaW5nIHRoZSAjREIgaGFuZGxlciBvbiBhbiBJU1Qgc3RhY2sgaXMgYWxzbyBhCiAgICAg ICAgICAqIG1pdGlnYXRpb24uCiAgICAgICAgICAqCi0gICAgICAgICAqIDMyYml0IGtlcm5lbHMg aGF2ZSBubyBhYmlsaXR5IHRvIG1hc2sgRUZMR19URiBhdCBhbGwuICBUaGVpciBvbmx5Ci0gICAg ICAgICAqIG1pdGlnYXRpb24gaXMgdG8gdXNlIGEgdGFzayBnYXRlIGZvciBoYW5kbGluZyAjREIg KG9yIHRvIG5vdCB1c2UKLSAgICAgICAgICogZW5hYmxlIEVGRVIuU0NFIHRvIHN0YXJ0IHdpdGgp LgorICAgICAgICAgKiAzMmJpdCBrZXJuZWxzIGhhdmUgbm8gYWJpbGl0eSB0byBtYXNrIFg4Nl9F RkxBR1NfVEYgYXQgYWxsLgorICAgICAgICAgKiBUaGVpciBvbmx5IG1pdGlnYXRpb24gaXMgdG8g dXNlIGEgdGFzayBnYXRlIGZvciBoYW5kbGluZworICAgICAgICAgKiAjREIgKG9yIHRvIG5vdCB1 c2UgZW5hYmxlIEVGRVIuU0NFIHRvIHN0YXJ0IHdpdGgpLgogICAgICAgICAgKi8KLSAgICAgICAg c2luZ2xlc3RlcCA9IF9yZWdzLl9lZmxhZ3MgJiBFRkxHX1RGOworICAgICAgICBzaW5nbGVzdGVw ID0gX3JlZ3MuX2VmbGFncyAmIFg4Nl9FRkxBR1NfVEY7CiAKICAgICAgICAgYnJlYWs7CiAgICAg fQpAQCAtNTI2MCw3ICs1MjQ4LDcgQEAgeDg2X2VtdWxhdGUoCiAgICAgICAgIGlmICggbG0gPCAw ICkKICAgICAgICAgICAgIGdvdG8gY2Fubm90X2VtdWxhdGU7CiAKLSAgICAgICAgX3JlZ3MuX2Vm bGFncyAmPSB+KEVGTEdfVk0gfCBFRkxHX0lGIHwgRUZMR19SRik7CisgICAgICAgIF9yZWdzLl9l ZmxhZ3MgJj0gfihYODZfRUZMQUdTX1ZNIHwgWDg2X0VGTEFHU19JRiB8IFg4Nl9FRkxBR1NfUkYp OwogCiAgICAgICAgIGNzLnNlbCA9IG1zcl9jb250ZW50ICYgfjM7IC8qIFNFTEVDVE9SX1JQTF9N QVNLICovCiAgICAgICAgIGNzLmJhc2UgPSAwOyAgIC8qIGZsYXQgc2VnbWVudCAqLwpAQCAtNTI4 Niw3ICs1Mjc0LDcgQEAgeDg2X2VtdWxhdGUoCiAgICAgICAgICAgICBnb3RvIGRvbmU7CiAgICAg ICAgIF9yZWdzLnIoc3ApID0gbG0gPyBtc3JfY29udGVudCA6ICh1aW50MzJfdCltc3JfY29udGVu dDsKIAotICAgICAgICBzaW5nbGVzdGVwID0gX3JlZ3MuX2VmbGFncyAmIEVGTEdfVEY7CisgICAg ICAgIHNpbmdsZXN0ZXAgPSBfcmVncy5fZWZsYWdzICYgWDg2X0VGTEFHU19URjsKICAgICAgICAg YnJlYWs7CiAgICAgfQogCkBAIC01MzI4LDcgKzUzMTYsNyBAQCB4ODZfZW11bGF0ZSgKICAgICAg ICAgX3JlZ3MucihpcCkgPSBvcF9ieXRlcyA9PSA4ID8gX3JlZ3MucihkeCkgOiBfcmVncy5fZWR4 OwogICAgICAgICBfcmVncy5yKHNwKSA9IG9wX2J5dGVzID09IDggPyBfcmVncy5yKGN4KSA6IF9y ZWdzLl9lY3g7CiAKLSAgICAgICAgc2luZ2xlc3RlcCA9IF9yZWdzLl9lZmxhZ3MgJiBFRkxHX1RG OworICAgICAgICBzaW5nbGVzdGVwID0gX3JlZ3MuX2VmbGFncyAmIFg4Nl9FRkxBR1NfVEY7CiAg ICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAtNTUxNywxNCArNTUwNSwxNSBAQCB4ODZfZW11bGF0 ZSgKICAgICAgICAgICAgICAgICAgICAoKGRzdC5vcmlnX3ZhbCA8PCBzaGlmdCkgfAogICAgICAg ICAgICAgICAgICAgICAoKHNyYy52YWwgPj4gKHdpZHRoIC0gc2hpZnQpKSAmICgoMXVsbCA8PCBz aGlmdCkgLSAxKSkpKTsKICAgICAgICAgZHN0LnZhbCA9IHRydW5jYXRlX3dvcmQoZHN0LnZhbCwg ZHN0LmJ5dGVzKTsKLSAgICAgICAgX3JlZ3MuX2VmbGFncyAmPSB+KEVGTEdfT0Z8RUZMR19TRnxF RkxHX1pGfEVGTEdfUEZ8RUZMR19DRik7CisgICAgICAgIF9yZWdzLl9lZmxhZ3MgJj0gfihYODZf RUZMQUdTX09GfFg4Nl9FRkxBR1NfU0Z8WDg2X0VGTEFHU19aRnwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgIFg4Nl9FRkxBR1NfUEZ8WDg2X0VGTEFHU19DRik7CiAgICAgICAgIGlmICggKGRz dC52YWwgPj4gKChiICYgOCkgPyAoc2hpZnQgLSAxKSA6ICh3aWR0aCAtIHNoaWZ0KSkpICYgMSAp Ci0gICAgICAgICAgICBfcmVncy5fZWZsYWdzIHw9IEVGTEdfQ0Y7CisgICAgICAgICAgICBfcmVn cy5fZWZsYWdzIHw9IFg4Nl9FRkxBR1NfQ0Y7CiAgICAgICAgIGlmICggKChkc3QudmFsIF4gZHN0 Lm9yaWdfdmFsKSA+PiAod2lkdGggLSAxKSkgJiAxICkKLSAgICAgICAgICAgIF9yZWdzLl9lZmxh Z3MgfD0gRUZMR19PRjsKLSAgICAgICAgX3JlZ3MuX2VmbGFncyB8PSAoKGRzdC52YWwgPj4gKHdp ZHRoIC0gMSkpICYgMSkgPyBFRkxHX1NGIDogMDsKLSAgICAgICAgX3JlZ3MuX2VmbGFncyB8PSAo ZHN0LnZhbCA9PSAwKSA/IEVGTEdfWkYgOiAwOwotICAgICAgICBfcmVncy5fZWZsYWdzIHw9IGV2 ZW5fcGFyaXR5KGRzdC52YWwpID8gRUZMR19QRiA6IDA7CisgICAgICAgICAgICBfcmVncy5fZWZs YWdzIHw9IFg4Nl9FRkxBR1NfT0Y7CisgICAgICAgIF9yZWdzLl9lZmxhZ3MgfD0gKChkc3QudmFs ID4+ICh3aWR0aCAtIDEpKSAmIDEpID8gWDg2X0VGTEFHU19TRiA6IDA7CisgICAgICAgIF9yZWdz Ll9lZmxhZ3MgfD0gKGRzdC52YWwgPT0gMCkgPyBYODZfRUZMQUdTX1pGIDogMDsKKyAgICAgICAg X3JlZ3MuX2VmbGFncyB8PSBldmVuX3Bhcml0eShkc3QudmFsKSA/IFg4Nl9FRkxBR1NfUEYgOiAw OwogICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTU2MjQsNyArNTYxMyw3IEBAIHg4Nl9lbXVs YXRlKAogICAgICAgICBzcmMudmFsID0gX3JlZ3MucihheCk7CiAgICAgICAgIC8qIGNtcDogJSVl YXggLSBkc3QgPT0+IGRzdCBhbmQgc3JjIHN3YXBwZWQgZm9yIG1hY3JvIGludm9jYXRpb24gKi8K ICAgICAgICAgZW11bGF0ZV8yb3BfU3JjVigiY21wIiwgZHN0LCBzcmMsIF9yZWdzLl9lZmxhZ3Mp OwotICAgICAgICBpZiAoIF9yZWdzLl9lZmxhZ3MgJiBFRkxHX1pGICkKKyAgICAgICAgaWYgKCBf cmVncy5fZWZsYWdzICYgWDg2X0VGTEFHU19aRiApCiAgICAgICAgIHsKICAgICAgICAgICAgIC8q IFN1Y2Nlc3M6IHdyaXRlIGJhY2sgdG8gbWVtb3J5LiAqLwogICAgICAgICAgICAgZHN0LnZhbCA9 IHNyYy5vcmlnX3ZhbDsKQEAgLTU2NjMsNyArNTY1Miw3IEBAIHg4Nl9lbXVsYXRlKAogICAgICAg ICBhc20gKCAicG9wY250ICUxLCUwIiA6ICI9ciIgKGRzdC52YWwpIDogInJtIiAoc3JjLnZhbCkg KTsKICAgICAgICAgX3JlZ3MuX2VmbGFncyAmPSB+RUZMQUdTX01BU0s7CiAgICAgICAgIGlmICgg IWRzdC52YWwgKQotICAgICAgICAgICAgX3JlZ3MuX2VmbGFncyB8PSBFRkxHX1pGOworICAgICAg ICAgICAgX3JlZ3MuX2VmbGFncyB8PSBYODZfRUZMQUdTX1pGOwogICAgICAgICBicmVhazsKIAog ICAgIGNhc2UgWDg2RU1VTF9PUEMoMHgwZiwgMHhiYSk6IC8qIEdycDggKi8KQEAgLTU2ODgsMjEg KzU2NzcsMjEgQEAgeDg2X2VtdWxhdGUoCiAgICAgICAgIGFzbSAoICJic2YgJTIsJTAiIEFTTV9G TEFHX09VVCgsICI7IHNldHogJTEiKQogICAgICAgICAgICAgICA6ICI9ciIgKGRzdC52YWwpLCBB U01fRkxBR19PVVQoIj1AY2N6IiwgIj1xbSIpICh6ZikKICAgICAgICAgICAgICAgOiAicm0iIChz cmMudmFsKSApOwotICAgICAgICBfcmVncy5fZWZsYWdzICY9IH5FRkxHX1pGOworICAgICAgICBf cmVncy5fZWZsYWdzICY9IH5YODZfRUZMQUdTX1pGOwogICAgICAgICBpZiAoICh2ZXgucGZ4ID09 IHZleF9mMykgJiYgdmNwdV9oYXNfYm1pMSgpICkKICAgICAgICAgewotICAgICAgICAgICAgX3Jl Z3MuX2VmbGFncyAmPSB+RUZMR19DRjsKKyAgICAgICAgICAgIF9yZWdzLl9lZmxhZ3MgJj0gflg4 Nl9FRkxBR1NfQ0Y7CiAgICAgICAgICAgICBpZiAoIHpmICkKICAgICAgICAgICAgIHsKLSAgICAg ICAgICAgICAgICBfcmVncy5fZWZsYWdzIHw9IEVGTEdfQ0Y7CisgICAgICAgICAgICAgICAgX3Jl Z3MuX2VmbGFncyB8PSBYODZfRUZMQUdTX0NGOwogICAgICAgICAgICAgICAgIGRzdC52YWwgPSBv cF9ieXRlcyAqIDg7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIGlmICggIWRzdC52 YWwgKQotICAgICAgICAgICAgICAgIF9yZWdzLl9lZmxhZ3MgfD0gRUZMR19aRjsKKyAgICAgICAg ICAgICAgICBfcmVncy5fZWZsYWdzIHw9IFg4Nl9FRkxBR1NfWkY7CiAgICAgICAgIH0KICAgICAg ICAgZWxzZSBpZiAoIHpmICkKICAgICAgICAgewotICAgICAgICAgICAgX3JlZ3MuX2VmbGFncyB8 PSBFRkxHX1pGOworICAgICAgICAgICAgX3JlZ3MuX2VmbGFncyB8PSBYODZfRUZMQUdTX1pGOwog ICAgICAgICAgICAgZHN0LnR5cGUgPSBPUF9OT05FOwogICAgICAgICB9CiAgICAgICAgIGJyZWFr OwpAQCAtNTcxNSwyNSArNTcwNCwyNSBAQCB4ODZfZW11bGF0ZSgKICAgICAgICAgYXNtICggImJz ciAlMiwlMCIgQVNNX0ZMQUdfT1VUKCwgIjsgc2V0eiAlMSIpCiAgICAgICAgICAgICAgIDogIj1y IiAoZHN0LnZhbCksIEFTTV9GTEFHX09VVCgiPUBjY3oiLCAiPXFtIikgKHpmKQogICAgICAgICAg ICAgICA6ICJybSIgKHNyYy52YWwpICk7Ci0gICAgICAgIF9yZWdzLl9lZmxhZ3MgJj0gfkVGTEdf WkY7CisgICAgICAgIF9yZWdzLl9lZmxhZ3MgJj0gflg4Nl9FRkxBR1NfWkY7CiAgICAgICAgIGlm ICggKHZleC5wZnggPT0gdmV4X2YzKSAmJiB2Y3B1X2hhc19semNudCgpICkKICAgICAgICAgewot ICAgICAgICAgICAgX3JlZ3MuX2VmbGFncyAmPSB+RUZMR19DRjsKKyAgICAgICAgICAgIF9yZWdz Ll9lZmxhZ3MgJj0gflg4Nl9FRkxBR1NfQ0Y7CiAgICAgICAgICAgICBpZiAoIHpmICkKICAgICAg ICAgICAgIHsKLSAgICAgICAgICAgICAgICBfcmVncy5fZWZsYWdzIHw9IEVGTEdfQ0Y7CisgICAg ICAgICAgICAgICAgX3JlZ3MuX2VmbGFncyB8PSBYODZfRUZMQUdTX0NGOwogICAgICAgICAgICAg ICAgIGRzdC52YWwgPSBvcF9ieXRlcyAqIDg7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBl bHNlCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgZHN0LnZhbCA9IG9wX2J5dGVzICog OCAtIDEgLSBkc3QudmFsOwogICAgICAgICAgICAgICAgIGlmICggIWRzdC52YWwgKQotICAgICAg ICAgICAgICAgICAgICBfcmVncy5fZWZsYWdzIHw9IEVGTEdfWkY7CisgICAgICAgICAgICAgICAg ICAgIF9yZWdzLl9lZmxhZ3MgfD0gWDg2X0VGTEFHU19aRjsKICAgICAgICAgICAgIH0KICAgICAg ICAgfQogICAgICAgICBlbHNlIGlmICggemYgKQogICAgICAgICB7Ci0gICAgICAgICAgICBfcmVn cy5fZWZsYWdzIHw9IEVGTEdfWkY7CisgICAgICAgICAgICBfcmVncy5fZWZsYWdzIHw9IFg4Nl9F RkxBR1NfWkY7CiAgICAgICAgICAgICBkc3QudHlwZSA9IE9QX05PTkU7CiAgICAgICAgIH0KICAg ICAgICAgYnJlYWs7CkBAIC01ODA3LDcgKzU3OTYsNyBAQCB4ODZfZW11bGF0ZSgKICAgICAgICAg ICAgICAgICB9CiAgICAgICAgICAgICAgICAgX3JlZ3MuX2VmbGFncyAmPSB+RUZMQUdTX01BU0s7 CiAgICAgICAgICAgICAgICAgaWYgKCBjYXJyeSApCi0gICAgICAgICAgICAgICAgICAgIF9yZWdz Ll9lZmxhZ3MgfD0gRUZMR19DRjsKKyAgICAgICAgICAgICAgICAgICAgX3JlZ3MuX2VmbGFncyB8 PSBYODZfRUZMQUdTX0NGOwogICAgICAgICAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAKQEAgLTU4 NTAsNyArNTgzOSw3IEBAIHg4Nl9lbXVsYXRlKAogICAgICAgICAgICAgICAgIH0KICAgICAgICAg ICAgICAgICBfcmVncy5fZWZsYWdzICY9IH5FRkxBR1NfTUFTSzsKICAgICAgICAgICAgICAgICBp ZiAoIGNhcnJ5ICkKLSAgICAgICAgICAgICAgICAgICAgX3JlZ3MuX2VmbGFncyB8PSBFRkxHX0NG OworICAgICAgICAgICAgICAgICAgICBfcmVncy5fZWZsYWdzIHw9IFg4Nl9FRkxBR1NfQ0Y7CiAg ICAgICAgICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICAgICAgICAgICAgIH0KQEAgLTU4OTksNyAr NTg4OCw3IEBAIHg4Nl9lbXVsYXRlKAogICAgICAgICAgICAgLyogRXhwZWN0ZWQgIT0gYWN0dWFs OiBzdG9yZSBhY3R1YWwgdG8gckRYOnJBWCBhbmQgY2xlYXIgWkYuICovCiAgICAgICAgICAgICBf cmVncy5yKGF4KSA9ICEocmV4X3ByZWZpeCAmIFJFWF9XKSA/IG9sZC0+dTMyWzBdIDogb2xkLT51 NjRbMF07CiAgICAgICAgICAgICBfcmVncy5yKGR4KSA9ICEocmV4X3ByZWZpeCAmIFJFWF9XKSA/ IG9sZC0+dTMyWzFdIDogb2xkLT51NjRbMV07Ci0gICAgICAgICAgICBfcmVncy5fZWZsYWdzICY9 IH5FRkxHX1pGOworICAgICAgICAgICAgX3JlZ3MuX2VmbGFncyAmPSB+WDg2X0VGTEFHU19aRjsK ICAgICAgICAgfQogICAgICAgICBlbHNlCiAgICAgICAgIHsKQEAgLTU5MjEsNyArNTkxMCw3IEBA IHg4Nl9lbXVsYXRlKAogICAgICAgICAgICAgaWYgKCAocmMgPSBvcHMtPmNtcHhjaGcoZWEubWVt LnNlZywgZWEubWVtLm9mZiwgb2xkLCBhdXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBvcF9ieXRlcywgY3R4dCkpICE9IFg4NkVNVUxfT0tBWSApCiAgICAgICAgICAgICAg ICAgZ290byBkb25lOwotICAgICAgICAgICAgX3JlZ3MuX2VmbGFncyB8PSBFRkxHX1pGOworICAg ICAgICAgICAgX3JlZ3MuX2VmbGFncyB8PSBYODZfRUZMQUdTX1pGOwogICAgICAgICB9CiAgICAg ICAgIGJyZWFrOwogICAgIH0KQEAgLTYwNzAsNyArNjA1OSw3IEBAIHg4Nl9lbXVsYXRlKAogICAg IGNhc2UgWDg2RU1VTF9PUENfNjYoMHgwZjM4LCAweGY2KTogLyogYWRjeCByL20sciAqLwogICAg IGNhc2UgWDg2RU1VTF9PUENfRjMoMHgwZjM4LCAweGY2KTogLyogYWRveCByL20sciAqLwogICAg IHsKLSAgICAgICAgdW5zaWduZWQgaW50IG1hc2sgPSByZXBfcHJlZml4KCkgPyBFRkxHX09GIDog RUZMR19DRjsKKyAgICAgICAgdW5zaWduZWQgaW50IG1hc2sgPSByZXBfcHJlZml4KCkgPyBYODZf RUZMQUdTX09GIDogWDg2X0VGTEFHU19DRjsKICAgICAgICAgdW5zaWduZWQgaW50IGF1eCA9IF9y ZWdzLl9lZmxhZ3MgJiBtYXNrID8gfjAgOiAwOwogICAgICAgICBib29sIGNhcnJ5OwogCkBAIC02 MjYzLDcgKzYyNTIsNyBAQCB4ODZfZW11bGF0ZSgKICAgICAgICAgcmMgPSBYODZFTVVMX09LQVk7 CiAgICAgfQogCi0gICAgY3R4dC0+cmVncy0+X2VmbGFncyAmPSB+RUZMR19SRjsKKyAgICBjdHh0 LT5yZWdzLT5fZWZsYWdzICY9IH5YODZfRUZMQUdTX1JGOwogCiAgZG9uZToKICAgICBfcHV0X2Zw dSgpOwotLSAKMi4xMS4wCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpo dHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==