Bug#1142942: trixie-pu: package samba/1:4.22.11+dfsg-0+deb13u1
Michael Tokarev <[email protected]> Tue, 28 Jul 2026 15:26:18 +0300
| Newsgroups | gmane.linux.debian.devel.release |
|---|---|
| Message-ID | <178524157831.3353780.13599064576290403700.reportbug__43427.3468724982$1785241798$gmane$org@localhost> |
UGFja2FnZTogcmVsZWFzZS5kZWJpYW4ub3JnClNldmVyaXR5OiBub3JtYWwKVGFnczogdHJpeGll ClgtRGViYnVncy1DYzogc2FtYmFAcGFja2FnZXMuZGViaWFuLm9yZwpDb250cm9sOiBhZmZlY3Rz IC0xICsgc3JjOnNhbWJhClVzZXI6IHJlbGVhc2UuZGViaWFuLm9yZ0BwYWNrYWdlcy5kZWJpYW4u b3JnClVzZXJ0YWdzOiBwdQoKWyBSZWFzb24gXQpQcmV2aW91cyBzYW1iYSBzZWN1cml0eSBmaXhl cyB3ZXJlIG1hZGUgdGhyb3VnaCB0cml4aWUtc2VjdXJpdHkKYXMgYSBwYXRjaHNldCBmb3IgdGhl IGN1cnJlbnQtYXQtdGhlLXRpbWUgc2FtYmEgcmVsZWFzZSBpbgp0cml4aWUuICBXaXRoIHRoZSB1 cHN0cmVhbSBhbm5vdW5jZSwgdGhlcmUncyBhY3R1YWwgbmV3IHVwc3RyZWFtCnJlbGVhc2UgaXMg YXZhaWxhYmxlLCB3aGljaCBpbmNvcnBvcmF0ZXMgYWxsIHRoZSBmaXhlcyBhbmQgaGFzCmFuIGFk ZGl0aW9uYWwgZml4LgoKVG8gYXZvaWQgY29uZnVzaW9uLCBpdCBpcyBiZXN0IHRvIHN5bmNyb25p emUgd2l0aCB0aGUgYWN0dWFsCnVwc3RyZWFtIHNvdXJjZSBhbmQgZHJvcCB0aGUgc2VjdXJpdHkg cGF0Y2hlcy4KClsgVGVzdHMgXQpTaW5jZSB0aGlzIHJlbGVhc2UgaXMganVzdCBhIHN5bmNyb25p emF0aW9uIHdpdGggdGhlIHVwc3RyZWFtCnRhcmJhbGwsIHByb2R1Y2luZyBiYXNpY2FsbHkgdGhl IHNhbWUgc291cmNlIGluIHRoZSBlbmQgKG1vZHVsbwp0aGUgV0hBVFNORVcudHh0IGNoYW5nZXMs IHZlcnNpb24gYnVtcCBhbmQgYW4gYWRkaXRpb25hbCBmaXgpLAppdCdzIGVzc2VudGFsbHkgdGhl IHNhbWUgYXMgYmVmb3JlLCBzbyB0aGVyZSdzIG5vIG11Y2ggdGVzdGluZwpuZWNlc3NhcnkuICBJ dCB3b3JrcyBhdCBsZWFzdCBhcyBiZXN0IGFzIHRoZSBwcmV2aW91cyByZWxlYXNlCnBsdXMgdGhl IHNlY3JpdHkgcGF0Y2hzZXQgb24gdG9wIChhbHJlYWR5IHJ1bm5pbmcgaXQgaW4gcHJvZHVjdGlv bgpsb2NhbGx5KS4KClsgUmlza3MgXQpUaGUgcmlzayB0aGlzIHRpbWUgaXMgcmVhbGx5IG1pbmlt YWwuCgpbIENoZWNrbGlzdCBdCiAgW3hdICphbGwqIGNoYW5nZXMgYXJlIGRvY3VtZW50ZWQgaW4g dGhlIGQvY2hhbmdlbG9nCiAgW3hdIEkgcmV2aWV3ZWQgYWxsIGNoYW5nZXMgYW5kIEkgYXBwcm92 ZSB0aGVtCiAgW3hdIGF0dGFjaCBkZWJkaWZmIGFnYWluc3QgdGhlIHBhY2thZ2UgaW4gKG9sZClz dGFibGUKICBbeF0gdGhlIGlzc3VlIGlzIHZlcmlmaWVkIGFzIGZpeGVkIGluIHVuc3RhYmxlCgpb IENoYW5nZXMgXQpUaGUgZC9jaGFuZ2Vsb2cgZGlmZmVyZW5jZSwgd2hpY2ggaXMgcmF0aGVyIHNt YWxsLCBpcyBiZWxvdy4KVGhlIGJ1bGsgb2YgdGhlIGRlYmRpZmYgY29uc2lzdHMgb2YgdGhlIHJl bW92YWwgb2YgdGhlIGJpZwpzZWN1cml0eSBwYXRjaHNldCBhbmQgYXBwbHlpbmcgaXQgdG8gdGhl IG9yaWcudGFyLnh6LiAgVGhlCmFjdHVhbCBjb2RlIGRpZmZlcmVuY2UgbGVhZHMgdG8gV0hBVFNO RVcudHh0IGNoYW5nZXMsIHRoZQp2ZXJzaW9uIGJ1bXAsIGFuZCBhIHNpbmdsZSBhZGRpdGlvbmFs IGZpeCBpbgpsaWJjbGkvc2VjdXJpdHkvc2VjdXJpdHlfZGVzY3JpcHRvci5jLgoKSGVyZSdzIGhv dyB0aGUgZGlmZnN0YXQgb2YgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIGV4dHJhY3RlZApz b3VyY2UgZGlycyBsb29rcyBsaWtlOgoKIDQuMjIuMTAvLnBjLzIwMjYtanVsLXNlYy11cGRhdGUt YnVnLTE2MDM5LXY0LTIyLWNvbWJpbmVkLnBhdGNoICAgICAgICAgICAgfG9ubHkKIDQuMjIuMTAv ZGViaWFuL3BhdGNoZXMvMjAyNi1qdWwtc2VjLXVwZGF0ZS1idWctMTYwMzktdjQtMjItY29tYmlu ZWQucGF0Y2ggfG9ubHkKIDQuMjIuMTEvLnBjL2FwcGxpZWQtcGF0Y2hlcyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAxIAogNC4yMi4xMS9WRVJTSU9O ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAgIDIgCiA0LjIyLjExL1dIQVRTTkVXLnR4dCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDExMSArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKy0KIDQuMjIuMTEvZGViaWFuL2NoYW5nZWxvZyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEzICsrKysKIDQuMjIuMTEvZGVi aWFuL3BhdGNoZXMvc2VyaWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgICAxIAogNC4yMi4xMS9saWJjbGkvc2VjdXJpdHkvc2VjdXJpdHlfZGVzY3JpcHRv ci5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTUgKy0tLQogOCBmaWxlcyBjaGFu Z2VkLCAxMjcgaW5zZXJ0aW9ucygrKSwgMTYgZGVsZXRpb25zKC0pCgpbIE90aGVyIEluZm8gXQpJ J20gdXBsb2FkaW5nIHRoZSBuZXcgZGViaWFuIHJlbGVhc2UgaW50byB0aGUgYXJjaGl2ZSB0b2dl dGhlcgp3aXRoIGZpbGluZyB0aGlzIGJ1ZyByZXBvcnQsIHRvIHNhdmUgYSByb3VuZC10cmlwIC0g c2luY2UgdGhlCnJlc3VsdGluZyBjaGFuZ2VzIGFyZSByZWFsbHkgbWluaW1hbC4KClRoYW5rcywK Ci9tanQKCmRpZmYgLU5ydSBzYW1iYS00LjIyLjEwK2Rmc2cvZGViaWFuL2NoYW5nZWxvZyBzYW1i YS00LjIyLjExK2Rmc2cvZGViaWFuL2NoYW5nZWxvZwotLS0gc2FtYmEtNC4yMi4xMCtkZnNnL2Rl Ymlhbi9jaGFuZ2Vsb2cJMjAyNi0wNy0yNCAxNjoxNDoxMy4wMDAwMDAwMDAgKzAzMDAKKysrIHNh bWJhLTQuMjIuMTErZGZzZy9kZWJpYW4vY2hhbmdlbG9nCTIwMjYtMDctMjggMTU6MDI6MDMuMDAw MDAwMDAwICswMzAwCkBAIC0xLDMgKzEsMTYgQEAKK3NhbWJhICgyOjQuMjIuMTErZGZzZy0wK2Rl YjEzdTEpIHRyaXhpZTsgdXJnZW5jeT1tZWRpdW0KKworICAqIHN3aXRjaCB0byBhY3R1YWwgbmV3 IHVwc3RyZWFtIHJlbGVhc2UsIGRyb3BwaW5nIHRoZSBzZWN1cml0eQorICAgIHBhdGNoc2V0IChp dCBpcyBpbmNsdWRlZCBpbnRvIHRoZSB1cHN0cmVhbSB0YXJiYWxsIG5vdykuCisKKyAgICBCZXNp ZGVzIGFsbCB0aGUgc2VjdXJpdHkgZml4ZXMsIHRoZXJlJ3MgYW4gYWRkdGlvbmFsIGZpeCBpbgor ICAgIHRoaXMgcmVsZWFzZSAod2hpY2ggd2FzIHF1ZXVlZCBiZWZvcmUgdGhlIHNlY3VyaXR5IGZp eGVzKToKKworICAgIG8gbGlic2VjdXJpdHk6IEZpeCBzZWN1cml0eV9hY2xfZHVwKCkncyB0YWxs b2MgaGllcmFyY2h5CisgICAgICBCdWc6IGh0dHBzOi8vYnVnemlsbGEuc2FtYmEub3JnL3Nob3df YnVnLmNnaT9pZD0xNjA5NQorCisgLS0gTWljaGFlbCBUb2thcmV2IDxtanRAdGxzLm1zay5ydT4g IFR1ZSwgMjggSnVsIDIwMjYgMTU6MDI6MDMgKzAzMDAKKwogc2FtYmEgKDI6NC4yMi4xMCtkZnNn LTArZGViMTN1MikgdHJpeGllLXNlY3VyaXR5OyB1cmdlbmN5PW1lZGl1bQogCiAgICogMjAyNi1q dWwtc2VjLXVwZGF0ZS1idWctMTYwMzktdjQtMjItY29tYmluZWQucGF0Y2g6CmRpZmYgLU5ydSBz YW1iYS00LjIyLjEwK2Rmc2cvZGViaWFuL3BhdGNoZXMvMjAyNi1qdWwtc2VjLXVwZGF0ZS1idWct MTYwMzktdjQtMjItY29tYmluZWQucGF0Y2ggc2FtYmEtNC4yMi4xMStkZnNnL2RlYmlhbi9wYXRj aGVzLzIwMjYtanVsLXNlYy11cGRhdGUtYnVnLTE2MDM5LXY0LTIyLWNvbWJpbmVkLnBhdGNoCi0t LSBzYW1iYS00LjIyLjEwK2Rmc2cvZGViaWFuL3BhdGNoZXMvMjAyNi1qdWwtc2VjLXVwZGF0ZS1i dWctMTYwMzktdjQtMjItY29tYmluZWQucGF0Y2gJMjAyNi0wNy0yNCAxNjowMzowNS4wMDAwMDAw MDAgKzAzMDAKKysrIHNhbWJhLTQuMjIuMTErZGZzZy9kZWJpYW4vcGF0Y2hlcy8yMDI2LWp1bC1z ZWMtdXBkYXRlLWJ1Zy0xNjAzOS12NC0yMi1jb21iaW5lZC5wYXRjaAkxOTcwLTAxLTAxIDAzOjAw OjAwLjAwMDAwMDAwMCArMDMwMApAQCAtMSwxOTYwICswLDAgQEAKLURhdGU6IFdlZCwgMTUgSnVs IDIwMjYgMTg6NDI6MDAgKzAwMDAKLUZyb206IEJqw7ZybiBKYWNrZSA8YmphY2tlQHNhbWJhLm9y Zz4KLVN1YmplY3Q6IEp1bHkgMjAyNiBzYW1iYSBzZWN1cml0eSBmaXhlcyBmb3IgdjQuMjIKLU9y aWdpbjogdXBzdHJlYW0sIGh0dHBzOi8vYnVnemlsbGEuc2FtYmEub3JnL3Nob3dfYnVnLmNnaT9p ZD0xNjAzOQotRm9yd2FyZGVkOiBub3QtbmVlZGVkCi0KLUZyb20gZWE3NTMwMzY2ZGE1MDJlMGEx MTY0NjdlNDU2NTMwNDYwM2ViYTViMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFN0 ZWZhbiBNZXR6bWFjaGVyIDxtZXR6ZUBzYW1iYS5vcmc+Ci1EYXRlOiBGcmksIDI5IE1heSAyMDI2 IDEyOjQzOjEzICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMDEvMjNdIENWRS0yMDI2LTY5NDk6IG5k cl9kbnM6IGxldCBuZHJfcHVsbF9kbnNfcmVzX3JlYygpCi0gcmVtZW1iZXIgdGhlIHN0YXJ0IG9m ZnNldAotCi1JbiBvcmRlciB0byB2ZXJpZnkgVFNJRyBzaWduYXR1cmVzIHdlIG5lZWQgYSByZWxp YWJsZSB3YXkgdG8KLXRydW5jYXRlIHRoZSBvcmlnaW5hbCBkbnNfbmFtZV9wYWNrZXQgYnVmZmVy IGJlZm9yZSB0aGUKLWxhc3QgYWRkaXRpb25hbCBkbnNfcmVzX3JlYy4KLQotQlVHOiBodHRwczov L2J1Z3ppbGxhLnNhbWJhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwODMKLQotU2lnbmVkLW9mZi1i eTogU3RlZmFuIE1ldHptYWNoZXIgPG1ldHplQHNhbWJhLm9yZz4KLVJldmlld2VkLWJ5OiBEb3Vn bGFzIEJhZ25hbGwgPGRiYWduYWxsQHNhbWJhLm9yZz4KLS0tLQotIGxpYnJwYy9pZGwvZG5zLmlk bCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDYgKysrKysrCi0gbGlicnBj L25kci9uZHJfZG5zLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxMSArKysr KysrKysrKwotIC4uLi9saWJycGMvdGVzdHMvZG5zLWRlY29kZV9kbnNfbmFtZV9wYWNrZXQtaGV4 LnR4dCAgIHwgIDEgKwotIDMgZmlsZXMgY2hhbmdlZCwgMTggaW5zZXJ0aW9ucygrKQotCi1kaWZm IC0tZ2l0IGEvbGlicnBjL2lkbC9kbnMuaWRsIGIvbGlicnBjL2lkbC9kbnMuaWRsCi1pbmRleCBl Yzg2NjhhYTIxMi4uN2NiMzE2YjJiMTIgMTAwNjQ0Ci0tLS0gYS9saWJycGMvaWRsL2Rucy5pZGwK LSsrKyBiL2xpYnJwYy9pZGwvZG5zLmlkbAotQEAgLTI1MSw2ICsyNTEsMTIgQEAgaW50ZXJmYWNl IGRucwotIAl9IGRuc19yZGF0YTsKLSAKLSAJdHlwZWRlZiBbZmxhZyhMSUJORFJfUFJJTlRfQVJS QVlfSEVYfE5EUl9OT0FMSUdOKSxub3B1c2gsbm9wdWxsXSBzdHJ1Y3QgewotKwkJLyoKLSsJCSAq IFRoaXMgaXMgdGhlIHN0YXJ0IG9mZnNldCBvZiB0aGlzCi0rCQkgKiBkbnNfcmVzX3JlYyByZWxh dGl2ZSB0byB0aGUgc3RhcnQgb2YKLSsJCSAqIGRuc19uYW1lX3BhY2tldCBidWZmZXIuCi0rCQkg Ki8KLSsJCVtpZ25vcmVdIHVpbnQzMiBzdGFydF9uZHJfb2Zmc2V0OwotIAkJZG5zX3N0cmluZyBu YW1lOwotIAkJZG5zX3F0eXBlICBycl90eXBlOwotIAkJZG5zX3FjbGFzcyBycl9jbGFzczsKLWRp ZmYgLS1naXQgYS9saWJycGMvbmRyL25kcl9kbnMuYyBiL2xpYnJwYy9uZHIvbmRyX2Rucy5jCi1p bmRleCA5Y2M1NGMxYTk3Mi4uZjFkZTQwZmQ3ZTggMTAwNjQ0Ci0tLS0gYS9saWJycGMvbmRyL25k cl9kbnMuYwotKysrIGIvbGlicnBjL25kci9uZHJfZG5zLmMKLUBAIC0yNzYsNiArMjc2LDE3IEBA IF9QVUJMSUNfIGVudW0gbmRyX2Vycl9jb2RlIG5kcl9wdWxsX2Ruc19yZXNfcmVjKHN0cnVjdCBu ZHJfcHVsbCAqbmRyLAotIAluZHJfc2V0X2ZsYWdzKCZuZHItPmZsYWdzLCBMSUJORFJfUFJJTlRf QVJSQVlfSEVYIHwKLSAJCQkJICAgTElCTkRSX0ZMQUdfTk9BTElHTik7Ci0gCWlmIChuZHJfZmxh Z3MgJiBORFJfU0NBTEFSUykgewotKwkJLyoKLSsJCSAqIFJlbWVtYmVyIHRoZSBzdGFydCBvZmZz ZXQgaW4gb3JkZXIKLSsJCSAqIHRvIGtub3cgaG93IHRvIHRydW5jYXRlIGJlZm9yZSB0aGUKLSsJ CSAqIGxhc3QgZG5zX3Jlc19yZWMgaW4gb3JkZXIgdG8gZG8KLSsJCSAqIHRoZSBjb3JyZWN0IFRT SUcgY2FsY3VsYXRpb24uCi0rCQkgKgotKwkJICogTm90ZSB0aGF0IHdlIGp1c3Qgc2V0IExJQk5E Ul9GTEFHX05PQUxJR04KLSsJCSAqIGFib3ZlLCBzbyBuZHJfcHVsbF9hbGlnbiBpcyBhIG5vLW9w LgotKwkJICovCi0rCQlyLT5zdGFydF9uZHJfb2Zmc2V0ID0gbmRyLT5vZmZzZXQ7Ci0rCi0gCQlO RFJfQ0hFQ0sobmRyX3B1bGxfYWxpZ24obmRyLCA0KSk7Ci0gCQlORFJfQ0hFQ0sobmRyX3B1bGxf ZG5zX3N0cmluZyhuZHIsIE5EUl9TQ0FMQVJTLCAmci0+bmFtZSkpOwotIAkJTkRSX0NIRUNLKG5k cl9wdWxsX2Ruc19xdHlwZShuZHIsIE5EUl9TQ0FMQVJTLCAmci0+cnJfdHlwZSkpOwotZGlmZiAt LWdpdCBhL3NvdXJjZTQvbGlicnBjL3Rlc3RzL2Rucy1kZWNvZGVfZG5zX25hbWVfcGFja2V0LWhl eC50eHQgYi9zb3VyY2U0L2xpYnJwYy90ZXN0cy9kbnMtZGVjb2RlX2Ruc19uYW1lX3BhY2tldC1o ZXgudHh0Ci1pbmRleCA4NGI1NWYyZDM2Mi4uY2NjMjljMDYyZjIgMTAwNjQ0Ci0tLS0gYS9zb3Vy Y2U0L2xpYnJwYy90ZXN0cy9kbnMtZGVjb2RlX2Ruc19uYW1lX3BhY2tldC1oZXgudHh0Ci0rKysg Yi9zb3VyY2U0L2xpYnJwYy90ZXN0cy9kbnMtZGVjb2RlX2Ruc19uYW1lX3BhY2tldC1oZXgudHh0 Ci1AQCAtMjEsNiArMjEsNyBAQCBwdWxsIHJldHVybmVkIFN1Y2Nlc3MKLSAgICAgICAgIGFuc3dl cnM6IEFSUkFZKDApCi0gICAgICAgICBuc3JlY3M6IEFSUkFZKDEpCi0gICAgICAgICAgICAgbnNy ZWNzOiBzdHJ1Y3QgZG5zX3Jlc19yZWMKLSsgICAgICAgICAgICAgICAgc3RhcnRfbmRyX29mZnNl dCAgICAgICAgIDogMHgwMDAwMDAyNyAoMzkpCi0gICAgICAgICAgICAgICAgIG5hbWUgICAgICAg ICAgICAgICAgICAgICA6ICdjbmFtZWRvdHByZWZpeDAuc2FtYmEyMDAzLmV4YW1wbGUuY29tJwot ICAgICAgICAgICAgICAgICBycl90eXBlICAgICAgICAgICAgICAgICAgOiBETlNfUVRZUEVfQ05B TUUgKDB4NSkKLSAgICAgICAgICAgICAgICAgcnJfY2xhc3MgICAgICAgICAgICAgICAgIDogRE5T X1FDTEFTU19JTiAoMHgxKQotLS0gCi0yLjQzLjAKLQotCi1Gcm9tIGY3ZjRkMDk2YWVkYjIzNmNj ZjAyNmVkM2M1OWM3NTM4ZTUzMDM4MzAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBT dGVmYW4gTWV0em1hY2hlciA8bWV0emVAc2FtYmEub3JnPgotRGF0ZTogRnJpLCAyOSBNYXkgMjAy NiAxMzoxMjoyMCArMDIwMAotU3ViamVjdDogW1BBVENIIDAyLzIzXSBDVkUtMjAyNi02OTQ5OiBz NDpkbnNfc2VydmVyOiBjb3JyZWN0bHkgdHJ1bmNhdGUgdGhlCi0gYnVmZmVyIGZvciBUU0lHIHZl cmlmaWNhdGlvbgotCi1DYWxjdWxhdGluZyB0aGUgbGVuZ3RoIG9mIHRoZSBUU0lHIGFkZGl0aW9u YWwgZG5zX3Jlc19yZWMsCi12aWEgbmRyX3B1c2hfZG5zX3Jlc19yZWMoKSBpcyBmcmFnaWxlIGFu ZCBtYXkgZ2VuZXJhdGUKLWEgYnVmZmVyIGxhcmdlciB0aGFuIHRoZSBvcmlnaW5hbCBkbnNfbmFt ZV9wYWNrZXQgYnVmZmVyLgotCi1UaGlzIGNvdWxkIHVuZGVyZmxvdyB0aGUgcmVzdWx0aW5nIHBh Y2tldF9sZW4sCi10byBhIHZlcnkgbGFyZ2UgdmFsdWUgYW5kIGJ1ZmZlcl9sZW4gdG8gYSBzbWFs bCB2YWx1ZS4KLQotUmVzdWx0aW5nIGluIGEgbWVtY3B5KCkgb2YgYSB2ZXJ5IGxhcmdlIHNpemUg aW50bwotYSB2ZXJ5IHNtYWxsIGJ1ZmZlci4gVGhpcyBtb3N0IGxpa2VseSBhbHJlYWR5Ci1nZXRz IGEgc2VnbWVudGF0aW9uIGZhdWx0IHdoZW4gcmVhZGluZyBhZnRlciB0aGUKLWluLT5kYXRhLgot Ci1UaGlzIHdhcyByZXBvcnRlZCBieSBBcmp1biBCYXNuZXQgd2l0aCBTZWN1cmluIExhYnMuCi0K LUJVRzogaHR0cHM6Ly9idWd6aWxsYS5zYW1iYS5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDgzCi0K LVNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBNZXR6bWFjaGVyIDxtZXR6ZUBzYW1iYS5vcmc+Ci1SZXZp ZXdlZC1ieTogRG91Z2xhcyBCYWduYWxsIDxkYmFnbmFsbEBzYW1iYS5vcmc+Ci0tLS0KLSBzb3Vy Y2U0L2Ruc19zZXJ2ZXIvZG5zX2NyeXB0by5jIHwgNDQgKysrKysrKysrKysrKysrKysrKysrKysr LS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDMyIGluc2VydGlvbnMoKyksIDEyIGRlbGV0aW9u cygtKQotCi1kaWZmIC0tZ2l0IGEvc291cmNlNC9kbnNfc2VydmVyL2Ruc19jcnlwdG8uYyBiL3Nv dXJjZTQvZG5zX3NlcnZlci9kbnNfY3J5cHRvLmMKLWluZGV4IGQzMGU5NzE1MDg2Li43MjIyMTNi ZmQwYSAxMDA2NDQKLS0tLSBhL3NvdXJjZTQvZG5zX3NlcnZlci9kbnNfY3J5cHRvLmMKLSsrKyBi L3NvdXJjZTQvZG5zX3NlcnZlci9kbnNfY3J5cHRvLmMKLUBAIC0zNiw2ICszNiw4IEBAIHN0YXRp YyBXRVJST1IgZG5zX2NvcHlfdHNpZyhUQUxMT0NfQ1RYICptZW1fY3R4LAotIAkJCSAgICBzdHJ1 Y3QgZG5zX3Jlc19yZWMgKm9sZCwKLSAJCQkgICAgc3RydWN0IGRuc19yZXNfcmVjICpuZXdfcmVj KQotIHsKLSsJbmV3X3JlYy0+c3RhcnRfbmRyX29mZnNldCA9IDA7Ci0rCi0gCW5ld19yZWMtPm5h bWUgPSB0YWxsb2Nfc3RyZHVwKG1lbV9jdHgsIG9sZC0+bmFtZSk7Ci0gCVdfRVJST1JfSEFWRV9O T19NRU1PUlkobmV3X3JlYy0+bmFtZSk7Ci0gCi1AQCAtMTAxLDcgKzEwMyw3IEBAIFdFUlJPUiBk bnNfdmVyaWZ5X3RzaWcoc3RydWN0IGRuc19zZXJ2ZXIgKmRucywKLSAJTlRTVEFUVVMgc3RhdHVz OwotIAllbnVtIG5kcl9lcnJfY29kZSBuZHJfZXJyOwotIAl1aW50MTZfdCBpLCBhcmNvdW50ID0g MDsKLS0JREFUQV9CTE9CIHRzaWdfYmxvYiwgZmFrZV90c2lnX2Jsb2IsIHNpZzsKLSsJREFUQV9C TE9CIGZha2VfdHNpZ19ibG9iLCBzaWc7Ci0gCXVpbnQ4X3QgKmJ1ZmZlciA9IE5VTEw7Ci0gCXNp emVfdCBidWZmZXJfbGVuID0gMCwgcGFja2V0X2xlbiA9IDA7Ci0gCXN0cnVjdCBkbnNfc2VydmVy X3RrZXkgKnRrZXkgPSBOVUxMOwotQEAgLTEzMSw2ICsxMzMsMjIgQEAgV0VSUk9SIGRuc192ZXJp ZnlfdHNpZyhzdHJ1Y3QgZG5zX3NlcnZlciAqZG5zLAotIAlzdGF0ZS0+c2lnbiA9IHRydWU7Ci0g CURCR19ERUJVRygiR290IFRTSUdcbiIpOwotIAotKwkvKgotKwkgKiBXZSBuZWVkIHRvIGtlZXAg dGhlIGlucHV0IHBhY2tldCBleGFjdGx5IGxpa2Ugd2UgZ290IGl0LAotKwkgKiBidXQgd2UgbmVl ZCB0byBjdXQgb2ZmIHRoZSB0c2lnIHJlY29yZC4KLSsJICoKLSsJICogRE5TIHBhY2tldHMgY2Fu IG5vdCBiZSBsYXJnZXIgdGhhbiBVSU5UMTZfTUFYLAotKwkgKiB0aGUgc2l6ZSBvZiB0aGUgVURQ IHBheWxvYWQgaXMgdWludDE2X3QgYW5kCi0rCSAqIHRoZXJlJ3MgYSB1aW50MTZfdCBsZW5ndGgg aGVhZGVyIGZvciBUQ1AuCi0rCSAqCi0rCSAqIEFuZCB0aGUgc3RhcnQgb2Zmc2V0IG9mIHRoZSBs YXN0Ci0rCSAqIGFkZGl0aW9uYWwgcmVjb3JkIGNhbid0IGJlIGxhcmdlciB0aGFuCi0rCSAqIHRo ZSB3aG9sZSBwYWNrZXQuCi0rCSAqLwotKwlwYWNrZXRfbGVuID0gcGFja2V0LT5hZGRpdGlvbmFs W2ldLnN0YXJ0X25kcl9vZmZzZXQ7Ci0rCVNNQl9BU1NFUlQoaW4tPmxlbmd0aCA8PSBVSU5UMTZf TUFYKTsKLSsJU01CX0FTU0VSVChpbi0+bGVuZ3RoID4gcGFja2V0X2xlbik7Ci0rCi0gCXN0YXRl LT50c2lnID0gdGFsbG9jX3plcm8oc3RhdGUtPm1lbV9jdHgsIHN0cnVjdCBkbnNfcmVzX3JlYyk7 Ci0gCWlmIChzdGF0ZS0+dHNpZyA9PSBOVUxMKSB7Ci0gCQlyZXR1cm4gV0VSUl9OT1RfRU5PVUdI X01FTU9SWTsKLUBAIC0yMDUsMTQgKzIyMyw2IEBAIFdFUlJPUiBkbnNfdmVyaWZ5X3RzaWcoc3Ry dWN0IGRuc19zZXJ2ZXIgKmRucywKLSAJY2hlY2tfcmVjLT5vdGhlcl9zaXplID0gMDsKLSAJY2hl Y2tfcmVjLT5vdGhlcl9kYXRhID0gTlVMTDsKLSAKLS0JbmRyX2VyciA9IG5kcl9wdXNoX3N0cnVj dF9ibG9iKCZ0c2lnX2Jsb2IsIG1lbV9jdHgsIHN0YXRlLT50c2lnLAotLQkJKG5kcl9wdXNoX2Zs YWdzX2ZuX3QpbmRyX3B1c2hfZG5zX3Jlc19yZWMpOwotLQlpZiAoIU5EUl9FUlJfQ09ERV9JU19T VUNDRVNTKG5kcl9lcnIpKSB7Ci0tCQlERUJVRygxLCAoIkZhaWxlZCB0byBwdXNoIHBhY2tldDog JXMhXG4iLAotLQkJCSAgbmRyX2VycnN0cihuZHJfZXJyKSkpOwotLQkJcmV0dXJuIEROU19FUlIo U0VSVkVSX0ZBSUxVUkUpOwotLQl9Ci0tCi0gCW5kcl9lcnIgPSBuZHJfcHVzaF9zdHJ1Y3RfYmxv YigmZmFrZV90c2lnX2Jsb2IsIG1lbV9jdHgsIGNoZWNrX3JlYywKLSAJCShuZHJfcHVzaF9mbGFn c19mbl90KW5kcl9wdXNoX2Ruc19mYWtlX3RzaWdfcmVjKTsKLSAJaWYgKCFORFJfRVJSX0NPREVf SVNfU1VDQ0VTUyhuZHJfZXJyKSkgewotQEAgLTIyMSw5ICsyMzEsMTkgQEAgV0VSUk9SIGRuc192 ZXJpZnlfdHNpZyhzdHJ1Y3QgZG5zX3NlcnZlciAqZG5zLAotIAkJcmV0dXJuIEROU19FUlIoU0VS VkVSX0ZBSUxVUkUpOwotIAl9Ci0gCi0tCS8qIHdlIG5lZWQgdG8gd29yayBzb21lIG1hZ2ljIGhl cmUuIHdlIG5lZWQgdG8ga2VlcCB0aGUgaW5wdXQgcGFja2V0Ci0tCSAqIGV4YWN0bHkgbGlrZSB3 ZSBnb3QgaXQsIGJ1dCB3ZSBuZWVkIHRvIGN1dCBvZmYgdGhlIHRzaWcgcmVjb3JkICovCi0tCXBh Y2tldF9sZW4gPSBpbi0+bGVuZ3RoIC0gdHNpZ19ibG9iLmxlbmd0aDsKLSsJLyoKLSsJICogV2Ug YWxyZWFkeSBhc3NlcnRlZCBwYWNrZXRfbGVuIDwgVUlOVDE2X01BWAotKwkgKiBhYm92ZSwgYW5k IHN0cnVjdCBuZHJfcHVzaCBoYXMgYWxsb2Nfc2l6ZSBhbmQKLSsJICogb2Zmc2V0IGFzIHVpbnQz Ml90LCBzbyBpdCdzIHJlYWxseSB1bmxpa2VseQotKwkgKiB0byBvdmVyZmxvdyBidWZmZXJfbGVu LiBGb3IgU0laRV9NQVggPT0gVUlOVDMyX01BWCwKLSsJICogdGhlIGZvbGxvd2luZyBjaGVjayBt aWdodCBiZSBpbXBvcnRhbnQsIGJ1dAotKwkgKiBqdXN0IGxldHMgZG8gaXQgYWx3YXlzLgotKwkg Ki8KLSsJaWYgKGZha2VfdHNpZ19ibG9iLmxlbmd0aCA+IChTSVpFX01BWCAtIFVJTlQxNl9NQVgp KSB7Ci0rCQlEQkdfV0FSTklORygiZmFrZV90c2lnX2Jsb2IubGVuZ3RoPSV6dSB0b28gbGFyZ2Uh XG4iLAotKwkJCSAgICBmYWtlX3RzaWdfYmxvYi5sZW5ndGgpOwotKwkJcmV0dXJuIEROU19FUlIo U0VSVkVSX0ZBSUxVUkUpOwotKwl9Ci0gCWJ1ZmZlcl9sZW4gPSBwYWNrZXRfbGVuICsgZmFrZV90 c2lnX2Jsb2IubGVuZ3RoOwotIAlidWZmZXIgPSB0YWxsb2NfemVyb19hcnJheShtZW1fY3R4LCB1 aW50OF90LCBidWZmZXJfbGVuKTsKLSAJaWYgKGJ1ZmZlciA9PSBOVUxMKSB7Ci0tLSAKLTIuNDMu MAotCi0KLUZyb20gZjI1MmExN2JjOGFlNzU2ODk0M2IwZjRjZjUyNmQxZjg1NTVkNjQyOSBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1hcnRpbiBTY2h3ZW5rZSA8bXNjaHdlbmtlQGRk bi5jb20+Ci1EYXRlOiBXZWQsIDI3IE1heSAyMDI2IDE4OjU5OjI0ICsxMDAwCi1TdWJqZWN0OiBb UEFUQ0ggMDMvMjNdIENWRS0yMDI2LTU4MjI0OiBjdGRiLWRhZW1vbjogQXZvaWQgb3V0IG9mIGJv dW5kcyBkYXRhIGFjY2VzcwotCi1Qcm90b2NvbCBmaWVsZCBsZW5ndGhzIG5lZWQgdG8gYmUgdmFs aWRhdGVkIHRvIGF2b2lkIGF0dGVtcHRzIHRvCi1hY2Nlc3MgbWVtb3J5IGJleW9uZCB0aGUgZW5k IG9mIHRoZSBwYWNrZXQgYnVmZmVyLgotCi1CVUc6IGh0dHBzOi8vYnVnemlsbGEuc2FtYmEub3Jn L3Nob3dfYnVnLmNnaT9pZD0xNjA4NQotCi1SZXBvcnRlZC1ieTogVHJpc3RhbiBNYWRhbmkgPHRy aXN0YW5AdGFsZW5jZXNlY3VyaXR5LmNvbT4KLVNpZ25lZC1vZmYtYnk6IE1hcnRpbiBTY2h3ZW5r ZSA8bXNjaHdlbmtlQGRkbi5jb20+Ci1SZXZpZXdlZC1ieTogVHJpc3RhbiBNYWRhbmkgPHRyaXN0 YW5AdGFsZW5jZXNlY3VyaXR5LmNvbT4KLVJldmlld2VkLWJ5OiBTdGVmYW4gTWV0em1hY2hlciA8 bWV0emVAc2FtYmEub3JnPgotLS0tCi0gY3RkYi9zZXJ2ZXIvY3RkYl9jYWxsLmMgICAgfCAzOCAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIGN0ZGIvc2VydmVyL2N0ZGJf Y2xpZW50LmMgIHwgIDkgKysrKysrKysrCi0gY3RkYi9zZXJ2ZXIvY3RkYl9jb250cm9sLmMgfCAx OSArKysrKysrKysrKysrKysrKysrCi0gMyBmaWxlcyBjaGFuZ2VkLCA2NiBpbnNlcnRpb25zKCsp Ci0KLWRpZmYgLS1naXQgYS9jdGRiL3NlcnZlci9jdGRiX2NhbGwuYyBiL2N0ZGIvc2VydmVyL2N0 ZGJfY2FsbC5jCi1pbmRleCBhNTFhOTJkM2U0NS4uY2ZlY2E3ODA2MWMgMTAwNjQ0Ci0tLS0gYS9j dGRiL3NlcnZlci9jdGRiX2NhbGwuYwotKysrIGIvY3RkYi9zZXJ2ZXIvY3RkYl9jYWxsLmMKLUBA IC01ODMsNiArNTgzLDkgQEAgc3RhdGljIGludCBkbWFzdGVyX2RlZmVyX2FkZChzdHJ1Y3QgY3Rk Yl9kYl9jb250ZXh0ICpjdGRiX2RiLAotIHZvaWQgY3RkYl9yZXF1ZXN0X2RtYXN0ZXIoc3RydWN0 IGN0ZGJfY29udGV4dCAqY3RkYiwgc3RydWN0IGN0ZGJfcmVxX2hlYWRlciAqaGRyKQotIHsKLSAJ c3RydWN0IGN0ZGJfcmVxX2RtYXN0ZXJfb2xkICpjID0gKHN0cnVjdCBjdGRiX3JlcV9kbWFzdGVy X29sZCAqKWhkcjsKLSsJc2l6ZV90IHJlcV9kbWFzdGVyX2hlYWRlcl9sZW4gPSBvZmZzZXRvZihz dHJ1Y3QgY3RkYl9yZXFfZG1hc3Rlcl9vbGQsCi0rCQkJCQkJIGRhdGEpOwotKwlzaXplX3QgYnVm X2xlbiA9IGhkci0+bGVuZ3RoOwotIAlUREJfREFUQSBrZXksIGRhdGEsIGRhdGEyOwotIAlzdHJ1 Y3QgY3RkYl9sdGRiX2hlYWRlciBoZWFkZXI7Ci0gCXN0cnVjdCBjdGRiX2RiX2NvbnRleHQgKmN0 ZGJfZGI7Ci1AQCAtNTkwLDYgKzU5MywxMyBAQCB2b2lkIGN0ZGJfcmVxdWVzdF9kbWFzdGVyKHN0 cnVjdCBjdGRiX2NvbnRleHQgKmN0ZGIsIHN0cnVjdCBjdGRiX3JlcV9oZWFkZXIgKmhkcgotIAlz aXplX3QgbGVuOwotIAlpbnQgcmV0OwotIAotKwlpZiAoYnVmX2xlbiA8IHJlcV9kbWFzdGVyX2hl YWRlcl9sZW4gfHwKLSsJICAgIGMtPmtleWxlbiA+IGJ1Zl9sZW4gLSByZXFfZG1hc3Rlcl9oZWFk ZXJfbGVuIHx8Ci0rCSAgICBjLT5kYXRhbGVuID4gYnVmX2xlbiAtIHJlcV9kbWFzdGVyX2hlYWRl cl9sZW4gLSBjLT5rZXlsZW4pIHsKLSsJCURCR19XQVJOSU5HKCJJbnZhbGlkIHBhY2tldFxuIik7 Ci0rCQlyZXR1cm47Ci0rCX0KLSsKLSAJa2V5LmRwdHIgPSBjLT5kYXRhOwotIAlrZXkuZHNpemUg PSBjLT5rZXlsZW47Ci0gCWRhdGEuZHB0ciA9IGMtPmRhdGEgKyBjLT5rZXlsZW47Ci1AQCAtOTE3 LDYgKzkyNyw4IEBAIHNvcnRfa2V5czoKLSB2b2lkIGN0ZGJfcmVxdWVzdF9jYWxsKHN0cnVjdCBj dGRiX2NvbnRleHQgKmN0ZGIsIHN0cnVjdCBjdGRiX3JlcV9oZWFkZXIgKmhkcikKLSB7Ci0gCXN0 cnVjdCBjdGRiX3JlcV9jYWxsX29sZCAqYyA9IChzdHJ1Y3QgY3RkYl9yZXFfY2FsbF9vbGQgKilo ZHI7Ci0rCXNpemVfdCByZXFfY2FsbF9oZWFkZXJfbGVuID0gb2Zmc2V0b2Yoc3RydWN0IGN0ZGJf cmVxX2NhbGxfb2xkLCBkYXRhKTsKLSsJc2l6ZV90IGJ1Zl9sZW4gPSBoZHItPmxlbmd0aDsKLSAJ VERCX0RBVEEgZGF0YTsKLSAJc3RydWN0IGN0ZGJfcmVwbHlfY2FsbF9vbGQgKnI7Ci0gCWludCBy ZXQsIGxlbjsKLUBAIC05MjUsNiArOTM3LDEzIEBAIHZvaWQgY3RkYl9yZXF1ZXN0X2NhbGwoc3Ry dWN0IGN0ZGJfY29udGV4dCAqY3RkYiwgc3RydWN0IGN0ZGJfcmVxX2hlYWRlciAqaGRyKQotIAlz dHJ1Y3QgY3RkYl9kYl9jb250ZXh0ICpjdGRiX2RiOwotIAlpbnQgdG1wX2NvdW50LCBidWNrZXQ7 Ci0gCi0rCWlmIChidWZfbGVuIDwgcmVxX2NhbGxfaGVhZGVyX2xlbiB8fAotKwkgICAgYy0+a2V5 bGVuID4gYnVmX2xlbiAtIHJlcV9jYWxsX2hlYWRlcl9sZW4gIHx8Ci0rCSAgICBjLT5jYWxsZGF0 YWxlbiA+IGJ1Zl9sZW4gLSByZXFfY2FsbF9oZWFkZXJfbGVuIC0gYy0+a2V5bGVuKSB7Ci0rCQlE QkdfV0FSTklORygiSW52YWxpZCBwYWNrZXRcbiIpOwotKwkJcmV0dXJuOwotKwl9Ci0rCi0gCWlm IChjdGRiLT5tZXRob2RzID09IE5VTEwpIHsKLSAJCURFQlVHKERFQlVHX0lORk8sKF9fbG9jYXRp b25fXyAiIEZhaWxlZCBjdGRiX3JlcXVlc3RfY2FsbC4gVHJhbnNwb3J0IGlzIERPV05cbiIpKTsK LSAJCXJldHVybjsKLUBAIC0xMTk5LDggKzEyMTgsMTcgQEAgdm9pZCBjdGRiX3JlcXVlc3RfY2Fs bChzdHJ1Y3QgY3RkYl9jb250ZXh0ICpjdGRiLCBzdHJ1Y3QgY3RkYl9yZXFfaGVhZGVyICpoZHIp Ci0gdm9pZCBjdGRiX3JlcGx5X2NhbGwoc3RydWN0IGN0ZGJfY29udGV4dCAqY3RkYiwgc3RydWN0 IGN0ZGJfcmVxX2hlYWRlciAqaGRyKQotIHsKLSAJc3RydWN0IGN0ZGJfcmVwbHlfY2FsbF9vbGQg KmMgPSAoc3RydWN0IGN0ZGJfcmVwbHlfY2FsbF9vbGQgKiloZHI7Ci0rCXNpemVfdCByZXBseV9j YWxsX2hlYWRlcl9sZW4gPSBvZmZzZXRvZihzdHJ1Y3QgY3RkYl9yZXBseV9jYWxsX29sZCwKLSsJ CQkJCQlkYXRhKTsKLSsJc2l6ZV90IGJ1Zl9sZW4gPSBoZHItPmxlbmd0aDsKLSAJc3RydWN0IGN0 ZGJfY2FsbF9zdGF0ZSAqc3RhdGU7Ci0gCi0rCWlmIChidWZfbGVuIDwgcmVwbHlfY2FsbF9oZWFk ZXJfbGVuIHx8Ci0rCSAgICBjLT5kYXRhbGVuID4gYnVmX2xlbiAtIHJlcGx5X2NhbGxfaGVhZGVy X2xlbikgewotKwkJREJHX1dBUk5JTkcoIkludmFsaWQgcGFja2V0XG4iKTsKLSsJCXJldHVybjsK LSsJfQotKwotIAlzdGF0ZSA9IHJlcWlkX2ZpbmQoY3RkYi0+aWRyLCBoZHItPnJlcWlkLCBzdHJ1 Y3QgY3RkYl9jYWxsX3N0YXRlKTsKLSAJaWYgKHN0YXRlID09IE5VTEwpIHsKLSAJCURFQlVHKERF QlVHX0VSUiwgKF9fbG9jYXRpb25fXyAiIHJlcWlkICV1IG5vdCBmb3VuZFxuIiwgaGRyLT5yZXFp ZCkpOwotQEAgLTEyOTYsMTIgKzEzMjQsMjIgQEAgZmluaXNoZWRfcm86Ci0gdm9pZCBjdGRiX3Jl cGx5X2RtYXN0ZXIoc3RydWN0IGN0ZGJfY29udGV4dCAqY3RkYiwgc3RydWN0IGN0ZGJfcmVxX2hl YWRlciAqaGRyKQotIHsKLSAJc3RydWN0IGN0ZGJfcmVwbHlfZG1hc3Rlcl9vbGQgKmMgPSAoc3Ry dWN0IGN0ZGJfcmVwbHlfZG1hc3Rlcl9vbGQgKiloZHI7Ci0rCXNpemVfdCByZXBseV9kbWFzdGVy X2hlYWRlcl9sZW4gPSBvZmZzZXRvZihzdHJ1Y3QgY3RkYl9yZXBseV9kbWFzdGVyX29sZCwKLSsJ CQkJCQkgICBkYXRhKTsKLSsJc2l6ZV90IGJ1Zl9sZW4gPSBoZHItPmxlbmd0aDsKLSAJc3RydWN0 IGN0ZGJfZGJfY29udGV4dCAqY3RkYl9kYjsKLSAJVERCX0RBVEEga2V5LCBkYXRhOwotIAl1aW50 MzJfdCByZWNvcmRfZmxhZ3MgPSAwOwotIAlzaXplX3QgbGVuOwotIAlpbnQgcmV0OwotIAotKwlp ZiAoYnVmX2xlbiA8IHJlcGx5X2RtYXN0ZXJfaGVhZGVyX2xlbiB8fAotKwkgICAgYy0+a2V5bGVu ID4gYnVmX2xlbiAtIHJlcGx5X2RtYXN0ZXJfaGVhZGVyX2xlbiB8fAotKwkgICAgYy0+ZGF0YWxl biA+IGJ1Zl9sZW4gLSByZXBseV9kbWFzdGVyX2hlYWRlcl9sZW4gLSBjLT5rZXlsZW4pIHsKLSsJ CURCR19XQVJOSU5HKCJJbnZhbGlkIHBhY2tldFxuIik7Ci0rCQlyZXR1cm47Ci0rCX0KLSsKLSAJ Y3RkYl9kYiA9IGZpbmRfY3RkYl9kYihjdGRiLCBjLT5kYl9pZCk7Ci0gCWlmIChjdGRiX2RiID09 IE5VTEwpIHsKLSAJCURFQlVHKERFQlVHX0VSUiwoIlVua25vd24gZGJfaWQgMHgleCBpbiBjdGRi X3JlcGx5X2RtYXN0ZXJcbiIsIGMtPmRiX2lkKSk7Ci1kaWZmIC0tZ2l0IGEvY3RkYi9zZXJ2ZXIv Y3RkYl9jbGllbnQuYyBiL2N0ZGIvc2VydmVyL2N0ZGJfY2xpZW50LmMKLWluZGV4IGM5ZWRiMWQ1 NTRjLi44NGU4ZTNkMmRhNiAxMDA2NDQKLS0tLSBhL2N0ZGIvc2VydmVyL2N0ZGJfY2xpZW50LmMK LSsrKyBiL2N0ZGIvc2VydmVyL2N0ZGJfY2xpZW50LmMKLUBAIC0xOTMsOCArMTkzLDE3IEBAIHZv aWQgY3RkYl9yZXF1ZXN0X21lc3NhZ2Uoc3RydWN0IGN0ZGJfY29udGV4dCAqY3RkYiwKLSAJCQkg IHN0cnVjdCBjdGRiX3JlcV9oZWFkZXIgKmhkcikKLSB7Ci0gCXN0cnVjdCBjdGRiX3JlcV9tZXNz YWdlX29sZCAqYyA9IChzdHJ1Y3QgY3RkYl9yZXFfbWVzc2FnZV9vbGQgKiloZHI7Ci0rCXNpemVf dCByZXFfbWVzc2FnZV9oZWFkZXJfbGVuID0gb2Zmc2V0b2Yoc3RydWN0IGN0ZGJfcmVxX21lc3Nh Z2Vfb2xkLAotKwkJCQkJCSBkYXRhKTsKLSsJc2l6ZV90IGJ1Zl9sZW4gPSBoZHItPmxlbmd0aDsK LSAJVERCX0RBVEEgZGF0YTsKLSAKLSsJaWYgKGJ1Zl9sZW4gPCByZXFfbWVzc2FnZV9oZWFkZXJf bGVuIHx8Ci0rCSAgICBjLT5kYXRhbGVuID4gYnVmX2xlbiAtIHJlcV9tZXNzYWdlX2hlYWRlcl9s ZW4pIHsKLSsJCURCR19XQVJOSU5HKCJJbnZhbGlkIHBhY2tldFxuIik7Ci0rCQlyZXR1cm47Ci0r CX0KLSsKLSAJZGF0YS5kc2l6ZSA9IGMtPmRhdGFsZW47Ci0gCWRhdGEuZHB0ciA9IHRhbGxvY19t ZW1kdXAoYywgJmMtPmRhdGFbMF0sIGMtPmRhdGFsZW4pOwotIAlpZiAoZGF0YS5kcHRyID09IE5V TEwpIHsKLWRpZmYgLS1naXQgYS9jdGRiL3NlcnZlci9jdGRiX2NvbnRyb2wuYyBiL2N0ZGIvc2Vy dmVyL2N0ZGJfY29udHJvbC5jCi1pbmRleCBhNTE3OTVmMzQwYS4uY2ZkODAzMzBjNDEgMTAwNjQ0 Ci0tLS0gYS9jdGRiL3NlcnZlci9jdGRiX2NvbnRyb2wuYwotKysrIGIvY3RkYi9zZXJ2ZXIvY3Rk Yl9jb250cm9sLmMKLUBAIC05MzMsMTEgKzkzMywyMCBAQCB2b2lkIGN0ZGJfcmVxdWVzdF9jb250 cm9sX3JlcGx5KHN0cnVjdCBjdGRiX2NvbnRleHQgKmN0ZGIsIHN0cnVjdCBjdGRiX3JlcV9jb250 cgotIHZvaWQgY3RkYl9yZXF1ZXN0X2NvbnRyb2woc3RydWN0IGN0ZGJfY29udGV4dCAqY3RkYiwg c3RydWN0IGN0ZGJfcmVxX2hlYWRlciAqaGRyKQotIHsKLSAJc3RydWN0IGN0ZGJfcmVxX2NvbnRy b2xfb2xkICpjID0gKHN0cnVjdCBjdGRiX3JlcV9jb250cm9sX29sZCAqKWhkcjsKLSsJc2l6ZV90 IHJlcV9jb250cm9sX2hlYWRlcl9sZW4gPSBvZmZzZXRvZihzdHJ1Y3QgY3RkYl9yZXFfY29udHJv bF9vbGQsCi0rCQkJCQkJIGRhdGEpOwotKwlzaXplX3QgYnVmX2xlbiA9IGhkci0+bGVuZ3RoOwot IAlUREJfREFUQSBkYXRhLCAqb3V0ZGF0YTsKLSAJaW50MzJfdCBzdGF0dXM7Ci0gCWJvb2wgYXN5 bmNfcmVwbHkgPSBmYWxzZTsKLSAJY29uc3QgY2hhciAqZXJyb3Jtc2cgPSBOVUxMOwotIAotKwlp ZiAoYnVmX2xlbiA8IHJlcV9jb250cm9sX2hlYWRlcl9sZW4gfHwKLSsJICAgIGMtPmRhdGFsZW4g PiBidWZfbGVuIC0gcmVxX2NvbnRyb2xfaGVhZGVyX2xlbikgewotKwkJREJHX1dBUk5JTkcoIklu dmFsaWQgcGFja2V0XG4iKTsKLSsJCXJldHVybjsKLSsJfQotKwotIAlkYXRhLmRwdHIgPSAmYy0+ ZGF0YVswXTsKLSAJZGF0YS5kc2l6ZSA9IGMtPmRhdGFsZW47Ci0gCi1AQCAtOTU3LDEwICs5NjYs MjAgQEAgdm9pZCBjdGRiX3JlcXVlc3RfY29udHJvbChzdHJ1Y3QgY3RkYl9jb250ZXh0ICpjdGRi LCBzdHJ1Y3QgY3RkYl9yZXFfaGVhZGVyICpoZHIKLSB2b2lkIGN0ZGJfcmVwbHlfY29udHJvbChz dHJ1Y3QgY3RkYl9jb250ZXh0ICpjdGRiLCBzdHJ1Y3QgY3RkYl9yZXFfaGVhZGVyICpoZHIpCi0g ewotIAlzdHJ1Y3QgY3RkYl9yZXBseV9jb250cm9sX29sZCAqYyA9IChzdHJ1Y3QgY3RkYl9yZXBs eV9jb250cm9sX29sZCAqKWhkcjsKLSsJc2l6ZV90IHJlcGx5X2NvbnRyb2xfaGVhZGVyX2xlbiA9 IG9mZnNldG9mKHN0cnVjdCBjdGRiX3JlcGx5X2NvbnRyb2xfb2xkLAotKwkJCQkJCSAgIGRhdGEp OwotKwlzaXplX3QgYnVmX2xlbiA9IGhkci0+bGVuZ3RoOwotIAlUREJfREFUQSBkYXRhOwotIAlz dHJ1Y3QgY3RkYl9jb250cm9sX3N0YXRlICpzdGF0ZTsKLSAJY29uc3QgY2hhciAqZXJyb3Jtc2cg PSBOVUxMOwotIAotKwlpZiAoYnVmX2xlbiA8IHJlcGx5X2NvbnRyb2xfaGVhZGVyX2xlbiB8fAot KwkgICAgYy0+ZGF0YWxlbiA+IGJ1Zl9sZW4gLSByZXBseV9jb250cm9sX2hlYWRlcl9sZW4gfHwK LSsJICAgIGMtPmVycm9ybGVuID4gYnVmX2xlbiAtIHJlcGx5X2NvbnRyb2xfaGVhZGVyX2xlbiAt IGMtPmRhdGFsZW4pIHsKLSsJCURCR19XQVJOSU5HKCJJbnZhbGlkIHBhY2tldFxuIik7Ci0rCQly ZXR1cm47Ci0rCX0KLSsKLSAJc3RhdGUgPSByZXFpZF9maW5kKGN0ZGItPmlkciwgaGRyLT5yZXFp ZCwgc3RydWN0IGN0ZGJfY29udHJvbF9zdGF0ZSk7Ci0gCWlmIChzdGF0ZSA9PSBOVUxMKSB7Ci0g CQlERUJVRyhERUJVR19FUlIsKCJwbm4gJXUgSW52YWxpZCByZXFpZCAldSBpbiBjdGRiX3JlcGx5 X2NvbnRyb2xcbiIsCi0tLSAKLTIuNDMuMAotCi0KLUZyb20gMzhhNjJjZjVmNzI0OTViOTlmMTBi NzQzMzljNmY4OTU1MDQ0NjlhYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1hcnRp biBTY2h3ZW5rZSA8bXNjaHdlbmtlQGRkbi5jb20+Ci1EYXRlOiBTYXQsIDMwIE1heSAyMDI2IDE0 OjM4OjAyICsxMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDQvMjNdIENWRS0yMDI2LTU4MjI0OiBjdGRi LXByb3RvY29sOiBBdm9pZCBEb1MgbWVtb3J5IGFsbG9jYXRpb24KLQotVGhlIHB1bGwgbG9vcCBh bHJlYWR5IGF2b2lkcyBvdXQgb2YgYm91bmRzIGFjY2Vzc2VzIGJleW9uZCB0aGUgZW5kIG9mCi10 aGUgYnVmZmVyLiAgSG93ZXZlciwgaXQgZG9lcyBub3QgYXZvaWQgYSBEb1MgbWVtb3J5IGFsbG9j YXRpb24gZHVlIHRvCi1hbiB1bnJlYXNvbmFibHkgbGFyZ2UgYXJyYXkgc2l6ZS4KLQotQ2hlY2sg dGhhdCB0aGUgbnVtYmVyIG9mIHNwZWNpZmllZCBhcnJheSBlbGVtZW50cyBjYW4gYmUgcHVsbGVk IGZyb20KLWJ1ZmZlciwgd2hpY2ggcHV0cyBhIHJlYXNvbmFibGUgdXBwZXIgYm91bmQgb24gdGhl IHN1YnNlcXVlbnQgbWVtb3J5Ci1hbGxvY2F0aW9uLgotCi1Vc2UgYW4gaW5pdGlhbGlzZWQgZHVt bXkgdmFyaWFibGUgdG8gYXZvaWQgc3RhdGljIGFuYWx5c2VycwotY29tcGxhaW5pbmcgYWJvdXQg dW5pbml0aWFsaXNlZCB2YXJpYWJsZXMgYmVpbmcgcGFzc2VkLiAgVmFyaWFibGUgaQotY291bGQg YmUgcmV1c2VkIGJ1dCB0aGF0IG1pZ2h0IGJlIGNvbmZ1c2luZywgc28gbGVhdmUgYW55IG9wdGlt aXNhdGlvbgotdG8gdGhlIGNvbXBpbGVyLgotCi1CVUc6IGh0dHBzOi8vYnVnemlsbGEuc2FtYmEu b3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA4NQotCi1SZXBvcnRlZC1ieTogTWFydGluIFNjaHdlbmtl IDxtc2Nod2Vua2VAZGRuLmNvbT4KLVJlcG9ydGVkLWJ5OiBBbHNvIEFuZHJldyBUcmlkZ2VsbCAo aXNzdWUgMjIpCi1TaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gU2Nod2Vua2UgPG1zY2h3ZW5rZUBkZG4u Y29tPgotUmV2aWV3ZWQtYnk6IFRyaXN0YW4gTWFkYW5pIDx0cmlzdGFuQHRhbGVuY2VzZWN1cml0 eS5jb20+Ci1SZXZpZXdlZC1ieTogU3RlZmFuIE1ldHptYWNoZXIgPG1ldHplQHNhbWJhLm9yZz4K LS0tLQotIGN0ZGIvcHJvdG9jb2wvcHJvdG9jb2xfdHlwZXMuYyB8IDYgKysrKysrCi0gMSBmaWxl IGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvY3RkYi9wcm90b2NvbC9w cm90b2NvbF90eXBlcy5jIGIvY3RkYi9wcm90b2NvbC9wcm90b2NvbF90eXBlcy5jCi1pbmRleCAw ZWIxOTIzMjA3ZS4uODZlMWJjMzk1NGUgMTAwNjQ0Ci0tLS0gYS9jdGRiL3Byb3RvY29sL3Byb3Rv Y29sX3R5cGVzLmMKLSsrKyBiL2N0ZGIvcHJvdG9jb2wvcHJvdG9jb2xfdHlwZXMuYwotQEAgLTky NSw2ICs5MjUsNyBAQCBpbnQgY3RkYl92bm5fbWFwX3B1bGwodWludDhfdCAqYnVmLCBzaXplX3Qg YnVmbGVuLCBUQUxMT0NfQ1RYICptZW1fY3R4LAotIAlzdHJ1Y3QgY3RkYl92bm5fbWFwICp2YWw7 Ci0gCXNpemVfdCBvZmZzZXQgPSAwLCBucDsKLSAJdWludDMyX3QgaTsKLSsJdWludDMyX3QgZHVt bXkgPSAwOwotIAlpbnQgcmV0OwotIAotIAl2YWwgPSB0YWxsb2MobWVtX2N0eCwgc3RydWN0IGN0 ZGJfdm5uX21hcCk7Ci1AQCAtOTUwLDYgKzk1MSwxMSBAQCBpbnQgY3RkYl92bm5fbWFwX3B1bGwo dWludDhfdCAqYnVmLCBzaXplX3QgYnVmbGVuLCBUQUxMT0NfQ1RYICptZW1fY3R4LAotIAkJZ290 byBkb25lOwotIAl9Ci0gCi0rCWlmICgodWludDY0X3QpdmFsLT5zaXplICogY3RkYl91aW50MzJf bGVuKCZkdW1teSkgPiBidWZsZW4gLSBvZmZzZXQpIHsKLSsJCXJldCA9IEVNU0dTSVpFOwotKwkJ Z290byBmYWlsOwotKwl9Ci0rCi0gCXZhbC0+bWFwID0gdGFsbG9jX2FycmF5KHZhbCwgdWludDMy X3QsIHZhbC0+c2l6ZSk7Ci0gCWlmICh2YWwtPm1hcCA9PSBOVUxMKSB7Ci0gCQlyZXQgPSBFTk9N RU07Ci0tLSAKLTIuNDMuMAotCi0KLUZyb20gMDBkZGE4YTMxYTA0NWMyNDI5ODBjMDk1ZDAyZjkw MmQyZWUzYWNjMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1hcnRpbiBTY2h3ZW5r ZSA8bXNjaHdlbmtlQGRkbi5jb20+Ci1EYXRlOiBTYXQsIDMwIE1heSAyMDI2IDE0OjI1OjAwICsx MDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDUvMjNdIENWRS0yMDI2LTU4MjI0OiBjdGRiLWRhZW1vbjog QXZvaWQgb3V0LW9mLWJvdW5kcyBkYXRhIGFjY2VzcwotCi1EbyBub3QgYWxsb3cgdGhlIFZOTiBt YXAncyBzaXplIHRvIGV4dGVuZCBwYXN0IHRoZSBlbmQgb2YgdGhlIGJ1ZmZlci4KLVRoaXMgaXMg Y2hlY2tlZCBieSBzd2l0Y2hpbmcgdG8gY3RkYl92bm5fbWFwX3B1bGwoKSwgd2hpY2ggYWxzbwot c2ltcGxpZmllcyB0aGUgY29kZS4KLQotQlVHOiBodHRwczovL2J1Z3ppbGxhLnNhbWJhLm9yZy9z aG93X2J1Zy5jZ2k/aWQ9MTYwODUKLQotU2lnbmVkLW9mZi1ieTogTWFydGluIFNjaHdlbmtlIDxt c2Nod2Vua2VAZGRuLmNvbT4KLVJldmlld2VkLWJ5OiBUcmlzdGFuIE1hZGFuaSA8dHJpc3RhbkB0 YWxlbmNlc2VjdXJpdHkuY29tPgotUmV2aWV3ZWQtYnk6IFN0ZWZhbiBNZXR6bWFjaGVyIDxtZXR6 ZUBzYW1iYS5vcmc+Ci0tLS0KLSBjdGRiL3NlcnZlci9jdGRiX3JlY292ZXIuYyB8IDMyICsrKysr KysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDIxIGluc2VydGlv bnMoKyksIDExIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY3RkYi9zZXJ2ZXIvY3RkYl9y ZWNvdmVyLmMgYi9jdGRiL3NlcnZlci9jdGRiX3JlY292ZXIuYwotaW5kZXggMThkYzI1MGY1Y2Uu LjUwNmIwOTg5Nzk5IDEwMDY0NAotLS0tIGEvY3RkYi9zZXJ2ZXIvY3RkYl9yZWNvdmVyLmMKLSsr KyBiL2N0ZGIvc2VydmVyL2N0ZGJfcmVjb3Zlci5jCi1AQCAtMzYsNiArMzYsOCBAQAotICNpbmNs dWRlICJjdGRiX3ByaXZhdGUuaCIKLSAjaW5jbHVkZSAiY3RkYl9jbGllbnQuaCIKLSAKLSsjaW5j bHVkZSAicHJvdG9jb2wvcHJvdG9jb2xfcHJpdmF0ZS5oIgotKwotICNpbmNsdWRlICJjb21tb24v c3lzdGVtLmgiCi0gI2luY2x1ZGUgImNvbW1vbi9jb21tb24uaCIKLSAjaW5jbHVkZSAiY29tbW9u L2xvZ2dpbmcuaCIKLUBAIC02NywyNCArNjksMzIgQEAgY3RkYl9jb250cm9sX2dldHZubm1hcChz dHJ1Y3QgY3RkYl9jb250ZXh0ICpjdGRiLCB1aW50MzJfdCBvcGNvZGUsIFREQl9EQVRBIGluZGEK LSBpbnQKLSBjdGRiX2NvbnRyb2xfc2V0dm5ubWFwKHN0cnVjdCBjdGRiX2NvbnRleHQgKmN0ZGIs IHVpbnQzMl90IG9wY29kZSwgVERCX0RBVEEgaW5kYXRhLCBUREJfREFUQSAqb3V0ZGF0YSkKLSB7 Ci0tCXN0cnVjdCBjdGRiX3Zubl9tYXBfd2lyZSAqbWFwID0gKHN0cnVjdCBjdGRiX3Zubl9tYXBf d2lyZSAqKWluZGF0YS5kcHRyOwotKwlzdHJ1Y3QgY3RkYl92bm5fbWFwICpuZXcgPSBOVUxMOwot KwlzaXplX3QgbnB1bGwgPSAwOwotKwlpbnQgcmV0ID0gMDsKLSAKLSAJaWYgKGN0ZGItPnJlY292 ZXJ5X21vZGUgIT0gQ1REQl9SRUNPVkVSWV9BQ1RJVkUpIHsKLSAJCURFQlVHKERFQlVHX0VSUiwg KCJBdHRlbXB0IHRvIHNldCB2bm5tYXAgd2hlbiBub3QgaW4gcmVjb3ZlcnlcbiIpKTsKLSAJCXJl dHVybiAtMTsKLSAJfQotIAotKwlyZXQgPSBjdGRiX3Zubl9tYXBfcHVsbChpbmRhdGEuZHB0ciwg aW5kYXRhLmRzaXplLCBjdGRiLCAmbmV3LCAmbnB1bGwpOwotKwlpZiAocmV0ICE9IDApIHsKLSsJ CXN3aXRjaCAocmV0KSB7Ci0rCQljYXNlIEVOT01FTToKLSsJCQlEQkdfRVJSKCJNZW1vcnkgYWxs b2NhdGlvbiBlcnJvclxuIik7Ci0rCQkJYnJlYWs7Ci0rCQljYXNlIEVNU0dTSVpFOgotKwkJCURC R19FUlIoIkludmFsaWQgcGFja2V0XG4iKTsKLSsJCQlicmVhazsKLSsJCWRlZmF1bHQ6Ci0rCQkJ REJHX0VSUigiVW5leHBlY3RlZCBlcnJvciAoJWQpXG4iLCByZXQpOwotKwkJfQotKwkJcmV0dXJu IC0xOwotKwl9Ci0rCi0gCXRhbGxvY19mcmVlKGN0ZGItPnZubl9tYXApOwotLQotLQljdGRiLT52 bm5fbWFwID0gdGFsbG9jKGN0ZGIsIHN0cnVjdCBjdGRiX3Zubl9tYXApOwotLQlDVERCX05PX01F TU9SWShjdGRiLCBjdGRiLT52bm5fbWFwKTsKLS0KLS0JY3RkYi0+dm5uX21hcC0+Z2VuZXJhdGlv biA9IG1hcC0+Z2VuZXJhdGlvbjsKLS0JY3RkYi0+dm5uX21hcC0+c2l6ZSAgICAgICA9IG1hcC0+ c2l6ZTsKLS0JY3RkYi0+dm5uX21hcC0+bWFwID0gdGFsbG9jX2FycmF5KGN0ZGItPnZubl9tYXAs IHVpbnQzMl90LCBtYXAtPnNpemUpOwotLQlDVERCX05PX01FTU9SWShjdGRiLCBjdGRiLT52bm5f bWFwLT5tYXApOwotLQotLQltZW1jcHkoY3RkYi0+dm5uX21hcC0+bWFwLCBtYXAtPm1hcCwgc2l6 ZW9mKHVpbnQzMl90KSptYXAtPnNpemUpOwotKwljdGRiLT52bm5fbWFwID0gbmV3OwotIAotIAly ZXR1cm4gMDsKLSB9Ci0tLSAKLTIuNDMuMAotCi0KLUZyb20gODE3ZjkyNmVlOTNmNWE1ZmM1MzZl Njc2NTUxZWI5ZmMzZWRiODBlMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1hcnRp biBTY2h3ZW5rZSA8bXNjaHdlbmtlQGRkbi5jb20+Ci1EYXRlOiBTYXQsIDMwIE1heSAyMDI2IDE1 OjA0OjMxICsxMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDYvMjNdIENWRS0yMDI2LTU4MjI0OiBjdGRi LWRhZW1vbjogQXZvaWQgb3V0IG9mIGJvdW5kcyBkYXRhIGFjY2VzcwotCi1JZiBhIE5VTCB0ZXJt aW5hdG9yIGRvZXNuJ3QgYXBwZWFyIGluIHRoZSBidWZmZXIgdGhlbiB0aGUgZGF0YWJhc2UKLW5h bWUgaXMgbm90IGEgdmFsaWQgc3RyaW5nLgotCi1CVUc6IGh0dHBzOi8vYnVnemlsbGEuc2FtYmEu b3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA4NQotCi1TaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gU2Nod2Vu a2UgPG1zY2h3ZW5rZUBkZG4uY29tPgotUmV2aWV3ZWQtYnk6IFRyaXN0YW4gTWFkYW5pIDx0cmlz dGFuQHRhbGVuY2VzZWN1cml0eS5jb20+Ci1SZXZpZXdlZC1ieTogU3RlZmFuIE1ldHptYWNoZXIg PG1ldHplQHNhbWJhLm9yZz4KLS0tLQotIGN0ZGIvc2VydmVyL2N0ZGJfbHRkYl9zZXJ2ZXIuYyB8 IDcgKysrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdp dCBhL2N0ZGIvc2VydmVyL2N0ZGJfbHRkYl9zZXJ2ZXIuYyBiL2N0ZGIvc2VydmVyL2N0ZGJfbHRk Yl9zZXJ2ZXIuYwotaW5kZXggOGQwMzA2MmI5N2EuLjI0MzNiMzliODM2IDEwMDY0NAotLS0tIGEv Y3RkYi9zZXJ2ZXIvY3RkYl9sdGRiX3NlcnZlci5jCi0rKysgYi9jdGRiL3NlcnZlci9jdGRiX2x0 ZGJfc2VydmVyLmMKLUBAIC0xMTA5LDggKzExMDksMTUgQEAgaW50MzJfdCBjdGRiX2NvbnRyb2xf ZGJfYXR0YWNoKHN0cnVjdCBjdGRiX2NvbnRleHQgKmN0ZGIsCi0gCXN0cnVjdCBjdGRiX2RiX2Nv bnRleHQgKmRiOwotIAlzdHJ1Y3QgY3RkYl9ub2RlICpub2RlID0gY3RkYi0+bm9kZXNbY3RkYi0+ cG5uXTsKLSAJc3RydWN0IGN0ZGJfY2xpZW50ICpjbGllbnQgPSBOVUxMOwotKwljaGFyICp0ID0g TlVMTDsKLSAJdWludDMyX3Qgb3Bjb2RlOwotIAotKwl0ID0gbWVtY2hyKGluZGF0YS5kcHRyLCAn XDAnLCBpbmRhdGEuZHNpemUpOwotKwlpZiAodCA9PSBOVUxMKSB7Ci0rCQlEQkdfRVJSKCJJbnZh bGlkIHBhY2tldFxuIik7Ci0rCQlyZXR1cm4gLTE7Ci0rCX0KLSsKLSAJaWYgKGN0ZGItPnR1bmFi bGUuYWxsb3dfY2xpZW50X2RiX2F0dGFjaCA9PSAwKSB7Ci0gCQlERUJVRyhERUJVR19FUlIsICgi REIgQXR0YWNoIHRvIGRhdGFiYXNlICVzIGRlbmllZCBieSB0dW5hYmxlICIKLSAJCQkJICAiQWxs b3dDbGllbnREQkFjY2VzcyA9PSAwXG4iLCBkYl9uYW1lKSk7Ci0tLSAKLTIuNDMuMAotCi0KLUZy b20gYWViZjg4Y2MzZjczNTc0MTEyYTQxYjRhZWFhNjc0NWJmNzM1ODE2YSBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKLUZyb206IE1hcnRpbiBTY2h3ZW5rZSA8bXNjaHdlbmtlQGRkbi5jb20+Ci1E YXRlOiBTYXQsIDMwIE1heSAyMDI2IDE3OjM1OjIzICsxMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDcv MjNdIENWRS0yMDI2LTU4MjI0OiBjdGRiLWRhZW1vbjogQXZvaWQgb3V0IG9mIGJvdW5kcyBkYXRh IGFjY2VzcwotCi1UaGUgY291bnQgY2FuJ3QgZXhjZWVkIHRoZSByZWNkYXRhIGJ1ZmZlciBzaXpl LgotCi1CVUc6IGh0dHBzOi8vYnVnemlsbGEuc2FtYmEub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA4 NQotCi1TaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gU2Nod2Vua2UgPG1zY2h3ZW5rZUBkZG4uY29tPgot UmV2aWV3ZWQtYnk6IFRyaXN0YW4gTWFkYW5pIDx0cmlzdGFuQHRhbGVuY2VzZWN1cml0eS5jb20+ Ci1SZXZpZXdlZC1ieTogU3RlZmFuIE1ldHptYWNoZXIgPG1ldHplQHNhbWJhLm9yZz4KLS0tLQot IGN0ZGIvc2VydmVyL2N0ZGJfdXBkYXRlX3JlY29yZC5jIHwgMTAgKysrKysrKysrKwotIDEgZmls ZSBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9jdGRiL3NlcnZlci9j dGRiX3VwZGF0ZV9yZWNvcmQuYyBiL2N0ZGIvc2VydmVyL2N0ZGJfdXBkYXRlX3JlY29yZC5jCi1p bmRleCA0MDU0OTljODFlMi4uMTU0YjE0Mjc0MTAgMTAwNjQ0Ci0tLS0gYS9jdGRiL3NlcnZlci9j dGRiX3VwZGF0ZV9yZWNvcmQuYwotKysrIGIvY3RkYi9zZXJ2ZXIvY3RkYl91cGRhdGVfcmVjb3Jk LmMKLUBAIC0zMTgsNiArMzE4LDE2IEBAIGludDMyX3QgY3RkYl9jb250cm9sX3VwZGF0ZV9yZWNv cmQoc3RydWN0IGN0ZGJfY29udGV4dCAqY3RkYiwKLSAJc3RydWN0IGNoaWxkd3JpdGVfaGFuZGxl ICpoYW5kbGU7Ci0gCXN0cnVjdCBjdGRiX21hcnNoYWxsX2J1ZmZlciAqbSA9IChzdHJ1Y3QgY3Rk Yl9tYXJzaGFsbF9idWZmZXIgKilyZWNkYXRhLmRwdHI7Ci0gCi0rCWlmIChyZWNkYXRhLmRzaXpl IDwgb2Zmc2V0b2Yoc3RydWN0IGN0ZGJfbWFyc2hhbGxfYnVmZmVyLCBkYXRhKSkgewotKwkJREJH X0VSUigiSW52YWxpZCBwYWNrZXRcbiIpOwotKwkJcmV0dXJuIC0xOwotKwl9Ci0rCWlmIChtLT5j b3VudCA+Ci0rCSAgICByZWNkYXRhLmRzaXplIC0gb2Zmc2V0b2Yoc3RydWN0IGN0ZGJfbWFyc2hh bGxfYnVmZmVyLCBkYXRhKSkgewotKwkJREJHX0VSUigiSW52YWxpZCBwYWNrZXRcbiIpOwotKwkJ cmV0dXJuIC0xOwotKwl9Ci0rCi0gCWlmIChjdGRiLT5yZWNvdmVyeV9tb2RlICE9IENUREJfUkVD T1ZFUllfTk9STUFMKSB7Ci0gCQlERUJVRyhERUJVR19JTkZPLCgicmVqZWN0aW5nIGN0ZGJfY29u dHJvbF91cGRhdGVfcmVjb3JkIHdoZW4gcmVjb3ZlcnkgYWN0aXZlXG4iKSk7Ci0gCQlyZXR1cm4g LTE7Ci0tLSAKLTIuNDMuMAotCi0KLUZyb20gNDI0YzQyMjI2ZmEyZGVhYzU2ZjVkZjhmZDliMTE0 YjZhYjBiMTQ0ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1hcnRpbiBTY2h3ZW5r ZSA8bXNjaHdlbmtlQGRkbi5jb20+Ci1EYXRlOiBTYXQsIDMwIE1heSAyMDI2IDE3OjQ1OjU2ICsx MDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDgvMjNdIENWRS0yMDI2LTU4MjI0OiBjdGRiLWRhZW1vbjog QXZvaWQgb3V0IG9mIGJvdW5kcyBkYXRhIGFjY2VzcwotCi1UaGUgY291bnQgY2FuJ3QgZXhjZWVk IHRoZSBpbmRhdGEgYnVmZmVyIHNpemUuCi0KLUJVRzogaHR0cHM6Ly9idWd6aWxsYS5zYW1iYS5v cmcvc2hvd19idWcuY2dpP2lkPTE2MDg1Ci0KLVNpZ25lZC1vZmYtYnk6IE1hcnRpbiBTY2h3ZW5r ZSA8bXNjaHdlbmtlQGRkbi5jb20+Ci1SZXZpZXdlZC1ieTogVHJpc3RhbiBNYWRhbmkgPHRyaXN0 YW5AdGFsZW5jZXNlY3VyaXR5LmNvbT4KLVJldmlld2VkLWJ5OiBTdGVmYW4gTWV0em1hY2hlciA8 bWV0emVAc2FtYmEub3JnPgotLS0tCi0gY3RkYi9zZXJ2ZXIvY3RkYl9yZWNvdmVyLmMgfCA2ICsr KysrKwotIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2N0 ZGIvc2VydmVyL2N0ZGJfcmVjb3Zlci5jIGIvY3RkYi9zZXJ2ZXIvY3RkYl9yZWNvdmVyLmMKLWlu ZGV4IDUwNmIwOTg5Nzk5Li5iNzRkY2E1OGM4ZCAxMDA2NDQKLS0tLSBhL2N0ZGIvc2VydmVyL2N0 ZGJfcmVjb3Zlci5jCi0rKysgYi9jdGRiL3NlcnZlci9jdGRiX3JlY292ZXIuYwotQEAgLTEwNjIs NiArMTA2MiwxMiBAQCBpbnQzMl90IGN0ZGJfY29udHJvbF90cnlfZGVsZXRlX3JlY29yZHMoc3Ry dWN0IGN0ZGJfY29udGV4dCAqY3RkYiwgVERCX0RBVEEgaW5kYQotIAkJcmV0dXJuIC0xOwotIAl9 Ci0gCi0rCWlmIChyZXBseS0+Y291bnQgPgotKwkgICAgaW5kYXRhLmRzaXplIC0gb2Zmc2V0b2Yo c3RydWN0IGN0ZGJfbWFyc2hhbGxfYnVmZmVyLCBkYXRhKSkgewotKwkJREJHX0VSUigiSW52YWxp ZCBwYWNrZXRcbiIpOwotKwkJcmV0dXJuIC0xOwotKwl9Ci0rCi0gCWN0ZGJfZGIgPSBmaW5kX2N0 ZGJfZGIoY3RkYiwgcmVwbHktPmRiX2lkKTsKLSAJaWYgKCFjdGRiX2RiKSB7Ci0gCQlERUJVRyhE RUJVR19FUlIsKF9fbG9jYXRpb25fXyAiIFVua25vd24gZGIgMHglMDh4XG4iLCByZXBseS0+ZGJf aWQpKTsKLS0tIAotMi40My4wCi0KLQotRnJvbSBlZDNlNzIzNTg3OTIwZGMzYzk1NWYwOThjMGUx YTAwZjMxNjgzNWU0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWFydGluIFNjaHdl bmtlIDxtc2Nod2Vua2VAZGRuLmNvbT4KLURhdGU6IFN1biwgMzEgTWF5IDIwMjYgMTU6MTE6Mzkg KzEwMDAKLVN1YmplY3Q6IFtQQVRDSCAwOS8yM10gQ1ZFLTIwMjYtNTgyMjQ6IGN0ZGItZGFlbW9u OiBBdm9pZCBvdXQgb2YgYm91bmRzIGRhdGEgYWNjZXNzCi0KLVRoZSBmaXJzdCBjaGVjayBpcyBj bGVhcmx5IG5lZWRlZCBiZWNhdXNlIG0tPmRiX2lkIGlzIHJlZmVyZW5jZWQuICBUaGUKLXNlY29u ZCBjaGVjayBpcyBoYW5kbGVkIGJ5IGEgc2ltaWxhciB1cGRhdGUgdG8KLWN0ZGJfY29udHJvbF91 cGRhdGVfcmVjb3JkKCksIGJ1dCByZXBlYXQgaXQgaW4gY2FzZSBzb21ldGhpbmcgZWxzZQotY2hh bmdlcy4KLQotQlVHOiBodHRwczovL2J1Z3ppbGxhLnNhbWJhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9 MTYwODUKLQotU2lnbmVkLW9mZi1ieTogTWFydGluIFNjaHdlbmtlIDxtc2Nod2Vua2VAZGRuLmNv bT4KLVJldmlld2VkLWJ5OiBUcmlzdGFuIE1hZGFuaSA8dHJpc3RhbkB0YWxlbmNlc2VjdXJpdHku Y29tPgotUmV2aWV3ZWQtYnk6IFN0ZWZhbiBNZXR6bWFjaGVyIDxtZXR6ZUBzYW1iYS5vcmc+Ci0t LS0KLSBjdGRiL3NlcnZlci9jdGRiX3BlcnNpc3RlbnQuYyB8IDEwICsrKysrKysrKysKLSAxIGZp bGUgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvY3RkYi9zZXJ2ZXIv Y3RkYl9wZXJzaXN0ZW50LmMgYi9jdGRiL3NlcnZlci9jdGRiX3BlcnNpc3RlbnQuYwotaW5kZXgg MjY3MTc0NDFkMTcuLjFiMGQxNDExNTUzIDEwMDY0NAotLS0tIGEvY3RkYi9zZXJ2ZXIvY3RkYl9w ZXJzaXN0ZW50LmMKLSsrKyBiL2N0ZGIvc2VydmVyL2N0ZGJfcGVyc2lzdGVudC5jCi1AQCAtMTgy LDYgKzE4MiwxNiBAQCBpbnQzMl90IGN0ZGJfY29udHJvbF90cmFuczNfY29tbWl0KHN0cnVjdCBj dGRiX2NvbnRleHQgKmN0ZGIsCi0gCXN0cnVjdCBjdGRiX21hcnNoYWxsX2J1ZmZlciAqbSA9IChz dHJ1Y3QgY3RkYl9tYXJzaGFsbF9idWZmZXIgKilyZWNkYXRhLmRwdHI7Ci0gCXN0cnVjdCBjdGRi X2RiX2NvbnRleHQgKmN0ZGJfZGI7Ci0gCi0rCWlmIChyZWNkYXRhLmRzaXplIDwgb2Zmc2V0b2Yo c3RydWN0IGN0ZGJfbWFyc2hhbGxfYnVmZmVyLCBkYXRhKSkgewotKwkJREJHX0VSUigiSW52YWxp ZCBwYWNrZXRcbiIpOwotKwkJcmV0dXJuIC0xOwotKwl9Ci0rCWlmIChtLT5jb3VudCA+Ci0rCSAg ICByZWNkYXRhLmRzaXplIC0gb2Zmc2V0b2Yoc3RydWN0IGN0ZGJfbWFyc2hhbGxfYnVmZmVyLCBk YXRhKSkgewotKwkJREJHX0VSUigiSW52YWxpZCBwYWNrZXRcbiIpOwotKwkJcmV0dXJuIC0xOwot Kwl9Ci0rCi0gCWlmIChjdGRiLT5yZWNvdmVyeV9tb2RlICE9IENUREJfUkVDT1ZFUllfTk9STUFM KSB7Ci0gCQlERUJVRyhERUJVR19JTkZPLCgicmVqZWN0aW5nIGN0ZGJfY29udHJvbF90cmFuczNf Y29tbWl0IHdoZW4gcmVjb3ZlcnkgYWN0aXZlXG4iKSk7Ci0gCQlyZXR1cm4gLTE7Ci0tLSAKLTIu NDMuMAotCi0KLUZyb20gNmE2Y2ZhMjUxNDhhMzlkMDI0ZjRlODY4MDI5ZGI0MjBhMzZhMmI2MSBN b24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1hcnRpbiBTY2h3ZW5rZSA8bXNjaHdlbmtl QGRkbi5jb20+Ci1EYXRlOiBUdWUsIDkgSnVuIDIwMjYgMTA6NDE6MjUgKzEwMDAKLVN1YmplY3Q6 IFtQQVRDSCAxMC8yM10gQ1ZFLTIwMjYtNTgyMjQ6IGN0ZGItZGFlbW9uOiBBdm9pZCBvdXQgb2Yg Ym91bmRzIGRhdGEgYWNjZXNzCi0KLUluc3RlYWQgb2YgY2hlY2tpbmcgb25seSB0aGF0IHRoZXJl IGlzIGVub3VnaCBkYXRhIGZvciB0aGUgbGVuZ3RoCi1maWVsZCwgY2hlY2sgdGhlcmUgaXMgZW5v dWdoIGRhdGEgZm9yIHRoZSBlbnRpcmUgaGVhZGVyIHBhcnQgb2YgdGhlCi1zdHJ1Y3QuICBBZnRl ciBjcm9zcy1jaGVja2luZyBvdmVyYWxsIGxlbmd0aHMsIGVuc3VyZSB0aGVyZSBpcyBlbm91Z2gK LWRhdGEgZm9yIHRoZSBrZXkvZGF0YSBpbiB0aGUgZGF0YSBlbGVtZW50LgotCi1XaGlsZSBoZXJl LCBtb2Rlcm5pc2UgdGhlIERFQlVHLgotCi1CVUc6IGh0dHBzOi8vYnVnemlsbGEuc2FtYmEub3Jn L3Nob3dfYnVnLmNnaT9pZD0xNjA4NQotCi1SZXBvcnRlZC1ieTogQW5kcmV3IFRyaWRnZWxsIChp c3N1ZSAxMykKLVNpZ25lZC1vZmYtYnk6IE1hcnRpbiBTY2h3ZW5rZSA8bXNjaHdlbmtlQGRkbi5j b20+Ci1SZXZpZXdlZC1ieTogVHJpc3RhbiBNYWRhbmkgPHRyaXN0YW5AdGFsZW5jZXNlY3VyaXR5 LmNvbT4KLVJldmlld2VkLWJ5OiBTdGVmYW4gTWV0em1hY2hlciA8bWV0emVAc2FtYmEub3JnPgot LS0tCi0gY3RkYi9zZXJ2ZXIvY3RkYl90cmF2ZXJzZS5jIHwgOCArKysrKystLQotIDEgZmlsZSBj aGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9j dGRiL3NlcnZlci9jdGRiX3RyYXZlcnNlLmMgYi9jdGRiL3NlcnZlci9jdGRiX3RyYXZlcnNlLmMK LWluZGV4IDQ4NjVkY2M5NGYwLi4wOTRmODI0YmY5ZCAxMDA2NDQKLS0tLSBhL2N0ZGIvc2VydmVy L2N0ZGJfdHJhdmVyc2UuYwotKysrIGIvY3RkYi9zZXJ2ZXIvY3RkYl90cmF2ZXJzZS5jCi1AQCAt NTYxLDEzICs1NjEsMTcgQEAgaW50MzJfdCBjdGRiX2NvbnRyb2xfdHJhdmVyc2VfYWxsKHN0cnVj dCBjdGRiX2NvbnRleHQgKmN0ZGIsIFREQl9EQVRBIGRhdGEsIFREQl8KLSBpbnQzMl90IGN0ZGJf Y29udHJvbF90cmF2ZXJzZV9kYXRhKHN0cnVjdCBjdGRiX2NvbnRleHQgKmN0ZGIsIFREQl9EQVRB IGRhdGEsIFREQl9EQVRBICpvdXRkYXRhKQotIHsKLSAJc3RydWN0IGN0ZGJfcmVjX2RhdGFfb2xk ICpkID0gKHN0cnVjdCBjdGRiX3JlY19kYXRhX29sZCAqKWRhdGEuZHB0cjsKLSsJc2l6ZV90IHJl Y19kYXRhX2hlYWRlcl9sZW4gPSBvZmZzZXRvZihzdHJ1Y3QgY3RkYl9yZWNfZGF0YV9vbGQsIGRh dGEpOwotIAlzdHJ1Y3QgY3RkYl90cmF2ZXJzZV9hbGxfaGFuZGxlICpzdGF0ZTsKLSAJVERCX0RB VEEga2V5OwotIAljdGRiX3RyYXZlcnNlX2ZuX3QgY2FsbGJhY2s7Ci0gCXZvaWQgKnByaXZhdGVf ZGF0YTsKLSAKLS0JaWYgKGRhdGEuZHNpemUgPCBzaXplb2YodWludDMyX3QpIHx8IGRhdGEuZHNp emUgIT0gZC0+bGVuZ3RoKSB7Ci0tCQlERUJVRyhERUJVR19FUlIsKCJCYWQgcmVjb3JkIHNpemUg aW4gY3RkYl9jb250cm9sX3RyYXZlcnNlX2RhdGFcbiIpKTsKLSsJaWYgKGRhdGEuZHNpemUgPCBy ZWNfZGF0YV9oZWFkZXJfbGVuIHx8Ci0rCSAgICBkYXRhLmRzaXplICE9IGQtPmxlbmd0aCB8fAot KwkgICAgZC0+a2V5bGVuID4gZC0+bGVuZ3RoIC0gcmVjX2RhdGFfaGVhZGVyX2xlbiB8fAotKwkg ICAgZC0+ZGF0YWxlbiA+IGQtPmxlbmd0aCAtIHJlY19kYXRhX2hlYWRlcl9sZW4gLSBkLT5rZXls ZW4pIHsKLSsJCURCR19FUlIoIkludmFsaWQgcGFja2V0XG4iKTsKLSAJCXJldHVybiAtMTsKLSAJ fQotIAotLS0gCi0yLjQzLjAKLQotCi1Gcm9tIGJiZjdmMWM2NGMzMWY1MGE0ZmNlYWZlZTQwMzE1 YzJhNjYwNWUzMGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYXJ0aW4gU2Nod2Vu a2UgPG1zY2h3ZW5rZUBkZG4uY29tPgotRGF0ZTogVHVlLCA5IEp1biAyMDI2IDIxOjQ4OjAyICsx MDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTEvMjNdIENWRS0yMDI2LTU4MjI0OiBjdGRiLXByb3RvY29s OiBBdm9pZCBvZmYtYnktb25lIGVycm9yIGZvciBieXRlcyBwdWxsZWQKLQotQXMgcGVyIHRoZSBj b21tZW50LCBpZiB0aGVyZSBpcyBubyBOVUwgYnl0ZSBpbiB0aGUgYnVmZmVyIHRoZW4gZG9uJ3QK LWNvdW50IG9uZSBpbiB0aGUgbnVtYmVyIG9mIGJ5dGVzIHB1bGxlZC4KLQotTm90ZSB0aGF0IHRo aXMgaXMgdW5saWtlbHkgdG8gYmUgYSBzZWN1cml0eSBpc3N1ZSBiZWNhdXNlIGl0IHdvdWxkCi10 YWtlIGEgcHJvdG9jb2wgYnVnIGVsc2V3aGVyZSB0byBvdmVycnVuIHRoZSBidWZmZXIuICBIb3dl dmVyLCBpbmNsdWRlCi10aGlzIGZpeCBoZXJlIGZvciBwb3N0ZXJpdHkuCi0KLUJVRzogaHR0cHM6 Ly9idWd6aWxsYS5zYW1iYS5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDg1Ci0KLVJlcG9ydGVkLWJ5 OiBBbmRyZXcgVHJpZGdlbGwgKGlzc3VlIDE2KQotU2lnbmVkLW9mZi1ieTogTWFydGluIFNjaHdl bmtlIDxtc2Nod2Vua2VAZGRuLmNvbT4KLVJldmlld2VkLWJ5OiBUcmlzdGFuIE1hZGFuaSA8dHJp c3RhbkB0YWxlbmNlc2VjdXJpdHkuY29tPgotUmV2aWV3ZWQtYnk6IFN0ZWZhbiBNZXR6bWFjaGVy IDxtZXR6ZUBzYW1iYS5vcmc+Ci0tLS0KLSBjdGRiL3Byb3RvY29sL3Byb3RvY29sX2Jhc2ljLmMg fCAxMiArKysrKysrKysrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgMiBk ZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2N0ZGIvcHJvdG9jb2wvcHJvdG9jb2xfYmFzaWMu YyBiL2N0ZGIvcHJvdG9jb2wvcHJvdG9jb2xfYmFzaWMuYwotaW5kZXggNDJmMjA3NzkwZDAuLjlj YzUyZGVmNjQ0IDEwMDY0NAotLS0tIGEvY3RkYi9wcm90b2NvbC9wcm90b2NvbF9iYXNpYy5jCi0r KysgYi9jdGRiL3Byb3RvY29sL3Byb3RvY29sX2Jhc2ljLmMKLUBAIC0yNDcsNyArMjQ3LDggQEAg dm9pZCBjdGRiX3N0cmluZ19wdXNoKGNvbnN0IGNoYXIgKippbiwgdWludDhfdCAqYnVmLCBzaXpl X3QgKm5wdXNoKQotIGludCBjdGRiX3N0cmluZ19wdWxsKHVpbnQ4X3QgKmJ1Ziwgc2l6ZV90IGJ1 ZmxlbiwgVEFMTE9DX0NUWCAqbWVtX2N0eCwKLSAJCSAgICAgY29uc3QgY2hhciAqKm91dCwgc2l6 ZV90ICpucHVsbCkKLSB7Ci0tCWNvbnN0IGNoYXIgKnN0cjsKLSsJY29uc3QgY2hhciAqc3RyID0g TlVMTDsKLSsJc2l6ZV90IGxlbiA9IDA7Ci0gCi0gCWlmIChidWZsZW4gPiBVSU5UMzJfTUFYKSB7 Ci0gCQlyZXR1cm4gRU1TR1NJWkU7Ci1AQCAtMjY1LDcgKzI2NiwxNCBAQCBpbnQgY3RkYl9zdHJp bmdfcHVsbCh1aW50OF90ICpidWYsIHNpemVfdCBidWZsZW4sIFRBTExPQ19DVFggKm1lbV9jdHgs Ci0gCX0KLSAKLSAJKm91dCA9IHN0cjsKLS0JKm5wdWxsID0gY3RkYl9zdHJpbmdfbGVuKCZzdHIp OwotKwkvKgotKwkgKiBBdm9pZCBjbGFpbWluZyB0byBoYXZlIGNvbnN1bWVkIG1vcmUgdGhhbiBi dWZsZW4uCi0rCSAqIGN0ZGJfc3RyaW5nX2xlbigpIHJldHVybnMgYnVmbGVuICsgMSBpZiB0aGVy ZSBpcyBubwotKwkgKiBOVUwtdGVybWluYXRvciB3aXRoaW4gYnVmbGVuLCBzbyBubyBOVUwgd2Fz IGFjdHVhbGx5Ci0rCSAqIGNvbnN1bWVkIChzbyBubyArMSBuZWVkZWQpLgotKwkgKi8KLSsJbGVu ID0gY3RkYl9zdHJpbmdfbGVuKCZzdHIpOwotKwkqbnB1bGwgPSBNSU4oYnVmbGVuLCBsZW4pOwot IAlyZXR1cm4gMDsKLSB9Ci0gCi0tLSAKLTIuNDMuMAotCi0KLUZyb20gNjIzY2JhZGQ0NjA0M2Jh NjM1MmQ2MWExZmE5ZDhjMTdkZWIyYjE3OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206 IE1hcnRpbiBTY2h3ZW5rZSA8bXNjaHdlbmtlQGRkbi5jb20+Ci1EYXRlOiBUdWUsIDkgSnVuIDIw MjYgMjE6NTQ6MjAgKzEwMDAKLVN1YmplY3Q6IFtQQVRDSCAxMi8yM10gQ1ZFLTIwMjYtNTgyMjQ6 IGN0ZGItcHJvdG9jb2w6IEFsd2F5cyBwdWxsIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mCi0gYnl0 ZXMKLQotVGhlIHN0cmluZyBzaG91bGQgbm90IGNvbnRhaW4gYSBwcmVtYXR1cmUgTlVMIHRlcm1p bmF0b3IsIHdoaWNoIHdvdWxkCi1jYXVzZSBsZXNzIHRoYW4gdGhlIHNwZWNpZmllZCBudW1iZXIg b2YgYnl0ZXMgdG8gYmUgcHVsbGVkLiAgSWYgaXQKLWRvZXMsIGNvbnN1bWUgdGhlIHNwZWNpZmll ZCBudW1iZXIgb2YgYnl0ZXMgYW55d2F5LiAgVGhlIGFsdGVybmF0aXZlCi1kb2Vzbid0IG1ha2Ug c2Vuc2UuCi0KLU5vdGUgdGhhdCB0aGlzIGlzIHVubGlrZWx5IHRvIGJlIGEgc2VjdXJpdHkgaXNz dWUsIHdoZXJlIHRyYWlsaW5nIGRhdGEKLWluIHRoZSBzdHJpbmcgZmllbGQgY2F1c2VzIHRoZSBi dWZmZXIgdG8gYmUgb3ZlcnJ1bi4gIFRoYXQgd291bGQKLXJlcXVpcmUgYW4gYWRkaXRpb25hbCBw cm90b2NvbCBidWcuICBIb3dldmVyLCBpbmNsdWRlIHRoaXMgZml4IGhlcmUKLWZvciBwb3N0ZXJp dHkuCi0KLUJVRzogaHR0cHM6Ly9idWd6aWxsYS5zYW1iYS5vcmcvc2hvd19idWcuY2dpP2lkPTE2 MDg1Ci0KLVNpZ25lZC1vZmYtYnk6IE1hcnRpbiBTY2h3ZW5rZSA8bXNjaHdlbmtlQGRkbi5jb20+ Ci1SZXZpZXdlZC1ieTogVHJpc3RhbiBNYWRhbmkgPHRyaXN0YW5AdGFsZW5jZXNlY3VyaXR5LmNv bT4KLVJldmlld2VkLWJ5OiBTdGVmYW4gTWV0em1hY2hlciA8bWV0emVAc2FtYmEub3JnPgotLS0t Ci0gY3RkYi9wcm90b2NvbC9wcm90b2NvbF9iYXNpYy5jIHwgMyArKy0KLSAxIGZpbGUgY2hhbmdl ZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9jdGRiL3By b3RvY29sL3Byb3RvY29sX2Jhc2ljLmMgYi9jdGRiL3Byb3RvY29sL3Byb3RvY29sX2Jhc2ljLmMK LWluZGV4IDljYzUyZGVmNjQ0Li43NTBlYThmOWZlNyAxMDA2NDQKLS0tLSBhL2N0ZGIvcHJvdG9j b2wvcHJvdG9jb2xfYmFzaWMuYwotKysrIGIvY3RkYi9wcm90b2NvbC9wcm90b2NvbF9iYXNpYy5j Ci1AQCAtMzE5LDcgKzMxOSw4IEBAIGludCBjdGRiX3N0cmluZ25fcHVsbCh1aW50OF90ICpidWYs IHNpemVfdCBidWZsZW4sIFRBTExPQ19DVFggKm1lbV9jdHgsCi0gCWlmIChyZXQgIT0gMCkgewot IAkJcmV0dXJuIHJldDsKLSAJfQotLQlvZmZzZXQgKz0gbnA7Ci0rCS8qIEFsd2F5cyBjb25zdW1l IHRoZSBzcGVjaWZpZWQgbnVtYmVyIGJ5dGVzICovCi0rCW9mZnNldCArPSB1MzI7Ci0gCi0gCSpu cHVsbCA9IG9mZnNldDsKLSAJcmV0dXJuIDA7Ci0tLSAKLTIuNDMuMAotCi0KLUZyb20gMGZhNmJi NGYzZWRmYmU4MTllZDE1NTU1YzJjNjRmZDY2ZjMwNzdhZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKLUZyb206IE1hcnRpbiBTY2h3ZW5rZSA8bXNjaHdlbmtlQGRkbi5jb20+Ci1EYXRlOiBXZWQs IDEwIEp1biAyMDI2IDEyOjE1OjE3ICsxMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTMvMjNdIENWRS0y MDI2LTU4MjI0OiBjdGRiLXByb3RvY29sOiBBdm9pZCBEb1MgbWVtb3J5IGFsbG9jYXRpb25zCi0K LVRoZSBwdWxsIGxvb3AgYWxyZWFkeSBhdm9pZHMgb3V0IG9mIGJvdW5kcyBhY2Nlc3NlcyBiZXlv bmQgdGhlIGVuZCBvZgotdGhlIGJ1ZmZlci4gIEhvd2V2ZXIsIGl0IGRvZXMgbm90IGF2b2lkIGEg RG9TIG1lbW9yeSBhbGxvY2F0aW9uIGR1ZSB0bwotYW4gdW5yZWFzb25hYmx5IGxhcmdlIGFycmF5 IHNpemUuCi0KLUNoZWNrIHRoYXQgdGhlIG51bWJlciBvZiBzcGVjaWZpZWQgYXJyYXkgZWxlbWVu dHMgY2FuIGJlIHB1bGxlZCBmcm9tCi1idWZmZXIsIHdoaWNoIHB1dHMgYSByZWFzb25hYmxlIHVw cGVyIGJvdW5kIG9uIHRoZSBzdWJzZXF1ZW50IG1lbW9yeQotYWxsb2NhdGlvbi4KLQotVXNlIGFu IGluaXRpYWxpc2VkIGR1bW15IHZhcmlhYmxlIHRvIGF2b2lkIHN0YXRpYyBhbmFseXNlcnMKLWNv bXBsYWluaW5nIGFib3V0IHVuaW5pdGlhbGlzZWQgdmFyaWFibGVzIGJlaW5nIHBhc3NlZC4KLQot QlVHOiBodHRwczovL2J1Z3ppbGxhLnNhbWJhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwODUKLQot UmVwb3J0ZWQtYnk6IEFuZHJldyBUcmlkZ2VsbCAoaXNzdWUgMjIpCi1TaWduZWQtb2ZmLWJ5OiBN YXJ0aW4gU2Nod2Vua2UgPG1zY2h3ZW5rZUBkZG4uY29tPgotUmV2aWV3ZWQtYnk6IFRyaXN0YW4g TWFkYW5pIDx0cmlzdGFuQHRhbGVuY2VzZWN1cml0eS5jb20+Ci1SZXZpZXdlZC1ieTogU3RlZmFu IE1ldHptYWNoZXIgPG1ldHplQHNhbWJhLm9yZz4KLS0tLQotIGN0ZGIvcHJvdG9jb2wvcHJvdG9j b2xfdHlwZXMuYyB8IDE5ICsrKysrKysrKysrKysrKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgMTkg aW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvY3RkYi9wcm90b2NvbC9wcm90b2NvbF90eXBl cy5jIGIvY3RkYi9wcm90b2NvbC9wcm90b2NvbF90eXBlcy5jCi1pbmRleCA4NmUxYmMzOTU0ZS4u MmVkZjgyMjhkMTggMTAwNjQ0Ci0tLS0gYS9jdGRiL3Byb3RvY29sL3Byb3RvY29sX3R5cGVzLmMK LSsrKyBiL2N0ZGIvcHJvdG9jb2wvcHJvdG9jb2xfdHlwZXMuYwotQEAgLTgzOCw2ICs4MzgsNyBA QCBpbnQgY3RkYl9zdGF0aXN0aWNzX2xpc3RfcHVsbCh1aW50OF90ICpidWYsIHNpemVfdCBidWZs ZW4sIFRBTExPQ19DVFggKm1lbV9jdHgsCi0gCQkJICAgICAgc2l6ZV90ICpucHVsbCkKLSB7Ci0g CXN0cnVjdCBjdGRiX3N0YXRpc3RpY3NfbGlzdCAqdmFsOwotKwlzdHJ1Y3QgY3RkYl9zdGF0aXN0 aWNzIGR1bW15ID0ge307Ci0gCXNpemVfdCBvZmZzZXQgPSAwLCBucDsKLSAJaW50IHJldCwgaTsK LSAKLUBAIC04NjMsNiArODY0LDExIEBAIGludCBjdGRiX3N0YXRpc3RpY3NfbGlzdF9wdWxsKHVp bnQ4X3QgKmJ1Ziwgc2l6ZV90IGJ1ZmxlbiwgVEFMTE9DX0NUWCAqbWVtX2N0eCwKLSAJCWdvdG8g ZG9uZTsKLSAJfQotIAotKwlpZiAoKHVpbnQ2NF90KXZhbC0+bnVtICogY3RkYl9zdGF0aXN0aWNz X2xlbigmZHVtbXkpID4gYnVmbGVuIC0gb2Zmc2V0KSB7Ci0rCQlyZXQgPSBFTVNHU0laRTsKLSsJ CWdvdG8gZmFpbDsKLSsJfQotKwotIAl2YWwtPnN0YXRzID0gdGFsbG9jX2FycmF5KHZhbCwgc3Ry dWN0IGN0ZGJfc3RhdGlzdGljcywgdmFsLT5udW0pOwotIAlpZiAodmFsLT5zdGF0cyA9PSBOVUxM KSB7Ci0gCQlyZXQgPSBFTk9NRU07Ci1AQCAtMTA4OCw2ICsxMDk0LDcgQEAgaW50IGN0ZGJfZGJp ZF9tYXBfcHVsbCh1aW50OF90ICpidWYsIHNpemVfdCBidWZsZW4sIFRBTExPQ19DVFggKm1lbV9j dHgsCi0gCQkgICAgICAgc3RydWN0IGN0ZGJfZGJpZF9tYXAgKipvdXQsIHNpemVfdCAqbnB1bGwp Ci0gewotIAlzdHJ1Y3QgY3RkYl9kYmlkX21hcCAqdmFsOwotKwlzdHJ1Y3QgY3RkYl9kYmlkIGR1 bW15ID0ge307Ci0gCXNpemVfdCBvZmZzZXQgPSAwLCBucDsKLSAJdWludDMyX3QgaTsKLSAJaW50 IHJldDsKLUBAIC0xMTA4LDYgKzExMTUsMTEgQEAgaW50IGN0ZGJfZGJpZF9tYXBfcHVsbCh1aW50 OF90ICpidWYsIHNpemVfdCBidWZsZW4sIFRBTExPQ19DVFggKm1lbV9jdHgsCi0gCQlnb3RvIGRv bmU7Ci0gCX0KLSAKLSsJaWYgKCh1aW50NjRfdCl2YWwtPm51bSAqIGN0ZGJfZGJpZF9sZW4oJmR1 bW15KSA+IGJ1ZmxlbiAtIG9mZnNldCkgewotKwkJcmV0ID0gRU1TR1NJWkU7Ci0rCQlnb3RvIGZh aWw7Ci0rCX0KLSsKLSAJdmFsLT5kYnMgPSB0YWxsb2NfYXJyYXkodmFsLCBzdHJ1Y3QgY3RkYl9k YmlkLCB2YWwtPm51bSk7Ci0gCWlmICh2YWwtPmRicyA9PSBOVUxMKSB7Ci0gCQlyZXQgPSBFTk9N RU07Ci1AQCAtMzkwNSw2ICszOTE3LDcgQEAgaW50IGN0ZGJfbm9kZV9tYXBfcHVsbCh1aW50OF90 ICpidWYsIHNpemVfdCBidWZsZW4sIFRBTExPQ19DVFggKm1lbV9jdHgsCi0gCQkgICAgICAgc3Ry dWN0IGN0ZGJfbm9kZV9tYXAgKipvdXQsIHNpemVfdCAqbnB1bGwpCi0gewotIAlzdHJ1Y3QgY3Rk Yl9ub2RlX21hcCAqdmFsOwotKwlzdHJ1Y3QgY3RkYl9ub2RlX2FuZF9mbGFncyBkdW1teSA9IHt9 OwotIAlzaXplX3Qgb2Zmc2V0ID0gMCwgbnA7Ci0gCXVpbnQzMl90IGk7Ci0gCWludCByZXQ7Ci1A QCAtMzkyNSw2ICszOTM4LDEyIEBAIGludCBjdGRiX25vZGVfbWFwX3B1bGwodWludDhfdCAqYnVm LCBzaXplX3QgYnVmbGVuLCBUQUxMT0NfQ1RYICptZW1fY3R4LAotIAkJZ290byBkb25lOwotIAl9 Ci0gCi0rCWlmICgodWludDY0X3QpdmFsLT5udW0gKiBjdGRiX25vZGVfYW5kX2ZsYWdzX2xlbigm ZHVtbXkpID4KLSsJICAgIGJ1ZmxlbiAtIG9mZnNldCkgewotKwkJcmV0ID0gRU1TR1NJWkU7Ci0r CQlnb3RvIGZhaWw7Ci0rCX0KLSsKLSAJdmFsLT5ub2RlID0gdGFsbG9jX2FycmF5KHZhbCwgc3Ry dWN0IGN0ZGJfbm9kZV9hbmRfZmxhZ3MsIHZhbC0+bnVtKTsKLSAJaWYgKHZhbC0+bm9kZSA9PSBO VUxMKSB7Ci0gCQlyZXQgPSBFTk9NRU07Ci0tLSAKLTIuNDMuMAotCi0KLUZyb20gMGU1MGI4NjAw ZDQ5MWZkNDAwMWMyMGFlY2NjZjNhYmUxZWExOTlhYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK LUZyb206IE1hcnRpbiBTY2h3ZW5rZSA8bXNjaHdlbmtlQGRkbi5jb20+Ci1EYXRlOiBXZWQsIDEw IEp1biAyMDI2IDEyOjM3OjAyICsxMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTQvMjNdIENWRS0yMDI2 LTU4MjI0OiBjdGRiLXByb3RvY29sOiBBdm9pZCBEb1MgbWVtb3J5IGFsbG9jYXRpb25zCi0KLVRo ZSBwdWxsIGxvb3AgYWxyZWFkeSBhdm9pZHMgb3V0IG9mIGJvdW5kcyBhY2Nlc3NlcyBiZXlvbmQg dGhlIGVuZCBvZgotdGhlIGJ1ZmZlci4gIEhvd2V2ZXIsIGl0IGRvZXMgbm90IGF2b2lkIGEgRG9T IG1lbW9yeSBhbGxvY2F0aW9uIGR1ZSB0bwotYW4gdW5yZWFzb25hYmx5IGxhcmdlIGFycmF5IHNp emUuCi0KLUNoZWNrIHRoYXQgdGhlIG51bWJlciBvZiBzcGVjaWZpZWQgYXJyYXkgZWxlbWVudHMg Y2FuIGJlIHB1bGxlZCBmcm9tCi1idWZmZXIsIHdoaWNoIHB1dHMgYSByZWFzb25hYmxlIHVwcGVy IGJvdW5kIG9uIHRoZSBzdWJzZXF1ZW50IG1lbW9yeQotYWxsb2NhdGlvbi4KLQotVXNlIGFuIGlu aXRpYWxpc2VkIGR1bW15IHZhcmlhYmxlIHRvIGF2b2lkIHN0YXRpYyBhbmFseXNlcnMKLWNvbXBs YWluaW5nIGFib3V0IHVuaW5pdGlhbGlzZWQgdmFyaWFibGVzIGJlaW5nIHBhc3NlZC4KLQotQlVH OiBodHRwczovL2J1Z3ppbGxhLnNhbWJhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwODUKLQotU2ln bmVkLW9mZi1ieTogTWFydGluIFNjaHdlbmtlIDxtc2Nod2Vua2VAZGRuLmNvbT4KLVJldmlld2Vk LWJ5OiBUcmlzdGFuIE1hZGFuaSA8dHJpc3RhbkB0YWxlbmNlc2VjdXJpdHkuY29tPgotUmV2aWV3 ZWQtYnk6IFN0ZWZhbiBNZXR6bWFjaGVyIDxtZXR6ZUBzYW1iYS5vcmc+Ci0tLS0KLSBjdGRiL3By b3RvY29sL3Byb3RvY29sX3R5cGVzLmMgfCAzNSArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDM1IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBh L2N0ZGIvcHJvdG9jb2wvcHJvdG9jb2xfdHlwZXMuYyBiL2N0ZGIvcHJvdG9jb2wvcHJvdG9jb2xf dHlwZXMuYwotaW5kZXggMmVkZjgyMjhkMTguLjhjYmRhZWU1MTA2IDEwMDY0NAotLS0tIGEvY3Rk Yi9wcm90b2NvbC9wcm90b2NvbF90eXBlcy5jCi0rKysgYi9jdGRiL3Byb3RvY29sL3Byb3RvY29s X3R5cGVzLmMKLUBAIC0yMzgwLDYgKzIzODAsNyBAQCBpbnQgY3RkYl9jb25uZWN0aW9uX2xpc3Rf cHVsbCh1aW50OF90ICpidWYsIHNpemVfdCBidWZsZW4sIFRBTExPQ19DVFggKm1lbV9jdHgsCi0g CQkJICAgICAgc3RydWN0IGN0ZGJfY29ubmVjdGlvbl9saXN0ICoqb3V0LCBzaXplX3QgKm5wdWxs KQotIHsKLSAJc3RydWN0IGN0ZGJfY29ubmVjdGlvbl9saXN0ICp2YWw7Ci0rCXN0cnVjdCBjdGRi X2Nvbm5lY3Rpb24gZHVtbXkgPSB7fTsKLSAJc2l6ZV90IG9mZnNldCA9IDAsIG5wOwotIAl1aW50 MzJfdCBpOwotIAlpbnQgcmV0OwotQEAgLTI0MDAsNiArMjQwMSwxMSBAQCBpbnQgY3RkYl9jb25u ZWN0aW9uX2xpc3RfcHVsbCh1aW50OF90ICpidWYsIHNpemVfdCBidWZsZW4sIFRBTExPQ19DVFgg Km1lbV9jdHgsCi0gCQlnb3RvIGRvbmU7Ci0gCX0KLSAKLSsJaWYgKCh1aW50NjRfdCl2YWwtPm51 bSAqIGN0ZGJfY29ubmVjdGlvbl9sZW4oJmR1bW15KSA+IGJ1ZmxlbiAtIG9mZnNldCkgewotKwkJ cmV0ID0gRU1TR1NJWkU7Ci0rCQlnb3RvIGZhaWw7Ci0rCX0KLSsKLSAJdmFsLT5jb25uID0gdGFs bG9jX2FycmF5KHZhbCwgc3RydWN0IGN0ZGJfY29ubmVjdGlvbiwgdmFsLT5udW0pOwotIAlpZiAo dmFsLT5jb25uID09IE5VTEwpIHsKLSAJCXJldCA9IEVOT01FTTsKLUBAIC0zNDE3LDYgKzM0MjMs NyBAQCBpbnQgY3RkYl90aWNrbGVfbGlzdF9wdWxsKHVpbnQ4X3QgKmJ1Ziwgc2l6ZV90IGJ1Zmxl biwgVEFMTE9DX0NUWCAqbWVtX2N0eCwKLSAJCQkgICBzdHJ1Y3QgY3RkYl90aWNrbGVfbGlzdCAq Km91dCwgc2l6ZV90ICpucHVsbCkKLSB7Ci0gCXN0cnVjdCBjdGRiX3RpY2tsZV9saXN0ICp2YWw7 Ci0rCXN0cnVjdCBjdGRiX2Nvbm5lY3Rpb24gZHVtbXkgPSB7fTsKLSAJc2l6ZV90IG9mZnNldCA9 IDAsIG5wOwotIAl1aW50MzJfdCBpOwotIAlpbnQgcmV0OwotQEAgLTM0NDQsNiArMzQ1MSwxMSBA QCBpbnQgY3RkYl90aWNrbGVfbGlzdF9wdWxsKHVpbnQ4X3QgKmJ1Ziwgc2l6ZV90IGJ1Zmxlbiwg VEFMTE9DX0NUWCAqbWVtX2N0eCwKLSAJCWdvdG8gZG9uZTsKLSAJfQotIAotKwlpZiAoKHVpbnQ2 NF90KXZhbC0+bnVtICogY3RkYl9jb25uZWN0aW9uX2xlbigmZHVtbXkpID4gYnVmbGVuIC0gb2Zm c2V0KSB7Ci0rCQlyZXQgPSBFTVNHU0laRTsKLSsJCWdvdG8gZmFpbDsKLSsJfQotKwotIAl2YWwt PmNvbm4gPSB0YWxsb2NfYXJyYXkodmFsLCBzdHJ1Y3QgY3RkYl9jb25uZWN0aW9uLCB2YWwtPm51 bSk7Ci0gCWlmICh2YWwtPmNvbm4gPT0gTlVMTCkgewotIAkJcmV0ID0gRU5PTUVNOwotQEAgLTM3 NjIsNiArMzc3NCw3IEBAIGludCBjdGRiX3B1YmxpY19pcF9saXN0X3B1bGwodWludDhfdCAqYnVm LCBzaXplX3QgYnVmbGVuLCBUQUxMT0NfQ1RYICptZW1fY3R4LAotIAkJCSAgICAgc3RydWN0IGN0 ZGJfcHVibGljX2lwX2xpc3QgKipvdXQsIHNpemVfdCAqbnB1bGwpCi0gewotIAlzdHJ1Y3QgY3Rk Yl9wdWJsaWNfaXBfbGlzdCAqdmFsOwotKwlzdHJ1Y3QgY3RkYl9wdWJsaWNfaXAgZHVtbXkgPSB7 fTsKLSAJc2l6ZV90IG9mZnNldCA9IDAsIG5wOwotIAl1aW50MzJfdCBpOwotIAlpbnQgcmV0Owot QEAgLTM3ODIsNiArMzc5NSwxMSBAQCBpbnQgY3RkYl9wdWJsaWNfaXBfbGlzdF9wdWxsKHVpbnQ4 X3QgKmJ1Ziwgc2l6ZV90IGJ1ZmxlbiwgVEFMTE9DX0NUWCAqbWVtX2N0eCwKLSAJCWdvdG8gZG9u ZTsKLSAJfQotIAotKwlpZiAoKHVpbnQ2NF90KXZhbC0+bnVtICogY3RkYl9wdWJsaWNfaXBfbGVu KCZkdW1teSkgPiBidWZsZW4gLSBvZmZzZXQpIHsKLSsJCXJldCA9IEVNU0dTSVpFOwotKwkJZ290 byBmYWlsOwotKwl9Ci0rCi0gCXZhbC0+aXAgPSB0YWxsb2NfYXJyYXkodmFsLCBzdHJ1Y3QgY3Rk Yl9wdWJsaWNfaXAsIHZhbC0+bnVtKTsKLSAJaWYgKHZhbC0+aXAgPT0gTlVMTCkgewotIAkJcmV0 ID0gRU5PTUVNOwotQEAgLTQxMjQsNiArNDE0Miw3IEBAIGludCBjdGRiX3NjcmlwdF9saXN0X3B1 bGwodWludDhfdCAqYnVmLCBzaXplX3QgYnVmbGVuLCBUQUxMT0NfQ1RYICptZW1fY3R4LAotIAkJ CSAgc3RydWN0IGN0ZGJfc2NyaXB0X2xpc3QgKipvdXQsIHNpemVfdCAqbnB1bGwpCi0gewotIAlz dHJ1Y3QgY3RkYl9zY3JpcHRfbGlzdCAqdmFsOwotKwlzdHJ1Y3QgY3RkYl9zY3JpcHQgZHVtbXkg PSB7fTsKLSAJc2l6ZV90IG9mZnNldCA9IDAsIG5wOwotIAl1aW50MzJfdCBpOwotIAlpbnQgcmV0 OwotQEAgLTQxNTcsNiArNDE3NiwxMiBAQCBpbnQgY3RkYl9zY3JpcHRfbGlzdF9wdWxsKHVpbnQ4 X3QgKmJ1Ziwgc2l6ZV90IGJ1ZmxlbiwgVEFMTE9DX0NUWCAqbWVtX2N0eCwKLSAJCWdvdG8gZG9u ZTsKLSAJfQotIAotKwlpZiAoKHVpbnQ2NF90KXZhbC0+bnVtX3NjcmlwdHMgKiBjdGRiX3Njcmlw dF9sZW4oJmR1bW15KQotKwkgICAgPiBidWZsZW4gLSBvZmZzZXQpIHsKLSsJCXJldCA9IEVNU0dT SVpFOwotKwkJZ290byBmYWlsOwotKwl9Ci0rCi0gCXZhbC0+c2NyaXB0ID0gdGFsbG9jX2FycmF5 KHZhbCwgc3RydWN0IGN0ZGJfc2NyaXB0LCB2YWwtPm51bV9zY3JpcHRzKTsKLSAJaWYgKHZhbC0+ c2NyaXB0ID09IE5VTEwpIHsKLSAJCXJldCA9IEVOT01FTTsKLUBAIC00NDAwLDYgKzQ0MjUsNyBA QCBpbnQgY3RkYl9pZmFjZV9saXN0X3B1bGwodWludDhfdCAqYnVmLCBzaXplX3QgYnVmbGVuLCBU QUxMT0NfQ1RYICptZW1fY3R4LAotIAkJCSBzdHJ1Y3QgY3RkYl9pZmFjZV9saXN0ICoqb3V0LCBz aXplX3QgKm5wdWxsKQotIHsKLSAJc3RydWN0IGN0ZGJfaWZhY2VfbGlzdCAqdmFsOwotKwlzdHJ1 Y3QgY3RkYl9pZmFjZSBkdW1teSA9IHt9OwotIAlzaXplX3Qgb2Zmc2V0ID0gMCwgbnA7Ci0gCXVp bnQzMl90IGk7Ci0gCWludCByZXQ7Ci1AQCAtNDQyMCw2ICs0NDQ2LDExIEBAIGludCBjdGRiX2lm YWNlX2xpc3RfcHVsbCh1aW50OF90ICpidWYsIHNpemVfdCBidWZsZW4sIFRBTExPQ19DVFggKm1l bV9jdHgsCi0gCQlnb3RvIGRvbmU7Ci0gCX0KLSAKLSsJaWYgKCh1aW50NjRfdCl2YWwtPm51bSAq IGN0ZGJfaWZhY2VfbGVuKCZkdW1teSkgPiBidWZsZW4gLSBvZmZzZXQpIHsKLSsJCXJldCA9IEVN U0dTSVpFOwotKwkJZ290byBmYWlsOwotKwl9Ci0rCi0gCXZhbC0+aWZhY2UgPSB0YWxsb2NfYXJy YXkodmFsLCBzdHJ1Y3QgY3RkYl9pZmFjZSwgdmFsLT5udW0pOwotIAlpZiAodmFsLT5pZmFjZSA9 PSBOVUxMKSB7Ci0gCQlyZXQgPSBFTk9NRU07Ci1AQCAtNTM0Nyw2ICs1Mzc4LDEwIEBAIGludCBj dGRiX2dfbG9ja19saXN0X3B1bGwodWludDhfdCAqYnVmLCBzaXplX3QgYnVmbGVuLCBUQUxMT0Nf Q1RYICptZW1fY3R4LAotIAotIAl2YWwtPm51bSA9IGJ1ZmxlbiAvIGN0ZGJfZ19sb2NrX2xlbigm bG9jayk7Ci0gCi0rCS8qCi0rCSAqIE5vIGFycmF5IGNvdW50IHByZS1jaGVjayBuZWVkZWQgYmVj YXVzZSB2YWwtPm51bSBpcwotKwkgKiBjYWxjdWxhdGVkIGZyb20gYnVmbGVuCi0rCSAqLwotIAl2 YWwtPmxvY2sgPSB0YWxsb2NfYXJyYXkodmFsLCBzdHJ1Y3QgY3RkYl9nX2xvY2ssIHZhbC0+bnVt KTsKLSAJaWYgKHZhbC0+bG9jayA9PSBOVUxMKSB7Ci0gCQlyZXQgPSBFTk9NRU07Ci0tLSAKLTIu NDMuMAotCi0KLUZyb20gM2YwYzcxNjE5ODliMmFkYmJiMDBjZTI2ODM4MDk3ZTI2ZWQ2YzA5YSBN b24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1hcnRpbiBTY2h3ZW5rZSA8bXNjaHdlbmtl QGRkbi5jb20+Ci1EYXRlOiBUaHUsIDExIEp1biAyMDI2IDExOjI1OjUyICsxMDAwCi1TdWJqZWN0 OiBbUEFUQ0ggMTUvMjNdIENWRS0yMDI2LTU4MjI0OiBjdGRiLWNvbW1vbjogU2VjdXJlIHNvY2tf ZGFlbW9uIFVuaXggZG9tYWluIHNvY2tldHMKLQotQ3VycmVudGx5LCB0aGUgbW9kZSBvZiB0aGUg c29ja2V0IGRlcGVuZHMgb24gdGhlIGNyZWF0aW5nIHByb2Nlc3MncwotdW1hc2suICBUaGlzIG1p Z2h0IGFsbG93IHVud2FudGVkIGFjY2Vzcy4KLQotSXQgbWlnaHQgYmUgcHJlZmVyYWJsZSB0byBk byB0aGlzIGp1c3QgZm9yIHRoZSBldmVudGQgc29ja2V0LgotSG93ZXZlciwgdGhlcmUgaXMgbm8g dXNlZnVsIHBsYWNlIHRvIGhvb2sgdGhpcyBpbiBvdXRzaWRlIG9mCi1zb2NrX2RhZW1vbi4KLQot QlVHOiBodHRwczovL2J1Z3ppbGxhLnNhbWJhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwODUKLQot U2lnbmVkLW9mZi1ieTogTWFydGluIFNjaHdlbmtlIDxtc2Nod2Vua2VAZGRuLmNvbT4KLVJldmll d2VkLWJ5OiBUcmlzdGFuIE1hZGFuaSA8dHJpc3RhbkB0YWxlbmNlc2VjdXJpdHkuY29tPgotUmV2 aWV3ZWQtYnk6IFN0ZWZhbiBNZXR6bWFjaGVyIDxtZXR6ZUBzYW1iYS5vcmc+Ci0tLS0KLSBjdGRi L2NvbW1vbi9zb2NrX2RhZW1vbi5jIHwgMjYgKysrKysrKysrKysrKysrKysrKysrKysrKysKLSAx IGZpbGUgY2hhbmdlZCwgMjYgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvY3RkYi9jb21t b24vc29ja19kYWVtb24uYyBiL2N0ZGIvY29tbW9uL3NvY2tfZGFlbW9uLmMKLWluZGV4IGUzMWEz NjQ0NWI1Li5lZDBjY2ZkNzBlZiAxMDA2NDQKLS0tLSBhL2N0ZGIvY29tbW9uL3NvY2tfZGFlbW9u LmMKLSsrKyBiL2N0ZGIvY29tbW9uL3NvY2tfZGFlbW9uLmMKLUBAIC0yMDQsNiArMjA0LDggQEAg c3RhdGljIGludCBzb2NrX2NsaWVudF9jb250ZXh0X2Rlc3RydWN0b3IoCi0gc3RhdGljIGludCBz b2NrZXRfc2V0dXAoY29uc3QgY2hhciAqc29ja3BhdGgsIGJvb2wgcmVtb3ZlX2JlZm9yZV91c2Up Ci0gewotIAlzdHJ1Y3Qgc29ja2FkZHJfdW4gYWRkcjsKLSsJY29uc3QgY2hhciAqdDsKLSsJYm9v bCB0ZXN0X21vZGVfZW5hYmxlZCA9IGZhbHNlOwotIAlzaXplX3QgbGVuOwotIAlpbnQgcmV0LCBm ZDsKLSAKLUBAIC0yNDAsNiArMjQyLDMwIEBAIHN0YXRpYyBpbnQgc29ja2V0X3NldHVwKGNvbnN0 IGNoYXIgKnNvY2twYXRoLCBib29sIHJlbW92ZV9iZWZvcmVfdXNlKQotIAkJcmV0dXJuIC0xOwot IAl9Ci0gCi0rCXQgPSBnZXRlbnYoIkNUREJfVEVTVF9NT0RFIik7Ci0rCWlmICh0ICE9IE5VTEwp IHsKLSsJCXRlc3RfbW9kZV9lbmFibGVkID0gdHJ1ZTsKLSsJfQotKwotKwlpZiAoIXRlc3RfbW9k ZV9lbmFibGVkKSB7Ci0rCQkvKiBCZWhhdmlvdXIgb2YgZmNob3duKDIpIGlzIHVuZGVmaW5lZCBv biBzb2NrZXRzICovCi0rCQlyZXQgPSBjaG93bihzb2NrcGF0aCwgZ2V0ZXVpZCgpLCBnZXRlZ2lk KCkpOwotKwkJaWYgKHJldCAhPSAwKSB7Ci0rCQkJRF9FUlIoIlVuYWJsZSB0byBzZWN1cmUgKGNo b3duKSBzb2NrZXQgJyVzJ1xuIiwKLSsJCQkgICAgICBzb2NrcGF0aCk7Ci0rCQkJY2xvc2UoZmQp OwotKwkJCXJldHVybiAtMTsKLSsJCX0KLSsJfQotKwotKwkvKiBCZWhhdmlvdXIgb2YgZmNobW9k KDIpIGlzIHVuZGVmaW5lZCBvbiBzb2NrZXRzICovCi0rCXJldCA9IGNobW9kKHNvY2twYXRoLCAw NzAwKTsKLSsJaWYgKHJldCAhPSAwKSB7Ci0rCQlEX0VSUigiVW5hYmxlIHRvIHNlY3VyZSAoY2ht b2QpIHNvY2tldCAnJXMnXG4iLCBzb2NrcGF0aCk7Ci0rCQljbG9zZShmZCk7Ci0rCQlyZXR1cm4g LTE7Ci0rCX0KLSsKLSAJcmV0ID0gbGlzdGVuKGZkLCAxMCk7Ci0gCWlmIChyZXQgIT0gMCkgewot IAkJRF9FUlIoInNvY2tldCBsaXN0ZW4gZmFpbGVkIC0gJXNcbiIsIHNvY2twYXRoKTsKLS0tIAot Mi40My4wCi0KLQotRnJvbSA2YTM1MDY1YmU2ODhmZTQ0OTEyMGQwOTA0NWI5MGFkMWFkNjgxMzg2 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWFydGluIFNjaHdlbmtlIDxtc2Nod2Vu a2VAZGRuLmNvbT4KLURhdGU6IFdlZCwgMTAgSnVuIDIwMjYgMTg6NDU6NDMgKzEwMDAKLVN1Ympl Y3Q6IFtQQVRDSCAxNi8yM10gQ1ZFLTIwMjYtNTgyMjQ6IGN0ZGItZG9jOiBFbXBoYXNpc2UgdGhh dCB0aGUgcHJpdmF0ZSBuZXR3b3JrIG11c3QgYmUKLSBwcml2YXRlCi0KLU5vdGUgdGhhdCB0aGUg ZGlmZmVyZW5jZSBpbiB0aGUgZmlyc3QgY291cGxlIG9mIGxpbmVzIGlzIGxlYWRpbmcKLXdoaXRl c3BhY2UgYmVpbmcgc3dpdGNoIHRvIGEgVEFCLgotCi1CVUc6IGh0dHBzOi8vYnVnemlsbGEuc2Ft YmEub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA4NQotCi1TaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gU2No d2Vua2UgPG1zY2h3ZW5rZUBkZG4uY29tPgotUmV2aWV3ZWQtYnk6IFRyaXN0YW4gTWFkYW5pIDx0 cmlzdGFuQHRhbGVuY2VzZWN1cml0eS5jb20+Ci1SZXZpZXdlZC1ieTogU3RlZmFuIE1ldHptYWNo ZXIgPG1ldHplQHNhbWJhLm9yZz4KLS0tLQotIGN0ZGIvZG9jL2N0ZGIuNy54bWwgfCAyNyArKysr KysrKysrKysrKysrKysrLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTkgaW5zZXJ0aW9ucygr KSwgOCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2N0ZGIvZG9jL2N0ZGIuNy54bWwgYi9j dGRiL2RvYy9jdGRiLjcueG1sCi1pbmRleCBiZTJkZDVlNWI2NS4uOTA4N2FjZjk4NzAgMTAwNjQ0 Ci0tLS0gYS9jdGRiL2RvYy9jdGRiLjcueG1sCi0rKysgYi9jdGRiL2RvYy9jdGRiLjcueG1sCi1A QCAtMjQyLDE0ICsyNDIsMjUgQEAKLSAJc2VydmljZXMgcHJvdmlkZWQgYnkgdGhlIGNsdXN0ZXIu Ci0gICAgICAgPC9wYXJhPgotICAgICAgIDxwYXJhPgotLSAgICAgICAgSXQgaXMgc3Ryb25nbHkg cmVjb21tZW5kZWQgdGhhdCB0aGUgcHJpdmF0ZSBhZGRyZXNzZXMgYXJlCi0tICAgICAgICBjb25m aWd1cmVkIG9uIGEgcHJpdmF0ZSBuZXR3b3JrIHRoYXQgaXMgc2VwYXJhdGUgZnJvbSBjbGllbnQK LS0gICAgICAgIG5ldHdvcmtzLiAgVGhpcyBpcyBiZWNhdXNlIHRoZSBDVERCIHByb3RvY29sIGlz IGJvdGgKLS0gICAgICAgIHVuYXV0aGVudGljYXRlZCBhbmQgdW5lbmNyeXB0ZWQuICBJZiBjbGll bnRzIHNoYXJlIHRoZSBwcml2YXRlCi0tICAgICAgICBuZXR3b3JrIHRoZW4gc3RlcHMgbmVlZCB0 byBiZSB0YWtlbiB0byBzdG9wIGluamVjdGlvbiBvZgotLSAgICAgICAgcGFja2V0cyB0byByZWxl dmFudCBwb3J0cyBvbiB0aGUgcHJpdmF0ZSBhZGRyZXNzZXMuICBJdCBpcwotLSAgICAgICAgYWxz byBsaWtlbHkgdGhhdCBDVERCIHByb3RvY29sIHRyYWZmaWMgYmV0d2VlbiBub2RlcyBjb3VsZAot LSAgICAgICAgbGVhayBzZW5zaXRpdmUgaW5mb3JtYXRpb24gaWYgaXQgY2FuIGJlIGludGVyY2Vw dGVkLgotKwlJdCBpcyBzdHJvbmdseSByZWNvbW1lbmRlZCB0aGF0IHRoZSBwcml2YXRlIGFkZHJl c3NlcyBhcmUKLSsJY29uZmlndXJlZCBvbiBhIHByaXZhdGUgbmV0d29yayB0aGF0IGlzIHNlcGFy YXRlIGZyb20gY2xpZW50Ci0rCW5ldHdvcmtzLiAgVGhpcyBpcyBiZWNhdXNlIDxlbXBoYXNpcz50 aGUgQ1REQiBwcm90b2NvbCBpcyBib3RoCi0rCXVuYXV0aGVudGljYXRlZCBhbmQgdW5lbmNyeXB0 ZWQ8L2VtcGhhc2lzPi4gIElmIGNsaWVudHMgc2hhcmUKLSsJdGhlIHByaXZhdGUgbmV0d29yayB0 aGVuIHN0ZXBzIG5lZWQgdG8gYmUgdGFrZW4gdG8gc3RvcAotKwlpbmplY3Rpb24gb2YgcGFja2V0 cyB0byByZWxldmFudCBwb3J0cyBvbiB0aGUgcHJpdmF0ZQotKwlhZGRyZXNzZXMuICBJdCBpcyBh bHNvIGxpa2VseSB0aGF0IENUREIgcHJvdG9jb2wgdHJhZmZpYwotKwliZXR3ZWVuIG5vZGVzIGNv dWxkIGxlYWsgc2Vuc2l0aXZlIGluZm9ybWF0aW9uIGlmIGl0IGNhbiBiZQotKwlpbnRlcmNlcHRl ZCBvciBtYW5pcHVsYXRlZC4KLSsgICAgICA8L3BhcmE+Ci0rICAgICAgPHBhcmE+Ci0rCUluIHN1 bW1hcnksIHRoZSBwcml2YXRlIG5ldHdvcmsgc2hvdWxkIG5vdCBiZSBhY2Nlc3NpYmxlIGJ5Ci0r CXVudHJ1c3RlZCBzb3VyY2VzLiAgV2UgY2FuJ3Qgc2F5ICJtdXN0IG5vdCIgYmVjYXVzZSB0aGlz IGNhbid0Ci0rCWJlIGVuZm9yY2VkIGJ5IENUREIsIHNvIHdlIGNhbiBvbmx5IG1ha2UgYSBzdHJv bmcKLSsJcmVjb21tZW5kYXRpb24uIEhvd2V2ZXIsIGZvciB0aGlzIHJlYXNvbiwgZnV0dXJlIGJ1 Z3MgaW4gdGhlCi0rCUNUREIgcHJvdG9jb2wgdXNlZCBvdmVyIHRoZSBwcml2YXRlIG5ldHdvcmsg d2lsbCBiZSBmaXhlZCBhcwotKwlyZWd1bGFyIGJ1Z3Mgd2l0aG91dCBmb2xsb3dpbmcgdGhlIFNh bWJhIHNlY3VyaXR5IHByb2Nlc3MuCi0rCVRoZSBzYW1lIGlzIHRydWUgb2YgbG9jYWwgQ1REQiBw cm90b2NvbHMgdXNlZCBmb3IgVW5peCBkb21haW4KLSsJc29ja2V0IGFuZCBvdGhlciBjb21tdW5p Y2F0aW9uLgotICAgICAgIDwvcGFyYT4KLSAKLSAgICAgICA8cGFyYT4KLS0tIAotMi40My4wCi0K LQotRnJvbSAxZWM5NWI3M2IyMzUwMjMyMjFhNGExOGU4ODhmYTMyODY1NTBmYWVhIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWFydGluIFNjaHdlbmtlIDxtc2Nod2Vua2VAZGRuLmNv bT4KLURhdGU6IFR1ZSwgMzAgSnVuIDIwMjYgMTM6NTg6MjIgKzEwMDAKLVN1YmplY3Q6IFtQQVRD SCAxNy8yM10gQ1ZFLTIwMjYtNTgyMjQ6IGN0ZGItY29tbW9uOiBBZGQgY29tbWVudHMgdG8gd2Fy ZCBvZmYgdnVsbmVyYWJpbGl0eQotIHJlcG9ydHMKLQotV2UgY2FuJ3QgZGVhbCB3aXRoIHRoaXMg aW4gdGhlIGN1cnJlbnQgQ1REQiBwcm90b2NvbCB3aXRob3V0Ci1kaXNwcm9wb3J0aW9uYXRlIGVm Zm9ydC4gIFNvLCBkb2N1bWVudCByZWFsaXR5IGNsZWFybHkgaW4gdGhlIGNvZGUgdG8KLXRyeSB0 byBzdG9wIHRoZXNlIGZyb20gYmVpbmcgcmVwb3J0ZWQuCi0KLUJVRzogaHR0cHM6Ly9idWd6aWxs YS5zYW1iYS5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDg1Ci0KLVNpZ25lZC1vZmYtYnk6IE1hcnRp biBTY2h3ZW5rZSA8bXNjaHdlbmtlQGRkbi5jb20+Ci1SZXZpZXdlZC1ieTogU3RlZmFuIE1ldHpt YWNoZXIgPG1ldHplQHNhbWJhLm9yZz4KLS0tLQotIGN0ZGIvY29tbW9uL2N0ZGJfaW8uYyAgfCAy MCArKysrKysrKysrKysrKysrKysrLQotIGN0ZGIvY29tbW9uL3BrdF9yZWFkLmMgfCAxOSArKysr KysrKysrKysrKysrKysrCi0gMiBmaWxlcyBjaGFuZ2VkLCAzOCBpbnNlcnRpb25zKCspLCAxIGRl bGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9jdGRiL2NvbW1vbi9jdGRiX2lvLmMgYi9jdGRiL2Nv bW1vbi9jdGRiX2lvLmMKLWluZGV4IDlhYzliODRhN2ZiLi4zNDZhNzQ1NmY0NyAxMDA2NDQKLS0t LSBhL2N0ZGIvY29tbW9uL2N0ZGJfaW8uYwotKysrIGIvY3RkYi9jb21tb24vY3RkYl9pby5jCi1A QCAtMTE1LDcgKzExNSwyNSBAQCBzdGF0aWMgdm9pZCBxdWV1ZV9wcm9jZXNzKHN0cnVjdCBjdGRi X3F1ZXVlICpxdWV1ZSkKLSAJCXJldHVybjsKLSAJfQotIAotLQkvKiBFeHRyYWN0IGNvbXBsZXRl IHBhY2tldCAqLwotKwkvKgotKwkgKiBFeHRyYWN0IGNvbXBsZXRlIHBhY2tldAotKwkgKgotKwkg KiBZZXMsIHRoaXMgYWxsb3dzIGFuIG91dC1vZi1tZW1vcnkgZGVuaWFsIG9mIHNlcnZpY2UgKERv UykKLSsJICogYXR0YWNrIGlmIGEgbnVtYmVyIG9mIHBhY2tldHMgYXJlIHJlY2VpdmVkIHdpdGgK LSsJICogdW5yZWFzb25hYmxlIHBhY2tldCBzaXplcywgbm90aW5nIHRoYXQgdGhlIG1heGltdW0g cGFja2V0Ci0rCSAqIHNpemUgaXMgfjRHQi4gIFRoZSBDVERCIHByb3RvY29sIHdhcyBub3QgZGVz aWduZWQgd2l0aCBhCi0rCSAqIG1heGltdW0gcGFja2V0IHNpemUgaW4gbWluZCwgc28gQ1REQiBt YXkgc2VuZCB2ZXJ5IGxhcmdlCi0rCSAqIHZhbGlkIHBhY2tldHMuICBUaGlzIG1lYW5zIHRoYXQg aW1wb3NpbmcgYW4gYXJiaXRyYXJ5IGxpbWl0Ci0rCSAqIG9uIGluY29taW5nIHBhY2tldHMgaXMg bm90IHJlYXNvbmFibGUuICBBcmd1bWVudHMgdGhhdAotKwkgKiBoZWFkZXIgZmllbGRzLCBzdWNo IGFzIG1hZ2ljIGFuZC9vciB2ZXJzaW9uLCBzaG91bGQgYmUKLSsJICogdmFsaWRhdGVkIGJlZm9y ZSBhbGxvY2F0aW5nIGEgcGFja2V0IGJ1ZmZlciBhcmUgc3B1cmlvdXMKLSsJICogZnJvbSBhIHNl Y3VyaXR5IHBlcnNwZWN0aXZlIGJlY2F1c2UgYW4gYXR0YWNrZXIgYXR0ZW1wdGluZwotKwkgKiBE b1MgY2FuIHNlbmQgcGFja2V0cyB3aXRoIHZhbGlkIGhlYWRlcnMuICBUaGUgcHJpdmF0ZQotKwkg KiBuZXR3b3JrIGFuZCBjdGRiZCBzb2NrZXQgc2hvdWxkIGJlIHNlY3VyZWQgYWdhaW5zdAotKwkg KiB1bnRydXN0ZWQgYWNjZXNzLCBzbyByZXBvcnRzIHRoYXQgdGhpcyBwb3NzaWJsZSBEb1MgdmVj dG9yCi0rCSAqIHJlcHJlc2VudHMgYSBzZWN1cml0eSBpc3N1ZSB3aWxsIGJlIGlnbm9yZWQuICBT ZWUgdGhlCi0rCSAqICJQcml2YXRlIGFkZHJlc3NlcyIgc2VjdGlvbiBpbiBjdGRiKDcpIGZvciBt b3JlIGRldGFpbHMuCi0rCSAqLwotIAlkYXRhID0gdGFsbG9jX21lbWR1cChxdWV1ZS0+ZGF0YV9w b29sLAotIAkJCSAgICAgcXVldWUtPmJ1ZmZlci5kYXRhICsgcXVldWUtPmJ1ZmZlci5vZmZzZXQs Ci0gCQkJICAgICBwa3Rfc2l6ZSk7Ci1kaWZmIC0tZ2l0IGEvY3RkYi9jb21tb24vcGt0X3JlYWQu YyBiL2N0ZGIvY29tbW9uL3BrdF9yZWFkLmMKLWluZGV4IDIxMmFjZTU0YmJkLi44ODc3ZjZhYTM2 OCAxMDA2NDQKLS0tLSBhL2N0ZGIvY29tbW9uL3BrdF9yZWFkLmMKLSsrKyBiL2N0ZGIvY29tbW9u L3BrdF9yZWFkLmMKLUBAIC0xNDYsNiArMTQ2LDI1IEBAIHZvaWQgcGt0X3JlYWRfaGFuZGxlcihz dHJ1Y3QgdGV2ZW50X2NvbnRleHQgKmV2LCBzdHJ1Y3QgdGV2ZW50X2ZkICpmZGUsCi0gCQlyZXR1 cm47Ci0gCX0KLSAKLSsJLyoKLSsJICogQWxsb2NhdGUgYnVmZmVyIGZvciBlbnRpcmUgcGFja2V0 Ci0rCSAqCi0rCSAqIFllcywgdGhpcyBhbGxvd3MgYW4gb3V0LW9mLW1lbW9yeSBkZW5pYWwgb2Yg c2VydmljZSAoRG9TKQotKwkgKiBhdHRhY2sgaWYgYSBudW1iZXIgb2YgcGFja2V0cyBhcmUgcmVj ZWl2ZWQgd2l0aAotKwkgKiB1bnJlYXNvbmFibGUgcGFja2V0IHNpemVzLCBub3RpbmcgdGhhdCB0 aGUgbWF4aW11bSBwYWNrZXQKLSsJICogc2l6ZSBpcyB+NEdCLiAgVGhlIENUREIgcHJvdG9jb2wg d2FzIG5vdCBkZXNpZ25lZCB3aXRoIGEKLSsJICogbWF4aW11bSBwYWNrZXQgc2l6ZSBpbiBtaW5k LCBzbyBDVERCIG1heSBzZW5kIHZlcnkgbGFyZ2UKLSsJICogdmFsaWQgcGFja2V0cy4gIFRoaXMg bWVhbnMgdGhhdCBpbXBvc2luZyBhbiBhcmJpdHJhcnkgbGltaXQKLSsJICogb24gaW5jb21pbmcg cGFja2V0cyBpcyBub3QgcmVhc29uYWJsZS4gIEFyZ3VtZW50cyB0aGF0Ci0rCSAqIGhlYWRlciBm aWVsZHMsIHN1Y2ggYXMgbWFnaWMgYW5kL29yIHZlcnNpb24sIHNob3VsZCBiZQotKwkgKiB2YWxp ZGF0ZWQgYmVmb3JlIGFsbG9jYXRpbmcgYSBwYWNrZXQgYnVmZmVyIGFyZSBzcHVyaW91cwotKwkg KiBmcm9tIGEgc2VjdXJpdHkgcGVyc3BlY3RpdmUgYmVjYXVzZSBhbiBhdHRhY2tlciBhdHRlbXB0 aW5nCi0rCSAqIERvUyBjYW4gc2VuZCBwYWNrZXRzIHdpdGggdmFsaWQgaGVhZGVycy4gIFRoZSBw cml2YXRlCi0rCSAqIG5ldHdvcmsgYW5kIGN0ZGJkIHNvY2tldCBzaG91bGQgYmUgc2VjdXJlZCBh Z2FpbnN0Ci0rCSAqIHVudHJ1c3RlZCBhY2Nlc3MsIHNvIHJlcG9ydHMgdGhhdCB0aGlzIHBvc3Np YmxlIERvUyB2ZWN0b3IKLSsJICogcmVwcmVzZW50cyBhIHNlY3VyaXR5IGlzc3VlIHdpbGwgYmUg aWdub3JlZC4gIFNlZSB0aGUKLSsJICogIlByaXZhdGUgYWRkcmVzc2VzIiBzZWN0aW9uIGluIGN0 ZGIoNykgZm9yIG1vcmUgZGV0YWlscy4KLSsJICovCi0gCWlmIChzdGF0ZS0+dXNlX2ZpeGVkKSB7 Ci0gCQkvKiBzd2l0Y2ggdG8gZHluYW1pYyBidWZmZXIgKi8KLSAJCXRtcCA9IHRhbGxvY19hcnJh eShzdGF0ZSwgdWludDhfdCwgc3RhdGUtPnRvdGFsICsgbW9yZSk7Ci0tLSAKLTIuNDMuMAotCi0K LUZyb20gY2VkMGEwMGY5N2Q5ZjE2NWU2Yzc3MjVmMGQzMzViMWEzNDExYTQ3OCBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKLUZyb206IERvdWdsYXMgQmFnbmFsbCA8ZG91Z2xhcy5iYWduYWxsQGNh dGFseXN0Lm5ldC5uej4KLURhdGU6IFN1biwgMzEgTWF5IDIwMjYgMTI6NDg6MTEgKzEyMDAKLVN1 YmplY3Q6IFtQQVRDSCAxOC8yM10gQ1ZFLTIwMjYtNTgyMTY6IGtkYzprcGFzc3dkOiBjYWxjdWxh dGUgY29ycmVjdCBzaXplIGZvciBwYXNzd29yZCBibG9iCi0KLVdlIHdlcmUgbWFraW5nIHRoZSBl bmNfZGF0YV9ibG9iIDYgYnl0ZXMgdG9vIGJpZy4KLQotSXRzIHBheWxvYWQgaXMgYW4gQVNOLjEg c3RydWN0dXJlIHRoYXQga25vd3MgaXRzIG93biBzaXplLCBzbyB0aGUKLWV4dHJhIGJ5dGVzIGFy ZSBub3QgdXN1YWxseSByZWFkIGJ5IEhlaW1kYWwsIGJ1dCBhIGNyYWZ0ZWQgcGFja2V0Ci1jb3Vs ZCBmb3JjZSB0aGVtIHRvIGJlIHJlYWQuCi0KLUJVRzogaHR0cHM6Ly9idWd6aWxsYS5zYW1iYS5v cmcvc2hvd19idWcuY2dpP2lkPTE2MDg3Ci0KLVJlcG9ydGVkLWJ5OiBUcmlzdGFuIDxUcmlzdGFu SW5TZWNAZ21haWwuY29tPgotU2lnbmVkLW9mZi1ieTogRG91Z2xhcyBCYWduYWxsIDxkb3VnbGFz LmJhZ25hbGxAY2F0YWx5c3QubmV0Lm56PgotUmV2aWV3ZWQtYnk6IFN0ZWZhbiBNZXR6bWFjaGVy IDxtZXR6ZUBzYW1iYS5vcmc+Ci0tLS0KLSBzb3VyY2U0L2tkYy9rcGFzc3dkLXNlcnZpY2UuYyB8 IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQot ZGlmZiAtLWdpdCBhL3NvdXJjZTQva2RjL2twYXNzd2Qtc2VydmljZS5jIGIvc291cmNlNC9rZGMv a3Bhc3N3ZC1zZXJ2aWNlLmMKLWluZGV4IGM2NzFlYjQ2ZDA3Li4wMjg0ZmI0ZjEzMyAxMDA2NDQK LS0tLSBhL3NvdXJjZTQva2RjL2twYXNzd2Qtc2VydmljZS5jCi0rKysgYi9zb3VyY2U0L2tkYy9r cGFzc3dkLXNlcnZpY2UuYwotQEAgLTEzNyw3ICsxMzcsNyBAQCBrZGNfY29kZSBrcGFzc3dkX3By b2Nlc3Moc3RydWN0IGtkY19zZXJ2ZXIgKmtkYywKLSAKLSAJYXBfcmVxX2Jsb2IgPSBkYXRhX2Js b2JfY29uc3QoJnJlcXVlc3QtPmRhdGFbSEVBREVSX0xFTl0sIGFwX3JlcV9sZW4pOwotIAotLQll bmNfZGF0YV9sZW4gPSBsZW4gLSBhcF9yZXFfbGVuOwotKwllbmNfZGF0YV9sZW4gPSBsZW4gLSAo YXBfcmVxX2xlbiArIEhFQURFUl9MRU4pOwotIAllbmNfZGF0YV9ibG9iID0gZGF0YV9ibG9iX2Nv bnN0KCZyZXF1ZXN0LT5kYXRhW0hFQURFUl9MRU4gKyBhcF9yZXFfbGVuXSwKLSAJCQkJCWVuY19k YXRhX2xlbik7Ci0gCi0tLSAKLTIuNDMuMAotCi0KLUZyb20gYmU0YzMzYTE0NTJhYTJjZDJmYTZh NDIwYTFkNDQzYWVmNDIzMzI0MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFZvbGtl ciBMZW5kZWNrZSA8dmxAc2FtYmEub3JnPgotRGF0ZTogV2VkLCAxNyBKdW4gMjAyNiAwODoyNDo0 NyArMDIwMAotU3ViamVjdDogW1BBVENIIDE5LzIzXSBDVkUtMjAyNi01ODIxODogZG5zX3NlcnZl cjogRml4IGFuIGVycm9yIHBhdGggbWVtbGVhawotCi1XZSB0YWxsb2MgdGhlIG5ldyBrZXkgb2Zm ICJkbnMtPnRrZXlzIiwgd2hpY2ggaXMgbG9uZy1saXZlZC4gT24gYW55Ci1lcnJvciB3ZSBuZXZl ciBmcmVlJ2QgdGhhdCBhZ2Fpbi4gUHJvYmFibHkgbm90IHJlbW90ZWx5IHRyaWdnZXJhYmxlLAot dGhpcyBpcyBvbmx5IHNldHRpbmcgdXAgdGhlIGdlbnNlYyBjb250ZXh0LgotCi1CVUc6IGh0dHBz Oi8vYnVnemlsbGEuc2FtYmEub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjExNQotCi1TaWduZWQtb2Zm LWJ5OiBWb2xrZXIgTGVuZGVja2UgPHZsQHNhbWJhLm9yZz4KLVJldmlld2VkLWJ5OiBEb3VnbGFz IEJhZ25hbGwgPGRiYWduYWxsQHNhbWJhLm9yZz4KLS0tLQotIHNvdXJjZTQvZG5zX3NlcnZlci9k bnNfcXVlcnkuYyB8IDI1ICsrKysrKysrKysrKysrLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdl ZCwgMTQgaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zb3Vy Y2U0L2Ruc19zZXJ2ZXIvZG5zX3F1ZXJ5LmMgYi9zb3VyY2U0L2Ruc19zZXJ2ZXIvZG5zX3F1ZXJ5 LmMKLWluZGV4IDFmNDZlZTBhYTE5Li5lYmM2YTczNWE3NiAxMDA2NDQKLS0tLSBhL3NvdXJjZTQv ZG5zX3NlcnZlci9kbnNfcXVlcnkuYwotKysrIGIvc291cmNlNC9kbnNfc2VydmVyL2Ruc19xdWVy eS5jCi1AQCAtNjc1LDE4ICs2NzUsMTggQEAgc3RhdGljIE5UU1RBVFVTIGNyZWF0ZV90a2V5KHN0 cnVjdCBkbnNfc2VydmVyICpkbnMsCi0gCi0gCWsgPSB0YWxsb2NfemVybyhzdG9yZSwgc3RydWN0 IGRuc19zZXJ2ZXJfdGtleSk7Ci0gCWlmIChrID09IE5VTEwpIHsKLS0JCXJldHVybiBOVF9TVEFU VVNfTk9fTUVNT1JZOwotKwkJZ290byBub21lbTsKLSAJfQotIAotIAlrLT5uYW1lID0gdGFsbG9j X3N0cmR1cChrLCBuYW1lKTsKLSAKLSAJaWYgKGstPm5hbWUgID09IE5VTEwpIHsKLS0JCXJldHVy biBOVF9TVEFUVVNfTk9fTUVNT1JZOwotKwkJZ290byBub21lbTsKLSAJfQotIAotIAlrLT5hbGdv cml0aG0gPSB0YWxsb2Nfc3RyZHVwKGssIGFsZ29yaXRobSk7Ci0gCWlmIChrLT5hbGdvcml0aG0g PT0gTlVMTCkgewotLQkJcmV0dXJuIE5UX1NUQVRVU19OT19NRU1PUlk7Ci0rCQlnb3RvIG5vbWVt OwotIAl9Ci0gCi0gCS8qCi1AQCAtNzA0LDggKzcwNCw3IEBAIHN0YXRpYyBOVFNUQVRVUyBjcmVh dGVfdGtleShzdHJ1Y3QgZG5zX3NlcnZlciAqZG5zLAotIAkJCQkJCSZrLT5nZW5zZWMpOwotIAlp ZiAoIU5UX1NUQVRVU19JU19PSyhzdGF0dXMpKSB7Ci0gCQlERUJVRygxLCAoIkZhaWxlZCB0byBz dGFydCBHRU5TRUMgc2VydmVyIGNvZGU6ICVzXG4iLCBudF9lcnJzdHIoc3RhdHVzKSkpOwotLQkJ KnRrZXkgPSBOVUxMOwotLQkJcmV0dXJuIHN0YXR1czsKLSsJCWdvdG8gZmFpbDsKLSAJfQotIAot IAlnZW5zZWNfd2FudF9mZWF0dXJlKGstPmdlbnNlYywgR0VOU0VDX0ZFQVRVUkVfU0lHTik7Ci1A QCAtNzE1LDggKzcxNCw3IEBAIHN0YXRpYyBOVFNUQVRVUyBjcmVhdGVfdGtleShzdHJ1Y3QgZG5z X3NlcnZlciAqZG5zLAotIAlpZiAoIU5UX1NUQVRVU19JU19PSyhzdGF0dXMpKSB7Ci0gCQlERUJV RygxLCAoIkZhaWxlZCB0byBzZXQgcmVtb3RlIGFkZHJlc3MgaW50byBHRU5TRUM6ICVzXG4iLAot IAkJCSAgbnRfZXJyc3RyKHN0YXR1cykpKTsKLS0JCSp0a2V5ID0gTlVMTDsKLS0JCXJldHVybiBz dGF0dXM7Ci0rCQlnb3RvIGZhaWw7Ci0gCX0KLSAKLSAJc3RhdHVzID0gZ2Vuc2VjX3NldF9sb2Nh bF9hZGRyZXNzKGstPmdlbnNlYywKLUBAIC03MjQsOCArNzIyLDcgQEAgc3RhdGljIE5UU1RBVFVT IGNyZWF0ZV90a2V5KHN0cnVjdCBkbnNfc2VydmVyICpkbnMsCi0gCWlmICghTlRfU1RBVFVTX0lT X09LKHN0YXR1cykpIHsKLSAJCURFQlVHKDEsICgiRmFpbGVkIHRvIHNldCBsb2NhbCBhZGRyZXNz IGludG8gR0VOU0VDOiAlc1xuIiwKLSAJCQkgIG50X2VycnN0cihzdGF0dXMpKSk7Ci0tCQkqdGtl eSA9IE5VTEw7Ci0tCQlyZXR1cm4gc3RhdHVzOwotKwkJZ290byBmYWlsOwotIAl9Ci0gCi0gCXN0 YXR1cyA9IGdlbnNlY19zdGFydF9tZWNoX2J5X29pZChrLT5nZW5zZWMsIEdFTlNFQ19PSURfU1BO RUdPKTsKLUBAIC03MzMsOCArNzMwLDcgQEAgc3RhdGljIE5UU1RBVFVTIGNyZWF0ZV90a2V5KHN0 cnVjdCBkbnNfc2VydmVyICpkbnMsCi0gCWlmICghTlRfU1RBVFVTX0lTX09LKHN0YXR1cykpIHsK LSAJCURFQlVHKDEsICgiRmFpbGVkIHRvIHN0YXJ0IEdFTlNFQyBzZXJ2ZXIgY29kZTogJXNcbiIs Ci0gCQkJICBudF9lcnJzdHIoc3RhdHVzKSkpOwotLQkJKnRrZXkgPSBOVUxMOwotLQkJcmV0dXJu IHN0YXR1czsKLSsJCWdvdG8gZmFpbDsKLSAJfQotIAotIAlUQUxMT0NfRlJFRShzdG9yZS0+dGtl eXNbc3RvcmUtPm5leHRfaWR4XSk7Ci1AQCAtNzQ1LDYgKzc0MSwxMyBAQCBzdGF0aWMgTlRTVEFU VVMgY3JlYXRlX3RrZXkoc3RydWN0IGRuc19zZXJ2ZXIgKmRucywKLSAKLSAJKnRrZXkgPSBrOwot IAlyZXR1cm4gTlRfU1RBVFVTX09LOwotKwotK25vbWVtOgotKwlzdGF0dXMgPSBOVF9TVEFUVVNf Tk9fTUVNT1JZOwotK2ZhaWw6Ci0rCVRBTExPQ19GUkVFKGspOwotKwkqdGtleSA9IE5VTEw7Ci0r CXJldHVybiBzdGF0dXM7Ci0gfQotIAotIHN0YXRpYyBOVFNUQVRVUyBhY2NlcHRfZ3NzX3RpY2tl dChUQUxMT0NfQ1RYICptZW1fY3R4LAotLS0gCi0yLjQzLjAKLQotCi1Gcm9tIGQ4NzUyYWY3NTg5 OWNhYTYyMWY3MWU2MTQ5MDI0YTJlZDVkNTUyYjQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1G cm9tOiBWb2xrZXIgTGVuZGVja2UgPHZsQHNhbWJhLm9yZz4KLURhdGU6IFdlZCwgMTcgSnVuIDIw MjYgMDg6NTg6NDAgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAyMC8yM10gQ1ZFLTIwMjYtNTgyMTg6 IGRuc19zZXJ2ZXI6IE9ubHkgYWRkIGEgdGtleSBhZnRlciBzdWNjZXNzZnVsCi0gYXV0aGVudGlj YXRpb24KLQotQlVHOiBodHRwczovL2J1Z3ppbGxhLnNhbWJhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9 MTYxMTUKLQotU2lnbmVkLW9mZi1ieTogVm9sa2VyIExlbmRlY2tlIDx2bEBzYW1iYS5vcmc+Ci1S ZXZpZXdlZC1ieTogRG91Z2xhcyBCYWduYWxsIDxkYmFnbmFsbEBzYW1iYS5vcmc+Ci0tLS0KLSBz b3VyY2U0L2Ruc19zZXJ2ZXIvZG5zX3F1ZXJ5LmMgfCA0MSArKysrKysrKysrKysrKysrKysrKysr LS0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDI3IGluc2VydGlvbnMoKyksIDE0IGRlbGV0 aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc291cmNlNC9kbnNfc2VydmVyL2Ruc19xdWVyeS5jIGIv c291cmNlNC9kbnNfc2VydmVyL2Ruc19xdWVyeS5jCi1pbmRleCBlYmM2YTczNWE3Ni4uMjk5OGRi ZWUwNjAgMTAwNjQ0Ci0tLS0gYS9zb3VyY2U0L2Ruc19zZXJ2ZXIvZG5zX3F1ZXJ5LmMKLSsrKyBi L3NvdXJjZTQvZG5zX3NlcnZlci9kbnNfcXVlcnkuYwotQEAgLTY1NCw3ICs2NTQsOCBAQCBzdGF0 aWMgV0VSUk9SIGhhbmRsZV9hdXRob3JpdGF0aXZlX3JlY3Yoc3RydWN0IHRldmVudF9yZXEgKnJl cSkKLSAJcmV0dXJuIFdFUlJfT0s7Ci0gfQotIAotLXN0YXRpYyBOVFNUQVRVUyBjcmVhdGVfdGtl eShzdHJ1Y3QgZG5zX3NlcnZlciAqZG5zLAotK3N0YXRpYyBOVFNUQVRVUyBjcmVhdGVfdGtleShU QUxMT0NfQ1RYICptZW1fY3R4LAotKwkJCSAgICBzdHJ1Y3QgZG5zX3NlcnZlciAqZG5zLAotIAkJ CSAgICBjb25zdCBjaGFyKiBuYW1lLAotIAkJCSAgICBjb25zdCBjaGFyKiBhbGdvcml0aG0sCi0g CQkJICAgIGNvbnN0IHN0cnVjdCB0c29ja2V0X2FkZHJlc3MgKnJlbW90ZV9hZGRyZXNzLAotQEAg LTY2Miw3ICs2NjMsNiBAQCBzdGF0aWMgTlRTVEFUVVMgY3JlYXRlX3RrZXkoc3RydWN0IGRuc19z ZXJ2ZXIgKmRucywKLSAJCQkgICAgc3RydWN0IGRuc19zZXJ2ZXJfdGtleSAqKnRrZXkpCi0gewot IAlOVFNUQVRVUyBzdGF0dXM7Ci0tCXN0cnVjdCBkbnNfc2VydmVyX3RrZXlfc3RvcmUgKnN0b3Jl ID0gZG5zLT50a2V5czsKLSAJc3RydWN0IGRuc19zZXJ2ZXJfdGtleSAqayA9IE5VTEw7Ci0gCi0g CWlmIChzdHJjbXAoYWxnb3JpdGhtLCAiZ3NzLXRzaWciKSA9PSAwKSB7Ci1AQCAtNjczLDcgKzY3 Myw3IEBAIHN0YXRpYyBOVFNUQVRVUyBjcmVhdGVfdGtleShzdHJ1Y3QgZG5zX3NlcnZlciAqZG5z LAotIAkJcmV0dXJuIE5UX1NUQVRVU19BQ0NFU1NfREVOSUVEOwotIAl9Ci0gCi0tCWsgPSB0YWxs b2NfemVybyhzdG9yZSwgc3RydWN0IGRuc19zZXJ2ZXJfdGtleSk7Ci0rCWsgPSB0YWxsb2NfemVy byhtZW1fY3R4LCBzdHJ1Y3QgZG5zX3NlcnZlcl90a2V5KTsKLSAJaWYgKGsgPT0gTlVMTCkgewot IAkJZ290byBub21lbTsKLSAJfQotQEAgLTczMywxMiArNzMzLDYgQEAgc3RhdGljIE5UU1RBVFVT IGNyZWF0ZV90a2V5KHN0cnVjdCBkbnNfc2VydmVyICpkbnMsCi0gCQlnb3RvIGZhaWw7Ci0gCX0K LSAKLS0JVEFMTE9DX0ZSRUUoc3RvcmUtPnRrZXlzW3N0b3JlLT5uZXh0X2lkeF0pOwotLQotLQlz dG9yZS0+dGtleXNbc3RvcmUtPm5leHRfaWR4XSA9IGs7Ci0tCShzdG9yZS0+bmV4dF9pZHgpKys7 Ci0tCXN0b3JlLT5uZXh0X2lkeCAlPSBzdG9yZS0+c2l6ZTsKLS0KLSAJKnRrZXkgPSBrOwotIAly ZXR1cm4gTlRfU1RBVFVTX09LOwotIAotQEAgLTc1MCw2ICs3NDQsMTcgQEAgZmFpbDoKLSAJcmV0 dXJuIHN0YXR1czsKLSB9Ci0gCi0rc3RhdGljIHZvaWQgYWRkX3RrZXkoc3RydWN0IGRuc19zZXJ2 ZXJfdGtleV9zdG9yZSAqc3RvcmUsCi0rCQkgICAgIHN0cnVjdCBkbnNfc2VydmVyX3RrZXkgKip0 a2V5KQotK3sKLSsJVEFMTE9DX0ZSRUUoc3RvcmUtPnRrZXlzW3N0b3JlLT5uZXh0X2lkeF0pOwot KwotKwlzdG9yZS0+dGtleXNbc3RvcmUtPm5leHRfaWR4XSA9IHRhbGxvY19tb3ZlKHN0b3JlLT50 a2V5cywgdGtleSk7Ci0rCi0rCShzdG9yZS0+bmV4dF9pZHgpKys7Ci0rCXN0b3JlLT5uZXh0X2lk eCAlPSBzdG9yZS0+c2l6ZTsKLSt9Ci0rCi0gc3RhdGljIE5UU1RBVFVTIGFjY2VwdF9nc3NfdGlj a2V0KFRBTExPQ19DVFggKm1lbV9jdHgsCi0gCQkJCSAgc3RydWN0IGRuc19zZXJ2ZXIgKmRucywK LSAJCQkJICBzdHJ1Y3QgZG5zX3NlcnZlcl90a2V5ICp0a2V5LAotQEAgLTg2Myw2ICs4NjgsNyBA QCBzdGF0aWMgV0VSUk9SIGhhbmRsZV90a2V5KHN0cnVjdCBkbnNfc2VydmVyICpkbnMsCi0gCQlz dHJ1Y3QgZG5zX3NlcnZlcl90a2V5ICp0a2V5OwotIAkJREFUQV9CTE9CIGtleTsKLSAJCURBVEFf QkxPQiByZXBseTsKLSsJCWJvb2wgY3JlYXRlZCA9IGZhbHNlOwotIAotIAkJdGtleSA9IGRuc19m aW5kX3RrZXkoZG5zLT50a2V5cywgaW4tPnF1ZXN0aW9uc1swXS5uYW1lKTsKLSAJCWlmICh0a2V5 ICE9IE5VTEwgJiYgdGtleS0+Y29tcGxldGUpIHsKLUBAIC04NzMsMTUgKzg3OSwxOSBAQCBzdGF0 aWMgV0VSUk9SIGhhbmRsZV90a2V5KHN0cnVjdCBkbnNfc2VydmVyICpkbnMsCi0gCQl9Ci0gCi0g CQlpZiAodGtleSA9PSBOVUxMKSB7Ci0tCQkJc3RhdHVzICA9IGNyZWF0ZV90a2V5KGRucywgaW4t PnF1ZXN0aW9uc1swXS5uYW1lLAotLQkJCQkJICAgICAgaW5fdGtleS0+cmRhdGEudGtleV9yZWNv cmQuYWxnb3JpdGhtLAotLQkJCQkJICAgICAgc3RhdGUtPnJlbW90ZV9hZGRyZXNzLAotLQkJCQkJ ICAgICAgc3RhdGUtPmxvY2FsX2FkZHJlc3MsCi0tCQkJCQkgICAgICAmdGtleSk7Ci0rCQkJc3Rh dHVzID0gY3JlYXRlX3RrZXkoCi0rCQkJCW1lbV9jdHgsCi0rCQkJCWRucywKLSsJCQkJaW4tPnF1 ZXN0aW9uc1swXS5uYW1lLAotKwkJCQlpbl90a2V5LT5yZGF0YS50a2V5X3JlY29yZC5hbGdvcml0 aG0sCi0rCQkJCXN0YXRlLT5yZW1vdGVfYWRkcmVzcywKLSsJCQkJc3RhdGUtPmxvY2FsX2FkZHJl c3MsCi0rCQkJCSZ0a2V5KTsKLSAJCQlpZiAoIU5UX1NUQVRVU19JU19PSyhzdGF0dXMpKSB7Ci0g CQkJCXJldF90a2V5LT5yZGF0YS50a2V5X3JlY29yZC5lcnJvciA9IEROU19SQ09ERV9CQURLRVk7 Ci0gCQkJCXJldHVybiBudHN0YXR1c190b193ZXJyb3Ioc3RhdHVzKTsKLSAJCQl9Ci0rCQkJY3Jl YXRlZCA9IHRydWU7Ci0gCQl9Ci0gCi0gCQlrZXkuZGF0YSA9IGluX3RrZXktPnJkYXRhLnRrZXlf cmVjb3JkLmtleV9kYXRhOwotQEAgLTkwNiw2ICs5MTYsOSBAQCBzdGF0aWMgV0VSUk9SIGhhbmRs ZV90a2V5KHN0cnVjdCBkbnNfc2VydmVyICpkbnMsCi0gCQkJaWYgKHN0YXRlLT5rZXlfbmFtZSA9 PSBOVUxMKSB7Ci0gCQkJCXJldHVybiBXRVJSX05PVF9FTk9VR0hfTUVNT1JZOwotIAkJCX0KLSsJ CQlpZiAoY3JlYXRlZCkgewotKwkJCQlhZGRfdGtleShkbnMtPnRrZXlzLCAmdGtleSk7Ci0rCQkJ fQotIAkJfSBlbHNlIHsKLSAJCQlERUJVRygxLCAoIkdTUyBrZXkgbmVnb3RpYXRpb24gcmV0dXJu ZWQgJXNcbiIsIG50X2VycnN0cihzdGF0dXMpKSk7Ci0gCQkJcmV0X3RrZXktPnJkYXRhLnRrZXlf cmVjb3JkLmVycm9yID0gRE5TX1JDT0RFX0JBREtFWTsKLS0tIAotMi40My4wCi0KLQotRnJvbSAy NGY3ZWI1NzRkMmU5ZWE1Nzc0NmY5Njk2NDkxYjUwZGM0ZWY1MzUyIE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQotRnJvbTogU3RlZmFuIE1ldHptYWNoZXIgPG1ldHplQHNhbWJhLm9yZz4KLURhdGU6 IE1vbiwgMjkgSnVuIDIwMjYgMTk6MDk6MjggKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAyMS8yM10g Q1ZFLTIwMjYtNTgyMjE6IHM0OmRzZGI6IHByb3ZpZGUKLSBkc2RiX2F1ZGl0X3tsb2dfYXR0cmli dXRlcyxvcGVyYXRpb25faHVtYW5fcmVhZGFibGV9KCkgZnVuY3Rpb25zCi0KLVRoZXkgYXJlIHVz ZWZ1bCBvdXRzaWRlIG9mIGF1ZGl0X2xvZy5jIHNvb24uCi0KLUJVRzogaHR0cHM6Ly9idWd6aWxs YS5zYW1iYS5vcmcvc2hvd19idWcuY2dpP2lkPTE2MTQ3Ci0KLVNpZ25lZC1vZmYtYnk6IFN0ZWZh biBNZXR6bWFjaGVyIDxtZXR6ZUBzYW1iYS5vcmc+Ci1SZXZpZXdlZC1ieTogVm9sa2VyIExlbmRl Y2tlIDx2bEBzYW1iYS5vcmc+Ci1SZXZpZXdlZC1ieTogRG91Z2xhcyBCYWduYWxsIDxkb3VnbGFz LmJhZ25hbGxAY2F0YWx5c3QubmV0Lm56PgotCi1bYmFja3BvcnQ6IG1vZGlmaWVkIGZvciB2NC4y Miwgbm90IHJlbW92aW5nIHRoZSBzdGF0aWMgdmVyc2lvbnMgdXNlZAotIGluIGF1ZGl0X2xvZy5j IG9yIGFkanVzdGluZyB0aGUgdGVzdHNdCi0tLS0KLSBzb3VyY2U0L2RzZGIvc2FtZGIvbGRiX21v ZHVsZXMvYXVkaXRfdXRpbC5jIHwgMTgwICsrKysrKysrKysrKysrKysrKysrCi0gMSBmaWxlIGNo YW5nZWQsIDE4MCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9zb3VyY2U0L2RzZGIvc2Ft ZGIvbGRiX21vZHVsZXMvYXVkaXRfdXRpbC5jIGIvc291cmNlNC9kc2RiL3NhbWRiL2xkYl9tb2R1 bGVzL2F1ZGl0X3V0aWwuYwotaW5kZXggOGZlN2Q4MzMyZDIuLjI1ZjkwZWUzZGIzIDEwMDY0NAot LS0tIGEvc291cmNlNC9kc2RiL3NhbWRiL2xkYl9tb2R1bGVzL2F1ZGl0X3V0aWwuYwotKysrIGIv c291cmNlNC9kc2RiL3NhbWRiL2xkYl9tb2R1bGVzL2F1ZGl0X3V0aWwuYwotQEAgLTY5NCwzICs2 OTQsMTgzIEBAIGZhaWx1cmU6Ci0gCURCR19FUlIoIlVuYWJsZSB0byBjcmVhdGUgbGRiIGF0dHJp YnV0ZXMgSlNPTiBhdWRpdCBtZXNzYWdlXG4iKTsKLSAJcmV0dXJuIGF0dHJpYnV0ZXM7Ci0gfQot KwotKy8qCi0rICogQGJyaWVmIEdlbmVyYXRlIGEgaHVtYW4gcmVhZGFibGUgc3RyaW5nLCBkZXRh aWxpbmcgYXR0cmlidXRlcyBpbiBhIG1lc3NhZ2UKLSsgKgotKyAqIEZvciBtb2RpZnkgb3BlcmF0 aW9ucyBlYWNoIGF0dHJpYnV0ZSBpcyBwcmVmaXhlZCB3aXRoIHRoZSBhY3Rpb24uCi0rICogTm9y bWFsIHZhbHVlcyBhcmUgZW5jbG9zZWQgaW4gW10KLSsgKiBCYXNlNjQgdmFsdWVzIGFyZSBlbmNs b3NlZCBpbiB7fQotKyAqIFRydW5jYXRlZCB2YWx1ZXMgYXJlIGluZGljYXRlZCBieSB0aHJlZSB0 cmFpbGluZyBkb3RzICIuLi4iCi0rICoKLSsgKiBAcGFyYW1baW5dICBsZGIgICAgICAgdGhlIGxk Yl9jb250ZXh0Ci0rICogQHBhcmFtW291dF0gYnVmZmVyICAgIHRoZSBhdHRyaWJ1dGVzIHdpbGwg YmUgYXBwZW5kZWQgdG8gdGhlIGJ1ZmZlci4KLSsgKiAgICAgICAgICAgICAgICAgICAgICAgYXNz dW1lZCB0byBoYXZlIGJlZW4gYWxsb2NhdGVkIHZpYSB0YWxsb2MuCi0rICogQHBhcmFtW2luXSAg b3BlcmF0aW9uIHRoZSBvcGVyYXRpb24gdHlwZQotKyAqIEBwYXJhbVtpbl0gIG1lc3NhZ2UgICB0 aGUgbWVzc2FnZSB0byBwcm9jZXNzCi0rICoKLSsgKiBAcmV0dXJuIGEgcG9pbnRlciB0byBidWZm ZXIKLSsgKgotKyAqLwotK2NoYXIgKmRzZGJfYXVkaXRfbG9nX2F0dHJpYnV0ZXMoCi0rCXN0cnVj dCBsZGJfY29udGV4dCAqbGRiLAotKwljaGFyICpidWZmZXIsCi0rCWVudW0gbGRiX3JlcXVlc3Rf dHlwZSBvcGVyYXRpb24sCi0rCWNvbnN0IHN0cnVjdCBsZGJfbWVzc2FnZSAqbWVzc2FnZSkKLSt7 Ci0rCXNpemVfdCBpLCBqOwotKwlmb3IgKGk9MDtpPG1lc3NhZ2UtPm51bV9lbGVtZW50cztpKysp IHsKLSsJCWlmIChpID4gMCkgewotKwkJCWJ1ZmZlciA9IHRhbGxvY19hc3ByaW50Zl9hcHBlbmRf YnVmZmVyKGJ1ZmZlciwgIiAiKTsKLSsJCX0KLSsKLSsJCWlmIChtZXNzYWdlLT5lbGVtZW50c1tp XS5uYW1lID09IE5VTEwpIHsKLSsJCQlsZGJfZGVidWcoCi0rCQkJCWxkYiwKLSsJCQkJTERCX0RF QlVHX0VSUk9SLAotKwkJCQkiRXJyb3I6IEludmFsaWQgZWxlbWVudCBuYW1lIChOVUxMKSBhdCAi Ci0rCQkJCSJwb3NpdGlvbiAlenUiLCBpKTsKLSsJCQlyZXR1cm4gTlVMTDsKLSsJCX0KLSsKLSsJ CWlmIChvcGVyYXRpb24gPT0gTERCX01PRElGWSkgewotKwkJCWNvbnN0IGNoYXIgKmFjdGlvbiA9 TlVMTDsKLSsJCQlhY3Rpb24gPSBkc2RiX2F1ZGl0X2dldF9tb2RpZmljYXRpb25fYWN0aW9uKAot KwkJCQltZXNzYWdlLT5lbGVtZW50c1tpXS5mbGFncyk7Ci0rCQkJYnVmZmVyID0gdGFsbG9jX2Fz cHJpbnRmX2FwcGVuZF9idWZmZXIoCi0rCQkJCWJ1ZmZlciwKLSsJCQkJIiVzOiAlcyAiLAotKwkJ CQlhY3Rpb24sCi0rCQkJCW1lc3NhZ2UtPmVsZW1lbnRzW2ldLm5hbWUpOwotKwkJfSBlbHNlIHsK LSsJCQlidWZmZXIgPSB0YWxsb2NfYXNwcmludGZfYXBwZW5kX2J1ZmZlcigKLSsJCQkJYnVmZmVy LAotKwkJCQkiJXMgIiwKLSsJCQkJbWVzc2FnZS0+ZWxlbWVudHNbaV0ubmFtZSk7Ci0rCQl9Ci0r Ci0rCQlpZiAoZHNkYl9hdWRpdF9yZWRhY3RfYXR0cmlidXRlKG1lc3NhZ2UtPmVsZW1lbnRzW2ld Lm5hbWUpKSB7Ci0rCQkJLyoKLSsJCQkgKiBEbyBub3QgbG9nIHRoZSB2YWx1ZSBvZiBhbnkgc2Vj cmV0IG9yIHBhc3N3b3JkCi0rCQkJICogYXR0cmlidXRlcwotKwkJCSAqLwotKwkJCWJ1ZmZlciA9 IHRhbGxvY19hc3ByaW50Zl9hcHBlbmRfYnVmZmVyKAotKwkJCQlidWZmZXIsCi0rCQkJCSJbUkVE QUNURUQgU0VDUkVUIEFUVFJJQlVURV0iKTsKLSsJCQljb250aW51ZTsKLSsJCX0KLSsKLSsJCWZv ciAoaj0wO2o8bWVzc2FnZS0+ZWxlbWVudHNbaV0ubnVtX3ZhbHVlcztqKyspIHsKLSsJCQlzdHJ1 Y3QgbGRiX3ZhbCB2OwotKwkJCWJvb2wgdXNlX2I2NF9lbmNvZGUgPSBmYWxzZTsKLSsJCQlzaXpl X3QgbGVuZ3RoOwotKwkJCWlmIChqID4gMCkgewotKwkJCQlidWZmZXIgPSB0YWxsb2NfYXNwcmlu dGZfYXBwZW5kX2J1ZmZlcigKLSsJCQkJCWJ1ZmZlciwKLSsJCQkJCSIgIik7Ci0rCQkJfQotKwot KwkJCXYgPSBtZXNzYWdlLT5lbGVtZW50c1tpXS52YWx1ZXNbal07Ci0rCQkJbGVuZ3RoID0gTUlO KE1BWF9MRU5HVEgsIHYubGVuZ3RoKTsKLSsJCQl1c2VfYjY0X2VuY29kZSA9IGxkYl9zaG91bGRf YjY0X2VuY29kZShsZGIsICZ2KTsKLSsJCQlpZiAodXNlX2I2NF9lbmNvZGUpIHsKLSsJCQkJY29u c3QgY2hhciAqZW5jb2RlZCA9IGxkYl9iYXNlNjRfZW5jb2RlKAotKwkJCQkJYnVmZmVyLAotKwkJ CQkJKGNoYXIgKil2LmRhdGEsCi0rCQkJCQlsZW5ndGgpOwotKwkJCQlidWZmZXIgPSB0YWxsb2Nf YXNwcmludGZfYXBwZW5kX2J1ZmZlcigKLSsJCQkJCWJ1ZmZlciwKLSsJCQkJICAgICAgICAieyVz JXN9IiwKLSsJCQkJCWVuY29kZWQsCi0rCQkJCQkodi5sZW5ndGggPiBNQVhfTEVOR1RIID8gIi4u LiIgOiAiIikpOwotKwkJCX0gZWxzZSB7Ci0rCQkJCWJ1ZmZlciA9IHRhbGxvY19hc3ByaW50Zl9h cHBlbmRfYnVmZmVyKAotKwkJCQkJYnVmZmVyLAotKwkJCQkJIlslKi4qcyVzXSIsCi0rCQkJCQko aW50KWxlbmd0aCwKLSsJCQkJCShpbnQpbGVuZ3RoLAotKwkJCQkJKGNoYXIgKil2LmRhdGEsCi0r CQkJCQkodi5sZW5ndGggPiBNQVhfTEVOR1RIID8gIi4uLiIgOiAiIikpOwotKwkJCX0KLSsJCX0K LSsJfQotKwlyZXR1cm4gYnVmZmVyOwotK30KLSsKLSsvKgotKyAqIEBicmllZiBnZW5lcmF0ZSBh IGh1bWFuIHJlYWRhYmxlIGxvZyBlbnRyeSBkZXRhaWxpbmcgYW4gbGRiIG9wZXJhdGlvbi4KLSsg KgotKyAqIEdlbmVyYXRlIGEgaHVtYW4gcmVhZGFibGUgbG9nIGVudHJ5IGRldGFpbGluZyBhbiBs ZGIgb3BlcmF0aW9uLgotKyAqCi0rICogQHBhcmFtW2luXSBtZW1fY3R4IHRoZSB0YWxsb2MgY29u dGV4dCBvd25pbmcgdGhlIHJldHVybmVkIHN0cmluZy4KLSsgKiBAcGFyYW1baW5dIG1vZHVsZSAg dGhlIGxkYiBtb2R1bGUKLSsgKiBAcGFyYW1baW5dIHJlcXVlc3QgdGhlIHJlcXVlc3QKLSsgKiBA cGFyYW1baW5dIHJlcGx5ICAgdGhlIHJlc3VsdCBvZiB0aGUgb3BlcmF0aW9uCi0rICoKLSsgKiBA cmV0dXJuIHRoZSBsb2cgZW50cnkuCi0rICoKLSsgKi8KLStjaGFyICpkc2RiX2F1ZGl0X29wZXJh dGlvbl9odW1hbl9yZWFkYWJsZSgKLSsJVEFMTE9DX0NUWCAqbWVtX2N0eCwKLSsJc3RydWN0IGxk Yl9tb2R1bGUgKm1vZHVsZSwKLSsJY29uc3Qgc3RydWN0IGxkYl9yZXF1ZXN0ICpyZXF1ZXN0LAot Kwljb25zdCBzdHJ1Y3QgbGRiX3JlcGx5ICpyZXBseSkKLSt7Ci0rCXN0cnVjdCBsZGJfY29udGV4 dCAqbGRiID0gTlVMTDsKLSsJY29uc3QgY2hhciAqcmVtb3RlX2hvc3QgPSBOVUxMOwotKwljb25z dCBzdHJ1Y3QgdHNvY2tldF9hZGRyZXNzICpyZW1vdGUgPSBOVUxMOwotKwljb25zdCBzdHJ1Y3Qg ZG9tX3NpZCAqc2lkID0gTlVMTDsKLSsJc3RydWN0IGRvbV9zaWRfYnVmIHVzZXJfc2lkOwotKwlj b25zdCBjaGFyICp0aW1lc3RhbXAgPSBOVUxMOwotKwljb25zdCBjaGFyICpvcF9uYW1lID0gTlVM TDsKLSsJY2hhciAqbG9nX2VudHJ5ID0gTlVMTDsKLSsJY29uc3QgY2hhciAqZG4gPSBOVUxMOwot Kwljb25zdCBjaGFyICpuZXdfZG4gPSBOVUxMOwotKwljb25zdCBzdHJ1Y3QgbGRiX21lc3NhZ2Ug Km1lc3NhZ2UgPSBOVUxMOwotKwotKwlUQUxMT0NfQ1RYICpjdHggPSB0YWxsb2NfbmV3KE5VTEwp OwotKwotKwlsZGIgPSBsZGJfbW9kdWxlX2dldF9jdHgobW9kdWxlKTsKLSsKLSsJcmVtb3RlX2hv c3QgPSBkc2RiX2F1ZGl0X2dldF9yZW1vdGVfaG9zdChsZGIsIGN0eCk7Ci0rCXJlbW90ZSA9IGRz ZGJfYXVkaXRfZ2V0X3JlbW90ZV9hZGRyZXNzKGxkYik7Ci0rCWlmIChyZW1vdGUgIT0gTlVMTCAm JiBkc2RiX2F1ZGl0X2lzX3N5c3RlbV9zZXNzaW9uKG1vZHVsZSkpIHsKLSsJCXNpZCA9IGRzZGJf YXVkaXRfZ2V0X2FjdHVhbF9zaWQobGRiKTsKLSsJfSBlbHNlIHsKLSsJCXNpZCA9IGRzZGJfYXVk aXRfZ2V0X3VzZXJfc2lkKG1vZHVsZSk7Ci0rCX0KLSsJdGltZXN0YW1wID0gYXVkaXRfZ2V0X3Rp bWVzdGFtcChjdHgpOwotKwlvcF9uYW1lID0gZHNkYl9hdWRpdF9nZXRfb3BlcmF0aW9uX25hbWUo cmVxdWVzdCk7Ci0rCWRuID0gZHNkYl9hdWRpdF9nZXRfcHJpbWFyeV9kbihyZXF1ZXN0KTsKLSsJ bmV3X2RuID0gZHNkYl9hdWRpdF9nZXRfc2Vjb25kYXJ5X2RuKHJlcXVlc3QpOwotKwotKwltZXNz YWdlID0gZHNkYl9hdWRpdF9nZXRfbWVzc2FnZShyZXF1ZXN0KTsKLSsKLSsJbG9nX2VudHJ5ID0g dGFsbG9jX2FzcHJpbnRmKAotKwkJbWVtX2N0eCwKLSsJCSJbJXNdIGF0IFslc10gc3RhdHVzIFsl c10gIgotKwkJInJlbW90ZSBob3N0IFslc10gU0lEIFslc10gRE4gWyVzXSIsCi0rCQlvcF9uYW1l LAotKwkJdGltZXN0YW1wLAotKwkJbGRiX3N0cmVycm9yKHJlcGx5LT5lcnJvciksCi0rCQlyZW1v dGVfaG9zdCwKLSsJCWRvbV9zaWRfc3RyX2J1ZihzaWQsICZ1c2VyX3NpZCksCi0rCQlkbik7Ci0r CWlmIChuZXdfZG4gIT0gTlVMTCkgewotKwkJbG9nX2VudHJ5ID0gdGFsbG9jX2FzcHJpbnRmX2Fw cGVuZF9idWZmZXIoCi0rCQkJbG9nX2VudHJ5LAotKwkJCSIgTmV3IEROIFslc10iLAotKwkJCW5l d19kbik7Ci0rCX0KLSsJaWYgKG1lc3NhZ2UgIT0gTlVMTCkgewotKwkJbG9nX2VudHJ5ID0gdGFs bG9jX2FzcHJpbnRmX2FwcGVuZF9idWZmZXIobG9nX2VudHJ5LAotKwkJCQkJCQkgICIgYXR0cmli dXRlcyBbIik7Ci0rCQlsb2dfZW50cnkgPSBkc2RiX2F1ZGl0X2xvZ19hdHRyaWJ1dGVzKGxkYiwK LSsJCQkJCQkgICAgICBsb2dfZW50cnksCi0rCQkJCQkJICAgICAgcmVxdWVzdC0+b3BlcmF0aW9u LAotKwkJCQkJCSAgICAgIG1lc3NhZ2UpOwotKwkJbG9nX2VudHJ5ID0gdGFsbG9jX2FzcHJpbnRm X2FwcGVuZF9idWZmZXIobG9nX2VudHJ5LCAiXSIpOwotKwl9Ci0rCVRBTExPQ19GUkVFKGN0eCk7 Ci0rCXJldHVybiBsb2dfZW50cnk7Ci0rfQotLS0gCi0yLjQzLjAKLQotCi1Gcm9tIGI1Zjc4NDky NjI4YTA2MDEzMzU0Zjc2NTIxY2IxNTNhYjdkOGUwZDUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx Ci1Gcm9tOiBTdGVmYW4gTWV0em1hY2hlciA8bWV0emVAc2FtYmEub3JnPgotRGF0ZTogV2VkLCAy NCBKdW4gMjAyNiAxNDowMTozMiArMDIwMAotU3ViamVjdDogW1BBVENIIDIyLzIzXSBDVkUtMjAy Ni01ODIyMTogczQ6ZHNkYjogbGV0IHJvb3Rkc2VfZmlsdGVyX29wZXJhdGlvbnMoKQotIHJlamVj dCB1bnRydXN0ZWQgb3BlcmF0aW9ucyBvbiBzcGVjaWFsIEROcwotCi1XaXRob3V0IHRoaXMgYXV0 aGVudGljYXRlZCAoYWxzbyBub24tYWRtaW4pIHVzZXJzIHdyaXRlIGludGVybmFsIG1ldGEKLWRh dGEgbGVhZGluZyB0byBhZG1pbiBwcml2aWxlZ2VzLgotCi1CVUc6IGh0dHBzOi8vYnVnemlsbGEu c2FtYmEub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjE0NwotCi1TaWduZWQtb2ZmLWJ5OiBTdGVmYW4g TWV0em1hY2hlciA8bWV0emVAc2FtYmEub3JnPgotUmV2aWV3ZWQtYnk6IFZvbGtlciBMZW5kZWNr ZSA8dmxAc2FtYmEub3JnPgotUmV2aWV3ZWQtYnk6IERvdWdsYXMgQmFnbmFsbCA8ZG91Z2xhcy5i YWduYWxsQGNhdGFseXN0Lm5ldC5uej4KLS0tLQotIHNvdXJjZTQvZHNkYi9zYW1kYi9sZGJfbW9k dWxlcy9yb290ZHNlLmMgICAgICB8IDU1ICsrKysrKysrKysrKysrKysrKy0KLSAuLi4vc2FtZGIv bGRiX21vZHVsZXMvd3NjcmlwdF9idWlsZF9zZXJ2ZXIgICAgfCAgMiArLQotIDIgZmlsZXMgY2hh bmdlZCwgNTQgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3Nv dXJjZTQvZHNkYi9zYW1kYi9sZGJfbW9kdWxlcy9yb290ZHNlLmMgYi9zb3VyY2U0L2RzZGIvc2Ft ZGIvbGRiX21vZHVsZXMvcm9vdGRzZS5jCi1pbmRleCA3NTQxYTJjZjM3Ni4uOWNjODQ3N2I4Zjgg MTAwNjQ0Ci0tLS0gYS9zb3VyY2U0L2RzZGIvc2FtZGIvbGRiX21vZHVsZXMvcm9vdGRzZS5jCi0r KysgYi9zb3VyY2U0L2RzZGIvc2FtZGIvbGRiX21vZHVsZXMvcm9vdGRzZS5jCi1AQCAtMjgsNiAr MjgsNyBAQAotICNpbmNsdWRlICJkc2RiL3NhbWRiL3NhbWRiLmgiCi0gI2luY2x1ZGUgInZlcnNp b24uaCIKLSAjaW5jbHVkZSAiZHNkYi9zYW1kYi9sZGJfbW9kdWxlcy91dGlsLmgiCi0rI2luY2x1 ZGUgImRzZGIvc2FtZGIvbGRiX21vZHVsZXMvYXVkaXRfdXRpbF9wcm90by5oIgotICNpbmNsdWRl ICJsaWJjbGkvc2VjdXJpdHkvc2VjdXJpdHkuaCIKLSAjaW5jbHVkZSAibGlicnBjL25kci9saWJu ZHIuaCIKLSAjaW5jbHVkZSAiYXV0aC9hdXRoLmgiCi1AQCAtNzQ2LDE4ICs3NDcsNjggQEAgc3Rh dGljIGludCByb290ZHNlX2ZpbHRlcl9jb250cm9scyhzdHJ1Y3QgbGRiX21vZHVsZSAqbW9kdWxl LCBzdHJ1Y3QgbGRiX3JlcXVlc3QKLSAJcmV0dXJuIExEQl9TVUNDRVNTOwotIH0KLSAKLS0vKiBF bnN1cmUgdGhhdCBhbm9ueW1vdXMgdXNlcnMgYXJlIG5vdCBhbGxvd2VkIHRvIG1ha2UgYW55dGhp bmcgb3RoZXIgdGhhbiByb290RFNFIHNlYXJjaCBvcGVyYXRpb25zICovCi0tCi0rLyoKLSsgKiBF bnN1cmUgdGhhdCBhbm9ueW1vdXMgdXNlcnMgYXJlIG5vdCBhbGxvd2VkIHRvIG1ha2UgYW55dGhp bmcgb3RoZXIgdGhhbgotKyAqIHJvb3REU0Ugc2VhcmNoIG9wZXJhdGlvbnMgYW5kIHNwZWNpYWwg ZG5zIGxpa2UgQE1PRFVMRVMgYXJlIG5vdCBhbGxvd2VkCi0rICogb3ZlciBhbiB1bnRydXN0ZWQg Y29ubmVjdGlvbi4KLSsgKi8KLSBzdGF0aWMgaW50IHJvb3Rkc2VfZmlsdGVyX29wZXJhdGlvbnMo c3RydWN0IGxkYl9tb2R1bGUgKm1vZHVsZSwgc3RydWN0IGxkYl9yZXF1ZXN0ICpyZXEpCi0gewot IAlzdHJ1Y3QgYXV0aF9zZXNzaW9uX2luZm8gKnNlc3Npb25faW5mbzsKLSAJc3RydWN0IHJvb3Rk c2VfcHJpdmF0ZV9kYXRhICpwcml2ID0gdGFsbG9jX2dldF90eXBlKGxkYl9tb2R1bGVfZ2V0X3By aXZhdGUobW9kdWxlKSwgc3RydWN0IHJvb3Rkc2VfcHJpdmF0ZV9kYXRhKTsKLSAJYm9vbCBpc191 bnRydXN0ZWQgPSBsZGJfcmVxX2lzX3VudHJ1c3RlZChyZXEpOwotIAlib29sIGlzX2Fub255bW91 cyA9IHRydWU7Ci0rCXN0cnVjdCBsZGJfZG4gKmRuID0gTlVMTDsKLSsJc3RydWN0IGxkYl9kbiAq ZG4yID0gTlVMTDsKLSsKLSAJaWYgKGlzX3VudHJ1c3RlZCA9PSBmYWxzZSkgewotIAkJcmV0dXJu IExEQl9TVUNDRVNTOwotIAl9Ci0gCi0rCXN3aXRjaCAocmVxLT5vcGVyYXRpb24pIHsKLSsJY2Fz ZSBMREJfU0VBUkNIOgotKwkJZG4gPSByZXEtPm9wLnNlYXJjaC5iYXNlOwotKwkJYnJlYWs7Ci0r CWNhc2UgTERCX0FERDoKLSsJCWRuID0gcmVxLT5vcC5hZGQubWVzc2FnZS0+ZG47Ci0rCQlicmVh azsKLSsJY2FzZSBMREJfTU9ESUZZOgotKwkJZG4gPSByZXEtPm9wLm1vZC5tZXNzYWdlLT5kbjsK LSsJCWJyZWFrOwotKwljYXNlIExEQl9ERUxFVEU6Ci0rCQlkbiA9IHJlcS0+b3AuZGVsLmRuOwot KwkJYnJlYWs7Ci0rCWNhc2UgTERCX1JFTkFNRToKLSsJCWRuID0gcmVxLT5vcC5yZW5hbWUub2xk ZG47Ci0rCQlkbjIgPSByZXEtPm9wLnJlbmFtZS5uZXdkbjsKLSsJCWJyZWFrOwotKwljYXNlIExE Ql9FWFRFTkRFRDoKLSsJCWJyZWFrOwotKwljYXNlIExEQl9SRVFfUkVHSVNURVJfQ09OVFJPTDoK LSsJY2FzZSBMREJfUkVRX1JFR0lTVEVSX1BBUlRJVElPTjoKLSsJCWxkYl9zZXRfZXJyc3RyaW5n KGxkYl9tb2R1bGVfZ2V0X2N0eChtb2R1bGUpLCAiSW52YWxpZCBPUCIpOwotKwkJcmV0dXJuIExE Ql9FUlJfT1BFUkFUSU9OU19FUlJPUjsKLSsJfQotKwotKwlpZiAobGRiX2RuX2lzX3NwZWNpYWwo ZG4pKSB7Ci0rCQlzdHJ1Y3QgbGRiX3JlcGx5IHJlcGx5ID0geyAuZXJyb3IgPSBMREJfRVJSX09Q RVJBVElPTlNfRVJST1IsIH07Ci0rCi0rCQlEX0VSUigiQ1ZFLTIwMjYtNTgyMjEtQVRUQUNLOiAl c1xuIiwKLSsJCQlkc2RiX2F1ZGl0X29wZXJhdGlvbl9odW1hbl9yZWFkYWJsZShyZXEsIG1vZHVs ZSwgcmVxLCAmcmVwbHkpKTsKLSsKLSsJCWxkYl9zZXRfZXJyc3RyaW5nKGxkYl9tb2R1bGVfZ2V0 X2N0eChtb2R1bGUpLCAiSW52YWxpZCBETiIpOwotKwkJcmV0dXJuIExEQl9FUlJfT1BFUkFUSU9O U19FUlJPUjsKLSsJfQotKwlpZiAobGRiX2RuX2lzX3NwZWNpYWwoZG4yKSkgewotKwkJc3RydWN0 IGxkYl9yZXBseSByZXBseSA9IHsgLmVycm9yID0gTERCX0VSUl9PUEVSQVRJT05TX0VSUk9SLCB9 OwotKwotKwkJRF9FUlIoIkNWRS0yMDI2LTU4MjIxLUFUVEFDSzogJXNcbiIsCi0rCQkJZHNkYl9h dWRpdF9vcGVyYXRpb25faHVtYW5fcmVhZGFibGUocmVxLCBtb2R1bGUsIHJlcSwgJnJlcGx5KSk7 Ci0rCi0rCQlsZGJfc2V0X2VycnN0cmluZyhsZGJfbW9kdWxlX2dldF9jdHgobW9kdWxlKSwgIklu dmFsaWQgRE4iKTsKLSsJCXJldHVybiBMREJfRVJSX09QRVJBVElPTlNfRVJST1I7Ci0rCX0KLSsK LSAJc2Vzc2lvbl9pbmZvID0gKHN0cnVjdCBhdXRoX3Nlc3Npb25faW5mbyAqKWxkYl9nZXRfb3Bh cXVlKAotIAkJbGRiX21vZHVsZV9nZXRfY3R4KG1vZHVsZSksCi0gCQlEU0RCX1NFU1NJT05fSU5G Tyk7Ci1kaWZmIC0tZ2l0IGEvc291cmNlNC9kc2RiL3NhbWRiL2xkYl9tb2R1bGVzL3dzY3JpcHRf YnVpbGRfc2VydmVyIGIvc291cmNlNC9kc2RiL3NhbWRiL2xkYl9tb2R1bGVzL3dzY3JpcHRfYnVp bGRfc2VydmVyCi1pbmRleCA4MDBlZDI5NTRjNC4uNzU4MmI2NGE5MzggMTAwNjQ0Ci0tLS0gYS9z b3VyY2U0L2RzZGIvc2FtZGIvbGRiX21vZHVsZXMvd3NjcmlwdF9idWlsZF9zZXJ2ZXIKLSsrKyBi L3NvdXJjZTQvZHNkYi9zYW1kYi9sZGJfbW9kdWxlcy93c2NyaXB0X2J1aWxkX3NlcnZlcgotQEAg LTE4NSw3ICsxODUsNyBAQCBibGQuU0FNQkFfTU9EVUxFKCdsZGJfcm9vdGRzZScsCi0gCWluaXRf ZnVuY3Rpb249J2xkYl9yb290ZHNlX21vZHVsZV9pbml0JywKLSAJbW9kdWxlX2luaXRfbmFtZT0n bGRiX2luaXRfbW9kdWxlJywKLSAJaW50ZXJuYWxfbW9kdWxlPUZhbHNlLAotLQlkZXBzPSd0YWxs b2Mgc2FtZGIgTUVTU0FHSU5HIHNhbWJhLXNlY3VyaXR5IERTREJfTU9EVUxFX0hFTFBFUlMgUlBD X05EUl9JUlBDJwotKwlkZXBzPSd0YWxsb2Mgc2FtZGIgTUVTU0FHSU5HIHNhbWJhLXNlY3VyaXR5 IERTREJfTU9EVUxFX0hFTFBFUlMgRFNEQl9NT0RVTEVfSEVMUEVSU19BVURJVCBSUENfTkRSX0lS UEMnCi0gCSkKLSAKLSAKLS0tIAotMi40My4wCi0KLQotRnJvbSBlM2MxNWQ5MzY1ZmNlYzAzODlj OWIzYWM3YmMzODg3MTg1NGM2NGE3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogU3Rl ZmFuIE1ldHptYWNoZXIgPG1ldHplQHNhbWJhLm9yZz4KLURhdGU6IFdlZCwgMjQgSnVuIDIwMjYg MTQ6NDI6MTEgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAyMy8yM10gQ1ZFLTIwMjYtNTgyMjIgczQ6 bGRhcF9zZXJ2ZXI6IGRvbid0IGFsbG93IHVudHJ1c3RlZAotIGNvbXBhcmUgcmVxdWVzdHMgZm9y IGNvbmZpZGVudGlhbCBhdHRyaWJ1dGVzCi0KLVRoaXMgbWVhbnMgd2UgYXBwbHkgYWNsIGNoZWNr cyBhZ2FpbnN0IHRoZSBzZWFyY2ggZmlsdGVyIHNpbWlsYXIKLXRvIG5vcm1hbCBsZGIgc2VhcmNo ZXMuCi0KLUJVRzogaHR0cHM6Ly9idWd6aWxsYS5zYW1iYS5vcmcvc2hvd19idWcuY2dpP2lkPTE2 MTQ4Ci0KLVNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBNZXR6bWFjaGVyIDxtZXR6ZUBzYW1iYS5vcmc+ Ci1SZXZpZXdlZC1ieTogRG91Z2xhcyBCYWduYWxsIDxkb3VnbGFzLmJhZ25hbGxAY2F0YWx5c3Qu bmV0Lm56PgotLS0tCi0gc291cmNlNC9sZGFwX3NlcnZlci9sZGFwX2JhY2tlbmQuYyB8IDI3ICsr KysrKysrKysrKysrKysrKysrLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAyMCBpbnNlcnRpb25z KCspLCA3IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc291cmNlNC9sZGFwX3NlcnZlci9s ZGFwX2JhY2tlbmQuYyBiL3NvdXJjZTQvbGRhcF9zZXJ2ZXIvbGRhcF9iYWNrZW5kLmMKLWluZGV4 IDk4NmJjMWRiOTQxLi40NjAzOTM1ZjBiMCAxMDA2NDQKLS0tLSBhL3NvdXJjZTQvbGRhcF9zZXJ2 ZXIvbGRhcF9iYWNrZW5kLmMKLSsrKyBiL3NvdXJjZTQvbGRhcF9zZXJ2ZXIvbGRhcF9iYWNrZW5k LmMKLUBAIC0yOSw2ICsyOSw3IEBACi0gI2luY2x1ZGUgInNhbWJhL3NlcnZpY2Vfc3RyZWFtLmgi Ci0gI2luY2x1ZGUgImRzZGIvZ21zYS91dGlsLmgiCi0gI2luY2x1ZGUgImRzZGIvc2FtZGIvc2Ft ZGIuaCIKLSsjaW5jbHVkZSAiZHNkYi9jb21tb24vdXRpbC5oIgotICNpbmNsdWRlIDxsZGJfZXJy b3JzLmg+Ci0gI2luY2x1ZGUgPGxkYl9tb2R1bGUuaD4KLSAjaW5jbHVkZSAibGRiX3dyYXAuaCIK LUBAIC0xNDQ5LDYgKzE0NTAsNyBAQCBzdGF0aWMgTlRTVEFUVVMgbGRhcHNydl9Db21wYXJlUmVx dWVzdChzdHJ1Y3QgbGRhcHNydl9jYWxsICpjYWxsKQotIAlzdHJ1Y3QgbGRiX2RuICpkbjsKLSAJ Y29uc3QgY2hhciAqYXR0cnNbMV07Ci0gCWNvbnN0IGNoYXIgKmVycnN0ciA9IE5VTEw7Ci0rCWNv bnN0IGNoYXIgKnZhbHVlID0gTlVMTDsKLSAJY29uc3QgY2hhciAqZmlsdGVyID0gTlVMTDsKLSAJ aW50IHJlc3VsdCA9IExEQVBfU1VDQ0VTUzsKLSAJaW50IGxkYl9yZXQ7Ci1AQCAtMTQ2MSwyMSAr MTQ2MywzMSBAQCBzdGF0aWMgTlRTVEFUVVMgbGRhcHNydl9Db21wYXJlUmVxdWVzdChzdHJ1Y3Qg bGRhcHNydl9jYWxsICpjYWxsKQotIAlkbiA9IGxkYl9kbl9uZXcobG9jYWxfY3R4LCBzYW1kYiwg cmVxLT5kbik7Ci0gCU5UX1NUQVRVU19IQVZFX05PX01FTU9SWShkbik7Ci0gCi0rCWNvbXBhcmVf ciA9IGxkYXBzcnZfaW5pdF9yZXBseShjYWxsLCBMREFQX1RBR19Db21wYXJlUmVzcG9uc2UpOwot KwlOVF9TVEFUVVNfSEFWRV9OT19NRU1PUlkoY29tcGFyZV9yKTsKLSsKLSAJREJHX0RFQlVHKCJk bjogWyVzXVxuIiwgcmVxLT5kbik7Ci0tCWZpbHRlciA9IHRhbGxvY19hc3ByaW50Zihsb2NhbF9j dHgsICIoJXM9JSpzKSIsIHJlcS0+YXR0cmlidXRlLAotLQkJCQkgKGludClyZXEtPnZhbHVlLmxl bmd0aCwgcmVxLT52YWx1ZS5kYXRhKTsKLSsKLSsJaWYgKCFsZGJfdmFsaWRfYXR0cl9uYW1lKHJl cS0+YXR0cmlidXRlKSkgewotKwkJcmVzdWx0ID0gTERBUF9JTlZBTElEX0FUVFJJQlVURV9TWU5U QVg7Ci0rCQllcnJzdHIgPSAiSW52YWxpZCBDb21wYXJlIGF0dHJpYnV0ZSBuYW1lIjsKLSsJCWdv dG8gcmVwbHk7Ci0rCX0KLSsJdmFsdWUgPSBsZGJfYmluYXJ5X2VuY29kZShsb2NhbF9jdHgsIHJl cS0+dmFsdWUpOwotKwlOVF9TVEFUVVNfSEFWRV9OT19NRU1PUlkodmFsdWUpOwotKwotKwlmaWx0 ZXIgPSB0YWxsb2NfYXNwcmludGYobG9jYWxfY3R4LCAiJXM9JXMiLCByZXEtPmF0dHJpYnV0ZSwg dmFsdWUpOwotIAlOVF9TVEFUVVNfSEFWRV9OT19NRU1PUlkoZmlsdGVyKTsKLSAKLSAJREJHX0RF QlVHKCJhdHRyaWJ1dGU6IFslc11cbiIsIGZpbHRlcik7Ci0gCi0gCWF0dHJzWzBdID0gTlVMTDsK LSAKLS0JY29tcGFyZV9yID0gbGRhcHNydl9pbml0X3JlcGx5KGNhbGwsIExEQVBfVEFHX0NvbXBh cmVSZXNwb25zZSk7Ci0tCU5UX1NUQVRVU19IQVZFX05PX01FTU9SWShjb21wYXJlX3IpOwotLQot IAlpZiAocmVzdWx0ID09IExEQVBfU1VDQ0VTUykgewotLQkJbGRiX3JldCA9IGxkYl9zZWFyY2go c2FtZGIsIGxvY2FsX2N0eCwgJnJlcywKLS0JCQkJICAgICBkbiwgTERCX1NDT1BFX0JBU0UsIGF0 dHJzLCAiJXMiLCBmaWx0ZXIpOwotKwkJbGRiX3JldCA9IGRzZGJfc2VhcmNoKHNhbWRiLCBsb2Nh bF9jdHgsICZyZXMsCi0rCQkJCSAgICAgIGRuLCBMREJfU0NPUEVfQkFTRSwgYXR0cnMsCi0rCQkJ CSAgICAgIERTREJfTUFSS19SRVFfVU5UUlVTVEVELAotKwkJCQkgICAgICAiJXMiLCBmaWx0ZXIp OwotIAkJaWYgKGxkYl9yZXQgIT0gTERCX1NVQ0NFU1MpIHsKLSAJCQlyZXN1bHQgPSBtYXBfbGRi X2Vycm9yKGxvY2FsX2N0eCwgbGRiX3JldCwKLSAJCQkJCSAgICAgICBsZGJfZXJyc3RyaW5nKHNh bWRiKSwgJmVycnN0cik7Ci1AQCAtMTQ5Nyw2ICsxNTA5LDcgQEAgc3RhdGljIE5UU1RBVFVTIGxk YXBzcnZfQ29tcGFyZVJlcXVlc3Qoc3RydWN0IGxkYXBzcnZfY2FsbCAqY2FsbCkKLSAJCX0KLSAJ fQotIAotK3JlcGx5OgotIAljb21wYXJlID0gJmNvbXBhcmVfci0+bXNnLT5yLkNvbXBhcmVSZXNw b25zZTsKLSAJY29tcGFyZS0+ZG4gPSBOVUxMOwotIAljb21wYXJlLT5yZXN1bHRjb2RlID0gcmVz dWx0OwotLS0gCi0yLjQzLjAKLQpkaWZmIC1OcnUgc2FtYmEtNC4yMi4xMCtkZnNnL2RlYmlhbi9w YXRjaGVzL3NlcmllcyBzYW1iYS00LjIyLjExK2Rmc2cvZGViaWFuL3BhdGNoZXMvc2VyaWVzCi0t LSBzYW1iYS00LjIyLjEwK2Rmc2cvZGViaWFuL3BhdGNoZXMvc2VyaWVzCTIwMjYtMDctMTkgMjA6 MzQ6MDAuMDAwMDAwMDAwICswMzAwCisrKyBzYW1iYS00LjIyLjExK2Rmc2cvZGViaWFuL3BhdGNo ZXMvc2VyaWVzCTIwMjYtMDctMjggMTU6MDA6MzMuMDAwMDAwMDAwICswMzAwCkBAIC0yMiw0ICsy MiwzIEBACiBtZWFuaW5nZnVsLWVycm9yLWlmLW5vLXB5dGhvbjMtbWFya2Rvd24ucGF0Y2gKIGN0 ZGItdXNlLXJ1bi1pbnN0ZWFkLW9mLXZhci1ydW4ucGF0Y2gKIHJlcGxhY2UteHBnLXN0cmVycm9y LnBhdGNoCi0yMDI2LWp1bC1zZWMtdXBkYXRlLWJ1Zy0xNjAzOS12NC0yMi1jb21iaW5lZC5wYXRj aApkaWZmIC1OcnUgc2FtYmEtNC4yMi4xMCtkZnNnL1ZFUlNJT04gc2FtYmEtNC4yMi4xMStkZnNn L1ZFUlNJT04KLS0tIHNhbWJhLTQuMjIuMTArZGZzZy9WRVJTSU9OCTIwMjYtMDUtMTUgMTY6NTE6 NDMuNDQzMDYwMjAwICswMzAwCisrKyBzYW1iYS00LjIyLjExK2Rmc2cvVkVSU0lPTgkyMDI2LTA3 LTIxIDE4OjM3OjA0LjE3NTI3NTgwMCArMDMwMApAQCAtMjcsNyArMjcsNyBAQAogIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIFNBTUJBX1ZF UlNJT05fTUFKT1I9NAogU0FNQkFfVkVSU0lPTl9NSU5PUj0yMgotU0FNQkFfVkVSU0lPTl9SRUxF QVNFPTEwCitTQU1CQV9WRVJTSU9OX1JFTEVBU0U9MTEKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgSWYgYSBvZmZpY2lhbCByZWxl YXNlIGhhcyBhIHNlcmlvdXMgYnVnICAgICAgICAgICAgICAjCmRpZmYgLU5ydSBzYW1iYS00LjIy LjEwK2Rmc2cvV0hBVFNORVcudHh0IHNhbWJhLTQuMjIuMTErZGZzZy9XSEFUU05FVy50eHQKLS0t IHNhbWJhLTQuMjIuMTArZGZzZy9XSEFUU05FVy50eHQJMjAyNi0wNS0xNSAxNjo1MTo0My40NDQw NjAwMDAgKzAzMDAKKysrIHNhbWJhLTQuMjIuMTErZGZzZy9XSEFUU05FVy50eHQJMjAyNi0wNy0y MSAxODozNzowNC4xNzUyNzU4MDAgKzAzMDAKQEAgLTEsNCArMSwxMTIgQEAKICAgICAgICAgICAg ICAgICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgICAgICAgICAgICAg ICAgUmVsZWFzZSBOb3RlcyBmb3IgU2FtYmEgNC4yMi4xMQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgSnVseSAyOCwgMjAyNgorICAgICAgICAgICAgICAgICAgID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KKworCitUaGlzIGlzIGEgc2VjdXJpdHkgcmVsZWFzZSBpbiBvcmRlciB0 byBhZGRyZXNzIHRoZSBmb2xsb3dpbmcgZGVmZWN0czoKKworbyBDVkUtMjAyNi02OTQ5OiAgIFRT SUcgcGFja2V0IHdpdGggbmFtZSBjb21wcmVzc2lvbiBjYW4gY3Jhc2ggRE5TCisKKyAgICAgICAg ICAgICAgICAgICBJbmNvcnJlY3Qgc2l6ZSBjYWxjdWxhdGlvbnMgd2hlbiBhIFRTSUcgcmVjb3Jk IGNvbnRhaW5zCisgICAgICAgICAgICAgICAgICAgY29tcHJlc3NlZCBuYW1lcyBjYW4gbGVhZCB0 byBhIGxhcmdlIG91dC1vZi1ib3VuZHMgd3JpdGUKKyAgICAgICAgICAgICAgICAgICBjYXVzaW5n IHRoZSBzZXJ2ZXIgdG8gY3Jhc2guCisKKyAgICAgICAgICAgICAgICAgICBodHRwczovL3d3dy5z YW1iYS5vcmcvc2FtYmEvc2VjdXJpdHkvQ1ZFLTIwMjYtNjk0OS5odG1sCisKKworbyBDVkUtMjAy Ni01ODIxNjogIEFuIGF1dGhlbnRpY2F0ZWQgdXNlciBjb3VsZCBwb3NzaWJseSBjcmFzaCBhIEtE QyBwcm9jZXNzCisKKyAgICAgICAgICAgICAgICAgICBBIGtwYXNzd2QgcGFja2V0IHRoYXQgY29u dGFpbnMgbWFsZm9ybWVkIEFTTi4xIG1pZ2h0IGNhdXNlCisgICAgICAgICAgICAgICAgICAgdGhl IHNlcnZlciB0byBhY2Nlc3MgNiBieXRlcyBvZiB1bmFsbG9jYXRlZCBtZW1vcnkuIFRoaXMKKyAg ICAgICAgICAgICAgICAgICBtZW1vcnkgaXMgbm90IGV4cG9zZWQgdG8gdGhlIHVzZXIsIGJ1dCBp biBzb21lCisgICAgICAgICAgICAgICAgICAgY2lyY3Vtc3RhbmNlcyB0aGUgc2VydmVyIGNvdWxk IGNyYXNoLgorCisgICAgICAgICAgICAgICAgICAgaHR0cHM6Ly93d3cuc2FtYmEub3JnL3NhbWJh L3NlY3VyaXR5L0NWRS0yMDI2LTU4MjE2Lmh0bWwKKworCitvIENWRS0yMDI2LTU4MjE4OiAgRE5T IHNpZ25pbmcgRG9TIHZpYSBUS0VZIG5hbWUgY2FjaGUgZXhoYXVzdGlvbgorCisgICAgICAgICAg ICAgICAgICAgQW4gdW5hdXRoZW50aWNhdGVkIHVzZXIgY2FuIHJlcGVhdGVkbHkgcmVnaXN0ZXIg bmFtZXMgVEtFWQorICAgICAgICAgICAgICAgICAgIG5hbWVzLCB3aGljaCBmbG9vZHMgYSBjYWNo ZSBjYXVzaW5nIGxlZ2l0aW1hdGUgVEtFWXMgdG8gYmUKKyAgICAgICAgICAgICAgICAgICBleHB1 bmdlZC4gVGhpcyBjYW4gcHJhY3RpY2FsbHkgYmxvY2sgdGhlIHVzZSBETlMgVFNJRworICAgICAg ICAgICAgICAgICAgIHNpZ25pbmcuCisKKyAgICAgICAgICAgICAgICAgICBodHRwczovL3d3dy5z YW1iYS5vcmcvc2FtYmEvc2VjdXJpdHkvQ1ZFLTIwMjYtNTgyMTguaHRtbAorCisKK28gQ1ZFLTIw MjYtNTgyMjE6ICBTYW1iYSBBRCBhdXRoZW50aWNhdGVkIExEQVAgYWNjZXNzIGRvbWFpbiB0YWtl b3ZlcgorCisgICAgICAgICAgICAgICAgICAgU2FtYmEgQUQgbG93LXByaXZpbGVnZSBhdXRoZW50 aWNhdGVkIExEQVAgYWNjZXNzIGFsbG93cworICAgICAgICAgICAgICAgICAgIG1vZGlmaWNhdGlv bnMgdG8gaW50ZXJuYWwgTERCIHNwZWNpYWwgRE5zLCB3aGljaCBwZXJtaXRzIGEKKyAgICAgICAg ICAgICAgICAgICBkb21haW4gdGFrZW92ZXIuCisKKyAgICAgICAgICAgICAgICAgICBodHRwczov L3d3dy5zYW1iYS5vcmcvc2FtYmEvc2VjdXJpdHkvQ1ZFLTIwMjYtNTgyMjEuaHRtbAorCisKK28g Q1ZFLTIwMjYtNTgyMjI6ICBTYW1iYSBBRCBMREFQIENvbXBhcmUgZmlsdGVyIGluamVjdGlvbiBh bmQgdHJ1c3RlZC1yZXF1ZXN0CisgICAgICAgICAgICAgICAgICAgY29uZnVzaW9uIGRpc2Nsb3Nl IHByb3RlY3RlZCBhdHRyaWJ1dGVzCisKKyAgICAgICAgICAgICAgICAgICBBbiBvcmRpbmFyeSBh dXRoZW50aWNhdGVkIGRvbWFpbiB1c2VyIGNhbiBieXBhc3MgYWNjZXNzCisgICAgICAgICAgICAg ICAgICAgY2hlY2tzIGFuZCBxdWVyeSBjb25maWRlbnRpYWwgQWN0aXZlIERpcmVjdG9yeSBhdHRy aWJ1dGVzCisgICAgICAgICAgICAgICAgICAgKHN1Y2ggYXMgS0RTIHJvb3Qga2V5cykgdmlhIExE QVAgQ29tcGFyZSByZXF1ZXN0cy4gRHVlIHRvIGEKKyAgICAgICAgICAgICAgICAgICBmaWx0ZXIg aW5qZWN0aW9uIGZsYXcgYW5kIHRydXN0ZWQgZXhlY3V0aW9uIGNvbnRleHQsIHRoZQorICAgICAg ICAgICAgICAgICAgIExEQVAgQ29tcGFyZSBvcGVyYXRpb24gY2FuIGJlIHR1cm5lZCBpbnRvIGEK KyAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQtYXR0cmlidXRlIGRpc2Nsb3N1cmUgb3JhY2xl LgorCisgICAgICAgICAgICAgICAgICAgaHR0cHM6Ly93d3cuc2FtYmEub3JnL3NhbWJhL3NlY3Vy aXR5L0NWRS0yMDI2LTU4MjIyLmh0bWwKKworCitvIENWRS0yMDI2LTU4MjI0ICAgVGhlIENUREIg cHJvdG9jb2wgaGFzIGJvdW5kcyBjaGVja2luZyBpc3N1ZXMKKworICAgICAgICAgICAgICAgICAg IENUREIgZmFpbHMgdG8gZG8gaW50ZWdyaXR5IGNoZWNraW5nIG9mIHJlY2VpdmVkIHBhY2tldHMu CisgICAgICAgICAgICAgICAgICAgVGhpcyBpbmNsdWRlcyBmYWlsdXJlIHRvIGNoZWNrIGZpZWxk IGxlbmd0aHMgYWdhaW5zdCBwYWNrZXQKKyAgICAgICAgICAgICAgICAgICBsZW5ndGhzIHdoZW4g dW5tYXJzaGFsbGluZyBwYWNrZXRzLgorCisgICAgICAgICAgICAgICAgICAgaHR0cHM6Ly93d3cu c2FtYmEub3JnL3NhbWJhL3NlY3VyaXR5L0NWRS0yMDI2LTU4MjI0Lmh0bWwKKworCitDaGFuZ2Vz IHNpbmNlIDQuMjIuMTAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitvICBEb3VnbGFzIEJhZ25h bGwgPGRvdWdsYXMuYmFnbmFsbEBjYXRhbHlzdC5uZXQubno+CisgICAqIEJVRyAxNjA4NzogQ1ZF LTIwMjYtNTgyMTYKKworbyAgVm9sa2VyIExlbmRlY2tlIDx2bEBzYW1iYS5vcmc+CisgICAqIEJV RyAxNjExNTogQ1ZFLTIwMjYtNTgyMTgKKworbyAgU3RlZmFuIE1ldHptYWNoZXIgPG1ldHplQHNh bWJhLm9yZz4KKyAgICogQlVHIDE2MDgzOiBDVkUtMjAyNi02OTQ5CisgICAqIEJVRyAxNjE0Nzog Q1ZFLTIwMjYtNTgyMjEKKyAgICogQlVHIDE2MTQ4OiBDVkUtMjAyNi01ODIyMgorCitvICBNYXJ0 aW4gU2Nod2Vua2UgPG1zY2h3ZW5rZUBkZG4uY29tPgorICAgKiBCVUcgMTYwODU6IENWRS0yMDI2 LTU4MjI0CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworUmVwb3J0 aW5nIGJ1Z3MgJiBEZXZlbG9wbWVudCBEaXNjdXNzaW9uCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMKKworUGxlYXNlIGRpc2N1c3MgdGhpcyByZWxlYXNlIG9uIHRoZSBz YW1iYS10ZWNobmljYWwgbWFpbGluZyBsaXN0IG9yIGJ5Citqb2luaW5nIHRoZSAjc2FtYmEtdGVj aG5pY2FsOm1hdHJpeC5vcmcgbWF0cml4IHJvb20sIG9yCisjc2FtYmEtdGVjaG5pY2FsIElSQyBj aGFubmVsIG9uIGlyYy5saWJlcmEuY2hhdC4KKworSWYgeW91IGRvIHJlcG9ydCBwcm9ibGVtcyB0 aGVuIHBsZWFzZSB0cnkgdG8gc2VuZCBoaWdoIHF1YWxpdHkKK2ZlZWRiYWNrLiBJZiB5b3UgZG9u J3QgcHJvdmlkZSB2aXRhbCBpbmZvcm1hdGlvbiB0byBoZWxwIHVzIHRyYWNrIGRvd24KK3RoZSBw cm9ibGVtIHRoZW4geW91IHdpbGwgcHJvYmFibHkgYmUgaWdub3JlZC4gIEFsbCBidWcgcmVwb3J0 cyBzaG91bGQKK2JlIGZpbGVkIHVuZGVyIHRoZSBTYW1iYSA0LjEgYW5kIG5ld2VyIHByb2R1Y3Qg aW4gdGhlIHByb2plY3QncyBCdWd6aWxsYQorZGF0YWJhc2UgKGh0dHBzOi8vYnVnemlsbGEuc2Ft YmEub3JnLykuCisKKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorPT0gT3VyIENvZGUsIE91ciBCdWdzLCBPdXIg UmVzcG9uc2liaWxpdHkuCis9PSBUaGUgU2FtYmEgVGVhbQorPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisKK1Jl bGVhc2Ugbm90ZXMgZm9yIG9sZGVyIHJlbGVhc2VzIGZvbGxvdzoKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CiAgICAgICAgICAgICAgICAgICAgUmVsZWFzZSBOb3RlcyBmb3Ig U2FtYmEgNC4yMi4xMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1heSAyNiwgMjAyNgog ICAgICAgICAgICAgICAgICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQEAgLTEy MCw4ICsyMjgsNyBAQAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCiAKLVJlbGVhc2Ugbm90ZXMgZm9yIG9sZGVy IHJlbGVhc2VzIGZvbGxvdzoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAgICAgICAgICAgICA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KICAgICAgICAgICAgICAgICAgICBSZWxlYXNlIE5vdGVzIGZvciBTYW1iYSA0 LjIyLjkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFwcmlsIDA5LCAyMDI2CmRpZmYgLU5y dSBzYW1iYS00LjIyLjEwK2Rmc2cvY3RkYi9jb21tb24vY3RkYl9pby5jIHNhbWJhLTQuMjIuMTEr ZGZzZy9jdGRiL2NvbW1vbi9jdGRiX2lvLmMKLS0tIHNhbWJhLTQuMjIuMTArZGZzZy9jdGRiL2Nv bW1vbi9jdGRiX2lvLmMJMjAyNS0wMS0zMCAxNjo1Nzo0My41ODczMTU4MDAgKzAzMDAKKysrIHNh bWJhLTQuMjIuMTErZGZzZy9jdGRiL2NvbW1vbi9jdGRiX2lvLmMJMjAyNi0wNy0yMSAxODozNzow NC4xNzUyNzU4MDAgKzAzMDAKQEAgLTExNSw3ICsxMTUsMjUgQEAKIAkJcmV0dXJuOwogCX0KIAot CS8qIEV4dHJhY3QgY29tcGxldGUgcGFja2V0ICovCisJLyoKKwkgKiBFeHRyYWN0IGNvbXBsZXRl IHBhY2tldAorCSAqCisJICogWWVzLCB0aGlzIGFsbG93cyBhbiBvdXQtb2YtbWVtb3J5IGRlbmlh bCBvZiBzZXJ2aWNlIChEb1MpCisJICogYXR0YWNrIGlmIGEgbnVtYmVyIG9mIHBhY2tldHMgYXJl IHJlY2VpdmVkIHdpdGgKKwkgKiB1bnJlYXNvbmFibGUgcGFja2V0IHNpemVzLCBub3RpbmcgdGhh dCB0aGUgbWF4aW11bSBwYWNrZXQKKwkgKiBzaXplIGlzIH40R0IuICBUaGUgQ1REQiBwcm90b2Nv bCB3YXMgbm90IGRlc2lnbmVkIHdpdGggYQorCSAqIG1heGltdW0gcGFja2V0IHNpemUgaW4gbWlu ZCwgc28gQ1REQiBtYXkgc2VuZCB2ZXJ5IGxhcmdlCisJICogdmFsaWQgcGFja2V0cy4gIFRoaXMg bWVhbnMgdGhhdCBpbXBvc2luZyBhbiBhcmJpdHJhcnkgbGltaXQKKwkgKiBvbiBpbmNvbWluZyBw YWNrZXRzIGlzIG5vdCByZWFzb25hYmxlLiAgQXJndW1lbnRzIHRoYXQKKwkgKiBoZWFkZXIgZmll bGRzLCBzdWNoIGFzIG1hZ2ljIGFuZC9vciB2ZXJzaW9uLCBzaG91bGQgYmUKKwkgKiB2YWxpZGF0 ZWQgYmVmb3JlIGFsbG9jYXRpbmcgYSBwYWNrZXQgYnVmZmVyIGFyZSBzcHVyaW91cworCSAqIGZy b20gYSBzZWN1cml0eSBwZXJzcGVjdGl2ZSBiZWNhdXNlIGFuIGF0dGFja2VyIGF0dGVtcHRpbmcK KwkgKiBEb1MgY2FuIHNlbmQgcGFja2V0cyB3aXRoIHZhbGlkIGhlYWRlcnMuICBUaGUgcHJpdmF0 ZQorCSAqIG5ldHdvcmsgYW5kIGN0ZGJkIHNvY2tldCBzaG91bGQgYmUgc2VjdXJlZCBhZ2FpbnN0 CisJICogdW50cnVzdGVkIGFjY2Vzcywgc28gcmVwb3J0cyB0aGF0IHRoaXMgcG9zc2libGUgRG9T IHZlY3RvcgorCSAqIHJlcHJlc2VudHMgYSBzZWN1cml0eSBpc3N1ZSB3aWxsIGJlIGlnbm9yZWQu ICBTZWUgdGhlCisJICogIlByaXZhdGUgYWRkcmVzc2VzIiBzZWN0aW9uIGluIGN0ZGIoNykgZm9y IG1vcmUgZGV0YWlscy4KKwkgKi8KIAlkYXRhID0gdGFsbG9jX21lbWR1cChxdWV1ZS0+ZGF0YV9w b29sLAogCQkJICAgICBxdWV1ZS0+YnVmZmVyLmRhdGEgKyBxdWV1ZS0+YnVmZmVyLm9mZnNldCwK IAkJCSAgICAgcGt0X3NpemUpOwpkaWZmIC1OcnUgc2FtYmEtNC4yMi4xMCtkZnNnL2N0ZGIvY29t bW9uL3BrdF9yZWFkLmMgc2FtYmEtNC4yMi4xMStkZnNnL2N0ZGIvY29tbW9uL3BrdF9yZWFkLmMK LS0tIHNhbWJhLTQuMjIuMTArZGZzZy9jdGRiL2NvbW1vbi9wa3RfcmVhZC5jCTIwMjUtMDEtMzAg MTY6NTc6NDMuNTg4MzE1NzAwICswMzAwCisrKyBzYW1iYS00LjIyLjExK2Rmc2cvY3RkYi9jb21t b24vcGt0X3JlYWQuYwkyMDI2LTA3LTIxIDE4OjM3OjA0LjE3NTI3NTgwMCArMDMwMApAQCAtMTQ2 LDYgKzE0NiwyNSBAQAogCQlyZXR1cm47CiAJfQogCisJLyoKKwkgKiBBbGxvY2F0ZSBidWZmZXIg Zm9yIGVudGlyZSBwYWNrZXQKKwkgKgorCSAqIFllcywgdGhpcyBhbGxvd3MgYW4gb3V0LW9mLW1l bW9yeSBkZW5pYWwgb2Ygc2VydmljZSAoRG9TKQorCSAqIGF0dGFjayBpZiBhIG51bWJlciBvZiBw YWNrZXRzIGFyZSByZWNlaXZlZCB3aXRoCisJICogdW5yZWFzb25hYmxlIHBhY2tldCBzaXplcywg bm90aW5nIHRoYXQgdGhlIG1heGltdW0gcGFja2V0CisJICogc2l6ZSBpcyB+NEdCLiAgVGhlIENU REIgcHJvdG9jb2wgd2FzIG5vdCBkZXNpZ25lZCB3aXRoIGEKKwkgKiBtYXhpbXVtIHBhY2tldCBz aXplIGluIG1pbmQsIHNvIENUREIgbWF5IHNlbmQgdmVyeSBsYXJnZQorCSAqIHZhbGlkIHBhY2tl dHMuICBUaGlzIG1lYW5zIHRoYXQgaW1wb3NpbmcgYW4gYXJiaXRyYXJ5IGxpbWl0CisJICogb24g aW5jb21pbmcgcGFja2V0cyBpcyBub3QgcmVhc29uYWJsZS4gIEFyZ3VtZW50cyB0aGF0CisJICog aGVhZGVyIGZpZWxkcywgc3VjaCBhcyBtYWdpYyBhbmQvb3IgdmVyc2lvbiwgc2hvdWxkIGJlCisJ ICogdmFsaWRhdGVkIGJlZm9yZSBhbGxvY2F0aW5nIGEgcGFja2V0IGJ1ZmZlciBhcmUgc3B1cmlv dXMKKwkgKiBmcm9tIGEgc2VjdXJpdHkgcGVyc3BlY3RpdmUgYmVjYXVzZSBhbiBhdHRhY2tlciBh dHRlbXB0aW5nCisJICogRG9TIGNhbiBzZW5kIHBhY2tldHMgd2l0aCB2YWxpZCBoZWFkZXJzLiAg VGhlIHByaXZhdGUKKwkgKiBuZXR3b3JrIGFuZCBjdGRiZCBzb2NrZXQgc2hvdWxkIGJlIHNlY3Vy ZWQgYWdhaW5zdAorCSAqIHVudHJ1c3RlZCBhY2Nlc3MsIHNvIHJlcG9ydHMgdGhhdCB0aGlzIHBv c3NpYmxlIERvUyB2ZWN0b3IKKwkgKiByZXByZXNlbnRzIGEgc2VjdXJpdHkgaXNzdWUgd2lsbCBi ZSBpZ25vcmVkLiAgU2VlIHRoZQorCSAqICJQcml2YXRlIGFkZHJlc3NlcyIgc2VjdGlvbiBpbiBj dGRiKDcpIGZvciBtb3JlIGRldGFpbHMuCisJICovCiAJaWYgKHN0YXRlLT51c2VfZml4ZWQpIHsK IAkJLyogc3dpdGNoIHRvIGR5bmFtaWMgYnVmZmVyICovCiAJCXRtcCA9IHRhbGxvY19hcnJheShz dGF0ZSwgdWludDhfdCwgc3RhdGUtPnRvdGFsICsgbW9yZSk7CmRpZmYgLU5ydSBzYW1iYS00LjIy LjEwK2Rmc2cvY3RkYi9jb21tb24vc29ja19kYWVtb24uYyBzYW1iYS00LjIyLjExK2Rmc2cvY3Rk Yi9jb21tb24vc29ja19kYWVtb24uYwotLS0gc2FtYmEtNC4yMi4xMCtkZnNnL2N0ZGIvY29tbW9u L3NvY2tfZGFlbW9uLmMJMjAyNS0wMS0zMCAxNjo1Nzo0My41OTAzMTU4MDAgKzAzMDAKKysrIHNh bWJhLTQuMjIuMTErZGZzZy9jdGRiL2NvbW1vbi9zb2NrX2RhZW1vbi5jCTIwMjYtMDctMjEgMTg6 Mzc6MDQuMTc5Mjc2MDAwICswMzAwCkBAIC0yMDQsNiArMjA0LDggQEAKIHN0YXRpYyBpbnQgc29j a2V0X3NldHVwKGNvbnN0IGNoYXIgKnNvY2twYXRoLCBib29sIHJlbW92ZV9iZWZvcmVfdXNlKQog ewogCXN0cnVjdCBzb2NrYWRkcl91biBhZGRyOworCWNvbnN0IGNoYXIgKnQ7CisJYm9vbCB0ZXN0 X21vZGVfZW5hYmxlZCA9IGZhbHNlOwogCXNpemVfdCBsZW47CiAJaW50IHJldCwgZmQ7CiAKQEAg LTIzOSw2ICsyNDEsMzAgQEAKIAkJY2xvc2UoZmQpOwogCQlyZXR1cm4gLTE7CiAJfQorCisJdCA9 IGdldGVudigiQ1REQl9URVNUX01PREUiKTsKKwlpZiAodCAhPSBOVUxMKSB7CisJCXRlc3RfbW9k ZV9lbmFibGVkID0gdHJ1ZTsKKwl9CisKKwlpZiAoIXRlc3RfbW9kZV9lbmFibGVkKSB7CisJCS8q IEJlaGF2aW91ciBvZiBmY2hvd24oMikgaXMgdW5kZWZpbmVkIG9uIHNvY2tldHMgKi8KKwkJcmV0 ID0gY2hvd24oc29ja3BhdGgsIGdldGV1aWQoKSwgZ2V0ZWdpZCgpKTsKKwkJaWYgKHJldCAhPSAw KSB7CisJCQlEX0VSUigiVW5hYmxlIHRvIHNlY3VyZSAoY2hvd24pIHNvY2tldCAnJXMnXG4iLAor CQkJICAgICAgc29ja3BhdGgpOworCQkJY2xvc2UoZmQpOworCQkJcmV0dXJuIC0xOworCQl9CisJ fQorCisJLyogQmVoYXZpb3VyIG9mIGZjaG1vZCgyKSBpcyB1bmRlZmluZWQgb24gc29ja2V0cyAq LworCXJldCA9IGNobW9kKHNvY2twYXRoLCAwNzAwKTsKKwlpZiAocmV0ICE9IDApIHsKKwkJRF9F UlIoIlVuYWJsZSB0byBzZWN1cmUgKGNobW9kKSBzb2NrZXQgJyVzJ1xuIiwgc29ja3BhdGgpOwor CQljbG9zZShmZCk7CisJCXJldHVybiAtMTsKKwl9CiAKIAlyZXQgPSBsaXN0ZW4oZmQsIDEwKTsK IAlpZiAocmV0ICE9IDApIHsKZGlmZiAtTnJ1IHNhbWJhLTQuMjIuMTArZGZzZy9jdGRiL2RvYy9j dGRiLjcueG1sIHNhbWJhLTQuMjIuMTErZGZzZy9jdGRiL2RvYy9jdGRiLjcueG1sCi0tLSBzYW1i YS00LjIyLjEwK2Rmc2cvY3RkYi9kb2MvY3RkYi43LnhtbAkyMDI1LTAyLTEyIDE2OjI0OjIwLjM0 MzE0MzUwMCArMDMwMAorKysgc2FtYmEtNC4yMi4xMStkZnNnL2N0ZGIvZG9jL2N0ZGIuNy54bWwJ MjAyNi0wNy0yMSAxODozNzowNC4xNzkyNzYwMDAgKzAzMDAKQEAgLTI0MiwxNCArMjQyLDI1IEBA CiAJc2VydmljZXMgcHJvdmlkZWQgYnkgdGhlIGNsdXN0ZXIuCiAgICAgICA8L3BhcmE+CiAgICAg ICA8cGFyYT4KLSAgICAgICAgSXQgaXMgc3Ryb25nbHkgcmVjb21tZW5kZWQgdGhhdCB0aGUgcHJp dmF0ZSBhZGRyZXNzZXMgYXJlCi0gICAgICAgIGNvbmZpZ3VyZWQgb24gYSBwcml2YXRlIG5ldHdv cmsgdGhhdCBpcyBzZXBhcmF0ZSBmcm9tIGNsaWVudAotICAgICAgICBuZXR3b3Jrcy4gIFRoaXMg aXMgYmVjYXVzZSB0aGUgQ1REQiBwcm90b2NvbCBpcyBib3RoCi0gICAgICAgIHVuYXV0aGVudGlj YXRlZCBhbmQgdW5lbmNyeXB0ZWQuICBJZiBjbGllbnRzIHNoYXJlIHRoZSBwcml2YXRlCi0gICAg ICAgIG5ldHdvcmsgdGhlbiBzdGVwcyBuZWVkIHRvIGJlIHRha2VuIHRvIHN0b3AgaW5qZWN0aW9u IG9mCi0gICAgICAgIHBhY2tldHMgdG8gcmVsZXZhbnQgcG9ydHMgb24gdGhlIHByaXZhdGUgYWRk cmVzc2VzLiAgSXQgaXMKLSAgICAgICAgYWxzbyBsaWtlbHkgdGhhdCBDVERCIHByb3RvY29sIHRy YWZmaWMgYmV0d2VlbiBub2RlcyBjb3VsZAotICAgICAgICBsZWFrIHNlbnNpdGl2ZSBpbmZvcm1h dGlvbiBpZiBpdCBjYW4gYmUgaW50ZXJjZXB0ZWQuCisJSXQgaXMgc3Ryb25nbHkgcmVjb21tZW5k ZWQgdGhhdCB0aGUgcHJpdmF0ZSBhZGRyZXNzZXMgYXJlCisJY29uZmlndXJlZCBvbiBhIHByaXZh dGUgbmV0d29yayB0aGF0IGlzIHNlcGFyYXRlIGZyb20gY2xpZW50CisJbmV0d29ya3MuICBUaGlz IGlzIGJlY2F1c2UgPGVtcGhhc2lzPnRoZSBDVERCIHByb3RvY29sIGlzIGJvdGgKKwl1bmF1dGhl bnRpY2F0ZWQgYW5kIHVuZW5jcnlwdGVkPC9lbXBoYXNpcz4uICBJZiBjbGllbnRzIHNoYXJlCisJ dGhlIHByaXZhdGUgbmV0d29yayB0aGVuIHN0ZXBzIG5lZWQgdG8gYmUgdGFrZW4gdG8gc3RvcAor CWluamVjdGlvbiBvZiBwYWNrZXRzIHRvIHJlbGV2YW50IHBvcnRzIG9uIHRoZSBwcml2YXRlCisJ YWRkcmVzc2VzLiAgSXQgaXMgYWxzbyBsaWtlbHkgdGhhdCBDVERCIHByb3RvY29sIHRyYWZmaWMK KwliZXR3ZWVuIG5vZGVzIGNvdWxkIGxlYWsgc2Vuc2l0aXZlIGluZm9ybWF0aW9uIGlmIGl0IGNh biBiZQorCWludGVyY2VwdGVkIG9yIG1hbmlwdWxhdGVkLgorICAgICAgPC9wYXJhPgorICAgICAg PHBhcmE+CisJSW4gc3VtbWFyeSwgdGhlIHByaXZhdGUgbmV0d29yayBzaG91bGQgbm90IGJlIGFj Y2Vzc2libGUgYnkKKwl1bnRydXN0ZWQgc291cmNlcy4gIFdlIGNhbid0IHNheSAibXVzdCBub3Qi IGJlY2F1c2UgdGhpcyBjYW4ndAorCWJlIGVuZm9yY2VkIGJ5IENUREIsIHNvIHdlIGNhbiBvbmx5 IG1ha2UgYSBzdHJvbmcKKwlyZWNvbW1lbmRhdGlvbi4gSG93ZXZlciwgZm9yIHRoaXMgcmVhc29u LCBmdXR1cmUgYnVncyBpbiB0aGUKKwlDVERCIHByb3RvY29sIHVzZWQgb3ZlciB0aGUgcHJpdmF0 ZSBuZXR3b3JrIHdpbGwgYmUgZml4ZWQgYXMKKwlyZWd1bGFyIGJ1Z3Mgd2l0aG91dCBmb2xsb3dp bmcgdGhlIFNhbWJhIHNlY3VyaXR5IHByb2Nlc3MuCisJVGhlIHNhbWUgaXMgdHJ1ZSBvZiBsb2Nh bCBDVERCIHByb3RvY29scyB1c2VkIGZvciBVbml4IGRvbWFpbgorCXNvY2tldCBhbmQgb3RoZXIg Y29tbXVuaWNhdGlvbi4KICAgICAgIDwvcGFyYT4KIAogICAgICAgPHBhcmE+CmRpZmYgLU5ydSBz YW1iYS00LjIyLjEwK2Rmc2cvY3RkYi9wcm90b2NvbC9wcm90b2NvbF9iYXNpYy5jIHNhbWJhLTQu MjIuMTErZGZzZy9jdGRiL3Byb3RvY29sL3Byb3RvY29sX2Jhc2ljLmMKLS0tIHNhbWJhLTQuMjIu MTArZGZzZy9jdGRiL3Byb3RvY29sL3Byb3RvY29sX2Jhc2ljLmMJMjAyNS0wMS0zMCAxNjo1Nzo0 My42MDMzMTU4MDAgKzAzMDAKKysrIHNhbWJhLTQuMjIuMTErZGZzZy9jdGRiL3Byb3RvY29sL3By b3RvY29sX2Jhc2ljLmMJMjAyNi0wNy0yMSAxODozNzowNC4xNzkyNzYwMDAgKzAzMDAKQEAgLTI0 Nyw3ICsyNDcsOCBAQAogaW50IGN0ZGJfc3RyaW5nX3B1bGwodWludDhfdCAqYnVmLCBzaXplX3Qg YnVmbGVuLCBUQUxMT0NfQ1RYICptZW1fY3R4LAogCQkgICAgIGNvbnN0IGNoYXIgKipvdXQsIHNp emVfdCAqbnB1bGwpCiB7Ci0JY29uc3QgY2hhciAqc3RyOworCWNvbnN0IGNoYXIgKnN0ciA9IE5V TEw7CisJc2l6ZV90IGxlbiA9IDA7CiAKIAlpZiAoYnVmbGVuID4gVUlOVDMyX01BWCkgewogCQly ZXR1cm4gRU1TR1NJWkU7CkBAIC0yNjUsNyArMjY2LDE0IEBACiAJfQogCiAJKm91dCA9IHN0cjsK LQkqbnB1bGwgPSBjdGRiX3N0cmluZ19sZW4oJnN0cik7CisJLyoKKwkgKiBBdm9pZCBjbGFpbWlu ZyB0byBoYXZlIGNvbnN1bWVkIG1vcmUgdGhhbiBidWZsZW4uCisJICogY3RkYl9zdHJpbmdfbGVu KCkgcmV0dXJucyBidWZsZW4gKyAxIGlmIHRoZXJlIGlzIG5vCisJICogTlVMLXRlcm1pbmF0b3Ig d2l0aGluIGJ1Zmxlbiwgc28gbm8gTlVMIHdhcyBhY3R1YWxseQorCSAqIGNvbnN1bWVkIChzbyBu byArMSBuZWVkZWQpLgorCSAqLworCWxlbiA9IGN0ZGJfc3RyaW5nX2xlbigmc3RyKTsKKwkqbnB1 bGwgPSBNSU4oYnVmbGVuLCBsZW4pOwogCXJldHVybiAwOwogfQogCkBAIC0zMTEsNyArMzE5LDgg QEAKIAlpZiAocmV0ICE9IDApIHsKIAkJcmV0dXJuIHJldDsKIAl9Ci0Jb2Zmc2V0ICs9IG5wOwor CS8qIEFsd2F5cyBjb25zdW1lIHRoZSBzcGVjaWZpZWQgbnVtYmVyIGJ5dGVzICovCisJb2Zmc2V0 ICs9IHUzMjsKIAogCSpucHVsbCA9IG9mZnNldDsKIAlyZXR1cm4gMDsKZGlmZiAtTnJ1IHNhbWJh LTQuMjIuMTArZGZzZy9jdGRiL3Byb3RvY29sL3Byb3RvY29sX3R5cGVzLmMgc2FtYmEtNC4yMi4x MStkZnNnL2N0ZGIvcHJvdG9jb2wvcHJvdG9jb2xfdHlwZXMuYwotLS0gc2FtYmEtNC4yMi4xMCtk ZnNnL2N0ZGIvcHJvdG9jb2wvcHJvdG9jb2xfdHlwZXMuYwkyMDI1LTAxLTMwIDE2OjU3OjQzLjYw NTMxNjAwMCArMDMwMAorKysgc2FtYmEtNC4yMi4xMStkZnNnL2N0ZGIvcHJvdG9jb2wvcHJvdG9j b2xfdHlwZXMuYwkyMDI2LTA3LTIxIDE4OjM3OjA0LjE3OTI3NjAwMCArMDMwMApAQCAtODM4LDYg KzgzOCw3IEBACiAJCQkgICAgICBzaXplX3QgKm5wdWxsKQogewogCXN0cnVjdCBjdGRiX3N0YXRp c3RpY3NfbGlzdCAqdmFsOworCXN0cnVjdCBjdGRiX3N0YXRpc3RpY3MgZHVtbXkgPSB7fTsKIAlz aXplX3Qgb2Zmc2V0ID0gMCwgbnA7CiAJaW50IHJldCwgaTsKIApAQCAtODYzLDYgKzg2NCwxMSBA QAogCQlnb3RvIGRvbmU7CiAJfQogCisJaWYgKCh1aW50NjRfdCl2YWwtPm51bSAqIGN0ZGJfc3Rh dGlzdGljc19sZW4oJmR1bW15KSA+IGJ1ZmxlbiAtIG9mZnNldCkgeworCQlyZXQgPSBFTVNHU0la RTsKKwkJZ290byBmYWlsOworCX0KKwogCXZhbC0+c3RhdHMgPSB0YWxsb2NfYXJyYXkodmFsLCBz dHJ1Y3QgY3RkYl9zdGF0aXN0aWNzLCB2YWwtPm51bSk7CiAJaWYgKHZhbC0+c3RhdHMgPT0gTlVM TCkgewogCQlyZXQgPSBFTk9NRU07CkBAIC05MjUsNiArOTMxLDcgQEAKIAlzdHJ1Y3QgY3RkYl92 bm5fbWFwICp2YWw7CiAJc2l6ZV90IG9mZnNldCA9IDAsIG5wOwogCXVpbnQzMl90IGk7CisJdWlu dDMyX3QgZHVtbXkgPSAwOwogCWludCByZXQ7CiAKIAl2YWwgPSB0YWxsb2MobWVtX2N0eCwgc3Ry dWN0IGN0ZGJfdm5uX21hcCk7CkBAIC05NTAsNiArOTU3LDExIEBACiAJCWdvdG8gZG9uZTsKIAl9 CiAKKwlpZiAoKHVpbnQ2NF90KXZhbC0+c2l6ZSAqIGN0ZGJfdWludDMyX2xlbigmZHVtbXkpID4g YnVmbGVuIC0gb2Zmc2V0KSB7CisJCXJldCA9IEVNU0dTSVpFOworCQlnb3RvIGZhaWw7CisJfQor CiAJdmFsLT5tYXAgPSB0YWxsb2NfYXJyYXkodmFsLCB1aW50MzJfdCwgdmFsLT5zaXplKTsKIAlp ZiAodmFsLT5tYXAgPT0gTlVMTCkgewogCQlyZXQgPSBFTk9NRU07CkBAIC0xMDgyLDYgKzEwOTQs NyBAQAogCQkgICAgICAgc3RydWN0IGN0ZGJfZGJpZF9tYXAgKipvdXQsIHNpemVfdCAqbnB1bGwp CiB7CiAJc3RydWN0IGN0ZGJfZGJpZF9tYXAgKnZhbDsKKwlzdHJ1Y3QgY3RkYl9kYmlkIGR1bW15 ID0ge307CiAJc2l6ZV90IG9mZnNldCA9IDAsIG5wOwogCXVpbnQzMl90IGk7CiAJaW50IHJldDsK QEAgLTExMDIsNiArMTExNSwxMSBAQAogCQlnb3RvIGRvbmU7CiAJfQogCisJaWYgKCh1aW50NjRf dCl2YWwtPm51bSAqIGN0ZGJfZGJpZF9sZW4oJmR1bW15KSA+IGJ1ZmxlbiAtIG9mZnNldCkgewor CQlyZXQgPSBFTVNHU0laRTsKKwkJZ290byBmYWlsOworCX0KKwogCXZhbC0+ZGJzID0gdGFsbG9j X2FycmF5KHZhbCwgc3RydWN0IGN0ZGJfZGJpZCwgdmFsLT5udW0pOwogCWlmICh2YWwtPmRicyA9 PSBOVUxMKSB7CiAJCXJldCA9IEVOT01FTTsKQEAgLTIzNjIsNiArMjM4MCw3IEBACiAJCQkgICAg ICBzdHJ1Y3QgY3RkYl9jb25uZWN0aW9uX2xpc3QgKipvdXQsIHNpemVfdCAqbnB1bGwpCiB7CiAJ c3RydWN0IGN0ZGJfY29ubmVjdGlvbl9saXN0ICp2YWw7CisJc3RydWN0IGN0ZGJfY29ubmVjdGlv biBkdW1teSA9IHt9OwogCXNpemVfdCBvZmZzZXQgPSAwLCBucDsKIAl1aW50MzJfdCBpOwogCWlu dCByZXQ7CkBAIC0yMzgyLDYgKzI0MDEsMTEgQEAKIAkJZ290byBkb25lOwogCX0KIAorCWlmICgo dWludDY0X3QpdmFsLT5udW0gKiBjdGRiX2Nvbm5lY3Rpb25fbGVuKCZkdW1teSkgPiBidWZsZW4g LSBvZmZzZXQpIHsKKwkJcmV0ID0gRU1TR1NJWkU7CisJCWdvdG8gZmFpbDsKKwl9CisKIAl2YWwt PmNvbm4gPSB0YWxsb2NfYXJyYXkodmFsLCBzdHJ1Y3QgY3RkYl9jb25uZWN0aW9uLCB2YWwtPm51 bSk7CiAJaWYgKHZhbC0+Y29ubiA9PSBOVUxMKSB7CiAJCXJldCA9IEVOT01FTTsKQEAgLTMzOTks NiArMzQyMyw3IEBACiAJCQkgICBzdHJ1Y3QgY3RkYl90aWNrbGVfbGlzdCAqKm91dCwgc2l6ZV90 ICpucHVsbCkKIHsKIAlzdHJ1Y3QgY3RkYl90aWNrbGVfbGlzdCAqdmFsOworCXN0cnVjdCBjdGRi X2Nvbm5lY3Rpb24gZHVtbXkgPSB7fTsKIAlzaXplX3Qgb2Zmc2V0ID0gMCwgbnA7CiAJdWludDMy X3QgaTsKIAlpbnQgcmV0OwpAQCAtMzQyNiw2ICszNDUxLDExIEBACiAJCWdvdG8gZG9uZTsKIAl9 CiAKKwlpZiAoKHVpbnQ2NF90KXZhbC0+bnVtICogY3RkYl9jb25uZWN0aW9uX2xlbigmZHVtbXkp ID4gYnVmbGVuIC0gb2Zmc2V0KSB7CisJCXJldCA9IEVNU0dTSVpFOworCQlnb3RvIGZhaWw7CisJ fQorCiAJdmFsLT5jb25uID0gdGFsbG9jX2FycmF5KHZhbCwgc3RydWN0IGN0ZGJfY29ubmVjdGlv biwgdmFsLT5udW0pOwogCWlmICh2YWwtPmNvbm4gPT0gTlVMTCkgewogCQlyZXQgPSBFTk9NRU07 CkBAIC0zNzQ0LDYgKzM3NzQsNyBAQAogCQkJICAgICBzdHJ1Y3QgY3RkYl9wdWJsaWNfaXBfbGlz dCAqKm91dCwgc2l6ZV90ICpucHVsbCkKIHsKIAlzdHJ1Y3QgY3RkYl9wdWJsaWNfaXBfbGlzdCAq dmFsOworCXN0cnVjdCBjdGRiX3B1YmxpY19pcCBkdW1teSA9IHt9OwogCXNpemVfdCBvZmZzZXQg PSAwLCBucDsKIAl1aW50MzJfdCBpOwogCWludCByZXQ7CkBAIC0zNzY0LDYgKzM3OTUsMTEgQEAK IAkJZ290byBkb25lOwogCX0KIAorCWlmICgodWludDY0X3QpdmFsLT5udW0gKiBjdGRiX3B1Ymxp Y19pcF9sZW4oJmR1bW15KSA+IGJ1ZmxlbiAtIG9mZnNldCkgeworCQlyZXQgPSBFTVNHU0laRTsK KwkJZ290byBmYWlsOworCX0KKwogCXZhbC0+aXAgPSB0YWxsb2NfYXJyYXkodmFsLCBzdHJ1Y3Qg Y3RkYl9wdWJsaWNfaXAsIHZhbC0+bnVtKTsKIAlpZiAodmFsLT5pcCA9PSBOVUxMKSB7CiAJCXJl dCA9IEVOT01FTTsKQEAgLTM4OTksNiArMzkzNSw3IEBACiAJCSAgICAgICBzdHJ1Y3QgY3RkYl9u b2RlX21hcCAqKm91dCwgc2l6ZV90ICpucHVsbCkKIHsKIAlzdHJ1Y3QgY3RkYl9ub2RlX21hcCAq dmFsOworCXN0cnVjdCBjdGRiX25vZGVfYW5kX2ZsYWdzIGR1bW15ID0ge307CiAJc2l6ZV90IG9m ZnNldCA9IDAsIG5wOwogCXVpbnQzMl90IGk7CiAJaW50IHJldDsKQEAgLTM5MTksNiArMzk1Niwx MiBAQAogCQlnb3RvIGRvbmU7CiAJfQogCisJaWYgKCh1aW50NjRfdCl2YWwtPm51bSAqIGN0ZGJf bm9kZV9hbmRfZmxhZ3NfbGVuKCZkdW1teSkgPgorCSAgICBidWZsZW4gLSBvZmZzZXQpIHsKKwkJ cmV0ID0gRU1TR1NJWkU7CisJCWdvdG8gZmFpbDsKKwl9CisKIAl2YWwtPm5vZGUgPSB0YWxsb2Nf YXJyYXkodmFsLCBzdHJ1Y3QgY3RkYl9ub2RlX2FuZF9mbGFncywgdmFsLT5udW0pOwogCWlmICh2 YWwtPm5vZGUgPT0gTlVMTCkgewogCQlyZXQgPSBFTk9NRU07CkBAIC00MDk5LDYgKzQxNDIsNyBA QAogCQkJICBzdHJ1Y3QgY3RkYl9zY3JpcHRfbGlzdCAqKm91dCwgc2l6ZV90ICpucHVsbCkKIHsK IAlzdHJ1Y3QgY3RkYl9zY3JpcHRfbGlzdCAqdmFsOworCXN0cnVjdCBjdGRiX3NjcmlwdCBkdW1t eSA9IHt9OwogCXNpemVfdCBvZmZzZXQgPSAwLCBucDsKIAl1aW50MzJfdCBpOwogCWludCByZXQ7 CkBAIC00MTMyLDYgKzQxNzYsMTIgQEAKIAkJZ290byBkb25lOwogCX0KIAorCWlmICgodWludDY0 X3QpdmFsLT5udW1fc2NyaXB0cyAqIGN0ZGJfc2NyaXB0X2xlbigmZHVtbXkpCisJICAgID4gYnVm bGVuIC0gb2Zmc2V0KSB7CisJCXJldCA9IEVNU0dTSVpFOworCQlnb3RvIGZhaWw7CisJfQorCiAJ dmFsLT5zY3JpcHQgPSB0YWxsb2NfYXJyYXkodmFsLCBzdHJ1Y3QgY3RkYl9zY3JpcHQsIHZhbC0+ bnVtX3NjcmlwdHMpOwogCWlmICh2YWwtPnNjcmlwdCA9PSBOVUxMKSB7CiAJCXJldCA9IEVOT01F TTsKQEAgLTQzNzUsNiArNDQyNSw3IEBACiAJCQkgc3RydWN0IGN0ZGJfaWZhY2VfbGlzdCAqKm91 dCwgc2l6ZV90ICpucHVsbCkKIHsKIAlzdHJ1Y3QgY3RkYl9pZmFjZV9saXN0ICp2YWw7CisJc3Ry dWN0IGN0ZGJfaWZhY2UgZHVtbXkgPSB7fTsKIAlzaXplX3Qgb2Zmc2V0ID0gMCwgbnA7CiAJdWlu dDMyX3QgaTsKIAlpbnQgcmV0OwpAQCAtNDM5NSw2ICs0NDQ2LDExIEBACiAJCWdvdG8gZG9uZTsK IAl9CiAKKwlpZiAoKHVpbnQ2NF90KXZhbC0+bnVtICogY3RkYl9pZmFjZV9sZW4oJmR1bW15KSA+ IGJ1ZmxlbiAtIG9mZnNldCkgeworCQlyZXQgPSBFTVNHU0laRTsKKwkJZ290byBmYWlsOworCX0K KwogCXZhbC0+aWZhY2UgPSB0YWxsb2NfYXJyYXkodmFsLCBzdHJ1Y3QgY3RkYl9pZmFjZSwgdmFs LT5udW0pOwogCWlmICh2YWwtPmlmYWNlID09IE5VTEwpIHsKIAkJcmV0ID0gRU5PTUVNOwpAQCAt NTMyMiw2ICs1Mzc4LDEwIEBACiAKIAl2YWwtPm51bSA9IGJ1ZmxlbiAvIGN0ZGJfZ19sb2NrX2xl bigmbG9jayk7CiAKKwkvKgorCSAqIE5vIGFycmF5IGNvdW50IHByZS1jaGVjayBuZWVkZWQgYmVj YXVzZSB2YWwtPm51bSBpcworCSAqIGNhbGN1bGF0ZWQgZnJvbSBidWZsZW4KKwkgKi8KIAl2YWwt PmxvY2sgPSB0YWxsb2NfYXJyYXkodmFsLCBzdHJ1Y3QgY3RkYl9nX2xvY2ssIHZhbC0+bnVtKTsK IAlpZiAodmFsLT5sb2NrID09IE5VTEwpIHsKIAkJcmV0ID0gRU5PTUVNOwpkaWZmIC1OcnUgc2Ft YmEtNC4yMi4xMCtkZnNnL2N0ZGIvc2VydmVyL2N0ZGJfY2FsbC5jIHNhbWJhLTQuMjIuMTErZGZz Zy9jdGRiL3NlcnZlci9jdGRiX2NhbGwuYwotLS0gc2FtYmEtNC4yMi4xMCtkZnNnL2N0ZGIvc2Vy dmVyL2N0ZGJfY2FsbC5jCTIwMjUtMDEtMzAgMTY6NTc6NDMuNjA2MzE1OTAwICswMzAwCisrKyBz YW1iYS00LjIyLjExK2Rmc2cvY3RkYi9zZXJ2ZXIvY3RkYl9jYWxsLmMJMjAyNi0wNy0yMSAxODoz NzowNC4xNzkyNzYwMDAgKzAzMDAKQEAgLTU4Myw2ICs1ODMsOSBAQAogdm9pZCBjdGRiX3JlcXVl c3RfZG1hc3RlcihzdHJ1Y3QgY3RkYl9jb250ZXh0ICpjdGRiLCBzdHJ1Y3QgY3RkYl9yZXFfaGVh ZGVyICpoZHIpCiB7CiAJc3RydWN0IGN0ZGJfcmVxX2RtYXN0ZXJfb2xkICpjID0gKHN0cnVjdCBj dGRiX3JlcV9kbWFzdGVyX29sZCAqKWhkcjsKKwlzaXplX3QgcmVxX2RtYXN0ZXJfaGVhZGVyX2xl biA9IG9mZnNldG9mKHN0cnVjdCBjdGRiX3JlcV9kbWFzdGVyX29sZCwKKwkJCQkJCSBkYXRhKTsK KwlzaXplX3QgYnVmX2xlbiA9IGhkci0+bGVuZ3RoOwogCVREQl9EQVRBIGtleSwgZGF0YSwgZGF0 YTI7CiAJc3RydWN0IGN0ZGJfbHRkYl9oZWFkZXIgaGVhZGVyOwogCXN0cnVjdCBjdGRiX2RiX2Nv bnRleHQgKmN0ZGJfZGI7CkBAIC01OTAsNiArNTkzLDEzIEBACiAJc2l6ZV90IGxlbjsKIAlpbnQg cmV0OwogCisJaWYgKGJ1Zl9sZW4gPCByZXFfZG1hc3Rlcl9oZWFkZXJfbGVuIHx8CisJICAgIGMt PmtleWxlbiA+IGJ1Zl9sZW4gLSByZXFfZG1hc3Rlcl9oZWFkZXJfbGVuIHx8CisJICAgIGMtPmRh dGFsZW4gPiBidWZfbGVuIC0gcmVxX2RtYXN0ZXJfaGVhZGVyX2xlbiAtIGMtPmtleWxlbikgewor CQlEQkdfV0FSTklORygiSW52YWxpZCBwYWNrZXRcbiIpOworCQlyZXR1cm47CisJfQorCiAJa2V5 LmRwdHIgPSBjLT5kYXRhOwogCWtleS5kc2l6ZSA9IGMtPmtleWxlbjsKIAlkYXRhLmRwdHIgPSBj LT5kYXRhICsgYy0+a2V5bGVuOwpAQCAtOTE3LDYgKzkyNyw4IEBACiB2b2lkIGN0ZGJfcmVxdWVz dF9jYWxsKHN0cnVjdCBjdGRiX2NvbnRleHQgKmN0ZGIsIHN0cnVjdCBjdGRiX3JlcV9oZWFkZXIg KmhkcikKIHsKIAlzdHJ1Y3QgY3RkYl9yZXFfY2FsbF9vbGQgKmMgPSAoc3RydWN0IGN0ZGJfcmVx X2NhbGxfb2xkICopaGRyOworCXNpemVfdCByZXFfY2FsbF9oZWFkZXJfbGVuID0gb2Zmc2V0b2Yo c3RydWN0IGN0ZGJfcmVxX2NhbGxfb2xkLCBkYXRhKTsKKwlzaXplX3QgYnVmX2xlbiA9IGhkci0+ bGVuZ3RoOwogCVREQl9EQVRBIGRhdGE7CiAJc3RydWN0IGN0ZGJfcmVwbHlfY2FsbF9vbGQgKnI7 CiAJaW50IHJldCwgbGVuOwpAQCAtOTI1LDYgKzkzNywxMyBAQAogCXN0cnVjdCBjdGRiX2RiX2Nv bnRleHQgKmN0ZGJfZGI7CiAJaW50IHRtcF9jb3VudCwgYnVja2V0OwogCisJaWYgKGJ1Zl9sZW4g PCByZXFfY2FsbF9oZWFkZXJfbGVuIHx8CisJICAgIGMtPmtleWxlbiA+IGJ1Zl9sZW4gLSByZXFf Y2FsbF9oZWFkZXJfbGVuICB8fAorCSAgICBjLT5jYWxsZGF0YWxlbiA+IGJ1Zl9sZW4gLSByZXFf Y2FsbF9oZWFkZXJfbGVuIC0gYy0+a2V5bGVuKSB7CisJCURCR19XQVJOSU5HKCJJbnZhbGlkIHBh Y2tldFxuIik7CisJCXJldHVybjsKKwl9CisKIAlpZiAoY3RkYi0+bWV0aG9kcyA9PSBOVUxMKSB7 CiAJCURFQlVHKERFQlVHX0lORk8sKF9fbG9jYXRpb25fXyAiIEZhaWxlZCBjdGRiX3JlcXVlc3Rf Y2FsbC4gVHJhbnNwb3J0IGlzIERPV05cbiIpKTsKIAkJcmV0dXJuOwpAQCAtMTE5OSw4ICsxMjE4 LDE3IEBACiB2b2lkIGN0ZGJfcmVwbHlfY2FsbChzdHJ1Y3QgY3RkYl9jb250ZXh0ICpjdGRiLCBz dHJ1Y3QgY3RkYl9yZXFfaGVhZGVyICpoZHIpCiB7CiAJc3RydWN0IGN0ZGJfcmVwbHlfY2FsbF9v bGQgKmMgPSAoc3RydWN0IGN0ZGJfcmVwbHlfY2FsbF9vbGQgKiloZHI7CisJc2l6ZV90IHJlcGx5 X2NhbGxfaGVhZGVyX2xlbiA9IG9mZnNldG9mKHN0cnVjdCBjdGRiX3JlcGx5X2NhbGxfb2xkLAor CQkJCQkJZGF0YSk7CisJc2l6ZV90IGJ1Zl9sZW4gPSBoZHItPmxlbmd0aDsKIAlzdHJ1Y3QgY3Rk Yl9jYWxsX3N0YXRlICpzdGF0ZTsKIAorCWlmIChidWZfbGVuIDwgcmVwbHlfY2FsbF9oZWFkZXJf bGVuIHx8CisJICAgIGMtPmRhdGFsZW4gPiBidWZfbGVuIC0gcmVwbHlfY2FsbF9oZWFkZXJfbGVu KSB7CisJCURCR19XQVJOSU5HKCJJbnZhbGlkIHBhY2tldFxuIik7CisJCXJldHVybjsKKwl9CisK IAlzdGF0ZSA9IHJlcWlkX2ZpbmQoY3RkYi0+aWRyLCBoZHItPnJlcWlkLCBzdHJ1Y3QgY3RkYl9j YWxsX3N0YXRlKTsKIAlpZiAoc3RhdGUgPT0gTlVMTCkgewogCQlERUJVRyhERUJVR19FUlIsIChf X2xvY2F0aW9uX18gIiByZXFpZCAldSBub3QgZm91bmRcbiIsIGhkci0+cmVxaWQpKTsKQEAgLTEy OTYsMTIgKzEzMjQsMjIgQEAKIHZvaWQgY3RkYl9yZXBseV9kbWFzdGVyKHN0cnVjdCBjdGRiX2Nv bnRleHQgKmN0ZGIsIHN0cnVjdCBjdGRiX3JlcV9oZWFkZXIgKmhkcikKIHsKIAlzdHJ1Y3QgY3Rk Yl9yZXBseV9kbWFzdGVyX29sZCAqYyA9IChzdHJ1Y3QgY3RkYl9yZXBseV9kbWFzdGVyX29sZCAq KWhkcjsKKwlzaXplX3QgcmVwbHlfZG1hc3Rlcl9oZWFkZXJfbGVuID0gb2Zmc2V0b2Yoc3RydWN0 IGN0ZGJfcmVwbHlfZG1hc3Rlcl9vbGQsCisJCQkJCQkgICBkYXRhKTsKKwlzaXplX3QgYnVmX2xl biA9IGhkci0+bGVuZ3RoOwogCXN0cnVjdCBjdGRiX2RiX2NvbnRleHQgKmN0ZGJfZGI7CiAJVERC X0RBVEEga2V5LCBkYXRhOwogCXVpbnQzMl90IHJlY29yZF9mbGFncyA9IDA7CiAJc2l6ZV90IGxl bjsKIAlpbnQgcmV0OwogCisJaWYgKGJ1Zl9sZW4gPCByZXBseV9kbWFzdGVyX2hlYWRlcl9sZW4g fHwKKwkgICAgYy0+a2V5bGVuID4gYnVmX2xlbiAtIHJlcGx5X2RtYXN0ZXJfaGVhZGVyX2xlbiB8 fAorCSAgICBjLT5kYXRhbGVuID4gYnVmX2xlbiAtIHJlcGx5X2RtYXN0ZXJfaGVhZGVyX2xlbiAt IGMtPmtleWxlbikgeworCQlEQkdfV0FSTklORygiSW52YWxpZCBwYWNrZXRcbiIpOworCQlyZXR1 cm47CisJfQorCiAJY3RkYl9kYiA9IGZpbmRfY3RkYl9kYihjdGRiLCBjLT5kYl9pZCk7CiAJaWYg KGN0ZGJfZGIgPT0gTlVMTCkgewogCQlERUJVRyhERUJVR19FUlIsKCJVbmtub3duIGRiX2lkIDB4 JXggaW4gY3RkYl9yZXBseV9kbWFzdGVyXG4iLCBjLT5kYl9pZCkpOwpkaWZmIC1OcnUgc2FtYmEt NC4yMi4xMCtkZnNnL2N0ZGIvc2VydmVyL2N0ZGJfY2xpZW50LmMgc2FtYmEtNC4yMi4xMStkZnNn L2N0ZGIvc2VydmVyL2N0ZGJfY2xpZW50LmMKLS0tIHNhbWJhLTQuMjIuMTArZGZzZy9jdGRiL3Nl cnZlci9jdGRiX2NsaWVudC5jCTIwMjUtMDEtMzAgMTY6NTc6NDMuNjA3MzE1ODAwICswMzAwCisr KyBzYW1iYS00LjIyLjExK2Rmc2cvY3RkYi9zZXJ2ZXIvY3RkYl9jbGllbnQuYwkyMDI2LTA3LTIx IDE4OjM3OjA0LjE3OTI3NjAwMCArMDMwMApAQCAtMTkzLDggKzE5MywxNyBAQAogCQkJICBzdHJ1 Y3QgY3RkYl9yZXFfaGVhZGVyICpoZHIpCiB7CiAJc3RydWN0IGN0ZGJfcmVxX21lc3NhZ2Vfb2xk ICpjID0gKHN0cnVjdCBjdGRiX3JlcV9tZXNzYWdlX29sZCAqKWhkcjsKKwlzaXplX3QgcmVxX21l c3NhZ2VfaGVhZGVyX2xlbiA9IG9mZnNldG9mKHN0cnVjdCBjdGRiX3JlcV9tZXNzYWdlX29sZCwK KwkJCQkJCSBkYXRhKTsKKwlzaXplX3QgYnVmX2xlbiA9IGhkci0+bGVuZ3RoOwogCVREQl9EQVRB IGRhdGE7CiAKKwlpZiAoYnVmX2xlbiA8IHJlcV9tZXNzYWdlX2hlYWRlcl9sZW4gfHwKKwkgICAg Yy0+ZGF0YWxlbiA+IGJ1Zl9sZW4gLSByZXFfbWVzc2FnZV9oZWFkZXJfbGVuKSB7CisJCURCR19X QVJOSU5HKCJJbnZhbGlkIHBhY2tldFxuIik7CisJCXJldHVybjsKKwl9CisKIAlkYXRhLmRzaXpl ID0gYy0+ZGF0YWxlbjsKIAlkYXRhLmRwdHIgPSB0YWxsb2NfbWVtZHVwKGMsICZjLT5kYXRhWzBd LCBjLT5kYXRhbGVuKTsKIAlpZiAoZGF0YS5kcHRyID09IE5VTEwpIHsKZGlmZiAtTnJ1IHNhbWJh LTQuMjIuMTArZGZzZy9jdGRiL3NlcnZlci9jdGRiX2NvbnRyb2wuYyBzYW1iYS00LjIyLjExK2Rm c2cvY3RkYi9zZXJ2ZXIvY3RkYl9jb250cm9sLmMKLS0tIHNhbWJhLTQuMjIuMTArZGZzZy9jdGRi L3NlcnZlci9jdGRiX2NvbnRyb2wuYwkyMDI1LTAxLTMwIDE2OjU3OjQzLjYwODMxNjAwMCArMDMw MAorKysgc2FtYmEtNC4yMi4xMStkZnNnL2N0ZGIvc2VydmVyL2N0ZGJfY29udHJvbC5jCTIwMjYt MDctMjEgMTg6Mzc6MDQuMTc5Mjc2MDAwICswMzAwCkBAIC05MzMsMTEgKzkzMywyMCBAQAogdm9p ZCBjdGRiX3JlcXVlc3RfY29udHJvbChzdHJ1Y3QgY3RkYl9jb250ZXh0ICpjdGRiLCBzdHJ1Y3Qg Y3RkYl9yZXFfaGVhZGVyICpoZHIpCiB7CiAJc3RydWN0IGN0ZGJfcmVxX2NvbnRyb2xfb2xkICpj ID0gKHN0cnVjdCBjdGRiX3JlcV9jb250cm9sX29sZCAqKWhkcjsKKwlzaXplX3QgcmVxX2NvbnRy b2xfaGVhZGVyX2xlbiA9IG9mZnNldG9mKHN0cnVjdCBjdGRiX3JlcV9jb250cm9sX29sZCwKKwkJ CQkJCSBkYXRhKTsKKwlzaXplX3QgYnVmX2xlbiA9IGhkci0+bGVuZ3RoOwogCVREQl9EQVRBIGRh dGEsICpvdXRkYXRhOwogCWludDMyX3Qgc3RhdHVzOwogCWJvb2wgYXN5bmNfcmVwbHkgPSBmYWxz ZTsKIAljb25zdCBjaGFyICplcnJvcm1zZyA9IE5VTEw7CiAKKwlpZiAoYnVmX2xlbiA8IHJlcV9j b250cm9sX2hlYWRlcl9sZW4gfHwKKwkgICAgYy0+ZGF0YWxlbiA+IGJ1Zl9sZW4gLSByZXFfY29u dHJvbF9oZWFkZXJfbGVuKSB7CisJCURCR19XQVJOSU5HKCJJbnZhbGlkIHBhY2tldFxuIik7CisJ CXJldHVybjsKKwl9CisKIAlkYXRhLmRwdHIgPSAmYy0+ZGF0YVswXTsKIAlkYXRhLmRzaXplID0g Yy0+ZGF0YWxlbjsKIApAQCAtOTU3LDEwICs5NjYsMjAgQEAKIHZvaWQgY3RkYl9yZXBseV9jb250 cm9sKHN0cnVjdCBjdGRiX2NvbnRleHQgKmN0ZGIsIHN0cnVjdCBjdGRiX3JlcV9oZWFkZXIgKmhk cikKIHsKIAlzdHJ1Y3QgY3RkYl9yZXBseV9jb250cm9sX29sZCAqYyA9IChzdHJ1Y3QgY3RkYl9y ZXBseV9jb250cm9sX29sZCAqKWhkcjsKKwlzaXplX3QgcmVwbHlfY29udHJvbF9oZWFkZXJfbGVu ID0gb2Zmc2V0b2Yoc3RydWN0IGN0ZGJfcmVwbHlfY29udHJvbF9vbGQsCisJCQkJCQkgICBkYXRh KTsKKwlzaXplX3QgYnVmX2xlbiA9IGhkci0+bGVuZ3RoOwogCVREQl9EQVRBIGRhdGE7CiAJc3Ry dWN0IGN0ZGJfY29udHJvbF9zdGF0ZSAqc3RhdGU7CiAJY29uc3QgY2hhciAqZXJyb3Jtc2cgPSBO VUxMOwogCisJaWYgKGJ1Zl9sZW4gPCByZXBseV9jb250cm9sX2hlYWRlcl9sZW4gfHwKKwkgICAg Yy0+ZGF0YWxlbiA+IGJ1Zl9sZW4gLSByZXBseV9jb250cm9sX2hlYWRlcl9sZW4gfHwKKwkgICAg Yy0+ZXJyb3JsZW4gPiBidWZfbGVuIC0gcmVwbHlfY29udHJvbF9oZWFkZXJfbGVuIC0gYy0+ZGF0 YWxlbikgeworCQlEQkdfV0FSTklORygiSW52YWxpZCBwYWNrZXRcbiIpOworCQlyZXR1cm47CisJ fQorCiAJc3RhdGUgPSByZXFpZF9maW5kKGN0ZGItPmlkciwgaGRyLT5yZXFpZCwgc3RydWN0IGN0 ZGJfY29udHJvbF9zdGF0ZSk7CiAJaWYgKHN0YXRlID09IE5VTEwpIHsKIAkJREVCVUcoREVCVUdf RVJSLCgicG5uICV1IEludmFsaWQgcmVxaWQgJXUgaW4gY3RkYl9yZXBseV9jb250cm9sXG4iLApk aWZmIC1OcnUgc2FtYmEtNC4yMi4xMCtkZnNnL2N0ZGIvc2VydmVyL2N0ZGJfbHRkYl9zZXJ2ZXIu YyBzYW1iYS00LjIyLjExK2Rmc2cvY3RkYi9zZXJ2ZXIvY3RkYl9sdGRiX3NlcnZlci5jCi0tLSBz YW1iYS00LjIyLjEwK2Rmc2cvY3RkYi9zZXJ2ZXIvY3RkYl9sdGRiX3NlcnZlci5jCTIwMjUtMDEt MzAgMTY6NTc6NDMuNjA5MzE1OTAwICswMzAwCisrKyBzYW1iYS00LjIyLjExK2Rmc2cvY3RkYi9z ZXJ2ZXIvY3RkYl9sdGRiX3NlcnZlci5jCTIwMjYtMDctMjEgMTg6Mzc6MDQuMTc5Mjc2MDAwICsw MzAwCkBAIC0xMTA5LDggKzExMDksMTUgQEAKIAlzdHJ1Y3QgY3RkYl9kYl9jb250ZXh0ICpkYjsK IAlzdHJ1Y3QgY3RkYl9ub2RlICpub2RlID0gY3RkYi0+bm9kZXNbY3RkYi0+cG5uXTsKIAlzdHJ1 Y3QgY3RkYl9jbGllbnQgKmNsaWVudCA9IE5VTEw7CisJY2hhciAqdCA9IE5VTEw7CiAJdWludDMy X3Qgb3Bjb2RlOwogCisJdCA9IG1lbWNocihpbmRhdGEuZHB0ciwgJ1wwJywgaW5kYXRhLmRzaXpl KTsKKwlpZiAodCA9PSBOVUxMKSB7CisJCURCR19FUlIoIkludmFsaWQgcGFja2V0XG4iKTsKKwkJ cmV0dXJuIC0xOworCX0KKwogCWlmIChjdGRiLT50dW5hYmxlLmFsbG93X2NsaWVudF9kYl9hdHRh Y2ggPT0gMCkgewogCQlERUJVRyhERUJVR19FUlIsICgiREIgQXR0YWNoIHRvIGRhdGFiYXNlICVz IGRlbmllZCBieSB0dW5hYmxlICIKIAkJCQkgICJBbGxvd0NsaWVudERCQWNjZXNzID09IDBcbiIs IGRiX25hbWUpKTsKZGlmZiAtTnJ1IHNhbWJhLTQuMjIuMTArZGZzZy9jdGRiL3NlcnZlci9jdGRi X3BlcnNpc3RlbnQuYyBzYW1iYS00LjIyLjExK2Rmc2cvY3RkYi9zZXJ2ZXIvY3RkYl9wZXJzaXN0 ZW50LmMKLS0tIHNhbWJhLTQuMjIuMTArZGZzZy9jdGRiL3NlcnZlci9jdGRiX3BlcnNpc3RlbnQu YwkyMDI1LTAxLTMwIDE2OjU3OjQzLjYxMDMxNTgwMCArMDMwMAorKysgc2FtYmEtNC4yMi4xMStk ZnNnL2N0ZGIvc2VydmVyL2N0ZGJfcGVyc2lzdGVudC5jCTIwMjYtMDctMjEgMTg6Mzc6MDQuMTc5 Mjc2MDAwICswMzAwCkBAIC0xODIsNiArMTgyLDE2IEBACiAJc3RydWN0IGN0ZGJfbWFyc2hhbGxf YnVmZmVyICptID0gKHN0cnVjdCBjdGRiX21hcnNoYWxsX2J1ZmZlciAqKXJlY2RhdGEuZHB0cjsK IAlzdHJ1Y3QgY3RkYl9kYl9jb250ZXh0ICpjdGRiX2RiOwogCisJaWYgKHJlY2RhdGEuZHNpemUg PCBvZmZzZXRvZihzdHJ1Y3QgY3RkYl9tYXJzaGFsbF9idWZmZXIsIGRhdGEpKSB7CisJCURCR19F UlIoIkludmFsaWQgcGFja2V0XG4iKTsKKwkJcmV0dXJuIC0xOworCX0KKwlpZiAobS0+Y291bnQg PgorCSAgICByZWNkYXRhLmRzaXplIC0gb2Zmc2V0b2Yoc3RydWN0IGN0ZGJfbWFyc2hhbGxfYnVm ZmVyLCBkYXRhKSkgeworCQlEQkdfRVJSKCJJbnZhbGlkIHBhY2tldFxuIik7CisJCXJldHVybiAt MTsKKwl9CisKIAlpZiAoY3RkYi0+cmVjb3ZlcnlfbW9kZSAhPSBDVERCX1JFQ09WRVJZX05PUk1B TCkgewogCQlERUJVRyhERUJVR19JTkZPLCgicmVqZWN0aW5nIGN0ZGJfY29udHJvbF90cmFuczNf Y29tbWl0IHdoZW4gcmVjb3ZlcnkgYWN0aXZlXG4iKSk7CiAJCXJldHVybiAtMTsKZGlmZiAtTnJ1 IHNhbWJhLTQuMjIuMTArZGZzZy9jdGRiL3NlcnZlci9jdGRiX3JlY292ZXIuYyBzYW1iYS00LjIy LjExK2Rmc2cvY3RkYi9zZXJ2ZXIvY3RkYl9yZWNvdmVyLmMKLS0tIHNhbWJhLTQuMjIuMTArZGZz Zy9jdGRiL3NlcnZlci9jdGRiX3JlY292ZXIuYwkyMDI2LTA1LTE1IDE2OjUxOjQzLjQ0OTA2MDIw MCArMDMwMAorKysgc2FtYmEtNC4yMi4xMStkZnNnL2N0ZGIvc2VydmVyL2N0ZGJfcmVjb3Zlci5j CTIwMjYtMDctMjEgMTg6Mzc6MDQuMTc5Mjc2MDAwICswMzAwCkBAIC0zNiw2ICszNiw4IEBACiAj aW5jbHVkZSAiY3RkYl9wcml2YXRlLmgiCiAjaW5jbHVkZSAiY3RkYl9jbGllbnQuaCIKIAorI2lu Y2x1ZGUgInByb3RvY29sL3Byb3RvY29sX3ByaXZhdGUuaCIKKwogI2luY2x1ZGUgImNvbW1vbi9z eXN0ZW0uaCIKICNpbmNsdWRlICJjb21tb24vY29tbW9uLmgiCiAjaW5jbHVkZSAiY29tbW9uL2xv Z2dpbmcuaCIKQEAgLTY3LDI0ICs2OSwzMiBAQAogaW50CiBjdGRiX2NvbnRyb2xfc2V0dm5ubWFw KHN0cnVjdCBjdGRiX2NvbnRleHQgKmN0ZGIsIHVpbnQzMl90IG9wY29kZSwgVERCX0RBVEEgaW5k YXRhLCBUREJfREFUQSAqb3V0ZGF0YSkKIHsKLQlzdHJ1Y3QgY3RkYl92bm5fbWFwX3dpcmUgKm1h cCA9IChzdHJ1Y3QgY3RkYl92bm5fbWFwX3dpcmUgKilpbmRhdGEuZHB0cjsKKwlzdHJ1Y3QgY3Rk Yl92bm5fbWFwICpuZXcgPSBOVUxMOworCXNpemVfdCBucHVsbCA9IDA7CisJaW50IHJldCA9IDA7 CiAKIAlpZiAoY3RkYi0+cmVjb3ZlcnlfbW9kZSAhPSBDVERCX1JFQ09WRVJZX0FDVElWRSkgewog CQlERUJVRyhERUJVR19FUlIsICgiQXR0ZW1wdCB0byBzZXQgdm5ubWFwIHdoZW4gbm90IGluIHJl Y292ZXJ5XG4iKSk7CiAJCXJldHVybiAtMTsKIAl9CiAKLQl0YWxsb2NfZnJlZShjdGRiLT52bm5f bWFwKTsKLQotCWN0ZGItPnZubl9tYXAgPSB0YWxsb2MoY3RkYiwgc3RydWN0IGN0ZGJfdm5uX21h cCk7Ci0JQ1REQl9OT19NRU1PUlkoY3RkYiwgY3RkYi0+dm5uX21hcCk7Ci0KLQljdGRiLT52bm5f bWFwLT5nZW5lcmF0aW9uID0gbWFwLT5nZW5lcmF0aW9uOwotCWN0ZGItPnZubl9tYXAtPnNpemUg ICAgICAgPSBtYXAtPnNpemU7Ci0JY3RkYi0+dm5uX21hcC0+bWFwID0gdGFsbG9jX2FycmF5KGN0 ZGItPnZubl9tYXAsIHVpbnQzMl90LCBtYXAtPnNpemUpOwotCUNUREJfTk9fTUVNT1JZKGN0ZGIs IGN0ZGItPnZubl9tYXAtPm1hcCk7CisJcmV0ID0gY3RkYl92bm5fbWFwX3B1bGwoaW5kYXRhLmRw dHIsIGluZGF0YS5kc2l6ZSwgY3RkYiwgJm5ldywgJm5wdWxsKTsKKwlpZiAocmV0ICE9IDApIHsK KwkJc3dpdGNoIChyZXQpIHsKKwkJY2FzZSBFTk9NRU06CisJCQlEQkdfRVJSKCJNZW1vcnkgYWxs b2NhdGlvbiBlcnJvclxuIik7CisJCQlicmVhazsKKwkJY2FzZSBFTVNHU0laRToKKwkJCURCR19F UlIoIkludmFsaWQgcGFja2V0XG4iKTsKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJREJHX0VS UigiVW5leHBlY3RlZCBlcnJvciAoJWQpXG4iLCByZXQpOworCQl9CisJCXJldHVybiAtMTsKKwl9 CiAKLQltZW1jcHkoY3RkYi0+dm5uX21hcC0+bWFwLCBtYXAtPm1hcCwgc2l6ZW9mKHVpbnQzMl90 KSptYXAtPnNpemUpOworCXRhbGxvY19mcmVlKGN0ZGItPnZubl9tYXApOworCWN0ZGItPnZubl9t YXAgPSBuZXc7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTEwNTIsNiArMTA2MiwxMiBAQAogCQlyZXR1 cm4gLTE7CiAJfQogCisJaWYgKHJlcGx5LT5jb3VudCA+CisJICAgIGluZGF0YS5kc2l6ZSAtIG9m ZnNldG9mKHN0cnVjdCBjdGRiX21hcnNoYWxsX2J1ZmZlciwgZGF0YSkpIHsKKwkJREJHX0VSUigi SW52YWxpZCBwYWNrZXRcbiIpOworCQlyZXR1cm4gLTE7CisJfQorCiAJY3RkYl9kYiA9IGZpbmRf Y3RkYl9kYihjdGRiLCByZXBseS0+ZGJfaWQpOwogCWlmICghY3RkYl9kYikgewogCQlERUJVRyhE RUJVR19FUlIsKF9fbG9jYXRpb25fXyAiIFVua25vd24gZGIgMHglMDh4XG4iLCByZXBseS0+ZGJf aWQpKTsKZGlmZiAtTnJ1IHNhbWJhLTQuMjIuMTArZGZzZy9jdGRiL3NlcnZlci9jdGRiX3RyYXZl cnNlLmMgc2FtYmEtNC4yMi4xMStkZnNnL2N0ZGIvc2VydmVyL2N0ZGJfdHJhdmVyc2UuYwotLS0g c2FtYmEtNC4yMi4xMCtkZnNnL2N0ZGIvc2VydmVyL2N0ZGJfdHJhdmVyc2UuYwkyMDI1LTAxLTMw IDE2OjU3OjQzLjYxMzMxNTgwMCArMDMwMAorKysgc2FtYmEtNC4yMi4xMStkZnNnL2N0ZGIvc2Vy dmVyL2N0ZGJfdHJhdmVyc2UuYwkyMDI2LTA3LTIxIDE4OjM3OjA0LjE3OTI3NjAwMCArMDMwMApA QCAtNTYxLDEzICs1NjEsMTcgQEAKIGludDMyX3QgY3RkYl9jb250cm9sX3RyYXZlcnNlX2RhdGEo c3RydWN0IGN0ZGJfY29udGV4dCAqY3RkYiwgVERCX0RBVEEgZGF0YSwgVERCX0RBVEEgKm91dGRh dGEpCiB7CiAJc3RydWN0IGN0ZGJfcmVjX2RhdGFfb2xkICpkID0gKHN0cnVjdCBjdGRiX3JlY19k YXRhX29sZCAqKWRhdGEuZHB0cjsKKwlzaXplX3QgcmVjX2RhdGFfaGVhZGVyX2xlbiA9IG9mZnNl dG9mKHN0cnVjdCBjdGRiX3JlY19kYXRhX29sZCwgZGF0YSk7CiAJc3RydWN0IGN0ZGJfdHJhdmVy c2VfYWxsX2hhbmRsZSAqc3RhdGU7CiAJVERCX0RBVEEga2V5OwogCWN0ZGJfdHJhdmVyc2VfZm5f dCBjYWxsYmFjazsKIAl2b2lkICpwcml2YXRlX2RhdGE7CiAKLQlpZiAoZGF0YS5kc2l6ZSA8IHNp emVvZih1aW50MzJfdCkgfHwgZGF0YS5kc2l6ZSAhPSBkLT5sZW5ndGgpIHsKLQkJREVCVUcoREVC VUdfRVJSLCgiQmFkIHJlY29yZCBzaXplIGluIGN0ZGJfY29udHJvbF90cmF2ZXJzZV9kYXRhXG4i KSk7CisJaWYgKGRhdGEuZHNpemUgPCByZWNfZGF0YV9oZWFkZXJfbGVuIHx8CisJICAgIGRhdGEu ZHNpemUgIT0gZC0+bGVuZ3RoIHx8CisJICAgIGQtPmtleWxlbiA+IGQtPmxlbmd0aCAtIHJlY19k YXRhX2hlYWRlcl9sZW4gfHwKKwkgICAgZC0+ZGF0YWxlbiA+IGQtPmxlbmd0aCAtIHJlY19kYXRh X2hlYWRlcl9sZW4gLSBkLT5rZXlsZW4pIHsKKwkJREJHX0VSUigiSW52YWxpZCBwYWNrZXRcbiIp OwogCQlyZXR1cm4gLTE7CiAJfQogCmRpZmYgLU5ydSBzYW1iYS00LjIyLjEwK2Rmc2cvY3RkYi9z ZXJ2ZXIvY3RkYl91cGRhdGVfcmVjb3JkLmMgc2FtYmEtNC4yMi4xMStkZnNnL2N0ZGIvc2VydmVy L2N0ZGJfdXBkYXRlX3JlY29yZC5jCi0tLSBzYW1iYS00LjIyLjEwK2Rmc2cvY3RkYi9zZXJ2ZXIv Y3RkYl91cGRhdGVfcmVjb3JkLmMJMjAyNS0wMS0zMCAxNjo1Nzo0My42MTQzMTU3MDAgKzAzMDAK KysrIHNhbWJhLTQuMjIuMTErZGZzZy9jdGRiL3NlcnZlci9jdGRiX3VwZGF0ZV9yZWNvcmQuYwky MDI2LTA3LTIxIDE4OjM3OjA0LjE3OTI3NjAwMCArMDMwMApAQCAtMzE4LDYgKzMxOCwxNiBAQAog CXN0cnVjdCBjaGlsZHdyaXRlX2hhbmRsZSAqaGFuZGxlOwogCXN0cnVjdCBjdGRiX21hcnNoYWxs X2J1ZmZlciAqbSA9IChzdHJ1Y3QgY3RkYl9tYXJzaGFsbF9idWZmZXIgKilyZWNkYXRhLmRwdHI7 CiAKKwlpZiAocmVjZGF0YS5kc2l6ZSA8IG9mZnNldG9mKHN0cnVjdCBjdGRiX21hcnNoYWxsX2J1 ZmZlciwgZGF0YSkpIHsKKwkJREJHX0VSUigiSW52YWxpZCBwYWNrZXRcbiIpOworCQlyZXR1cm4g LTE7CisJfQorCWlmIChtLT5jb3VudCA+CisJICAgIHJlY2RhdGEuZHNpemUgLSBvZmZzZXRvZihz dHJ1Y3QgY3RkYl9tYXJzaGFsbF9idWZmZXIsIGRhdGEpKSB7CisJCURCR19FUlIoIkludmFsaWQg cGFja2V0XG4iKTsKKwkJcmV0dXJuIC0xOworCX0KKwogCWlmIChjdGRiLT5yZWNvdmVyeV9tb2Rl ICE9IENUREJfUkVDT1ZFUllfTk9STUFMKSB7CiAJCURFQlVHKERFQlVHX0lORk8sKCJyZWplY3Rp bmcgY3RkYl9jb250cm9sX3VwZGF0ZV9yZWNvcmQgd2hlbiByZWNvdmVyeSBhY3RpdmVcbiIpKTsK IAkJcmV0dXJuIC0xOwpkaWZmIC1OcnUgc2FtYmEtNC4yMi4xMCtkZnNnL2xpYmNsaS9zZWN1cml0 eS9zZWN1cml0eV9kZXNjcmlwdG9yLmMgc2FtYmEtNC4yMi4xMStkZnNnL2xpYmNsaS9zZWN1cml0 eS9zZWN1cml0eV9kZXNjcmlwdG9yLmMKLS0tIHNhbWJhLTQuMjIuMTArZGZzZy9saWJjbGkvc2Vj dXJpdHkvc2VjdXJpdHlfZGVzY3JpcHRvci5jCTIwMjUtMDItMTIgMTY6MjQ6MjAuMzcwMTQzNDAw ICswMzAwCisrKyBzYW1iYS00LjIyLjExK2Rmc2cvbGliY2xpL3NlY3VyaXR5L3NlY3VyaXR5X2Rl c2NyaXB0b3IuYwkyMDI2LTA3LTIxIDE4OjM3OjA0LjE4MzI3NjIwMCArMDMwMApAQCAtMjIsNiAr MjIsNyBAQAogI2luY2x1ZGUgInJlcGxhY2UuaCIKICNpbmNsdWRlICJsaWJjbGkvc2VjdXJpdHkv c2VjdXJpdHkuaCIKICNpbmNsdWRlICJsaWJycGMvbmRyL2xpYm5kci5oIgorI2luY2x1ZGUgImxp YnJwYy9nZW5fbmRyL25kcl9zZWN1cml0eS5oIgogCiAvKgogICByZXR1cm4gYSBibGFuayBzZWN1 cml0eSBkZXNjcmlwdG9yIChubyBvd25lcnMsIGRhY2wgb3Igc2FjbCkKQEAgLTUzLDYgKzU0LDcg QEAKIAkJCQkJICAgICBjb25zdCBzdHJ1Y3Qgc2VjdXJpdHlfYWNsICpvYWNsKQogewogCXN0cnVj dCBzZWN1cml0eV9hY2wgKm5hY2w7CisJZW51bSBuZHJfZXJyX2NvZGUgbmRyX2VycjsKIAogCWlm IChvYWNsID09IE5VTEwpIHsKIAkJcmV0dXJuIE5VTEw7CkBAIC02NywxNyArNjksOCBAQAogCQly ZXR1cm4gTlVMTDsKIAl9CiAKLQkqbmFjbCA9IChzdHJ1Y3Qgc2VjdXJpdHlfYWNsKSB7Ci0JCS5y ZXZpc2lvbiA9IG9hY2wtPnJldmlzaW9uLAotCQkuc2l6ZSAgICAgPSBvYWNsLT5zaXplLAotCQku bnVtX2FjZXMgPSBvYWNsLT5udW1fYWNlcywKLQl9OwotCWlmIChuYWNsLT5udW1fYWNlcyA9PSAw KSB7Ci0JCXJldHVybiBuYWNsOwotCX0KLQotCW5hY2wtPmFjZXMgPSAoc3RydWN0IHNlY3VyaXR5 X2FjZSAqKXRhbGxvY19tZW1kdXAgKG5hY2wsIG9hY2wtPmFjZXMsIHNpemVvZihzdHJ1Y3Qgc2Vj dXJpdHlfYWNlKSAqIG9hY2wtPm51bV9hY2VzKTsKLQlpZiAobmFjbC0+YWNlcyA9PSBOVUxMKSB7 CisJbmRyX2VyciA9IG5kcl9kZWVwY29weV9zdHJ1Y3Qoc2VjdXJpdHlfYWNsLCBvYWNsLCBuYWNs LCBuYWNsKTsKKwlpZiAoIU5EUl9FUlJfQ09ERV9JU19TVUNDRVNTKG5kcl9lcnIpKSB7CiAJCWdv dG8gZmFpbGVkOwogCX0KIApkaWZmIC1OcnUgc2FtYmEtNC4yMi4xMCtkZnNnL2xpYnJwYy9pZGwv ZG5zLmlkbCBzYW1iYS00LjIyLjExK2Rmc2cvbGlicnBjL2lkbC9kbnMuaWRsCi0tLSBzYW1iYS00 LjIyLjEwK2Rmc2cvbGlicnBjL2lkbC9kbnMuaWRsCTIwMjUtMDEtMzAgMTY6NTc6NDMuODIzMzE1 OTAwICswMzAwCisrKyBzYW1iYS00LjIyLjExK2Rmc2cvbGlicnBjL2lkbC9kbnMuaWRsCTIwMjYt MDctMjEgMTg6Mzc6MDQuMTgzMjc2MjAwICswMzAwCkBAIC0yNTEsNiArMjUxLDEyIEBACiAJfSBk bnNfcmRhdGE7CiAKIAl0eXBlZGVmIFtmbGFnKExJQk5EUl9QUklOVF9BUlJBWV9IRVh8TkRSX05P QUxJR04pLG5vcHVzaCxub3B1bGxdIHN0cnVjdCB7CisJCS8qCisJCSAqIFRoaXMgaXMgdGhlIHN0 YXJ0IG9mZnNldCBvZiB0aGlzCisJCSAqIGRuc19yZXNfcmVjIHJlbGF0aXZlIHRvIHRoZSBzdGFy dCBvZgorCQkgKiBkbnNfbmFtZV9wYWNrZXQgYnVmZmVyLgorCQkgKi8KKwkJW2lnbm9yZV0gdWlu dDMyIHN0YXJ0X25kcl9vZmZzZXQ7CiAJCWRuc19zdHJpbmcgbmFtZTsKIAkJZG5zX3F0eXBlICBy cl90eXBlOwogCQlkbnNfcWNsYXNzIHJyX2NsYXNzOwpkaWZmIC1OcnUgc2FtYmEtNC4yMi4xMCtk ZnNnL2xpYnJwYy9uZHIvbmRyX2Rucy5jIHNhbWJhLTQuMjIuMTErZGZzZy9saWJycGMvbmRyL25k cl9kbnMuYwotLS0gc2FtYmEtNC4yMi4xMCtkZnNnL2xpYnJwYy9uZHIvbmRyX2Rucy5jCTIwMjUt MDEtMzAgMTY6NTc6NDMuODM0MzE1ODAwICswMzAwCisrKyBzYW1iYS00LjIyLjExK2Rmc2cvbGli cnBjL25kci9uZHJfZG5zLmMJMjAyNi0wNy0yMSAxODozNzowNC4xODMyNzYyMDAgKzAzMDAKQEAg LTI3Niw2ICsyNzYsMTcgQEAKIAluZHJfc2V0X2ZsYWdzKCZuZHItPmZsYWdzLCBMSUJORFJfUFJJ TlRfQVJSQVlfSEVYIHwKIAkJCQkgICBMSUJORFJfRkxBR19OT0FMSUdOKTsKIAlpZiAobmRyX2Zs YWdzICYgTkRSX1NDQUxBUlMpIHsKKwkJLyoKKwkJICogUmVtZW1iZXIgdGhlIHN0YXJ0IG9mZnNl dCBpbiBvcmRlcgorCQkgKiB0byBrbm93IGhvdyB0byB0cnVuY2F0ZSBiZWZvcmUgdGhlCisJCSAq IGxhc3QgZG5zX3Jlc19yZWMgaW4gb3JkZXIgdG8gZG8KKwkJICogdGhlIGNvcnJlY3QgVFNJRyBj YWxjdWxhdGlvbi4KKwkJICoKKwkJICogTm90ZSB0aGF0IHdlIGp1c3Qgc2V0IExJQk5EUl9GTEFH X05PQUxJR04KKwkJICogYWJvdmUsIHNvIG5kcl9wdWxsX2FsaWduIGlzIGEgbm8tb3AuCisJCSAq LworCQlyLT5zdGFydF9uZHJfb2Zmc2V0ID0gbmRyLT5vZmZzZXQ7CisKIAkJTkRSX0NIRUNLKG5k cl9wdWxsX2FsaWduKG5kciwgNCkpOwogCQlORFJfQ0hFQ0sobmRyX3B1bGxfZG5zX3N0cmluZyhu ZHIsIE5EUl9TQ0FMQVJTLCAmci0+bmFtZSkpOwogCQlORFJfQ0hFQ0sobmRyX3B1bGxfZG5zX3F0 eXBlKG5kciwgTkRSX1NDQUxBUlMsICZyLT5ycl90eXBlKSk7CmRpZmYgLU5ydSBzYW1iYS00LjIy LjEwK2Rmc2cvc291cmNlNC9kbnNfc2VydmVyL2Ruc19jcnlwdG8uYyBzYW1iYS00LjIyLjExK2Rm c2cvc291cmNlNC9kbnNfc2VydmVyL2Ruc19jcnlwdG8uYwotLS0gc2FtYmEtNC4yMi4xMCtkZnNn L3NvdXJjZTQvZG5zX3NlcnZlci9kbnNfY3J5cHRvLmMJMjAyNS0wMS0zMCAxNjo1Nzo0NC4xNDQz MTYwMDAgKzAzMDAKKysrIHNhbWJhLTQuMjIuMTErZGZzZy9zb3VyY2U0L2Ruc19zZXJ2ZXIvZG5z X2NyeXB0by5jCTIwMjYtMDctMjEgMTg6Mzc6MDQuMTgzMjc2MjAwICswMzAwCkBAIC0zNiw2ICsz Niw4IEBACiAJCQkgICAgc3RydWN0IGRuc19yZXNfcmVjICpvbGQsCiAJCQkgICAgc3RydWN0IGRu c19yZXNfcmVjICpuZXdfcmVjKQogeworCW5ld19yZWMtPnN0YXJ0X25kcl9vZmZzZXQgPSAwOwor CiAJbmV3X3JlYy0+bmFtZSA9IHRhbGxvY19zdHJkdXAobWVtX2N0eCwgb2xkLT5uYW1lKTsKIAlX X0VSUk9SX0hBVkVfTk9fTUVNT1JZKG5ld19yZWMtPm5hbWUpOwogCkBAIC0xMDEsNyArMTAzLDcg QEAKIAlOVFNUQVRVUyBzdGF0dXM7CiAJZW51bSBuZHJfZXJyX2NvZGUgbmRyX2VycjsKIAl1aW50 MTZfdCBpLCBhcmNvdW50ID0gMDsKLQlEQVRBX0JMT0IgdHNpZ19ibG9iLCBmYWtlX3RzaWdfYmxv Yiwgc2lnOworCURBVEFfQkxPQiBmYWtlX3RzaWdfYmxvYiwgc2lnOwogCXVpbnQ4X3QgKmJ1ZmZl ciA9IE5VTEw7CiAJc2l6ZV90IGJ1ZmZlcl9sZW4gPSAwLCBwYWNrZXRfbGVuID0gMDsKIAlzdHJ1 Y3QgZG5zX3NlcnZlcl90a2V5ICp0a2V5ID0gTlVMTDsKQEAgLTEzMSw2ICsxMzMsMjIgQEAKIAlz dGF0ZS0+c2lnbiA9IHRydWU7CiAJREJHX0RFQlVHKCJHb3QgVFNJR1xuIik7CiAKKwkvKgorCSAq IFdlIG5lZWQgdG8ga2VlcCB0aGUgaW5wdXQgcGFja2V0IGV4YWN0bHkgbGlrZSB3ZSBnb3QgaXQs CisJICogYnV0IHdlIG5lZWQgdG8gY3V0IG9mZiB0aGUgdHNpZyByZWNvcmQuCisJICoKKwkgKiBE TlMgcGFja2V0cyBjYW4gbm90IGJlIGxhcmdlciB0aGFuIFVJTlQxNl9NQVgsCisJICogdGhlIHNp emUgb2YgdGhlIFVEUCBwYXlsb2FkIGlzIHVpbnQxNl90IGFuZAorCSAqIHRoZXJlJ3MgYSB1aW50 MTZfdCBsZW5ndGggaGVhZGVyIGZvciBUQ1AuCisJICoKKwkgKiBBbmQgdGhlIHN0YXJ0IG9mZnNl dCBvZiB0aGUgbGFzdAorCSAqIGFkZGl0aW9uYWwgcmVjb3JkIGNhbid0IGJlIGxhcmdlciB0aGFu CisJICogdGhlIHdob2xlIHBhY2tldC4KKwkgKi8KKwlwYWNrZXRfbGVuID0gcGFja2V0LT5hZGRp dGlvbmFsW2ldLnN0YXJ0X25kcl9vZmZzZXQ7CisJU01CX0FTU0VSVChpbi0+bGVuZ3RoIDw9IFVJ TlQxNl9NQVgpOworCVNNQl9BU1NFUlQoaW4tPmxlbmd0aCA+IHBhY2tldF9sZW4pOworCiAJc3Rh dGUtPnRzaWcgPSB0YWxsb2NfemVybyhzdGF0ZS0+bWVtX2N0eCwgc3RydWN0IGRuc19yZXNfcmVj KTsKIAlpZiAoc3RhdGUtPnRzaWcgPT0gTlVMTCkgewogCQlyZXR1cm4gV0VSUl9OT1RfRU5PVUdI X01FTU9SWTsKQEAgLTIwNSwxNCArMjIzLDYgQEAKIAljaGVja19yZWMtPm90aGVyX3NpemUgPSAw OwogCWNoZWNrX3JlYy0+b3RoZXJfZGF0YSA9IE5VTEw7CiAKLQluZHJfZXJyID0gbmRyX3B1c2hf c3RydWN0X2Jsb2IoJnRzaWdfYmxvYiwgbWVtX2N0eCwgc3RhdGUtPnRzaWcsCi0JCShuZHJfcHVz aF9mbGFnc19mbl90KW5kcl9wdXNoX2Ruc19yZXNfcmVjKTsKLQlpZiAoIU5EUl9FUlJfQ09ERV9J U19TVUNDRVNTKG5kcl9lcnIpKSB7Ci0JCURFQlVHKDEsICgiRmFpbGVkIHRvIHB1c2ggcGFja2V0 OiAlcyFcbiIsCi0JCQkgIG5kcl9lcnJzdHIobmRyX2VycikpKTsKLQkJcmV0dXJuIEROU19FUlIo U0VSVkVSX0ZBSUxVUkUpOwotCX0KLQogCW5kcl9lcnIgPSBuZHJfcHVzaF9zdHJ1Y3RfYmxvYigm ZmFrZV90c2lnX2Jsb2IsIG1lbV9jdHgsIGNoZWNrX3JlYywKIAkJKG5kcl9wdXNoX2ZsYWdzX2Zu X3QpbmRyX3B1c2hfZG5zX2Zha2VfdHNpZ19yZWMpOwogCWlmICghTkRSX0VSUl9DT0RFX0lTX1NV Q0NFU1MobmRyX2VycikpIHsKQEAgLTIyMSw5ICsyMzEsMTkgQEAKIAkJcmV0dXJuIEROU19FUlIo U0VSVkVSX0ZBSUxVUkUpOwogCX0KIAotCS8qIHdlIG5lZWQgdG8gd29yayBzb21lIG1hZ2ljIGhl cmUuIHdlIG5lZWQgdG8ga2VlcCB0aGUgaW5wdXQgcGFja2V0Ci0JICogZXhhY3RseSBsaWtlIHdl IGdvdCBpdCwgYnV0IHdlIG5lZWQgdG8gY3V0IG9mZiB0aGUgdHNpZyByZWNvcmQgKi8KLQlwYWNr ZXRfbGVuID0gaW4tPmxlbmd0aCAtIHRzaWdfYmxvYi5sZW5ndGg7CisJLyoKKwkgKiBXZSBhbHJl YWR5IGFzc2VydGVkIHBhY2tldF9sZW4gPCBVSU5UMTZfTUFYCisJICogYWJvdmUsIGFuZCBzdHJ1 Y3QgbmRyX3B1c2ggaGFzIGFsbG9jX3NpemUgYW5kCisJICogb2Zmc2V0IGFzIHVpbnQzMl90LCBz byBpdCdzIHJlYWxseSB1bmxpa2VseQorCSAqIHRvIG92ZXJmbG93IGJ1ZmZlcl9sZW4uIEZvciBT SVpFX01BWCA9PSBVSU5UMzJfTUFYLAorCSAqIHRoZSBmb2xsb3dpbmcgY2hlY2sgbWlnaHQgYmUg aW1wb3J0YW50LCBidXQKKwkgKiBqdXN0IGxldHMgZG8gaXQgYWx3YXlzLgorCSAqLworCWlmIChm YWtlX3RzaWdfYmxvYi5sZW5ndGggPiAoU0laRV9NQVggLSBVSU5UMTZfTUFYKSkgeworCQlEQkdf V0FSTklORygiZmFrZV90c2lnX2Jsb2IubGVuZ3RoPSV6dSB0b28gbGFyZ2UhXG4iLAorCQkJICAg IGZha2VfdHNpZ19ibG9iLmxlbmd0aCk7CisJCXJldHVybiBETlNfRVJSKFNFUlZFUl9GQUlMVVJF KTsKKwl9CiAJYnVmZmVyX2xlbiA9IHBhY2tldF9sZW4gKyBmYWtlX3RzaWdfYmxvYi5sZW5ndGg7 CiAJYnVmZmVyID0gdGFsbG9jX3plcm9fYXJyYXkobWVtX2N0eCwgdWludDhfdCwgYnVmZmVyX2xl bik7CiAJaWYgKGJ1ZmZlciA9PSBOVUxMKSB7CmRpZmYgLU5ydSBzYW1iYS00LjIyLjEwK2Rmc2cv c291cmNlNC9kbnNfc2VydmVyL2Ruc19xdWVyeS5jIHNhbWJhLTQuMjIuMTErZGZzZy9zb3VyY2U0 L2Ruc19zZXJ2ZXIvZG5zX3F1ZXJ5LmMKLS0tIHNhbWJhLTQuMjIuMTArZGZzZy9zb3VyY2U0L2Ru c19zZXJ2ZXIvZG5zX3F1ZXJ5LmMJMjAyNS0wMS0zMCAxNjo1Nzo0NC4xNDQzMTYwMDAgKzAzMDAK KysrIHNhbWJhLTQuMjIuMTErZGZzZy9zb3VyY2U0L2Ruc19zZXJ2ZXIvZG5zX3F1ZXJ5LmMJMjAy Ni0wNy0yMSAxODozNzowNC4xODMyNzYyMDAgKzAzMDAKQEAgLTY1NCw3ICs2NTQsOCBAQAogCXJl dHVybiBXRVJSX09LOwogfQogCi1zdGF0aWMgTlRTVEFUVVMgY3JlYXRlX3RrZXkoc3RydWN0IGRu c19zZXJ2ZXIgKmRucywKK3N0YXRpYyBOVFNUQVRVUyBjcmVhdGVfdGtleShUQUxMT0NfQ1RYICpt ZW1fY3R4LAorCQkJICAgIHN0cnVjdCBkbnNfc2VydmVyICpkbnMsCiAJCQkgICAgY29uc3QgY2hh ciogbmFtZSwKIAkJCSAgICBjb25zdCBjaGFyKiBhbGdvcml0aG0sCiAJCQkgICAgY29uc3Qgc3Ry dWN0IHRzb2NrZXRfYWRkcmVzcyAqcmVtb3RlX2FkZHJlc3MsCkBAIC02NjIsNyArNjYzLDYgQEAK IAkJCSAgICBzdHJ1Y3QgZG5zX3NlcnZlcl90a2V5ICoqdGtleSkKIHsKIAlOVFNUQVRVUyBzdGF0 dXM7Ci0Jc3RydWN0IGRuc19zZXJ2ZXJfdGtleV9zdG9yZSAqc3RvcmUgPSBkbnMtPnRrZXlzOwog CXN0cnVjdCBkbnNfc2VydmVyX3RrZXkgKmsgPSBOVUxMOwogCiAJaWYgKHN0cmNtcChhbGdvcml0 aG0sICJnc3MtdHNpZyIpID09IDApIHsKQEAgLTY3MywyMCArNjczLDIwIEBACiAJCXJldHVybiBO VF9TVEFUVVNfQUNDRVNTX0RFTklFRDsKIAl9CiAKLQlrID0gdGFsbG9jX3plcm8oc3RvcmUsIHN0 cnVjdCBkbnNfc2VydmVyX3RrZXkpOworCWsgPSB0YWxsb2NfemVybyhtZW1fY3R4LCBzdHJ1Y3Qg ZG5zX3NlcnZlcl90a2V5KTsKIAlpZiAoayA9PSBOVUxMKSB7Ci0JCXJldHVybiBOVF9TVEFUVVNf Tk9fTUVNT1JZOworCQlnb3RvIG5vbWVtOwogCX0KIAogCWstPm5hbWUgPSB0YWxsb2Nfc3RyZHVw KGssIG5hbWUpOwogCiAJaWYgKGstPm5hbWUgID09IE5VTEwpIHsKLQkJcmV0dXJuIE5UX1NUQVRV U19OT19NRU1PUlk7CisJCWdvdG8gbm9tZW07CiAJfQogCiAJay0+YWxnb3JpdGhtID0gdGFsbG9j X3N0cmR1cChrLCBhbGdvcml0aG0pOwogCWlmIChrLT5hbGdvcml0aG0gPT0gTlVMTCkgewotCQly ZXR1cm4gTlRfU1RBVFVTX05PX01FTU9SWTsKKwkJZ290byBub21lbTsKIAl9CiAKIAkvKgpAQCAt NzA0LDggKzcwNCw3IEBACiAJCQkJCQkmay0+Z2Vuc2VjKTsKIAlpZiAoIU5UX1NUQVRVU19JU19P SyhzdGF0dXMpKSB7CiAJCURFQlVHKDEsICgiRmFpbGVkIHRvIHN0YXJ0IEdFTlNFQyBzZXJ2ZXIg Y29kZTogJXNcbiIsIG50X2VycnN0cihzdGF0dXMpKSk7Ci0JCSp0a2V5ID0gTlVMTDsKLQkJcmV0 dXJuIHN0YXR1czsKKwkJZ290byBmYWlsOwogCX0KIAogCWdlbnNlY193YW50X2ZlYXR1cmUoay0+ Z2Vuc2VjLCBHRU5TRUNfRkVBVFVSRV9TSUdOKTsKQEAgLTcxNSw4ICs3MTQsNyBAQAogCWlmICgh TlRfU1RBVFVTX0lTX09LKHN0YXR1cykpIHsKIAkJREVCVUcoMSwgKCJGYWlsZWQgdG8gc2V0IHJl bW90ZSBhZGRyZXNzIGludG8gR0VOU0VDOiAlc1xuIiwKIAkJCSAgbnRfZXJyc3RyKHN0YXR1cykp KTsKLQkJKnRrZXkgPSBOVUxMOwotCQlyZXR1cm4gc3RhdHVzOworCQlnb3RvIGZhaWw7CiAJfQog CiAJc3RhdHVzID0gZ2Vuc2VjX3NldF9sb2NhbF9hZGRyZXNzKGstPmdlbnNlYywKQEAgLTcyNCw4 ICs3MjIsNyBAQAogCWlmICghTlRfU1RBVFVTX0lTX09LKHN0YXR1cykpIHsKIAkJREVCVUcoMSwg KCJGYWlsZWQgdG8gc2V0IGxvY2FsIGFkZHJlc3MgaW50byBHRU5TRUM6ICVzXG4iLAogCQkJICBu dF9lcnJzdHIoc3RhdHVzKSkpOwotCQkqdGtleSA9IE5VTEw7Ci0JCXJldHVybiBzdGF0dXM7CisJ CWdvdG8gZmFpbDsKIAl9CiAKIAlzdGF0dXMgPSBnZW5zZWNfc3RhcnRfbWVjaF9ieV9vaWQoay0+ Z2Vuc2VjLCBHRU5TRUNfT0lEX1NQTkVHTyk7CkBAIC03MzMsMTggKzczMCwyOSBAQAogCWlmICgh TlRfU1RBVFVTX0lTX09LKHN0YXR1cykpIHsKIAkJREVCVUcoMSwgKCJGYWlsZWQgdG8gc3RhcnQg R0VOU0VDIHNlcnZlciBjb2RlOiAlc1xuIiwKIAkJCSAgbnRfZXJyc3RyKHN0YXR1cykpKTsKLQkJ KnRrZXkgPSBOVUxMOwotCQlyZXR1cm4gc3RhdHVzOworCQlnb3RvIGZhaWw7CiAJfQogCisJKnRr ZXkgPSBrOworCXJldHVybiBOVF9TVEFUVVNfT0s7CisKK25vbWVtOgorCXN0YXR1cyA9IE5UX1NU QVRVU19OT19NRU1PUlk7CitmYWlsOgorCVRBTExPQ19GUkVFKGspOworCSp0a2V5ID0gTlVMTDsK KwlyZXR1cm4gc3RhdHVzOworfQorCitzdGF0aWMgdm9pZCBhZGRfdGtleShzdHJ1Y3QgZG5zX3Nl cnZlcl90a2V5X3N0b3JlICpzdG9yZSwKKwkJICAgICBzdHJ1Y3QgZG5zX3NlcnZlcl90a2V5ICoq dGtleSkKK3sKIAlUQUxMT0NfRlJFRShzdG9yZS0+dGtleXNbc3RvcmUtPm5leHRfaWR4XSk7CiAK LQlzdG9yZS0+dGtleXNbc3RvcmUtPm5leHRfaWR4XSA9IGs7CisJc3RvcmUtPnRrZXlzW3N0b3Jl LT5uZXh0X2lkeF0gPSB0YWxsb2NfbW92ZShzdG9yZS0+dGtleXMsIHRrZXkpOworCiAJKHN0b3Jl LT5uZXh0X2lkeCkrKzsKIAlzdG9yZS0+bmV4dF9pZHggJT0gc3RvcmUtPnNpemU7Ci0KLQkqdGtl eSA9IGs7Ci0JcmV0dXJuIE5UX1NUQVRVU19PSzsKIH0KIAogc3RhdGljIE5UU1RBVFVTIGFjY2Vw dF9nc3NfdGlja2V0KFRBTExPQ19DVFggKm1lbV9jdHgsCkBAIC04NjAsNiArODY4LDcgQEAKIAkJ c3RydWN0IGRuc19zZXJ2ZXJfdGtleSAqdGtleTsKIAkJREFUQV9CTE9CIGtleTsKIAkJREFUQV9C TE9CIHJlcGx5OworCQlib29sIGNyZWF0ZWQgPSBmYWxzZTsKIAogCQl0a2V5ID0gZG5zX2ZpbmRf dGtleShkbnMtPnRrZXlzLCBpbi0+cXVlc3Rpb25zWzBdLm5hbWUpOwogCQlpZiAodGtleSAhPSBO VUxMICYmIHRrZXktPmNvbXBsZXRlKSB7CkBAIC04NzAsMTUgKzg3OSwxOSBAQAogCQl9CiAKIAkJ aWYgKHRrZXkgPT0gTlVMTCkgewotCQkJc3RhdHVzICA9IGNyZWF0ZV90a2V5KGRucywgaW4tPnF1 ZXN0aW9uc1swXS5uYW1lLAotCQkJCQkgICAgICBpbl90a2V5LT5yZGF0YS50a2V5X3JlY29yZC5h bGdvcml0aG0sCi0JCQkJCSAgICAgIHN0YXRlLT5yZW1vdGVfYWRkcmVzcywKLQkJCQkJICAgICAg c3RhdGUtPmxvY2FsX2FkZHJlc3MsCi0JCQkJCSAgICAgICZ0a2V5KTsKKwkJCXN0YXR1cyA9IGNy ZWF0ZV90a2V5KAorCQkJCW1lbV9jdHgsCisJCQkJZG5zLAorCQkJCWluLT5xdWVzdGlvbnNbMF0u bmFtZSwKKwkJCQlpbl90a2V5LT5yZGF0YS50a2V5X3JlY29yZC5hbGdvcml0aG0sCisJCQkJc3Rh dGUtPnJlbW90ZV9hZGRyZXNzLAorCQkJCXN0YXRlLT5sb2NhbF9hZGRyZXNzLAorCQkJCSZ0a2V5 KTsKIAkJCWlmICghTlRfU1RBVFVTX0lTX09LKHN0YXR1cykpIHsKIAkJCQlyZXRfdGtleS0+cmRh dGEudGtleV9yZWNvcmQuZXJyb3IgPSBETlNfUkNPREVfQkFES0VZOwogCQkJCXJldHVybiBudHN0 YXR1c190b193ZXJyb3Ioc3RhdHVzKTsKIAkJCX0KKwkJCWNyZWF0ZWQgPSB0cnVlOwogCQl9CiAK IAkJa2V5LmRhdGEgPSBpbl90a2V5LT5yZGF0YS50a2V5X3JlY29yZC5rZXlfZGF0YTsKQEAgLTkw Myw2ICs5MTYsOSBAQAogCQkJaWYgKHN0YXRlLT5rZXlfbmFtZSA9PSBOVUxMKSB7CiAJCQkJcmV0 dXJuIFdFUlJfTk9UX0VOT1VHSF9NRU1PUlk7CiAJCQl9CisJCQlpZiAoY3JlYXRlZCkgeworCQkJ CWFkZF90a2V5KGRucy0+dGtleXMsICZ0a2V5KTsKKwkJCX0KIAkJfSBlbHNlIHsKIAkJCURFQlVH KDEsICgiR1NTIGtleSBuZWdvdGlhdGlvbiByZXR1cm5lZCAlc1xuIiwgbnRfZXJyc3RyKHN0YXR1 cykpKTsKIAkJCXJldF90a2V5LT5yZGF0YS50a2V5X3JlY29yZC5lcnJvciA9IEROU19SQ09ERV9C QURLRVk7CmRpZmYgLU5ydSBzYW1iYS00LjIyLjEwK2Rmc2cvc291cmNlNC9kc2RiL3NhbWRiL2xk Yl9tb2R1bGVzL2F1ZGl0X3V0aWwuYyBzYW1iYS00LjIyLjExK2Rmc2cvc291cmNlNC9kc2RiL3Nh bWRiL2xkYl9tb2R1bGVzL2F1ZGl0X3V0aWwuYwotLS0gc2FtYmEtNC4yMi4xMCtkZnNnL3NvdXJj ZTQvZHNkYi9zYW1kYi9sZGJfbW9kdWxlcy9hdWRpdF91dGlsLmMJMjAyNS0wMS0zMCAxNjo1Nzo0 NC4xNTQzMTYwMDAgKzAzMDAKKysrIHNhbWJhLTQuMjIuMTErZGZzZy9zb3VyY2U0L2RzZGIvc2Ft ZGIvbGRiX21vZHVsZXMvYXVkaXRfdXRpbC5jCTIwMjYtMDctMjEgMTg6Mzc6MDQuMTgzMjc2MjAw ICswMzAwCkBAIC02OTQsMyArNjk0LDE4MyBAQAogCURCR19FUlIoIlVuYWJsZSB0byBjcmVhdGUg bGRiIGF0dHJpYnV0ZXMgSlNPTiBhdWRpdCBtZXNzYWdlXG4iKTsKIAlyZXR1cm4gYXR0cmlidXRl czsKIH0KKworLyoKKyAqIEBicmllZiBHZW5lcmF0ZSBhIGh1bWFuIHJlYWRhYmxlIHN0cmluZywg ZGV0YWlsaW5nIGF0dHJpYnV0ZXMgaW4gYSBtZXNzYWdlCisgKgorICogRm9yIG1vZGlmeSBvcGVy YXRpb25zIGVhY2ggYXR0cmlidXRlIGlzIHByZWZpeGVkIHdpdGggdGhlIGFjdGlvbi4KKyAqIE5v cm1hbCB2YWx1ZXMgYXJlIGVuY2xvc2VkIGluIFtdCisgKiBCYXNlNjQgdmFsdWVzIGFyZSBlbmNs b3NlZCBpbiB7fQorICogVHJ1bmNhdGVkIHZhbHVlcyBhcmUgaW5kaWNhdGVkIGJ5IHRocmVlIHRy YWlsaW5nIGRvdHMgIi4uLiIKKyAqCisgKiBAcGFyYW1baW5dICBsZGIgICAgICAgdGhlIGxkYl9j b250ZXh0CisgKiBAcGFyYW1bb3V0XSBidWZmZXIgICAgdGhlIGF0dHJpYnV0ZXMgd2lsbCBiZSBh cHBlbmRlZCB0byB0aGUgYnVmZmVyLgorICogICAgICAgICAgICAgICAgICAgICAgIGFzc3VtZWQg dG8gaGF2ZSBiZWVuIGFsbG9jYXRlZCB2aWEgdGFsbG9jLgorICogQHBhcmFtW2luXSAgb3BlcmF0 aW9uIHRoZSBvcGVyYXRpb24gdHlwZQorICogQHBhcmFtW2luXSAgbWVzc2FnZSAgIHRoZSBtZXNz YWdlIHRvIHByb2Nlc3MKKyAqCisgKiBAcmV0dXJuIGEgcG9pbnRlciB0byBidWZmZXIKKyAqCisg Ki8KK2NoYXIgKmRzZGJfYXVkaXRfbG9nX2F0dHJpYnV0ZXMoCisJc3RydWN0IGxkYl9jb250ZXh0 ICpsZGIsCisJY2hhciAqYnVmZmVyLAorCWVudW0gbGRiX3JlcXVlc3RfdHlwZSBvcGVyYXRpb24s CisJY29uc3Qgc3RydWN0IGxkYl9tZXNzYWdlICptZXNzYWdlKQoreworCXNpemVfdCBpLCBqOwor CWZvciAoaT0wO2k8bWVzc2FnZS0+bnVtX2VsZW1lbnRzO2krKykgeworCQlpZiAoaSA+IDApIHsK KwkJCWJ1ZmZlciA9IHRhbGxvY19hc3ByaW50Zl9hcHBlbmRfYnVmZmVyKGJ1ZmZlciwgIiAiKTsK KwkJfQorCisJCWlmIChtZXNzYWdlLT5lbGVtZW50c1tpXS5uYW1lID09IE5VTEwpIHsKKwkJCWxk Yl9kZWJ1ZygKKwkJCQlsZGIsCisJCQkJTERCX0RFQlVHX0VSUk9SLAorCQkJCSJFcnJvcjogSW52 YWxpZCBlbGVtZW50IG5hbWUgKE5VTEwpIGF0ICIKKwkJCQkicG9zaXRpb24gJXp1IiwgaSk7CisJ CQlyZXR1cm4gTlVMTDsKKwkJfQorCisJCWlmIChvcGVyYXRpb24gPT0gTERCX01PRElGWSkgewor CQkJY29uc3QgY2hhciAqYWN0aW9uID1OVUxMOworCQkJYWN0aW9uID0gZHNkYl9hdWRpdF9nZXRf bW9kaWZpY2F0aW9uX2FjdGlvbigKKwkJCQltZXNzYWdlLT5lbGVtZW50c1tpXS5mbGFncyk7CisJ CQlidWZmZXIgPSB0YWxsb2NfYXNwcmludGZfYXBwZW5kX2J1ZmZlcigKKwkJCQlidWZmZXIsCisJ CQkJIiVzOiAlcyAiLAorCQkJCWFjdGlvbiwKKwkJCQltZXNzYWdlLT5lbGVtZW50c1tpXS5uYW1l KTsKKwkJfSBlbHNlIHsKKwkJCWJ1ZmZlciA9IHRhbGxvY19hc3ByaW50Zl9hcHBlbmRfYnVmZmVy KAorCQkJCWJ1ZmZlciwKKwkJCQkiJXMgIiwKKwkJCQltZXNzYWdlLT5lbGVtZW50c1tpXS5uYW1l KTsKKwkJfQorCisJCWlmIChkc2RiX2F1ZGl0X3JlZGFjdF9hdHRyaWJ1dGUobWVzc2FnZS0+ZWxl bWVudHNbaV0ubmFtZSkpIHsKKwkJCS8qCisJCQkgKiBEbyBub3QgbG9nIHRoZSB2YWx1ZSBvZiBh bnkgc2VjcmV0IG9yIHBhc3N3b3JkCisJCQkgKiBhdHRyaWJ1dGVzCisJCQkgKi8KKwkJCWJ1ZmZl ciA9IHRhbGxvY19hc3ByaW50Zl9hcHBlbmRfYnVmZmVyKAorCQkJCWJ1ZmZlciwKKwkJCQkiW1JF REFDVEVEIFNFQ1JFVCBBVFRSSUJVVEVdIik7CisJCQljb250aW51ZTsKKwkJfQorCisJCWZvciAo aj0wO2o8bWVzc2FnZS0+ZWxlbWVudHNbaV0ubnVtX3ZhbHVlcztqKyspIHsKKwkJCXN0cnVjdCBs ZGJfdmFsIHY7CisJCQlib29sIHVzZV9iNjRfZW5jb2RlID0gZmFsc2U7CisJCQlzaXplX3QgbGVu Z3RoOworCQkJaWYgKGogPiAwKSB7CisJCQkJYnVmZmVyID0gdGFsbG9jX2FzcHJpbnRmX2FwcGVu ZF9idWZmZXIoCisJCQkJCWJ1ZmZlciwKKwkJCQkJIiAiKTsKKwkJCX0KKworCQkJdiA9IG1lc3Nh Z2UtPmVsZW1lbnRzW2ldLnZhbHVlc1tqXTsKKwkJCWxlbmd0aCA9IE1JTihNQVhfTEVOR1RILCB2 Lmxlbmd0aCk7CisJCQl1c2VfYjY0X2VuY29kZSA9IGxkYl9zaG91bGRfYjY0X2VuY29kZShsZGIs ICZ2KTsKKwkJCWlmICh1c2VfYjY0X2VuY29kZSkgeworCQkJCWNvbnN0IGNoYXIgKmVuY29kZWQg PSBsZGJfYmFzZTY0X2VuY29kZSgKKwkJCQkJYnVmZmVyLAorCQkJCQkoY2hhciAqKXYuZGF0YSwK KwkJCQkJbGVuZ3RoKTsKKwkJCQlidWZmZXIgPSB0YWxsb2NfYXNwcmludGZfYXBwZW5kX2J1ZmZl cigKKwkJCQkJYnVmZmVyLAorCQkJCSAgICAgICAgInslcyVzfSIsCisJCQkJCWVuY29kZWQsCisJ CQkJCSh2Lmxlbmd0aCA+IE1BWF9MRU5HVEggPyAiLi4uIiA6ICIiKSk7CisJCQl9IGVsc2Ugewor CQkJCWJ1ZmZlciA9IHRhbGxvY19hc3ByaW50Zl9hcHBlbmRfYnVmZmVyKAorCQkJCQlidWZmZXIs CisJCQkJCSJbJSouKnMlc10iLAorCQkJCQkoaW50KWxlbmd0aCwKKwkJCQkJKGludClsZW5ndGgs CisJCQkJCShjaGFyICopdi5kYXRhLAorCQkJCQkodi5sZW5ndGggPiBNQVhfTEVOR1RIID8gIi4u LiIgOiAiIikpOworCQkJfQorCQl9CisJfQorCXJldHVybiBidWZmZXI7Cit9CisKKy8qCisgKiBA YnJpZWYgZ2VuZXJhdGUgYSBodW1hbiByZWFkYWJsZSBsb2cgZW50cnkgZGV0YWlsaW5nIGFuIGxk YiBvcGVyYXRpb24uCisgKgorICogR2VuZXJhdGUgYSBodW1hbiByZWFkYWJsZSBsb2cgZW50cnkg ZGV0YWlsaW5nIGFuIGxkYiBvcGVyYXRpb24uCisgKgorICogQHBhcmFtW2luXSBtZW1fY3R4IHRo ZSB0YWxsb2MgY29udGV4dCBvd25pbmcgdGhlIHJldHVybmVkIHN0cmluZy4KKyAqIEBwYXJhbVtp bl0gbW9kdWxlICB0aGUgbGRiIG1vZHVsZQorICogQHBhcmFtW2luXSByZXF1ZXN0IHRoZSByZXF1 ZXN0CisgKiBAcGFyYW1baW5dIHJlcGx5ICAgdGhlIHJlc3VsdCBvZiB0aGUgb3BlcmF0aW9uCisg KgorICogQHJldHVybiB0aGUgbG9nIGVudHJ5LgorICoKKyAqLworY2hhciAqZHNkYl9hdWRpdF9v cGVyYXRpb25faHVtYW5fcmVhZGFibGUoCisJVEFMTE9DX0NUWCAqbWVtX2N0eCwKKwlzdHJ1Y3Qg bGRiX21vZHVsZSAqbW9kdWxlLAorCWNvbnN0IHN0cnVjdCBsZGJfcmVxdWVzdCAqcmVxdWVzdCwK Kwljb25zdCBzdHJ1Y3QgbGRiX3JlcGx5ICpyZXBseSkKK3sKKwlzdHJ1Y3QgbGRiX2NvbnRleHQg KmxkYiA9IE5VTEw7CisJY29uc3QgY2hhciAqcmVtb3RlX2hvc3QgPSBOVUxMOworCWNvbnN0IHN0 cnVjdCB0c29ja2V0X2FkZHJlc3MgKnJlbW90ZSA9IE5VTEw7CisJY29uc3Qgc3RydWN0IGRvbV9z aWQgKnNpZCA9IE5VTEw7CisJc3RydWN0IGRvbV9zaWRfYnVmIHVzZXJfc2lkOworCWNvbnN0IGNo YXIgKnRpbWVzdGFtcCA9IE5VTEw7CisJY29uc3QgY2hhciAqb3BfbmFtZSA9IE5VTEw7CisJY2hh ciAqbG9nX2VudHJ5ID0gTlVMTDsKKwljb25zdCBjaGFyICpkbiA9IE5VTEw7CisJY29uc3QgY2hh ciAqbmV3X2RuID0gTlVMTDsKKwljb25zdCBzdHJ1Y3QgbGRiX21lc3NhZ2UgKm1lc3NhZ2UgPSBO VUxMOworCisJVEFMTE9DX0NUWCAqY3R4ID0gdGFsbG9jX25ldyhOVUxMKTsKKworCWxkYiA9IGxk Yl9tb2R1bGVfZ2V0X2N0eChtb2R1bGUpOworCisJcmVtb3RlX2hvc3QgPSBkc2RiX2F1ZGl0X2dl dF9yZW1vdGVfaG9zdChsZGIsIGN0eCk7CisJcmVtb3RlID0gZHNkYl9hdWRpdF9nZXRfcmVtb3Rl X2FkZHJlc3MobGRiKTsKKwlpZiAocmVtb3RlICE9IE5VTEwgJiYgZHNkYl9hdWRpdF9pc19zeXN0 ZW1fc2Vzc2lvbihtb2R1bGUpKSB7CisJCXNpZCA9IGRzZGJfYXVkaXRfZ2V0X2FjdHVhbF9zaWQo bGRiKTsKKwl9IGVsc2UgeworCQlzaWQgPSBkc2RiX2F1ZGl0X2dldF91c2VyX3NpZChtb2R1bGUp OworCX0KKwl0aW1lc3RhbXAgPSBhdWRpdF9nZXRfdGltZXN0YW1wKGN0eCk7CisJb3BfbmFtZSA9 IGRzZGJfYXVkaXRfZ2V0X29wZXJhdGlvbl9uYW1lKHJlcXVlc3QpOworCWRuID0gZHNkYl9hdWRp dF9nZXRfcHJpbWFyeV9kbihyZXF1ZXN0KTsKKwluZXdfZG4gPSBkc2RiX2F1ZGl0X2dldF9zZWNv bmRhcnlfZG4ocmVxdWVzdCk7CisKKwltZXNzYWdlID0gZHNkYl9hdWRpdF9nZXRfbWVzc2FnZShy ZXF1ZXN0KTsKKworCWxvZ19lbnRyeSA9IHRhbGxvY19hc3ByaW50ZigKKwkJbWVtX2N0eCwKKwkJ Ilslc10gYXQgWyVzXSBzdGF0dXMgWyVzXSAiCisJCSJyZW1vdGUgaG9zdCBbJXNdIFNJRCBbJXNd IEROIFslc10iLAorCQlvcF9uYW1lLAorCQl0aW1lc3RhbXAsCisJCWxkYl9zdHJlcnJvcihyZXBs eS0+ZXJyb3IpLAorCQlyZW1vdGVfaG9zdCwKKwkJZG9tX3NpZF9zdHJfYnVmKHNpZCwgJnVzZXJf c2lkKSwKKwkJZG4pOworCWlmIChuZXdfZG4gIT0gTlVMTCkgeworCQlsb2dfZW50cnkgPSB0YWxs b2NfYXNwcmludGZfYXBwZW5kX2J1ZmZlcigKKwkJCWxvZ19lbnRyeSwKKwkJCSIgTmV3IEROIFsl c10iLAorCQkJbmV3X2RuKTsKKwl9CisJaWYgKG1lc3NhZ2UgIT0gTlVMTCkgeworCQlsb2dfZW50 cnkgPSB0YWxsb2NfYXNwcmludGZfYXBwZW5kX2J1ZmZlcihsb2dfZW50cnksCisJCQkJCQkJICAi IGF0dHJpYnV0ZXMgWyIpOworCQlsb2dfZW50cnkgPSBkc2RiX2F1ZGl0X2xvZ19hdHRyaWJ1dGVz KGxkYiwKKwkJCQkJCSAgICAgIGxvZ19lbnRyeSwKKwkJCQkJCSAgICAgIHJlcXVlc3QtPm9wZXJh dGlvbiwKKwkJCQkJCSAgICAgIG1lc3NhZ2UpOworCQlsb2dfZW50cnkgPSB0YWxsb2NfYXNwcmlu dGZfYXBwZW5kX2J1ZmZlcihsb2dfZW50cnksICJdIik7CisJfQorCVRBTExPQ19GUkVFKGN0eCk7 CisJcmV0dXJuIGxvZ19lbnRyeTsKK30KZGlmZiAtTnJ1IHNhbWJhLTQuMjIuMTArZGZzZy9zb3Vy Y2U0L2RzZGIvc2FtZGIvbGRiX21vZHVsZXMvcm9vdGRzZS5jIHNhbWJhLTQuMjIuMTErZGZzZy9z b3VyY2U0L2RzZGIvc2FtZGIvbGRiX21vZHVsZXMvcm9vdGRzZS5jCi0tLSBzYW1iYS00LjIyLjEw K2Rmc2cvc291cmNlNC9kc2RiL3NhbWRiL2xkYl9tb2R1bGVzL3Jvb3Rkc2UuYwkyMDI1LTAxLTMw IDE2OjU3OjQ0LjE2MTMxNjAwMCArMDMwMAorKysgc2FtYmEtNC4yMi4xMStkZnNnL3NvdXJjZTQv ZHNkYi9zYW1kYi9sZGJfbW9kdWxlcy9yb290ZHNlLmMJMjAyNi0wNy0yMSAxODozNzowNC4xODMy NzYyMDAgKzAzMDAKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJkc2RiL3NhbWRiL3NhbWRi LmgiCiAjaW5jbHVkZSAidmVyc2lvbi5oIgogI2luY2x1ZGUgImRzZGIvc2FtZGIvbGRiX21vZHVs ZXMvdXRpbC5oIgorI2luY2x1ZGUgImRzZGIvc2FtZGIvbGRiX21vZHVsZXMvYXVkaXRfdXRpbF9w cm90by5oIgogI2luY2x1ZGUgImxpYmNsaS9zZWN1cml0eS9zZWN1cml0eS5oIgogI2luY2x1ZGUg ImxpYnJwYy9uZHIvbGlibmRyLmgiCiAjaW5jbHVkZSAiYXV0aC9hdXRoLmgiCkBAIC03NDYsMTgg Kzc0Nyw2OCBAQAogCXJldHVybiBMREJfU1VDQ0VTUzsKIH0KIAotLyogRW5zdXJlIHRoYXQgYW5v bnltb3VzIHVzZXJzIGFyZSBub3QgYWxsb3dlZCB0byBtYWtlIGFueXRoaW5nIG90aGVyIHRoYW4g cm9vdERTRSBzZWFyY2ggb3BlcmF0aW9ucyAqLwotCisvKgorICogRW5zdXJlIHRoYXQgYW5vbnlt b3VzIHVzZXJzIGFyZSBub3QgYWxsb3dlZCB0byBtYWtlIGFueXRoaW5nIG90aGVyIHRoYW4KKyAq IHJvb3REU0Ugc2VhcmNoIG9wZXJhdGlvbnMgYW5kIHNwZWNpYWwgZG5zIGxpa2UgQE1PRFVMRVMg YXJlIG5vdCBhbGxvd2VkCisgKiBvdmVyIGFuIHVudHJ1c3RlZCBjb25uZWN0aW9uLgorICovCiBz dGF0aWMgaW50IHJvb3Rkc2VfZmlsdGVyX29wZXJhdGlvbnMoc3RydWN0IGxkYl9tb2R1bGUgKm1v ZHVsZSwgc3RydWN0IGxkYl9yZXF1ZXN0ICpyZXEpCiB7CiAJc3RydWN0IGF1dGhfc2Vzc2lvbl9p bmZvICpzZXNzaW9uX2luZm87CiAJc3RydWN0IHJvb3Rkc2VfcHJpdmF0ZV9kYXRhICpwcml2ID0g dGFsbG9jX2dldF90eXBlKGxkYl9tb2R1bGVfZ2V0X3ByaXZhdGUobW9kdWxlKSwgc3RydWN0IHJv b3Rkc2VfcHJpdmF0ZV9kYXRhKTsKIAlib29sIGlzX3VudHJ1c3RlZCA9IGxkYl9yZXFfaXNfdW50 cnVzdGVkKHJlcSk7CiAJYm9vbCBpc19hbm9ueW1vdXMgPSB0cnVlOworCXN0cnVjdCBsZGJfZG4g KmRuID0gTlVMTDsKKwlzdHJ1Y3QgbGRiX2RuICpkbjIgPSBOVUxMOworCiAJaWYgKGlzX3VudHJ1 c3RlZCA9PSBmYWxzZSkgewogCQlyZXR1cm4gTERCX1NVQ0NFU1M7CiAJfQogCisJc3dpdGNoIChy ZXEtPm9wZXJhdGlvbikgeworCWNhc2UgTERCX1NFQVJDSDoKKwkJZG4gPSByZXEtPm9wLnNlYXJj aC5iYXNlOworCQlicmVhazsKKwljYXNlIExEQl9BREQ6CisJCWRuID0gcmVxLT5vcC5hZGQubWVz c2FnZS0+ZG47CisJCWJyZWFrOworCWNhc2UgTERCX01PRElGWToKKwkJZG4gPSByZXEtPm9wLm1v ZC5tZXNzYWdlLT5kbjsKKwkJYnJlYWs7CisJY2FzZSBMREJfREVMRVRFOgorCQlkbiA9IHJlcS0+ b3AuZGVsLmRuOworCQlicmVhazsKKwljYXNlIExEQl9SRU5BTUU6CisJCWRuID0gcmVxLT5vcC5y ZW5hbWUub2xkZG47CisJCWRuMiA9IHJlcS0+b3AucmVuYW1lLm5ld2RuOworCQlicmVhazsKKwlj YXNlIExEQl9FWFRFTkRFRDoKKwkJYnJlYWs7CisJY2FzZSBMREJfUkVRX1JFR0lTVEVSX0NPTlRS T0w6CisJY2FzZSBMREJfUkVRX1JFR0lTVEVSX1BBUlRJVElPTjoKKwkJbGRiX3NldF9lcnJzdHJp bmcobGRiX21vZHVsZV9nZXRfY3R4KG1vZHVsZSksICJJbnZhbGlkIE9QIik7CisJCXJldHVybiBM REJfRVJSX09QRVJBVElPTlNfRVJST1I7CisJfQorCisJaWYgKGxkYl9kbl9pc19zcGVjaWFsKGRu KSkgeworCQlzdHJ1Y3QgbGRiX3JlcGx5IHJlcGx5ID0geyAuZXJyb3IgPSBMREJfRVJSX09QRVJB VElPTlNfRVJST1IsIH07CisKKwkJRF9FUlIoIkNWRS0yMDI2LTU4MjIxLUFUVEFDSzogJXNcbiIs CisJCQlkc2RiX2F1ZGl0X29wZXJhdGlvbl9odW1hbl9yZWFkYWJsZShyZXEsIG1vZHVsZSwgcmVx LCAmcmVwbHkpKTsKKworCQlsZGJfc2V0X2VycnN0cmluZyhsZGJfbW9kdWxlX2dldF9jdHgobW9k dWxlKSwgIkludmFsaWQgRE4iKTsKKwkJcmV0dXJuIExEQl9FUlJfT1BFUkFUSU9OU19FUlJPUjsK Kwl9CisJaWYgKGxkYl9kbl9pc19zcGVjaWFsKGRuMikpIHsKKwkJc3RydWN0IGxkYl9yZXBseSBy ZXBseSA9IHsgLmVycm9yID0gTERCX0VSUl9PUEVSQVRJT05TX0VSUk9SLCB9OworCisJCURfRVJS KCJDVkUtMjAyNi01ODIyMS1BVFRBQ0s6ICVzXG4iLAorCQkJZHNkYl9hdWRpdF9vcGVyYXRpb25f aHVtYW5fcmVhZGFibGUocmVxLCBtb2R1bGUsIHJlcSwgJnJlcGx5KSk7CisKKwkJbGRiX3NldF9l cnJzdHJpbmcobGRiX21vZHVsZV9nZXRfY3R4KG1vZHVsZSksICJJbnZhbGlkIEROIik7CisJCXJl dHVybiBMREJfRVJSX09QRVJBVElPTlNfRVJST1I7CisJfQorCiAJc2Vzc2lvbl9pbmZvID0gKHN0 cnVjdCBhdXRoX3Nlc3Npb25faW5mbyAqKWxkYl9nZXRfb3BhcXVlKAogCQlsZGJfbW9kdWxlX2dl dF9jdHgobW9kdWxlKSwKIAkJRFNEQl9TRVNTSU9OX0lORk8pOwpkaWZmIC1OcnUgc2FtYmEtNC4y Mi4xMCtkZnNnL3NvdXJjZTQvZHNkYi9zYW1kYi9sZGJfbW9kdWxlcy93c2NyaXB0X2J1aWxkX3Nl cnZlciBzYW1iYS00LjIyLjExK2Rmc2cvc291cmNlNC9kc2RiL3NhbWRiL2xkYl9tb2R1bGVzL3dz Y3JpcHRfYnVpbGRfc2VydmVyCi0tLSBzYW1iYS00LjIyLjEwK2Rmc2cvc291cmNlNC9kc2RiL3Nh bWRiL2xkYl9tb2R1bGVzL3dzY3JpcHRfYnVpbGRfc2VydmVyCTIwMjUtMDYtMDQgMTI6MDg6NDYu NDM4MTExNTAwICswMzAwCisrKyBzYW1iYS00LjIyLjExK2Rmc2cvc291cmNlNC9kc2RiL3NhbWRi L2xkYl9tb2R1bGVzL3dzY3JpcHRfYnVpbGRfc2VydmVyCTIwMjYtMDctMjEgMTg6Mzc6MDQuMTgz Mjc2MjAwICswMzAwCkBAIC0xODUsNyArMTg1LDcgQEAKIAlpbml0X2Z1bmN0aW9uPSdsZGJfcm9v dGRzZV9tb2R1bGVfaW5pdCcsCiAJbW9kdWxlX2luaXRfbmFtZT0nbGRiX2luaXRfbW9kdWxlJywK IAlpbnRlcm5hbF9tb2R1bGU9RmFsc2UsCi0JZGVwcz0ndGFsbG9jIHNhbWRiIE1FU1NBR0lORyBz YW1iYS1zZWN1cml0eSBEU0RCX01PRFVMRV9IRUxQRVJTIFJQQ19ORFJfSVJQQycKKwlkZXBzPSd0 YWxsb2Mgc2FtZGIgTUVTU0FHSU5HIHNhbWJhLXNlY3VyaXR5IERTREJfTU9EVUxFX0hFTFBFUlMg RFNEQl9NT0RVTEVfSEVMUEVSU19BVURJVCBSUENfTkRSX0lSUEMnCiAJKQogCiAKZGlmZiAtTnJ1 IHNhbWJhLTQuMjIuMTArZGZzZy9zb3VyY2U0L2tkYy9rcGFzc3dkLXNlcnZpY2UuYyBzYW1iYS00 LjIyLjExK2Rmc2cvc291cmNlNC9rZGMva3Bhc3N3ZC1zZXJ2aWNlLmMKLS0tIHNhbWJhLTQuMjIu MTArZGZzZy9zb3VyY2U0L2tkYy9rcGFzc3dkLXNlcnZpY2UuYwkyMDI1LTAxLTMwIDE2OjU3OjQ0 LjE3ODMxNTkwMCArMDMwMAorKysgc2FtYmEtNC4yMi4xMStkZnNnL3NvdXJjZTQva2RjL2twYXNz d2Qtc2VydmljZS5jCTIwMjYtMDctMjEgMTg6Mzc6MDQuMTgzMjc2MjAwICswMzAwCkBAIC0xMzcs NyArMTM3LDcgQEAKIAogCWFwX3JlcV9ibG9iID0gZGF0YV9ibG9iX2NvbnN0KCZyZXF1ZXN0LT5k YXRhW0hFQURFUl9MRU5dLCBhcF9yZXFfbGVuKTsKIAotCWVuY19kYXRhX2xlbiA9IGxlbiAtIGFw X3JlcV9sZW47CisJZW5jX2RhdGFfbGVuID0gbGVuIC0gKGFwX3JlcV9sZW4gKyBIRUFERVJfTEVO KTsKIAllbmNfZGF0YV9ibG9iID0gZGF0YV9ibG9iX2NvbnN0KCZyZXF1ZXN0LT5kYXRhW0hFQURF Ul9MRU4gKyBhcF9yZXFfbGVuXSwKIAkJCQkJZW5jX2RhdGFfbGVuKTsKIApkaWZmIC1OcnUgc2Ft YmEtNC4yMi4xMCtkZnNnL3NvdXJjZTQvbGRhcF9zZXJ2ZXIvbGRhcF9iYWNrZW5kLmMgc2FtYmEt NC4yMi4xMStkZnNnL3NvdXJjZTQvbGRhcF9zZXJ2ZXIvbGRhcF9iYWNrZW5kLmMKLS0tIHNhbWJh LTQuMjIuMTArZGZzZy9zb3VyY2U0L2xkYXBfc2VydmVyL2xkYXBfYmFja2VuZC5jCTIwMjUtMDEt MzAgMTY6NTc6NDQuMTg3MzE2MDAwICswMzAwCisrKyBzYW1iYS00LjIyLjExK2Rmc2cvc291cmNl NC9sZGFwX3NlcnZlci9sZGFwX2JhY2tlbmQuYwkyMDI2LTA3LTIxIDE4OjM3OjA0LjE4MzI3NjIw MCArMDMwMApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgInNhbWJhL3NlcnZpY2Vfc3RyZWFt LmgiCiAjaW5jbHVkZSAiZHNkYi9nbXNhL3V0aWwuaCIKICNpbmNsdWRlICJkc2RiL3NhbWRiL3Nh bWRiLmgiCisjaW5jbHVkZSAiZHNkYi9jb21tb24vdXRpbC5oIgogI2luY2x1ZGUgPGxkYl9lcnJv cnMuaD4KICNpbmNsdWRlIDxsZGJfbW9kdWxlLmg+CiAjaW5jbHVkZSAibGRiX3dyYXAuaCIKQEAg LTE0NDksNiArMTQ1MCw3IEBACiAJc3RydWN0IGxkYl9kbiAqZG47CiAJY29uc3QgY2hhciAqYXR0 cnNbMV07CiAJY29uc3QgY2hhciAqZXJyc3RyID0gTlVMTDsKKwljb25zdCBjaGFyICp2YWx1ZSA9 IE5VTEw7CiAJY29uc3QgY2hhciAqZmlsdGVyID0gTlVMTDsKIAlpbnQgcmVzdWx0ID0gTERBUF9T VUNDRVNTOwogCWludCBsZGJfcmV0OwpAQCAtMTQ2MSwyMSArMTQ2MywzMSBAQAogCWRuID0gbGRi X2RuX25ldyhsb2NhbF9jdHgsIHNhbWRiLCByZXEtPmRuKTsKIAlOVF9TVEFUVVNfSEFWRV9OT19N RU1PUlkoZG4pOwogCisJY29tcGFyZV9yID0gbGRhcHNydl9pbml0X3JlcGx5KGNhbGwsIExEQVBf VEFHX0NvbXBhcmVSZXNwb25zZSk7CisJTlRfU1RBVFVTX0hBVkVfTk9fTUVNT1JZKGNvbXBhcmVf cik7CisKIAlEQkdfREVCVUcoImRuOiBbJXNdXG4iLCByZXEtPmRuKTsKLQlmaWx0ZXIgPSB0YWxs b2NfYXNwcmludGYobG9jYWxfY3R4LCAiKCVzPSUqcykiLCByZXEtPmF0dHJpYnV0ZSwKLQkJCQkg KGludClyZXEtPnZhbHVlLmxlbmd0aCwgcmVxLT52YWx1ZS5kYXRhKTsKKworCWlmICghbGRiX3Zh bGlkX2F0dHJfbmFtZShyZXEtPmF0dHJpYnV0ZSkpIHsKKwkJcmVzdWx0ID0gTERBUF9JTlZBTElE X0FUVFJJQlVURV9TWU5UQVg7CisJCWVycnN0ciA9ICJJbnZhbGlkIENvbXBhcmUgYXR0cmlidXRl IG5hbWUiOworCQlnb3RvIHJlcGx5OworCX0KKwl2YWx1ZSA9IGxkYl9iaW5hcnlfZW5jb2RlKGxv Y2FsX2N0eCwgcmVxLT52YWx1ZSk7CisJTlRfU1RBVFVTX0hBVkVfTk9fTUVNT1JZKHZhbHVlKTsK KworCWZpbHRlciA9IHRhbGxvY19hc3ByaW50Zihsb2NhbF9jdHgsICIlcz0lcyIsIHJlcS0+YXR0 cmlidXRlLCB2YWx1ZSk7CiAJTlRfU1RBVFVTX0hBVkVfTk9fTUVNT1JZKGZpbHRlcik7CiAKIAlE QkdfREVCVUcoImF0dHJpYnV0ZTogWyVzXVxuIiwgZmlsdGVyKTsKIAogCWF0dHJzWzBdID0gTlVM TDsKIAotCWNvbXBhcmVfciA9IGxkYXBzcnZfaW5pdF9yZXBseShjYWxsLCBMREFQX1RBR19Db21w YXJlUmVzcG9uc2UpOwotCU5UX1NUQVRVU19IQVZFX05PX01FTU9SWShjb21wYXJlX3IpOwotCiAJ aWYgKHJlc3VsdCA9PSBMREFQX1NVQ0NFU1MpIHsKLQkJbGRiX3JldCA9IGxkYl9zZWFyY2goc2Ft ZGIsIGxvY2FsX2N0eCwgJnJlcywKLQkJCQkgICAgIGRuLCBMREJfU0NPUEVfQkFTRSwgYXR0cnMs ICIlcyIsIGZpbHRlcik7CisJCWxkYl9yZXQgPSBkc2RiX3NlYXJjaChzYW1kYiwgbG9jYWxfY3R4 LCAmcmVzLAorCQkJCSAgICAgIGRuLCBMREJfU0NPUEVfQkFTRSwgYXR0cnMsCisJCQkJICAgICAg RFNEQl9NQVJLX1JFUV9VTlRSVVNURUQsCisJCQkJICAgICAgIiVzIiwgZmlsdGVyKTsKIAkJaWYg KGxkYl9yZXQgIT0gTERCX1NVQ0NFU1MpIHsKIAkJCXJlc3VsdCA9IG1hcF9sZGJfZXJyb3IobG9j YWxfY3R4LCBsZGJfcmV0LAogCQkJCQkgICAgICAgbGRiX2VycnN0cmluZyhzYW1kYiksICZlcnJz dHIpOwpAQCAtMTQ5Nyw2ICsxNTA5LDcgQEAKIAkJfQogCX0KIAorcmVwbHk6CiAJY29tcGFyZSA9 ICZjb21wYXJlX3ItPm1zZy0+ci5Db21wYXJlUmVzcG9uc2U7CiAJY29tcGFyZS0+ZG4gPSBOVUxM OwogCWNvbXBhcmUtPnJlc3VsdGNvZGUgPSByZXN1bHQ7CmRpZmYgLU5ydSBzYW1iYS00LjIyLjEw K2Rmc2cvc291cmNlNC9saWJycGMvdGVzdHMvZG5zLWRlY29kZV9kbnNfbmFtZV9wYWNrZXQtaGV4 LnR4dCBzYW1iYS00LjIyLjExK2Rmc2cvc291cmNlNC9saWJycGMvdGVzdHMvZG5zLWRlY29kZV9k bnNfbmFtZV9wYWNrZXQtaGV4LnR4dAotLS0gc2FtYmEtNC4yMi4xMCtkZnNnL3NvdXJjZTQvbGli cnBjL3Rlc3RzL2Rucy1kZWNvZGVfZG5zX25hbWVfcGFja2V0LWhleC50eHQJMjAyNS0wMS0zMCAx Njo1Nzo0NC4yMTAzMTYwMDAgKzAzMDAKKysrIHNhbWJhLTQuMjIuMTErZGZzZy9zb3VyY2U0L2xp YnJwYy90ZXN0cy9kbnMtZGVjb2RlX2Ruc19uYW1lX3BhY2tldC1oZXgudHh0CTIwMjYtMDctMjEg MTg6Mzc6MDQuMTgzMjc2MjAwICswMzAwCkBAIC0yMSw2ICsyMSw3IEBACiAgICAgICAgIGFuc3dl cnM6IEFSUkFZKDApCiAgICAgICAgIG5zcmVjczogQVJSQVkoMSkKICAgICAgICAgICAgIG5zcmVj czogc3RydWN0IGRuc19yZXNfcmVjCisgICAgICAgICAgICAgICAgc3RhcnRfbmRyX29mZnNldCAg ICAgICAgIDogMHgwMDAwMDAyNyAoMzkpCiAgICAgICAgICAgICAgICAgbmFtZSAgICAgICAgICAg ICAgICAgICAgIDogJ2NuYW1lZG90cHJlZml4MC5zYW1iYTIwMDMuZXhhbXBsZS5jb20nCiAgICAg ICAgICAgICAgICAgcnJfdHlwZSAgICAgICAgICAgICAgICAgIDogRE5TX1FUWVBFX0NOQU1FICgw eDUpCiAgICAgICAgICAgICAgICAgcnJfY2xhc3MgICAgICAgICAgICAgICAgIDogRE5TX1FDTEFT U19JTiAoMHgxKQo=