From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Takao Fujiwara To: git-commits@fedoraproject.org Subject: [rpms/ibus] autotool: Delete upstreamed patches Date: Sun, 31 May 2026 02:08:59 GMT Message-ID: <178019333938.1.11962536083669417757.rpms-ibus-eb9b4a574f42@fedoraproject.org> List-ID: X-Git-Repo: rpms/ibus X-Git-Branch: autotool X-Git-Rev: eb9b4a574f42bac93b2262a06695ccc772232321 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvaWJ1cwpCcmFuY2gg OiBhdXRvdG9vbApDb21taXQgOiBlYjliNGE1NzRmNDJiYWM5M2IyMjYyYTA2Njk1Y2NjNzcyMjMy MzIxCkF1dGhvciA6IFRha2FvIEZ1aml3YXJhIDx0ZnVqaXdhckByZWRoYXQuY29tPgpEYXRlICAg OiAyMDI1LTA4LTIyVDA5OjQ4OjEwKzA5OjAwClN0YXRzICA6ICswLy02MDMwIGluIDEgZmlsZShz KQpVUkwgICAgOiBodHRwczovL3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy9ycG1zL2lidXMvYy9lYjli NGE1NzRmNDJiYWM5M2IyMjYyYTA2Njk1Y2NjNzcyMjMyMzIxP2JyYW5jaD1hdXRvdG9vbAoKTG9n OgpEZWxldGUgdXBzdHJlYW1lZCBwYXRjaGVzCgotLS0KZGlmZiAtLWdpdCBhL2lidXMtSEVBRC5w YXRjaCBiL2lidXMtSEVBRC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWVh OGIzYy4uMDAwMDAwMAotLS0gYS9pYnVzLUhFQUQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2 MDMwICswLDAgQEAKLUZyb20gZDBhZDRlNmU1MTk0MzlmMDM0ZDA4ZmQ2NTMxNDAzMDI3YmQ3ZmJk ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IGZ1aml3YXJhdCA8dGFrYW8uZnVqaXdh cmExQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMTggQXByIDIwMjUgMTY6MzY6NDMgKzA5MDAKLVN1 YmplY3Q6IFtQQVRDSF0gdWkvZ3RrMzogRml4IEV4aXQgYW5kIFJlc3RhcnQgbWVudSBpdGVtcyBp biBXYXlsYW5kIGlucHV0LW1ldGhvZCBWMgotCi0tLS0KLSB0b29scy9tYWluLnZhbGEgICAgfCAg MSArCi0gdWkvZ3RrMy9wYW5lbC52YWxhIHwgMTggKysrKysrKy0tLS0tLS0tLS0tCi0gMiBmaWxl cyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDExIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0 IGEvdG9vbHMvbWFpbi52YWxhIGIvdG9vbHMvbWFpbi52YWxhCi1pbmRleCA0YjViY2ZmMi4uYTdj NmQ5NWQgMTAwNjQ0Ci0tLS0gYS90b29scy9tYWluLnZhbGEKLSsrKyBiL3Rvb2xzL21haW4udmFs YQotQEAgLTI3Nyw2ICsyNzcsNyBAQCBib29sIHN0YXJ0X2RhZW1vbl9pbl93YXlsYW5kKGJvb2wg ICAgIHJlc3RhcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiZGlyZWN0bHkuXG4iKTsK LSAgICAgICAgIH0KLSAgICAgICAgIGJ1cyA9IG51bGw7Ci0rICAgICAgICBQb3NpeC5zbGVlcCgz KTsKLSAgICAgfSBlbHNlIGlmIChidXMgIT0gbnVsbCkgewotICAgICAgICAgc3RkZXJyLnByaW50 ZigiJXNcbiIucHJpbnRmKF8oIklCdXMgaXMgcnVubmluZy4iKSkpOwotICAgICAgICAgUG9zaXgu ZXhpdChQb3NpeC5FWElUX0ZBSUxVUkUpOwotZGlmZiAtLWdpdCBhL3VpL2d0azMvcGFuZWwudmFs YSBiL3VpL2d0azMvcGFuZWwudmFsYQotaW5kZXggZTQyYTE2NmUuLmFiNTE0YmFiIDEwMDY0NAot LS0tIGEvdWkvZ3RrMy9wYW5lbC52YWxhCi0rKysgYi91aS9ndGszL3BhbmVsLnZhbGEKLUBAIC0x NTI0LDI1ICsxNTI0LDIxIEBAIGNsYXNzIFBhbmVsIDogSUJ1cy5QYW5lbFNlcnZpY2UgewotICAg ICAgICAgICAgIHN0cmluZ1tdIF9hcmdzID0ge307Ci0gICAgICAgICAgICAgX2FyZ3MgKz0gYmlu YXJ5OwotICAgICAgICAgICAgIF9hcmdzICs9IGFyZ3M7Ci0tICAgICAgICAgICAgaWYgKGFyZ3Mg PT0gImV4aXQiIHx8IGFyZ3MgPT0gInJlc3RhcnQiKQotLSAgICAgICAgICAgICAgICBfYXJncyAr PSAiLS10eXBlPWtkZS13YXlsYW5kIjsKLS0gICAgICAgICAgICBzdHJpbmc/IHN0YW5kYXJkX291 dCA9IG51bGw7Ci0tICAgICAgICAgICAgc3RyaW5nPyBzdGFuZGFyZF9lcnJvciA9IG51bGw7Ci0r ICAgICAgICAgICAgLy8gRklYTUU6IHN0ZG91dCAmIHN0ZGVyciBjYXVzZXMgYSBkZWFkIGxvY2sg d2l0aCBgaWJ1cyByZXN0YXJ0YAotKyAgICAgICAgICAgIC8vIGluIFdheWxhbmQgaW5wdXQtbWV0 aG9kIFYyLgotICAgICAgICAgICAgIEdMaWIuUHJvY2Vzcy5zcGF3bl9zeW5jKG51bGwsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2FyZ3MsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgR0xpYi5FbnZpcm9uLmdldCgpLAotLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDAsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgR0xpYi5TcGF3bkZsYWdzLlNFQVJDSF9QQVRIX0ZST01fRU5WUCwKLSsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsLAotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIG51bGwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg bnVsbCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgc3RhbmRhcmRf b3V0LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCBzdGFuZGFyZF9l cnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsKTsKLS0gICAg ICAgICAgICBpZiAoc3RhbmRhcmRfb3V0ICE9IG51bGwpCi0tICAgICAgICAgICAgICAgIHByaW50 KHN0YW5kYXJkX291dCk7Ci0tICAgICAgICAgICAgaWYgKHN0YW5kYXJkX2Vycm9yICE9IG51bGwp Ci0tICAgICAgICAgICAgICAgIHdhcm5pbmcoIkV4ZWN1dGUgJXMgZmFpbGVkISAlcyIsIGJpbmFy eSwgc3RhbmRhcmRfZXJyb3IpOwotICAgICAgICAgfSBjYXRjaCAoR0xpYi5TcGF3bkVycm9yIGUp IHsKLSAgICAgICAgICAgICB3YXJuaW5nKCJFeGVjdXRlICVzIGZhaWxlZCEgJXMiLCBiaW5hcnks IGUubWVzc2FnZSk7Ci0gICAgICAgICB9Ci0rICAgICAgICBJQnVzLnF1aXQoKTsKLSsgICAgICAg IEd0ay5tYWluX3F1aXQoKTsKLSAgICAgfQotIAotICAgICBwcml2YXRlIHZvaWQgYXBwZW5kX3By ZWZlcmVuY2VzX21lbnUoR3RrLk1lbnUgbWVudSkgewotLS0gCi0yLjQ5LjAKLQotRnJvbSBiNGY1 MWI2OWYwM2IxOGZhZGY0YmJkODJhYmM3YjdlOTJmYWU0NGYwIE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQotRnJvbTogZnVqaXdhcmF0IDx0YWthby5mdWppd2FyYTFAZ21haWwuY29tPgotRGF0ZTog U2F0LCAzIE1heSAyMDI1IDExOjU0OjIxICswOTAwCi1TdWJqZWN0OiBbUEFUQ0hdIGJ1cy9pbnB1 dGNvbnRleHQ6IEZyZWUgZGF0YSBpbiBidXNfaW5wdXRfY29udGV4dF9mb3J3YXJkX3Byb2Nlc3Nf a2V5X2V2ZW50Ci0KLVNob3VsZCBmcmVlIGRhdGEgaW4gY2FzZSBvZiBubyBmb2N1c2VzIGFuZCBl bmdpbmVzLgotLS0tCi0gYnVzL2lucHV0Y29udGV4dC5jIHwgNiArKysrLS0KLSAxIGZpbGUgY2hh bmdlZCwgNCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvYnVz L2lucHV0Y29udGV4dC5jIGIvYnVzL2lucHV0Y29udGV4dC5jCi1pbmRleCBjNTUxZmJjOC4uNDFi NDc1NDAgMTAwNjQ0Ci0tLS0gYS9idXMvaW5wdXRjb250ZXh0LmMKLSsrKyBiL2J1cy9pbnB1dGNv bnRleHQuYwotQEAgLTIsOCArMiw4IEBACi0gLyogdmltOnNldCBldCBzdHM9NDogKi8KLSAvKiBp YnVzIC0gVGhlIElucHV0IEJ1cwotICAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE0IFBlbmcgSHVh bmcgPHNoYXduLnAuaHVhbmdAZ21haWwuY29tPgotLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDI0 IFRha2FvIEZ1aml3YXJhIDx0YWthby5mdWppd2FyYTFAZ21haWwuY29tPgotLSAqIENvcHlyaWdo dCAoQykgMjAwOC0yMDI0IFJlZCBIYXQsIEluYy4KLSsgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAy NSBUYWthbyBGdWppd2FyYSA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KLSsgKiBDb3B5cmln aHQgKEMpIDIwMDgtMjAyNSBSZWQgSGF0LCBJbmMuCi0gICoKLSAgKiBUaGlzIGxpYnJhcnkgaXMg ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICogbW9kaWZ5 IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotQEAg LTM1NjQsNSArMzU2NCw3IEBAIGJ1c19pbnB1dF9jb250ZXh0X2ZvcndhcmRfcHJvY2Vzc19rZXlf ZXZlbnQgKEJ1c0lucHV0Q29udGV4dCAqY29udGV4dCwKLSAgICAgICAgICAgICAgICAgKEdBc3lu Y1JlYWR5Q2FsbGJhY2spCi0gICAgICAgICAgICAgICAgICAgICAgICAgX2ZvcndhcmRfcHJvY2Vz c19rZXlfZXZlbnRfcmVwbHlfY2IsCi0gICAgICAgICAgICAgICAgIGRhdGEpOwotKyAgICB9IGVs c2UgewotKyAgICAgICAgZ19zbGljZV9mcmVlIChQcm9jZXNzS2V5RXZlbnREYXRhLCBkYXRhKTsK LSAgICAgfQotIH0KLS0tIAotMi40OS4wCi0KLUZyb20gZTcyMjJkYjliNzJkZmQwOGQ3ZWYxYTAz ZDViNmJhYTA0NmQwMjVmMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IGZ1aml3YXJh dCA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KLURhdGU6IFRodSwgMjIgTWF5IDIwMjUgMjM6 MjM6NDggKzA5MDAKLVN1YmplY3Q6IFtQQVRDSF0gdWkvZ3RrMzogVXBkYXRlIFBsYXNtYSBzZXR1 cCBtZXNzYWdlCi0KLUJVRz1odHRwczovL2dpdGh1Yi5jb20vaWJ1cy9pYnVzL2lzc3Vlcy8yNzUz Ci0tLS0KLSB1aS9ndGszL3BhbmVsLnZhbGEgfCAxMSArKysrKy0tLS0tLQotIDEgZmlsZSBjaGFu Z2VkLCA1IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS91aS9n dGszL3BhbmVsLnZhbGEgYi91aS9ndGszL3BhbmVsLnZhbGEKLWluZGV4IGFiNTE0YmFiLi4zNjM4 MzRlOSAxMDA2NDQKLS0tLSBhL3VpL2d0azMvcGFuZWwudmFsYQotKysrIGIvdWkvZ3RrMy9wYW5l bC52YWxhCi1AQCAtOTI2LDEyICs5MjYsMTEgQEAgY2xhc3MgUGFuZWwgOiBJQnVzLlBhbmVsU2Vy dmljZSB7Ci0gICAgICAgICAgICAgdmFyIGZvcm1hdCA9Ci0gICAgICAgICAgICAgICAgICAgICBf KCJJQnVzIHNob3VsZCBiZSBjYWxsZWQgZnJvbSB0aGUgZGVza3RvcCBzZXNzaW9uIGluICIgKwot ICAgICAgICAgICAgICAgICAgICAgICAiJXMuIEZvciBLREUsIHlvdSBjYW4gbGF1bmNoICclcycg IiArCi0tICAgICAgICAgICAgICAgICAgICAgICJ1dGlsaXR5IGFuZCBnbyB0byBcIklucHV0IERl dmljZXNcIiAtPiAiICsKLS0gICAgICAgICAgICAgICAgICAgICAgIlwiVmlydHVhbCBLZXlib2Fy ZFwiIHNlY3Rpb24gYW5kIHNlbGVjdCAiICsKLSsgICAgICAgICAgICAgICAgICAgICAgInV0aWxp dHkgYW5kIGdvIHRvIFwiSW5wdXQgJiBPdXRwdXRcIiAtPiBcIktleWJvYXJkXCIgIiArCi0rICAg ICAgICAgICAgICAgICAgICAgICItPiBcIlZpcnR1YWwgS2V5Ym9hcmRcIiBzZWN0aW9uIGFuZCBz ZWxlY3QgIiArCi0gICAgICAgICAgICAgICAgICAgICAgICJcIiVzXCIgaWNvbiBhbmQgY2xpY2sg XCJBcHBseVwiIGJ1dHRvbiB0byAiICsKLSAgICAgICAgICAgICAgICAgICAgICAgImNvbmZpZ3Vy ZSBJQnVzIGluICVzLiBGb3Igb3RoZXIgZGVza3RvcCAiICsKLS0gICAgICAgICAgICAgICAgICAg ICAgInNlc3Npb25zLCB5b3UgY2FuIGNvcHkgdGhlICdFeGVjPScgbGluZSBpbiAlcyBmaWxlICIg KwotLSAgICAgICAgICAgICAgICAgICAgICAidG8gYSBjb25maWd1cmF0aW9uIGZpbGUgb2YgdGhl IHNlc3Npb24uICIgKwotKyAgICAgICAgICAgICAgICAgICAgICAic2Vzc2lvbnMsIHlvdSBjYW4g cnVuIFwiJXNcIiBjb21tYW5kLiAiICsKLSAgICAgICAgICAgICAgICAgICAgICAgIlBsZWFzZSBy ZWZlciBlYWNoIGRvY3VtZW50IGFib3V0IHRoZSBcIldheWxhbmQgIiArCi0gICAgICAgICAgICAg ICAgICAgICAgICJpbnB1dCBtZXRob2RcIiBjb25maWd1cmF0aW9uLiBCZWZvcmUgeW91IGNvbmZp Z3VyZSAiICsKLSAgICAgICAgICAgICAgICAgICAgICAgInRoZSBcIldheWxhbmQgaW5wdXQgbWV0 aG9kXCIsIHlvdSBzaG91bGQgbWFrZSBzdXJlICIgKwotQEAgLTkzOSwxMCArOTM4LDEwIEBAIGNs YXNzIFBhbmVsIDogSUJ1cy5QYW5lbFNlcnZpY2UgewotICAgICAgICAgICAgICAgICAgICAgICAi dmFyaWFibGVzIGFyZSB1bnNldCBpbiB0aGUgZGVza3RvcCBzZXNzaW9uLiIpOwotICAgICAgICAg ICAgICAgICBtZXNzYWdlID0gZm9ybWF0LnByaW50ZigKLSAgICAgICAgICAgICAgICAgICAgICAg ICAiV2F5bGFuZCIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgInN5c3RlbXNldHRpbmdzNSIs Ci0rICAgICAgICAgICAgICAgICAgICAgICAgInN5c3RlbXNldHRpbmdzIiwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAiSUJ1cyBXYXlsYW5kIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAi V2F5bGFuZCIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgIm9yZy5mcmVlZGVza3RvcC5JQnVz LlBhbmVsLldheWxhbmQuR3RrMy5kZXNrdG9wIik7Ci0rICAgICAgICAgICAgICAgICAgICAgICAg ImlidXMgc3RhcnQiKTsKLSAgICAgICAgIH0gZWxzZSBpZiAobV9pc193YXlsYW5kICYmIG1faXNf d2F5bGFuZF9pbSAmJiAhaXNfZ25vbWUoKSkgewotICAgICAgICAgICAgIGlmIChFbnZpcm9ubWVu dC5nZXRfdmFyaWFibGUoIlFUX0lNX01PRFVMRSIpID09ICJpYnVzIikgewotICAgICAgICAgICAg ICAgICB2YXIgZm9ybWF0ID0KLS0tIAotMi40OS4wCi0KLUZyb20gN2ZlYjU3YTgzMzBkMDk2OWY4 MmM3NDJhMmMxYzBhZWIxMjA5NzFmYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IG1h dGl3YXJpIDxtYXRpd2FyaUByZWRoYXQuY29tPgotRGF0ZTogVHVlLCAyOSBBcHIgMjAyNSAxMjo1 MjoyNSArMDUzMAotU3ViamVjdDogW1BBVENIXSBzcmMvaWJ1c29ic2VydmVkcGF0aDogRnJlZSBJ QnVzT2JzZXJ2ZWRQYXRoIG9iamVjdHMgZHVyaW5nIHRyYXZlcnNhbAotCi1CVUc9aHR0cHM6Ly9n aXRodWIuY29tL2lidXMvaWJ1cy9pc3N1ZXMvMjc1NQotLS0tCi0gc3JjL2lidXNvYnNlcnZlZHBh dGguYyB8IDkgKysrKysrKystCi0gMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMSBk ZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2lidXNvYnNlcnZlZHBhdGguYyBiL3NyYy9p YnVzb2JzZXJ2ZWRwYXRoLmMKLWluZGV4IDQyMTkyNDMxLi4yMjRiZmI4YiAxMDA2NDQKLS0tLSBh L3NyYy9pYnVzb2JzZXJ2ZWRwYXRoLmMKLSsrKyBiL3NyYy9pYnVzb2JzZXJ2ZWRwYXRoLmMKLUBA IC03OSw3ICs3OSwxMiBAQCBpYnVzX29ic2VydmVkX3BhdGhfaW5pdCAoSUJ1c09ic2VydmVkUGF0 aCAqcGF0aCkKLSBzdGF0aWMgdm9pZAotIGlidXNfb2JzZXJ2ZWRfcGF0aF9kZXN0cm95IChJQnVz T2JzZXJ2ZWRQYXRoICpwYXRoKQotIHsKLSsgICAgSUJ1c09ic2VydmVkUGF0aFByaXZhdGUgKnBy aXY7Ci0gICAgIGdfZnJlZSAocGF0aC0+cGF0aCk7Ci0rICAgIGlmIChJQlVTX0lTX09CU0VSVkVE X1BBVEggKHBhdGgpKSB7Ci0rICAgICAgICBwcml2ID0gSUJVU19PQlNFUlZFRF9QQVRIX0dFVF9Q UklWQVRFIChwYXRoKTsKLSsgICAgICAgIGdfY2xlYXJfcG9pbnRlciAoJnByaXYtPmZpbGVfaGFz aF9saXN0LCBnX2ZyZWUpOwotKyAgICB9Ci0gICAgIElCVVNfT0JKRUNUX0NMQVNTIChpYnVzX29i c2VydmVkX3BhdGhfcGFyZW50X2NsYXNzKS0+ZGVzdHJveSAoSUJVU19PQkpFQ1QgKHBhdGgpKTsK LSB9Ci0gCi1AQCAtMzQ5LDYgKzM1NCw4IEBAIGlidXNfb2JzZXJ2ZWRfcGF0aF90cmF2ZXJzZSAo SUJ1c09ic2VydmVkUGF0aCAqcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGlidXNfb2JzZXJ2ZWRfcGF0aF90cmF2ZXJzZSAoc3ViLCBkaXJfb25seSkpOwotICAgICAg ICAgfSBlbHNlIGlmIChzdWItPmlzX2V4aXN0ICYmICFkaXJfb25seSkgewotICAgICAgICAgICAg IHBhdGhzID0gZ19saXN0X2FwcGVuZCAocGF0aHMsIHN1Yik7Ci0rICAgICAgICB9IGVsc2Ugewot KyAgICAgICAgICAgIGdfb2JqZWN0X3VucmVmIChzdWIpOwotICAgICAgICAgfQotICAgICB9Ci0g ICAgIGdfZGlyX2Nsb3NlIChkaXIpOwotQEAgLTUxMyw3ICs1MjAsNyBAQCBpYnVzX29ic2VydmVk X3BhdGhfbmV3IChjb25zdCBnY2hhciAqcGF0aCwKLSAgICAgICAgIHByaXYtPmZpbGVfaGFzaF9s aXN0W2kgKyAxXSA9IDA7Ci0gICAgICAgICArK2k7Ci0gICAgIH0KLS0gICAgZ19saXN0X2ZyZWVf ZnVsbCAoZmlsZV9saXN0LCAoR0Rlc3Ryb3lOb3RpZnkpaWJ1c19vYnNlcnZlZF9wYXRoX2Rlc3Ry b3kpOwotKyAgICBnX2xpc3RfZnJlZV9mdWxsIChmaWxlX2xpc3QsIChHRGVzdHJveU5vdGlmeSln X29iamVjdF91bnJlZik7Ci0gCi0gICAgIGlmIChmaWxsX3N0YXQpCi0gICAgICAgICBpYnVzX29i c2VydmVkX3BhdGhfZmlsbF9zdGF0IChvcCk7Ci0tLSAKLTIuNDkuMAotCi1Gcm9tIGM1ZDk4Zjk4 ZWNjOThmOGM3MjZiNWQ5NjMxNDY0MzA1MzA2YzhmYjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx Ci1Gcm9tOiBmdWppd2FyYXQgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+Ci1EYXRlOiBTdW4s IDI1IE1heSAyMDI1IDE5OjA4OjI0ICswOTAwCi1TdWJqZWN0OiBbUEFUQ0ggMS8zXSB1aS9ndGsz OiBEZWxldGUgVmFsYSBkZXByZWNhdGVkIEFQSXMgYmVmb3JlIDAuMzQKLQotVmFsYSAwLjM0IGhh cyBiZWVuIGF2YWlsYWJsZSBzaW5jZSAyMDE4IGFuZCBub3cgdGhlIGRlcHJlY2F0ZWQgQVBJcwot Y2FuIGJlIGRlbGV0ZWQgc2FmZWx5IGZvciA1IHllYXJzLgotCi1CVUc9aHR0cHM6Ly9naXRodWIu Y29tL2lidXMvaWJ1cy9wdWxsLzI3NjEKLS0tLQotIHVpL2d0azMvYmluZGluZ2NvbW1vbi52YWxh ICB8IDExICstLS0tLQotIHVpL2d0azMvY2FuZGlkYXRlcGFuZWwudmFsYSB8ICA3IC0tLS0KLSB1 aS9ndGszL2Vtb2ppZXIudmFsYSAgICAgICAgfCAzNCAtLS0tLS0tLS0tLS0tLS0tCi0gdWkvZ3Rr My9wcm9wZXJ0eXBhbmVsLnZhbGEgIHwgNjEgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K LSB1aS9ndGszL3N3aXRjaGVyLnZhbGEgICAgICAgfCA3OCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCi0gNSBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDE4OSBk ZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3VpL2d0azMvYmluZGluZ2NvbW1vbi52YWxhIGIv dWkvZ3RrMy9iaW5kaW5nY29tbW9uLnZhbGEKLWluZGV4IDhjMzMyNTQyLi43MjdlMTI1NyAxMDA2 NDQKLS0tLSBhL3VpL2d0azMvYmluZGluZ2NvbW1vbi52YWxhCi0rKysgYi91aS9ndGszL2JpbmRp bmdjb21tb24udmFsYQotQEAgLTc2LDE3ICs3NiwxMCBAQCBjbGFzcyBCaW5kaW5nQ29tbW9uIHsK LSAgICAgICAgICAgICAgICAgR2RrLk1vZGlmaWVyVHlwZS5IWVBFUl9NQVNLIHwKLSAgICAgICAg ICAgICAgICAgR2RrLk1vZGlmaWVyVHlwZS5NRVRBX01BU0spOwotICAgICAgICAgaWYgKChzd2l0 Y2hfbW9kaWZpZXJzICYgVklSVFVBTF9NT0RJRklFUlMpICE9IDApIHsKLS0gICAgICAgIC8vIHdv cmthcm91bmQgYSBidWcgaW4gZ2RrIHZhcGkgdmFsYSA+IDAuMTgKLS0gICAgICAgIC8vIGh0dHBz Oi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD02Nzc1NTkKLS0jaWYgVkFMQV8w XzE4Ci0rICAgICAgICAgICAgLy8gd29ya2Fyb3VuZCBhIGJ1ZyBpbiBnZGsgdmFwaSB2YWxhID4g MC4xOAotKyAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVn LmNnaT9pZD02Nzc1NTkKLSAgICAgICAgICAgICBHZGsuS2V5bWFwLmdldF9mb3JfZGlzcGxheShH ZGsuRGlzcGxheS5nZXRfZGVmYXVsdCgpCi0gICAgICAgICAgICAgICAgICAgICApLm1hcF92aXJ0 dWFsX21vZGlmaWVycyhyZWYgc3dpdGNoX21vZGlmaWVycyk7Ci0tI2Vsc2UKLS0gICAgICAgICAg ICBpZiAoKHN3aXRjaF9tb2RpZmllcnMgJiBHZGsuTW9kaWZpZXJUeXBlLlNVUEVSX01BU0spICE9 IDApCi0tICAgICAgICAgICAgICAgIHN3aXRjaF9tb2RpZmllcnMgfD0gR2RrLk1vZGlmaWVyVHlw ZS5NT0Q0X01BU0s7Ci0tICAgICAgICAgICAgaWYgKChzd2l0Y2hfbW9kaWZpZXJzICYgR2RrLk1v ZGlmaWVyVHlwZS5IWVBFUl9NQVNLKSAhPSAwKQotLSAgICAgICAgICAgICAgICBzd2l0Y2hfbW9k aWZpZXJzIHw9IEdkay5Nb2RpZmllclR5cGUuTU9ENF9NQVNLOwotLSNlbmRpZgotICAgICAgICAg ICAgIHN3aXRjaF9tb2RpZmllcnMgJj0gflZJUlRVQUxfTU9ESUZJRVJTOwotICAgICAgICAgfQot IAotZGlmZiAtLWdpdCBhL3VpL2d0azMvY2FuZGlkYXRlcGFuZWwudmFsYSBiL3VpL2d0azMvY2Fu ZGlkYXRlcGFuZWwudmFsYQotaW5kZXggNWJhOGNmMzYuLmFhMWEzNGNlIDEwMDY0NAotLS0tIGEv dWkvZ3RrMy9jYW5kaWRhdGVwYW5lbC52YWxhCi0rKysgYi91aS9ndGszL2NhbmRpZGF0ZXBhbmVs LnZhbGEKLUBAIC01MDgsMTcgKzUwOCwxMCBAQCBwdWJsaWMgY2xhc3MgQ2FuZGlkYXRlUGFuZWwg OiBHdGsuQm94ewotICAgICAgICAgLy8gVXNlIGdldF9tb25pdG9yX2dlb21ldHJ5KCkgaW5zdGVh ZCBvZiBnZXRfbW9uaXRvcl9hcmVhKCkuCi0gICAgICAgICAvLyBnZXRfbW9uaXRvcl9hcmVhKCkg ZXhjbHVkZXMgZG9ja3MsIGJ1dCB0aGUgbG9va3VwIHdpbmRvdyBzaG91bGQgYmUKLSAgICAgICAg IC8vIHNob3duIG92ZXIgdGhlbS4KLS0jaWYgVkFMQV8wXzM0Ci0gICAgICAgICBHZGsuTW9uaXRv ciBtb25pdG9yID0gd2luZG93LmdldF9kaXNwbGF5KCkuZ2V0X21vbml0b3JfYXRfcG9pbnQoCi0g ICAgICAgICAgICAgICAgIG1fY3Vyc29yX2xvY2F0aW9uLngsCi0gICAgICAgICAgICAgICAgIG1f Y3Vyc29yX2xvY2F0aW9uLnkpOwotICAgICAgICAgbW9uaXRvcl9hcmVhID0gbW9uaXRvci5nZXRf Z2VvbWV0cnkoKTsKLS0jZWxzZQotLSAgICAgICAgR2RrLlNjcmVlbiBzY3JlZW4gPSBHZGsuU2Ny ZWVuLmdldF9kZWZhdWx0KCk7Ci0tICAgICAgICBpbnQgbW9uaXRvcl9udW0gPSBzY3JlZW4uZ2V0 X21vbml0b3JfYXRfcG9pbnQobV9jdXJzb3JfbG9jYXRpb24ueCwKLS0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2N1cnNvcl9sb2NhdGlvbi55 KTsKLS0gICAgICAgIHNjcmVlbi5nZXRfbW9uaXRvcl9nZW9tZXRyeShtb25pdG9yX251bSwgb3V0 IG1vbml0b3JfYXJlYSk7Ci0tI2VuZGlmCi0gICAgICAgICByZXR1cm4gbW9uaXRvcl9hcmVhOwot ICAgICB9Ci0gCi1kaWZmIC0tZ2l0IGEvdWkvZ3RrMy9lbW9qaWVyLnZhbGEgYi91aS9ndGszL2Vt b2ppZXIudmFsYQotaW5kZXggNTE5ZGEzZTIuLjE3NzBkZTJmIDEwMDY0NAotLS0tIGEvdWkvZ3Rr My9lbW9qaWVyLnZhbGEKLSsrKyBiL3VpL2d0azMvZW1vamllci52YWxhCi1AQCAtMjksMTEgKzI5 LDcgQEAgcHVibGljIGNsYXNzIElCdXNFbW9qaWVyIDogR3RrLkFwcGxpY2F0aW9uV2luZG93IHsK LSAgICAgICAgICAgICAgICAgdmFsaWduIDogR3RrLkFsaWduLkZJTEwKLSAgICAgICAgICAgICAp OwotICAgICAgICAgICAgIHRoaXMubW90aW9uX25vdGlmeV9ldmVudC5jb25uZWN0KChlKSA9PiB7 Ci0tI2lmIFZBTEFfMF8yNAotICAgICAgICAgICAgICAgICBHZGsuRXZlbnRNb3Rpb24gcGUgPSBl OwotLSNlbHNlCi0tICAgICAgICAgICAgICAgIEdkay5FdmVudE1vdGlvbiAqcGUgPSAmZTsKLS0j ZW5kaWYKLSAgICAgICAgICAgICAgICAgaWYgKG1fbW91c2VfeCA9PSBwZS54X3Jvb3QgJiYgbV9t b3VzZV95ID09IHBlLnlfcm9vdCkKLSAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK LSAgICAgICAgICAgICAgICAgbV9tb3VzZV94ID0gcGUueF9yb290OwotQEAgLTE1MTYsMTEgKzE1 MTIsNyBAQCBwdWJsaWMgY2xhc3MgSUJ1c0Vtb2ppZXIgOiBHdGsuQXBwbGljYXRpb25XaW5kb3cg ewotICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgICBp ZiAobV9sb29rdXBfdGFibGUuZ2V0X2N1cnNvcl9wb3MoKSA9PSBpbmRleCkKLSAgICAgICAgICAg ICAgICAgICAgIHJldHVybiBmYWxzZTsKLS0jaWYgVkFMQV8wXzI0Ci0gICAgICAgICAgICAgICAg IEdkay5FdmVudE1vdGlvbiBwZSA9IGU7Ci0tI2Vsc2UKLS0gICAgICAgICAgICAgICAgR2RrLkV2 ZW50TW90aW9uICpwZSA9ICZlOwotLSNlbmRpZgotICAgICAgICAgICAgICAgICBpZiAobV9tb3Vz ZV94ID09IHBlLnhfcm9vdCAmJiBtX21vdXNlX3kgPT0gcGUueV9yb290KQotICAgICAgICAgICAg ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgICBtX21vdXNlX3ggPSBwZS54 X3Jvb3Q7Ci1AQCAtMTk2NCwxNyArMTk1NiwxMCBAQCBwdWJsaWMgY2xhc3MgSUJ1c0Vtb2ppZXIg OiBHdGsuQXBwbGljYXRpb25XaW5kb3cgewotICAgICAgICAgLy8gVXNlIGdldF9tb25pdG9yX2dl b21ldHJ5KCkgaW5zdGVhZCBvZiBnZXRfbW9uaXRvcl9hcmVhKCkuCi0gICAgICAgICAvLyBnZXRf bW9uaXRvcl9hcmVhKCkgZXhjbHVkZXMgZG9ja3MsIGJ1dCB0aGUgbG9va3VwIHdpbmRvdyBzaG91 bGQgYmUKLSAgICAgICAgIC8vIHNob3duIG92ZXIgdGhlbS4KLS0jaWYgVkFMQV8wXzM0Ci0gICAg ICAgICBHZGsuTW9uaXRvciBtb25pdG9yID0gR2RrLkRpc3BsYXkuZ2V0X2RlZmF1bHQoKS5nZXRf bW9uaXRvcl9hdF9wb2ludCgKLSAgICAgICAgICAgICAgICAgbV9jdXJzb3JfbG9jYXRpb24ueCwK LSAgICAgICAgICAgICAgICAgbV9jdXJzb3JfbG9jYXRpb24ueSk7Ci0gICAgICAgICBtb25pdG9y X2FyZWEgPSBtb25pdG9yLmdldF9nZW9tZXRyeSgpOwotLSNlbHNlCi0tICAgICAgICBHZGsuU2Ny ZWVuIHNjcmVlbiA9IEdkay5TY3JlZW4uZ2V0X2RlZmF1bHQoKTsKLS0gICAgICAgIGludCBtb25p dG9yX251bSA9IHNjcmVlbi5nZXRfbW9uaXRvcl9hdF9wb2ludChtX2N1cnNvcl9sb2NhdGlvbi54 LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IG1fY3Vyc29yX2xvY2F0aW9uLnkpOwotLSAgICAgICAgc2NyZWVuLmdldF9tb25pdG9yX2dlb21l dHJ5KG1vbml0b3JfbnVtLCBvdXQgbW9uaXRvcl9hcmVhKTsKLS0jZW5kaWYKLSAgICAgICAgIHJl dHVybiBtb25pdG9yX2FyZWE7Ci0gICAgIH0KLSAKLUBAIC0yMjY4LDI0ICsyMjUzLDEyIEBAIHB1 YmxpYyBjbGFzcyBJQnVzRW1vamllciA6IEd0ay5BcHBsaWNhdGlvbldpbmRvdyB7Ci0gICAgICAg ICBwcmVzZW50X2NlbnRyYWxpemUoZXZlbnQpOwotIAotICAgICAgICAgR2RrLkRldmljZSBwb2lu dGVyOwotLSNpZiBWQUxBXzBfMzQKLSAgICAgICAgIEdkay5TZWF0IHNlYXQgPSBldmVudC5nZXRf c2VhdCgpOwotICAgICAgICAgaWYgKHNlYXQgPT0gbnVsbCkgewotICAgICAgICAgICAgIHZhciBk aXNwbGF5ID0gZ2V0X2Rpc3BsYXkoKTsKLSAgICAgICAgICAgICBzZWF0ID0gZGlzcGxheS5nZXRf ZGVmYXVsdF9zZWF0KCk7Ci0gICAgICAgICB9Ci0gICAgICAgICBwb2ludGVyID0gc2VhdC5nZXRf cG9pbnRlcigpOwotLSNlbHNlCi0tICAgICAgICBHZGsuRGV2aWNlIGRldmljZSA9IGV2ZW50Lmdl dF9kZXZpY2UoKTsKLS0gICAgICAgIGlmIChkZXZpY2UgPT0gbnVsbCkgewotLSAgICAgICAgICAg IHZhciBkaXNwbGF5ID0gZ2V0X2Rpc3BsYXkoKTsKLS0gICAgICAgICAgICBkZXZpY2UgPSBkaXNw bGF5Lmxpc3RfZGV2aWNlcygpLmRhdGE7Ci0tICAgICAgICB9Ci0tICAgICAgICBpZiAoZGV2aWNl LmdldF9zb3VyY2UoKSA9PSBHZGsuSW5wdXRTb3VyY2UuS0VZQk9BUkQpCi0tICAgICAgICAgICAg cG9pbnRlciA9IGRldmljZS5nZXRfYXNzb2NpYXRlZF9kZXZpY2UoKTsKLS0gICAgICAgIGVsc2UK LS0gICAgICAgICAgICBwb2ludGVyID0gZGV2aWNlOwotLSNlbmRpZgotICAgICAgICAgcG9pbnRl ci5nZXRfcG9zaXRpb25fZG91YmxlKG51bGwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgb3V0IG1fbW91c2VfeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBvdXQgbV9tb3VzZV95KTsKLUBAIC0yNTIxLDE3ICsyNDk0LDEwIEBAIHB1YmxpYyBjbGFz cyBJQnVzRW1vamllciA6IEd0ay5BcHBsaWNhdGlvbldpbmRvdyB7Ci0gICAgICAgICBnZXRfYWxs b2NhdGlvbihvdXQgYWxsb2NhdGlvbik7Ci0gICAgICAgICBHZGsuUmVjdGFuZ2xlIG1vbml0b3Jf YXJlYTsKLSAgICAgICAgIEdkay5SZWN0YW5nbGUgd29ya19hcmVhOwotLSNpZiBWQUxBXzBfMzQK LSAgICAgICAgIEdkay5EaXNwbGF5IGRpc3BsYXkgPSBnZXRfZGlzcGxheSgpOwotICAgICAgICAg R2RrLk1vbml0b3IgbW9uaXRvciA9IGRpc3BsYXkuZ2V0X21vbml0b3JfYXRfd2luZG93KHRoaXMu Z2V0X3dpbmRvdygpKTsKLSAgICAgICAgIG1vbml0b3JfYXJlYSA9IG1vbml0b3IuZ2V0X2dlb21l dHJ5KCk7Ci0gICAgICAgICB3b3JrX2FyZWEgPSBtb25pdG9yLmdldF93b3JrYXJlYSgpOwotLSNl bHNlCi0tICAgICAgICBHZGsuU2NyZWVuIHNjcmVlbiA9IEdkay5TY3JlZW4uZ2V0X2RlZmF1bHQo KTsKLS0gICAgICAgIGludCBtb25pdG9yX251bSA9IHNjcmVlbi5nZXRfbW9uaXRvcl9hdF93aW5k b3codGhpcy5nZXRfd2luZG93KCkpOwotLSAgICAgICAgc2NyZWVuLmdldF9tb25pdG9yX2dlb21l dHJ5KG1vbml0b3JfbnVtLCBvdXQgbW9uaXRvcl9hcmVhKTsKLS0gICAgICAgIHdvcmtfYXJlYSA9 IHNjcmVlbi5nZXRfbW9uaXRvcl93b3JrYXJlYShtb25pdG9yX251bSk7Ci0tI2VuZGlmCi0gICAg ICAgICBpbnQgeCA9IChtb25pdG9yX2FyZWEueCArIG1vbml0b3JfYXJlYS53aWR0aCAtIGFsbG9j YXRpb24ud2lkdGgpLzI7Ci0gICAgICAgICBpbnQgeSA9IChtb25pdG9yX2FyZWEueSArIG1vbml0 b3JfYXJlYS5oZWlnaHQKLSAgICAgICAgICAgICAgICAgIC0gYWxsb2NhdGlvbi5oZWlnaHQpLzI7 Ci1kaWZmIC0tZ2l0IGEvdWkvZ3RrMy9wcm9wZXJ0eXBhbmVsLnZhbGEgYi91aS9ndGszL3Byb3Bl cnR5cGFuZWwudmFsYQotaW5kZXggMjA3MzliOWMuLmYxZWNkN2Y3IDEwMDY0NAotLS0tIGEvdWkv Z3RrMy9wcm9wZXJ0eXBhbmVsLnZhbGEKLSsrKyBiL3VpL2d0azMvcHJvcGVydHlwYW5lbC52YWxh Ci1AQCAtMzU5LDE1ICszNTksMTAgQEAgcHVibGljIGNsYXNzIFByb3BlcnR5UGFuZWwgOiBHdGsu Qm94IHsKLSAgICAgICAgIG1fdG9wbGV2ZWwuZ2V0X2FsbG9jYXRpb24ob3V0IGFsbG9jYXRpb24p OwotIAotICAgICAgICAgR2RrLlJlY3RhbmdsZSBtb25pdG9yX2FyZWE7Ci0tI2lmIFZBTEFfMF8z NAotICAgICAgICAgLy8gZ2RrX3NjcmVlbl9nZXRfbW9uaXRvcl93b3JrYXJlYSgpIG5vIGxvbmdl ciByZXR1cm4gdGhlIGNvcnJlY3QKLSAgICAgICAgIC8vIGFyZWEgZnJvbSAiX05FVF9XT1JLQVJF QSIgYXRvbSBpbiBHVEsgMy4yMgotICAgICAgICAgR2RrLk1vbml0b3IgbW9uaXRvciA9IEdkay5E aXNwbGF5LmdldF9kZWZhdWx0KCkuZ2V0X21vbml0b3IoMCk7Ci0gICAgICAgICBtb25pdG9yX2Fy ZWEgPSBtb25pdG9yLmdldF93b3JrYXJlYSgpOwotLSNlbHNlCi0tICAgICAgICBHZGsuU2NyZWVu IHNjcmVlbiA9IEdkay5TY3JlZW4uZ2V0X2RlZmF1bHQoKTsKLS0gICAgICAgIG1vbml0b3JfYXJl YSA9IHNjcmVlbi5nZXRfbW9uaXRvcl93b3JrYXJlYSgwKTsKLS0jZW5kaWYKLSAgICAgICAgIGlu dCBtb25pdG9yX3JpZ2h0ID0gbW9uaXRvcl9hcmVhLnggKyBtb25pdG9yX2FyZWEud2lkdGg7Ci0g ICAgICAgICBpbnQgbW9uaXRvcl9ib3R0b20gPSBtb25pdG9yX2FyZWEueSArIG1vbml0b3JfYXJl YS5oZWlnaHQ7Ci0gICAgICAgICBpbnQgeCwgeTsKLUBAIC01MjQsMTUgKzUxOSwxMCBAQCBwdWJs aWMgY2xhc3MgUHJvcE1lbnUgOiBHdGsuTWVudSwgSVByb3BUb29sSXRlbSB7Ci0gICAgIHB1Ymxp YyBuZXcgdm9pZCBwb3B1cCh1aW50ICAgICAgIGJ1dHRvbiwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgIHVpbnQzMiAgICAgYWN0aXZhdGVfdGltZSwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgIEd0ay5XaWRnZXQgd2lkZ2V0KSB7Ci0tI2lmIFZBTEFfMF8zNAotICAgICAgICAgYmFzZS5w b3B1cF9hdF93aWRnZXQod2lkZ2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2Rr LkdyYXZpdHkuU09VVEhfV0VTVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdkay5H cmF2aXR5Lk5PUlRIX1dFU1QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsKTsK LS0jZWxzZQotLSAgICAgICAgbV9wYXJlbnRfYnV0dG9uID0gd2lkZ2V0OwotLSAgICAgICAgYmFz ZS5wb3B1cChudWxsLCBudWxsLCBtZW51X3Bvc2l0aW9uLCBidXR0b24sIGFjdGl2YXRlX3RpbWUp OwotLSNlbmRpZgotICAgICB9Ci0gCi0gICAgIHB1YmxpYyBvdmVycmlkZSB2b2lkIGRlc3Ryb3ko KSB7Ci1AQCAtNTkwLDU3ICs1ODAsNiBAQCBwdWJsaWMgY2xhc3MgUHJvcE1lbnUgOiBHdGsuTWVu dSwgSVByb3BUb29sSXRlbSB7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgfQotICAgICB9Ci0t Ci0tI2lmICFWQUxBXzBfMzQKLS0gICAgcHJpdmF0ZSB2b2lkIG1lbnVfcG9zaXRpb24oR3RrLk1l bnUgbWVudSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0IGludCAgeCwKLS0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0IGludCAgeSwKLS0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgb3V0IGJvb2wgcHVzaF9pbikgewotLSAgICAgICAgdmFyIGJ1dHRv biA9IG1fcGFyZW50X2J1dHRvbjsKLS0gICAgICAgIHZhciBzY3JlZW4gPSBidXR0b24uZ2V0X3Nj cmVlbigpOwotLSAgICAgICAgdmFyIG1vbml0b3IgPSBzY3JlZW4uZ2V0X21vbml0b3JfYXRfd2lu ZG93KGJ1dHRvbi5nZXRfd2luZG93KCkpOwotLQotLSAgICAgICAgR2RrLlJlY3RhbmdsZSBtb25p dG9yX2xvY2F0aW9uOwotLSAgICAgICAgc2NyZWVuLmdldF9tb25pdG9yX2dlb21ldHJ5KG1vbml0 b3IsIG91dCBtb25pdG9yX2xvY2F0aW9uKTsKLS0KLS0gICAgICAgIGJ1dHRvbi5nZXRfd2luZG93 KCkuZ2V0X29yaWdpbihvdXQgeCwgb3V0IHkpOwotLQotLSAgICAgICAgR3RrLkFsbG9jYXRpb24g YnV0dG9uX2FsbG9jYXRpb247Ci0tICAgICAgICBidXR0b24uZ2V0X2FsbG9jYXRpb24ob3V0IGJ1 dHRvbl9hbGxvY2F0aW9uKTsKLS0KLS0gICAgICAgIHggKz0gYnV0dG9uX2FsbG9jYXRpb24ueDsK LS0gICAgICAgIHkgKz0gYnV0dG9uX2FsbG9jYXRpb24ueTsKLS0KLS0gICAgICAgIGludCBtZW51 X3dpZHRoOwotLSAgICAgICAgaW50IG1lbnVfaGVpZ2h0OwotLSAgICAgICAgbWVudS5nZXRfc2l6 ZV9yZXF1ZXN0KG91dCBtZW51X3dpZHRoLCBvdXQgbWVudV9oZWlnaHQpOwotLQotLSAgICAgICAg aWYgKHggKyBtZW51X3dpZHRoID49IG1vbml0b3JfbG9jYXRpb24ud2lkdGgpCi0tICAgICAgICAg ICAgeCAtPSBtZW51X3dpZHRoIC0gYnV0dG9uX2FsbG9jYXRpb24ud2lkdGg7Ci0tICAgICAgICBl bHNlIGlmICh4IC0gbWVudV93aWR0aCA8PSAwKQotLSAgICAgICAgICAgIDsKLS0gICAgICAgIGVs c2UgewotLSAgICAgICAgICAgIGlmICh4IDw9IG1vbml0b3JfbG9jYXRpb24ud2lkdGggKiAzIC8g NCkKLS0gICAgICAgICAgICAgICAgOwotLSAgICAgICAgICAgIGVsc2UKLS0gICAgICAgICAgICAg ICAgeCAtPSBtZW51X3dpZHRoIC0gYnV0dG9uX2FsbG9jYXRpb24ud2lkdGg7Ci0tICAgICAgICB9 Ci0tCi0tICAgICAgICBpZiAoeSArIGJ1dHRvbl9hbGxvY2F0aW9uLmhlaWdodCArIG1lbnVfd2lk dGgKLS0gICAgICAgICAgICAgICAgPj0gbW9uaXRvcl9sb2NhdGlvbi5oZWlnaHQpCi0tICAgICAg ICAgICAgeSAtPSBtZW51X2hlaWdodDsKLS0gICAgICAgIGVsc2UgaWYgKHkgLSBtZW51X2hlaWdo dCA8PSAwKQotLSAgICAgICAgICAgIHkgKz0gYnV0dG9uX2FsbG9jYXRpb24uaGVpZ2h0OwotLSAg ICAgICAgZWxzZSB7Ci0tICAgICAgICAgICAgaWYgKHkgPD0gbW9uaXRvcl9sb2NhdGlvbi5oZWln aHQgKiAzIC8gNCkKLS0gICAgICAgICAgICAgICAgeSArPSBidXR0b25fYWxsb2NhdGlvbi5oZWln aHQ7Ci0tICAgICAgICAgICAgZWxzZQotLSAgICAgICAgICAgICAgICB5IC09IG1lbnVfaGVpZ2h0 OwotLSAgICAgICAgfQotLQotLSAgICAgICAgcHVzaF9pbiA9IGZhbHNlOwotLSAgICB9Ci0tI2Vu ZGlmCi0gfQotIAotIHB1YmxpYyBjbGFzcyBQcm9wVG9vbEJ1dHRvbiA6IEd0ay5Ub29sQnV0dG9u LCBJUHJvcFRvb2xJdGVtIHsKLWRpZmYgLS1naXQgYS91aS9ndGszL3N3aXRjaGVyLnZhbGEgYi91 aS9ndGszL3N3aXRjaGVyLnZhbGEKLWluZGV4IDk5YTJmYTBiLi5kNGE1ZmExMSAxMDA2NDQKLS0t LSBhL3VpL2d0azMvc3dpdGNoZXIudmFsYQotKysrIGIvdWkvZ3RrMy9zd2l0Y2hlci52YWxhCi1A QCAtMjM1LDcgKzIzNSw2IEBAIGNsYXNzIFN3aXRjaGVyIDogR3RrLldpbmRvdyB7Ci0gICAgICAg ICB9Ci0gCi0gICAgICAgICBHZGsuRGV2aWNlIHBvaW50ZXI7Ci0tI2lmIFZBTEFfMF8zNAotICAg ICAgICAgR2RrLlNlYXQgc2VhdCA9IGV2ZW50LmdldF9zZWF0KCk7Ci0gICAgICAgICBpZiAoc2Vh dCA9PSBudWxsKSB7Ci0gICAgICAgICAgICAgdmFyIGRpc3BsYXkgPSBnZXRfZGlzcGxheSgpOwot QEAgLTI2Miw1NCArMjYxLDYgQEAgY2xhc3MgU3dpdGNoZXIgOiBHdGsuV2luZG93IHsKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICBudWxsKTsKLSAgICAgICAgIGlmIChzdGF0dXMgIT0gR2Rr LkdyYWJTdGF0dXMuU1VDQ0VTUykKLSAgICAgICAgICAgICB3YXJuaW5nKCJHcmFiIHBvaW50ZXIg ZmFpbGVkISBzdGF0dXMgPSAlZCIsIHN0YXR1cyk7Ci0tI2Vsc2UKLS0gICAgICAgIEdkay5EZXZp Y2UgZGV2aWNlID0gZXZlbnQuZ2V0X2RldmljZSgpOwotLSAgICAgICAgaWYgKGRldmljZSA9PSBu dWxsKSB7Ci0tICAgICAgICAgICAgdmFyIGRpc3BsYXkgPSBnZXRfZGlzcGxheSgpOwotLSAgICAg ICAgICAgIHZhciBkZXZpY2VfbWFuYWdlciA9IGRpc3BsYXkuZ2V0X2RldmljZV9tYW5hZ2VyKCk7 Ci0tLyogVGhlIG1hY3JvIFZBTEFfWF9ZIHN1cHBvcnRzIGV2ZW4gbnVtYmVycy4KLS0gKiBodHRw Oi8vZ2l0Lmdub21lLm9yZy9icm93c2UvdmFsYS9jb21taXQvP2lkPTI5NGIzNzRhZjYKLS0gKi8K LS0jaWYgVkFMQV8wXzE2Ci0tICAgICAgICAgICAgZGV2aWNlID0gZGV2aWNlX21hbmFnZXIubGlz dF9kZXZpY2VzKEdkay5EZXZpY2VUeXBlLk1BU1RFUikuZGF0YTsKLS0jZWxzZQotLSAgICAgICAg ICAgIHVub3duZWQgR0xpYi5MaXN0PEdkay5EZXZpY2U+IGRldmljZXMgPQotLSAgICAgICAgICAg ICAgICAgICAgZGV2aWNlX21hbmFnZXIubGlzdF9kZXZpY2VzKEdkay5EZXZpY2VUeXBlLk1BU1RF Uik7Ci0tICAgICAgICAgICAgZGV2aWNlID0gZGV2aWNlcy5kYXRhOwotLSNlbmRpZgotLSAgICAg ICAgfQotLQotLSAgICAgICAgR2RrLkRldmljZSBrZXlib2FyZDsKLS0gICAgICAgIGlmIChkZXZp Y2UuZ2V0X3NvdXJjZSgpID09IEdkay5JbnB1dFNvdXJjZS5LRVlCT0FSRCkgewotLSAgICAgICAg ICAgIGtleWJvYXJkID0gZGV2aWNlOwotLSAgICAgICAgICAgIHBvaW50ZXIgPSBkZXZpY2UuZ2V0 X2Fzc29jaWF0ZWRfZGV2aWNlKCk7Ci0tICAgICAgICB9IGVsc2UgewotLSAgICAgICAgICAgIHBv aW50ZXIgPSBkZXZpY2U7Ci0tICAgICAgICAgICAga2V5Ym9hcmQgPSBkZXZpY2UuZ2V0X2Fzc29j aWF0ZWRfZGV2aWNlKCk7Ci0tICAgICAgICB9Ci0tCi0tICAgICAgICBHZGsuR3JhYlN0YXR1cyBz dGF0dXM7Ci0tICAgICAgICAvLyBHcmFiIGFsbCBrZXlib2FyZCBldmVudHMKLS0gICAgICAgIHN0 YXR1cyA9IGtleWJvYXJkLmdyYWIoZ2V0X3dpbmRvdygpLAotLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBHZGsuR3JhYk93bmVyc2hpcC5OT05FLAotLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB0cnVlLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZGsuRXZl bnRNYXNrLktFWV9QUkVTU19NQVNLIHwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg R2RrLkV2ZW50TWFzay5LRVlfUkVMRUFTRV9NQVNLLAotLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBudWxsLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZGsuQ1VSUkVO VF9USU1FKTsKLS0gICAgICAgIGlmIChzdGF0dXMgIT0gR2RrLkdyYWJTdGF0dXMuU1VDQ0VTUykK LS0gICAgICAgICAgICB3YXJuaW5nKCJHcmFiIGtleWJvYXJkIGZhaWxlZCEgc3RhdHVzID0gJWQi LCBzdGF0dXMpOwotLSAgICAgICAgLy8gR3JhYiBhbGwgcG9pbnRlciBldmVudHMKLS0gICAgICAg IHN0YXR1cyA9IHBvaW50ZXIuZ3JhYihnZXRfd2luZG93KCksCi0tICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgR2RrLkdyYWJPd25lcnNoaXAuTk9ORSwKLS0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB0cnVlLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdkay5FdmVu dE1hc2suQlVUVE9OX1BSRVNTX01BU0sgfAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEdkay5FdmVudE1hc2suQlVUVE9OX1JFTEVBU0VfTUFTSywKLS0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBudWxsLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdkay5DVVJS RU5UX1RJTUUpOwotLSAgICAgICAgaWYgKHN0YXR1cyAhPSBHZGsuR3JhYlN0YXR1cy5TVUNDRVNT KQotLSAgICAgICAgICAgIHdhcm5pbmcoIkdyYWIgcG9pbnRlciBmYWlsZWQhIHN0YXR1cyA9ICVk Iiwgc3RhdHVzKTsKLS0jZW5kaWYKLSAKLSAgICAgICAgIC8vIFByb2JhYmx5IHdlIGNhbiBkZWxl dGUgbV9wb3B1cF9kZWxheV90aW1lIGluIDEuNgotICAgICAgICAgcG9pbnRlci5nZXRfcG9zaXRp b25fZG91YmxlKG51bGwsCi1AQCAtMzIyLDEyICsyNzMsNyBAQCBjbGFzcyBTd2l0Y2hlciA6IEd0 ay5XaW5kb3cgewotICAgICAgICAgbV9sb29wLnJ1bigpOwotICAgICAgICAgbV9sb29wID0gbnVs bDsKLSAKLS0jaWYgVkFMQV8wXzM0Ci0gICAgICAgICBzZWF0LnVuZ3JhYigpOwotLSNlbHNlCi0t ICAgICAgICBrZXlib2FyZC51bmdyYWIoR2RrLkNVUlJFTlRfVElNRSk7Ci0tICAgICAgICBwb2lu dGVyLnVuZ3JhYihHZGsuQ1VSUkVOVF9USU1FKTsKLS0jZW5kaWYKLSAKLSAgICAgICAgIGhpZGUo KTsKLSAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgc3dpdGNoZXIgaXMgaGlkZGVuIGJlZm9yZSBy ZXR1cm5pbmcgZnJvbSB0aGlzIGZ1bmN0aW9uLgotQEAgLTM3MiwxMSArMzE4LDcgQEAgY2xhc3Mg U3dpdGNoZXIgOiBHdGsuV2luZG93IHsKLSAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0g ICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgYnV0dG9uLm1vdGlvbl9ub3RpZnlfZXZlbnQu Y29ubmVjdCgoZSkgPT4gewotLSNpZiBWQUxBXzBfMjQKLSAgICAgICAgICAgICAgICAgR2RrLkV2 ZW50TW90aW9uIHBlID0gZTsKLS0jZWxzZQotLSAgICAgICAgICAgICAgICBHZGsuRXZlbnRNb3Rp b24gKnBlID0gJmU7Ci0tI2VuZGlmCi0gICAgICAgICAgICAgICAgIGlmIChtX3NlbGVjdGVkX2Vu Z2luZSA9PSBpbmRleCkKLSAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg ICAgICAgICAgICAgaWYgKCFtX21vdXNlX21vdmVkICYmCi1AQCAtNDE0LDIxICszNTYsMTIgQEAg Y2xhc3MgU3dpdGNoZXIgOiBHdGsuV2luZG93IHsKLSAKLSAgICAgICAgIEdkay5EaXNwbGF5IGRp c3BsYXkgPSBHZGsuRGlzcGxheS5nZXRfZGVmYXVsdCgpOwotICAgICAgICAgaW50IHNjcmVlbl93 aWR0aCA9IDA7Ci0tI2lmIFZBTEFfMF8zNAotICAgICAgICAgLy8gZGlzcGxheS5nZXRfbW9uaXRv cl9hdF93aW5kb3coKSBpcyBudWxsIGJlY2F1c2Ugb2YgdW5yZWFsaXplZCB3aW5kb3cKLSAgICAg ICAgIEdkay5Nb25pdG9yIG1vbml0b3IgPSBkaXNwbGF5LmdldF9wcmltYXJ5X21vbml0b3IoKTsK LSAgICAgICAgIGlmIChtb25pdG9yID09IG51bGwpCi0gICAgICAgICAgICAgcmV0dXJuOwotICAg ICAgICAgR2RrLlJlY3RhbmdsZSBhcmVhID0gbW9uaXRvci5nZXRfZ2VvbWV0cnkoKTsKLSAgICAg ICAgIHNjcmVlbl93aWR0aCA9IGFyZWEud2lkdGg7Ci0tI2Vsc2UKLS0gICAgICAgIEdkay5TY3Jl ZW4gc2NyZWVuID0gKGRpc3BsYXkgIT0gbnVsbCkgPwotLSAgICAgICAgICAgICAgICBkaXNwbGF5 LmdldF9kZWZhdWx0X3NjcmVlbigpIDogbnVsbDsKLS0KLS0gICAgICAgIGlmIChzY3JlZW4gIT0g bnVsbCkgewotLSAgICAgICAgICAgIHNjcmVlbl93aWR0aCA9IHNjcmVlbi5nZXRfd2lkdGgoKTsK LS0gICAgICAgIH0KLS0jZW5kaWYKLSAKLSAgICAgICAgIGlmIChzY3JlZW5fd2lkdGggPiAwICYm IG1heF9sYWJlbF93aWR0aCA+IChzY3JlZW5fd2lkdGggLyA0KSkgewotICAgICAgICAgICAgIG1h eF9sYWJlbF93aWR0aCA9IHNjcmVlbl93aWR0aCAvIDQ7Ci1AQCAtNTAzLDE0ICs0MzYsNyBAQCBj bGFzcyBTd2l0Y2hlciA6IEd0ay5XaW5kb3cgewotICAgICBwdWJsaWMgb3ZlcnJpZGUgYm9vbCBr ZXlfcHJlc3NfZXZlbnQoR2RrLkV2ZW50S2V5IGUpIHsKLSAgICAgICAgIGJvb2wgcmV0dmFsID0g R2RrLkVWRU5UX1NUT1A7Ci0gCi0tLyogR2RrLkV2ZW50S2V5IGlzIGNoYW5nZWQgdG8gdGhlIHBv aW50ZXIuCi0tICogaHR0cHM6Ly9naXQuZ25vbWUub3JnL2Jyb3dzZS92YWxhL2NvbW1pdC8/aWQ9 NTk4OTQyZjEKLS0gKi8KLS0jaWYgVkFMQV8wXzI0Ci0gICAgICAgICBHZGsuRXZlbnRLZXkgcGUg PSBlOwotLSNlbHNlCi0tICAgICAgICBHZGsuRXZlbnRLZXkgKnBlID0gJmU7Ci0tI2VuZGlmCi0g Ci0gICAgICAgICBpZiAobV9wb3B1cF9kZWxheV90aW1lID4gMCkgewotICAgICAgICAgICAgIHJl c3RvcmVfd2luZG93X3Bvc2l0aW9uKCJwcmVzc2VkIik7Ci1AQCAtNTU3LDExICs0ODMsNyBAQCBj bGFzcyBTd2l0Y2hlciA6IEd0ay5XaW5kb3cgewotICAgICB9Ci0gCi0gICAgIHB1YmxpYyBvdmVy cmlkZSBib29sIGtleV9yZWxlYXNlX2V2ZW50KEdkay5FdmVudEtleSBlKSB7Ci0tI2lmIFZBTEFf MF8yNAotICAgICAgICAgR2RrLkV2ZW50S2V5IHBlID0gZTsKLS0jZWxzZQotLSAgICAgICAgR2Rr LkV2ZW50S2V5ICpwZSA9ICZlOwotLSNlbmRpZgotIAotICAgICAgICAgaWYgKEtleWJpbmRpbmdN YW5hZ2VyLnByaW1hcnlfbW9kaWZpZXJfc3RpbGxfcHJlc3NlZCgoR2RrLkV2ZW50KSBwZSwKLSAg ICAgICAgICAgICBtX3ByaW1hcnlfbW9kaWZpZXIpKSB7Ci0tLSAKLTIuNDkuMAotCi1Gcm9tIGNm NjI2M2U0NzQyZmEzMzhmZDliYmVkNzgzOTZiYjI5YTcwYWVjY2IgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCi1Gcm9tOiBmdWppd2FyYXQgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+Ci1EYXRl OiBTdW4sIDEgSnVuIDIwMjUgMjA6MjQ6NDIgKzA5MDAKLVN1YmplY3Q6IFtQQVRDSCAyLzNdIElt cGxlbWVudCBJQnVzTWVzc2FnZQotCi1JQnVzRW5naW5lIGFuZCBJQnVzUGFuZWwgY2FuIHNlbmQg SUJ1c01lc3NhZ2UgdG8gSUJ1c1BhbmVsLgotQ3VycmVudGx5IEd0a1BvcHVwIHRha2VzIGlucHV0 IGZvY3VzIGluIFdheWxhbmQsIGFuZCB0aGUgUGFuZWwgY2FuIG9ubHkKLWRpc3BsYXkgbm9uLWZv Y3VzZWQgcG9wdXBzIHdpdGggdGhlIFdheWxhbmQgcGFuZWwgcHJvdG9jb2wuCi0KLVdoaWxlIEdU SyBhbGxvd3MgdGhlIElNIG1vZHVsZXMgdG8gZmxhc2ggdGhlIGZvY3VzZWQgd2luZG93IHRvIGFs ZXJ0Ci11c2VycyBvZiB0aGllciB0eXBpbmcgZXJyb3JzLCBpbmRpdmlkdWFsIElCdXMgZW5naW5l cyBsYWNrIHRoaXMKLWNhcGFiaWxpdHkuIFRoaXMgaXMgYmVjYXVzZSBlbmdpbmVzIHR5cGljYWxs eSBvbmx5IHJlY2VpdmUga2V5Ym9hcmQKLWlucHV0IChrZXlzeW1zL2tleWNvZGVzKSBhbmQgbm90 IHRoZSBhc3NvY2lhdGVkIHdpbmRvdyBpbmZvcm1hdGlvbi4KLVRoZSBwcm9wb3NlZCBzb2x1dGlv biBpcyB0byByZWRpcmVjdCB0aGUgZXJyb3IgbWVzc2FnZXMgdG8gdGhlIHN5c3RlbQotUGFuZWwu IFRoZSBQYW5lbCwgaGF2aW5nIGFjY2VzcyB0byB3aW5kb3cgbWFuYWdlbWVudCBpbiBXYXlsYW5k IGFuZAotWG9yZywgY291bGQgdGhlbiBoYW5kbGUgdGhlIGRpc3BsYXkgb2Ygbm9uLWZvY3VzZWQg cG9wdXAgbm90aWZpY2F0aW9ucy4KLQotR05PTUUtU2hlbGwgbmVlZHMgdG8gaGFuZGxlIHRoZSBJ QnVzTWVzc2FnZS4gQXMgYSB0ZW1wb3Jhcnkgc29sdXRpb24gaW4KLUdOT01FLCB0aGUgY29tcG9z ZSBzZXF1ZW5jZSB3aWxsIGJlIGZsYXNoZWQgdG8gYWxlcnQgdXNlcnMgYXMgYQotd29ya2Fyb3Vu ZCB1bnRpbCB0aGUgZnVsbCBpbXBsZW1lbnRhdGlvbiBpcyBjb21wbGV0ZWQuCi0KLUFsc28gcmVm YWN0b3IgIkZyZWUgZGF0YSBpbiBidXNfaW5wdXRfY29udGV4dF9mb3J3YXJkX3Byb2Nlc3Nfa2V5 X2V2ZW50Ii4KLQotRml4ZXM6IGh0dHBzOi8vZ2l0aHViLmNvbS9pYnVzL2lidXMvY29tbWl0L2I0 ZjUxYjY5Ci1CVUc9aHR0cHM6Ly9naXRodWIuY29tL2lidXMvaWJ1cy9pc3N1ZXMvMjcyMgotLS0t Ci0gYmluZGluZ3MvdmFsYS9JQnVzLTEuMC1jdXN0b20udmFsYSB8ICA0MCArLQotIGJ1cy9lbmdp bmVwcm94eS5jICAgICAgICAgICAgICAgICAgfCAgNDAgKy0KLSBidXMvaWJ1c2ltcGwuYyAgICAg ICAgICAgICAgICAgICAgIHwgIDY3ICsrLS0KLSBidXMvaW5wdXRjb250ZXh0LmMgICAgICAgICAg ICAgICAgIHwgIDM0ICstCi0gYnVzL3BhbmVscHJveHkuYyAgICAgICAgICAgICAgICAgICB8ICAz NyArLQotIGJ1cy9wYW5lbHByb3h5LmggICAgICAgICAgICAgICAgICAgfCAgIDcgKy0KLSBzcmMv TWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgIHwgICA2ICstCi0gc3JjL2lidXNlbmdpbmUu YyAgICAgICAgICAgICAgICAgICB8ICAzMyArLQotIHNyYy9pYnVzZW5naW5lLmggICAgICAgICAg ICAgICAgICAgfCAgMzYgKy0KLSBzcmMvaWJ1c2VuZ2luZXNpbXBsZS5jICAgICAgICAgICAgIHwg IDYzICsrKy0KLSBzcmMvaWJ1c21lc3NhZ2UuYyAgICAgICAgICAgICAgICAgIHwgNTYyICsrKysr KysrKysrKysrKysrKysrKysrKysrKysrCi0gc3JjL2lidXNtZXNzYWdlLmggICAgICAgICAgICAg ICAgICB8IDIwNSArKysrKysrKysrKwotIHNyYy9pYnVzcGFuZWxzZXJ2aWNlLmMgICAgICAgICAg ICAgfCAxMjggKysrKysrLQotIHNyYy9pYnVzcGFuZWxzZXJ2aWNlLmggICAgICAgICAgICAgfCAg MzggKy0KLSBzcmMvaWJ1c3R5cGVzLmggICAgICAgICAgICAgICAgICAgIHwgIDE0ICsKLSB1aS9n dGszL01ha2VmaWxlLmFtICAgICAgICAgICAgICAgIHwgICAxICsKLSB1aS9ndGszL2Vtb2ppZXIu dmFsYSAgICAgICAgICAgICAgIHwgIDM5ICstCi0gdWkvZ3RrMy9tZXNzYWdlLnZhbGEgICAgICAg ICAgICAgICB8IDM1MyArKysrKysrKysrKysrKysrKysKLSB1aS9ndGszL3BhbmVsLnZhbGEgICAg ICAgICAgICAgICAgIHwgMTM3ICsrKysrLS0KLSB1aS9ndGszL3BhbmVsYmluZGluZy52YWxhICAg ICAgICAgIHwgICA1ICstCi0gMjAgZmlsZXMgY2hhbmdlZCwgMTcyNyBpbnNlcnRpb25zKCspLCAx MTggZGVsZXRpb25zKC0pCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9pYnVzbWVzc2FnZS5jCi0g Y3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9pYnVzbWVzc2FnZS5oCi0gY3JlYXRlIG1vZGUgMTAwNjQ0 IHVpL2d0azMvbWVzc2FnZS52YWxhCi0KLWRpZmYgLS1naXQgYS9iaW5kaW5ncy92YWxhL0lCdXMt MS4wLWN1c3RvbS52YWxhIGIvYmluZGluZ3MvdmFsYS9JQnVzLTEuMC1jdXN0b20udmFsYQotaW5k ZXggZWM0NmZjOTAuLjhjZWQ4YTk3IDEwMDY0NAotLS0tIGEvYmluZGluZ3MvdmFsYS9JQnVzLTEu MC1jdXN0b20udmFsYQotKysrIGIvYmluZGluZ3MvdmFsYS9JQnVzLTEuMC1jdXN0b20udmFsYQot QEAgLTEsMjQgKzEsMzggQEAKLSBuYW1lc3BhY2UgSUJ1cyB7Ci0rICAgICAgICBwdWJsaWMgY2xh c3MgRW1vamlEYXRhIDogSUJ1cy5TZXJpYWxpemFibGUgewotKwkJW0NDb2RlIChjbmFtZSA9ICJp YnVzX2Vtb2ppX2RhdGFfbmV3IiwKLSsgICAgICAgICAgICAgICAgICAgICAgICBoYXNfY29uc3Ry dWN0X2Z1bmN0aW9uID0gdHJ1ZSldCi0rCQlwdWJsaWMgRW1vamlEYXRhIChzdHJpbmcgZmlyc3Rf cHJvcGVydHlfbmFtZSwgLi4uKTsKLSsJfQotKwlwdWJsaWMgY2xhc3MgRXh0ZW5zaW9uRXZlbnQg OiBJQnVzLlNlcmlhbGl6YWJsZSB7Ci0rCQlbQ0NvZGUgKGNuYW1lID0gImlidXNfZXh0ZW5zaW9u X2V2ZW50X25ldyIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgaGFzX2NvbnN0cnVjdF9mdW5j dGlvbiA9IHRydWUpXQotKwkJcHVibGljIEV4dGVuc2lvbkV2ZW50IChzdHJpbmcgZmlyc3RfcHJv cGVydHlfbmFtZSwgLi4uKTsKLSsJfQotKwlwdWJsaWMgY2xhc3MgTWVzc2FnZSA6IElCdXMuU2Vy aWFsaXphYmxlIHsKLSsJCVtDQ29kZSAoY25hbWUgPSAiaWJ1c19tZXNzYWdlX25ldyIsCi0rICAg ICAgICAgICAgICAgICAgICAgICAgaGFzX2NvbnN0cnVjdF9mdW5jdGlvbiA9IHRydWUpXQotKwkJ cHVibGljIE1lc3NhZ2UgKHVpbnQgZG9tYWluLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdWludCBjb2RlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5n PyB0aXRsZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZyBkZXNjcmlw dGlvbiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLik7Ci0rCX0KLSsJcHVi bGljIGNsYXNzIFBhbmVsU2VydmljZSA6IElCdXMuU2VydmljZSB7Ci0rICAgICAgICAgICAgICAg IHB1YmxpYyB2b2lkCi0rICAgICAgICAgICAgICAgIHBhbmVsX2V4dGVuc2lvbl9yZWdpc3Rlcl9r ZXlzKHN0cmluZyBmaXJzdF9wcm9wZXJ0eV9uYW1lLCAuLi4pOwotKwl9Ci0gCS8vIEZvciBzb21l IHJlYXNvbiwgaWJ1c190ZXh0X25ld19mcm9tX3N0YXRpY19zdHJpbmcgaXMgaGlkZGVuIGluIEdJ UgotIAkvLyBodHRwczovL2dpdGh1Yi5jb20vaWJ1cy9pYnVzL2NvbW1pdC8zN2U2ZTU4NwotIAlb Q0NvZGUgKHR5cGVfaWQgPSAiaWJ1c190ZXh0X2dldF90eXBlICgpIiwgY2hlYWRlcl9maWxlbmFt ZSA9ICJpYnVzLmgiKV0KLSAJcHVibGljIGNsYXNzIFRleHQgOiBJQnVzLlNlcmlhbGl6YWJsZSB7 Ci0tCQlbQ0NvZGUgKGNuYW1lID0gImlidXNfdGV4dF9uZXdfZnJvbV9zdGF0aWNfc3RyaW5nIiwg aGFzX2NvbnN0cnVjdF9mdW5jdGlvbiA9IGZhbHNlKV0KLSsJCVtDQ29kZSAoY25hbWUgPSAiaWJ1 c190ZXh0X25ld19mcm9tX3N0YXRpY19zdHJpbmciLAotKyAgICAgICAgICAgICAgICAgICAgICAg IGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSldCi0gCQlwdWJsaWMgVGV4dC5mcm9tX3N0 YXRpY19zdHJpbmcgKHN0cmluZyBzdHIpOwotIAl9Ci0tCXB1YmxpYyBjbGFzcyBFeHRlbnNpb25F dmVudCA6IElCdXMuU2VyaWFsaXphYmxlIHsKLS0JCVtDQ29kZSAoY25hbWUgPSAiaWJ1c19leHRl bnNpb25fZXZlbnRfbmV3IiwgaGFzX2NvbnN0cnVjdF9mdW5jdGlvbiA9IHRydWUpXQotLQkJcHVi bGljIEV4dGVuc2lvbkV2ZW50IChzdHJpbmcgZmlyc3RfcHJvcGVydHlfbmFtZSwgLi4uKTsKLS0J fQotIAlwdWJsaWMgY2xhc3MgWEV2ZW50IDogSUJ1cy5TZXJpYWxpemFibGUgewotLQkJW0NDb2Rl IChjbmFtZSA9ICJpYnVzX3hfZXZlbnRfbmV3IiwgaGFzX2NvbnN0cnVjdF9mdW5jdGlvbiA9IHRy dWUpXQotKwkJW0NDb2RlIChjbmFtZSA9ICJpYnVzX3hfZXZlbnRfbmV3IiwKLSsgICAgICAgICAg ICAgICAgIGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSB0cnVlKV0KLSAJCXB1YmxpYyBYRXZlbnQg KHN0cmluZyBmaXJzdF9wcm9wZXJ0eV9uYW1lLCAuLi4pOwotIAl9Ci0tCXB1YmxpYyBjbGFzcyBQ YW5lbFNlcnZpY2UgOiBJQnVzLlNlcnZpY2UgewotLSAgICAgICAgICAgICAgICBwdWJsaWMgdm9p ZCBwYW5lbF9leHRlbnNpb25fcmVnaXN0ZXJfa2V5cyhzdHJpbmcgZmlyc3RfcHJvcGVydHlfbmFt ZSwgLi4uKTsKLS0JfQotLSAgICAgICAgcHVibGljIGNsYXNzIEVtb2ppRGF0YSA6IElCdXMuU2Vy aWFsaXphYmxlIHsKLS0JCVtDQ29kZSAoY25hbWUgPSAiaWJ1c19lbW9qaV9kYXRhX25ldyIsIGhh c19jb25zdHJ1Y3RfZnVuY3Rpb24gPSB0cnVlKV0KLS0JCXB1YmxpYyBFbW9qaURhdGEgKHN0cmlu ZyBmaXJzdF9wcm9wZXJ0eV9uYW1lLCAuLi4pOwotLQl9Ci0gfQotZGlmZiAtLWdpdCBhL2J1cy9l bmdpbmVwcm94eS5jIGIvYnVzL2VuZ2luZXByb3h5LmMKLWluZGV4IDhiZDZjZWZkLi45OGVjNjNm ZSAxMDA2NDQKLS0tLSBhL2J1cy9lbmdpbmVwcm94eS5jCi0rKysgYi9idXMvZW5naW5lcHJveHku YwotQEAgLTk1LDYgKzk1LDcgQEAgZW51bSB7Ci0gICAgIFJFR0lTVEVSX1BST1BFUlRJRVMsCi0g ICAgIFVQREFURV9QUk9QRVJUWSwKLSAgICAgUEFORUxfRVhURU5TSU9OLAotKyAgICBTRU5EX01F U1NBR0UsCi0gICAgIExBU1RfU0lHTkFMLAotIH07Ci0gCi1AQCAtNDU4LDYgKzQ1OSwyMCBAQCBi dXNfZW5naW5lX3Byb3h5X2NsYXNzX2luaXQgKEJ1c0VuZ2luZVByb3h5Q2xhc3MgKmNsYXNzKQot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR19UWVBFX0ZST01fQ0xBU1MgKGNsYXNz KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1c19tYXJzaGFsX1ZPSURfX09C SkVDVHYpOwotIAotKyAgICBlbmdpbmVfc2lnbmFsc1tTRU5EX01FU1NBR0VdID0KLSsgICAgICAg IGdfc2lnbmFsX25ldyAoSV8oInNlbmQtbWVzc2FnZSIpLAotKyAgICAgICAgICAgIEdfVFlQRV9G Uk9NX0NMQVNTIChjbGFzcyksCi0rICAgICAgICAgICAgR19TSUdOQUxfUlVOX0xBU1QsCi0rICAg ICAgICAgICAgMCwKLSsgICAgICAgICAgICBOVUxMLCBOVUxMLAotKyAgICAgICAgICAgIGJ1c19t YXJzaGFsX1ZPSURfX1ZBUklBTlQsCi0rICAgICAgICAgICAgR19UWVBFX05PTkUsCi0rICAgICAg ICAgICAgMSwKLSsgICAgICAgICAgICBHX1RZUEVfVkFSSUFOVCk7Ci0rICAgIGdfc2lnbmFsX3Nl dF92YV9tYXJzaGFsbGVyIChlbmdpbmVfc2lnbmFsc1tTRU5EX01FU1NBR0VdLAotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgR19UWVBFX0ZST01fQ0xBU1MgKGNsYXNzKSwKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1c19tYXJzaGFsX1ZPSURfX1ZBUklBTlR2KTsK LSsKLSAgICAgdGV4dF9lbXB0eSA9IGlidXNfdGV4dF9uZXdfZnJvbV9zdGF0aWNfc3RyaW5nICgi Iik7Ci0gICAgIGdfb2JqZWN0X3JlZl9zaW5rICh0ZXh0X2VtcHR5KTsKLSAKLUBAIC01OTQsNyAr NjA5LDcgQEAgYnVzX2VuZ2luZV9wcm94eV9nX3NpZ25hbCAoR0RCdXNQcm94eSAgKnByb3h5LAot IAotICAgICBnaW50IGk7Ci0gICAgIGZvciAoaSA9IDA7IGkgPCBHX05fRUxFTUVOVFMgKHNpZ25h bHMpOyBpKyspIHsKLS0gICAgICAgIGlmIChnX3N0cmNtcDAgKHNpZ25hbF9uYW1lLCBzaWduYWxz W2ldLnNpZ25hbF9uYW1lKSA9PSAwKSB7Ci0rICAgICAgICBpZiAoIWdfc3RyY21wMCAoc2lnbmFs X25hbWUsIHNpZ25hbHNbaV0uc2lnbmFsX25hbWUpKSB7Ci0gICAgICAgICAgICAgZ19zaWduYWxf ZW1pdCAoZW5naW5lLCBlbmdpbmVfc2lnbmFsc1tzaWduYWxzW2ldLnNpZ25hbF9pZF0sIDApOwot ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgIH0KLUBAIC02MDMsNyArNjE4LDcgQEAgYnVz X2VuZ2luZV9wcm94eV9nX3NpZ25hbCAoR0RCdXNQcm94eSAgKnByb3h5LAotICAgICAvKiBIYW5k bGUgRC1CdXMgc2lnbmFscyB3aXRoIHBhcmFtZXRlcnMuIERlc2VyaWFsaXplIHRoZW0gYW5kIGVt aXQgYSBnbGliCi0gICAgICAqIHNpZ25hbC4KLSAgICAgICovCi0tICAgIGlmIChnX3N0cmNtcDAg KHNpZ25hbF9uYW1lLCAiQ29tbWl0VGV4dCIpID09IDApIHsKLSsgICAgaWYgKCFnX3N0cmNtcDAg KHNpZ25hbF9uYW1lLCAiQ29tbWl0VGV4dCIpKSB7Ci0gICAgICAgICBHVmFyaWFudCAqYXJnMCA9 IE5VTEw7Ci0gICAgICAgICBnX3ZhcmlhbnRfZ2V0IChwYXJhbWV0ZXJzLCAiKHYpIiwgJmFyZzAp OwotICAgICAgICAgZ19yZXR1cm5faWZfZmFpbCAoYXJnMCAhPSBOVUxMKTsKLUBAIC02MTYsNyAr NjMxLDcgQEAgYnVzX2VuZ2luZV9wcm94eV9nX3NpZ25hbCAoR0RCdXNQcm94eSAgKnByb3h5LAot ICAgICAgICAgcmV0dXJuOwotICAgICB9Ci0gCi0tICAgIGlmIChnX3N0cmNtcDAgKHNpZ25hbF9u YW1lLCAiRm9yd2FyZEtleUV2ZW50IikgPT0gMCkgewotKyAgICBpZiAoIWdfc3RyY21wMCAoc2ln bmFsX25hbWUsICJGb3J3YXJkS2V5RXZlbnQiKSkgewotICAgICAgICAgZ3VpbnQzMiBrZXl2YWwg PSAwOwotICAgICAgICAgZ3VpbnQzMiBrZXljb2RlID0gMDsKLSAgICAgICAgIGd1aW50MzIgc3Rh dGVzID0gMDsKLUBAIC02MzEsNyArNjQ2LDcgQEAgYnVzX2VuZ2luZV9wcm94eV9nX3NpZ25hbCAo R0RCdXNQcm94eSAgKnByb3h5LAotICAgICAgICAgcmV0dXJuOwotICAgICB9Ci0gCi0tICAgIGlm IChnX3N0cmNtcDAgKHNpZ25hbF9uYW1lLCAiRGVsZXRlU3Vycm91bmRpbmdUZXh0IikgPT0gMCkg ewotKyAgICBpZiAoIWdfc3RyY21wMCAoc2lnbmFsX25hbWUsICJEZWxldGVTdXJyb3VuZGluZ1Rl eHQiKSkgewotICAgICAgICAgZ2ludCAgb2Zmc2V0X2Zyb21fY3Vyc29yID0gMDsKLSAgICAgICAg IGd1aW50IG5jaGFycyA9IDA7Ci0gICAgICAgICBnX3ZhcmlhbnRfZ2V0IChwYXJhbWV0ZXJzLCAi KGl1KSIsICZvZmZzZXRfZnJvbV9jdXJzb3IsICZuY2hhcnMpOwotQEAgLTY0Miw3ICs2NTcsNyBA QCBidXNfZW5naW5lX3Byb3h5X2dfc2lnbmFsIChHREJ1c1Byb3h5ICAqcHJveHksCi0gICAgICAg ICByZXR1cm47Ci0gICAgIH0KLSAKLS0gICAgaWYgKGdfc3RyY21wMCAoc2lnbmFsX25hbWUsICJV cGRhdGVQcmVlZGl0VGV4dCIpID09IDApIHsKLSsgICAgaWYgKCFnX3N0cmNtcDAgKHNpZ25hbF9u YW1lLCAiVXBkYXRlUHJlZWRpdFRleHQiKSkgewotICAgICAgICAgR1ZhcmlhbnQgKmFyZzAgPSBO VUxMOwotICAgICAgICAgZ3VpbnQgY3Vyc29yX3BvcyA9IDA7Ci0gICAgICAgICBnYm9vbGVhbiB2 aXNpYmxlID0gRkFMU0U7Ci1AQCAtNjY0LDcgKzY3OSw3IEBAIGJ1c19lbmdpbmVfcHJveHlfZ19z aWduYWwgKEdEQnVzUHJveHkgICpwcm94eSwKLSAgICAgICAgIHJldHVybjsKLSAgICAgfQotIAot LSAgICBpZiAoZ19zdHJjbXAwIChzaWduYWxfbmFtZSwgIlVwZGF0ZUF1eGlsaWFyeVRleHQiKSA9 PSAwKSB7Ci0rICAgIGlmICghZ19zdHJjbXAwIChzaWduYWxfbmFtZSwgIlVwZGF0ZUF1eGlsaWFy eVRleHQiKSkgewotICAgICAgICAgR1ZhcmlhbnQgKmFyZzAgPSBOVUxMOwotICAgICAgICAgZ2Jv b2xlYW4gdmlzaWJsZSA9IEZBTFNFOwotIAotQEAgLTY4NCw3ICs2OTksNyBAQCBidXNfZW5naW5l X3Byb3h5X2dfc2lnbmFsIChHREJ1c1Byb3h5ICAqcHJveHksCi0gICAgICAgICByZXR1cm47Ci0g ICAgIH0KLSAKLS0gICAgaWYgKGdfc3RyY21wMCAoc2lnbmFsX25hbWUsICJVcGRhdGVMb29rdXBU YWJsZSIpID09IDApIHsKLSsgICAgaWYgKCFnX3N0cmNtcDAgKHNpZ25hbF9uYW1lLCAiVXBkYXRl TG9va3VwVGFibGUiKSkgewotICAgICAgICAgR1ZhcmlhbnQgKmFyZzAgPSBOVUxMOwotICAgICAg ICAgZ2Jvb2xlYW4gdmlzaWJsZSA9IEZBTFNFOwotIAotQEAgLTcwNSw3ICs3MjAsNyBAQCBidXNf ZW5naW5lX3Byb3h5X2dfc2lnbmFsIChHREJ1c1Byb3h5ICAqcHJveHksCi0gICAgICAgICByZXR1 cm47Ci0gICAgIH0KLSAKLS0gICAgaWYgKGdfc3RyY21wMCAoc2lnbmFsX25hbWUsICJSZWdpc3Rl clByb3BlcnRpZXMiKSA9PSAwKSB7Ci0rICAgIGlmICghZ19zdHJjbXAwIChzaWduYWxfbmFtZSwg IlJlZ2lzdGVyUHJvcGVydGllcyIpKSB7Ci0gICAgICAgICBHVmFyaWFudCAqYXJnMCA9IE5VTEw7 Ci0gICAgICAgICBnX3ZhcmlhbnRfZ2V0IChwYXJhbWV0ZXJzLCAiKHYpIiwgJmFyZzApOwotICAg ICAgICAgZ19yZXR1cm5faWZfZmFpbCAoYXJnMCAhPSBOVUxMKTsKLUBAIC03MjMsNyArNzM4LDcg QEAgYnVzX2VuZ2luZV9wcm94eV9nX3NpZ25hbCAoR0RCdXNQcm94eSAgKnByb3h5LAotICAgICAg ICAgcmV0dXJuOwotICAgICB9Ci0gCi0tICAgIGlmIChnX3N0cmNtcDAgKHNpZ25hbF9uYW1lLCAi VXBkYXRlUHJvcGVydHkiKSA9PSAwKSB7Ci0rICAgIGlmICghZ19zdHJjbXAwIChzaWduYWxfbmFt ZSwgIlVwZGF0ZVByb3BlcnR5IikpIHsKLSAgICAgICAgIEdWYXJpYW50ICphcmcwID0gTlVMTDsK LSAgICAgICAgIGdfdmFyaWFudF9nZXQgKHBhcmFtZXRlcnMsICIodikiLCAmYXJnMCk7Ci0gICAg ICAgICBnX3JldHVybl9pZl9mYWlsIChhcmcwICE9IE5VTEwpOwotQEAgLTczOCw3ICs3NTMsNyBA QCBidXNfZW5naW5lX3Byb3h5X2dfc2lnbmFsIChHREJ1c1Byb3h5ICAqcHJveHksCi0gICAgICAg ICByZXR1cm47Ci0gICAgIH0KLSAKLS0gICAgaWYgKGdfc3RyY21wMCAoc2lnbmFsX25hbWUsICJQ YW5lbEV4dGVuc2lvbiIpID09IDApIHsKLSsgICAgaWYgKCFnX3N0cmNtcDAgKHNpZ25hbF9uYW1l LCAiUGFuZWxFeHRlbnNpb24iKSkgewotICAgICAgICAgR1ZhcmlhbnQgKmFyZzAgPSBOVUxMOwot ICAgICAgICAgZ192YXJpYW50X2dldCAocGFyYW1ldGVycywgIih2KSIsICZhcmcwKTsKLSAgICAg ICAgIGdfcmV0dXJuX2lmX2ZhaWwgKGFyZzAgIT0gTlVMTCk7Ci1AQCAtNzUyLDYgKzc2NywxMSBA QCBidXNfZW5naW5lX3Byb3h5X2dfc2lnbmFsIChHREJ1c1Byb3h5ICAqcHJveHksCi0gICAgICAg ICByZXR1cm47Ci0gICAgIH0KLSAKLSsgICAgaWYgKCFnX3N0cmNtcDAgKHNpZ25hbF9uYW1lLCAi U2VuZE1lc3NhZ2UiKSkgewotKyAgICAgICAgZ19zaWduYWxfZW1pdCAoZW5naW5lLCBlbmdpbmVf c2lnbmFsc1tTRU5EX01FU1NBR0VdLCAwLCBwYXJhbWV0ZXJzKTsKLSsgICAgICAgIHJldHVybjsK LSsgICAgfQotKwotICAgICBnX3JldHVybl9pZl9yZWFjaGVkICgpOwotIH0KLSAKLWRpZmYgLS1n aXQgYS9idXMvaWJ1c2ltcGwuYyBiL2J1cy9pYnVzaW1wbC5jCi1pbmRleCA1YzljNTJjZS4uZmU1 MjFmMmQgMTAwNjQ0Ci0tLS0gYS9idXMvaWJ1c2ltcGwuYwotKysrIGIvYnVzL2lidXNpbXBsLmMK LUBAIC00NzAsNiArNDcwLDE5IEBAIF9wYW5lbF9mb3J3YXJkX3Byb2Nlc3Nfa2V5X2V2ZW50X2Ni IChCdXNQYW5lbFByb3h5ICpwYW5lbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbW9kaWZpZXJzKTsKLSB9Ci0gCi0rc3RhdGljIHZvaWQKLStfcGFu ZWxfc2VuZF9tZXNzYWdlX2NiIChCdXNQYW5lbFByb3h5ICpwYW5lbCwKLSsgICAgICAgICAgICAg ICAgICAgICAgICBHVmFyaWFudCAgICAgICpwYXJhbWV0ZXJzLAotKyAgICAgICAgICAgICAgICAg ICAgICAgIEJ1c0lCdXNJbXBsICAgKmlidXMpCi0rewotKyAgICBpZiAoIWlidXMtPnBhbmVsKSB7 Ci0rICAgICAgICBnX3dhcm5pbmcgKCJQYW5lbCBpcyBub3QgcnVubmluZy4iKTsKLSsgICAgICAg IHJldHVybjsKLSsgICAgfQotKyAgICBnX3JldHVybl9pZl9mYWlsIChCVVNfSVNfUEFORUxfUFJP WFkgKGlidXMtPnBhbmVsKSk7Ci0rICAgIGJ1c19wYW5lbF9wcm94eV9zZW5kX21lc3NhZ2VfcmVj ZWl2ZWQgKGlidXMtPnBhbmVsLCBwYXJhbWV0ZXJzKTsKLSt9Ci0rCi0gc3RhdGljIHZvaWQKLSBf cmVnaXN0cnlfY2hhbmdlZF9jYiAoSUJ1c1JlZ2lzdHJ5ICpyZWdpc3RyeSwKLSAgICAgICAgICAg ICAgICAgICAgICAgQnVzSUJ1c0ltcGwgICppYnVzKQotQEAgLTU1NiwyNiArNTY5LDI5IEBAIF9k YnVzX25hbWVfb3duZXJfY2hhbmdlZF9jYiAoQnVzREJ1c0ltcGwgICAqZGJ1cywKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBHX0NBTExCQUNLICgKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIF9wYW5lbF9wYW5lbF9leHRlbnNpb25fcmVnaXN0ZXJfa2V5c19j YiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWJ1cyk7Ci0tICAgICAgICAgICAg Z19zaWduYWxfY29ubmVjdCAoCi0tICAgICAgICAgICAgICAgICAgICAqcGFuZWwsCi0tICAgICAg ICAgICAgICAgICAgICAidXBkYXRlLXByZWVkaXQtdGV4dC1yZWNlaXZlZCIsCi0tICAgICAgICAg ICAgICAgICAgICBHX0NBTExCQUNLIChfcGFuZWxfdXBkYXRlX3ByZWVkaXRfdGV4dF9yZWNlaXZl ZF9jYiksCi0tICAgICAgICAgICAgICAgICAgICBpYnVzKTsKLS0gICAgICAgICAgICBnX3NpZ25h bF9jb25uZWN0ICgKLS0gICAgICAgICAgICAgICAgICAgICpwYW5lbCwKLS0gICAgICAgICAgICAg ICAgICAgICJ1cGRhdGUtbG9va3VwLXRhYmxlLXJlY2VpdmVkIiwKLS0gICAgICAgICAgICAgICAg ICAgIEdfQ0FMTEJBQ0sgKF9wYW5lbF91cGRhdGVfbG9va3VwX3RhYmxlX3JlY2VpdmVkX2NiKSwK LS0gICAgICAgICAgICAgICAgICAgIGlidXMpOwotLSAgICAgICAgICAgIGdfc2lnbmFsX2Nvbm5l Y3QgKAotLSAgICAgICAgICAgICAgICAgICAgKnBhbmVsLAotLSAgICAgICAgICAgICAgICAgICAg InVwZGF0ZS1hdXhpbGlhcnktdGV4dC1yZWNlaXZlZCIsCi0tICAgICAgICAgICAgICAgICAgICBH X0NBTExCQUNLIChfcGFuZWxfdXBkYXRlX2F1eGlsaWFyeV90ZXh0X3JlY2VpdmVkX2NiKSwKLS0g ICAgICAgICAgICAgICAgICAgIGlidXMpOwotLSAgICAgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3Qg KAotLSAgICAgICAgICAgICAgICAgICAgKnBhbmVsLAotLSAgICAgICAgICAgICAgICAgICAgImZv cndhcmQtcHJvY2Vzcy1rZXktZXZlbnQiLAotLSAgICAgICAgICAgICAgICAgICAgR19DQUxMQkFD SyAoX3BhbmVsX2ZvcndhcmRfcHJvY2Vzc19rZXlfZXZlbnRfY2IpLAotLSAgICAgICAgICAgICAg ICAgICAgaWJ1cyk7Ci0rICAgICAgICAgICAgZ19zaWduYWxfY29ubmVjdCAoKnBhbmVsLAotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1cGRhdGUtcHJlZWRpdC10ZXh0LXJlY2VpdmVk IiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHX0NBTExCQUNLICgKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9wYW5lbF91cGRhdGVfcHJlZWRpdF90ZXh0 X3JlY2VpdmVkX2NiKSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpYnVzKTsKLSsg ICAgICAgICAgICBnX3NpZ25hbF9jb25uZWN0ICgqcGFuZWwsCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgInVwZGF0ZS1sb29rdXAtdGFibGUtcmVjZWl2ZWQiLAotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEdfQ0FMTEJBQ0sgKAotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgX3BhbmVsX3VwZGF0ZV9sb29rdXBfdGFibGVfcmVjZWl2ZWRfY2IpLAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlidXMpOwotKyAgICAgICAgICAgIGdfc2ln bmFsX2Nvbm5lY3QgKCpwYW5lbCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidXBk YXRlLWF1eGlsaWFyeS10ZXh0LXJlY2VpdmVkIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBHX0NBTExCQUNLICgKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IF9wYW5lbF91cGRhdGVfYXV4aWxpYXJ5X3RleHRfcmVjZWl2ZWRfY2IpLAotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGlidXMpOwotKyAgICAgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3Qg KCpwYW5lbCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZm9yd2FyZC1wcm9jZXNz LWtleS1ldmVudCIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR19DQUxMQkFDSyAo X3BhbmVsX2ZvcndhcmRfcHJvY2Vzc19rZXlfZXZlbnRfY2IpLAotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGlidXMpOwotKyAgICAgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QgKCpwYW5l bCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2VuZC1tZXNzYWdlIiwKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBHX0NBTExCQUNLIChfcGFuZWxfc2VuZF9tZXNzYWdl X2NiKSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpYnVzKTsKLSAKLSAgICAgICAg ICAgICBpZiAoaWJ1cy0+Zm9jdXNlZF9jb250ZXh0ICE9IE5VTEwpIHsKLSAgICAgICAgICAgICAg ICAgY29udGV4dCA9IGlidXMtPmZvY3VzZWRfY29udGV4dDsKLUBAIC04NDksMTEgKzg2NSwyMCBA QCBfY29udGV4dF9wYW5lbF9leHRlbnNpb25fY2IgKEJ1c0lucHV0Q29udGV4dCAgICAqY29udGV4 dCwKLSAgICAgYnVzX2lidXNfaW1wbF9zZXRfcGFuZWxfZXh0ZW5zaW9uX21vZGUgKGlidXMsIGV2 ZW50KTsKLSB9Ci0gCi0rc3RhdGljIHZvaWQKLStfY29udGV4dF9zZW5kX21lc3NhZ2VfY2IgKEJ1 c0lucHV0Q29udGV4dCAqY29udGV4dCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgIEdWYXJp YW50ICAgICAgICAqcGFyYW1ldGVycywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1c0lC dXNJbXBsICAgICAqaWJ1cykKLSt7Ci0rICAgIF9wYW5lbF9zZW5kX21lc3NhZ2VfY2IgKGlidXMt PnBhbmVsLCBwYXJhbWV0ZXJzLCBpYnVzKTsKLSt9Ci0rCi0gY29uc3Qgc3RhdGljIHN0cnVjdCB7 Ci0gICAgIGNvbnN0IGdjaGFyICpuYW1lOwotICAgICBHQ2FsbGJhY2sgICAgY2FsbGJhY2s7Ci0g fSBjb250ZXh0X3NpZ25hbHMgW10gPSB7Ci0tICAgIHsgInBhbmVsLWV4dGVuc2lvbiIsICAgICAg ICAgICAgIEdfQ0FMTEJBQ0sgKF9jb250ZXh0X3BhbmVsX2V4dGVuc2lvbl9jYikgfQotKyAgICB7 ICJwYW5lbC1leHRlbnNpb24iLCAgICAgICAgICAgICBHX0NBTExCQUNLIChfY29udGV4dF9wYW5l bF9leHRlbnNpb25fY2IpIH0sCi0rICAgIHsgInNlbmQtbWVzc2FnZSIsICAgICAgICAgICAgICAg IEdfQ0FMTEJBQ0sgKF9jb250ZXh0X3NlbmRfbWVzc2FnZV9jYikgfQotIH07Ci0gCi0gLyoqCi1k aWZmIC0tZ2l0IGEvYnVzL2lucHV0Y29udGV4dC5jIGIvYnVzL2lucHV0Y29udGV4dC5jCi1pbmRl eCA0MWI0NzU0MC4uZWU0ZmE5OWIgMTAwNjQ0Ci0tLS0gYS9idXMvaW5wdXRjb250ZXh0LmMKLSsr KyBiL2J1cy9pbnB1dGNvbnRleHQuYwotQEAgLTE2NSw2ICsxNjUsNyBAQCBlbnVtIHsKLSAgICAg UkVRVUVTVF9FTkdJTkUsCi0gICAgIFNFVF9DT05URU5UX1RZUEUsCi0gICAgIFBBTkVMX0VYVEVO U0lPTiwKLSsgICAgU0VORF9NRVNTQUdFLAotICAgICBMQVNUX1NJR05BTCwKLSB9OwotIAotQEAg LTc2Nyw2ICs3NjgsMjAgQEAgYnVzX2lucHV0X2NvbnRleHRfY2xhc3NfaW5pdCAoQnVzSW5wdXRD b250ZXh0Q2xhc3MgKmNsYXNzKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR19U WVBFX0ZST01fQ0xBU1MgKGNsYXNzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGJ1c19tYXJzaGFsX1ZPSURfX09CSkVDVHYpOwotIAotKyAgICBjb250ZXh0X3NpZ25hbHNbU0VO RF9NRVNTQUdFXSA9Ci0rICAgICAgICBnX3NpZ25hbF9uZXcgKElfKCJzZW5kLW1lc3NhZ2UiKSwK LSsgICAgICAgICAgICBHX1RZUEVfRlJPTV9DTEFTUyAoY2xhc3MpLAotKyAgICAgICAgICAgIEdf U0lHTkFMX1JVTl9MQVNULAotKyAgICAgICAgICAgIDAsCi0rICAgICAgICAgICAgTlVMTCwgTlVM TCwKLSsgICAgICAgICAgICBidXNfbWFyc2hhbF9WT0lEX19WQVJJQU5ULAotKyAgICAgICAgICAg IEdfVFlQRV9OT05FLAotKyAgICAgICAgICAgIDEsCi0rICAgICAgICAgICAgR19UWVBFX1ZBUklB TlQpOwotKyAgICBnX3NpZ25hbF9zZXRfdmFfbWFyc2hhbGxlciAoY29udGV4dF9zaWduYWxzW1NF TkRfTUVTU0FHRV0sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHX1RZUEVfRlJP TV9DTEFTUyAoY2xhc3MpLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVzX21h cnNoYWxfVk9JRF9fVkFSSUFOVHYpOwotKwotICAgICB0ZXh0X2VtcHR5ID0gaWJ1c190ZXh0X25l d19mcm9tX3N0cmluZyAoIiIpOwotICAgICBnX29iamVjdF9yZWZfc2luayAodGV4dF9lbXB0eSk7 Ci0gICAgIGxvb2t1cF90YWJsZV9lbXB0eSA9IGlidXNfbG9va3VwX3RhYmxlX25ldyAoOSAvKiBw YWdlIHNpemUgKi8sCi1AQCAtMjc4OSw2ICsyODA0LDIwIEBAIF9lbmdpbmVfcGFuZWxfZXh0ZW5z aW9uX2NiIChCdXNFbmdpbmVQcm94eSAgICAgKmVuZ2luZSwKLSAgICAgZ19zaWduYWxfZW1pdCAo Y29udGV4dCwgY29udGV4dF9zaWduYWxzW1BBTkVMX0VYVEVOU0lPTl0sIDAsIGV2ZW50KTsKLSB9 Ci0gCi0rLyoqCi0rICogX2VuZ2luZV9zZW5kX21lc3NhZ2VfY2I6Ci0rICoKLSsgKiBBIGZ1bmN0 aW9uIHRvIGJlIGNhbGxlZCB3aGVuICJzZW5kLW1lc3NhZ2UiIGdsaWIgc2lnbmFsIGlzIHNlbnQK LSsgKiBmcm9tIHRoZSBlbmdpbmUgb2JqZWN0LgotKyAqLwotK3N0YXRpYyB2b2lkCi0rX2VuZ2lu ZV9zZW5kX21lc3NhZ2VfY2IgKEJ1c0VuZ2luZVByb3h5ICAqZW5naW5lLAotKyAgICAgICAgICAg ICAgICAgICAgICAgICBHVmFyaWFudCAgICAgICAgKnBhcmFtZXRlcnMsCi0rICAgICAgICAgICAg ICAgICAgICAgICAgIEJ1c0lucHV0Q29udGV4dCAqY29udGV4dCkKLSt7Ci0rICAgIGdfc2lnbmFs X2VtaXQgKGNvbnRleHQsIGNvbnRleHRfc2lnbmFsc1tTRU5EX01FU1NBR0VdLCAwLCBwYXJhbWV0 ZXJzKTsKLSt9Ci0rCi0gc3RhdGljIHZvaWQKLSBfZW5naW5lX3Nob3dfcHJlZWRpdF90ZXh0X2Ni IChCdXNFbmdpbmVQcm94eSAgKmVuZ2luZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBCdXNJbnB1dENvbnRleHQgKmNvbnRleHQpCi1AQCAtMjk3OCw2ICszMDA3LDcgQEAgY29uc3Qg c3RhdGljIHN0cnVjdCB7Ci0gICAgIHsgInJlZ2lzdGVyLXByb3BlcnRpZXMiLCAgICAgIEdfQ0FM TEJBQ0sgKF9lbmdpbmVfcmVnaXN0ZXJfcHJvcGVydGllc19jYikgfSwKLSAgICAgeyAidXBkYXRl LXByb3BlcnR5IiwgICAgICAgICAgR19DQUxMQkFDSyAoX2VuZ2luZV91cGRhdGVfcHJvcGVydHlf Y2IpIH0sCi0gICAgIHsgInBhbmVsLWV4dGVuc2lvbiIsICAgICAgICAgIEdfQ0FMTEJBQ0sgKF9l bmdpbmVfcGFuZWxfZXh0ZW5zaW9uX2NiKSB9LAotKyAgICB7ICJzZW5kLW1lc3NhZ2UiLCAgICAg ICAgICAgICBHX0NBTExCQUNLIChfZW5naW5lX3NlbmRfbWVzc2FnZV9jYikgfSwKLSAgICAgeyAi ZGVzdHJveSIsICAgICAgICAgICAgICAgICAgR19DQUxMQkFDSyAoX2VuZ2luZV9kZXN0cm95X2Ni KSB9Ci0gfTsKLSAKLUBAIC0zNTQ5LDkgKzM1NzksOSBAQCBidXNfaW5wdXRfY29udGV4dF9mb3J3 YXJkX3Byb2Nlc3Nfa2V5X2V2ZW50IChCdXNJbnB1dENvbnRleHQgKmNvbnRleHQsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgICAgICAgICAgICBr ZXljb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1 aW50ICAgICAgICAgICAgbW9kaWZpZXJzKQotIHsKLS0gICAgUHJvY2Vzc0tleUV2ZW50RGF0YSAq ZGF0YSA9IGdfc2xpY2VfbmV3MCAoUHJvY2Vzc0tleUV2ZW50RGF0YSk7Ci0gICAgIGdfYXNzZXJ0 IChCVVNfSVNfSU5QVVRfQ09OVEVYVCAoY29udGV4dCkpOwotICAgICBpZiAoY29udGV4dC0+aGFz X2ZvY3VzICYmIGNvbnRleHQtPmVuZ2luZSAmJiBjb250ZXh0LT5mYWtlID09IEZBTFNFKSB7Ci0r ICAgICAgICBQcm9jZXNzS2V5RXZlbnREYXRhICpkYXRhID0gZ19zbGljZV9uZXcwIChQcm9jZXNz S2V5RXZlbnREYXRhKTsKLSAgICAgICAgIGRhdGEtPmNvbnRleHQgPSBnX29iamVjdF9yZWYgKGNv bnRleHQpOwotICAgICAgICAgZGF0YS0+a2V5dmFsID0ga2V5dmFsOwotICAgICAgICAgZGF0YS0+ a2V5Y29kZSA9IGtleWNvZGU7Ci1AQCAtMzU2NCw3ICszNTk0LDUgQEAgYnVzX2lucHV0X2NvbnRl eHRfZm9yd2FyZF9wcm9jZXNzX2tleV9ldmVudCAoQnVzSW5wdXRDb250ZXh0ICpjb250ZXh0LAot ICAgICAgICAgICAgICAgICAoR0FzeW5jUmVhZHlDYWxsYmFjaykKLSAgICAgICAgICAgICAgICAg ICAgICAgICBfZm9yd2FyZF9wcm9jZXNzX2tleV9ldmVudF9yZXBseV9jYiwKLSAgICAgICAgICAg ICAgICAgZGF0YSk7Ci0tICAgIH0gZWxzZSB7Ci0tICAgICAgICBnX3NsaWNlX2ZyZWUgKFByb2Nl c3NLZXlFdmVudERhdGEsIGRhdGEpOwotICAgICB9Ci0gfQotZGlmZiAtLWdpdCBhL2J1cy9wYW5l bHByb3h5LmMgYi9idXMvcGFuZWxwcm94eS5jCi1pbmRleCBiNzZkNmY3Ni4uOTk3ZjU5NjQgMTAw NjQ0Ci0tLS0gYS9idXMvcGFuZWxwcm94eS5jCi0rKysgYi9idXMvcGFuZWxwcm94eS5jCi1AQCAt Miw4ICsyLDggQEAKLSAvKiB2aW06c2V0IGV0IHN0cz00OiAqLwotIC8qIGlidXMgLSBUaGUgSW5w dXQgQnVzCi0gICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTQgUGVuZyBIdWFuZyA8c2hhd24ucC5o dWFuZ0BnbWFpbC5jb20+Ci0tICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjQgVGFrYW8gRnVqaXdh cmEgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+Ci0tICogQ29weXJpZ2h0IChDKSAyMDA4LTIw MjQgUmVkIEhhdCwgSW5jLgotKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDI1IFRha2FvIEZ1aml3 YXJhIDx0YWthby5mdWppd2FyYTFAZ21haWwuY29tPgotKyAqIENvcHlyaWdodCAoQykgMjAwOC0y MDI1IFJlZCBIYXQsIEluYy4KLSAgKgotICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgKiBtb2RpZnkgaXQgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi1AQCAtNTcsNiArNTcsNyBA QCBlbnVtIHsKLSAgICAgVVBEQVRFX0xPT0tVUF9UQUJMRV9SRUNFSVZFRCwKLSAgICAgVVBEQVRF X0FVWElMSUFSWV9URVhUX1JFQ0VJVkVELAotICAgICBGT1JXQVJEX1BST0NFU1NfS0VZX0VWRU5U LAotKyAgICBTRU5EX01FU1NBR0UsCi0gICAgIExBU1RfU0lHTkFMCi0gfTsKLSAKLUBAIC0zNjYs NiArMzY3LDE5IEBAIGJ1c19wYW5lbF9wcm94eV9jbGFzc19pbml0IChCdXNQYW5lbFByb3h5Q2xh c3MgKmNsYXNzKQotICAgICBnX3NpZ25hbF9zZXRfdmFfbWFyc2hhbGxlciAocGFuZWxfc2lnbmFs c1tGT1JXQVJEX1BST0NFU1NfS0VZX0VWRU5UXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTIChjbGFzcyksCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBidXNfbWFyc2hhbF9WT0lEX19VSU5UX1VJTlRfVUlOVHYpOwotKwotKyAgICBw YW5lbF9zaWduYWxzW1NFTkRfTUVTU0FHRV0gPQotKyAgICAgICAgZ19zaWduYWxfbmV3IChJXygi c2VuZC1tZXNzYWdlIiksCi0rICAgICAgICAgICAgR19UWVBFX0ZST01fQ0xBU1MgKGNsYXNzKSwK LSsgICAgICAgICAgICBHX1NJR05BTF9SVU5fTEFTVCwKLSsgICAgICAgICAgICAwLAotKyAgICAg ICAgICAgIE5VTEwsIE5VTEwsCi0rICAgICAgICAgICAgYnVzX21hcnNoYWxfVk9JRF9fVkFSSUFO VCwKLSsgICAgICAgICAgICBHX1RZUEVfTk9ORSwgMSwKLSsgICAgICAgICAgICBHX1RZUEVfVkFS SUFOVCk7Ci0rICAgIGdfc2lnbmFsX3NldF92YV9tYXJzaGFsbGVyIChwYW5lbF9zaWduYWxzW1NF TkRfTUVTU0FHRV0sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHX1RZUEVfRlJP TV9DTEFTUyAoY2xhc3MpLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVzX21h cnNoYWxfVk9JRF9fVkFSSUFOVHYpOwotIH0KLSAKLSBzdGF0aWMgdm9pZAotQEAgLTU1MSw2ICs1 NjUsMTEgQEAgYnVzX3BhbmVsX3Byb3h5X2dfc2lnbmFsIChHREJ1c1Byb3h5ICAqcHJveHksCi0g ICAgICAgICByZXR1cm47Ci0gICAgIH0KLSAKLSsgICAgaWYgKGdfc3RyY21wMCAoIlNlbmRNZXNz YWdlIiwgc2lnbmFsX25hbWUpID09IDApIHsKLSsgICAgICAgIGdfc2lnbmFsX2VtaXQgKHBhbmVs LCBwYW5lbF9zaWduYWxzW1NFTkRfTUVTU0FHRV0sIDAsIHBhcmFtZXRlcnMpOwotKyAgICAgICAg cmV0dXJuOwotKyAgICB9Ci0rCi0gICAgIC8qIHNob3VuZCBub3QgYmUgcmVhY2hlZCAqLwotICAg ICBnX3JldHVybl9pZl9yZWFjaGVkICgpOwotIH0KLUBAIC0xMTcwLDMgKzExODksMTcgQEAgYnVz X3BhbmVsX3Byb3h5X2NhbmRpZGF0ZV9jbGlja2VkX2xvb2t1cF90YWJsZSAoQnVzUGFuZWxQcm94 eSAqcGFuZWwsCi0gICAgICAgICAgICAgICAgICAgICAgICBHX0RCVVNfQ0FMTF9GTEFHU19OT05F LAotICAgICAgICAgICAgICAgICAgICAgICAgLTEsIE5VTEwsIE5VTEwsIE5VTEwpOwotIH0KLSsK LSt2b2lkCi0rYnVzX3BhbmVsX3Byb3h5X3NlbmRfbWVzc2FnZV9yZWNlaXZlZCAoQnVzUGFuZWxQ cm94eSAqcGFuZWwsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1Zh cmlhbnQgICAgICAqcGFyYW1ldGVycykKLSt7Ci0rICAgIGdfYXNzZXJ0IChCVVNfSVNfUEFORUxf UFJPWFkgKHBhbmVsKSk7Ci0rICAgIGdfYXNzZXJ0IChwYXJhbWV0ZXJzKTsKLSsKLSsgICAgZ19k YnVzX3Byb3h5X2NhbGwgKChHREJ1c1Byb3h5ICopcGFuZWwsCi0rICAgICAgICAgICAgICAgICAg ICAgICAiU2VuZE1lc3NhZ2VSZWNlaXZlZCIsCi0rICAgICAgICAgICAgICAgICAgICAgICBnX3Zh cmlhbnRfcmVmIChwYXJhbWV0ZXJzKSwKLSsgICAgICAgICAgICAgICAgICAgICAgIEdfREJVU19D QUxMX0ZMQUdTX05PTkUsCi0rICAgICAgICAgICAgICAgICAgICAgICAtMSwgTlVMTCwgTlVMTCwg TlVMTCk7Ci0rfQotZGlmZiAtLWdpdCBhL2J1cy9wYW5lbHByb3h5LmggYi9idXMvcGFuZWxwcm94 eS5oCi1pbmRleCA0ZDhhZmI5OC4uZmYyMDVjZjEgMTAwNjQ0Ci0tLS0gYS9idXMvcGFuZWxwcm94 eS5oCi0rKysgYi9idXMvcGFuZWxwcm94eS5oCi1AQCAtMiw4ICsyLDggQEAKLSAvKiB2aW06c2V0 IGV0IHN0cz00OiAqLwotIC8qIGlidXMgLSBUaGUgSW5wdXQgQnVzCi0gICogQ29weXJpZ2h0IChD KSAyMDA4LTIwMTQgUGVuZyBIdWFuZyA8c2hhd24ucC5odWFuZ0BnbWFpbC5jb20+Ci0tICogQ29w eXJpZ2h0IChDKSAyMDE3LTIwMTggVGFrYW8gRnVqaXdhcmEgPHRha2FvLmZ1aml3YXJhMUBnbWFp bC5jb20+Ci0tICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTggUmVkIEhhdCwgSW5jLgotKyAqIENv cHlyaWdodCAoQykgMjAxNy0yMDI1IFRha2FvIEZ1aml3YXJhIDx0YWthby5mdWppd2FyYTFAZ21h aWwuY29tPgotKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDI1IFJlZCBIYXQsIEluYy4KLSAgKgot ICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3IKLSAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2Vy IEdlbmVyYWwgUHVibGljCi1AQCAtMTU1LDYgKzE1NSw5IEBAIHZvaWQgICAgICAgICAgICAgYnVz X3BhbmVsX3Byb3h5X2NhbmRpZGF0ZV9jbGlja2VkX2xvb2t1cF90YWJsZQotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50ICAgICAgICAgICAgICBp bmRleCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn dWludCAgICAgICAgICAgICAgYnV0dG9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGd1aW50ICAgICAgICAgICAgICBzdGF0ZSk7Ci0rdm9pZCAgICAg ICAgICAgICBidXNfcGFuZWxfcHJveHlfc2VuZF9tZXNzYWdlX3JlY2VpdmVkCi0rICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQnVzUGFuZWxQcm94eSAgICAg KnBhbmVsLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEdWYXJpYW50ICAgICAgICAgICpwYXJhbWV0ZXJzKTsKLSAKLSBHX0VORF9ERUNMUwotICNlbmRp ZgotZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZS5hbSBiL3NyYy9NYWtlZmlsZS5hbQotaW5kZXgg YmVmMjY5Y2IuLjUxOWZjNjRlIDEwMDY0NAotLS0tIGEvc3JjL01ha2VmaWxlLmFtCi0rKysgYi9z cmMvTWFrZWZpbGUuYW0KLUBAIC0zLDggKzMsOCBAQAotICMgaWJ1cyAtIFRoZSBJbnB1dCBCdXMK LSAjCi0gIyBDb3B5cmlnaHQgKGMpIDIwMDctMjAxNSBQZW5nIEh1YW5nIDxzaGF3bi5wLmh1YW5n QGdtYWlsLmNvbT4KLS0jIENvcHlyaWdodCAoYykgMjAxNS0yMDI0IFRha2FvIEZ1aml3YXJhIDx0 YWthby5mdWppd2FyYTFAZ21haWwuY29tPgotLSMgQ29weXJpZ2h0IChjKSAyMDA3LTIwMTcgUmVk IEhhdCwgSW5jLgotKyMgQ29weXJpZ2h0IChjKSAyMDE1LTIwMjUgVGFrYW8gRnVqaXdhcmEgPHRh a2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+Ci0rIyBDb3B5cmlnaHQgKGMpIDIwMDctMjAyNSBSZWQg SGF0LCBJbmMuCi0gIwotICMgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICMgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotQEAgLTkzLDYgKzkzLDcgQEAgaWJ1c19zb3Vy Y2VzID0gICAgICAgICAgICAgIFwKLSAgICAgaWJ1c2tleXMuYyAgICAgICAgICAgICAgXAotICAg ICBpYnVza2V5dW5pLmMgICAgICAgICAgICBcCi0gICAgIGlidXNsb29rdXB0YWJsZS5jICAgICAg IFwKLSsgICAgaWJ1c21lc3NhZ2UuYyAgICAgICAgICAgXAotICAgICBpYnVzb2JqZWN0LmMgICAg ICAgICAgICBcCi0gICAgIGlidXNvYnNlcnZlZHBhdGguYyAgICAgIFwKLSAgICAgaWJ1c3BhbmVs c2VydmljZS5jICAgICAgXAotQEAgLTE1MSw2ICsxNTIsNyBAQCBpYnVzX2hlYWRlcnMgPSAgICAg ICAgICAgICAgXAotICAgICBpYnVza2V5c3ltcy1jb21wYXQuaCAgICBcCi0gICAgIGlidXNrZXlz eW1zLmggICAgICAgICAgIFwKLSAgICAgaWJ1c2xvb2t1cHRhYmxlLmggICAgICAgXAotKyAgICBp YnVzbWVzc2FnZS5oICAgICAgICAgICBcCi0gICAgIGlidXNvYmplY3QuaCAgICAgICAgICAgIFwK LSAgICAgaWJ1c29ic2VydmVkcGF0aC5oICAgICAgXAotICAgICBpYnVzcGFuZWxzZXJ2aWNlLmgg ICAgICBcCi1kaWZmIC0tZ2l0IGEvc3JjL2lidXNlbmdpbmUuYyBiL3NyYy9pYnVzZW5naW5lLmMK LWluZGV4IGM3YTBhYzc4Li40ZTEzYjIzZCAxMDA2NDQKLS0tLSBhL3NyYy9pYnVzZW5naW5lLmMK LSsrKyBiL3NyYy9pYnVzZW5naW5lLmMKLUBAIC0zLDcgKzMsNyBAQAotIC8qIGlidXMgLSBUaGUg SW5wdXQgQnVzCi0gICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTMgUGVuZyBIdWFuZyA8c2hhd24u cC5odWFuZ0BnbWFpbC5jb20+Ci0gICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjUgVGFrYW8gRnVq aXdhcmEgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+Ci0tICogQ29weXJpZ2h0IChDKSAyMDA4 LTIwMjEgUmVkIEhhdCwgSW5jLgotKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDI1IFJlZCBIYXQs IEluYy4KLSAgKgotICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi1AQCAtMzAyLDYgKzMwMiwxMyBAQCBzdGF0aWMg Y29uc3QgZ2NoYXIgaW50cm9zcGVjdGlvbl94bWxbXSA9Ci0gICAgICIgICAgPHNpZ25hbCBuYW1l PSdQYW5lbEV4dGVuc2lvbic+IgotICAgICAiICAgICAgPGFyZyB0eXBlPSd2JyBuYW1lPSdkYXRh JyAvPiIKLSAgICAgIiAgICA8L3NpZ25hbD4iCi0rICAgICIgICAgPHNpZ25hbCBuYW1lPSdTZW5k TWVzc2FnZSc+IgotKyAgICAiICAgICAgPGFyZyB0eXBlPSd2JyBuYW1lPSdtZXNzYWdlJyAvPiIK LSsgICAgIiAgICAgIDxhbm5vdGF0aW9uIG5hbWU9J29yZy5ndGsuR0RCdXMuU2luY2UnXG4iCi0r ICAgICIgICAgICAgICAgdmFsdWU9JzEuNS4zMycgLz5cbiIKLSsgICAgIiAgICAgIDxhbm5vdGF0 aW9uIG5hbWU9J29yZy5ndGsuR0RCdXMuRG9jU3RyaW5nJ1xuIgotKyAgICAiICAgICAgICAgIHZh bHVlPSdTdGFiaWxpdHk6IFVuc3RhYmxlJyAvPlxuIgotKyAgICAiICAgIDwvc2lnbmFsPiIKLSAg ICAgLyogRklYTUUgcHJvcGVydGllcyAqLwotICAgICAiICAgIDxwcm9wZXJ0eSBuYW1lPSdDb250 ZW50VHlwZScgdHlwZT0nKHV1KScgYWNjZXNzPSd3cml0ZScgLz4iCi0gICAgICIgICAgPHByb3Bl cnR5IG5hbWU9J0ZvY3VzSWQnIHR5cGU9JyhiKScgYWNjZXNzPSdyZWFkJyAvPiIKLUBAIC0xODEy LDEyICsxODE5LDE3IEBAIGlidXNfZW5naW5lX2VtaXRfc2lnbmFsIChJQnVzRW5naW5lICAqZW5n aW5lLAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAqc2lnbmFsX25hbWUs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIEdWYXJpYW50ICAgICpwYXJhbWV0ZXJzKQotIHsK LSsgICAgR0Vycm9yICplcnJvciA9IE5VTEw7Ci0gICAgIGlidXNfc2VydmljZV9lbWl0X3NpZ25h bCAoKElCdXNTZXJ2aWNlICopZW5naW5lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUJVU19JTlRFUkZBQ0VfRU5H SU5FLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25hbF9uYW1lLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlcnMsCi0tICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgTlVMTCk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmVycm9y KTsKLSsgICAgaWYgKGVycm9yKSB7Ci0rICAgICAgICBnX3dhcm5pbmcgKCJGYWlsZWQgdG8gZW1p dCAlcyBzaWduYWw6ICVzIiwgc2lnbmFsX25hbWUsIGVycm9yLT5tZXNzYWdlKTsKLSsgICAgICAg IGdfZXJyb3JfZnJlZSAoZXJyb3IpOwotKyAgICB9Ci0gfQotIAotIHN0YXRpYyB2b2lkCi1AQCAt MjE5OSwzICsyMjExLDIwIEBAIGlidXNfZW5naW5lX2dldF9uYW1lIChJQnVzRW5naW5lICplbmdp bmUpCi0gICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChJQlVTX0lTX0VOR0lORSAoZW5naW5lKSwg TlVMTCk7Ci0gICAgIHJldHVybiBlbmdpbmUtPnByaXYtPmVuZ2luZV9uYW1lOwotIH0KLSsKLSt2 b2lkCi0raWJ1c19lbmdpbmVfc2VuZF9tZXNzYWdlIChJQnVzRW5naW5lICAqZW5naW5lLAotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgSUJ1c01lc3NhZ2UgKm1lc3NhZ2UpCi0rewotKyAgICBH VmFyaWFudCAqdmFyaWFudDsKLSsKLSsgICAgZ19yZXR1cm5faWZfZmFpbCAoSUJVU19JU19FTkdJ TkUgKGVuZ2luZSkpOwotKyAgICBnX3JldHVybl9pZl9mYWlsIChJQlVTX0lTX01FU1NBR0UgKG1l c3NhZ2UpKTsKLSsgICAgdmFyaWFudCA9IGlidXNfc2VyaWFsaXphYmxlX3NlcmlhbGl6ZSAoKElC dXNTZXJpYWxpemFibGUgKiltZXNzYWdlKTsKLSsgICAgaWJ1c19lbmdpbmVfZW1pdF9zaWduYWwg KGVuZ2luZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTZW5kTWVzc2FnZSIsCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ192YXJpYW50X25ldyAoIih2KSIsIHZhcmlh bnQpKTsKLSsgICAgaWYgKGdfb2JqZWN0X2lzX2Zsb2F0aW5nIChtZXNzYWdlKSkgewotKyAgICAg ICAgZ19vYmplY3RfdW5yZWYgKG1lc3NhZ2UpOwotKyAgICB9Ci0rfQotZGlmZiAtLWdpdCBhL3Ny Yy9pYnVzZW5naW5lLmggYi9zcmMvaWJ1c2VuZ2luZS5oCi1pbmRleCA2YWYwZTg1Ni4uY2RjOTYz MzEgMTAwNjQ0Ci0tLS0gYS9zcmMvaWJ1c2VuZ2luZS5oCi0rKysgYi9zcmMvaWJ1c2VuZ2luZS5o Ci1AQCAtMiw4ICsyLDggQEAKLSAvKiB2aW06c2V0IGV0IHN0cz00OiAqLwotIC8qIGlidXMgLSBU aGUgSW5wdXQgQnVzCi0gICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTMgUGVuZyBIdWFuZyA8c2hh d24ucC5odWFuZ0BnbWFpbC5jb20+Ci0tICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMjIgVGFrYW8g RnVqaXdhcmEgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+Ci0tICogQ29weXJpZ2h0IChDKSAy MDA4LTIwMjIgUmVkIEhhdCwgSW5jLgotKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDI1IFRha2Fv IEZ1aml3YXJhIDx0YWthby5mdWppd2FyYTFAZ21haWwuY29tPgotKyAqIENvcHlyaWdodCAoQykg MjAwOC0yMDI1IFJlZCBIYXQsIEluYy4KLSAgKgotICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgKiBtb2RpZnkgaXQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi1AQCAtNDMsNiAr NDMsNyBAQAotICNpbmNsdWRlICJpYnVzc2VydmljZS5oIgotICNpbmNsdWRlICJpYnVzYXR0cmli dXRlLmgiCi0gI2luY2x1ZGUgImlidXNsb29rdXB0YWJsZS5oIgotKyNpbmNsdWRlICJpYnVzbWVz c2FnZS5oIgotICNpbmNsdWRlICJpYnVzcHJvcGxpc3QuaCIKLSAKLSAvKgotQEAgLTY1LDYgKzY2 LDI0IEBACi0gCi0gR19CRUdJTl9ERUNMUwotIAotKy8qKgotKyAqIElCdXNFbmdpbmVNc2dDb2Rl OgotKyAqIEBJQlVTX0VOR0lORV9NU0dfQ09ERV9HRU5FUkFMOiBHZW5lcmljIG1lc3NhZ2UgZm9y IEVuZ2luZQotKyAqIEBJQlVTX0VOR0lORV9NU0dfQ09ERV9JTlZBTElEX0NPTVBPU0VfU0VRVUVO Q0U6IFVzZXIncyB0eXBpbmcgZmFpbHVyZQotKyAqICAgICAgICAgYWdhaW5zdCB0aGUgZGVmaW5p dGlvbiBvZiB0aGUgY29tcG9zZSBmaWxlcy4KLSsgKgotKyAqIE1lc3NhZ2UgY29kZXMgaW4gdGhl IGBJQnVzTWVzc2FnZURvbWFpbmAgZG9tYWluIGZvciBFbmdpbmUKLSsgKiBTZWUgYWxzbyAjSUJ1 c01lc3NhZ2UsIGlidXNfZW5naW5lX3NlbmRfbWVzc2FnZSgpCi0rICoKLSsgKiBTaW5jZTogMS41 LjMzCi0rICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKyAqLwotK3R5cGVkZWYgZW51bQotK3sKLSsg IElCVVNfRU5HSU5FX01TR19DT0RFX0dFTkVSQUwsCi0rICBJQlVTX0VOR0lORV9NU0dfQ09ERV9J TlZBTElEX0NPTVBPU0VfU0VRVUVOQ0UKLSt9IElCdXNFbmdpbmVNc2dDb2RlOwotKwotIHR5cGVk ZWYgc3RydWN0IF9JQnVzRW5naW5lIElCdXNFbmdpbmU7Ci0gdHlwZWRlZiBzdHJ1Y3QgX0lCdXNF bmdpbmVDbGFzcyBJQnVzRW5naW5lQ2xhc3M7Ci0gdHlwZWRlZiBzdHJ1Y3QgX0lCdXNFbmdpbmVQ cml2YXRlIElCdXNFbmdpbmVQcml2YXRlOwotQEAgLTQ2OSw1ICs0ODgsMTggQEAgdm9pZCBpYnVz X2VuZ2luZV9nZXRfY29udGVudF90eXBlICAgICAgIChJQnVzRW5naW5lICAgICAgICAgKmVuZ2lu ZSwKLSAgKi8KLSBjb25zdCBnY2hhciAqaWJ1c19lbmdpbmVfZ2V0X25hbWUgICAgICAgKElCdXNF bmdpbmUgICAgICAgICAqZW5naW5lKTsKLSAKLSsvKioKLSsgKiBpYnVzX2VuZ2luZV9zZW5kX21l c3NhZ2U6Ci0rICogQGVuZ2luZTogQW4gI0lCdXNFbmdpbmUuCi0rICogQG1lc3NhZ2U6IEFuICNJ QnVzTWVzc2FnZS4KLSsgKgotKyAqIFNlbmQgYSBtZXNzYWdlIHRvIHRoZSBFbmdpbmUgZm9yIHRo ZSBmb2N1cy1sZXNzIG5vdGlmaWNhdGlvbiBwb3B1cC4KLSsgKiBUaGlzIGlzIHVzZWQgZm9yIHRo ZSB1c2VyIGVycm9ycyBpbiBXYXlsYW5kIG1haW5seSBidXQgaW4gWG9yZyB0b28uCi0rICoKLSsg KiBTaW5jZTogMS41LjMzCi0rICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKyAqLwotK3ZvaWQgICAg ICAgICBpYnVzX2VuZ2luZV9zZW5kX21lc3NhZ2UgICAoSUJ1c0VuZ2luZSAgICAgICAgICplbmdp bmUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJQnVzTWVzc2Fn ZSAgICAgICAgKm1lc3NhZ2UpOwotIEdfRU5EX0RFQ0xTCi0gI2VuZGlmCi1kaWZmIC0tZ2l0IGEv c3JjL2lidXNlbmdpbmVzaW1wbGUuYyBiL3NyYy9pYnVzZW5naW5lc2ltcGxlLmMKLWluZGV4IGU5 M2M2MWY1Li40ZTBiYTQwZiAxMDA2NDQKLS0tLSBhL3NyYy9pYnVzZW5naW5lc2ltcGxlLmMKLSsr KyBiL3NyYy9pYnVzZW5naW5lc2ltcGxlLmMKLUBAIC0zLDcgKzMsNyBAQAotIC8qIGlidXMgLSBU aGUgSW5wdXQgQnVzCi0gICogQ29weXJpZ2h0IChDKSAyMDE0IFBlbmcgSHVhbmcgPHNoYXduLnAu aHVhbmdAZ21haWwuY29tPgotICAqIENvcHlyaWdodCAoQykgMjAxNS0yMDI1IFRha2FvIEZ1aml3 YXJhIDx0YWthby5mdWppd2FyYTFAZ21haWwuY29tPgotLSAqIENvcHlyaWdodCAoQykgMjAxNC0y MDE3IFJlZCBIYXQsIEluYy4KLSsgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAyNSBSZWQgSGF0LCBJ bmMuCi0gICoKLSAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yCi0gICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotQEAgLTM2LDYgKzM2LDcgQEAKLSAKLSAjaW5jbHVk ZSA8bWVtb3J5Lmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotKyNpbmNsdWRlIDxnbGliL2dpMThu LWxpYi5oPgotIAotICNkZWZpbmUgSUJVU19FTkdJTkVfU0lNUExFX0dFVF9QUklWQVRFKG8pICBc Ci0gICAgKChJQnVzRW5naW5lU2ltcGxlUHJpdmF0ZSAqKWlidXNfZW5naW5lX3NpbXBsZV9nZXRf aW5zdGFuY2VfcHJpdmF0ZSAobykpCi1AQCAtMjA0LDYgKzIwNSwyNyBAQCBpYnVzX2VuZ2luZV9z aW1wbGVfZGVzdHJveSAoSUJ1c0VuZ2luZVNpbXBsZSAqc2ltcGxlKQotICAgICAgICAgSUJVU19P QkpFQ1QgKHNpbXBsZSkpOwotIH0KLSAKLStzdGF0aWMgdm9pZAotK2lidXNfZW5naW5lX3NpbXBs ZV9zZW5kX21lc3NhZ2Vfd2l0aF9jb2RlIChJQnVzRW5naW5lU2ltcGxlICpzaW1wbGUsCi0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElCdXNFbmdpbmVNc2dDb2Rl IGNvZGUpCi0rewotKyAgICBJQnVzTWVzc2FnZSAqbWVzc2FnZTsKLSsKLSsgICAgZ19yZXR1cm5f aWZfZmFpbCAoSUJVU19JU19FTkdJTkVfU0lNUExFIChzaW1wbGUpKTsKLSsgICAgbWVzc2FnZSA9 IGlidXNfbWVzc2FnZV9uZXcgKAotKyAgICAgICAgICAgIElCVVNfTUVTU0FHRV9ET01BSU5fRU5H SU5FLAotKyAgICAgICAgICAgIGNvZGUsCi0rICAgICAgICAgICAgXygiRGV0ZWN0IHVucmVnaXN0 ZXJlZCBjaGFyYWN0ZXIgaW4geW91ciBjb21wb3NlIHNlcXVlbmNlIiksCi0rICAgICAgICAgICAg XygiVGhlIGNoYXJhY3RlciB5b3UganVzdCBpbnB1dCBpcyBub3QgcmVjb2duaXplZCBhcyBhIHZh bGlkICIgXAotKyAgICAgICAgICAgICAgInBhcnQgb2YgdGhlIGN1cnJlbnRseSBhY3RpdmUgY29t cG9zZSBzZXF1ZW5jZSBhbmQgdGhlICIgXAotKyAgICAgICAgICAgICAgImNoYXJhY3RlciB3YXMg Y2FuY2VsbGVkLiBUcnkgaW5wdXR0aW5nIHRoZSBjb3JyZWN0IGNoYXJhY3RlciAiIFwKLSsgICAg ICAgICAgICAgICJ0byB0aGUgY29tcG9zZSBzZXF1ZW5jZSBhZ2Fpbiwgb3IgcHJlc3MgRXNjYXBl IGtleSB0byAiIFwKLSsgICAgICAgICAgICAgICJ0ZXJtaW5hdGUgd2hvbGUgdGhlIGNvbXBvc2Ug c2VxdWVuY2UuIiksCi0rICAgICAgICAgICAgICJ0aW1lb3V0IiwgNSwKLSsgICAgICAgICAgICAg TlVMTCk7Ci0rICAgIGlidXNfZW5naW5lX3NlbmRfbWVzc2FnZSAoSUJVU19FTkdJTkUgKHNpbXBs ZSksIG1lc3NhZ2UpOwotK30KLSsKLSBzdGF0aWMgdm9pZAotIGlidXNfZW5naW5lX3NpbXBsZV9m b2N1c19pbiAoSUJ1c0VuZ2luZSAqZW5naW5lKQotIHsKLUBAIC02NzcsNyArNjk5LDkgQEAgbm9f c2VxdWVuY2VfbWF0Y2hlcyAoSUJ1c0VuZ2luZVNpbXBsZSAqc2ltcGxlLAotICAgICAgICAgcHJp di0+Y29tcG9zZV9idWZmZXJbMF0gPSAwOwotICAgICAgICAgaWYgKG5fY29tcG9zZSA+IDEpIHsK LSAgICAgICAgICAgICAvKiBJbnZhbGlkIHNlcXVlbmNlICovCi0tICAgICAgICAgICAgLyogRklY TUUgYmVlcF93aW5kb3cgKGV2ZW50LT53aW5kb3cpOyAqLwotKyAgICAgICAgICAgIGlidXNfZW5n aW5lX3NpbXBsZV9zZW5kX21lc3NhZ2Vfd2l0aF9jb2RlICgKLSsgICAgICAgICAgICAgICAgICAg IHNpbXBsZSwKLSsgICAgICAgICAgICAgICAgICAgIElCVVNfRU5HSU5FX01TR19DT0RFX0lOVkFM SURfQ09NUE9TRV9TRVFVRU5DRSk7Ci0gICAgICAgICAgICAgaWJ1c19lbmdpbmVfc2ltcGxlX3Vw ZGF0ZV9wcmVlZGl0X3RleHQgKHNpbXBsZSk7Ci0gICAgICAgICAgICAgcmV0dXJuIFRSVUU7Ci0g ICAgICAgICB9Ci1AQCAtOTQ4LDcgKzk3Miw5IEBAIGlidXNfZW5naW5lX3NpbXBsZV9wcm9jZXNz X2tleV9ldmVudCAoSUJ1c0VuZ2luZSAqZW5naW5lLAotICAgICAgICAgICAgICAgICBwcml2LT5t b2RpZmllcnNfZHJvcHBlZCA9IFRSVUU7Ci0gICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg ICAgICAgICAgLyogaW52YWxpZCBoZXggc2VxdWVuY2UgKi8KLS0gICAgICAgICAgICAgICAgLyog RklYTUUgYmVlcF93aW5kb3cgKGV2ZW50LT53aW5kb3cpOyAqLwotKyAgICAgICAgICAgICAgICBp YnVzX2VuZ2luZV9zaW1wbGVfc2VuZF9tZXNzYWdlX3dpdGhfY29kZSAoCi0rICAgICAgICAgICAg ICAgICAgICAgICAgc2ltcGxlLAotKyAgICAgICAgICAgICAgICAgICAgICAgIElCVVNfRU5HSU5F X01TR19DT0RFX0lOVkFMSURfQ09NUE9TRV9TRVFVRU5DRSk7Ci0gICAgICAgICAgICAgICAgIGdf c3RyaW5nX3NldF9zaXplIChwcml2LT50ZW50YXRpdmVfbWF0Y2gsIDApOwotICAgICAgICAgICAg ICAgICBnX2NsZWFyX3BvaW50ZXIgKCZwcml2LT50ZW50YXRpdmVfZW1vamksIGdfZnJlZSk7Ci0g ICAgICAgICAgICAgICAgIHByaXYtPmluX2hleF9zZXF1ZW5jZSA9IEZBTFNFOwotQEAgLTk3MSw3 ICs5OTcsOSBAQCBpYnVzX2VuZ2luZV9zaW1wbGVfcHJvY2Vzc19rZXlfZXZlbnQgKElCdXNFbmdp bmUgKmVuZ2luZSwKLSAgICAgICAgICAgICAgICAgcHJpdi0+bW9kaWZpZXJzX2Ryb3BwZWQgPSBU UlVFOwotICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgIC8qIGludmFsaWQg aGV4IHNlcXVlbmNlICovCi0tICAgICAgICAgICAgICAgIC8qIEZJWE1FIGJlZXBfd2luZG93IChl dmVudC0+d2luZG93KTsgKi8KLSsgICAgICAgICAgICAgICAgaWJ1c19lbmdpbmVfc2ltcGxlX3Nl bmRfbWVzc2FnZV93aXRoX2NvZGUgKAotKyAgICAgICAgICAgICAgICAgICAgICAgIHNpbXBsZSwK LSsgICAgICAgICAgICAgICAgICAgICAgICBJQlVTX0VOR0lORV9NU0dfQ09ERV9JTlZBTElEX0NP TVBPU0VfU0VRVUVOQ0UpOwotICAgICAgICAgICAgICAgICBnX3N0cmluZ19zZXRfc2l6ZSAocHJp di0+dGVudGF0aXZlX21hdGNoLCAwKTsKLSAgICAgICAgICAgICAgICAgZ19jbGVhcl9wb2ludGVy ICgmcHJpdi0+dGVudGF0aXZlX2Vtb2ppLCBnX2ZyZWUpOwotICAgICAgICAgICAgICAgICBwcml2 LT5pbl9oZXhfc2VxdWVuY2UgPSBGQUxTRTsKLUBAIC0xMDIwLDcgKzEwNDgsOSBAQCBpYnVzX2Vu Z2luZV9zaW1wbGVfcHJvY2Vzc19rZXlfZXZlbnQgKElCdXNFbmdpbmUgKmVuZ2luZSwKLSAgICAg ICAgIH0KLSAgICAgICAgIGVsc2UgaWYgKGlzX2hleF9lbmQpIHsKLSAgICAgICAgICAgICAvKiBp bnZhbGlkIGhleCBzZXF1ZW5jZSAqLwotLSAgICAgICAgICAgIC8qIEZJWE1FIGJlZXBfd2luZG93 IChldmVudC0+d2luZG93KTsgKi8KLSsgICAgICAgICAgICBpYnVzX2VuZ2luZV9zaW1wbGVfc2Vu ZF9tZXNzYWdlX3dpdGhfY29kZSAoCi0rICAgICAgICAgICAgICAgICAgICBzaW1wbGUsCi0rICAg ICAgICAgICAgICAgICAgICBJQlVTX0VOR0lORV9NU0dfQ09ERV9JTlZBTElEX0NPTVBPU0VfU0VR VUVOQ0UpOwotICAgICAgICAgICAgIGdfc3RyaW5nX3NldF9zaXplIChwcml2LT50ZW50YXRpdmVf bWF0Y2gsIDApOwotICAgICAgICAgICAgIGdfY2xlYXJfcG9pbnRlciAoJnByaXYtPnRlbnRhdGl2 ZV9lbW9qaSwgZ19mcmVlKTsKLSAgICAgICAgICAgICBwcml2LT5pbl9oZXhfc2VxdWVuY2UgPSBG QUxTRTsKLUBAIC0xMTE5LDcgKzExNDksOSBAQCBpYnVzX2VuZ2luZV9zaW1wbGVfcHJvY2Vzc19r ZXlfZXZlbnQgKElCdXNFbmdpbmUgKmVuZ2luZSwKLSAgICAgICAgIGVsc2UgewotICAgICAgICAg ICAgIC8qIGludmFsaWQgaGV4IHNlcXVlbmNlICovCi0gICAgICAgICAgICAgaWYgKG5fY29tcG9z ZSA+IDApIHsKLS0gICAgICAgICAgICAgICAgLyogRklYTUUgYmVlcF93aW5kb3cgKGV2ZW50LT53 aW5kb3cpOyAqLwotKyAgICAgICAgICAgICAgICBpYnVzX2VuZ2luZV9zaW1wbGVfc2VuZF9tZXNz YWdlX3dpdGhfY29kZSAoCi0rICAgICAgICAgICAgICAgICAgICAgICAgc2ltcGxlLAotKyAgICAg ICAgICAgICAgICAgICAgICAgIElCVVNfRU5HSU5FX01TR19DT0RFX0lOVkFMSURfQ09NUE9TRV9T RVFVRU5DRSk7Ci0gICAgICAgICAgICAgICAgIGdfc3RyaW5nX3NldF9zaXplIChwcml2LT50ZW50 YXRpdmVfbWF0Y2gsIDApOwotICAgICAgICAgICAgICAgICBwcml2LT5pbl9oZXhfc2VxdWVuY2Ug PSBGQUxTRTsKLSAgICAgICAgICAgICAgICAgcHJpdi0+Y29tcG9zZV9idWZmZXJbMF0gPSAwOwot QEAgLTExODQsNyArMTIxNiw5IEBAIGlidXNfZW5naW5lX3NpbXBsZV9wcm9jZXNzX2tleV9ldmVu dCAoSUJ1c0VuZ2luZSAqZW5naW5lLAotICAgICAgICAgICAgIHJldHVybiBUUlVFOwotICAgICAg ICAgfSBlbHNlIGlmICghaXNfaGV4X2VuZCkgewotICAgICAgICAgICAgIC8qIG5vbi1oZXggY2hh cmFjdGVyIGluIGhleCBzZXF1ZW5jZSAqLwotLSAgICAgICAgICAgIC8qIEZJWE1FIGJlZXBfd2lu ZG93IChldmVudC0+d2luZG93KTsgKi8KLSsgICAgICAgICAgICBpYnVzX2VuZ2luZV9zaW1wbGVf c2VuZF9tZXNzYWdlX3dpdGhfY29kZSAoCi0rICAgICAgICAgICAgICAgICAgICBzaW1wbGUsCi0r ICAgICAgICAgICAgICAgICAgICBJQlVTX0VOR0lORV9NU0dfQ09ERV9JTlZBTElEX0NPTVBPU0Vf U0VRVUVOQ0UpOwotICAgICAgICAgICAgIHJldHVybiBUUlVFOwotICAgICAgICAgfQotICAgICB9 IGVsc2UgaWYgKHByaXYtPmluX2Vtb2ppX3NlcXVlbmNlKSB7Ci1AQCAtMTI0MywxNSArMTI3Nywx OCBAQCBpYnVzX2VuZ2luZV9zaW1wbGVfcHJvY2Vzc19rZXlfZXZlbnQgKElCdXNFbmdpbmUgKmVu Z2luZSwKLSAgICAgICAgICAgICAgICAgICAgIHJldHVybiBUUlVFOwotICAgICAgICAgICAgICAg ICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgLyogaW52YWxpZCBoZXggc2VxdWVuY2Ug Ki8KLS0gICAgICAgICAgICAgICAgICAgIC8qIEZJWE1FIGJlZXBfd2luZG93IChldmVudC0+d2lu ZG93KTsgKi8KLSsgICAgICAgICAgICAgICAgICAgIGlidXNfZW5naW5lX3NpbXBsZV9zZW5kX21l c3NhZ2Vfd2l0aF9jb2RlICgKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2ltcGxlLAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJQlVTX0VOR0lORV9NU0dfQ09ERV9JTlZBTElE X0NPTVBPU0VfU0VRVUVOQ0UpOwotICAgICAgICAgICAgICAgICAgICAgZ19zdHJpbmdfc2V0X3Np emUgKHByaXYtPnRlbnRhdGl2ZV9tYXRjaCwgMCk7Ci0gICAgICAgICAgICAgICAgICAgICBwcml2 LT5pbl9oZXhfc2VxdWVuY2UgPSBGQUxTRTsKLSAgICAgICAgICAgICAgICAgICAgIHByaXYtPmNv bXBvc2VfYnVmZmVyWzBdID0gMDsKLSAgICAgICAgICAgICAgICAgfQotKyAgICAgICAgICAgIH0g ZWxzZSBpZiAoIWNoZWNrX2hleCAoc2ltcGxlLCBuX2NvbXBvc2UpKSB7Ci0rICAgICAgICAgICAg ICAgIGlidXNfZW5naW5lX3NpbXBsZV9zZW5kX21lc3NhZ2Vfd2l0aF9jb2RlICgKLSsgICAgICAg ICAgICAgICAgICAgICAgICBzaW1wbGUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgSUJVU19F TkdJTkVfTVNHX0NPREVfSU5WQUxJRF9DT01QT1NFX1NFUVVFTkNFKTsKLSAgICAgICAgICAgICB9 Ci0tICAgICAgICAgICAgZWxzZSBpZiAoIWNoZWNrX2hleCAoc2ltcGxlLCBuX2NvbXBvc2UpKQot LSAgICAgICAgICAgICAgICAvKiBGSVhNRSBiZWVwX3dpbmRvdyAoZXZlbnQtPndpbmRvdyk7ICov Ci0tICAgICAgICAgICAgICAgIDsKLSAgICAgICAgICAgICBpYnVzX2VuZ2luZV9zaW1wbGVfdXBk YXRlX3ByZWVkaXRfdGV4dCAoc2ltcGxlKTsKLSAKLSAgICAgICAgICAgICByZXR1cm4gVFJVRTsK LUBAIC0xMzQzLDcgKzEzODAsOSBAQCBpYnVzX2VuZ2luZV9zaW1wbGVfcHJvY2Vzc19rZXlfZXZl bnQgKElCdXNFbmdpbmUgKmVuZ2luZSwKLSAKLSAgICAgICAgICAgICBuX2NvbXBvc2UgPSBuX2Nv bXBvc2VfcHJldjsKLSAgICAgICAgICAgICBnX2Fzc2VydCAobl9jb21wb3NlIDwgKENPTVBPU0Vf QlVGRkVSX1NJWkUgKyAxKSk7Ci0tICAgICAgICAgICAgLyogRklYTUUgYmVlcF93aW5kb3cgKGV2 ZW50LT53aW5kb3cpOyAqLwotKyAgICAgICAgICAgIGlidXNfZW5naW5lX3NpbXBsZV9zZW5kX21l c3NhZ2Vfd2l0aF9jb2RlICgKLSsgICAgICAgICAgICAgICAgICAgIHNpbXBsZSwKLSsgICAgICAg ICAgICAgICAgICAgIElCVVNfRU5HSU5FX01TR19DT0RFX0lOVkFMSURfQ09NUE9TRV9TRVFVRU5D RSk7Ci0gICAgICAgICAgICAgYmFja3VwX2NoYXIgPSBwcml2LT5jb21wb3NlX2J1ZmZlcltuX2Nv bXBvc2VdOwotICAgICAgICAgICAgIHByaXYtPmNvbXBvc2VfYnVmZmVyW25fY29tcG9zZV0gPSAw OwotICAgICAgICAgICAgIGlmIChpYnVzX2VuZ2luZV9zaW1wbGVfY2hlY2tfYWxsX2NvbXBvc2Vf dGFibGUgKHNpbXBsZSwgbl9jb21wb3NlKSkKLWRpZmYgLS1naXQgYS9zcmMvaWJ1c21lc3NhZ2Uu YyBiL3NyYy9pYnVzbWVzc2FnZS5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAw MDAuLjg5ZTMxNzcxCi0tLS0gL2Rldi9udWxsCi0rKysgYi9zcmMvaWJ1c21lc3NhZ2UuYwotQEAg LTAsMCArMSw1NjIgQEAKLSsvKiAtKi0gbW9kZTogQzsgYy1iYXNpYy1vZmZzZXQ6IDQ7IGluZGVu dC10YWJzLW1vZGU6IG5pbDsgLSotICovCi0rLyogdmltOnNldCBldCBzdHM9NDogKi8KLSsvKiBi dXMgLSBUaGUgSW5wdXQgQnVzCi0rICogQ29weXJpZ2h0IChDKSAyMDI1IFRha2FvIEZ1aml3YXJh IDx0YWthby5mdWppd2FyYTFAZ21haWwuY29tPgotKyAqIENvcHlyaWdodCAoQykgMjAyNSBSZWQg SGF0LCBJbmMuCi0rICoKLSsgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0rICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVk IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotKyAqIHZlcnNpb24gMi4x IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgot KyAqCi0rICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZSB1c2VmdWwsCi0rICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2 ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAqIExlc3NlciBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rICoKLSsgKiBZb3Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0r ICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUg RnJlZSBTb2Z0d2FyZQotKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg RmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEKLSsgKiBVU0EKLSsgKi8KLSsjaW5j bHVkZSAiaWJ1c21lc3NhZ2UuaCIKLSsjaW5jbHVkZSAiaWJ1c2ludGVybmFsLmgiCi0rCi0rZW51 bSB7Ci0rICAgIExBU1RfU0lHTkFMLAotK307Ci0rCi0rZW51bSB7Ci0rICAgIFBST1BfMCA9IDAs Ci0rICAgIFBST1BfRE9NQUlOLAotKyAgICBQUk9QX0NPREUsCi0rICAgIFBST1BfVElUTEUsCi0r ICAgIFBST1BfREVTQ1JJUFRJT04sCi0rICAgIFBST1BfVElNRU9VVCwKLSsgICAgUFJPUF9QUk9H UkVTUywKLSsgICAgUFJPUF9TRVJJQUwKLSt9OwotKwotKwotKy8qIElCdXNNZXNzYWdlUHJpdiAq LwotK3N0cnVjdCBfSUJ1c01lc3NhZ2VQcml2YXRlIHsKLSsgICAgZ3VjaGFyICAgICAgZG9tYWlu OwotKyAgICBndWNoYXIgICAgICBjb2RlOwotKyAgICBnY2hhciAgICAgICp0aXRsZTsKLSsgICAg Z2NoYXIgICAgICAqZGVzY3JpcHRpb247Ci0rICAgIGludCAgICAgICAgIHRpbWVvdXQ7Ci0rICAg IGludCAgICAgICAgIHByb2dyZXNzOwotKyAgICBndWludCAgICAgICBzZXJpYWw7Ci0rfTsKLSsK LSsKLSsjZGVmaW5lIGlidXNfbWVzc2FnZV9nZXRfY29uc3RfaW5zdGFuY2VfcHJpdmF0ZShzZWxm KSBcCi0rICAgIEdfU1RSVUNUX01FTUJFUl9QICgoc2VsZiksIElCdXNNZXNzYWdlX3ByaXZhdGVf b2Zmc2V0KQotKwotKyNkZWZpbmUgSUJVU19NRVNTQUdFX0dFVF9QUklWQVRFKG8pICBcCi0rICAg ICgoSUJ1c01lc3NhZ2VQcml2YXRlICopaWJ1c19tZXNzYWdlX2dldF9pbnN0YW5jZV9wcml2YXRl IChvKSkKLSsjZGVmaW5lIElCVVNfTUVTU0FHRV9HRVRfQ09OU1RfUFJJVkFURShvKSAgXAotKyAg ICAoKGNvbnN0IElCdXNNZXNzYWdlUHJpdmF0ZSAqKWlidXNfbWVzc2FnZV9nZXRfY29uc3RfaW5z dGFuY2VfcHJpdmF0ZSAobykpCi0rCi0rI2RlZmluZSBERUZBVUxUX1RJTUVPVVQgLTEKLSsjZGVm aW5lIERFRkFVTFRfUFJPR1JFU1MgLTEKLSsKLSsvLyBzdGF0aWMgZ3VpbnQgICAgICAgICAgICBf c2lnbmFsc1tMQVNUX1NJR05BTF0gPSB7IDAgfTsKLSsKLSsvKiBmdW5jdGlvbnMgcHJvdG90eXBl ICovCi0rc3RhdGljIHZvaWQgICAgIGlidXNfbWVzc2FnZV9zZXRfcHJvcGVydHkgICAgICAoSUJ1 c01lc3NhZ2UgICAgICAgICAgICAqbXNnLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGd1aW50ICAgICAgICAgICAgICAgICAgcHJvcF9pZCwKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHVmFsdWUg ICAgICAgICAgICp2YWx1ZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBHUGFyYW1TcGVjICAgICAgICAgICAgICpwc3BlYyk7Ci0rc3RhdGljIHZvaWQg ICAgIGlidXNfbWVzc2FnZV9nZXRfcHJvcGVydHkgICAgICAoSUJ1c01lc3NhZ2UgICAgICAgICAg ICAqbXNnLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGd1aW50ICAgICAgICAgICAgICAgICAgIHByb3BfaWQsCi0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgR1ZhbHVlICAgICAgICAgICAgICAgICAqdmFsdWUs Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1BhcmFt U3BlYyAgICAgICAgICAgICAqcHNwZWMpOwotK3N0YXRpYyB2b2lkICAgICBpYnVzX21lc3NhZ2Vf ZGVzdHJveSAgICAgICAgICAgKElCdXNNZXNzYWdlICAgICAgICAgICAgKm1zZyk7Ci0rc3RhdGlj IGdib29sZWFuIGlidXNfbWVzc2FnZV9zZXJpYWxpemUgICAgICAgICAoSUJ1c01lc3NhZ2UgICAg ICAgICAgICAqbXNnLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEdWYXJpYW50QnVpbGRlcgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqYnVpbGRlcik7Ci0rc3RhdGlj IGdpbnQgICAgIGlidXNfbWVzc2FnZV9kZXNlcmlhbGl6ZSAgICAgICAoSUJ1c01lc3NhZ2UgICAg ICAgICAgICAqbXNnLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEdWYXJpYW50Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp2YXJpYW50KTsKLStzdGF0aWMgZ2Jvb2xl YW4gaWJ1c19tZXNzYWdlX2NvcHkgICAgICAgICAgICAgIChJQnVzTWVzc2FnZSAgICAgICAgICAg ICpkZXN0LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbnN0IElCdXNNZXNzYWdlICAgICAgKnNyYyk7Ci0rCi0rR19ERUZJTkVfVFlQRV9XSVRIX1BS SVZBVEUgKElCdXNNZXNzYWdlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpYnVzX21l c3NhZ2UsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIElCVVNfVFlQRV9TRVJJQUxJWkFC TEUpCi0rCi0rCi0rc3RhdGljIHZvaWQKLStpYnVzX21lc3NhZ2VfY2xhc3NfaW5pdCAoSUJ1c01l c3NhZ2VDbGFzcyAqY2xhc3MpCi0rewotKyAgICBHT2JqZWN0Q2xhc3MgKmdvYmplY3RfY2xhc3Mg PSBHX09CSkVDVF9DTEFTUyAoY2xhc3MpOwotKyAgICBJQnVzT2JqZWN0Q2xhc3MgKm9iamVjdF9j bGFzcyA9IElCVVNfT0JKRUNUX0NMQVNTIChjbGFzcyk7Ci0rICAgIElCdXNTZXJpYWxpemFibGVD bGFzcyAqc2VyaWFsaXphYmxlX2NsYXNzID0gSUJVU19TRVJJQUxJWkFCTEVfQ0xBU1MgKGNsYXNz KTsKLSsKLSsgICAgZ29iamVjdF9jbGFzcy0+c2V0X3Byb3BlcnR5ID0KLSsgICAgICAgICAgICAo R09iamVjdFNldFByb3BlcnR5RnVuYylpYnVzX21lc3NhZ2Vfc2V0X3Byb3BlcnR5OwotKyAgICBn b2JqZWN0X2NsYXNzLT5nZXRfcHJvcGVydHkgPQotKyAgICAgICAgICAgIChHT2JqZWN0R2V0UHJv cGVydHlGdW5jKWlidXNfbWVzc2FnZV9nZXRfcHJvcGVydHk7Ci0rICAgIG9iamVjdF9jbGFzcy0+ ZGVzdHJveSA9IChJQnVzT2JqZWN0RGVzdHJveUZ1bmMpaWJ1c19tZXNzYWdlX2Rlc3Ryb3k7Ci0r Ci0rICAgIHNlcmlhbGl6YWJsZV9jbGFzcy0+c2VyaWFsaXplICAgPQotKyAgICAgICAgICAgIChJ QnVzU2VyaWFsaXphYmxlU2VyaWFsaXplRnVuYylpYnVzX21lc3NhZ2Vfc2VyaWFsaXplOwotKyAg ICBzZXJpYWxpemFibGVfY2xhc3MtPmRlc2VyaWFsaXplID0KLSsgICAgICAgICAgICAoSUJ1c1Nl cmlhbGl6YWJsZURlc2VyaWFsaXplRnVuYylpYnVzX21lc3NhZ2VfZGVzZXJpYWxpemU7Ci0rICAg IHNlcmlhbGl6YWJsZV9jbGFzcy0+Y29weSAgICAgICAgPQotKyAgICAgICAgICAgIChJQnVzU2Vy aWFsaXphYmxlQ29weUZ1bmMpaWJ1c19tZXNzYWdlX2NvcHk7Ci0rCi0rICAgIC8qIGluc3RhbGwg cHJvcGVydGllcyAqLwotKyAgICAvKioKLSsgICAgICogSUJ1c01lc3NhZ2U6ZG9tYWluOgotKyAg ICAgKgotKyAgICAgKiBUaGUgZG9tYWluIG9mIG1lc3NhZ2UKLSsgICAgICovCi0rICAgIGdfb2Jq ZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsCi0rICAgICAgICAgICAg ICAgICAgICBQUk9QX0RPTUFJTiwKLSsgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY191 Y2hhciAoImRvbWFpbiIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgIm1lc3NhZ2UgZG9tYWlu IiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIGRvbWFpbiBvZiBtZXNzYWdlIiwKLSsg ICAgICAgICAgICAgICAgICAgICAgICAwLAotKyAgICAgICAgICAgICAgICAgICAgICAgIEdfTUFY VUlOVDgsCi0rICAgICAgICAgICAgICAgICAgICAgICAgMCwKLSsgICAgICAgICAgICAgICAgICAg ICAgICBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fQ09OU1RSVUNUX09OTFkpKTsKLSsKLSsg ICAgLyoqCi0rICAgICAqIElCdXNNZXNzYWdlOmNvZGU6Ci0rICAgICAqCi0rICAgICAqIFRoZSBj b2RlIG9mIG1lc3NhZ2UKLSsgICAgICovCi0rICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJv cGVydHkgKGdvYmplY3RfY2xhc3MsCi0rICAgICAgICAgICAgICAgICAgICBQUk9QX0NPREUsCi0r ICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfdWNoYXIgKCJjb2RlIiwKLSsgICAgICAg ICAgICAgICAgICAgICAgICAibWVzc2FnZSBjb2RlIiwKLSsgICAgICAgICAgICAgICAgICAgICAg ICAiVGhlIGNvZGUgb2YgbWVzc2FnZSIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgMCwKLSsg ICAgICAgICAgICAgICAgICAgICAgICBHX01BWFVJTlQ4LAotKyAgICAgICAgICAgICAgICAgICAg ICAgIDAsCi0rICAgICAgICAgICAgICAgICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BB UkFNX0NPTlNUUlVDVF9PTkxZKSk7Ci0rCi0rICAgIC8qKgotKyAgICAgKiBJQnVzTWVzc2FnZTp0 aXRsZToKLSsgICAgICoKLSsgICAgICogVGhlIHRpdGxlIG9mIG1lc3NhZ2UKLSsgICAgICovCi0r ICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsCi0rICAg ICAgICAgICAgICAgICAgICBQUk9QX1RJVExFLAotKyAgICAgICAgICAgICAgICAgICAgZ19wYXJh bV9zcGVjX3N0cmluZyAoInRpdGxlIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAibWVzc2Fn ZSB0aXRsZSIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSB0aXRsZSBvZiBtZXNzYWdl IiwKLSsgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAotKyAgICAgICAgICAgICAgICAgICAg ICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9DT05TVFJVQ1RfT05MWSkpOwotKwotKyAg ICAvKioKLSsgICAgICogSUJ1c01lc3NhZ2U6ZGVzY3JpcHRpb246Ci0rICAgICAqCi0rICAgICAq IFRoZSBkZXNjcmlwdGlvbiBvZiBtZXNzYWdlCi0rICAgICAqLwotKyAgICBnX29iamVjdF9jbGFz c19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLAotKyAgICAgICAgICAgICAgICAgICAg UFJPUF9ERVNDUklQVElPTiwKLSsgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19zdHJp bmcgKCJkZXNjcmlwdGlvbiIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgIm1lc3NhZ2UgZGVz Y3JpcHRpb24iLAotKyAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgZGVzY3JpcHRpb24gb2Yg bWVzc2FnZSIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgIiIsCi0rICAgICAgICAgICAgICAg ICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX0NPTlNUUlVDVF9PTkxZKSk7Ci0r Ci0rICAgIC8qKgotKyAgICAgKiBJQnVzTWVzc2FnZTp0aW1lb3V0OgotKyAgICAgKgotKyAgICAg KiBUaGUgdGltZW91dCBvZiBtZXNzYWdlCi0rICAgICAqLwotKyAgICBnX29iamVjdF9jbGFzc19p bnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLAotKyAgICAgICAgICAgICAgICAgICAgUFJP UF9USU1FT1VULAotKyAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2ludCAoInRpbWVv dXQiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICJtZXNzYWdlIHRpbWVvdXQiLAotKyAgICAg ICAgICAgICAgICAgICAgICAgICJUaGUgdGltZW91dCBvZiBtZXNzYWdlIiwKLSsgICAgICAgICAg ICAgICAgICAgICAgICBHX01JTklOVCwKLSsgICAgICAgICAgICAgICAgICAgICAgICBHX01BWElO VCwKLSsgICAgICAgICAgICAgICAgICAgICAgICBERUZBVUxUX1RJTUVPVVQsCi0rICAgICAgICAg ICAgICAgICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX0NPTlNUUlVDVF9PTkxZ KSk7Ci0rCi0rICAgIC8qKgotKyAgICAgKiBJQnVzTWVzc2FnZTpwcm9ncmVzczoKLSsgICAgICoK LSsgICAgICogVGhlIHByb2dyZXNzIG9mIG1lc3NhZ2UKLSsgICAgICovCi0rICAgIGdfb2JqZWN0 X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsCi0rICAgICAgICAgICAgICAg ICAgICBQUk9QX1BST0dSRVNTLAotKyAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2lu dCAoInByb2dyZXNzIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAibWVzc2FnZSBwcm9ncmVz cyIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBwcm9ncmVzcyBvZiBtZXNzYWdlIiwK LSsgICAgICAgICAgICAgICAgICAgICAgICBHX01JTklOVCwKLSsgICAgICAgICAgICAgICAgICAg ICAgICBHX01BWElOVCwKLSsgICAgICAgICAgICAgICAgICAgICAgICBERUZBVUxUX1BST0dSRVNT LAotKyAgICAgICAgICAgICAgICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9D T05TVFJVQ1RfT05MWSkpOwotKwotKyAgICAvKioKLSsgICAgICogSUJ1c01lc3NhZ2U6c2VyaWFs OgotKyAgICAgKgotKyAgICAgKiBUaGUgc2VyaWFsIG9mIG1lc3NhZ2UKLSsgICAgICovCi0rICAg IGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsCi0rICAgICAg ICAgICAgICAgICAgICBQUk9QX1NFUklBTCwKLSsgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1f c3BlY191aW50ICgic2VyaWFsIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAibWVzc2FnZSBz ZXJpYWwiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgc2VyaWFsIG9mIG1lc3NhZ2Ui LAotKyAgICAgICAgICAgICAgICAgICAgICAgIDAsCi0rICAgICAgICAgICAgICAgICAgICAgICAg R19NQVhVSU5ULAotKyAgICAgICAgICAgICAgICAgICAgICAgIDAsCi0rICAgICAgICAgICAgICAg ICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX0NPTlNUUlVDVF9PTkxZKSk7Ci0r fQotKwotKwotK3N0YXRpYyB2b2lkCi0raWJ1c19tZXNzYWdlX2luaXQgKElCdXNNZXNzYWdlICpt c2cpCi0rewotKyAgICBJQnVzTWVzc2FnZVByaXZhdGUgKnByaXYgPSBJQlVTX01FU1NBR0VfR0VU X1BSSVZBVEUgKG1zZyk7Ci0rICAgIHByaXYtPnRpbWVvdXQgPSBERUZBVUxUX1RJTUVPVVQ7Ci0r ICAgIHByaXYtPnByb2dyZXNzID0gREVGQVVMVF9QUk9HUkVTUzsKLSt9Ci0rCi0rCi0rc3RhdGlj IHZvaWQKLStpYnVzX21lc3NhZ2VfZGVzdHJveSAoSUJ1c01lc3NhZ2UgKm1zZykKLSt7Ci0rICAg IElCdXNNZXNzYWdlUHJpdmF0ZSAqcHJpdiA9IElCVVNfTUVTU0FHRV9HRVRfUFJJVkFURSAobXNn KTsKLSsgICAgZ19mcmVlIChwcml2LT50aXRsZSk7Ci0rICAgIGdfZnJlZSAocHJpdi0+ZGVzY3Jp cHRpb24pOwotKwotKyAgICBJQlVTX09CSkVDVF9DTEFTUyAoaWJ1c19tZXNzYWdlX3BhcmVudF9j bGFzcyktPmRlc3Ryb3kgKElCVVNfT0JKRUNUIChtc2cpKTsKLSt9Ci0rCi0rCi0rc3RhdGljIHZv aWQKLStpYnVzX21lc3NhZ2Vfc2V0X3Byb3BlcnR5IChJQnVzTWVzc2FnZSAgKm1zZywKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICBndWludCAgICAgICAgIHByb3BfaWQsCi0rICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3QgR1ZhbHVlICp2YWx1ZSwKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICBHUGFyYW1TcGVjICAgKnBzcGVjKQotK3sKLSsgICAgSUJ1c01lc3NhZ2VQcml2 YXRlICpwcml2OwotKwotKyAgICBnX3JldHVybl9pZl9mYWlsIChJQlVTX0lTX01FU1NBR0UgKG1z ZykpOwotKyAgICBwcml2ID0gSUJVU19NRVNTQUdFX0dFVF9QUklWQVRFIChtc2cpOwotKyAgICBz d2l0Y2ggKHByb3BfaWQpIHsKLSsgICAgY2FzZSBQUk9QX0RPTUFJTjoKLSsgICAgICAgIGdfYXNz ZXJ0IChwcml2LT5kb21haW4gPT0gMCk7Ci0rICAgICAgICBwcml2LT5kb21haW4gPSBnX3ZhbHVl X2dldF91Y2hhciAodmFsdWUpOwotKyAgICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgUFJPUF9DT0RF OgotKyAgICAgICAgZ19hc3NlcnQgKHByaXYtPmNvZGUgPT0gMCk7Ci0rICAgICAgICBwcml2LT5j b2RlID0gZ192YWx1ZV9nZXRfdWNoYXIgKHZhbHVlKTsKLSsgICAgICAgIGJyZWFrOwotKyAgICBj YXNlIFBST1BfVElUTEU6Ci0rICAgICAgICBnX2Fzc2VydCAocHJpdi0+dGl0bGUgPT0gTlVMTCk7 Ci0rICAgICAgICBwcml2LT50aXRsZSA9IGdfdmFsdWVfZHVwX3N0cmluZyAodmFsdWUpOwotKyAg ICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgUFJPUF9ERVNDUklQVElPTjoKLSsgICAgICAgIGdfYXNz ZXJ0IChwcml2LT5kZXNjcmlwdGlvbiA9PSBOVUxMKTsKLSsgICAgICAgIHByaXYtPmRlc2NyaXB0 aW9uICA9IGdfdmFsdWVfZHVwX3N0cmluZyAodmFsdWUpOwotKyAgICAgICAgYnJlYWs7Ci0rICAg IGNhc2UgUFJPUF9USU1FT1VUOgotKyAgICAgICAgZ19hc3NlcnQgKHByaXYtPnRpbWVvdXQgPT0g REVGQVVMVF9USU1FT1VUKTsKLSsgICAgICAgIHByaXYtPnRpbWVvdXQgPSBnX3ZhbHVlX2dldF9p bnQgKHZhbHVlKTsKLSsgICAgICAgIGJyZWFrOwotKyAgICBjYXNlIFBST1BfUFJPR1JFU1M6Ci0r ICAgICAgICBnX2Fzc2VydCAocHJpdi0+cHJvZ3Jlc3MgPT0gREVGQVVMVF9QUk9HUkVTUyk7Ci0r ICAgICAgICBwcml2LT5wcm9ncmVzcyA9IGdfdmFsdWVfZ2V0X2ludCAodmFsdWUpOwotKyAgICAg ICAgYnJlYWs7Ci0rICAgIGNhc2UgUFJPUF9TRVJJQUw6Ci0rICAgICAgICBnX2Fzc2VydCAocHJp di0+c2VyaWFsID09IDApOwotKyAgICAgICAgcHJpdi0+c2VyaWFsID0gZ192YWx1ZV9nZXRfdWlu dCAodmFsdWUpOwotKyAgICAgICAgYnJlYWs7Ci0rICAgIGRlZmF1bHQ6Ci0rICAgICAgICBHX09C SkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQgKG1zZywgcHJvcF9pZCwgcHNwZWMpOwotKyAg ICB9Ci0rfQotKwotKwotK3N0YXRpYyB2b2lkCi0raWJ1c19tZXNzYWdlX2dldF9wcm9wZXJ0eSAo SUJ1c01lc3NhZ2UgKm1zZywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludCAgICAg ICAgcHJvcF9pZCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICBHVmFsdWUgICAgICAqdmFs dWUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgR1BhcmFtU3BlYyAgKnBzcGVjKQotK3sK LSsgICAgc3dpdGNoIChwcm9wX2lkKSB7Ci0rICAgIGNhc2UgUFJPUF9ET01BSU46IHsKLSsgICAg ICAgICAgICBpbnQgZG9tYWluID0gaWJ1c19tZXNzYWdlX2dldF9kb21haW4gKG1zZyk7Ci0rICAg ICAgICAgICAgZ19hc3NlcnQgKGRvbWFpbiA+IDAgJiYgZG9tYWluIDw9IEdfTUFYVUlOVDgpOwot KyAgICAgICAgICAgIGdfdmFsdWVfc2V0X3VjaGFyICh2YWx1ZSwgKGd1Y2hhcilkb21haW4pOwot KyAgICAgICAgfQotKyAgICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgUFJPUF9DT0RFOiB7Ci0rICAg ICAgICAgICAgaW50IGNvZGUgPSBpYnVzX21lc3NhZ2VfZ2V0X2NvZGUgKG1zZyk7Ci0rICAgICAg ICAgICAgZ19hc3NlcnQgKGNvZGUgPj0gMCAmJiBjb2RlIDw9IEdfTUFYVUlOVDgpOwotKyAgICAg ICAgICAgIGdfdmFsdWVfc2V0X3VjaGFyICh2YWx1ZSwgKGd1Y2hhciljb2RlKTsKLSsgICAgICAg IH0KLSsgICAgICAgIGJyZWFrOwotKyAgICBjYXNlIFBST1BfVElUTEU6Ci0rICAgICAgICBnX3Zh bHVlX3NldF9zdHJpbmcgKHZhbHVlLCBpYnVzX21lc3NhZ2VfZ2V0X3RpdGxlIChtc2cpKTsKLSsg ICAgICAgIGJyZWFrOwotKyAgICBjYXNlIFBST1BfREVTQ1JJUFRJT046Ci0rICAgICAgICBnX3Zh bHVlX3NldF9zdHJpbmcgKHZhbHVlLCBpYnVzX21lc3NhZ2VfZ2V0X2Rlc2NyaXB0aW9uIChtc2cp KTsKLSsgICAgICAgIGJyZWFrOwotKyAgICBjYXNlIFBST1BfVElNRU9VVDoKLSsgICAgICAgIGdf dmFsdWVfc2V0X2ludCAodmFsdWUsIGlidXNfbWVzc2FnZV9nZXRfdGltZW91dCAobXNnKSk7Ci0r ICAgICAgICBicmVhazsKLSsgICAgY2FzZSBQUk9QX1BST0dSRVNTOgotKyAgICAgICAgZ192YWx1 ZV9zZXRfaW50ICh2YWx1ZSwgaWJ1c19tZXNzYWdlX2dldF9wcm9ncmVzcyAobXNnKSk7Ci0rICAg ICAgICBicmVhazsKLSsgICAgY2FzZSBQUk9QX1NFUklBTDoKLSsgICAgICAgIGdfdmFsdWVfc2V0 X3VpbnQgKHZhbHVlLCBpYnVzX21lc3NhZ2VfZ2V0X3NlcmlhbCAobXNnKSk7Ci0rICAgICAgICBi cmVhazsKLSsgICAgZGVmYXVsdDoKLSsgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9Q RVJUWV9JRCAobXNnLCBwcm9wX2lkLCBwc3BlYyk7Ci0rICAgIH0KLSt9Ci0rCi0rCi0rc3RhdGlj IGdib29sZWFuCi0raWJ1c19tZXNzYWdlX3NlcmlhbGl6ZSAoSUJ1c01lc3NhZ2UgICAgICptc2cs Ci0rICAgICAgICAgICAgICAgICAgICAgICAgR1ZhcmlhbnRCdWlsZGVyICpidWlsZGVyKQotK3sK LSsgICAgZ2Jvb2xlYW4gcmV0dmFsOwotKyAgICBJQnVzTWVzc2FnZVByaXZhdGUgKnByaXY7Ci0r Ci0rICAgIHJldHZhbCA9IElCVVNfU0VSSUFMSVpBQkxFX0NMQVNTIChpYnVzX21lc3NhZ2VfcGFy ZW50X2NsYXNzKS0+Ci0rICAgICAgICAgICAgc2VyaWFsaXplICgoSUJ1c1NlcmlhbGl6YWJsZSAq KW1zZywgYnVpbGRlcik7Ci0rICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChyZXR2YWwsIEZBTFNF KTsKLSsgICAgLyogRW5kIGRpY3QgaXRlciAqLwotKwotKyAgICBnX3JldHVybl92YWxfaWZfZmFp bCAoSUJVU19JU19NRVNTQUdFIChtc2cpLCBGQUxTRSk7Ci0rICAgIHByaXYgPSBJQlVTX01FU1NB R0VfR0VUX1BSSVZBVEUgKG1zZyk7Ci0rCi0rI2RlZmluZSBOT1ROVUxMKHMpICgocykgIT0gTlVM TCA/IChzKSA6ICIiKQotKyAgICAvKiBJZiB5b3Ugd2lsbCBhZGQgYSBuZXcgcHJvcGVydHksIHlv dSBjYW4gYXBwZW5kIGl0IGF0IHRoZSBlbmQgYW5kCi0rICAgICAqIHlvdSBzaG91bGQgbm90IGNo YW5nZSB0aGUgc2VyaWFsaXplZCBvcmRlciBvZiBkb21haW4sIGNvZGUsCi0rICAgICAqIHRpdGxl LCAuLi4uICovCi0rICAgIGdfdmFyaWFudF9idWlsZGVyX2FkZCAoYnVpbGRlciwgInkiLCBwcml2 LT5kb21haW4pOwotKyAgICBnX3ZhcmlhbnRfYnVpbGRlcl9hZGQgKGJ1aWxkZXIsICJ5IiwgcHJp di0+Y29kZSk7Ci0rICAgIGdfdmFyaWFudF9idWlsZGVyX2FkZCAoYnVpbGRlciwgInMiLCBOT1RO VUxMIChwcml2LT50aXRsZSkpOwotKyAgICBnX3ZhcmlhbnRfYnVpbGRlcl9hZGQgKGJ1aWxkZXIs ICJzIiwgTk9UTlVMTCAocHJpdi0+ZGVzY3JpcHRpb24pKTsKLSsgICAgZ192YXJpYW50X2J1aWxk ZXJfYWRkIChidWlsZGVyLCAiaSIsIHByaXYtPnRpbWVvdXQpOwotKyAgICBnX3ZhcmlhbnRfYnVp bGRlcl9hZGQgKGJ1aWxkZXIsICJpIiwgcHJpdi0+cHJvZ3Jlc3MpOwotKyAgICBnX3ZhcmlhbnRf YnVpbGRlcl9hZGQgKGJ1aWxkZXIsICJ1IiwgcHJpdi0+c2VyaWFsKTsKLSsgICAgLyogVGhlIHNl cmlhbGl6ZWQgb3JkZXIgc2hvdWxkIGJlIGtlcHQuICovCi0rI3VuZGVmIE5PVE5VTEwKLSsKLSsg ICAgcmV0dXJuIFRSVUU7Ci0rfQotKwotKwotK3N0YXRpYyBnaW50Ci0raWJ1c19tZXNzYWdlX2Rl c2VyaWFsaXplIChJQnVzTWVzc2FnZSAqbXNnLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAg R1ZhcmlhbnQgICAgKnZhcmlhbnQpCi0rewotKyAgICBnaW50IHJldHZhbDsKLSsgICAgSUJ1c01l c3NhZ2VQcml2YXRlICpwcml2OwotKwotKyAgICByZXR2YWwgPSBJQlVTX1NFUklBTElaQUJMRV9D TEFTUyAoaWJ1c19tZXNzYWdlX3BhcmVudF9jbGFzcyktPgotKyAgICAgICAgICAgIGRlc2VyaWFs aXplICgoSUJ1c1NlcmlhbGl6YWJsZSAqKW1zZywgdmFyaWFudCk7Ci0rICAgIGdfcmV0dXJuX3Zh bF9pZl9mYWlsIChyZXR2YWwsIDApOwotKwotKyAgICBnX3JldHVybl92YWxfaWZfZmFpbCAoSUJV U19JU19NRVNTQUdFIChtc2cpLCByZXR2YWwpOwotKyAgICBwcml2ID0gSUJVU19NRVNTQUdFX0dF VF9QUklWQVRFIChtc2cpOwotKwotKyAgICAvKiBJZiB5b3Ugd2lsbCBhZGQgYSBuZXcgcHJvcGVy dHksIHlvdSBjYW4gYXBwZW5kIGl0IGF0IHRoZSBlbmQgYW5kCi0rICAgICAqIHlvdSBzaG91bGQg bm90IGNoYW5nZSB0aGUgc2VyaWFsaXplZCBvcmRlciBvZiBkb21haW4sIGNvZGUsCi0rICAgICAq IHRpdGxlLCAuLi4uICovCi0rICAgIGdfdmFyaWFudF9nZXRfY2hpbGQgKHZhcmlhbnQsIHJldHZh bCsrLCAieSIsICZwcml2LT5kb21haW4pOwotKyAgICBnX3ZhcmlhbnRfZ2V0X2NoaWxkICh2YXJp YW50LCByZXR2YWwrKywgInkiLCAmcHJpdi0+Y29kZSk7Ci0rICAgIGlidXNfZ192YXJpYW50X2dl dF9jaGlsZF9zdHJpbmcgKHZhcmlhbnQsIHJldHZhbCsrLAotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAmcHJpdi0+dGl0bGUpOwotKyAgICBpYnVzX2dfdmFyaWFudF9nZXRf Y2hpbGRfc3RyaW5nICh2YXJpYW50LCByZXR2YWwrKywKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJnByaXYtPmRlc2NyaXB0aW9uKTsKLSsgICAgZ192YXJpYW50X2dldF9j aGlsZCAodmFyaWFudCwgcmV0dmFsKyssICJpIiwgJnByaXYtPnRpbWVvdXQpOwotKyAgICBnX3Zh cmlhbnRfZ2V0X2NoaWxkICh2YXJpYW50LCByZXR2YWwrKywgImkiLCAmcHJpdi0+cHJvZ3Jlc3Mp OwotKyAgICBnX3ZhcmlhbnRfZ2V0X2NoaWxkICh2YXJpYW50LCByZXR2YWwrKywgInUiLCAmcHJp di0+c2VyaWFsKTsKLSsgICAgLyogVGhlIHNlcmlhbGl6ZWQgb3JkZXIgc2hvdWxkIGJlIGtlcHQu ICovCi0rICAgIHJldHVybiByZXR2YWw7Ci0rfQotKwotKwotK3N0YXRpYyBnYm9vbGVhbgotK2li dXNfbWVzc2FnZV9jb3B5IChJQnVzTWVzc2FnZSAgICAgICAqZGVzdCwKLSsgICAgICAgICAgICAg ICAgICAgY29uc3QgSUJ1c01lc3NhZ2UgKnNyYykKLSt7Ci0rICAgIGdib29sZWFuIHJldHZhbDsK LSsgICAgSUJ1c01lc3NhZ2VQcml2YXRlICpwcml2X2Rlc3Q7Ci0rICAgIGNvbnN0IElCdXNNZXNz YWdlUHJpdmF0ZSAqcHJpdl9zcmM7Ci0rCi0rICAgIHJldHZhbCA9IElCVVNfU0VSSUFMSVpBQkxF X0NMQVNTIChpYnVzX21lc3NhZ2VfcGFyZW50X2NsYXNzKS0+Ci0rICAgICAgICAgICAgY29weSAo KElCdXNTZXJpYWxpemFibGUgKilkZXN0LCAoSUJ1c1NlcmlhbGl6YWJsZSAqKXNyYyk7Ci0rICAg IGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChyZXR2YWwsIEZBTFNFKTsKLSsKLSsgICAgZ19yZXR1cm5f dmFsX2lmX2ZhaWwgKElCVVNfSVNfTUVTU0FHRSAoZGVzdCksIEZBTFNFKTsKLSsgICAgZ19yZXR1 cm5fdmFsX2lmX2ZhaWwgKElCVVNfSVNfTUVTU0FHRSAoc3JjKSwgRkFMU0UpOwotKyAgICBwcml2 X2Rlc3QgID0gSUJVU19NRVNTQUdFX0dFVF9QUklWQVRFIChkZXN0KTsKLSsgICAgcHJpdl9zcmMg ICA9IElCVVNfTUVTU0FHRV9HRVRfQ09OU1RfUFJJVkFURSAoc3JjKTsKLSsKLSsgICAgcHJpdl9k ZXN0LT5kb21haW4gICAgICAgICAgICA9IHByaXZfc3JjLT5kb21haW47Ci0rICAgIHByaXZfZGVz dC0+Y29kZSAgICAgICAgICAgICAgPSBwcml2X3NyYy0+Y29kZTsKLSsgICAgcHJpdl9kZXN0LT50 aXRsZSAgICAgICAgICAgICA9IGdfc3RyZHVwIChwcml2X3NyYy0+dGl0bGUpOwotKyAgICBwcml2 X2Rlc3QtPmRlc2NyaXB0aW9uICAgICAgID0gZ19zdHJkdXAgKHByaXZfc3JjLT5kZXNjcmlwdGlv bik7Ci0rICAgIHByaXZfZGVzdC0+dGltZW91dCAgICAgICAgICAgPSBwcml2X3NyYy0+dGltZW91 dDsKLSsgICAgcHJpdl9kZXN0LT5wcm9ncmVzcyAgICAgICAgICA9IHByaXZfc3JjLT5wcm9ncmVz czsKLSsgICAgcHJpdl9kZXN0LT5zZXJpYWwgICAgICAgICAgICA9IHByaXZfc3JjLT5zZXJpYWw7 Ci0rICAgIHJldHVybiBUUlVFOwotK30KLSsKLSsKLStndWludAotK2lidXNfbWVzc2FnZV9nZXRf ZG9tYWluIChJQnVzTWVzc2FnZSAqbXNnKQotK3sKLSsgICAgSUJ1c01lc3NhZ2VQcml2YXRlICpw cml2OwotKyAgICBnX3JldHVybl92YWxfaWZfZmFpbCAoSUJVU19JU19NRVNTQUdFIChtc2cpLCAw KTsKLSsgICAgcHJpdiA9IElCVVNfTUVTU0FHRV9HRVRfUFJJVkFURSAobXNnKTsKLSsgICAgcmV0 dXJuIChndWludClwcml2LT5kb21haW47Ci0rfQotKwotKwotK2d1aW50Ci0raWJ1c19tZXNzYWdl X2dldF9jb2RlIChJQnVzTWVzc2FnZSAqbXNnKQotK3sKLSsgICAgSUJ1c01lc3NhZ2VQcml2YXRl ICpwcml2OwotKyAgICBnX3JldHVybl92YWxfaWZfZmFpbCAoSUJVU19JU19NRVNTQUdFIChtc2cp LCAwKTsKLSsgICAgcHJpdiA9IElCVVNfTUVTU0FHRV9HRVRfUFJJVkFURSAobXNnKTsKLSsgICAg cmV0dXJuIChndWludClwcml2LT5jb2RlOwotK30KLSsKLSsKLSsjZGVmaW5lIElCVVNfTUVTU0FH RV9HRVRfUFJPUEVSVFkocHJvcGVydHksIHJldHVybl90eXBlLCBkZWZ2YWwpICAgICAgICBcCi0r cmV0dXJuX3R5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAotK2lidXNfbWVzc2FnZV9nZXRfICMjIHByb3BlcnR5IChJQnVzTWVz c2FnZSAqbXNnKSAgICAgICAgICAgICAgICAgICAgICAgIFwKLSt7ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0r ICAgIElCdXNNZXNzYWdlUHJpdmF0ZSAqcHJpdjsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAotKyAgICBnX3JldHVybl92YWxfaWZfZmFpbCAoSUJVU19JU19NRVNT QUdFIChtc2cpLCAoZGVmdmFsKSk7ICAgICAgICAgICAgIFwKLSsgICAgcHJpdiA9IElCVVNfTUVT U0FHRV9HRVRfUFJJVkFURSAobXNnKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0r ICAgIHJldHVybiBwcml2LT5wcm9wZXJ0eTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAotK30KLSsKLStJQlVTX01FU1NBR0VfR0VUX1BST1BFUlRZICh0aXRs ZSwgY29uc3QgZ2NoYXIgKiwgTlVMTCkKLStJQlVTX01FU1NBR0VfR0VUX1BST1BFUlRZIChkZXNj cmlwdGlvbiwgY29uc3QgZ2NoYXIgKiwgTlVMTCkKLStJQlVTX01FU1NBR0VfR0VUX1BST1BFUlRZ ICh0aW1lb3V0LCBpbnQsIERFRkFVTFRfVElNRU9VVCkKLStJQlVTX01FU1NBR0VfR0VUX1BST1BF UlRZIChwcm9ncmVzcywgaW50LCBERUZBVUxUX1BST0dSRVNTKQotK0lCVVNfTUVTU0FHRV9HRVRf UFJPUEVSVFkgKHNlcmlhbCwgZ3VpbnQzMiwgMCkKLSsjdW5kZWYgSUJVU19NRVNTQUdFX0dFVF9Q Uk9QRVJUWQotKwotKwotK0lCdXNNZXNzYWdlICoKLStpYnVzX21lc3NhZ2VfbmV3IChndWludCBk b21haW4sCi0rICAgICAgICAgICAgICAgICAgZ3VpbnQgY29kZSwKLSsgICAgICAgICAgICAgICAg ICBjb25zdCBnY2hhciAqdGl0bGUsCi0rICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgKmRl c2NyaXB0aW9uLAotKyAgICAgICAgICAgICAgICAgIC4uLikKLSt7Ci0rICAgIHZhX2xpc3QgdmFy X2FyZ3M7Ci0rICAgIGdjaGFyICpwcm9wOwotKyAgICBnY2hhciAqKm5hbWVzLCAqKm5hbWVzX3Rt cDsKLSsgICAgR1ZhbHVlICp2YWx1ZXMsICp2YWx1ZXNfdG1wOwotKyAgICBndWludCBuX3Byb3Bl cnRpZXMgPSA0LCBpOwotKyAgICBJQnVzTWVzc2FnZSAqbXNnOwotKyAgICBJQnVzTWVzc2FnZVBy aXZhdGUgKnByaXY7Ci0rCi0rICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChkb21haW4gPiAwICYm IGRvbWFpbiA8PSBHX01BWFVJTlQ4LCBOVUxMKTsKLSsgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwg KGNvZGUgPD0gR19NQVhVSU5UOCwgTlVMTCk7Ci0rICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChk ZXNjcmlwdGlvbiwgTlVMTCk7Ci0rICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsICgqZGVzY3JpcHRp b24gIT0gJ1wwJywgTlVMTCk7Ci0rCi0rICAgIGlmICghKG5hbWVzID0gZ19uZXcwIChnY2hhciAq LCBuX3Byb3BlcnRpZXMpKSkgewotKyAgICAgICAgZ193YXJuaW5nICgiYWxsb2NhdGlvbiBlcnJv ciBpbiAlcyIsIEdfU1RSRlVOQyk7Ci0rICAgICAgICByZXR1cm4gTlVMTDsKLSsgICAgfQotKyAg ICBpZiAoISh2YWx1ZXMgPSBnX25ldzAgKEdWYWx1ZSwgbl9wcm9wZXJ0aWVzKSkpIHsKLSsgICAg ICAgIGdfd2FybmluZyAoImFsbG9jYXRpb24gZXJyb3IgaW4gJXMiLCBHX1NUUkZVTkMpOwotKyAg ICAgICAgcmV0dXJuIE5VTEw7Ci0rICAgIH0KLSsKLSsgICAgbmFtZXNbMF0gPSAiZG9tYWluIjsK LSsgICAgZ192YWx1ZV9pbml0ICgmdmFsdWVzWzBdLCBHX1RZUEVfVUNIQVIpOwotKyAgICBnX3Zh bHVlX3NldF91Y2hhciAoJnZhbHVlc1swXSwgZG9tYWluKTsKLSsgICAgbmFtZXNbMV0gPSAiY29k ZSI7Ci0rICAgIGdfdmFsdWVfaW5pdCAoJnZhbHVlc1sxXSwgR19UWVBFX1VDSEFSKTsKLSsgICAg Z192YWx1ZV9zZXRfdWNoYXIgKCZ2YWx1ZXNbMV0sIGNvZGUpOwotKyAgICBuYW1lc1syXSA9ICJ0 aXRsZSI7Ci0rICAgIGdfdmFsdWVfaW5pdCAoJnZhbHVlc1syXSwgR19UWVBFX1NUUklORyk7Ci0r ICAgIGdfdmFsdWVfc2V0X3N0cmluZyAoJnZhbHVlc1syXSwgdGl0bGUpOwotKyAgICBuYW1lc1sz XSA9ICJkZXNjcmlwdGlvbiI7Ci0rICAgIGdfdmFsdWVfaW5pdCAoJnZhbHVlc1szXSwgR19UWVBF X1NUUklORyk7Ci0rICAgIGdfdmFsdWVfc2V0X3N0cmluZyAoJnZhbHVlc1szXSwgZGVzY3JpcHRp b24pOwotKwotKyNkZWZpbmUgSUZfUFJPUEVSVFlfSVNfTUFUQ0hFRChwcm9wZXJ0eSwgZ3R5cGUs IGN0eXBlKSBcCi0rICAgIGlmICghZ19zdHJjbXAwIChwcm9wLCAjcHJvcGVydHkpKSB7ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgaWYgKCEobmFtZXNf dG1wID0gZ19yZW5ldyAoZ2NoYXIgKiwgbmFtZXMsIG5fcHJvcGVydGllcyArIDEpKSkgeyAgICAg IFwKLSsgICAgICAgICAgICBnX3dhcm5pbmcgKCJhbGxvY2F0aW9uIGVycm9yIGluICVzIiwgR19T VFJGVU5DKTsgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgdmFfZW5kICh2YXJfYXJn cyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAg ICAgICAgICAgIGdfZnJlZSAobmFtZXMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDw9IG5fcHJv cGVydGllczsgaSsrKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAg ICAgICAgIGdfdmFsdWVfdW5zZXQgKCZ2YWx1ZXNbaV0pOyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAotKyAgICAgICAgICAgIGdfZnJlZSAodmFsdWVzKTsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICByZXR1 cm4gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcCi0rICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgbmFtZXMgPSBuYW1lc190 bXA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK LSsgICAgICAgIG5hbWVzW25fcHJvcGVydGllc10gPSBwcm9wOyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICBpZiAoISh2YWx1ZXNfdG1wID0gZ19y ZW5ldyAoR1ZhbHVlLCB2YWx1ZXMsIG5fcHJvcGVydGllcyArIDEpKSkgeyAgICAgXAotKyAgICAg ICAgICAgIGdfd2FybmluZyAoImFsbG9jYXRpb24gZXJyb3IgaW4gJXMiLCBHX1NUUkZVTkMpOyAg ICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICB2YV9lbmQgKHZhcl9hcmdzKTsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAg Z19mcmVlIChuYW1lcyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAotKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuX3Byb3BlcnRpZXM7IGkr KykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgICAgICBnX3Zh bHVlX3Vuc2V0ICgmdmFsdWVzW2ldKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKLSsgICAgICAgICAgICBnX2ZyZWUgKHZhbHVlcyk7ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgcmV0dXJuIE5VTEw7ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAg ICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgIHZhbHVlcyA9IHZhbHVlc190bXA7ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICBt ZW1zZXQgKCZ2YWx1ZXNbbl9wcm9wZXJ0aWVzXSwgMCwgc2l6ZW9mIChHVmFsdWUpKTsgICAgICAg ICAgICAgICAgICAgXAotKyAgICAgICAgZ192YWx1ZV9pbml0ICgmdmFsdWVzW25fcHJvcGVydGll c10sIChndHlwZSkpOyAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgIGdfdmFsdWVf c2V0XyMjIGN0eXBlICgmdmFsdWVzW25fcHJvcGVydGllc10sICAgICAgICAgICAgICAgICAgICAg ICAgICBcCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFfYXJnICh2YXJfYXJncywg ZyAjIyBjdHlwZSkpOyAgICAgICAgICAgICAgICAgXAotKyAgICB9Ci0rCi0rICAgIHZhX3N0YXJ0 ICh2YXJfYXJncywgZGVzY3JpcHRpb24pOwotKyAgICB3aGlsZSAoKHByb3AgPSAgdmFfYXJnICh2 YXJfYXJncywgZ2NoYXIgKikpKSB7Ci0rICAgICAgICBJRl9QUk9QRVJUWV9JU19NQVRDSEVEICh0 aW1lb3V0LCBHX1RZUEVfSU5ULCBpbnQpCi0rICAgICAgICBlbHNlIElGX1BST1BFUlRZX0lTX01B VENIRUQgKHByb2dyZXNzLCBHX1RZUEVfSU5ULCBpbnQpCi0rICAgICAgICBlbHNlIElGX1BST1BF UlRZX0lTX01BVENIRUQgKHNlcmlhbCwgR19UWVBFX1VJTlQsIHVpbnQpCi0rICAgICAgICBlbHNl IHsKLSsgICAgICAgICAgICBnX3dhcm5pbmcgKCJ3cm9uZyBwYXJhbWV0ZXIgJXMgaW4gJXMiLCBw cm9wLCBHX1NUUkZVTkMpOwotKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuX3Byb3BlcnRp ZXM7IGkrKykKLSsgICAgICAgICAgICAgICAgZ192YWx1ZV91bnNldCAoJnZhbHVlc1tpXSk7Ci0r ICAgICAgICAgICAgZ19mcmVlICh2YWx1ZXMpOwotKyAgICAgICAgICAgIGdfZnJlZSAobmFtZXMp OwotKyAgICAgICAgICAgIHZhX2VuZCAodmFyX2FyZ3MpOwotKyAgICAgICAgICAgIHJldHVybiBO VUxMOwotKyAgICAgICAgfQotKyAgICAgICAgbl9wcm9wZXJ0aWVzKys7Ci0rICAgIH0KLSsgICAg dmFfZW5kICh2YXJfYXJncyk7Ci0rCi0rI3VuZGVmIElGX1BST1BFUlRZX0lTX01BVENIRUQKLSsK LSsgICAgbXNnID0gKElCdXNNZXNzYWdlICopZ19vYmplY3RfbmV3X3dpdGhfcHJvcGVydGllcyAo SUJVU19UWVBFX01FU1NBR0UsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG5fcHJvcGVydGllcywKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0IGdjaGFyICoqKW5hbWVzLAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo Y29uc3QgR1ZhbHVlKil2YWx1ZXMpOwotKwotKwotKyAgICBmb3IgKGkgPSAwOyBpIDwgbl9wcm9w ZXJ0aWVzOyBpKyspCi0rICAgICAgICBnX3ZhbHVlX3Vuc2V0ICgmdmFsdWVzW2ldKTsKLSsgICAg Z19mcmVlICh2YWx1ZXMpOwotKyAgICBnX2ZyZWUgKG5hbWVzKTsKLSsgICAgaWYgKCFJQlVTX0lT X01FU1NBR0UgKG1zZykpIHsKLSsgICAgICAgIGdfd2FybmluZyAoIm1zZyBpcyBub3QgSUJ1c01l c3NhZ2UgaW4gJXMiLCBHX1NUUkZVTkMpOwotKyAgICAgICAgcmV0dXJuIE5VTEw7Ci0rICAgIH0K LSsgICAgcHJpdiA9IElCVVNfTUVTU0FHRV9HRVRfUFJJVkFURSAobXNnKTsKLSsgICAgLyogbmFt ZSBpcyByZXF1aXJlZC4gT3RoZXIgcHJvcGVydGllcyBhcmUgc2V0IGluIGNsYXNzX2luaXQgYnkg ZGVmYXVsdC4gKi8KLSsgICAgZ19hc3NlcnQgKHByaXYtPmRvbWFpbiA+IDAgJiYgcHJpdi0+ZG9t YWluIDw9IEdfTUFYVUlOVDgpOwotKyAgICBnX2Fzc2VydCAocHJpdi0+Y29kZSA8PSBHX01BWFVJ TlQ4KTsKLSsgICAgZ19hc3NlcnQgKHByaXYtPmRlc2NyaXB0aW9uKTsKLSsgICAgZ19hc3NlcnQg KCoocHJpdi0+ZGVzY3JpcHRpb24pICE9ICdcMCcpOwotKwotKyAgICByZXR1cm4gbXNnOwotK30K LWRpZmYgLS1naXQgYS9zcmMvaWJ1c21lc3NhZ2UuaCBiL3NyYy9pYnVzbWVzc2FnZS5oCi1uZXcg ZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAuLjBhYjU4YjgwCi0tLS0gL2Rldi9udWxs Ci0rKysgYi9zcmMvaWJ1c21lc3NhZ2UuaAotQEAgLTAsMCArMSwyMDUgQEAKLSsvKiAtKi0gbW9k ZTogQzsgYy1iYXNpYy1vZmZzZXQ6IDQ7IGluZGVudC10YWJzLW1vZGU6IG5pbDsgLSotICovCi0r LyogdmltOnNldCBldCBzdHM9NDogKi8KLSsvKiBidXMgLSBUaGUgSW5wdXQgQnVzCi0rICogQ29w eXJpZ2h0IChDKSAyMDI1IFRha2FvIEZ1aml3YXJhIDx0YWthby5mdWppd2FyYTFAZ21haWwuY29t PgotKyAqIENvcHlyaWdodCAoQykgMjAyNSBSZWQgSGF0LCBJbmMuCi0rICoKLSsgKiBUaGlzIGxp YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0r ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1 YmxpYwotKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb247IGVpdGhlcgotKyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91 ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyAqCi0rICogVGhpcyBsaWJyYXJ5IGlzIGRp c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICogYnV0IFdJ VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK LSsgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlIEdOVQotKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl IGRldGFpbHMuCi0rICoKLSsgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0rICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMg bGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyAqIEZvdW5kYXRp b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAy MTEwLTEzMDEKLSsgKiBVU0EKLSsgKi8KLSsKLSsjaWYgIWRlZmluZWQgKF9fSUJVU19IX0lOU0lE RV9fKSAmJiAhZGVmaW5lZCAoSUJVU19DT01QSUxBVElPTikKLSsjZXJyb3IgIk9ubHkgPGlidXMu aD4gY2FuIGJlIGluY2x1ZGVkIGRpcmVjdGx5IgotKyNlbmRpZgotKwotKyNpZm5kZWYgX19JQlVT X01FU1NBR0VfSF8KLSsjZGVmaW5lIF9fSUJVU19NRVNTQUdFX0hfCi0rCi0rLyoqCi0rICogU0VD VElPTjogaWJ1c21lc3NhZ2UKLSsgKiBAc2hvcnRfZGVzY3JpcHRpb246IE1lc3NhZ2UgZGF0YSB3 aGljaCBpcyBmb3J3YXJkZWQgdG8gSUJ1cyBQYW5lbC4KLSsgKiBAdGl0bGU6IElCdXNNZXNzYWdl Ci0rICogQHN0YWJpbGl0eTogVW5zdGFibGUKLSsgKgotKyAqIEFuIElCdXNNZXNzYWdlIHN0b3Jl cyB0aGUgbWVzc2FnZSB0eXBlLCBkZXNjcmlwdGlvbiwgdGltZW91dC4gCi0rICogVGhlIG1lc3Nh Z2UgZGF0YSBjYW4gZ2VuZXJhdGVkIGJ5IGlidXNfbWVzc2FnZV9uZXcoKSwKLSsgKgotKyAqIHNl ZV9hbHNvOiAjSUJ1c0VuZ2luZSwgI0lCdVBhbmVscwotKyAqCi0rICovCi0rCi0rI2luY2x1ZGUg ImlidXNzZXJpYWxpemFibGUuaCIKLSsKLSsvKgotKyAqIFR5cGUgbWFjcm9zLgotKyAqLwotKwot Ky8qIGRlZmluZSBHT0JKRUNUIG1hY3JvcyAqLwotKyNkZWZpbmUgSUJVU19UWVBFX01FU1NBR0Ug ICAgICAgICAgICAgICAgIFwKLSsgICAgKGlidXNfbWVzc2FnZV9nZXRfdHlwZSAoKSkKLSsjZGVm aW5lIElCVVNfTUVTU0FHRShvYmopICAgICAgICAgICAgICAgICBcCi0rICAgIChHX1RZUEVfQ0hF Q0tfSU5TVEFOQ0VfQ0FTVCAoKG9iaiksIElCVVNfVFlQRV9NRVNTQUdFLCBJQnVzTWVzc2FnZSkp Ci0rI2RlZmluZSBJQlVTX01FU1NBR0VfQ0xBU1Moa2xhc3MpICAgICAgICAgXAotKyAgICAoR19U WVBFX0NIRUNLX0NMQVNTX0NBU1QgKChrbGFzcyksIElCVVNfVFlQRV9NRVNTQUdFLCBJQnVzTWVz c2FnZUNsYXNzKSkKLSsjZGVmaW5lIElCVVNfSVNfTUVTU0FHRShvYmopICAgICAgICAgICAgICBc Ci0rICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSAoKG9iaiksIElCVVNfVFlQRV9NRVNT QUdFKSkKLSsjZGVmaW5lIElCVVNfSVNfTUVTU0FHRV9DTEFTUyhrbGFzcykgICAgICBcCi0rICAg IChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSAoKGtsYXNzKSwgSUJVU19UWVBFX01FU1NBR0UpKQot KyNkZWZpbmUgSUJVU19NRVNTQUdFX0dFVF9DTEFTUyhvYmopICAgICAgIFwKLSsgICAgKEdfVFlQ RV9JTlNUQU5DRV9HRVRfQ0xBU1MgKChvYmopLCBJQlVTX1RZUEVfTUVTU0FHRSwgSUJ1c01lc3Nh Z2VDbGFzcykpCi0rCi0rR19CRUdJTl9ERUNMUwotKwotK3R5cGVkZWYgc3RydWN0IF9JQnVzTWVz c2FnZSBJQnVzTWVzc2FnZTsKLSt0eXBlZGVmIHN0cnVjdCBfSUJ1c01lc3NhZ2VQcml2YXRlIElC dXNNZXNzYWdlUHJpdmF0ZTsKLSt0eXBlZGVmIHN0cnVjdCBfSUJ1c01lc3NhZ2VDbGFzcyBJQnVz TWVzc2FnZUNsYXNzOwotKwotKy8qKgotKyAqIElCdXNNZXNzYWdlOgotKyAqCi0rICogTWVzc2Fn ZSBkYXRhIHdoaWNoIGlzIGZvcndhcmRlZCB0byBJQnVzIFBhbmVsLgotKyAqIFlvdSBjYW4gZ2V0 IHZhbHVlcyB3aXRoIGdfb2JqZWN0X2dldF9wcm9wZXJ0aWVzLgotKyAqCi0rICogU2luY2U6IDEu NS4zMwotKyAqLwotK3N0cnVjdCBfSUJ1c01lc3NhZ2UgewotKyAgICBJQnVzU2VyaWFsaXphYmxl IHBhcmVudDsKLSsgICAgLyogaW5zdGFuY2UgbWVtYmVycyAqLwotKwotKyAgICAvKjwgcHVibGlj ID4qLwotKyAgICAvKjwgcHJpdmF0ZSA+Ki8KLSsgICAgSUJ1c01lc3NhZ2VQcml2YXRlICpwcml2 OwotK307Ci0rCi0rc3RydWN0IF9JQnVzTWVzc2FnZUNsYXNzIHsKLSsgICAgSUJ1c1NlcmlhbGl6 YWJsZUNsYXNzIHBhcmVudDsKLSsgICAgLyogY2xhc3MgbWVtYmVycyAqLwotKwotKyAgICAvKjwg cHJpdmF0ZSA+Ki8KLSsgICAgLyogcGFkZGluZyAqLwotKyAgICBncG9pbnRlciBwZHVtbXlbNV07 ICAvLyBXZSBjYW4gYWRkIDUgcG9pbnRlcnMgd2l0aG91dCBicmVha2luZyB0aGUgQUJJLgotK307 Ci0rCi0rR1R5cGUgICAgICAgICAgICBpYnVzX21lc3NhZ2VfZ2V0X3R5cGUgICAgICAgICAgKHZv aWQpOwotKwotKy8qKgotKyAqIGlidXNfbWVzc2FnZV9uZXc6Ci0rICogQGRvbWFpbjogdGhlIG1l c3NhZ2UgZG9tYWluIHdpdGggQElCdXNNZXNzYWdlRG9tYWluIGxpa2VzICNHRXJyb3IuCi0rICog QGNvZGU6IHRoZSBtZXNzYWdlIGNvZGUgd2l0aCBASUJ1c1BhbmVsU2VydmljZU1zZ0NvZGUgbGlr ZXMgI0dFcnJvci4KLSsgKiBAdGl0bGU6IHRoZSBtZXNzYWdlIHRpdGxlLgotKyAqIEBkZXNjcmlw dGlvbjogdGhlIG1lc3NhZ2UgZGVzY3JpcHRpb24uCi0rICogQC4uLjogdGhlIE5VTEwtdGVybWlu YXRlZCBhcmd1bWVudHMgb2YgdGhlIHByb3BlcnRpZXMgYW5kIHZhbHVlcy4KLSsgKgotKyAqIENy ZWF0ZXMgYSBuZXcgI0lCdXNNZXNzYWdlLgotKyAqIFlvdSBjYW4gZ2l2ZSBhZGRpdGlvbmFsIHBh cmFtZXRlcnMgdG8gdGhlIEFQSS4gRS5nLgotKyAqIGlidXNfbWVzc2FnZV9uZXcoSUJVU19NRVNT QUdFX0RPTUFJTl9QQU5FTCwKLSsgKiBJQlVTX1BBTkVMX1NFUlZJQ0VfTVNHX0NPREVfTE9BRElO R19VTklDT0RFLCAiSUJ1cyBFbW9qaSB1dGlsaXR5IiwKLSsgKiAiTG9hZGluZyBhIFVuaWNvZGUg ZGljdGlvbmFyeSIsICJ0aW1lb3V0IiwgMTAsICJwcm9ncmVzcyIsIDMwLCBOVUxMKQotKyAqCi0r ICogUmV0dXJuczogQSBuZXdseSBhbGxvY2F0ZWQgSUJ1c01lc3NhZ2UuCi0rICoKLSsgKiBTaW5j ZTogMS41LjMzCi0rICovCi0rSUJ1c01lc3NhZ2UgICAgICppYnVzX21lc3NhZ2VfbmV3ICAgICAg ICAgICAgICAgKGd1aW50ICAgICAgICAgICBkb21haW4sCi0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50ICAgICAgICAgICBjb2RlLAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAg ICAqdGl0bGUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IGdjaGFyICAgICpkZXNjcmlwdGlvbiwKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKSBHX0dOVUNfTlVMTF9URVJNSU5BVEVEOwot KwotKy8qKgotKyAqIGlidXNfbWVzc2FnZV9nZXRfZG9tYWluOgotKyAqIEBtc2c6IEFuICNJQnVz TWVzc2FnZS4KLSsgKgotKyAqIEdldHMgdGhlIGRvbWFpbiBwcm9wZXJ0eSBpbiAjSUJ1c01lc3Nh Z2UuCi0rICoKLSsgKiBSZXR1cm5zOiBkb21haW4gcHJvcGVydHkgaW4gI0lCdXNNZXNzYWdlCi0r ICoKLSsgKiBTaW5jZTogMS41LjMzCi0rICovCi0rZ3VpbnQgICAgICAgICAgICBpYnVzX21lc3Nh Z2VfZ2V0X2RvbWFpbiAgICAgICAgKElCdXNNZXNzYWdlICAqbXNnKTsKLSsKLSsvKioKLSsgKiBp YnVzX21lc3NhZ2VfZ2V0X2NvZGU6Ci0rICogQG1zZzogQW4gI0lCdXNNZXNzYWdlLgotKyAqCi0r ICogR2V0cyB0aGUgY29kZSBwcm9wZXJ0eSBpbiAjSUJ1c01lc3NhZ2UuCi0rICoKLSsgKiBSZXR1 cm5zOiBjb2RlIHByb3BlcnR5IGluICNJQnVzTWVzc2FnZQotKyAqCi0rICogU2luY2U6IDEuNS4z MwotKyAqLwotK2d1aW50ICAgICAgICAgICAgaWJ1c19tZXNzYWdlX2dldF9jb2RlICAgICAgICAg IChJQnVzTWVzc2FnZSAgKm1zZyk7Ci0rCi0rLyoqCi0rICogaWJ1c19tZXNzYWdlX2dldF90aXRs ZToKLSsgKiBAbXNnOiBBbiAjSUJ1TWVzc2FnZXMuCi0rICoKLSsgKiBHZXRzIHRoZSB0aXRsZSBw cm9wZXJ0eSBpbiAjSUJ1c01lc3NhZ2UuIEl0IHNob3VsZCBub3QgYmUgZnJlZWQuCi0rICoKLSsg KiBSZXR1cm5zOiB0aXRsZSBwcm9wZXJ0eSBpbiAjSUJ1YU1lc3NhZ2UKLSsgKgotKyAqIFNpbmNl OiAxLjUuMzMKLSsgKi8KLStjb25zdCBnY2hhciAgICAgKmlidXNfbWVzc2FnZV9nZXRfdGl0bGUg ICAgICAgICAoSUJ1c01lc3NhZ2UgICptc2cpOwotKwotKy8qKgotKyAqIGlidXNfbWVzc2FnZV9n ZXRfZGVzY3JpcHRpb246Ci0rICogQG1zZzogQW4gI0lCdU1lc3NhZ2VzLgotKyAqCi0rICogR2V0 cyB0aGUgZGVzY3JpcHRpb24gcHJvcGVydHkgaW4gI0lCdXNNZXNzYWdlLiBJdCBzaG91bGQgbm90 IGJlIGZyZWVkLgotKyAqCi0rICogUmV0dXJuczogZGVzY3JpcHRpb24gcHJvcGVydHkgaW4gI0lC dWFNZXNzYWdlCi0rICoKLSsgKiBTaW5jZTogMS41LjMzCi0rICovCi0rY29uc3QgZ2NoYXIgICAg ICppYnVzX21lc3NhZ2VfZ2V0X2Rlc2NyaXB0aW9uICAgKElCdXNNZXNzYWdlICAqbXNnKTsKLSsK LSsvKioKLSsgKiBpYnVzX21lc3NhZ2VfZ2V0X3RpbWVvdXQ6Ci0rICogQG1zZzogQW4gI0lCdXNN ZXNzYWdlLgotKyAqCi0rICogR2V0cyB0aGUgdGltZW91dCBwcm9wZXJ0eSBpbiAjSUJ1c01lc3Nh Z2UuCi0rICoKLSsgKiBSZXR1cm5zOiB0aW1lb3V0IHByb3BlcnR5IGluICNJQnVzTWVzc2FnZQot KyAqCi0rICogU2luY2U6IDEuNS4zMwotKyAqLwotK2ludCAgICAgICAgICAgICAgaWJ1c19tZXNz YWdlX2dldF90aW1lb3V0ICAgICAgIChJQnVzTWVzc2FnZSAgKm1zZyk7Ci0rCi0rLyoqCi0rICog aWJ1c19tZXNzYWdlX2dldF9wcm9ncmVzczoKLSsgKiBAbXNnOiBBbiAjSUJ1c01lc3NhZ2UuCi0r ICoKLSsgKiBHZXRzIHRoZSBwcm9ncmVzcyBwcm9wZXJ0eSBpbiAjSUJ1c01lc3NhZ2UuCi0rICoK LSsgKiBSZXR1cm5zOiBwcm9ncmVzcyBwcm9wZXJ0eSBpbiAjSUJ1c01lc3NhZ2UKLSsgKgotKyAq IFNpbmNlOiAxLjUuMzMKLSsgKi8KLStpbnQgICAgICAgICAgICAgIGlidXNfbWVzc2FnZV9nZXRf cHJvZ3Jlc3MgICAgICAoSUJ1c01lc3NhZ2UgICptc2cpOwotKwotKy8qKgotKyAqIGlidXNfbWVz c2FnZV9nZXRfc2VyaWFsOgotKyAqIEBtc2c6IEFuICNJQnVzTWVzc2FnZS4KLSsgKgotKyAqIEdl dHMgdGhlIHNlcmlhbCBwcm9wZXJ0eSBpbiAjSUJ1c01lc3NhZ2UuCi0rICoKLSsgKiBSZXR1cm5z OiBzZXJpYWwgcHJvcGVydHkgaW4gI0lCdXNNZXNzYWdlCi0rICoKLSsgKiBTaW5jZTogMS41LjMz Ci0rICovCi0rZ3VpbnQgICAgICAgICAgICBpYnVzX21lc3NhZ2VfZ2V0X3NlcmlhbCAgICAgICAg KElCdXNNZXNzYWdlICAqbXNnKTsKLStHX0VORF9ERUNMUwotKyNlbmRpZgotZGlmZiAtLWdpdCBh L3NyYy9pYnVzcGFuZWxzZXJ2aWNlLmMgYi9zcmMvaWJ1c3BhbmVsc2VydmljZS5jCi1pbmRleCA4 MDYzN2NhMi4uOWUzOTM5ZDAgMTAwNjQ0Ci0tLS0gYS9zcmMvaWJ1c3BhbmVsc2VydmljZS5jCi0r KysgYi9zcmMvaWJ1c3BhbmVsc2VydmljZS5jCi1AQCAtMyw3ICszLDcgQEAKLSAvKiBpYnVzIC0g VGhlIElucHV0IEJ1cwotICAqIENvcHlyaWdodCAoYykgMjAwOS0yMDE0IEdvb2dsZSBJbmMuIEFs bCByaWdodHMgcmVzZXJ2ZWQuCi0gICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTQgUGVuZyBIdWFu ZyA8c2hhd24ucC5odWFuZ0BnbWFpbC5jb20+Ci0tICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjQg VGFrYW8gRnVqaXdhcmEgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+Ci0rICogQ29weXJpZ2h0 IChDKSAyMDE3LTIwMjUgVGFrYW8gRnVqaXdhcmEgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+ Ci0gICoKLSAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yCi0gICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IExlc3NlciBHZW5lcmFsIFB1YmxpYwotQEAgLTYwLDYgKzYwLDcgQEAgZW51bSB7Ci0gICAgIFBS T0NFU1NfS0VZX0VWRU5ULAotICAgICBDT01NSVRfVEVYVF9SRUNFSVZFRCwKLSAgICAgQ0FORElE QVRFX0NMSUNLRURfTE9PS1VQX1RBQkxFLAotKyAgICBTRU5EX01FU1NBR0VfUkVDRUlWRUQsCi0g ICAgIExBU1RfU0lHTkFMLAotIH07Ci0gCi1AQCAtMjQwLDYgKzI0MSwxMyBAQCBzdGF0aWMgY29u c3QgZ2NoYXIgaW50cm9zcGVjdGlvbl94bWxbXSA9Ci0gICAgICIgICAgPG1ldGhvZCBuYW1lPSdD b21taXRUZXh0UmVjZWl2ZWQnPiIKLSAgICAgIiAgICAgIDxhcmcgZGlyZWN0aW9uPSdpbicgdHlw ZT0ndicgbmFtZT0ndGV4dCcgLz4iCi0gICAgICIgICAgPC9tZXRob2Q+IgotKyAgICAiICAgIDxt ZXRob2QgbmFtZT0nU2VuZE1lc3NhZ2VSZWNlaXZlZCc+IgotKyAgICAiICAgICAgPGFyZyBkaXJl Y3Rpb249J2luJyB0eXBlPSd2JyBuYW1lPSdtZXNzYWdlJyAvPiIKLSsgICAgIiAgICAgIDxhbm5v dGF0aW9uIG5hbWU9J29yZy5ndGsuR0RCdXMuU2luY2UnXG4iCi0rICAgICIgICAgICAgICAgdmFs dWU9JzEuNS4zMycgLz5cbiIKLSsgICAgIiAgICAgIDxhbm5vdGF0aW9uIG5hbWU9J29yZy5ndGsu R0RCdXMuRG9jU3RyaW5nJ1xuIgotKyAgICAiICAgICAgICAgIHZhbHVlPSdTdGFiaWxpdHk6IFVu c3RhYmxlJyAvPlxuIgotKyAgICAiICAgIDwvbWV0aG9kPiIKLSAgICAgLyogU2lnbmFscyAqLwot ICAgICAiICAgIDxzaWduYWwgbmFtZT0nQ3Vyc29yVXAnIC8+IgotICAgICAiICAgIDxzaWduYWwg bmFtZT0nQ3Vyc29yRG93bicgLz4iCi1AQCAtMjY2LDkgKzI3NCw5IEBAIHN0YXRpYyBjb25zdCBn Y2hhciBpbnRyb3NwZWN0aW9uX3htbFtdID0KLSAgICAgIiAgICA8c2lnbmFsIG5hbWU9J1BhbmVs RXh0ZW5zaW9uJz4iCi0gICAgICIgICAgICA8YXJnIHR5cGU9J3YnIG5hbWU9J2V2ZW50JyAvPiIK LSAgICAgIiAgICA8L3NpZ25hbD4iCi0tICAgICIgICAgPG1ldGhvZCBuYW1lPSdQYW5lbEV4dGVu c2lvblJlZ2lzdGVyS2V5cyc+IgotKyAgICAiICAgIDxzaWduYWwgbmFtZT0nUGFuZWxFeHRlbnNp b25SZWdpc3RlcktleXMnPiIKLSAgICAgIiAgICAgIDxhcmcgdHlwZT0ndicgbmFtZT0nZGF0YScg Lz4iCi0tICAgICIgICAgPC9tZXRob2Q+IgotKyAgICAiICAgIDwvc2lnbmFsPiIKLSAgICAgIiAg ICA8c2lnbmFsIG5hbWU9J1VwZGF0ZVByZWVkaXRUZXh0UmVjZWl2ZWQnPiIKLSAgICAgIiAgICAg IDxhcmcgdHlwZT0ndicgbmFtZT0ndGV4dCcgLz4iCi0gICAgICIgICAgICA8YXJnIHR5cGU9J3Un IG5hbWU9J2N1cnNvcl9wb3MnIC8+IgotQEAgLTI4Niw2ICsyOTQsMTcgQEAgc3RhdGljIGNvbnN0 IGdjaGFyIGludHJvc3BlY3Rpb25feG1sW10gPQotICAgICAiICAgICAgPGFyZyB0eXBlPSd1JyBu YW1lPSdrZXl2YWwnIC8+IgotICAgICAiICAgICAgPGFyZyB0eXBlPSd1JyBuYW1lPSdrZXljb2Rl JyAvPiIKLSAgICAgIiAgICAgIDxhcmcgdHlwZT0ndScgbmFtZT0nc3RhdGUnIC8+IgotKyAgICAi ICAgICAgPGFubm90YXRpb24gbmFtZT0nb3JnLmd0ay5HREJ1cy5TaW5jZSdcbiIKLSsgICAgIiAg ICAgICAgICB2YWx1ZT0nMS41LjMyJyAvPlxuIgotKyAgICAiICAgICAgPGFubm90YXRpb24gbmFt ZT0nb3JnLmd0ay5HREJ1cy5Eb2NTdHJpbmcnXG4iCi0rICAgICIgICAgICAgICAgdmFsdWU9J1N0 YWJpbGl0eTogVW5zdGFibGUnIC8+XG4iCi0rICAgICIgICAgPC9zaWduYWw+IgotKyAgICAiICAg IDxzaWduYWwgbmFtZT0nU2VuZE1lc3NhZ2UnPiIKLSsgICAgIiAgICAgIDxhcmcgdHlwZT0ndicg bmFtZT0nbWVzc2FnZScgLz4iCi0rICAgICIgICAgICA8YW5ub3RhdGlvbiBuYW1lPSdvcmcuZ3Rr LkdEQnVzLlNpbmNlJ1xuIgotKyAgICAiICAgICAgICAgIHZhbHVlPScxLjUuMzMnIC8+XG4iCi0r ICAgICIgICAgICA8YW5ub3RhdGlvbiBuYW1lPSdvcmcuZ3RrLkdEQnVzLkRvY1N0cmluZydcbiIK LSsgICAgIiAgICAgICAgICB2YWx1ZT0nU3RhYmlsaXR5OiBVbnN0YWJsZScgLz5cbiIKLSAgICAg IiAgICA8L3NpZ25hbD4iCi0gICAgICIgIDwvaW50ZXJmYWNlPiIKLSAgICAgIjwvbm9kZT4iOwot QEAgLTEwMDYsNyArMTAyNSw3IEBAIGlidXNfcGFuZWxfc2VydmljZV9jbGFzc19pbml0IChJQnVz UGFuZWxTZXJ2aWNlQ2xhc3MgKmNsYXNzKQotICAgICAvKioKLSAgICAgICogSUJ1c1BhbmVsU2Vy dmljZTo6Y29tbWl0LXRleHQtcmVjZWl2ZWQ6Ci0gICAgICAqIEBwYW5lbDogQW4gI0lCdXNQYW5l bFNlcnZpY2UKLS0gICAgICogQHRleHQ6IEEgI0lCdXNUZXh0Ci0rICAgICAqIEB0ZXh0OiBBbiAj SUJ1c1RleHQKLSAgICAgICoKLSAgICAgICogRW1pdHRlZCB3aGVuIHRoZSBjbGllbnQgYXBwbGlj YXRpb24gZ2V0IHRoZSA6OmNvbW1pdC10ZXh0LXJlY2VpdmVkLgotICAgICAgKiBJbXBsZW1lbnQg dGhlIG1lbWJlciBmdW5jdGlvbgotQEAgLTEwMjcsNiArMTA0NiwyMCBAQCBpYnVzX3BhbmVsX3Nl cnZpY2VfY2xhc3NfaW5pdCAoSUJ1c1BhbmVsU2VydmljZUNsYXNzICpjbGFzcykKLSAgICAgICAg ICAgICAxLAotICAgICAgICAgICAgIElCVVNfVFlQRV9URVhUKTsKLSAKLSsgICAgLyoqCi0rICAg ICAqIElCdXNQYW5lbFNlcnZpY2U6OmNhbmRpZGF0ZS1jbGlja2VkLWxvb2t1cC10YWJsZToKLSsg ICAgICogQHBhbmVsOiBBbiAjSUJ1c1BhbmVsU2VydmljZQotKyAgICAgKiBAdGV4dDogQW4gI0lC dXNUZXh0Ci0rICAgICAqCi0rICAgICAqIEVtaXR0ZWQgd2hlbiB0aGUgY2xpZW50IGFwcGxpY2F0 aW9uIGdldCB0aGUKLSsgICAgICogOjpjYW5kaWRhdGUtY2xpY2tlZC1sb29rdXAtdGFibGUuCi0r ICAgICAqIEltcGxlbWVudCB0aGUgbWVtYmVyIGZ1bmN0aW9uCi0rICAgICAqIElCdXNQYW5lbFNl cnZpY2VDbGFzczo6Y2FuZGlkYXRlX2NsbGlja2VkX2xvb2t1cF90YWJsZSBpbiBleHRlbmRlZCBj bGFzcwotKyAgICAgKiB0byByZWNlaXZlIHRoaXMgc2lnbmFsLgotKyAgICAgKgotKyAgICAgKiA8 bm90ZT48cGFyYT5Bcmd1bWVudCBAdXNlcl9kYXRhIGlzIGlnbm9yZWQgaW4gdGhpcyBmdW5jdGlv bi48L3BhcmE+Ci0rICAgICAqIDwvbm90ZT4KLSsgICAgICovCi0gICAgIHBhbmVsX3NpZ25hbHNb Q0FORElEQVRFX0NMSUNLRURfTE9PS1VQX1RBQkxFXSA9Ci0gICAgICAgICBnX3NpZ25hbF9uZXcg KElfKCJjYW5kaWRhdGUtY2xpY2tlZC1sb29rdXAtdGFibGUiKSwKLSAgICAgICAgICAgICBHX1RZ UEVfRlJPTV9DTEFTUyAoZ29iamVjdF9jbGFzcyksCi1AQCAtMTA0MCw2ICsxMDczLDMxIEBAIGli dXNfcGFuZWxfc2VydmljZV9jbGFzc19pbml0IChJQnVzUGFuZWxTZXJ2aWNlQ2xhc3MgKmNsYXNz KQotICAgICAgICAgICAgIEdfVFlQRV9VSU5ULAotICAgICAgICAgICAgIEdfVFlQRV9VSU5ULAot ICAgICAgICAgICAgIEdfVFlQRV9VSU5UKTsKLSsKLSsgICAgLyoqCi0rICAgICAqIElCdXNQYW5l bFNlcnZpY2U6OnNlbmQtbWVzc2FnZS1yZWNlaXZlZDoKLSsgICAgICogQHBhbmVsOiBBbiAjSUJ1 c1BhbmVsU2VydmljZQotKyAgICAgKiBAbWVzc2FnZTogQW4gI0lCdXNNZXNzYWdlCi0rICAgICAq Ci0rICAgICAqIEVtaXR0ZWQgd2hlbiB0aGUgY2xpZW50IGFwcGxpY2F0aW9uIGdldCB0aGUgOjpz ZW5kLW1lZWVhZ2UtcmVjZWl2ZWQuCi0rICAgICAqIEltcGxlbWVudCB0aGUgbWVtYmVyIGZ1bmN0 aW9uCi0rICAgICAqCi0rICAgICAqIDxub3RlPjxwYXJhPkFyZ3VtZW50IEB1c2VyX2RhdGEgaXMg aWdub3JlZCBpbiB0aGlzIGZ1bmN0aW9uLjwvcGFyYT4KLSsgICAgICogPC9ub3RlPgotKyAgICAg KgotKyAgICAgKiBTaW5jZTogMS41LjMzCi0rICAgICAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSsg ICAgICovCi0rICAgIHBhbmVsX3NpZ25hbHNbU0VORF9NRVNTQUdFX1JFQ0VJVkVEXSA9Ci0rICAg ICAgICBnX3NpZ25hbF9uZXcgKElfKCJzZW5kLW1lc3NhZ2UtcmVjZWl2ZWQiKSwKLSsgICAgICAg ICAgICBHX1RZUEVfRlJPTV9DTEFTUyAoZ29iamVjdF9jbGFzcyksCi0rICAgICAgICAgICAgR19T SUdOQUxfUlVOX0xBU1QsCi0rICAgICAgICAgICAgMCwKLSsgICAgICAgICAgICBOVUxMLCBOVUxM LAotKyAgICAgICAgICAgIF9pYnVzX21hcnNoYWxfVk9JRF9fT0JKRUNULAotKyAgICAgICAgICAg IEdfVFlQRV9OT05FLAotKyAgICAgICAgICAgIDEsCi0rICAgICAgICAgICAgSUJVU19UWVBFX01F U1NBR0UpOwotIH0KLSAKLSBzdGF0aWMgdm9pZAotQEAgLTEzMTAsNiArMTM2OCwyNiBAQCBpYnVz X3BhbmVsX3NlcnZpY2Vfc2VydmljZV9tZXRob2RfY2FsbCAoSUJ1c1NlcnZpY2UgICAgICAgICAg ICpzZXJ2aWNlLAotICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXgsIGJ1dHRvbiwgc3RhdGUp OwotICAgICAgICAgcmV0dXJuOwotICAgICB9Ci0rICAgIGlmIChnX3N0cmNtcDAgKG1ldGhvZF9u YW1lLCAiU2VuZE1lc3NhZ2VSZWNlaXZlZCIpID09IDApIHsKLSsgICAgICAgIEdWYXJpYW50ICph cmcwID0gTlVMTDsKLSsgICAgICAgIElCdXNNZXNzYWdlICptZXNzYWdlID0gTlVMTDsKLSsgICAg ICAgIGdfdmFyaWFudF9nZXQgKHBhcmFtZXRlcnMsICIodikiLCAmYXJnMCk7Ci0rICAgICAgICBp ZiAoYXJnMCkgewotKyAgICAgICAgICAgIG1lc3NhZ2UgPSAoSUJ1c01lc3NhZ2UgKilpYnVzX3Nl cmlhbGl6YWJsZV9kZXNlcmlhbGl6ZSAoYXJnMCk7Ci0rICAgICAgICAgICAgZ192YXJpYW50X3Vu cmVmIChhcmcwKTsKLSsgICAgICAgIH0KLSsgICAgICAgIGlmICghbWVzc2FnZSkgewotKyAgICAg ICAgICAgIGdfZGJ1c19tZXRob2RfaW52b2NhdGlvbl9yZXR1cm5fZXJyb3IgKAotKyAgICAgICAg ICAgICAgICAgICAgaW52b2NhdGlvbiwKLSsgICAgICAgICAgICAgICAgICAgIEdfREJVU19FUlJP UiwKLSsgICAgICAgICAgICAgICAgICAgIEdfREJVU19FUlJPUl9GQUlMRUQsCi0rICAgICAgICAg ICAgICAgICAgICAiU2VuZE1lc3NhZ2VSZWNlaXZlZCBtZXRob2QgZ2l2ZXMgTlVMTCIpOwotKyAg ICAgICAgICAgIHJldHVybjsKLSsgICAgICAgIH0KLSsgICAgICAgIGdfc2lnbmFsX2VtaXQgKHBh bmVsLCBwYW5lbF9zaWduYWxzW1NFTkRfTUVTU0FHRV9SRUNFSVZFRF0sIDAsIG1lc3NhZ2UpOwot KyAgICAgICAgX2dfb2JqZWN0X3VucmVmX2lmX2Zsb2F0aW5nIChtZXNzYWdlKTsKLSsgICAgICAg IHJldHVybjsKLSsgICAgfQotIAotIAotICAgICBjb25zdCBzdGF0aWMgc3RydWN0IHsKLUBAIC0x NTEwLDcgKzE1ODgsNyBAQCBpYnVzX3BhbmVsX3NlcnZpY2VfY2FuZGlkYXRlX2NsaWNrZWQgKElC dXNQYW5lbFNlcnZpY2UgKnBhbmVsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZ3VpbnQgICAgICAgICAgICAgc3RhdGUpCi0gewotICAgICBnX3JldHVybl9pZl9mYWls IChJQlVTX0lTX1BBTkVMX1NFUlZJQ0UgKHBhbmVsKSk7Ci0tICAgIGlidXNfc2VydmljZV9lbWl0 X3NpZ25hbCAoKElCdXNTZXJ2aWNlICopIHBhbmVsLAotKyAgICBpYnVzX3NlcnZpY2VfZW1pdF9z aWduYWwgKChJQnVzU2VydmljZSAqKXBhbmVsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUJVU19JTlRFUkZBQ0Vf UEFORUwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNhbmRpZGF0ZUNsaWNrZWQi LAotQEAgLTE1MjQsNyArMTYwMiw3IEBAIGlidXNfcGFuZWxfc2VydmljZV9wcm9wZXJ0eV9hY3Rp dmF0ZSAoSUJ1c1BhbmVsU2VydmljZSAqcGFuZWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBndWludCAgICAgICAgICAgICBwcm9wX3N0YXRlKQotIHsKLSAgICAgZ19y ZXR1cm5faWZfZmFpbCAoSUJVU19JU19QQU5FTF9TRVJWSUNFIChwYW5lbCkpOwotLSAgICBpYnVz X3NlcnZpY2VfZW1pdF9zaWduYWwgKChJQnVzU2VydmljZSAqKSBwYW5lbCwKLSsgICAgaWJ1c19z ZXJ2aWNlX2VtaXRfc2lnbmFsICgoSUJ1c1NlcnZpY2UgKilwYW5lbCwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBOVUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElC VVNfSU5URVJGQUNFX1BBTkVMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQcm9w ZXJ0eUFjdGl2YXRlIiwKLUBAIC0xNTM3LDcgKzE2MTUsNyBAQCBpYnVzX3BhbmVsX3NlcnZpY2Vf cHJvcGVydHlfc2hvdyAoSUJ1c1BhbmVsU2VydmljZSAqcGFuZWwsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAgKnByb3BfbmFtZSkKLSB7Ci0gICAg IGdfcmV0dXJuX2lmX2ZhaWwgKElCVVNfSVNfUEFORUxfU0VSVklDRSAocGFuZWwpKTsKLS0gICAg aWJ1c19zZXJ2aWNlX2VtaXRfc2lnbmFsICgoSUJ1c1NlcnZpY2UgKikgcGFuZWwsCi0rICAgIGli dXNfc2VydmljZV9lbWl0X3NpZ25hbCAoKElCdXNTZXJ2aWNlICopcGFuZWwsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBJQlVTX0lOVEVSRkFDRV9QQU5FTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi UHJvcGVydHlTaG93IiwKLUBAIC0xNTUwLDcgKzE2MjgsNyBAQCBpYnVzX3BhbmVsX3NlcnZpY2Vf cHJvcGVydHlfaGlkZSAoSUJ1c1BhbmVsU2VydmljZSAqcGFuZWwsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAgKnByb3BfbmFtZSkKLSB7Ci0gICAg IGdfcmV0dXJuX2lmX2ZhaWwgKElCVVNfSVNfUEFORUxfU0VSVklDRSAocGFuZWwpKTsKLS0gICAg aWJ1c19zZXJ2aWNlX2VtaXRfc2lnbmFsICgoSUJ1c1NlcnZpY2UgKikgcGFuZWwsCi0rICAgIGli dXNfc2VydmljZV9lbWl0X3NpZ25hbCAoKElCdXNTZXJ2aWNlICopcGFuZWwsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBJQlVTX0lOVEVSRkFDRV9QQU5FTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi UHJvcGVydHlIaWRlIiwKLUBAIC0xNTY3LDcgKzE2NDUsNyBAQCBpYnVzX3BhbmVsX3NlcnZpY2Vf Y29tbWl0X3RleHQgKElCdXNQYW5lbFNlcnZpY2UgKnBhbmVsLAotICAgICBnX3JldHVybl9pZl9m YWlsIChJQlVTX0lTX1RFWFQgKHRleHQpKTsKLSAKLSAgICAgdmFyaWFudCA9IGlidXNfc2VyaWFs aXphYmxlX3NlcmlhbGl6ZSAoKElCdXNTZXJpYWxpemFibGUgKil0ZXh0KTsKLS0gICAgaWJ1c19z ZXJ2aWNlX2VtaXRfc2lnbmFsICgoSUJ1c1NlcnZpY2UgKikgcGFuZWwsCi0rICAgIGlidXNfc2Vy dmljZV9lbWl0X3NpZ25hbCAoKElCdXNTZXJ2aWNlICopcGFuZWwsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJQlVT X0lOVEVSRkFDRV9QQU5FTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29tbWl0 VGV4dCIsCi1AQCAtMTU4OCw3ICsxNjY2LDcgQEAgaWJ1c19wYW5lbF9zZXJ2aWNlX3BhbmVsX2V4 dGVuc2lvbiAoSUJ1c1BhbmVsU2VydmljZSAgICpwYW5lbCwKLSAgICAgZ19yZXR1cm5faWZfZmFp bCAoSUJVU19JU19FWFRFTlNJT05fRVZFTlQgKGV2ZW50KSk7Ci0gCi0gICAgIHZhcmlhbnQgPSBp YnVzX3NlcmlhbGl6YWJsZV9zZXJpYWxpemUgKChJQnVzU2VyaWFsaXphYmxlICopZXZlbnQpOwot LSAgICBpYnVzX3NlcnZpY2VfZW1pdF9zaWduYWwgKChJQnVzU2VydmljZSAqKSBwYW5lbCwKLSsg ICAgaWJ1c19zZXJ2aWNlX2VtaXRfc2lnbmFsICgoSUJ1c1NlcnZpY2UgKilwYW5lbCwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIElCVVNfSU5URVJGQUNFX1BBTkVMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICJQYW5lbEV4dGVuc2lvbiIsCi1AQCAtMTY2Miw3ICsxNzQwLDcgQEAgaWJ1c19wYW5lbF9z ZXJ2aWNlX3VwZGF0ZV9wcmVlZGl0X3RleHRfcmVjZWl2ZWQgKElCdXNQYW5lbFNlcnZpY2UgKnBh bmVsLAotIAotICAgICB2YXJpYW50ID0gaWJ1c19zZXJpYWxpemFibGVfc2VyaWFsaXplICgoSUJ1 c1NlcmlhbGl6YWJsZSAqKXRleHQpOwotICAgICBnX3JldHVybl9pZl9mYWlsICh2YXJpYW50KTsK LS0gICAgaWJ1c19zZXJ2aWNlX2VtaXRfc2lnbmFsICgoSUJ1c1NlcnZpY2UgKikgcGFuZWwsCi0r ICAgIGlidXNfc2VydmljZV9lbWl0X3NpZ25hbCAoKElCdXNTZXJ2aWNlICopcGFuZWwsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBJQlVTX0lOVEVSRkFDRV9QQU5FTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAiVXBkYXRlUHJlZWRpdFRleHRSZWNlaXZlZCIsCi1AQCAtMTY4Niw3ICsxNzY0LDcgQEAg aWJ1c19wYW5lbF9zZXJ2aWNlX3VwZGF0ZV9hdXhpbGlhcnlfdGV4dF9yZWNlaXZlZCAoSUJ1c1Bh bmVsU2VydmljZSAqcGFuZWwsCi0gCi0gICAgIHZhcmlhbnQgPSBpYnVzX3NlcmlhbGl6YWJsZV9z ZXJpYWxpemUgKChJQnVzU2VyaWFsaXphYmxlICopdGV4dCk7Ci0gICAgIGdfcmV0dXJuX2lmX2Zh aWwgKHZhcmlhbnQpOwotLSAgICBpYnVzX3NlcnZpY2VfZW1pdF9zaWduYWwgKChJQnVzU2Vydmlj ZSAqKSBwYW5lbCwKLSsgICAgaWJ1c19zZXJ2aWNlX2VtaXRfc2lnbmFsICgoSUJ1c1NlcnZpY2Ug KilwYW5lbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIElCVVNfSU5URVJGQUNFX1BBTkVMLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICJVcGRhdGVBdXhpbGlhcnlUZXh0UmVjZWl2ZWQiLAotQEAgLTE3 MTEsNyArMTc4OSw3IEBAIGlidXNfcGFuZWxfc2VydmljZV91cGRhdGVfbG9va3VwX3RhYmxlX3Jl Y2VpdmVkIChJQnVzUGFuZWxTZXJ2aWNlICpwYW5lbCwKLSAKLSAgICAgdmFyaWFudCA9IGlidXNf c2VyaWFsaXphYmxlX3NlcmlhbGl6ZSAoKElCdXNTZXJpYWxpemFibGUgKil0YWJsZSk7Ci0gICAg IGdfcmV0dXJuX2lmX2ZhaWwgKHZhcmlhbnQpOwotLSAgICBpYnVzX3NlcnZpY2VfZW1pdF9zaWdu YWwgKChJQnVzU2VydmljZSAqKSBwYW5lbCwKLSsgICAgaWJ1c19zZXJ2aWNlX2VtaXRfc2lnbmFs ICgoSUJ1c1NlcnZpY2UgKilwYW5lbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBO VUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElCVVNfSU5URVJGQUNFX1BBTkVM LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVcGRhdGVMb29rdXBUYWJsZVJlY2Vp dmVkIiwKLUBAIC0xNzMxLDcgKzE4MDksNyBAQCBpYnVzX3BhbmVsX3NlcnZpY2VfZm9yd2FyZF9w cm9jZXNzX2tleV9ldmVudCAoSUJ1c1BhbmVsU2VydmljZSAqcGFuZWwsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50MzIgICAgICAgICAgIHN0YXRl KQotIHsKLSAgICAgZ19yZXR1cm5faWZfZmFpbCAoSUJVU19JU19QQU5FTF9TRVJWSUNFIChwYW5l bCkpOwotLSAgICBpYnVzX3NlcnZpY2VfZW1pdF9zaWduYWwgKChJQnVzU2VydmljZSAqKSBwYW5l bCwKLSsgICAgaWJ1c19zZXJ2aWNlX2VtaXRfc2lnbmFsICgoSUJ1c1NlcnZpY2UgKilwYW5lbCwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIElCVVNfSU5URVJGQUNFX1BBTkVMLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICJGb3J3YXJkUHJvY2Vzc0tleUV2ZW50IiwKLUBAIC0xNzQwLDYgKzE4MTgsMjgg QEAgaWJ1c19wYW5lbF9zZXJ2aWNlX2ZvcndhcmRfcHJvY2Vzc19rZXlfZXZlbnQgKElCdXNQYW5l bFNlcnZpY2UgKnBhbmVsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwot IH0KLSAKLSt2b2lkCi0raWJ1c19wYW5lbF9zZXJ2aWNlX3NlbmRfbWVzc2FnZSAoSUJ1c1BhbmVs U2VydmljZSAqcGFuZWwsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUJ1c01l c3NhZ2UgICAgICAqbWVzc2FnZSkKLSt7Ci0rICAgIEdWYXJpYW50ICp2YXJpYW50OwotKyAgICBH RXJyb3IgKmVycm9yID0gTlVMTDsKLSsKLSsgICAgZ19yZXR1cm5faWZfZmFpbCAoSUJVU19JU19Q QU5FTF9TRVJWSUNFIChwYW5lbCkpOwotKyAgICBnX3JldHVybl9pZl9mYWlsIChJQlVTX0lTX01F U1NBR0UgKG1lc3NhZ2UpKTsKLSsgICAgdmFyaWFudCA9IGlidXNfc2VyaWFsaXphYmxlX3Nlcmlh bGl6ZSAoKElCdXNTZXJpYWxpemFibGUgKiltZXNzYWdlKTsKLSsgICAgaWJ1c19zZXJ2aWNlX2Vt aXRfc2lnbmFsICgoSUJ1c1NlcnZpY2UgKilwYW5lbCwKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBOVUxMLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElCVVNfSU5URVJG QUNFX1BBTkVMLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTZW5kTWVzc2FnZSIs Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ192YXJpYW50X25ldyAoIih2KSIsIHZh cmlhbnQpLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZlcnJvcik7Ci0rICAgIGlm IChlcnJvcikgewotKyAgICAgICAgZ193YXJuaW5nICgiRXJyb3IgaW4gJXM6ICVzIiwgR19TVFJG VU5DLCBlcnJvci0+bWVzc2FnZSk7Ci0rICAgICAgICBnX2Vycm9yX2ZyZWUgKGVycm9yKTsKLSsg ICAgfQotK30KLSsKLSAjZGVmaW5lIERFRklORV9GVU5DKG5hbWUsIE5hbWUpICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCi0gICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICBpYnVzX3BhbmVsX3NlcnZpY2VfIyNuYW1l IChJQnVzUGFuZWxTZXJ2aWNlICpwYW5lbCkgICAgIFwKLWRpZmYgLS1naXQgYS9zcmMvaWJ1c3Bh bmVsc2VydmljZS5oIGIvc3JjL2lidXNwYW5lbHNlcnZpY2UuaAotaW5kZXggNjRlZmNhNTUuLjU3 MDQ1OTU2IDEwMDY0NAotLS0tIGEvc3JjL2lidXNwYW5lbHNlcnZpY2UuaAotKysrIGIvc3JjL2li dXNwYW5lbHNlcnZpY2UuaAotQEAgLTIsNyArMiw3IEBACi0gLyogdmltOnNldCBldCBzdHM9NDog Ki8KLSAvKiBpYnVzIC0gVGhlIElucHV0IEJ1cwotICAqIENvcHlyaWdodCAoYykgMjAwOS0yMDE0 IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0tICogQ29weXJpZ2h0IChjKSAyMDE3 LTIwMjQgVGFrYW8gRnVqaXdhcmEgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+Ci0rICogQ29w eXJpZ2h0IChjKSAyMDE3LTIwMjUgVGFrYW8gRnVqaXdhcmEgPHRha2FvLmZ1aml3YXJhMUBnbWFp bC5jb20+Ci0gICoKLSAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotQEAgLTM2LDYgKzM2LDcgQEAKLSAgKiBEZXZl bG9wZXJzIGNhbiAiZXh0ZW5kIiB0aGlzIGNsYXNzIGZvciBwYW5lbCBVSSBkZXZlbG9wbWVudC4K LSAgKi8KLSAjaW5jbHVkZSAiaWJ1c2xvb2t1cHRhYmxlLmgiCi0rI2luY2x1ZGUgImlidXNtZXNz YWdlLmgiCi0gI2luY2x1ZGUgImlidXNzZXJ2aWNlLmgiCi0gI2luY2x1ZGUgImlidXNwcm9wbGlz dC5oIgotICNpbmNsdWRlICJpYnVzeGV2ZW50LmgiCi1AQCAtNjAsNiArNjEsMjQgQEAKLSAKLSBH X0JFR0lOX0RFQ0xTCi0gCi0rLyoqCi0rICogSUJ1c1BhbmVsU2VydmljZU1zZ0NvZGU6Ci0rICog QElCVVNfUEFORUxfU0VSVklDRV9NU0dfQ09ERV9HRU5FUkFMOiBHZW5lcmljIG1lc3NhZ2UgZm9y IFBhbmVsCi0rICogQElCVVNfUEFORUxfU0VSVklDRV9NU0dfQ09ERV9MT0FESU5HX1VOSUNPREU6 IFByb2dyZXNzIG1lc3NhZ2Ugd2hlbiB0aGUKLSsgKiAgICAgICAgIFVuaWNvZGUgZGF0YSBpcyBs b2FkaW5nLgotKyAqCi0rICogTWVzc2FnZSBjb2RlcyBpbiB0aGUgYElCdXNNZXNzYWdlRG9tYWlu YCBkb21haW4gZm9yIFBhbmVsLgotKyAqCi0rICogU2luY2U6IDEuNS4zMwotKyAqIFN0YWJpbGl0 eTogVW5zdGFibGUKLSsgKi8KLSt0eXBlZGVmIGVudW0KLSt7Ci0rICBJQlVTX1BBTkVMX1NFUlZJ Q0VfTVNHX0NPREVfR0VORVJBTCwKLSsgIElCVVNfUEFORUxfU0VSVklDRV9NU0dfQ09ERV9MT0FE SU5HX1VOSUNPREUKLSt9IElCdXNQYW5lbFNlcnZpY2VNc2dDb2RlOwotKwotKwotIHR5cGVkZWYg c3RydWN0IF9JQnVzUGFuZWxTZXJ2aWNlIElCdXNQYW5lbFNlcnZpY2U7Ci0gdHlwZWRlZiBzdHJ1 Y3QgX0lCdXNQYW5lbFNlcnZpY2VDbGFzcyBJQnVzUGFuZWxTZXJ2aWNlQ2xhc3M7Ci0gCi1AQCAt MzcyLDExICszOTEsMjggQEAgdm9pZCBpYnVzX3BhbmVsX3NlcnZpY2VfdXBkYXRlX2xvb2t1cF90 YWJsZV9yZWNlaXZlZAotICAqCi0gICogRm9yd2FyZCBrZXkgZXZlbnRzIHdoZW4gYW4gSUJ1cyBw b3B1cCB0YWtlcyB0aGUgZm9jdXMgYW5kIHRoZSBldmVudHMKLSAgKiBuZWVkcyB0byBiZSBmb3J3 YXJlZCB0byB0aGUgdGFyZ2V0IElCdXMgZW5naW5lLgotKyAqCi0rICogU2luY2U6IDEuNS4zMgot KyAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSAgKi8KLSB2b2lkIGlidXNfcGFuZWxfc2VydmljZV9m b3J3YXJkX3Byb2Nlc3Nfa2V5X2V2ZW50Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKElCdXNQYW5lbFNlcnZpY2UgKnBhbmVsLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBndWludDMyICAgICAgICAgICBrZXl2YWwsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50MzIgICAgICAgICAg IGtleWNvZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1 aW50MzIgICAgICAgICAgIHN0YXRlKTsKLSsKLSsvKioKLSsgKiBpYnVzX3BhbmVsX3NlcnZpY2Vf c2VuZF9tZXNzYWdlOgotKyAqIEBwYW5lbDogQW4gI0lCdXNQYW5lbFNlcnZpY2UuCi0rICogQG1l c3NhZ2U6IEFuICNJQnVzTWVzc2FnZS4KLSsgKgotKyAqIFNlbmQgYSBtZXNzYWdlIHRvIHRoZSBQ YW5lbCBmb3IgdGhlIGZvY3VzLWxlc3Mgbm90aWZpY2F0aW9uIHBvcHVwLgotKyAqIFRoaXMgaXMg dXNlZCBmb3IgdGhlIGVtb2ppIGNvbXBvbmVudCBpbiBXYXlsYW5kIG1haW5seSBidXQgaW4gWG9y ZyB0b28uCi0rICoKLSsgKiBTaW5jZTogMS41LjMzCi0rICogU3RhYmlsaXR5OiBVbnN0YWJsZQot KyAqLwotK3ZvaWQgaWJ1c19wYW5lbF9zZXJ2aWNlX3NlbmRfbWVzc2FnZSAgICAgIChJQnVzUGFu ZWxTZXJ2aWNlICpwYW5lbCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgSUJ1c01lc3NhZ2UgICAgICAqbWVzc2FnZSk7Ci0gR19FTkRfREVDTFMKLSAjZW5kaWYK LWRpZmYgLS1naXQgYS9zcmMvaWJ1c3R5cGVzLmggYi9zcmMvaWJ1c3R5cGVzLmgKLWluZGV4IGM4 ZGZiODlhLi4xMjQzYjJiYyAxMDA2NDQKLS0tLSBhL3NyYy9pYnVzdHlwZXMuaAotKysrIGIvc3Jj L2lidXN0eXBlcy5oCi1AQCAtMzU4LDUgKzM1OCwxOSBAQCB0eXBlZGVmIGVudW0KLSAgICAgICAg IElCVVNfU1VQRVJfTUFTSyB8ICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICBJQlVT X0hZUEVSX01BU0sgfCAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgSUJVU19NRVRB X01BU0spKQotKy8qKgotKyAqIElCdXNNZXNzYWdlRG9tYWluOgotKyAqIEBJQlVTX01FU1NBR0Vf RU5HSU5FOiBUaGUgbWVzc2FnZSBkb21haW4gZm9yIEVuZ2luZSBtZXNzYWdlcwotKyAqIEBJQlVT X01FU1NBR0VfUEFORUw6IFRoZSBtZXNzYWdlIGRvbWFpbiBmb3IgUGFuZWwgbWVzc2FnZXMKLSsg KgotKyAqIFNpbmNlOiAxLjUuMzMKLSsgKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0rICovCi0rdHlw ZWRlZiBlbnVtCi0rewotKyAgSUJVU19NRVNTQUdFX0RPTUFJTl9OT05FLAotKyAgSUJVU19NRVNT QUdFX0RPTUFJTl9FTkdJTkUsCi0rICBJQlVTX01FU1NBR0VfRE9NQUlOX1BBTkVMCi0rfSBJQnVz TWVzc2FnZURvbWFpbjsKLSAKLSAjZW5kaWYKLWRpZmYgLS1naXQgYS91aS9ndGszL01ha2VmaWxl LmFtIGIvdWkvZ3RrMy9NYWtlZmlsZS5hbQotaW5kZXggNGNjMTA3ODAuLmQ5OWQ4ZTgyIDEwMDY0 NAotLS0tIGEvdWkvZ3RrMy9NYWtlZmlsZS5hbQotKysrIGIvdWkvZ3RrMy9NYWtlZmlsZS5hbQot QEAgLTk3LDYgKzk3LDcgQEAgaWJ1c191aV9ndGszX1NPVVJDRVMgPSBcCi0gICAgIGhhbmRsZS52 YWxhIFwKLSAgICAgaWNvbndpZGdldC52YWxhIFwKLSAgICAga2V5YmluZGluZ21hbmFnZXIudmFs YSBcCi0rICAgIG1lc3NhZ2UudmFsYSBcCi0gICAgIHBhbmVsLnZhbGEgXAotICAgICBwYW5nby52 YWxhIFwKLSAgICAgcHJvcGVydHkudmFsYSBcCi1kaWZmIC0tZ2l0IGEvdWkvZ3RrMy9lbW9qaWVy LnZhbGEgYi91aS9ndGszL2Vtb2ppZXIudmFsYQotaW5kZXggMTc3MGRlMmYuLjJkODc1NGE0IDEw MDY0NAotLS0tIGEvdWkvZ3RrMy9lbW9qaWVyLnZhbGEKLSsrKyBiL3VpL2d0azMvZW1vamllci52 YWxhCi1AQCAtMiw3ICsyLDcgQEAKLSAgKgotICAqIGlidXMgLSBUaGUgSW5wdXQgQnVzCi0gICoK LS0gKiBDb3B5cmlnaHQgKGMpIDIwMTctMjAyMyBUYWthbyBGdWppd2FyYSA8dGFrYW8uZnVqaXdh cmExQGdtYWlsLmNvbT4KLSsgKiBDb3B5cmlnaHQgKGMpIDIwMTctMjAyNSBUYWthbyBGdWppd2Fy YSA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KLSAgKgotICAqIFRoaXMgbGlicmFyeSBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgKiBtb2RpZnkg aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi1AQCAt MzEyLDYgKzMxMiw3IEBAIHB1YmxpYyBjbGFzcyBJQnVzRW1vamllciA6IEd0ay5BcHBsaWNhdGlv bldpbmRvdyB7Ci0gICAgIHByaXZhdGUgdWludCBtX3VuaWNvZGVfcHJvZ3Jlc3NfaWQ7Ci0gICAg IHByaXZhdGUgR3RrLkxhYmVsIG1fdW5pY29kZV9wZXJjZW50X2xhYmVsOwotICAgICBwcml2YXRl IGRvdWJsZSBtX3VuaWNvZGVfcGVyY2VudDsKLSsgICAgcHJpdmF0ZSB1bG9uZyBtX3VuaWNvZGVf ZGVzZXJpYWxpemVfdW5pY29kZV9zaWduYWxfaWQ7Ci0gICAgIHByaXZhdGUgR2RrLlJlY3Rhbmds ZSBtX2N1cnNvcl9sb2NhdGlvbjsKLSAgICAgcHJpdmF0ZSBib29sIG1faXNfdXBfc2lkZV9kb3du ID0gZmFsc2U7Ci0gICAgIHByaXZhdGUgdWludCBtX3JlZHJhd193aW5kb3dfaWQ7Ci1AQCAtMzIx LDYgKzMyMiw3IEBAIHB1YmxpYyBjbGFzcyBJQnVzRW1vamllciA6IEd0ay5BcHBsaWNhdGlvbldp bmRvdyB7Ci0gICAgIHB1YmxpYyBzaWduYWwgdm9pZCBjYW5kaWRhdGVfY2xpY2tlZCh1aW50IGlu ZGV4LCB1aW50IGJ1dHRvbiwgdWludCBzdGF0ZSk7Ci0gICAgIHB1YmxpYyBzaWduYWwgdm9pZCBj b21taXRfdGV4dChzdHJpbmcgdGV4dCk7Ci0gICAgIHB1YmxpYyBzaWduYWwgdm9pZCBjYW5jZWwo KTsKLSsgICAgcHVibGljIHNpZ25hbCB2b2lkIHNlbmRfbWVzc2FnZShJQnVzLk1lc3NhZ2UgbWVz c2FnZSk7Ci0gCi0gICAgIHB1YmxpYyBJQnVzRW1vamllcihib29sIGlzX3dheWxhbmQpIHsKLSAg ICAgICAgIEdMaWIuT2JqZWN0KAotQEAgLTExNzgsOSArMTE4MCwxMyBAQCBwdWJsaWMgY2xhc3Mg SUJ1c0Vtb2ppZXIgOiBHdGsuQXBwbGljYXRpb25XaW5kb3cgewotICAgICAgICAgaGJveC5wYWNr X3N0YXJ0KG1fdW5pY29kZV9wZXJjZW50X2xhYmVsLCBmYWxzZSwgdHJ1ZSwgMCk7Ci0gICAgICAg ICBoYm94LnNob3dfYWxsKCk7Ci0gCi0tICAgICAgICBtX3VuaWNvZGVfcHJvZ3Jlc3Nfb2JqZWN0 LmRlc2VyaWFsaXplX3VuaWNvZGUuY29ubmVjdCgoaSwgbikgPT4gewotLSAgICAgICAgICAgIG1f dW5pY29kZV9wZXJjZW50ID0gKGRvdWJsZSlpIC8gbjsKLS0gICAgICAgIH0pOwotKyAgICAgICAg aWYgKG1fdW5pY29kZV9kZXNlcmlhbGl6ZV91bmljb2RlX3NpZ25hbF9pZCA9PSAwKSB7Ci0rICAg ICAgICAgICAgbV91bmljb2RlX2Rlc2VyaWFsaXplX3VuaWNvZGVfc2lnbmFsX2lkID0KLSsgICAg ICAgICAgICAgICAgICAgIG1fdW5pY29kZV9wcm9ncmVzc19vYmplY3QuZGVzZXJpYWxpemVfdW5p Y29kZS5jb25uZWN0KAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaSwgbikgPT4gewot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV91bmljb2RlX3BlcmNlbnQgPSAoZG91 YmxlKWkgLyBuOwotKyAgICAgICAgICAgICAgICAgICAgfSk7Ci0rICAgICAgICB9Ci0gICAgICAg ICBpZiAobV91bmljb2RlX3Byb2dyZXNzX2lkID4gMCkgewotICAgICAgICAgICAgIEdMaWIuU291 cmNlLnJlbW92ZShtX3VuaWNvZGVfcHJvZ3Jlc3NfaWQpOwotICAgICAgICAgfQotQEAgLTExOTks NiArMTIwNSwxOCBAQCBwdWJsaWMgY2xhc3MgSUJ1c0Vtb2ppZXIgOiBHdGsuQXBwbGljYXRpb25X aW5kb3cgewotICAgICB9Ci0gCi0gCi0rICAgIHByaXZhdGUgdm9pZCBzaG93X3VuaWNvZGVfcG9w dXAoaW50IHByb2dyZXNzKSB7Ci0rICAgICAgICB2YXIgbWVzc2FnZSA9IG5ldyBJQnVzLk1lc3Nh Z2UoSUJ1cy5NZXNzYWdlRG9tYWluLlBBTkVMLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIElCdXMuUGFuZWxTZXJ2aWNlTXNnQ29kZS5MT0FESU5HX1VOSUNPREUsCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiSUJ1cyBFbW9qaSBpbml0 aWFsaXphdGlvbiIpLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8o IkxvYWRpbmcgYSBVbmljb2RlIGRpY3Rpb25hcnk6IiksCi0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgInRpbWVvdXQiLCAzLAotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICJwcm9ncmVzcyIsIHByb2dyZXNzLAotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICJzZXJpYWwiLCA1MDAwMSk7Ci0rICAgICAgICBzZW5kX21l c3NhZ2UobWVzc2FnZSk7Ci0rICAgIH0KLSsKLSsKLSAgICAgcHJpdmF0ZSBzdGF0aWMgc3RyaW5n PyBjaGVja191bmljb2RlX3BvaW50KHN0cmluZyBhbm5vdGF0aW9uKSB7Ci0gICAgICAgICBzdHJp bmcgdW5pY29kZV9wb2ludCA9IG51bGw7Ci0gICAgICAgICAvLyBBZGQgIjB4IiBiZWNhdXNlIHVp bnQ2NC5hc2NpaV9zdHJ0b3VsbCgpIGlzIG5vdCBhY2Nlc3NpYmxlCi1AQCAtMTIzMiw3ICsxMjUw LDcgQEAgcHVibGljIGNsYXNzIElCdXNFbW9qaWVyIDogR3RrLkFwcGxpY2F0aW9uV2luZG93IHsK LSAgICAgfQotIAotIAotLSAgICBwcml2YXRlIHN0YXRpYyBHTGliLlNMaXN0PHN0cmluZz4/Ci0r ICAgIHByaXZhdGUgR0xpYi5TTGlzdDxzdHJpbmc+PwotICAgICBsb29rdXBfZW1vamlzX2Zyb21f YW5ub3RhdGlvbihzdHJpbmcgYW5ub3RhdGlvbikgewotICAgICAgICAgR0xpYi5TTGlzdDxzdHJp bmc+PyB0b3RhbF9lbW9qaXMgPSBudWxsOwotICAgICAgICAgdW5vd25lZCBHTGliLlNMaXN0PHN0 cmluZz4/IHN1Yl9lbW9qaXMgPSBudWxsOwotQEAgLTEzMTAsNiArMTMyOCwxNyBAQCBwdWJsaWMg Y2xhc3MgSUJ1c0Vtb2ppZXIgOiBHdGsuQXBwbGljYXRpb25XaW5kb3cgewotICAgICAgICAgICAg ICAgICB9Ci0gICAgICAgICAgICAgfQotICAgICAgICAgfQotKyAgICAgICAgaWYgKCFtX2xvYWRl ZF91bmljb2RlICYmIG1fdW5pY29kZV9kZXNlcmlhbGl6ZV91bmljb2RlX3NpZ25hbF9pZCA9PSAw KSB7Ci0rICAgICAgICAgICAgbV91bmljb2RlX2Rlc2VyaWFsaXplX3VuaWNvZGVfc2lnbmFsX2lk ID0KLSsgICAgICAgICAgICAgICAgICAgIG1fdW5pY29kZV9wcm9ncmVzc19vYmplY3QuZGVzZXJp YWxpemVfdW5pY29kZS5jb25uZWN0KAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaSwg bikgPT4gewotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV91bmljb2RlX3BlcmNl bnQgPSAoZG91YmxlKWkgLyBuOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hv d191bmljb2RlX3BvcHVwKAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoaW50KShtX3VuaWNvZGVfcGVyY2VudCAqIDEwMCkpOwotKyAgICAgICAgICAgICAgICAgICAg fSk7Ci0rICAgICAgICB9Ci0rICAgICAgICBpZiAoIW1fbG9hZGVkX3VuaWNvZGUpCi0rICAgICAg ICAgICAgc2hvd191bmljb2RlX3BvcHVwKDApOwotICAgICAgICAgcmV0dXJuIHRvdGFsX2Vtb2pp czsKLSAgICAgfQotIAotZGlmZiAtLWdpdCBhL3VpL2d0azMvbWVzc2FnZS52YWxhIGIvdWkvZ3Rr My9tZXNzYWdlLnZhbGEKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMC4uMGM3 ZGQ0NzgKLS0tLSAvZGV2L251bGwKLSsrKyBiL3VpL2d0azMvbWVzc2FnZS52YWxhCi1AQCAtMCww ICsxLDM1MyBAQAotKy8qIHZpbTpzZXQgZXQgc3RzPTQgc3c9NDoKLSsgKgotKyAqIGlidXMgLSBU aGUgSW5wdXQgQnVzCi0rICoKLSsgKiBDb3B5cmlnaHQoYykgMjAyNSBUYWthbyBGdWppd2FyYSA8 dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KLSsgKgotKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVl IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSsgKiBtb2RpZnkgaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0rICogTGlj ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy Ci0rICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55 IGxhdGVyIHZlcnNpb24uCi0rICoKLSsgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgKiBidXQgV0lUSE9VVCBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAqIE1FUkNIQU5U QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V Ci0rICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsg KgotKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIg R2VuZXJhbCBQdWJsaWMKLSsgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBu b3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rICogRm91bmRhdGlvbiwgSW5jLiwgNTEg RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMQotKyAq IFVTQQotKyAqLwotKwotK3B1YmxpYyBjbGFzcyBNZXNzYWdlRGlhbG9nIDogR3RrLkJveHsKLSsg ICAgcHJpdmF0ZSBHdGsuV2luZG93IG1fdG9wbGV2ZWw7Ci0rICAgIHByaXZhdGUgR3RrLkJveCBt X3Zib3g7Ci0rICAgIHByaXZhdGUgR3RrLkJveCBtX2hib3g7Ci0rICAgIHByaXZhdGUgR3RrLkxh YmVsIG1fdGl0bGVfbGFiZWw7Ci0rICAgIHByaXZhdGUgR3RrLkxhYmVsIG1fZGVzY3JpcHRpb25f bGFiZWw7Ci0rICAgIHByaXZhdGUgR3RrLlByb2dyZXNzQmFyIG1fcHJvZ3Jlc3NfYmFyOwotKyAg ICBwcml2YXRlIEd0ay5MYWJlbCBtX3Byb2dyZXNzX2xhYmVsOwotKyAgICBwcml2YXRlIEd0ay5M YWJlbCBtX3RpbWVvdXRfbGFiZWw7Ci0rICAgIHByaXZhdGUgR3RrLkJ1dHRvbiBtX2J1dHRvbjsK LSsgICAgcHJpdmF0ZSBpbnQgbV90aW1lb3V0X3RpbWU7Ci0rICAgIHByaXZhdGUgaW50IG1fZWxh cHNlZF90aW1lOwotKyAgICBwcml2YXRlIHVpbnQgbV90aW1lb3V0X2lkOwotKwotKyAgICBwcml2 YXRlIEdkay5SZWN0YW5nbGUgbV9jdXJzb3JfbG9jYXRpb247Ci0rCi0rICAgIHByaXZhdGUgYm9v bCBtX2lzX3dheWxhbmQ7Ci0rICAgIHByaXZhdGUgYm9vbCBtX25vX3dheWxhbmRfcGFuZWw7Ci0r Ci0rI2lmIFVTRV9HREtfV0FZTEFORAotKyAgICBwcml2YXRlIGJvb2wgbV9oaWRlX2FmdGVyX3No b3c7Ci0rI2VuZGlmCi0rCi0rICAgIHB1YmxpYyBzaWduYWwgdm9pZCBjbG9zZSgpOwotKwotKyNp ZiBVU0VfR0RLX1dBWUxBTkQKLSsgICAgcHVibGljIHNpZ25hbCB2b2lkIHJlYWxpemVfc3VyZmFj ZSh2b2lkICpzdXJmYWNlKTsKLSsjZW5kaWYKLSsKLSsgICAgcHVibGljIE1lc3NhZ2VEaWFsb2cg KGJvb2wgICAgICAgICBpc193YXlsYW5kLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgYm9v bCAgICAgICAgIG5vX3dheWxhbmRfcGFuZWwsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICBJ QnVzLk1lc3NhZ2UgbWVzc2FnZSkgewotKyAgICAgICAgLy8gQ2FsbCBiYXNlIGNsYXNzIGNvbnN0 cnVjdG9yCi0rICAgICAgICBHTGliLk9iamVjdCgKLSsgICAgICAgICAgICBuYW1lIDogIklCdXNN ZXNzYWdlRGlhbG9nIiwKLSsgICAgICAgICAgICBvcmllbnRhdGlvbjogR3RrLk9yaWVudGF0aW9u LkhPUklaT05UQUwsCi0rICAgICAgICAgICAgdmlzaWJsZTogdHJ1ZQotKyAgICAgICAgKTsKLSsK LSsgICAgICAgIG1faXNfd2F5bGFuZCA9IGlzX3dheWxhbmQ7Ci0rICAgICAgICBtX25vX3dheWxh bmRfcGFuZWwgPSBub193YXlsYW5kX3BhbmVsOwotKyAgICAgICAgbV90b3BsZXZlbCA9IG5ldyBH dGsuV2luZG93KEd0ay5XaW5kb3dUeXBlLlBPUFVQKTsKLSsgICAgICAgIG1fdG9wbGV2ZWwuYWRk X2V2ZW50cyhHZGsuRXZlbnRNYXNrLkJVVFRPTl9QUkVTU19NQVNLKTsKLSsgICAgICAgIG1fdG9w bGV2ZWwuc2l6ZV9hbGxvY2F0ZS5jb25uZWN0KCh3LCBhKSA9PiB7Ci0rICAgICAgICAgICAgYWRq dXN0X3dpbmRvd19wb3NpdGlvbih3KTsKLSsgICAgICAgIH0pOwotKyNpZiBVU0VfR0RLX1dBWUxB TkQKLSsgICAgICAgIGlmIChtX2lzX3dheWxhbmQpIHsKLSsgICAgICAgICAgICBtX3RvcGxldmVs LnJlYWxpemUuY29ubmVjdCgodykgPT4gewotKyAgICAgICAgICAgICAgICByZWFsaXplX3dpbmRv dyh0cnVlKTsKLSsgICAgICAgICAgICB9KTsKLSsgICAgICAgICAgICBtX3RvcGxldmVsLnNob3cu Y29ubmVjdCgodykgPT4gewotKyAgICAgICAgICAgICAgICBpZiAobV9oaWRlX2FmdGVyX3Nob3cp Ci0rICAgICAgICAgICAgICAgICAgICByZWFsaXplX3dpbmRvdyhmYWxzZSk7Ci0rICAgICAgICAg ICAgICAgIG1faGlkZV9hZnRlcl9zaG93ID0gZmFsc2U7Ci0rICAgICAgICAgICAgfSk7Ci0rICAg ICAgICAgICAgbV90b3BsZXZlbC5oaWRlLmNvbm5lY3QoKHcpID0+IHsKLSsgICAgICAgICAgICAg ICAgbV9oaWRlX2FmdGVyX3Nob3cgPSB0cnVlOwotKyAgICAgICAgICAgIH0pOwotKyAgICAgICAg fQotKyNlbmRpZgotKwotKyAgICAgICAgbV92Ym94ID0gbmV3IEd0ay5Cb3goR3RrLk9yaWVudGF0 aW9uLlZFUlRJQ0FMLCAwKTsKLSsgICAgICAgIG1fdmJveC5zZXRfdmlzaWJsZSh0cnVlKTsKLSsg ICAgICAgIHBhY2tfc3RhcnQobV92Ym94LCBmYWxzZSwgZmFsc2UsIDApOwotKwotKyAgICAgICAg bV90b3BsZXZlbC5hZGQodGhpcyk7Ci0rCi0rICAgICAgICBjcmVhdGVfdWkobWVzc2FnZSk7Ci0r ICAgIH0KLSsKLSsgICAgcHVibGljIHZvaWQgc2V0X2N1cnNvcl9sb2NhdGlvbihpbnQgeCwgaW50 IHksIGludCB3aWR0aCwgaW50IGhlaWdodCkgewotKyAgICAgICAgR2RrLlJlY3RhbmdsZSBsb2Nh dGlvbiA9IEdkay5SZWN0YW5nbGUoKXsKLSsgICAgICAgICAgICB4ID0geCwgeSA9IHksIHdpZHRo ID0gd2lkdGgsIGhlaWdodCA9IGhlaWdodCB9OwotKyAgICAgICAgaWYgKG1fY3Vyc29yX2xvY2F0 aW9uID09IGxvY2F0aW9uKQotKyAgICAgICAgICAgIHJldHVybjsKLSsgICAgICAgIG1fY3Vyc29y X2xvY2F0aW9uID0gbG9jYXRpb247Ci0rCi0rICAgICAgICAvKiBEbyBub3QgY2FsbCBhZGp1c3Rf d2luZG93X3Bvc2l0aW9uKCkgaGVyZSBiZWNhdXNlCi0rICAgICAgICAgKiBtX3RvcGxldmVsIGlz IG5vdCBzaG93biB5ZXQgYW5kCi0rICAgICAgICAgKiBtX3RvcGxldmVsLmdldF9hbGxvY2F0aW9u KCkgcmV0dXJucyBoZWlnaHQgPSB3aWR0aCA9IDEgKi8KLSsgICAgfQotKwotKyAgICBwcml2YXRl IHZvaWQgY3JlYXRlX3VpKElCdXMuTWVzc2FnZSBtZXNzYWdlKSB7Ci0rICAgICAgICBzdHJpbmc/ IHRpdGxlID0gbWVzc2FnZS5nZXRfdGl0bGUoKTsKLSsgICAgICAgIHN0cmluZyBkZXNjcmlwdGlv biA9IG1lc3NhZ2UuZ2V0X2Rlc2NyaXB0aW9uKCk7Ci0rCi0rICAgICAgICBpZiAodGl0bGUubGVu Z3RoID4gMCkgewotKyAgICAgICAgICAgIG1fdGl0bGVfbGFiZWwgPSBuZXcgR3RrLkxhYmVsKHRp dGxlKTsKLSsgICAgICAgIH0gZWxzZSB7Ci0rICAgICAgICAgICAgbV90aXRsZV9sYWJlbCA9IG5l dyBHdGsuTGFiZWwobnVsbCk7Ci0rICAgICAgICAgICAgbV90aXRsZV9sYWJlbC5zZXRfbm9fc2hv d19hbGwodHJ1ZSk7Ci0rICAgICAgICB9Ci0rICAgICAgICBtX3RpdGxlX2xhYmVsLnNldF9oYWxp Z24oR3RrLkFsaWduLkNFTlRFUik7Ci0rICAgICAgICBtX3RpdGxlX2xhYmVsLnNldF92YWxpZ24o R3RrLkFsaWduLkNFTlRFUik7Ci0rICAgICAgICBtX3RpdGxlX2xhYmVsLnNldF9tYXJnaW5fc3Rh cnQoOCk7Ci0rICAgICAgICBtX3RpdGxlX2xhYmVsLnNldF9tYXJnaW5fZW5kKDgpOwotKyAgICAg ICAgbV90aXRsZV9sYWJlbC5zZXRfbGluZV93cmFwKHRydWUpOwotKyAgICAgICAgbV90aXRsZV9s YWJlbC5zZXRfd2lkdGhfY2hhcnMoNTApOwotKwotKyAgICAgICAgbV9kZXNjcmlwdGlvbl9sYWJl bCA9IG5ldyBHdGsuTGFiZWwoZGVzY3JpcHRpb24pOwotKyAgICAgICAgbV9kZXNjcmlwdGlvbl9s YWJlbC5zZXRfaGFsaWduKEd0ay5BbGlnbi5TVEFSVCk7Ci0rICAgICAgICBtX2Rlc2NyaXB0aW9u X2xhYmVsLnNldF92YWxpZ24oR3RrLkFsaWduLkNFTlRFUik7Ci0rICAgICAgICBtX2Rlc2NyaXB0 aW9uX2xhYmVsLnNldF9tYXJnaW5fc3RhcnQoOCk7Ci0rICAgICAgICBtX2Rlc2NyaXB0aW9uX2xh YmVsLnNldF9tYXJnaW5fZW5kKDgpOwotKyAgICAgICAgbV9kZXNjcmlwdGlvbl9sYWJlbC5zZXRf bGluZV93cmFwKHRydWUpOwotKyAgICAgICAgbV9kZXNjcmlwdGlvbl9sYWJlbC5zZXRfd2lkdGhf Y2hhcnMoNTApOwotKwotKyAgICAgICAgbV9oYm94ID0gbmV3IEd0ay5Cb3goR3RrLk9yaWVudGF0 aW9uLkhPUklaT05UQUwsIDUpOwotKyAgICAgICAgbV9oYm94LnNldF9oYWxpZ24oR3RrLkFsaWdu LkNFTlRFUik7Ci0rICAgICAgICBtX2hib3guc2V0X3ZhbGlnbihHdGsuQWxpZ24uQ0VOVEVSKTsK LSsgICAgICAgIG1fcHJvZ3Jlc3NfYmFyID0gbmV3IEd0ay5Qcm9ncmVzc0JhcigpOwotKyAgICAg ICAgbV9wcm9ncmVzc19iYXIuc2V0X2VsbGlwc2l6ZShQYW5nby5FbGxpcHNpemVNb2RlLk1JRERM RSk7Ci0rICAgICAgICBtX3Byb2dyZXNzX2Jhci5zZXRfaGFsaWduKEd0ay5BbGlnbi5DRU5URVIp OwotKyAgICAgICAgbV9wcm9ncmVzc19iYXIuc2V0X3ZhbGlnbihHdGsuQWxpZ24uQ0VOVEVSKTsK LSsgICAgICAgIG1fcHJvZ3Jlc3NfbGFiZWwgPSBuZXcgR3RrLkxhYmVsKG51bGwpOwotKwotKyAg ICAgICAgaW50IHByb2dyZXNzID0gbWVzc2FnZS5nZXRfcHJvZ3Jlc3MoKTsKLSsgICAgICAgIGRv dWJsZSBwcm9ncmVzc19mID0gcHJvZ3Jlc3MgLyAxMDAuMDsKLSsgICAgICAgIGlmIChwcm9ncmVz c19mIDw9IDEuMCAmJiBwcm9ncmVzcyA+PSAwKSB7Ci0rICAgICAgICAgICAgbV9wcm9ncmVzc19i YXIuc2V0X2ZyYWN0aW9uKHByb2dyZXNzX2YpOwotKyAgICAgICAgICAgIG1fcHJvZ3Jlc3NfYmFy LnNldF90ZXh0KAotKyAgICAgICAgICAgICAgICAgICAgIiUydSUlXG4iLnByaW50Zihwcm9ncmVz cykpOwotKyAgICAgICAgICAgIG1fcHJvZ3Jlc3NfbGFiZWwuc2V0X3RleHQoCi0rICAgICAgICAg ICAgICAgICAgICAiJTJ1JSVcbiIucHJpbnRmKHByb2dyZXNzKSk7Ci0rICAgICAgICB9IGVsc2Ug ewotKyAgICAgICAgICAgIGlmIChwcm9ncmVzc19mID4gMS4wKQotKyAgICAgICAgICAgICAgICB3 YXJuaW5nICgiUHJvZ3Jlc3Mgc2hvdWxkIGJlIGJlbG93IDEwMC4iKTsKLSsgICAgICAgICAgICBt X2hib3guc2V0X25vX3Nob3dfYWxsKHRydWUpOwotKyAgICAgICAgfQotKwotKyAgICAgICAgbV90 aW1lb3V0X3RpbWUgPSBtZXNzYWdlLmdldF90aW1lb3V0KCk7Ci0rICAgICAgICBpZiAobV90aW1l b3V0X3RpbWUgPj0gMCkgewotKyAgICAgICAgICAgIG1fdGltZW91dF9sYWJlbCA9IG5ldyBHdGsu TGFiZWwoXygiJTVkU2VjIikucHJpbnRmKG1fdGltZW91dF90aW1lKSk7Ci0rICAgICAgICB9IGVs c2UgewotKyAgICAgICAgICAgIG1fdGltZW91dF9sYWJlbCA9IG5ldyBHdGsuTGFiZWwobnVsbCk7 Ci0rICAgICAgICAgICAgbV90aW1lb3V0X2xhYmVsLnNldF9ub19zaG93X2FsbCh0cnVlKTsKLSsg ICAgICAgIH0KLSsgICAgICAgIG1fdGltZW91dF9sYWJlbC5zZXRfc2l6ZV9yZXF1ZXN0KDIwLCAt MSk7Ci0rICAgICAgICBtX3RpbWVvdXRfbGFiZWwuc2V0X2hhbGlnbihHdGsuQWxpZ24uQ0VOVEVS KTsKLSsgICAgICAgIG1fdGltZW91dF9sYWJlbC5zZXRfdmFsaWduKEd0ay5BbGlnbi5DRU5URVIp OwotKyAgICAgICAgbV90aW1lb3V0X2xhYmVsLnNldF9tYXJnaW5fc3RhcnQoOCk7Ci0rICAgICAg ICBtX3RpbWVvdXRfbGFiZWwuc2V0X21hcmdpbl9lbmQoOCk7Ci0rCi0rICAgICAgICBpZiAobWVz c2FnZS5nZXRfc2VyaWFsKCkgPiAwICYmIG1fdGltZW91dF90aW1lID49IDApIHsKLSsgICAgICAg ICAgICBtX2J1dHRvbiA9IG5ldyBHdGsuQnV0dG9uKCk7Ci0rICAgICAgICAgICAgbV9idXR0b24u c2V0X25vX3Nob3dfYWxsKHRydWUpOwotKyAgICAgICAgfSBlbHNlIHsKLSsgICAgICAgICAgICBt X2J1dHRvbiA9IG5ldyBHdGsuQnV0dG9uLndpdGhfbGFiZWwoXygiQ2xvc2UiKSk7Ci0rICAgICAg ICAgICAgbV9idXR0b24uZ2V0X3N0eWxlX2NvbnRleHQoKS5hZGRfY2xhc3MoInRleHQtYnV0dG9u Iik7Ci0rICAgICAgICAgICAgbV9idXR0b24uc2V0X2Nhbl9kZWZhdWx0KHRydWUpOwotKyAgICAg ICAgfQotKyAgICAgICAgbV9idXR0b24uc2V0X3VzZV91bmRlcmxpbmUodHJ1ZSk7Ci0rICAgICAg ICBtX2J1dHRvbi5zZXRfdmFsaWduKEd0ay5BbGlnbi5CQVNFTElORSk7Ci0rICAgICAgICBtX2J1 dHRvbi5jbGlja2VkLmNvbm5lY3QoKHcpID0+IHsKLSsgICAgICAgICAgICBpZiAobV90aW1lb3V0 X2lkID4gMCkgewotKyAgICAgICAgICAgICAgICBHTGliLlNvdXJjZS5yZW1vdmUobV90aW1lb3V0 X2lkKTsKLSsgICAgICAgICAgICAgICAgbV90aW1lb3V0X2lkID0gMDsKLSsgICAgICAgICAgICB9 Ci0rICAgICAgICAgICAgY2xvc2UoKTsKLSsgICAgICAgIH0pOwotKyAgICAgICAgaWYgKG1fdGlt ZW91dF90aW1lID49IDApIHsKLSsgICAgICAgICAgICBtX2VsYXBzZWRfdGltZSA9IDE7Ci0rICAg ICAgICAgICAgbV90aW1lb3V0X2lkID0gVGltZW91dC5hZGRfc2Vjb25kcygxLAotKyAgICAgICAg ICAgICAgICAgICAgKCkgPT4gewotKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX2VsYXBz ZWRfdGltZSA+PSBtX3RpbWVvdXRfdGltZSkgewotKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjbG9zZSgpOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3RpbWVvdXRfaWQgPSAw OwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gU291cmNlLlJFTU9WRTsKLSsg ICAgICAgICAgICAgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgICAgICAgICAgICAgbV90aW1l b3V0X2xhYmVsLnNldF90ZXh0KF8oIiU1ZFNlYyIpLnByaW50ZigKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG1fdGltZW91dF90aW1lIC0gbV9lbGFwc2VkX3RpbWUrKykpOwotKyAg ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBTb3VyY2UuQ09OVElOVUU7Ci0rICAgICAgICAg ICAgICAgICAgICB9KTsKLSsgICAgICAgIH0KLSsKLSsgICAgICAgIG1fdmJveC5wYWNrX3N0YXJ0 KG1fdGl0bGVfbGFiZWwsIGZhbHNlLCBmYWxzZSwgNCk7Ci0rICAgICAgICBtX3Zib3gucGFja19z dGFydChtX2Rlc2NyaXB0aW9uX2xhYmVsLCBmYWxzZSwgZmFsc2UsIDQpOwotKyAgICAgICAgbV92 Ym94LmFkZChtX2hib3gpOwotKyAgICAgICAgbV9oYm94LmFkZChtX3Byb2dyZXNzX2Jhcik7Ci0r ICAgICAgICBtX2hib3guYWRkKG1fcHJvZ3Jlc3NfbGFiZWwpOwotKyAgICAgICAgbV92Ym94LnBh Y2tfc3RhcnQobV90aW1lb3V0X2xhYmVsLCBmYWxzZSwgZmFsc2UsIDQpOwotKyAgICAgICAgbV92 Ym94LnBhY2tfc3RhcnQobV9idXR0b24sIGZhbHNlLCBmYWxzZSwgMCk7Ci0rCi0rICAgICAgICBt X3RvcGxldmVsLnJlc2l6ZSgxLCAxKTsKLSsgICAgfQotKwotKyAgICBwdWJsaWMgdm9pZCB1cGRh dGVfbWVzc2FnZShJQnVzLk1lc3NhZ2UgbWVzc2FnZSkgewotKyAgICAgICAgc3RyaW5nPyB0aXRs ZSA9IG1lc3NhZ2UuZ2V0X3RpdGxlKCk7Ci0rICAgICAgICBzdHJpbmcgZGVzY3JpcHRpb24gPSBt ZXNzYWdlLmdldF9kZXNjcmlwdGlvbigpOwotKwotKyAgICAgICAgaWYgKHRpdGxlLmxlbmd0aCA+ IDApIHsKLSsgICAgICAgICAgICBtX3RpdGxlX2xhYmVsLnNldF90ZXh0KHRpdGxlKTsKLSsgICAg ICAgICAgICBtX3RpdGxlX2xhYmVsLnNob3coKTsKLSsgICAgICAgIH0gZWxzZSB7Ci0rICAgICAg ICAgICAgbV90aXRsZV9sYWJlbC5oaWRlKCk7Ci0rICAgICAgICB9Ci0rICAgICAgICBtX2Rlc2Ny aXB0aW9uX2xhYmVsLnNldF90ZXh0KGRlc2NyaXB0aW9uKTsKLSsKLSsgICAgICAgIG1fdGltZW91 dF90aW1lID0gbWVzc2FnZS5nZXRfdGltZW91dCgpOwotKyAgICAgICAgaWYgKG1fdGltZW91dF90 aW1lID49IDApIHsKLSsgICAgICAgICAgICBtX3RpbWVvdXRfbGFiZWwuc2V0X3RleHQoXygiJTVk U2VjIikucHJpbnRmKG1fdGltZW91dF90aW1lKSk7Ci0rICAgICAgICAgICAgbV90aW1lb3V0X2xh YmVsLnNob3coKTsKLSsgICAgICAgICAgICBtX2VsYXBzZWRfdGltZSA9IDE7Ci0rICAgICAgICB9 IGVsc2UgewotKyAgICAgICAgICAgIG1fdGltZW91dF9sYWJlbC5oaWRlKCk7Ci0rICAgICAgICB9 Ci0rCi0rICAgICAgICBpbnQgcHJvZ3Jlc3MgPSBtZXNzYWdlLmdldF9wcm9ncmVzcygpOwotKyAg ICAgICAgZG91YmxlIHByb2dyZXNzX2YgPSBwcm9ncmVzcyAvIDEwMC4wOwotKyAgICAgICAgaWYg KHByb2dyZXNzX2YgPD0gMS4wICYmIHByb2dyZXNzID49IDApIHsKLSsgICAgICAgICAgICBtX3By b2dyZXNzX2Jhci5zZXRfZnJhY3Rpb24ocHJvZ3Jlc3NfZik7Ci0rICAgICAgICAgICAgbV9wcm9n cmVzc19iYXIuc2V0X3RleHQoCi0rICAgICAgICAgICAgICAgICAgICAiJTJ1JSVcbiIucHJpbnRm KHByb2dyZXNzKSk7Ci0rICAgICAgICAgICAgbV9wcm9ncmVzc19sYWJlbC5zZXRfdGV4dCgKLSsg ICAgICAgICAgICAgICAgICAgICIlMnUlJVxuIi5wcmludGYocHJvZ3Jlc3MpKTsKLSsgICAgICAg ICAgICBtX2hib3guc2hvdygpOwotKyAgICAgICAgfSBlbHNlIHsKLSsgICAgICAgICAgICBpZiAo cHJvZ3Jlc3NfZiA+IDEuMCkKLSsgICAgICAgICAgICAgICAgd2FybmluZyAoIlByb2dyZXNzIHNo b3VsZCBiZSBiZWxvdyAxMDAuIik7Ci0rICAgICAgICAgICAgbV9oYm94LmhpZGUoKTsKLSsgICAg ICAgIH0KLSsKLSsgICAgICAgIG1fdG9wbGV2ZWwucmVzaXplKDEsIDEpOwotKyAgICAgICAgdGhp cy5zaG93KCk7Ci0rICAgIH0KLSsKLSsgICAgcHVibGljIG5ldyB2b2lkIHNob3coKSB7Ci0rICAg ICAgICBtX3RvcGxldmVsLnNob3dfYWxsKCk7Ci0rICAgIH0KLSsKLSsgICAgcHVibGljIG5ldyB2 b2lkIGhpZGUoKSB7Ci0rI2lmIFVTRV9HREtfV0FZTEFORAotKyAgICAgICAgaWYgKG1faXNfd2F5 bGFuZCkKLSsgICAgICAgICAgICByZWFsaXplX3N1cmZhY2UobnVsbCk7Ci0rI2VuZGlmCi0rICAg ICAgICBtX3RvcGxldmVsLmhpZGUoKTsKLSsgICAgfQotKwotKyAgICAvKioKLSsgICAgICogbW92 ZToKLSsgICAgICogQHg6IGxlZnQgcG9zaXRpb24gb2YgdGhlICNNZXNzYWdlRGlhbG9nCi0rICAg ICAqIEB5OiB0b3AgcG9zaXRpb24gb2YgdGhlICNNZXNzYWdlRGlhbG9nCi0rICAgICAqLwotKyAg ICBwcml2YXRlIHZvaWQgbW92ZShpbnQgeCwgaW50IHkpIHsKLSsgICAgICAgIG1fdG9wbGV2ZWwu bW92ZSh4LCB5KTsKLSsgICAgfQotKwotKyAgICBwcml2YXRlIHZvaWQgYWRqdXN0X3dpbmRvd19w b3NpdGlvbihHdGsuV2lkZ2V0IHdpbmRvdykgewotKyAgICAgICAgYWRqdXN0X3dpbmRvd19wb3Np dGlvbl9ob3Jpem9udGFsKHdpbmRvdyk7Ci0rICAgIH0KLSsKLSsgICAgLyoqCi0rICAgICAqIGFk anVzdF93aW5kb3dfcG9zaXRpb25faG9yaXpvbnRhbDoKLSsgICAgICogQHdpbmRvdzogQSBHdGsu V2lkZ2V0IG9mIHRoZSB0b3BsZXZlbCB3aW5kb3cuCi0rICAgICAqCi0rICAgICAqIEhvcml6b250 YWwgd3JpdGluZyBtb2RlIGJ1dCBub3QgdGhlIGhvcml6b250YWwgbG9va3VwIHRhYmxlCi0rICAg ICAqIHdoZW4gdGhlIGFsbG9jYXRpb24gaXMgZW1taXR0ZWQuCi0rICAgICAqLwotKyAgICBwcml2 YXRlIHZvaWQgYWRqdXN0X3dpbmRvd19wb3NpdGlvbl9ob3Jpem9udGFsKEd0ay5XaWRnZXQgd2lu ZG93KSB7Ci0rICAgICAgICBHZGsuUG9pbnQgY3Vyc29yX2xlZnRfYm90dG9tID0gewotKyAgICAg ICAgICAgICAgICBtX2N1cnNvcl9sb2NhdGlvbi54LAotKyAgICAgICAgICAgICAgICBtX2N1cnNv cl9sb2NhdGlvbi55ICsgbV9jdXJzb3JfbG9jYXRpb24uaGVpZ2h0Ci0rICAgICAgICB9OwotKwot KyAgICAgICAgR3RrLkFsbG9jYXRpb24gYWxsb2NhdGlvbjsKLSsgICAgICAgIG1fdG9wbGV2ZWwu Z2V0X2FsbG9jYXRpb24ob3V0IGFsbG9jYXRpb24pOwotKyAgICAgICAgR2RrLlBvaW50IHdpbmRv d19yaWdodF9ib3R0b20gPSB7Ci0rICAgICAgICAgICAgY3Vyc29yX2xlZnRfYm90dG9tLnggKyBh bGxvY2F0aW9uLndpZHRoLAotKyAgICAgICAgICAgIGN1cnNvcl9sZWZ0X2JvdHRvbS55ICsgYWxs b2NhdGlvbi5oZWlnaHQKLSsgICAgICAgIH07Ci0rCi0rICAgICAgICBHZGsuUmVjdGFuZ2xlIG1v bml0b3JfYXJlYSA9IGdldF9tb25pdG9yX2dlb21ldHJ5KHdpbmRvdyk7Ci0rICAgICAgICBpbnQg bW9uaXRvcl9yaWdodCA9IG1vbml0b3JfYXJlYS54ICsgbW9uaXRvcl9hcmVhLndpZHRoOwotKyAg ICAgICAgaW50IG1vbml0b3JfYm90dG9tID0gbW9uaXRvcl9hcmVhLnkgKyBtb25pdG9yX2FyZWEu aGVpZ2h0OwotKwotKyAgICAgICAgaW50IHgsIHk7Ci0rICAgICAgICBpZiAod2luZG93X3JpZ2h0 X2JvdHRvbS54ID4gbW9uaXRvcl9yaWdodCkKLSsgICAgICAgICAgICB4ID0gbW9uaXRvcl9yaWdo dCAtIGFsbG9jYXRpb24ud2lkdGg7Ci0rICAgICAgICBlbHNlCi0rICAgICAgICAgICAgeCA9IGN1 cnNvcl9sZWZ0X2JvdHRvbS54OwotKyAgICAgICAgaWYgKHggPCAwKQotKyAgICAgICAgICAgIHgg PSAwOwotKwotKyAgICAgICAgaWYgKHdpbmRvd19yaWdodF9ib3R0b20ueSA+IG1vbml0b3JfYm90 dG9tKQotKyAgICAgICAgICAgIHkgPSBtX2N1cnNvcl9sb2NhdGlvbi55IC0gYWxsb2NhdGlvbi5o ZWlnaHQ7Ci0rICAgICAgICBlbHNlCi0rICAgICAgICAgICAgeSA9IGN1cnNvcl9sZWZ0X2JvdHRv bS55OwotKyAgICAgICAgaWYgKHkgPCAwKQotKyAgICAgICAgICAgIHkgPSAwOwotKwotKyAgICAg ICAgbW92ZSh4LCB5KTsKLSsgICAgfQotKwotKyAgICBwcml2YXRlIEdkay5SZWN0YW5nbGUgZ2V0 X21vbml0b3JfZ2VvbWV0cnkoR3RrLldpZGdldCB3aW5kb3cpIHsKLSsgICAgICAgIEdkay5SZWN0 YW5nbGUgbW9uaXRvcl9hcmVhID0geyAwLCB9OwotKwotKyAgICAgICAgLy8gVXNlIGdldF9tb25p dG9yX2dlb21ldHJ5KCkgaW5zdGVhZCBvZiBnZXRfbW9uaXRvcl9hcmVhKCkuCi0rICAgICAgICAv LyBnZXRfbW9uaXRvcl9hcmVhKCkgZXhjbHVkZXMgZG9ja3MsIGJ1dCB0aGUgbG9va3VwIHdpbmRv dyBzaG91bGQgYmUKLSsgICAgICAgIC8vIHNob3duIG92ZXIgdGhlbS4KLSsgICAgICAgIEdkay5N b25pdG9yIG1vbml0b3IgPSB3aW5kb3cuZ2V0X2Rpc3BsYXkoKS5nZXRfbW9uaXRvcl9hdF9wb2lu dCgKLSsgICAgICAgICAgICAgICAgbV9jdXJzb3JfbG9jYXRpb24ueCwKLSsgICAgICAgICAgICAg ICAgbV9jdXJzb3JfbG9jYXRpb24ueSk7Ci0rICAgICAgICBtb25pdG9yX2FyZWEgPSBtb25pdG9y LmdldF9nZW9tZXRyeSgpOwotKyAgICAgICAgcmV0dXJuIG1vbml0b3JfYXJlYTsKLSsgICAgfQot KwotKyNpZiBVU0VfR0RLX1dBWUxBTkQKLSsgICAgcHJpdmF0ZSB2b2lkIHJlYWxpemVfd2luZG93 KGJvb2wgaW5pdGlhbCkgewotKyAgICAgICAgLy8gVGhlIGN1c3RvbSBzdXJmYWNlIGNhbiBiZSB1 c2VkIHdoZW4gdGhlIFdheWxhbmQgaW5wdXQtbWV0aG9kCi0rICAgICAgICAvLyBpcyBhY3RpdmF0 ZWQuCi0rICAgICAgICBpZiAobV9ub193YXlsYW5kX3BhbmVsKQotKyAgICAgICAgICAgIHJldHVy bjsKLSsgICAgICAgIHZhciB3aW5kb3cgPSBtX3RvcGxldmVsLmdldF93aW5kb3coKTsKLSsgICAg ICAgIGlmICghd2luZG93LmVuc3VyZV9uYXRpdmUoKSkgewotKyAgICAgICAgICAgIHdhcm5pbmco Ik5vIG5hdGl2ZSB3aW5kb3cuIik7Ci0rICAgICAgICAgICAgcmV0dXJuOwotKyAgICAgICAgfQot KyAgICAgICAgVHlwZSBpbnN0YW5jZV90eXBlID0gd2luZG93LmdldF90eXBlKCk7Ci0rICAgICAg ICBUeXBlIHdheWxhbmRfdHlwZSA9IHR5cGVvZihHZGtXYXlsYW5kLldpbmRvdyk7Ci0rICAgICAg ICBpZiAoIWluc3RhbmNlX3R5cGUuaXNfYSh3YXlsYW5kX3R5cGUpKSB7Ci0rICAgICAgICAgICAg d2FybmluZygiTm90IEdka1dpbmRvd1dheWxhbmQuIik7Ci0rICAgICAgICAgICAgcmV0dXJuOwot KyAgICAgICAgfQotKyAgICAgICAgaWYgKGluaXRpYWwpCi0rICAgICAgICAgICAgKChHZGtXYXls YW5kLldpbmRvdyl3aW5kb3cpLnNldF91c2VfY3VzdG9tX3N1cmZhY2UoKTsKLSsgICAgICAgIHZh ciBzdXJmYWNlID0gKChHZGtXYXlsYW5kLldpbmRvdyl3aW5kb3cpLmdldF93bF9zdXJmYWNlKCk7 Ci0rICAgICAgICByZWFsaXplX3N1cmZhY2Uoc3VyZmFjZSk7Ci0rICAgIH0KLSsjZW5kaWYKLSt9 Ci1kaWZmIC0tZ2l0IGEvdWkvZ3RrMy9wYW5lbC52YWxhIGIvdWkvZ3RrMy9wYW5lbC52YWxhCi1p bmRleCAzNjM4MzRlOS4uZDY1ZmZiYjMgMTAwNjQ0Ci0tLS0gYS91aS9ndGszL3BhbmVsLnZhbGEK LSsrKyBiL3VpL2d0azMvcGFuZWwudmFsYQotQEAgLTkzLDYgKzkzLDEwIEBAIGNsYXNzIFBhbmVs IDogSUJ1cy5QYW5lbFNlcnZpY2UgewotICAgICBwcml2YXRlIHVsb25nIG1fcmVnaXN0ZXJlZF9z dGF0dXNfbm90aWZpZXJfaXRlbV9pZDsKLSAgICAgcHJpdmF0ZSB1bm93bmVkIEZpbGVTdHJlYW0g bV9sb2c7Ci0gICAgIHByaXZhdGUgYm9vbCBtX3ZlcmJvc2U7Ci0rICAgIHByaXZhdGUgR0xpYi5I YXNoVGFibGU8dWludCwgTWVzc2FnZURpYWxvZz4gbV9wb3B1cF9kaWFsb2dzID0KLSsgICAgICAg ICAgICBuZXcgR0xpYi5IYXNoVGFibGU8dWludCwgTWVzc2FnZURpYWxvZz4oR0xpYi5kaXJlY3Rf aGFzaCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgR0xpYi5kaXJlY3RfZXF1YWwpOwotKyAgICBwcml2YXRlIHVpbnQgbV9wb3B1cF9kaWFsb2df aW5kZXg7Ci0gCi0gICAgIHByaXZhdGUgR0xpYi5MaXN0PEJpbmRpbmdDb21tb24uS2V5YmluZGlu Zz4gbV9rZXliaW5kaW5ncyA9Ci0gICAgICAgICAgICAgbmV3IEdMaWIuTGlzdDxCaW5kaW5nQ29t bW9uLktleWJpbmRpbmc+KCk7Ci1AQCAtMjQ2LDEyICsyNTAsMTIgQEAgY2xhc3MgUGFuZWwgOiBJ QnVzLlBhbmVsU2VydmljZSB7Ci0gICAgICAgICBtX3NldHRpbmdzX3BhbmVsID0gbmV3IEdMaWIu U2V0dGluZ3MoIm9yZy5mcmVlZGVza3RvcC5pYnVzLnBhbmVsIik7Ci0gCi0gICAgICAgICBtX3Nl dHRpbmdzX2dlbmVyYWwuY2hhbmdlZFsicHJlbG9hZC1lbmdpbmVzIl0uY29ubmVjdCgoa2V5KSA9 PiB7Ci0tICAgICAgICAgICAgICAgIHVwZGF0ZV9lbmdpbmVzKG1fc2V0dGluZ3NfZ2VuZXJhbC5n ZXRfc3RydihrZXkpLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsKTsKLSsg ICAgICAgICAgICB1cGRhdGVfZW5naW5lcyhtX3NldHRpbmdzX2dlbmVyYWwuZ2V0X3N0cnYoa2V5 KSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsKTsKLSAgICAgICAgIH0pOwotIAot ICAgICAgICAgbV9zZXR0aW5nc19nZW5lcmFsLmNoYW5nZWRbInN3aXRjaGVyLWRlbGF5LXRpbWUi XS5jb25uZWN0KChrZXkpID0+IHsKLS0gICAgICAgICAgICAgICAgc2V0X3N3aXRjaGVyX2RlbGF5 X3RpbWUoKTsKLSsgICAgICAgICAgICBzZXRfc3dpdGNoZXJfZGVsYXlfdGltZSgpOwotICAgICAg ICAgfSk7Ci0gCi0gICAgICAgICBtX3NldHRpbmdzX2dlbmVyYWwuY2hhbmdlZFsidXNlLXN5c3Rl bS1rZXlib2FyZC1sYXlvdXQiXS5jb25uZWN0KAotQEAgLTI2MCw3MiArMjY0LDcyIEBAIGNsYXNz IFBhbmVsIDogSUJ1cy5QYW5lbFNlcnZpY2UgewotICAgICAgICAgfSk7Ci0gCi0gICAgICAgICBt X3NldHRpbmdzX2dlbmVyYWwuY2hhbmdlZFsiZW1iZWQtcHJlZWRpdC10ZXh0Il0uY29ubmVjdCgo a2V5KSA9PiB7Ci0tICAgICAgICAgICAgICAgIHNldF9lbWJlZF9wcmVlZGl0X3RleHQoKTsKLSsg ICAgICAgICAgICBzZXRfZW1iZWRfcHJlZWRpdF90ZXh0KCk7Ci0gICAgICAgICB9KTsKLSAKLSAg ICAgICAgIG1fc2V0dGluZ3NfZ2VuZXJhbC5jaGFuZ2VkWyJ1c2UtZ2xvYmFsLWVuZ2luZSJdLmNv bm5lY3QoKGtleSkgPT4gewotLSAgICAgICAgICAgICAgICBzZXRfdXNlX2dsb2JhbF9lbmdpbmUo KTsKLSsgICAgICAgICAgICBzZXRfdXNlX2dsb2JhbF9lbmdpbmUoKTsKLSAgICAgICAgIH0pOwot IAotICAgICAgICAgbV9zZXR0aW5nc19nZW5lcmFsLmNoYW5nZWRbInVzZS14bW9kbWFwIl0uY29u bmVjdCgoa2V5KSA9PiB7Ci0tICAgICAgICAgICAgICAgIHNldF91c2VfeG1vZG1hcCgpOwotKyAg ICAgICAgICAgIHNldF91c2VfeG1vZG1hcCgpOwotICAgICAgICAgfSk7Ci0gCi0gICAgICAgICBt X3NldHRpbmdzX2hvdGtleS5jaGFuZ2VkWyJ0cmlnZ2VycyJdLmNvbm5lY3QoKGtleSkgPT4gewot LSAgICAgICAgICAgICAgICBCaW5kaW5nQ29tbW9uLnVuYmluZF9zd2l0Y2hfc2hvcnRjdXQoCi0t ICAgICAgICAgICAgICAgICAgICAgICAgQmluZGluZ0NvbW1vbi5LZXlFdmVudEZ1bmNUeXBlLklN RV9TV0lUQ0hFUiwKLS0gICAgICAgICAgICAgICAgICAgICAgICBtX2tleWJpbmRpbmdzKTsKLS0g ICAgICAgICAgICAgICAgbV9rZXliaW5kaW5ncyA9IG51bGw7Ci0tICAgICAgICAgICAgICAgIGJp bmRfc3dpdGNoX3Nob3J0Y3V0KCk7Ci0rICAgICAgICAgICAgQmluZGluZ0NvbW1vbi51bmJpbmRf c3dpdGNoX3Nob3J0Y3V0KAotKyAgICAgICAgICAgICAgICAgICAgQmluZGluZ0NvbW1vbi5LZXlF dmVudEZ1bmNUeXBlLklNRV9TV0lUQ0hFUiwKLSsgICAgICAgICAgICAgICAgICAgIG1fa2V5Ymlu ZGluZ3MpOwotKyAgICAgICAgICAgIG1fa2V5YmluZGluZ3MgPSBudWxsOwotKyAgICAgICAgICAg IGJpbmRfc3dpdGNoX3Nob3J0Y3V0KCk7Ci0gICAgICAgICB9KTsKLSAKLSAgICAgICAgIG1fc2V0 dGluZ3NfcGFuZWwuY2hhbmdlZFsiY3VzdG9tLWZvbnQiXS5jb25uZWN0KChrZXkpID0+IHsKLS0g ICAgICAgICAgICAgICAgQmluZGluZ0NvbW1vbi5zZXRfY3VzdG9tX2ZvbnQobV9zZXR0aW5nc19w YW5lbCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVs bCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmIG1f Y3NzX3Byb3ZpZGVyKTsKLSsgICAgICAgICAgICBCaW5kaW5nQ29tbW9uLnNldF9jdXN0b21fZm9u dChtX3NldHRpbmdzX3BhbmVsLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG51bGwsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cmVmIG1fY3NzX3Byb3ZpZGVyKTsKLSAgICAgICAgIH0pOwotIAotICAgICAgICAgbV9zZXR0aW5n c19wYW5lbC5jaGFuZ2VkWyJ1c2UtY3VzdG9tLWZvbnQiXS5jb25uZWN0KChrZXkpID0+IHsKLS0g ICAgICAgICAgICAgICAgQmluZGluZ0NvbW1vbi5zZXRfY3VzdG9tX2ZvbnQobV9zZXR0aW5nc19w YW5lbCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVs bCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmIG1f Y3NzX3Byb3ZpZGVyKTsKLSsgICAgICAgICAgICBCaW5kaW5nQ29tbW9uLnNldF9jdXN0b21fZm9u dChtX3NldHRpbmdzX3BhbmVsLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG51bGwsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cmVmIG1fY3NzX3Byb3ZpZGVyKTsKLSAgICAgICAgIH0pOwotIAotICAgICAgICAgbV9zZXR0aW5n c19wYW5lbC5jaGFuZ2VkWyJjdXN0b20tdGhlbWUiXS5jb25uZWN0KChrZXkpID0+IHsKLS0gICAg ICAgICAgICAgICAgQmluZGluZ0NvbW1vbi5zZXRfY3VzdG9tX3RoZW1lKG1fc2V0dGluZ3NfcGFu ZWwpOwotKyAgICAgICAgICAgIEJpbmRpbmdDb21tb24uc2V0X2N1c3RvbV90aGVtZShtX3NldHRp bmdzX3BhbmVsKTsKLSAgICAgICAgIH0pOwotIAotICAgICAgICAgbV9zZXR0aW5nc19wYW5lbC5j aGFuZ2VkWyJ1c2UtY3VzdG9tLXRoZW1lIl0uY29ubmVjdCgoa2V5KSA9PiB7Ci0tICAgICAgICAg ICAgICAgIEJpbmRpbmdDb21tb24uc2V0X2N1c3RvbV90aGVtZShtX3NldHRpbmdzX3BhbmVsKTsK LSsgICAgICAgICAgICBCaW5kaW5nQ29tbW9uLnNldF9jdXN0b21fdGhlbWUobV9zZXR0aW5nc19w YW5lbCk7Ci0gICAgICAgICB9KTsKLSAKLSAgICAgICAgIG1fc2V0dGluZ3NfcGFuZWwuY2hhbmdl ZFsiY3VzdG9tLWljb24iXS5jb25uZWN0KChrZXkpID0+IHsKLS0gICAgICAgICAgICAgICAgQmlu ZGluZ0NvbW1vbi5zZXRfY3VzdG9tX2ljb24obV9zZXR0aW5nc19wYW5lbCk7Ci0rICAgICAgICAg ICAgQmluZGluZ0NvbW1vbi5zZXRfY3VzdG9tX2ljb24obV9zZXR0aW5nc19wYW5lbCk7Ci0gICAg ICAgICB9KTsKLSAKLSAgICAgICAgIG1fc2V0dGluZ3NfcGFuZWwuY2hhbmdlZFsidXNlLWN1c3Rv bS1pY29uIl0uY29ubmVjdCgoa2V5KSA9PiB7Ci0tICAgICAgICAgICAgICAgIEJpbmRpbmdDb21t b24uc2V0X2N1c3RvbV9pY29uKG1fc2V0dGluZ3NfcGFuZWwpOwotKyAgICAgICAgICAgIEJpbmRp bmdDb21tb24uc2V0X2N1c3RvbV9pY29uKG1fc2V0dGluZ3NfcGFuZWwpOwotICAgICAgICAgfSk7 Ci0gCi0gICAgICAgICBtX3NldHRpbmdzX3BhbmVsLmNoYW5nZWRbInVzZS1nbHlwaC1mcm9tLWVu Z2luZS1sYW5nIl0uY29ubmVjdCgoa2V5KSA9PgotICAgICAgICAgewotLSAgICAgICAgICAgICAg ICBzZXRfdXNlX2dseXBoX2Zyb21fZW5naW5lX2xhbmcoKTsKLSsgICAgICAgICAgICBzZXRfdXNl X2dseXBoX2Zyb21fZW5naW5lX2xhbmcoKTsKLSAgICAgICAgIH0pOwotIAotICAgICAgICAgbV9z ZXR0aW5nc19wYW5lbC5jaGFuZ2VkWyJzaG93LWljb24tb24tc3lzdHJheSJdLmNvbm5lY3QoKGtl eSkgPT4gewotLSAgICAgICAgICAgICAgICBzZXRfc2hvd19pY29uX29uX3N5c3RyYXkodHJ1ZSk7 Ci0rICAgICAgICAgICAgc2V0X3Nob3dfaWNvbl9vbl9zeXN0cmF5KHRydWUpOwotICAgICAgICAg fSk7Ci0gCi0gICAgICAgICBtX3NldHRpbmdzX3BhbmVsLmNoYW5nZWRbImxvb2t1cC10YWJsZS1v cmllbnRhdGlvbiJdLmNvbm5lY3QoKGtleSkgPT4gewotLSAgICAgICAgICAgICAgICBzZXRfbG9v a3VwX3RhYmxlX29yaWVudGF0aW9uKCk7Ci0rICAgICAgICAgICAgc2V0X2xvb2t1cF90YWJsZV9v cmllbnRhdGlvbigpOwotICAgICAgICAgfSk7Ci0gCi0gICAgICAgICBtX3NldHRpbmdzX3BhbmVs LmNoYW5nZWRbInNob3ciXS5jb25uZWN0KChrZXkpID0+IHsKLS0gICAgICAgICAgICAgICAgc2V0 X3Nob3dfcHJvcGVydHlfcGFuZWwoKTsKLSsgICAgICAgICAgICBzZXRfc2hvd19wcm9wZXJ0eV9w YW5lbCgpOwotICAgICAgICAgfSk7Ci0gCi0gICAgICAgICBtX3NldHRpbmdzX3BhbmVsLmNoYW5n ZWRbInRpbWVvdXQiXS5jb25uZWN0KChrZXkpID0+IHsKLS0gICAgICAgICAgICAgICAgc2V0X3Rp bWVvdXRfcHJvcGVydHlfcGFuZWwoKTsKLSsgICAgICAgICAgICBzZXRfdGltZW91dF9wcm9wZXJ0 eV9wYW5lbCgpOwotICAgICAgICAgfSk7Ci0gCi0gICAgICAgICBtX3NldHRpbmdzX3BhbmVsLmNo YW5nZWRbImZvbGxvdy1pbnB1dC1jdXJzb3Itd2hlbi1hbHdheXMtc2hvd24iXQotQEAgLTMzNCwx MSArMzM4LDI3IEBAIGNsYXNzIFBhbmVsIDogSUJ1cy5QYW5lbFNlcnZpY2UgewotICAgICAgICAg fSk7Ci0gCi0gICAgICAgICBtX3NldHRpbmdzX3BhbmVsLmNoYW5nZWRbInhrYi1pY29uLXJnYmEi XS5jb25uZWN0KChrZXkpID0+IHsKLS0gICAgICAgICAgICAgICAgc2V0X3hrYl9pY29uX3JnYmEo KTsKLSsgICAgICAgICAgICBzZXRfeGtiX2ljb25fcmdiYSgpOwotICAgICAgICAgfSk7Ci0gCi0g ICAgICAgICBtX3NldHRpbmdzX3BhbmVsLmNoYW5nZWRbInByb3BlcnR5LWljb24tZGVsYXktdGlt ZSJdLmNvbm5lY3QoKGtleSkgPT4gewotLSAgICAgICAgICAgICAgICBzZXRfcHJvcGVydHlfaWNv bl9kZWxheV90aW1lKCk7Ci0rICAgICAgICAgICAgc2V0X3Byb3BlcnR5X2ljb25fZGVsYXlfdGlt ZSgpOwotKyAgICAgICAgfSk7Ci0rCi0rICAgICAgICB0aGlzLnNlbmRfbWVzc2FnZV9yZWNlaXZl ZC5jb25uZWN0KChvLCBtKSA9PiB7Ci0rICAgICAgICAgICAgdWludCBkb21haW4gPSBtLmdldF9k b21haW4oKTsKLSsgICAgICAgICAgICBzd2l0Y2ggKGRvbWFpbikgewotKyAgICAgICAgICAgIGNh c2UgSUJ1cy5NZXNzYWdlRG9tYWluLkVOR0lORToKLSsgICAgICAgICAgICAgICAgc2V0X21lc3Nh Z2VfZW5naW5lKG0pOwotKyAgICAgICAgICAgICAgICBicmVhazsKLSsgICAgICAgICAgICBjYXNl IElCdXMuTWVzc2FnZURvbWFpbi5QQU5FTDoKLSsgICAgICAgICAgICAgICAgc2V0X21lc3NhZ2Vf cGFuZWwobSk7Ci0rICAgICAgICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgICAgIGRlZmF1bHQ6 Ci0rICAgICAgICAgICAgICAgIHdhcm5pbmcoIlNlbmRNZXNzYWdlUmVjZWl2ZWQgZG9lcyBub3Qg c3VwcG9ydCB0aGUgZG9tYWluICV1IiwKLSsgICAgICAgICAgICAgICAgICAgICAgICBkb21haW4p OwotKyAgICAgICAgICAgICAgICBicmVhazsKLSsgICAgICAgICAgICB9Ci0gICAgICAgICB9KTsK LSAgICAgfQotIAotQEAgLTg1NSw2ICs4NzUsNjcgQEAgY2xhc3MgUGFuZWwgOiBJQnVzLlBhbmVs U2VydmljZSB7Ci0gICAgIH0KLSAKLSAKLSsgICAgcHJpdmF0ZSB2b2lkIHNldF9tZXNzYWdlX2Vu Z2luZShJQnVzLk1lc3NhZ2UgbWVzc2FnZSkgewotKyAgICAgICAgdWludCBjb2RlID0gbWVzc2Fn ZS5nZXRfY29kZSgpOwotKyAgICAgICAgc3dpdGNoIChjb2RlKSB7Ci0rICAgICAgICBjYXNlIElC dXMuRW5naW5lTXNnQ29kZS5JTlZBTElEX0NPTVBPU0VfU0VRVUVOQ0U6Ci0rICAgICAgICAgICAg c2V0X21lc3NhZ2VfZW5naW5lX2ludmFsaWRfY29tcG9zZShtZXNzYWdlKTsKLSsgICAgICAgICAg ICBicmVhazsKLSsgICAgICAgIGRlZmF1bHQ6Ci0rICAgICAgICAgICAgc2V0X21lc3NhZ2VfZ2Vu ZXJhbChtZXNzYWdlKTsKLSsgICAgICAgICAgICBicmVhazsKLSsgICAgICAgIH0KLSsgICAgfQot KwotKwotKyAgICBwcml2YXRlIHZvaWQgc2V0X21lc3NhZ2VfZW5naW5lX2ludmFsaWRfY29tcG9z ZShJQnVzLk1lc3NhZ2UgbWVzc2FnZSkgewotKyAgICAgICAgdmFyIGRpc3BsYXkgPSBHZGsuRGlz cGxheS5nZXRfZGVmYXVsdCgpOwotKyAgICAgICAgZGlzcGxheS5iZWVwKCk7Ci0rICAgIH0KLSsK LSsKLSsgICAgcHJpdmF0ZSB2b2lkIHNldF9tZXNzYWdlX3BhbmVsKElCdXMuTWVzc2FnZSBtZXNz YWdlKSB7Ci0rICAgICAgICB1aW50IGNvZGUgPSBtZXNzYWdlLmdldF9jb2RlKCk7Ci0rICAgICAg ICBzd2l0Y2ggKGNvZGUpIHsKLSsgICAgICAgIGNhc2UgSUJ1cy5QYW5lbFNlcnZpY2VNc2dDb2Rl LkxPQURJTkdfVU5JQ09ERToKLSsgICAgICAgICAgICBzZXRfbWVzc2FnZV9nZW5lcmFsKG1lc3Nh Z2UpOwotKyAgICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgfQotKyAgICB9Ci0rCi0rCi0rICAg IHByaXZhdGUgdm9pZCBzZXRfbWVzc2FnZV9nZW5lcmFsKElCdXMuTWVzc2FnZSBtZXNzYWdlKSB7 Ci0rICAgICAgICBNZXNzYWdlRGlhbG9nIHBvcHVwID0gbnVsbDsKLSsgICAgICAgIHVpbnQgc2Vy aWFsID0gbWVzc2FnZS5nZXRfc2VyaWFsKCk7Ci0rICAgICAgICBpZiAoc2VyaWFsICE9IDApCi0r ICAgICAgICAgICAgcG9wdXAgPSBtX3BvcHVwX2RpYWxvZ3MubG9va3VwKHNlcmlhbCk7Ci0rICAg ICAgICBlbHNlCi0rICAgICAgICAgICAgc2VyaWFsID0gbV9wb3B1cF9kaWFsb2dfaW5kZXgrKyAr IDIwMDAwOwotKyAgICAgICAgaWYgKHBvcHVwICE9IG51bGwpIHsKLSsgICAgICAgICAgICBwb3B1 cC51cGRhdGVfbWVzc2FnZShtZXNzYWdlKTsKLSsgICAgICAgIH0gZWxzZSB7Ci0rICAgICAgICAg ICAgcG9wdXAgPSBuZXcgTWVzc2FnZURpYWxvZyhtX2lzX3dheWxhbmQsCi0rI2lmIFVTRV9HREtf V0FZTEFORAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV93YXlsYW5k X29iamVjdF9wYXRoID09IG51bGwsCi0rI2Vsc2UKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHRydWUsCi0rI2VuZGlmCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBtZXNzYWdlKTsKLSsgICAgICAgICAgICBwb3B1cC5jbG9zZS5jb25uZWN0KCh3 KSA9PiB7Ci0rICAgICAgICAgICAgICAgIHBvcHVwLmhpZGUoKTsKLSsgICAgICAgICAgICAgICAg bV9wb3B1cF9kaWFsb2dzLnJlbW92ZShzZXJpYWwpOwotKyAgICAgICAgICAgICAgICBwb3B1cCA9 IG51bGw7Ci0rICAgICAgICAgICAgfSk7Ci0rI2lmIFVTRV9HREtfV0FZTEFORAotKyAgICAgICAg ICAgIHBvcHVwLnJlYWxpemVfc3VyZmFjZS5jb25uZWN0KAotKyAgICAgICAgICAgICAgICAgICAg KHcsIHMpID0+IHRoaXMucmVhbGl6ZV9zdXJmYWNlKHMpKTsKLSsjZW5kaWYKLSsgICAgICAgICAg ICBtX3BvcHVwX2RpYWxvZ3MuaW5zZXJ0KHNlcmlhbCwgcG9wdXApOwotKyAgICAgICAgICAgIHBv cHVwLnNob3coKTsKLSsgICAgICAgIH0KLSsgICAgfQotKwotKwotICAgICBwcml2YXRlIGludCBj b21wYXJlX3ZlcnNpb25zKHN0cmluZyB2ZXJzaW9uMSwgc3RyaW5nIHZlcnNpb24yKSB7Ci0gICAg ICAgICBzdHJpbmdbXSB2ZXJzaW9uMV9saXN0ID0gdmVyc2lvbjEuc3BsaXQoIi4iKTsKLSAgICAg ICAgIHN0cmluZ1tdIHZlcnNpb24yX2xpc3QgPSB2ZXJzaW9uMi5zcGxpdCgiLiIpOwotZGlmZiAt LWdpdCBhL3VpL2d0azMvcGFuZWxiaW5kaW5nLnZhbGEgYi91aS9ndGszL3BhbmVsYmluZGluZy52 YWxhCi1pbmRleCAxMGQwOWQ3NS4uZjA4MjdiM2UgMTAwNjQ0Ci0tLS0gYS91aS9ndGszL3BhbmVs YmluZGluZy52YWxhCi0rKysgYi91aS9ndGszL3BhbmVsYmluZGluZy52YWxhCi1AQCAtMyw3ICsz LDcgQEAKLSAgKiBpYnVzIC0gVGhlIElucHV0IEJ1cwotICAqCi0gICogQ29weXJpZ2h0KGMpIDIw MTggUGVuZyBIdWFuZyA8c2hhd24ucC5odWFuZ0BnbWFpbC5jb20+Ci0tICogQ29weXJpZ2h0KGMp IDIwMTgtMjAyNCBUYWthbyBGdWp3aWFyYSA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KLSsg KiBDb3B5cmlnaHQoYykgMjAxOC0yMDI1IFRha2FvIEZ1andpYXJhIDx0YWthby5mdWppd2FyYTFA Z21haWwuY29tPgotICAqCi0gICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLUBAIC05MDIsNiArOTAyLDkgQEAgY2xh c3MgUGFuZWxCaW5kaW5nIDogSUJ1cy5QYW5lbFNlcnZpY2UgewotICAgICAgICAgICAgICAgICAg ICAgICAgICJpcy1leHRlbnNpb24iLCB0cnVlKTsKLSAgICAgICAgICAgICAgICAgcGFuZWxfZXh0 ZW5zaW9uKGNsb3NlX2V2ZW50KTsKLSAgICAgICAgICAgICB9KTsKLSsgICAgICAgICAgICBtX2Vt b2ppZXIuc2VuZF9tZXNzYWdlLmNvbm5lY3QoKG0pID0+IHsKLSsgICAgICAgICAgICAgICAgc2Vu ZF9tZXNzYWdlKG0pOwotKyAgICAgICAgICAgIH0pOwotICAgICAgICAgfQotICAgICAgICAgbV9l bW9qaWVyLnJlc2V0KCk7Ci0gICAgICAgICBtX2Vtb2ppZXIuc2V0X2Fubm90YXRpb24oIiIpOwot LS0gCi0yLjQ5LjAKLQotRnJvbSA0MGZjYmViYjhhNGE2MDE3MmQ4MDQ4MmUzNWRjYWIyZjM5Yjgw YzJkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogZnVqaXdhcmF0IDx0YWthby5mdWpp d2FyYTFAZ21haWwuY29tPgotRGF0ZTogU3VuLCAxIEp1biAyMDI1IDIwOjMyOjA1ICswOTAwCi1T dWJqZWN0OiBbUEFUQ0ggMy8zXSBBZGQgd29ya2Fyb3VuZCB1bnRpbCBHTk9NRSBoYW5kbGUgSUJ1 c01lc3NhZ2UKLQotVGhlIElCdXNFbmdpbmUncyBmb2N1cy1pZCBmZWF0dXJlIGlzIG5vdyBhbHdh eXMgdXNlZCBpbiBjYXNlIHRoZSBlbmdpbmUKLWlzIElCdXNFbmdpbmVTaW1wbGUgdG8gbWFrZSBh IHdvcmthcm91bmQgaW4gR05PTUUgYW5kIFdheWxhbmQgYmVjYXVzZQotR05PTUUtU2hlbGwgZG9l cyBub3QgaW1wbGVtZW50IHRoZSBuZXcgRC1CdXMgbWV0aG9kCi0iU2VuZE1lc3NhZ2VSZWNlaXZl ZCIgeWV0IGFuZCB0aGUgV2F5bGFuZCBpbnB1dC1tZXRob2QgcHJvdG9jb2wgY2Fubm90Ci1nZXQg dGhlIGlucHV0IHN1cmZhY2UgZm9yIHRoZSBXYXlsYW5kIHhkZy1zeXN0ZW0tYmVsbCBwcm90b2Nv bC4KLQotVGhlIGF1eGlsaWFyeSB0ZXh0IGlzIHNob3duIHdpdGggdGhlIGNhbmRpZGF0ZSBwb3B1 cCBpbiBHTk9NRSBhcyBhCi13b3JrYXJvdW5kIHRvIG5vdGlmeSB0aGUgVW5pY29kZSBsb2FkaW5n IG1lc3NhZ2UgdW50aWwgR05PTUUtU2hlbGwKLWltcGxlbWVudHMgdGhlIEQtQnVzIG1ldGhvZCAi U2VuZE1lc3NhZ2VSZWNlaXZlZCIuCi0KLVVwZGF0ZSB0aGUgUE9UIGZpbGUuCi0KLUJVRz1odHRw czovL2dpdGh1Yi5jb20vaWJ1cy9pYnVzL2lzc3Vlcy8yNzIyCi0tLS0KLSBwby9QT1RGSUxFUy5p biAgICAgICAgICAgICAgfCAgIDIgKwotIHNyYy9pYnVzZW5naW5lLmMgICAgICAgICAgICB8ICAx OCArKy0KLSBzcmMvaWJ1c2VuZ2luZXNpbXBsZS5jICAgICAgfCAxMzQgKysrKysrKysrKysrKysr KysrKysrKy0KLSB1aS9ndGszL2NhbmRpZGF0ZXBhbmVsLnZhbGEgfCAgNTUgKysrKysrKy0tLQot IHVpL2d0azMvZW1vamllci52YWxhICAgICAgICB8ICA0NCArKysrKystLQotIHVpL2d0azMvZXh0 ZW5zaW9uLnZhbGEgICAgICB8ICAgMyArLQotIHVpL2d0azMvcGFuZWxiaW5kaW5nLnZhbGEgICB8 ICAgNSArLQotIDcgZmlsZXMgY2hhbmdlZCwgMzM4IGluc2VydGlvbnMoKyksIDEzNCBkZWxldGlv bnMoLSkKLQotZGlmZiAtLWdpdCBhL3BvL1BPVEZJTEVTLmluIGIvcG8vUE9URklMRVMuaW4KLWlu ZGV4IGM1NjQwOGY3Li5kOTE3OGM4NSAxMDA2NDQKLS0tLSBhL3BvL1BPVEZJTEVTLmluCi0rKysg Yi9wby9QT1RGSUxFUy5pbgotQEAgLTQwLDkgKzQwLDExIEBAIHNldHVwL2tleWJvYXJkc2hvcnRj dXQucHkKLSBzZXR1cC9tYWluLnB5Ci0gc2V0dXAvc2V0dXAudWkKLSBzcmMvaWJ1c2J1cy5jCi0r c3JjL2lidXNjb21wb3NldGFibGUuYwotIHNyYy9pYnVzY29uZmlnLmMKLSBzcmMvaWJ1c2Vtb2pp Z2VuLmgKLSBzcmMvaWJ1c2VuZ2luZS5jCi0rc3JjL2lidXNlbmdpbmVzaW1wbGUuYwotIHNyYy9p YnVzZmFjdG9yeS5jCi0gc3JjL2lidXNob3RrZXkuYwotIHNyYy9pYnVzaW5wdXRjb250ZXh0LmMK LWRpZmYgLS1naXQgYS9zcmMvaWJ1c2VuZ2luZS5jIGIvc3JjL2lidXNlbmdpbmUuYwotaW5kZXgg NGUxM2IyM2QuLjFmMTJkMjUzIDEwMDY0NAotLS0tIGEvc3JjL2lidXNlbmdpbmUuYwotKysrIGIv c3JjL2lidXNlbmdpbmUuYwotQEAgLTM0LDYgKzM0LDggQEAKLSAjZGVmaW5lIElCVVNfRU5HSU5F X0dFVF9QUklWQVRFKG8pICBcCi0gICAgKChJQnVzRW5naW5lUHJpdmF0ZSAqKWlidXNfZW5naW5l X2dldF9pbnN0YW5jZV9wcml2YXRlIChvKSkKLSAKLStleHRlcm4gR1R5cGUgICBpYnVzX2VuZ2lu ZV9zaW1wbGVfZ2V0X3R5cGUgICAgICAgKHZvaWQpOwotKwotIGVudW0gewotICAgICBQUk9DRVNT X0tFWV9FVkVOVCwKLSAgICAgRk9DVVNfSU4sCi1AQCAtMTU0NCw3ICsxNTQ2LDIxIEBAIF9pYnVz X2VuZ2luZV9oYXNfZm9jdXNfaWQgKElCdXNFbmdpbmUgICAgICAqZW5naW5lLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEdEQnVzQ29ubmVjdGlvbiAqY29ubmVjdGlvbiwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICBHRXJyb3IgICAgICAgICAqKmVycm9yKQotIHsKLS0gICAgR1Zh cmlhbnQgKnJldHZhbCA9IGdfdmFyaWFudF9uZXdfYm9vbGVhbiAoZW5naW5lLT5wcml2LT5oYXNf Zm9jdXNfaWQpOwotKyAgICBHVmFyaWFudCAqcmV0dmFsOwotKwotKyNpZm5kZWYgSUJVU19UWVBF X0VOR0lORV9TSU1QTEUKLSsjZGVmaW5lIElCVVNfVFlQRV9FTkdJTkVfU0lNUExFIChpYnVzX2Vu Z2luZV9zaW1wbGVfZ2V0X3R5cGUgKCkpCi0rI2RlZmluZSBfX0lCVVNfU0VUX0xPQ0FMX0VOR0lO RV9TSU1QTEUKLSsjZW5kaWYKLSsgICAgLyogU2hvdWxkIG5vdCB1c2UgSUJVU19JU19FTkdJTkVf U0lNUExFKCkgbm90IHRvIGVmZmVjdCB0aGUgaW5oZXJpdGVkCi0rICAgICAqIGNsYXNzLiovCi0r ICAgIGlmIChHX09CSkVDVF9UWVBFIChlbmdpbmUpID09IElCVVNfVFlQRV9FTkdJTkVfU0lNUExF KQotKyAgICAgICAgZW5naW5lLT5wcml2LT5oYXNfZm9jdXNfaWQgPSBUUlVFOwotKyNpZmRlZiBf X0lCVVNfU0VUX0xPQ0FMX0VOR0lORV9TSU1QTEUKLSsjdW5kZWYgX19JQlVTX1NFVF9MT0NBTF9F TkdJTkVfU0lNUExFCi0rI3VuZGVmIElCVVNfVFlQRV9FTkdJTkVfU0lNUExFCi0rI2VuZGlmCi0r ICAgIHJldHZhbCA9IGdfdmFyaWFudF9uZXdfYm9vbGVhbiAoZW5naW5lLT5wcml2LT5oYXNfZm9j dXNfaWQpOwotICAgICBnX2Fzc2VydCAocmV0dmFsKTsKLSAgICAgcmV0dXJuIHJldHZhbDsKLSB9 Ci1kaWZmIC0tZ2l0IGEvc3JjL2lidXNlbmdpbmVzaW1wbGUuYyBiL3NyYy9pYnVzZW5naW5lc2lt cGxlLmMKLWluZGV4IDRlMGJhNDBmLi4xNWM0NWMyZSAxMDA2NDQKLS0tLSBhL3NyYy9pYnVzZW5n aW5lc2ltcGxlLmMKLSsrKyBiL3NyYy9pYnVzZW5naW5lc2ltcGxlLmMKLUBAIC03NSw2ICs3NSw3 IEBAIHN0cnVjdCBfSUJ1c0VuZ2luZVNpbXBsZVByaXZhdGUgewotICAgICBHU3RyaW5nICAgICAg ICAgICAgKnRlbnRhdGl2ZV9tYXRjaDsKLSAgICAgaW50ICAgICAgICAgICAgICAgICB0ZW50YXRp dmVfbWF0Y2hfbGVuOwotICAgICBjaGFyICAgICAgICAgICAgICAgKnRlbnRhdGl2ZV9lbW9qaTsK LSsgICAgY2hhciAgICAgICAgICAgICAgICpjbGllbnQ7Ci0gCi0gICAgIGd1aW50ICAgICAgICAg ICAgICAgaGV4X21vZGVfZW5hYmxlZCA6IDE7Ci0gICAgIGd1aW50ICAgICAgICAgICAgICAgaW5f aGV4X3NlcXVlbmNlIDogMTsKLUBAIC04NSw2ICs4Niw4IEBAIHN0cnVjdCBfSUJ1c0VuZ2luZVNp bXBsZVByaXZhdGUgewotICAgICBJQnVzTG9va3VwVGFibGUgICAgKmxvb2t1cF90YWJsZTsKLSAg ICAgZ2Jvb2xlYW4gICAgICAgICAgICBsb29rdXBfdGFibGVfdmlzaWJsZTsKLSAgICAgSUJ1c1Rl eHQgICAgICAgICAgICp1cGRhdGVkX3ByZWVkaXQ7Ci0rICAgIGdib29sZWFuICAgICAgICAgICAg ZG9faW5mb3JtX3VzZXJfZXJyb3I7Ci0rICAgIGd1aW50ICAgICAgICAgICAgICAgaW5mb3JtX3Vz ZXJfZXJyb3JfdGltZW91dF9pZDsKLSB9OwotIAotIGd1aW50IENPTVBPU0VfQlVGRkVSX1NJWkUg PSAyMDsKLUBAIC05Niw3ICs5OSwxMyBAQCBzdGF0aWMgSUJ1c0NvbXBvc2VUYWJsZUV4ICplbl9j b21wb3NlX3RhYmxlOwotIC8qIGZ1bmN0aW9ucyBwcm90b3R5cGUgKi8KLSBzdGF0aWMgdm9pZCAg ICAgaWJ1c19lbmdpbmVfc2ltcGxlX2Rlc3Ryb3kgICAgICAoSUJ1c0VuZ2luZVNpbXBsZSAgICpz aW1wbGUpOwotIHN0YXRpYyB2b2lkICAgICBpYnVzX2VuZ2luZV9zaW1wbGVfZm9jdXNfaW4gICAg IChJQnVzRW5naW5lICAgICAgICAgKmVuZ2luZSk7Ci0rc3RhdGljIHZvaWQgICAgIGlidXNfZW5n aW5lX3NpbXBsZV9mb2N1c19pbl9pZCAgKElCdXNFbmdpbmUgICAgICAgICAqZW5naW5lLAotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hh cgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAqb2JqZWN0X3BhdGgsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAgICAqY2xpZW50KTsKLSBzdGF0 aWMgdm9pZCAgICAgaWJ1c19lbmdpbmVfc2ltcGxlX2ZvY3VzX291dCAgICAoSUJ1c0VuZ2luZSAg ICAgICAgICplbmdpbmUpOwotK3N0YXRpYyB2b2lkICAgICBpYnVzX2VuZ2luZV9zaW1wbGVfZm9j dXNfb3V0X2lkIChJQnVzRW5naW5lICAgICAgICAgKmVuZ2luZSwKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgICpjbGll bnQpOwotIHN0YXRpYyB2b2lkICAgICBpYnVzX2VuZ2luZV9zaW1wbGVfcmVzZXQgICAgICAgIChJ QnVzRW5naW5lICAgICAgICAgKmVuZ2luZSk7Ci0gc3RhdGljIGdib29sZWFuIGlidXNfZW5naW5l X3NpbXBsZV9wcm9jZXNzX2tleV9ldmVudAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChJQnVzRW5naW5lICAgICAgICAgKmVuZ2luZSwKLUBAIC0xMzUs NyArMTQ0LDExIEBAIGlidXNfZW5naW5lX3NpbXBsZV9jbGFzc19pbml0IChJQnVzRW5naW5lU2lt cGxlQ2xhc3MgKmNsYXNzKQotICAgICAgICAgKElCdXNPYmplY3REZXN0cm95RnVuYykgaWJ1c19l bmdpbmVfc2ltcGxlX2Rlc3Ryb3k7Ci0gCi0gICAgIGVuZ2luZV9jbGFzcy0+Zm9jdXNfaW4gID0g aWJ1c19lbmdpbmVfc2ltcGxlX2ZvY3VzX2luOwotKyAgICBlbmdpbmVfY2xhc3MtPmZvY3VzX2lu X2lkCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gaWJ1c19lbmdpbmVfc2ltcGxlX2Zv Y3VzX2luX2lkOwotICAgICBlbmdpbmVfY2xhc3MtPmZvY3VzX291dCA9IGlidXNfZW5naW5lX3Np bXBsZV9mb2N1c19vdXQ7Ci0rICAgIGVuZ2luZV9jbGFzcy0+Zm9jdXNfb3V0X2lkCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgID0gaWJ1c19lbmdpbmVfc2ltcGxlX2ZvY3VzX291dF9pZDsK LSAgICAgZW5naW5lX2NsYXNzLT5yZXNldCAgICAgPSBpYnVzX2VuZ2luZV9zaW1wbGVfcmVzZXQ7 Ci0gICAgIGVuZ2luZV9jbGFzcy0+cHJvY2Vzc19rZXlfZXZlbnQKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgPSBpYnVzX2VuZ2luZV9zaW1wbGVfcHJvY2Vzc19rZXlfZXZlbnQ7Ci1AQCAt MTU4LDYgKzE3MSwyMiBAQCBpYnVzX2VuZ2luZV9zaW1wbGVfY2xhc3NfaW5pdCAoSUJ1c0VuZ2lu ZVNpbXBsZUNsYXNzICpjbGFzcykKLSAgICAgZW5fY29tcG9zZV90YWJsZSA9IGlidXNfY29tcG9z ZV90YWJsZV9kZXNlcmlhbGl6ZSAoY29udGVudHMsIGxlbmd0aCk7Ci0gfQotIAotKwotK3N0YXRp YyBnYm9vbGVhbgotK2luZm9ybV91c2VyX2Vycm9yX3RpbWVvdXRfY2IgKGdwb2ludGVyIHVzZXJf ZGF0YSkKLSt7Ci0rICAgIElCdXNFbmdpbmVTaW1wbGUgKnNpbXBsZSA9IChJQnVzRW5naW5lU2lt cGxlICopdXNlcl9kYXRhOwotKyAgICBJQnVzRW5naW5lU2ltcGxlUHJpdmF0ZSAqcHJpdjsKLSsK LSsgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKElCVVNfSVNfRU5HSU5FX1NJTVBMRSAoc2ltcGxl KSwgR19TT1VSQ0VfUkVNT1ZFKTsKLSsgICAgcHJpdiA9IHNpbXBsZS0+cHJpdjsKLSsgICAgcHJp di0+ZG9faW5mb3JtX3VzZXJfZXJyb3IgPSBGQUxTRTsKLSsgICAgcHJpdi0+aW5mb3JtX3VzZXJf ZXJyb3JfdGltZW91dF9pZCA9IDA7Ci0rICAgIGlidXNfZW5naW5lX3Nob3dfcHJlZWRpdF90ZXh0 ICgoSUJ1c0VuZ2luZSAqKXNpbXBsZSk7Ci0rICAgIHJldHVybiBHX1NPVVJDRV9SRU1PVkU7Ci0r fQotKwotKwotIHN0YXRpYyB2b2lkCi0gaWJ1c19lbmdpbmVfc2ltcGxlX2luaXQgKElCdXNFbmdp bmVTaW1wbGUgKnNpbXBsZSkKLSB7Ci1AQCAtMjA1LDEzICsyMzQsMTggQEAgaWJ1c19lbmdpbmVf c2ltcGxlX2Rlc3Ryb3kgKElCdXNFbmdpbmVTaW1wbGUgKnNpbXBsZSkKLSAgICAgICAgIElCVVNf T0JKRUNUIChzaW1wbGUpKTsKLSB9Ci0gCi0rCi0gc3RhdGljIHZvaWQKLSBpYnVzX2VuZ2luZV9z aW1wbGVfc2VuZF9tZXNzYWdlX3dpdGhfY29kZSAoSUJ1c0VuZ2luZVNpbXBsZSAqc2ltcGxlLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJQnVzRW5naW5lTXNn Q29kZSBjb2RlKQotIHsKLSsgICAgSUJ1c0VuZ2luZVNpbXBsZVByaXZhdGUgKnByaXY7Ci0gICAg IElCdXNNZXNzYWdlICptZXNzYWdlOwotIAotICAgICBnX3JldHVybl9pZl9mYWlsIChJQlVTX0lT X0VOR0lORV9TSU1QTEUgKHNpbXBsZSkpOwotKwotKyAgICBwcml2ID0gc2ltcGxlLT5wcml2Owot KyAgICBwcml2LT5kb19pbmZvcm1fdXNlcl9lcnJvciA9IFRSVUU7Ci0gICAgIG1lc3NhZ2UgPSBp YnVzX21lc3NhZ2VfbmV3ICgKLSAgICAgICAgICAgICBJQlVTX01FU1NBR0VfRE9NQUlOX0VOR0lO RSwKLSAgICAgICAgICAgICBjb2RlLAotQEAgLTIyNiwxOSArMjYwLDU3IEBAIGlidXNfZW5naW5l X3NpbXBsZV9zZW5kX21lc3NhZ2Vfd2l0aF9jb2RlIChJQnVzRW5naW5lU2ltcGxlICpzaW1wbGUs Ci0gICAgIGlidXNfZW5naW5lX3NlbmRfbWVzc2FnZSAoSUJVU19FTkdJTkUgKHNpbXBsZSksIG1l c3NhZ2UpOwotIH0KLSAKLSsKLSBzdGF0aWMgdm9pZAotIGlidXNfZW5naW5lX3NpbXBsZV9mb2N1 c19pbiAoSUJ1c0VuZ2luZSAqZW5naW5lKQotIHsKLSsgICAgaWJ1c19lbmdpbmVfc2ltcGxlX2Zv Y3VzX2luX2lkIChlbmdpbmUsIE5VTEwsIE5VTEwpOwotK30KLSsKLSsKLStzdGF0aWMgdm9pZAot K2lidXNfZW5naW5lX3NpbXBsZV9mb2N1c19pbl9pZCAoSUJ1c0VuZ2luZSAgKmVuZ2luZSwKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICpvYmplY3RfcGF0aCwK LSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICpjbGllbnQpCi0r ewotKyAgICAvKiBEbyBub3QgZW5hYmxlIElCdXNFbmdpbmU6aGFzLWZvY3VzLWlkIGluIHRoZSBJ QnVzRW5naW5lU2ltcGxlJ3MKLSsgICAgICogY29uc3RydWN0b3IgYmVjYXVzZSB0aGUgcHJvcGVy dHkgc2hvdWxkIGJlIGVuYWJsZWQgYnkgdGhlIGluaGVyaXRlZAotKyAgICAgKiBlbmdpbmUuIEUu Zy4gSUJ1c0VuZ2luZUhhbmd1bCBkaXNhYmxlcyBpdC4KLSsgICAgICogVGhlIHByb3BlcnR5IGlz IGhhbmRsZWQgYnkgaWJ1c2VuZ2luZS5jOl9pYnVzX2VuZ2luZV9oYXNfZm9jdXNfaWQoKTsKLSsg ICAgICovCi0rICAgIGlmIChJQlVTX0lTX0VOR0lORV9TSU1QTEUgKGVuZ2luZSkpIHsKLSsgICAg ICAgIElCdXNFbmdpbmVTaW1wbGUgKnNpbXBsZSA9IElCVVNfRU5HSU5FX1NJTVBMRSAoZW5naW5l KTsKLSsgICAgICAgIGdfZnJlZSAoc2ltcGxlLT5wcml2LT5jbGllbnQpOwotKyAgICAgICAgc2lt cGxlLT5wcml2LT5jbGllbnQgPSBnX3N0cmR1cCAoY2xpZW50KTsKLSsgICAgfSBlbHNlIHsKLSsg ICAgICAgIGdfd2FybmluZyAoIklCVVNfSVNfRU5HSU5FX1NJTVBMRShlbmdpbmUpIGluICVzIiwg R19TVFJGVU5DKTsKLSsgICAgfQotICAgICBJQlVTX0VOR0lORV9DTEFTUyAoaWJ1c19lbmdpbmVf c2ltcGxlX3BhcmVudF9jbGFzcyktPmZvY3VzX2luIChlbmdpbmUpOwotIH0KLSAKLSsKLSBzdGF0 aWMgdm9pZAotIGlidXNfZW5naW5lX3NpbXBsZV9mb2N1c19vdXQgKElCdXNFbmdpbmUgKmVuZ2lu ZSkKLSB7Ci0tICAgIGlidXNfZW5naW5lX3NpbXBsZV9yZXNldCAoZW5naW5lKTsKLSsgICAgaWJ1 c19lbmdpbmVfc2ltcGxlX2ZvY3VzX291dF9pZCAoZW5naW5lLCBOVUxMKTsKLSt9Ci0rCi0rCi0r c3RhdGljIHZvaWQKLStpYnVzX2VuZ2luZV9zaW1wbGVfZm9jdXNfb3V0X2lkIChJQnVzRW5naW5l ICAqZW5naW5lLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFy ICpvYmplY3RfcGF0aCkKLSt7Ci0rICAgIGlmIChJQlVTX0lTX0VOR0lORV9TSU1QTEUgKGVuZ2lu ZSkpIHsKLSsgICAgICAgIElCdXNFbmdpbmVTaW1wbGUgKnNpbXBsZSA9IElCVVNfRU5HSU5FX1NJ TVBMRSAoZW5naW5lKTsKLSsgICAgICAgIGdfY2xlYXJfcG9pbnRlciAoJnNpbXBsZS0+cHJpdi0+ Y2xpZW50LCBnX2ZyZWUpOwotKyAgICAgICAgaWJ1c19lbmdpbmVfc2ltcGxlX3Jlc2V0IChlbmdp bmUpOwotKyAgICB9IGVsc2UgewotKyAgICAgICAgZ193YXJuaW5nICgiSUJVU19JU19FTkdJTkVf U0lNUExFKGVuZ2luZSkgaW4gJXMiLCBHX1NUUkZVTkMpOwotKyAgICB9Ci0gICAgIElCVVNfRU5H SU5FX0NMQVNTIChpYnVzX2VuZ2luZV9zaW1wbGVfcGFyZW50X2NsYXNzKS0+Zm9jdXNfb3V0IChl bmdpbmUpOwotIH0KLSAKLSsKLSBzdGF0aWMgdm9pZAotIGlidXNfZW5naW5lX3NpbXBsZV9yZXNl dCAoSUJ1c0VuZ2luZSAqZW5naW5lKQotIHsKLUBAIC0yNTksMTEgKzMzMSwxNyBAQCBpYnVzX2Vu Z2luZV9zaW1wbGVfcmVzZXQgKElCdXNFbmdpbmUgKmVuZ2luZSkKLSAgICAgICAgIHByaXYtPnRl bnRhdGl2ZV9tYXRjaF9sZW4gPSAwOwotICAgICB9Ci0gICAgIGlidXNfZW5naW5lX2hpZGVfcHJl ZWRpdF90ZXh0ICgoSUJ1c0VuZ2luZSAqKXNpbXBsZSk7Ci0rICAgIHByaXYtPmRvX2luZm9ybV91 c2VyX2Vycm9yID0gRkFMU0U7Ci0rICAgIGlmIChwcml2LT5pbmZvcm1fdXNlcl9lcnJvcl90aW1l b3V0X2lkKSB7Ci0rICAgICAgICBnX3NvdXJjZV9yZW1vdmUgKHByaXYtPmluZm9ybV91c2VyX2Vy cm9yX3RpbWVvdXRfaWQpOwotKyAgICAgICAgcHJpdi0+aW5mb3JtX3VzZXJfZXJyb3JfdGltZW91 dF9pZCA9IDA7Ci0rICAgIH0KLSAgICAgZ19vYmplY3RfdW5yZWYgKHByaXYtPnVwZGF0ZWRfcHJl ZWRpdCk7Ci0gICAgIHByaXYtPnVwZGF0ZWRfcHJlZWRpdCA9Ci0gICAgICAgICAgICAgKElCdXNU ZXh0ICopZ19vYmplY3RfcmVmX3NpbmsgKHVwZGF0ZWRfcHJlZWRpdF9lbXB0eSk7Ci0gfQotIAot KwotIHN0YXRpYyB2b2lkCi0gaWJ1c19lbmdpbmVfc2ltcGxlX2NvbW1pdF9jaGFyIChJQnVzRW5n aW5lU2ltcGxlICpzaW1wbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndW5p Y2hhciAgICAgICAgICBjaCkKLUBAIC0zMjYsNiArNDA0LDcgQEAgaWJ1c19lbmdpbmVfc2ltcGxl X2NvbW1pdF9zdHIgKElCdXNFbmdpbmVTaW1wbGUgKnNpbXBsZSwKLSAgICAgZ19mcmVlIChiYWNr dXBfc3RyKTsKLSB9Ci0gCi0rCi0gc3RhdGljIHZvaWQKLSBpYnVzX2VuZ2luZV9zaW1wbGVfdXBk YXRlX3ByZWVkaXRfdGV4dCAoSUJ1c0VuZ2luZVNpbXBsZSAqc2ltcGxlKQotIHsKLUBAIC00MjYs NiArNTA1LDExIEBAIGlidXNfZW5naW5lX3NpbXBsZV91cGRhdGVfcHJlZWRpdF90ZXh0IChJQnVz RW5naW5lU2ltcGxlICpzaW1wbGUpCi0gICAgICAgICAgICAgZ19vYmplY3RfdW5yZWYgKHByaXYt PnVwZGF0ZWRfcHJlZWRpdCk7Ci0gICAgICAgICAgICAgcHJpdi0+dXBkYXRlZF9wcmVlZGl0ID0K LSAgICAgICAgICAgICAgICAgICAgIChJQnVzVGV4dCAqKWdfb2JqZWN0X3JlZl9zaW5rICh1cGRh dGVkX3ByZWVkaXRfZW1wdHkpOwotKyAgICAgICAgICAgIHByaXYtPmRvX2luZm9ybV91c2VyX2Vy cm9yID0gRkFMU0U7Ci0rICAgICAgICAgICAgaWYgKHByaXYtPmluZm9ybV91c2VyX2Vycm9yX3Rp bWVvdXRfaWQpIHsKLSsgICAgICAgICAgICAgICAgZ19zb3VyY2VfcmVtb3ZlIChwcml2LT5pbmZv cm1fdXNlcl9lcnJvcl90aW1lb3V0X2lkKTsKLSsgICAgICAgICAgICAgICAgcHJpdi0+aW5mb3Jt X3VzZXJfZXJyb3JfdGltZW91dF9pZCA9IDA7Ci0rICAgICAgICAgICAgfQotICAgICAgICAgfQot ICAgICB9IGVsc2UgaWYgKHMtPmxlbiA+PSBHX01BWElOVCkgewotICAgICAgICAgZ193YXJuaW5n ICgiJXMgaXMgdG9vIGxvbmcgY29tcG9zZSBsZW5ndGg6ICVsdSIsIHMtPnN0ciwgcy0+bGVuKTsK LUBAIC00MzMsOSArNTE3LDMwIEBAIGlidXNfZW5naW5lX3NpbXBsZV91cGRhdGVfcHJlZWRpdF90 ZXh0IChJQnVzRW5naW5lU2ltcGxlICpzaW1wbGUpCi0gICAgICAgICBndWludCBsZW4gPSAoZ3Vp bnQpZ191dGY4X3N0cmxlbiAocy0+c3RyLCAtMSk7Ci0gICAgICAgICBJQnVzVGV4dCAqdGV4dCA9 IGlidXNfdGV4dF9uZXdfZnJvbV9zdHJpbmcgKHMtPnN0cik7Ci0gICAgICAgICBpYnVzX3RleHRf YXBwZW5kX2F0dHJpYnV0ZSAodGV4dCwKLS0gICAgICAgICAgICAgICAgSUJVU19BVFRSX1RZUEVf VU5ERVJMSU5FLCBJQlVTX0FUVFJfVU5ERVJMSU5FX1NJTkdMRSwgMCwgbGVuKTsKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJQlVTX0FUVFJfVFlQRV9VTkRFUkxJTkUsCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUJVU19BVFRSX1VOREVSTElORV9T SU5HTEUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4pOwotICAgICAgICAgZ19vYmplY3RfcmVm X3NpbmsgKHRleHQpOwotLSAgICAgICAgaWJ1c19lbmdpbmVfdXBkYXRlX3ByZWVkaXRfdGV4dCAo KElCdXNFbmdpbmUgKilzaW1wbGUsIHRleHQsIGxlbiwgVFJVRSk7Ci0rICAgICAgICAvKiBnbm9t ZS1zaGVsbCBkb2VzIG5vdCBoYW5kbGUgIlNlbmRNZXNzYWdlUmVjZWl2ZWQiIEQtQnVzIG1ldGhv ZCB5ZXQuCi0rICAgICAgICAgKiBTZWVtcyBvdGhlciBXYXlsYW5kIGRlc2t0b3BzIGRvIG5vdCBp bXBsZW1lbnQgeGRnLXN5c3RlbS1iZWxsCi0rICAgICAgICAgKiBXYXlsYW5kIHByb3RvY29sIHll dC4KLSsgICAgICAgICAqLwotKyAgICAgICAgaWYgKHByaXYtPmRvX2luZm9ybV91c2VyX2Vycm9y ICYmIHByaXYtPmNsaWVudCAmJgotKyAgICAgICAgICAgICghZ19hc2NpaV9zdHJuY2FzZWNtcCAo cHJpdi0+Y2xpZW50LCAiZ25vbWUtc2hlbGwiLCAxMSkgfHwKLSsgICAgICAgICAgICAgIWdfYXNj aWlfc3RybmNhc2VjbXAgKHByaXYtPmNsaWVudCwgIndheWxhbmQiLCA3KSkKLSsgICAgICAgICAg ICkgewotKyAgICAgICAgICAgIGlidXNfZW5naW5lX2hpZGVfcHJlZWRpdF90ZXh0ICgoSUJ1c0Vu Z2luZSAqKXNpbXBsZSk7Ci0rICAgICAgICAgICAgaWYgKHByaXYtPmluZm9ybV91c2VyX2Vycm9y X3RpbWVvdXRfaWQpCi0rICAgICAgICAgICAgICAgIGdfc291cmNlX3JlbW92ZSAocHJpdi0+aW5m b3JtX3VzZXJfZXJyb3JfdGltZW91dF9pZCk7Ci0rICAgICAgICAgICAgcHJpdi0+aW5mb3JtX3Vz ZXJfZXJyb3JfdGltZW91dF9pZCA9Ci0rICAgICAgICAgICAgICAgICAgICBnX3RpbWVvdXRfYWRk ICg1MDAsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvcm1fdXNlcl9l cnJvcl90aW1lb3V0X2NiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lt cGxlKTsKLSsgICAgICAgIH0gZWxzZSB7Ci0rICAgICAgICAgICAgaWJ1c19lbmdpbmVfdXBkYXRl X3ByZWVkaXRfdGV4dCAoKElCdXNFbmdpbmUgKilzaW1wbGUsCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dCwgbGVuLCBUUlVFKTsKLSsgICAgICAgIH0K LSAgICAgICAgIGdfb2JqZWN0X3VucmVmIChwcml2LT51cGRhdGVkX3ByZWVkaXQpOwotICAgICAg ICAgcHJpdi0+dXBkYXRlZF9wcmVlZGl0ID0gdGV4dDsKLSAgICAgfQotQEAgLTQ2MCw2ICs1NjUs NyBAQCBpYnVzX2VuZ2luZV9zaW1wbGVfdXBkYXRlX3ByZWVkaXRfdGV4dCAoSUJ1c0VuZ2luZVNp bXBsZSAqc2ltcGxlKQotICAqLwotICNkZWZpbmUgSEVYX01PRF9NQVNLIChJQlVTX0NPTlRST0xf TUFTSyB8IElCVVNfU0hJRlRfTUFTSykKLSAKLSsKLSBzdGF0aWMgZ2Jvb2xlYW4KLSBjaGVja19o ZXggKElCdXNFbmdpbmVTaW1wbGUgKnNpbXBsZSwKLSAgICAgICAgICAgIGludCAgICAgICAgICAg ICAgIG5fY29tcG9zZSkKLUBAIC01MjMsNiArNjI5LDcgQEAgY2hlY2tfaGV4IChJQnVzRW5naW5l U2ltcGxlICpzaW1wbGUsCi0gICAgIHJldHVybiBUUlVFOwotIH0KLSAKLSsKLSBzdGF0aWMgSUJ1 c0VuZ2luZURpY3QgKgotIGxvYWRfZW1vamlfZGljdCAodm9pZCkKLSB7Ci1AQCAtNTQ2LDYgKzY1 Myw3IEBAIGxvYWRfZW1vamlfZGljdCAodm9pZCkKLSAgICAgcmV0dXJuIGVtb2ppX2RpY3Q7Ci0g fQotIAotKwotIHN0YXRpYyBnYm9vbGVhbgotIGNoZWNrX2Vtb2ppX3RhYmxlIChJQnVzRW5naW5l U2ltcGxlICAgICAgICpzaW1wbGUsCi0gICAgICAgICAgICAgICAgICAgIGludCAgICAgICAgICAg ICAgICAgICAgIG5fY29tcG9zZSwKLUBAIC03MjcsNiArODM1LDcgQEAgbm9fc2VxdWVuY2VfbWF0 Y2hlcyAoSUJ1c0VuZ2luZVNpbXBsZSAqc2ltcGxlLAotICAgICByZXR1cm4gRkFMU0U7Ci0gfQot IAotKwotIHN0YXRpYyBnYm9vbGVhbgotIGlzX2hleF9rZXl2YWwgKGd1aW50IGtleXZhbCkKLSB7 Ci1AQCAtNzM1LDYgKzg0NCw3IEBAIGlzX2hleF9rZXl2YWwgKGd1aW50IGtleXZhbCkKLSAgIHJl dHVybiBnX3VuaWNoYXJfaXN4ZGlnaXQgKGNoKTsKLSB9Ci0gCi0rCi0gc3RhdGljIGdib29sZWFu Ci0gaXNfZ3JhcGhfa2V5dmFsIChndWludCBrZXl2YWwpCi0gewotQEAgLTc0Myw2ICs4NTMsNyBA QCBpc19ncmFwaF9rZXl2YWwgKGd1aW50IGtleXZhbCkKLSAgIHJldHVybiBnX3VuaWNoYXJfaXNn cmFwaCAoY2gpOwotIH0KLSAKLSsKLSBzdGF0aWMgdm9pZAotIGlidXNfZW5naW5lX3NpbXBsZV91 cGRhdGVfbG9va3VwX2FuZF9hdXhfdGFibGUgKElCdXNFbmdpbmVTaW1wbGUgKnNpbXBsZSkKLSB7 Ci1AQCAtNzY4LDYgKzg3OSw3IEBAIGlidXNfZW5naW5lX3NpbXBsZV91cGRhdGVfbG9va3VwX2Fu ZF9hdXhfdGFibGUgKElCdXNFbmdpbmVTaW1wbGUgKnNpbXBsZSkKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcHJpdi0+bG9va3VwX3RhYmxlX3Zpc2libGUpOwotIH0KLSAK LSsKLSBzdGF0aWMgZ2Jvb2xlYW4KLSBpYnVzX2VuZ2luZV9zaW1wbGVfaWZfaW5fcmFuZ2Vfb2Zf bG9va3VwX3RhYmxlIChJQnVzRW5naW5lU2ltcGxlICpzaW1wbGUsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgICAgICAgICAgICAga2V5dmFs KQotQEAgLTc5NCw2ICs5MDYsNyBAQCBpYnVzX2VuZ2luZV9zaW1wbGVfaWZfaW5fcmFuZ2Vfb2Zf bG9va3VwX3RhYmxlIChJQnVzRW5naW5lU2ltcGxlICpzaW1wbGUsCi0gICAgIHJldHVybiBUUlVF OwotIH0KLSAKLSsKLSBzdGF0aWMgdm9pZAotIGlidXNfZW5naW5lX3NpbXBsZV9zZXRfbnVtYmVy X29uX2xvb2t1cF90YWJsZSAoSUJ1c0VuZ2luZVNpbXBsZSAqc2ltcGxlLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgICAgICAgICAgICAga2V5 dmFsLAotQEAgLTg4Niw4ICs5OTksOSBAQCBpYnVzX2VuZ2luZV9zaW1wbGVfY2hlY2tfYWxsX2Nv bXBvc2VfdGFibGUgKElCdXNFbmdpbmVTaW1wbGUgKnNpbXBsZSwKLSAgICAgICAgICAgICAgICAg aWYgKGlzXzMyYml0KSB7Ci0gICAgICAgICAgICAgICAgICAgICBpYnVzX2VuZ2luZV9zaW1wbGVf Y29tbWl0X3N0ciAoc2ltcGxlLCBvdXRwdXQtPnN0cik7Ci0gICAgICAgICAgICAgICAgIH0gZWxz ZSB7Ci0tICAgICAgICAgICAgICAgICAgICBpYnVzX2VuZ2luZV9zaW1wbGVfY29tbWl0X2NoYXIg KHNpbXBsZSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZ191dGY4X2dldF9jaGFyIChvdXRwdXQtPnN0cikpOwotKyAgICAgICAgICAgICAgICAg ICAgaWJ1c19lbmdpbmVfc2ltcGxlX2NvbW1pdF9jaGFyICgKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc2ltcGxlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3V0ZjhfZ2V0 X2NoYXIgKG91dHB1dC0+c3RyKSk7Ci0gICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICB9 Ci0gICAgICAgICAgICAgaWJ1c19lbmdpbmVfc2ltcGxlX3VwZGF0ZV9wcmVlZGl0X3RleHQgKHNp bXBsZSk7Ci1AQCAtOTUxLDggKzEwNjUsMTAgQEAgaWJ1c19lbmdpbmVfc2ltcGxlX3Byb2Nlc3Nf a2V5X2V2ZW50IChJQnVzRW5naW5lICplbmdpbmUsCi0gICAgIGd1aW50IHByaW50YWJsZV9rZXl2 YWw7Ci0gICAgIGludCBpOwotIAotLSAgICB3aGlsZSAobl9jb21wb3NlIDw9IENPTVBPU0VfQlVG RkVSX1NJWkUgJiYgcHJpdi0+Y29tcG9zZV9idWZmZXJbbl9jb21wb3NlXSAhPSAwKQotKyAgICB3 aGlsZSAobl9jb21wb3NlIDw9IENPTVBPU0VfQlVGRkVSX1NJWkUgJiYKLSsgICAgICAgICAgIHBy aXYtPmNvbXBvc2VfYnVmZmVyW25fY29tcG9zZV0gIT0gMCkgewotICAgICAgICAgbl9jb21wb3Nl Kys7Ci0rICAgIH0KLSAgICAgaWYgKG5fY29tcG9zZSA+IENPTVBPU0VfQlVGRkVSX1NJWkUpIHsK LSAgICAgICAgIGdfd2FybmluZyAoImNvcG1vc2UgdGFibGUgYnVmZmVyIGlzIGZ1bGwuIik7Ci0g ICAgICAgICBuX2NvbXBvc2UgPSBDT01QT1NFX0JVRkZFUl9TSVpFOwotQEAgLTEzOTUsNiArMTUx MSw3IEBAIGlidXNfZW5naW5lX3NpbXBsZV9wcm9jZXNzX2tleV9ldmVudCAoSUJ1c0VuZ2luZSAq ZW5naW5lLAotICAgICByZXR1cm4gbm9fc2VxdWVuY2VfbWF0Y2hlcyAoc2ltcGxlLCBuX2NvbXBv c2UsIGtleXZhbCwga2V5Y29kZSwgbW9kaWZpZXJzKTsKLSB9Ci0gCi0rCi0gc3RhdGljIHZvaWQK LSBpYnVzX2VuZ2luZV9zaW1wbGVfcGFnZV9kb3duIChJQnVzRW5naW5lICplbmdpbmUpCi0gewot QEAgLTE0MDYsNiArMTUyMyw3IEBAIGlidXNfZW5naW5lX3NpbXBsZV9wYWdlX2Rvd24gKElCdXNF bmdpbmUgKmVuZ2luZSkKLSAgICAgaWJ1c19lbmdpbmVfc2ltcGxlX3VwZGF0ZV9sb29rdXBfYW5k X2F1eF90YWJsZSAoc2ltcGxlKTsKLSB9Ci0gCi0rCi0gc3RhdGljIHZvaWQKLSBpYnVzX2VuZ2lu ZV9zaW1wbGVfcGFnZV91cCAoSUJ1c0VuZ2luZSAqZW5naW5lKQotIHsKLUBAIC0xNDE3LDYgKzE1 MzUsNyBAQCBpYnVzX2VuZ2luZV9zaW1wbGVfcGFnZV91cCAoSUJ1c0VuZ2luZSAqZW5naW5lKQot ICAgICBpYnVzX2VuZ2luZV9zaW1wbGVfdXBkYXRlX2xvb2t1cF9hbmRfYXV4X3RhYmxlIChzaW1w bGUpOwotIH0KLSAKLSsKLSBzdGF0aWMgdm9pZAotIGlidXNfZW5naW5lX3NpbXBsZV9jYW5kaWRh dGVfY2xpY2tlZCAoSUJ1c0VuZ2luZSAqZW5naW5lLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZ3VpbnQgICAgICAgaW5kZXgsCi1AQCAtMTQ0MCw2ICsxNTU5LDcgQEAg aWJ1c19lbmdpbmVfc2ltcGxlX2NhbmRpZGF0ZV9jbGlja2VkIChJQnVzRW5naW5lICplbmdpbmUs Ci0gICAgIGlidXNfZW5naW5lX3NpbXBsZV9zZXRfbnVtYmVyX29uX2xvb2t1cF90YWJsZSAoc2lt cGxlLCBrZXl2YWwsIG5fY29tcG9zZSk7Ci0gfQotIAotKwotIHZvaWQKLSBpYnVzX2VuZ2luZV9z aW1wbGVfYWRkX3RhYmxlIChJQnVzRW5naW5lU2ltcGxlICpzaW1wbGUsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3QgZ3VpbnQxNiAgICAqZGF0YSwKLUBAIC0xNDU0LDYgKzE1 NzQsNyBAQCBpYnVzX2VuZ2luZV9zaW1wbGVfYWRkX3RhYmxlIChJQnVzRW5naW5lU2ltcGxlICpz aW1wbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG5fc2Vxcyk7Ci0gfQotIAotKwotIGdib29sZWFuCi0gaWJ1c19lbmdpbmVfc2ltcGxl X2FkZF90YWJsZV9ieV9sb2NhbGUgKElCdXNFbmdpbmVTaW1wbGUgKnNpbXBsZSwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAqbG9jYWxl KQotQEAgLTE1NzIsNiArMTY5Myw3IEBAIGlidXNfZW5naW5lX3NpbXBsZV9hZGRfdGFibGVfYnlf bG9jYWxlIChJQnVzRW5naW5lU2ltcGxlICpzaW1wbGUsCi0gICAgIHJldHVybiByZXR2YWw7Ci0g fQotIAotKwotIGdib29sZWFuCi0gaWJ1c19lbmdpbmVfc2ltcGxlX2FkZF9jb21wb3NlX2ZpbGUg KElCdXNFbmdpbmVTaW1wbGUgKnNpbXBsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAqY29tcG9zZV9maWxlKQotZGlmZiAtLWdpdCBhL3Vp L2d0azMvY2FuZGlkYXRlcGFuZWwudmFsYSBiL3VpL2d0azMvY2FuZGlkYXRlcGFuZWwudmFsYQot aW5kZXggYWExYTM0Y2UuLmE0MTM3ZjA1IDEwMDY0NAotLS0tIGEvdWkvZ3RrMy9jYW5kaWRhdGVw YW5lbC52YWxhCi0rKysgYi91aS9ndGszL2NhbmRpZGF0ZXBhbmVsLnZhbGEKLUBAIC00OTEsNiAr NDkxLDExIEBAIHB1YmxpYyBjbGFzcyBDYW5kaWRhdGVQYW5lbCA6IEd0ay5Cb3h7Ci0gICAgICAg ICBtX3RvcGxldmVsLmhpZGUoKTsKLSAgICAgfQotIAotKyAgICAvKioKLSsgICAgICogbW92ZToK LSsgICAgICogQHg6IGxlZnQgcG9zaXRpb24gb2YgdGhlICNDYW5kaWRhdGVQYW5lbAotKyAgICAg KiBAeTogdG9wIHBvc2l0aW9uIG9mIHRoZSAjQ2FuZGlkYXRlUGFuZWwKLSsgICAgICovCi0gICAg IHByaXZhdGUgdm9pZCBtb3ZlKGludCB4LCBpbnQgeSkgewotICAgICAgICAgbV90b3BsZXZlbC5t b3ZlKHgsIHkpOwotICAgICB9Ci1AQCAtNTAyLDIxICs1MDcsMTUgQEAgcHVibGljIGNsYXNzIENh bmRpZGF0ZVBhbmVsIDogR3RrLkJveHsKLSAgICAgICAgICAgICBhZGp1c3Rfd2luZG93X3Bvc2l0 aW9uX3ZlcnRpY2FsKHdpbmRvdyk7Ci0gICAgIH0KLSAKLS0gICAgcHJpdmF0ZSBHZGsuUmVjdGFu Z2xlIGdldF9tb25pdG9yX2dlb21ldHJ5KEd0ay5XaWRnZXQgd2luZG93KSB7Ci0tICAgICAgICBH ZGsuUmVjdGFuZ2xlIG1vbml0b3JfYXJlYSA9IHsgMCwgfTsKLS0KLS0gICAgICAgIC8vIFVzZSBn ZXRfbW9uaXRvcl9nZW9tZXRyeSgpIGluc3RlYWQgb2YgZ2V0X21vbml0b3JfYXJlYSgpLgotLSAg ICAgICAgLy8gZ2V0X21vbml0b3JfYXJlYSgpIGV4Y2x1ZGVzIGRvY2tzLCBidXQgdGhlIGxvb2t1 cCB3aW5kb3cgc2hvdWxkIGJlCi0tICAgICAgICAvLyBzaG93biBvdmVyIHRoZW0uCi0tICAgICAg ICBHZGsuTW9uaXRvciBtb25pdG9yID0gd2luZG93LmdldF9kaXNwbGF5KCkuZ2V0X21vbml0b3Jf YXRfcG9pbnQoCi0tICAgICAgICAgICAgICAgIG1fY3Vyc29yX2xvY2F0aW9uLngsCi0tICAgICAg ICAgICAgICAgIG1fY3Vyc29yX2xvY2F0aW9uLnkpOwotLSAgICAgICAgbW9uaXRvcl9hcmVhID0g bW9uaXRvci5nZXRfZ2VvbWV0cnkoKTsKLS0gICAgICAgIHJldHVybiBtb25pdG9yX2FyZWE7Ci0t ICAgIH0KLS0KLSsgICAgLyoqCi0rICAgICAqIGFkanVzdF93aW5kb3dfcG9zaXRpb25faG9yaXpv bnRhbDoKLSsgICAgICogQHdpbmRvdzogQSBHdGsuV2lkZ2V0IG9mIHRoZSB0b3BsZXZlbCB3aW5k b3cuCi0rICAgICAqCi0rICAgICAqIEhvcml6b250YWwgd3JpdGluZyBtb2RlIGJ1dCBub3QgdGhl IGhvcml6b250YWwgbG9va3VwIHRhYmxlCi0rICAgICAqIHdoZW4gdGhlIGFsbG9jYXRpb24gaXMg ZW1taXR0ZWQuCi0rICAgICAqLwotICAgICBwcml2YXRlIHZvaWQgYWRqdXN0X3dpbmRvd19wb3Np dGlvbl9ob3Jpem9udGFsKEd0ay5XaWRnZXQgd2luZG93KSB7Ci0tICAgICAgICBHZGsuUG9pbnQg Y3Vyc29yX3JpZ2h0X2JvdHRvbSA9IHsKLSsgICAgICAgIEdkay5Qb2ludCBjdXJzb3JfbGVmdF9i b3R0b20gPSB7Ci0gICAgICAgICAgICAgICAgIG1fY3Vyc29yX2xvY2F0aW9uLngsCi0gICAgICAg ICAgICAgICAgIG1fY3Vyc29yX2xvY2F0aW9uLnkgKyBtX2N1cnNvcl9sb2NhdGlvbi5oZWlnaHQK LSAgICAgICAgIH07Ci1AQCAtNTI0LDggKzUyMyw4IEBAIHB1YmxpYyBjbGFzcyBDYW5kaWRhdGVQ YW5lbCA6IEd0ay5Cb3h7Ci0gICAgICAgICBHdGsuQWxsb2NhdGlvbiBhbGxvY2F0aW9uOwotICAg ICAgICAgbV90b3BsZXZlbC5nZXRfYWxsb2NhdGlvbihvdXQgYWxsb2NhdGlvbik7Ci0gICAgICAg ICBHZGsuUG9pbnQgd2luZG93X3JpZ2h0X2JvdHRvbSA9IHsKLS0gICAgICAgICAgICBjdXJzb3Jf cmlnaHRfYm90dG9tLnggKyBhbGxvY2F0aW9uLndpZHRoLAotLSAgICAgICAgICAgIGN1cnNvcl9y aWdodF9ib3R0b20ueSArIGFsbG9jYXRpb24uaGVpZ2h0Ci0rICAgICAgICAgICAgY3Vyc29yX2xl ZnRfYm90dG9tLnggKyBhbGxvY2F0aW9uLndpZHRoLAotKyAgICAgICAgICAgIGN1cnNvcl9sZWZ0 X2JvdHRvbS55ICsgYWxsb2NhdGlvbi5oZWlnaHQKLSAgICAgICAgIH07Ci0gCi0gICAgICAgICBH ZGsuUmVjdGFuZ2xlIG1vbml0b3JfYXJlYSA9IGdldF9tb25pdG9yX2dlb21ldHJ5KHdpbmRvdyk7 Ci1AQCAtNTM2LDIwICs1MzUsMjcgQEAgcHVibGljIGNsYXNzIENhbmRpZGF0ZVBhbmVsIDogR3Rr LkJveHsKLSAgICAgICAgIGlmICh3aW5kb3dfcmlnaHRfYm90dG9tLnggPiBtb25pdG9yX3JpZ2h0 KQotICAgICAgICAgICAgIHggPSBtb25pdG9yX3JpZ2h0IC0gYWxsb2NhdGlvbi53aWR0aDsKLSAg ICAgICAgIGVsc2UKLS0gICAgICAgICAgICB4ID0gY3Vyc29yX3JpZ2h0X2JvdHRvbS54OwotKyAg ICAgICAgICAgIHggPSBjdXJzb3JfbGVmdF9ib3R0b20ueDsKLSAgICAgICAgIGlmICh4IDwgMCkK LSAgICAgICAgICAgICB4ID0gMDsKLSAKLSAgICAgICAgIGlmICh3aW5kb3dfcmlnaHRfYm90dG9t LnkgPiBtb25pdG9yX2JvdHRvbSkKLSAgICAgICAgICAgICB5ID0gbV9jdXJzb3JfbG9jYXRpb24u eSAtIGFsbG9jYXRpb24uaGVpZ2h0OwotICAgICAgICAgZWxzZQotLSAgICAgICAgICAgIHkgPSBj dXJzb3JfcmlnaHRfYm90dG9tLnk7Ci0rICAgICAgICAgICAgeSA9IGN1cnNvcl9sZWZ0X2JvdHRv bS55OwotICAgICAgICAgaWYgKHkgPCAwKQotICAgICAgICAgICAgIHkgPSAwOwotIAotICAgICAg ICAgbW92ZSh4LCB5KTsKLSAgICAgfQotIAotKyAgICAvKioKLSsgICAgICogYWRqdXN0X3dpbmRv d19wb3NpdGlvbl92ZXJ0aWNhbDoKLSsgICAgICogQHdpbmRvdzogQSBHdGsuV2lkZ2V0IG9mIHRo ZSB0b3BsZXZlbCB3aW5kb3cuCi0rICAgICAqCi0rICAgICAqIFZlcnRpY2FsIHdyaXRpbmcgbW9k ZSBidXQgbm90IHRoZSB2ZXJ0aWNhbCBsb29rdXAgdGFibGUKLSsgICAgICogd2hlbiB0aGUgYWxs b2NhdGlvbiBpcyBlbW1pdHRlZC4KLSsgICAgICovCi0gICAgIHByaXZhdGUgdm9pZCBhZGp1c3Rf d2luZG93X3Bvc2l0aW9uX3ZlcnRpY2FsKEd0ay5XaWRnZXQgd2luZG93KSB7Ci0gICAgICAgICAv KiBOb3Qgc3VyZSBpbiB3aGljaCB0b3Agb3IgbGVmdCBjdXJzb3IgYXBwZWFycwotICAgICAgICAg ICogaW4gdGhlIHZlcnRpY2FsIHdyaXRpbmcgbW9kZS4KLUBAIC02MTEsNiArNjE3LDE5IEBAIHB1 YmxpYyBjbGFzcyBDYW5kaWRhdGVQYW5lbCA6IEd0ay5Cb3h7Ci0gICAgICAgICBtb3ZlKHgsIHkp OwotICAgICB9Ci0gCi0rICAgIHByaXZhdGUgR2RrLlJlY3RhbmdsZSBnZXRfbW9uaXRvcl9nZW9t ZXRyeShHdGsuV2lkZ2V0IHdpbmRvdykgewotKyAgICAgICAgR2RrLlJlY3RhbmdsZSBtb25pdG9y X2FyZWEgPSB7IDAsIH07Ci0rCi0rICAgICAgICAvLyBVc2UgZ2V0X21vbml0b3JfZ2VvbWV0cnko KSBpbnN0ZWFkIG9mIGdldF9tb25pdG9yX2FyZWEoKS4KLSsgICAgICAgIC8vIGdldF9tb25pdG9y X2FyZWEoKSBleGNsdWRlcyBkb2NrcywgYnV0IHRoZSBsb29rdXAgd2luZG93IHNob3VsZCBiZQot KyAgICAgICAgLy8gc2hvd24gb3ZlciB0aGVtLgotKyAgICAgICAgR2RrLk1vbml0b3IgbW9uaXRv ciA9IHdpbmRvdy5nZXRfZGlzcGxheSgpLmdldF9tb25pdG9yX2F0X3BvaW50KAotKyAgICAgICAg ICAgICAgICBtX2N1cnNvcl9sb2NhdGlvbi54LAotKyAgICAgICAgICAgICAgICBtX2N1cnNvcl9s b2NhdGlvbi55KTsKLSsgICAgICAgIG1vbml0b3JfYXJlYSA9IG1vbml0b3IuZ2V0X2dlb21ldHJ5 KCk7Ci0rICAgICAgICByZXR1cm4gbW9uaXRvcl9hcmVhOwotKyAgICB9Ci0rCi0gI2lmIFVTRV9H REtfV0FZTEFORAotICAgICBwcml2YXRlIHZvaWQgcmVhbGl6ZV93aW5kb3coYm9vbCBpbml0aWFs KSB7Ci0gICAgICAgICAvLyBUaGUgY3VzdG9tIHN1cmZhY2UgY2FuIGJlIHVzZWQgd2hlbiB0aGUg V2F5bGFuZCBpbnB1dC1tZXRob2QKLWRpZmYgLS1naXQgYS91aS9ndGszL2Vtb2ppZXIudmFsYSBi L3VpL2d0azMvZW1vamllci52YWxhCi1pbmRleCAyZDg3NTRhNC4uOGM1MjdlY2EgMTAwNjQ0Ci0t LS0gYS91aS9ndGszL2Vtb2ppZXIudmFsYQotKysrIGIvdWkvZ3RrMy9lbW9qaWVyLnZhbGEKLUBA IC0yMjMsOCArMjIzLDYgQEAgcHVibGljIGNsYXNzIElCdXNFbW9qaWVyIDogR3RrLkFwcGxpY2F0 aW9uV2luZG93IHsKLSAgICAgICAgIEJBQ0tXQVJELAotICAgICB9Ci0gCi0tICAgIHB1YmxpYyBi b29sIGlzX3dheWxhbmQgeyBnZXQ7IHNldDsgfQotLQotICAgICBwdWJsaWMgY29uc3QgdWludCBC VVRUT05fQ0xPU0VfQlVUVE9OID0gMTAwMDsKLSAKLSAgICAgcHJpdmF0ZSBjb25zdCB1aW50IEVN T0pJX0dSSURfUEFHRSA9IDEwOwotQEAgLTI2OCw2ICsyNjYsOCBAQCBwdWJsaWMgY2xhc3MgSUJ1 c0Vtb2ppZXIgOiBHdGsuQXBwbGljYXRpb25XaW5kb3cgewotICAgICBwcml2YXRlIHN0YXRpYyBi b29sIG1fbG9hZGVkX3VuaWNvZGUgPSBmYWxzZTsKLSAgICAgcHJpdmF0ZSBzdGF0aWMgc3RyaW5n IG1fd2FybmluZ19tZXNzYWdlID0gIiI7Ci0gCi0rICAgIHByaXZhdGUgYm9vbCBtX2lzX3dheWxh bmQ7Ci0rICAgIHByaXZhdGUgYm9vbCBtX2lzX2dub21lID0gZmFsc2U7Ci0gICAgIHByaXZhdGUg VGhlbWVkUkdCQSBtX3JnYmE7Ci0gICAgIHByaXZhdGUgR3RrLkJveCBtX3Zib3g7Ci0gICAgIC8q IElmIGVtb2ppZXIgaXMgZW1vamkgY2F0ZWdvcnkgbGlzdCBvciBVbmljb2RlIGNhdGVnb3J5IGxp c3QsCi1AQCAtMzI4LDcgKzMyOCw4IEBAIHB1YmxpYyBjbGFzcyBJQnVzRW1vamllciA6IEd0ay5B cHBsaWNhdGlvbldpbmRvdyB7Ci0gICAgICAgICBHTGliLk9iamVjdCgKLSAgICAgICAgICAgICB0 eXBlIDogR3RrLldpbmRvd1R5cGUuUE9QVVAKLSAgICAgICAgICk7Ci0tICAgICAgICB0aGlzLmlz X3dheWxhbmQgPSBpc193YXlsYW5kOwotKyAgICAgICAgbV9pc193YXlsYW5kID0gaXNfd2F5bGFu ZDsKLSsgICAgICAgIG1faXNfZ25vbWUgPSBpc19nbm9tZSgpOwotIAotICAgICAgICAgLy8gR0xp Yi5BY3Rpb25FbnRyeSBhY2NlcHRzIGNvbnN0IHZhcmlhYmxlcyBvbmx5LgotICAgICAgICAgdmFy IGFjdGlvbiA9IG5ldyBHTGliLlNpbXBsZUFjdGlvbi5zdGF0ZWZ1bCgKLUBAIC0zODIsNiArMzgz LDIzIEBAIHB1YmxpYyBjbGFzcyBJQnVzRW1vamllciA6IEd0ay5BcHBsaWNhdGlvbldpbmRvdyB7 Ci0gICAgIH0KLSAKLSAKLSsgICAgcHJpdmF0ZSBib29sIGlzX2dub21lKCkgewotKyAgICAgICAg dW5vd25lZCBzdHJpbmc/IGRlc2t0b3AgPQotKyAgICAgICAgICAgIEVudmlyb25tZW50LmdldF92 YXJpYWJsZSgiWERHX0NVUlJFTlRfREVTS1RPUCIpOwotKyAgICAgICAgaWYgKGRlc2t0b3AgPT0g IkdOT01FIikKLSsgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSsgICAgICAgIC8qIElmIGlidXMt ZGFtZW9uIGlzIGxhdW5jaGVkIGZyb20gc3lzdGVtZCwgWERHX0NVUlJFTlRfREVTS1RPUAotKyAg ICAgICAgICogZW52aXJvbm1lbnQgdmFyaWFibGUgY291bGQgYmUgc2V0IGFmdGVyIGlidXMtZGFt ZW9uIHdvdWxkIGJlCi0rICAgICAgICAgKiBsYXVuY2hlZCBhbmQgWERHX0NVUlJFTlRfREVTS1RP UCBjb3VsZCBiZSAiKG51bGwpIi4KLSsgICAgICAgICAqIEJ1dCBYREdfU0VTU0lPTl9ERVNLVE9Q IGNhbiBiZSBzZXQgd2l0aCBzeXN0ZW1kJ3MgUEFNLgotKyAgICAgICAgICovCi0rICAgICAgICBp ZiAoZGVza3RvcCA9PSBudWxsIHx8IGRlc2t0b3AgPT0gIihudWxsKSIpCi0rICAgICAgICAgICAg ZGVza3RvcCA9IEVudmlyb25tZW50LmdldF92YXJpYWJsZSgiWERHX1NFU1NJT05fREVTS1RPUCIp OwotKyAgICAgICAgaWYgKGRlc2t0b3AgPT0gImdub21lIikKLSsgICAgICAgICAgICByZXR1cm4g dHJ1ZTsKLSsgICAgICAgIHJldHVybiBmYWxzZTsKLSsgICAgfQotKwotICAgICBwcml2YXRlIHN0 YXRpYyB2b2lkIHJlbG9hZF9lbW9qaV9kaWN0KCkgewotICAgICAgICAgaW5pdF9lbW9qaV9kaWN0 KCk7Ci0gICAgICAgICBtYWtlX2Vtb2ppX2RpY3QoImVuIik7Ci1AQCAtMTgwNyw3ICsxODI1LDcg QEAgcHVibGljIGNsYXNzIElCdXNFbW9qaWVyIDogR3RrLkFwcGxpY2F0aW9uV2luZG93IHsKLSAK LSAKLSAgICAgcHJpdmF0ZSB2b2lkIHN0YXJ0X3JlYnVpbGRfZ3VpKGJvb2wgaW5pdGlhbF9sYXVu Y2hpbmcpIHsKLS0gICAgICAgIGlmICghdGhpcy5pc193YXlsYW5kKQotKyAgICAgICAgaWYgKCFt X2lzX3dheWxhbmQpCi0gICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgaWYgKCFpbml0aWFs X2xhdW5jaGluZyAmJiAhYmFzZS5nZXRfdmlzaWJsZSgpKQotICAgICAgICAgICAgIHJldHVybjsK LUBAIC0yMTg5LDE3ICsyMjA3LDIzIEBAIHB1YmxpYyBjbGFzcyBJQnVzRW1vamllciA6IEd0ay5B cHBsaWNhdGlvbldpbmRvdyB7Ci0gCi0gCi0gICAgIHB1YmxpYyBJQnVzLlRleHQgZ2V0X3RpdGxl X3RleHQoKSB7Ci0rICAgICAgICBpZiAoIW1fbG9hZGVkX3VuaWNvZGUgJiYgbV9pc19nbm9tZSkg ewotKyAgICAgICAgICAgIHVuaWNoYXIgYyA9IDB4MjZBMDsKLSsgICAgICAgICAgICByZXR1cm4g bmV3IElCdXMuVGV4dC5mcm9tX3N0cmluZygiJXMlcyAldSUlIi5wcmludGYoCi0rICAgICAgICAg ICAgICAgICAgICBjLnRvX3N0cmluZygpLAotKyAgICAgICAgICAgICAgICAgICAgXygiTG9hZGlu ZyBhIFVuaWNvZGUgZGljdGlvbmFyeToiKSwKLSsgICAgICAgICAgICAgICAgICAgICh1aW50KSht X3VuaWNvZGVfcGVyY2VudCAqIDEwMCkpKTsKLSsgICAgICAgIH0KLSAgICAgICAgIHZhciBsYW5n dWFnZSA9IF8oSUJ1cy5nZXRfbGFuZ3VhZ2VfbmFtZShtX2N1cnJlbnRfbGFuZ19pZCkpOwotICAg ICAgICAgdWludCBuY2FuZGlkYXRlcyA9IHRoaXMuZ2V0X251bWJlcl9vZl9jYW5kaWRhdGVzKCk7 Ci0gICAgICAgICBzdHJpbmcgbWFpbl90aXRsZSA9IF8oIkVtb2ppIENob2ljZSIpOwotICAgICAg ICAgaWYgKG1fc2hvd191bmljb2RlKQotICAgICAgICAgICAgIG1haW5fdGl0bGUgPSBfKCJVbmlj b2RlIENob2ljZSIpOwotLSAgICAgICAgdmFyIHRleHQgPSBuZXcgSUJ1cy5UZXh0LmZyb21fc3Ry aW5nKAotLSAgICAgICAgICAgICAgICAiJXMgKCVzKSAoJXUgLyAldSkiLnByaW50ZigKLS0gICAg ICAgICAgICAgICAgICAgICAgICBtYWluX3RpdGxlLAotLSAgICAgICAgICAgICAgICAgICAgICAg IGxhbmd1YWdlLAotLSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0X2N1cnNvcl9wb3Mo KSArIDEsCi0tICAgICAgICAgICAgICAgICAgICAgICAgbmNhbmRpZGF0ZXMpKTsKLSsgICAgICAg IHZhciB0ZXh0ID0gbmV3IElCdXMuVGV4dC5mcm9tX3N0cmluZygiJXMgKCVzKSAoJXUgLyAldSki LnByaW50ZigKLSsgICAgICAgICAgICAgICAgbWFpbl90aXRsZSwKLSsgICAgICAgICAgICAgICAg bGFuZ3VhZ2UsCi0rICAgICAgICAgICAgICAgIHRoaXMuZ2V0X2N1cnNvcl9wb3MoKSArIDEsCi0r ICAgICAgICAgICAgICAgIG5jYW5kaWRhdGVzKSk7Ci0gICAgICAgICBpbnQgY2hhcl9jb3VudCA9 IHRleHQudGV4dC5jaGFyX2NvdW50KCk7Ci0gICAgICAgICBpbnQgc3RhcnRfaW5kZXggPSAtMTsK LSAgICAgICAgIHVub3duZWQgc3RyaW5nIHRpdGxlID0gdGV4dC50ZXh0OwotZGlmZiAtLWdpdCBh L3VpL2d0azMvZXh0ZW5zaW9uLnZhbGEgYi91aS9ndGszL2V4dGVuc2lvbi52YWxhCi1pbmRleCBh NmYyZThlNi4uNWNkMWE2YWQgMTAwNjQ0Ci0tLS0gYS91aS9ndGszL2V4dGVuc2lvbi52YWxhCi0r KysgYi91aS9ndGszL2V4dGVuc2lvbi52YWxhCi1AQCAtMyw3ICszLDcgQEAKLSAgKiBpYnVzIC0g VGhlIElucHV0IEJ1cwotICAqCi0gICogQ29weXJpZ2h0KGMpIDIwMTggUGVuZyBIdWFuZyA8c2hh d24ucC5odWFuZ0BnbWFpbC5jb20+Ci0tICogQ29weXJpZ2h0KGMpIDIwMTgtMjAyMCBUYWthbyBG dWppd2FyYSA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KLSsgKiBDb3B5cmlnaHQoYykgMjAx OC0yMDI1IFRha2FvIEZ1aml3YXJhIDx0YWthby5mdWppd2FyYTFAZ21haWwuY29tPgotICAqCi0g ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vcgotICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIg R2VuZXJhbCBQdWJsaWMKLUBAIC05OSw2ICs5OSw3IEBAIGNsYXNzIEV4dGVuc2lvbkd0ayA6IEd0 ay5BcHBsaWNhdGlvbiB7Ci0gICAgIHByaXZhdGUgdm9pZCBidXNfZGlzY29ubmVjdGVkKElCdXMu QnVzIGJ1cykgewotICAgICAgICAgZGVidWcoImNvbm5lY3Rpb24gaXMgbG9zdC4iKTsKLSAgICAg ICAgIEd0ay5tYWluX3F1aXQoKTsKLSsgICAgICAgIHRoaXMucXVpdCgpOwotICAgICB9Ci0gCi0g ICAgIHByaXZhdGUgdm9pZCBidXNfY29ubmVjdGVkKElCdXMuQnVzIGJ1cykgewotZGlmZiAtLWdp dCBhL3VpL2d0azMvcGFuZWxiaW5kaW5nLnZhbGEgYi91aS9ndGszL3BhbmVsYmluZGluZy52YWxh Ci1pbmRleCBmMDgyN2IzZS4uYTJmZDE0NDEgMTAwNjQ0Ci0tLS0gYS91aS9ndGszL3BhbmVsYmlu ZGluZy52YWxhCi0rKysgYi91aS9ndGszL3BhbmVsYmluZGluZy52YWxhCi1AQCAtNjMyLDYgKzYz Miw4IEBAIGNsYXNzIFBhbmVsQmluZGluZyA6IElCdXMuUGFuZWxTZXJ2aWNlIHsKLSAgICAgICAg ICAgICAgICAgICAgIG1fZW1vamllci5rZXlfcHJlc3NfY3Vyc29yX2hvcml6b250YWwoR2RrLktl eS5SaWdodCwgMCk7Ci0gICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgbV9l bW9qaWVyLnNldF9hbm5vdGF0aW9uKGFubm90YXRpb24pOwotKyAgICAgICAgICAgICAgICB2YXIg dGV4dCA9IG1fZW1vamllci5nZXRfdGl0bGVfdGV4dCgpOwotKyAgICAgICAgICAgICAgICBzaG93 X2NhbmRpZGF0ZSA9ICh0ZXh0LnRleHQuZ2V0X2NoYXIoKSA9PSAweDI2QTApOwotICAgICAgICAg ICAgIH0KLSAgICAgICAgIH0KLSAgICAgICAgIGNvbnZlcnRfcHJlZWRpdF90ZXh0KCk7Ci1AQCAt NzM4LDEwICs3NDAsMTEgQEAgY2xhc3MgUGFuZWxCaW5kaW5nIDogSUJ1cy5QYW5lbFNlcnZpY2Ug ewotICAgICBwcml2YXRlIHZvaWQgc2hvd193YXlsYW5kX2xvb2t1cF90YWJsZShJQnVzLlRleHQg dGV4dCkgewotICAgICAgICAgbV93YXlsYW5kX2xvb2t1cF90YWJsZV9pc192aXNpYmxlID0gdHJ1 ZTsKLSAgICAgICAgIHZhciB0YWJsZSA9IG1fZW1vamllci5nZXRfb25lX2RpbWVuc2lvbl9sb29r dXBfdGFibGUoKTsKLSsgICAgICAgIGJvb2wgZG9fc2hvd19hdXhpbGlhcnlfdGV4dCA9ICh0ZXh0 LnRleHQuZ2V0X2NoYXIoKSA9PSAweDI2QTApOwotICAgICAgICAgdWludCBuY2FuZGlkYXRlcyA9 IHRhYmxlLmdldF9udW1iZXJfb2ZfY2FuZGlkYXRlcygpOwotICAgICAgICAgdXBkYXRlX2F1eGls aWFyeV90ZXh0X3JlY2VpdmVkKAotICAgICAgICAgICAgICAgICB0ZXh0LAotLSAgICAgICAgICAg ICAgICBuY2FuZGlkYXRlcyA+IDAgPyB0cnVlIDogZmFsc2UpOwotKyAgICAgICAgICAgICAgICBk b19zaG93X2F1eGlsaWFyeV90ZXh0ID8gdHJ1ZSA6IG5jYW5kaWRhdGVzID4gMCA/IHRydWUgOiBm YWxzZSk7Ci0gICAgICAgICB1cGRhdGVfbG9va3VwX3RhYmxlX3JlY2VpdmVkKAotICAgICAgICAg ICAgICAgICB0YWJsZSwKLSAgICAgICAgICAgICAgICAgbmNhbmRpZGF0ZXMgPiAwID8gdHJ1ZSA6 IGZhbHNlKTsKLS0tIAotMi40OS4wCi0KLUZyb20gYTFjMTQ2OWEyYmE3MGMwMTNmMDY5OTVmZDc2 NjVmM2U3ODRjYmFmMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IGZ1aml3YXJhdCA8 dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KLURhdGU6IFRodSwgNSBKdW4gMjAyNSAxOTozNjoy MCArMDkwMAotU3ViamVjdDogW1BBVENIIDEvNF0gc3JjL2lidXNlbmdpbmVzaW1wbGU6IEltcHJv dmUgQkVQTyBjb21wb3NlIHNlcXVlbmNlIHZpc3VhbHMKLQotVGhlIEZyZW5jaCAoQkVQTywgQUZO T1IpIGtleW1hcCB1dGlsaXplcyBwc2V1ZG8tZGVhZGtleXMgd2l0aGluCi1VK0ZERDAgdG8gVStG REQ5IHJhbmdlLCB3aGljaCBsYWNrIHJlYWRhYmxlIGNoYXJhY3RlcnMgYnV0IHRoZQotc3ltYm9s IGZpbGUsIC91c3Ivc2hhcmUvWDExL3hrYi9zeW1ib2xzL2ZyLCBkZXRhaWxzIHRoZSBwcm9wb3Nl ZAotZXhwcmVzc2lvbnMgb2YgdGhlIHBzZXVkby1kZWFka2V5cyBpbiB0aGUgY29tbWVudCBsaW5l cyBhbmQgSUJ1cwotZm9sbG93cyBpdC4KLQotQlVHPWh0dHBzOi8vZ2l0aHViLmNvbS9pYnVzL2li dXMvaXNzdWVzLzI3NDgKLUJVRz1odHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvZ3RrLy0v bWVyZ2VfcmVxdWVzdHMvODM2OAotLS0tCi0gc3JjL2lidXNjb21wb3NldGFibGUuYyAgICAgICAg fCAyNyArKysrKysrKysrKysrKysrKy0KLSBzcmMvaWJ1c2VuZ2luZXNpbXBsZS5jICAgICAgICB8 IDUyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tCi0gc3JjL2lidXNlbmdpbmVz aW1wbGVwcml2YXRlLmggfCAxMiArKysrKysrKwotIDMgZmlsZXMgY2hhbmdlZCwgODYgaW5zZXJ0 aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9pYnVzY29tcG9zZXRh YmxlLmMgYi9zcmMvaWJ1c2NvbXBvc2V0YWJsZS5jCi1pbmRleCBmZmQ0MGM3NS4uNDc2NDQyNmEg MTAwNjQ0Ci0tLS0gYS9zcmMvaWJ1c2NvbXBvc2V0YWJsZS5jCi0rKysgYi9zcmMvaWJ1c2NvbXBv c2V0YWJsZS5jCi1AQCAtMjA1OCw3ICsyMDU4LDcgQEAgaWJ1c19rZXlzeW1fdG9fdW5pY29kZSAo Z3VpbnQgICAgIGtleXN5bSwKLSAgICAgICAgICAqIHdlIHVzZSBVKzAwQjcsIE1JRERMRSBET1Qu Ci0gICAgICAgICAgKi8KLSAgICAgICAgIHJldHVybiAweDAwQjc7Ci0tICAgIGRlZmF1bHQ6Owot KyAgICBkZWZhdWx0OgotICAgICAgICAgaWYgKG5lZWRfc3BhY2UpCi0gICAgICAgICAgICAgKm5l ZWRfc3BhY2UgPSBGQUxTRTsKLSAgICAgfQotQEAgLTIwNjYsMyArMjA2NiwyOCBAQCBpYnVzX2tl eXN5bV90b191bmljb2RlIChndWludCAgICAga2V5c3ltLAotICN1bmRlZiBDQVNFCi0gI3VuZGVm IENBU0VfQ09NQklORQotIH0KLSsKLStndW5pY2hhcgotK2lidXNfa2V5c3ltX3RvX3VuaWNvZGVf d2l0aF9sYXlvdXQgKGd1aW50ICAgICAgICAgICAgICAgICAgICAgIGtleXN5bSwKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiAgICAgICAgICAgICAgICAgICBj b21iaW5pbmcsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4g ICAgICAgICAgICAgICAgICAqbmVlZF9zcGFjZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICAgICAgICAgICpsYXlvdXQsCi0rICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgR19HTlVDX1VOVVNFRCBjb25zdCBnY2hhciAqdmFy aWFudCkgewotKyNkZWZpbmUgQ0FTRV9LRVlTWU0oa2V5c3ltX3ZhbCwgdW5pY29kZSkgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgIGNhc2Uga2V5c3ltX3Zh bDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc Ci0rICAgICAgICAgICAgaWYgKG5lZWRfc3BhY2UpICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgICAgICAqbmVlZF9zcGFjZSA9 IEZBTFNFOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAg ICAgICAgICByZXR1cm4gdW5pY29kZQotKyAgICAvKiBSZWZlciAoQkVQTywgQUZOT1IpIGNvbW1l bnRzIGluIC91c3Ivc2hhcmUvWDExL3hrYi9zeW1ib2xzL2ZyIGZpbGUuICovCi0rICAgIGlmICgh Z19hc2NpaV9zdHJuY2FzZWNtcCAobGF5b3V0LCAiZnIiLCAyKSkgewotKyAgICAgICAgc3dpdGNo IChrZXlzeW0pIHsKLSsgICAgICAgICAgICBDQVNFX0tFWVNZTSgweDAxMDBGREQ0LCAweDAwREYp OyAvKiDDnyAqLwotKyAgICAgICAgICAgIENBU0VfS0VZU1lNKDB4MDEwMEZERDUsIDB4MUQ0OSk7 IC8qIOG1iSAqLwotKyAgICAgICAgICAgIENBU0VfS0VZU1lNKDB4MDEwMEZERDcsIDB4MjIxRSk7 IC8qIOKIniAqLwotKyAgICAgICAgICAgIENBU0VfS0VZU1lNKDB4MDEwMEZERDgsIDB4MjAxNSk7 IC8qIOKAlSAqLwotKyAgICAgICAgICAgIGRlZmF1bHQ6OwotKyAgICAgICAgfQotKyAgICB9Ci0r I3VuZGVmIENBU0VfS0VZU1lNCi0rICAgIHJldHVybiBpYnVzX2tleXN5bV90b191bmljb2RlIChr ZXlzeW0sIGNvbWJpbmluZywgbmVlZF9zcGFjZSk7Ci0rfQotZGlmZiAtLWdpdCBhL3NyYy9pYnVz ZW5naW5lc2ltcGxlLmMgYi9zcmMvaWJ1c2VuZ2luZXNpbXBsZS5jCi1pbmRleCAxNWM0NWMyZS4u MjU4YmQ4NDkgMTAwNjQ0Ci0tLS0gYS9zcmMvaWJ1c2VuZ2luZXNpbXBsZS5jCi0rKysgYi9zcmMv aWJ1c2VuZ2luZXNpbXBsZS5jCi1AQCAtNDcyLDE1ICs0NzIsNTkgQEAgaWJ1c19lbmdpbmVfc2lt cGxlX3VwZGF0ZV9wcmVlZGl0X3RleHQgKElCdXNFbmdpbmVTaW1wbGUgKnNpbXBsZSkKLSAgICAg ICAgICAgICAgICAgICAgICAgICBnX3N0cmluZ19hcHBlbmRfdW5pY2hhciAocywgY2gpOwotICAg ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICB9IGVsc2UgewotKyAgICAgICAg ICAgICAgICAgICAgZ3VpbnQgdW5rbm93bl9jaCA9IDA7Ci0gICAgICAgICAgICAgICAgICAgICBj aCA9IGlidXNfa2V5dmFsX3RvX3VuaWNvZGUgKGtleXN5bSk7Ci0gICAgICAgICAgICAgICAgICAg ICBpZiAoY2gpIHsKLS0gICAgICAgICAgICAgICAgICAgICAgICBnX3N0cmluZ19hcHBlbmRfdW5p Y2hhcihzLCBjaCk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgLyogU2hvdWxkIHByb3ZpZGUg aWJ1c191bmljb2RlX2dldF9zY3JpcHQoKSBmb3IKLSsgICAgICAgICAgICAgICAgICAgICAgICAg KiBvdGhlciBJQnVzIGVuZ2luZXM/Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICovCi0rICAg ICAgICAgICAgICAgICAgICAgICAgaWYgKGdfdW5pY2hhcl9nZXRfc2NyaXB0IChjaCkgIT0KLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgR19VTklDT0RFX1NDUklQVF9VTktOT1dOKSB7Ci0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfc3RyaW5nX2FwcGVuZF91bmljaGFyKHMsIGNo KTsKLSsgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1bmtub3duX2NoID0gY2g7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgfQot ICAgICAgICAgICAgICAgICAgICAgLyogQ2FuIHNlbmQgVW5pY29kZSBjaGFyIGFzIGtleXN5bSB3 aXRoIDxVeHh4eD4gZm9ybWF0Ci0gICAgICAgICAgICAgICAgICAgICAgKiBpbiBjb21vcHNlIHNl cXVlbmNlcyBhbmQgc2hvdWxkIG5vdCB3YXJuIHRoaXMgY2FzZS4KLSAgICAgICAgICAgICAgICAg ICAgICAqLwotLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChnX3VuaWNoYXJfdmFsaWRh dGUgKGtleXN5bSkpIHsKLS0gICAgICAgICAgICAgICAgICAgICAgICBjaCA9IGtleXN5bTsKLS0g ICAgICAgICAgICAgICAgICAgICAgICBnX3N0cmluZ19hcHBlbmRfdW5pY2hhcihzLCBjaCk7Ci0r ICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGdfdW5pY2hhcl92YWxpZGF0ZSAoa2V5c3lt ICYgMHhmZmZmKSkgewotKyAgICAgICAgICAgICAgICAgICAgICAgIGNoID0ga2V5c3ltICYgMHhm ZmZmOwotKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnX3VuaWNoYXJfZ2V0X3NjcmlwdCAo Y2gpICE9Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdfVU5JQ09ERV9TQ1JJUFRfVU5L Tk9XTikgewotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3N0cmluZ19hcHBlbmRfdW5p Y2hhcihzLCBjaCk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdW5rbm93bl9jaCA9IGNoOwotKyAgICAgICAgICAgICAgICAg ICAgICAgIH0KLSsgICAgICAgICAgICAgICAgICAgIH0KLSsgICAgICAgICAgICAgICAgICAgIGlm ICh1bmtub3duX2NoKSB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgZ2NoYXIgKm5hbWUgPSBO VUxMOwotKyAgICAgICAgICAgICAgICAgICAgICAgIGdjaGFyICpsYXlvdXQgPSBOVUxMOwotKyAg ICAgICAgICAgICAgICAgICAgICAgIGdjaGFyICpsYXlvdXRfZW5kOwotKyAgICAgICAgICAgICAg ICAgICAgICAgIGdfb2JqZWN0X2dldCAoc2ltcGxlLCAiZW5naW5lLW5hbWUiLCAmbmFtZSwgTlVM TCk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFnX2FzY2lpX3N0cm5jYXNlY21wIChu YW1lLCAieGtiOiIsIDQpKSB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheW91dF9l bmQgPSBuYW1lICsgNDsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCpsYXlv dXRfZW5kICYmICpsYXlvdXRfZW5kICE9ICc6JykKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGxheW91dF9lbmQrKzsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCps YXlvdXRfZW5kID09ICc6JykgewotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5 b3V0ID0gZ19zdHJuZHVwIChuYW1lICsgNCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbGF5b3V0X2VuZCAtIG5hbWUgLSA0KTsKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfQotKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7 Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfd2FybmluZyAoIlVuZXhwZWN0ZWQgZW5n aW5lIGlzIHVzZWQ6ICVzIiwgbmFtZSk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgfQotKyAg ICAgICAgICAgICAgICAgICAgICAgIGdfZnJlZSAobmFtZSk7Ci0rICAgICAgICAgICAgICAgICAg ICAgICAgaWYgKGxheW91dCkgewotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaCA9IGli dXNfa2V5c3ltX3RvX3VuaWNvZGVfd2l0aF9sYXlvdXQgKGtleXN5bSwKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBG QUxTRSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBOVUxMLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheW91dCwKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBOVUxMKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19mcmVlIChsYXlvdXQp OwotKyAgICAgICAgICAgICAgICAgICAgICAgIH0KLSsgICAgICAgICAgICAgICAgICAgICAgICBp ZiAoY2gpCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfc3RyaW5nX2FwcGVuZF91bmlj aGFyKHMsIGNoKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCi0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGdfc3RyaW5nX2FwcGVuZF91bmljaGFyKHMsIDB4MDBiNyk7IC8qIMK3 ICovCi0gICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIH0KLSAgICAgICAg ICAgICAgICAgaWYgKCFjaCkgewotZGlmZiAtLWdpdCBhL3NyYy9pYnVzZW5naW5lc2ltcGxlcHJp dmF0ZS5oIGIvc3JjL2lidXNlbmdpbmVzaW1wbGVwcml2YXRlLmgKLWluZGV4IGVjNzY0ZmE3Li5j MDFkMmViMSAxMDA2NDQKLS0tLSBhL3NyYy9pYnVzZW5naW5lc2ltcGxlcHJpdmF0ZS5oCi0rKysg Yi9zcmMvaWJ1c2VuZ2luZXNpbXBsZXByaXZhdGUuaAotQEAgLTY1LDYgKzY1LDE4IEBAIGdib29s ZWFuIGlidXNfY29tcG9zZV90YWJsZV9jaGVjayAgIChjb25zdCBJQnVzQ29tcG9zZVRhYmxlRXgg ICAqdGFibGUsCi0gZ3VuaWNoYXIgaWJ1c19rZXlzeW1fdG9fdW5pY29kZSAgICAgKGd1aW50ICAg ICAgICAgICAgICAgICAgICAgICBrZXlzeW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGdib29sZWFuICAgICAgICAgICAgICAgICAgICBjb21iaW5pbmcsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuICAgICAgICAgICAgICAgICAg ICpuZWVkX3NwYWNlKTsKLSsvKioKLSsgKiBpYnVzX2tleXN5bV90b191bmljb2RlX3dpdGhfbGF5 b3V0OgotKyAqCi0rICogU2luY2U6IDEuNS4zMwotKyAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSsg Ki8KLStndW5pY2hhciBpYnVzX2tleXN5bV90b191bmljb2RlX3dpdGhfbGF5b3V0Ci0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGd1aW50ICAgICAgICAgICAgICAgICAgICAg ICBrZXlzeW0sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFu ICAgICAgICAgICAgICAgICAgICBjb21iaW5pbmcsCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGdib29sZWFuICAgICAgICAgICAgICAgICAgICpuZWVkX3NwYWNlLAotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICAgICAg ICAgICAqbGF5b3V0LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHX0dO VUNfVU5VU0VEIGNvbnN0IGdjaGFyICAqdmFyaWFudCk7Ci0gCi0gR19FTkRfREVDTFMKLSAKLS0t IAotMi40OS4wCi0KLUZyb20gMDY1Y2I4MzE2ZmZjYjkyZDk3ODAzYzgzNTBmMDI0MDhjNDc4ZDdm MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IGZ1aml3YXJhdCA8dGFrYW8uZnVqaXdh cmExQGdtYWlsLmNvbT4KLURhdGU6IFRodSwgNSBKdW4gMjAyNSAxOTo0NDo1NCArMDkwMAotU3Vi amVjdDogW1BBVENIIDIvNF0gc3JjOiBEbyBub3QgbG9hZCBlbi1VUyBjb21wb3NlIHRhYmxlIGJ5 IGRlZmF1bHQKLQotR1RLNCBoYXMgbG9hZCBlbi1VUyBjb21wb3NlIHRhYmxlIGluIGNhc2Ugb2Yg bm8gdXNlciBjb21wb3NlIGZpbGUuCi1HVEs0IG5vdyBkb2VzIG5vdCBsb2FkIHRoZSBlbi1VUyBj b21wb3NlIHRhYmxlIGJ5IGRlZmF1bHQgaW4gY2FzZQotdGhhdCB0aGUgdXNlciBjb21wb3NlIGZp bGUgZXhpc3RzIG9yIGVsLUdSIGxvY2FsZSBpcyB1c2VkIHNpbmNlCi00LjE4LjUgYW5kIG5ldyBr ZXl3b3JkICJpbmNsdWRlICVMIiBjYW4gbG9hZHMgdGhlIGVuLVVTIGNvbXBvc2UgdGFibGUuCi1J ZiB0aGUgb2xkIGNvbXBvc2UgY2FjaGUgdmVyc2lvbiA0IGlzIGZvdW5kLCB0aGUgY29tcG9zZSBm aWxlCi13aWxsIGJlIHJld3JpdHRlbiB0byBhZGQgdGhlIGxpbmUgb2YgImluY2x1ZGUgJUwiLgot SUJ1cyBhbHNvIGZvbGxvd3MgR1RLIDQuMTguNS4KLQotRml4ZXM6IGh0dHBzOi8vZ2l0aHViLmNv bS9pYnVzL2lidXMvY29tbWl0LzI4YjM1N2QKLUZpeGVzOiBodHRwczovL2dpdGh1Yi5jb20vaWJ1 cy9pYnVzL2NvbW1pdC8wOWVhMDY5Ci1CVUc9aHR0cHM6Ly9naXRodWIuY29tL2lidXMvaWJ1cy9p c3N1ZXMvMjcwNgotQlVHPWh0dHBzOi8vZ2l0aHViLmNvbS9pYnVzL2lidXMvaXNzdWVzLzI3MjcK LS0tLQotIHNyYy9nZW5jb21wb3NldGFibGUuYyAgICAgICAgIHwgICA5ICstCi0gc3JjL2lidXNj b21wb3NldGFibGUuYyAgICAgICAgfCAyNzUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0t LS0tLQotIHNyYy9pYnVzY29tcG9zZXRhYmxlLmggICAgICAgIHwgIDI0ICsrLQotIHNyYy9pYnVz ZW5naW5lLmggICAgICAgICAgICAgIHwgICA1ICstCi0gc3JjL2lidXNlbmdpbmVzaW1wbGUuYyAg ICAgICAgfCAxMzkgKysrKysrKysrKysrLS0tLS0KLSBzcmMvaWJ1c2VuZ2luZXNpbXBsZXByaXZh dGUuaCB8ICAxOSArKy0KLSBzcmMvdGVzdHMvaWJ1cy1jb21wb3NlLmMgICAgICB8ICAgNiArLQot IDcgZmlsZXMgY2hhbmdlZCwgNDE0IGluc2VydGlvbnMoKyksIDk1IGRlbGV0aW9ucygtKQotCi1k aWZmIC0tZ2l0IGEvc3JjL2dlbmNvbXBvc2V0YWJsZS5jIGIvc3JjL2dlbmNvbXBvc2V0YWJsZS5j Ci1pbmRleCAzNWQ2Y2U4My4uMTYxYjg5ZTAgMTAwNjQ0Ci0tLS0gYS9zcmMvZ2VuY29tcG9zZXRh YmxlLmMKLSsrKyBiL3NyYy9nZW5jb21wb3NldGFibGUuYwotQEAgLTEsOCArMSw4IEBACi0gLyog LSotIG1vZGU6IEM7IGMtYmFzaWMtb2Zmc2V0OiA0OyBpbmRlbnQtdGFicy1tb2RlOiBuaWw7IC0q LSAqLwotIC8qIHZpbTpzZXQgZXQgc3RzPTQ6ICovCi0gLyogaWJ1cyAtIFRoZSBJbnB1dCBCdXMK LS0gKiBDb3B5cmlnaHQgKEMpIDIwMjMgVGFrYW8gRnVqaXdhcmEgPHRha2FvLmZ1aml3YXJhMUBn bWFpbC5jb20+Ci0tICogQ29weXJpZ2h0IChDKSAyMDIzIFJlZCBIYXQsIEluYy4KLSsgKiBDb3B5 cmlnaHQgKEMpIDIwMjMtMjAyNSBUYWthbyBGdWppd2FyYSA8dGFrYW8uZnVqaXdhcmExQGdtYWls LmNvbT4KLSsgKiBDb3B5cmlnaHQgKEMpIDIwMjMtMjAyNSBSZWQgSGF0LCBJbmMuCi0gICoKLSAg KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yCi0gICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBH ZW5lcmFsIFB1YmxpYwotQEAgLTc2LDYgKzc2LDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFy Z3ZbXSkKLSAgICAgY2hhciAqIGNvbnN0ICpzeXNfbGFuZyA9IE5VTEw7Ci0gICAgIGNoYXIgKnBh dGggPSBOVUxMOwotICAgICBJQnVzQ29tcG9zZVRhYmxlRXggKmNvbXBvc2VfdGFibGU7Ci0rICAg IGd1aW50MTYgc2F2ZWRfdmVyc2lvbiA9IDA7Ci0gICAgIGNoYXIgKmJhc2VuYW1lID0gTlVMTDsK LSAKLSAgICAgcGF0aCA9IGdfc3RyZHVwICgiLi9Db21wb3NlIik7Ci1AQCAtOTcsMTMgKzk4LDE1 IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCi0gICAgICAgICBnX2RlYnVnICgiQ3Jl YXRlIGEgY2FjaGUgb2YgJXMiLCBwYXRoKTsKLSAgICAgfQotICAgICBnX3NldGVudiAoIklCVVNf Q09NUE9TRV9DQUNIRV9ESVIiLCAiLiIsIFRSVUUpOwotLSAgICBjb21wb3NlX3RhYmxlID0gaWJ1 c19jb21wb3NlX3RhYmxlX2xvYWRfY2FjaGUgKHBhdGgpOwotKyAgICBjb21wb3NlX3RhYmxlID0g aWJ1c19jb21wb3NlX3RhYmxlX2xvYWRfY2FjaGUgKHBhdGgsICZzYXZlZF92ZXJzaW9uKTsKLSAg ICAgaWYgKCFjb21wb3NlX3RhYmxlICYmCi0gICAgICAgICAoY29tcG9zZV90YWJsZSA9IGlidXNf Y29tcG9zZV90YWJsZV9uZXdfd2l0aF9maWxlIChwYXRoLCBOVUxMKSkKLSAgICAgICAgICAgID09 IE5VTEwpIHsKLSAgICAgICAgIGdfd2FybmluZyAoIkZhaWxlZCB0byBnZW5lcmF0ZSB0aGUgY29t cG9zZSB0YWJsZS4iKTsKLSAgICAgICAgIHJldHVybiAxOwotICAgICB9Ci0rICAgIGlmIChzYXZl ZF92ZXJzaW9uID4gMCkKLSsgICAgICAgIGdfd2FybmluZyAoIk9sZCBjYWNoZSB3YXMgdXBkYXRl ZC4iKTsKLSAgICAgZ19mcmVlIChwYXRoKTsKLSAgICAgYmFzZW5hbWUgPSBnX3N0cmR1cF9wcmlu dGYgKCIlMDh4LmNhY2hlIiwgY29tcG9zZV90YWJsZS0+aWQpOwotICAgICBnX2RlYnVnICgiU2F2 aW5nIGNhY2hlIGlkICVzIiwgYmFzZW5hbWUpOwotZGlmZiAtLWdpdCBhL3NyYy9pYnVzY29tcG9z ZXRhYmxlLmMgYi9zcmMvaWJ1c2NvbXBvc2V0YWJsZS5jCi1pbmRleCA0NzY0NDI2YS4uMTY5Y2E4 Y2IgMTAwNjQ0Ci0tLS0gYS9zcmMvaWJ1c2NvbXBvc2V0YWJsZS5jCi0rKysgYi9zcmMvaWJ1c2Nv bXBvc2V0YWJsZS5jCi1AQCAtMjQsNiArMjQsNyBAQAotIAotICNpbmNsdWRlIDxnbGliLmg+Ci0g I2luY2x1ZGUgPGdsaWIvZ3N0ZGlvLmg+Ci0rI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+Ci0g I2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAKLUBAIC0zOCw3ICsz OSw3IEBACi0gCi0gCi0gI2RlZmluZSBJQlVTX0NPTVBPU0VfVEFCTEVfTUFHSUMgIklCdXNDb21w b3NlVGFibGUiCi0tI2RlZmluZSBJQlVTX0NPTVBPU0VfVEFCTEVfVkVSU0lPTiAoNCkKLSsjZGVm aW5lIElCVVNfQ09NUE9TRV9UQUJMRV9WRVJTSU9OICg1KQotICNkZWZpbmUgSUJVU19NQVhfQ09N UE9TRV9BTEdPUklUSE1fTEVOIDkKLSAKLSB0eXBlZGVmIHN0cnVjdCB7Ci1AQCAtMjgzLDEwICsy ODQsMTUgQEAgZXhwYW5kX2luY2x1ZGVfcGF0aCAoY29uc3QgY2hhciAqaW5jbHVkZV9wYXRoKSB7 Ci0gICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICBj YXNlICdMJzogLyogbG9jYWxlIGNvbXBvc2UgZmlsZSAqLwotLSAgICAgICAgICAgICAgICBnX3dh cm5pbmcgKCJ3aGlsZSBoYW5kbGluZyBYQ29tcG9zZSBpbmNsdWRlIHRhcmdldCAlcywgZm91bmQg IgotLSAgICAgICAgICAgICAgICAgICAgICAgICAgInJlZHVuZGFudCAlJUwgaW5jbHVkZTsgdGhl IGluY2x1ZGUgaGFzIGJlZW4gIgotLSAgICAgICAgICAgICAgICAgICAgICAgICAgImlnbm9yZWQi LCBpbmNsdWRlX3BhdGgpOwotLSAgICAgICAgICAgICAgICBnb3RvIGZhaWw7Ci0rICAgICAgICAg ICAgICAgIG91dCA9IGdfc3RyZHVwICgiJUwiKTsKLSsgICAgICAgICAgICAgICAgaGVhZCA9IGkg KyAyOwotKyAgICAgICAgICAgICAgICB3aGlsZSAoKmhlYWQgfHwgKmhlYWQgPT0gJyAnIHx8ICpo ZWFkID09ICdcdCcpIGhlYWQrKzsKLSsgICAgICAgICAgICAgICAgaWYgKCpoZWFkICE9ICdcMCcp IHsKLSsgICAgICAgICAgICAgICAgICAgIGdfd2FybmluZyAoIlwiJXNcIiBhZnRlciBcIiUlTFwi IGlzIG5vdCBzdXBwb3J0ZWQgaW4gIgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi WENvbXBvc2UgaW5jbHVkZSB0YXJnZXQuIiwgaGVhZCk7Ci0rICAgICAgICAgICAgICAgICAgICBn b3RvIGZhaWw7Ci0rICAgICAgICAgICAgICAgIH0KLSsgICAgICAgICAgICAgICAgYnJlYWs7Ci0g ICAgICAgICAgICAgY2FzZSAnUyc6IC8qIHN5c3RlbSBjb21wb3NlIGRpciAqLwotICAgICAgICAg ICAgICAgICBvID0gb3V0OwotICAgICAgICAgICAgICAgICBmb3JtZXIgPSBnX3N0cm5kdXAgKGhl YWQsIGkgLSBoZWFkKTsKLUBAIC00MTMsNyArNDE5LDggQEAgZ2V0X2VuX2NvbXBvc2VfZmlsZSAo dm9pZCkKLSAKLSBzdGF0aWMgR0xpc3QgKgotIGlidXNfY29tcG9zZV9saXN0X3BhcnNlX2ZpbGUg KGNvbnN0IGNoYXIgKmNvbXBvc2VfZmlsZSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpbnQgICAgICAgICptYXhfY29tcG9zZV9sZW4pCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaW50ICAgICAgICAqbWF4X2NvbXBvc2VfbGVuLAotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGdib29sZWFuICAgKmNhbl9sb2FkX2VuX3VzKQotIHsKLSAgICAgY2hhciAqY29u dGVudHMgPSBOVUxMOwotICAgICBjaGFyICoqbGluZXMgPSBOVUxMOwotQEAgLTQyMyw2ICs0MzAs NyBAQCBpYnVzX2NvbXBvc2VfbGlzdF9wYXJzZV9maWxlIChjb25zdCBjaGFyICpjb21wb3NlX2Zp bGUsCi0gICAgIGludCBpOwotIAotICAgICBnX2Fzc2VydCAobWF4X2NvbXBvc2VfbGVuKTsKLSsg ICAgZ19hc3NlcnQgKGNhbl9sb2FkX2VuX3VzKTsKLSAKLSAgICAgaWYgKCFnX2ZpbGVfZ2V0X2Nv bnRlbnRzIChjb21wb3NlX2ZpbGUsICZjb250ZW50cywgJmxlbmd0aCwgJmVycm9yKSkgewotICAg ICAgICAgZ19lcnJvciAoIiVzIiwgZXJyb3ItPm1lc3NhZ2UpOwotQEAgLTQzOCw2ICs0NDYsMTEg QEAgaWJ1c19jb21wb3NlX2xpc3RfcGFyc2VfZmlsZSAoY29uc3QgY2hhciAqY29tcG9zZV9maWxl LAotICAgICAgICAgcGFyc2VfY29tcG9zZV9saW5lICgmY29tcG9zZV9saXN0LCBsaW5lc1tpXSwg JmNvbXBvc2VfbGVuLCAmaW5jbHVkZSk7Ci0gICAgICAgICBpZiAoKm1heF9jb21wb3NlX2xlbiA8 IGNvbXBvc2VfbGVuKQotICAgICAgICAgICAgICptYXhfY29tcG9zZV9sZW4gPSBjb21wb3NlX2xl bjsKLSsgICAgICAgIGlmICghZ19zdHJjbXAwIChpbmNsdWRlLCAiJUwiKSkgewotKyAgICAgICAg ICAgICpjYW5fbG9hZF9lbl91cyA9IFRSVUU7Ci0rICAgICAgICAgICAgZ19jbGVhcl9wb2ludGVy ICgmaW5jbHVkZSwgZ19mcmVlKTsKLSsgICAgICAgICAgICBjb250aW51ZTsKLSsgICAgICAgIH0K LSAgICAgICAgIGlmIChpbmNsdWRlICYmICppbmNsdWRlKSB7Ci0gICAgICAgICAgICAgR1N0YXRC dWYgYnVmX2luY2x1ZGUgPSB7IDAsIH07Ci0gICAgICAgICAgICAgR1N0YXRCdWYgYnVmX3BhcmVu dCA9IHsgMCwgfTsKLUBAIC00ODYsNyArNDk5LDggQEAgaWJ1c19jb21wb3NlX2xpc3RfcGFyc2Vf ZmlsZSAoY29uc3QgY2hhciAqY29tcG9zZV9maWxlLAotICAgICAgICAgaWYgKGluY2x1ZGUgJiYg KmluY2x1ZGUpIHsKLSAgICAgICAgICAgICBHTGlzdCAqcmVzdCA9IGlidXNfY29tcG9zZV9saXN0 X3BhcnNlX2ZpbGUgKAotICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZSwKLS0gICAgICAgICAg ICAgICAgICAgIG1heF9jb21wb3NlX2xlbik7Ci0rICAgICAgICAgICAgICAgICAgICBtYXhfY29t cG9zZV9sZW4sCi0rICAgICAgICAgICAgICAgICAgICBjYW5fbG9hZF9lbl91cyk7Ci0gICAgICAg ICAgICAgaWYgKHJlc3QpIHsKLSAgICAgICAgICAgICAgICAgY29tcG9zZV9saXN0ID0gZ19saXN0 X2NvbmNhdCAoY29tcG9zZV9saXN0LCByZXN0KTsKLSAgICAgICAgICAgICB9Ci1AQCAtNTA0LDEz ICs1MTgsMTYgQEAgaWJ1c19jb21wb3NlX2xpc3RfY2hlY2tfZHVwbGljYXRlZF93aXRoX2VuIChH TGlzdCAgKmNvbXBvc2VfbGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGludCAgICAgbWF4X2NvbXBvc2VfbGVuLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgR1NMaXN0ICpjb21wb3NlX3RhYmxlcykKLSB7Ci0rICAg IGd1aW50ICprZXlzeW1zOwotKyAgICBHU3RyaW5nICpvdXRwdXQ7Ci0gICAgIEdMaXN0ICpsaXN0 OwotLSAgICBzdGF0aWMgZ3VpbnQgKmtleXN5bXM7Ci0gICAgIEdMaXN0ICpyZW1vdmVkX2xpc3Qg PSBOVUxMOwotICAgICBJQnVzQ29tcG9zZURhdGEgKmNvbXBvc2VfZGF0YTsKLS0gICAgR1N0cmlu ZyAqb3V0cHV0ID0gZ19zdHJpbmdfbmV3ICgiIik7Ci0gCi0rICAgIGlmICghY29tcG9zZV9saXN0 KQotKyAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgIGtleXN5bXMgPSBnX25ldyAoZ3VpbnQsIG1h eF9jb21wb3NlX2xlbiArIDEpOwotKyAgICBvdXRwdXQgPSBnX3N0cmluZ19uZXcgKCIiKTsKLSAK LSAgICAgZm9yIChsaXN0ID0gY29tcG9zZV9saXN0OyBsaXN0ICE9IE5VTEw7IGxpc3QgPSBsaXN0 LT5uZXh0KSB7Ci0gICAgICAgICBpbnQgaTsKLUBAIC02OTQsNiArNzExLDggQEAgaWJ1c19jb21w b3NlX2xpc3RfY2hlY2tfZHVwbGljYXRlZF93aXRoX293biAoR0xpc3QgICpjb21wb3NlX2xpc3Qs Ci0gICAgIGludCBpOwotICAgICBHTGlzdCAqcmVtb3ZlZF9saXN0ID0gTlVMTDsKLSAKLSsgICAg aWYgKCFjb21wb3NlX2xpc3QpCi0rICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgZm9yIChsaXN0 ID0gY29tcG9zZV9saXN0OyBsaXN0ICE9IE5VTEw7IGxpc3QgPSBsaXN0LT5uZXh0KSB7Ci0gICAg ICAgICBnYm9vbGVhbiBpc19kaWZmZXJlbnRfdmFsdWUgPSBGQUxTRTsKLSAgICAgICAgIGlmICgh bGlzdC0+bmV4dCkKLUBAIC05MjEsNiArOTQwLDcgQEAgaWJ1c19jb21wb3NlX3RhYmxlX3Nlcmlh bGl6ZSAoSUJ1c0NvbXBvc2VUYWJsZUV4ICpjb21wb3NlX3RhYmxlLAotICAgICBndWludDE2IG1h eF9zZXFfbGVuOwotICAgICBndWludDE2IGluZGV4X3N0cmlkZTsKLSAgICAgZ3VpbnQxNiBuX3Nl cXM7Ci0rICAgIGd1aW50OCBjb21wb3NlX3R5cGUgPSAwOwotICAgICBnc2l6ZSBuX3NlcXNfMzJi aXQgPSAwOwotICAgICBnc2l6ZSBzZWNvbmRfc2l6ZSA9IDA7Ci0gICAgIEdWYXJpYW50ICp2YXJp YW50X2RhdGEgPSBOVUxMOwotQEAgLTkzNCw4ICs5NTQsOSBAQCBpYnVzX2NvbXBvc2VfdGFibGVf c2VyaWFsaXplIChJQnVzQ29tcG9zZVRhYmxlRXggKmNvbXBvc2VfdGFibGUsCi0gICAgIG1heF9z ZXFfbGVuID0gY29tcG9zZV90YWJsZS0+bWF4X3NlcV9sZW47Ci0gICAgIGluZGV4X3N0cmlkZSA9 IG1heF9zZXFfbGVuICsgMjsKLSAgICAgbl9zZXFzID0gY29tcG9zZV90YWJsZS0+bl9zZXFzOwot KyAgICBjb21wb3NlX3R5cGUgPSBjb21wb3NlX3RhYmxlLT5jYW5fbG9hZF9lbl91cyA/IDEgOiAw OwotIAotLSAgICBnX3JldHVybl92YWxfaWZfZmFpbCAobWF4X3NlcV9sZW4sIE5VTEwpOwotKyAg ICBnX3JldHVybl92YWxfaWZfZmFpbCAobWF4X3NlcV9sZW4gfHwgY29tcG9zZV90eXBlLCBOVUxM KTsKLSAKLSAgICAgaWYgKG5fc2VxcykgewotICAgICAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwg KGNvbXBvc2VfdGFibGUtPmRhdGEsIE5VTEwpOwotQEAgLTk2NSw3ICs5ODYsNyBAQCBpYnVzX2Nv bXBvc2VfdGFibGVfc2VyaWFsaXplIChJQnVzQ29tcG9zZVRhYmxlRXggKmNvbXBvc2VfdGFibGUs Ci0gICAgICAgICBuX3NlcXNfMzJiaXQgPSBjb21wb3NlX3RhYmxlLT5wcml2LT5maXJzdF9uX3Nl cXM7Ci0gICAgICAgICBzZWNvbmRfc2l6ZSA9IGNvbXBvc2VfdGFibGUtPnByaXYtPnNlY29uZF9z aXplOwotICAgICB9Ci0tICAgIGlmICghbl9zZXFzICYmICFuX3NlcXNfMzJiaXQpIHsKLSsgICAg aWYgKCFuX3NlcXMgJiYgIW5fc2Vxc18zMmJpdCAmJiAhY29tcG9zZV90eXBlKSB7Ci0gICAgICAg ICBnX3dhcm5pbmcgKCJDb21wb3NlVGFibGUgaGFzIG5vdCBrZXkgc2VxdWVuY2VzLiIpOwotICAg ICAgICAgZ290byBvdXRfc2VyaWFsaXplOwotICAgICB9IGVsc2UgaWYgKG5fc2Vxc18zMmJpdCAm JiAhc2Vjb25kX3NpemUpIHsKLUBAIC0xMDI4LDcgKzEwNDksNyBAQCBpYnVzX2NvbXBvc2VfdGFi bGVfc2VyaWFsaXplIChJQnVzQ29tcG9zZVRhYmxlRXggKmNvbXBvc2VfdGFibGUsCi0gICAgICAg ICAgICAgICAgIHNpemVvZiAoZ3VpbnQzMikpOwotICAgICAgICAgZ19hc3NlcnQgKHZhcmlhbnRf ZGF0YV8zMmJpdF9maXJzdCAmJiB2YXJpYW50X2RhdGFfMzJiaXRfc2Vjb25kKTsKLSAgICAgfQot LSAgICB2YXJpYW50X3RhYmxlID0gZ192YXJpYW50X25ldyAoIihzcXFxcXF2dnYpIiwKLSsgICAg dmFyaWFudF90YWJsZSA9IGdfdmFyaWFudF9uZXcgKCIoc3FxcXFxdnZ2eSkiLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdmVyc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG1heF9zZXFfbGVuLAotQEAgLTEwMzcsNyArMTA1OCw4IEBAIGlidXNfY29tcG9zZV90YWJs ZV9zZXJpYWxpemUgKElCdXNDb21wb3NlVGFibGVFeCAqY29tcG9zZV90YWJsZSwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY29uZF9zaXplLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdmFyaWFudF9kYXRhLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdmFyaWFudF9kYXRhXzMyYml0X2ZpcnN0LAotLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdmFyaWFudF9kYXRhXzMyYml0X3NlY29uZCk7Ci0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50X2RhdGFfMzJiaXRfc2Vjb25kLAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9zZV90eXBlKTsKLSAgICAg cmV0dXJuIGdfdmFyaWFudF9yZWZfc2luayAodmFyaWFudF90YWJsZSk7Ci0gCi0gb3V0X3Nlcmlh bGl6ZToKLUBAIC0xMDYxLDcgKzEwODMsOCBAQCBpYnVzX2NvbXBvc2VfdGFibGVfZmluZCAoZ2Nv bnN0cG9pbnRlciBkYXRhMSwKLSAKLSBJQnVzQ29tcG9zZVRhYmxlRXggKgotIGlidXNfY29tcG9z ZV90YWJsZV9kZXNlcmlhbGl6ZSAoY29uc3QgY2hhciAqY29udGVudHMsCi0tICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBnc2l6ZSAgICAgICBsZW5ndGgpCi0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBnc2l6ZSAgICAgICBsZW5ndGgsCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBndWludDE2ICAgICpzYXZlZF92ZXJzaW9uKQotIHsKLSAgICAgSUJ1c0Nv bXBvc2VUYWJsZUV4ICpyZXR2YWwgPSBOVUxMOwotICAgICBHVmFyaWFudFR5cGUgKnR5cGU7Ci1A QCAtMTA3MCw5ICsxMDkzLDkgQEAgaWJ1c19jb21wb3NlX3RhYmxlX2Rlc2VyaWFsaXplIChjb25z dCBjaGFyICpjb250ZW50cywKLSAgICAgR1ZhcmlhbnQgKnZhcmlhbnRfZGF0YV8zMmJpdF9zZWNv bmQgPSBOVUxMOwotICAgICBHVmFyaWFudCAqdmFyaWFudF90YWJsZSA9IE5VTEw7Ci0gICAgIGNv bnN0IGNoYXIgKmhlYWRlciA9IE5VTEw7Ci0tICAgIGd1aW50MTYgdmVyc2lvbiA9IDA7Ci0gICAg IGd1aW50MTYgbWF4X3NlcV9sZW4gPSAwOwotICAgICBndWludDE2IG5fc2VxcyA9IDA7Ci0rICAg IGd1aW50OCBjb21wb3NlX3R5cGUgPSAwOwotICAgICBndWludDE2IG5fc2Vxc18zMmJpdCA9IDA7 Ci0gICAgIGd1aW50MTYgc2Vjb25kX3NpemUgPSAwOwotICAgICBndWludDE2IGluZGV4X3N0cmlk ZTsKLUBAIC0xMDgzLDcgKzExMDYsOSBAQCBpYnVzX2NvbXBvc2VfdGFibGVfZGVzZXJpYWxpemUg KGNvbnN0IGNoYXIgKmNvbnRlbnRzLAotIAotICAgICBnX3JldHVybl92YWxfaWZfZmFpbCAoY29u dGVudHMgIT0gTlVMTCwgTlVMTCk7Ci0gICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChsZW5ndGgg PiAwLCBOVUxMKTsKLSsgICAgZ19hc3NlcnQgKHNhdmVkX3ZlcnNpb24pOwotIAotKyAgICAqc2F2 ZWRfdmVyc2lvbiA9IDA7Ci0gICAgIC8qIENoZWNrIHRoZSBjYWNoZSB2ZXJzaW9uIGF0IGZpcnN0 IGJlZm9yZSBsb2FkIHdob2xlIHRoZSBmaWxlIGNvbnRlbnQuICovCi0gICAgIHR5cGUgPSBnX3Zh cmlhbnRfdHlwZV9uZXcgKCIoc3EpIik7Ci0gICAgIHZhcmlhbnRfdGFibGUgPSBnX3ZhcmlhbnRf bmV3X2Zyb21fZGF0YSAodHlwZSwKLUBAIC0xMTAwLDI1ICsxMTI1LDI0IEBAIGlidXNfY29tcG9z ZV90YWJsZV9kZXNlcmlhbGl6ZSAoY29uc3QgY2hhciAqY29udGVudHMsCi0gICAgIH0KLSAKLSAg ICAgZ192YXJpYW50X3JlZl9zaW5rICh2YXJpYW50X3RhYmxlKTsKLS0gICAgZ192YXJpYW50X2dl dCAodmFyaWFudF90YWJsZSwgIigmc3EpIiwgJmhlYWRlciwgJnZlcnNpb24pOwotKyAgICBnX3Zh cmlhbnRfZ2V0ICh2YXJpYW50X3RhYmxlLCAiKCZzcSkiLCAmaGVhZGVyLCBzYXZlZF92ZXJzaW9u KTsKLSAKLSAgICAgaWYgKGdfc3RyY21wMCAoaGVhZGVyLCBJQlVTX0NPTVBPU0VfVEFCTEVfTUFH SUMpICE9IDApIHsKLSAgICAgICAgIGdfd2FybmluZyAoImNhY2hlIGlzIG5vdCBJQnVzQ29tcG9z ZVRhYmxlLiIpOwotICAgICAgICAgZ290byBvdXRfbG9hZF9jYWNoZTsKLSAgICAgfQotIAotLSAg ICBpZiAodmVyc2lvbiAhPSBJQlVTX0NPTVBPU0VfVEFCTEVfVkVSU0lPTikgewotKyAgICBpZiAo KnNhdmVkX3ZlcnNpb24gIT0gSUJVU19DT01QT1NFX1RBQkxFX1ZFUlNJT04pIHsKLSAgICAgICAg IGdfd2FybmluZyAoImNhY2hlIHZlcnNpb24gaXMgZGlmZmVyZW50OiAldSAhPSAldSIsCi0tICAg ICAgICAgICAgICAgICAgIHZlcnNpb24sIElCVVNfQ09NUE9TRV9UQUJMRV9WRVJTSU9OKTsKLSsg ICAgICAgICAgICAgICAgICAgKnNhdmVkX3ZlcnNpb24sIElCVVNfQ09NUE9TRV9UQUJMRV9WRVJT SU9OKTsKLSAgICAgICAgIGdvdG8gb3V0X2xvYWRfY2FjaGU7Ci0gICAgIH0KLSAKLS0gICAgdmVy c2lvbiA9IDA7Ci0gICAgIGhlYWRlciA9IE5VTEw7Ci0gICAgIGdfdmFyaWFudF91bnJlZiAodmFy aWFudF90YWJsZSk7Ci0gICAgIHZhcmlhbnRfdGFibGUgPSBOVUxMOwotIAotLSAgICB0eXBlID0g Z192YXJpYW50X3R5cGVfbmV3ICgiKHNxcXFxcXZ2dikiKTsKLSsgICAgdHlwZSA9IGdfdmFyaWFu dF90eXBlX25ldyAoIihzcXFxcXF2dnZ5KSIpOwotICAgICB2YXJpYW50X3RhYmxlID0gZ192YXJp YW50X25ld19mcm9tX2RhdGEgKHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29udGVudHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbGVuZ3RoLAotQEAgLTExMzMsNyArMTE1Nyw3IEBAIGlidXNfY29tcG9z ZV90YWJsZV9kZXNlcmlhbGl6ZSAoY29uc3QgY2hhciAqY29udGVudHMsCi0gICAgIH0KLSAKLSAg ICAgZ192YXJpYW50X3JlZl9zaW5rICh2YXJpYW50X3RhYmxlKTsKLS0gICAgZ192YXJpYW50X2dl dCAodmFyaWFudF90YWJsZSwgIigmc3FxcXFxdnZ2KSIsCi0rICAgIGdfdmFyaWFudF9nZXQgKHZh cmlhbnRfdGFibGUsICIoJnNxcXFxcXZ2dnkpIiwKLSAgICAgICAgICAgICAgICAgICAgTlVMTCwK LSAgICAgICAgICAgICAgICAgICAgTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgJm1heF9zZXFf bGVuLAotQEAgLTExNDIsMTIgKzExNjYsMTUgQEAgaWJ1c19jb21wb3NlX3RhYmxlX2Rlc2VyaWFs aXplIChjb25zdCBjaGFyICpjb250ZW50cywKLSAgICAgICAgICAgICAgICAgICAgJnNlY29uZF9z aXplLAotICAgICAgICAgICAgICAgICAgICAmdmFyaWFudF9kYXRhLAotICAgICAgICAgICAgICAg ICAgICAmdmFyaWFudF9kYXRhXzMyYml0X2ZpcnN0LAotLSAgICAgICAgICAgICAgICAgICAmdmFy aWFudF9kYXRhXzMyYml0X3NlY29uZCk7Ci0rICAgICAgICAgICAgICAgICAgICZ2YXJpYW50X2Rh dGFfMzJiaXRfc2Vjb25kLAotKyAgICAgICAgICAgICAgICAgICAmY29tcG9zZV90eXBlKTsKLSAK LSAgICAgaWYgKG1heF9zZXFfbGVuID09IDAgfHwgKG5fc2VxcyA9PSAwICYmIG5fc2Vxc18zMmJp dCA9PSAwKSkgewotLSAgICAgICAgZ193YXJuaW5nICgiY2FjaGUgc2l6ZSBpcyBub3QgY29ycmVj dCAlZCAlZCAlZCIsCi0tICAgICAgICAgICAgICAgICAgIG1heF9zZXFfbGVuLCBuX3NlcXMsIG5f c2Vxc18zMmJpdCk7Ci0tICAgICAgICBnb3RvIG91dF9sb2FkX2NhY2hlOwotKyAgICAgICAgaWYg KCFjb21wb3NlX3R5cGUpIHsKLSsgICAgICAgICAgICBnX3dhcm5pbmcgKCJjYWNoZSBzaXplIGlz IG5vdCBjb3JyZWN0ICVkICVkICVkIiwKLSsgICAgICAgICAgICAgICAgICAgICAgIG1heF9zZXFf bGVuLCBuX3NlcXMsIG5fc2Vxc18zMmJpdCk7Ci0rICAgICAgICAgICAgZ290byBvdXRfbG9hZF9j YWNoZTsKLSsgICAgICAgIH0KLSAgICAgfQotIAotICAgICBpZiAobl9zZXFzICYmIHZhcmlhbnRf ZGF0YSkgewotQEAgLTExNjgsNiArMTE5NSw3IEBAIGlidXNfY29tcG9zZV90YWJsZV9kZXNlcmlh bGl6ZSAoY29uc3QgY2hhciAqY29udGVudHMsCi0gICAgICAgICByZXR2YWwtPmRhdGEgPSBkYXRh OwotICAgICByZXR2YWwtPm1heF9zZXFfbGVuID0gbWF4X3NlcV9sZW47Ci0gICAgIHJldHZhbC0+ bl9zZXFzID0gbl9zZXFzOwotKyAgICByZXR2YWwtPmNhbl9sb2FkX2VuX3VzID0gY29tcG9zZV90 eXBlID8gVFJVRSA6IEZBTFNFOwotIAotICAgICBpZiAobl9zZXFzXzMyYml0ICYmICFzZWNvbmRf c2l6ZSkgewotICAgICAgICAgZ193YXJuaW5nICgiMzJiaXQga2V5IHNlcXVlbmNlcyBhcmUgbG9h ZGVkIGJ1dCB0aGUgdmFsdWVzICIgXAotQEAgLTExOTIsNyArMTIyMCw3IEBAIGlidXNfY29tcG9z ZV90YWJsZV9kZXNlcmlhbGl6ZSAoY29uc3QgY2hhciAqY29udGVudHMsCi0gICAgICAgICAgICAg Z290byBvdXRfbG9hZF9jYWNoZTsKLSAgICAgICAgIH0KLSAgICAgfQotLSAgICBpZiAoIWRhdGEg JiYgIWRhdGFfMzJiaXRfZmlyc3QpIHsKLSsgICAgaWYgKCFkYXRhICYmICFkYXRhXzMyYml0X2Zp cnN0ICYmICFjb21wb3NlX3R5cGUpIHsKLSAgICAgICAgIGdfd2FybmluZyAoImNhY2hlIGRhdGEg aXMgbnVsbC4iKTsKLSAgICAgICAgIGdvdG8gb3V0X2xvYWRfY2FjaGU7Ci0gICAgIH0KLUBAIC0x MjM1LDcgKzEyNjMsOCBAQCBvdXRfbG9hZF9jYWNoZToKLSAKLSAKLSBJQnVzQ29tcG9zZVRhYmxl RXggKgotLWlidXNfY29tcG9zZV90YWJsZV9sb2FkX2NhY2hlIChjb25zdCBnY2hhciAqY29tcG9z ZV9maWxlKQotK2lidXNfY29tcG9zZV90YWJsZV9sb2FkX2NhY2hlIChjb25zdCBnY2hhciAqY29t cG9zZV9maWxlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludDE2ICAgICAq c2F2ZWRfdmVyc2lvbikKLSB7Ci0gICAgIElCdXNDb21wb3NlVGFibGVFeCAqcmV0dmFsID0gTlVM TDsKLSAgICAgZ3VpbnQzMiBoYXNoOwotQEAgLTEyNDYsNiArMTI3NSw4IEBAIGlidXNfY29tcG9z ZV90YWJsZV9sb2FkX2NhY2hlIChjb25zdCBnY2hhciAqY29tcG9zZV9maWxlKQotICAgICBnc2l6 ZSBsZW5ndGggPSAwOwotICAgICBHRXJyb3IgKmVycm9yID0gTlVMTDsKLSAKLSsgICAgZ19hc3Nl cnQgKHNhdmVkX3ZlcnNpb24pOwotKyAgICAqc2F2ZWRfdmVyc2lvbiA9IDA7Ci0gICAgIGRvIHsK LSAgICAgICAgIGhhc2ggPSBnX3N0cl9oYXNoIChjb21wb3NlX2ZpbGUpOwotICAgICAgICAgaWYg KChwYXRoID0gaWJ1c19jb21wb3NlX2hhc2hfZ2V0X2NhY2hlX3BhdGggKGhhc2gpKSA9PSBOVUxM KQotQEAgLTEyNzAsNyArMTMwMSw5IEBAIGlidXNfY29tcG9zZV90YWJsZV9sb2FkX2NhY2hlIChj b25zdCBnY2hhciAqY29tcG9zZV9maWxlKQotICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg fQotIAotLSAgICAgICAgcmV0dmFsID0gaWJ1c19jb21wb3NlX3RhYmxlX2Rlc2VyaWFsaXplIChj b250ZW50cywgbGVuZ3RoKTsKLSsgICAgICAgIHJldHZhbCA9IGlidXNfY29tcG9zZV90YWJsZV9k ZXNlcmlhbGl6ZSAoY29udGVudHMsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGxlbmd0aCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc2F2ZWRfdmVyc2lvbik7Ci0gICAgICAgICBpZiAocmV0dmFsID09 IE5VTEwpIHsKLSAgICAgICAgICAgICBnX3dhcm5pbmcgKCJGYWlsZWQgdG8gbG9hZCB0aGUgY2Fj aGUgZmlsZTogJXMiLCBwYXRoKTsKLSAgICAgICAgIH0gZWxzZSB7Ci1AQCAtMTM2OSw3ICsxNDAy LDcgQEAgaWJ1c19jb21wb3NlX3RhYmxlX25ld193aXRoX2xpc3QgKEdMaXN0ICAgKmNvbXBvc2Vf bGlzdCwKLSAgICAgSUJ1c0NvbXBvc2VEYXRhICpjb21wb3NlX2RhdGEgPSBOVUxMOwotICAgICBJ QnVzQ29tcG9zZVRhYmxlRXggKnJldHZhbCA9IE5VTEw7Ci0gCi0tICAgIGdfcmV0dXJuX3ZhbF9p Zl9mYWlsIChjb21wb3NlX2xpc3QgIT0gTlVMTCwgTlVMTCk7Ci0rICAgIGdfcmV0dXJuX3ZhbF9p Zl9mYWlsIChjb21wb3NlX2xpc3QsIE5VTEwpOwotIAotICAgICBzX3NpemVfdG90YWwgPSBnX2xp c3RfbGVuZ3RoIChjb21wb3NlX2xpc3QpOwotICAgICBzX3NpemVfMTZiaXQgPSBzX3NpemVfdG90 YWw7Ci1AQCAtMTQ5OCw2ICsxNTMxLDcgQEAgaWJ1c19jb21wb3NlX3RhYmxlX25ld193aXRoX2xp c3QgKEdMaXN0ICAgKmNvbXBvc2VfbGlzdCwKLSAgICAgcmV0dmFsLT5uX3NlcXMgPSBzX3NpemVf MTZiaXQ7Ci0gICAgIHJldHZhbC0+aWQgPSBoYXNoOwotICAgICByZXR2YWwtPnJhd2RhdGEgPSBy YXdkYXRhOwotKyAgICByZXR2YWwtPmNhbl9sb2FkX2VuX3VzID0gRkFMU0U7Ci0gICAgIGlmIChz X3NpemVfdG90YWwgPiBzX3NpemVfMTZiaXQpIHsKLSAgICAgICAgIHJldHZhbC0+cHJpdiA9IGdf bmV3MCAoSUJ1c0NvbXBvc2VUYWJsZVByaXZhdGUsIDEpOwotICAgICAgICAgcmV0dmFsLT5wcml2 LT5kYXRhX2ZpcnN0ID0gaWJ1c19jb21wb3NlX3NlcXNfMzJiaXRfZmlyc3Q7Ci1AQCAtMTUxNSw2 ICsxNTQ5LDggQEAgaWJ1c19jb21wb3NlX3RhYmxlX25ld193aXRoX2ZpbGUgKGNvbnN0IGdjaGFy ICpjb21wb3NlX2ZpbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdTTGlz dCAgICAgICpjb21wb3NlX3RhYmxlcykKLSB7Ci0gICAgIEdMaXN0ICpjb21wb3NlX2xpc3QgPSBO VUxMOwotKyAgICBnYm9vbGVhbiBjYW5fbG9hZF9lbl91cyA9IEZBTFNFOwotKyAgICBnYm9vbGVh biBjYW5fbG9hZF9lbl91c19ieV9hbnkgPSBGQUxTRTsKLSAgICAgSUJ1c0NvbXBvc2VUYWJsZUV4 ICpjb21wb3NlX3RhYmxlOwotICAgICBpbnQgbWF4X2NvbXBvc2VfbGVuID0gMDsKLSAgICAgaW50 IG5faW5kZXhfc3RyaWRlID0gMDsKLUBAIC0xNTIyLDEzICsxNTU4LDI5IEBAIGlidXNfY29tcG9z ZV90YWJsZV9uZXdfd2l0aF9maWxlIChjb25zdCBnY2hhciAqY29tcG9zZV9maWxlLAotICAgICBn X2Fzc2VydCAoY29tcG9zZV9maWxlICE9IE5VTEwpOwotIAotICAgICBjb21wb3NlX2xpc3QgPSBp YnVzX2NvbXBvc2VfbGlzdF9wYXJzZV9maWxlIChjb21wb3NlX2ZpbGUsCi0tICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtYXhfY29tcG9zZV9sZW4pOwot LSAgICBpZiAoY29tcG9zZV9saXN0ID09IE5VTEwpCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICZtYXhfY29tcG9zZV9sZW4sCi0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjYW5fbG9hZF9lbl91cyk7Ci0r ICAgIGlmIChjb21wb3NlX2xpc3QgPT0gTlVMTCAmJiAhY2FuX2xvYWRfZW5fdXMpCi0gICAgICAg ICByZXR1cm4gTlVMTDsKLSAgICAgbl9pbmRleF9zdHJpZGUgPSBtYXhfY29tcG9zZV9sZW4gKyAy OwotLSAgICBjb21wb3NlX2xpc3QgPSBpYnVzX2NvbXBvc2VfbGlzdF9jaGVja19kdXBsaWNhdGVk X3dpdGhfZW4gKGNvbXBvc2VfbGlzdCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhfY29tcG9zZV9sZW4sCi0tICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y29tcG9zZV90YWJsZXMpOwotKyAgICBjYW5fbG9hZF9lbl91c19ieV9hbnkgPSBjYW5fbG9hZF9l bl91czsKLSsgICAgaWYgKCFjYW5fbG9hZF9lbl91c19ieV9hbnkpIHsKLSsgICAgICAgIEdTTGlz dCAqbCA9IGNvbXBvc2VfdGFibGVzOwotKyAgICAgICAgd2hpbGUgKGwpIHsKLSsgICAgICAgICAg ICBJQnVzQ29tcG9zZVRhYmxlRXggKnRhYmxlID0gbC0+ZGF0YTsKLSsgICAgICAgICAgICBpZiAo dGFibGUtPmNhbl9sb2FkX2VuX3VzKSB7Ci0rICAgICAgICAgICAgICAgIGNhbl9sb2FkX2VuX3Vz X2J5X2FueSA9IFRSVUU7Ci0rICAgICAgICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgICAgIH0K LSsgICAgICAgICAgICBsID0gbC0+bmV4dDsKLSsgICAgICAgIH0KLSsgICAgfQotKyAgICBpZiAo Y2FuX2xvYWRfZW5fdXNfYnlfYW55KSB7Ci0rICAgICAgICBjb21wb3NlX2xpc3QgPSBpYnVzX2Nv bXBvc2VfbGlzdF9jaGVja19kdXBsaWNhdGVkX3dpdGhfZW4gKAotKyAgICAgICAgICAgICAgICBj b21wb3NlX2xpc3QsCi0rICAgICAgICAgICAgICAgIG1heF9jb21wb3NlX2xlbiwKLSsgICAgICAg ICAgICAgICAgY29tcG9zZV90YWJsZXMpOwotKyAgICB9Ci0gICAgIGNvbXBvc2VfbGlzdCA9IGdf bGlzdF9zb3J0X3dpdGhfZGF0YSAoCi0gICAgICAgICAgICAgY29tcG9zZV9saXN0LAotICAgICAg ICAgICAgIChHQ29tcGFyZURhdGFGdW5jKSBpYnVzX2NvbXBvc2VfZGF0YV9jb21wYXJlLAotQEAg LTE1MzksOCArMTU5MSwxOSBAQCBpYnVzX2NvbXBvc2VfdGFibGVfbmV3X3dpdGhfZmlsZSAoY29u c3QgZ2NoYXIgKmNvbXBvc2VfZmlsZSwKLSAgICAgICAgICAgICBtYXhfY29tcG9zZV9sZW4pOwot IAotICAgICBpZiAoY29tcG9zZV9saXN0ID09IE5VTEwpIHsKLS0gICAgICAgIGdfd2FybmluZyAo ImNvbXBvc2UgZmlsZSAlcyBkb2VzIG5vdCBpbmNsdWRlIGFueSBrZXlzIGJlc2lkZXMga2V5cyAi Ci0tICAgICAgICAgICAgICAgICAgICJpbiBlbi11cyBjb21wb3NlIGZpbGUiLCBjb21wb3NlX2Zp bGUpOwotKyAgICAgICAgZ19tZXNzYWdlICgiY29tcG9zZSBmaWxlICVzIGRvZXMgbm90IGluY2x1 ZGUgYW55IGtleXMgYmVzaWRlcyBrZXlzICIKLSsgICAgICAgICAgICAgICAgICAgImluIGVuLXVz IGNvbXBvc2UgZmlsZS5cbiIsIGNvbXBvc2VfZmlsZSk7Ci0rICAgICAgICBpZiAoY2FuX2xvYWRf ZW5fdXMpIHsKLSsgICAgICAgICAgICBpZiAoIShjb21wb3NlX3RhYmxlID0gZ19uZXcwIChJQnVz Q29tcG9zZVRhYmxlRXgsIDEpKSkgewotKyAgICAgICAgICAgICAgICBnX3dhcm5pbmcgKCJGYWls ZWQgdG8gYWxsb2MgSUJ1c0NvbXBvc2VUYWJsZUV4IGZvciAlcy4iLAotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjb21wb3NlX2ZpbGUpOwotKyAgICAgICAgICAgIH0gZWxzZSB7Ci0rICAg ICAgICAgICAgICAgIGNvbXBvc2VfdGFibGUtPmlkID0gZ19zdHJfaGFzaCAoY29tcG9zZV9maWxl KTsKLSsgICAgICAgICAgICAgICAgY29tcG9zZV90YWJsZS0+Y2FuX2xvYWRfZW5fdXMgPSBjYW5f bG9hZF9lbl91czsKLSsgICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBvc2VfdGFibGU7Ci0rICAg ICAgICAgICAgfQotKyAgICAgICAgfQotKwotICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgIH0K LSAKLUBAIC0xNTUyLDYgKzE2MTUsOCBAQCBpYnVzX2NvbXBvc2VfdGFibGVfbmV3X3dpdGhfZmls ZSAoY29uc3QgZ2NoYXIgKmNvbXBvc2VfZmlsZSwKLSAgICAgICAgICAgICBtYXhfY29tcG9zZV9s ZW4sCi0gICAgICAgICAgICAgbl9pbmRleF9zdHJpZGUsCi0gICAgICAgICAgICAgZ19zdHJfaGFz aCAoY29tcG9zZV9maWxlKSk7Ci0rICAgIGlmIChjb21wb3NlX3RhYmxlKQotKyAgICAgICAgY29t cG9zZV90YWJsZS0+Y2FuX2xvYWRfZW5fdXMgPSBjYW5fbG9hZF9lbl91czsKLSAKLSAgICAgZ19s aXN0X2ZyZWVfZnVsbCAoY29tcG9zZV9saXN0LAotICAgICAgICAgICAgICAgICAgICAgICAoR0Rl c3Ryb3lOb3RpZnkpIGlidXNfY29tcG9zZV9saXN0X2VsZW1lbnRfZnJlZSk7Ci1AQCAtMTU2MCw2 ICsxNjI1LDczIEBAIGlidXNfY29tcG9zZV90YWJsZV9uZXdfd2l0aF9maWxlIChjb25zdCBnY2hh ciAqY29tcG9zZV9maWxlLAotIH0KLSAKLSAKLSt2b2lkCi0raWJ1c19jb21wb3NlX3RhYmxlX2Zy ZWUgKElCdXNDb21wb3NlVGFibGVFeCAqY29tcG9zZV90YWJsZSkKLSt7Ci0rICAgIGdfcmV0dXJu X2lmX2ZhaWwgKGNvbXBvc2VfdGFibGUpOwotKyAgICBnX2NsZWFyX3BvaW50ZXIgKCZjb21wb3Nl X3RhYmxlLT5wcml2LCBnX2ZyZWUpOwotKyAgICBjb21wb3NlX3RhYmxlLT5kYXRhID0gTlVMTDsK LSsgICAgY29tcG9zZV90YWJsZS0+bWF4X3NlcV9sZW4gPSAwOwotKyAgICBjb21wb3NlX3RhYmxl LT5uX3NlcXMgPSAwOwotKyAgICBjb21wb3NlX3RhYmxlLT5pZCA9IDA7Ci0rICAgIGdfY2xlYXJf cG9pbnRlciAoJmNvbXBvc2VfdGFibGUtPnJhd2RhdGEsIGdfZnJlZSk7Ci0rICAgIGNvbXBvc2Vf dGFibGUtPmNhbl9sb2FkX2VuX3VzID0gRkFMU0U7Ci0rICAgIGdfZnJlZSAoY29tcG9zZV90YWJs ZSk7Ci0rCi0rfQotKwotKwotK3N0YXRpYyBnYm9vbGVhbgotK3Jld3JpdGVfY29tcG9zZV9maWxl IChjb25zdCBjaGFyICpjb21wb3NlX2ZpbGUpCi0rewotKyAgICBzdGF0aWMgY29uc3QgY2hhciAq cHJlZml4ID0KLSsgICAgICAgICAgICAiIyBJQnVzIGhhcyByZXdyaXR0ZW4gdGhpcyBmaWxlIHRv IGFkZCB0aGUgbGluZTpcbiIKLSsgICAgICAgICAgICAiXG4iCi0rICAgICAgICAgICAgImluY2x1 ZGUgXCIlTFwiXG4iCi0rICAgICAgICAgICAgIlxuIgotKyAgICAgICAgICAgICIjIFRoaXMgaXMg bmVjZXNzYXJ5IHRvIGFkZCB5b3VyIG93biBDb21wb3NlIHNlcXVlbmNlc1xuIgotKyAgICAgICAg ICAgICIjIGluIGFkZGl0aW9uIHRvIHRoZSBidWlsdGluIHNlcXVlbmNlcyBvZiBJQnVzLiBJZiB0 aGlzXG4iCi0rICAgICAgICAgICAgIiMgaXMgbm90IHdoYXQgeW91IHdhbnQsIGp1c3QgcmVtb3Zl IHRoYXQgbGluZS5cbiIKLSsgICAgICAgICAgICAiI1xuIgotKyAgICAgICAgICAgICIjIEEgYmFj a3VwIG9mIHRoZSBwcmV2aW91cyBmaWxlIGNvbnRlbnRzIGhhcyBiZWVuIG1hZGUuXG4iCi0rICAg ICAgICAgICAgIlxuIgotKyAgICAgICAgICAgICJcbiI7Ci0rCi0rICAgIGNoYXIgKmNvbnRlbnQg PSBOVUxMOwotKyAgICBnc2l6ZSBjb250ZW50X2xlbjsKLSsgICAgR0ZpbGUgKmZpbGUgPSBOVUxM OwotKyAgICBHT3V0cHV0U3RyZWFtICpzdHJlYW0gPSBOVUxMOwotKyAgICBnYm9vbGVhbiByZXQg PSBGQUxTRTsKLSsKLSsgICAgaWYgKCFnX2ZpbGVfZ2V0X2NvbnRlbnRzIChjb21wb3NlX2ZpbGUs ICZjb250ZW50LCAmY29udGVudF9sZW4sIE5VTEwpKQotKyAgICAgICAgZ290byBvdXQ7Ci0rCi0r ICAgIGZpbGUgPSBnX2ZpbGVfbmV3X2Zvcl9wYXRoIChjb21wb3NlX2ZpbGUpOwotKyAgICBzdHJl YW0gPSBHX09VVFBVVF9TVFJFQU0gKGdfZmlsZV9yZXBsYWNlIChmaWxlLCBOVUxMLCBUUlVFLCAw LCBOVUxMLCBOVUxMKSk7Ci0rCi0rICAgIGlmIChzdHJlYW0gPT0gTlVMTCkKLSsgICAgICAgIGdv dG8gb3V0OwotKwotKyAgICBpZiAoIWdfb3V0cHV0X3N0cmVhbV93cml0ZSAoc3RyZWFtLCBwcmVm aXgsIHN0cmxlbiAocHJlZml4KSwgTlVMTCwgTlVMTCkpCi0rICAgICAgICBnb3RvIG91dDsKLSsK LSsgICAgaWYgKCFnX291dHB1dF9zdHJlYW1fd3JpdGUgKHN0cmVhbSwgY29udGVudCwgY29udGVu dF9sZW4sIE5VTEwsIE5VTEwpKQotKyAgICAgICAgZ290byBvdXQ7Ci0rCi0rICAgIGlmICghZ19v dXRwdXRfc3RyZWFtX2Nsb3NlIChzdHJlYW0sIE5VTEwsIE5VTEwpKQotKyAgICAgICAgZ290byBv dXQ7Ci0rCi0rICAgIHJldCA9IFRSVUU7Ci0rCi0rb3V0OgotKyAgICBnX2NsZWFyX29iamVjdCAo JnN0cmVhbSk7Ci0rICAgIGdfY2xlYXJfb2JqZWN0ICgmZmlsZSk7Ci0rICAgIGdfY2xlYXJfcG9p bnRlciAoJmNvbnRlbnQsIGdfZnJlZSk7Ci0rCi0rICAgIHJldHVybiByZXQ7Ci0rfQotKwotKwot IC8qIGlmIGlidXNfY29tcG9zZV9zZXFzW04gLSAxXSBpcyBhbiBvdXRwdXRlZCBjb21wb3NlIGNo YXJhY3RlciwKLSAgKiBpYnVzX2NvbXBvc2Vfc2Vxc1tOICogMiAtIDFdIGlzIGFsc28gYW4gb3V0 cHV0ZWQgY29tcG9zZSBjaGFyYWN0ZXIuCi0gICogYW5kIGlidXNfY29tcG9zZV9zZXFzWzBdIHRv IGlidXNfY29tcG9zZV9zZXFzWzAgKyBOIC0gM10gYXJlIHRoZQotQEAgLTE2MDksMTMgKzE3NDEs MTcgQEAgaWJ1c19jb21wb3NlX3RhYmxlX2xpc3RfYWRkX2FycmF5IChHU0xpc3QgICAgICAgICpj b21wb3NlX3RhYmxlcywKLSAKLSBHU0xpc3QgKgotIGlidXNfY29tcG9zZV90YWJsZV9saXN0X2Fk ZF9maWxlIChHU0xpc3QgICAgICAqY29tcG9zZV90YWJsZXMsCi0tICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICpjb21wb3NlX2ZpbGUpCi0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICpjb21wb3NlX2ZpbGUsCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFcnJvciAgICAgKiplcnJvcikKLSB7Ci0gICAg IGd1aW50MzIgaGFzaDsKLSAgICAgSUJ1c0NvbXBvc2VUYWJsZUV4ICpjb21wb3NlX3RhYmxlOwot KyAgICBndWludDE2IHNhdmVkX3ZlcnNpb24gPSAwOwotIAotLSAgICBnX3JldHVybl92YWxfaWZf ZmFpbCAoY29tcG9zZV9maWxlICE9IE5VTEwsIGNvbXBvc2VfdGFibGVzKTsKLSsgICAgZ19yZXR1 cm5fdmFsX2lmX2ZhaWwgKGNvbXBvc2VfZmlsZSwgY29tcG9zZV90YWJsZXMpOwotKyAgICBnX2Fz c2VydCAoZXJyb3IpOwotIAotKyAgICAqZXJyb3IgPSBOVUxMOwotICAgICBoYXNoID0gZ19zdHJf aGFzaCAoY29tcG9zZV9maWxlKTsKLSAgICAgaWYgKGdfc2xpc3RfZmluZF9jdXN0b20gKGNvbXBv c2VfdGFibGVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0lOVF9UT19QT0lOVEVS IChoYXNoKSwKLUBAIC0xNjIzLDE1ICsxNzU5LDYxIEBAIGlidXNfY29tcG9zZV90YWJsZV9saXN0 X2FkZF9maWxlIChHU0xpc3QgICAgICAqY29tcG9zZV90YWJsZXMsCi0gICAgICAgICByZXR1cm4g Y29tcG9zZV90YWJsZXM7Ci0gICAgIH0KLSAKLS0gICAgY29tcG9zZV90YWJsZSA9IGlidXNfY29t cG9zZV90YWJsZV9sb2FkX2NhY2hlIChjb21wb3NlX2ZpbGUpOwotKyAgICBjb21wb3NlX3RhYmxl ID0gaWJ1c19jb21wb3NlX3RhYmxlX2xvYWRfY2FjaGUgKGNvbXBvc2VfZmlsZSwKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc2F2ZWRfdmVyc2lv bik7Ci0gICAgIGlmIChjb21wb3NlX3RhYmxlICE9IE5VTEwpCi0gICAgICAgICByZXR1cm4gZ19z bGlzdF9wcmVwZW5kIChjb21wb3NlX3RhYmxlcywgY29tcG9zZV90YWJsZSk7Ci0gCi0tICAgaWYg KChjb21wb3NlX3RhYmxlID0gaWJ1c19jb21wb3NlX3RhYmxlX25ld193aXRoX2ZpbGUgKGNvbXBv c2VfZmlsZSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY29tcG9zZV90YWJsZXMpKQotK3BhcnNlOgotKyAgICBpZiAoKGNvbXBvc2Vf dGFibGUgPSBpYnVzX2NvbXBvc2VfdGFibGVfbmV3X3dpdGhfZmlsZSAoY29tcG9zZV9maWxlLAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29tcG9zZV90YWJsZXMpKQotICAgICAgICAgICAgPT0gTlVMTCkgewotLSAgICAgICByZXR1 cm4gY29tcG9zZV90YWJsZXM7Ci0tICAgfQotKyAgICAgICAgcmV0dXJuIGNvbXBvc2VfdGFibGVz OwotKyAgICB9Ci0rICAgIGlmIChzYXZlZF92ZXJzaW9uID4gMCAmJiBzYXZlZF92ZXJzaW9uIDwg NSAmJgotKyAgICAgICAgIWNvbXBvc2VfdGFibGUtPmNhbl9sb2FkX2VuX3VzICYmIGNvbXBvc2Vf dGFibGUtPm5fc2VxcyA8IDEwMCkgewotKyAgICAgICAgaWYgKHJld3JpdGVfY29tcG9zZV9maWxl IChjb21wb3NlX2ZpbGUpKSB7Ci0rICAgICAgICAgICAgZ19hc3NlcnQgKCgqZXJyb3IpID09IE5V TEwpOwotKyAgICAgICAgICAgICplcnJvciA9IGdfZXJyb3JfbmV3ICgKLSsgICAgICAgICAgICAg ICAgICAgIElCVVNfQ09NUE9TRV9FUlJPUiwKLSsgICAgICAgICAgICAgICAgICAgIElCVVNfRU5H SU5FX01TR19DT0RFX1VQREFURV9DT01QT1NFX1RBQkxFLAotKyAgICAgICAgICAgICAgICAgICAg XygiU2luY2UgSUJ1cyAxLjUuMzMsIENvbXBvc2UgZmlsZXMgcmVwbGFjZSB0aGUgIgotKyAgICAg ICAgICAgICAgICAgICAgImJ1aWx0aW5cbiIKLSsgICAgICAgICAgICAgICAgICAgICJjb21wb3Nl IHNlcXVlbmNlcy4gVG8ga2VlcCB0aGVtIGFuZCBhZGQgeW91ciBvd25cbiIKLSsgICAgICAgICAg ICAgICAgICAgICJzZXF1ZW5jZXMgb24gdG9wLCB0aGUgbGluZTpcbiIKLSsgICAgICAgICAgICAg ICAgICAgICJcbiIKLSsgICAgICAgICAgICAgICAgICAgICIgIGluY2x1ZGUgXCIlJUxcIlxuIgot KyAgICAgICAgICAgICAgICAgICAgIlxuIgotKyAgICAgICAgICAgICAgICAgICAgImhhcyBiZWVu IGFkZGVkIHRvIHRoZSBDb21wb3NlIGZpbGU6XG4lcy5cbiIpLAotKyAgICAgICAgICAgICAgICAg ICAgY29tcG9zZV9maWxlKTsKLSsgICAgICAgICAgICBpYnVzX2NvbXBvc2VfdGFibGVfZnJlZSAo Y29tcG9zZV90YWJsZSk7Ci0rICAgICAgICAgICAgZ290byBwYXJzZTsKLSsgICAgICAgIH0gZWxz ZSB7Ci0rICAgICAgICAgICAgZ2NoYXIgKmVycm9yX21lc3NhZ2UxOwotKyAgICAgICAgICAgIGdj aGFyICplcnJvcl9tZXNzYWdlMjsKLSsgICAgICAgICAgICBpZiAoKmVycm9yKSB7Ci0rICAgICAg ICAgICAgICAgIGVycm9yX21lc3NhZ2UxID0gZ19zdHJkdXBfcHJpbnRmICgiJXNcbiIsICgqZXJy b3IpLT5tZXNzYWdlKTsKLSsgICAgICAgICAgICAgICAgZ19lcnJvcl9mcmVlICgqZXJyb3IpOwot KyAgICAgICAgICAgIH0gZWxzZSB7Ci0rICAgICAgICAgICAgICAgIGVycm9yX21lc3NhZ2UxID0g Z19zdHJkdXAgKCIiKTsKLSsgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgZXJyb3JfbWVzc2Fn ZTIgPSBnX3N0cmR1cF9wcmludGYgKAotKyAgICAgICAgICAgICAgICAgICAgXygiU2luY2UgSUJ1 cyAxLjUuMzMsIENvbXBvc2UgZmlsZXMgcmVwbGFjZSB0aGUgIgotKyAgICAgICAgICAgICAgICAg ICAgImJ1aWx0aW5cbiIKLSsgICAgICAgICAgICAgICAgICAgICJjb21wb3NlIHNlcXVlbmNlcy4g VG8ga2VlcCB0aGVtIGFuZCBhZGQgeW91ciBvd25cbiIKLSsgICAgICAgICAgICAgICAgICAgICJz ZXF1ZW5jZXMgb24gdG9wLCB5b3UgbmVlZCB0byBhZGQgdGhlIGxpbmU6XG4iCi0rICAgICAgICAg ICAgICAgICAgICAiXG4iCi0rICAgICAgICAgICAgICAgICAgICAiICBpbmNsdWRlIFwiJSVMXCJc biIKLSsgICAgICAgICAgICAgICAgICAgICJcbiIKLSsgICAgICAgICAgICAgICAgICAgICJ0byB0 aGUgQ29tcG9zZSBmaWxlOlxuJXMuIiksIGNvbXBvc2VfZmlsZSk7Ci0rICAgICAgICAgICAgKmVy cm9yID0gZ19lcnJvcl9uZXcgKAotKyAgICAgICAgICAgICAgICAgICAgSUJVU19DT01QT1NFX0VS Uk9SLAotKyAgICAgICAgICAgICAgICAgICAgSUJVU19FTkdJTkVfTVNHX0NPREVfVVBEQVRFX0NP TVBPU0VfVEFCTEUsCi0rICAgICAgICAgICAgICAgICAgICAiJXMlcyIsIGVycm9yX21lc3NhZ2Ux LCBlcnJvcl9tZXNzYWdlMik7Ci0rICAgICAgICAgICAgZ19mcmVlIChlcnJvcl9tZXNzYWdlMSk7 Ci0rICAgICAgICAgICAgZ19mcmVlIChlcnJvcl9tZXNzYWdlMik7Ci0rICAgICAgICB9Ci0rICAg IH0KLSAKLSAgICAgaWJ1c19jb21wb3NlX3RhYmxlX3NhdmVfY2FjaGUgKGNvbXBvc2VfdGFibGUp OwotICAgICByZXR1cm4gZ19zbGlzdF9wcmVwZW5kIChjb21wb3NlX3RhYmxlcywgY29tcG9zZV90 YWJsZSk7Ci1AQCAtMjA5MSwzICsyMjczLDEwIEBAIGlidXNfa2V5c3ltX3RvX3VuaWNvZGVfd2l0 aF9sYXlvdXQgKGd1aW50ICAgICAgICAgICAgICAgICAgICAgIGtleXN5bSwKLSAjdW5kZWYgQ0FT RV9LRVlTWU0KLSAgICAgcmV0dXJuIGlidXNfa2V5c3ltX3RvX3VuaWNvZGUgKGtleXN5bSwgY29t YmluaW5nLCBuZWVkX3NwYWNlKTsKLSB9Ci0rCi0rCi0rR1F1YXJrCi0raWJ1c19jb21wb3NlX2Vy cm9yX3F1YXJrICh2b2lkKQotK3sKLSsgIHJldHVybiBnX3F1YXJrX2Zyb21fc3RhdGljX3N0cmlu ZyAoImlidXMtY29tcG9zZS1lcnJvci1xdWFyayIpOwotK30KLWRpZmYgLS1naXQgYS9zcmMvaWJ1 c2NvbXBvc2V0YWJsZS5oIGIvc3JjL2lidXNjb21wb3NldGFibGUuaAotaW5kZXggMzJlMzM3Zjcu LjIwNjg2NTdkIDEwMDY0NAotLS0tIGEvc3JjL2lidXNjb21wb3NldGFibGUuaAotKysrIGIvc3Jj L2lidXNjb21wb3NldGFibGUuaAotQEAgLTIsNyArMiw3IEBACi0gLyogdmltOnNldCBldCBzdHM9 NDogKi8KLSAvKiBpYnVzIC0gVGhlIElucHV0IEJ1cwotICAqIENvcHlyaWdodCAoQykgMjAxMy0y MDE0IFBlbmcgSHVhbmcgPHNoYXduLnAuaHVhbmdAZ21haWwuY29tPgotLSAqIENvcHlyaWdodCAo QykgMjAxMy0yMDIzIFRha2FvIEZ1aml3YXJhIDx0YWthby5mdWppd2FyYTFAZ21haWwuY29tPgot KyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDI1IFRha2FvIEZ1aml3YXJhIDx0YWthby5mdWppd2Fy YTFAZ21haWwuY29tPgotICAqCi0gICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLUBAIC0yMyw4ICsyMywxOSBAQAot ICNpZm5kZWYgX19JQlVTX0NPTVBPU0VUQUJMRV9IXwotICNkZWZpbmUgX19JQlVTX0NPTVBPU0VU QUJMRV9IXwotIAotLSNpbmNsdWRlIDxnbGliLmg+Ci0rLyoqCi0rICogU0VDVElPTjogaWJ1c2Nv bXBvc2V0YWJsZQotKyAqIEBzaG9ydF9kZXNjcmlwdGlvbjogQ29tcG9zZSB0YWJsZSBoYW5kbGlu ZyBiYXNlZCBvbiBsaWJYMTEKLSsgKiBAdGl0bGU6IElCdXNDb21wb3NlVGFibGUKLSsgKiBAc3Rh YmlsaXR5OiBVbnN0YWJsZQotKyAqCi0rICogR2VuZXJhdGUgI0lCdXNDb21wb3NlVGFibGVFeCB3 aXRoIHRoZSBjb21wb3NlIGZpbGUgb3IgYXJyYXkuCi0rICoKLSsgKiBzZWVfYWxzbzogI0lCdXNF bmdpbmVTaW1wbGUKLSsgKgotKyAqLwotIAotKyNpbmNsdWRlIDxnbGliLmg+Ci0gCi0gR19CRUdJ Tl9ERUNMUwotIAotQEAgLTUzLDYgKzY0LDcgQEAgc3RydWN0IF9JQnVzQ29tcG9zZVRhYmxlRXgK LSAgICAgZ2ludCBuX3NlcXM7Ci0gICAgIGd1aW50MzIgaWQ7Ci0gICAgIGNoYXIgKnJhd2RhdGE7 Ci0rICAgIGdib29sZWFuIGNhbl9sb2FkX2VuX3VzOwotIH07Ci0gCi0gCi1AQCAtNzEsOCArODMs MTEgQEAgSUJ1c0NvbXBvc2VUYWJsZUV4ICoKLSAgICAgICAgICAgICAgICAgICBpYnVzX2NvbXBv c2VfdGFibGVfbmV3X3dpdGhfZmlsZSAoY29uc3QgZ2NoYXIgKmNvbXBvc2VfZmlsZSwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1NMaXN0Ci0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKmNvbXBvc2VfdGFibGVzKTsKLSt2b2lkICAgICAgICAgICAgICAgaWJ1c19jb21wb3Nl X3RhYmxlX2ZyZWUgICAgICAgICAoSUJ1c0NvbXBvc2VUYWJsZUV4Ci0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpjb21wb3Nl X3RhYmxlKTsKLSBJQnVzQ29tcG9zZVRhYmxlRXggKgotLSAgICAgICAgICAgICAgICAgIGlidXNf Y29tcG9zZV90YWJsZV9sb2FkX2NhY2hlICAgIChjb25zdCBnY2hhciAqY29tcG9zZV9maWxlKTsK LSsgICAgICAgICAgICAgICAgICBpYnVzX2NvbXBvc2VfdGFibGVfbG9hZF9jYWNoZSAgICAoY29u c3QgZ2NoYXIgKmNvbXBvc2VfZmlsZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZ3VpbnQxNiAgICAgKnNhdmVkX3ZlcnNpb24pOwotIHZvaWQg ICAgICAgICAgICAgIGlidXNfY29tcG9zZV90YWJsZV9zYXZlX2NhY2hlICAgIChJQnVzQ29tcG9z ZVRhYmxlRXgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKmNvbXBvc2VfdGFibGUpOwotIEdTTGlzdCAqICAgICAgICAgIGli dXNfY29tcG9zZV90YWJsZV9saXN0X2FkZF9hcnJheQotQEAgLTg0LDcgKzk5LDggQEAgR1NMaXN0 ICogICAgICAgICAgaWJ1c19jb21wb3NlX3RhYmxlX2xpc3RfYWRkX2FycmF5Ci0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdpbnQgICAgICAgICBu X3NlcXMpOwotIEdTTGlzdCAqICAgICAgICAgIGlidXNfY29tcG9zZV90YWJsZV9saXN0X2FkZF9m aWxlIChHU0xpc3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKmNvbXBvc2VfdGFibGVzLAotLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAqY29tcG9zZV9m aWxlKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3QgZ2NoYXIgKmNvbXBvc2VfZmlsZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0Vycm9yICAgICAqKmVycm9yKTsKLSBHU0xpc3Qg KiAgICAgICAgICBpYnVzX2NvbXBvc2VfdGFibGVfbGlzdF9hZGRfdGFibGUgKEdTTGlzdAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAqY29tcG9zZV90YWJsZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBJQnVzQ29tcG9zZVRhYmxlRXgKLWRpZmYgLS1naXQgYS9zcmMv aWJ1c2VuZ2luZS5oIGIvc3JjL2lidXNlbmdpbmUuaAotaW5kZXggY2RjOTYzMzEuLjZkMGMxZDFm IDEwMDY0NAotLS0tIGEvc3JjL2lidXNlbmdpbmUuaAotKysrIGIvc3JjL2lidXNlbmdpbmUuaAot QEAgLTcxLDYgKzcxLDggQEAgR19CRUdJTl9ERUNMUwotICAqIEBJQlVTX0VOR0lORV9NU0dfQ09E RV9HRU5FUkFMOiBHZW5lcmljIG1lc3NhZ2UgZm9yIEVuZ2luZQotICAqIEBJQlVTX0VOR0lORV9N U0dfQ09ERV9JTlZBTElEX0NPTVBPU0VfU0VRVUVOQ0U6IFVzZXIncyB0eXBpbmcgZmFpbHVyZQot ICAqICAgICAgICAgYWdhaW5zdCB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgY29tcG9zZSBmaWxlcy4K LSsgKiBASUJVU19FTkdJTkVfTVNHX0NPREVfVVBEQVRFX0NPTVBPU0VfVEFCTEU6IE5vdGlmaWNh dGlvbiBhYm91dCBuZXcKLSsgKiBiZWhhdmlvcnMgb3IgYXR0ZW50aW9ucyB3aGVuIHRoZSBjb21w b3NlIHRhYmxlIHZlcnNpb24gaXMgY2hhbmdlZC4KLSAgKgotICAqIE1lc3NhZ2UgY29kZXMgaW4g dGhlIGBJQnVzTWVzc2FnZURvbWFpbmAgZG9tYWluIGZvciBFbmdpbmUKLSAgKiBTZWUgYWxzbyAj SUJ1c01lc3NhZ2UsIGlidXNfZW5naW5lX3NlbmRfbWVzc2FnZSgpCi1AQCAtODEsNyArODMsOCBA QCBHX0JFR0lOX0RFQ0xTCi0gdHlwZWRlZiBlbnVtCi0gewotICAgSUJVU19FTkdJTkVfTVNHX0NP REVfR0VORVJBTCwKLS0gIElCVVNfRU5HSU5FX01TR19DT0RFX0lOVkFMSURfQ09NUE9TRV9TRVFV RU5DRQotKyAgSUJVU19FTkdJTkVfTVNHX0NPREVfSU5WQUxJRF9DT01QT1NFX1NFUVVFTkNFLAot KyAgSUJVU19FTkdJTkVfTVNHX0NPREVfVVBEQVRFX0NPTVBPU0VfVEFCTEUKLSB9IElCdXNFbmdp bmVNc2dDb2RlOwotIAotIHR5cGVkZWYgc3RydWN0IF9JQnVzRW5naW5lIElCdXNFbmdpbmU7Ci1k aWZmIC0tZ2l0IGEvc3JjL2lidXNlbmdpbmVzaW1wbGUuYyBiL3NyYy9pYnVzZW5naW5lc2ltcGxl LmMKLWluZGV4IDI1OGJkODQ5Li43YmVlMjQwMyAxMDA2NDQKLS0tLSBhL3NyYy9pYnVzZW5naW5l c2ltcGxlLmMKLSsrKyBiL3NyYy9pYnVzZW5naW5lc2ltcGxlLmMKLUBAIC0xMzksNiArMTM5LDcg QEAgaWJ1c19lbmdpbmVfc2ltcGxlX2NsYXNzX2luaXQgKElCdXNFbmdpbmVTaW1wbGVDbGFzcyAq Y2xhc3MpCi0gICAgIEdFcnJvciAqZXJyb3IgPSBOVUxMOwotICAgICBjb25zdCBjaGFyICpjb250 ZW50czsKLSAgICAgZ3NpemUgbGVuZ3RoID0gMDsKLSsgICAgZ3VpbnQxNiBzYXZlZF92ZXJzaW9u ID0gMDsKLSAKLSAgICAgaWJ1c19vYmplY3RfY2xhc3MtPmRlc3Ryb3kgPQotICAgICAgICAgKElC dXNPYmplY3REZXN0cm95RnVuYykgaWJ1c19lbmdpbmVfc2ltcGxlX2Rlc3Ryb3k7Ci1AQCAtMTY4 LDcgKzE2OSwxNCBAQCBpYnVzX2VuZ2luZV9zaW1wbGVfY2xhc3NfaW5pdCAoSUJ1c0VuZ2luZVNp bXBsZUNsYXNzICpjbGFzcykKLSAgICAgICAgIHJldHVybjsKLSAgICAgfQotICAgICBjb250ZW50 cyA9IGdfYnl0ZXNfZ2V0X2RhdGEgKGRhdGEsICZsZW5ndGgpOwotLSAgICBlbl9jb21wb3NlX3Rh YmxlID0gaWJ1c19jb21wb3NlX3RhYmxlX2Rlc2VyaWFsaXplIChjb250ZW50cywgbGVuZ3RoKTsK LSsgICAgZW5fY29tcG9zZV90YWJsZSA9IGlidXNfY29tcG9zZV90YWJsZV9kZXNlcmlhbGl6ZSAo Y29udGVudHMsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGxlbmd0aCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJnNhdmVkX3ZlcnNpb24pOwotKyAgICBpZiAoIWVuX2NvbXBvc2Vf dGFibGUgJiYgc2F2ZWRfdmVyc2lvbikgewotKyAgICAgICAgZ193YXJuaW5nICgiRmFpbGVkIHRv IHBhcnNlIHRoZSBidWlsdGluIGNvbXBvc2UgZHVlIHRvIHRoZSBkaWZmZXJlbnQgIgotKyAgICAg ICAgICAgICAgICAgICAidmVyc2lvbiAldS4gUGxlYXNlIHJlYnVpbGQgSUJ1cyByZXNvdXJjZSBm aWxlcy4iLAotKyAgICAgICAgICAgICAgICAgICBzYXZlZF92ZXJzaW9uKTsKLSsgICAgfQotIH0K LSAKLSAKLUBAIC0yMzcsNyArMjQ1LDggQEAgaWJ1c19lbmdpbmVfc2ltcGxlX2Rlc3Ryb3kgKElC dXNFbmdpbmVTaW1wbGUgKnNpbXBsZSkKLSAKLSBzdGF0aWMgdm9pZAotIGlidXNfZW5naW5lX3Np bXBsZV9zZW5kX21lc3NhZ2Vfd2l0aF9jb2RlIChJQnVzRW5naW5lU2ltcGxlICpzaW1wbGUsCi0t ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElCdXNFbmdpbmVNc2dD b2RlIGNvZGUpCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElC dXNFbmdpbmVNc2dDb2RlIGNvZGUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEdFcnJvciAgICAgICAgICAgKmVycm9yKQotIHsKLSAgICAgSUJ1c0VuZ2luZVNp bXBsZVByaXZhdGUgKnByaXY7Ci0gICAgIElCdXNNZXNzYWdlICptZXNzYWdlOwotQEAgLTI0NSwx OCArMjU0LDMzIEBAIGlidXNfZW5naW5lX3NpbXBsZV9zZW5kX21lc3NhZ2Vfd2l0aF9jb2RlIChJ QnVzRW5naW5lU2ltcGxlICpzaW1wbGUsCi0gICAgIGdfcmV0dXJuX2lmX2ZhaWwgKElCVVNfSVNf RU5HSU5FX1NJTVBMRSAoc2ltcGxlKSk7Ci0gCi0gICAgIHByaXYgPSBzaW1wbGUtPnByaXY7Ci0t ICAgIHByaXYtPmRvX2luZm9ybV91c2VyX2Vycm9yID0gVFJVRTsKLS0gICAgbWVzc2FnZSA9IGli dXNfbWVzc2FnZV9uZXcgKAotLSAgICAgICAgICAgIElCVVNfTUVTU0FHRV9ET01BSU5fRU5HSU5F LAotLSAgICAgICAgICAgIGNvZGUsCi0tICAgICAgICAgICAgXygiRGV0ZWN0IHVucmVnaXN0ZXJl ZCBjaGFyYWN0ZXIgaW4geW91ciBjb21wb3NlIHNlcXVlbmNlIiksCi0tICAgICAgICAgICAgXygi VGhlIGNoYXJhY3RlciB5b3UganVzdCBpbnB1dCBpcyBub3QgcmVjb2duaXplZCBhcyBhIHZhbGlk ICIgXAotLSAgICAgICAgICAgICAgInBhcnQgb2YgdGhlIGN1cnJlbnRseSBhY3RpdmUgY29tcG9z ZSBzZXF1ZW5jZSBhbmQgdGhlICIgXAotLSAgICAgICAgICAgICAgImNoYXJhY3RlciB3YXMgY2Fu Y2VsbGVkLiBUcnkgaW5wdXR0aW5nIHRoZSBjb3JyZWN0IGNoYXJhY3RlciAiIFwKLS0gICAgICAg ICAgICAgICJ0byB0aGUgY29tcG9zZSBzZXF1ZW5jZSBhZ2Fpbiwgb3IgcHJlc3MgRXNjYXBlIGtl eSB0byAiIFwKLS0gICAgICAgICAgICAgICJ0ZXJtaW5hdGUgd2hvbGUgdGhlIGNvbXBvc2Ugc2Vx dWVuY2UuIiksCi0tICAgICAgICAgICAgICJ0aW1lb3V0IiwgNSwKLS0gICAgICAgICAgICAgTlVM TCk7Ci0rICAgIHN3aXRjaCAoY29kZSkgewotKyAgICBjYXNlIElCVVNfRU5HSU5FX01TR19DT0RF X0lOVkFMSURfQ09NUE9TRV9TRVFVRU5DRToKLSsgICAgICAgIHByaXYtPmRvX2luZm9ybV91c2Vy X2Vycm9yID0gVFJVRTsKLSsgICAgICAgIG1lc3NhZ2UgPSBpYnVzX21lc3NhZ2VfbmV3ICgKLSsg ICAgICAgICAgICAgICAgSUJVU19NRVNTQUdFX0RPTUFJTl9FTkdJTkUsCi0rICAgICAgICAgICAg ICAgIGNvZGUsCi0rICAgICAgICAgICAgICAgIF8oIkRldGVjdCB1bnJlZ2lzdGVyZWQgY2hhcmFj dGVyIGluIHlvdXIgY29tcG9zZSBzZXF1ZW5jZSIpLAotKyAgICAgICAgICAgICAgICBfKCJUaGUg Y2hhcmFjdGVyIHlvdSBqdXN0IGlucHV0IGlzIG5vdCByZWNvZ25pemVkIGFzIGEgdmFsaWQgIiBc Ci0rICAgICAgICAgICAgICAgICAgInBhcnQgb2YgdGhlIGN1cnJlbnRseSBhY3RpdmUgY29tcG9z ZSBzZXF1ZW5jZSBhbmQgdGhlICIgXAotKyAgICAgICAgICAgICAgICAgICJjaGFyYWN0ZXIgd2Fz IGNhbmNlbGxlZC4gVHJ5IGlucHV0dGluZyB0aGUgY29ycmVjdCAiIFwKLSsgICAgICAgICAgICAg ICAgICAiY2hhcmFjdGVyIHRvIHRoZSBjb21wb3NlIHNlcXVlbmNlIGFnYWluLCBvciBwcmVzcyBF c2NhcGUgIiBcCi0rICAgICAgICAgICAgICAgICAgImtleSB0byB0ZXJtaW5hdGUgd2hvbGUgdGhl IGNvbXBvc2Ugc2VxdWVuY2UuIiksCi0rICAgICAgICAgICAgICAgICAgInRpbWVvdXQiLCA1LAot KyAgICAgICAgICAgICAgICAgIE5VTEwpOwotKyAgICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgSUJV U19FTkdJTkVfTVNHX0NPREVfVVBEQVRFX0NPTVBPU0VfVEFCTEU6Ci0rICAgICAgICBtZXNzYWdl ID0gaWJ1c19tZXNzYWdlX25ldyAoCi0rICAgICAgICAgICAgICAgIElCVVNfTUVTU0FHRV9ET01B SU5fRU5HSU5FLAotKyAgICAgICAgICAgICAgICBjb2RlLAotKyAgICAgICAgICAgICAgICBfKCJD b21wb3NlIGZpbGUgdXBkYXRlIiksCi0rICAgICAgICAgICAgICAgIGVycm9yID8gZXJyb3ItPm1l c3NhZ2UgOiAiIiwKLSsgICAgICAgICAgICAgICAgInRpbWVvdXQiLCAxMjAsCi0rICAgICAgICAg ICAgICAgIE5VTEwpOwotKyAgICAgICAgYnJlYWs7Ci0rICAgIGRlZmF1bHQ6Ci0rICAgICAgICBn X2Fzc2VydF9ub3RfcmVhY2hlZCAoKTsKLSsgICAgfQotICAgICBpYnVzX2VuZ2luZV9zZW5kX21l c3NhZ2UgKElCVVNfRU5HSU5FIChzaW1wbGUpLCBtZXNzYWdlKTsKLSB9Ci0gCi1AQCAtODUzLDcg Kzg3Nyw4IEBAIG5vX3NlcXVlbmNlX21hdGNoZXMgKElCdXNFbmdpbmVTaW1wbGUgKnNpbXBsZSwK LSAgICAgICAgICAgICAvKiBJbnZhbGlkIHNlcXVlbmNlICovCi0gICAgICAgICAgICAgaWJ1c19l bmdpbmVfc2ltcGxlX3NlbmRfbWVzc2FnZV93aXRoX2NvZGUgKAotICAgICAgICAgICAgICAgICAg ICAgc2ltcGxlLAotLSAgICAgICAgICAgICAgICAgICAgSUJVU19FTkdJTkVfTVNHX0NPREVfSU5W QUxJRF9DT01QT1NFX1NFUVVFTkNFKTsKLSsgICAgICAgICAgICAgICAgICAgIElCVVNfRU5HSU5F X01TR19DT0RFX0lOVkFMSURfQ09NUE9TRV9TRVFVRU5DRSwKLSsgICAgICAgICAgICAgICAgICAg IE5VTEwpOwotICAgICAgICAgICAgIGlidXNfZW5naW5lX3NpbXBsZV91cGRhdGVfcHJlZWRpdF90 ZXh0IChzaW1wbGUpOwotICAgICAgICAgICAgIHJldHVybiBUUlVFOwotICAgICAgICAgfQotQEAg LTk5Nyw2ICsxMDIyLDcgQEAgaWJ1c19lbmdpbmVfc2ltcGxlX2NoZWNrX2FsbF9jb21wb3NlX3Rh YmxlIChJQnVzRW5naW5lU2ltcGxlICpzaW1wbGUsCi0gICAgIEdTdHJpbmcgKm91dHB1dCA9IGdf c3RyaW5nX25ldyAoIiIpOwotICAgICBnYm9vbGVhbiBzdWNjZXNzID0gRkFMU0U7Ci0gICAgIGdi b29sZWFuIGlzXzMyYml0ID0gRkFMU0U7Ci0rICAgIGdib29sZWFuIGNhbl9sb2FkX2VuX3VzID0g RkFMU0U7Ci0gICAgIGd1bmljaGFyIG91dHB1dF9jaGFyID0gJ1wwJzsKLSAKLSAgICAgLyogR3Rr SU1Db250ZXh0U2ltcGxlIG91dHB1dCB0aGUgZmlyc3QgY29tcG9zZSBjaGFyIGluIGNhc2Ugb2YK LUBAIC0xMDA4LDI3ICsxMDM0LDQwIEBAIGlidXNfZW5naW5lX3NpbXBsZV9jaGVja19hbGxfY29t cG9zZV90YWJsZSAoSUJ1c0VuZ2luZVNpbXBsZSAqc2ltcGxlLAotICAgICBHX0xPQ0sgKGdsb2Jh bF90YWJsZXMpOwotICAgICB0bXBfbGlzdCA9IGdsb2JhbF90YWJsZXM7Ci0gICAgIHdoaWxlICh0 bXBfbGlzdCkgewotKyAgICAgICAgSUJ1c0NvbXBvc2VUYWJsZUV4ICpjb21wb3NlX3RhYmxlID0g dG1wX2xpc3QtPmRhdGE7Ci0rICAgICAgICBpZiAoY29tcG9zZV90YWJsZS0+Y2FuX2xvYWRfZW5f dXMpCi0rICAgICAgICAgICAgY2FuX2xvYWRfZW5fdXMgPSBUUlVFOwotKyAgICAgICAgLyogSWYg Z2xvYmFsX3RhYmxlcyBpbmNsdWRlcyBlbl9jb21wb3NlX3RhYmxlIG9ubHksIGkuZS4gbm8gdXNl cgotKyAgICAgICAgICogb3IgbG9jYWxlIGNvbXBvc2UgdGFibGVzLCBlbl9jb21wb3NlX3RhYmxl IGlzIHVzZWQuCi0rICAgICAgICAgKiBJZiBub3QsIGVuX2NvbXBvc2VfdGFibGUgaXMgdXNlZCBp biBjYXNlIG9uZSBvZiB0aGUgb3RoZXIgY29tcG9zZQotKyAgICAgICAgICogdGFibGVzIGhhcyBj YW5fbG9hZF9lbl91cyA9ICVUUlVFLCBpLmUuIHRoZSB0YWJsZSBmaWxlIGhhcwotKyAgICAgICAg ICogdGhlIGxpbmUgb2YgJ2luY2x1ZGUgIiVMIicuCi0rICAgICAgICAgKiBlbl9jb21wb3NlX3Rh YmxlIGlzIGFsd2F5cyBhcHBlbmRlZCB0byB0aGUgbGFzdCBvZiBnbG9iYWxfdGFibGVzLgotKyAg ICAgICAgICovCi0rICAgICAgICBpZiAoKGNvbXBvc2VfdGFibGUgPT0gZW5fY29tcG9zZV90YWJs ZSkgJiYgZ2xvYmFsX3RhYmxlcy0+bmV4dCAhPSBOVUxMCi0rICAgICAgICAgICAgJiYgIWNhbl9s b2FkX2VuX3VzKSB7Ci0rICAgICAgICAgICAgdG1wX2xpc3QgPSB0bXBfbGlzdC0+bmV4dDsKLSsg ICAgICAgICAgICBjb250aW51ZTsKLSsgICAgICAgIH0KLSAgICAgICAgIGlzXzMyYml0ID0gRkFM U0U7Ci0tICAgICAgICBpZiAoaWJ1c19jb21wb3NlX3RhYmxlX2NoZWNrICgKLS0gICAgICAgICAg ICAoSUJ1c0NvbXBvc2VUYWJsZUV4ICopdG1wX2xpc3QtPmRhdGEsCi0tICAgICAgICAgICAgcHJp di0+Y29tcG9zZV9idWZmZXIsCi0tICAgICAgICAgICAgbl9jb21wb3NlLAotLSAgICAgICAgICAg ICZjb21wb3NlX2ZpbmlzaCwKLS0gICAgICAgICAgICAmY29tcG9zZV9tYXRjaCwKLS0gICAgICAg ICAgICBvdXRwdXQsCi0tICAgICAgICAgICAgaXNfMzJiaXQpKSB7Ci0rICAgICAgICBpZiAoaWJ1 c19jb21wb3NlX3RhYmxlX2NoZWNrIChjb21wb3NlX3RhYmxlLAotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcHJpdi0+Y29tcG9zZV9idWZmZXIsCi0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBuX2NvbXBvc2UsCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAmY29tcG9zZV9maW5pc2gsCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAmY29tcG9zZV9tYXRjaCwKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG91dHB1dCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGlzXzMyYml0KSkgewotICAgICAgICAgICAgIHN1Y2Nlc3MgPSBUUlVFOwotICAg ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgfQotICAgICAgICAgaXNfMzJiaXQgPSBUUlVFOwot LSAgICAgICAgaWYgKGlidXNfY29tcG9zZV90YWJsZV9jaGVjayAoCi0tICAgICAgICAgICAgKElC dXNDb21wb3NlVGFibGVFeCAqKXRtcF9saXN0LT5kYXRhLAotLSAgICAgICAgICAgIHByaXYtPmNv bXBvc2VfYnVmZmVyLAotLSAgICAgICAgICAgIG5fY29tcG9zZSwKLS0gICAgICAgICAgICAmY29t cG9zZV9maW5pc2gsCi0tICAgICAgICAgICAgJmNvbXBvc2VfbWF0Y2gsCi0tICAgICAgICAgICAg b3V0cHV0LAotLSAgICAgICAgICAgIGlzXzMyYml0KSkgewotKyAgICAgICAgaWYgKGlidXNfY29t cG9zZV90YWJsZV9jaGVjayAoY29tcG9zZV90YWJsZSwKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHByaXYtPmNvbXBvc2VfYnVmZmVyLAotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgbl9jb21wb3NlLAotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJmNvbXBvc2VfZmluaXNoLAotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJmNvbXBvc2VfbWF0Y2gsCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBvdXRwdXQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBpc18zMmJpdCkpIHsKLSAgICAgICAgICAgICBzdWNjZXNzID0gVFJVRTsKLSAgICAgICAg ICAgICBicmVhazsKLSAgICAgICAgIH0KLUBAIC0xMTM0LDcgKzExNzMsOCBAQCBpYnVzX2VuZ2lu ZV9zaW1wbGVfcHJvY2Vzc19rZXlfZXZlbnQgKElCdXNFbmdpbmUgKmVuZ2luZSwKLSAgICAgICAg ICAgICAgICAgLyogaW52YWxpZCBoZXggc2VxdWVuY2UgKi8KLSAgICAgICAgICAgICAgICAgaWJ1 c19lbmdpbmVfc2ltcGxlX3NlbmRfbWVzc2FnZV93aXRoX2NvZGUgKAotICAgICAgICAgICAgICAg ICAgICAgICAgIHNpbXBsZSwKLS0gICAgICAgICAgICAgICAgICAgICAgICBJQlVTX0VOR0lORV9N U0dfQ09ERV9JTlZBTElEX0NPTVBPU0VfU0VRVUVOQ0UpOwotKyAgICAgICAgICAgICAgICAgICAg ICAgIElCVVNfRU5HSU5FX01TR19DT0RFX0lOVkFMSURfQ09NUE9TRV9TRVFVRU5DRSwKLSsgICAg ICAgICAgICAgICAgICAgICAgICBOVUxMKTsKLSAgICAgICAgICAgICAgICAgZ19zdHJpbmdfc2V0 X3NpemUgKHByaXYtPnRlbnRhdGl2ZV9tYXRjaCwgMCk7Ci0gICAgICAgICAgICAgICAgIGdfY2xl YXJfcG9pbnRlciAoJnByaXYtPnRlbnRhdGl2ZV9lbW9qaSwgZ19mcmVlKTsKLSAgICAgICAgICAg ICAgICAgcHJpdi0+aW5faGV4X3NlcXVlbmNlID0gRkFMU0U7Ci1AQCAtMTE1OSw3ICsxMTk5LDgg QEAgaWJ1c19lbmdpbmVfc2ltcGxlX3Byb2Nlc3Nfa2V5X2V2ZW50IChJQnVzRW5naW5lICplbmdp bmUsCi0gICAgICAgICAgICAgICAgIC8qIGludmFsaWQgaGV4IHNlcXVlbmNlICovCi0gICAgICAg ICAgICAgICAgIGlidXNfZW5naW5lX3NpbXBsZV9zZW5kX21lc3NhZ2Vfd2l0aF9jb2RlICgKLSAg ICAgICAgICAgICAgICAgICAgICAgICBzaW1wbGUsCi0tICAgICAgICAgICAgICAgICAgICAgICAg SUJVU19FTkdJTkVfTVNHX0NPREVfSU5WQUxJRF9DT01QT1NFX1NFUVVFTkNFKTsKLSsgICAgICAg ICAgICAgICAgICAgICAgICBJQlVTX0VOR0lORV9NU0dfQ09ERV9JTlZBTElEX0NPTVBPU0VfU0VR VUVOQ0UsCi0rICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7Ci0gICAgICAgICAgICAgICAg IGdfc3RyaW5nX3NldF9zaXplIChwcml2LT50ZW50YXRpdmVfbWF0Y2gsIDApOwotICAgICAgICAg ICAgICAgICBnX2NsZWFyX3BvaW50ZXIgKCZwcml2LT50ZW50YXRpdmVfZW1vamksIGdfZnJlZSk7 Ci0gICAgICAgICAgICAgICAgIHByaXYtPmluX2hleF9zZXF1ZW5jZSA9IEZBTFNFOwotQEAgLTEy MTAsNyArMTI1MSw4IEBAIGlidXNfZW5naW5lX3NpbXBsZV9wcm9jZXNzX2tleV9ldmVudCAoSUJ1 c0VuZ2luZSAqZW5naW5lLAotICAgICAgICAgICAgIC8qIGludmFsaWQgaGV4IHNlcXVlbmNlICov Ci0gICAgICAgICAgICAgaWJ1c19lbmdpbmVfc2ltcGxlX3NlbmRfbWVzc2FnZV93aXRoX2NvZGUg KAotICAgICAgICAgICAgICAgICAgICAgc2ltcGxlLAotLSAgICAgICAgICAgICAgICAgICAgSUJV U19FTkdJTkVfTVNHX0NPREVfSU5WQUxJRF9DT01QT1NFX1NFUVVFTkNFKTsKLSsgICAgICAgICAg ICAgICAgICAgIElCVVNfRU5HSU5FX01TR19DT0RFX0lOVkFMSURfQ09NUE9TRV9TRVFVRU5DRSwK LSsgICAgICAgICAgICAgICAgICAgIE5VTEwpOwotICAgICAgICAgICAgIGdfc3RyaW5nX3NldF9z aXplIChwcml2LT50ZW50YXRpdmVfbWF0Y2gsIDApOwotICAgICAgICAgICAgIGdfY2xlYXJfcG9p bnRlciAoJnByaXYtPnRlbnRhdGl2ZV9lbW9qaSwgZ19mcmVlKTsKLSAgICAgICAgICAgICBwcml2 LT5pbl9oZXhfc2VxdWVuY2UgPSBGQUxTRTsKLUBAIC0xMzExLDcgKzEzNTMsOCBAQCBpYnVzX2Vu Z2luZV9zaW1wbGVfcHJvY2Vzc19rZXlfZXZlbnQgKElCdXNFbmdpbmUgKmVuZ2luZSwKLSAgICAg ICAgICAgICBpZiAobl9jb21wb3NlID4gMCkgewotICAgICAgICAgICAgICAgICBpYnVzX2VuZ2lu ZV9zaW1wbGVfc2VuZF9tZXNzYWdlX3dpdGhfY29kZSAoCi0gICAgICAgICAgICAgICAgICAgICAg ICAgc2ltcGxlLAotLSAgICAgICAgICAgICAgICAgICAgICAgIElCVVNfRU5HSU5FX01TR19DT0RF X0lOVkFMSURfQ09NUE9TRV9TRVFVRU5DRSk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgSUJV U19FTkdJTkVfTVNHX0NPREVfSU5WQUxJRF9DT01QT1NFX1NFUVVFTkNFLAotKyAgICAgICAgICAg ICAgICAgICAgICAgIE5VTEwpOwotICAgICAgICAgICAgICAgICBnX3N0cmluZ19zZXRfc2l6ZSAo cHJpdi0+dGVudGF0aXZlX21hdGNoLCAwKTsKLSAgICAgICAgICAgICAgICAgcHJpdi0+aW5faGV4 X3NlcXVlbmNlID0gRkFMU0U7Ci0gICAgICAgICAgICAgICAgIHByaXYtPmNvbXBvc2VfYnVmZmVy WzBdID0gMDsKLUBAIC0xMzc4LDcgKzE0MjEsOCBAQCBpYnVzX2VuZ2luZV9zaW1wbGVfcHJvY2Vz c19rZXlfZXZlbnQgKElCdXNFbmdpbmUgKmVuZ2luZSwKLSAgICAgICAgICAgICAvKiBub24taGV4 IGNoYXJhY3RlciBpbiBoZXggc2VxdWVuY2UgKi8KLSAgICAgICAgICAgICBpYnVzX2VuZ2luZV9z aW1wbGVfc2VuZF9tZXNzYWdlX3dpdGhfY29kZSAoCi0gICAgICAgICAgICAgICAgICAgICBzaW1w bGUsCi0tICAgICAgICAgICAgICAgICAgICBJQlVTX0VOR0lORV9NU0dfQ09ERV9JTlZBTElEX0NP TVBPU0VfU0VRVUVOQ0UpOwotKyAgICAgICAgICAgICAgICAgICAgSUJVU19FTkdJTkVfTVNHX0NP REVfSU5WQUxJRF9DT01QT1NFX1NFUVVFTkNFLAotKyAgICAgICAgICAgICAgICAgICAgTlVMTCk7 Ci0gICAgICAgICAgICAgcmV0dXJuIFRSVUU7Ci0gICAgICAgICB9Ci0gICAgIH0gZWxzZSBpZiAo cHJpdi0+aW5fZW1vamlfc2VxdWVuY2UpIHsKLUBAIC0xNDM5LDcgKzE0ODMsOCBAQCBpYnVzX2Vu Z2luZV9zaW1wbGVfcHJvY2Vzc19rZXlfZXZlbnQgKElCdXNFbmdpbmUgKmVuZ2luZSwKLSAgICAg ICAgICAgICAgICAgICAgIC8qIGludmFsaWQgaGV4IHNlcXVlbmNlICovCi0gICAgICAgICAgICAg ICAgICAgICBpYnVzX2VuZ2luZV9zaW1wbGVfc2VuZF9tZXNzYWdlX3dpdGhfY29kZSAoCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNpbXBsZSwKLS0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgSUJVU19FTkdJTkVfTVNHX0NPREVfSU5WQUxJRF9DT01QT1NFX1NFUVVFTkNFKTsKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgSUJVU19FTkdJTkVfTVNHX0NPREVfSU5WQUxJRF9D T01QT1NFX1NFUVVFTkNFLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKLSAg ICAgICAgICAgICAgICAgICAgIGdfc3RyaW5nX3NldF9zaXplIChwcml2LT50ZW50YXRpdmVfbWF0 Y2gsIDApOwotICAgICAgICAgICAgICAgICAgICAgcHJpdi0+aW5faGV4X3NlcXVlbmNlID0gRkFM U0U7Ci0gICAgICAgICAgICAgICAgICAgICBwcml2LT5jb21wb3NlX2J1ZmZlclswXSA9IDA7Ci1A QCAtMTQ0Nyw3ICsxNDkyLDggQEAgaWJ1c19lbmdpbmVfc2ltcGxlX3Byb2Nlc3Nfa2V5X2V2ZW50 IChJQnVzRW5naW5lICplbmdpbmUsCi0gICAgICAgICAgICAgfSBlbHNlIGlmICghY2hlY2tfaGV4 IChzaW1wbGUsIG5fY29tcG9zZSkpIHsKLSAgICAgICAgICAgICAgICAgaWJ1c19lbmdpbmVfc2lt cGxlX3NlbmRfbWVzc2FnZV93aXRoX2NvZGUgKAotICAgICAgICAgICAgICAgICAgICAgICAgIHNp bXBsZSwKLS0gICAgICAgICAgICAgICAgICAgICAgICBJQlVTX0VOR0lORV9NU0dfQ09ERV9JTlZB TElEX0NPTVBPU0VfU0VRVUVOQ0UpOwotKyAgICAgICAgICAgICAgICAgICAgICAgIElCVVNfRU5H SU5FX01TR19DT0RFX0lOVkFMSURfQ09NUE9TRV9TRVFVRU5DRSwKLSsgICAgICAgICAgICAgICAg ICAgICAgICBOVUxMKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgaWJ1c19lbmdpbmVf c2ltcGxlX3VwZGF0ZV9wcmVlZGl0X3RleHQgKHNpbXBsZSk7Ci0gCi1AQCAtMTU0Miw3ICsxNTg4 LDggQEAgaWJ1c19lbmdpbmVfc2ltcGxlX3Byb2Nlc3Nfa2V5X2V2ZW50IChJQnVzRW5naW5lICpl bmdpbmUsCi0gICAgICAgICAgICAgZ19hc3NlcnQgKG5fY29tcG9zZSA8IChDT01QT1NFX0JVRkZF Ul9TSVpFICsgMSkpOwotICAgICAgICAgICAgIGlidXNfZW5naW5lX3NpbXBsZV9zZW5kX21lc3Nh Z2Vfd2l0aF9jb2RlICgKLSAgICAgICAgICAgICAgICAgICAgIHNpbXBsZSwKLS0gICAgICAgICAg ICAgICAgICAgIElCVVNfRU5HSU5FX01TR19DT0RFX0lOVkFMSURfQ09NUE9TRV9TRVFVRU5DRSk7 Ci0rICAgICAgICAgICAgICAgICAgICBJQlVTX0VOR0lORV9NU0dfQ09ERV9JTlZBTElEX0NPTVBP U0VfU0VRVUVOQ0UsCi0rICAgICAgICAgICAgICAgICAgICBOVUxMKTsKLSAgICAgICAgICAgICBi YWNrdXBfY2hhciA9IHByaXYtPmNvbXBvc2VfYnVmZmVyW25fY29tcG9zZV07Ci0gICAgICAgICAg ICAgcHJpdi0+Y29tcG9zZV9idWZmZXJbbl9jb21wb3NlXSA9IDA7Ci0gICAgICAgICAgICAgaWYg KGlidXNfZW5naW5lX3NpbXBsZV9jaGVja19hbGxfY29tcG9zZV90YWJsZSAoc2ltcGxlLCBuX2Nv bXBvc2UpKQotQEAgLTE3NDIsOSArMTc4OSwxOSBAQCBnYm9vbGVhbgotIGlidXNfZW5naW5lX3Np bXBsZV9hZGRfY29tcG9zZV9maWxlIChJQnVzRW5naW5lU2ltcGxlICpzaW1wbGUsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAgKmNvbXBvc2Vf ZmlsZSkKLSB7Ci0tICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChJQlVTX0lTX0VOR0lORV9TSU1Q TEUgKHNpbXBsZSksIFRSVUUpOwotKyAgICBHRXJyb3IgKmVycm9yID0gTlVMTDsKLSsKLSsgICAg Z19yZXR1cm5fdmFsX2lmX2ZhaWwgKElCVVNfSVNfRU5HSU5FX1NJTVBMRSAoc2ltcGxlKSwgRkFM U0UpOwotIAotICAgICBnbG9iYWxfdGFibGVzID0gaWJ1c19jb21wb3NlX3RhYmxlX2xpc3RfYWRk X2ZpbGUgKGdsb2JhbF90YWJsZXMsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29tcG9zZV9maWxlKTsKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb3NlX2ZpbGUsCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmVycm9yKTsK LSsgICAgaWYgKGVycm9yKSB7Ci0rICAgICAgICBnX3dhcm5pbmcgKCJcbiVzXG4iLCBlcnJvci0+ bWVzc2FnZSk7Ci0rICAgICAgICBpYnVzX2VuZ2luZV9zaW1wbGVfc2VuZF9tZXNzYWdlX3dpdGhf Y29kZSAoc2ltcGxlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGVycm9yLT5jb2RlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGVycm9yKTsKLSsgICAgICAgIGdfZXJyb3JfZnJlZSAoZXJyb3Ip OwotKyAgICB9Ci0gICAgIHJldHVybiBUUlVFOwotIH0KLWRpZmYgLS1naXQgYS9zcmMvaWJ1c2Vu Z2luZXNpbXBsZXByaXZhdGUuaCBiL3NyYy9pYnVzZW5naW5lc2ltcGxlcHJpdmF0ZS5oCi1pbmRl eCBjMDFkMmViMS4uYzNmOTI5MjAgMTAwNjQ0Ci0tLS0gYS9zcmMvaWJ1c2VuZ2luZXNpbXBsZXBy aXZhdGUuaAotKysrIGIvc3JjL2lidXNlbmdpbmVzaW1wbGVwcml2YXRlLmgKLUBAIC0yNiw2ICsy NiwxNSBAQAotIAotIEdfQkVHSU5fREVDTFMKLSAKLSsvKioKLSsgKiBJQlVTX0NPTVBPU0VfRVJS T1I6Ci0rICoKLSsgKiBUaGUgYEdRdWFya2AgdXNlZCBmb3IgYElCdXNDb21wb3NlVGFibGVFeGAg ZXJyb3JzLgotKyAqCi0rICogU2luY2U6IDEuNS4zMwotKyAqLwotKyNkZWZpbmUgSUJVU19DT01Q T1NFX0VSUk9SIChpYnVzX2NvbXBvc2VfZXJyb3JfcXVhcmsgKCkpCi0rCi0gLyogQ2hlY2tzIGlm IGEga2V5c3ltIGlzIGEgZGVhZCBrZXkuIERlYWQga2V5IGtleXN5bSB2YWx1ZXMgYXJlIGRlZmlu ZWQgaW4KLSAgKiBpYnVza2V5c3ltcy5oIGFuZCB0aGUgZmlyc3QgaXMgR0RLX0tFWV9kZWFkX2dy YXZlLgotICAqLwotQEAgLTQyLDYgKzUxLDEzIEBAIHN0cnVjdCBfSUJ1c0NvbXBvc2VUYWJsZVBy aXZhdGUKLSB9OwotIAotIAotKy8qKgotKyAqIGlidXNfY29tcG9zZV9lcnJvcl9xdWFyazoKLSsg KgotKyAqIFNpbmNlOiAxLjUuMzMKLSsgKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0rICovCi0rR1F1 YXJrICAgaWJ1c19jb21wb3NlX2Vycm9yX3F1YXJrICAgKHZvaWQpOwotIGd1aW50ICAgIGlidXNf Y29tcG9zZV9rZXlfZmxhZyAgICAgIChndWludCAgICAgICAgICAgICAgICAgICAgICAga2V5KTsK LSBnYm9vbGVhbiBpYnVzX2NoZWNrX2FsZ29yaXRobWljYWxseSAoY29uc3QgZ3VpbnQgICAgICAg ICAgICAgICAgKmNvbXBvc2VfYnVmZmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgbl9jb21wb3NlLAotQEAgLTU0LDcg KzcwLDggQEAgR1ZhcmlhbnQgKgotIElCdXNDb21wb3NlVGFibGVFeCAqCi0gICAgICAgICAgaWJ1 c19jb21wb3NlX3RhYmxlX2Rlc2VyaWFsaXplCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGNvbnN0IGNoYXIgICAgICAgICAgICAgICAgICpjb250ZW50cywKLS0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3NpemUgICAgICAgICAgICAgICAgICAgICAg IGxlbmd0aCk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdzaXplICAg ICAgICAgICAgICAgICAgICAgICBsZW5ndGgsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGd1aW50MTYgICAgICAgICAgICAgICAgICAgICpzYXZlZF92ZXJzaW9uKTsKLSBn Ym9vbGVhbiBpYnVzX2NvbXBvc2VfdGFibGVfY2hlY2sgICAoY29uc3QgSUJ1c0NvbXBvc2VUYWJs ZUV4ICAgKnRhYmxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWlu dCAgICAgICAgICAgICAgICAgICAgICAqY29tcG9zZV9idWZmZXIsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICBuX2NvbXBv c2UsCi1kaWZmIC0tZ2l0IGEvc3JjL3Rlc3RzL2lidXMtY29tcG9zZS5jIGIvc3JjL3Rlc3RzL2li dXMtY29tcG9zZS5jCi1pbmRleCAzMjZkM2I5MC4uYzA3YzAyYzQgMTAwNjQ0Ci0tLS0gYS9zcmMv dGVzdHMvaWJ1cy1jb21wb3NlLmMKLSsrKyBiL3NyYy90ZXN0cy9pYnVzLWNvbXBvc2UuYwotQEAg LTI0MSw5ICsyNDEsMTMgQEAgY3JlYXRlX2VuZ2luZV9jYiAoSUJ1c0ZhY3RvcnkgKmZhY3Rvcnks Ci0gICAgIGVsc2UKLSAgICAgICAgIGNvbXBvc2VfcGF0aCA9IGdldF9jb21wb3NlX3BhdGggKCk7 Ci0gICAgIGlmIChjb21wb3NlX3BhdGggIT0gTlVMTCkgewotKyAgICAgICAgZ3VpbnQxNiBzYXZl ZF92ZXJzaW9uID0gMDsKLSAgICAgICAgIGlidXNfZW5naW5lX3NpbXBsZV9hZGRfY29tcG9zZV9m aWxlIChJQlVTX0VOR0lORV9TSU1QTEUgKG1fZW5naW5lKSwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb3NlX3BhdGgpOwotLSAgICAgICAgbV9jb21w b3NlX3RhYmxlID0gaWJ1c19jb21wb3NlX3RhYmxlX2xvYWRfY2FjaGUgKGNvbXBvc2VfcGF0aCk7 Ci0rICAgICAgICBtX2NvbXBvc2VfdGFibGUgPSBpYnVzX2NvbXBvc2VfdGFibGVfbG9hZF9jYWNo ZSAoY29tcG9zZV9wYXRoLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICZzYXZlZF92ZXJzaW9uKTsKLSsgICAgICAgIGlmIChtX2NvbXBv c2VfdGFibGUpCi0rICAgICAgICAgICAgZ19hc3NlcnQgKHNhdmVkX3ZlcnNpb24pOwotICAgICB9 Ci0gICAgIGdfZnJlZSAoY29tcG9zZV9wYXRoKTsKLSAgICAgcmV0dXJuIG1fZW5naW5lOwotLS0g Ci0yLjQ5LjAKLQotRnJvbSAyYjljODdiZDRkYzgxZmJhMGYyMTY4OGY2ZjI4ODczNDU2NGYyNTkw IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogZnVqaXdhcmF0IDx0YWthby5mdWppd2Fy YTFAZ21haWwuY29tPgotRGF0ZTogVGh1LCA1IEp1biAyMDI1IDE5OjQ1OjMwICswOTAwCi1TdWJq ZWN0OiBbUEFUQ0ggMy80XSBlbmdpbmU6IEFkZCB0ZXN0LWdub21lLnB5IHRvIGNoZWNrIGdub21l LWRlc2t0b3AKLQotQlVHPWh0dHBzOi8vZ2l0aHViLmNvbS9pYnVzL2lidXMvaXNzdWVzLzI3NDgK LS0tLQotIGNvbmZpZ3VyZS5hYyAgICAgICAgIHwgIDE1ICsrKysrCi0gZW5naW5lL01ha2VmaWxl LmFtICAgfCAgOTkgKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0KLSBlbmdpbmUvdGVz dC1nbm9tZS5weSB8IDEzMiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrCi0gMyBmaWxlcyBjaGFuZ2VkLCAyMDAgaW5zZXJ0aW9ucygrKSwgNDYgZGVsZXRpb25zKC0p Ci0gY3JlYXRlIG1vZGUgMTAwNzU1IGVuZ2luZS90ZXN0LWdub21lLnB5Ci0KLWRpZmYgLS1naXQg YS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDE2ZDU2YTRkLi5hNWU0YTQ0YyAx MDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtNjAxLDYg KzYwMSwyMCBAQCBBQ19BUkdfV0lUSChndGs0LWltLW1vZHVsZS1kaXIsCi0gKQotIEFDX1NVQlNU KEdUSzRfSU1fTU9EVUxFRElSKQotIAotK0FDX01TR19DSEVDS0lORyhbZm9yICRQWVRIT04gR0kg R25vbWVEZXNrdG9wIG1vZHVsZV0pCi0raWYgQUNfUlVOX0xPRyhbJFBZVEhPTiAtYyAiZGVmIF9j b25maWd1cmVfdGVzdCgpOgotKyAgICBmcm9tIGdpIGltcG9ydCByZXF1aXJlX3ZlcnNpb24gYXMg Z2lfcmVxdWlyZV92ZXJzaW9uCi0rICAgIGdpX3JlcXVpcmVfdmVyc2lvbignR25vbWVEZXNrdG9w JywgJzQuMCcpCi0rICAgIGZyb20gZ2kucmVwb3NpdG9yeSBpbXBvcnQgR25vbWVEZXNrdG9wCi0r X2NvbmZpZ3VyZV90ZXN0KCkiXSk7IHRoZW4KLSsgICAgZW5hYmxlX3B5Z25vbWVfZGVza3RvcD0i eWVzIgotK2Vsc2UKLSsgICAgZW5hYmxlX3B5Z25vbWVfZGVza3RvcD0ibm8iCi0rZmkKLStBQ19N U0dfUkVTVUxUKFskZW5hYmxlX3B5Z25vbWVfZGVza3RvcF0pCi0rQU1fQ09ORElUSU9OQUwoW0VO QUJMRV9QWUdOT01FX0RFU0tUT1BdLAotKyAgICAgICAgICAgICAgIFt0ZXN0IHgiJGVuYWJsZV9w eWdub21lX2Rlc2t0b3AiID0geCJ5ZXMiXSkKLSsKLSBpZiB0ZXN0IHgiJGVuYWJsZV9weXRob24i ID0geCJ5ZXMiOyB0aGVuCi0gICAgICMgQ2hlY2sgZm9yIGRidXMtcHl0aG9uLgotICAgICBBQ19B UkdfRU5BQkxFKGRidXMtcHl0aG9uLWNoZWNrLAotQEAgLTk0MSw2ICs5NTUsNyBAQCBCdWlsZCBv cHRpb25zOgotICAgUFlUSE9OICAgICAgICAgICAgICAgICAgICAgICAgJFBZVEhPTgotICAgUFlU SE9OMiAgICAgICAgICAgICAgICAgICAgICAgJFBZVEhPTjIKLSAgIFB5dGhvbiBvdmVycmlkZXMg ZGlyICAgICAgICAgICRweW92ZXJyaWRlc2RpcgotKyAgUHl0aG9uIEdJIEdub21lRGVza3RvcCBt b2R1bGUgJGVuYWJsZV9weWdub21lX2Rlc2t0b3AKLSAgIEVuYWJsZSBweXRob24yICAgICAgICAg ICAgICAgICRlbmFibGVfcHl0aG9uMgotICAgR3RrMiBpbW1vZHVsZSBkaXIgICAgICAgICAgICAg JEdUSzJfSU1fTU9EVUxFRElSCi0gICBHdGszIGltbW9kdWxlIGRpciAgICAgICAgICAgICAkR1RL M19JTV9NT0RVTEVESVIKLWRpZmYgLS1naXQgYS9lbmdpbmUvTWFrZWZpbGUuYW0gYi9lbmdpbmUv TWFrZWZpbGUuYW0KLWluZGV4IGEyZDYwNjNhLi4zZTRkMDQ1ZiAxMDA2NDQKLS0tLSBhL2VuZ2lu ZS9NYWtlZmlsZS5hbQotKysrIGIvZW5naW5lL01ha2VmaWxlLmFtCi1AQCAtNCw3ICs0LDcgQEAK LSAjCi0gIyBDb3B5cmlnaHQgKGMpIDIwMTAtMjAxNiwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy ZXNlcnZlZC4KLSAjIENvcHlyaWdodCAoYykgMjAwNy0yMDE2IFBlbmcgSHVhbmcgPHNoYXduLnAu aHVhbmdAZ21haWwuY29tPgotLSMgQ29weXJpZ2h0IChjKSAyMDEzLTIwMjMgVGFrYW8gRnVqaXdh cmEgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+Ci0rIyBDb3B5cmlnaHQgKGMpIDIwMTMtMjAy NSBUYWthbyBGdWppd2FyYSA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KLSAjCi0gIyBUaGlz IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y Ci0gIyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg UHVibGljCi1AQCAtMjQsNzYgKzI0LDgzIEBACi0gbGliaWJ1cyA9ICQodG9wX2J1aWxkZGlyKS9z cmMvbGliaWJ1cy1ASUJVU19BUElfVkVSU0lPTkAubGEKLSAKLSBBTV9DUFBGTEFHUyA9IFwKLS0J LUkkKHRvcF9zcmNkaXIpL3NyYyBcCi0tCS1JJCh0b3BfYnVpbGRkaXIpL3NyYyBcCi0tCSQoTlVM TCkKLSsgICAgLUkkKHRvcF9zcmNkaXIpL3NyYyBcCi0rICAgIC1JJCh0b3BfYnVpbGRkaXIpL3Ny YyBcCi0rICAgICQoTlVMTCkKLSAKLSBBTV9DRkxBR1MgPSBcCi0tCUBHTElCMl9DRkxBR1NAIFwK LS0JQEdJTzJfQ0ZMQUdTQCBcCi0tCUBHVEhSRUFEMl9DRkxBR1NAIFwKLS0JLURHX0xPR19ET01B SU49XCJJQlVTXCIgXAotLQktRFBLR0RBVEFESVI9XCIkKHBrZ2RhdGFkaXIpXCIgXAotLQktRExJ QkVYRUNESVI9XCIkKGxpYmV4ZWNkaXIpXCIgXAotLQktREJJTkRJUj1cIkBiaW5kaXJAXCIgXAot KyAgICBAR0xJQjJfQ0ZMQUdTQCBcCi0rICAgIEBHSU8yX0NGTEFHU0AgXAotKyAgICBAR1RIUkVB RDJfQ0ZMQUdTQCBcCi0rICAgIC1ER19MT0dfRE9NQUlOPVwiSUJVU1wiIFwKLSsgICAgLURQS0dE QVRBRElSPVwiJChwa2dkYXRhZGlyKVwiIFwKLSsgICAgLURMSUJFWEVDRElSPVwiJChsaWJleGVj ZGlyKVwiIFwKLSsgICAgLURCSU5ESVI9XCJAYmluZGlyQFwiIFwKLSAgICAgLURJQlVTX0RJU0FC TEVfREVQUkVDQVRFRCBcCi0tCS1Xbm8tdW51c2VkLXZhcmlhYmxlIFwKLS0JLVduby11bnVzZWQt YnV0LXNldC12YXJpYWJsZSBcCi0tCS1Xbm8tdW51c2VkLWZ1bmN0aW9uIFwKLS0JJChOVUxMKQot KyAgICAtV25vLXVudXNlZC12YXJpYWJsZSBcCi0rICAgIC1Xbm8tdW51c2VkLWJ1dC1zZXQtdmFy aWFibGUgXAotKyAgICAtV25vLXVudXNlZC1mdW5jdGlvbiBcCi0rICAgICQoTlVMTCkKLSAKLSBB TV9MREFERCA9IFwKLS0JQEdPQkpFQ1QyX0xJQlNAIFwKLS0JQEdMSUIyX0xJQlNAIFwKLS0JQEdJ TzJfTElCU0AgXAotLQlAR1RIUkVBRDJfTElCU0AgXAotLQkkKGxpYmlidXMpIFwKLS0JJChOVUxM KQotKyAgICBAR09CSkVDVDJfTElCU0AgXAotKyAgICBAR0xJQjJfTElCU0AgXAotKyAgICBAR0lP Ml9MSUJTQCBcCi0rICAgIEBHVEhSRUFEMl9MSUJTQCBcCi0rICAgICQobGliaWJ1cykgXAotKyAg ICAkKE5VTEwpCi0gCi0gQU1fVkFMQUZMQUdTID0gXAotLQktLXZhcGlkaXI9JCh0b3BfYnVpbGRk aXIpL2JpbmRpbmdzL3ZhbGEgXAotLQktLXBrZz1pYnVzLTEuMCBcCi0rICAgIC0tdmFwaWRpcj0k KHRvcF9idWlsZGRpcikvYmluZGluZ3MvdmFsYSBcCi0rICAgIC0tcGtnPWlidXMtMS4wIFwKLSAg ICAgLS1wa2ctY29uZmlnPSJcIiQoUEtHX0NPTkZJRykgLS13aXRoLXBhdGg9JChQS0dfQ09ORklH X1BBVEgpXCIiIFwKLS0JLS10YXJnZXQtZ2xpYj0iJChWQUxBX1RBUkdFVF9HTElCX1ZFUlNJT04p IiBcCi0tCSQoTlVMTCkKLSsgICAgLS10YXJnZXQtZ2xpYj0iJChWQUxBX1RBUkdFVF9HTElCX1ZF UlNJT04pIiBcCi0rICAgICQoTlVMTCkKLSsKLStURVNUUyA9Ci0rCi0raWYgRU5BQkxFX1BZR05P TUVfREVTS1RPUAotK1RFU1RTICs9IHRlc3QtZ25vbWUucHkKLStlbmRpZgotIAotIGxpYmV4ZWNf UFJPR1JBTVMgPSBcCi0tCWlidXMtZW5naW5lLXNpbXBsZSBcCi0tCSQoTlVMTCkKLSsgICAgaWJ1 cy1lbmdpbmUtc2ltcGxlIFwKLSsgICAgJChOVUxMKQotIAotIGlidXNfZW5naW5lX3NpbXBsZV9T T1VSQ0VTID0gXAotLQltYWluLnZhbGEgXAotLQkkKE5VTEwpCi0rICAgIG1haW4udmFsYSBcCi0r ICAgICQoTlVMTCkKLSBpYnVzX2VuZ2luZV9zaW1wbGVfQ0ZMQUdTID0gXAotLQkkKEFNX0NGTEFH UykgXAotLQkkKE5VTEwpCi0rICAgICQoQU1fQ0ZMQUdTKSBcCi0rICAgICQoTlVMTCkKLSBpYnVz X2VuZ2luZV9zaW1wbGVfTERBREQgPSBcCi0tCSQoQU1fTERBREQpIFwKLS0JJChOVUxMKQotKyAg ICAkKEFNX0xEQUREKSBcCi0rICAgICQoTlVMTCkKLSBpYnVzX2VuZ2luZV9zaW1wbGVfREVQRU5E RU5DSUVTID0gXAotLQkkKGxpYmlidXMpIFwKLS0JJChOVUxMKQotKyAgICAkKGxpYmlidXMpIFwK LSsgICAgJChOVUxMKQotIAotIGNvbXBvbmVudF9EQVRBID0gXAotLQlzaW1wbGUueG1sIFwKLS0J JChOVUxMKQotKyAgICBzaW1wbGUueG1sIFwKLSsgICAgJChOVUxMKQotIAotIGNvbXBvbmVudGRp ciA9ICQocGtnZGF0YWRpcikvY29tcG9uZW50Ci0gCi0gTUFJTlRBSU5FUkNMRUFORklMRVMgPSBc Ci0tCXNpbXBsZS54bWwuaW4gXAotLQkkKE5VTEwpCi0rICAgIHNpbXBsZS54bWwuaW4gXAotKyAg ICAkKE5VTEwpCi0gCi0gQ0xFQU5GSUxFUyA9IFwKLS0Jc2ltcGxlLnhtbCBcCi0tCSQoTlVMTCkK LSsgICAgc2ltcGxlLnhtbCBcCi0rICAgICQoTlVMTCkKLSAKLSBFWFRSQV9ESVNUID0gXAotLQlk ZW55bGlzdC50eHQgXAotLQlnZW5zaW1wbGUucHkgXAotLQlpc282Mzljb252ZXJ0ZXIucHkgXAot LQlzaW1wbGUueG1sLmluIFwKLS0JJChOVUxMKQotKyAgICBkZW55bGlzdC50eHQgXAotKyAgICBn ZW5zaW1wbGUucHkgXAotKyAgICBpc282Mzljb252ZXJ0ZXIucHkgXAotKyAgICBzaW1wbGUueG1s LmluIFwKLSsgICAgdGVzdC1nbm9tZS5weSBcCi0rICAgICQoTlVMTCkKLSAKLSBzaW1wbGUueG1s OiBzaW1wbGUueG1sLmluCi0gCSQoQU1fVl9HRU4pIHNlZCBcCi1kaWZmIC0tZ2l0IGEvZW5naW5l L3Rlc3QtZ25vbWUucHkgYi9lbmdpbmUvdGVzdC1nbm9tZS5weQotbmV3IGZpbGUgbW9kZSAxMDA3 NTUKLWluZGV4IDAwMDAwMDAwLi4wYTYwM2ZiMAotLS0tIC9kZXYvbnVsbAotKysrIGIvZW5naW5l L3Rlc3QtZ25vbWUucHkKLUBAIC0wLDAgKzEsMTMyIEBACi0rIyEvdXNyL2Jpbi9weXRob24KLSsj IHZpbTpzZXQgZmlsZWVuY29kaW5nPXV0Zi04IGV0IHN0cz00IHN3PTQ6Ci0rIwotKyMgaWJ1cyAt IEludGVsbGlnZW50IElucHV0IEJ1cyBmb3IgTGludXggLyBVbml4IE9TCi0rIwotKyMgQ29weXJp Z2h0IMKpIDIwMjUgVGFrYW8gRnVqaXdhcmEgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+Ci0r IwotKyMgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vcgotKyMgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3Nl ciBHZW5lcmFsIFB1YmxpYwotKyMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0rIyB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwg b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIGxpYnJh cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsj IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh bnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UuICBTZWUgdGhlIEdOVQotKyMgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y IG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0rIyBMaWNlbnNlIGFsb25nIHdpdGggdGhp cyBsaWJyYXJ5LiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0r Ci0rIyBDaGVjayBnbm9tZS1zaGVsbC9qcy9taXNjL2tleWJvYXJkTWFuYWdlci5qcwotKwotK2Zy b20gZ2kgaW1wb3J0IHJlcXVpcmVfdmVyc2lvbiBhcyBnaV9yZXF1aXJlX3ZlcnNpb24KLStnaV9y ZXF1aXJlX3ZlcnNpb24oJ0dub21lRGVza3RvcCcsICc0LjAnKQotKwotK2Zyb20gZ2kucmVwb3Np dG9yeSBpbXBvcnQgR25vbWVEZXNrdG9wCi0rCi0raW1wb3J0IG9zLCByZSwgc3lzCi0rCi0rCi0r Y2xhc3MgVGVzdEdub21lRGVza3RvcDoKLSsgICAgX19zcmNkaXIgPSAnLicKLSsgICAgX19vcHRp b25fZGVidWcgPSBGYWxzZQotKyAgICBfX3NpbXBsZV9maWxlbmFtZSA9ICdzaW1wbGUueG1sLmlu JwotKyAgICBfX2RlbnlsaXN0X2ZpbGVuYW1lID0gJ2RlbnlsaXN0LnR4dCcKLSsgICAgX194a2Jf aW5mbyA9IE5vbmUKLSsgICAgX19zaW1wbGVfY29udGVudHMgPSBOb25lCi0rICAgIF9fZGVueWxp c3RfbGluZXMgPSBOb25lCi0rCi0rICAgIEBjbGFzc21ldGhvZAotKyAgICBkZWYgcGFyc2VfYXJn cyhjbHMpOgotKyAgICAgICAgY2xzLl9fc3JjZGlyID0gb3MucGF0aC5kaXJuYW1lKHN5cy5hcmd2 WzBdKQotKyAgICAgICAgaWYgY2xzLl9fc3JjZGlyID09ICcnOgotKyAgICAgICAgICAgIGNscy5f X3NyY2RpciA9ICcuJwotKyAgICAgICAgaWYgbGVuKHN5cy5hcmd2KSA+IDE6Ci0rICAgICAgICAg ICAgYXJnMSA9IHN5cy5hcmd2WzFdCi0rICAgICAgICAgICAgaWYgYXJnMSA9PSAnLS1kZWJ1Zyc6 Ci0rICAgICAgICAgICAgICAgIGNscy5fX29wdGlvbl9kZWJ1ZyA9IFRydWUKLSsKLSsgICAgZGVm IF9faW5pdF9fKHNlbGYpOgotKyAgICAgICAgc2VsZi5fX3NpbXBsZV9maWxlbmFtZSA9ICclcy8l cycgJSAoc2VsZi5fX3NyY2RpciwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNlbGYuX19zaW1wbGVfZmlsZW5hbWUpCi0rICAgICAgICBzZWxmLl9fZGVueWxp c3RfZmlsZW5hbWUgPSAnJXMvJXMnICUgKHNlbGYuX19zcmNkaXIsCi0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX19kZW55bGlzdF9maWxlbmFtZSkK LSsgICAgICAgIHNlbGYuX194a2JfaW5mbyA9IEdub21lRGVza3RvcC5Ya2JJbmZvKCkKLSsKLSsg ICAgZGVmIHJlYWRfc2ltcGxlKHNlbGYpOgotKyAgICAgICAgc2ltcGxlX2ZpbGUgPSBvcGVuKHNl bGYuX19zaW1wbGVfZmlsZW5hbWUpCi0rICAgICAgICBzZWxmLl9fc2ltcGxlX2NvbnRlbnRzID0g c2ltcGxlX2ZpbGUucmVhZCgpCi0rICAgICAgICBzaW1wbGVfZmlsZS5jbG9zZSgpCi0rCi0rICAg IGRlZiByZWFkX2RlbnlsaXN0KHNlbGYpOgotKyAgICAgICAgZGVueWxpc3RfZmlsZSA9IG9wZW4o c2VsZi5fX2RlbnlsaXN0X2ZpbGVuYW1lKQotKyAgICAgICAgc2VsZi5fX2RlbnlsaXN0X2xpbmVz ID0gZGVueWxpc3RfZmlsZS5yZWFkbGluZXMoKQotKyAgICAgICAgZGVueWxpc3RfZmlsZS5jbG9z ZSgpCi0rICAgICAgICBsID0gW10KLSsgICAgICAgIGZvciBsaW5lIGluIHNlbGYuX19kZW55bGlz dF9saW5lczoKLSsgICAgICAgICAgICBsaW5lID0gbGluZS5yc3RyaXAoKQotKyAgICAgICAgICAg IGlmIGxlbihsaW5lKSA9PSAwOgotKyAgICAgICAgICAgICAgICBjb250aW51ZQotKyAgICAgICAg ICAgIGlmIG5vdCBsaW5lLnN0YXJ0c3dpdGgoJyMnKToKLSsgICAgICAgICAgICAgICAgbC5hcHBl bmQobGluZSkKLSsgICAgICAgIHNlbGYuX19kZW55bGlzdF9saW5lcyA9IGwKLSsKLSsgICAgZGVm IF9fY2hlY2tfa25vd25faXNzdWVfZW5naW5lX25hbWUoc2VsZiwgZGVzYyk6Ci0rICAgICAgICBy ZWFzb24gPSBOb25lCi0rICAgICAgICBpZiBkZXNjID09ICd4a2I6aW46ZW5nOmVuZyc6Ci0rICAg ICAgICAgICAgd3JvbmdfZGVzYyA9ICd4a2I6aW46ZW5nOmVuJwotKyAgICAgICAgICAgIHNpbXBs ZV9yZXMgPSByZS5zZWFyY2god3JvbmdfZGVzYywgc2VsZi5fX3NpbXBsZV9jb250ZW50cykKLSsg ICAgICAgICAgICBpZiBzaW1wbGVfcmVzICE9IE5vbmU6Ci0rICAgICAgICAgICAgICAgIHJlYXNv biA9ICcjIEluZm86IHhrZXlib2FyZC1jb25maWcgMi40MiBoYXMgaW5jb3JyZWN0ICVzICcgXAot KyAgICAgICAgICAgICAgICAgICAgICAgICAiYnV0IGl0J3MgZml4ZWQgaW4gMi40NCIgJSB3cm9u Z19kZXNjCi0rICAgICAgICByZXR1cm4gcmVhc29uCi0rCi0rICAgIGRlZiB0ZXN0X3NpbXBsZV93 aXRoX2dub21lKHNlbGYpOgotKyAgICAgICAgZXJybnVtID0gMAotKyAgICAgICAgZm9yIGxheW91 dF92YXJpYW50IGluIHNlbGYuX194a2JfaW5mby5nZXRfYWxsX2xheW91dHMoKToKLSsgICAgICAg ICAgICBsYW5ndWFnZXMgPSBzZWxmLl9feGtiX2luZm8uZ2V0X2xhbmd1YWdlc19mb3JfbGF5b3V0 KGxheW91dF92YXJpYW50KQotKyAgICAgICAgICAgIGxheW91dHMgPSBsYXlvdXRfdmFyaWFudC5z cGxpdCgnKycpCi0rICAgICAgICAgICAgaWYgbGVuKGxhbmd1YWdlcykgPT0gMDoKLSsgICAgICAg ICAgICAgICAgaWYgc2VsZi5fX29wdGlvbl9kZWJ1ZzoKLSsgICAgICAgICAgICAgICAgICAgIHBy aW50KCcjIEluZm86IE5vIGxhbmd1YWdlOiAlcycgJSBsYXlvdXRfdmFyaWFudCkKLSsgICAgICAg ICAgICAgICAgY29udGludWUKLSsgICAgICAgICAgICBpZiBsZW4obGF5b3V0cykgPj0gMjoKLSsg ICAgICAgICAgICAgICAgZGVzYyA9ICd4a2I6JXM6JXM6JXMnICUgKGxheW91dHNbMF0sIGxheW91 dHNbMV0sIGxhbmd1YWdlc1swXSkKLSsgICAgICAgICAgICBlbHNlOgotKyAgICAgICAgICAgICAg ICBkZXNjID0gJ3hrYjolczo6JXMnICUgKGxheW91dHNbMF0sIGxhbmd1YWdlc1swXSkKLSsgICAg ICAgICAgICBpZiBzZWxmLl9fb3B0aW9uX2RlYnVnOgotKyAgICAgICAgICAgICAgICBwcmludCgn IyBEZWJ1ZzogVGVzdCcsIGxheW91dF92YXJpYW50LCBsYW5ndWFnZXMsIGRlc2MpCi0rICAgICAg ICAgICAgc2ltcGxlX3JlcyA9IHJlLnNlYXJjaChkZXNjLCBzZWxmLl9fc2ltcGxlX2NvbnRlbnRz KQotKyAgICAgICAgICAgIGlmIHNpbXBsZV9yZXMgPT0gTm9uZToKLSsgICAgICAgICAgICAgICAg ZGVueWxpc3RfcmVzID0gTm9uZQotKyAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiBzZWxmLl9f ZGVueWxpc3RfbGluZXM6Ci0rICAgICAgICAgICAgICAgICAgICBkZW55bGlzdF9yZXMgPSByZS5t YXRjaChsaW5lLCBkZXNjKQotKyAgICAgICAgICAgICAgICAgICAgaWYgZGVueWxpc3RfcmVzICE9 IE5vbmU6Ci0rICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSsgICAgICAgICAgICAgICAg aWYgZGVueWxpc3RfcmVzID09IE5vbmU6Ci0rICAgICAgICAgICAgICAgICAgICByZWFzb24gPSBz ZWxmLl9fY2hlY2tfa25vd25faXNzdWVfZW5naW5lX25hbWUoZGVzYykKLSsgICAgICAgICAgICAg ICAgICAgIGlmIHJlYXNvbiAhPSBOb25lOgotKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHNl bGYuX19vcHRpb25fZGVidWc6Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KHJl YXNvbikKLSsgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0rICAgICAgICAgICAgICAgICAgICAg ICAgZXJybnVtID0gZXJybnVtICsgMQotKyAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCcj IEVycm9yOiBub3QgZm91bmQ6ICVzJyAlIGRlc2MsIGZpbGU9c3lzLnN0ZGVycikKLSsgICAgICAg ICAgICAgICAgZWxpZiBzZWxmLl9fb3B0aW9uX2RlYnVnOgotKyAgICAgICAgICAgICAgICAgICAg cHJpbnQoJyMgSW5mbzogJXMgaW4gZGVueWxpc3QnICUgZGVzYykKLSsgICAgICAgIHJldHVybiBl cnJudW0KLSsKLSsKLStkZWYgbWFpbigpOgotKyAgICBUZXN0R25vbWVEZXNrdG9wLnBhcnNlX2Fy Z3MoKQotKyAgICBvYmogPSBUZXN0R25vbWVEZXNrdG9wKCkKLSsgICAgb2JqLnJlYWRfc2ltcGxl KCkKLSsgICAgb2JqLnJlYWRfZGVueWxpc3QoKQotKyAgICBlcnJudW0gPSBvYmoudGVzdF9zaW1w bGVfd2l0aF9nbm9tZSgpCi0rICAgIGlmIGVycm51bSA9PSAwOgotKyAgICAgICAgcHJpbnQoJ1N1 Y2NlZWRlZC4nKQotKyAgICBlbHNlOgotKyAgICAgICAgcHJpbnQoJ0ZhaWxlZC4gJXMgZXJyb3Jz IGZvdW5kLicgJSBlcnJudW0sIGZpbGU9c3lzLnN0ZGVycikKLSsgICAgICAgIHN5cy5leGl0KDEp Ci0rCi0rbWFpbigpCi0tLSAKLTIuNDkuMAotCi1Gcm9tIGIwZWYxZDc5YjdhZTEyODk4MjMzODBh MTk0MzgyMzcyOTkwZWYzMzMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBmdWppd2Fy YXQgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+Ci1EYXRlOiBUaHUsIDUgSnVuIDIwMjUgMTk6 NDU6NTYgKzA5MDAKLVN1YmplY3Q6IFtQQVRDSCA0LzRdIHNyYy90ZXN0czogQWRkIGlidXMta2V5 dmFsCi0KLVRlc3QgaWJ1c19rZXl2YWxfdG9fdW5pY29kZSgpIGFuZCBpYnVzX3VuaWNvZGVfdG9f a2V5dmFsKCkKLQotQlVHPWh0dHBzOi8vZ2l0aHViLmNvbS9pYnVzL2lidXMvaXNzdWVzLzI3NDgK LS0tLQotIHNyYy90ZXN0cy9NYWtlZmlsZS5hbSAgIHwgMTAgKysrKystCi0gc3JjL3Rlc3RzL2li dXMta2V5dmFsLmMgfCA3NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KwotIDIgZmlsZXMgY2hhbmdlZCwgODMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotIGNy ZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdHMvaWJ1cy1rZXl2YWwuYwotCi1kaWZmIC0tZ2l0IGEv c3JjL3Rlc3RzL01ha2VmaWxlLmFtIGIvc3JjL3Rlc3RzL01ha2VmaWxlLmFtCi1pbmRleCA2Mjhi ZWY1Zi4uMTI1YmRiMjYgMTAwNjQ0Ci0tLS0gYS9zcmMvdGVzdHMvTWFrZWZpbGUuYW0KLSsrKyBi L3NyYy90ZXN0cy9NYWtlZmlsZS5hbQotQEAgLTMsNyArMyw3IEBACi0gIyBpYnVzIC0gVGhlIElu cHV0IEJ1cwotICMKLSAjIENvcHlyaWdodCAoYykgMjAwNy0yMDE1IFBlbmcgSHVhbmcgPHNoYXdu LnAuaHVhbmdAZ21haWwuY29tPgotLSMgQ29weXJpZ2h0IChjKSAyMDE1LTIwMjQgVGFrYW8gRnVq aXdhcmEgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+Ci0rIyBDb3B5cmlnaHQgKGMpIDIwMTUt MjAyNSBUYWthbyBGdWppd2FyYSA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KLSAjIENvcHly aWdodCAoYykgMjAwNy0yMDE4IFJlZCBIYXQsIEluYy4KLSAjCi0gIyBUaGlzIGxpYnJhcnkgaXMg ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi1AQCAtNzksNiAr NzksMTAgQEAgVEVTVFNfQyArPSBpYnVzLWtleXByZXNzCi0gZW5kaWYKLSBlbmRpZgotIAotK2lm IEVOQUJMRV9HVEs0Ci0rVEVTVFNfQyArPSBpYnVzLWtleXZhbAotK2VuZGlmCi0rCi0gVEVTVFNf RU5WSVJPTk1FTlQgPSBcCi0gICAgIHRvcF9idWlsZGRpcj0kKHRvcF9idWlsZGRpcikgXAotICAg ICB0b3Bfc3JjZGlyPSQodG9wX3NyY2RpcikgXAotQEAgLTIyNCw2ICsyMjgsMTAgQEAgaWJ1c19r ZXlwcmVzc19MREFERCA9ICQocHJvZ19sZGFkZCkgQEdUSzNfTElCU0AgQFhURVNUX0xJQlNACi0g ZW5kaWYKLSBlbmRpZgotIAotK2lidXNfa2V5dmFsX1NPVVJDRVMgPSBpYnVzLWtleXZhbC5jCi0r aWJ1c19rZXl2YWxfQ0ZMQUdTID0gQEdUSzRfQ0ZMQUdTQAotK2lidXNfa2V5dmFsX0xEQUREID0g JChwcm9nX2xkYWRkKSBAR1RLNF9MSUJTQAotKwotIGlidXNfcmVnaXN0cnlfU09VUkNFUyA9IGli dXMtcmVnaXN0cnkuYwotIGlidXNfcmVnaXN0cnlfTERBREQgPSAkKHByb2dfbGRhZGQpCi0gCi1k aWZmIC0tZ2l0IGEvc3JjL3Rlc3RzL2lidXMta2V5dmFsLmMgYi9zcmMvdGVzdHMvaWJ1cy1rZXl2 YWwuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwLi5mZDJhZmJiYgotLS0t IC9kZXYvbnVsbAotKysrIGIvc3JjL3Rlc3RzL2lidXMta2V5dmFsLmMKLUBAIC0wLDAgKzEsNzQg QEAKLSsvKiAtKi0gbW9kZTogQzsgYy1iYXNpYy1vZmZzZXQ6IDQ7IGluZGVudC10YWJzLW1vZGU6 IG5pbDsgLSotICovCi0rCi0rI2luY2x1ZGUgPGNvbmZpZy5oPgotKwotKyNpbmNsdWRlIDxndGsv Z3RrLmg+Ci0rI2luY2x1ZGUgPGlidXMuaD4KLSsKLSsjaWZkZWYgRU5BQkxFX05MUwotKyNpbmNs dWRlIDxsb2NhbGUuaD4KLSsjZW5kaWYKLSsKLSsjaWZuZGVmIE1BWAotKyNkZWZpbmUgTUFYKGEs IGIpIChhKSA+PSAoYikgPyAoYSkgOiAoYikKLSsjZW5kaWYKLSsKLSsjZGVmaW5lIE1BWF9LRVlW QUwgMHgwMEZGRkZGRgotKyNkZWZpbmUgTUFYX1VOSUNPREUgMHgwMDEwRkZGRgotKwotKwotK3N0 YXRpYyBnYm9vbGVhbgotK3Rlc3Rfa2V5dmFsICh2b2lkKQotK3sKLSsgICAgZ3VpbnQgc2ksIGJp OwotKyAgICBndW5pY2hhciBpYnVzX3VjaCwgZ2RrX3VjaDsKLSsKLSsgICAgZm9yIChzaSA9IDA7 IHNpIDwgTUFYX0tFWVZBTDsgKytzaSkgewotKyAgICAgICAgaWJ1c191Y2ggID0gaWJ1c19rZXl2 YWxfdG9fdW5pY29kZSAoc2kpOwotKyAgICAgICAgZ2RrX3VjaCA9IGdka19rZXl2YWxfdG9fdW5p Y29kZSAoc2kpOwotKyAgICAgICAgZ19hc3NlcnRfY21wdWludCAoaWJ1c191Y2gsID09LCBnZGtf dWNoKTsKLSsKLSsgICAgICAgIGJpID0gc2kgfCAweDAxMDAwMDAwOwotKyAgICAgICAgaWJ1c191 Y2ggID0gaWJ1c19rZXl2YWxfdG9fdW5pY29kZSAoYmkpOwotKyAgICAgICAgZ2RrX3VjaCA9IGdk a19rZXl2YWxfdG9fdW5pY29kZSAoYmkpOwotKyAgICAgICAgZ19hc3NlcnRfY21wdWludCAoaWJ1 c191Y2gsID09LCBnZGtfdWNoKTsKLSsKLSsgICAgICAgIGlmICghKHNpICUgMHgxMDAwMDApKQot KyAgICAgICAgICAgIGdfbWVzc2FnZSAoIjB4JTA4WC8weCUwOFggaXMgZG9uZSIsIHNpLCBNQVhf S0VZVkFMKTsKLSsgICAgfQotKyAgICByZXR1cm4gVFJVRTsKLSt9Ci0rCi0rCi0rc3RhdGljIGdi b29sZWFuCi0rdGVzdF91bmljb2RlICh2b2lkKQotK3sKLSsgICAgZ3VuaWNoYXIgaTsKLSsgICAg Z3VpbnQgaWJ1c19rZXksIGdka19rZXk7Ci0rICAgIGZvciAoaSA9IDA7IGkgPCBNQVhfVU5JQ09E RTsgKytpKSB7Ci0rICAgICAgICBpYnVzX2tleSA9IGlidXNfdW5pY29kZV90b19rZXl2YWwgKGkp OwotKyAgICAgICAgZ2RrX2tleSA9IGdka191bmljb2RlX3RvX2tleXZhbCAoaSk7Ci0rICAgICAg ICBnX2Fzc2VydF9jbXB1aW50IChpYnVzX2tleSwgPT0sIGdka19rZXkpOwotKyAgICAgICAgaWYg KCEoaSAlIDB4MTAwMDAwKSkKLSsgICAgICAgICAgICBnX21lc3NhZ2UgKCIweCUwOFgvMHglMDhY IGlzIGRvbmUiLCBpLCBNQVhfVU5JQ09ERSk7Ci0rICAgIH0KLSsgICAgcmV0dXJuIFRSVUU7Ci0r fQotKwotKwotK2ludAotK21haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCi0rewotKyNpZiAh R1RLX0NIRUNLX1ZFUlNJT04gKDQsIDAsIDApCi0rICAgIGdfbWVzc2FnZSAoIlRoZSBsYXRlc3Qg R1RLIDQgaXMgbmVlZGVkIGZvciB0aGlzIHRlc3QgY2FzZS4iKTsKLSsgICAgcmV0dXJuIDc3Owot KyNlbHNlCi0rI2lmZGVmIEVOQUJMRV9OTFMKLSsgICAgc2V0bG9jYWxlIChMQ19BTEwsICIiKTsK LSsjZW5kaWYKLSsgICAgdGVzdF9rZXl2YWwgKCk7Ci0rICAgIGdfbWVzc2FnZSAoIi0tLS0tLS0t LS0iKTsKLSsgICAgdGVzdF91bmljb2RlICgpOwotKyAgICByZXR1cm4gRVhJVF9TVUNDRVNTOwot KyNlbmRpZgotK30KLS0tIAotMi40OS4wCi0KLUZyb20gMjE5Mzg2YTY3NTAxZTFhMGZiYmU0NWIy OGQ1ZWY1N2UxMmEzYzdkNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IG1hdGl3YXJp IDxtYXRpd2FyaUByZWRoYXQuY29tPgotRGF0ZTogVGh1LCA5IEphbiAyMDI1IDEyOjE3OjI2ICsw NTMwCi1TdWJqZWN0OiBbUEFUQ0ggMS80XSB1aS9ndGszOiBBcHBlbmQgbm9uLWdseXBoIGNoYXJh Y3RlcnMgYXQgbGFzdCBvcmRlciBmb3IgcGFydGlhbCBhbm5vdGF0aW9ucwotCi1CVUc9cmhieiMy MjY3NjEzCi0tLS0KLSB1aS9ndGszL2Vtb2ppZXIudmFsYSB8IDEwNiArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKy0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDg3IGluc2VydGlv bnMoKyksIDE5IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvdWkvZ3RrMy9lbW9qaWVyLnZh bGEgYi91aS9ndGszL2Vtb2ppZXIudmFsYQotaW5kZXggOGM1MjdlY2EuLmNkNjBmYzA4IDEwMDY0 NAotLS0tIGEvdWkvZ3RrMy9lbW9qaWVyLnZhbGEKLSsrKyBiL3VpL2d0azMvZW1vamllci52YWxh Ci1AQCAtMTY1LDYgKzE2NSw1MyBAQCBwdWJsaWMgY2xhc3MgSUJ1c0Vtb2ppZXIgOiBHdGsuQXBw bGljYXRpb25XaW5kb3cgewotICAgICAgICAgICAgICAgICBzZXRfbGFiZWwodGV4dCk7Ci0gICAg ICAgICB9Ci0gICAgIH0KLSsgICAgLyoqCi0rICAgICAqIEVDaGVja1Zpc2libGVMYWJlbDoKLSsg ICAgICogQ3JlYXRlIGEgbGFiZWwgd2l0aCB0aGUgUGFuZ28gY29udGV4dCBmb3IgdGhlIGZvbnQg Z2x5cGggY2hlY2tpbmcuCi0rICAgICAqLwotKyAgICBwcml2YXRlIGNsYXNzIEVDaGVja1Zpc2li bGVMYWJlbCA6IEVXaGl0ZUxhYmVsIHsKLSsgICAgICAgIHByaXZhdGUgUGFuZ28uTGF5b3V0IGxh eW91dDsKLSsgICAgICAgIHB1YmxpYyBFQ2hlY2tWaXNpYmxlTGFiZWwoc3RyaW5nIHRleHQgPSAi IikgewotKyAgICAgICAgICAgIEdMaWIuT2JqZWN0KAotKyAgICAgICAgICAgICAgICBuYW1lIDog IklCdXNFbW9qaWVyQ2hlY2tWaXNpYmxlTGFiZWwiCi0rICAgICAgICAgICAgKTsKLSsgICAgICAg ICAgICBpZiAodGV4dCAhPSAiIikKLSsgICAgICAgICAgICAgICAgc2V0X2xhYmVsKHRleHQpOwot KyAgICAgICAgICAgIHZhciBwYW5nb19jb250ZXh0ID0gZ2V0X3BhbmdvX2NvbnRleHQoKTsKLSsg ICAgICAgICAgICBsYXlvdXQgPSBuZXcgUGFuZ28uTGF5b3V0KHBhbmdvX2NvbnRleHQpOwotKyAg ICAgICAgICAgIHZhciBmb250X2Rlc2MgPQotKyAgICAgICAgICAgICAgICAgICAgUGFuZ28uRm9u dERlc2NyaXB0aW9uLmZyb21fc3RyaW5nKG1fZW1vamlfZm9udF9mYW1pbHkpOwotKyAgICAgICAg ICAgIGxheW91dC5zZXRfZm9udF9kZXNjcmlwdGlvbihmb250X2Rlc2MpOwotKyAgICAgICAgfQot KyAgICAgICAgcHVibGljIGJvb2wgaXNfZ2x5cGhfdmlzaWJsZShzdHJpbmcgZW1vamkpIHsKLSsg ICAgICAgICAgICBzdHJpbmcgY2xlYW5lZF9lbW9qaSA9IGVtb2ppCi0rICAgICAgICAgICAgICAg IC5yZXBsYWNlKCJcdUZFMEUiLCAiIikKLSsgICAgICAgICAgICAgICAgLnJlcGxhY2UoIlx1RkUw RiIsICIiKTsKLSsgICAgICAgICAgICBpZiAoY2xlYW5lZF9lbW9qaSA9PSAiIikKLSsgICAgICAg ICAgICAgICAgcmV0dXJuIGZhbHNlOwotKyAgICAgICAgICAgIGxheW91dC5zZXRfdGV4dChjbGVh bmVkX2Vtb2ppLCAtMSk7Ci0rICAgICAgICAgICAgdW5vd25lZCBQYW5nby5MYXlvdXRMaW5lPyBs aW5lID0gbGF5b3V0LmdldF9saW5lX3JlYWRvbmx5KDApOwotKyAgICAgICAgICAgIGlmIChsaW5l ID09IG51bGwpCi0rICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSsgICAgICAgICAgICBQ YW5nby5SZWN0YW5nbGUgaW5rX3JlY3Q7Ci0rICAgICAgICAgICAgUGFuZ28uUmVjdGFuZ2xlIGxv Z2ljYWxfcmVjdDsKLSsgICAgICAgICAgICBsaW5lLmdldF9waXhlbF9leHRlbnRzKG91dCBpbmtf cmVjdCwgb3V0IGxvZ2ljYWxfcmVjdCk7Ci0rICAgICAgICAgICAgaWYgKGlua19yZWN0LndpZHRo IDw9IDAgfHwgaW5rX3JlY3QuaGVpZ2h0IDw9IDApCi0rICAgICAgICAgICAgICAgIHJldHVybiBm YWxzZTsKLSsgICAgICAgICAgICAvLyBDaGVjayBpZiBzaW5nbGUgZ2x5cGggaXMgYXZhaWxhYmxl IGZvciBzaW5nbGUgY2hhcmFjdGVycwotKyAgICAgICAgICAgIGlmIChjbGVhbmVkX2Vtb2ppLmNo YXJfY291bnQoKSA9PSAxKSB7Ci0rICAgICAgICAgICAgICAgIHVub3duZWQgR0xpYi5TTGlzdDxQ YW5nby5HbHlwaEl0ZW0+PyBydW5zID0gbGluZS5ydW5zOwotKyAgICAgICAgICAgICAgICBpZiAo cnVucyAhPSBudWxsICYmIHJ1bnMubGVuZ3RoKCkgPT0gMSkgewotKyAgICAgICAgICAgICAgICAg ICAgdmFyIHJ1biA9IHJ1bnMuZGF0YTsKLSsgICAgICAgICAgICAgICAgICAgIHZhciBmb250ID0g cnVuLml0ZW0uYW5hbHlzaXMuZm9udDsKLSsgICAgICAgICAgICAgICAgICAgIHVuaWNoYXIgY2gg PSBjbGVhbmVkX2Vtb2ppLmdldF9jaGFyKCk7Ci0rICAgICAgICAgICAgICAgICAgICBpZiAoIWZv bnQuaGFzX2NoYXIoY2gpKQotKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK LSsgICAgICAgICAgICAgICAgfQotKyAgICAgICAgICAgIH0KLSsgICAgICAgICAgICByZXR1cm4g dHJ1ZTsKLSsgICAgICAgIH0KLSsgICAgfQotICAgICBwcml2YXRlIGNsYXNzIEVQYWRkZWRMYWJl bCA6IEd0ay5MYWJlbCB7Ci0gICAgICAgICBwdWJsaWMgRVBhZGRlZExhYmVsKHN0cmluZyAgICAg ICAgICB0ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHdGsuQWxpZ24gICAgICAg YWxpZ24pIHsKLUBAIC0xMjY4LDEyICsxMzE1LDMwIEBAIHB1YmxpYyBjbGFzcyBJQnVzRW1vamll ciA6IEd0ay5BcHBsaWNhdGlvbldpbmRvdyB7Ci0gICAgIH0KLSAKLSAKLSsgICAgcHJpdmF0ZSBk ZWxlZ2F0ZSB2b2lkIENoZWNrR2x5cGgoc3RyaW5nICAgICAgICAgICAgICAgICAgZW1vamksCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZiBHTGliLlNMaXN0PHN0cmlu Zz4/IGVtb2ppcywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCAg ICAgICAgICAgICAgICAgICAgZG9fc29ydCk7Ci0rCi0gICAgIHByaXZhdGUgR0xpYi5TTGlzdDxz dHJpbmc+PwotICAgICBsb29rdXBfZW1vamlzX2Zyb21fYW5ub3RhdGlvbihzdHJpbmcgYW5ub3Rh dGlvbikgewotICAgICAgICAgR0xpYi5TTGlzdDxzdHJpbmc+PyB0b3RhbF9lbW9qaXMgPSBudWxs OwotKyAgICAgICAgR0xpYi5TTGlzdDxzdHJpbmc+PyBub25fZ2x5cGhfZW1vamlzID0gbnVsbDsK LSAgICAgICAgIHVub3duZWQgR0xpYi5TTGlzdDxzdHJpbmc+PyBzdWJfZW1vamlzID0gbnVsbDsK LSAgICAgICAgIHVub3duZWQgR0xpYi5TTGlzdDx1bmljaGFyPj8gc3ViX2V4YWN0X3VuaWNvZGVz ID0gbnVsbDsKLSAgICAgICAgIHVub3duZWQgR0xpYi5TTGlzdDx1bmljaGFyPj8gc3ViX3VuaWNv ZGVzID0gbnVsbDsKLSsgICAgICAgIHZhciBsYWJlbCA9IG5ldyBFQ2hlY2tWaXNpYmxlTGFiZWwo KTsKLSsgICAgICAgIC8vIHZhbGFjIHdhcm5pbmcgZm9yIGlubmVyIGZ1bmM6IGxvY2FsIGZ1bmN0 aW9ucyBhcmUgZXhwZXJpbWVudGFsCi0rICAgICAgICBDaGVja0dseXBoIGNoZWNrX2lmX25vbl9n bHlwaF9lbW9qaXMgPSAoZW1vamksIHJlZiBlbW9qaXMsIGRvX3NvcnQpID0+IHsKLSsgICAgICAg ICAgICBpZiAobGFiZWwuaXNfZ2x5cGhfdmlzaWJsZShlbW9qaSkpIHsKLSsgICAgICAgICAgICAg ICAgaWYgKGRvX3NvcnQpCi0rICAgICAgICAgICAgICAgICAgICBlbW9qaXMuaW5zZXJ0X3NvcnRl ZChlbW9qaSwgR0xpYi5zdHJjbXApOwotKyAgICAgICAgICAgICAgICBlbHNlCi0rICAgICAgICAg ICAgICAgICAgICBlbW9qaXMuYXBwZW5kKGVtb2ppKTsKLSsgICAgICAgICAgICB9IGVsc2UgaWYg KG5vbl9nbHlwaF9lbW9qaXMuZmluZF9jdXN0b20oZW1vamksCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaWIuc3RyY21wKSA9PSBudWxsKSB7 Ci0rICAgICAgICAgICAgICAgIG5vbl9nbHlwaF9lbW9qaXMuYXBwZW5kKGVtb2ppKTsKLSsgICAg ICAgICAgICB9Ci0rICAgICAgICB9OwotICAgICAgICAgaW50IGxlbmd0aCA9IGFubm90YXRpb24u bGVuZ3RoOwotICAgICAgICAgaWYgKG1faGFzX3BhcnRpYWxfbWF0Y2ggJiYgbGVuZ3RoID49IG1f cGFydGlhbF9tYXRjaF9sZW5ndGgpIHsKLSAgICAgICAgICAgICBHTGliLlNMaXN0PHN0cmluZz4/ IHNvcnRlZF9lbW9qaXMgPSBudWxsOwotQEAgLTEzMDMsNDkgKzEzNjgsNTIgQEAgcHVibGljIGNs YXNzIElCdXNFbW9qaWVyIDogR3RrLkFwcGxpY2F0aW9uV2luZG93IHsKLSAgICAgICAgICAgICAg ICAgc3ViX2Vtb2ppcyA9IG1fYW5ub3RhdGlvbl90b19lbW9qaXNfZGljdC5sb29rdXAoa2V5KTsK LSAgICAgICAgICAgICAgICAgZm9yZWFjaCAodW5vd25lZCBzdHJpbmcgZW1vamkgaW4gc3ViX2Vt b2ppcykgewotICAgICAgICAgICAgICAgICAgICAgaWYgKHRvdGFsX2Vtb2ppcy5maW5kX2N1c3Rv bShlbW9qaSwgR0xpYi5zdHJjbXApID09IG51bGwpIHsKLS0gICAgICAgICAgICAgICAgICAgICAg ICBzb3J0ZWRfZW1vamlzLmluc2VydF9zb3J0ZWQoZW1vamksIEdMaWIuc3RyY21wKTsKLSsgICAg ICAgICAgICAgICAgICAgICAgICBjaGVja19pZl9ub25fZ2x5cGhfZW1vamlzKGVtb2ppLAotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmIHNvcnRl ZF9lbW9qaXMsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB0cnVlKTsKLSAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgfQot ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICBmb3JlYWNoIChzdHJpbmcgZW1vamkgaW4gc29y dGVkX2Vtb2ppcykgewotLSAgICAgICAgICAgICAgICBpZiAodG90YWxfZW1vamlzLmZpbmRfY3Vz dG9tKGVtb2ppLCBHTGliLnN0cmNtcCkgPT0gbnVsbCkgewotKyAgICAgICAgICAgICAgICBpZiAo dG90YWxfZW1vamlzLmZpbmRfY3VzdG9tKGVtb2ppLCBHTGliLnN0cmNtcCkgPT0gbnVsbCkKLSAg ICAgICAgICAgICAgICAgICAgIHRvdGFsX2Vtb2ppcy5hcHBlbmQoZW1vamkpOwotLSAgICAgICAg ICAgICAgICB9Ci0gICAgICAgICAgICAgfQotICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg ICBzdWJfZW1vamlzID0gbV9hbm5vdGF0aW9uX3RvX2Vtb2ppc19kaWN0Lmxvb2t1cChhbm5vdGF0 aW9uKTsKLSAgICAgICAgICAgICBmb3JlYWNoICh1bm93bmVkIHN0cmluZyBlbW9qaSBpbiBzdWJf ZW1vamlzKQotLSAgICAgICAgICAgICAgICB0b3RhbF9lbW9qaXMuYXBwZW5kKGVtb2ppKTsKLSsg ICAgICAgICAgICAgICAgY2hlY2tfaWZfbm9uX2dseXBoX2Vtb2ppcyhlbW9qaSwgcmVmIHRvdGFs X2Vtb2ppcywgZmFsc2UpOwotICAgICAgICAgfQotICAgICAgICAgc3ViX2V4YWN0X3VuaWNvZGVz ID0gbV9uYW1lX3RvX3VuaWNvZGVzX2RpY3QubG9va3VwKGFubm90YXRpb24pOwotICAgICAgICAg Zm9yZWFjaCAodW5pY2hhciBjb2RlIGluIHN1Yl9leGFjdF91bmljb2RlcykgewotICAgICAgICAg ICAgIHN0cmluZyBjaCA9IGNvZGUudG9fc3RyaW5nKCk7Ci0tICAgICAgICAgICAgaWYgKHRvdGFs X2Vtb2ppcy5maW5kX2N1c3RvbShjaCwgR0xpYi5zdHJjbXApID09IG51bGwpIHsKLS0gICAgICAg ICAgICAgICAgdG90YWxfZW1vamlzLmFwcGVuZChjaCk7Ci0tICAgICAgICAgICAgfQotKyAgICAg ICAgICAgIGlmICh0b3RhbF9lbW9qaXMuZmluZF9jdXN0b20oY2gsIEdMaWIuc3RyY21wKSA9PSBu dWxsKQotKyAgICAgICAgICAgICAgICBjaGVja19pZl9ub25fZ2x5cGhfZW1vamlzKGNoLCByZWYg dG90YWxfZW1vamlzLCBmYWxzZSk7Ci0gICAgICAgICB9Ci0gICAgICAgICBpZiAobGVuZ3RoID49 IG1fcGFydGlhbF9tYXRjaF9sZW5ndGgpIHsKLSAgICAgICAgICAgICBHTGliLlNMaXN0PHN0cmlu Zz4/IHNvcnRlZF91bmljb2RlcyA9IG51bGw7Ci0gICAgICAgICAgICAgZm9yZWFjaCAodW5vd25l ZCBzdHJpbmcga2V5IGluIG1fbmFtZV90b191bmljb2Rlc19kaWN0LmdldF9rZXlzKCkpIHsKLS0g ICAgICAgICAgICAgICAgYm9vbCBtYXRjaGVkID0gZmFsc2U7Ci0tICAgICAgICAgICAgICAgIGlm IChrZXkuaW5kZXhfb2YoYW5ub3RhdGlvbikgPj0gMCkKLS0gICAgICAgICAgICAgICAgICAgICAg ICBtYXRjaGVkID0gdHJ1ZTsKLS0gICAgICAgICAgICAgICAgaWYgKCFtYXRjaGVkKQotLSAgICAg ICAgICAgICAgICAgICAgY29udGludWU7Ci0tICAgICAgICAgICAgICAgIHN1Yl91bmljb2RlcyA9 IG1fbmFtZV90b191bmljb2Rlc19kaWN0Lmxvb2t1cChrZXkpOwotLSAgICAgICAgICAgICAgICBm b3JlYWNoICh1bmljaGFyIGNvZGUgaW4gc3ViX3VuaWNvZGVzKSB7Ci0tICAgICAgICAgICAgICAg ICAgICBzdHJpbmcgY2ggPSBjb2RlLnRvX3N0cmluZygpOwotLSAgICAgICAgICAgICAgICAgICAg aWYgKHNvcnRlZF91bmljb2Rlcy5maW5kX2N1c3RvbShjaCwgR0xpYi5zdHJjbXApID09IG51bGwp IHsKLS0gICAgICAgICAgICAgICAgICAgICAgICBzb3J0ZWRfdW5pY29kZXMuaW5zZXJ0X3NvcnRl ZChjaCwgR0xpYi5zdHJjbXApOwotKyAgICAgICAgICAgICAgICBpZiAoa2V5LmluZGV4X29mKGFu bm90YXRpb24pID49IDApIHsKLSsgICAgICAgICAgICAgICAgICAgIHN1Yl91bmljb2RlcyA9IG1f bmFtZV90b191bmljb2Rlc19kaWN0Lmxvb2t1cChrZXkpOwotKyAgICAgICAgICAgICAgICAgICAg Zm9yZWFjaCAodW5pY2hhciBjb2RlIGluIHN1Yl91bmljb2RlcykgewotKyAgICAgICAgICAgICAg ICAgICAgICAgIHN0cmluZyBjaCA9IGNvZGUudG9fc3RyaW5nKCk7Ci0rICAgICAgICAgICAgICAg ICAgICAgICAgaWYgKHNvcnRlZF91bmljb2Rlcy5maW5kX2N1c3RvbShjaCwKLSsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaWIuc3RyY21w KSA9PSBudWxsKSB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrX2lmX25vbl9n bHlwaF9lbW9qaXMoY2gsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcmVmIHNvcnRlZF91bmljb2RlcywKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKTsKLSsgICAgICAgICAgICAg ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIH0K LSAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgZm9yZWFjaCAoc3RyaW5nIGNoIGluIHNvcnRl ZF91bmljb2RlcykgewotLSAgICAgICAgICAgICAgICBpZiAodG90YWxfZW1vamlzLmZpbmRfY3Vz dG9tKGNoLCBHTGliLnN0cmNtcCkgPT0gbnVsbCkgewotKyAgICAgICAgICAgICAgICBpZiAodG90 YWxfZW1vamlzLmZpbmRfY3VzdG9tKGNoLCBHTGliLnN0cmNtcCkgPT0gbnVsbCkKLSAgICAgICAg ICAgICAgICAgICAgIHRvdGFsX2Vtb2ppcy5hcHBlbmQoY2gpOwotLSAgICAgICAgICAgICAgICB9 Ci0gICAgICAgICAgICAgfQotICAgICAgICAgfQotKyAgICAgICAgZm9yZWFjaCAoc3RyaW5nIGVt b2ppIGluIG5vbl9nbHlwaF9lbW9qaXMpIHsKLSsgICAgICAgICAgICBpZiAodG90YWxfZW1vamlz LmZpbmRfY3VzdG9tKGVtb2ppLCBHTGliLnN0cmNtcCkgPT0gbnVsbCkKLSsgICAgICAgICAgICAg ICAgdG90YWxfZW1vamlzLmFwcGVuZChlbW9qaSk7Ci0rICAgICAgICB9Ci0gICAgICAgICBpZiAo IW1fbG9hZGVkX3VuaWNvZGUgJiYgbV91bmljb2RlX2Rlc2VyaWFsaXplX3VuaWNvZGVfc2lnbmFs X2lkID09IDApIHsKLSAgICAgICAgICAgICBtX3VuaWNvZGVfZGVzZXJpYWxpemVfdW5pY29kZV9z aWduYWxfaWQgPQotICAgICAgICAgICAgICAgICAgICAgbV91bmljb2RlX3Byb2dyZXNzX29iamVj dC5kZXNlcmlhbGl6ZV91bmljb2RlLmNvbm5lY3QoCi0tLSAKLTIuNDkuMAotCi1Gcm9tIGY5NTky ZjMwYTJjMmFjOWYzYjMzMWVkZGYwMDg0NWQ5NTg0ZTNiZGMgTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCi1Gcm9tOiBmdWppd2FyYXQgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+Ci1EYXRlOiBG cmksIDEzIEp1biAyMDI1IDE1OjU3OjM3ICswOTAwCi1TdWJqZWN0OiBbUEFUQ0ggMi80XSB1aS9n dGszOiBGaXggUGFnZVVwL1BhZ2VEb3duIGJ1dHRvbnMgd2l0aCBoaWRkaW5nIGNhbmRpZGF0ZSBw b3B1cAotCi1HdGsuV2lkZ2V0LnNob3dfYWxsKCkgY2hhbmdlcyB0aGUgdmlzaWJpbGl0aWVzIG9m IHRoZSBjaGlsZCB3aWRnZXRzCi1hbmQgaXQncyBub3QgZ29vZCBpbiBjYXNlIHRoYXQgdGhlIHBh cmVudCB2aXNpYmlsaXR5IGRlcGVuZHMgb24gdGhlCi12aXNpYmlsaXRpZXMgb2YgY2hpbGQgd2lk Z2V0cy4gQWxzbyB1c2luZyBub19zaG93X2FsbCBwcm9wZXJ0eSBjb3VsZAotaW50cm9kdWNlIHRo ZSBtb3JlIGNvbXBsaWNhdGVkIGxvZ2ljIHRvIHRoZSBjYW5kaWRhdGUgcG9wdXAuCi0KLUJVRz1o dHRwczovL2dpdGh1Yi5jb20vaWJ1cy9pYnVzL2lzc3Vlcy8yNzU3Ci1GaXhlczogaHR0cHM6Ly9n aXRodWIuY29tL2lidXMvaWJ1cy9jb21taXQvNmFjNjE4OAotRml4ZXM6IGh0dHBzOi8vZ2l0aHVi LmNvbS9pYnVzL2lidXMvY29tbWl0L2Q1ZTZlNzEKLS0tLQotIHVpL2d0azMvY2FuZGlkYXRlcGFu ZWwudmFsYSB8IDcgKysrKystLQotIHVpL2d0azMvcGFuZWwudmFsYSAgICAgICAgICB8IDQgKyst LQotIDIgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1k aWZmIC0tZ2l0IGEvdWkvZ3RrMy9jYW5kaWRhdGVwYW5lbC52YWxhIGIvdWkvZ3RrMy9jYW5kaWRh dGVwYW5lbC52YWxhCi1pbmRleCBhNDEzN2YwNS4uM2NjMmMwODYgMTAwNjQ0Ci0tLS0gYS91aS9n dGszL2NhbmRpZGF0ZXBhbmVsLnZhbGEKLSsrKyBiL3VpL2d0azMvY2FuZGlkYXRlcGFuZWwudmFs YQotQEAgLTIxNCw3ICsyMTQsNiBAQCBwdWJsaWMgY2xhc3MgQ2FuZGlkYXRlUGFuZWwgOiBHdGsu Qm94ewotICAgICAgICAgbV9zZXRfcHJlZWRpdF90ZXh0X2lkID0KLSAgICAgICAgICAgICAgICAg VGltZW91dC5hZGQoMTAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSA9PiB7Ci0t ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3dhcm5pbmcoInRlc3Qgc2V0X3ByZWVk aXRfdGV4dF9yZWFsIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3NldF9w cmVlZGl0X3RleHRfaWQgPSAwOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0 X3ByZWVkaXRfdGV4dF9yZWFsKHRleHQsIGN1cnNvcik7Ci0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICByZXR1cm4gU291cmNlLlJFTU9WRTsKLUBAIC00ODAsNyArNDc5LDExIEBAIHB1 YmxpYyBjbGFzcyBDYW5kaWRhdGVQYW5lbCA6IEd0ay5Cb3h7Ci0gICAgIH0KLSAKLSAgICAgcHVi bGljIG5ldyB2b2lkIHNob3coKSB7Ci0tICAgICAgICBtX3RvcGxldmVsLnNob3dfYWxsKCk7Ci0r ICAgICAgICAvLyBtX3RvcGxldmVsLnNob3dfYWxsKCkgY2hhbmdlcyBtX2NhbmRpZGF0ZV9hcmVh LmdldF92aXNpYmxlKCkKLSsgICAgICAgIC8vIGluIHVwZGF0ZV9yZWFsKCkgc28gc2hvdygpIGlz IGp1c3QgdXNlZC4gVXNpbmcgbm9fc2hvd19hbGwKLSsgICAgICAgIC8vIHByb3BlcnR5IGZvciBt X2NhbmRpZGF0ZV9hcmVhIHdvdWxkIGludHJvZHVjZSB0aGUgbW9yZQotKyAgICAgICAgLy8gY29t cGxpY2F0ZWQgbG9naWMuCi0rICAgICAgICBtX3RvcGxldmVsLnNob3coKTsKLSAgICAgfQotIAot ICAgICBwdWJsaWMgbmV3IHZvaWQgaGlkZSgpIHsKLWRpZmYgLS1naXQgYS91aS9ndGszL3BhbmVs LnZhbGEgYi91aS9ndGszL3BhbmVsLnZhbGEKLWluZGV4IGQ2NWZmYmIzLi42MWVlMmU0MyAxMDA2 NDQKLS0tLSBhL3VpL2d0azMvcGFuZWwudmFsYQotKysrIGIvdWkvZ3RrMy9wYW5lbC52YWxhCi1A QCAtMjE4LDcgKzIxOCw3IEBAIGNsYXNzIFBhbmVsIDogSUJ1cy5QYW5lbFNlcnZpY2UgewotIAot ICNpZiBVU0VfR0RLX1dBWUxBTkQKLSAgICAgcHJpdmF0ZSBDYW5kaWRhdGVQYW5lbCBnZXRfYWN0 aXZlX2NhbmRpZGF0ZV9wYW5lbCgpIHsKLS0gICAgICAgIGlmIChtX3dheWxhbmRfb2JqZWN0X3Bh dGggPT0gbnVsbCkgewotKyAgICAgICAgaWYgKG1faXNfd2F5bGFuZCAmJiBtX3dheWxhbmRfb2Jq ZWN0X3BhdGggPT0gbnVsbCkgewotICAgICAgICAgICAgIGlmIChtX2NhbmRpZGF0ZV9wYW5lbF94 MTEgPT0gbnVsbCkgewotICAgICAgICAgICAgICAgICBtX2NhbmRpZGF0ZV9wYW5lbF94MTEgPSBj YW5kaWRhdGVfcGFuZWxfbmV3KHRydWUpOwotICAgICAgICAgICAgICAgICBzZXRfdXNlX2dseXBo X2Zyb21fZW5naW5lX2xhbmcoKTsKLUBAIC0yMzMsNyArMjMzLDcgQEAgY2xhc3MgUGFuZWwgOiBJ QnVzLlBhbmVsU2VydmljZSB7Ci0gICAgIH0KLSAKLSAgICAgcHJpdmF0ZSBTd2l0Y2hlciBnZXRf YWN0aXZlX3N3aXRjaGVyKCkgewotLSAgICAgICAgaWYgKG1fd2F5bGFuZF9vYmplY3RfcGF0aCA9 PSBudWxsKSB7Ci0rICAgICAgICBpZiAobV9pc193YXlsYW5kICYmIG1fd2F5bGFuZF9vYmplY3Rf cGF0aCA9PSBudWxsKSB7Ci0gICAgICAgICAgICAgaWYgKG1fc3dpdGNoZXJfeDExID09IG51bGwp Ci0gICAgICAgICAgICAgICAgIG1fc3dpdGNoZXJfeDExID0gc3dpdGNoZXJfbmV3KHRydWUpOwot ICAgICAgICAgICAgIHJldHVybiBtX3N3aXRjaGVyX3gxMTsKLS0tIAotMi40OS4wCi0KLUZyb20g MTUyYTU4YjVlOTBkMWI2YTk0YjFjMDljZDU3NzgwODBlMDc2Mjk0OSBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKLUZyb206IGZ1aml3YXJhdCA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KLURh dGU6IFNhdCwgMTQgSnVuIDIwMjUgMTU6MTU6NTggKzA5MDAKLVN1YmplY3Q6IFtQQVRDSCAzLzRd IGNvbmZpZ3VyZTogQWRkIHdhcm5pbmcgdG8gcnVuIGBtYWtlIC1DIHVpL2d0azMgbWFpbnRhaW5l ci1jbGVhbi1nZW5lcmljYAotCi1XaGVuIHVzZXJzIHNwZWNpZnkgLS1kaXNhYmxlLWFwcGluZGlj YXRvciwgLS1kaXNhYmxlLXhpbSwKLS0tZGlzYWJsZS1ndGszLXdheWxhbmQsIC0tZGlzYWJsZS1l bW9qaS1kaWN0IG9wdGlvbnMgZm9yIGNvbmZpZ3VyZSwKLXRoZSBiZWhhdmlvciBlZmZlY3RzIFZB TEEgZmlsZXMgaW4gaWJ1cy91aS9ndGszIGFuZCBuZWVkIHRvCi1yZWdlbmVyYXRlIEMgZmlsZXMg YnV0IG1hbnkgdXNlcnMgZG9uJ3Qga25vdyB0aGUgc3RlcHMgc28gYWRkZWQKLWEgd2FybmluZyBp biB0aGUgY29uZmlndXJlIG91dHB1dCB0byBpbmZvcm0gdG8gcnVuCi1gbWFrZSAtQyB1aS9ndGsz IG1haW50YWluZXItY2xlYW4tZ2VuZXJpY2Agb2YgdGhlIHVzZXJzLgotCi1CVUc9aHR0cHM6Ly9n aXRodWIuY29tL2lidXMvaWJ1cy9pc3N1ZXMvMjc2NwotLS0tCi0gY29uZmlndXJlLmFjIHwgMjkg KysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KLSAxIGZpbGUgY2hhbmdlZCwgMjggaW5zZXJ0 aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29u ZmlndXJlLmFjCi1pbmRleCBhNWU0YTQ0Yy4uOGEyYjMyZDcgMTAwNjQ0Ci0tLS0gYS9jb25maWd1 cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTg4OSw2ICs4ODksMzAgQEAgQUNfU1VCU1Qo WEtCQ09ORklHX0JBU0UpCi0gCi0gQUNfU1VCU1QoW0dEQlVTX0NPREVHRU5dLCBbYCRQS0dfQ09O RklHIC0tdmFyaWFibGUgZ2RidXNfY29kZWdlbiBnaW8tMi4wYF0pCi0gCi0rT1VUUFVUX1RBSUw9 JycKLStIQVNfT1VUUFVUX1RBSUw9MAotK0FTX0lGKFt0ZXN0IHgiJGVuYWJsZV91aSIgIT0geCJu byIgJiYKLSsgICAgICAgdGVzdCAtZiAiJGFjX2NvbmZkaXIvdWkvZ3RrMy9hcHBsaWNhdGlvbi5j IgotKyAgICAgIF0sCi0rICAgICAgW0FTX0lGKFt0ZXN0IHgiJGVuYWJsZV9hcHBpbmRpY2F0b3Ii ID0geCJubyIgfHwKLSsgICAgICAgICAgICAgIHRlc3QgeCIkZW5hYmxlX3hpbSIgPSB4Im5vIiB8 fAotKyAgICAgICAgICAgICAgdGVzdCB4IiRlbmFibGVfZ2RrM193YXlsYW5kIiAhPSB4InllcyIg fHwKLSsgICAgICAgICAgICAgIHRlc3QgeCIkZW5hYmxlX2Vtb2ppX2RpY3QiID09IHgibm8iCi0r ICAgICAgICAgICAgIF0sCi0rICAgICAgICAgICAgIFtPVVRQVVRfVEFJTD0iJE9VVFBVVF9UQUlM Ci0rWW91IGludm9rZWQgdGhlIFxgY29uZmlndXJlXGAgc2NyaXB0IHdpdGggZWl0aGVyIGRpc2Fi bGVkIGFwcGluaWNhdG9yLCB4aW0sCi0rZ2RrM193YXlsYW5kIG9yIGVtb2ppX2RpY3Qgb3B0aW9u IHNvIHlvdSBoYXZlIHRvIHJ1bgotK1xgbWFrZSAtQyB1aS9ndGszIG1haW50YWluZXItY2xlYW4t Z2VuZXJpY1xgIHRvIHJlZ2VuZXJhdGUgQyBmaWxlcyB3aXRoIFZBTEEKLStiZWZvcmUgcnVuIFxg bWFrZVxgLgotKyIKLSsgICAgICAgICAgICAgIEhBU19PVVRQVVRfVEFJTD0xCi0rICAgICAgICAg ICAgIF0sCi0rICAgICAgICAgICAgIFtdKQotKyAgICAgIF0sCi0rICAgICAgW10KLSspCi0rCi0r Ci0gIyBPVVRQVVQgZmlsZXMKLSBBQ19DT05GSUdfRklMRVMoWwotIHBvL01ha2VmaWxlLmluCi1A QCAtOTkyLDQgKzEwMTYsNyBAQCBCdWlsZCBvcHRpb25zOgotICAgUnVuIHRlc3QgY2FzZXMgICAg ICAgICAgICAgICAgJGVuYWJsZV90ZXN0cwotICAgSW5zdGFsbCB0ZXN0cyAgICAgICAgICAgICAg ICAgJGVuYWJsZV9pbnN0YWxsX3Rlc3RzCi0gXSkKLS0KLStBU19JRihbdGVzdCAkSEFTX09VVFBV VF9UQUlMIC1lcSAxXSwKLSsgICAgICBbQUNfTVNHX1dBUk4oWyRPVVRQVVRfVEFJTF0pXSwKLSsg ICAgICBbXQotKykKLS0tIAotMi40OS4wCi0KLUZyb20gZDZiOTUwODVlYzZhZWFlYjVhZjljYzNk OTg3MjM0OGJhMzU5NjM4ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IGZ1aml3YXJh dCA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMjUgSnVuIDIwMjUgMjE6 NTY6NTEgKzA5MDAKLVN1YmplY3Q6IFtQQVRDSCA0LzRdIGF1dG9nZW46IERvIG5vdCByZXF1aXJl IGd0ay1kb2MKLQotU2luY2UgdGhlIGxpY2Vuc2Ugb2YgZ3RrLWRvYy5tYWtlIGFuZCBtNC9ndGst ZG9jLm00IGlzIEdQTCBidXQgbm90IExHUEwsCi1JQnVzIGRvZXMgbm90IHNhdmUgdGhlc2UgZmls ZXMgYnV0IGFkZCBhIGR1bW15IGZpbGUgbTQvZ3RrLWRvYy1kdW1teS5tNC4KLU5vdyB5b3UgY2Fu IHJ1biBgZW52IEdUS0RPQ0laRT1lY2hvIC4vYXV0b2dlbi5zaCAtLWRpc2FibGUtZ3RrLWRvY2Au Ci0KLUJVRz1odHRwczovL2dpdGh1Yi5jb20vaWJ1cy9pYnVzL2lzc3Vlcy8yNzcwCi0tLS0KLSBh dXRvZ2VuLnNoIHwgNTUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKystLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDUxIGluc2VydGlvbnMoKyksIDQgZGVsZXRp b25zKC0pCi0KLWRpZmYgLS1naXQgYS9hdXRvZ2VuLnNoIGIvYXV0b2dlbi5zaAotaW5kZXggY2Rl OGFhZWYuLjFhZTJjY2M0IDEwMDc1NQotLS0tIGEvYXV0b2dlbi5zaAotKysrIGIvYXV0b2dlbi5z aAotQEAgLTUsNiArNSw3IEBACi0gOiAke3NyY2Rpcjo9Ln0KLSA6ICR7U0FWRV9ESVNUX0ZJTEVT Oj0wfQotIDogJHtNQUtFOj1tYWtlfQotKzogJHtHVEtET0NJWkU6PWd0a2RvY2l6ZX0KLSAKLSBv bGRkaXI9JChwd2QpCi0gIyBzaGVsbGNoZWNrIGRpc2FibGU9U0MyMDE2Ci1AQCAtMzMsNyArMzQs MTIgQEAgY2QgIiRzcmNkaXIiCi0gICAgIGV4aXQgMQotIH0KLSAKLS0odGVzdCAkKGdyZXAgLXEg Il5HVEtfRE9DX0NIRUNLIiBjb25maWd1cmUuYWMpKSB8fCB7Ci0rQ09ORklHRkxBR1M9IiRAIgot Kyh0ZXN0ICJ4JE5PQ09ORklHVVJFIiA9ICJ4IiApICYmCi0rJChncmVwIC1xICJeR1RLX0RPQ19D SEVDSyIgY29uZmlndXJlLmFjKSAmJiB7Ci0rICAgICMgJFdBTlRfR1RLX0RPQzogSWYgdGhlIHNv dXJjZSBmaWxlcyByZXF1aXJlIGd0ay1kb2MKLSsgICAgIyBTcGVjaWZ5ICItLWRpc2FibGUtZ3Rr LWRvYyIgb3B0aW9uIGZvciBhdXRvZ2VuLnNoIGlmIHlvdSB3aXNoIHRvIGRpc2FibGUKLSsgICAg IyB0aGUgZ3RrLWRvYyBidWlsZHMuCi0gICAgIFdBTlRfR1RLX0RPQz0xCi0gICAgIEZFRE9SQV9Q S0cyPSIkRkVET1JBX1BLRzIgZ3RrLWRvYyIKLSB9Ci1AQCAtNTQsMTYgKzYwLDU3IEBAIGNkICIk c3JjZGlyIgotICAgICB9Ci0gfQotIAotLUNPTkZJR0ZMQUdTPSIkQCIKLSAodGVzdCAiJCMiID0g MCAtYSAieCROT0NPTkZJR1VSRSIgPSAieCIgKSAmJiB7Ci0gICAgIGVjaG8gIioqKiBXQVJOSU5H OiBJIGFtIGdvaW5nIHRvIHJ1biAnY29uZmlndXJlJyB3aXRoIG5vIGFyZ3VtZW50cy4iID4mMgot ICAgICBlY2hvICIqKiogSWYgeW91IHdpc2ggdG8gcGFzcyBhbnkgdG8gaXQsIHBsZWFzZSBzcGVj aWZ5IHRoZW0gb24gdGhlIiA+JjIKLSAgICAgZWNobyAiKioqICckMCcgY29tbWFuZCBsaW5lLiIg PiYyCi0gICAgIGVjaG8gIiIgPiYyCi0tICAgICh0ZXN0ICRXQU5UX0dUS19ET0MgLWVxIDEpICYm IENPTkZJR0ZMQUdTPSItLWVuYWJsZS1ndGstZG9jICRAIgotIH0KLSAKLS0odGVzdCAkV0FOVF9H VEtfRE9DIC1lcSAxKSAmJiBndGtkb2NpemUgLS1jb3B5Ci0rKHRlc3QgIngkTk9DT05GSUdVUkUi ID0gIngiICkgJiYgewotKyAgICAkKGVjaG8gIngkQ09ORklHRkxBR1MiIHwgZ3JlcCAtcSBkaXNh YmxlLWd0ay1kb2MpIHx8IHsKLSsgICAgICAgICh0ZXN0ICRXQU5UX0dUS19ET0MgLWVxIDEpICYm IENPTkZJR0ZMQUdTPSItLWVuYWJsZS1ndGstZG9jICRAIgotKyAgICAgICAgKHRlc3QgLWYgLi9t NC9ndGstZG9jLWR1bW15Lm00KSAmJiAkKHJtIC4vbTQvZ3RrLWRvYy1kdW1teS5tNCkKLSsgICAg fQotK30KLSsKLSsjIElmICRXQU5UX0dUS19ET0MgaXMgMSwgZ3RrZG9jaXplIHNob3VsZCBydW4g YmFzaWNhbGx5LiBZb3UgY291bGQgYXBwbHkKLSsjIEdUS0RPQ0laRT1lY2hvIGZvciB0aGUgd29y a2Fyb3VuZCBpZiB5b3UgZGlzYWJsZSB0byBydW4gZHRrZG9jaXplIGxpa2VzCi0rIyBhdXRvcmVj b25mLgotKyh0ZXN0ICRXQU5UX0dUS19ET0MgLWVxIDEpICYmICRHVEtET0NJWkUgLS1jb3B5Ci0r Ci0rKHRlc3QgIngkTk9DT05GSUdVUkUiID0gIngiICkgJiYKLSskKGVjaG8gIngkQ09ORklHRkxB R1MiIHwgZ3JlcCAtcSBkaXNhYmxlLWd0ay1kb2MpICYmCi0rKHRlc3QgISAtZiAuL200L2d0ay1k b2MubTQgKSAmJiB7Ci0rICAgICMgVGhlIGxpY2Vuc2Ugb2YgZ3RrLWRvYy5tYWtlIGFuZCBtNC9n dGstZG9jLm00IGlzIEdQTCBidXQgbm90IExHUEwKLSsgICAgIyBhbmQgSUJ1cyBkb2VzIG5vdCBz YXZlIHRoZSBzdGF0aWMgZmlsZXMuCi0rICAgIGNhdCA+IC4vZ3RrLWRvYy5tYWtlIDw8X0VPRl9N QUtFCi0rICAgIEVYVFJBX0RJU1Q9Ci0rICAgIENMRUFORklMRVM9Ci0rX0VPRl9NQUtFCi0rICAg IGNhdCA+IC4vbTQvZ3RrLWRvYy1kdW1teS5tNCA8PF9FT0ZfTTQKLStBQ19ERUZVTihbR1RLX0RP Q19DSEVDS10sCi0rWwotKyAgICBoYXZlX2d0a19kb2M9bm8KLSsgICAgQUNfTVNHX0NIRUNLSU5H KFtmb3IgZ3RrLWRvY10pCi0rICAgIEFDX01TR19SRVNVTFQoJGhhdmVfZ3RrX2RvYykKLSsKLSsg ICAgZG5sIGVuYWJsZS9kaXNhYmxlIGRvY3VtZW50YXRpb24gYnVpbGRpbmcKLSsgICAgQUNfQVJH X0VOQUJMRShbZ3RrLWRvY10sCi0rICAgIEFTX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1ndGstZG9j XSwKLSsgICAgICAgICAgICAgICAgICAgW3VzZSBndGstZG9jIHRvIGJ1aWxkIGRvY3VtZW50YXRp b24gW1tkZWZhdWx0PW5vXV1dKSwsCi0rICAgIFtlbmFibGVfZ3RrX2RvYz1ub10pCi0rCi0rICAg IEFDX01TR19DSEVDS0lORyhbd2hldGhlciB0byBidWlsZCBndGstZG9jIGRvY3VtZW50YXRpb25d KQotKyAgICBBQ19NU0dfUkVTVUxUKCRlbmFibGVfZ3RrX2RvYykKLSsgICAgQU1fQ09ORElUSU9O QUwoW0VOQUJMRV9HVEtfRE9DXSwgW3Rlc3QgIngkZW5hYmxlX2d0a19kb2MiID0gInh5ZXMiXSkK LSsKLSsgICAgaWYgdGVzdCAieCRlbmFibGVfZ3RrX2RvYyIgPSAieHllcyIgJiYgdGVzdCAiJGhh dmVfZ3RrX2RvYyIgPSAibm8iOyB0aGVuCi0rICAgICAgICBBQ19NU0dfRVJST1IoW1NvbWV0aGlu ZyB3cm9uZyBpbiB0aGUgYnVpbGQuXSkKLSsgICAgZmkKLStdKQotK19FT0ZfTTQKLSt9Ci0gCi0g QUNMT0NBTF9GTEFHUz0iJEFDTE9DQUxfRkxBR1MgLUkgbTQiIFJFUVVJUkVEX0FVVE9NQUtFX1ZF UlNJT049MS4xMSBcCi0gYXV0b3JlY29uZiAtLXZlcmJvc2UgLS1mb3JjZSAtLWluc3RhbGwgfHwg ZXhpdCAxCi0tLSAKLTIuNDkuMAotCg==