From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Jakub Jelinek To: git-commits@fedoraproject.org Subject: [rpms/gcc] rhel-f41-base: 4.8.0-0.13 Date: Mon, 29 Jun 2026 12:25:45 GMT Message-ID: <178273594575.1.16550053718927887982.rpms-gcc-225104138d78@fedoraproject.org> List-ID: X-Git-Repo: rpms/gcc X-Git-Branch: rhel-f41-base X-Git-Rev: 225104138d78e81361e456aee14ba1cb74410475 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvZ2NjCkJyYW5jaCA6 IHJoZWwtZjQxLWJhc2UKQ29tbWl0IDogMjI1MTA0MTM4ZDc4ZTgxMzYxZTQ1NmFlZTE0YmExY2I3 NDQxMDQ3NQpBdXRob3IgOiBKYWt1YiBKZWxpbmVrIDxqYWt1YkByZWRoYXQuY29tPgpEYXRlICAg OiAyMDEzLTAyLTE1VDIwOjE3OjU3KzAxOjAwClN0YXRzICA6ICs5MjEvLTQ1NCBpbiA4IGZpbGUo cykKVVJMICAgIDogaHR0cHM6Ly9zcmMuZmVkb3JhcHJvamVjdC5vcmcvcnBtcy9nY2MvYy8yMjUx MDQxMzhkNzhlODEzNjFlNDU2YWVlMTRiYTFjYjc0NDEwNDc1P2JyYW5jaD1yaGVsLWY0MS1iYXNl CgpMb2c6CjQuOC4wLTAuMTMKCi0tLQpkaWZmIC0tZ2l0IGEvLmdpdGlnbm9yZSBiLy5naXRpZ25v cmUKaW5kZXggY2VlMDIwMi4uNTdmMGFhOSAxMDA2NDQKLS0tIGEvLmdpdGlnbm9yZQorKysgYi8u Z2l0aWdub3JlCkBAIC02MSwzICs2MSw0IEBACiAvZ2NjLTQuOC4wLTIwMTMwMjA4LnRhci5iejIK IC9nY2MtNC44LjAtMjAxMzAyMTEudGFyLmJ6MgogL2djYy00LjguMC0yMDEzMDIxMy50YXIuYnoy CisvZ2NjLTQuOC4wLTIwMTMwMjE1LnRhci5iejIKCmRpZmYgLS1naXQgYS9nY2Muc3BlYyBiL2dj Yy5zcGVjCmluZGV4IGQ5OWE2MjYuLmJmYWI0YjggMTAwNjQ0Ci0tLSBhL2djYy5zcGVjCisrKyBi L2djYy5zcGVjCkBAIC0xLDkgKzEsOSBAQAotJWdsb2JhbCBEQVRFIDIwMTMwMjEzCi0lZ2xvYmFs IFNWTlJFViAxOTYwMzEKKyVnbG9iYWwgREFURSAyMDEzMDIxNQorJWdsb2JhbCBTVk5SRVYgMTk2 MDg0CiAlZ2xvYmFsIGdjY192ZXJzaW9uIDQuOC4wCiAjIE5vdGUsIGdjY19yZWxlYXNlIG11c3Qg YmUgaW50ZWdlciwgaWYgeW91IHdhbnQgdG8gYWRkIHN1ZmZpeGVzIHRvCiAjICV7cmVsZWFzZX0s IGFwcGVuZCB0aGVtIGFmdGVyICV7Z2NjX3JlbGVhc2V9IG9uIFJlbGVhc2U6IGxpbmUuCi0lZ2xv YmFsIGdjY19yZWxlYXNlIDAuMTIKKyVnbG9iYWwgZ2NjX3JlbGVhc2UgMC4xMwogJWdsb2JhbCBf dW5wYWNrYWdlZF9maWxlc190ZXJtaW5hdGVfYnVpbGQgMAogJWdsb2JhbCBtdWx0aWxpYl82NF9h cmNocyBzcGFyYzY0IHBwYzY0IHMzOTB4IHg4Nl82NAogJWlmYXJjaCAle2l4ODZ9IHg4Nl82NCBp YTY0IHBwYyBwcGM2NCBhbHBoYQpAQCAtMTk2LDggKzE5Niw3IEBAIFBhdGNoMTI6IGdjYzQ4LW5v LWFkZC1uZWVkZWQucGF0Y2gKIFBhdGNoMTM6IGdjYzQ4LXByNTU2MDgucGF0Y2gKIFBhdGNoMTQ6 IGdjYzQ4LWFzYW4tZml4LnBhdGNoCiBQYXRjaDE1OiBnY2M0OC1wcjU0MTE3LnBhdGNoCi1QYXRj aDE2OiBnY2M0OC1wcjU2MTExLnBhdGNoCi1QYXRjaDE3OiBnY2M0OC1wcjU2MjI0LnBhdGNoCitQ YXRjaDE2OiBnY2M0OC1hc2FuLXNwZWVkdXAucGF0Y2gKIAogUGF0Y2gxMDAwOiBmYXN0amFyLTAu OTctc2VnZmF1bHQucGF0Y2gKIFBhdGNoMTAwMTogZmFzdGphci0wLjk3LWxlbjEucGF0Y2gKQEAg LTc1Miw4ICs3NTEsNyBAQCBwYWNrYWdlIG9yIHdoZW4gZGVidWdnaW5nIHRoaXMgcGFja2FnZS4K ICVwYXRjaDEzIC1wMCAtYiAucHI1NTYwOH4KICVwYXRjaDE0IC1wMCAtYiAuYXNhbi1maXh+CiAl cGF0Y2gxNSAtcDAgLWIgLnByNTQxMTd+Ci0lcGF0Y2gxNiAtcDAgLWIgLnByNTYxMTF+Ci0lcGF0 Y2gxNyAtcDAgLWIgLnByNTYyMjR+CislcGF0Y2gxNiAtcDAgLWIgLmFzYW4tc3BlZWR1cH4KIAog JWlmIDAlez9fZW5hYmxlX2RlYnVnX3BhY2thZ2VzfQogY2F0ID4gc3BsaXQtZGVidWdpbmZvLnNo IDw8XEVPRgpAQCAtMjk3Nyw2ICsyOTc1LDE3IEBAIGZpCiAle19wcmVmaXh9L2xpYmV4ZWMvZ2Nj LyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0vcGx1Z2luCiAKICVjaGFuZ2Vs b2cKKyogRnJpIEZlYiAxNSAyMDEzIEpha3ViIEplbGluZWsgPGpha3ViQHJlZGhhdC5jb20+IDQu OC4wLTAuMTMKKy0gdXBkYXRlZCBmcm9tIHRydW5rCisgIC0gUFJzIGJvb3RzdHJhcC81NjMyNywg YysrLzUyMDI2LCBjKysvNTQ5MjIsIGMrKy81NTAwMywgYysrLzU1MjIwLAorCWMrKy81NTIyMywg YysrLzU1MjMyLCBjKysvNTU1ODIsIGMrKy81NTY3MCwgYysrLzU1NjgwLCBjKysvNTYzMjMsCisJ YysrLzU2MzQzLCBmb3J0cmFuLzUzODE4LCBmb3J0cmFuLzU2MjI0LCBmb3J0cmFuLzU2MzE4LAor CWxpYnN0ZGMrKy81NjExMSwgbHRvLzUwNDk0LCB0YXJnZXQvNTU0MzEsIHRhcmdldC81NTk0MSwK Kwl0ZXN0c3VpdGUvNTYxMzgKKy0gYXNhbiBmaXhlcyAoUFIgc2FuaXRpemVyLzU2MzMwKQorLSBh c2FuIHNwZWVkdXAgLSB1c2UgMHg3ZmZmODAwMCBzaGFkb3cgb2Zmc2V0IGluc3RlYWQgb2YgMUxM IDw8IDQ0IG9uCisgIHg4Nl82NAorCiAqIFdlZCBGZWIgMTMgMjAxMyBKYWt1YiBKZWxpbmVrIDxq YWt1YkByZWRoYXQuY29tPiA0LjguMC0wLjEyCiAtIHVwZGF0ZWQgZnJvbSB0cnVuawogICAtIFBS cyBjKysvNTU3MTAsIGMrKy81NTg3OSwgYysrLzU1OTkzLCBjKysvNTYxMzUsIGMrKy81NjE1NSwg YysrLzU2Mjg1LAoKZGlmZiAtLWdpdCBhL2djYzQ4LWFzYW4tZml4LnBhdGNoIGIvZ2NjNDgtYXNh bi1maXgucGF0Y2gKaW5kZXggZGZlNmYyYi4uM2JjNzg1MiAxMDA2NDQKLS0tIGEvZ2NjNDgtYXNh bi1maXgucGF0Y2gKKysrIGIvZ2NjNDgtYXNhbi1maXgucGF0Y2gKQEAgLTEsMzEgKzEsMTk2IEBA Ci0yMDEzLTAyLTEyICBEb2RqaSBTZWtldGVsaSAgPGRvZGppQHJlZGhhdC5jb20+CisyMDEzLTAy LTE1ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KIAotCSogYXNhbi5jIChpbnN0 cnVtZW50X2J1aWx0aW5fY2FsbCk6ICBSZWFsbHkgcHV0IHRoZSBsZW5ndGggb2YgdGhlCi0Jc2Vj b25kIHNvdXJjZSBhcmd1bWVudCBpbnRvIHNyYzFfbGVuLgorCVBSIHNhbml0aXplci81NjMzMAor CSogYXNhbi5jIChnZXRfbWVtX3JlZnNfb2ZfYnVpbHRpbl9jYWxsKTogRml4IHVwIGluZGVudGF0 aW9uLgorCShpbnN0cnVtZW50X21lbV9yZWdpb25fYWNjZXNzKTogQ3JlYXRlIGNvbmRpdGlvbmFs IGV2ZW4gd2hlbgorCXRoZSBzdGFydCBoYXMgYmVlbiBhbHJlYWR5IGluc3RydW1lbnRlZC4gIERv bid0IHJlY29yZAorCWNvbmRpdGlvbmFsIGluc3RydW1lbnRhdGlvbiBpbiB0aGUgaGFzaCB0YWJs ZS4gIFVwZGF0ZSAqaXRlcgorCWFmdGVyIHNlY29uZCBidWlsZF9jaGVja19zdG10IGNhbGwuCisJ KGluc3RydW1lbnRfYnVpbHRpbl9jYWxsKTogRm9yIGNvbnNpc3RlbmN5IHRlc3QgIT0gTlVMTF9U UkVFCisJaW4gYWxsIHN0YXJ0IGNoZWNrcy4KIAotCSogYy1jKystY29tbW9uL2FzYW4vbWVtY21w LTIuYzogTmV3IHRlc3QuCisJKiBjLWMrKy1jb21tb24vYXNhbi9uby1yZWR1bmRhbnQtaW5zdHJ1 bWVudGF0aW9uLTEuYzogUGFzcworCTMgaW5zdGVhZCBvZiBzaXplb2YgKHRhYikgLSAxIGFzIGxh c3QgYXJndW1lbnQuCisJKiBjLWMrKy1jb21tb24vYXNhbi9wcjU2MzMwLmM6IE5ldyB0ZXN0Lgog Ci0tLS0gZ2NjL2FzYW4uYwotKysrIGdjYy9hc2FuLmMKLUBAIC0xNzY0LDcgKzE3NjQsNyBAQCBp bnN0cnVtZW50X2J1aWx0aW5fY2FsbCAoZ2ltcGxlX3N0bXRfaXRlcmF0b3IgKml0ZXIpCi0gCi0g ICAgICAgaWYgKGdldF9tZW1fcmVmc19vZl9idWlsdGluX2NhbGwgKGNhbGwsCi0gCQkJCQkmc3Jj MCwgJnNyYzBfbGVuLCAmc3JjMF9pc19zdG9yZSwKLS0JCQkJCSZzcmMxLCAmc3JjMF9sZW4sICZz cmMxX2lzX3N0b3JlLAotKwkJCQkJJnNyYzEsICZzcmMxX2xlbiwgJnNyYzFfaXNfc3RvcmUsCi0g CQkJCQkmZGVzdCwgJmRlc3RfbGVuLCAmZGVzdF9pc19zdG9yZSwKLSAJCQkJCSZkZXN0X2lzX2Rl cmVmKSkKLSAJewotLS0tIGdjYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2FzYW4vbWVtY21wLTIu YwotKysrIGdjYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2FzYW4vbWVtY21wLTIuYwotQEAgLTAs MCArMSwxMCBAQAorLS0tIGdjYy9hc2FuLmMuamoJMjAxMy0wMi0xNCAxNDo0NTowMS40MjgwMzg3 OTIgKzAxMDAKKysrKyBnY2MvYXNhbi5jCTIwMTMtMDItMTUgMDk6Mzc6MTguNjE0OTYzMzgzICsw MTAwCitAQCAtNzQ3LDIwICs3NDcsMTcgQEAgZ2V0X21lbV9yZWZzX29mX2J1aWx0aW5fY2FsbCAo Y29uc3QgZ2ltcAorIAorICAgICAgIGdvdF9yZWZlcmVuY2VfcCA9IHRydWU7CisgICAgIH0KKy0g ICAgZWxzZQorLSAgICAgIHsKKy0JaWYgKGRlc3QpCistCSAgeworLQkgICAgZHN0LT5zdGFydCA9 IGRlc3Q7CistCSAgICBkc3QtPmFjY2Vzc19zaXplID0gYWNjZXNzX3NpemU7CistCSAgICAqZHN0 X2xlbiA9IE5VTExfVFJFRTsKKy0JICAgICpkc3RfaXNfc3RvcmUgPSBpc19zdG9yZTsKKy0JICAg ICpkZXN0X2lzX2RlcmVmID0gdHJ1ZTsKKy0JICAgIGdvdF9yZWZlcmVuY2VfcCA9IHRydWU7Cist CSAgfQorLSAgICAgIH0KKysgIGVsc2UgaWYgKGRlc3QpCisrICAgIHsKKysgICAgICBkc3QtPnN0 YXJ0ID0gZGVzdDsKKysgICAgICBkc3QtPmFjY2Vzc19zaXplID0gYWNjZXNzX3NpemU7CisrICAg ICAgKmRzdF9sZW4gPSBOVUxMX1RSRUU7CisrICAgICAgKmRzdF9pc19zdG9yZSA9IGlzX3N0b3Jl OworKyAgICAgICpkZXN0X2lzX2RlcmVmID0gdHJ1ZTsKKysgICAgICBnb3RfcmVmZXJlbmNlX3Ag PSB0cnVlOworKyAgICB9CisgCistICAgIHJldHVybiBnb3RfcmVmZXJlbmNlX3A7CisrICByZXR1 cm4gZ290X3JlZmVyZW5jZV9wOworIH0KKyAKKyAvKiBSZXR1cm4gdHJ1ZSBpZmYgYSBnaXZlbiBn aW1wbGUgc3RhdGVtZW50IGhhcyBiZWVuIGluc3RydW1lbnRlZC4KK0BAIC0xNTM1LDggKzE1MzIs MTUgQEAgaW5zdHJ1bWVudF9tZW1fcmVnaW9uX2FjY2VzcyAodHJlZSBiYXNlLAorIAorICAgLyog SWYgdGhlIGJlZ2lubmluZyBvZiB0aGUgbWVtb3J5IHJlZ2lvbiBoYXMgYWxyZWFkeSBiZWVuCisg ICAgICBpbnN0cnVtZW50ZWQsIGRvIG5vdCBpbnN0cnVtZW50IGl0LiAgKi8KKy0gIGlmIChoYXNf bWVtX3JlZl9iZWVuX2luc3RydW1lbnRlZCAoYmFzZSwgMSkpCistICAgIGdvdG8gYWZ0ZXJfZmly c3RfaW5zdHJ1bWVudGF0aW9uOworKyAgYm9vbCBzdGFydF9pbnN0cnVtZW50ZWQgPSBoYXNfbWVt X3JlZl9iZWVuX2luc3RydW1lbnRlZCAoYmFzZSwgMSk7CisrCisrICAvKiBJZiB0aGUgZW5kIG9m IHRoZSBtZW1vcnkgcmVnaW9uIGhhcyBhbHJlYWR5IGJlZW4gaW5zdHJ1bWVudGVkLCBkbworKyAg ICAgbm90IGluc3RydW1lbnQgaXQuICovCisrICB0cmVlIGVuZCA9IGFzYW5fbWVtX3JlZl9nZXRf ZW5kIChiYXNlLCBsZW4pOworKyAgYm9vbCBlbmRfaW5zdHJ1bWVudGVkID0gaGFzX21lbV9yZWZf YmVlbl9pbnN0cnVtZW50ZWQgKGVuZCwgMSk7CisrCisrICBpZiAoc3RhcnRfaW5zdHJ1bWVudGVk ICYmIGVuZF9pbnN0cnVtZW50ZWQpCisrICAgIHJldHVybjsKKyAKKyAgIGlmICghaXNfZ2ltcGxl X2NvbnN0YW50IChsZW4pKQorICAgICB7CitAQCAtMTU2NSwzNCArMTU2OSwzNiBAQCBpbnN0cnVt ZW50X21lbV9yZWdpb25fYWNjZXNzICh0cmVlIGJhc2UsCisgICAgICAgZ3NpID0gZ3NpX3N0YXJ0 X2JiICh0aGVuX2JiKTsKKyAgICAgfQorIAorLSAgLyogSW5zdHJ1bWVudCB0aGUgYmVnaW5uaW5n IG9mIHRoZSBtZW1vcnkgcmVnaW9uIHRvIGJlIGFjY2Vzc2VkLAorLSAgICAgYW5kIGFycmFuZ2Ug Zm9yIHRoZSByZXN0IG9mIHRoZSBpbnRydW1lbnRhdGlvbiBjb2RlIHRvIGJlCistICAgICBpbnNl cnRlZCBpbiB0aGUgdGhlbiBibG9jayAqYWZ0ZXIqIHRoZSBjdXJyZW50IGdzaS4gICovCistICBi dWlsZF9jaGVja19zdG10IChsb2NhdGlvbiwgYmFzZSwgJmdzaSwgLypiZWZvcmVfcD0qL3RydWUs IGlzX3N0b3JlLCAxKTsKKy0KKy0gIGlmICh0aGVuX2JiKQorLSAgICAvKiBXZSBhcmUgaW4gdGhl IGNhc2Ugd2hlcmUgdGhlIGxlbmd0aCBvZiB0aGUgcmVnaW9uIGlzIG5vdAorLSAgICAgICBjb25z dGFudDsgc28gaW5zdHJ1bWVudGF0aW9uIGNvZGUgaXMgYmVpbmcgZ2VuZXJhdGVkIGluIHRoZQor LSAgICAgICAndGhlbiBibG9jaycgb2YgdGhlICdpZiAobGVuICE9IDApIGNvbmRpdGlvbi4gIExl dCdzIGFycmFuZ2UKKy0gICAgICAgZm9yIHRoZSBzdWJzZXF1ZW50IGluc3RydW1lbnRhdGlvbiBz dGF0ZW1lbnRzIHRvIGdvIGluIHRoZQorLSAgICAgICAndGhlbiBibG9jaycuICAqLworLSAgICBn c2kgPSBnc2lfbGFzdF9iYiAodGhlbl9iYik7CistICBlbHNlCistICAgICppdGVyID0gZ3NpOwor LQorLSAgdXBkYXRlX21lbV9yZWZfaGFzaF90YWJsZSAoYmFzZSwgMSk7CisrICBpZiAoIXN0YXJ0 X2luc3RydW1lbnRlZCkKKysgICAgeworKyAgICAgIC8qIEluc3RydW1lbnQgdGhlIGJlZ2lubmlu ZyBvZiB0aGUgbWVtb3J5IHJlZ2lvbiB0byBiZSBhY2Nlc3NlZCwKKysJIGFuZCBhcnJhbmdlIGZv ciB0aGUgcmVzdCBvZiB0aGUgaW50cnVtZW50YXRpb24gY29kZSB0byBiZQorKwkgaW5zZXJ0ZWQg aW4gdGhlIHRoZW4gYmxvY2sgKmFmdGVyKiB0aGUgY3VycmVudCBnc2kuICAqLworKyAgICAgIGJ1 aWxkX2NoZWNrX3N0bXQgKGxvY2F0aW9uLCBiYXNlLCAmZ3NpLCAvKmJlZm9yZV9wPSovdHJ1ZSwg aXNfc3RvcmUsIDEpOworKworKyAgICAgIGlmICh0aGVuX2JiKQorKwkvKiBXZSBhcmUgaW4gdGhl IGNhc2Ugd2hlcmUgdGhlIGxlbmd0aCBvZiB0aGUgcmVnaW9uIGlzIG5vdAorKwkgICBjb25zdGFu dDsgc28gaW5zdHJ1bWVudGF0aW9uIGNvZGUgaXMgYmVpbmcgZ2VuZXJhdGVkIGluIHRoZQorKwkg ICAndGhlbiBibG9jaycgb2YgdGhlICdpZiAobGVuICE9IDApIGNvbmRpdGlvbi4gIExldCdzIGFy cmFuZ2UKKysJICAgZm9yIHRoZSBzdWJzZXF1ZW50IGluc3RydW1lbnRhdGlvbiBzdGF0ZW1lbnRz IHRvIGdvIGluIHRoZQorKwkgICAndGhlbiBibG9jaycuICAqLworKwlnc2kgPSBnc2lfbGFzdF9i YiAodGhlbl9iYik7CisrICAgICAgZWxzZQorKyAgICAgICAgeworKyAgICAgICAgICAqaXRlciA9 IGdzaTsKKysJICAvKiBEb24ndCByZW1lbWJlciB0aGlzIGFjY2VzcyBhcyBpbnN0cnVtZW50ZWQs IGlmIGxlbmd0aAorKwkgICAgIGlzIHVua25vd24uICBJdCBtaWdodCBiZSB6ZXJvIGFuZCBub3Qg YmVpbmcgYWN0dWFsbHkKKysJICAgICBpbnN0cnVtZW50ZWQsIHNvIHdlIGNhbid0IHJlbHkgb24g aXQgYmVpbmcgaW5zdHJ1bWVudGVkLiAgKi8KKysgICAgICAgICAgdXBkYXRlX21lbV9yZWZfaGFz aF90YWJsZSAoYmFzZSwgMSk7CisrCX0KKysgICAgfQorIAorLSBhZnRlcl9maXJzdF9pbnN0cnVt ZW50YXRpb246CisrICBpZiAoZW5kX2luc3RydW1lbnRlZCkKKysgICAgcmV0dXJuOworIAorICAg LyogV2Ugd2FudCB0byBpbnN0cnVtZW50IHRoZSBhY2Nlc3MgYXQgdGhlIGVuZCBvZiB0aGUgbWVt b3J5IHJlZ2lvbiwKKyAgICAgIHdoaWNoIGlzIGF0IChiYXNlICsgbGVuIC0gMSkuICAqLworIAor LSAgLyogSWYgdGhlIGVuZCBvZiB0aGUgbWVtb3J5IHJlZ2lvbiBoYXMgYWxyZWFkeSBiZWVuIGlu c3RydW1lbnRlZCwgZG8KKy0gICAgIG5vdCBpbnN0cnVtZW50IGl0LiAqLworLSAgdHJlZSBlbmQg PSBhc2FuX21lbV9yZWZfZ2V0X2VuZCAoYmFzZSwgbGVuKTsKKy0gIGlmIChoYXNfbWVtX3JlZl9i ZWVuX2luc3RydW1lbnRlZCAoZW5kLCAxKSkKKy0gICAgcmV0dXJuOworLQorICAgLyogb2Zmc2V0 ID0gbGVuIC0gMTsgICovCisgICBsZW4gPSB1bnNoYXJlX2V4cHIgKGxlbik7CisgICB0cmVlIG9m ZnNldDsKK0BAIC0xNjQwLDcgKzE2NDYsMTAgQEAgaW5zdHJ1bWVudF9tZW1fcmVnaW9uX2FjY2Vz cyAodHJlZSBiYXNlLAorICAgZ2ltcGxlX3NldF9sb2NhdGlvbiAocmVnaW9uX2VuZCwgbG9jYXRp b24pOworICAgZ2ltcGxlX3NlcV9hZGRfc3RtdF93aXRob3V0X3VwZGF0ZSAoJnNlcSwgcmVnaW9u X2VuZCk7CisgICBnc2lfaW5zZXJ0X3NlcV9iZWZvcmUgKCZnc2ksIHNlcSwgR1NJX1NBTUVfU1RN VCk7CistICBnc2lfcHJldiAoJmdzaSk7CisrICBpZiAoIXN0YXJ0X2luc3RydW1lbnRlZCB8fCB0 aGVuX2JiID09IE5VTEwpCisrICAgIGdzaV9wcmV2ICgmZ3NpKTsKKysgIGVsc2UKKysgICAgZ3Np ID0gZ3NpX2xhc3RfYmIgKHRoZW5fYmIpOworIAorICAgLyogXzIgPSBfMSArIG9mZnNldDsgICov CisgICByZWdpb25fZW5kID0KK0BAIC0xNjU1LDcgKzE2NjQsMTAgQEAgaW5zdHJ1bWVudF9tZW1f cmVnaW9uX2FjY2VzcyAodHJlZSBiYXNlLAorICAgYnVpbGRfY2hlY2tfc3RtdCAobG9jYXRpb24s IGdpbXBsZV9hc3NpZ25fbGhzIChyZWdpb25fZW5kKSwKKyAJCSAgICAmZ3NpLCAvKmJlZm9yZV9w PSovZmFsc2UsIGlzX3N0b3JlLCAxKTsKKyAKKy0gIHVwZGF0ZV9tZW1fcmVmX2hhc2hfdGFibGUg KGVuZCwgMSk7CisrICBpZiAodGhlbl9iYiA9PSBOVUxMKQorKyAgICB1cGRhdGVfbWVtX3JlZl9o YXNoX3RhYmxlIChlbmQsIDEpOworKworKyAgKml0ZXIgPSBnc2lfZm9yX3N0bXQgKGdzaV9zdG10 ICgqaXRlcikpOworIH0KKyAKKyAvKiBJbnN0cnVtZW50IHRoZSBjYWxsICh0byB0aGUgYnVpbHRp biBzdHJsZW4gZnVuY3Rpb24pIHBvaW50ZWQgdG8gYnkKK0BAIC0xNzgzLDcgKzE3OTUsNyBAQCBp bnN0cnVtZW50X2J1aWx0aW5fY2FsbCAoZ2ltcGxlX3N0bXRfaXRlCisgCSAgICB9CisgCSAgZWxz ZSBpZiAoc3JjMF9sZW4gfHwgc3JjMV9sZW4gfHwgZGVzdF9sZW4pCisgCSAgICB7CistCSAgICAg IGlmIChzcmMwLnN0YXJ0KQorKwkgICAgICBpZiAoc3JjMC5zdGFydCAhPSBOVUxMX1RSRUUpCisg CQlpbnN0cnVtZW50X21lbV9yZWdpb25fYWNjZXNzIChzcmMwLnN0YXJ0LCBzcmMwX2xlbiwKKyAJ CQkJCSAgICAgIGl0ZXIsIGxvYywgLyppc19zdG9yZT0qL2ZhbHNlKTsKKyAJICAgICAgaWYgKHNy YzEuc3RhcnQgIT0gTlVMTF9UUkVFKQorLS0tIGdjYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2Fz YW4vbm8tcmVkdW5kYW50LWluc3RydW1lbnRhdGlvbi0xLmMuamoJMjAxMy0wMi0xMyAxMTo1Mzo0 MS4wMDAwMDAwMDAgKzAxMDAKKysrKyBnY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9hc2FuL25v LXJlZHVuZGFudC1pbnN0cnVtZW50YXRpb24tMS5jCTIwMTMtMDItMTUgMDk6NTE6NDcuNDg1MDgw NzA2ICswMTAwCitAQCAtNDUsNyArNDUsNyBAQCB0ZXN0MSAoKQorICAgLyogVGhlcmUgYXJlIDIg Y2FsbHMgdG8gX19idWlsdGluX19fYXNhbl9yZXBvcnRfc3RvcmUxIGFuZCAyIGNhbGxzCisgICAg ICB0byBfX2J1aWx0aW5fX19hc2FuX3JlcG9ydF9sb2FkMSB0byBpbnN0cnVtZW50IHRoZSBzdG9y ZSB0bworICAgICAgKHN1YnNldCBvZikgdGhlIG1lbW9yeSByZWdpb24gb2YgdGFiLiAgKi8KKy0g IF9fYnVpbHRpbl9tZW1jcHkgKCZ0YWJbMV0sIGZvbywgc2l6ZW9mICh0YWIpIC0gMSk7CisrICBf X2J1aWx0aW5fbWVtY3B5ICgmdGFiWzFdLCBmb28sIDMpOworIAorICAgLyogVGhpcyBzaG91bGQg bm90IGdlbmVyYXRlIGEgX19idWlsdGluX19fYXNhbl9yZXBvcnRfbG9hZDEgYmVjYXVzZQorICAg ICAgdGhlIHJlZmVyZW5jZSB0byB0YWJbMV0gaGFzIGJlZW4gYWxyZWFkeSBpbnN0cnVtZW50ZWQg YWJvdmUuICAqLworLS0tIGdjYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2FzYW4vcHI1NjMzMC5j LmpqCTIwMTMtMDItMTUgMDk6NDM6MTkuMjkzODQ1MTQ2ICswMTAwCisrKysgZ2NjL3Rlc3RzdWl0 ZS9jLWMrKy1jb21tb24vYXNhbi9wcjU2MzMwLmMJMjAxMy0wMi0xNSAwOTo0Mjo1OC4wMDAwMDAw MDAgKzAxMDAKK0BAIC0wLDAgKzEsMjMgQEAKKysvKiBQUiBzYW5pdGl6ZXIvNTYzMzAgKi8KICsv KiB7IGRnLWRvIGNvbXBpbGUgfSAqLwogKwotK2ludAotK2ZvbyAoKQorK2NoYXIgZVsyMDBdOwor KworK3N0cnVjdCBTCiArewotKyAgY2hhciBzMFs1XSA9IHswfTsKLSsgIGNoYXIgczFbNV0gPSB7 MX07CisrICBjaGFyIGFbMTAwXTsKKysgIGNoYXIgYlsxMDBdOworK30gczsKICsKLSsgIHJldHVy biBfX2J1aWx0aW5fbWVtY21wIChzMCwgczEsIDIpOworK3ZvaWQKKytmb28gKHZvaWQpCisrewor KyAgX19idWlsdGluX21lbWNtcCAocy5hLCBlLCAxMDApOworKyAgX19idWlsdGluX21lbWNtcCAo cy5hLCBlLCAyMDApOworK30KKysKKyt2b2lkCisrYmFyIChpbnQgKmEsIGNoYXIgKmIsIGNoYXIg KmMpCisreworKyAgX19idWlsdGluX21lbW1vdmUgKGMsIGIsIGFbYlswXV0pOwogK30KCmRpZmYg LS1naXQgYS9nY2M0OC1hc2FuLXNwZWVkdXAucGF0Y2ggYi9nY2M0OC1hc2FuLXNwZWVkdXAucGF0 Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjdhMzNmMwotLS0gL2Rldi9u dWxsCisrKyBiL2djYzQ4LWFzYW4tc3BlZWR1cC5wYXRjaApAQCAtMCwwICsxLDUzNSBAQAorMjAx My0wMi0xNSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CisKKwkqIGNvbmZpZy9p Mzg2L2kzODYuYzogVXNlIDB4N2ZmZjgwMDAgYXMgYXNhbl9zaGFkb3dfb2Zmc2V0IG9uIHg4Nl82 NAorCWxpbnV4LgorCisJKiBBbGwgc291cmNlIGZpbGVzOiBNZXJnZSBmcm9tIHVwc3RyZWFtLgor CistLS0gZ2NjL2NvbmZpZy9pMzg2L2kzODYuYy5qagkyMDEzLTAyLTEzIDE3OjA0OjM0LjAwMDAw MDAwMCArMDEwMAorKysrIGdjYy9jb25maWcvaTM4Ni9pMzg2LmMJMjAxMy0wMi0xNSAxMzoyNzo0 Ny42NzQ4MzI5OTQgKzAxMDAKK0BAIC01NDM2LDcgKzU0MzYsOCBAQCBpeDg2X2xlZ2l0aW1hdGVf Y29tYmluZWRfaW5zbiAocnR4IGluc24pCisgc3RhdGljIHVuc2lnbmVkIEhPU1RfV0lERV9JTlQK KyBpeDg2X2FzYW5fc2hhZG93X29mZnNldCAodm9pZCkKKyB7CistICByZXR1cm4gVEFSR0VUX0xQ NjQgPyAoSE9TVF9XSURFX0lOVF8xIDw8IDQ0KQorKyAgcmV0dXJuIFRBUkdFVF9MUDY0ID8gKFRB UkdFVF9NQUNITyA/IChIT1NUX1dJREVfSU5UXzEgPDwgNDQpCisrCQkJCSAgICAgOiBIT1NUX1dJ REVfSU5UX0MgKDB4N2ZmZjgwMDApKQorIAkJICAgICA6IChIT1NUX1dJREVfSU5UXzEgPDwgMjkp OworIH0KKyAMCistLS0gbGlic2FuaXRpemVyL3Nhbml0aXplcl9jb21tb24vc2FuaXRpemVyX2lu dGVybmFsX2RlZnMuaC5qagkyMDEzLTAyLTEzIDExOjUzOjQzLjQwMzMzNjM0MiArMDEwMAorKysr IGxpYnNhbml0aXplci9zYW5pdGl6ZXJfY29tbW9uL3Nhbml0aXplcl9pbnRlcm5hbF9kZWZzLmgJ MjAxMy0wMi0xNSAxMzoyNDoxNy40MTAwMzMxMzcgKzAxMDAKK0BAIC0yOSw3ICsyOSw3IEBACisg IyBkZWZpbmUgU0FOSVRJWkVSX1NVUFBPUlRTX1dFQUtfSE9PS1MgMAorICNlbmRpZgorIAorLS8v IF9faGFzX2ZlYXR1cmUKKysvLyBHQ0MgZG9lcyBub3QgdW5kZXJzdGFuZCBfX2hhc19mZWF0dXJl CisgI2lmICFkZWZpbmVkKF9faGFzX2ZlYXR1cmUpCisgIyBkZWZpbmUgX19oYXNfZmVhdHVyZSh4 KSAwCisgI2VuZGlmCistLS0gbGlic2FuaXRpemVyL3Nhbml0aXplcl9jb21tb24vc2FuaXRpemVy X2xpbnV4LmNjLmpqCTIwMTMtMDItMTMgMTE6NTM6NDMuNDAyMzM2MzQ3ICswMTAwCisrKysgbGli c2FuaXRpemVyL3Nhbml0aXplcl9jb21tb24vc2FuaXRpemVyX2xpbnV4LmNjCTIwMTMtMDItMTUg MTM6MjQ6MTcuNDEwMDMzMTM3ICswMTAwCitAQCAtMjMyLDYgKzIzMiwyMSBAQCBjb25zdCBjaGFy ICpHZXRFbnYoY29uc3QgY2hhciAqbmFtZSkgeworICAgcmV0dXJuIDA7ICAvLyBOb3QgZm91bmQu CisgfQorIAorKyNpZmRlZiBfX0dMSUJDX18KKysKKytleHRlcm4gIkMiIHsKKysgIGV4dGVybiB2 b2lkICpfX2xpYmNfc3RhY2tfZW5kOworK30KKysKKytzdGF0aWMgdm9pZCBHZXRBcmdzQW5kRW52 KGNoYXIgKioqYXJndiwgY2hhciAqKiplbnZwKSB7CisrICB1cHRyICpzdGFja19lbmQgPSAodXB0 ciAqKV9fbGliY19zdGFja19lbmQ7CisrICBpbnQgYXJnYyA9ICpzdGFja19lbmQ7CisrICAqYXJn diA9IChjaGFyKiopKHN0YWNrX2VuZCArIDEpOworKyAgKmVudnAgPSAoY2hhcioqKShzdGFja19l bmQgKyBhcmdjICsgMik7CisrfQorKworKyNlbHNlICAvLyBfX0dMSUJDX18KKysKKyBzdGF0aWMg dm9pZCBSZWFkTnVsbFNlcEZpbGVUb0FycmF5KGNvbnN0IGNoYXIgKnBhdGgsIGNoYXIgKioqYXJy LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGFycl9zaXplKSB7Cisg ICBjaGFyICpidWZmOworQEAgLTI1MSwxMSArMjY2LDE3IEBAIHN0YXRpYyB2b2lkIFJlYWROdWxs U2VwRmlsZVRvQXJyYXkoY29uc3QKKyAgICgqYXJyKVtjb3VudF0gPSAwOworIH0KKyAKKytzdGF0 aWMgdm9pZCBHZXRBcmdzQW5kRW52KGNoYXIgKioqYXJndiwgY2hhciAqKiplbnZwKSB7CisrICBz dGF0aWMgY29uc3QgaW50IGtNYXhBcmd2ID0gMjAwMCwga01heEVudnAgPSAyMDAwOworKyAgUmVh ZE51bGxTZXBGaWxlVG9BcnJheSgiL3Byb2Mvc2VsZi9jbWRsaW5lIiwgYXJndiwga01heEFyZ3Yp OworKyAgUmVhZE51bGxTZXBGaWxlVG9BcnJheSgiL3Byb2Mvc2VsZi9lbnZpcm9uIiwgZW52cCwg a01heEVudnApOworK30KKysKKysjZW5kaWYgIC8vIF9fR0xJQkNfXworKworIHZvaWQgUmVFeGVj KCkgeworLSAgc3RhdGljIGNvbnN0IGludCBrTWF4QXJndiA9IDEwMCwga01heEVudnAgPSAxMDAw OworICAgY2hhciAqKmFyZ3YsICoqZW52cDsKKy0gIFJlYWROdWxsU2VwRmlsZVRvQXJyYXkoIi9w cm9jL3NlbGYvY21kbGluZSIsICZhcmd2LCBrTWF4QXJndik7CistICBSZWFkTnVsbFNlcEZpbGVU b0FycmF5KCIvcHJvYy9zZWxmL2Vudmlyb24iLCAmZW52cCwga01heEVudnApOworKyAgR2V0QXJn c0FuZEVudigmYXJndiwgJmVudnApOworICAgZXhlY3ZlKGFyZ3ZbMF0sIGFyZ3YsIGVudnApOwor IH0KKyAKKy0tLSBsaWJzYW5pdGl6ZXIvYXNhbi9hc2FuX2ludGVybmFsLmguamoJMjAxMy0wMi0x MyAxMTo1Mzo0NC4zNzczMzA5MzggKzAxMDAKKysrKyBsaWJzYW5pdGl6ZXIvYXNhbi9hc2FuX2lu dGVybmFsLmgJMjAxMy0wMi0xNSAxMzoyNDoxNy40MTIwMzMzMTkgKzAxMDAKK0BAIC01Miw3ICs1 Miw3IEBACisgCisgI2RlZmluZSBBU0FOX1BPU0lYIChBU0FOX0xJTlVYIHx8IEFTQU5fTUFDKQor IAorLSNpZiBfX2hhc19mZWF0dXJlKGFkZHJlc3Nfc2FuaXRpemVyKQorKyNpZiBfX2hhc19mZWF0 dXJlKGFkZHJlc3Nfc2FuaXRpemVyKSB8fCBkZWZpbmVkKF9fU0FOSVRJWkVfQUREUkVTU19fKQor ICMgZXJyb3IgIlRoZSBBZGRyZXNzU2FuaXRpemVyIHJ1bi10aW1lIHNob3VsZCBub3QgYmUiCisg ICAgICAgICAiIGluc3RydW1lbnRlZCBieSBBZGRyZXNzU2FuaXRpemVyIgorICNlbmRpZgorLS0t IGxpYnNhbml0aXplci9hc2FuL2FzYW5fbWFjLmNjLmpqCTIwMTMtMDItMTMgMTE6NTM6NDQuMzk3 MzMwODMyICswMTAwCisrKysgbGlic2FuaXRpemVyL2FzYW4vYXNhbl9tYWMuY2MJMjAxMy0wMi0x NSAxMzoyNDoxNy40MTIwMzMzMTkgKzAxMDAKK0BAIC0xMDQsNyArMTA0LDI0IEBAIHZvaWQgTWF5 YmVSZWV4ZWMoKSB7CisgICAgIF9OU0dldEV4ZWN1dGFibGVQYXRoKHByb2dyYW1fbmFtZSwgJmJ1 Zl9zaXplKTsKKyAgICAgLy8gT2sgdG8gdXNlIHNldGVudigpIHNpbmNlIHRoZSB3cmFwcGVycyBk b24ndCBkZXBlbmQgb24gdGhlIHZhbHVlIG9mCisgICAgIC8vIGFzYW5faW5pdGVkLgorLSAgICBz ZXRlbnYoa0R5bGRJbnNlcnRMaWJyYXJpZXMsIGluZm8uZGxpX2ZuYW1lLCAvKm92ZXJ3cml0ZSov MCk7CisrICAgIGlmIChkeWxkX2luc2VydF9saWJyYXJpZXMpIHsKKysgICAgICAvLyBBcHBlbmQg dGhlIHJ1bnRpbWUgZHlsaWIgbmFtZSB0byB0aGUgZXhpc3RpbmcgdmFsdWUgb2YKKysgICAgICAv LyBEWUxEX0lOU0VSVF9MSUJSQVJJRVMuCisrICAgICAgdXB0ciBvbGRfZW52X2xlbiA9IGludGVy bmFsX3N0cmxlbihkeWxkX2luc2VydF9saWJyYXJpZXMpOworKyAgICAgIHVwdHIgZm5hbWVfbGVu ID0gaW50ZXJuYWxfc3RybGVuKGluZm8uZGxpX2ZuYW1lKTsKKysgICAgICBMb3dMZXZlbEFsbG9j YXRvciBhbGxvY2F0b3JfZm9yX2VudjsKKysgICAgICBjaGFyICpuZXdfZW52ID0KKysgICAgICAg ICAgKGNoYXIqKWFsbG9jYXRvcl9mb3JfZW52LkFsbG9jYXRlKG9sZF9lbnZfbGVuICsgZm5hbWVf bGVuICsgMik7CisrICAgICAgaW50ZXJuYWxfc3RybmNweShuZXdfZW52LCBkeWxkX2luc2VydF9s aWJyYXJpZXMsIG9sZF9lbnZfbGVuKTsKKysgICAgICBuZXdfZW52W29sZF9lbnZfbGVuXSA9ICc6 JzsKKysgICAgICAvLyBDb3B5IGZuYW1lX2xlbiBhbmQgYWRkIGEgdHJhaWxpbmcgemVyby4KKysg ICAgICBpbnRlcm5hbF9zdHJuY3B5KG5ld19lbnYgKyBvbGRfZW52X2xlbiArIDEsIGluZm8uZGxp X2ZuYW1lLAorKyAgICAgICAgICAgICAgICAgICAgICAgZm5hbWVfbGVuICsgMSk7CisrICAgICAg c2V0ZW52KGtEeWxkSW5zZXJ0TGlicmFyaWVzLCBuZXdfZW52LCAvKm92ZXJ3cml0ZSovMSk7Cisr ICAgIH0gZWxzZSB7CisrICAgICAgLy8gU2V0IERZTERfSU5TRVJUX0xJQlJBUklFUyBlcXVhbCB0 byB0aGUgcnVudGltZSBkeWxpYiBuYW1lLgorKyAgICAgIHNldGVudihrRHlsZEluc2VydExpYnJh cmllcywgaW5mby5kbGlfZm5hbWUsIC8qb3ZlcndyaXRlKi8wKTsKKysgICAgfQorICAgICBpZiAo ZmxhZ3MoKS0+dmVyYm9zaXR5ID49IDEpIHsKKyAgICAgICBSZXBvcnQoImV4ZWMoKS1pbmcgdGhl IHByb2dyYW0gd2l0aFxuIik7CisgICAgICAgUmVwb3J0KCIlcz0lc1xuIiwga0R5bGRJbnNlcnRM aWJyYXJpZXMsIGluZm8uZGxpX2ZuYW1lKTsKKy0tLSBsaWJzYW5pdGl6ZXIvYXNhbi9hc2FuX21h cHBpbmcuaC5qagkyMDEzLTAyLTEzIDE3OjA0OjM0LjY4MDE5ODc1MyArMDEwMAorKysrIGxpYnNh bml0aXplci9hc2FuL2FzYW5fbWFwcGluZy5oCTIwMTMtMDItMTUgMTM6MjY6MjUuODQ2MzAxNzQ5 ICswMTAwCitAQCAtMSw3ICsxLDUgQEAKKyAvLz09PS0tIGFzYW5fbWFwcGluZy5oIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLworIC8vCist Ly8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQor LS8vCisgLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9m IElsbGlub2lzIE9wZW4gU291cmNlCisgLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBk ZXRhaWxzLgorIC8vCitAQCAtMTgsNiArMTYsMzcgQEAKKyAKKyAvLyBUaGUgZnVsbCBleHBsYW5h dGlvbiBvZiB0aGUgbWVtb3J5IG1hcHBpbmcgY291bGQgYmUgZm91bmQgaGVyZToKKyAvLyBodHRw Oi8vY29kZS5nb29nbGUuY29tL3AvYWRkcmVzcy1zYW5pdGl6ZXIvd2lraS9BZGRyZXNzU2FuaXRp emVyQWxnb3JpdGhtCisrLy8KKysvLyBUeXBpY2FsIHNoYWRvdyBtYXBwaW5nIG9uIExpbnV4L3g4 Nl82NCB3aXRoIFNIQURPV19PRkZTRVQgPT0gMHgwMDAwN2ZmZjgwMDA6CisrLy8gfHwgYFsweDEw MDA3ZmZmODAwMCwgMHg3ZmZmZmZmZmZmZmZdYCB8fCBIaWdoTWVtICAgIHx8CisrLy8gfHwgYFsw eDAyMDA4ZmZmNzAwMCwgMHgxMDAwN2ZmZjdmZmZdYCB8fCBIaWdoU2hhZG93IHx8CisrLy8gfHwg YFsweDAwMDA4ZmZmNzAwMCwgMHgwMjAwOGZmZjZmZmZdYCB8fCBTaGFkb3dHYXAgIHx8CisrLy8g fHwgYFsweDAwMDA3ZmZmODAwMCwgMHgwMDAwOGZmZjZmZmZdYCB8fCBMb3dTaGFkb3cgIHx8Cisr Ly8gfHwgYFsweDAwMDAwMDAwMDAwMCwgMHgwMDAwN2ZmZjdmZmZdYCB8fCBMb3dNZW0gICAgIHx8 CisrLy8KKysvLyBXaGVuIFNIQURPV19PRkZTRVQgaXMgemVybyAoLXBpZSk6CisrLy8gfHwgYFsw eDEwMDAwMDAwMDAwMCwgMHg3ZmZmZmZmZmZmZmZdYCB8fCBIaWdoTWVtICAgIHx8CisrLy8gfHwg YFsweDAyMDAwMDAwMDAwMCwgMHgwZmZmZmZmZmZmZmZdYCB8fCBIaWdoU2hhZG93IHx8CisrLy8g fHwgYFsweDAwMDAwMDA0MDAwMCwgMHgwMWZmZmZmZmZmZmZdYCB8fCBTaGFkb3dHYXAgIHx8Cisr Ly8KKysvLyBTcGVjaWFsIGNhc2Ugd2hlbiBzb21ldGhpbmcgaXMgYWxyZWFkeSBtYXBwZWQgYmV0 d2VlbgorKy8vIDB4MDAzMDAwMDAwMDAwIGFuZCAweDAwNDAwMDAwMDAwMCAoZS5nLiB3aGVuIHBy ZWxpbmsgaXMgaW5zdGFsbGVkKToKKysvLyB8fCBgWzB4MTAwMDdmZmY4MDAwLCAweDdmZmZmZmZm ZmZmZl1gIHx8IEhpZ2hNZW0gICAgfHwKKysvLyB8fCBgWzB4MDIwMDhmZmY3MDAwLCAweDEwMDA3 ZmZmN2ZmZl1gIHx8IEhpZ2hTaGFkb3cgfHwKKysvLyB8fCBgWzB4MDA0MDAwMDAwMDAwLCAweDAy MDA4ZmZmNmZmZl1gIHx8IFNoYWRvd0dhcDMgfHwKKysvLyB8fCBgWzB4MDAzMDAwMDAwMDAwLCAw eDAwM2ZmZmZmZmZmZl1gIHx8IE1pZE1lbSAgICAgfHwKKysvLyB8fCBgWzB4MDAwODdmZmY4MDAw LCAweDAwMmZmZmZmZmZmZl1gIHx8IFNoYWRvd0dhcDIgfHwKKysvLyB8fCBgWzB4MDAwNjdmZmY4 MDAwLCAweDAwMDg3ZmZmN2ZmZl1gIHx8IE1pZFNoYWRvdyAgfHwKKysvLyB8fCBgWzB4MDAwMDhm ZmY3MDAwLCAweDAwMDY3ZmZmN2ZmZl1gIHx8IFNoYWRvd0dhcCAgfHwKKysvLyB8fCBgWzB4MDAw MDdmZmY4MDAwLCAweDAwMDA4ZmZmNmZmZl1gIHx8IExvd1NoYWRvdyAgfHwKKysvLyB8fCBgWzB4 MDAwMDAwMDAwMDAwLCAweDAwMDA3ZmZmN2ZmZl1gIHx8IExvd01lbSAgICAgfHwKKysvLworKy8v IERlZmF1bHQgTGludXgvaTM4NiBtYXBwaW5nOgorKy8vIHx8IGBbMHg0MDAwMDAwMCwgMHhmZmZm ZmZmZl1gIHx8IEhpZ2hNZW0gICAgfHwKKysvLyB8fCBgWzB4MjgwMDAwMDAsIDB4M2ZmZmZmZmZd YCB8fCBIaWdoU2hhZG93IHx8CisrLy8gfHwgYFsweDI0MDAwMDAwLCAweDI3ZmZmZmZmXWAgfHwg U2hhZG93R2FwICB8fAorKy8vIHx8IGBbMHgyMDAwMDAwMCwgMHgyM2ZmZmZmZl1gIHx8IExvd1No YWRvdyAgfHwKKysvLyB8fCBgWzB4MDAwMDAwMDAsIDB4MWZmZmZmZmZdYCB8fCBMb3dNZW0gICAg IHx8CisgCisgI2lmIEFTQU5fRkxFWElCTEVfTUFQUElOR19BTkRfT0ZGU0VUID09IDEKKyBleHRl cm4gU0FOSVRJWkVSX0lOVEVSRkFDRV9BVFRSSUJVVEUgdXB0ciBfX2FzYW5fbWFwcGluZ19zY2Fs ZTsKK0BAIC0zNiw3ICs2NSwxMSBAQCBleHRlcm4gU0FOSVRJWkVSX0lOVEVSRkFDRV9BVFRSSUJV VEUgdXB0CisgIyAgIGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAjICAgIGRlZmluZSBTSEFE T1dfT0ZGU0VUICgxVUxMIDw8IDQxKQorICMgICBlbHNlCistIyAgICBkZWZpbmUgU0hBRE9XX09G RlNFVCAoMVVMTCA8PCA0NCkKKysjICAgIGlmIEFTQU5fTUFDCisrIyAgICAgZGVmaW5lIFNIQURP V19PRkZTRVQgKDFVTEwgPDwgNDQpCisrIyAgICBlbHNlCisrIyAgICAgZGVmaW5lIFNIQURPV19P RkZTRVQgMHg3ZmZmODAwMFVMTAorKyMgICAgZW5kaWYKKyAjICAgZW5kaWYKKyAjICBlbmRpZgor ICMgZW5kaWYKK0BAIC01Nyw0OSArOTAsMTA1IEBAIGV4dGVybiBTQU5JVElaRVJfSU5URVJGQUNF X0FUVFJJQlVURSB1cHQKKyAjZGVmaW5lIGtIaWdoU2hhZG93QmVnICBNRU1fVE9fU0hBRE9XKGtI aWdoTWVtQmVnKQorICNkZWZpbmUga0hpZ2hTaGFkb3dFbmQgIE1FTV9UT19TSEFET1coa0hpZ2hN ZW1FbmQpCisgCisrIyBkZWZpbmUga01pZFNoYWRvd0JlZyBNRU1fVE9fU0hBRE9XKGtNaWRNZW1C ZWcpCisrIyBkZWZpbmUga01pZFNoYWRvd0VuZCBNRU1fVE9fU0hBRE9XKGtNaWRNZW1FbmQpCisr CisgLy8gV2l0aCB0aGUgemVybyBzaGFkb3cgYmFzZSB3ZSBjYW4gbm90IGFjdHVhbGx5IG1hcCBw YWdlcyBzdGFydGluZyBmcm9tIDAuCisgLy8gVGhpcyBjb25zdGFudCBpcyBzb21ld2hhdCBhcmJp dHJhcnkuCisgI2RlZmluZSBrWmVyb0Jhc2VTaGFkb3dTdGFydCAoMSA8PCAxOCkKKyAKKyAjZGVm aW5lIGtTaGFkb3dHYXBCZWcgICAoa0xvd1NoYWRvd0VuZCA/IGtMb3dTaGFkb3dFbmQgKyAxIFwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGtaZXJvQmFzZVNoYWRv d1N0YXJ0KQorLSNkZWZpbmUga1NoYWRvd0dhcEVuZCAgIChrSGlnaFNoYWRvd0JlZyAtIDEpCisr I2RlZmluZSBrU2hhZG93R2FwRW5kICAgKChrTWlkTWVtQmVnID8ga01pZFNoYWRvd0JlZyA6IGtI aWdoU2hhZG93QmVnKSAtIDEpCisrCisrI2RlZmluZSBrU2hhZG93R2FwMkJlZyAoa01pZE1lbUJl ZyA/IGtNaWRTaGFkb3dFbmQgKyAxIDogMCkKKysjZGVmaW5lIGtTaGFkb3dHYXAyRW5kIChrTWlk TWVtQmVnID8ga01pZE1lbUJlZyAtIDEgOiAwKQorKworKyNkZWZpbmUga1NoYWRvd0dhcDNCZWcg KGtNaWRNZW1CZWcgPyBrTWlkTWVtRW5kICsgMSA6IDApCisrI2RlZmluZSBrU2hhZG93R2FwM0Vu ZCAoa01pZE1lbUJlZyA/IGtIaWdoU2hhZG93QmVnIC0gMSA6IDApCisrCisrI2RlZmluZSBET19B U0FOX01BUFBJTkdfUFJPRklMRSAwICAvLyBTZXQgdG8gMSB0byBwcm9maWxlIHRoZSBmdW5jdGlv bnMgYmVsb3cuCisrCisrI2lmIERPX0FTQU5fTUFQUElOR19QUk9GSUxFCisrIyBkZWZpbmUgUFJP RklMRV9BU0FOX01BUFBJTkcoKSBBc2FuTWFwcGluZ1Byb2ZpbGVbX19MSU5FX19dKys7CisrI2Vs c2UKKysjIGRlZmluZSBQUk9GSUxFX0FTQU5fTUFQUElORygpCisrI2VuZGlmCisrCisrLy8gSWYg MSwgYWxsIHNoYWRvdyBib3VuZGFyaWVzIGFyZSBjb25zdGFudHMuCisrLy8gRG9uJ3Qgc2V0IHRv IDEgb3RoZXIgdGhhbiBmb3IgdGVzdGluZy4KKysjZGVmaW5lIEFTQU5fRklYRURfTUFQUElORyAw CisgCisgbmFtZXNwYWNlIF9fYXNhbiB7CisgCisrZXh0ZXJuIHVwdHIgQXNhbk1hcHBpbmdQcm9m aWxlW107CisrCisrI2lmIEFTQU5fRklYRURfTUFQUElORworKy8vIEZpeGVkIG1hcHBpbmcgZm9y IDY0LWJpdCBMaW51eC4gTW9zdGx5IHVzZWQgZm9yIHBlcmZvcm1hbmNlIGNvbXBhcmlzb24KKysv LyB3aXRoIG5vbi1maXhlZCBtYXBwaW5nLiBBcyBvZiByMTc1MjUzIChGZWIgMjAxMykgdGhlIHBl cmZvcm1hbmNlCisrLy8gZGlmZmVyZW5jZSBiZXR3ZWVuIGZpeGVkIGFuZCBub24tZml4ZWQgbWFw cGluZyBpcyBiZWxvdyB0aGUgbm9pc2UgbGV2ZWwuCisrc3RhdGljIHVwdHIga0hpZ2hNZW1FbmQg PSAweDdmZmZmZmZmZmZmZlVMTDsKKytzdGF0aWMgdXB0ciBrTWlkTWVtQmVnID0gICAgMHgzMDAw MDAwMDAwVUxMOworK3N0YXRpYyB1cHRyIGtNaWRNZW1FbmQgPSAgICAweDNmZmZmZmZmZmZVTEw7 CisrI2Vsc2UKKyBTQU5JVElaRVJfSU5URVJGQUNFX0FUVFJJQlVURQorLWV4dGVybiB1cHRyIGtI aWdoTWVtRW5kOyAgLy8gSW5pdGlhbGl6ZWQgaW4gX19hc2FuX2luaXQuCisrZXh0ZXJuIHVwdHIg a0hpZ2hNZW1FbmQsIGtNaWRNZW1CZWcsIGtNaWRNZW1FbmQ7ICAvLyBJbml0aWFsaXplZCBpbiBf X2FzYW5faW5pdC4KKysjZW5kaWYKKyAKKyBzdGF0aWMgaW5saW5lIGJvb2wgQWRkcklzSW5Mb3dN ZW0odXB0ciBhKSB7CisrICBQUk9GSUxFX0FTQU5fTUFQUElORygpOworICAgcmV0dXJuIGEgPCBr TG93TWVtRW5kOworIH0KKyAKKyBzdGF0aWMgaW5saW5lIGJvb2wgQWRkcklzSW5Mb3dTaGFkb3co dXB0ciBhKSB7CisrICBQUk9GSUxFX0FTQU5fTUFQUElORygpOworICAgcmV0dXJuIGEgPj0ga0xv d1NoYWRvd0JlZyAmJiBhIDw9IGtMb3dTaGFkb3dFbmQ7CisgfQorIAorIHN0YXRpYyBpbmxpbmUg Ym9vbCBBZGRySXNJbkhpZ2hNZW0odXB0ciBhKSB7CisrICBQUk9GSUxFX0FTQU5fTUFQUElORygp OworICAgcmV0dXJuIGEgPj0ga0hpZ2hNZW1CZWcgJiYgYSA8PSBrSGlnaE1lbUVuZDsKKyB9Cisg Cisrc3RhdGljIGlubGluZSBib29sIEFkZHJJc0luTWlkTWVtKHVwdHIgYSkgeworKyAgUFJPRklM RV9BU0FOX01BUFBJTkcoKTsKKysgIHJldHVybiBrTWlkTWVtQmVnICYmIGEgPj0ga01pZE1lbUJl ZyAmJiBhIDw9IGtNaWRNZW1FbmQ7CisrfQorKworIHN0YXRpYyBpbmxpbmUgYm9vbCBBZGRySXNJ bk1lbSh1cHRyIGEpIHsKKy0gIHJldHVybiBBZGRySXNJbkxvd01lbShhKSB8fCBBZGRySXNJbkhp Z2hNZW0oYSk7CisrICBQUk9GSUxFX0FTQU5fTUFQUElORygpOworKyAgcmV0dXJuIEFkZHJJc0lu TG93TWVtKGEpIHx8IEFkZHJJc0luTWlkTWVtKGEpIHx8IEFkZHJJc0luSGlnaE1lbShhKTsKKyB9 CisgCisgc3RhdGljIGlubGluZSB1cHRyIE1lbVRvU2hhZG93KHVwdHIgcCkgeworKyAgUFJPRklM RV9BU0FOX01BUFBJTkcoKTsKKyAgIENIRUNLKEFkZHJJc0luTWVtKHApKTsKKyAgIHJldHVybiBN RU1fVE9fU0hBRE9XKHApOworIH0KKyAKKyBzdGF0aWMgaW5saW5lIGJvb2wgQWRkcklzSW5IaWdo U2hhZG93KHVwdHIgYSkgeworLSAgcmV0dXJuIGEgPj0ga0hpZ2hTaGFkb3dCZWcgJiYgYSA8PSAg a0hpZ2hNZW1FbmQ7CisrICBQUk9GSUxFX0FTQU5fTUFQUElORygpOworKyAgcmV0dXJuIGEgPj0g a0hpZ2hTaGFkb3dCZWcgJiYgYSA8PSBrSGlnaE1lbUVuZDsKKyt9CisrCisrc3RhdGljIGlubGlu ZSBib29sIEFkZHJJc0luTWlkU2hhZG93KHVwdHIgYSkgeworKyAgUFJPRklMRV9BU0FOX01BUFBJ TkcoKTsKKysgIHJldHVybiBrTWlkTWVtQmVnICYmIGEgPj0ga01pZFNoYWRvd0JlZyAmJiBhIDw9 IGtNaWRNZW1FbmQ7CisgfQorIAorIHN0YXRpYyBpbmxpbmUgYm9vbCBBZGRySXNJblNoYWRvdyh1 cHRyIGEpIHsKKy0gIHJldHVybiBBZGRySXNJbkxvd1NoYWRvdyhhKSB8fCBBZGRySXNJbkhpZ2hT aGFkb3coYSk7CisrICBQUk9GSUxFX0FTQU5fTUFQUElORygpOworKyAgcmV0dXJuIEFkZHJJc0lu TG93U2hhZG93KGEpIHx8IEFkZHJJc0luTWlkU2hhZG93KGEpIHx8IEFkZHJJc0luSGlnaFNoYWRv dyhhKTsKKyB9CisgCisgc3RhdGljIGlubGluZSBib29sIEFkZHJJc0luU2hhZG93R2FwKHVwdHIg YSkgeworKyAgUFJPRklMRV9BU0FOX01BUFBJTkcoKTsKKysgIGlmIChrTWlkTWVtQmVnKSB7Cisr ICAgIGlmIChhIDw9IGtTaGFkb3dHYXBFbmQpCisrICAgICAgcmV0dXJuIFNIQURPV19PRkZTRVQg PT0gMCB8fCBhID49IGtTaGFkb3dHYXBCZWc7CisrICAgIHJldHVybiAoYSA+PSBrU2hhZG93R2Fw MkJlZyAmJiBhIDw9IGtTaGFkb3dHYXAyRW5kKSB8fAorKyAgICAgICAgICAgKGEgPj0ga1NoYWRv d0dhcDNCZWcgJiYgYSA8PSBrU2hhZG93R2FwM0VuZCk7CisrICB9CisgICAvLyBJbiB6ZXJvLWJh c2VkIHNoYWRvdyBtb2RlIHdlIHRyZWF0IGFkZHJlc3NlcyBuZWFyIHplcm8gYXMgYWRkcmVzc2Vz CisgICAvLyBpbiBzaGFkb3cgZ2FwIGFzIHdlbGwuCisgICBpZiAoU0hBRE9XX09GRlNFVCA9PSAw KQorQEAgLTEwOCwxMCArMTk3LDEyIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBBZGRySXNJblNoYWRv d0dhcCh1cHQKKyB9CisgCisgc3RhdGljIGlubGluZSBib29sIEFkZHJJc0FsaWduZWRCeUdyYW51 bGFyaXR5KHVwdHIgYSkgeworKyAgUFJPRklMRV9BU0FOX01BUFBJTkcoKTsKKyAgIHJldHVybiAo YSAmIChTSEFET1dfR1JBTlVMQVJJVFkgLSAxKSkgPT0gMDsKKyB9CisgCisgc3RhdGljIGlubGlu ZSBib29sIEFkZHJlc3NJc1BvaXNvbmVkKHVwdHIgYSkgeworKyAgUFJPRklMRV9BU0FOX01BUFBJ TkcoKTsKKyAgIGNvbnN0IHVwdHIga0FjY2Vzc1NpemUgPSAxOworICAgdTggKnNoYWRvd19hZGRy ZXNzID0gKHU4KilNZW1Ub1NoYWRvdyhhKTsKKyAgIHM4IHNoYWRvd192YWx1ZSA9ICpzaGFkb3df YWRkcmVzczsKK0BAIC0xMjMsNiArMjE0LDkgQEAgc3RhdGljIGlubGluZSBib29sIEFkZHJlc3NJ c1BvaXNvbmVkKHVwdAorICAgcmV0dXJuIGZhbHNlOworIH0KKyAKKysvLyBNdXN0IGJlIGFmdGVy IGFsbCBjYWxscyB0byBQUk9GSUxFX0FTQU5fTUFQUElORygpLgorK3N0YXRpYyBjb25zdCB1cHRy IGtBc2FuTWFwcGluZ1Byb2ZpbGVTaXplID0gX19MSU5FX187CisrCisgfSAgLy8gbmFtZXNwYWNl IF9fYXNhbgorIAorICNlbmRpZiAgLy8gQVNBTl9NQVBQSU5HX0gKKy0tLSBsaWJzYW5pdGl6ZXIv YXNhbi9hc2FuX3J0bC5jYy5qagkyMDEzLTAyLTEzIDE3OjA0OjI1LjY4ODI0MDExMyArMDEwMAor KysrIGxpYnNhbml0aXplci9hc2FuL2FzYW5fcnRsLmNjCTIwMTMtMDItMTUgMTM6MjQ6MTcuNDEx MDMzMjI5ICswMTAwCitAQCAtMjUsNiArMjUsOCBAQAorIAorIG5hbWVzcGFjZSBfX2FzYW4gewor IAorK3VwdHIgQXNhbk1hcHBpbmdQcm9maWxlW2tBc2FuTWFwcGluZ1Byb2ZpbGVTaXplXTsKKysK KyBzdGF0aWMgdm9pZCBBc2FuRGllKCkgeworICAgc3RhdGljIGF0b21pY191aW50MzJfdCBudW1f Y2FsbHM7CisgICBpZiAoYXRvbWljX2ZldGNoX2FkZCgmbnVtX2NhbGxzLCAxLCBtZW1vcnlfb3Jk ZXJfcmVsYXhlZCkgIT0gMCkgeworQEAgLTM1LDggKzM3LDE0IEBAIHN0YXRpYyB2b2lkIEFzYW5E aWUoKSB7CisgICAgIFJlcG9ydCgiU2xlZXBpbmcgZm9yICVkIHNlY29uZChzKVxuIiwgZmxhZ3Mo KS0+c2xlZXBfYmVmb3JlX2R5aW5nKTsKKyAgICAgU2xlZXBGb3JTZWNvbmRzKGZsYWdzKCktPnNs ZWVwX2JlZm9yZV9keWluZyk7CisgICB9CistICBpZiAoZmxhZ3MoKS0+dW5tYXBfc2hhZG93X29u X2V4aXQpCistICAgIFVubWFwT3JEaWUoKHZvaWQqKWtMb3dTaGFkb3dCZWcsIGtIaWdoU2hhZG93 RW5kIC0ga0xvd1NoYWRvd0JlZyk7CisrICBpZiAoZmxhZ3MoKS0+dW5tYXBfc2hhZG93X29uX2V4 aXQpIHsKKysgICAgaWYgKGtNaWRNZW1CZWcpIHsKKysgICAgICBVbm1hcE9yRGllKCh2b2lkKilr TG93U2hhZG93QmVnLCBrTWlkTWVtQmVnIC0ga0xvd1NoYWRvd0JlZyk7CisrICAgICAgVW5tYXBP ckRpZSgodm9pZCopa01pZE1lbUVuZCwga0hpZ2hTaGFkb3dFbmQgLSBrTWlkTWVtRW5kKTsKKysg ICAgfSBlbHNlIHsKKysgICAgICBVbm1hcE9yRGllKCh2b2lkKilrTG93U2hhZG93QmVnLCBrSGln aFNoYWRvd0VuZCAtIGtMb3dTaGFkb3dCZWcpOworKyAgICB9CisrICB9CisgICBpZiAoZGVhdGhf Y2FsbGJhY2spCisgICAgIGRlYXRoX2NhbGxiYWNrKCk7CisgICBpZiAoZmxhZ3MoKS0+YWJvcnRf b25fZXJyb3IpCitAQCAtMTYxLDcgKzE2OSwxMCBAQCB2b2lkIEluaXRpYWxpemVGbGFncyhGbGFn cyAqZiwgY29uc3QgY2hhCisgaW50IGFzYW5faW5pdGVkOworIGJvb2wgYXNhbl9pbml0X2lzX3J1 bm5pbmc7Cisgdm9pZCAoKmRlYXRoX2NhbGxiYWNrKSh2b2lkKTsKKy11cHRyIGtIaWdoTWVtRW5k OworKworKyNpZiAhQVNBTl9GSVhFRF9NQVBQSU5HCisrdXB0ciBrSGlnaE1lbUVuZCwga01pZE1l bUJlZywga01pZE1lbUVuZDsKKysjZW5kaWYKKyAKKyAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSBNaXNjIC0tLS0tLS0tLS0tLS0tLS0ge3t7MQorIHZvaWQgU2hvd1N0YXRzQW5kQWJvcnQo KSB7CitAQCAtMjU5LDkgKzI3MCwxNSBAQCBzdGF0aWMgTk9JTkxJTkUgdm9pZCBmb3JjZV9pbnRl cmZhY2Vfc3ltCisgc3RhdGljIHZvaWQgYXNhbl9hdGV4aXQoKSB7CisgICBQcmludGYoIkFkZHJl c3NTYW5pdGl6ZXIgZXhpdCBzdGF0czpcbiIpOworICAgX19hc2FuX3ByaW50X2FjY3VtdWxhdGVk X3N0YXRzKCk7CisrICAvLyBQcmludCBBc2FuTWFwcGluZ1Byb2ZpbGUuCisrICBmb3IgKHVwdHIg aSA9IDA7IGkgPCBrQXNhbk1hcHBpbmdQcm9maWxlU2l6ZTsgaSsrKSB7CisrICAgIGlmIChBc2Fu TWFwcGluZ1Byb2ZpbGVbaV0gPT0gMCkgY29udGludWU7CisrICAgIFByaW50ZigiYXNhbl9tYXBw aW5nLmg6JXpkIC0tICV6ZFxuIiwgaSwgQXNhbk1hcHBpbmdQcm9maWxlW2ldKTsKKysgIH0KKyB9 CisgCisgc3RhdGljIHZvaWQgSW5pdGlhbGl6ZUhpZ2hNZW1FbmQoKSB7CisrI2lmICFBU0FOX0ZJ WEVEX01BUFBJTkcKKyAjaWYgU0FOSVRJWkVSX1dPUkRTSVpFID09IDY0CisgIyBpZiBkZWZpbmVk KF9fcG93ZXJwYzY0X18pCisgICAvLyBGSVhNRToKK0BAIC0yNzcsNiArMjk0LDU4IEBAIHN0YXRp YyB2b2lkIEluaXRpYWxpemVIaWdoTWVtRW5kKCkgeworICNlbHNlICAvLyBTQU5JVElaRVJfV09S RFNJWkUgPT0gMzIKKyAgIGtIaWdoTWVtRW5kID0gKDFVTEwgPDwgMzIpIC0gMTsgIC8vIDB4ZmZm ZmZmZmY7CisgI2VuZGlmICAvLyBTQU5JVElaRVJfV09SRFNJWkUKKysjZW5kaWYgIC8vICFBU0FO X0ZJWEVEX01BUFBJTkcKKyt9CisrCisrc3RhdGljIHZvaWQgUHJvdGVjdEdhcCh1cHRyIGEsIHVw dHIgc2l6ZSkgeworKyAgQ0hFQ0tfRVEoYSwgKHVwdHIpTXByb3RlY3QoYSwgc2l6ZSkpOworK30K KysKKytzdGF0aWMgdm9pZCBQcmludEFkZHJlc3NTcGFjZUxheW91dCgpIHsKKysgIFByaW50Zigi fHwgYFslcCwgJXBdYCB8fCBIaWdoTWVtICAgIHx8XG4iLAorKyAgICAgICAgICh2b2lkKilrSGln aE1lbUJlZywgKHZvaWQqKWtIaWdoTWVtRW5kKTsKKysgIFByaW50ZigifHwgYFslcCwgJXBdYCB8 fCBIaWdoU2hhZG93IHx8XG4iLAorKyAgICAgICAgICh2b2lkKilrSGlnaFNoYWRvd0JlZywgKHZv aWQqKWtIaWdoU2hhZG93RW5kKTsKKysgIGlmIChrTWlkTWVtQmVnKSB7CisrICAgIFByaW50Zigi fHwgYFslcCwgJXBdYCB8fCBTaGFkb3dHYXAzIHx8XG4iLAorKyAgICAgICAgICAgKHZvaWQqKWtT aGFkb3dHYXAzQmVnLCAodm9pZCopa1NoYWRvd0dhcDNFbmQpOworKyAgICBQcmludGYoInx8IGBb JXAsICVwXWAgfHwgTWlkTWVtICAgICB8fFxuIiwKKysgICAgICAgICAgICh2b2lkKilrTWlkTWVt QmVnLCAodm9pZCopa01pZE1lbUVuZCk7CisrICAgIFByaW50ZigifHwgYFslcCwgJXBdYCB8fCBT aGFkb3dHYXAyIHx8XG4iLAorKyAgICAgICAgICAgKHZvaWQqKWtTaGFkb3dHYXAyQmVnLCAodm9p ZCopa1NoYWRvd0dhcDJFbmQpOworKyAgICBQcmludGYoInx8IGBbJXAsICVwXWAgfHwgTWlkU2hh ZG93ICB8fFxuIiwKKysgICAgICAgICAgICh2b2lkKilrTWlkU2hhZG93QmVnLCAodm9pZCopa01p ZFNoYWRvd0VuZCk7CisrICB9CisrICBQcmludGYoInx8IGBbJXAsICVwXWAgfHwgU2hhZG93R2Fw ICB8fFxuIiwKKysgICAgICAgICAodm9pZCopa1NoYWRvd0dhcEJlZywgKHZvaWQqKWtTaGFkb3dH YXBFbmQpOworKyAgaWYgKGtMb3dTaGFkb3dCZWcpIHsKKysgICAgUHJpbnRmKCJ8fCBgWyVwLCAl cF1gIHx8IExvd1NoYWRvdyAgfHxcbiIsCisrICAgICAgICAgICAodm9pZCopa0xvd1NoYWRvd0Jl ZywgKHZvaWQqKWtMb3dTaGFkb3dFbmQpOworKyAgICBQcmludGYoInx8IGBbJXAsICVwXWAgfHwg TG93TWVtICAgICB8fFxuIiwKKysgICAgICAgICAgICh2b2lkKilrTG93TWVtQmVnLCAodm9pZCop a0xvd01lbUVuZCk7CisrICB9CisrICBQcmludGYoIk1lbVRvU2hhZG93KHNoYWRvdyk6ICVwICVw ICVwICVwIiwKKysgICAgICAgICAodm9pZCopTUVNX1RPX1NIQURPVyhrTG93U2hhZG93QmVnKSwK KysgICAgICAgICAodm9pZCopTUVNX1RPX1NIQURPVyhrTG93U2hhZG93RW5kKSwKKysgICAgICAg ICAodm9pZCopTUVNX1RPX1NIQURPVyhrSGlnaFNoYWRvd0JlZyksCisrICAgICAgICAgKHZvaWQq KU1FTV9UT19TSEFET1coa0hpZ2hTaGFkb3dFbmQpKTsKKysgIGlmIChrTWlkTWVtQmVnKSB7Cisr ICAgIFByaW50ZigiICVwICVwIiwKKysgICAgICAgICAgICh2b2lkKilNRU1fVE9fU0hBRE9XKGtN aWRTaGFkb3dCZWcpLAorKyAgICAgICAgICAgKHZvaWQqKU1FTV9UT19TSEFET1coa01pZFNoYWRv d0VuZCkpOworKyAgfQorKyAgUHJpbnRmKCJcbiIpOworKyAgUHJpbnRmKCJyZWRfem9uZT0lenVc biIsICh1cHRyKWZsYWdzKCktPnJlZHpvbmUpOworKyAgUHJpbnRmKCJtYWxsb2NfY29udGV4dF9z aXplPSV6dVxuIiwgKHVwdHIpZmxhZ3MoKS0+bWFsbG9jX2NvbnRleHRfc2l6ZSk7CisrCisrICBQ cmludGYoIlNIQURPV19TQ0FMRTogJXp4XG4iLCAodXB0cilTSEFET1dfU0NBTEUpOworKyAgUHJp bnRmKCJTSEFET1dfR1JBTlVMQVJJVFk6ICV6eFxuIiwgKHVwdHIpU0hBRE9XX0dSQU5VTEFSSVRZ KTsKKysgIFByaW50ZigiU0hBRE9XX09GRlNFVDogJXp4XG4iLCAodXB0cilTSEFET1dfT0ZGU0VU KTsKKysgIENIRUNLKFNIQURPV19TQ0FMRSA+PSAzICYmIFNIQURPV19TQ0FMRSA8PSA3KTsKKysg IGlmIChrTWlkTWVtQmVnKQorKyAgICBDSEVDSyhrTWlkU2hhZG93QmVnID4ga0xvd1NoYWRvd0Vu ZCAmJgorKyAgICAgICAgICBrTWlkTWVtQmVnID4ga01pZFNoYWRvd0VuZCAmJgorKyAgICAgICAg ICBrSGlnaFNoYWRvd0JlZyA+IGtNaWRNZW1FbmQpOworIH0KKyAKKyB9ICAvLyBuYW1lc3BhY2Ug X19hc2FuCitAQCAtMzUyLDQ5ICs0MjEsNDggQEAgdm9pZCBfX2FzYW5faW5pdCgpIHsKKyAgIFJl cGxhY2VTeXN0ZW1NYWxsb2MoKTsKKyAgIFJlcGxhY2VPcGVyYXRvcnNOZXdBbmREZWxldGUoKTsK KyAKKy0gIGlmIChmbGFncygpLT52ZXJib3NpdHkpIHsKKy0gICAgUHJpbnRmKCJ8fCBgWyVwLCAl cF1gIHx8IEhpZ2hNZW0gICAgfHxcbiIsCistICAgICAgICAgICAodm9pZCopa0hpZ2hNZW1CZWcs ICh2b2lkKilrSGlnaE1lbUVuZCk7CistICAgIFByaW50ZigifHwgYFslcCwgJXBdYCB8fCBIaWdo U2hhZG93IHx8XG4iLAorLSAgICAgICAgICAgKHZvaWQqKWtIaWdoU2hhZG93QmVnLCAodm9pZCop a0hpZ2hTaGFkb3dFbmQpOworLSAgICBQcmludGYoInx8IGBbJXAsICVwXWAgfHwgU2hhZG93R2Fw ICB8fFxuIiwKKy0gICAgICAgICAgICh2b2lkKilrU2hhZG93R2FwQmVnLCAodm9pZCopa1NoYWRv d0dhcEVuZCk7CistICAgIFByaW50ZigifHwgYFslcCwgJXBdYCB8fCBMb3dTaGFkb3cgIHx8XG4i LAorLSAgICAgICAgICAgKHZvaWQqKWtMb3dTaGFkb3dCZWcsICh2b2lkKilrTG93U2hhZG93RW5k KTsKKy0gICAgUHJpbnRmKCJ8fCBgWyVwLCAlcF1gIHx8IExvd01lbSAgICAgfHxcbiIsCistICAg ICAgICAgICAodm9pZCopa0xvd01lbUJlZywgKHZvaWQqKWtMb3dNZW1FbmQpOworLSAgICBQcmlu dGYoIk1lbVRvU2hhZG93KHNoYWRvdyk6ICVwICVwICVwICVwXG4iLAorLSAgICAgICAgICAgKHZv aWQqKU1FTV9UT19TSEFET1coa0xvd1NoYWRvd0JlZyksCistICAgICAgICAgICAodm9pZCopTUVN X1RPX1NIQURPVyhrTG93U2hhZG93RW5kKSwKKy0gICAgICAgICAgICh2b2lkKilNRU1fVE9fU0hB RE9XKGtIaWdoU2hhZG93QmVnKSwKKy0gICAgICAgICAgICh2b2lkKilNRU1fVE9fU0hBRE9XKGtI aWdoU2hhZG93RW5kKSk7CistICAgIFByaW50ZigicmVkX3pvbmU9JXp1XG4iLCAodXB0cilmbGFn cygpLT5yZWR6b25lKTsKKy0gICAgUHJpbnRmKCJtYWxsb2NfY29udGV4dF9zaXplPSV6dVxuIiwg KHVwdHIpZmxhZ3MoKS0+bWFsbG9jX2NvbnRleHRfc2l6ZSk7CistCistICAgIFByaW50ZigiU0hB RE9XX1NDQUxFOiAlenhcbiIsICh1cHRyKVNIQURPV19TQ0FMRSk7CistICAgIFByaW50ZigiU0hB RE9XX0dSQU5VTEFSSVRZOiAlenhcbiIsICh1cHRyKVNIQURPV19HUkFOVUxBUklUWSk7CistICAg IFByaW50ZigiU0hBRE9XX09GRlNFVDogJXp4XG4iLCAodXB0cilTSEFET1dfT0ZGU0VUKTsKKy0g ICAgQ0hFQ0soU0hBRE9XX1NDQUxFID49IDMgJiYgU0hBRE9XX1NDQUxFIDw9IDcpOworKyAgdXB0 ciBzaGFkb3dfc3RhcnQgPSBrTG93U2hhZG93QmVnOworKyAgaWYgKGtMb3dTaGFkb3dCZWcpIHNo YWRvd19zdGFydCAtPSBHZXRNbWFwR3JhbnVsYXJpdHkoKTsKKysgIHVwdHIgc2hhZG93X2VuZCA9 IGtIaWdoU2hhZG93RW5kOworKyAgYm9vbCBmdWxsX3NoYWRvd19pc19hdmFpbGFibGUgPQorKyAg ICAgIE1lbW9yeVJhbmdlSXNBdmFpbGFibGUoc2hhZG93X3N0YXJ0LCBzaGFkb3dfZW5kKTsKKysK KysjaWYgQVNBTl9MSU5VWCAmJiBkZWZpbmVkKF9feDg2XzY0X18pICYmICFBU0FOX0ZJWEVEX01B UFBJTkcKKysgIGlmICghZnVsbF9zaGFkb3dfaXNfYXZhaWxhYmxlKSB7CisrICAgIGtNaWRNZW1C ZWcgPSBrTG93TWVtRW5kIDwgMHgzMDAwMDAwMDAwVUxMID8gMHgzMDAwMDAwMDAwVUxMIDogMDsK KysgICAga01pZE1lbUVuZCA9IGtMb3dNZW1FbmQgPCAweDMwMDAwMDAwMDBVTEwgPyAweDNmZmZm ZmZmZmZVTEwgOiAwOworICAgfQorKyNlbmRpZgorKworKyAgaWYgKGZsYWdzKCktPnZlcmJvc2l0 eSkKKysgICAgUHJpbnRBZGRyZXNzU3BhY2VMYXlvdXQoKTsKKyAKKyAgIGlmIChmbGFncygpLT5k aXNhYmxlX2NvcmUpIHsKKyAgICAgRGlzYWJsZUNvcmVEdW1wZXIoKTsKKyAgIH0KKyAKKy0gIHVw dHIgc2hhZG93X3N0YXJ0ID0ga0xvd1NoYWRvd0JlZzsKKy0gIGlmIChrTG93U2hhZG93QmVnID4g MCkgc2hhZG93X3N0YXJ0IC09IEdldE1tYXBHcmFudWxhcml0eSgpOworLSAgdXB0ciBzaGFkb3df ZW5kID0ga0hpZ2hTaGFkb3dFbmQ7CistICBpZiAoTWVtb3J5UmFuZ2VJc0F2YWlsYWJsZShzaGFk b3dfc3RhcnQsIHNoYWRvd19lbmQpKSB7CistICAgIGlmIChrTG93U2hhZG93QmVnICE9IGtMb3dT aGFkb3dFbmQpIHsKKy0gICAgICAvLyBtbWFwIHRoZSBsb3cgc2hhZG93IHBsdXMgYXQgbGVhc3Qg b25lIHBhZ2UuCistICAgICAgUmVzZXJ2ZVNoYWRvd01lbW9yeVJhbmdlKGtMb3dTaGFkb3dCZWcg LSBHZXRNbWFwR3JhbnVsYXJpdHkoKSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg a0xvd1NoYWRvd0VuZCk7CistICAgIH0KKysgIGlmIChmdWxsX3NoYWRvd19pc19hdmFpbGFibGUp IHsKKysgICAgLy8gbW1hcCB0aGUgbG93IHNoYWRvdyBwbHVzIGF0IGxlYXN0IG9uZSBwYWdlIGF0 IHRoZSBsZWZ0LgorKyAgICBpZiAoa0xvd1NoYWRvd0JlZykKKysgICAgICBSZXNlcnZlU2hhZG93 TWVtb3J5UmFuZ2Uoc2hhZG93X3N0YXJ0LCBrTG93U2hhZG93RW5kKTsKKysgICAgLy8gbW1hcCB0 aGUgaGlnaCBzaGFkb3cuCisrICAgIFJlc2VydmVTaGFkb3dNZW1vcnlSYW5nZShrSGlnaFNoYWRv d0JlZywga0hpZ2hTaGFkb3dFbmQpOworKyAgICAvLyBwcm90ZWN0IHRoZSBnYXAuCisrICAgIFBy b3RlY3RHYXAoa1NoYWRvd0dhcEJlZywga1NoYWRvd0dhcEVuZCAtIGtTaGFkb3dHYXBCZWcgKyAx KTsKKysgIH0gZWxzZSBpZiAoa01pZE1lbUJlZyAmJgorKyAgICAgIE1lbW9yeVJhbmdlSXNBdmFp bGFibGUoc2hhZG93X3N0YXJ0LCBrTWlkTWVtQmVnIC0gMSkgJiYKKysgICAgICBNZW1vcnlSYW5n ZUlzQXZhaWxhYmxlKGtNaWRNZW1FbmQgKyAxLCBzaGFkb3dfZW5kKSkgeworKyAgICBDSEVDSyhr TG93U2hhZG93QmVnICE9IGtMb3dTaGFkb3dFbmQpOworKyAgICAvLyBtbWFwIHRoZSBsb3cgc2hh ZG93IHBsdXMgYXQgbGVhc3Qgb25lIHBhZ2UgYXQgdGhlIGxlZnQuCisrICAgIFJlc2VydmVTaGFk b3dNZW1vcnlSYW5nZShzaGFkb3dfc3RhcnQsIGtMb3dTaGFkb3dFbmQpOworKyAgICAvLyBtbWFw IHRoZSBtaWQgc2hhZG93LgorKyAgICBSZXNlcnZlU2hhZG93TWVtb3J5UmFuZ2Uoa01pZFNoYWRv d0JlZywga01pZFNoYWRvd0VuZCk7CisgICAgIC8vIG1tYXAgdGhlIGhpZ2ggc2hhZG93LgorICAg ICBSZXNlcnZlU2hhZG93TWVtb3J5UmFuZ2Uoa0hpZ2hTaGFkb3dCZWcsIGtIaWdoU2hhZG93RW5k KTsKKy0gICAgLy8gcHJvdGVjdCB0aGUgZ2FwCistICAgIHZvaWQgKnByb3QgPSBNcHJvdGVjdChr U2hhZG93R2FwQmVnLCBrU2hhZG93R2FwRW5kIC0ga1NoYWRvd0dhcEJlZyArIDEpOworLSAgICBD SEVDSyhwcm90ID09ICh2b2lkKilrU2hhZG93R2FwQmVnKTsKKysgICAgLy8gcHJvdGVjdCB0aGUg Z2Fwcy4KKysgICAgUHJvdGVjdEdhcChrU2hhZG93R2FwQmVnLCBrU2hhZG93R2FwRW5kIC0ga1No YWRvd0dhcEJlZyArIDEpOworKyAgICBQcm90ZWN0R2FwKGtTaGFkb3dHYXAyQmVnLCBrU2hhZG93 R2FwMkVuZCAtIGtTaGFkb3dHYXAyQmVnICsgMSk7CisrICAgIFByb3RlY3RHYXAoa1NoYWRvd0dh cDNCZWcsIGtTaGFkb3dHYXAzRW5kIC0ga1NoYWRvd0dhcDNCZWcgKyAxKTsKKyAgIH0gZWxzZSB7 CisgICAgIFJlcG9ydCgiU2hhZG93IG1lbW9yeSByYW5nZSBpbnRlcmxlYXZlcyB3aXRoIGFuIGV4 aXN0aW5nIG1lbW9yeSBtYXBwaW5nLiAiCisgICAgICAgICAgICAiQVNhbiBjYW5ub3QgcHJvY2Vl ZCBjb3JyZWN0bHkuIEFCT1JUSU5HLlxuIik7CistLS0gbGlic2FuaXRpemVyL2luY2x1ZGUvc2Fu aXRpemVyL2NvbW1vbl9pbnRlcmZhY2VfZGVmcy5oLmpqCTIwMTMtMDItMTMgMTE6NTM6NDQuNTMx MzMwMDQ0ICswMTAwCisrKysgbGlic2FuaXRpemVyL2luY2x1ZGUvc2FuaXRpemVyL2NvbW1vbl9p bnRlcmZhY2VfZGVmcy5oCTIwMTMtMDItMTUgMTM6MjQ6MTcuNDAzMDMyNDUwICswMTAwCitAQCAt MTQsNiArMTQsMTEgQEAKKyAjaW5jbHVkZSA8c3RkZGVmLmg+CisgI2luY2x1ZGUgPHN0ZGludC5o PgorIAorKy8vIEdDQyBkb2VzIG5vdCB1bmRlcnN0YW5kIF9faGFzX2ZlYXR1cmUuCisrI2lmICFk ZWZpbmVkKF9faGFzX2ZlYXR1cmUpCisrIyBkZWZpbmUgX19oYXNfZmVhdHVyZSh4KSAwCisrI2Vu ZGlmCisrCisgI2lmZGVmIF9fY3BsdXNwbHVzCisgZXh0ZXJuICJDIiB7CisgI2VuZGlmCistLS0g bGlic2FuaXRpemVyL2luY2x1ZGUvc2FuaXRpemVyL2FzYW5faW50ZXJmYWNlLmguamoJMjAxMy0w Mi0xMyAxMTo1Mzo0NC41MzEzMzAwNDQgKzAxMDAKKysrKyBsaWJzYW5pdGl6ZXIvaW5jbHVkZS9z YW5pdGl6ZXIvYXNhbl9pbnRlcmZhY2UuaAkyMDEzLTAyLTE1IDEzOjI0OjE3LjQwMzAzMjQ1MCAr MDEwMAorQEAgLTM1LDggKzM1LDggQEAgZXh0ZXJuICJDIiB7CisgICAvLyAodW4pcG9pc29uIG1l bW9yeSBpbiB0aGUgc2FtZSBtZW1vcnkgcmVnaW9uIHNpbXVsdGFuZW91c2x5LgorICAgdm9pZCBf X2FzYW5fdW5wb2lzb25fbWVtb3J5X3JlZ2lvbih2b2lkIGNvbnN0IHZvbGF0aWxlICphZGRyLCBz aXplX3Qgc2l6ZSk7CisgCistICAvLyBVc2VyIGNvZGUgc2hvdWxkIHVzZSBtYWNybyBpbnN0ZWFk IG9mIGZ1bmN0aW9ucy4KKy0jaWYgX19oYXNfZmVhdHVyZShhZGRyZXNzX3Nhbml0aXplcikKKysv LyBVc2VyIGNvZGUgc2hvdWxkIHVzZSBtYWNyb3MgaW5zdGVhZCBvZiBmdW5jdGlvbnMuCisrI2lm IF9faGFzX2ZlYXR1cmUoYWRkcmVzc19zYW5pdGl6ZXIpIHx8IGRlZmluZWQoX19TQU5JVElaRV9B RERSRVNTX18pCisgI2RlZmluZSBBU0FOX1BPSVNPTl9NRU1PUllfUkVHSU9OKGFkZHIsIHNpemUp IFwKKyAgIF9fYXNhbl9wb2lzb25fbWVtb3J5X3JlZ2lvbigoYWRkciksIChzaXplKSkKKyAjZGVm aW5lIEFTQU5fVU5QT0lTT05fTUVNT1JZX1JFR0lPTihhZGRyLCBzaXplKSBcCgpkaWZmIC0tZ2l0 IGEvZ2NjNDgtcHI1NDExNy5wYXRjaCBiL2djYzQ4LXByNTQxMTcucGF0Y2gKaW5kZXggYjFiYWQ1 YS4uNWJlMmIwNyAxMDA2NDQKLS0tIGEvZ2NjNDgtcHI1NDExNy5wYXRjaAorKysgYi9nY2M0OC1w cjU0MTE3LnBhdGNoCkBAIC0xLDI2MyArMSwxOTggQEAKLTIwMTMtMDItMTMgIEpha3ViIEplbGlu ZWsgIDxqYWt1YkByZWRoYXQuY29tPgorMjAxMy0wMi0xNSAgSmFrdWIgSmVsaW5layAgPGpha3Vi QHJlZGhhdC5jb20+CisJICAgIFN0ZXZlbiBCb3NzY2hlciAgPHN0ZXZlbkBnY2MuZ251Lm9yZz4K IAogCVBSIHBjaC81NDExNwotCVJldmVydAotCTIwMTItMDctMTQgIFN0ZXZlbiBCb3NzY2hlciAg PHN0ZXZlbkBnY2MuZ251Lm9yZz4KKwkqIGMtb3B0cy5jIChjX2NvbW1vbl9wb3N0X29wdGlvbnMp OiBJZiBkZWJ1ZyBpbmZvIGlzIGVuYWJsZWQKKwlhbmQgbm9uLWR3YXJmKiwgcmVmdXNlIHRvIGxv YWQgUENIIGZpbGVzIGFuZCB3aGVuIHdyaXRpbmcgUENICisJZmlsZSB3YXJuLgogCi0JKiB0b3Bs ZXYuYyAoaW5pdF9hc21fb3V0cHV0KTogT3BlbiBhc21fb3V0X2ZpbGUgaW4gJ3cnIG1vZGUuCisJ KiBsaWIvZGctcGNoLmV4cCAocGNoLWluaXQsIHBjaC1maW5pc2gsCisJY2hlY2tfZWZmZWN0aXZl X3RhcmdldF9wY2hfc3VwcG9ydGVkX2RlYnVnKTogTmV3IHByb2NzLgorCShkZy1mbGFncy1wY2gp OiBJZiAkcGNoX3Vuc3VwcG9ydGVkLCBtYWtlIHRlc3RzIFVOU1VQUE9SVEVELgorCUxpa2V3aXNl IGlmICRwY2hfdW5zdXBwb3J0ZWRfZGVidWcgYW5kICRmbGFncyBpbmNsdWRlIC1nLgorCVNraXAg RkFJTHMgYWJvdXQgbWlzc2luZyAqLmdjaCBmaWxlIGlmICRwY2hfdW5zdXBwb3J0ZWRfZGVidWcK KwlhbmQgZGctcmVxdWlyZS1lZmZlY3RpdmUtdGFyZ2V0IHBjaF91bnN1cHBvcnRlZF9kZWJ1Zy4K KwkqIGcrKy5kZy9wY2gvcGNoLmV4cDogQ2FsbCBwY2gtaW5pdCBhbmQgcGNoLWZpbmlzaC4KKwkq IG9iamMuZGcvcGNoL3BjaC5leHA6IExpa2V3aXNlLgorCSogZ2NjLmRnL3BjaC9wY2guZXhwOiBM aWtld2lzZS4KKwkqIGdjYy5kZy9wY2gvdmFsaWQtMS5jOiBBZGQgZGctcmVxdWlyZS1lZmZlY3Rp dmUtdGFyZ2V0CisJcGNoX3Vuc3VwcG9ydGVkX2RlYnVnLgorCSogZ2NjLmRnL3BjaC92YWxpZC0x LmhzOiBMaWtld2lzZS4KKwkqIGdjYy5kZy9wY2gvdmFsaWQtMWIuYzogTGlrZXdpc2UuCisJKiBn Y2MuZGcvcGNoL3ZhbGlkLTFiLmhzOiBMaWtld2lzZS4KIAotCSogYy1wY2guYyAoQ0hFQ0tfTk9f QVNNX09VVF9EVVJJTkdfUENIKTogRG8gbm90IGRlZmluZS4KLQlSZW1vdmUgY29kZSBjb25kaXRp b25hbCBvbiBpdC4KLQotCTIwMTItMDctMDEgIFVyb3MgQml6amFrICA8dWJpempha0BnbWFpbC5j b20+Ci0KLQkqIGMtcGNoLmMgKGNfY29tbW9uX3dyaXRlX3BjaCk6IFJlbW92ZSB1bnVzZWQgdmFy aWFibGVzLgotCi0JMjAxMi0wNi0yMSAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuQGdjYy5nbnUu b3JnPgotCi0JKiBjLWNvbW1vbi5oIChjX2NvbW1vbl9wcmludF9wY2hfY2hlY2tzdW0pOiBSZW1v dmUuCi0JKiBjLXBjaC5jOiBEbyBub3QgaW5jbHVkZSBvdXRwdXQuaC4KLQkoQ0hFQ0tfTk9fQVNN X09VVF9EVVJJTkdfUENIKTogRGVmaW5lIGFuZCBhZGQgRklYTUUuCi0JKGFzbV9vdXRfZmlsZSk6 IERlZmluZSBpZmYgQ0hFQ0tfTk9fQVNNX09VVF9EVVJJTkdfUENIIGlzZGVmaW5lZC4KLQkoYXNt X2ZpbGVfc3RhcnRwb3MpOiBEZWZpbmUgaWZmIENIRUNLX05PX0FTTV9PVVRfRFVSSU5HX1BDSCBp cyBkZWZpbmVkLgotCShzdHJ1Y3QgY19wY2hfaGVhZGVyKTogUmVtb3ZlLgotCShnZXRfaWRlbnQp OiBVcGRhdGUgZ3BjaCB2ZXJzaW9uLgotCShwY2hfaW5pdCk6IERvIG5vdCBwcmludCBleGVjdXRh YmxlX2NoZWNrc3VtIHRvIGFzbV9vdXRfZmlsZS4KLQlEbyBub3QgZmFpbCBpZiB0aGVyZSBpcyBu byBhc21fb3V0X2ZpbGUgdG8gcmVhZCBiYWNrIGZyb20uICBTZXQKLQlhc21fZmlsZV9zdGFydHBv cyBvbmx5IGlmIENIRUNLX05PX0FTTV9PVVRfRFVSSU5HX1BDSCBpcyBkZWZpbmVkLgotCShjX2Nv bW1vbl93cml0ZV9wY2gpOiBWZXJpZnkgdGhhdCBub3RoaW5nIHdhcyB3cml0dGVuIHRvIGFzbV9v dXRfZmlsZQotCXNpbmNlIHBjaF9pbml0IHdhcyBjYWxsZWQuICBEbyBub3Qgd3JpdGUgYSBjX3Bj aF9oZWFkZXIsIGFuZCBkbyBub3QKLQljb3B5IGZyb20gYXNtX291dF9maWxlIHRvIHRoZSBQQ0gu Ci0JKGNfY29tbW9uX3JlYWRfcGNoKTogRG8gbm90IHJlYWQgYSBjX3BjaF9oZWFkZXIsIGFuZCBk byBub3QgcmVzdG9yZQotCXRoZSBjb250ZW50IG9mIGFzbV9vdXRfZmlsZSBmcm9tIHRoZSBQQ0gu Ci0JKGNfY29tbW9uX3ByaW50X3BjaF9jaGVja3N1bSk6IFJlbW92ZS4KLQkqIGMtb3B0cy5jIChj X2NvbW1vbl9pbml0KTogUHJpbnQgb3V0IGV4ZWN1dGFibGVfY2hlY2tzdW0gZGlyZWN0bHkuCi0K LS0tLSBnY2MvdG9wbGV2LmMuamoJMjAxMy0wMi0xMyAwOToyOToxNi4xOTc3NTcyMjIgKzAxMDAK LSsrKyBnY2MvdG9wbGV2LmMJMjAxMy0wMi0xMyAxMTozNDozOC44NTU4MDAxODIgKzAxMDAKLUBA IC05MTIsNyArOTEyLDcgQEAgaW5pdF9hc21fb3V0cHV0IChjb25zdCBjaGFyICpuYW1lKQotICAg ICAgIGlmICghc3RyY21wIChhc21fZmlsZV9uYW1lLCAiLSIpKQotIAlhc21fb3V0X2ZpbGUgPSBz dGRvdXQ7Ci0gICAgICAgZWxzZQotLQlhc21fb3V0X2ZpbGUgPSBmb3BlbiAoYXNtX2ZpbGVfbmFt ZSwgInciKTsKLSsJYXNtX291dF9maWxlID0gZm9wZW4gKGFzbV9maWxlX25hbWUsICJ3K2IiKTsK LSAgICAgICBpZiAoYXNtX291dF9maWxlID09IDApCi0gCWZhdGFsX2Vycm9yICgiY2FuJSd0IG9w ZW4gJXMgZm9yIHdyaXRpbmc6ICVtIiwgYXNtX2ZpbGVfbmFtZSk7Ci0gICAgIH0KLS0tLSBnY2Mv Yy1mYW1pbHkvYy1wY2guYy5qagkyMDEzLTAyLTEzIDA5OjI5OjE2LjA2NTc1Nzk1NiArMDEwMAot KysrIGdjYy9jLWZhbWlseS9jLXBjaC5jCTIwMTMtMDItMTMgMTE6MzQ6NDUuNTUyNzYxNTQ5ICsw MTAwCi1AQCAtMjUsNiArMjUsNyBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJ TkczLgotICNpbmNsdWRlICJ0cmVlLmgiCi0gI2luY2x1ZGUgImZsYWdzLmgiCi0gI2luY2x1ZGUg ImMtY29tbW9uLmgiCi0rI2luY2x1ZGUgIm91dHB1dC5oIiAvKiBmb3IgYXNtX291dF9maWxlICov Ci0gI2luY2x1ZGUgImRlYnVnLmgiCi0gI2luY2x1ZGUgImMtcHJhZ21hLmgiCi0gI2luY2x1ZGUg ImdnYy5oIgotQEAgLTY3LDExICs2OCwxOSBAQCBzdHJ1Y3QgY19wY2hfdmFsaWRpdHkKLSAgIHNp emVfdCB0YXJnZXRfZGF0YV9sZW5ndGg7Ci0gfTsKLSAKLStzdHJ1Y3QgY19wY2hfaGVhZGVyCi0r ewotKyAgdW5zaWduZWQgbG9uZyBhc21fc2l6ZTsKLSt9OwotKwotICNkZWZpbmUgSURFTlRfTEVO R1RIIDgKLSAKLSAvKiBUaGUgZmlsZSB3ZSdsbCBiZSB3cml0aW5nIHRoZSBQQ0ggdG8uICAqLwot IHN0YXRpYyBGSUxFICpwY2hfb3V0ZmlsZTsKLSAKLSsvKiBUaGUgcG9zaXRpb24gaW4gdGhlIGFz c2VtYmxlciBvdXRwdXQgZmlsZSB3aGVuIHBjaF9pbml0IHdhcyBjYWxsZWQuICAqLwotK3N0YXRp YyBsb25nIGFzbV9maWxlX3N0YXJ0cG9zOwotKwotIHN0YXRpYyBjb25zdCBjaGFyICpnZXRfaWRl bnQgKHZvaWQpOworLS0tIGdjYy9jLWZhbWlseS9jLW9wdHMuYy5qagkyMDEzLTAyLTE0IDE0OjQ1 OjAxLjAwMDAwMDAwMCArMDEwMAorKysrIGdjYy9jLWZhbWlseS9jLW9wdHMuYwkyMDEzLTAyLTE1 IDEyOjQ0OjQ4LjkzNjUzNTExOCArMDEwMAorQEAgLTk0NSw2ICs5NDUsMTYgQEAgY19jb21tb25f cG9zdF9vcHRpb25zIChjb25zdCBjaGFyICoqcGZpbAorIAkgYmVjYXVzZSB0aGUgZGVmYXVsdCBh ZGRyZXNzIHNwYWNlIHNsb3QgdGhlbiBjYW4ndCBiZSB1c2VkCisgCSBmb3IgdGhlIG91dHB1dCBQ Q0ggZmlsZS4gICovCisgICAgICAgaWYgKHBjaF9maWxlKQorKwl7CisrCSAgY19jb21tb25fbm9f bW9yZV9wY2ggKCk7CisrCSAgLyogT25seSAtZzAgYW5kIC1nZHdhcmYqIGFyZSBzdXBwb3J0ZWQg d2l0aCBQQ0gsIGZvciBvdGhlcgorKwkgICAgIGRlYnVnIGZvcm1hdHMgd2Ugd2FybiBoZXJlIGFu ZCByZWZ1c2UgdG8gbG9hZCBhbnkgUENIIGZpbGVzLiAgKi8KKysJICBpZiAod3JpdGVfc3ltYm9s cyAhPSBOT19ERUJVRyAmJiB3cml0ZV9zeW1ib2xzICE9IERXQVJGMl9ERUJVRykKKysJICAgIHdh cm5pbmcgKE9QVF9XZGVwcmVjYXRlZCwKKysJCSAgICAgInRoZSBcIiVzXCIgZGVidWcgZm9ybWF0 IGNhbm5vdCBiZSB1c2VkIHdpdGggIgorKwkJICAgICAicHJlLWNvbXBpbGVkIGhlYWRlcnMiLCBk ZWJ1Z190eXBlX25hbWVzW3dyaXRlX3N5bWJvbHNdKTsKKysJfQorKyAgICAgIGVsc2UgaWYgKHdy aXRlX3N5bWJvbHMgIT0gTk9fREVCVUcgJiYgd3JpdGVfc3ltYm9scyAhPSBEV0FSRjJfREVCVUcp CisgCWNfY29tbW9uX25vX21vcmVfcGNoICgpOwogIAotIC8qIENvbXB1dGUgYW4gYXBwcm9wcmlh dGUgOC1ieXRlIG1hZ2ljIG51bWJlciBmb3IgdGhlIFBDSCBmaWxlLCBzbyB0aGF0Ci1AQCAtODMs NyArOTIsNyBAQCBzdGF0aWMgY29uc3QgY2hhciAqCi0gZ2V0X2lkZW50ICh2b2lkKQotIHsKLSAg IHN0YXRpYyBjaGFyIHJlc3VsdFtJREVOVF9MRU5HVEhdOwotLSAgc3RhdGljIGNvbnN0IGNoYXIg dGVtcGxbXSA9ICJncGNoLjAxNCI7Ci0rICBzdGF0aWMgY29uc3QgY2hhciB0ZW1wbFtdID0gImdw Y2guMDEzIjsKLSAgIHN0YXRpYyBjb25zdCBjaGFyIGNfbGFuZ3VhZ2VfY2hhcnNbXSA9ICJDbytP IjsKKyAgICAgICAvKiBZdWsuICBXVEYgaXMgdGhpcz8gIEkgZG8ga25vdyBPYmpDIHJlbGllcyBv biBpdCBzb21ld2hlcmUuICAqLworLS0tIGdjYy90ZXN0c3VpdGUvbGliL2RnLXBjaC5leHAuamoJ MjAxMy0wMS0xMSAwOTowMjozOS4wMDAwMDAwMDAgKzAxMDAKKysrKyBnY2MvdGVzdHN1aXRlL2xp Yi9kZy1wY2guZXhwCTIwMTMtMDItMTUgMTU6NDU6NTMuNzQ3ODU1NTI5ICswMTAwCitAQCAtMTYs OCArMTYsNDkgQEAKICAKLSAgIG1lbWNweSAocmVzdWx0LCB0ZW1wbCwgSURFTlRfTEVOR1RIKTsK LUBAIC05Nyw3ICsxMDYsOSBAQCBnZXRfaWRlbnQgKHZvaWQpCi0gc3RhdGljIGJvb2wgcGNoX3Jl YWR5X3RvX3NhdmVfY3BwX3N0YXRlID0gZmFsc2U7CisgbG9hZF9saWIgY29weS1maWxlLmV4cAog IAotIC8qIFByZXBhcmUgdG8gd3JpdGUgYSBQQ0ggZmlsZSwgaWYgb25lIGlzIGJlaW5nIHdyaXR0 ZW4uICBUaGlzIGlzCi0tICAgY2FsbGVkIGF0IHRoZSBzdGFydCBvZiBjb21waWxhdGlvbi4gICov Ci0rICAgY2FsbGVkIGF0IHRoZSBzdGFydCBvZiBjb21waWxhdGlvbi4KKytwcm9jIHBjaC1pbml0 IHsgYXJncyB9IHsKKysgICAgZ2xvYmFsIHBjaF91bnN1cHBvcnRlZF9kZWJ1ZyBwY2hfdW5zdXBw b3J0ZWQKICsKLSsgICBBbHNvLCBwcmludCBvdXQgdGhlIGV4ZWN1dGFibGUgY2hlY2tzdW0gaWYg LWZ2ZXJib3NlLWFzbSBpcyBpbiBlZmZlY3QuICAqLwotIAotIHZvaWQKLSBwY2hfaW5pdCAodm9p ZCkKLUBAIC0xMDcsNiArMTE4LDE1IEBAIHBjaF9pbml0ICh2b2lkKQotICAgdm9pZCAqdGFyZ2V0 X3ZhbGlkaXR5OwotICAgc3RhdGljIGNvbnN0IGNoYXIgcGFydGlhbF9wY2hbXSA9ICJncGNXcml0 ZSI7Ci0gCi0rI2lmZGVmIEFTTV9DT01NRU5UX1NUQVJUCi0rICBpZiAoZmxhZ192ZXJib3NlX2Fz bSkKLSsgICAgewotKyAgICAgIGZwcmludGYgKGFzbV9vdXRfZmlsZSwgIiVzICIsIEFTTV9DT01N RU5UX1NUQVJUKTsKLSsgICAgICBjX2NvbW1vbl9wcmludF9wY2hfY2hlY2tzdW0gKGFzbV9vdXRf ZmlsZSk7Ci0rICAgICAgZnB1dGMgKCdcbicsIGFzbV9vdXRfZmlsZSk7CisrICAgIGlmIFtpbmZv IGV4aXN0cyBwY2hfdW5zdXBwb3J0ZWRfZGVidWddIHsKKysJZXJyb3IgInBjaC1pbml0OiBwY2hf dW5zdXBwb3J0ZWRfZGVidWcgaXMgbm90IGVtcHR5IGFzIGV4cGVjdGVkIgorKyAgICB9CisrICAg IGlmIFtpbmZvIGV4aXN0cyBwY2hfdW5zdXBwb3J0ZWRdIHsKKysJZXJyb3IgInBjaC1pbml0OiBw Y2hfdW5zdXBwb3J0ZWQgaXMgbm90IGVtcHR5IGFzIGV4cGVjdGVkIgogKyAgICB9Ci0rI2VuZGlm Ci0rCi0gICBpZiAoIXBjaF9maWxlKQotICAgICByZXR1cm47Ci0gCi1AQCAtMTM2LDYgKzE1Niwx NCBAQCBwY2hfaW5pdCAodm9pZCkKLSAgICAgICB8fCBmd3JpdGUgKHRhcmdldF92YWxpZGl0eSwg di50YXJnZXRfZGF0YV9sZW5ndGgsIDEsIGYpICE9IDEpCi0gICAgIGZhdGFsX2Vycm9yICgiY2Fu JSd0IHdyaXRlIHRvICVzOiAlbSIsIHBjaF9maWxlKTsKLSAKLSsgIC8qIFdlIG5lZWQgdG8gYmUg YWJsZSB0byByZS1yZWFkIHRoZSBvdXRwdXQuICAqLwotKyAgLyogVGhlIGRyaXZlciBhbHdheXMg cHJvdmlkZXMgYSB2YWxpZCAtbyBvcHRpb24uICAqLwotKyAgaWYgKGFzbV9maWxlX25hbWUgPT0g TlVMTAotKyAgICAgIHx8IHN0cmNtcCAoYXNtX2ZpbGVfbmFtZSwgIi0iKSA9PSAwKQotKyAgICBm YXRhbF9lcnJvciAoIiVxcyBpcyBub3QgYSB2YWxpZCBvdXRwdXQgZmlsZSIsIGFzbV9maWxlX25h bWUpOwotKwotKyAgYXNtX2ZpbGVfc3RhcnRwb3MgPSBmdGVsbCAoYXNtX291dF9maWxlKTsKLSsK LSAgIC8qIExldCB0aGUgZGVidWdnaW5nIGZvcm1hdCBkZWFsIHdpdGggdGhlIFBDSG5lc3MuICAq LwotICAgKCpkZWJ1Z19ob29rcy0+aGFuZGxlX3BjaCkgKDApOwotIAotQEAgLTE3Miw2ICsyMDAs MTEgQEAgcGNoX2NwcF9zYXZlX3N0YXRlICh2b2lkKQotIHZvaWQKLSBjX2NvbW1vbl93cml0ZV9w Y2ggKHZvaWQpCi0gewotKyAgY2hhciAqYnVmOwotKyAgbG9uZyBhc21fZmlsZV9lbmQ7Ci0rICBs b25nIHdyaXR0ZW47Ci0rICBzdHJ1Y3QgY19wY2hfaGVhZGVyIGg7Ci0rCi0gICB0aW1ldmFyX3B1 c2ggKFRWX1BDSF9TQVZFKTsKLSAKLSAgIHRhcmdldG0ucHJlcGFyZV9wY2hfc2F2ZSAoKTsKLUBA IC0xODAsNiArMjEzLDM0IEBAIGNfY29tbW9uX3dyaXRlX3BjaCAodm9pZCkKLSAKLSAgIGNwcF93 cml0ZV9wY2hfZGVwcyAocGFyc2VfaW4sIHBjaF9vdXRmaWxlKTsKLSAKLSsgIGFzbV9maWxlX2Vu ZCA9IGZ0ZWxsIChhc21fb3V0X2ZpbGUpOwotKyAgaC5hc21fc2l6ZSA9IGFzbV9maWxlX2VuZCAt IGFzbV9maWxlX3N0YXJ0cG9zOwotKwotKyAgaWYgKGZ3cml0ZSAoJmgsIHNpemVvZiAoaCksIDEs IHBjaF9vdXRmaWxlKSAhPSAxKQotKyAgICBmYXRhbF9lcnJvciAoImNhbiUndCB3cml0ZSAlczog JW0iLCBwY2hfZmlsZSk7CiArCi0rICBidWYgPSBYTkVXVkVDIChjaGFyLCAxNjM4NCk7CisrICAg IHNldCByZXN1bHQgW2NoZWNrX2NvbXBpbGUgcGNodGVzdCBvYmplY3QgImludCBpOyIgIi1nIC14 IGMtaGVhZGVyIl0KKysgICAgc2V0IHBjaF91bnN1cHBvcnRlZF9kZWJ1ZyBcCisrCVtyZWdleHAg ImRlYnVnIGZvcm1hdCBjYW5ub3QgYmUgdXNlZCB3aXRoIHByZS1jb21waWxlZCBoZWFkZXJzIiBc CisrCQlbbGluZGV4ICRyZXN1bHQgMF1dCiArCi0rICBpZiAoZnNlZWsgKGFzbV9vdXRfZmlsZSwg YXNtX2ZpbGVfc3RhcnRwb3MsIFNFRUtfU0VUKSAhPSAwKQotKyAgICBmYXRhbF9lcnJvciAoImNh biUndCBzZWVrIGluICVzOiAlbSIsIGFzbV9maWxlX25hbWUpOworKyAgICBzZXQgcGNoX3Vuc3Vw cG9ydGVkIDAKKysgICAgaWYgeyAkcGNoX3Vuc3VwcG9ydGVkX2RlYnVnIH0geworKwl2ZXJib3Nl IC1sb2cgInBjaCBpcyB1bnN1cHBvcnRlZCB3aXRoIHRoZSBkZWJ1ZyBpbmZvIGZvcm1hdCIKICsK LSsgIGZvciAod3JpdHRlbiA9IGFzbV9maWxlX3N0YXJ0cG9zOyB3cml0dGVuIDwgYXNtX2ZpbGVf ZW5kOyApCi0rICAgIHsKLSsgICAgICBsb25nIHNpemUgPSBhc21fZmlsZV9lbmQgLSB3cml0dGVu OwotKyAgICAgIGlmIChzaXplID4gMTYzODQpCi0rCXNpemUgPSAxNjM4NDsKLSsgICAgICBpZiAo ZnJlYWQgKGJ1Ziwgc2l6ZSwgMSwgYXNtX291dF9maWxlKSAhPSAxKQotKwlmYXRhbF9lcnJvciAo ImNhbiUndCByZWFkICVzOiAlbSIsIGFzbV9maWxlX25hbWUpOwotKyAgICAgIGlmIChmd3JpdGUg KGJ1Ziwgc2l6ZSwgMSwgcGNoX291dGZpbGUpICE9IDEpCi0rCWZhdGFsX2Vycm9yICgiY2FuJSd0 IHdyaXRlICVzOiAlbSIsIHBjaF9maWxlKTsKLSsgICAgICB3cml0dGVuICs9IHNpemU7Ci0rICAg IH0KLSsgIGZyZWUgKGJ1Zik7Ci0rICAvKiBhc21fb3V0X2ZpbGUgY2FuIGJlIHdyaXR0ZW4gYWZ0 ZXJ3YXJkcywgc28gZnNlZWsgdG8gY2xlYXIKLSsgICAgIF9JT1JFQUQgZmxhZy4gICovCi0rICBp ZiAoZnNlZWsgKGFzbV9vdXRfZmlsZSwgMCwgU0VFS19FTkQpICE9IDApCi0rICAgIGZhdGFsX2Vy cm9yICgiY2FuJSd0IHNlZWsgaW4gJXM6ICVtIiwgYXNtX2ZpbGVfbmFtZSk7Ci0rCi0gICBndF9w Y2hfc2F2ZSAocGNoX291dGZpbGUpOwotIAotICAgdGltZXZhcl9wdXNoIChUVl9QQ0hfQ1BQX1NB VkUpOwotQEAgLTM0MSw2ICs0MDIsNyBAQCBjX2NvbW1vbl9yZWFkX3BjaCAoY3BwX3JlYWRlciAq cGZpbGUsIGNvCi0gCQkgICBpbnQgZmQsIGNvbnN0IGNoYXIgKm9yaWdfbmFtZSBBVFRSSUJVVEVf VU5VU0VEKQotIHsKLSAgIEZJTEUgKmY7Ci0rICBzdHJ1Y3QgY19wY2hfaGVhZGVyIGg7Ci0gICBz dHJ1Y3Qgc2F2ZV9tYWNyb19kYXRhICpzbWQ7Ci0gICBleHBhbmRlZF9sb2NhdGlvbiBzYXZlZF9s b2M7Ci0gICBib29sIHNhdmVkX3RyYWNlX2luY2x1ZGVzOwotQEAgLTM1Nyw2ICs0MTksMzggQEAg Y19jb21tb25fcmVhZF9wY2ggKGNwcF9yZWFkZXIgKnBmaWxlLCBjbwotIAotICAgY3BwX2dldF9j YWxsYmFja3MgKHBhcnNlX2luKS0+dmFsaWRfcGNoID0gTlVMTDsKLSAKLSsgIGlmIChmcmVhZCAo JmgsIHNpemVvZiAoaCksIDEsIGYpICE9IDEpCi0rICAgIHsKLSsgICAgICBjcHBfZXJybm8gKHBm aWxlLCBDUFBfRExfRVJST1IsICJyZWFkaW5nIik7Ci0rICAgICAgZmNsb3NlIChmKTsKLSsgICAg ICBnb3RvIGVuZDsKKysJc2V0IHJlc3VsdCBbY2hlY2tfY29tcGlsZSBwY2h0ZXN0IG9iamVjdCAi aW50IGk7IiAiLXggYy1oZWFkZXIiXQorKwkgICAgc2V0IHBjaF91bnN1cHBvcnRlZCBcCisrCQlb cmVnZXhwICJkZWJ1ZyBmb3JtYXQgY2Fubm90IGJlIHVzZWQgd2l0aCBwcmUtY29tcGlsZWQgaGVh ZGVycyIgXAorKwkJCVtsaW5kZXggJHJlc3VsdCAwXV0KICsgICAgfQorK30KICsKLSsgIGlmICgh ZmxhZ19wcmVwcm9jZXNzX29ubHkpCi0rICAgIHsKLSsgICAgICB1bnNpZ25lZCBsb25nIHdyaXR0 ZW47Ci0rICAgICAgY2hhciAqIGJ1ZiA9IFhORVdWRUMgKGNoYXIsIDE2Mzg0KTsKKytwcm9jIHBj aC1maW5pc2ggeyBhcmdzIH0geworKyAgICBnbG9iYWwgcGNoX3Vuc3VwcG9ydGVkX2RlYnVnIHBj aF91bnN1cHBvcnRlZAorKyAgICB1bnNldCBwY2hfdW5zdXBwb3J0ZWRfZGVidWcKKysgICAgdW5z ZXQgcGNoX3Vuc3VwcG9ydGVkCisrfQogKwotKyAgICAgIGZvciAod3JpdHRlbiA9IDA7IHdyaXR0 ZW4gPCBoLmFzbV9zaXplOyApCi0rCXsKLSsJICBsb25nIHNpemUgPSBoLmFzbV9zaXplIC0gd3Jp dHRlbjsKLSsJICBpZiAoc2l6ZSA+IDE2Mzg0KQotKwkgICAgc2l6ZSA9IDE2Mzg0OwotKwkgIGlm IChmcmVhZCAoYnVmLCBzaXplLCAxLCBmKSAhPSAxCi0rCSAgICAgIHx8IGZ3cml0ZSAoYnVmLCBz aXplLCAxLCBhc21fb3V0X2ZpbGUpICE9IDEpCi0rCSAgICBjcHBfZXJybm8gKHBmaWxlLCBDUFBf RExfRVJST1IsICJyZWFkaW5nIik7Ci0rCSAgd3JpdHRlbiArPSBzaXplOwotKwl9Ci0rICAgICAg ZnJlZSAoYnVmKTsKLSsgICAgfQotKyAgZWxzZQotKyAgICB7Ci0rICAgICAgLyogSWYgd2UncmUg cHJlcHJvY2Vzc2luZywgZG9uJ3Qgd3JpdGUgdG8gYSBOVUxMCi0rCSBhc21fb3V0X2ZpbGUuICAq LwotKyAgICAgIGlmIChmc2VlayAoZiwgaC5hc21fc2l6ZSwgU0VFS19DVVIpICE9IDApCi0rCWNw cF9lcnJubyAocGZpbGUsIENQUF9ETF9FUlJPUiwgInNlZWtpbmciKTsKKytwcm9jIGNoZWNrX2Vm ZmVjdGl2ZV90YXJnZXRfcGNoX3N1cHBvcnRlZF9kZWJ1ZyB7IH0geworKyAgICBnbG9iYWwgcGNo X3Vuc3VwcG9ydGVkX2RlYnVnCisrICAgIGlmIHsgJHBjaF91bnN1cHBvcnRlZF9kZWJ1ZyB9IHsK KysJcmV0dXJuIDAKICsgICAgfQorKyAgICByZXR1cm4gMQorK30KICsKLSAgIC8qIFNhdmUgdGhl IGxvY2F0aW9uIGFuZCB0aGVuIHJlc3RvcmUgaXQgYWZ0ZXIgcmVhZGluZyB0aGUgUENILiAgKi8K LSAgIHNhdmVkX2xvYyA9IGV4cGFuZF9sb2NhdGlvbiAobGluZV90YWJsZS0+aGlnaGVzdF9saW5l KTsKLSAgIHNhdmVkX3RyYWNlX2luY2x1ZGVzID0gbGluZV90YWJsZS0+dHJhY2VfaW5jbHVkZXM7 Ci1AQCAtNDM1LDMgKzUyOSwxNCBAQCBjX2NvbW1vbl9wY2hfcHJhZ21hIChjcHBfcmVhZGVyICpw ZmlsZSwKLSAgIGNsb3NlIChmZCk7Ci0gfQotIAotKy8qIFByaW50IG91dCBleGVjdXRhYmxlX2No ZWNrc3VtW10uICAqLworIHByb2MgZGctZmxhZ3MtcGNoIHsgc3ViZGlyIHRlc3Qgb3RoZXJmbGFn cyBvcHRpb25zIHN1ZmZpeCB9IHsKKyAgICAgZ2xvYmFsIHJ1bnRlc3RzIGRnLWRvLXdoYXQtZGVm YXVsdAorKyAgICBnbG9iYWwgcGNoX3Vuc3VwcG9ydGVkX2RlYnVnIHBjaF91bnN1cHBvcnRlZAor IAorICAgICAjIElmIHdlJ3JlIG9ubHkgdGVzdGluZyBzcGVjaWZpYyBmaWxlcyBhbmQgdGhpcyBp c24ndCBvbmUgb2YgdGhlbSwgc2tpcCBpdC4KKyAgICAgaWYgIVtydW50ZXN0X2ZpbGVfcCAkcnVu dGVzdHMgJHRlc3RdIHsKK0BAIC0zNSw2ICs3NiwxMyBAQCBwcm9jIGRnLWZsYWdzLXBjaCB7IHN1 YmRpciB0ZXN0IG90aGVyZmxhCisgICAgIGZvcmVhY2ggZmxhZ3MgJG9wdGlvbnMgeworIAl2ZXJi b3NlICJUZXN0aW5nICRuc2hvcnQsICRvdGhlcmZsYWdzICRmbGFncyIgMQorIAorKwlpZiB7ICRw Y2hfdW5zdXBwb3J0ZWQgIT0gMCBcCisrCSAgICAgfHwgKCAkcGNoX3Vuc3VwcG9ydGVkX2RlYnVn ICE9IDAgJiYgW3JlZ2V4cCAiIC1nIiAiICRmbGFncyJdICkgfSB7CisrCSAgICB2ZXJib3NlIC1s b2cgIiRuc2hvcnQgdW5zdXBwb3J0ZWQgYmVjYXVzZSBkZWJ1ZyBmb3JtYXQgY29uZmxpY3RzIHdp dGggUENIIgorKwkgICAgdW5zdXBwb3J0ZWQgIiRuc2hvcnQgJGZsYWdzIgorKwkgICAgY29udGlu dWUKKysJfQogKwotK3ZvaWQKLStjX2NvbW1vbl9wcmludF9wY2hfY2hlY2tzdW0gKEZJTEUgKmYp Ci0rewotKyAgaW50IGk7Ci0rICBmcHV0cyAoIkNvbXBpbGVyIGV4ZWN1dGFibGUgY2hlY2tzdW06 ICIsIGYpOwotKyAgZm9yIChpID0gMDsgaSA8IDE2OyBpKyspCi0rICAgIGZwcmludGYgKGYsICIl MDJ4IiwgZXhlY3V0YWJsZV9jaGVja3N1bVtpXSk7Ci0rICBwdXRjICgnXG4nLCBmKTsKLSt9Ci0t LS0gZ2NjL2MtZmFtaWx5L2Mtb3B0cy5jLmpqCTIwMTMtMDItMTMgMDk6Mjk6MTYuMTEwNzU3NzIz ICswMTAwCi0rKysgZ2NjL2MtZmFtaWx5L2Mtb3B0cy5jCTIwMTMtMDItMTMgMTE6MzQ6NDUuNTUx NzYxNTYyICswMTAwCi1AQCAtOTk5LDEzICs5OTksNyBAQCBjX2NvbW1vbl9pbml0ICh2b2lkKQot ICAgY3BwX2luaXRfaWNvbnYgKHBhcnNlX2luKTsKLSAKLSAgIGlmICh2ZXJzaW9uX2ZsYWcpCi0t ICAgIHsKLS0gICAgICBpbnQgaTsKLS0gICAgICBmcHV0cyAoIkNvbXBpbGVyIGV4ZWN1dGFibGUg Y2hlY2tzdW06ICIsIHN0ZGVycik7Ci0tICAgICAgZm9yIChpID0gMDsgaSA8IDE2OyBpKyspCi0t CWZwcmludGYgKHN0ZGVyciwgIiUwMngiLCBleGVjdXRhYmxlX2NoZWNrc3VtW2ldKTsKLS0gICAg ICBwdXRjICgnXG4nLCBzdGRlcnIpOwotLSAgICB9Ci0rICAgIGNfY29tbW9uX3ByaW50X3BjaF9j aGVja3N1bSAoc3RkZXJyKTsKLSAKLSAgIC8qIEhhcyB0byB3YWl0IHVudGlsIG5vdyBzbyB0aGF0 IGNwcGxpYiBoYXMgaXRzIGhhc2ggdGFibGUuICAqLwotICAgaW5pdF9wcmFnbWEgKCk7Ci0tLS0g Z2NjL2MtZmFtaWx5L2MtY29tbW9uLmguamoJMjAxMy0wMi0xMyAwOToyOToxNi4xNTI3NTc0NjIg KzAxMDAKLSsrKyBnY2MvYy1mYW1pbHkvYy1jb21tb24uaAkyMDEzLTAyLTEzIDExOjM0OjQ1LjU1 MTc2MTU2MiArMDEwMAotQEAgLTEwMTEsNiArMTAxMSw3IEBAIGV4dGVybiB2b2lkIGNfY29tbW9u X3JlYWRfcGNoIChjcHBfcmVhZGUKLSBleHRlcm4gdm9pZCBjX2NvbW1vbl93cml0ZV9wY2ggKHZv aWQpOwotIGV4dGVybiB2b2lkIGNfY29tbW9uX25vX21vcmVfcGNoICh2b2lkKTsKLSBleHRlcm4g dm9pZCBjX2NvbW1vbl9wY2hfcHJhZ21hIChjcHBfcmVhZGVyICpwZmlsZSwgY29uc3QgY2hhciAq KTsKLStleHRlcm4gdm9pZCBjX2NvbW1vbl9wcmludF9wY2hfY2hlY2tzdW0gKEZJTEUgKmYpOwot IAotIC8qIEluICotY2hlY2tzdW0uYyAqLwotIGV4dGVybiBjb25zdCB1bnNpZ25lZCBjaGFyIGV4 ZWN1dGFibGVfY2hlY2tzdW1bMTZdOworIAkjIEZvciB0aGUgaGVhZGVyIGZpbGVzLCB0aGUgZGVm YXVsdCBpcyB0byBwcmVjb21waWxlLgorIAlzZXQgZGctZG8td2hhdC1kZWZhdWx0IHByZWNvbXBp bGUKKyAJY2F0Y2ggeyBmaWxlX29uX2hvc3QgZGVsZXRlICIkYm5hbWUkc3VmZml4IiB9CitAQCAt NzgsNyArMTI2LDggQEAgcHJvYyBkZy1mbGFncy1wY2ggeyBzdWJkaXIgdGVzdCBvdGhlcmZsYQor ICAJCSAgICBmYWlsICIkbnNob3J0ICRmbGFncyBhc3NlbWJseSBjb21wYXJpc29uIgorIAkJfQor IAkgICAgfQorLQl9IGVsc2UgeworKwl9IGVsc2VpZiB7ICRwY2hfdW5zdXBwb3J0ZWRfZGVidWcg PT0gMCBcCisrCQkgICB8fCBbbGxlbmd0aCBbZ3JlcCAkdGVzdCAie1xbIFx0XF1cK2RnLXJlcXVp cmUtZWZmZWN0aXZlLXRhcmdldFxbIFx0XF1cK3BjaF9zdXBwb3J0ZWRfZGVidWdcWyBcdFxdXCsu KlxbIFx0XF1cK30iXV0gPiAwIH0geworIAkgICAgdmVyYm9zZSAtbG9nICJwY2ggZmlsZSAnJGJu YW1lJHN1ZmZpeC5nY2gnIG1pc3NpbmciCisgCSAgICBmYWlsICIkbnNob3J0ICRmbGFncyIKKyAJ ICAgIGlmIHsgISRoYXZlX2VycnMgfSB7CistLS0gZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvcGNoL3Bj aC5leHAuamoJMjAxMy0wMS0xMSAwOTowMjo0NC4wMDAwMDAwMDAgKzAxMDAKKysrKyBnY2MvdGVz dHN1aXRlL2crKy5kZy9wY2gvcGNoLmV4cAkyMDEzLTAyLTE1IDE0OjUzOjAzLjUxNzEwNjQ2NCAr MDEwMAorQEAgLTIzLDYgKzIzLDcgQEAgbG9hZF9saWIgZGctcGNoLmV4cAorIAorICMgSW5pdGlh bGl6ZSBgZGcnLgorIGRnLWluaXQKKytwY2gtaW5pdAorIAorIHNldCBvbGRfZGdfZG9fd2hhdF9k ZWZhdWx0ICIke2RnLWRvLXdoYXQtZGVmYXVsdH0iCisgCitAQCAtMzYsNCArMzcsNSBAQCBmb3Jl YWNoIHRlc3QgW2xzb3J0IFtnbG9iIC1ub2NvbXBsYWluICRzCisgc2V0IGRnLWRvLXdoYXQtZGVm YXVsdCAiJG9sZF9kZ19kb193aGF0X2RlZmF1bHQiCisgCisgIyBBbGwgZG9uZS4KKytwY2gtZmlu aXNoCisgZGctZmluaXNoCistLS0gZ2NjL3Rlc3RzdWl0ZS9vYmpjLmRnL3BjaC9wY2guZXhwLmpq CTIwMTMtMDEtMTEgMDk6MDI6NDQuMDAwMDAwMDAwICswMTAwCisrKysgZ2NjL3Rlc3RzdWl0ZS9v YmpjLmRnL3BjaC9wY2guZXhwCTIwMTMtMDItMTUgMTQ6NTM6MzAuMDYzOTUxMDUxICswMTAwCitA QCAtMjQsOCArMjQsOCBAQCBsb2FkX2xpYiB0b3J0dXJlLW9wdGlvbnMuZXhwCisgCisgIyBJbml0 aWFsaXplIGBkZycuCisgZGctaW5pdAorLQorIHRvcnR1cmUtaW5pdAorK3BjaC1pbml0CisgCisg c2V0LXRvcnR1cmUtb3B0aW9ucyAkREdfVE9SVFVSRV9PUFRJT05TCisgCitAQCAtNTksNSArNTks NiBAQCBpZiBbaXN0YXJnZXQgIiotKi1kYXJ3aW4qIiBdIHsKKyBzZXQgZGctZG8td2hhdC1kZWZh dWx0ICIkb2xkX2RnX2RvX3doYXRfZGVmYXVsdCIKKyAKKyAjIEFsbCBkb25lLgorK3BjaC1maW5p c2gKKyB0b3J0dXJlLWZpbmlzaAorIGRnLWZpbmlzaAorLS0tIGdjYy90ZXN0c3VpdGUvZ2NjLmRn L3BjaC9wY2guZXhwLmpqCTIwMTMtMDEtMTEgMDk6MDI6NDIuMDAwMDAwMDAwICswMTAwCisrKysg Z2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcGNoL3BjaC5leHAJMjAxMy0wMi0xNSAxNDoxMToyNy4wNTM4 OTY4MDkgKzAxMDAKK0BAIC0yNiw2ICsyNiw3IEBAIGxvYWRfbGliIHRvcnR1cmUtb3B0aW9ucy5l eHAKKyBkZy1pbml0CisgdG9ydHVyZS1pbml0Cisgc2V0LXRvcnR1cmUtb3B0aW9ucyAkREdfVE9S VFVSRV9PUFRJT05TCisrcGNoLWluaXQKKyAKKyBzZXQgb2xkX2RnX2RvX3doYXRfZGVmYXVsdCAi JHtkZy1kby13aGF0LWRlZmF1bHR9IgorIAorQEAgLTU5LDUgKzYwLDYgQEAgZmlsZSBkZWxldGUg JHRlc3RoCisgc2V0IGRnLWRvLXdoYXQtZGVmYXVsdCAiJG9sZF9kZ19kb193aGF0X2RlZmF1bHQi CisgCisgIyBBbGwgZG9uZS4KKytwY2gtZmluaXNoCisgdG9ydHVyZS1maW5pc2gKKyBkZy1maW5p c2gKKy0tLSBnY2MvdGVzdHN1aXRlL2djYy5kZy9wY2gvdmFsaWQtMS5jLmpqCTIwMDktMDYtMDgg MTE6NTM6NDguMDAwMDAwMDAwICswMjAwCisrKysgZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcGNoL3Zh bGlkLTEuYwkyMDEzLTAyLTE1IDE1OjE5OjQ0LjEyNDgzMzI1OSArMDEwMAorQEAgLTEsMyArMSw0 IEBACisrLyogeyBkZy1yZXF1aXJlLWVmZmVjdGl2ZS10YXJnZXQgcGNoX3N1cHBvcnRlZF9kZWJ1 ZyB9ICovCisgLyogeyBkZy1vcHRpb25zICItSS4gLVdpbnZhbGlkLXBjaCAtZyIgfSAqLworIAor ICNpbmNsdWRlICJ2YWxpZC0xLmgiLyogeyBkZy13YXJuaW5nICJjcmVhdGVkIHdpdGggLWdub25l LCBidXQgdXNlZCB3aXRoIC1nIiB9ICovCistLS0gZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcGNoL3Zh bGlkLTEuaHMuamoJMjAwOC0wOS0wNSAxMjo1NDoyNi4wMDAwMDAwMDAgKzAyMDAKKysrKyBnY2Mv dGVzdHN1aXRlL2djYy5kZy9wY2gvdmFsaWQtMS5ocwkyMDEzLTAyLTE1IDE1OjE5OjUwLjY4Njc5 NDM0MCArMDEwMAorQEAgLTEsMyArMSw0IEBACisrLyogeyBkZy1yZXF1aXJlLWVmZmVjdGl2ZS10 YXJnZXQgcGNoX3N1cHBvcnRlZF9kZWJ1ZyB9ICovCisgLyogeyBkZy1vcHRpb25zICItSS4gLVdp bnZhbGlkLXBjaCAtZzAiIH0gKi8KKyAKKyBleHRlcm4gaW50IHg7CistLS0gZ2NjL3Rlc3RzdWl0 ZS9nY2MuZGcvcGNoL3ZhbGlkLTFiLmMuamoJMjAwOC0wOS0wNSAxMjo1NDoyNi4wMDAwMDAwMDAg KzAyMDAKKysrKyBnY2MvdGVzdHN1aXRlL2djYy5kZy9wY2gvdmFsaWQtMWIuYwkyMDEzLTAyLTE1 IDE1OjE5OjU1LjkzNTc2MzYzMSArMDEwMAorQEAgLTEsMyArMSw0IEBACisrLyogeyBkZy1yZXF1 aXJlLWVmZmVjdGl2ZS10YXJnZXQgcGNoX3N1cHBvcnRlZF9kZWJ1ZyB9ICovCisgLyogeyBkZy1v cHRpb25zICItSS4gLVdpbnZhbGlkLXBjaCAtZzAiIH0gKi8KKyAKKyAjaW5jbHVkZSAidmFsaWQt MWIuaCIKKy0tLSBnY2MvdGVzdHN1aXRlL2djYy5kZy9wY2gvdmFsaWQtMWIuaHMuamoJMjAwOC0w OS0wNSAxMjo1NDoyNi4wMDAwMDAwMDAgKzAyMDAKKysrKyBnY2MvdGVzdHN1aXRlL2djYy5kZy9w Y2gvdmFsaWQtMWIuaHMJMjAxMy0wMi0xNSAxNToyMDowMi4yMTQ3Mjc3OTQgKzAxMDAKK0BAIC0x LDMgKzEsNCBAQAorKy8qIHsgZGctcmVxdWlyZS1lZmZlY3RpdmUtdGFyZ2V0IHBjaF9zdXBwb3J0 ZWRfZGVidWcgfSAqLworIC8qIHsgZGctb3B0aW9ucyAiLUkuIC1XaW52YWxpZC1wY2ggLWciIH0g Ki8KKyAKKyBleHRlcm4gaW50IHg7CgpkaWZmIC0tZ2l0IGEvZ2NjNDgtcHI1NjExMS5wYXRjaCBi L2djYzQ4LXByNTYxMTEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA1YWJi ODEuLjAwMDAwMDAKLS0tIGEvZ2NjNDgtcHI1NjExMS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0x LDk3ICswLDAgQEAKLTIwMTMtMDItMTMgIE1hcmMgR2xpc3NlICA8bWFyYy5nbGlzc2VAaW5yaWEu ZnI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCi0JUFIgbGlic3RkYysrLzU2MTExICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotCSog aW5jbHVkZS9zdGQvY29tcGxleCAoY29tcGxleCk6IFVuZGVmaW5lLiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKLQkqIGluY2x1ZGUvY19jb21wYXRpYmlsaXR5L2NvbXBs ZXguaCAoY29tcGxleCk6IE9ubHkgdW5kZWZpbmUgaWYgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0JPGNv bXBsZXg+IGhhcyBiZWVuIGluY2x1ZGVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAotCSogdGVzdHN1aXRlLzI2X251bWVyaWNzL2NvbXBsZXgv NTYxMTEuY2M6IE5ldyB0ZXN0Y2FzZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLQotLS0t IGxpYnN0ZGMrKy12My9pbmNsdWRlL3N0ZC9jb21wbGV4CShyZXZpc2lvbiAxOTYwMTgpCi0rKysg bGlic3RkYysrLXYzL2luY2x1ZGUvc3RkL2NvbXBsZXgJKHdvcmtpbmcgY29weSkKLUBAIC0zNywy MCArMzcsMjMgQEAKLSAjZGVmaW5lIF9HTElCQ1hYX0NPTVBMRVggMQotIAotICNwcmFnbWEgR0ND IHN5c3RlbV9oZWFkZXIKLSAKLSAjaW5jbHVkZSA8Yml0cy9jKytjb25maWcuaD4KLSAjaW5jbHVk ZSA8Yml0cy9jcHBfdHlwZV90cmFpdHMuaD4KLSAjaW5jbHVkZSA8ZXh0L3R5cGVfdHJhaXRzLmg+ Ci0gI2luY2x1ZGUgPGNtYXRoPgotICNpbmNsdWRlIDxzc3RyZWFtPgotIAotKy8vIEdldCByaWQg b2YgYSBtYWNybyBwb3NzaWJseSBkZWZpbmVkIGluIDxjb21wbGV4Lmg+Ci0rI3VuZGVmIGNvbXBs ZXgKLSsKLSBuYW1lc3BhY2Ugc3RkIF9HTElCQ1hYX1ZJU0lCSUxJVFkoZGVmYXVsdCkKLSB7Ci0g X0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFX1ZFUlNJT04KLSAKLSAgIC8qKgotICAgICogQGRlZmdy b3VwIGNvbXBsZXhfbnVtYmVycyBDb21wbGV4IE51bWJlcnMKLSAgICAqIEBpbmdyb3VwIG51bWVy aWNzCi0gICAgKgotICAgICogQ2xhc3NlcyBhbmQgZnVuY3Rpb25zIGZvciBjb21wbGV4IG51bWJl cnMuCi0gICAgKiBAewotLS0tIGxpYnN0ZGMrKy12My9pbmNsdWRlL2NfY29tcGF0aWJpbGl0eS9j b21wbGV4LmgJKHJldmlzaW9uIDE5NjAxOCkKLSsrKyBsaWJzdGRjKystdjMvaW5jbHVkZS9jX2Nv bXBhdGliaWxpdHkvY29tcGxleC5oCSh3b3JraW5nIGNvcHkpCi1AQCAtMjcsMTcgKzI3LDIwIEBA Ci0gICovCi0gCi0gI2luY2x1ZGUgPGJpdHMvYysrY29uZmlnLmg+Ci0gCi0gI2lmIF9fY3BsdXNw bHVzID49IDIwMTEwM0wKLSAjIGluY2x1ZGUgPGNjb21wbGV4PgotICNlbmRpZgotIAotICNpZiBf R0xJQkNYWF9IQVZFX0NPTVBMRVhfSAotICMgaW5jbHVkZV9uZXh0IDxjb21wbGV4Lmg+Ci0tIyB1 bmRlZiBjb21wbGV4Ci0rIyBpZmRlZiBfR0xJQkNYWF9DT01QTEVYCi0rLy8gU2VlIFBSNTYxMTEs IGtlZXAgdGhlIG1hY3JvIGluIEMrKzAzIGlmIHBvc3NpYmxlLgotKyMgIHVuZGVmIGNvbXBsZXgK LSsjIGVuZGlmCi0gI2VuZGlmCi0gCi0gI2lmbmRlZiBfR0xJQkNYWF9DT01QTEVYX0gKLSAjZGVm aW5lIF9HTElCQ1hYX0NPTVBMRVhfSCAxCi0gCi0gI2VuZGlmCi0tLS0gbGlic3RkYysrLXYzL3Rl c3RzdWl0ZS8yNl9udW1lcmljcy9jb21wbGV4LzU2MTExLmNjCShyZXZpc2lvbiAwKQotKysrIGxp YnN0ZGMrKy12My90ZXN0c3VpdGUvMjZfbnVtZXJpY3MvY29tcGxleC81NjExMS5jYwkocmV2aXNp b24gMCkKLUBAIC0wLDAgKzEsMzYgQEAKLSsvLyB7IGRnLWRvIGNvbXBpbGUgfQotKy8vIHsgZGct b3B0aW9ucyAiLXN0ZD1jKys5OCIgfQotKwotKy8vIENvcHlyaWdodCAoQykgMjAxMyBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsvLwotKy8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRo ZSBHTlUgSVNPIEMrKyBMaWJyYXJ5LiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUKLSsvLyBzb2Z0d2Fy ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUKLSsv LyB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5 IHRoZQotKy8vIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMywgb3Ig KGF0IHlvdXIgb3B0aW9uKQotKy8vIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKy8vIFRoaXMgbGli cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAot Ky8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mCi0rLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFLiAgU2VlIHRoZQotKy8vIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCi0rCi0rLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKLSsvLyB3aXRoIHRoaXMgbGlicmFy eTsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQotKy8vIDxodHRwOi8vd3d3Lmdu dS5vcmcvbGljZW5zZXMvPi4KLSsKLSsvLyBsaWJzdGRjKysvNTYxMTEKLSsvLyBJbiBDKyswMywg d2UgdHJ5IHRvIGtlZXAgdGhlIG1hY3JvICJjb21wbGV4IiBhcyBsb25nIGFzIGl0IGRvZXMgbm90 Ci0rLy8gY29uZmxpY3QgKHN0ZDo6Y29tcGxleCkuCi0rI2luY2x1ZGUgPGJpdHMvYysrY29uZmln Lmg+Ci0rI2lmIF9HTElCQ1hYX0hBVkVfQ09NUExFWF9ICi0rIyBpbmNsdWRlIDxjb21wbGV4Lmg+ Ci0rI2VuZGlmCi0rCi0raW50IG1haW4oKQotK3sKLSsjaWYgX0dMSUJDWFhfSEFWRV9DT01QTEVY X0gKLSsgIGRvdWJsZSBjb21wbGV4IHggPSAuNTsKLSsgIGRvdWJsZSBjb21wbGV4IHkgPSBjYWNv cyAoeCk7Ci0rICAodm9pZCl5OwotKyNlbmRpZgotK30KCmRpZmYgLS1naXQgYS9nY2M0OC1wcjU2 MjI0LnBhdGNoIGIvZ2NjNDgtcHI1NjIyNC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggNzYzNWJmNy4uMDAwMDAwMAotLS0gYS9nY2M0OC1wcjU2MjI0LnBhdGNoCisrKyAvZGV2 L251bGwKQEAgLTEsODEgKzAsMCBAQAotMjAxMy0wMi0wOSAgVGhvbWFzIEtvZW5pZyAgPHRrb2Vu aWdAZ2NjLmdudS5vcmc+Ci0KLQlQUiBmb3J0cmFuLzU2MjI0Ci0JKiBnZm9ydHJhbi5oIChnZmNf YWRkX2luY2x1ZGVfcGF0aCk6ICBBZGQgYm9vbGVhbiBhcmd1bWVudCBmb3Igd2Fybi4KLQkqIHNj YW5uZXIuYyAoZ2ZjX2FkZF9pbmNsdWRlX3BhdGgpOiAgUGFzcyBhbG9uZyB3YXJuIGFyZ3VtZW50 Ci0JdG8gYWRkX3BhdGhfdG9fbGlzdC4KLQkqIG9wdGlvbnMuYyAoZ2ZjX3Bvc3Rfb3B0aW9ucyk6 ICBBZGQgdHJ1ZSB3YXJuIGFyZ3VtZW50IHRvCi0JZ2ZjX2FkZF9pbmNsdWRlX3BhdGguCi0JKGdm Y19oYW5kbGVfbW9kdWxlX3BhdGhfb3B0aW9ucyk6ICBMaWtld2lzZS4KLQkoZ2ZjX2hhbmRsZV9v cHRpb24pOiBBbHNvIGdmY19hZGRfaW5jbHVkZV9wYXRoIGZvciBpbnRyaW5zaWMKLQltb2R1bGVz LCB3aXRob3V0IHdhcm5pbmcuCi0KLS0tLSBnY2MvZm9ydHJhbi9nZm9ydHJhbi5oCShSZXZpc2lv biAxOTU2ODYpCi0rKysgZ2NjL2ZvcnRyYW4vZ2ZvcnRyYW4uaAkoQXJiZWl0c2tvcGllKQotQEAg LTIzNzgsNyArMjM3OCw3IEBAIG1hdGNoIGdmY19tYXRjaF9jaGFyX3NwZWMgKGdmY190eXBlc3Bl YyAqKTsKLSB2b2lkIGdmY19zY2FubmVyX2RvbmVfMSAodm9pZCk7Ci0gdm9pZCBnZmNfc2Nhbm5l cl9pbml0XzEgKHZvaWQpOwotIAotLXZvaWQgZ2ZjX2FkZF9pbmNsdWRlX3BhdGggKGNvbnN0IGNo YXIgKiwgYm9vbCwgYm9vbCk7Ci0rdm9pZCBnZmNfYWRkX2luY2x1ZGVfcGF0aCAoY29uc3QgY2hh ciAqLCBib29sLCBib29sLCBib29sKTsKLSB2b2lkIGdmY19hZGRfaW50cmluc2ljX21vZHVsZXNf cGF0aCAoY29uc3QgY2hhciAqKTsKLSB2b2lkIGdmY19yZWxlYXNlX2luY2x1ZGVfcGF0aCAodm9p ZCk7Ci0gRklMRSAqZ2ZjX29wZW5faW5jbHVkZWRfZmlsZSAoY29uc3QgY2hhciAqLCBib29sLCBi b29sKTsKLS0tLSBnY2MvZm9ydHJhbi9zY2FubmVyLmMJKFJldmlzaW9uIDE5NTY4NikKLSsrKyBn Y2MvZm9ydHJhbi9zY2FubmVyLmMJKEFyYmVpdHNrb3BpZSkKLUBAIC0zNzUsOSArMzc1LDEwIEBA IGFkZF9wYXRoX3RvX2xpc3QgKGdmY19kaXJlY3RvcnlsaXN0ICoqbGlzdCwgY29uc3QKLSAKLSAK LSB2b2lkCi0tZ2ZjX2FkZF9pbmNsdWRlX3BhdGggKGNvbnN0IGNoYXIgKnBhdGgsIGJvb2wgdXNl X2Zvcl9tb2R1bGVzLCBib29sIGZpbGVfZGlyKQotK2dmY19hZGRfaW5jbHVkZV9wYXRoIChjb25z dCBjaGFyICpwYXRoLCBib29sIHVzZV9mb3JfbW9kdWxlcywgYm9vbCBmaWxlX2RpciwKLSsJCSAg ICAgIGJvb2wgd2FybikKLSB7Ci0tICBhZGRfcGF0aF90b19saXN0ICgmaW5jbHVkZV9kaXJzLCBw YXRoLCB1c2VfZm9yX21vZHVsZXMsIGZpbGVfZGlyLCB0cnVlKTsKLSsgIGFkZF9wYXRoX3RvX2xp c3QgKCZpbmNsdWRlX2RpcnMsIHBhdGgsIHVzZV9mb3JfbW9kdWxlcywgZmlsZV9kaXIsIHdhcm4p OwotIAotICAgLyogRm9yICcjaW5jbHVkZSAiLi4uIicgdGhlc2UgZGlyZWN0b3JpZXMgYXJlIGF1 dG9tYXRpY2FsbHkgc2VhcmNoZWQuICAqLwotICAgaWYgKCFmaWxlX2RpcikKLS0tLSBnY2MvZm9y dHJhbi9vcHRpb25zLmMJKFJldmlzaW9uIDE5NTY4NikKLSsrKyBnY2MvZm9ydHJhbi9vcHRpb25z LmMJKEFyYmVpdHNrb3BpZSkKLUBAIC0zMzcsMTAgKzMzNywxMCBAQCBnZmNfcG9zdF9vcHRpb25z IChjb25zdCBjaGFyICoqcGZpbGVuYW1lKQotICAgICAgIHNvdXJjZV9wYXRoID0gKGNoYXIgKikg YWxsb2NhIChpICsgMSk7Ci0gICAgICAgbWVtY3B5IChzb3VyY2VfcGF0aCwgY2Fub25fc291cmNl X2ZpbGUsIGkpOwotICAgICAgIHNvdXJjZV9wYXRoW2ldID0gMDsKLS0gICAgICBnZmNfYWRkX2lu Y2x1ZGVfcGF0aCAoc291cmNlX3BhdGgsIHRydWUsIHRydWUpOwotKyAgICAgIGdmY19hZGRfaW5j bHVkZV9wYXRoIChzb3VyY2VfcGF0aCwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSk7Ci0gICAgIH0KLSAgIGVs c2UKLS0gICAgZ2ZjX2FkZF9pbmNsdWRlX3BhdGggKCIuIiwgdHJ1ZSwgdHJ1ZSk7Ci0rICAgIGdm Y19hZGRfaW5jbHVkZV9wYXRoICgiLiIsIHRydWUsIHRydWUsIHRydWUpOwotIAotICAgaWYgKGNh bm9uX3NvdXJjZV9maWxlICE9IGdmY19zb3VyY2VfZmlsZSkKLSAgICAgZnJlZSAoQ09OU1RfQ0FT VCAoY2hhciAqLCBjYW5vbl9zb3VyY2VfZmlsZSkpOwotQEAgLTQ5OCw3ICs0OTgsNyBAQCBnZmNf aGFuZGxlX21vZHVsZV9wYXRoX29wdGlvbnMgKGNvbnN0IGNoYXIgKmFyZykKLSAgIGdmY19vcHRp b24ubW9kdWxlX2RpciA9IFhDTkVXVkVDIChjaGFyLCBzdHJsZW4gKGFyZykgKyAyKTsKLSAgIHN0 cmNweSAoZ2ZjX29wdGlvbi5tb2R1bGVfZGlyLCBhcmcpOwotIAotLSAgZ2ZjX2FkZF9pbmNsdWRl X3BhdGggKGdmY19vcHRpb24ubW9kdWxlX2RpciwgdHJ1ZSwgZmFsc2UpOwotKyAgZ2ZjX2FkZF9p bmNsdWRlX3BhdGggKGdmY19vcHRpb24ubW9kdWxlX2RpciwgdHJ1ZSwgZmFsc2UsIHRydWUpOwot IAotICAgc3RyY2F0IChnZmNfb3B0aW9uLm1vZHVsZV9kaXIsICIvIik7Ci0gfQotQEAgLTg0NCw2 ICs4NDQsOSBAQCBnZmNfaGFuZGxlX29wdGlvbiAoc2l6ZV90IHNjb2RlLCBjb25zdCBjaGFyICph cmcsCi0gCi0gICAgIGNhc2UgT1BUX2ZpbnRyaW5zaWNfbW9kdWxlc19wYXRoOgotICAgICBjYXNl IE9QVF9maW50cmluc2ljX21vZHVsZXNfcGF0aF86Ci0rCi0rICAgICAgZ2ZjX2FkZF9pbmNsdWRl X3BhdGggKGFyZywgZmFsc2UsIGZhbHNlLCBmYWxzZSk7Ci0rCi0gICAgICAgZ2ZjX2FkZF9pbnRy aW5zaWNfbW9kdWxlc19wYXRoIChhcmcpOwotICAgICAgIGJyZWFrOwotIAotQEAgLTk3OCw3ICs5 ODMsNyBAQCBnZmNfaGFuZGxlX29wdGlvbiAoc2l6ZV90IHNjb2RlLCBjb25zdCBjaGFyICphcmcs Ci0gICAgICAgYnJlYWs7Ci0gCi0gICAgIGNhc2UgT1BUX0k6Ci0tICAgICAgZ2ZjX2FkZF9pbmNs dWRlX3BhdGggKGFyZywgdHJ1ZSwgZmFsc2UpOwotKyAgICAgIGdmY19hZGRfaW5jbHVkZV9wYXRo IChhcmcsIHRydWUsIGZhbHNlLCB0cnVlKTsKLSAgICAgICBicmVhazsKLSAKLSAgICAgY2FzZSBP UFRfSjoKCmRpZmYgLS1naXQgYS9zb3VyY2VzIGIvc291cmNlcwppbmRleCAyZjhiNDkyLi4wMzJk OTVjIDEwMDY0NAotLS0gYS9zb3VyY2VzCisrKyBiL3NvdXJjZXMKQEAgLTEsNCArMSw0IEBACiBi ZTc4YTQ3YmQ4MjUyMzI1MGViM2U5MTY0NmRiNWIzZCAgY2xvb2ctMC4xOC4wLnRhci5negogMjY1 OWYwOWMyZTQzZWY4YjdkNDQwNjMyMTc1M2YxYjIgIGZhc3RqYXItMC45Ny50YXIuZ3oKIGJjZTE1 ODYzODRkODYzNWE3NmQyZjAxN2ZiMDY3Y2QyICBpc2wtMC4xMS4xLnRhci5iejIKLWI2OWEzNDNj NTdlODA1YmQ1ZTNjOTRmZGNkN2Q0NWI3ICBnY2MtNC44LjAtMjAxMzAyMTMudGFyLmJ6MgorNGZh NmNiZGE4ZTk4YWU3OTAyMTJjNmI3YjAwZmI5MzkgIGdjYy00LjguMC0yMDEzMDIxNS50YXIuYnoy Cg==