fontconfig: Branch 'master'
[email protected] (GitLab Mirror) Fri, 1 Nov 2019 06:00:03 +0000 (UTC)
| Newsgroups | gmane.comp.fonts.fontconfig |
|---|---|
| Message-ID | <[email protected]> |
IGRvYy9mY2NvbmZpZy5mbmNzICAgICAgICB8ICAgMjAgKysrCiBmb250Y29uZmlnL2ZvbnRjb25m aWcuaCAgfCAgICA0IAogc3JjL2ZjY2FjaGUuYyAgICAgICAgICAgIHwgICA3MyArKysrKysrKysr Ky0tLQogc3JjL2ZjY2ZnLmMgICAgICAgICAgICAgIHwgIDIzNyArKysrKysrKysrKysrKysrKysr KysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLQogc3JjL2ZjZGlyLmMgICAgICAgICAgICAgIHwg ICAzMSArKysrKy0KIHNyYy9mY2luaXQuYyAgICAgICAgICAgICB8ICAgMTUgKy0KIHNyYy9mY2xp c3QuYyAgICAgICAgICAgICB8ICAgMjUgKystLQogc3JjL2ZjbWF0Y2guYyAgICAgICAgICAgIHwg ICA0OCArKysrLS0tLS0KIHRlc3QvTWFrZWZpbGUuYW0gICAgICAgICB8ICAgIDUgCiB0ZXN0L3J1 bi10ZXN0LnNoICAgICAgICAgfCAgIDE1ICsrCiB0ZXN0L3Rlc3QtY3JidWcxMDA0MjU0LmMgfCAg MTE2ICsrKysrKysrKysrKysrKysrKysrKysrCiAxMSBmaWxlcyBjaGFuZ2VkLCA0MzYgaW5zZXJ0 aW9ucygrKSwgMTUzIGRlbGV0aW9ucygtKQoKTmV3IGNvbW1pdHM6CmNvbW1pdCBiNWJjZjYxZmU3 ODllNjZkZjJkZTYwOWVjMjQ2Y2I3ZTRkMzI2MTgwCkF1dGhvcjogQWtpcmEgVEFHT0ggPGFraXJh QHRhZ29oLm9yZz4KRGF0ZTogICBGcmkgTm92IDEgMTQ6NDM6NDIgMjAxOSArMDkwMAoKICAgIFVz ZSBGY0NvbmZpZ1JlZmVyZW5jZS9EZXN0cm95IGFwcHJvcHJpYXRlbHkgaW5zdGVhZCBvZiBGY0Nv bmZpZ0dldEN1cnJlbnQKICAgIAogICAgVGhpcyBtYXkgaW1wcm92ZXMgdG8gYmUgTVQtc2FmZS4K ICAgIAogICAgUmVwb3J0ZWQgYXQgaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVt L2lzc3Vlcy9kZXRhaWw/aWQ9MTAwNDI1NAoKZGlmZiAtLWdpdCBhL2RvYy9mY2NvbmZpZy5mbmNz IGIvZG9jL2ZjY29uZmlnLmZuY3MKaW5kZXggODI3NjlkNS4uZTcwOWI1NCAxMDA2NDQKLS0tIGEv ZG9jL2ZjY29uZmlnLmZuY3MKKysrIGIvZG9jL2ZjY29uZmlnLmZuY3MKQEAgLTE3NCw2ICsxNzQs MTAgQEAgUmV0dXJucyBvbmUgb2YgdGhlIHR3byBzZXRzIG9mIGZvbnRzIGZyb20gdGhlIGNvbmZp Z3VyYXRpb24gYXMgc3BlY2lmaWVkCiBieSA8cGFyYW1ldGVyPnNldDwvcGFyYW1ldGVyPi4gVGhp cyBmb250IHNldCBpcyBvd25lZCBieSB0aGUgbGlicmFyeSBhbmQgbXVzdAogbm90IGJlIG1vZGlm aWVkIG9yIGZyZWVkLgogSWYgPHBhcmFtZXRlcj5jb25maWc8L3BhcmFtZXRlcj4gaXMgTlVMTCwg dGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiBpcyB1c2VkLgorICAgIDwvcGFyYT48cGFyYT4KK1Ro aXMgZnVuY3Rpb24gaXNuJ3QgTVQtc2FmZS4gPGZ1bmN0aW9uPkZjQ29uZmlnUmVmZXJlbmNlPC9m dW5jdGlvbj4gbXVzdCBiZSBjYWxsZWQKK2JlZm9yZSB1c2luZyB0aGlzIGFuZCB0aGVuIDxmdW5j dGlvbj5GY0NvbmZpZ0Rlc3Ryb3k8L2Z1bmN0aW9uPiB3aGVuCit0aGUgcmV0dXJuIHZhbHVlIGlz IG5vIGxvbmdlciByZWZlcmVuY2VkLgogQEAKIAogQFJFVEAgICAgICAgICAgIEZjQmxhbmtzICoK QEAgLTQwNyw2ICs0MTEsMTAgQEAgcGFyc2UgZXJyb3IsIHNlbWFudGljIGVycm9yIG9yIGFsbG9j YXRpb24gZmFpbHVyZS4gT3RoZXJ3aXNlIHJldHVybnMgRmNUcnVlLgogT2J0YWlucyB0aGUgc3lz dGVtIHJvb3QgZGlyZWN0b3J5IGluICdjb25maWcnIGlmIGF2YWlsYWJsZS4gQWxsIGZpbGVzCiAo aW5jbHVkaW5nIGZpbGUgcHJvcGVydGllcyBpbiBwYXR0ZXJucykgb2J0YWluZWQgZnJvbSB0aGlz ICdjb25maWcnIGFyZQogcmVsYXRpdmUgdG8gdGhpcyBzeXN0ZW0gcm9vdCBkaXJlY3RvcnkuCisg ICAgPC9wYXJhPjxwYXJhPgorVGhpcyBmdW5jdGlvbiBpc24ndCBNVC1zYWZlLiA8ZnVuY3Rpb24+ RmNDb25maWdSZWZlcmVuY2U8L2Z1bmN0aW9uPiBtdXN0IGJlIGNhbGxlZAorYmVmb3JlIHVzaW5n IHRoaXMgYW5kIHRoZW4gPGZ1bmN0aW9uPkZjQ29uZmlnRGVzdHJveTwvZnVuY3Rpb24+IHdoZW4K K3RoZSByZXR1cm4gdmFsdWUgaXMgbm8gbG9uZ2VyIHJlZmVyZW5jZWQuCiBAU0lOQ0VACQkyLjEw LjkyCiBAQAogCkBAIC00MzMsNiArNDQxLDEwIEBAIFdoZW4gc2V0dGluZyB0aGlzIG9uIHRoZSBj dXJyZW50IGNvbmZpZyB0aGlzIGNhdXNlcyBjaGFuZ2luZyBjdXJyZW50IGNvbmZpZwogQFBVUlBP U0VACUluaXRpYWxpemUgdGhlIGl0ZXJhdG9yCiBAREVTQ0AKIEluaXRpYWxpemUgJ2l0ZXInIHdp dGggdGhlIGZpcnN0IGl0ZXJhdG9yIGluIHRoZSBjb25maWcgZmlsZSBpbmZvcm1hdGlvbiBsaXN0 LgorICAgIDwvcGFyYT48cGFyYT4KK1RoaXMgZnVuY3Rpb24gaXNuJ3QgTVQtc2FmZS4gPGZ1bmN0 aW9uPkZjQ29uZmlnUmVmZXJlbmNlPC9mdW5jdGlvbj4gbXVzdCBiZSBjYWxsZWQKK2JlZm9yZSB1 c2luZyB0aGlzIGFuZCB0aGVuIDxmdW5jdGlvbj5GY0NvbmZpZ0Rlc3Ryb3k8L2Z1bmN0aW9uPiB3 aGVuIHRoZSByZWxldmFudAordmFsdWVzIGFyZSBubyBsb25nZXIgcmVmZXJlbmNlZC4KIEBTSU5D RUAJCTIuMTIuOTEKIEBACiAKQEAgLTQ0NCw2ICs0NTYsMTAgQEAgSW5pdGlhbGl6ZSAnaXRlcicg d2l0aCB0aGUgZmlyc3QgaXRlcmF0b3IgaW4gdGhlIGNvbmZpZyBmaWxlIGluZm9ybWF0aW9uIGxp c3QuCiBAREVTQ0AKIFNldCAnaXRlcicgdG8gcG9pbnQgdG8gdGhlIG5leHQgbm9kZSBpbiB0aGUg Y29uZmlnIGZpbGUgaW5mb3JtYXRpb24gbGlzdC4KIElmIHRoZXJlIGlzIG5vIG5leHQgbm9kZSwg RmNGYWxzZSBpcyByZXR1cm5lZC4KKyAgICA8L3BhcmE+PHBhcmE+CitUaGlzIGZ1bmN0aW9uIGlz bid0IE1ULXNhZmUuIDxmdW5jdGlvbj5GY0NvbmZpZ1JlZmVyZW5jZTwvZnVuY3Rpb24+IG11c3Qg YmUgY2FsbGVkCitiZWZvcmUgdXNpbmcgPGZ1bmN0aW9uPkZjQ29uZmlnRmlsZUluZm9JdGVySW5p dDwvZnVuY3Rpb24+IGFuZCB0aGVuCis8ZnVuY3Rpb24+RmNDb25maWdEZXN0cm95PC9mdW5jdGlv bj4gd2hlbiB0aGUgcmVsZXZhbnQgdmFsdWVzIGFyZSBubyBsb25nZXIgcmVmZXJlbmNlZC4KIEBT SU5DRUAJCTIuMTIuOTEKIEBACiAKQEAgLTQ1OSw1ICs0NzUsOSBAQCBJZiB0aGVyZSBpcyBubyBu ZXh0IG5vZGUsIEZjRmFsc2UgaXMgcmV0dXJuZWQuCiBPYnRhaW4gdGhlIGZpbGVuYW1lLCB0aGUg ZGVzY3JpcHRpb24gYW5kIHRoZSBmbGFnIHdoZXRoZXIgaXQgaXMgZW5hYmxlZCBvciBub3QKIGZv ciAnaXRlcicgd2hlcmUgcG9pbnRzIHRvIGN1cnJlbnQgY29uZmlndXJhdGlvbiBmaWxlIGluZm9y bWF0aW9uLgogSWYgdGhlIGl0ZXJhdG9yIGlzIGludmFsaWQsIEZjRmFsc2UgaXMgcmV0dXJuZWQu CisgICAgPC9wYXJhPjxwYXJhPgorVGhpcyBmdW5jdGlvbiBpc24ndCBNVC1zYWZlLiA8ZnVuY3Rp b24+RmNDb25maWdSZWZlcmVuY2U8L2Z1bmN0aW9uPiBtdXN0IGJlIGNhbGxlZAorYmVmb3JlIHVz aW5nIDxmdW5jdGlvbj5GY0NvbmZpZ0ZpbGVJbmZvSXRlckluaXQ8L2Z1bmN0aW9uPiBhbmQgdGhl bgorPGZ1bmN0aW9uPkZjQ29uZmlnRGVzdHJveTwvZnVuY3Rpb24+IHdoZW4gdGhlIHJlbGV2YW50 IHZhbHVlcyBhcmUgbm8gbG9uZ2VyIHJlZmVyZW5jZWQuCiBAU0lOQ0VACQkyLjEyLjkxCiBAQApk aWZmIC0tZ2l0IGEvZm9udGNvbmZpZy9mb250Y29uZmlnLmggYi9mb250Y29uZmlnL2ZvbnRjb25m aWcuaAppbmRleCAyZjBlOGNmLi5jNzk1MjQ1IDEwMDY0NAotLS0gYS9mb250Y29uZmlnL2ZvbnRj b25maWcuaAorKysgYi9mb250Y29uZmlnL2ZvbnRjb25maWcuaApAQCAtMzc1LDcgKzM3NSw3IEBA IEZjUHVibGljIEZjQm9vbAogRmNEaXJDYWNoZUNsZWFuIChjb25zdCBGY0NoYXI4ICpjYWNoZV9k aXIsIEZjQm9vbCB2ZXJib3NlKTsKIAogRmNQdWJsaWMgdm9pZAotRmNDYWNoZUNyZWF0ZVRhZ0Zp bGUgKGNvbnN0IEZjQ29uZmlnICpjb25maWcpOworRmNDYWNoZUNyZWF0ZVRhZ0ZpbGUgKEZjQ29u ZmlnICpjb25maWcpOwogCiBGY1B1YmxpYyBGY0Jvb2wKIEZjRGlyQ2FjaGVDcmVhdGVVVUlEIChG Y0NoYXI4ICAqZGlyLApAQCAtNDM3LDcgKzQzNyw3IEBAIEZjUHVibGljIEZjQmxhbmtzICoKIEZj Q29uZmlnR2V0QmxhbmtzIChGY0NvbmZpZyAqY29uZmlnKTsKIAogRmNQdWJsaWMgRmNTdHJMaXN0 ICoKLUZjQ29uZmlnR2V0Q2FjaGVEaXJzIChjb25zdCBGY0NvbmZpZwkqY29uZmlnKTsKK0ZjQ29u ZmlnR2V0Q2FjaGVEaXJzIChGY0NvbmZpZwkqY29uZmlnKTsKIAogRmNQdWJsaWMgaW50CiBGY0Nv bmZpZ0dldFJlc2NhbkludGVydmFsIChGY0NvbmZpZyAqY29uZmlnKTsKZGlmZiAtLWdpdCBhL3Ny Yy9mY2NhY2hlLmMgYi9zcmMvZmNjYWNoZS5jCmluZGV4IGM1NjU1NjAuLmQ4ZjFkYWIgMTAwNjQ0 Ci0tLSBhL3NyYy9mY2NhY2hlLmMKKysrIGIvc3JjL2ZjY2FjaGUuYwpAQCAtNTgsMTEgKzU4LDE1 IEBAIEZjRGlyQ2FjaGVEZWxldGVVVUlEIChjb25zdCBGY0NoYXI4ICAqZGlyLAogewogICAgIEZj Qm9vbCByZXQgPSBGY1RydWU7CiAjaWZuZGVmIF9XSU4zMgotICAgIGNvbnN0IEZjQ2hhcjggKnN5 c3Jvb3QgPSBGY0NvbmZpZ0dldFN5c1Jvb3QgKGNvbmZpZyk7CisgICAgY29uc3QgRmNDaGFyOCAq c3lzcm9vdDsKICAgICBGY0NoYXI4ICp0YXJnZXQsICpkOwogICAgIHN0cnVjdCBzdGF0IHN0YXRi OwogICAgIHN0cnVjdCB0aW1ldmFsIHRpbWVzWzJdOwogCisgICAgY29uZmlnID0gRmNDb25maWdS ZWZlcmVuY2UgKGNvbmZpZyk7CisgICAgaWYgKCFjb25maWcpCisJcmV0dXJuIEZjRmFsc2U7Cisg ICAgc3lzcm9vdCA9IEZjQ29uZmlnR2V0U3lzUm9vdCAoY29uZmlnKTsKICAgICBpZiAoc3lzcm9v dCkKIAlkID0gRmNTdHJCdWlsZEZpbGVuYW1lIChzeXNyb290LCBkaXIsIE5VTEwpOwogICAgIGVs c2UKQEAgLTk0LDYgKzk4LDcgQEAgRmNEaXJDYWNoZURlbGV0ZVVVSUQgKGNvbnN0IEZjQ2hhcjgg ICpkaXIsCiBiYWlsOgogICAgIEZjU3RyRnJlZSAoZCk7CiAjZW5kaWYKKyAgICBGY0NvbmZpZ0Rl c3Ryb3kgKGNvbmZpZyk7CiAKICAgICByZXR1cm4gcmV0OwogfQpAQCAtMjY1LDcgKzI3MCwxMyBA QCBGY0RpckNhY2hlVW5saW5rIChjb25zdCBGY0NoYXI4ICpkaXIsIEZjQ29uZmlnICpjb25maWcp CiAjZW5kaWYKICAgICBGY1N0ckxpc3QJKmxpc3Q7CiAgICAgRmNDaGFyOAkqY2FjaGVfZGlyOwot ICAgIGNvbnN0IEZjQ2hhcjggKnN5c3Jvb3QgPSBGY0NvbmZpZ0dldFN5c1Jvb3QgKGNvbmZpZyk7 CisgICAgY29uc3QgRmNDaGFyOCAqc3lzcm9vdDsKKyAgICBGY0Jvb2wJcmV0ID0gRmNUcnVlOwor CisgICAgY29uZmlnID0gRmNDb25maWdSZWZlcmVuY2UgKGNvbmZpZyk7CisgICAgaWYgKCFjb25m aWcpCisJcmV0dXJuIEZjRmFsc2U7CisgICAgc3lzcm9vdCA9IEZjQ29uZmlnR2V0U3lzUm9vdCAo Y29uZmlnKTsKIAogICAgIEZjRGlyQ2FjaGVCYXNlbmFtZU1ENSAoY29uZmlnLCBkaXIsIGNhY2hl X2Jhc2UpOwogI2lmbmRlZiBfV0lOMzIKQEAgLTI3NCw3ICsyODUsMTAgQEAgRmNEaXJDYWNoZVVu bGluayAoY29uc3QgRmNDaGFyOCAqZGlyLCBGY0NvbmZpZyAqY29uZmlnKQogCiAgICAgbGlzdCA9 IEZjU3RyTGlzdENyZWF0ZSAoY29uZmlnLT5jYWNoZURpcnMpOwogICAgIGlmICghbGlzdCkKLSAg ICAgICAgcmV0dXJuIEZjRmFsc2U7CisgICAgeworCXJldCA9IEZjRmFsc2U7CisJZ290byBiYWls OworICAgIH0KIAkKICAgICB3aGlsZSAoKGNhY2hlX2RpciA9IEZjU3RyTGlzdE5leHQgKGxpc3Qp KSkKICAgICB7CkBAIC0zMDQsOCArMzE4LDExIEBAIEZjRGlyQ2FjaGVVbmxpbmsgKGNvbnN0IEZj Q2hhcjggKmRpciwgRmNDb25maWcgKmNvbmZpZykKICAgICBGY0RpckNhY2hlRGVsZXRlVVVJRCAo ZGlyLCBjb25maWcpOwogICAgIC8qIHJldHVybiBGY0ZhbHNlIGlmIHNvbWV0aGluZyB3ZW50IHdy b25nICovCiAgICAgaWYgKGNhY2hlX2RpcikKLQlyZXR1cm4gRmNGYWxzZTsKLSAgICByZXR1cm4g RmNUcnVlOworCXJldCA9IEZjRmFsc2U7CitiYWlsOgorICAgIEZjQ29uZmlnRGVzdHJveSAoY29u ZmlnKTsKKworICAgIHJldHVybiByZXQ7CiB9CiAKIHN0YXRpYyBpbnQKQEAgLTEwNDEsMTAgKzEw NTgsMTUgQEAgRmNEaXJDYWNoZUxvYWQgKGNvbnN0IEZjQ2hhcjggKmRpciwgRmNDb25maWcgKmNv bmZpZywgRmNDaGFyOCAqKmNhY2hlX2ZpbGUpCiB7CiAgICAgRmNDYWNoZSAqY2FjaGUgPSBOVUxM OwogCisgICAgY29uZmlnID0gRmNDb25maWdSZWZlcmVuY2UgKGNvbmZpZyk7CisgICAgaWYgKCFj b25maWcpCisJcmV0dXJuIE5VTEw7CiAgICAgaWYgKCFGY0RpckNhY2hlUHJvY2VzcyAoY29uZmln LCBkaXIsCiAJCQkgICAgRmNEaXJDYWNoZU1hcEhlbHBlciwKIAkJCSAgICAmY2FjaGUsIGNhY2hl X2ZpbGUpKQotCXJldHVybiBOVUxMOworCWNhY2hlID0gTlVMTDsKKworICAgIEZjQ29uZmlnRGVz dHJveSAoY29uZmlnKTsKIAogICAgIHJldHVybiBjYWNoZTsKIH0KQEAgLTEwNTUsMTMgKzEwNzcs MTYgQEAgRmNEaXJDYWNoZUxvYWRGaWxlIChjb25zdCBGY0NoYXI4ICpjYWNoZV9maWxlLCBzdHJ1 Y3Qgc3RhdCAqZmlsZV9zdGF0KQogICAgIGludAlmZDsKICAgICBGY0NhY2hlICpjYWNoZTsKICAg ICBzdHJ1Y3Qgc3RhdAlteV9maWxlX3N0YXQ7CisgICAgRmNDb25maWcgKmNvbmZpZzsKIAogICAg IGlmICghZmlsZV9zdGF0KQogCWZpbGVfc3RhdCA9ICZteV9maWxlX3N0YXQ7CiAgICAgZmQgPSBG Y0RpckNhY2hlT3BlbkZpbGUgKGNhY2hlX2ZpbGUsIGZpbGVfc3RhdCk7CiAgICAgaWYgKGZkIDwg MCkKIAlyZXR1cm4gTlVMTDsKLSAgICBjYWNoZSA9IEZjRGlyQ2FjaGVNYXBGZCAoRmNDb25maWdH ZXRDdXJyZW50ICgpLCBmZCwgZmlsZV9zdGF0LCBOVUxMKTsKKyAgICBjb25maWcgPSBGY0NvbmZp Z1JlZmVyZW5jZSAoTlVMTCk7CisgICAgY2FjaGUgPSBGY0RpckNhY2hlTWFwRmQgKGNvbmZpZywg ZmQsIGZpbGVfc3RhdCwgTlVMTCk7CisgICAgRmNDb25maWdEZXN0cm95IChjb25maWcpOwogICAg IGNsb3NlIChmZCk7CiAgICAgcmV0dXJuIGNhY2hlOwogfQpAQCAtMTE1NSwxMiArMTE4MCwxNiBA QCBGY0Jvb2wKIEZjRGlyQ2FjaGVWYWxpZCAoY29uc3QgRmNDaGFyOCAqZGlyKQogewogICAgIEZj Q29uZmlnCSpjb25maWc7CisgICAgRmNCb29sCXJldDsKIAotICAgIGNvbmZpZyA9IEZjQ29uZmln R2V0Q3VycmVudCAoKTsKKyAgICBjb25maWcgPSBGY0NvbmZpZ1JlZmVyZW5jZSAoTlVMTCk7CiAg ICAgaWYgKCFjb25maWcpCiAgICAgICAgIHJldHVybiBGY0ZhbHNlOwogCi0gICAgcmV0dXJuIEZj RGlyQ2FjaGVWYWxpZENvbmZpZyAoZGlyLCBjb25maWcpOworICAgIHJldCA9IEZjRGlyQ2FjaGVW YWxpZENvbmZpZyAoZGlyLCBjb25maWcpOworICAgIEZjQ29uZmlnRGVzdHJveSAoY29uZmlnKTsK KworICAgIHJldHVybiByZXQ7CiB9CiAKIC8qCkBAIC0xNDM4LDkgKzE0NjcsMTMgQEAgRmNEaXJD YWNoZUNsZWFuIChjb25zdCBGY0NoYXI4ICpjYWNoZV9kaXIsIEZjQm9vbCB2ZXJib3NlKQogICAg IEZjQ2FjaGUJKmNhY2hlOwogICAgIHN0cnVjdCBzdGF0CXRhcmdldF9zdGF0OwogICAgIGNvbnN0 IEZjQ2hhcjggKnN5c3Jvb3Q7CisgICAgRmNDb25maWcJKmNvbmZpZzsKIAorICAgIGNvbmZpZyA9 IEZjQ29uZmlnUmVmZXJlbmNlIChOVUxMKTsKKyAgICBpZiAoIWNvbmZpZykKKwlyZXR1cm4gRmNG YWxzZTsKICAgICAvKiBGSVhNRTogdGhpcyBBUEkgbmVlZHMgdG8gc3VwcG9ydCBub24tY3VycmVu dCBGY0NvbmZpZyAqLwotICAgIHN5c3Jvb3QgPSBGY0NvbmZpZ0dldFN5c1Jvb3QgKE5VTEwpOwor ICAgIHN5c3Jvb3QgPSBGY0NvbmZpZ0dldFN5c1Jvb3QgKGNvbmZpZyk7CiAgICAgaWYgKHN5c3Jv b3QpCiAJZGlyID0gRmNTdHJCdWlsZEZpbGVuYW1lIChzeXNyb290LCBjYWNoZV9kaXIsIE5VTEwp OwogICAgIGVsc2UKQEAgLTE0NDgsNyArMTQ4MSw4IEBAIEZjRGlyQ2FjaGVDbGVhbiAoY29uc3Qg RmNDaGFyOCAqY2FjaGVfZGlyLCBGY0Jvb2wgdmVyYm9zZSkKICAgICBpZiAoIWRpcikKICAgICB7 CiAJZnByaW50ZiAoc3RkZXJyLCAiRm9udGNvbmZpZyBlcnJvcjogJXM6IG91dCBvZiBtZW1vcnlc biIsIGNhY2hlX2Rpcik7Ci0JcmV0dXJuIEZjRmFsc2U7CisJcmV0ID0gRmNGYWxzZTsKKwlnb3Rv IGJhaWw7CiAgICAgfQogICAgIGlmIChhY2Nlc3MgKChjaGFyICopIGRpciwgV19PSykgIT0gMCkK ICAgICB7CkBAIC0xNTI1LDggKzE1NTksMTAgQEAgRmNEaXJDYWNoZUNsZWFuIChjb25zdCBGY0No YXI4ICpjYWNoZV9kaXIsIEZjQm9vbCB2ZXJib3NlKQogICAgIH0KIAogICAgIGNsb3NlZGlyIChk KTsKLSAgYmFpbDA6CitiYWlsMDoKICAgICBGY1N0ckZyZWUgKGRpcik7CitiYWlsOgorICAgIEZj Q29uZmlnRGVzdHJveSAoY29uZmlnKTsKIAogICAgIHJldHVybiByZXQ7CiB9CkBAIC0xOTY4LDE1 ICsyMDA0LDIwIEBAIEZjRGlyQ2FjaGVDcmVhdGVUYWdGaWxlIChjb25zdCBGY0NoYXI4ICpjYWNo ZV9kaXIpCiB9CiAKIHZvaWQKLUZjQ2FjaGVDcmVhdGVUYWdGaWxlIChjb25zdCBGY0NvbmZpZyAq Y29uZmlnKQorRmNDYWNoZUNyZWF0ZVRhZ0ZpbGUgKEZjQ29uZmlnICpjb25maWcpCiB7CiAgICAg RmNDaGFyOCAgICpjYWNoZV9kaXIgPSBOVUxMLCAqZCA9IE5VTEw7CiAgICAgRmNTdHJMaXN0ICps aXN0OwotICAgIGNvbnN0IEZjQ2hhcjggKnN5c3Jvb3QgPSBGY0NvbmZpZ0dldFN5c1Jvb3QgKGNv bmZpZyk7CisgICAgY29uc3QgRmNDaGFyOCAqc3lzcm9vdDsKKworICAgIGNvbmZpZyA9IEZjQ29u ZmlnUmVmZXJlbmNlIChjb25maWcpOworICAgIGlmICghY29uZmlnKQorCXJldHVybjsKKyAgICBz eXNyb290ID0gRmNDb25maWdHZXRTeXNSb290IChjb25maWcpOwogCiAgICAgbGlzdCA9IEZjQ29u ZmlnR2V0Q2FjaGVEaXJzIChjb25maWcpOwogICAgIGlmICghbGlzdCkKLQlyZXR1cm47CisJZ290 byBiYWlsOwogCiAgICAgd2hpbGUgKChjYWNoZV9kaXIgPSBGY1N0ckxpc3ROZXh0IChsaXN0KSkp CiAgICAgewpAQCAtMTk5Miw2ICsyMDMzLDggQEAgRmNDYWNoZUNyZWF0ZVRhZ0ZpbGUgKGNvbnN0 IEZjQ29uZmlnICpjb25maWcpCiAgICAgaWYgKGQpCiAJRmNTdHJGcmVlIChkKTsKICAgICBGY1N0 ckxpc3REb25lIChsaXN0KTsKK2JhaWw6CisgICAgRmNDb25maWdEZXN0cm95IChjb25maWcpOwog fQogCiAjZGVmaW5lIF9fZmNjYWNoZV9fCmRpZmYgLS1naXQgYS9zcmMvZmNjZmcuYyBiL3NyYy9m Y2NmZy5jCmluZGV4IDIxY2NkMjUuLjExZGM4NzYgMTAwNjQ0Ci0tLSBhL3NyYy9mY2NmZy5jCisr KyBiL3NyYy9mY2NmZy5jCkBAIC0yMzcsMTIgKzIzNywxMiBAQCBGY0NvbmZpZ1VwdG9EYXRlIChG Y0NvbmZpZyAqY29uZmlnKQogewogICAgIEZjRmlsZVRpbWUJY29uZmlnX3RpbWUsIGNvbmZpZ19k aXJfdGltZSwgZm9udF90aW1lOwogICAgIHRpbWVfdAlub3cgPSB0aW1lKDApOworICAgIEZjQm9v bAlyZXQgPSBGY1RydWU7CisKKyAgICBjb25maWcgPSBGY0NvbmZpZ1JlZmVyZW5jZSAoY29uZmln KTsKICAgICBpZiAoIWNvbmZpZykKLSAgICB7Ci0JY29uZmlnID0gRmNDb25maWdHZXRDdXJyZW50 ICgpOwotCWlmICghY29uZmlnKQotCSAgICByZXR1cm4gRmNGYWxzZTsKLSAgICB9CisJcmV0dXJu IEZjRmFsc2U7CisKICAgICBjb25maWdfdGltZSA9IEZjQ29uZmlnTmV3ZXN0RmlsZSAoY29uZmln LT5jb25maWdGaWxlcyk7CiAgICAgY29uZmlnX2Rpcl90aW1lID0gRmNDb25maWdOZXdlc3RGaWxl IChjb25maWctPmNvbmZpZ0RpcnMpOwogICAgIGZvbnRfdGltZSA9IEZjQ29uZmlnTmV3ZXN0Rmls ZSAoY29uZmlnLT5mb250RGlycyk7CkBAIC0yNTgsMTMgKzI1OCwxOSBAQCBGY0NvbmZpZ1VwdG9E YXRlIChGY0NvbmZpZyAqY29uZmlnKQogCSAgICBmcHJpbnRmIChzdGRlcnIsCiAgICAgICAgICAg ICAgICAgICAgICJGb250Y29uZmlnIHdhcm5pbmc6IERpcmVjdG9yeS9maWxlIG10aW1lIGluIHRo ZSBmdXR1cmUuIE5ldyBmb250cyBtYXkgbm90IGJlIGRldGVjdGVkLlxuIik7CiAJICAgIGNvbmZp Zy0+cmVzY2FuVGltZSA9IG5vdzsKLQkgICAgcmV0dXJuIEZjVHJ1ZTsKKwkgICAgZ290byBiYWls OwogCX0KIAllbHNlCi0JICAgIHJldHVybiBGY0ZhbHNlOworCXsKKwkgICAgcmV0ID0gRmNGYWxz ZTsKKwkgICAgZ290byBiYWlsOworCX0KICAgICB9CiAgICAgY29uZmlnLT5yZXNjYW5UaW1lID0g bm93OwotICAgIHJldHVybiBGY1RydWU7CitiYWlsOgorICAgIEZjQ29uZmlnRGVzdHJveSAoY29u ZmlnKTsKKworICAgIHJldHVybiByZXQ7CiB9CiAKIEZjRXhwciAqCkBAIC0yOTEsMTEgKzI5Nywy NiBAQCBGY0NvbmZpZ1JlZmVyZW5jZSAoRmNDb25maWcgKmNvbmZpZykKIHsKICAgICBpZiAoIWNv bmZpZykKICAgICB7Ci0JY29uZmlnID0gRmNDb25maWdHZXRDdXJyZW50ICgpOworCS8qIERvIG5v dCB1c2UgRmNDb25maWdHZXRDdXJyZW50ICgpIGZvciB0aGUgcHVycG9zZSBvZiBvYnRhaW5pbmcg Y3VycmVudCBGY0NvbmZpZyBoZXJlLgorCSAqIGJlY2F1c2UgdGhlIHJlZmVyZW5jZSBjb3VudGVy IG11c3QgYmUgaW5jcmVhc2VkIGJlZm9yZSBzZXR0aW5nIGl0IHRvIF9mY0NvbmZpZy4KKwkgKi8K KyAgICByZXRyeToKKwljb25maWcgPSBmY19hdG9taWNfcHRyX2dldCAoJl9mY0NvbmZpZyk7CiAJ aWYgKCFjb25maWcpCi0JICAgIHJldHVybiAwOwotICAgIH0KKwl7CisJICAgIGNvbmZpZyA9IEZj Q29uZmlnQ3JlYXRlICgpOworCSAgICBGY1JlZkluYyAoJmNvbmZpZy0+cmVmKTsKIAorCSAgICBj b25maWcgPSBGY0luaXRMb2FkT3duQ29uZmlnQW5kRm9udHMgKGNvbmZpZyk7CisJICAgIGlmICgh ZmNfYXRvbWljX3B0cl9jbXBleGNoICgmX2ZjQ29uZmlnLCBOVUxMLCBjb25maWcpKQorCSAgICB7 CisJCUZjQ29uZmlnRGVzdHJveSAoY29uZmlnKTsgLyogVG8gZGVjcmVhc2UgdGhlIHJlZmNvdW50 IGZvciB0aGUgYWJvdmUgb25lLiAqLworCQlGY0NvbmZpZ0Rlc3Ryb3kgKGNvbmZpZyk7IC8qIFRv IGRlc3Ryb3kgaXQgYWN0dWFseSAqLworCQlnb3RvIHJldHJ5OworCSAgICB9CisJICAgIHJldHVy biBjb25maWc7CisJfQorICAgIH0KICAgICBGY1JlZkluYyAoJmNvbmZpZy0+cmVmKTsKIAogICAg IHJldHVybiBjb25maWc7CkBAIC00NzUsMjUgKzQ5NiwzMiBAQCBGY0Jvb2wKIEZjQ29uZmlnQnVp bGRGb250cyAoRmNDb25maWcgKmNvbmZpZykKIHsKICAgICBGY0ZvbnRTZXQJICAgICpmb250czsK KyAgICBGY0Jvb2wJICAgIHJldCA9IEZjVHJ1ZTsKIAorICAgIGNvbmZpZyA9IEZjQ29uZmlnUmVm ZXJlbmNlIChjb25maWcpOwogICAgIGlmICghY29uZmlnKQotICAgIHsKLQljb25maWcgPSBGY0Nv bmZpZ0dldEN1cnJlbnQgKCk7Ci0JaWYgKCFjb25maWcpCi0JICAgIHJldHVybiBGY0ZhbHNlOwot ICAgIH0KKwlyZXR1cm4gRmNGYWxzZTsKIAkKICAgICBmb250cyA9IEZjRm9udFNldENyZWF0ZSAo KTsKICAgICBpZiAoIWZvbnRzKQotCXJldHVybiBGY0ZhbHNlOworICAgIHsKKwlyZXQgPSBGY0Zh bHNlOworCWdvdG8gYmFpbDsKKyAgICB9CiAKICAgICBGY0NvbmZpZ1NldEZvbnRzIChjb25maWcs IGZvbnRzLCBGY1NldFN5c3RlbSk7CiAKICAgICBpZiAoIUZjQ29uZmlnQWRkRGlyTGlzdCAoY29u ZmlnLCBGY1NldFN5c3RlbSwgY29uZmlnLT5mb250RGlycykpCi0JcmV0dXJuIEZjRmFsc2U7Cisg ICAgeworCXJldCA9IEZjRmFsc2U7CisJZ290byBiYWlsOworICAgIH0KICAgICBpZiAoRmNEZWJ1 ZyAoKSAmIEZDX0RCR19GT05UU0VUKQogCUZjRm9udFNldFByaW50IChmb250cyk7Ci0gICAgcmV0 dXJuIEZjVHJ1ZTsKK2JhaWw6CisgICAgRmNDb25maWdEZXN0cm95IChjb25maWcpOworCisgICAg cmV0dXJuIHJldDsKIH0KIAogRmNCb29sCkBAIC01MzcsMTMgKzU2NSwxNSBAQCBGY0NvbmZpZ0Fk ZENvbmZpZ0RpciAoRmNDb25maWcJICAgICpjb25maWcsCiBGY1N0ckxpc3QgKgogRmNDb25maWdH ZXRDb25maWdEaXJzIChGY0NvbmZpZyAgICpjb25maWcpCiB7CisgICAgRmNTdHJMaXN0ICpyZXQ7 CisKKyAgICBjb25maWcgPSBGY0NvbmZpZ1JlZmVyZW5jZSAoY29uZmlnKTsKICAgICBpZiAoIWNv bmZpZykKLSAgICB7Ci0JY29uZmlnID0gRmNDb25maWdHZXRDdXJyZW50ICgpOwotCWlmICghY29u ZmlnKQotCSAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgcmV0dXJuIEZjU3RyTGlzdENyZWF0ZSAo Y29uZmlnLT5jb25maWdEaXJzKTsKKwlyZXR1cm4gTlVMTDsKKyAgICByZXQgPSBGY1N0ckxpc3RD cmVhdGUgKGNvbmZpZy0+Y29uZmlnRGlycyk7CisgICAgRmNDb25maWdEZXN0cm95IChjb25maWcp OworCisgICAgcmV0dXJuIHJldDsKIH0KIAogRmNCb29sCkBAIC01NzksMTMgKzYwOSwxNSBAQCBG Y0NvbmZpZ1Jlc2V0Rm9udERpcnMgKEZjQ29uZmlnICpjb25maWcpCiBGY1N0ckxpc3QgKgogRmND b25maWdHZXRGb250RGlycyAoRmNDb25maWcJKmNvbmZpZykKIHsKKyAgICBGY1N0ckxpc3QgKnJl dDsKKworICAgIGNvbmZpZyA9IEZjQ29uZmlnUmVmZXJlbmNlIChjb25maWcpOwogICAgIGlmICgh Y29uZmlnKQotICAgIHsKLQljb25maWcgPSBGY0NvbmZpZ0dldEN1cnJlbnQgKCk7Ci0JaWYgKCFj b25maWcpCi0JICAgIHJldHVybiAwOwotICAgIH0KLSAgICByZXR1cm4gRmNTdHJMaXN0Q3JlYXRl IChjb25maWctPmZvbnREaXJzKTsKKwlyZXR1cm4gTlVMTDsKKyAgICByZXQgPSBGY1N0ckxpc3RD cmVhdGUgKGNvbmZpZy0+Zm9udERpcnMpOworICAgIEZjQ29uZmlnRGVzdHJveSAoY29uZmlnKTsK KworICAgIHJldHVybiByZXQ7CiB9CiAKIHN0YXRpYyBGY0Jvb2wKQEAgLTY3MCwxNSArNzAyLDE3 IEBAIEZjQ29uZmlnQWRkQ2FjaGVEaXIgKEZjQ29uZmlnCSAgICAqY29uZmlnLAogfQogCiBGY1N0 ckxpc3QgKgotRmNDb25maWdHZXRDYWNoZURpcnMgKGNvbnN0IEZjQ29uZmlnICpjb25maWcpCitG Y0NvbmZpZ0dldENhY2hlRGlycyAoRmNDb25maWcgKmNvbmZpZykKIHsKKyAgICBGY1N0ckxpc3Qg KnJldDsKKworICAgIGNvbmZpZyA9IEZjQ29uZmlnUmVmZXJlbmNlIChjb25maWcpOwogICAgIGlm ICghY29uZmlnKQotICAgIHsKLQljb25maWcgPSBGY0NvbmZpZ0dldEN1cnJlbnQgKCk7Ci0JaWYg KCFjb25maWcpCi0JICAgIHJldHVybiAwOwotICAgIH0KLSAgICByZXR1cm4gRmNTdHJMaXN0Q3Jl YXRlIChjb25maWctPmNhY2hlRGlycyk7CisJcmV0dXJuIE5VTEw7CisgICAgcmV0ID0gRmNTdHJM aXN0Q3JlYXRlIChjb25maWctPmNhY2hlRGlycyk7CisgICAgRmNDb25maWdEZXN0cm95IChjb25m aWcpOworCisgICAgcmV0dXJuIHJldDsKIH0KIAogRmNCb29sCkBAIC02OTksMTMgKzczMywxNSBA QCBGY0NvbmZpZ0FkZENvbmZpZ0ZpbGUgKEZjQ29uZmlnCSAgICAqY29uZmlnLAogRmNTdHJMaXN0 ICoKIEZjQ29uZmlnR2V0Q29uZmlnRmlsZXMgKEZjQ29uZmlnICAgICpjb25maWcpCiB7CisgICAg RmNTdHJMaXN0ICpyZXQ7CisKKyAgICBjb25maWcgPSBGY0NvbmZpZ1JlZmVyZW5jZSAoY29uZmln KTsKICAgICBpZiAoIWNvbmZpZykKLSAgICB7Ci0JY29uZmlnID0gRmNDb25maWdHZXRDdXJyZW50 ICgpOwotCWlmICghY29uZmlnKQotCSAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgcmV0dXJuIEZj U3RyTGlzdENyZWF0ZSAoY29uZmlnLT5jb25maWdGaWxlcyk7CisJcmV0dXJuIE5VTEw7CisgICAg cmV0ID0gRmNTdHJMaXN0Q3JlYXRlIChjb25maWctPmNvbmZpZ0ZpbGVzKTsKKyAgICBGY0NvbmZp Z0Rlc3Ryb3kgKGNvbmZpZyk7CisKKyAgICByZXR1cm4gcmV0OwogfQogCiBGY0NoYXI4ICoKQEAg LTc4NCwyNSArODIwLDI2IEBAIEZjQ29uZmlnQWRkQmxhbmsgKEZjQ29uZmlnCSpjb25maWcgRkNf VU5VU0VELAogaW50CiBGY0NvbmZpZ0dldFJlc2NhbkludGVydmFsIChGY0NvbmZpZyAqY29uZmln KQogeworICAgIGludCByZXQ7CisKKyAgICBjb25maWcgPSBGY0NvbmZpZ1JlZmVyZW5jZSAoY29u ZmlnKTsKICAgICBpZiAoIWNvbmZpZykKLSAgICB7Ci0JY29uZmlnID0gRmNDb25maWdHZXRDdXJy ZW50ICgpOwotCWlmICghY29uZmlnKQotCSAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgcmV0dXJu IGNvbmZpZy0+cmVzY2FuSW50ZXJ2YWw7CisJcmV0dXJuIDA7CisgICAgcmV0ID0gY29uZmlnLT5y ZXNjYW5JbnRlcnZhbDsKKyAgICBGY0NvbmZpZ0Rlc3Ryb3kgKGNvbmZpZyk7CisKKyAgICByZXR1 cm4gcmV0OwogfQogCiBGY0Jvb2wKIEZjQ29uZmlnU2V0UmVzY2FuSW50ZXJ2YWwgKEZjQ29uZmln ICpjb25maWcsIGludCByZXNjYW5JbnRlcnZhbCkKIHsKKyAgICBjb25maWcgPSBGY0NvbmZpZ1Jl ZmVyZW5jZSAoY29uZmlnKTsKICAgICBpZiAoIWNvbmZpZykKLSAgICB7Ci0JY29uZmlnID0gRmND b25maWdHZXRDdXJyZW50ICgpOwotCWlmICghY29uZmlnKQotCSAgICByZXR1cm4gRmNGYWxzZTsK LSAgICB9CisJcmV0dXJuIEZjRmFsc2U7CiAgICAgY29uZmlnLT5yZXNjYW5JbnRlcnZhbCA9IHJl c2NhbkludGVydmFsOworICAgIEZjQ29uZmlnRGVzdHJveSAoY29uZmlnKTsKKwogICAgIHJldHVy biBGY1RydWU7CiB9CiAKQEAgLTE2NzAsMTUgKzE3MDcsMTMgQEAgRmNDb25maWdTdWJzdGl0dXRl V2l0aFBhdCAoRmNDb25maWcgICAgKmNvbmZpZywKICAgICBGY0Jvb2wJICAgIHJldHZhbCA9IEZj VHJ1ZTsKICAgICBGY1Rlc3QJICAgICoqdHN0ID0gTlVMTDsKIAotICAgIGlmICghY29uZmlnKQot ICAgIHsKLQljb25maWcgPSBGY0NvbmZpZ0dldEN1cnJlbnQgKCk7Ci0JaWYgKCFjb25maWcpCi0J ICAgIHJldHVybiBGY0ZhbHNlOwotICAgIH0KLQogICAgIGlmIChraW5kIDwgRmNNYXRjaEtpbmRC ZWdpbiB8fCBraW5kID49IEZjTWF0Y2hLaW5kRW5kKQogCXJldHVybiBGY0ZhbHNlOworCisgICAg Y29uZmlnID0gRmNDb25maWdSZWZlcmVuY2UgKGNvbmZpZyk7CisgICAgaWYgKCFjb25maWcpCisJ cmV0dXJuIEZjRmFsc2U7CisKICAgICBzID0gY29uZmlnLT5zdWJzdFtraW5kXTsKICAgICBpZiAo a2luZCA9PSBGY01hdGNoUGF0dGVybikKICAgICB7CkBAIC0xOTczLDYgKzIwMDgsNyBAQCBiYWls MToKIAlmcmVlICh2YWx1ZSk7CiAgICAgaWYgKHRzdCkKIAlmcmVlICh0c3QpOworICAgIEZjQ29u ZmlnRGVzdHJveSAoY29uZmlnKTsKIAogICAgIHJldHVybiByZXR2YWw7CiB9CkBAIC0yMjkwLDEy ICsyMzI2LDkgQEAgRmNDb25maWdHZXRGaWxlbmFtZSAoRmNDb25maWcgICAgICAqY29uZmlnLAog ICAgIEZjQ2hhcjggICAgKmZpbGUsICpkaXIsICoqcGF0aCwgKipwOwogICAgIGNvbnN0IEZjQ2hh cjggKnN5c3Jvb3Q7CiAKKyAgICBjb25maWcgPSBGY0NvbmZpZ1JlZmVyZW5jZSAoY29uZmlnKTsK ICAgICBpZiAoIWNvbmZpZykKLSAgICB7Ci0JY29uZmlnID0gRmNDb25maWdHZXRDdXJyZW50ICgp OwotCWlmICghY29uZmlnKQotCSAgICByZXR1cm4gTlVMTDsKLSAgICB9CisJcmV0dXJuIE5VTEw7 CiAgICAgc3lzcm9vdCA9IEZjQ29uZmlnR2V0U3lzUm9vdCAoY29uZmlnKTsKICAgICBpZiAoIXVy bCB8fCAhKnVybCkKICAgICB7CkBAIC0yMzA2LDcgKzIzMzksMTAgQEAgRmNDb25maWdHZXRGaWxl bmFtZSAoRmNDb25maWcgICAgICAqY29uZmlnLAogICAgIGZpbGUgPSAwOwogCiAgICAgaWYgKEZj U3RySXNBYnNvbHV0ZUZpbGVuYW1lKHVybCkpCi0JcmV0dXJuIEZjQ29uZmlnRmlsZUV4aXN0cyAo c3lzcm9vdCwgdXJsKTsKKyAgICB7CisJZmlsZSA9IEZjQ29uZmlnRmlsZUV4aXN0cyAoc3lzcm9v dCwgdXJsKTsKKwlnb3RvIGJhaWw7CisgICAgfQogCiAgICAgaWYgKCp1cmwgPT0gJ34nKQogICAg IHsKQEAgLTIzMzAsNyArMjM2NiwxMCBAQCBGY0NvbmZpZ0dldEZpbGVuYW1lIChGY0NvbmZpZyAg ICAgICpjb25maWcsCiAgICAgewogCXBhdGggPSBGY0NvbmZpZ0dldFBhdGggKCk7CiAJaWYgKCFw YXRoKQotCSAgICByZXR1cm4gTlVMTDsKKwl7CisJICAgIGZpbGUgPSBOVUxMOworCSAgICBnb3Rv IGJhaWw7CisJfQogCWZvciAocCA9IHBhdGg7ICpwOyBwKyspCiAJewogCSAgICBGY0NoYXI4ICpz OwpAQCAtMjM0Nyw2ICsyMzg2LDkgQEAgRmNDb25maWdHZXRGaWxlbmFtZSAoRmNDb25maWcgICAg ICAqY29uZmlnLAogCX0KIAlGY0NvbmZpZ0ZyZWVQYXRoIChwYXRoKTsKICAgICB9CitiYWlsOgor ICAgIEZjQ29uZmlnRGVzdHJveSAoY29uZmlnKTsKKwogICAgIHJldHVybiBmaWxlOwogfQogCkBA IC0yNDA5LDE3ICsyNDUxLDE4IEBAIEZjQ29uZmlnQXBwRm9udEFkZEZpbGUgKEZjQ29uZmlnICAg ICpjb25maWcsCiAgICAgRmNTdHJTZXQJKnN1YmRpcnM7CiAgICAgRmNTdHJMaXN0CSpzdWJsaXN0 OwogICAgIEZjQ2hhcjgJKnN1YmRpcjsKKyAgICBGY0Jvb2wJcmV0ID0gRmNUcnVlOwogCisgICAg Y29uZmlnID0gRmNDb25maWdSZWZlcmVuY2UgKGNvbmZpZyk7CiAgICAgaWYgKCFjb25maWcpCi0g ICAgewotCWNvbmZpZyA9IEZjQ29uZmlnR2V0Q3VycmVudCAoKTsKLQlpZiAoIWNvbmZpZykKLQkg ICAgcmV0dXJuIEZjRmFsc2U7Ci0gICAgfQorCXJldHVybiBGY0ZhbHNlOwogCiAgICAgc3ViZGly cyA9IEZjU3RyU2V0Q3JlYXRlRXggKEZDU1NfR1JPV19CWV82NCk7CiAgICAgaWYgKCFzdWJkaXJz KQotCXJldHVybiBGY0ZhbHNlOworICAgIHsKKwlyZXQgPSBGY0ZhbHNlOworCWdvdG8gYmFpbDsK KyAgICB9CiAKICAgICBzZXQgPSBGY0NvbmZpZ0dldEZvbnRzIChjb25maWcsIEZjU2V0QXBwbGlj YXRpb24pOwogICAgIGlmICghc2V0KQpAQCAtMjQyOCw3ICsyNDcxLDggQEAgRmNDb25maWdBcHBG b250QWRkRmlsZSAoRmNDb25maWcgICAgKmNvbmZpZywKIAlpZiAoIXNldCkKIAl7CiAJICAgIEZj U3RyU2V0RGVzdHJveSAoc3ViZGlycyk7Ci0JICAgIHJldHVybiBGY0ZhbHNlOworCSAgICByZXQg PSBGY0ZhbHNlOworCSAgICBnb3RvIGJhaWw7CiAJfQogCUZjQ29uZmlnU2V0Rm9udHMgKGNvbmZp Zywgc2V0LCBGY1NldEFwcGxpY2F0aW9uKTsKICAgICB9CkBAIC0yNDM2LDcgKzI0ODAsOCBAQCBG Y0NvbmZpZ0FwcEZvbnRBZGRGaWxlIChGY0NvbmZpZyAgICAqY29uZmlnLAogICAgIGlmICghRmNG aWxlU2NhbkNvbmZpZyAoc2V0LCBzdWJkaXJzLCBmaWxlLCBjb25maWcpKQogICAgIHsKIAlGY1N0 clNldERlc3Ryb3kgKHN1YmRpcnMpOwotCXJldHVybiBGY0ZhbHNlOworCXJldCA9IEZjRmFsc2U7 CisJZ290byBiYWlsOwogICAgIH0KICAgICBpZiAoKHN1Ymxpc3QgPSBGY1N0ckxpc3RDcmVhdGUg KHN1YmRpcnMpKSkKICAgICB7CkBAIC0yNDQ3LDcgKzI0OTIsMTAgQEAgRmNDb25maWdBcHBGb250 QWRkRmlsZSAoRmNDb25maWcgICAgKmNvbmZpZywKIAlGY1N0ckxpc3REb25lIChzdWJsaXN0KTsK ICAgICB9CiAgICAgRmNTdHJTZXREZXN0cm95IChzdWJkaXJzKTsKLSAgICByZXR1cm4gRmNUcnVl OworYmFpbDoKKyAgICBGY0NvbmZpZ0Rlc3Ryb3kgKGNvbmZpZyk7CisKKyAgICByZXR1cm4gcmV0 OwogfQogCiBGY0Jvb2wKQEAgLTI0NTYsMTcgKzI1MDQsMTggQEAgRmNDb25maWdBcHBGb250QWRk RGlyIChGY0NvbmZpZwkgICAgKmNvbmZpZywKIHsKICAgICBGY0ZvbnRTZXQJKnNldDsKICAgICBG Y1N0clNldAkqZGlyczsKKyAgICBGY0Jvb2wJcmV0ID0gRmNUcnVlOwogCisgICAgY29uZmlnID0g RmNDb25maWdSZWZlcmVuY2UgKGNvbmZpZyk7CiAgICAgaWYgKCFjb25maWcpCi0gICAgewotCWNv bmZpZyA9IEZjQ29uZmlnR2V0Q3VycmVudCAoKTsKLQlpZiAoIWNvbmZpZykKLQkgICAgcmV0dXJu IEZjRmFsc2U7Ci0gICAgfQorCXJldHVybiBGY0ZhbHNlOwogCiAgICAgZGlycyA9IEZjU3RyU2V0 Q3JlYXRlRXggKEZDU1NfR1JPV19CWV82NCk7CiAgICAgaWYgKCFkaXJzKQotCXJldHVybiBGY0Zh bHNlOworICAgIHsKKwlyZXQgPSBGY0ZhbHNlOworCWdvdG8gYmFpbDsKKyAgICB9CiAKICAgICBz ZXQgPSBGY0NvbmZpZ0dldEZvbnRzIChjb25maWcsIEZjU2V0QXBwbGljYXRpb24pOwogICAgIGlm ICghc2V0KQpAQCAtMjQ3NSw3ICsyNTI0LDggQEAgRmNDb25maWdBcHBGb250QWRkRGlyIChGY0Nv bmZpZwkgICAgKmNvbmZpZywKIAlpZiAoIXNldCkKIAl7CiAJICAgIEZjU3RyU2V0RGVzdHJveSAo ZGlycyk7Ci0JICAgIHJldHVybiBGY0ZhbHNlOworCSAgICByZXQgPSBGY0ZhbHNlOworCSAgICBn b3RvIGJhaWw7CiAJfQogCUZjQ29uZmlnU2V0Rm9udHMgKGNvbmZpZywgc2V0LCBGY1NldEFwcGxp Y2F0aW9uKTsKICAgICB9CkBAIC0yNDg1LDIzICsyNTM1LDI2IEBAIEZjQ29uZmlnQXBwRm9udEFk ZERpciAoRmNDb25maWcJICAgICpjb25maWcsCiAgICAgaWYgKCFGY0NvbmZpZ0FkZERpckxpc3Qg KGNvbmZpZywgRmNTZXRBcHBsaWNhdGlvbiwgZGlycykpCiAgICAgewogCUZjU3RyU2V0RGVzdHJv eSAoZGlycyk7Ci0JcmV0dXJuIEZjRmFsc2U7CisJcmV0ID0gRmNGYWxzZTsKKwlnb3RvIGJhaWw7 CiAgICAgfQogICAgIEZjU3RyU2V0RGVzdHJveSAoZGlycyk7Ci0gICAgcmV0dXJuIEZjVHJ1ZTsK K2JhaWw6CisgICAgRmNDb25maWdEZXN0cm95IChjb25maWcpOworCisgICAgcmV0dXJuIHJldDsK IH0KIAogdm9pZAogRmNDb25maWdBcHBGb250Q2xlYXIgKEZjQ29uZmlnCSAgICAqY29uZmlnKQog eworICAgIGNvbmZpZyA9IEZjQ29uZmlnUmVmZXJlbmNlIChjb25maWcpOwogICAgIGlmICghY29u ZmlnKQotICAgIHsKLQljb25maWcgPSBGY0NvbmZpZ0dldEN1cnJlbnQgKCk7Ci0JaWYgKCFjb25m aWcpCi0JICAgIHJldHVybjsKLSAgICB9CisJcmV0dXJuOwogCiAgICAgRmNDb25maWdTZXRGb250 cyAoY29uZmlnLCAwLCBGY1NldEFwcGxpY2F0aW9uKTsKKworICAgIEZjQ29uZmlnRGVzdHJveSAo Y29uZmlnKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9mY2Rpci5jIGIvc3JjL2ZjZGlyLmMK aW5kZXggN2Q3YjIzYy4uNjkzYzg0NSAxMDA2NDQKLS0tIGEvc3JjL2ZjZGlyLmMKKysrIGIvc3Jj L2ZjZGlyLmMKQEAgLTE2Nyw3ICsxNjcsMTYgQEAgRmNGaWxlU2NhbiAoRmNGb250U2V0CSAgICAq c2V0LAogCSAgICBjb25zdCBGY0NoYXI4ICAgKmZpbGUsCiAJICAgIEZjQm9vbAkgICAgZm9yY2Ug RkNfVU5VU0VEKQogewotICAgIHJldHVybiBGY0ZpbGVTY2FuQ29uZmlnIChzZXQsIGRpcnMsIGZp bGUsIEZjQ29uZmlnR2V0Q3VycmVudCAoKSk7CisgICAgRmNDb25maWcgKmNvbmZpZzsKKyAgICBG Y0Jvb2wgcmV0OworCisgICAgY29uZmlnID0gRmNDb25maWdSZWZlcmVuY2UgKE5VTEwpOworICAg IGlmICghY29uZmlnKQorCXJldHVybiBGY0ZhbHNlOworICAgIHJldCA9IEZjRmlsZVNjYW5Db25m aWcgKHNldCwgZGlycywgZmlsZSwgY29uZmlnKTsKKyAgICBGY0NvbmZpZ0Rlc3Ryb3kgKGNvbmZp Zyk7CisKKyAgICByZXR1cm4gcmV0OwogfQogCiAvKgpAQCAtMjcxLDEwICsyODAsMTkgQEAgRmNE aXJTY2FuIChGY0ZvbnRTZXQJICAgICpzZXQsCiAJICAgY29uc3QgRmNDaGFyOCAgICAqZGlyLAog CSAgIEZjQm9vbAkgICAgZm9yY2UgRkNfVU5VU0VEKQogeworICAgIEZjQ29uZmlnICpjb25maWc7 CisgICAgRmNCb29sIHJldDsKKwogICAgIGlmIChjYWNoZSB8fCAhZm9yY2UpCiAJcmV0dXJuIEZj RmFsc2U7CiAKLSAgICByZXR1cm4gRmNEaXJTY2FuQ29uZmlnIChzZXQsIGRpcnMsIGRpciwgZm9y Y2UsIEZjQ29uZmlnR2V0Q3VycmVudCAoKSk7CisgICAgY29uZmlnID0gRmNDb25maWdSZWZlcmVu Y2UgKE5VTEwpOworICAgIGlmICghY29uZmlnKQorCXJldHVybiBGY0ZhbHNlOworICAgIHJldCA9 IEZjRGlyU2NhbkNvbmZpZyAoc2V0LCBkaXJzLCBkaXIsIGZvcmNlLCBjb25maWcpOworICAgIEZj Q29uZmlnRGVzdHJveSAoY29uZmlnKTsKKworICAgIHJldHVybiByZXQ7CiB9CiAKIC8qCkBAIC0z NTMsMTIgKzM3MSwxNiBAQCBGY0RpckNhY2hlUmVzY2FuIChjb25zdCBGY0NoYXI4ICpkaXIsIEZj Q29uZmlnICpjb25maWcpCiAgICAgRmNDYWNoZSAqbmV3ID0gTlVMTDsKICAgICBzdHJ1Y3Qgc3Rh dCBkaXJfc3RhdDsKICAgICBGY1N0clNldCAqZGlyczsKLSAgICBjb25zdCBGY0NoYXI4ICpzeXNy b290ID0gRmNDb25maWdHZXRTeXNSb290IChjb25maWcpOworICAgIGNvbnN0IEZjQ2hhcjggKnN5 c3Jvb3Q7CiAgICAgRmNDaGFyOCAqZCA9IE5VTEw7CiAjaWZuZGVmIF9XSU4zMgogICAgIGludCBm ZCA9IC0xOwogI2VuZGlmCiAKKyAgICBjb25maWcgPSBGY0NvbmZpZ1JlZmVyZW5jZSAoY29uZmln KTsKKyAgICBpZiAoIWNvbmZpZykKKwlyZXR1cm4gTlVMTDsKKyAgICBzeXNyb290ID0gRmNDb25m aWdHZXRTeXNSb290IChjb25maWcpOwogICAgIGNhY2hlID0gRmNEaXJDYWNoZUxvYWQgKGRpciwg Y29uZmlnLCBOVUxMKTsKICAgICBpZiAoIWNhY2hlKQogCWdvdG8gYmFpbDsKQEAgLTQwMSw2ICs0 MjMsNyBAQCBiYWlsMToKIGJhaWw6CiAgICAgaWYgKGQpCiAJRmNTdHJGcmVlIChkKTsKKyAgICBG Y0NvbmZpZ0Rlc3Ryb3kgKGNvbmZpZyk7CiAKICAgICByZXR1cm4gbmV3OwogfQpAQCAtNDEzLDYg KzQzNiw3IEBAIEZjRGlyQ2FjaGVSZWFkIChjb25zdCBGY0NoYXI4ICpkaXIsIEZjQm9vbCBmb3Jj ZSwgRmNDb25maWcgKmNvbmZpZykKIHsKICAgICBGY0NhY2hlCQkqY2FjaGUgPSBOVUxMOwogCisg ICAgY29uZmlnID0gRmNDb25maWdSZWZlcmVuY2UgKGNvbmZpZyk7CiAgICAgLyogVHJ5IHRvIHVz ZSBleGlzdGluZyBjYWNoZSBmaWxlICovCiAgICAgaWYgKCFmb3JjZSkKIAljYWNoZSA9IEZjRGly Q2FjaGVMb2FkIChkaXIsIGNvbmZpZywgTlVMTCk7CkBAIC00MjAsNiArNDQ0LDcgQEAgRmNEaXJD YWNoZVJlYWQgKGNvbnN0IEZjQ2hhcjggKmRpciwgRmNCb29sIGZvcmNlLCBGY0NvbmZpZyAqY29u ZmlnKQogICAgIC8qIE5vdCB1c2luZyBleGlzdGluZyBjYWNoZSBmaWxlLCBjb25zdHJ1Y3QgbmV3 IGNhY2hlICovCiAgICAgaWYgKCFjYWNoZSkKIAljYWNoZSA9IEZjRGlyQ2FjaGVTY2FuIChkaXIs IGNvbmZpZyk7CisgICAgRmNDb25maWdEZXN0cm95IChjb25maWcpOwogCiAgICAgcmV0dXJuIGNh Y2hlOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2ZjaW5pdC5jIGIvc3JjL2ZjaW5pdC5jCmluZGV4IDU4 MzFhMTkuLjZmODJlYmQgMTAwNjQ0Ci0tLSBhL3NyYy9mY2luaXQuYworKysgYi9zcmMvZmNpbml0 LmMKQEAgLTIyOSw3ICsyMjksOCBAQCBGY0luaXRSZWluaXRpYWxpemUgKHZvaWQpCiBGY0Jvb2wK IEZjSW5pdEJyaW5nVXB0b0RhdGUgKHZvaWQpCiB7Ci0gICAgRmNDb25maWcJKmNvbmZpZyA9IEZj Q29uZmlnR2V0Q3VycmVudCAoKTsKKyAgICBGY0NvbmZpZwkqY29uZmlnID0gRmNDb25maWdSZWZl cmVuY2UgKE5VTEwpOworICAgIEZjQm9vbAlyZXQgPSBGY1RydWU7CiAgICAgdGltZV90CW5vdzsK IAogICAgIGlmICghY29uZmlnKQpAQCAtMjM4LDE5ICsyMzksMjMgQEAgRmNJbml0QnJpbmdVcHRv RGF0ZSAodm9pZCkKICAgICAgKiByZXNjYW5JbnRlcnZhbCA9PSAwIGRpc2FibGVzIGF1dG9tYXRp YyB1cCB0byBkYXRlCiAgICAgICovCiAgICAgaWYgKGNvbmZpZy0+cmVzY2FuSW50ZXJ2YWwgPT0g MCkKLQlyZXR1cm4gRmNUcnVlOworCWdvdG8gYmFpbDsKICAgICAvKgogICAgICAqIENoZWNrIG5v IG1vcmUgb2Z0ZW4gdGhhbiByZXNjYW5JbnRlcnZhbCBzZWNvbmRzCiAgICAgICovCiAgICAgbm93 ID0gdGltZSAoMCk7CiAgICAgaWYgKGNvbmZpZy0+cmVzY2FuVGltZSArIGNvbmZpZy0+cmVzY2Fu SW50ZXJ2YWwgLSBub3cgPiAwKQotCXJldHVybiBGY1RydWU7CisJZ290byBiYWlsOwogICAgIC8q CiAgICAgICogSWYgdXAgdG8gZGF0ZSwgZG9uJ3QgcmVsb2FkIGNvbmZpZ3VyYXRpb24KICAgICAg Ki8KICAgICBpZiAoRmNDb25maWdVcHRvRGF0ZSAoMCkpCi0JcmV0dXJuIEZjVHJ1ZTsKLSAgICBy ZXR1cm4gRmNJbml0UmVpbml0aWFsaXplICgpOworCWdvdG8gYmFpbDsKKyAgICByZXQgPSBGY0lu aXRSZWluaXRpYWxpemUgKCk7CitiYWlsOgorICAgIEZjQ29uZmlnRGVzdHJveSAoY29uZmlnKTsK KworICAgIHJldHVybiByZXQ7CiB9CiAKICNkZWZpbmUgX19mY2luaXRfXwpkaWZmIC0tZ2l0IGEv c3JjL2ZjbGlzdC5jIGIvc3JjL2ZjbGlzdC5jCmluZGV4IDQ5NGJkZWEuLjA1MzgwM2IgMTAwNjQ0 Ci0tLSBhL3NyYy9mY2xpc3QuYworKysgYi9zcmMvZmNsaXN0LmMKQEAgLTQ5MSwxMSArNDkxLDEw IEBAIEZjRm9udFNldExpc3QgKEZjQ29uZmlnCSAgICAqY29uZmlnLAogICAgIHsKIAlpZiAoIUZj SW5pdEJyaW5nVXB0b0RhdGUgKCkpCiAJICAgIGdvdG8gYmFpbDA7Ci0KLQljb25maWcgPSBGY0Nv bmZpZ0dldEN1cnJlbnQgKCk7Ci0JaWYgKCFjb25maWcpCi0JICAgIGdvdG8gYmFpbDA7CiAgICAg fQorICAgIGNvbmZpZyA9IEZjQ29uZmlnUmVmZXJlbmNlIChjb25maWcpOworICAgIGlmICghY29u ZmlnKQorCWdvdG8gYmFpbDA7CiAgICAgRmNMaXN0SGFzaFRhYmxlSW5pdCAoJnRhYmxlKTsKIAog ICAgIGlmICghb3MpCkBAIC01NTgsNyArNTU3LDcgQEAgRmNGb250U2V0TGlzdCAoRmNDb25maWcJ ICAgICpjb25maWcsCiAgICAgICovCiAgICAgcmV0ID0gRmNGb250U2V0Q3JlYXRlICgpOwogICAg IGlmICghcmV0KQotCWdvdG8gYmFpbDA7CisJZ290byBiYWlsMTsKICAgICBmb3IgKGkgPSAwOyBp IDwgRkNfTElTVF9IQVNIX1NJWkU7IGkrKykKIAl3aGlsZSAoKGJ1Y2tldCA9IHRhYmxlLmJ1Y2tl dHNbaV0pKQogCXsKQEAgLTU3MCw2ICs1NjksNyBAQCBGY0ZvbnRTZXRMaXN0IChGY0NvbmZpZwkg ICAgKmNvbmZpZywKIAogICAgIGlmIChkZXN0cm95X29zKQogICAgICAgICBGY09iamVjdFNldERl c3Ryb3kgKG9zKTsKKyAgICBGY0NvbmZpZ0Rlc3Ryb3kgKGNvbmZpZyk7CiAKICAgICByZXR1cm4g cmV0OwogCkBAIC01NzcsNiArNTc3LDcgQEAgYmFpbDI6CiAgICAgRmNGb250U2V0RGVzdHJveSAo cmV0KTsKIGJhaWwxOgogICAgIEZjTGlzdEhhc2hUYWJsZUNsZWFudXAgKCZ0YWJsZSk7CisgICAg RmNDb25maWdEZXN0cm95IChjb25maWcpOwogYmFpbDA6CiAgICAgaWYgKGRlc3Ryb3lfb3MpCiAJ RmNPYmplY3RTZXREZXN0cm95IChvcyk7CkBAIC01ODgsMjQgKzU4OSwyNiBAQCBGY0ZvbnRMaXN0 IChGY0NvbmZpZwkqY29uZmlnLAogCSAgICBGY1BhdHRlcm4JKnAsCiAJICAgIEZjT2JqZWN0U2V0 ICpvcykKIHsKLSAgICBGY0ZvbnRTZXQJKnNldHNbMl07CisgICAgRmNGb250U2V0CSpzZXRzWzJd LCAqcmV0OwogICAgIGludAkJbnNldHM7CiAKICAgICBpZiAoIWNvbmZpZykKICAgICB7CiAJaWYg KCFGY0luaXRCcmluZ1VwdG9EYXRlICgpKQogCSAgICByZXR1cm4gMDsKLQotCWNvbmZpZyA9IEZj Q29uZmlnR2V0Q3VycmVudCAoKTsKLQlpZiAoIWNvbmZpZykKLQkgICAgcmV0dXJuIDA7CiAgICAg fQorICAgIGNvbmZpZyA9IEZjQ29uZmlnUmVmZXJlbmNlIChjb25maWcpOworICAgIGlmICghY29u ZmlnKQorCXJldHVybiBOVUxMOwogICAgIG5zZXRzID0gMDsKICAgICBpZiAoY29uZmlnLT5mb250 c1tGY1NldFN5c3RlbV0pCiAJc2V0c1tuc2V0cysrXSA9IGNvbmZpZy0+Zm9udHNbRmNTZXRTeXN0 ZW1dOwogICAgIGlmIChjb25maWctPmZvbnRzW0ZjU2V0QXBwbGljYXRpb25dKQogCXNldHNbbnNl dHMrK10gPSBjb25maWctPmZvbnRzW0ZjU2V0QXBwbGljYXRpb25dOwotICAgIHJldHVybiBGY0Zv bnRTZXRMaXN0IChjb25maWcsIHNldHMsIG5zZXRzLCBwLCBvcyk7CisgICAgcmV0ID0gRmNGb250 U2V0TGlzdCAoY29uZmlnLCBzZXRzLCBuc2V0cywgcCwgb3MpOworICAgIEZjQ29uZmlnRGVzdHJv eSAoY29uZmlnKTsKKworICAgIHJldHVybiByZXQ7CiB9CiAjZGVmaW5lIF9fZmNsaXN0X18KICNp bmNsdWRlICJmY2FsaWFzdGFpbC5oIgpkaWZmIC0tZ2l0IGEvc3JjL2ZjbWF0Y2guYyBiL3NyYy9m Y21hdGNoLmMKaW5kZXggNzhiY2Y3Yi4uM2JjMzUyYiAxMDA2NDQKLS0tIGEvc3JjL2ZjbWF0Y2gu YworKysgYi9zcmMvZmNtYXRjaC5jCkBAIC04NDUsNyArODQ1LDcgQEAgRmNGb250U2V0TWF0Y2gg KEZjQ29uZmlnICAgICpjb25maWcsCiAJCUZjUGF0dGVybiAgICpwLAogCQlGY1Jlc3VsdCAgICAq cmVzdWx0KQogewotICAgIEZjUGF0dGVybgkgICAgKmJlc3Q7CisgICAgRmNQYXR0ZXJuCSAgICAq YmVzdCwgKnJldCA9IE5VTEw7CiAKICAgICBhc3NlcnQgKHNldHMgIT0gTlVMTCk7CiAgICAgYXNz ZXJ0IChwICE9IE5VTEwpOwpAQCAtODUzLDE3ICs4NTMsMTYgQEAgRmNGb250U2V0TWF0Y2ggKEZj Q29uZmlnICAgICpjb25maWcsCiAKICAgICAqcmVzdWx0ID0gRmNSZXN1bHROb01hdGNoOwogCisg ICAgY29uZmlnID0gRmNDb25maWdSZWZlcmVuY2UgKGNvbmZpZyk7CiAgICAgaWYgKCFjb25maWcp Ci0gICAgewotCWNvbmZpZyA9IEZjQ29uZmlnR2V0Q3VycmVudCAoKTsKLQlpZiAoIWNvbmZpZykK LQkgICAgcmV0dXJuIDA7Ci0gICAgfQorCSAgICByZXR1cm4gTlVMTDsKICAgICBiZXN0ID0gRmNG b250U2V0TWF0Y2hJbnRlcm5hbCAoc2V0cywgbnNldHMsIHAsIHJlc3VsdCk7CiAgICAgaWYgKGJl c3QpCi0JcmV0dXJuIEZjRm9udFJlbmRlclByZXBhcmUgKGNvbmZpZywgcCwgYmVzdCk7Ci0gICAg ZWxzZQotCXJldHVybiBOVUxMOworCXJldCA9IEZjRm9udFJlbmRlclByZXBhcmUgKGNvbmZpZywg cCwgYmVzdCk7CisKKyAgICBGY0NvbmZpZ0Rlc3Ryb3kgKGNvbmZpZyk7CisKKyAgICByZXR1cm4g cmV0OwogfQogCiBGY1BhdHRlcm4gKgpAQCAtODczLDE5ICs4NzIsMTYgQEAgRmNGb250TWF0Y2gg KEZjQ29uZmlnCSpjb25maWcsCiB7CiAgICAgRmNGb250U2V0CSpzZXRzWzJdOwogICAgIGludAkJ bnNldHM7Ci0gICAgRmNQYXR0ZXJuICAgKmJlc3Q7CisgICAgRmNQYXR0ZXJuICAgKmJlc3QsICpy ZXQgPSBOVUxMOwogCiAgICAgYXNzZXJ0IChwICE9IE5VTEwpOwogICAgIGFzc2VydCAocmVzdWx0 ICE9IE5VTEwpOwogCiAgICAgKnJlc3VsdCA9IEZjUmVzdWx0Tm9NYXRjaDsKIAorICAgIGNvbmZp ZyA9IEZjQ29uZmlnUmVmZXJlbmNlIChjb25maWcpOwogICAgIGlmICghY29uZmlnKQotICAgIHsK LQljb25maWcgPSBGY0NvbmZpZ0dldEN1cnJlbnQgKCk7Ci0JaWYgKCFjb25maWcpCi0JICAgIHJl dHVybiAwOwotICAgIH0KKwlyZXR1cm4gTlVMTDsKICAgICBuc2V0cyA9IDA7CiAgICAgaWYgKGNv bmZpZy0+Zm9udHNbRmNTZXRTeXN0ZW1dKQogCXNldHNbbnNldHMrK10gPSBjb25maWctPmZvbnRz W0ZjU2V0U3lzdGVtXTsKQEAgLTg5NCw5ICs4OTAsMTEgQEAgRmNGb250TWF0Y2ggKEZjQ29uZmln CSpjb25maWcsCiAKICAgICBiZXN0ID0gRmNGb250U2V0TWF0Y2hJbnRlcm5hbCAoc2V0cywgbnNl dHMsIHAsIHJlc3VsdCk7CiAgICAgaWYgKGJlc3QpCi0JcmV0dXJuIEZjRm9udFJlbmRlclByZXBh cmUgKGNvbmZpZywgcCwgYmVzdCk7Ci0gICAgZWxzZQotCXJldHVybiBOVUxMOworCXJldCA9IEZj Rm9udFJlbmRlclByZXBhcmUgKGNvbmZpZywgcCwgYmVzdCk7CisKKyAgICBGY0NvbmZpZ0Rlc3Ry b3kgKGNvbmZpZyk7CisKKyAgICByZXR1cm4gcmV0OwogfQogCiB0eXBlZGVmIHN0cnVjdCBfRmNT b3J0Tm9kZSB7CkBAIC0xMTgzLDcgKzExODEsNyBAQCBGY0ZvbnRTb3J0IChGY0NvbmZpZwkqY29u ZmlnLAogCSAgICBGY0NoYXJTZXQJKipjc3AsCiAJICAgIEZjUmVzdWx0CSpyZXN1bHQpCiB7Ci0g ICAgRmNGb250U2V0CSpzZXRzWzJdOworICAgIEZjRm9udFNldAkqc2V0c1syXSwgKnJldDsKICAg ICBpbnQJCW5zZXRzOwogCiAgICAgYXNzZXJ0IChwICE9IE5VTEwpOwpAQCAtMTE5MSwxOCArMTE4 OSwxOCBAQCBGY0ZvbnRTb3J0IChGY0NvbmZpZwkqY29uZmlnLAogCiAgICAgKnJlc3VsdCA9IEZj UmVzdWx0Tm9NYXRjaDsKIAorICAgIGNvbmZpZyA9IEZjQ29uZmlnUmVmZXJlbmNlIChjb25maWcp OwogICAgIGlmICghY29uZmlnKQotICAgIHsKLQljb25maWcgPSBGY0NvbmZpZ0dldEN1cnJlbnQg KCk7Ci0JaWYgKCFjb25maWcpCi0JICAgIHJldHVybiAwOwotICAgIH0KKwlyZXR1cm4gTlVMTDsK ICAgICBuc2V0cyA9IDA7CiAgICAgaWYgKGNvbmZpZy0+Zm9udHNbRmNTZXRTeXN0ZW1dKQogCXNl dHNbbnNldHMrK10gPSBjb25maWctPmZvbnRzW0ZjU2V0U3lzdGVtXTsKICAgICBpZiAoY29uZmln LT5mb250c1tGY1NldEFwcGxpY2F0aW9uXSkKIAlzZXRzW25zZXRzKytdID0gY29uZmlnLT5mb250 c1tGY1NldEFwcGxpY2F0aW9uXTsKLSAgICByZXR1cm4gRmNGb250U2V0U29ydCAoY29uZmlnLCBz ZXRzLCBuc2V0cywgcCwgdHJpbSwgY3NwLCByZXN1bHQpOworICAgIHJldCA9IEZjRm9udFNldFNv cnQgKGNvbmZpZywgc2V0cywgbnNldHMsIHAsIHRyaW0sIGNzcCwgcmVzdWx0KTsKKyAgICBGY0Nv bmZpZ0Rlc3Ryb3kgKGNvbmZpZyk7CisKKyAgICByZXR1cm4gcmV0OwogfQogI2RlZmluZSBfX2Zj bWF0Y2hfXwogI2luY2x1ZGUgImZjYWxpYXN0YWlsLmgiCmRpZmYgLS1naXQgYS90ZXN0L01ha2Vm aWxlLmFtIGIvdGVzdC9NYWtlZmlsZS5hbQppbmRleCBlNDRhYTBiLi5hYWU0NWNiIDEwMDY0NAot LS0gYS90ZXN0L01ha2VmaWxlLmFtCisrKyBiL3Rlc3QvTWFrZWZpbGUuYW0KQEAgLTQyLDYgKzQy LDExIEBAIHRlc3RfcHRocmVhZF9MREFERCA9ICQodG9wX2J1aWxkZGlyKS9zcmMvbGliZm9udGNv bmZpZy5sYQogIyBXZSBkb24ndCBlbmFibGUgdGhpcyB0ZXN0IGJ5IGRlZmF1bHQgYmVjYXVzZSBp dCB3aWxsIHJlcXVpcmUgY29uZmlnIGFuZCBmb250cwogIyB0byBtZWFuaW5nZnVsbHkgdGVzdCBh bnl0aGluZywgYW5kIHdlIGFyZSBub3QgaW5zdGFsbGVkIHlldC4KICNURVNUUyArPSB0ZXN0LXB0 aHJlYWQKKworY2hlY2tfUFJPR1JBTVMgKz0gdGVzdC1jcmJ1ZzEwMDQyNTQKK3Rlc3RfY3JidWcx MDA0MjU0X0xEQUREID0gJCh0b3BfYnVpbGRkaXIpL3NyYy9saWJmb250Y29uZmlnLmxhCisjIERp c2FibGluZyB0aGlzIGZvciB0aGUgc2FtZSByZWFzb24gYXMgYWJvdmUgYnV0IHRyeWluZyB0byBy dW4gaW4gcnVuLXRlc3Quc2guCisjVEVTVFMgKz0gdGVzdC1jcmJ1ZzEwMDQyNTQKIGVuZGlmCiBj aGVja19QUk9HUkFNUyArPSB0ZXN0LWJ6ODk2MTcKIHRlc3RfYno4OTYxN19DRkxBR1MgPSBcCmRp ZmYgLS1naXQgYS90ZXN0L3J1bi10ZXN0LnNoIGIvdGVzdC9ydW4tdGVzdC5zaAppbmRleCA4YWQw OWUzLi5lMWVlNmQwIDEwMDY0NAotLS0gYS90ZXN0L3J1bi10ZXN0LnNoCisrKyBiL3Rlc3QvcnVu LXRlc3Quc2gKQEAgLTIwLDYgKzIwLDggQEAKICMgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElO IEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUiBPVEhFUgogIyBUT1JUSU9VUyBB Q1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SCiAj IFBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuCitzZXQgLWUKKwogY2FzZSAiJE9TVFlQRSIg aW4KICAgICBtc3lzICkgTXlQV0Q9YHB3ZCAtV2AgOzsgICMgT24gTXN5cy9NaW5HVywgcmV0dXJu cyBhIE1TIFdpbmRvd3Mgc3R5bGUgcGF0aC4KICAgICAqICAgICkgTXlQV0Q9YHB3ZGAgICAgOzsg ICMgT24gYW55IG90aGVyIHBsYXRmb3JtcywgcmV0dXJucyBhIFVuaXggc3R5bGUgcGF0aC4KQEAg LTQwOCw0ICs0MTAsMTcgQEAgcm0gLXJmICRNWUNBQ0hFQkFTRURJUiAkTVlDT05GSUcgbXktZm9u dHMuY29uZiBteS1vdXQgbXktb3V0LmV4cGVjdGVkCiAKIGZpICMgaWYgWyAieCRFWEVFWFQiID0g IngiIF0KIAoraWYgWyAteCAkQlVJTERURVNURElSL3Rlc3QtY3JidWcxMDA0MjU0IF07IHRoZW4K KyAgICBkb3Rlc3QgIk1ULXNhZmUgZ2xvYmFsIGNvbmZpZyIKKyAgICBwcmVwCisgICAgY3VybCAt cyAtbyAkRk9OVERJUi9ub3RvLnppcCBodHRwczovL25vdG8td2Vic2l0ZS0yLnN0b3JhZ2UuZ29v Z2xlYXBpcy5jb20vcGtncy9Ob3RvU2Fucy1oaW50ZWQuemlwCisgICAgKGNkICRGT05URElSOyB1 bnppcCBub3RvLnppcCkKKyAgICBpZiBbIC1uICR7U09VUkNFX0RBVEVfRVBPQ0g6LX0gXSAmJiBb ICR7I1NPVVJDRV9EQVRFX0VQT0NIfSAtZ3QgMCBdOyB0aGVuCisJdG91Y2ggLW0gLXQgImBkYXRl IC1kIFwiQCR7U09VUkNFX0RBVEVfRVBPQ0h9XCIgKyV5JW0lZCVIJU0uJVNgIiAkRk9OVERJUgor ICAgIGZpCisgICAgJEJVSUxEVEVTVERJUi90ZXN0LWNyYnVnMTAwNDI1NAorZWxzZQorICAgIGVj aG8gIk5vIHRlc3QtY3JidWcxMDA0MjU0OiBza2lwcGVkIgorZmkKKwogcm0gLXJmICRGT05URElS ICRDQUNIRUZJTEUgJENBQ0hFRElSICRCQVNFRElSICRGT05UQ09ORklHX0ZJTEUgb3V0CmRpZmYg LS1naXQgYS90ZXN0L3Rlc3QtY3JidWcxMDA0MjU0LmMgYi90ZXN0L3Rlc3QtY3JidWcxMDA0MjU0 LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWNjNmZjNwotLS0gL2Rldi9u dWxsCisrKyBiL3Rlc3QvdGVzdC1jcmJ1ZzEwMDQyNTQuYwpAQCAtMCwwICsxLDExNiBAQAorLyoK KyAqIGZvbnRjb25maWcvdGVzdC90ZXN0LXB0aHJlYWQuYworICoKKyAqIENvcHlyaWdodCDCqSAy MDAwIEtlaXRoIFBhY2thcmQKKyAqIENvcHlyaWdodCDCqSAyMDEzIFJhaW11bmQgU3RlZ2VyCisg KgorICogUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgZGlzdHJpYnV0ZSwgYW5kIHNl bGwgdGhpcyBzb2Z0d2FyZSBhbmQgaXRzCisgKiBkb2N1bWVudGF0aW9uIGZvciBhbnkgcHVycG9z ZSBpcyBoZXJlYnkgZ3JhbnRlZCB3aXRob3V0IGZlZSwgcHJvdmlkZWQgdGhhdAorICogdGhlIGFi b3ZlIGNvcHlyaWdodCBub3RpY2UgYXBwZWFyIGluIGFsbCBjb3BpZXMgYW5kIHRoYXQgYm90aCB0 aGF0CisgKiBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIGFwcGVh ciBpbiBzdXBwb3J0aW5nCisgKiBkb2N1bWVudGF0aW9uLCBhbmQgdGhhdCB0aGUgbmFtZSBvZiB0 aGUgYXV0aG9yKHMpIG5vdCBiZSB1c2VkIGluCisgKiBhZHZlcnRpc2luZyBvciBwdWJsaWNpdHkg cGVydGFpbmluZyB0byBkaXN0cmlidXRpb24gb2YgdGhlIHNvZnR3YXJlIHdpdGhvdXQKKyAqIHNw ZWNpZmljLCB3cml0dGVuIHByaW9yIHBlcm1pc3Npb24uICBUaGUgYXV0aG9ycyBtYWtlIG5vCisg KiByZXByZXNlbnRhdGlvbnMgYWJvdXQgdGhlIHN1aXRhYmlsaXR5IG9mIHRoaXMgc29mdHdhcmUg Zm9yIGFueSBwdXJwb3NlLiAgSXQKKyAqIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBleHBy ZXNzIG9yIGltcGxpZWQgd2FycmFudHkuCisgKgorICogVEhFIEFVVEhPUihTKSBESVNDTEFJTVMg QUxMIFdBUlJBTlRJRVMgV0lUSCBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSwKKyAqIElOQ0xVRElO RyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUywg SU4gTk8KKyAqIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IoUykgQkUgTElBQkxFIEZPUiBBTlkgU1BF Q0lBTCwgSU5ESVJFQ1QgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdF UyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NIExPU1MgT0YgVVNFLAorICogREFUQSBPUiBQUk9G SVRTLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUiBPVEhF UgorICogVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJ VEggVEhFIFVTRSBPUgorICogUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS4KKyAqLworI2lu Y2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+ CisjaW5jbHVkZSA8cHRocmVhZC5oPgorI2luY2x1ZGUgPGZvbnRjb25maWcvZm9udGNvbmZpZy5o PgorCitzdHJ1Y3QgdGhyX2FyZ19zCit7CisgICAgaW50IHRocl9udW07Cit9OworCitzdGF0aWMg dm9pZAorcnVuX3F1ZXJ5ICh2b2lkKQoreworICAgIEZjUGF0dGVybiAqcGF0ID0gRmNQYXR0ZXJu Q3JlYXRlICgpLCAqbWF0Y2g7CisgICAgRmNSZXN1bHQgcmVzdWx0OworCisgICAgRmNQYXR0ZXJu QWRkU3RyaW5nIChwYXQsIEZDX0ZBTUlMWSwgInNhbnMtc2VyaWYiKTsKKyAgICBGY1BhdHRlcm5B ZGRCb29sIChwYXQsIEZDX1NDQUxBQkxFLCBGY1RydWUpOworICAgIEZjQ29uZmlnU3Vic3RpdHV0 ZSAoTlVMTCwgcGF0LCBGY01hdGNoUGF0dGVybik7CisgICAgRmNEZWZhdWx0U3Vic3RpdHV0ZSAo cGF0KTsKKyAgICBtYXRjaCA9IEZjRm9udE1hdGNoIChOVUxMLCBwYXQsICZyZXN1bHQpOworICAg IGlmIChyZXN1bHQgIT0gRmNSZXN1bHRNYXRjaCB8fCAhbWF0Y2gpCisgICAgeworCWZwcmludGYg KHN0ZGVyciwgIkVSUk9SOiBObyBtYXRjaGVzIGZvdW5kXG4iKTsKKyAgICB9CisgICAgaWYgKG1h dGNoKQorCUZjUGF0dGVybkRlc3Ryb3kgKG1hdGNoKTsKKyAgICBGY1BhdHRlcm5EZXN0cm95IChw YXQpOworfQorCitzdGF0aWMgdm9pZAorcnVuX3JlaW5pdCAodm9pZCkKK3sKKyAgICBpZiAoIUZj SW5pdFJlaW5pdGlhbGl6ZSAoKSkKKyAgICB7CisJZnByaW50ZiAoc3RkZXJyLCAiRVJST1I6IFJl aW5pdGlhbGl6aW5nIGZhaWxlZFxuIik7CisgICAgfQorfQorCisjZGVmaW5lIE5URVNUIDMwMDAK Kworc3RhdGljIHZvaWQgKgorcnVuX3Rlc3RfaW5fdGhyZWFkICh2b2lkICphcmcpCit7CisgICAg c3RydWN0IHRocl9hcmdfcyAqdGhyX2FyZyA9IChzdHJ1Y3QgdGhyX2FyZ19zICopIGFyZzsKKyAg ICBpbnQgdGhyZWFkX251bSA9IHRocl9hcmctPnRocl9udW07CisKKyAgICBmcHJpbnRmIChzdGRl cnIsICJXb3JrZXIgJWQ6IHN0YXJ0ZWQgKHJvdW5kICVkKVxuIiwgdGhyZWFkX251bSAlIDIsIHRo cmVhZF9udW0gLyAyKTsKKyAgICBpZiAoKHRocmVhZF9udW0gJSAyKSA9PSAwKQorICAgIHsKKwly dW5fcXVlcnkgKCk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisJcnVuX3JlaW5pdCAoKTsKKyAg ICB9CisgICAgZnByaW50ZiAoc3RkZXJyLCAiV29ya2VyICVkOiBkb25lIChyb3VuZCAlZClcbiIs IHRocmVhZF9udW0gJSAyLCB0aHJlYWRfbnVtIC8gMik7CisKKyAgICByZXR1cm4gTlVMTDsKK30K KworaW50CittYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCit7CisgICAgcHRocmVhZF90IHRo cmVhZHNbTlRFU1RdOworICAgIHN0cnVjdCB0aHJfYXJnX3MgdGhyX2FyZ1tOVEVTVF07CisgICAg aW50IGksIGo7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgTlRFU1Q7IGkrKykKKyAgICB7CisJaW50 IHJlc3VsdDsKKworCWZwcmludGYgKHN0ZGVyciwgIlRocmVhZCAlZCAod29ya2VyICVkIHJvdW5k ICVkKTogY3JlYXRpbmdcbiIsIGksIGkgJSAyLCBpIC8gMik7CisJdGhyX2FyZ1tpXS50aHJfbnVt ID0gaTsKKwlyZXN1bHQgPSBwdGhyZWFkX2NyZWF0ZSAoJnRocmVhZHNbaV0sIE5VTEwsIHJ1bl90 ZXN0X2luX3RocmVhZCwKKwkJCQkgKHZvaWQgKikgJnRocl9hcmdbaV0pOworCWlmIChyZXN1bHQg IT0gMCkKKwl7CisJICAgIGZwcmludGYgKHN0ZGVyciwgIkNhbm5vdCBjcmVhdGUgdGhyZWFkICVk XG4iLCBpKTsKKwkgICAgYnJlYWs7CisJfQorICAgIH0KKyAgICBmb3IgKGogPSAwOyBqIDwgaTsg aisrKQorICAgIHsKKwlwdGhyZWFkX2pvaW4odGhyZWFkc1tqXSwgTlVMTCk7CisJZnByaW50ZiAo c3RkZXJyLCAiSm9pbmVkIHRocmVhZCAlZFxuIiwgaik7CisgICAgfQorICAgIEZjRmluaSAoKTsK KworICAgIHJldHVybiAwOworfQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpGb250Y29uZmlnIG1haWxpbmcgbGlzdApGb250Y29uZmlnQGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2ZvbnRjb25maWc=