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: Jan Grulich To: git-commits@fedoraproject.org Subject: [rpms/kdevelop-python] f43: 5.5.0 Date: Sat, 04 Jul 2026 11:13:50 GMT Message-ID: <178316363036.1.1776680092192367920.rpms-kdevelop-python-79cbed2fa5a8@fedoraproject.org> List-ID: X-Git-Repo: rpms/kdevelop-python X-Git-Branch: f43 X-Git-Rev: 79cbed2fa5a8e496273ea9b3299251ba225618ee QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMva2RldmVsb3AtcHl0 aG9uCkJyYW5jaCA6IGY0MwpDb21taXQgOiA3OWNiZWQyZmE1YThlNDk2MjczZWE5YjMyOTkyNTFi YTIyNTYxOGVlCkF1dGhvciA6IEphbiBHcnVsaWNoIDxqZ3J1bGljaEByZWRoYXQuY29tPgpEYXRl ICAgOiAyMDIwLTAyLTAzVDEyOjE3OjA0KzAxOjAwClN0YXRzICA6ICs5Ly03MTEgaW4gNCBmaWxl KHMpClVSTCAgICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMva2RldmVsb3At cHl0aG9uL2MvNzljYmVkMmZhNWE4ZTQ5NjI3M2VhOWIzMjk5MjUxYmEyMjU2MThlZT9icmFuY2g9 ZjQzCgpMb2c6CjUuNS4wCgotLS0KZGlmZiAtLWdpdCBhLy5naXRpZ25vcmUgYi8uZ2l0aWdub3Jl CmluZGV4IGY4ZGVkNjcuLjY2MDExODggMTAwNjQ0Ci0tLSBhLy5naXRpZ25vcmUKKysrIGIvLmdp dGlnbm9yZQpAQCAtMzAsMyArMzAsNCBAQAogL2tkZXYtcHl0aG9uLTUuNC40LnRhci54egogL2tk ZXYtcHl0aG9uLTUuNC41LnRhci54egogL2tkZXYtcHl0aG9uLTUuNC42LnRhci54egorL2tkZXYt cHl0aG9uLTUuNS4wLnRhci54egoKZGlmZiAtLWdpdCBhL2tkZXYtcHl0aG9uLXB5dGhvbjM4LnBh dGNoIGIva2Rldi1weXRob24tcHl0aG9uMzgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDY4MmY4MzYuLjAwMDAwMDAKLS0tIGEva2Rldi1weXRob24tcHl0aG9uMzgucGF0Y2gK KysrIC9kZXYvbnVsbApAQCAtMSw3MDIgKzAsMCBAQAotZGlmZiAtLWdpdCBhL0NNYWtlTGlzdHMu dHh0IGIvQ01ha2VMaXN0cy50eHQKLWluZGV4IDg0ZWExMzAuLjUzNzk1MTggMTAwNjQ0Ci0tLS0g YS9DTWFrZUxpc3RzLnR4dAotKysrIGIvQ01ha2VMaXN0cy50eHQKLUBAIC0zMSw3ICszMSw3IEBA IGFkZF9kZWZpbml0aW9ucyggLURUUkFOU0xBVElPTl9ET01BSU49XCJrZGV2cHl0aG9uXCIgKQot IAotICMgQ01ha2UgbG9va3MgZm9yIGV4YWN0bHkgdGhlIHNwZWNpZmllZCB2ZXJzaW9uIGZpcnN0 IGFuZCBpZ25vcmVzIG5ld2VyIHZlcnNpb25zLgotICMgVG8gYXZvaWQgdGhhdCwgc3RhcnQgbG9v a2luZyBmb3IgdGhlIG5ld2VzdCBzdXBwb3J0ZWQgdmVyc2lvbiBhbmQgd29yayBkb3duLgotLXNl dChQeXRob25fQURESVRJT05BTF9WRVJTSU9OUyAzLjcgMy42IDMuNSAzLjQpCi0rc2V0KFB5dGhv bl9BRERJVElPTkFMX1ZFUlNJT05TIDMuOCAzLjcgMy42IDMuNSAzLjQpCi0gZm9yZWFjaChfUFlU SE9OX1YgJHtQeXRob25fQURESVRJT05BTF9WRVJTSU9OU30pCi0gICAgIGZpbmRfcGFja2FnZShQ eXRob25JbnRlcnAgJHtfUFlUSE9OX1Z9KQotICAgICBpZiAoIFBZVEhPTklOVEVSUF9GT1VORCAp Ci1AQCAtNDksNyArNDksNyBAQCBpZiAoIFBZVEhPTklOVEVSUF9GT1VORCBBTkQgUFlUSE9OX1ZF UlNJT05fU1RSSU5HIFZFUlNJT05fR1JFQVRFUiAiMy40IiApCi0gZW5kaWYoKQotIAotIGlmICgg Tk9UIFBZVEhPTkxJQlNfRk9VTkQgT1IgUFlUSE9OTElCU19WRVJTSU9OX1NUUklORyBWRVJTSU9O X0xFU1MgIjMuNC4zIiApCi0tICAgIG1lc3NhZ2UoRkFUQUxfRVJST1IgIlB5dGhvbiA+PSAzLjQu MyBidXQgPCAzLjggd2l0aCAtLWVuYWJsZS1zaGFyZWQgaXMgcmVxdWlyZWQgdG8gYnVpbGQga2Rl di1weXRob24iKQotKyAgICBtZXNzYWdlKEZBVEFMX0VSUk9SICJQeXRob24gPj0gMy40LjMgYnV0 IDwgMy45IHdpdGggLS1lbmFibGUtc2hhcmVkIGlzIHJlcXVpcmVkIHRvIGJ1aWxkIGtkZXYtcHl0 aG9uIikKLSBlbmRpZigpCi0gCi0gY29uZmlndXJlX2ZpbGUoa2RldnB5dGhvbnZlcnNpb24uaC5j bWFrZSAiJHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9L2tkZXZweXRob252ZXJzaW9uLmgiIEBP TkxZKQotZGlmZiAtLWdpdCBhL2R1Y2hhaW4vZGVjbGFyYXRpb25idWlsZGVyLmNwcCBiL2R1Y2hh aW4vZGVjbGFyYXRpb25idWlsZGVyLmNwcAotaW5kZXggZTNjYjJiOS4uNjFlMTQ0YyAxMDA2NDQK LS0tLSBhL2R1Y2hhaW4vZGVjbGFyYXRpb25idWlsZGVyLmNwcAotKysrIGIvZHVjaGFpbi9kZWNs YXJhdGlvbmJ1aWxkZXIuY3BwCi1AQCAtMTM1NCw2ICsxMzU0LDE0IEBAIHZvaWQgRGVjbGFyYXRp b25CdWlsZGVyOjp2aXNpdEFubm90YXRpb25Bc3NpZ25tZW50KEFubm90YXRpb25Bc3NpZ25tZW50 QXN0KiBub2RlCi0gICAgIGFzc2lnblRvVW5rbm93bihub2RlLT50YXJnZXQsIGFzc2lnblR5cGUp OwotIH0KLSAKLSt2b2lkIERlY2xhcmF0aW9uQnVpbGRlcjo6dmlzaXRBc3NpZ25tZW50RXhwcmVz c2lvbihBc3NpZ25tZW50RXhwcmVzc2lvbkFzdCogbm9kZSkgewotKyAgICBBc3REZWZhdWx0Vmlz aXRvcjo6dmlzaXRBc3NpZ25tZW50RXhwcmVzc2lvbihub2RlKTsKLSsKLSsgICAgRXhwcmVzc2lv blZpc2l0b3IgdihjdXJyZW50Q29udGV4dCgpKTsKLSsgICAgdi52aXNpdE5vZGUobm9kZS0+dmFs dWUpOwotKyAgICBhc3NpZ25Ub1Vua25vd24obm9kZS0+dGFyZ2V0LCB2Lmxhc3RUeXBlKCkpOwot K30KLSsKLSB2b2lkIERlY2xhcmF0aW9uQnVpbGRlcjo6dmlzaXRDbGFzc0RlZmluaXRpb24oIENs YXNzRGVmaW5pdGlvbkFzdCogbm9kZSApCi0gewotICAgICB2aXNpdE5vZGVMaXN0KG5vZGUtPmRl Y29yYXRvcnMpOwotQEAgLTE3NDUsNyArMTc1Myw3IEBAIHZvaWQgRGVjbGFyYXRpb25CdWlsZGVy Ojp2aXNpdEFyZ3VtZW50cyggQXJndW1lbnRzQXN0KiBub2RlICkKLSAgICAgaW50IHBhcmFtZXRl cnNDb3VudCA9IG5vZGUtPmFyZ3VtZW50cy5sZW5ndGgoKTsKLSAgICAgaW50IGZpcnN0RGVmYXVs dFBhcmFtZXRlck9mZnNldCA9IHBhcmFtZXRlcnNDb3VudCAtIGRlZmF1bHRQYXJhbWV0ZXJzQ291 bnQ7Ci0gICAgIGludCBjdXJyZW50SW5kZXggPSAwOwotLSAgICBmb3JlYWNoICggQXJnQXN0KiBh cmcsIG5vZGUtPmFyZ3VtZW50cyArIG5vZGUtPmt3b25seWFyZ3MgKSB7Ci0rICAgIGZvcmVhY2gg KCBBcmdBc3QqIGFyZywgbm9kZS0+cG9zb25seWFyZ3MgKyBub2RlLT5hcmd1bWVudHMgKyBub2Rl LT5rd29ubHlhcmdzICkgewotICAgICAgICAgLy8gSXRlcmF0ZSBvdmVyIGFsbCB0aGUgZnVuY3Rp b24ncyBhcmd1bWVudHMsIGNyZWF0ZSBkZWNsYXJhdGlvbnMsIGFuZCBhZGQgdGhlIGFyZ3VtZW50 cwotICAgICAgICAgLy8gdG8gdGhlIGZ1bmN0aW9ucyBGdW5jdGlvblR5cGUuCi0gICAgICAgICBj dXJyZW50SW5kZXggKz0gMTsKLWRpZmYgLS1naXQgYS9kdWNoYWluL2RlY2xhcmF0aW9uYnVpbGRl ci5oIGIvZHVjaGFpbi9kZWNsYXJhdGlvbmJ1aWxkZXIuaAotaW5kZXggYWRlZTZkNi4uMTk5MmI3 OCAxMDA2NDQKLS0tLSBhL2R1Y2hhaW4vZGVjbGFyYXRpb25idWlsZGVyLmgKLSsrKyBiL2R1Y2hh aW4vZGVjbGFyYXRpb25idWlsZGVyLmgKLUBAIC05MCw2ICs5MCw3IEBAIHByb3RlY3RlZDoKLSAg ICAgdm9pZCB2aXNpdEZ1bmN0aW9uRGVmaW5pdGlvbihGdW5jdGlvbkRlZmluaXRpb25Bc3QqIG5v ZGUpIG92ZXJyaWRlOwotICAgICB2b2lkIHZpc2l0QXNzaWdubWVudChBc3NpZ25tZW50QXN0KiBu b2RlKSBvdmVycmlkZTsKLSAgICAgdm9pZCB2aXNpdEFubm90YXRpb25Bc3NpZ25tZW50KEFubm90 YXRpb25Bc3NpZ25tZW50QXN0KiBub2RlKSBvdmVycmlkZTsKLSsgICAgdm9pZCB2aXNpdEFzc2ln bm1lbnRFeHByZXNzaW9uKEFzc2lnbm1lbnRFeHByZXNzaW9uQXN0KiBub2RlKSBvdmVycmlkZTsK LSAgICAgdm9pZCB2aXNpdEZvcihGb3JBc3QqIG5vZGUpIG92ZXJyaWRlOwotICAgICB2b2lkIHZp c2l0SW1wb3J0KEltcG9ydEFzdCogbm9kZSkgb3ZlcnJpZGU7Ci0gICAgIHZvaWQgdmlzaXRJbXBv cnRGcm9tKEltcG9ydEZyb21Bc3QqIG5vZGUpIG92ZXJyaWRlOwotZGlmZiAtLWdpdCBhL2R1Y2hh aW4vZXhwcmVzc2lvbnZpc2l0b3IuY3BwIGIvZHVjaGFpbi9leHByZXNzaW9udmlzaXRvci5jcHAK LWluZGV4IDVjNTI4NmEuLjA1NWM1YjQgMTAwNjQ0Ci0tLS0gYS9kdWNoYWluL2V4cHJlc3Npb252 aXNpdG9yLmNwcAotKysrIGIvZHVjaGFpbi9leHByZXNzaW9udmlzaXRvci5jcHAKLUBAIC03NTcs NSArNzU3LDkgQEAgdm9pZCBFeHByZXNzaW9uVmlzaXRvcjo6dmlzaXRCb29sZWFuT3BlcmF0aW9u KFB5dGhvbjo6Qm9vbGVhbk9wZXJhdGlvbkFzdCogbm9kZSkKLSAgICAgZW5jb3VudGVyKHJlc3Vs dCk7Ci0gfQotIAotK3ZvaWQgRXhwcmVzc2lvblZpc2l0b3I6OnZpc2l0QXNzaWdubWVudEV4cHJl c3Npb24oUHl0aG9uOjpBc3NpZ25tZW50RXhwcmVzc2lvbkFzdCogbm9kZSkgewotKyAgICB2aXNp dE5vZGUobm9kZS0+dmFsdWUpOwotK30KLSsKLSB9Ci0gCi1kaWZmIC0tZ2l0IGEvZHVjaGFpbi9l eHByZXNzaW9udmlzaXRvci5oIGIvZHVjaGFpbi9leHByZXNzaW9udmlzaXRvci5oCi1pbmRleCAy NWNhMjMxLi5hNTY0ODFhIDEwMDY0NAotLS0tIGEvZHVjaGFpbi9leHByZXNzaW9udmlzaXRvci5o Ci0rKysgYi9kdWNoYWluL2V4cHJlc3Npb252aXNpdG9yLmgKLUBAIC04MSw2ICs4MSw3IEBAIHB1 YmxpYzoKLSAgICAgdm9pZCB2aXNpdFNldENvbXByZWhlbnNpb24oU2V0Q29tcHJlaGVuc2lvbkFz dCogbm9kZSkgb3ZlcnJpZGU7Ci0gICAgIHZvaWQgdmlzaXRJZkV4cHJlc3Npb24oSWZFeHByZXNz aW9uQXN0KiBub2RlKSBvdmVycmlkZTsKLSAgICAgdm9pZCB2aXNpdE5hbWVDb25zdGFudChOYW1l Q29uc3RhbnRBc3QqIG5vZGUpIG92ZXJyaWRlOwotKyAgICB2b2lkIHZpc2l0QXNzaWdubWVudEV4 cHJlc3Npb24oQXNzaWdubWVudEV4cHJlc3Npb25Bc3QqIG5vZGUpIG92ZXJyaWRlOwotIAotICAg ICAvKioKLSAgICAgICogQGJyaWVmIENoZWNrcyBmb3IgbWFnaWMgZG9jc3RyaW5ncyB0aGF0IG92 ZXJyaWRlIGEgY2FsbCdzIHJldHVybiB0eXBlLgotZGlmZiAtLWdpdCBhL2R1Y2hhaW4vdGVzdHMv cHlkdWNoYWludGVzdC5jcHAgYi9kdWNoYWluL3Rlc3RzL3B5ZHVjaGFpbnRlc3QuY3BwCi1pbmRl eCA3MTQyZWQyLi4xN2JhMzRlIDEwMDY0NAotLS0tIGEvZHVjaGFpbi90ZXN0cy9weWR1Y2hhaW50 ZXN0LmNwcAotKysrIGIvZHVjaGFpbi90ZXN0cy9weWR1Y2hhaW50ZXN0LmNwcAotQEAgLTgzOCw2 ICs4MzgsNyBAQCB2b2lkIFB5RFVDaGFpblRlc3Q6OnRlc3RUeXBlcygpCi0gICAgIFFFWFBFQ1Rf RkFJTCgiaW5pdF9jbGFzc19ub19kZWNsIiwgImFsaWFzaW5nIGluZm8gbG9zdCIsIENvbnRpbnVl KTsKLSAgICAgUUVYUEVDVF9GQUlMKCJwcm9wZXJ0eV93cm9uZyIsICJ2aXNpdENhbGwgdXNlcyBk ZWNsYXJhdGlvbiBpZiBubyB0eXBlIiwgQ29udGludWUpOwotICAgICBRRVhQRUNUX0ZBSUwoInBy b3BlcnR5X3NldHRlciIsICJ2ZXJ5IGJhc2ljIHByb3BlcnR5IHN1cHBvcnQiLCBDb250aW51ZSk7 Ci0rICAgIFFFWFBFQ1RfRkFJTCgiYXNzaWdubWVudF9leHByX2NvbnRleHQiLCAibm90IGltcGxl bWVudGVkIiwgQ29udGludWUpOwotICAgICBRQ09NUEFSRSh2aXNpdG9yLT5mb3VuZCwgdHJ1ZSk7 Ci0gfQotIAotQEAgLTEzMDIsNiArMTMwMywyMSBAQCB2b2lkIFB5RFVDaGFpblRlc3Q6OnRlc3RU eXBlc19kYXRhKCkKLSAgICAgICAgICIgICAgICAgIGRlZiBmb28oc2VsZiwgY2NjPWFhYSwgZGRk PWJiYik6XG4iIC8vIHNlbGYuYmJiIGlzIHZpc2libGUgaGVyZSwgRm9vKCkuYWFhIGlzbid0Lgot ICAgICAgICAgIiAgICAgICAgICAgIHJldHVybiBjY2MsIGRkZFxuIgotICAgICAgICAgImNoZWNr bWUgPSBGb28oKS5CYXIoKS5mb28oKVxuIiA8PCAidHVwbGUgb2YgKHN0ciwgaW50KSI7Ci0rI2lm IFBZVEhPTl9WRVJTSU9OID49IFFUX1ZFUlNJT05fQ0hFQ0soMywgOCwgMCkKLSsgICAgUVRlc3Q6 Om5ld1JvdygiYXNzaWdubWVudF9leHByX3doaWxlIikgPDwKLSsgICAgICAgICJmaWxlID0gb3Bl bignZm9vLnR4dCcpXG4iCi0rICAgICAgICAid2hpbGUgcSA6PSBmaWxlLnJlYWRsaW5lKCk6XG4i Ci0rICAgICAgICAiICAgIGNoZWNrbWUgPSBxXG4iIDw8ICJzdHIiOwotKyAgICBRVGVzdDo6bmV3 Um93KCJhc3NpZ25tZW50X2V4cHJfY29tcHJlaGVuc2lvbiIpIDw8Ci0rICAgICAgICAiY2hlY2tt ZSA9IFt6IGZvciBxIGluICgxLCAyLCAzKSBpZiAoeiA6PSBxICUgMildIiA8PCAibGlzdCBvZiBp bnQiOwotKyAgICBRVGVzdDo6bmV3Um93KCJhc3NpZ25tZW50X2V4cHJfY29udGV4dCIpIDw8Ci0r ICAgICAgICAiYSA9IFt6IGZvciBxIGluICgxLCAyLCAzKSBpZiAoeiA6PSBxICUgMildXG4iCi0r ICAgICAgICAiY2hlY2ttZSA9IHoiIDw8ICJpbnQiOwotKyAgICBRVGVzdDo6bmV3Um93KCJwb3Np dGlvbmFsX3BhcmFtcyIpIDw8Ci0rICAgICJkZWYgZm9vKGEsIGIsIC8sIGMsIGQpOlxuIgotKyAg ICAiICAgIHJldHVybiBhLCBiLCBjLCBkXG4iCi0rICAgICJjaGVja21lID0gZm9vKDEwLCAneCcs IDIuMywgZD0neScpXG4iIDw8ICJ0dXBsZSBvZiAoaW50LCBzdHIsIGZsb2F0LCBzdHIpIjsKLSsj ZW5kaWYKLSB9Ci0gCi0gdHlwZWRlZiBRUGFpcjxEZWNsYXJhdGlvbiosIGludD4gcGFpcjsKLUBA IC0xNzgwLDYgKzE3OTYsOSBAQCB2b2lkIFB5RFVDaGFpblRlc3Q6OnRlc3RWYXJpYWJsZUNyZWF0 aW9uX2RhdGEoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgUVN0cmluZ0xpc3R7ImludCIs ICJpbnQiLCAiZmxvYXQifTsKLSAgICAgUVRlc3Q6Om5ld1JvdygiZm9yX2xvb3BfdHVwbGUiKSA8 PCAiZm9yIGEgaW4gMSwgMjogcGFzcyIgPDwgUVN0cmluZ0xpc3R7ImEifSA8PCBRU3RyaW5nTGlz dHsiaW50In07Ci0gICAgIFFUZXN0OjpuZXdSb3coImZvcl9sb29wX2RpY3QiKSA8PCAiZm9yIGEg aW4geydmb28nOiAxfTogcGFzcyIgPDwgUVN0cmluZ0xpc3R7ImEifSA8PCBRU3RyaW5nTGlzdHsi c3RyIn07Ci0rI2lmIFBZVEhPTl9WRVJTSU9OID49IFFUX1ZFUlNJT05fQ0hFQ0soMywgOCwgMCkK LSsgICAgUVRlc3Q6Om5ld1JvdygiYXNzaWdubWVudF9leHByIikgPDwgImEgPSAoYiA6PSAxMCki IDw8IFFTdHJpbmdMaXN0eyJhIiwgImIifSA8PCBRU3RyaW5nTGlzdHsiaW50IiwgImludCJ9Owot KyNlbmRpZgotIH0KLSAKLSB2b2lkIFB5RFVDaGFpblRlc3Q6OnRlc3RDbGVhbnVwTXVsdGlwbGVQ YXNzZXMoKQotZGlmZiAtLWdpdCBhL3BhcnNlci9hc3QuY3BwIGIvcGFyc2VyL2FzdC5jcHAKLWlu ZGV4IDk4OTJiMTguLmNkNTcwZDMgMTAwNjQ0Ci0tLS0gYS9wYXJzZXIvYXN0LmNwcAotKysrIGIv cGFyc2VyL2FzdC5jcHAKLUBAIC0xNjMsNiArMTYzLDExIEBAIEV4cHJlc3Npb25Bc3Q6OkV4cHJl c3Npb25Bc3QoQXN0KiBwYXJlbnQsIEFzdFR5cGUgdHlwZSk6IEFzdChwYXJlbnQsIHR5cGUpLCB2 YWx1Ci0gICAgIAotIH0KLSAKLStBc3NpZ25tZW50RXhwcmVzc2lvbkFzdDo6QXNzaWdubWVudEV4 cHJlc3Npb25Bc3QoQXN0KiBwYXJlbnQpOiBFeHByZXNzaW9uQXN0KHBhcmVudCwgQXN0OjpBc3Np Z25tZW50RXhwcmVzc2lvbkFzdFR5cGUpLCB2YWx1ZShudWxscHRyKQotK3sKLSsKLSt9Ci0rCi0g WWllbGRGcm9tQXN0OjpZaWVsZEZyb21Bc3QoQXN0KiBwYXJlbnQpIDogRXhwcmVzc2lvbkFzdChw YXJlbnQsIEFzdDo6WWllbGRGcm9tQXN0VHlwZSkKLSB7Ci0gCi1AQCAtMjQ4LDcgKzI1Myw3IEBA IE5hbWVDb25zdGFudEFzdDo6TmFtZUNvbnN0YW50QXN0KEFzdCogcGFyZW50KTogRXhwcmVzc2lv bkFzdChwYXJlbnQsIEFzdDo6TmFtZUNvCi0gCi0gfQotIAotLU51bWJlckFzdDo6TnVtYmVyQXN0 KEFzdCogcGFyZW50KTogRXhwcmVzc2lvbkFzdChwYXJlbnQsIEFzdDo6TnVtYmVyQXN0VHlwZSks IHZhbHVlKDApCi0rTnVtYmVyQXN0OjpOdW1iZXJBc3QoQXN0KiBwYXJlbnQpOiBFeHByZXNzaW9u QXN0KHBhcmVudCwgQXN0OjpOdW1iZXJBc3RUeXBlKSwgdmFsdWUoMCksIGlzSW50KGZhbHNlKQot IHsKLSAgICAgCi0gfQotZGlmZiAtLWdpdCBhL3BhcnNlci9hc3QuaCBiL3BhcnNlci9hc3QuaAot aW5kZXggMzc4YWYwYi4uNjVmZWYxYyAxMDA2NDQKLS0tLSBhL3BhcnNlci9hc3QuaAotKysrIGIv cGFyc2VyL2FzdC5oCi1AQCAtMTMxLDYgKzEzMSw3IEBAIHB1YmxpYzoKLSAgICAgICAgIFNsaWNl QXN0VHlwZSwKLSAgICAgICAgIEVsbGlwc2lzQXN0VHlwZSwKLSAgICAgICAgIEluZGV4QXN0VHlw ZSwKLSsgICAgICAgIEFzc2lnbm1lbnRFeHByZXNzaW9uQXN0VHlwZSwKLSAgICAgICAgIExhc3RF eHByZXNzaW9uVHlwZSwgLy8ga2VlcCB0aGlzIGF0IHRoZSBlbmQgb2YgdGhlIGV4cHIgYXN0IGxp c3QKLSAKLSAgICAgICAgIENvZGVBc3RUeXBlLAotQEAgLTQ1Nyw2ICs0NTgsMTMgQEAgcHVibGlj OgotICAgICBFeHByZXNzaW9uQXN0KiB2YWx1ZTsgLy8gV0FSTklORyB0aGlzIGlzIG5vdCBzZXQg aW4gbW9zdCBjYXNlcyEKLSB9OwotIAotK2NsYXNzIEtERVZQWVRIT05QQVJTRVJfRVhQT1JUIEFz c2lnbm1lbnRFeHByZXNzaW9uQXN0IDogcHVibGljIEV4cHJlc3Npb25Bc3QgewotK3B1YmxpYzoK LSsgICAgQXNzaWdubWVudEV4cHJlc3Npb25Bc3QoQXN0KiBwYXJlbnQpOwotKyAgICBFeHByZXNz aW9uQXN0KiB0YXJnZXQ7Ci0rICAgIEV4cHJlc3Npb25Bc3QqIHZhbHVlOwotK307Ci0rCi0gY2xh c3MgS0RFVlBZVEhPTlBBUlNFUl9FWFBPUlQgQXdhaXRBc3QgOiBwdWJsaWMgRXhwcmVzc2lvbkFz dCB7Ci0gcHVibGljOgotICAgICBBd2FpdEFzdChBc3QqIHBhcmVudCk7Ci1AQCAtNzQzLDYgKzc1 MSw3IEBAIHB1YmxpYzoKLSAgICAgQXJndW1lbnRzQXN0KEFzdCogcGFyZW50KTsKLSAgICAgUUxp c3Q8QXJnQXN0Kj4gYXJndW1lbnRzOwotICAgICBRTGlzdDxBcmdBc3QqPiBrd29ubHlhcmdzOwot KyAgICBRTGlzdDxBcmdBc3QqPiBwb3Nvbmx5YXJnczsKLSAgICAgUUxpc3Q8RXhwcmVzc2lvbkFz dCo+IGRlZmF1bHRWYWx1ZXM7Ci0gICAgIEFyZ0FzdCogdmFyYXJnOwotICAgICBBcmdBc3QqIGt3 YXJnOwotZGlmZiAtLWdpdCBhL3BhcnNlci9hc3RidWlsZGVyLmNwcCBiL3BhcnNlci9hc3RidWls ZGVyLmNwcAotaW5kZXggYTFjY2Q2OC4uYWQyZTBkYyAxMDA2NDQKLS0tLSBhL3BhcnNlci9hc3Ri dWlsZGVyLmNwcAotKysrIGIvcGFyc2VyL2FzdGJ1aWxkZXIuY3BwCi1AQCAtMTAxLDcgKzEwMSwx MyBAQCBDb2RlQXN0OjpQdHIgQXN0QnVpbGRlcjo6cGFyc2UoY29uc3QgUVVybCYgZmlsZW5hbWUs IFFTdHJpbmcgJmNvbnRlbnRzKQotICAgICBQeXRob25Jbml0aWFsaXplciBweUluaXRlcihweUlu aXRMb2NrKTsKLSAgICAgUHlBcmVuYSogYXJlbmEgPSBweUluaXRlci5hcmVuYTsKLSAKLSsjaWYg UFlUSE9OX1ZFUlNJT04gPj0gUVRfVkVSU0lPTl9DSEVDSygzLCA4LCAwKQotKyAgICBQeUNvbXBp bGVyRmxhZ3MgZmxhZ3M7Ci0rICAgIGZsYWdzLmNmX2ZsYWdzID0gUHlDRl9TT1VSQ0VfSVNfVVRG OCB8IFB5Q0ZfSUdOT1JFX0NPT0tJRSB8IFB5Q0ZfT05MWV9BU1Q7Ci0rICAgIGZsYWdzLmNmX2Zl YXR1cmVfdmVyc2lvbiA9IDc7Ci0rI2Vsc2UKLSAgICAgUHlDb21waWxlckZsYWdzIGZsYWdzID0g e1B5Q0ZfU09VUkNFX0lTX1VURjggfCBQeUNGX0lHTk9SRV9DT09LSUV9OwotKyNlbmRpZgotIAot ICAgICBDeXRob25TeW50YXhSZW1vdmVyIGN5dGhvblN5bnRheFJlbW92ZXI7Ci0gCi1kaWZmIC0t Z2l0IGEvcGFyc2VyL2FzdGRlZmF1bHR2aXNpdG9yLmNwcCBiL3BhcnNlci9hc3RkZWZhdWx0dmlz aXRvci5jcHAKLWluZGV4IDVkYjFmNmYuLmNkZDMxYmIgMTAwNjQ0Ci0tLS0gYS9wYXJzZXIvYXN0 ZGVmYXVsdHZpc2l0b3IuY3BwCi0rKysgYi9wYXJzZXIvYXN0ZGVmYXVsdHZpc2l0b3IuY3BwCi1A QCAtMjkyLDYgKzI5MiwxMiBAQCB2b2lkIEFzdERlZmF1bHRWaXNpdG9yOjp2aXNpdEFubm90YXRp b25Bc3NpZ25tZW50KEFubm90YXRpb25Bc3NpZ25tZW50QXN0KiBub2RlKQotICAgICB2aXNpdE5v ZGUobm9kZS0+dmFsdWUpOwotIH0KLSAKLSt2b2lkIEFzdERlZmF1bHRWaXNpdG9yOjp2aXNpdEFz c2lnbm1lbnRFeHByZXNzaW9uKEFzc2lnbm1lbnRFeHByZXNzaW9uQXN0KiBub2RlKQotK3sKLSsg ICAgdmlzaXROb2RlKG5vZGUtPnRhcmdldCk7Ci0rICAgIHZpc2l0Tm9kZShub2RlLT52YWx1ZSk7 Ci0rfQotKwotIHZvaWQgQXN0RGVmYXVsdFZpc2l0b3I6OnZpc2l0QmluYXJ5T3BlcmF0aW9uKEJp bmFyeU9wZXJhdGlvbkFzdCogbm9kZSkKLSB7Ci0gICAgIHZpc2l0Tm9kZShub2RlLT5saHMpOwot ZGlmZiAtLWdpdCBhL3BhcnNlci9hc3RkZWZhdWx0dmlzaXRvci5oIGIvcGFyc2VyL2FzdGRlZmF1 bHR2aXNpdG9yLmgKLWluZGV4IGU4ZTBkM2QuLmFhMWY1NDAgMTAwNjQ0Ci0tLS0gYS9wYXJzZXIv YXN0ZGVmYXVsdHZpc2l0b3IuaAotKysrIGIvcGFyc2VyL2FzdGRlZmF1bHR2aXNpdG9yLmgKLUBA IC00OSw2ICs0OSw3IEBAIHB1YmxpYzoKLSAgICAgdm9pZCB2aXNpdEFzc2lnbm1lbnQoQXNzaWdu bWVudEFzdCogbm9kZSkgb3ZlcnJpZGU7Ci0gICAgIHZvaWQgdmlzaXRBdWdtZW50ZWRBc3NpZ25t ZW50KEF1Z21lbnRlZEFzc2lnbm1lbnRBc3QqIG5vZGUpIG92ZXJyaWRlOwotICAgICB2b2lkIHZp c2l0QW5ub3RhdGlvbkFzc2lnbm1lbnQoQW5ub3RhdGlvbkFzc2lnbm1lbnRBc3QqIG5vZGUpIG92 ZXJyaWRlOwotKyAgICB2b2lkIHZpc2l0QXNzaWdubWVudEV4cHJlc3Npb24oQXNzaWdubWVudEV4 cHJlc3Npb25Bc3QqIG5vZGUpIG92ZXJyaWRlOwotICAgICB2b2lkIHZpc2l0Rm9yKEZvckFzdCog bm9kZSkgb3ZlcnJpZGU7Ci0gICAgIHZvaWQgdmlzaXRXaGlsZShXaGlsZUFzdCogbm9kZSkgb3Zl cnJpZGU7Ci0gICAgIHZvaWQgdmlzaXRJZihJZkFzdCogbm9kZSkgb3ZlcnJpZGU7Ci1AQCAtMTIy LDYgKzEyMyw3IEBAIHB1YmxpYzoKLSAgICAgdm9pZCB2aXNpdEFzc2lnbm1lbnQoQXNzaWdubWVu dEFzdCogbm9kZSkgb3ZlcnJpZGUgeyBBc3REZWZhdWx0VmlzaXRvcjo6dmlzaXRBc3NpZ25tZW50 KG5vZGUpOyBkZWxldGUgbm9kZTsgfQotICAgICB2b2lkIHZpc2l0QXVnbWVudGVkQXNzaWdubWVu dChBdWdtZW50ZWRBc3NpZ25tZW50QXN0KiBub2RlKSBvdmVycmlkZSB7IEFzdERlZmF1bHRWaXNp dG9yOjp2aXNpdEF1Z21lbnRlZEFzc2lnbm1lbnQobm9kZSk7IGRlbGV0ZSBub2RlOyB9Ci0gICAg IHZvaWQgdmlzaXRBbm5vdGF0aW9uQXNzaWdubWVudChBbm5vdGF0aW9uQXNzaWdubWVudEFzdCog bm9kZSkgb3ZlcnJpZGUgeyBBc3REZWZhdWx0VmlzaXRvcjo6dmlzaXRBbm5vdGF0aW9uQXNzaWdu bWVudChub2RlKTsgZGVsZXRlIG5vZGU7IH0KLSsgICAgdm9pZCB2aXNpdEFzc2lnbm1lbnRFeHBy ZXNzaW9uKEFzc2lnbm1lbnRFeHByZXNzaW9uQXN0KiBub2RlKSBvdmVycmlkZSB7IEFzdERlZmF1 bHRWaXNpdG9yOjp2aXNpdEFzc2lnbm1lbnRFeHByZXNzaW9uKG5vZGUpOyBkZWxldGUgbm9kZTsg fQotICAgICB2b2lkIHZpc2l0Rm9yKEZvckFzdCogbm9kZSkgb3ZlcnJpZGUgeyBBc3REZWZhdWx0 VmlzaXRvcjo6dmlzaXRGb3Iobm9kZSk7IGRlbGV0ZSBub2RlOyB9Ci0gICAgIHZvaWQgdmlzaXRX aGlsZShXaGlsZUFzdCogbm9kZSkgb3ZlcnJpZGUgeyBBc3REZWZhdWx0VmlzaXRvcjo6dmlzaXRX aGlsZShub2RlKTsgZGVsZXRlIG5vZGU7IH0KLSAgICAgdm9pZCB2aXNpdElmKElmQXN0KiBub2Rl KSBvdmVycmlkZSB7IEFzdERlZmF1bHRWaXNpdG9yOjp2aXNpdElmKG5vZGUpOyBkZWxldGUgbm9k ZTsgfQotZGlmZiAtLWdpdCBhL3BhcnNlci9hc3R2aXNpdG9yLmNwcCBiL3BhcnNlci9hc3R2aXNp dG9yLmNwcAotaW5kZXggYWNlN2Q2MS4uNTFjNWExYyAxMDA2NDQKLS0tLSBhL3BhcnNlci9hc3R2 aXNpdG9yLmNwcAotKysrIGIvcGFyc2VyL2FzdHZpc2l0b3IuY3BwCi1AQCAtNDcsNiArNDcsNyBA QCB2b2lkIEFzdFZpc2l0b3I6OnZpc2l0Tm9kZShBc3QqIG5vZGUpCi0gICAgICAgICBjYXNlIEFz dDo6QXNzaWdubWVudEFzdFR5cGU6ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMtPnZp c2l0QXNzaWdubWVudChzdGF0aWNfY2FzdDxBc3NpZ25tZW50QXN0Kj4obm9kZSkpOyBicmVhazsK LSAgICAgICAgIGNhc2UgQXN0OjpBdWdtZW50ZWRBc3NpZ25tZW50QXN0VHlwZTogICAgICAgICAg ICAgICAgICAgdGhpcy0+dmlzaXRBdWdtZW50ZWRBc3NpZ25tZW50KHN0YXRpY19jYXN0PEF1Z21l bnRlZEFzc2lnbm1lbnRBc3QqPihub2RlKSk7IGJyZWFrOwotICAgICAgICAgY2FzZSBBc3Q6OkFu bm90YXRpb25Bc3NpZ25tZW50QXN0VHlwZTogICAgICAgICAgICAgICAgICB0aGlzLT52aXNpdEFu bm90YXRpb25Bc3NpZ25tZW50KHN0YXRpY19jYXN0PEFubm90YXRpb25Bc3NpZ25tZW50QXN0Kj4o bm9kZSkpOyBicmVhazsKLSsgICAgICAgIGNhc2UgQXN0OjpBc3NpZ25tZW50RXhwcmVzc2lvbkFz dFR5cGU6ICAgICAgICAgICAgICAgICAgdGhpcy0+dmlzaXRBc3NpZ25tZW50RXhwcmVzc2lvbihz dGF0aWNfY2FzdDxBc3NpZ25tZW50RXhwcmVzc2lvbkFzdCo+KG5vZGUpKTsgYnJlYWs7Ci0gICAg ICAgICBjYXNlIEFzdDo6Rm9yQXN0VHlwZTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHRoaXMtPnZpc2l0Rm9yKHN0YXRpY19jYXN0PEZvckFzdCo+KG5vZGUpKTsgYnJlYWs7Ci0g ICAgICAgICBjYXNlIEFzdDo6V2hpbGVBc3RUeXBlOiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHRoaXMtPnZpc2l0V2hpbGUoc3RhdGljX2Nhc3Q8V2hpbGVBc3QqPihub2RlKSk7IGJy ZWFrOwotICAgICAgICAgY2FzZSBBc3Q6OklmQXN0VHlwZTogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB0aGlzLT52aXNpdElmKHN0YXRpY19jYXN0PElmQXN0Kj4obm9kZSkpOyBi cmVhazsKLWRpZmYgLS1naXQgYS9wYXJzZXIvYXN0dmlzaXRvci5oIGIvcGFyc2VyL2FzdHZpc2l0 b3IuaAotaW5kZXggMTkwOGU5ZC4uNTFhYTQ3YiAxMDA2NDQKLS0tLSBhL3BhcnNlci9hc3R2aXNp dG9yLmgKLSsrKyBiL3BhcnNlci9hc3R2aXNpdG9yLmgKLUBAIC02MSw2ICs2MSw3IEBAIHB1Ymxp YzoKLSAgICAgdmlydHVhbCB2b2lkIHZpc2l0QXNzaWdubWVudChBc3NpZ25tZW50QXN0KiBub2Rl KSB7IFFfVU5VU0VEKG5vZGUpOyB9OwotICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRBdWdtZW50ZWRB c3NpZ25tZW50KEF1Z21lbnRlZEFzc2lnbm1lbnRBc3QqIG5vZGUpIHsgUV9VTlVTRUQobm9kZSk7 IH07Ci0gICAgIHZpcnR1YWwgdm9pZCB2aXNpdEFubm90YXRpb25Bc3NpZ25tZW50KEFubm90YXRp b25Bc3NpZ25tZW50QXN0KiBub2RlKSB7IFFfVU5VU0VEKG5vZGUpOyB9OwotKyAgICB2aXJ0dWFs IHZvaWQgdmlzaXRBc3NpZ25tZW50RXhwcmVzc2lvbihBc3NpZ25tZW50RXhwcmVzc2lvbkFzdCog bm9kZSkgeyBRX1VOVVNFRChub2RlKTsgfTsKLSAgICAgdmlydHVhbCB2b2lkIHZpc2l0Rm9yKEZv ckFzdCogbm9kZSkgeyBRX1VOVVNFRChub2RlKTsgfTsKLSAgICAgdmlydHVhbCB2b2lkIHZpc2l0 V2hpbGUoV2hpbGVBc3QqIG5vZGUpIHsgUV9VTlVTRUQobm9kZSk7IH07Ci0gICAgIHZpcnR1YWwg dm9pZCB2aXNpdElmKElmQXN0KiBub2RlKSB7IFFfVU5VU0VEKG5vZGUpOyB9OwotZGlmZiAtLWdp dCBhL3BhcnNlci9jb252ZXJzaW9uR2VuZXJhdG9yLnB5IGIvcGFyc2VyL2NvbnZlcnNpb25HZW5l cmF0b3IucHkKLWluZGV4IDlkNjVjYzAuLmFiNGEzMzIgMTAwNjQ0Ci0tLS0gYS9wYXJzZXIvY29u dmVyc2lvbkdlbmVyYXRvci5weQotKysrIGIvcGFyc2VyL2NvbnZlcnNpb25HZW5lcmF0b3IucHkK LUBAIC05LDcgKzksNyBAQAotIAotIGltcG9ydCBzeXMKLSAKLS1jb250ZW50cyA9IG9wZW4oJ3B5 dGhvbjM2LnNkZWYnKS5yZWFkKCkucmVwbGFjZSgiXG4iLCAiIikuc3BsaXQoJzs7JykKLStjb250 ZW50cyA9IG9wZW4oJ3B5dGhvbjM4LnNkZWYnKS5yZWFkKCkucmVwbGFjZSgiXG4iLCAiIikuc3Bs aXQoJzs7JykKLSAKLSBmdW5jX3N0cnVjdHVyZSA9ICcnJwotICAgICBBc3QqIHZpc2l0Tm9kZSgl e1JVTEVfRk9SfSogbm9kZSkgewotQEAgLTQ1LDcgKzQ1LDYgQEAgc2ltcGxlX2Z1bmNfc3RydWN0 dXJlID0gJycnCi0gCi0gc3dpdGNoX2xpbmUgPSAnJycgICAgICAgIGNhc2UgJXtLSU5EfTogewot ICV7QUNUSU9OU30KLS0gICAgICAgICAgICAgICAgcmVzdWx0ID0gdjsKLSAgICAgICAgICAgICAg ICAgYnJlYWs7Ci0gICAgICAgICAgICAgfScnJwotIAotQEAgLTEzOSw2ICsxMzgsNyBAQCBmb3Ig cnVsZSBpbiBjb250ZW50czoKLSAgICAgICAgIHJlc3VsdHNbcnVsZV9mb3JdID0gbGlzdCgpCi0g ICAgIAotICAgICBjdXJyZW50X2FjdGlvbnMgPSBsaXN0KCkKLSsgICAgY3JlYXRlZF92ID0gRmFs c2UKLSAgICAgZm9yIGFjdGlvbiBpbiBhY3Rpb25zOgotICAgICAgICAgY29tbWFuZCA9IGFjdGlv bi5zcGxpdCgnfCcpWzBdCi0gICAgICAgICB0cnk6Ci1AQCAtMjA0LDcgKzIwNCw4IEBAIGZvciBy dWxlIGluIGNvbnRlbnRzOgotICAgICAgICAgZWxpZiBjb21tYW5kID09ICdjcmVhdGUnOgotICAg ICAgICAgICAgIGFzdFR5cGUgPSBhcmd1bWVudHMKLSAgICAgICAgICAgICBjdXJyZW50X2FjdGlv bnMuYXBwZW5kKGNyZWF0ZV9hc3RfbGluZS5yZXBsYWNlKCcle0FTVF9UWVBFfScsIGFzdFR5cGUp KQotLSAgICAKLSsgICAgICAgICAgICBjcmVhdGVkX3YgPSBUcnVlCi0rCi0gICAgIGlmIGNvZGU6 Ci0gICAgICAgICBjdXJyZW50X2FjdGlvbnMuYXBwZW5kKGNvZGUpOwotICAgICAKLUBAIC0yMTIs NiArMjEzLDggQEAgZm9yIHJ1bGUgaW4gY29udGVudHM6Ci0gICAgIGlmIGtpbmQgPT0gJ2FueSc6 Ci0gICAgICAgICBjdXJyZW50X3N0bXQgPSBjdXJyZW50X2FjdGlvbnMKLSAgICAgZWxzZToKLSsg ICAgICAgIGlmIGNyZWF0ZWRfdjoKLSsgICAgICAgICAgICBjdXJyZW50X2FjdGlvbnMgKz0gIlxu ICAgICAgICAgICAgICAgIHJlc3VsdCA9IHY7IgotICAgICAgICAgY3VycmVudF9zdG10ID0gc3dp dGNoX2xpbmUucmVwbGFjZSgnJXtLSU5EfScsIGtpbmQpLnJlcGxhY2UoJyV7QUNUSU9OU30nLCBj dXJyZW50X2FjdGlvbnMpCi0gICAgIGlmIGJlZm9yZV92ZXJzaW9uOgotICAgICAgICAgdmVyc2lv bl9jcHBfaWYgPSAoIiNpZiBQWVRIT05fVkVSU0lPTiA8IFFUX1ZFUlNJT05fQ0hFQ0soJWQsICVk LCAwKVxuIgotZGlmZiAtLWdpdCBhL3BhcnNlci9nZW5lcmF0ZWQuaCBiL3BhcnNlci9nZW5lcmF0 ZWQuaAotaW5kZXggOTA2MWRlYi4uZTExMzZmOCAxMDA2NDQKLS0tLSBhL3BhcnNlci9nZW5lcmF0 ZWQuaAotKysrIGIvcGFyc2VyL2dlbmVyYXRlZC5oCi1AQCAtNzYsMTIgKzc2LDIzIEBAIHByaXZh dGU6Ci0gICAgIEFzdCogdmlzaXROb2RlKF9hcmd1bWVudHMqIG5vZGUpIHsKLSAgICAgICAgIGJv b2wgcmFuZ2VzX2NvcGllZCA9IGZhbHNlOyBRX1VOVVNFRChyYW5nZXNfY29waWVkKTsKLSAgICAg ICAgIGlmICggISBub2RlICkgcmV0dXJuIG51bGxwdHI7Ci0rI2lmIFBZVEhPTl9WRVJTSU9OIDwg UVRfVkVSU0lPTl9DSEVDSygzLCA4LCAwKQotICAgICAgICAgICAgICAgICBBcmd1bWVudHNBc3Qq IHYgPSBuZXcgIEFyZ3VtZW50c0FzdChwYXJlbnQoKSk7Ci0gICAgICAgICAgICAgbm9kZVN0YWNr LnB1c2godik7IHYtPnZhcmFyZyA9IHN0YXRpY19jYXN0PEFyZ0FzdCo+KHZpc2l0Tm9kZShub2Rl LT52YXJhcmcpKTsgbm9kZVN0YWNrLnBvcCgpOwotICAgICAgICAgICAgIG5vZGVTdGFjay5wdXNo KHYpOyB2LT5rd2FyZyA9IHN0YXRpY19jYXN0PEFyZ0FzdCo+KHZpc2l0Tm9kZShub2RlLT5rd2Fy ZykpOyBub2RlU3RhY2sucG9wKCk7Ci0gICAgICAgICAgICAgbm9kZVN0YWNrLnB1c2godik7IHYt PmFyZ3VtZW50cyA9IHZpc2l0Tm9kZUxpc3Q8X2FyZywgQXJnQXN0Pihub2RlLT5hcmdzKTsgbm9k ZVN0YWNrLnBvcCgpOwotICAgICAgICAgICAgIG5vZGVTdGFjay5wdXNoKHYpOyB2LT5kZWZhdWx0 VmFsdWVzID0gdmlzaXROb2RlTGlzdDxfZXhwciwgRXhwcmVzc2lvbkFzdD4obm9kZS0+ZGVmYXVs dHMpOyBub2RlU3RhY2sucG9wKCk7Ci0gICAgICAgICAgICAgbm9kZVN0YWNrLnB1c2godik7IHYt Pmt3b25seWFyZ3MgPSB2aXNpdE5vZGVMaXN0PF9hcmcsIEFyZ0FzdD4obm9kZS0+a3dvbmx5YXJn cyk7IG5vZGVTdGFjay5wb3AoKTsKLSsjZW5kaWYKLSsjaWYgUFlUSE9OX1ZFUlNJT04gPj0gUVRf VkVSU0lPTl9DSEVDSygzLCA4LCAwKQotKyAgICAgICAgICAgICAgICBBcmd1bWVudHNBc3QqIHYg PSBuZXcgIEFyZ3VtZW50c0FzdChwYXJlbnQoKSk7Ci0rICAgICAgICAgICAgbm9kZVN0YWNrLnB1 c2godik7IHYtPnZhcmFyZyA9IHN0YXRpY19jYXN0PEFyZ0FzdCo+KHZpc2l0Tm9kZShub2RlLT52 YXJhcmcpKTsgbm9kZVN0YWNrLnBvcCgpOwotKyAgICAgICAgICAgIG5vZGVTdGFjay5wdXNoKHYp OyB2LT5rd2FyZyA9IHN0YXRpY19jYXN0PEFyZ0FzdCo+KHZpc2l0Tm9kZShub2RlLT5rd2FyZykp OyBub2RlU3RhY2sucG9wKCk7Ci0rICAgICAgICAgICAgbm9kZVN0YWNrLnB1c2godik7IHYtPmFy Z3VtZW50cyA9IHZpc2l0Tm9kZUxpc3Q8X2FyZywgQXJnQXN0Pihub2RlLT5hcmdzKTsgbm9kZVN0 YWNrLnBvcCgpOwotKyAgICAgICAgICAgIG5vZGVTdGFjay5wdXNoKHYpOyB2LT5kZWZhdWx0VmFs dWVzID0gdmlzaXROb2RlTGlzdDxfZXhwciwgRXhwcmVzc2lvbkFzdD4obm9kZS0+ZGVmYXVsdHMp OyBub2RlU3RhY2sucG9wKCk7Ci0rICAgICAgICAgICAgbm9kZVN0YWNrLnB1c2godik7IHYtPmt3 b25seWFyZ3MgPSB2aXNpdE5vZGVMaXN0PF9hcmcsIEFyZ0FzdD4obm9kZS0+a3dvbmx5YXJncyk7 IG5vZGVTdGFjay5wb3AoKTsKLSsgICAgICAgICAgICBub2RlU3RhY2sucHVzaCh2KTsgdi0+cG9z b25seWFyZ3MgPSB2aXNpdE5vZGVMaXN0PF9hcmcsIEFyZ0FzdD4obm9kZS0+cG9zb25seWFyZ3Mp OyBub2RlU3RhY2sucG9wKCk7Ci0rI2VuZGlmCi0gICAgICAgICByZXR1cm4gdjsKLSAgICAgfQot IAotQEAgLTI4MCwxOCArMjkxLDIyIEBAIHByaXZhdGU6Ci0gICAgICAgICAgICAgICAgIGJyZWFr OwotICAgICAgICAgICAgIH0KLSAjZW5kaWYKLSsjaWYgUFlUSE9OX1ZFUlNJT04gPCBRVF9WRVJT SU9OX0NIRUNLKDMsIDgsIDApCi0gICAgICAgICBjYXNlIE51bV9raW5kOiB7Ci0gICAgICAgICAg ICAgICAgIE51bWJlckFzdCogdiA9IG5ldyAgTnVtYmVyQXN0KHBhcmVudCgpKTsKLSAgdi0+aXNJ bnQgPSBQeUxvbmdfQ2hlY2sobm9kZS0+di5OdW0ubik7IHYtPnZhbHVlID0gUHlMb25nX0FzTG9u Zyhub2RlLT52Lk51bS5uKTsKLSAgICAgICAgICAgICAgICAgcmVzdWx0ID0gdjsKLSAgICAgICAg ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgfQotKyNlbmRpZgotKyNpZiBQWVRIT05fVkVS U0lPTiA8IFFUX1ZFUlNJT05fQ0hFQ0soMywgOCwgMCkKLSAgICAgICAgIGNhc2UgU3RyX2tpbmQ6 IHsKLSAgICAgICAgICAgICAgICAgU3RyaW5nQXN0KiB2ID0gbmV3ICBTdHJpbmdBc3QocGFyZW50 KCkpOwotICAgICAgICAgICAgICAgICB2LT52YWx1ZSA9IFB5VW5pY29kZU9iamVjdFRvUVN0cmlu Zyhub2RlLT52LlN0ci5zKTsKLSAgICAgICAgICAgICAgICAgcmVzdWx0ID0gdjsKLSAgICAgICAg ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgfQotKyNlbmRpZgotICNpZiBQWVRIT05fVkVS U0lPTiA+PSBRVF9WRVJTSU9OX0NIRUNLKDMsIDYsIDApCi0gICAgICAgICBjYXNlIEpvaW5lZFN0 cl9raW5kOiB7Ci0gICAgICAgICAgICAgICAgIEpvaW5lZFN0cmluZ0FzdCogdiA9IG5ldyAgSm9p bmVkU3RyaW5nQXN0KHBhcmVudCgpKTsKLUBAIC0zMTAsMTIgKzMyNSwxNCBAQCBwcml2YXRlOgot ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICB9Ci0gI2VuZGlmCi0rI2lmIFBZ VEhPTl9WRVJTSU9OIDwgUVRfVkVSU0lPTl9DSEVDSygzLCA4LCAwKQotICAgICAgICAgY2FzZSBC eXRlc19raW5kOiB7Ci0gICAgICAgICAgICAgICAgIEJ5dGVzQXN0KiB2ID0gbmV3ICBCeXRlc0Fz dChwYXJlbnQoKSk7Ci0gICAgICAgICAgICAgICAgIHYtPnZhbHVlID0gUHlVbmljb2RlT2JqZWN0 VG9RU3RyaW5nKG5vZGUtPnYuQnl0ZXMucyk7Ci0gICAgICAgICAgICAgICAgIHJlc3VsdCA9IHY7 Ci0gICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgIH0KLSsjZW5kaWYKLSAgICAg ICAgIGNhc2UgQXR0cmlidXRlX2tpbmQ6IHsKLSAgICAgICAgICAgICAgICAgQXR0cmlidXRlQXN0 KiB2ID0gbmV3ICBBdHRyaWJ1dGVBc3QocGFyZW50KCkpOwotICAgICAgICAgICAgICAgICB2LT5h dHRyaWJ1dGUgPSBub2RlLT52LkF0dHJpYnV0ZS5hdHRyID8gbmV3IFB5dGhvbjo6SWRlbnRpZmll cihQeVVuaWNvZGVPYmplY3RUb1FTdHJpbmcobm9kZS0+di5BdHRyaWJ1dGUuYXR0cikpIDogbnVs bHB0cjsKLUBAIC0zNzQsMjMgKzM5MSw0MiBAQCBwcml2YXRlOgotICAgICAgICAgICAgICAgICBy ZXN1bHQgPSB2OwotICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICB9Ci0rI2lm IFBZVEhPTl9WRVJTSU9OIDwgUVRfVkVSU0lPTl9DSEVDSygzLCA4LCAwKQotICAgICAgICAgY2Fz ZSBFbGxpcHNpc19raW5kOiB7Ci0gICAgICAgICAgICAgICAgIEVsbGlwc2lzQXN0KiB2ID0gbmV3 ICBFbGxpcHNpc0FzdChwYXJlbnQoKSk7Ci0gICAgICAgICAgICAgICAgIHJlc3VsdCA9IHY7Ci0g ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgIH0KLSsjZW5kaWYKLSsjaWYgUFlU SE9OX1ZFUlNJT04gPCBRVF9WRVJTSU9OX0NIRUNLKDMsIDgsIDApCi0gICAgICAgICBjYXNlIE5h bWVDb25zdGFudF9raW5kOiB7Ci0gICAgICAgICAgICAgICAgIE5hbWVDb25zdGFudEFzdCogdiA9 IG5ldyAgTmFtZUNvbnN0YW50QXN0KHBhcmVudCgpKTsKLSAgICAgICAgICAgICAgICAgdi0+dmFs dWUgPSBub2RlLT52Lk5hbWVDb25zdGFudC52YWx1ZSA9PSBQeV9Ob25lID8gTmFtZUNvbnN0YW50 QXN0OjpOb25lIDogbm9kZS0+di5OYW1lQ29uc3RhbnQudmFsdWUgPT0gUHlfRmFsc2UgPyBOYW1l Q29uc3RhbnRBc3Q6OkZhbHNlIDogTmFtZUNvbnN0YW50QXN0OjpUcnVlOwotICAgICAgICAgICAg ICAgICByZXN1bHQgPSB2OwotICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICB9 Ci0rI2VuZGlmCi0gICAgICAgICBjYXNlIFlpZWxkRnJvbV9raW5kOiB7Ci0gICAgICAgICAgICAg ICAgIFlpZWxkRnJvbUFzdCogdiA9IG5ldyAgWWllbGRGcm9tQXN0KHBhcmVudCgpKTsKLSAgICAg ICAgICAgICAgICAgbm9kZVN0YWNrLnB1c2godik7IHYtPnZhbHVlID0gc3RhdGljX2Nhc3Q8RXhw cmVzc2lvbkFzdCo+KHZpc2l0Tm9kZShub2RlLT52LllpZWxkRnJvbS52YWx1ZSkpOyBub2RlU3Rh Y2sucG9wKCk7Ci0gICAgICAgICAgICAgICAgIHJlc3VsdCA9IHY7Ci0gICAgICAgICAgICAgICAg IGJyZWFrOwotICAgICAgICAgICAgIH0KLSsjaWYgUFlUSE9OX1ZFUlNJT04gPj0gUVRfVkVSU0lP Tl9DSEVDSygzLCA4LCAwKQotKyAgICAgICAgY2FzZSBDb25zdGFudF9raW5kOiB7Ci0rUHlPYmpl Y3QgKnZhbHVlID0gbm9kZS0+di5Db25zdGFudC52YWx1ZTtpZiAodmFsdWUgPT0gUHlfTm9uZSkg eyAgICBOYW1lQ29uc3RhbnRBc3QqIHYgPSBuZXcgTmFtZUNvbnN0YW50QXN0KHBhcmVudCgpKTsg ICAgdi0+dmFsdWUgPSBOYW1lQ29uc3RhbnRBc3Q6Ok5vbmU7ICAgIHJlc3VsdCA9IHY7fWVsc2Ug aWYgKHZhbHVlID09IFB5X1RydWUpIHsgICAgTmFtZUNvbnN0YW50QXN0KiB2ID0gbmV3ICBOYW1l Q29uc3RhbnRBc3QocGFyZW50KCkpOyAgICB2LT52YWx1ZSA9IE5hbWVDb25zdGFudEFzdDo6VHJ1 ZTsgICAgcmVzdWx0ID0gdjt9ZWxzZSBpZiAodmFsdWUgPT0gUHlfRmFsc2UpIHsgICAgTmFtZUNv bnN0YW50QXN0KiB2ID0gbmV3ICBOYW1lQ29uc3RhbnRBc3QocGFyZW50KCkpOyAgICB2LT52YWx1 ZSA9IE5hbWVDb25zdGFudEFzdDo6RmFsc2U7ICAgIHJlc3VsdCA9IHY7fWVsc2UgaWYgKHZhbHVl LT5vYl90eXBlID09ICZQeUxvbmdfVHlwZSkgeyAgICBOdW1iZXJBc3QqIHYgPSBuZXcgTnVtYmVy QXN0KHBhcmVudCgpKTsgICAgdi0+aXNJbnQgPSB0cnVlOyAgICB2LT52YWx1ZSA9IFB5TG9uZ19B c0xvbmcodmFsdWUpOyAgICByZXN1bHQgPSB2O31lbHNlIGlmICh2YWx1ZS0+b2JfdHlwZSA9PSAm UHlGbG9hdF9UeXBlIHx8IHZhbHVlLT5vYl90eXBlID09ICZQeUNvbXBsZXhfVHlwZSkgeyAgICBy ZXN1bHQgPSBuZXcgTnVtYmVyQXN0KHBhcmVudCgpKTt9ZWxzZSBpZiAodmFsdWUtPm9iX3R5cGUg PT0gJlB5VW5pY29kZV9UeXBlKSB7ICAgIFN0cmluZ0FzdCogdiA9IG5ldyBTdHJpbmdBc3QocGFy ZW50KCkpOyAgICB2LT52YWx1ZSA9IFB5VW5pY29kZU9iamVjdFRvUVN0cmluZyh2YWx1ZSk7ICAg IHJlc3VsdCA9IHY7fWVsc2UgaWYgKHZhbHVlLT5vYl90eXBlID09ICZQeUJ5dGVzX1R5cGUpIHsg ICAgcmVzdWx0ID0gbmV3IEJ5dGVzQXN0KHBhcmVudCgpKTt9ZWxzZSBpZiAodmFsdWUtPm9iX3R5 cGUgPT0gJlB5RWxsaXBzaXNfVHlwZSkgeyAgICByZXN1bHQgPSBuZXcgRWxsaXBzaXNBc3QocGFy ZW50KCkpO31lbHNlIHsgICAgcVdhcm5pbmcoKSA8PCAiVW5oYW5kbGVkIGNvbnN0YW50IHR5cGU6 ICIgPDwgdmFsdWUtPm9iX3R5cGUtPnRwX25hbWU7ICAgIFFfQVNTRVJUKGZhbHNlKTt9OwotKyAg ICAgICAgICAgICAgICBicmVhazsKLSsgICAgICAgICAgICB9Ci0rI2VuZGlmCi0rI2lmIFBZVEhP Tl9WRVJTSU9OID49IFFUX1ZFUlNJT05fQ0hFQ0soMywgOCwgMCkKLSsgICAgICAgIGNhc2UgTmFt ZWRFeHByX2tpbmQ6IHsKLSsgICAgICAgICAgICAgICAgQXNzaWdubWVudEV4cHJlc3Npb25Bc3Qq IHYgPSBuZXcgIEFzc2lnbm1lbnRFeHByZXNzaW9uQXN0KHBhcmVudCgpKTsKLSsgICAgICAgICAg ICAgICAgbm9kZVN0YWNrLnB1c2godik7IHYtPnRhcmdldCA9IHN0YXRpY19jYXN0PEV4cHJlc3Np b25Bc3QqPih2aXNpdE5vZGUobm9kZS0+di5OYW1lZEV4cHIudGFyZ2V0KSk7IG5vZGVTdGFjay5w b3AoKTsKLSsgICAgICAgICAgICAgICAgbm9kZVN0YWNrLnB1c2godik7IHYtPnZhbHVlID0gc3Rh dGljX2Nhc3Q8RXhwcmVzc2lvbkFzdCo+KHZpc2l0Tm9kZShub2RlLT52Lk5hbWVkRXhwci52YWx1 ZSkpOyBub2RlU3RhY2sucG9wKCk7Ci0rICAgICAgICAgICAgICAgIHJlc3VsdCA9IHY7Ci0rICAg ICAgICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgICAgIH0KLSsjZW5kaWYKLSAgICAgICAgIGRl ZmF1bHQ6Ci0gICAgICAgICAgICAgcVdhcm5pbmcoKSA8PCAiVW5zdXBwb3J0ZWQgX2V4cHIgQVNU IHR5cGU6ICIgPDwgbm9kZS0+a2luZDsKLSAgICAgICAgICAgICBRX0FTU0VSVChmYWxzZSk7Ci1k aWZmIC0tZ2l0IGEvcGFyc2VyL3B5dGhvbjM2LnNkZWYgYi9wYXJzZXIvcHl0aG9uMzYuc2RlZgot ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCBmNTNmZjFjLi4wMDAwMDAwCi0tLS0gYS9w YXJzZXIvcHl0aG9uMzYuc2RlZgotKysrIC9kZXYvbnVsbAotQEAgLTEsMTAyICswLDAgQEAKLS1D T01NRU5UO1RoaXMgZmlsZSBzcGVjaWZpZXMgcnVsZXMgZm9yIGEgY29udmVyc2lvbiBvZiBhIHB5 dGhvbiAoQykgdG8gYSBwbHVnaW4taW50ZXJuYWwgKEMrKykgc3ludGF4IHRyZWU7OwotLUNPTU1F TlQ7QWxsIGxpbmVzIGFyZSB0ZXJtaW5hdGVkIGJ5IGEgZG91YmxlIHNlbWljb2xvbiB0b2tlbiwg bmV3bGluZXMgYXJlIGlnbm9yZWQuOzsKLS1DT01NRU5UOy0+IHN0YW5kcyBmb3IgImNvbnZlcnQg QVNUIiwgPT4gZm9yICJjb252ZXJ0IEFTVCBsaXN0Iiwgfj4gZm9yICJtYWtlIGFuIGlkZW50aWZp ZXIiLCA6PiBpcyBhbiBhc3NpZ25tZW50IHcvbyBjb252ZXJzaW9uLCBhbmQgKj4gaXMgYW4gZW51 bSBjYXN0Ljs7Ci0tQ09NTUVOVDskPiBpcyBhIHN0cmluZyBhc3NpZ25tZW50LCArPiBpcyBhICJt aW5kbGVzcyBhc3NpZ25tZW50LCBsaWtlLCBpdCBqdXN0IGRvZXMgdi0+YXJnID0gbm9kZS0+YXJn LgotLUNPTU1FTlQ7Xz4gaXMgYSBTaW5nbGV0b24gQXNzaWdubWVudCAoY29udmVydHMgUHlfVHJ1 ZSwgUHlfRmFsc2UsIFB5X05vbmUgdG8gZW51bSkKLS1DT01NRU5UO3RoZSBDT0RFIHN0YXRlbWVu dCBjYW4gYmUgdXNlZCB0byBhZGQgY3VzdG9tIGNvZGUuOzsKLS0KLS0KLS1SVUxFX0ZPUiBfc3Rt dDtLSU5EIEV4cHJfa2luZDtBQ1RJT05TIGNyZWF0ZXxFeHByZXNzaW9uQXN0IHNldHx2YWx1ZS0+ RXhwcmVzc2lvbkFzdCx2YWx1ZTs7Ci0tUlVMRV9GT1IgX3N0bXQ7S0lORCBGdW5jdGlvbkRlZl9r aW5kO0FDVElPTlMgY3JlYXRlfEZ1bmN0aW9uRGVmaW5pdGlvbkFzdCBzZXR8bmFtZX4+bmFtZSBz ZXR8YXJndW1lbnRzLT5Bcmd1bWVudHNBc3QsYXJncwotLSAgICBzZXR8Ym9keT0+QXN0LGJvZHkg c2V0fGRlY29yYXRvcnM9PkV4cHJlc3Npb25Bc3QsZGVjb3JhdG9yX2xpc3Qgc2V0fHJldHVybnMt PkV4cHJlc3Npb25Bc3QscmV0dXJuczs7Ci0tUlVMRV9GT1IgX3N0bXQ7S0lORCBBc3luY0Z1bmN0 aW9uRGVmX2tpbmQ7QUNUSU9OUyBjcmVhdGV8RnVuY3Rpb25EZWZpbml0aW9uQXN0IHNldHxuYW1l fj5uYW1lIHNldHxhcmd1bWVudHMtPkFyZ3VtZW50c0FzdCxhcmdzCi0tICAgIHNldHxib2R5PT5B c3QsYm9keSBzZXR8ZGVjb3JhdG9ycz0+RXhwcmVzc2lvbkFzdCxkZWNvcmF0b3JfbGlzdCBzZXR8 cmV0dXJucy0+RXhwcmVzc2lvbkFzdCxyZXR1cm5zO1NJTkNFIDMuNTtDT0RFIHYtPmFzeW5jID0g dHJ1ZTs7Ci0tUlVMRV9GT1IgX3N0bXQ7S0lORCBDbGFzc0RlZl9raW5kO0FDVElPTlMgY3JlYXRl fENsYXNzRGVmaW5pdGlvbkFzdCBzZXR8bmFtZX4+bmFtZSBzZXR8YmFzZUNsYXNzZXM9PkV4cHJl c3Npb25Bc3QsYmFzZXMgc2V0fGJvZHk9PkFzdCxib2R5Ci0tICAgIHNldHxkZWNvcmF0b3JzPT5F eHByZXNzaW9uQXN0LGRlY29yYXRvcl9saXN0OzsKLS1SVUxFX0ZPUiBfc3RtdDtLSU5EIFJldHVy bl9raW5kO0FDVElPTlMgY3JlYXRlfFJldHVybkFzdCBzZXR8dmFsdWUtPkV4cHJlc3Npb25Bc3Qs dmFsdWU7OwotLVJVTEVfRk9SIF9zdG10O0tJTkQgRGVsZXRlX2tpbmQ7QUNUSU9OUyBjcmVhdGV8 RGVsZXRlQXN0IHNldHx0YXJnZXRzPT5FeHByZXNzaW9uQXN0LHRhcmdldHM7OwotLVJVTEVfRk9S IF9zdG10O0tJTkQgQXNzaWduX2tpbmQ7QUNUSU9OUyBjcmVhdGV8QXNzaWdubWVudEFzdCBzZXR8 dGFyZ2V0cz0+RXhwcmVzc2lvbkFzdCx0YXJnZXRzIHNldHx2YWx1ZS0+RXhwcmVzc2lvbkFzdCx2 YWx1ZTs7Ci0tUlVMRV9GT1IgX3N0bXQ7S0lORCBBdWdBc3NpZ25fa2luZDtBQ1RJT05TIGNyZWF0 ZXxBdWdtZW50ZWRBc3NpZ25tZW50QXN0IHNldHx0YXJnZXQtPkV4cHJlc3Npb25Bc3QsdGFyZ2V0 IHNldHxvcCo+T3BlcmF0b3JUeXBlcyxvcCBzZXR8dmFsdWUtPkV4cHJlc3Npb25Bc3QsdmFsdWU7 OwotLVJVTEVfRk9SIF9zdG10O0tJTkQgQW5uQXNzaWduX2tpbmQ7QUNUSU9OUyBjcmVhdGV8QW5u b3RhdGlvbkFzc2lnbm1lbnRBc3Qgc2V0fHRhcmdldC0+RXhwcmVzc2lvbkFzdCx0YXJnZXQgc2V0 fGFubm90YXRpb24tPkV4cHJlc3Npb25Bc3QsYW5ub3RhdGlvbiBzZXR8dmFsdWUtPkV4cHJlc3Np b25Bc3QsdmFsdWU7U0lOQ0UgMy42OzsKLS1SVUxFX0ZPUiBfc3RtdDtLSU5EIEZvcl9raW5kO0FD VElPTlMgY3JlYXRlfEZvckFzdCBzZXR8dGFyZ2V0LT5FeHByZXNzaW9uQXN0LHRhcmdldCBzZXR8 aXRlcmF0b3ItPkV4cHJlc3Npb25Bc3QsaXRlciBzZXR8Ym9keT0+QXN0LGJvZHkgc2V0fG9yZWxz ZT0+QXN0LG9yZWxzZTs7Ci0tUlVMRV9GT1IgX3N0bXQ7S0lORCBBc3luY0Zvcl9raW5kO0FDVElP TlMgY3JlYXRlfEZvckFzdCBzZXR8dGFyZ2V0LT5FeHByZXNzaW9uQXN0LHRhcmdldCBzZXR8aXRl cmF0b3ItPkV4cHJlc3Npb25Bc3QsaXRlciBzZXR8Ym9keT0+QXN0LGJvZHkgc2V0fG9yZWxzZT0+ QXN0LG9yZWxzZTtTSU5DRSAzLjU7OwotLVJVTEVfRk9SIF9zdG10O0tJTkQgV2hpbGVfa2luZDtB Q1RJT05TIGNyZWF0ZXxXaGlsZUFzdCBzZXR8Y29uZGl0aW9uLT5FeHByZXNzaW9uQXN0LHRlc3Qg c2V0fGJvZHk9PkFzdCxib2R5IHNldHxvcmVsc2U9PkFzdCxvcmVsc2U7OwotLVJVTEVfRk9SIF9z dG10O0tJTkQgSWZfa2luZDtBQ1RJT05TIGNyZWF0ZXxJZkFzdCBzZXR8Y29uZGl0aW9uLT5FeHBy ZXNzaW9uQXN0LHRlc3Qgc2V0fGJvZHk9PkFzdCxib2R5IHNldHxvcmVsc2U9PkFzdCxvcmVsc2U7 OwotLVJVTEVfRk9SIF9zdG10O0tJTkQgV2l0aF9raW5kO0FDVElPTlMgY3JlYXRlfFdpdGhBc3Qg c2V0fGJvZHk9PkFzdCxib2R5IHNldHxpdGVtcz0+V2l0aEl0ZW1Bc3QsaXRlbXM7OwotLVJVTEVf Rk9SIF9zdG10O0tJTkQgQXN5bmNXaXRoX2tpbmQ7QUNUSU9OUyBjcmVhdGV8V2l0aEFzdCBzZXR8 Ym9keT0+QXN0LGJvZHkgc2V0fGl0ZW1zPT5XaXRoSXRlbUFzdCxpdGVtcztTSU5DRSAzLjU7Owot LQotLUNPTU1FTlQ7RklYTUU6IHRoZSBzdHJ1Y3QgUmFpc2UgaGFzIGNoYW5nZWQsIHNvIHRoZSBm b2xsb3dpbmcgbGluZSBpcyBsaWtlbHkgd3Jvbmc7OwotLVJVTEVfRk9SIF9zdG10O0tJTkQgUmFp c2Vfa2luZDtBQ1RJT05TIGNyZWF0ZXxSYWlzZUFzdCBzZXR8dHlwZS0+RXhwcmVzc2lvbkFzdCxl eGM7OwotLVJVTEVfRk9SIF9zdG10O0tJTkQgVHJ5X2tpbmQ7QUNUSU9OUyBjcmVhdGV8VHJ5QXN0 IHNldHxib2R5PT5Bc3QsYm9keSBzZXR8aGFuZGxlcnM9PkV4Y2VwdGlvbkhhbmRsZXJBc3QsaGFu ZGxlcnMgc2V0fG9yZWxzZT0+QXN0LG9yZWxzZSBzZXR8ZmluYWxseT0+QXN0LGZpbmFsYm9keTs7 Ci0tUlVMRV9GT1IgX3N0bXQ7S0lORCBBc3NlcnRfa2luZDtBQ1RJT05TIGNyZWF0ZXxBc3NlcnRp b25Bc3Qgc2V0fGNvbmRpdGlvbi0+RXhwcmVzc2lvbkFzdCx0ZXN0IHNldHxtZXNzYWdlLT5FeHBy ZXNzaW9uQXN0LG1zZzs7Ci0tUlVMRV9GT1IgX3N0bXQ7S0lORCBJbXBvcnRfa2luZDtBQ1RJT05T IGNyZWF0ZXxJbXBvcnRBc3Qgc2V0fG5hbWVzPT5BbGlhc0FzdCxuYW1lczs7Ci0tUlVMRV9GT1Ig X3N0bXQ7S0lORCBJbXBvcnRGcm9tX2tpbmQ7QUNUSU9OUyBjcmVhdGV8SW1wb3J0RnJvbUFzdCBz ZXR8bW9kdWxlfj5tb2R1bGUgc2V0fG5hbWVzPT5BbGlhc0FzdCxuYW1lcyBzZXR8bGV2ZWw6Pmxl dmVsOzsKLS1SVUxFX0ZPUiBfc3RtdDtLSU5EIEdsb2JhbF9raW5kO0FDVElPTlMgY3JlYXRlfEds b2JhbEFzdCBzZXR8bmFtZXM9PklkZW50aWZpZXIsbmFtZXM7OwotLVJVTEVfRk9SIF9zdG10O0tJ TkQgQnJlYWtfa2luZDtBQ1RJT05TIGNyZWF0ZXxCcmVha0FzdDs7Ci0tUlVMRV9GT1IgX3N0bXQ7 S0lORCBDb250aW51ZV9raW5kO0FDVElPTlMgY3JlYXRlfENvbnRpbnVlQXN0OzsKLS1SVUxFX0ZP UiBfc3RtdDtLSU5EIFBhc3Nfa2luZDtBQ1RJT05TIGNyZWF0ZXxQYXNzQXN0OzsKLS1SVUxFX0ZP UiBfc3RtdDtLSU5EIE5vbmxvY2FsX2tpbmQ7QUNUSU9OUyBjcmVhdGV8Tm9ubG9jYWxBc3Q7Owot LQotLVJVTEVfRk9SIF9leHByO0tJTkQgQXdhaXRfa2luZDtBQ1RJT05TIGNyZWF0ZXxBd2FpdEFz dCBzZXR8dmFsdWUtPkV4cHJlc3Npb25Bc3QsdmFsdWU7U0lOQ0UgMy41OzsKLS1SVUxFX0ZPUiBf ZXhwcjtLSU5EIEJvb2xPcF9raW5kO0FDVElPTlMgY3JlYXRlfEJvb2xlYW5PcGVyYXRpb25Bc3Qg c2V0fHR5cGUqPkJvb2xlYW5PcGVyYXRpb25UeXBlcyxvcCBzZXR8dmFsdWVzPT5FeHByZXNzaW9u QXN0LHZhbHVlczs7Ci0tUlVMRV9GT1IgX2V4cHI7S0lORCBCaW5PcF9raW5kO0FDVElPTlMgY3Jl YXRlfEJpbmFyeU9wZXJhdGlvbkFzdCBzZXR8dHlwZSo+T3BlcmF0b3JUeXBlcyxvcCBzZXR8bGhz LT5FeHByZXNzaW9uQXN0LGxlZnQgc2V0fHJocy0+RXhwcmVzc2lvbkFzdCxyaWdodDs7Ci0tUlVM RV9GT1IgX2V4cHI7S0lORCBVbmFyeU9wX2tpbmQ7QUNUSU9OUyBjcmVhdGV8VW5hcnlPcGVyYXRp b25Bc3Qgc2V0fHR5cGUqPlVuYXJ5T3BlcmF0b3JUeXBlcyxvcCBzZXR8b3BlcmFuZC0+RXhwcmVz c2lvbkFzdCxvcGVyYW5kOzsKLS1SVUxFX0ZPUiBfZXhwcjtLSU5EIExhbWJkYV9raW5kO0FDVElP TlMgY3JlYXRlfExhbWJkYUFzdCBzZXR8YXJndW1lbnRzLT5Bcmd1bWVudHNBc3QsYXJncyBzZXR8 Ym9keS0+RXhwcmVzc2lvbkFzdCxib2R5OzsKLS1SVUxFX0ZPUiBfZXhwcjtLSU5EIElmRXhwX2tp bmQ7QUNUSU9OUyBjcmVhdGV8SWZFeHByZXNzaW9uQXN0IHNldHxjb25kaXRpb24tPkV4cHJlc3Np b25Bc3QsdGVzdCBzZXR8Ym9keS0+RXhwcmVzc2lvbkFzdCxib2R5IHNldHxvcmVsc2UtPkV4cHJl c3Npb25Bc3Qsb3JlbHNlOzsKLS1SVUxFX0ZPUiBfZXhwcjtLSU5EIERpY3Rfa2luZDtBQ1RJT05T IGNyZWF0ZXxEaWN0QXN0IHNldHxrZXlzPT5FeHByZXNzaW9uQXN0LGtleXMgc2V0fHZhbHVlcz0+ RXhwcmVzc2lvbkFzdCx2YWx1ZXM7OwotLVJVTEVfRk9SIF9leHByO0tJTkQgU2V0X2tpbmQ7QUNU SU9OUyBjcmVhdGV8U2V0QXN0IHNldHxlbGVtZW50cz0+RXhwcmVzc2lvbkFzdCxlbHRzOzsKLS1S VUxFX0ZPUiBfZXhwcjtLSU5EIExpc3RDb21wX2tpbmQ7QUNUSU9OUyBjcmVhdGV8TGlzdENvbXBy ZWhlbnNpb25Bc3Qgc2V0fGVsZW1lbnQtPkV4cHJlc3Npb25Bc3QsZWx0IHNldHxnZW5lcmF0b3Jz PT5Db21wcmVoZW5zaW9uQXN0LGdlbmVyYXRvcnM7OwotLVJVTEVfRk9SIF9leHByO0tJTkQgU2V0 Q29tcF9raW5kO0FDVElPTlMgY3JlYXRlfFNldENvbXByZWhlbnNpb25Bc3Qgc2V0fGVsZW1lbnQt PkV4cHJlc3Npb25Bc3QsZWx0IHNldHxnZW5lcmF0b3JzPT5Db21wcmVoZW5zaW9uQXN0LGdlbmVy YXRvcnM7OwotLVJVTEVfRk9SIF9leHByO0tJTkQgRGljdENvbXBfa2luZDtBQ1RJT05TIGNyZWF0 ZXxEaWN0aW9uYXJ5Q29tcHJlaGVuc2lvbkFzdCBzZXR8a2V5LT5FeHByZXNzaW9uQXN0LGtleSBz ZXR8dmFsdWUtPkV4cHJlc3Npb25Bc3QsdmFsdWUgc2V0fGdlbmVyYXRvcnM9PkNvbXByZWhlbnNp b25Bc3QsZ2VuZXJhdG9yczs7Ci0tUlVMRV9GT1IgX2V4cHI7S0lORCBHZW5lcmF0b3JFeHBfa2lu ZDtBQ1RJT05TIGNyZWF0ZXxHZW5lcmF0b3JFeHByZXNzaW9uQXN0IHNldHxlbGVtZW50LT5FeHBy ZXNzaW9uQXN0LGVsdCBzZXR8Z2VuZXJhdG9ycz0+Q29tcHJlaGVuc2lvbkFzdCxnZW5lcmF0b3Jz OzsKLS1SVUxFX0ZPUiBfZXhwcjtLSU5EIFlpZWxkX2tpbmQ7QUNUSU9OUyBjcmVhdGV8WWllbGRB c3Qgc2V0fHZhbHVlLT5FeHByZXNzaW9uQXN0LHZhbHVlOzsKLS1SVUxFX0ZPUiBfZXhwcjtLSU5E IENvbXBhcmVfa2luZDtBQ1RJT05TIGNyZWF0ZXxDb21wYXJlQXN0IHNldHxsZWZ0bW9zdEVsZW1l bnQtPkV4cHJlc3Npb25Bc3QsbGVmdCBzZXR8b3BlcmF0b3JzIz5Db21wYXJpc29uT3BlcmF0b3JU eXBlcyxvcHMgc2V0fGNvbXBhcmFuZHM9PkV4cHJlc3Npb25Bc3QsY29tcGFyYXRvcnM7OwotLVJV TEVfRk9SIF9leHByO0tJTkQgQ2FsbF9raW5kO0FDVElPTlMgY3JlYXRlfENhbGxBc3Qgc2V0fGZ1 bmN0aW9uLT5FeHByZXNzaW9uQXN0LGZ1bmMgc2V0fGFyZ3VtZW50cz0+RXhwcmVzc2lvbkFzdCxh cmdzIHNldHxrZXl3b3Jkcz0+S2V5d29yZEFzdCxrZXl3b3JkcztTSU5DRSAzLjU7OwotLVJVTEVf Rk9SIF9leHByO0tJTkQgQ2FsbF9raW5kO0FDVElPTlMgY3JlYXRlfENhbGxBc3Qgc2V0fGZ1bmN0 aW9uLT5FeHByZXNzaW9uQXN0LGZ1bmMgc2V0fGFyZ3VtZW50cz0+RXhwcmVzc2lvbkFzdCxhcmdz IHNldHxrZXl3b3Jkcz0+S2V5d29yZEFzdCxrZXl3b3JkcztCRUZPUkUgMy41OwotLUNPREUgLyog Q29udmVydCAzLjQgdW5wYWNrZWQtYXJncyBBU1QgdG8gbWF0Y2ggdGhlIG5ldyBmb3JtYXQgZnJv bSAzLjUrICovCi0taWYgKG5vZGUtPnYuQ2FsbC5zdGFyYXJncykgewotLSAgICBub2RlU3RhY2su cHVzaCh2KTsKLS0gICAgYXV0byBzdGFycmVkID0gbmV3IFN0YXJyZWRBc3Qodik7Ci0tICAgIHN0 YXJyZWQtPmNvbnRleHQgPSBFeHByZXNzaW9uQXN0OjpDb250ZXh0OjpMb2FkOwotLSAgICBub2Rl U3RhY2sucHVzaChzdGFycmVkKTsKLS0gICAgc3RhcnJlZC0+dmFsdWUgPSBzdGF0aWNfY2FzdDxF eHByZXNzaW9uQXN0Kj4odmlzaXROb2RlKG5vZGUtPnYuQ2FsbC5zdGFyYXJncykpOwotLSAgICBu b2RlU3RhY2sucG9wKCk7Ci0tICAgIHYtPmFyZ3VtZW50cy5hcHBlbmQoc3RhcnJlZCk7Ci0tICAg IG5vZGVTdGFjay5wb3AoKTsKLS19OwotLWlmIChub2RlLT52LkNhbGwua3dhcmdzKSB7Ci0tICAg IG5vZGVTdGFjay5wdXNoKHYpOwotLSAgICBhdXRvIGt3YXJncyA9IG5ldyBLZXl3b3JkQXN0KHYp OwotLSAgICBub2RlU3RhY2sucHVzaChrd2FyZ3MpOwotLSAgICBrd2FyZ3MtPnZhbHVlID0gc3Rh dGljX2Nhc3Q8RXhwcmVzc2lvbkFzdCo+KHZpc2l0Tm9kZShub2RlLT52LkNhbGwua3dhcmdzKSk7 Ci0tICAgIG5vZGVTdGFjay5wb3AoKTsKLS0gICAgdi0+a2V5d29yZHMuYXBwZW5kKGt3YXJncyk7 Ci0tICAgIG5vZGVTdGFjay5wb3AoKTsKLS19OzsKLS1SVUxFX0ZPUiBfZXhwcjtLSU5EIE51bV9r aW5kO0FDVElPTlMgY3JlYXRlfE51bWJlckFzdDtDT0RFIHYtPmlzSW50ID0gUHlMb25nX0NoZWNr KG5vZGUtPnYuTnVtLm4pOyB2LT52YWx1ZSA9IFB5TG9uZ19Bc0xvbmcobm9kZS0+di5OdW0ubik7 OwotLVJVTEVfRk9SIF9leHByO0tJTkQgU3RyX2tpbmQ7QUNUSU9OUyBjcmVhdGV8U3RyaW5nQXN0 IHNldHx2YWx1ZSQ+czs7Ci0tUlVMRV9GT1IgX2V4cHI7S0lORCBKb2luZWRTdHJfa2luZDtBQ1RJ T05TIGNyZWF0ZXxKb2luZWRTdHJpbmdBc3Qgc2V0fHZhbHVlcz0+RXhwcmVzc2lvbkFzdCx2YWx1 ZXM7U0lOQ0UgMy42OzsKLS1SVUxFX0ZPUiBfZXhwcjtLSU5EIEZvcm1hdHRlZFZhbHVlX2tpbmQ7 QUNUSU9OUyBjcmVhdGV8Rm9ybWF0dGVkVmFsdWVBc3Qgc2V0fHZhbHVlLT5FeHByZXNzaW9uQXN0 LHZhbHVlIHNldHxjb252ZXJzaW9uOj5jb252ZXJzaW9uIHNldHxmb3JtYXRTcGVjLT5FeHByZXNz aW9uQXN0LGZvcm1hdF9zcGVjO1NJTkNFIDMuNjs7Ci0tUlVMRV9GT1IgX2V4cHI7S0lORCBCeXRl c19raW5kO0FDVElPTlMgY3JlYXRlfEJ5dGVzQXN0IHNldHx2YWx1ZSQ+czs7Ci0tUlVMRV9GT1Ig X2V4cHI7S0lORCBBdHRyaWJ1dGVfa2luZDtBQ1RJT05TIGNyZWF0ZXxBdHRyaWJ1dGVBc3Qgc2V0 fGF0dHJpYnV0ZX4+YXR0ciBzZXR8dmFsdWUtPkV4cHJlc3Npb25Bc3QsdmFsdWUgc2V0fGNvbnRl eHQqPkNvbnRleHQsY3R4OzsKLS1SVUxFX0ZPUiBfZXhwcjtLSU5EIFN1YnNjcmlwdF9raW5kO0FD VElPTlMgY3JlYXRlfFN1YnNjcmlwdEFzdCBzZXR8dmFsdWUtPkV4cHJlc3Npb25Bc3QsdmFsdWUg c2V0fHNsaWNlLT5TbGljZUFzdCxzbGljZSBzZXR8Y29udGV4dCo+Q29udGV4dCxjdHg7OwotLVJV TEVfRk9SIF9leHByO0tJTkQgU3RhcnJlZF9raW5kO0FDVElPTlMgY3JlYXRlfFN0YXJyZWRBc3Qg c2V0fHZhbHVlLT5FeHByZXNzaW9uQXN0LHZhbHVlIHNldHxjb250ZXh0Kj5Db250ZXh0LGN0eDs7 Ci0tUlVMRV9GT1IgX2V4cHI7S0lORCBOYW1lX2tpbmQ7QUNUSU9OUyBjcmVhdGV8TmFtZUFzdCBz ZXR8aWRlbnRpZmllcn4+aWQgc2V0fGNvbnRleHQqPkNvbnRleHQsY3R4OzsKLS1SVUxFX0ZPUiBf ZXhwcjtLSU5EIExpc3Rfa2luZDtBQ1RJT05TIGNyZWF0ZXxMaXN0QXN0IHNldHxlbGVtZW50cz0+ RXhwcmVzc2lvbkFzdCxlbHRzIHNldHxjb250ZXh0Kj5Db250ZXh0LGN0eDs7Ci0tUlVMRV9GT1Ig X2V4cHI7S0lORCBUdXBsZV9raW5kO0FDVElPTlMgY3JlYXRlfFR1cGxlQXN0IHNldHxlbGVtZW50 cz0+RXhwcmVzc2lvbkFzdCxlbHRzIHNldHxjb250ZXh0Kj5Db250ZXh0LGN0eDs7Ci0tUlVMRV9G T1IgX2V4cHI7S0lORCBFbGxpcHNpc19raW5kO0FDVElPTlMgY3JlYXRlfEVsbGlwc2lzQXN0OzsK LS1SVUxFX0ZPUiBfZXhwcjtLSU5EIE5hbWVDb25zdGFudF9raW5kO0FDVElPTlMgY3JlYXRlfE5h bWVDb25zdGFudEFzdCBzZXR8dmFsdWVfPnZhbHVlOzsKLS1SVUxFX0ZPUiBfZXhwcjtLSU5EIFlp ZWxkRnJvbV9raW5kO0FDVElPTlMgY3JlYXRlfFlpZWxkRnJvbUFzdCBzZXR8dmFsdWUtPkV4cHJl c3Npb25Bc3QsdmFsdWU7OwotLQotLVJVTEVfRk9SIF9zbGljZTtLSU5EIFNsaWNlX2tpbmQ7QUNU SU9OUyBjcmVhdGV8U2xpY2VBc3Qgc2V0fGxvd2VyLT5FeHByZXNzaW9uQXN0LGxvd2VyIHNldHx1 cHBlci0+RXhwcmVzc2lvbkFzdCx1cHBlciBzZXR8c3RlcC0+RXhwcmVzc2lvbkFzdCxzdGVwOzsK LS1SVUxFX0ZPUiBfc2xpY2U7S0lORCBFeHRTbGljZV9raW5kO0FDVElPTlMgY3JlYXRlfEV4dGVu ZGVkU2xpY2VBc3Qgc2V0fGRpbXM9PlNsaWNlQXN0LGRpbXM7OwotLVJVTEVfRk9SIF9zbGljZTtL SU5EIEluZGV4X2tpbmQ7QUNUSU9OUyBjcmVhdGV8SW5kZXhBc3Qgc2V0fHZhbHVlLT5FeHByZXNz aW9uQXN0LHZhbHVlOzsKLS0KLS0KLS1SVUxFX0ZPUiBfY29tcHJlaGVuc2lvbjtLSU5EIGFueTtB Q1RJT05TIGNyZWF0ZXxDb21wcmVoZW5zaW9uQXN0IHNldHx0YXJnZXQtPkV4cHJlc3Npb25Bc3Qs dGFyZ2V0IHNldHxpdGVyYXRvci0+RXhwcmVzc2lvbkFzdCxpdGVyIHNldHxjb25kaXRpb25zPT5F eHByZXNzaW9uQXN0LGlmczs7Ci0tUlVMRV9GT1IgX2V4Y2VwdGhhbmRsZXI7S0lORCBFeGNlcHRI YW5kbGVyX2tpbmQ7QUNUSU9OUyBjcmVhdGV8RXhjZXB0aW9uSGFuZGxlckFzdCBzZXR8dHlwZS0+ RXhwcmVzc2lvbkFzdCx0eXBlIHNldHxuYW1lfj5uYW1lIHNldHxib2R5PT5Bc3QsYm9keTs7Ci0t UlVMRV9GT1IgX2FyZ3VtZW50cztLSU5EIGFueTtBQ1RJT05TIGNyZWF0ZXxBcmd1bWVudHNBc3Qg c2V0fHZhcmFyZy0+QXJnQXN0LHZhcmFyZyBzZXR8a3dhcmctPkFyZ0FzdCxrd2FyZyBzZXR8YXJn dW1lbnRzPT5BcmdBc3QsYXJncyBzZXR8ZGVmYXVsdFZhbHVlcz0+RXhwcmVzc2lvbkFzdCxkZWZh dWx0cyBzZXR8a3dvbmx5YXJncz0+QXJnQXN0LGt3b25seWFyZ3M7OwotLVJVTEVfRk9SIF9hcmc7 S0lORCBhbnk7QUNUSU9OUyBjcmVhdGV8QXJnQXN0IHNldHxhcmd1bWVudE5hbWV+PmFyZyBzZXR8 YW5ub3RhdGlvbi0+RXhwcmVzc2lvbkFzdCxhbm5vdGF0aW9uOzsKLS1SVUxFX0ZPUiBfa2V5d29y ZDtLSU5EIGFueTtBQ1RJT05TIGNyZWF0ZXxLZXl3b3JkQXN0IHNldHxhcmd1bWVudE5hbWV+PmFy ZyBzZXR8dmFsdWUtPkV4cHJlc3Npb25Bc3QsdmFsdWU7OwotLVJVTEVfRk9SIF9hbGlhcztLSU5E IGFueTtBQ1RJT05TIGNyZWF0ZXxBbGlhc0FzdCBzZXR8bmFtZX4+bmFtZSBzZXR8YXNOYW1lfj5h c25hbWU7OwotLVJVTEVfRk9SIF93aXRoaXRlbTtLSU5EIGFueTsgQUNUSU9OUyBjcmVhdGV8V2l0 aEl0ZW1Bc3Qgc2V0fGNvbnRleHRFeHByZXNzaW9uLT5FeHByZXNzaW9uQXN0LGNvbnRleHRfZXhw ciBzZXR8b3B0aW9uYWxWYXJzLT5FeHByZXNzaW9uQXN0LG9wdGlvbmFsX3ZhcnM7OwotZGlmZiAt LWdpdCBhL3BhcnNlci9weXRob24zOC5zZGVmIGIvcGFyc2VyL3B5dGhvbjM4LnNkZWYKLW5ldyBm aWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4zMGQ5Zjk1Ci0tLS0gL2Rldi9udWxsCi0r KysgYi9wYXJzZXIvcHl0aG9uMzguc2RlZgotQEAgLTAsMCArMSwxNDUgQEAKLStDT01NRU5UO1Ro aXMgZmlsZSBzcGVjaWZpZXMgcnVsZXMgZm9yIGEgY29udmVyc2lvbiBvZiBhIHB5dGhvbiAoQykg dG8gYSBwbHVnaW4taW50ZXJuYWwgKEMrKykgc3ludGF4IHRyZWU7OwotK0NPTU1FTlQ7QWxsIGxp bmVzIGFyZSB0ZXJtaW5hdGVkIGJ5IGEgZG91YmxlIHNlbWljb2xvbiB0b2tlbiwgbmV3bGluZXMg YXJlIGlnbm9yZWQuOzsKLStDT01NRU5UOy0+IHN0YW5kcyBmb3IgImNvbnZlcnQgQVNUIiwgPT4g Zm9yICJjb252ZXJ0IEFTVCBsaXN0Iiwgfj4gZm9yICJtYWtlIGFuIGlkZW50aWZpZXIiLCA6PiBp cyBhbiBhc3NpZ25tZW50IHcvbyBjb252ZXJzaW9uLCBhbmQgKj4gaXMgYW4gZW51bSBjYXN0Ljs7 Ci0rQ09NTUVOVDskPiBpcyBhIHN0cmluZyBhc3NpZ25tZW50LCArPiBpcyBhICJtaW5kbGVzcyBh c3NpZ25tZW50LCBsaWtlLCBpdCBqdXN0IGRvZXMgdi0+YXJnID0gbm9kZS0+YXJnLgotK0NPTU1F TlQ7Xz4gaXMgYSBTaW5nbGV0b24gQXNzaWdubWVudCAoY29udmVydHMgUHlfVHJ1ZSwgUHlfRmFs c2UsIFB5X05vbmUgdG8gZW51bSkKLStDT01NRU5UO3RoZSBDT0RFIHN0YXRlbWVudCBjYW4gYmUg dXNlZCB0byBhZGQgY3VzdG9tIGNvZGUuOzsKLSsKLSsKLStSVUxFX0ZPUiBfc3RtdDtLSU5EIEV4 cHJfa2luZDtBQ1RJT05TIGNyZWF0ZXxFeHByZXNzaW9uQXN0IHNldHx2YWx1ZS0+RXhwcmVzc2lv bkFzdCx2YWx1ZTs7Ci0rUlVMRV9GT1IgX3N0bXQ7S0lORCBGdW5jdGlvbkRlZl9raW5kO0FDVElP TlMgY3JlYXRlfEZ1bmN0aW9uRGVmaW5pdGlvbkFzdCBzZXR8bmFtZX4+bmFtZSBzZXR8YXJndW1l bnRzLT5Bcmd1bWVudHNBc3QsYXJncwotKyAgICBzZXR8Ym9keT0+QXN0LGJvZHkgc2V0fGRlY29y YXRvcnM9PkV4cHJlc3Npb25Bc3QsZGVjb3JhdG9yX2xpc3Qgc2V0fHJldHVybnMtPkV4cHJlc3Np b25Bc3QscmV0dXJuczs7Ci0rUlVMRV9GT1IgX3N0bXQ7S0lORCBBc3luY0Z1bmN0aW9uRGVmX2tp bmQ7QUNUSU9OUyBjcmVhdGV8RnVuY3Rpb25EZWZpbml0aW9uQXN0IHNldHxuYW1lfj5uYW1lIHNl dHxhcmd1bWVudHMtPkFyZ3VtZW50c0FzdCxhcmdzCi0rICAgIHNldHxib2R5PT5Bc3QsYm9keSBz ZXR8ZGVjb3JhdG9ycz0+RXhwcmVzc2lvbkFzdCxkZWNvcmF0b3JfbGlzdCBzZXR8cmV0dXJucy0+ RXhwcmVzc2lvbkFzdCxyZXR1cm5zO1NJTkNFIDMuNTtDT0RFIHYtPmFzeW5jID0gdHJ1ZTs7Ci0r UlVMRV9GT1IgX3N0bXQ7S0lORCBDbGFzc0RlZl9raW5kO0FDVElPTlMgY3JlYXRlfENsYXNzRGVm aW5pdGlvbkFzdCBzZXR8bmFtZX4+bmFtZSBzZXR8YmFzZUNsYXNzZXM9PkV4cHJlc3Npb25Bc3Qs YmFzZXMgc2V0fGJvZHk9PkFzdCxib2R5Ci0rICAgIHNldHxkZWNvcmF0b3JzPT5FeHByZXNzaW9u QXN0LGRlY29yYXRvcl9saXN0OzsKLStSVUxFX0ZPUiBfc3RtdDtLSU5EIFJldHVybl9raW5kO0FD VElPTlMgY3JlYXRlfFJldHVybkFzdCBzZXR8dmFsdWUtPkV4cHJlc3Npb25Bc3QsdmFsdWU7Owot K1JVTEVfRk9SIF9zdG10O0tJTkQgRGVsZXRlX2tpbmQ7QUNUSU9OUyBjcmVhdGV8RGVsZXRlQXN0 IHNldHx0YXJnZXRzPT5FeHByZXNzaW9uQXN0LHRhcmdldHM7OwotK1JVTEVfRk9SIF9zdG10O0tJ TkQgQXNzaWduX2tpbmQ7QUNUSU9OUyBjcmVhdGV8QXNzaWdubWVudEFzdCBzZXR8dGFyZ2V0cz0+ RXhwcmVzc2lvbkFzdCx0YXJnZXRzIHNldHx2YWx1ZS0+RXhwcmVzc2lvbkFzdCx2YWx1ZTs7Ci0r UlVMRV9GT1IgX3N0bXQ7S0lORCBBdWdBc3NpZ25fa2luZDtBQ1RJT05TIGNyZWF0ZXxBdWdtZW50 ZWRBc3NpZ25tZW50QXN0IHNldHx0YXJnZXQtPkV4cHJlc3Npb25Bc3QsdGFyZ2V0IHNldHxvcCo+ T3BlcmF0b3JUeXBlcyxvcCBzZXR8dmFsdWUtPkV4cHJlc3Npb25Bc3QsdmFsdWU7OwotK1JVTEVf Rk9SIF9zdG10O0tJTkQgQW5uQXNzaWduX2tpbmQ7QUNUSU9OUyBjcmVhdGV8QW5ub3RhdGlvbkFz c2lnbm1lbnRBc3Qgc2V0fHRhcmdldC0+RXhwcmVzc2lvbkFzdCx0YXJnZXQgc2V0fGFubm90YXRp b24tPkV4cHJlc3Npb25Bc3QsYW5ub3RhdGlvbiBzZXR8dmFsdWUtPkV4cHJlc3Npb25Bc3QsdmFs dWU7U0lOQ0UgMy42OzsKLStSVUxFX0ZPUiBfc3RtdDtLSU5EIEZvcl9raW5kO0FDVElPTlMgY3Jl YXRlfEZvckFzdCBzZXR8dGFyZ2V0LT5FeHByZXNzaW9uQXN0LHRhcmdldCBzZXR8aXRlcmF0b3It PkV4cHJlc3Npb25Bc3QsaXRlciBzZXR8Ym9keT0+QXN0LGJvZHkgc2V0fG9yZWxzZT0+QXN0LG9y ZWxzZTs7Ci0rUlVMRV9GT1IgX3N0bXQ7S0lORCBBc3luY0Zvcl9raW5kO0FDVElPTlMgY3JlYXRl fEZvckFzdCBzZXR8dGFyZ2V0LT5FeHByZXNzaW9uQXN0LHRhcmdldCBzZXR8aXRlcmF0b3ItPkV4 cHJlc3Npb25Bc3QsaXRlciBzZXR8Ym9keT0+QXN0LGJvZHkgc2V0fG9yZWxzZT0+QXN0LG9yZWxz ZTtTSU5DRSAzLjU7OwotK1JVTEVfRk9SIF9zdG10O0tJTkQgV2hpbGVfa2luZDtBQ1RJT05TIGNy ZWF0ZXxXaGlsZUFzdCBzZXR8Y29uZGl0aW9uLT5FeHByZXNzaW9uQXN0LHRlc3Qgc2V0fGJvZHk9 PkFzdCxib2R5IHNldHxvcmVsc2U9PkFzdCxvcmVsc2U7OwotK1JVTEVfRk9SIF9zdG10O0tJTkQg SWZfa2luZDtBQ1RJT05TIGNyZWF0ZXxJZkFzdCBzZXR8Y29uZGl0aW9uLT5FeHByZXNzaW9uQXN0 LHRlc3Qgc2V0fGJvZHk9PkFzdCxib2R5IHNldHxvcmVsc2U9PkFzdCxvcmVsc2U7OwotK1JVTEVf Rk9SIF9zdG10O0tJTkQgV2l0aF9raW5kO0FDVElPTlMgY3JlYXRlfFdpdGhBc3Qgc2V0fGJvZHk9 PkFzdCxib2R5IHNldHxpdGVtcz0+V2l0aEl0ZW1Bc3QsaXRlbXM7OwotK1JVTEVfRk9SIF9zdG10 O0tJTkQgQXN5bmNXaXRoX2tpbmQ7QUNUSU9OUyBjcmVhdGV8V2l0aEFzdCBzZXR8Ym9keT0+QXN0 LGJvZHkgc2V0fGl0ZW1zPT5XaXRoSXRlbUFzdCxpdGVtcztTSU5DRSAzLjU7OwotKwotK0NPTU1F TlQ7RklYTUU6IHRoZSBzdHJ1Y3QgUmFpc2UgaGFzIGNoYW5nZWQsIHNvIHRoZSBmb2xsb3dpbmcg bGluZSBpcyBsaWtlbHkgd3Jvbmc7OwotK1JVTEVfRk9SIF9zdG10O0tJTkQgUmFpc2Vfa2luZDtB Q1RJT05TIGNyZWF0ZXxSYWlzZUFzdCBzZXR8dHlwZS0+RXhwcmVzc2lvbkFzdCxleGM7OwotK1JV TEVfRk9SIF9zdG10O0tJTkQgVHJ5X2tpbmQ7QUNUSU9OUyBjcmVhdGV8VHJ5QXN0IHNldHxib2R5 PT5Bc3QsYm9keSBzZXR8aGFuZGxlcnM9PkV4Y2VwdGlvbkhhbmRsZXJBc3QsaGFuZGxlcnMgc2V0 fG9yZWxzZT0+QXN0LG9yZWxzZSBzZXR8ZmluYWxseT0+QXN0LGZpbmFsYm9keTs7Ci0rUlVMRV9G T1IgX3N0bXQ7S0lORCBBc3NlcnRfa2luZDtBQ1RJT05TIGNyZWF0ZXxBc3NlcnRpb25Bc3Qgc2V0 fGNvbmRpdGlvbi0+RXhwcmVzc2lvbkFzdCx0ZXN0IHNldHxtZXNzYWdlLT5FeHByZXNzaW9uQXN0 LG1zZzs7Ci0rUlVMRV9GT1IgX3N0bXQ7S0lORCBJbXBvcnRfa2luZDtBQ1RJT05TIGNyZWF0ZXxJ bXBvcnRBc3Qgc2V0fG5hbWVzPT5BbGlhc0FzdCxuYW1lczs7Ci0rUlVMRV9GT1IgX3N0bXQ7S0lO RCBJbXBvcnRGcm9tX2tpbmQ7QUNUSU9OUyBjcmVhdGV8SW1wb3J0RnJvbUFzdCBzZXR8bW9kdWxl fj5tb2R1bGUgc2V0fG5hbWVzPT5BbGlhc0FzdCxuYW1lcyBzZXR8bGV2ZWw6PmxldmVsOzsKLStS VUxFX0ZPUiBfc3RtdDtLSU5EIEdsb2JhbF9raW5kO0FDVElPTlMgY3JlYXRlfEdsb2JhbEFzdCBz ZXR8bmFtZXM9PklkZW50aWZpZXIsbmFtZXM7OwotK1JVTEVfRk9SIF9zdG10O0tJTkQgQnJlYWtf a2luZDtBQ1RJT05TIGNyZWF0ZXxCcmVha0FzdDs7Ci0rUlVMRV9GT1IgX3N0bXQ7S0lORCBDb250 aW51ZV9raW5kO0FDVElPTlMgY3JlYXRlfENvbnRpbnVlQXN0OzsKLStSVUxFX0ZPUiBfc3RtdDtL SU5EIFBhc3Nfa2luZDtBQ1RJT05TIGNyZWF0ZXxQYXNzQXN0OzsKLStSVUxFX0ZPUiBfc3RtdDtL SU5EIE5vbmxvY2FsX2tpbmQ7QUNUSU9OUyBjcmVhdGV8Tm9ubG9jYWxBc3Q7OwotKwotK1JVTEVf Rk9SIF9leHByO0tJTkQgQXdhaXRfa2luZDtBQ1RJT05TIGNyZWF0ZXxBd2FpdEFzdCBzZXR8dmFs dWUtPkV4cHJlc3Npb25Bc3QsdmFsdWU7U0lOQ0UgMy41OzsKLStSVUxFX0ZPUiBfZXhwcjtLSU5E IEJvb2xPcF9raW5kO0FDVElPTlMgY3JlYXRlfEJvb2xlYW5PcGVyYXRpb25Bc3Qgc2V0fHR5cGUq PkJvb2xlYW5PcGVyYXRpb25UeXBlcyxvcCBzZXR8dmFsdWVzPT5FeHByZXNzaW9uQXN0LHZhbHVl czs7Ci0rUlVMRV9GT1IgX2V4cHI7S0lORCBCaW5PcF9raW5kO0FDVElPTlMgY3JlYXRlfEJpbmFy eU9wZXJhdGlvbkFzdCBzZXR8dHlwZSo+T3BlcmF0b3JUeXBlcyxvcCBzZXR8bGhzLT5FeHByZXNz aW9uQXN0LGxlZnQgc2V0fHJocy0+RXhwcmVzc2lvbkFzdCxyaWdodDs7Ci0rUlVMRV9GT1IgX2V4 cHI7S0lORCBVbmFyeU9wX2tpbmQ7QUNUSU9OUyBjcmVhdGV8VW5hcnlPcGVyYXRpb25Bc3Qgc2V0 fHR5cGUqPlVuYXJ5T3BlcmF0b3JUeXBlcyxvcCBzZXR8b3BlcmFuZC0+RXhwcmVzc2lvbkFzdCxv cGVyYW5kOzsKLStSVUxFX0ZPUiBfZXhwcjtLSU5EIExhbWJkYV9raW5kO0FDVElPTlMgY3JlYXRl fExhbWJkYUFzdCBzZXR8YXJndW1lbnRzLT5Bcmd1bWVudHNBc3QsYXJncyBzZXR8Ym9keS0+RXhw cmVzc2lvbkFzdCxib2R5OzsKLStSVUxFX0ZPUiBfZXhwcjtLSU5EIElmRXhwX2tpbmQ7QUNUSU9O UyBjcmVhdGV8SWZFeHByZXNzaW9uQXN0IHNldHxjb25kaXRpb24tPkV4cHJlc3Npb25Bc3QsdGVz dCBzZXR8Ym9keS0+RXhwcmVzc2lvbkFzdCxib2R5IHNldHxvcmVsc2UtPkV4cHJlc3Npb25Bc3Qs b3JlbHNlOzsKLStSVUxFX0ZPUiBfZXhwcjtLSU5EIERpY3Rfa2luZDtBQ1RJT05TIGNyZWF0ZXxE aWN0QXN0IHNldHxrZXlzPT5FeHByZXNzaW9uQXN0LGtleXMgc2V0fHZhbHVlcz0+RXhwcmVzc2lv bkFzdCx2YWx1ZXM7OwotK1JVTEVfRk9SIF9leHByO0tJTkQgU2V0X2tpbmQ7QUNUSU9OUyBjcmVh dGV8U2V0QXN0IHNldHxlbGVtZW50cz0+RXhwcmVzc2lvbkFzdCxlbHRzOzsKLStSVUxFX0ZPUiBf ZXhwcjtLSU5EIExpc3RDb21wX2tpbmQ7QUNUSU9OUyBjcmVhdGV8TGlzdENvbXByZWhlbnNpb25B c3Qgc2V0fGVsZW1lbnQtPkV4cHJlc3Npb25Bc3QsZWx0IHNldHxnZW5lcmF0b3JzPT5Db21wcmVo ZW5zaW9uQXN0LGdlbmVyYXRvcnM7OwotK1JVTEVfRk9SIF9leHByO0tJTkQgU2V0Q29tcF9raW5k O0FDVElPTlMgY3JlYXRlfFNldENvbXByZWhlbnNpb25Bc3Qgc2V0fGVsZW1lbnQtPkV4cHJlc3Np b25Bc3QsZWx0IHNldHxnZW5lcmF0b3JzPT5Db21wcmVoZW5zaW9uQXN0LGdlbmVyYXRvcnM7Owot K1JVTEVfRk9SIF9leHByO0tJTkQgRGljdENvbXBfa2luZDtBQ1RJT05TIGNyZWF0ZXxEaWN0aW9u YXJ5Q29tcHJlaGVuc2lvbkFzdCBzZXR8a2V5LT5FeHByZXNzaW9uQXN0LGtleSBzZXR8dmFsdWUt PkV4cHJlc3Npb25Bc3QsdmFsdWUgc2V0fGdlbmVyYXRvcnM9PkNvbXByZWhlbnNpb25Bc3QsZ2Vu ZXJhdG9yczs7Ci0rUlVMRV9GT1IgX2V4cHI7S0lORCBHZW5lcmF0b3JFeHBfa2luZDtBQ1RJT05T IGNyZWF0ZXxHZW5lcmF0b3JFeHByZXNzaW9uQXN0IHNldHxlbGVtZW50LT5FeHByZXNzaW9uQXN0 LGVsdCBzZXR8Z2VuZXJhdG9ycz0+Q29tcHJlaGVuc2lvbkFzdCxnZW5lcmF0b3JzOzsKLStSVUxF X0ZPUiBfZXhwcjtLSU5EIFlpZWxkX2tpbmQ7QUNUSU9OUyBjcmVhdGV8WWllbGRBc3Qgc2V0fHZh bHVlLT5FeHByZXNzaW9uQXN0LHZhbHVlOzsKLStSVUxFX0ZPUiBfZXhwcjtLSU5EIENvbXBhcmVf a2luZDtBQ1RJT05TIGNyZWF0ZXxDb21wYXJlQXN0IHNldHxsZWZ0bW9zdEVsZW1lbnQtPkV4cHJl c3Npb25Bc3QsbGVmdCBzZXR8b3BlcmF0b3JzIz5Db21wYXJpc29uT3BlcmF0b3JUeXBlcyxvcHMg c2V0fGNvbXBhcmFuZHM9PkV4cHJlc3Npb25Bc3QsY29tcGFyYXRvcnM7OwotK1JVTEVfRk9SIF9l eHByO0tJTkQgQ2FsbF9raW5kO0FDVElPTlMgY3JlYXRlfENhbGxBc3Qgc2V0fGZ1bmN0aW9uLT5F eHByZXNzaW9uQXN0LGZ1bmMgc2V0fGFyZ3VtZW50cz0+RXhwcmVzc2lvbkFzdCxhcmdzIHNldHxr ZXl3b3Jkcz0+S2V5d29yZEFzdCxrZXl3b3JkcztTSU5DRSAzLjU7OwotK1JVTEVfRk9SIF9leHBy O0tJTkQgQ2FsbF9raW5kO0FDVElPTlMgY3JlYXRlfENhbGxBc3Qgc2V0fGZ1bmN0aW9uLT5FeHBy ZXNzaW9uQXN0LGZ1bmMgc2V0fGFyZ3VtZW50cz0+RXhwcmVzc2lvbkFzdCxhcmdzIHNldHxrZXl3 b3Jkcz0+S2V5d29yZEFzdCxrZXl3b3JkcztCRUZPUkUgMy41OwotK0NPREUgLyogQ29udmVydCAz LjQgdW5wYWNrZWQtYXJncyBBU1QgdG8gbWF0Y2ggdGhlIG5ldyBmb3JtYXQgZnJvbSAzLjUrICov Ci0raWYgKG5vZGUtPnYuQ2FsbC5zdGFyYXJncykgewotKyAgICBub2RlU3RhY2sucHVzaCh2KTsK LSsgICAgYXV0byBzdGFycmVkID0gbmV3IFN0YXJyZWRBc3Qodik7Ci0rICAgIHN0YXJyZWQtPmNv bnRleHQgPSBFeHByZXNzaW9uQXN0OjpDb250ZXh0OjpMb2FkOwotKyAgICBub2RlU3RhY2sucHVz aChzdGFycmVkKTsKLSsgICAgc3RhcnJlZC0+dmFsdWUgPSBzdGF0aWNfY2FzdDxFeHByZXNzaW9u QXN0Kj4odmlzaXROb2RlKG5vZGUtPnYuQ2FsbC5zdGFyYXJncykpOwotKyAgICBub2RlU3RhY2su cG9wKCk7Ci0rICAgIHYtPmFyZ3VtZW50cy5hcHBlbmQoc3RhcnJlZCk7Ci0rICAgIG5vZGVTdGFj ay5wb3AoKTsKLSt9OwotK2lmIChub2RlLT52LkNhbGwua3dhcmdzKSB7Ci0rICAgIG5vZGVTdGFj ay5wdXNoKHYpOwotKyAgICBhdXRvIGt3YXJncyA9IG5ldyBLZXl3b3JkQXN0KHYpOwotKyAgICBu b2RlU3RhY2sucHVzaChrd2FyZ3MpOwotKyAgICBrd2FyZ3MtPnZhbHVlID0gc3RhdGljX2Nhc3Q8 RXhwcmVzc2lvbkFzdCo+KHZpc2l0Tm9kZShub2RlLT52LkNhbGwua3dhcmdzKSk7Ci0rICAgIG5v ZGVTdGFjay5wb3AoKTsKLSsgICAgdi0+a2V5d29yZHMuYXBwZW5kKGt3YXJncyk7Ci0rICAgIG5v ZGVTdGFjay5wb3AoKTsKLSt9OzsKLStSVUxFX0ZPUiBfZXhwcjtLSU5EIE51bV9raW5kO0FDVElP TlMgY3JlYXRlfE51bWJlckFzdDtCRUZPUkUgMy44O0NPREUgdi0+aXNJbnQgPSBQeUxvbmdfQ2hl Y2sobm9kZS0+di5OdW0ubik7IHYtPnZhbHVlID0gUHlMb25nX0FzTG9uZyhub2RlLT52Lk51bS5u KTs7Ci0rUlVMRV9GT1IgX2V4cHI7S0lORCBTdHJfa2luZDtBQ1RJT05TIGNyZWF0ZXxTdHJpbmdB c3Qgc2V0fHZhbHVlJD5zO0JFRk9SRSAzLjg7OwotK1JVTEVfRk9SIF9leHByO0tJTkQgSm9pbmVk U3RyX2tpbmQ7QUNUSU9OUyBjcmVhdGV8Sm9pbmVkU3RyaW5nQXN0IHNldHx2YWx1ZXM9PkV4cHJl c3Npb25Bc3QsdmFsdWVzO1NJTkNFIDMuNjs7Ci0rUlVMRV9GT1IgX2V4cHI7S0lORCBGb3JtYXR0 ZWRWYWx1ZV9raW5kO0FDVElPTlMgY3JlYXRlfEZvcm1hdHRlZFZhbHVlQXN0IHNldHx2YWx1ZS0+ RXhwcmVzc2lvbkFzdCx2YWx1ZSBzZXR8Y29udmVyc2lvbjo+Y29udmVyc2lvbiBzZXR8Zm9ybWF0 U3BlYy0+RXhwcmVzc2lvbkFzdCxmb3JtYXRfc3BlYztTSU5DRSAzLjY7OwotK1JVTEVfRk9SIF9l eHByO0tJTkQgQnl0ZXNfa2luZDtBQ1RJT05TIGNyZWF0ZXxCeXRlc0FzdCBzZXR8dmFsdWUkPnM7 QkVGT1JFIDMuODs7Ci0rUlVMRV9GT1IgX2V4cHI7S0lORCBBdHRyaWJ1dGVfa2luZDtBQ1RJT05T IGNyZWF0ZXxBdHRyaWJ1dGVBc3Qgc2V0fGF0dHJpYnV0ZX4+YXR0ciBzZXR8dmFsdWUtPkV4cHJl c3Npb25Bc3QsdmFsdWUgc2V0fGNvbnRleHQqPkNvbnRleHQsY3R4OzsKLStSVUxFX0ZPUiBfZXhw cjtLSU5EIFN1YnNjcmlwdF9raW5kO0FDVElPTlMgY3JlYXRlfFN1YnNjcmlwdEFzdCBzZXR8dmFs dWUtPkV4cHJlc3Npb25Bc3QsdmFsdWUgc2V0fHNsaWNlLT5TbGljZUFzdCxzbGljZSBzZXR8Y29u dGV4dCo+Q29udGV4dCxjdHg7OwotK1JVTEVfRk9SIF9leHByO0tJTkQgU3RhcnJlZF9raW5kO0FD VElPTlMgY3JlYXRlfFN0YXJyZWRBc3Qgc2V0fHZhbHVlLT5FeHByZXNzaW9uQXN0LHZhbHVlIHNl dHxjb250ZXh0Kj5Db250ZXh0LGN0eDs7Ci0rUlVMRV9GT1IgX2V4cHI7S0lORCBOYW1lX2tpbmQ7 QUNUSU9OUyBjcmVhdGV8TmFtZUFzdCBzZXR8aWRlbnRpZmllcn4+aWQgc2V0fGNvbnRleHQqPkNv bnRleHQsY3R4OzsKLStSVUxFX0ZPUiBfZXhwcjtLSU5EIExpc3Rfa2luZDtBQ1RJT05TIGNyZWF0 ZXxMaXN0QXN0IHNldHxlbGVtZW50cz0+RXhwcmVzc2lvbkFzdCxlbHRzIHNldHxjb250ZXh0Kj5D b250ZXh0LGN0eDs7Ci0rUlVMRV9GT1IgX2V4cHI7S0lORCBUdXBsZV9raW5kO0FDVElPTlMgY3Jl YXRlfFR1cGxlQXN0IHNldHxlbGVtZW50cz0+RXhwcmVzc2lvbkFzdCxlbHRzIHNldHxjb250ZXh0 Kj5Db250ZXh0LGN0eDs7Ci0rUlVMRV9GT1IgX2V4cHI7S0lORCBFbGxpcHNpc19raW5kO0FDVElP TlMgY3JlYXRlfEVsbGlwc2lzQXN0O0JFRk9SRSAzLjg7OwotK1JVTEVfRk9SIF9leHByO0tJTkQg TmFtZUNvbnN0YW50X2tpbmQ7QUNUSU9OUyBjcmVhdGV8TmFtZUNvbnN0YW50QXN0IHNldHx2YWx1 ZV8+dmFsdWU7QkVGT1JFIDMuODs7Ci0rUlVMRV9GT1IgX2V4cHI7S0lORCBZaWVsZEZyb21fa2lu ZDtBQ1RJT05TIGNyZWF0ZXxZaWVsZEZyb21Bc3Qgc2V0fHZhbHVlLT5FeHByZXNzaW9uQXN0LHZh bHVlOzsKLStSVUxFX0ZPUiBfZXhwcjtLSU5EIENvbnN0YW50X2tpbmQ7QUNUSU9OUztTSU5DRSAz Ljg7Q09ERQotK1B5T2JqZWN0ICp2YWx1ZSA9IG5vZGUtPnYuQ29uc3RhbnQudmFsdWU7Ci0raWYg KHZhbHVlID09IFB5X05vbmUpIHsKLSsgICAgTmFtZUNvbnN0YW50QXN0KiB2ID0gbmV3IE5hbWVD b25zdGFudEFzdChwYXJlbnQoKSk7Ci0rICAgIHYtPnZhbHVlID0gTmFtZUNvbnN0YW50QXN0OjpO b25lOwotKyAgICByZXN1bHQgPSB2OwotK30KLStlbHNlIGlmICh2YWx1ZSA9PSBQeV9UcnVlKSB7 Ci0rICAgIE5hbWVDb25zdGFudEFzdCogdiA9IG5ldyAgTmFtZUNvbnN0YW50QXN0KHBhcmVudCgp KTsKLSsgICAgdi0+dmFsdWUgPSBOYW1lQ29uc3RhbnRBc3Q6OlRydWU7Ci0rICAgIHJlc3VsdCA9 IHY7Ci0rfQotK2Vsc2UgaWYgKHZhbHVlID09IFB5X0ZhbHNlKSB7Ci0rICAgIE5hbWVDb25zdGFu dEFzdCogdiA9IG5ldyAgTmFtZUNvbnN0YW50QXN0KHBhcmVudCgpKTsKLSsgICAgdi0+dmFsdWUg PSBOYW1lQ29uc3RhbnRBc3Q6OkZhbHNlOwotKyAgICByZXN1bHQgPSB2OwotK30KLStlbHNlIGlm ICh2YWx1ZS0+b2JfdHlwZSA9PSAmUHlMb25nX1R5cGUpIHsKLSsgICAgTnVtYmVyQXN0KiB2ID0g bmV3IE51bWJlckFzdChwYXJlbnQoKSk7Ci0rICAgIHYtPmlzSW50ID0gdHJ1ZTsKLSsgICAgdi0+ dmFsdWUgPSBQeUxvbmdfQXNMb25nKHZhbHVlKTsKLSsgICAgcmVzdWx0ID0gdjsKLSt9Ci0rZWxz ZSBpZiAodmFsdWUtPm9iX3R5cGUgPT0gJlB5RmxvYXRfVHlwZSB8fCB2YWx1ZS0+b2JfdHlwZSA9 PSAmUHlDb21wbGV4X1R5cGUpIHsKLSsgICAgcmVzdWx0ID0gbmV3IE51bWJlckFzdChwYXJlbnQo KSk7Ci0rfQotK2Vsc2UgaWYgKHZhbHVlLT5vYl90eXBlID09ICZQeVVuaWNvZGVfVHlwZSkgewot KyAgICBTdHJpbmdBc3QqIHYgPSBuZXcgU3RyaW5nQXN0KHBhcmVudCgpKTsKLSsgICAgdi0+dmFs dWUgPSBQeVVuaWNvZGVPYmplY3RUb1FTdHJpbmcodmFsdWUpOwotKyAgICByZXN1bHQgPSB2Owot K30KLStlbHNlIGlmICh2YWx1ZS0+b2JfdHlwZSA9PSAmUHlCeXRlc19UeXBlKSB7Ci0rICAgIHJl c3VsdCA9IG5ldyBCeXRlc0FzdChwYXJlbnQoKSk7Ci0rfQotK2Vsc2UgaWYgKHZhbHVlLT5vYl90 eXBlID09ICZQeUVsbGlwc2lzX1R5cGUpIHsKLSsgICAgcmVzdWx0ID0gbmV3IEVsbGlwc2lzQXN0 KHBhcmVudCgpKTsKLSt9Ci0rZWxzZSB7Ci0rICAgIHFXYXJuaW5nKCkgPDwgIlVuaGFuZGxlZCBj b25zdGFudCB0eXBlOiAiIDw8IHZhbHVlLT5vYl90eXBlLT50cF9uYW1lOwotKyAgICBRX0FTU0VS VChmYWxzZSk7Ci0rfTs7Ci0rUlVMRV9GT1IgX2V4cHI7S0lORCBOYW1lZEV4cHJfa2luZDtBQ1RJ T05TIGNyZWF0ZXxBc3NpZ25tZW50RXhwcmVzc2lvbkFzdCBzZXR8dGFyZ2V0LT5FeHByZXNzaW9u QXN0LHRhcmdldCBzZXR8dmFsdWUtPkV4cHJlc3Npb25Bc3QsdmFsdWU7U0lOQ0UgMy44OzsKLSsK LStSVUxFX0ZPUiBfc2xpY2U7S0lORCBTbGljZV9raW5kO0FDVElPTlMgY3JlYXRlfFNsaWNlQXN0 IHNldHxsb3dlci0+RXhwcmVzc2lvbkFzdCxsb3dlciBzZXR8dXBwZXItPkV4cHJlc3Npb25Bc3Qs dXBwZXIgc2V0fHN0ZXAtPkV4cHJlc3Npb25Bc3Qsc3RlcDs7Ci0rUlVMRV9GT1IgX3NsaWNlO0tJ TkQgRXh0U2xpY2Vfa2luZDtBQ1RJT05TIGNyZWF0ZXxFeHRlbmRlZFNsaWNlQXN0IHNldHxkaW1z PT5TbGljZUFzdCxkaW1zOzsKLStSVUxFX0ZPUiBfc2xpY2U7S0lORCBJbmRleF9raW5kO0FDVElP TlMgY3JlYXRlfEluZGV4QXN0IHNldHx2YWx1ZS0+RXhwcmVzc2lvbkFzdCx2YWx1ZTs7Ci0rCi0r Ci0rUlVMRV9GT1IgX2NvbXByZWhlbnNpb247S0lORCBhbnk7QUNUSU9OUyBjcmVhdGV8Q29tcHJl aGVuc2lvbkFzdCBzZXR8dGFyZ2V0LT5FeHByZXNzaW9uQXN0LHRhcmdldCBzZXR8aXRlcmF0b3It PkV4cHJlc3Npb25Bc3QsaXRlciBzZXR8Y29uZGl0aW9ucz0+RXhwcmVzc2lvbkFzdCxpZnM7Owot K1JVTEVfRk9SIF9leGNlcHRoYW5kbGVyO0tJTkQgRXhjZXB0SGFuZGxlcl9raW5kO0FDVElPTlMg Y3JlYXRlfEV4Y2VwdGlvbkhhbmRsZXJBc3Qgc2V0fHR5cGUtPkV4cHJlc3Npb25Bc3QsdHlwZSBz ZXR8bmFtZX4+bmFtZSBzZXR8Ym9keT0+QXN0LGJvZHk7OwotK1JVTEVfRk9SIF9hcmd1bWVudHM7 S0lORCBhbnk7QUNUSU9OUyBjcmVhdGV8QXJndW1lbnRzQXN0IHNldHx2YXJhcmctPkFyZ0FzdCx2 YXJhcmcgc2V0fGt3YXJnLT5BcmdBc3Qsa3dhcmcgc2V0fGFyZ3VtZW50cz0+QXJnQXN0LGFyZ3Mg c2V0fGRlZmF1bHRWYWx1ZXM9PkV4cHJlc3Npb25Bc3QsZGVmYXVsdHMgc2V0fGt3b25seWFyZ3M9 PkFyZ0FzdCxrd29ubHlhcmdzO0JFRk9SRSAzLjg7OwotK1JVTEVfRk9SIF9hcmd1bWVudHM7S0lO RCBhbnk7QUNUSU9OUyBjcmVhdGV8QXJndW1lbnRzQXN0IHNldHx2YXJhcmctPkFyZ0FzdCx2YXJh cmcgc2V0fGt3YXJnLT5BcmdBc3Qsa3dhcmcgc2V0fGFyZ3VtZW50cz0+QXJnQXN0LGFyZ3Mgc2V0 fGRlZmF1bHRWYWx1ZXM9PkV4cHJlc3Npb25Bc3QsZGVmYXVsdHMgc2V0fGt3b25seWFyZ3M9PkFy Z0FzdCxrd29ubHlhcmdzIHNldHxwb3Nvbmx5YXJncz0+QXJnQXN0LHBvc29ubHlhcmdzO1NJTkNF IDMuODs7Ci0rUlVMRV9GT1IgX2FyZztLSU5EIGFueTtBQ1RJT05TIGNyZWF0ZXxBcmdBc3Qgc2V0 fGFyZ3VtZW50TmFtZX4+YXJnIHNldHxhbm5vdGF0aW9uLT5FeHByZXNzaW9uQXN0LGFubm90YXRp b247OwotK1JVTEVfRk9SIF9rZXl3b3JkO0tJTkQgYW55O0FDVElPTlMgY3JlYXRlfEtleXdvcmRB c3Qgc2V0fGFyZ3VtZW50TmFtZX4+YXJnIHNldHx2YWx1ZS0+RXhwcmVzc2lvbkFzdCx2YWx1ZTs7 Ci0rUlVMRV9GT1IgX2FsaWFzO0tJTkQgYW55O0FDVElPTlMgY3JlYXRlfEFsaWFzQXN0IHNldHxu YW1lfj5uYW1lIHNldHxhc05hbWV+PmFzbmFtZTs7Ci0rUlVMRV9GT1IgX3dpdGhpdGVtO0tJTkQg YW55OyBBQ1RJT05TIGNyZWF0ZXxXaXRoSXRlbUFzdCBzZXR8Y29udGV4dEV4cHJlc3Npb24tPkV4 cHJlc3Npb25Bc3QsY29udGV4dF9leHByIHNldHxvcHRpb25hbFZhcnMtPkV4cHJlc3Npb25Bc3Qs b3B0aW9uYWxfdmFyczs7Ci1kaWZmIC0tZ2l0IGEvcGFyc2VyL3Rlc3RzL3B5YXN0dGVzdC5jcHAg Yi9wYXJzZXIvdGVzdHMvcHlhc3R0ZXN0LmNwcAotaW5kZXggNGZkNWY0ZS4uYzI4ZjZmYyAxMDA2 NDQKLS0tLSBhL3BhcnNlci90ZXN0cy9weWFzdHRlc3QuY3BwCi0rKysgYi9wYXJzZXIvdGVzdHMv cHlhc3R0ZXN0LmNwcAotQEAgLTIzOCw2ICsyMzgsMTEgQEAgdm9pZCBQeUFzdFRlc3Q6OnRlc3RF eHByZXNzaW9uc19kYXRhKCkKLSAgICAgICAgICIgICAgICAgKip7ZXh0OiBzZWxmLnJlc19leHRl bnNpb24gZm9yIGV4dCBpbiBzZWxmLl9yY19leHRlbnNpb25zICsgc2VsZi5fbWNfZXh0ZW5zaW9u c30sXG4iCi0gICAgICJ9IjsKLSAjZW5kaWYKLSsjaWYgUFlUSE9OX1ZFUlNJT04gPj0gUVRfVkVS U0lPTl9DSEVDSygzLCA4LCAwKQotKyAgICBRVGVzdDo6bmV3Um93KCJhc3NpZ25tZW50X2V4cHJf MSIpIDw8ICJhID0gKGIgOj0gMTApIjsKLSsgICAgUVRlc3Q6Om5ld1JvdygiYXNzaWdubWVudF9l eHByXzIiKSA8PCAiYSA9IFtxIGZvciB6IGluICgxLCAyLCAzKSBpZiAocSA6PSAyKnopXSI7Ci0r ICAgIFFUZXN0OjpuZXdSb3coInBvc2l0aW9uYWxfcGFyYW1zIikgPDwgImRlZiBmb28oYSwgYiwg LywgYywgZCwgKiwgZSk6IHBhc3MiOwotKyNlbmRpZgotIH0KLSAKLSB2b2lkIFB5QXN0VGVzdDo6 dGVzdENvcnJlY3RlZEZ1bmNSYW5nZXMoKQoKZGlmZiAtLWdpdCBhL2tkZXZlbG9wLXB5dGhvbi5z cGVjIGIva2RldmVsb3AtcHl0aG9uLnNwZWMKaW5kZXggMDQ0MGVjNC4uODRhM2QxNyAxMDA2NDQK LS0tIGEva2RldmVsb3AtcHl0aG9uLnNwZWMKKysrIGIva2RldmVsb3AtcHl0aG9uLnNwZWMKQEAg LTQsMTAgKzQsMTAgQEAKIAogCiBOYW1lOiAgICAgICBrZGV2ZWxvcC1weXRob24KLVZlcnNpb246 ICAgIDUuNC42CitWZXJzaW9uOiAgICA1LjUuMAogJWdsb2JhbCBweTNfc3VmZml4IC1weTMKICVn bG9iYWwgcHkzX3RhZyAucHkzCi1SZWxlYXNlOiAgICAyJXs/ZGlzdH0KK1JlbGVhc2U6ICAgIDEl ez9kaXN0fQogTGljZW5zZTogICAgR1BMdjIKIFNvdXJjZTA6ICAgIGh0dHA6Ly9kb3dubG9hZC5r ZGUub3JnL3N0YWJsZS9rZGV2ZWxvcC8le3ZlcnNpb259L3NyYy9rZGV2LXB5dGhvbi0le3ZlcnNp b259LnRhci54egogCkBAIC0yNiw5ICsyNiw2IEBAIFBhdGNoMTogICAgIGtkZXYtcHl0aG9uLTEu Ny4wLXB5My1kb2Mtc3ludGF4LnBhdGNoCiAjIEZpeCBzeW50YXggZXJyb3IgZHVlIHRvIGFzeW5j IGJlaW5nIGEgcmVzZXJ2ZWQga2V5d29yZCBpbiBweXRob24zLjcKIFBhdGNoMjogICAgIGtkZXYt cHl0aG9uX2FzeW5jLnBhdGNoCiAKLSMgRml4IGJ1aWxkIGFnYWluc3QgUHl0aG9uIDMuOAotUGF0 Y2gzOiAgICAga2Rldi1weXRob24tcHl0aG9uMzgucGF0Y2gKLQogU3VtbWFyeTogICAgUHl0aG9u IDMgUGx1Z2luIGZvciBLRGV2ZWxvcAogVVJMOiAgICAgICAgaHR0cHM6Ly93d3cua2RldmVsb3Au b3JnLwogCkBAIC03MCw3ICs2Nyw2IEBAIFB5dGhvbiAzIGxhbmd1YWdlIHN1cHBvcnQgZm9yIHRo ZSBLRGV2ZWxvcCBJbnRlZ3JhdGVkIERldmVsb3BtZW50IEVudmlyb25tZW50LgogJXBhdGNoMSAt cDEKICMgYXN5bmMKICVwYXRjaDIgLXAxCi0lcGF0Y2gzIC1wMQogCiAlYnVpbGQKIG1rZGlyICV7 X3RhcmdldF9wbGF0Zm9ybX0KQEAgLTEwMCwxMiArOTYsMTUgQEAgcm0gLWYgJXtidWlsZHJvb3R9 JXtfZGF0YWRpcn0va2RldnB5dGhvbnN1cHBvcnQvZG9jdW1lbnRhdGlvbl9maWxlcy9QeUtERTQv cGFyc2UKICV7X2xpYmRpcn0vbGlia2RldnB5dGhvbmNvbXBsZXRpb24uc28KICV7X2RhdGFkaXJ9 L2tkZXZweXRob25zdXBwb3J0CiAle19kYXRhZGlyfS9rZGV2YXBwd2l6YXJkL3RlbXBsYXRlcy8q Ci0le19rZjVfcXRwbHVnaW5kaXJ9L2tkZXZwbGF0Zm9ybS8zMi9rZGV2cGRiLnNvCi0le19rZjVf cXRwbHVnaW5kaXJ9L2tkZXZwbGF0Zm9ybS8zMi9rZGV2cHl0aG9ubGFuZ3VhZ2VzdXBwb3J0LnNv Cisle19rZjVfcXRwbHVnaW5kaXJ9L2tkZXZwbGF0Zm9ybS8zMy9rZGV2cGRiLnNvCisle19rZjVf cXRwbHVnaW5kaXJ9L2tkZXZwbGF0Zm9ybS8zMy9rZGV2cHl0aG9ubGFuZ3VhZ2VzdXBwb3J0LnNv CiAle19kYXRhZGlyfS9xbG9nZ2luZy1jYXRlZ29yaWVzNS9rZGV2cHl0aG9uc3VwcG9ydC5jYXRl Z29yaWVzCiAle19kYXRhZGlyfS9tZXRhaW5mby9vcmcua2RlLmtkZXYtcHl0aG9uLm1ldGFpbmZv LnhtbAogCiAlY2hhbmdlbG9nCisqIE1vbiBGZWIgMDMgMjAyMCBKYW4gR3J1bGljaCA8amdydWxp Y2hAcmVkaGF0LmNvbT4gLSA1LjUuMC0xCistIDUuNS4wCisKICogV2VkIEphbiAyOSAyMDIwIEZl ZG9yYSBSZWxlYXNlIEVuZ2luZWVyaW5nIDxyZWxlbmdAZmVkb3JhcHJvamVjdC5vcmc+IC0gNS40 LjYtMgogLSBSZWJ1aWx0IGZvciBodHRwczovL2ZlZG9yYXByb2plY3Qub3JnL3dpa2kvRmVkb3Jh XzMyX01hc3NfUmVidWlsZAogCgpkaWZmIC0tZ2l0IGEvc291cmNlcyBiL3NvdXJjZXMKaW5kZXgg NmY0NDMxZi4uNDQ1MzY1ZiAxMDA2NDQKLS0tIGEvc291cmNlcworKysgYi9zb3VyY2VzCkBAIC0x ICsxIEBACi1TSEE1MTIgKGtkZXYtcHl0aG9uLTUuNC42LnRhci54eikgPSAxMTZiNTY0OWY1OWMy ZWM0NmFiYTA4M2Y5ZTBlZGViZmI0ODFjODZkNzY3N2NlMDhmZTY5ZTE2MWUzNDRhZGRiZDZiNGY5 Yzk1NWViYzI4NjZlYTExOGQzMTM5Mzc3YzU5MzE1YzQ2YjllN2RlZmVjMTE5YTQ3ZmY1MGJkZDJh YworU0hBNTEyIChrZGV2LXB5dGhvbi01LjUuMC50YXIueHopID0gNmZkZTAyMjFkZTc0MDdhMTJk MjljNGExZGY4ZDBkNmU5NjU2MTM5NTZkMWI1YTdmZDM3NWY0ZGQ4YWIzNDc4NGI5MmU1YjIyZGM1 MjNjOGNlNmE0YWNhODBkYzNkYWQxNmIzZTU0OWMwNTY5OTU5YjM1MDIzYjE4NDM0YWRkMjYK