ZGlmZiAtLWdpdCBhL3N1cHdpc2RvbS9tYWluLmMgYi9zdXB3aXNkb20vbWFpbi5jCmluZGV4IGM1ZmRjOTcuLjkxMzhlMTYgMTAwNjQ0Ci0tLSBhL3N1cHdpc2RvbS9tYWluLmMKKysrIGIvc3Vwd2lzZG9tL21haW4uYwpAQCAtMzQsMTEgKzM0LDExIEBACiAgICAgc3BfY29tbXVuaWNhdGUoJlBPUyk7CiAgICAgaWYoUE9TLnBheW1vZGUgPT0gUEFZTU9ERV9RUkNPREUpCiAgICAgewotICAgICAgaWYodGljayAtIGxhc3R0aWNrID49IERFTEFZX1RJTUUxMDBtcykKLSAgICAgIHsKLSAgICAgICAgbGFzdHRpY2sgPSB0aWNrOwotICAgICAgICBzcF9xcmNvZGVfaGFuZGxlKCZQT1MsICZjYXJkV29ya1N0YXRlKTsKLSAgICAgIH0KKyAgICAgIC8vaWYodGljayAtIGxhc3R0aWNrID49IERFTEFZX1RJTUUxMDBtcykKKyAgICAgIC8veworICAgICAgLy8gbGFzdHRpY2sgPSB0aWNrOworICAgICAgc3BfcXJjb2RlX2hhbmRsZSgmUE9TLCAmY2FyZFdvcmtTdGF0ZSk7CisgICAgICAvL30KICAgICB9CiAgICAgZWxzZQogICAgIHsKZGlmZiAtLWdpdCBhL3N1cHdpc2RvbS9zcF9jb21tdW5pY2F0ZS5jIGIvc3Vwd2lzZG9tL3NwX2NvbW11bmljYXRlLmMKaW5kZXggMjU4YzkwZi4uMjhkZmU4MyAxMDA2NDQKLS0tIGEvc3Vwd2lzZG9tL3NwX2NvbW11bmljYXRlLmMKKysrIGIvc3Vwd2lzZG9tL3NwX2NvbW11bmljYXRlLmMKQEAgLTk0LDcgKzk0LDcgQEAKICAgdW5wYWNrX2ZpZWxkX3QgZmllbGQ7CiAgIHNwX3Byb3RvY29sX3Jlc3BvbnNlX3QgcmVzcDsKIAotICBkaXNwX2hpbnRfaW5mbyhwb3MsItX91NrJ7bfdyM/WpNbQIiwwKTsKKyAgZGlzcF9oaW50X2luZm9fdHdvKHBvcywiye233ci3yM/W0CIsIsfrydS1yC4uLiIsMCk7CiAgIHJldCA9IHNwX3VzYXJ0X3JlY3YocG9zLCAmcmVzcCwgQ09NTV9XQUlUX1RJTUUpOwogICBpZihyZXQpCiAgIHsKQEAgLTEzNiw3ICsxMzYsNyBAQAogICAgICAgY2FyZC0+ZmVlcGFyYS5mZWVfc3RhcnQgPSBmaWVsZC52YWwuaW50dmFsOwogICAgIH0KICAgfQotICBkaXNwX2hpbnRfaW5mbyhwb3MsIsntt93Iz9aks8m5piIsREVMQVlfVElNRTFzKTsKKyAgLy9kaXNwX2hpbnRfaW5mbyhwb3MsIsntt93Iz9aks8m5piIsREVMQVlfVElNRTFzKTsKICAgcmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL3N1cHdpc2RvbS9zcF9jb25zdW1lLmMgYi9zdXB3aXNkb20vc3BfY29uc3VtZS5jCmluZGV4IDc4ZGQwMmMuLjU3OWEzYWYgMTAwNjQ0Ci0tLSBhL3N1cHdpc2RvbS9zcF9jb25zdW1lLmMKKysrIGIvc3Vwd2lzZG9tL3NwX2NvbnN1bWUuYwpAQCAtNDM4LDcgKzQzOCw3IEBACiAgICAgfQogICAgIGlmKHBvcy0+cHVyY2hhc2UucGFpZF9udW0gPiBjYXJkLT53YXRlcmxpbWl0KQogICAgIHsKLSAgICAgIGRpc3BfaGludF9pbmZvKHBvcywi0tG077WltM6z9suuyc/P3iIsREVMQVlfVElNRTJzKTsKKyAgICAgIGRpc3BfaGludF9pbmZvX3R3byhwb3MsIs2j1rmz9suuIiwi0tG077WltM6z9suuyc/P3iIsREVMQVlfVElNRTJzKTsKICAgICAgIGNhcmRXb3JrU3RhdGUtPmN1cnJlbnRfc3RhdGUgPSBDQVJEV09SS1NUQVRVU19TVE9QUElORzsKICAgICB9CiAgICAgY2FyZFdvcmtTdGF0ZS0+cGF1c2VfdGljayA9IHRpbWVyX2dldF90aWNrZXIoKTsKQEAgLTQ1NCw3ICs0NTQsNyBAQAogICAgIGNhcmRXb3JrU3RhdGUtPmN1cnJlbnRfc3RhdGUgPSBDQVJEV09SS1NUQVRVU19TVE9QUEVEOwogICAgIGJyZWFrOwogICBjYXNlIENBUkRXT1JLU1RBVFVTX1NUT1BQRUQ6Ci0gICAgZGlzcF9oaW50X2luZm8ocG9zLCAix+uwzr+oIiwgREVMQVlfVElNRTJzKTsKKyAgICBkaXNwX2hpbnRfaW5mb190d28ocG9zLCLNo9a5s/bLriIsICLH68TD19+/qCIsIERFTEFZX1RJTUUycyk7CiAgICAgYnJlYWs7CiAgIGNhc2UgQ0FSRFdPUktTVEFUVVNfRkVFQ0FSRF9XT1JLSU5HOgogICAgIGlmKE1FTUNNUChwb3MtPmNhcmRTdGF0ZS5zbnIsIGNhcmQtPmNhcmRwaHlpZCwgNCkgIT0gMCkKQEAgLTYyOSw2ICs2MjksNyBAQAogICAgICAgY2FyZFdvcmtTdGF0ZS0+Y3VycmVudF9zdGF0ZSA9IENBUkRXT1JLU1RBVFVTX0VSUk9SOwogICAgICAgYnJlYWs7CiAgICAgfQorCWRpc3BfaGludF9pbmZvX3R3byhwb3MsICLH68fztv7OrMLrIiwix+vJ1LXILi4uIiwwKTsKICAgICByZXQgPSBzcF9xcmNvZGVfaW5pdChwb3MsICZDQVJEKTsKICAgICBpZihyZXQpCiAgICAgewpAQCAtNjQ1LDcgKzY0Niw3IEBACiAgICAgfQogICAgIHBvcy0+c3lzY29uZi53b3JrX21vZGUgPSAxOwogICAgIENBUkQucXJjb2RlLnN0YXJ0dGltZSA9IHNwX2dldF90aWNrZXIoKTsKLSAgICBkaXNwX2hpbnRfaW5mbyhwb3MsICLV/dTayfqzybb+zqzC6yIsIERFTEFZX1RJTUUycyk7CisgICAgLy9kaXNwX2hpbnRfaW5mbyhwb3MsICLJ+rPJtv7OrMLrIiwgMCk7CiAgICAgY2FyZFdvcmtTdGF0ZS0+bGFzdF9zdGF0ZSA9IGNhcmRXb3JrU3RhdGUtPmN1cnJlbnRfc3RhdGU7CiAgICAgY2FyZFdvcmtTdGF0ZS0+Y3VycmVudF9zdGF0ZSA9IENBUkRXT1JLU1RBVFVTX1JFQURZOwogICAgIGJyZWFrOwpAQCAtNjk2LDcgKzY5Nyw3IEBACiAgICAgfQogICAgIGlmKHBvcy0+cHVyY2hhc2UucGFpZF9udW0gPiBDQVJELndhdGVybGltaXQpCiAgICAgewotICAgICAgZGlzcF9oaW50X2luZm8ocG9zLCAi0tG077WltM6z9suuyc/P3iIsIERFTEFZX1RJTUUycyk7CisgICAgICBkaXNwX2hpbnRfaW5mb190d28ocG9zLCAizaPWubP2y64iLCLS0bTvtaW0zrP2y67Jz8/eIiwgREVMQVlfVElNRTJzKTsKICAgICAgIGNhcmRXb3JrU3RhdGUtPmN1cnJlbnRfc3RhdGUgPSBDQVJEV09SS1NUQVRVU19TVE9QUElORzsKICAgICB9CiAgICAgY2FyZFdvcmtTdGF0ZS0+bGFzdF9zdGF0ZSA9IGNhcmRXb3JrU3RhdGUtPmN1cnJlbnRfc3RhdGU7CkBAIC03MDYsNyArNzA3LDcgQEAKICAgICBpZihjYXJkV29ya1N0YXRlLT5sYXN0X3N0YXRlID09IENBUkRXT1JLU1RBVFVTX05PTkUKICAgICAgICAgfHwgY2FyZFdvcmtTdGF0ZS0+bGFzdF9zdGF0ZSA9PSBDQVJEV09SS1NUQVRVU19SRUFEWSkKICAgICB7Ci0gICAgICBkaXNwX2hpbnRfaW5mbyhwb3MsIsihz/vLosLrISIsIERFTEFZX1RJTUUycyk7CisgICAgICBkaXNwX2hpbnRfaW5mb190d28ocG9zLCLNo9a5s/bLriIsIsihz/vLosLrISIsIERFTEFZX1RJTUUycyk7CiAgICAgICBwb3MtPnBheW1vZGUgPSBQQVlNT0RFX0lOSVQ7CiAgICAgICBwb3MtPnN5c2NvbmYud29ya19tb2RlID0gMDsKICAgICB9CmRpZmYgLS1naXQgYS9zdXB3aXNkb20vc3BfZGF0YS5jIGIvc3Vwd2lzZG9tL3NwX2RhdGEuYwppbmRleCBhNmJhZDQ1Li5mMmZkYWMzIDEwMDY0NAotLS0gYS9zdXB3aXNkb20vc3BfZGF0YS5jCisrKyBiL3N1cHdpc2RvbS9zcF9kYXRhLmMKQEAgLTM1MSw3ICszNTEsNyBAQAogICB1aW50OCBjcmNbMl07CiAgIHNwX2NvbmZpZ190IGNvbmZpZzsKICAgTUVNQ0xFQVIoJmNvbmZpZywgc2l6ZW9mKGNvbmZpZykpOwotICBkaXNwX2hpbnRfaW5mbyhwb3MsIsnosbiyzsr9s/XKvLuvIiwgREVMQVlfVElNRTJzKTsKKyAgZGlzcF9oaW50X2luZm9fdHdvKHBvcywiyeixuLLOyv2z9cq8u68iLCAix+vJ1LXILi4uIiwwKTsKICAgc3BfcHJvdG9jb2xfY3JjKCh1aW50OCopJmNvbmZpZyxzaXplb2Yoc3BfY29uZmlnX3QpLTIsY29uZmlnLmNyYyk7CiAgIHNwX2ZsYXNoX2VyYXNlKEFERFJfQ09ORklHX1BBUkEpOwogICBzcF9mbGFzaF93cml0ZShBRERSX0NPTkZJR19QQVJBLCh1aW50OCopJmNvbmZpZyxzaXplb2Yoc3BfY29uZmlnX3QpKTsKZGlmZiAtLWdpdCBhL3N1cHdpc2RvbS9zcF9kaXNwbGF5LmMgYi9zdXB3aXNkb20vc3BfZGlzcGxheS5jCmluZGV4IGJhM2IzOWYuLmVjNjE4YjEgMTAwNjQ0Ci0tLSBhL3N1cHdpc2RvbS9zcF9kaXNwbGF5LmMKKysrIGIvc3Vwd2lzZG9tL3NwX2Rpc3BsYXkuYwpAQCAtNTksOCArNTksOCBAQAogCiBzdGF0aWMgdm9pZCBzaG93X2JvdHRvbShzcF9wb3NfdCogcG9zKQogewotICBzcHJpbnRmKGxpbmVfYnVmZiwiJTAyZDolMDJ4JTAyeCUwMnglMDJ4Iixwb3MtPmRldmljZW5vLCBwb3MtPmRldnBoeWlkWzBdLAotICAgICAgICAgIHBvcy0+ZGV2cGh5aWRbMV0sIHBvcy0+ZGV2cGh5aWRbMl0sIHBvcy0+ZGV2cGh5aWRbM10pOworICBzcHJpbnRmKGxpbmVfYnVmZiwiJTAyZDolMDJ4JTAyeCUwMnglMDJ4ICAgIHYlcyIscG9zLT5kZXZpY2VubywgcG9zLT5kZXZwaHlpZFswXSwKKyAgICAgICAgICBwb3MtPmRldnBoeWlkWzFdLCBwb3MtPmRldnBoeWlkWzJdLCBwb3MtPmRldnBoeWlkWzNdLFBST19WRVJTSU9OKTsKICAgZ2xjZF9kcmF3X3N0cmluZ194eSgwLCBHTENEX0JVVFRPTV9ZLCBsaW5lX2J1ZmYpOwogfQogCkBAIC0xMDAsNyArMTAwLDcgQEAKICAgaWYoTUVNQ01QKGN0aW1lLGxhc3RfY3RpbWUsNikgIT0gMCkKICAgewogICAgIE1FTUNQWShsYXN0X2N0aW1lLGN0aW1lLDYpOwotICAgIGRpc3BfaGludF9pbmZvX3R3byhwb3MsIkaw5rG+IixQUk9fVkVSU0lPTiwwKTsKKyAgICBkaXNwX2hpbnRfaW5mb190d28ocG9zLCI+PsuiytDD8b+os/bLriIsIj4+sLTIt8jPvPzJqMLrIiwwKTsKICAgfQogfQogCmRpZmYgLS1naXQgYS9zdXB3aXNkb20vc3BfdXBncmFkZS5jIGIvc3Vwd2lzZG9tL3NwX3VwZ3JhZGUuYwppbmRleCA2ZjJmZGI4Li42ZDA0YTgzIDEwMDY0NAotLS0gYS9zdXB3aXNkb20vc3BfdXBncmFkZS5jCisrKyBiL3N1cHdpc2RvbS9zcF91cGdyYWRlLmMKQEAgLTMxMSw3ICszMTEsNyBAQAogICAgICAgb2Zmc2V0ICs9ICh1aW50MzIpZGF0YV9sZW47CiAgICAgICBpZihBRERSX1VQR1JBREVfQkVHSU4gKyBvZmZzZXQgPj0gQUREUl9VUEdSQURFX0VORCkKICAgICAgIHsKLSAgICAgICAgZGlzcF9oaW50X2luZm8ocG9zLCAiz8LU2M7EvP65/bTzIixERUxBWV9USU1FM3MpOworICAgICAgICBkaXNwX2hpbnRfaW5mb190d28ocG9zLCLJ/by2yqew3CIsICLPwtTYzsS8/rn9tPMiLERFTEFZX1RJTUUzcyk7CiAgICAgICAgIHJldHVybiAxOwogICAgICAgfQogICAgIH0KQEAgLTMxOSw3ICszMTksNyBAQAogICAgIHsKICAgICAgIGlmKDMgPCB0aW1lb3V0X3RyeWNudCkKICAgICAgIHsKLSAgICAgICAgZGlzcF9oaW50X2luZm8ocG9zLCAiz8LU2M7EvP6zrMqxIixERUxBWV9USU1FM3MpOworICAgICAgICBkaXNwX2hpbnRfaW5mb190d28ocG9zLCLJ/by2yqew3CIsICLPwtTYzsS8/rOsyrEiLERFTEFZX1RJTUUzcyk7CiAgICAgICAgIHJldHVybiAxOwogICAgICAgfQogICAgICAgRGVsYXlfbXMoREVMQVlfVElNRTFzKTsKQEAgLTM3NCw3ICszNzQsNyBAQAogICAgICAgfQogICAgICAgZWxzZQogICAgICAgewotICAgICAgICBkaXNwX2hpbnRfaW5mbyhwb3MsICLOxLz+0KPR6bTtzvMiLERFTEFZX1RJTUUzcyk7CisgICAgICAgIGRpc3BfaGludF9pbmZvX3R3byhwb3MsIsn9vLbKp7DcIiwgIs7EvP7Qo9HptO3O8yIsREVMQVlfVElNRTNzKTsKICAgICAgICAgcmV0dXJuIDE7CiAgICAgICB9CiAgICAgfQo=