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: Mattias Ellert To: git-commits@fedoraproject.org Subject: [rpms/globus-common] rawhide: Fix compiler and doxygen warnings Date: Sun, 14 Jun 2026 08:45:46 GMT Message-ID: <178142674613.1.3153066450001204993.rpms-globus-common-8633960d1dff@fedoraproject.org> List-ID: X-Git-Repo: rpms/globus-common X-Git-Branch: rawhide X-Git-Rev: 8633960d1dffe8121fadc7f41b3edb9fe67dd119 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvZ2xvYnVzLWNvbW1v bgpCcmFuY2ggOiByYXdoaWRlCkNvbW1pdCA6IDg2MzM5NjBkMWRmZmU4MTIxZmFkYzdmNDFiM2Vk YjlmZTY3ZGQxMTkKQXV0aG9yIDogTWF0dGlhcyBFbGxlcnQgPG1hdHRpYXMuZWxsZXJ0QHBoeXNp Y3MudXUuc2U+CkRhdGUgICA6IDIwMjYtMDYtMTRUMTA6Mzk6MTIrMDI6MDAKU3RhdHMgIDogKzU1 MTIvLTEgaW4gMyBmaWxlKHMpClVSTCAgICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3Jn L3JwbXMvZ2xvYnVzLWNvbW1vbi9jLzg2MzM5NjBkMWRmZmU4MTIxZmFkYzdmNDFiM2VkYjlmZTY3 ZGQxMTk/YnJhbmNoPXJhd2hpZGUKCkxvZzoKRml4IGNvbXBpbGVyIGFuZCBkb3h5Z2VuIHdhcm5p bmdzCgotLS0KZGlmZiAtLWdpdCBhLzAwMDEtVW50YWJpZnktYW5kLXJlbW92ZS10cmFpbGluZy13 aGl0ZS1zcGFjZS5wYXRjaCBiLzAwMDEtVW50YWJpZnktYW5kLXJlbW92ZS10cmFpbGluZy13aGl0 ZS1zcGFjZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOTNjOGJi Ci0tLSAvZGV2L251bGwKKysrIGIvMDAwMS1VbnRhYmlmeS1hbmQtcmVtb3ZlLXRyYWlsaW5nLXdo aXRlLXNwYWNlLnBhdGNoCkBAIC0wLDAgKzEsNTIxOSBAQAorRnJvbSAzY2NkYWEwMjM2MjMwYmJj YmNiZjMzOWU3ZGZkZmFmMjNjMTBiZDZmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTog TWF0dGlhcyBFbGxlcnQgPG1hdHRpYXMuZWxsZXJ0QHBoeXNpY3MudXUuc2U+CitEYXRlOiBXZWQs IDIwIE1heSAyMDI2IDAwOjE1OjM3ICswMjAwCitTdWJqZWN0OiBbUEFUQ0ggMS8yXSBVbnRhYmlm eSBhbmQgcmVtb3ZlIHRyYWlsaW5nIHdoaXRlLXNwYWNlCisKKy0tLQorIGNvbW1vbi9zb3VyY2Uv bGlicmFyeS9nbG9idXNfYXJncy5jICAgICAgICAgIHwgIDM2OCArKystLS0KKyBjb21tb24vc291 cmNlL2xpYnJhcnkvZ2xvYnVzX2NhbGxiYWNrLmggICAgICB8ICAgOTggKy0KKyBjb21tb24vc291 cmNlL2xpYnJhcnkvZ2xvYnVzX2Vycm9yX2Vycm5vLmMgICB8ICAgNDAgKy0KKyBjb21tb24vc291 cmNlL2xpYnJhcnkvZ2xvYnVzX2Vycm9yX2dlbmVyaWMuYyB8ICAyMDIgKystLQorIGNvbW1vbi9z b3VyY2UvbGlicmFyeS9nbG9idXNfbGliYy5jICAgICAgICAgIHwgMTA4MiArKysrKysrKystLS0t LS0tLS0KKyBjb21tb24vc291cmNlL2xpYnJhcnkvZ2xvYnVzX2xvZ2dpbmcuYyAgICAgICB8ICAg NDAgKy0KKyBjb21tb24vc291cmNlL2xpYnJhcnkvZ2xvYnVzX21vZHVsZS5jICAgICAgICB8ICA2 MjQgKysrKystLS0tLQorIDcgZmlsZXMgY2hhbmdlZCwgMTIyNyBpbnNlcnRpb25zKCspLCAxMjI3 IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY29tbW9uL3NvdXJjZS9saWJyYXJ5L2dsb2J1 c19hcmdzLmMgYi9jb21tb24vc291cmNlL2xpYnJhcnkvZ2xvYnVzX2FyZ3MuYworaW5kZXggY2E5 ZmYyNGJhLi5mYWI5MzJmM2YgMTAwNjQ0CistLS0gYS9jb21tb24vc291cmNlL2xpYnJhcnkvZ2xv YnVzX2FyZ3MuYworKysrIGIvY29tbW9uL3NvdXJjZS9saWJyYXJ5L2dsb2J1c19hcmdzLmMKK0BA IC0zMywzNCArMzMsMzQgQEAKKyAKKyAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgZ2xvYnVzX2xfYXJn c19jcmVhdGVfbXNnKCkKKy0gICAKKysKKyAgICBjcmVhdGVzIChhbmQgcG9zc2libHkgcHJpbnRz KSBhIG1lc3NhZ2UKKyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgCisgaW50CisgZ2xvYnVzX2xfYXJn c19jcmVhdGVfbXNnKCBjaGFyICoqICAgICAgICAgbXNnX3N0b3JhZ2UsCistCQkJICBjaGFyICog ICAgICAgICAgbWVzc2FnZSAgICApCisrICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICog ICAgICAgICAgbWVzc2FnZSAgICApCisgeworICAgICBpZiAobXNnX3N0b3JhZ2UpCistCSptc2df c3RvcmFnZSA9IG1lc3NhZ2U7CisrICAgICAgICAqbXNnX3N0b3JhZ2UgPSBtZXNzYWdlOworICAg ICBlbHNlCistCWdsb2J1c19saWJjX2ZwcmludGYoIHN0ZGVyciwgIiVzIiwgbWVzc2FnZSApOwor KyAgICAgICAgZ2xvYnVzX2xpYmNfZnByaW50Ziggc3RkZXJyLCAiJXMiLCBtZXNzYWdlICk7Cisg CisgICAgIHJldHVybiBHTE9CVVNfU1VDQ0VTUzsKKyB9CisgCisgLyogLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor ICAgIGdsb2J1c19sX2FyZ3NfY3JlYXRlX2Vycm9yX21zZygpCistICAgCisrCisgICAgY3JlYXRl cyAoYW5kIHBvc3NpYmx5IHByaW50cykgYW4gZXJyb3IgbWVzc2FnZQorICAgIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0gKi8KKyAKKyBpbnQKKyBnbG9idXNfbF9hcmdzX2NyZWF0ZV9lcnJvcl9tc2coIGNoYXIgKiog ICAgICAgIGVycm9yX21zZywKKy0JCQkJaW50ICAgICAgICAgICAgY3VycmVudF9hcmdjLAorLQkJ CQljaGFyICogICAgICAgICBjdXJyZW50X2FyZ3YsCistCQkJCWNoYXIgKiAgICAgICAgIGVycm9y X3N0cmluZywKKy0JCQkJY29uc3QgY2hhciAqICAgb25lbGluZV91c2FnZSApCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpbnQgICAgICAgICAgICBjdXJyZW50X2FyZ2MsCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICogICAgICAgICBjdXJyZW50X2FyZ3Ys CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICogICAgICAgICBlcnJvcl9z dHJpbmcsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICogICBv bmVsaW5lX3VzYWdlICkKKyB7CisgICAgIGNoYXIgKiAgICAgIG15X2Vycm9yX3N0cmluZzsKKyAg ICAgY2hhciAqICAgICAgcDsKK0BAIC03OCwxNSArNzgsMTUgQEAgZ2xvYnVzX2xfYXJnc19jcmVh dGVfZXJyb3JfbXNnKCBjaGFyICoqICAgICAgICBlcnJvcl9tc2csCisgICAgICAgICArIHN0cmxl bihteV9lcnJvcl9zdHJpbmcpCisgICAgICAgICArIHN0cmxlbihvbmVsaW5lX3VzYWdlKQorICAg ICAgICAgKyBzdHJsZW4oZXJyb3JfZXBpbG9ndWUpCistCSsgMTA7CisrICAgICAgICArIDEwOwor IAorICAgICBwID0gZ2xvYnVzX2xfYXJnc19tYWxsb2MoIGNoYXIsIGxlbiApOworICAgICBnbG9i dXNfYXNzZXJ0KCBwICk7CisgICAgIGdsb2J1c19saWJjX3NwcmludGYoIHAsCistCQkJIGVycm9y X2Zvcm1hdCwgCistCQkJIGN1cnJlbnRfYXJnYywgCistCQkJIGN1cnJlbnRfYXJndiwKKy0JCQkg bXlfZXJyb3Jfc3RyaW5nICApOworKyAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9mb3Jt YXQsCisrICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfYXJnYywKKysgICAgICAgICAg ICAgICAgICAgICAgICAgY3VycmVudF9hcmd2LAorKyAgICAgICAgICAgICAgICAgICAgICAgICBt eV9lcnJvcl9zdHJpbmcgICk7CisgCisgICAgIHVzYWdlX2xlbiA9IHN0cmxlbiggb25lbGluZV91 c2FnZSApOworIAorQEAgLTk1LDExICs5NSwxMSBAQCBnbG9idXNfbF9hcmdzX2NyZWF0ZV9lcnJv cl9tc2coIGNoYXIgKiogICAgICAgIGVycm9yX21zZywKKyAgICAgc3ByaW50ZiggJnBbbGVuK3Vz YWdlX2xlbl0sICIlcyIsIGVycm9yX2VwaWxvZ3VlICk7CisgCisgICAgIGlmIChlcnJvcl9tc2cp CistCSplcnJvcl9tc2cgPSBwOworKyAgICAgICAgKmVycm9yX21zZyA9IHA7CisgICAgIGVsc2UK KyAgICAgeworLQlnbG9idXNfbGliY19mcHJpbnRmKCBzdGRlcnIsICIlcyIsIHAgKTsKKy0JZnJl ZShwKTsKKysgICAgICAgIGdsb2J1c19saWJjX2ZwcmludGYoIHN0ZGVyciwgIiVzIiwgcCApOwor KyAgICAgICAgZnJlZShwKTsKKyAgICAgfQorIAorICAgICByZXR1cm4gR0xPQlVTX1NVQ0NFU1M7 CitAQCAtMTE5LDEyICsxMTksMTIgQEAgZ2xvYnVzX2xfYXJnc19jcmVhdGVfZXJyb3JfbXNnKCBj aGFyICoqICAgICAgICBlcnJvcl9tc2csCisgCisgCisgaW50CistZ2xvYnVzX2xfYXJnc192YWxp ZGF0ZSggZ2xvYnVzX2FyZ3Nfb3B0aW9uX2Rlc2NyaXB0b3JfdCAqICAgb3B0aW9uLCAKKy0JCQlp bnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9hcmdjLAorLQkJCWNoYXIg KiogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3YsCistCQkJY2hhciAqKiogICAgICAg ICAgICAgICAgICAgICAgICAgICAgdmFsdWVzLAorLQkJCWNvbnN0IGNoYXIgKiAgICAgICAgICAg ICAgICAgICAgICAgIG9uZWxpbmVfdXNhZ2UsCistCQkJY2hhciAqKiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbXNnX3N0b3JhZ2UgICkKKytnbG9idXNfbF9hcmdzX3ZhbGlkYXRlKCBnbG9i dXNfYXJnc19vcHRpb25fZGVzY3JpcHRvcl90ICogICBvcHRpb24sCisrICAgICAgICAgICAgICAg ICAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfYXJnYywK KysgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBhcmd2LAorKyAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKioqICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHZhbHVlcywKKysgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj aGFyICogICAgICAgICAgICAgICAgICAgICAgICBvbmVsaW5lX3VzYWdlLAorKyAgICAgICAgICAg ICAgICAgICAgICAgIGNoYXIgKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZ19zdG9y YWdlICApCisgeworICAgICBpbnQgICAgICAgICAgIHJjOworICAgICBpbnQgICAgICAgICAgIGk7 CitAQCAtMTM0LDQzICsxMzQsNDMgQEAgZ2xvYnVzX2xfYXJnc192YWxpZGF0ZSggZ2xvYnVzX2Fy Z3Nfb3B0aW9uX2Rlc2NyaXB0b3JfdCAqICAgb3B0aW9uLAorIAorICAgICAqdmFsdWVzID0gZ2xv YnVzX2xfYXJnc19tYWxsb2MoY2hhciosIG9wdGlvbi0+YXJpdHkpOworICAgICBnbG9idXNfYXNz ZXJ0KCp2YWx1ZXMpOworLSAgICAKKysKKyAgICAgcmMgPSBHTE9CVVNfU1VDQ0VTUzsKKyAKKyAg ICAgZm9yIChpPTA7ICFyYyAmJiBpPG9wdGlvbi0+YXJpdHk7IGkrKykKKyAgICAgeworLQlhcmdw ID0gYXJndltzdGFydF9hcmdjKzEraV07CistCWlmIChvcHRpb24tPnRlc3RzICYmIG9wdGlvbi0+ dGVzdHNbaV0gKQorLQl7CistCSAgICBwID0gR0xPQlVTX05VTEw7CistCSAgICBpZiAoIG9wdGlv bi0+dGVzdF9wYXJtcyAmJiBvcHRpb24tPnRlc3RfcGFybXNbaV0gKQorLQkJcCA9IG9wdGlvbi0+ dGVzdF9wYXJtc1tpXTsKKy0KKy0JICAgIHZhbGlkYXRpb25fZXJyb3IgPSBHTE9CVVNfTlVMTDsK Ky0JICAgIHJjID0gb3B0aW9uLT50ZXN0c1tpXSggYXJncCwKKy0JCQkJICAgcCwKKy0JCQkJICAg JnZhbGlkYXRpb25fZXJyb3IgKTsKKy0KKy0JICAgIC8qIEFQSSBkZWZpbmVzIG5vbi16ZXJvIHJl dHVybiBhcyBhbiBlcnJvciAqLworLQkgICAgaWYgKHJjKQorLQkgICAgeworLQkJZ2xvYnVzX2xf YXJnc19jcmVhdGVfZXJyb3JfbXNnKCBtc2dfc3RvcmFnZSwKKy0JCQkJCQlzdGFydF9hcmdjKzEr aSwKKy0JCQkJCQlhcmdwLAorLQkJCQkJCXZhbGlkYXRpb25fZXJyb3IsCistCQkJCQkJb25lbGlu ZV91c2FnZSAgICk7CistCQljb250aW51ZTsKKy0JICAgIH0KKy0JfSAvKiBpZiAqLworLQorLQko KnZhbHVlcylbaV0gPSBhcmdwOworKyAgICAgICAgYXJncCA9IGFyZ3Zbc3RhcnRfYXJnYysxK2ld OworKyAgICAgICAgaWYgKG9wdGlvbi0+dGVzdHMgJiYgb3B0aW9uLT50ZXN0c1tpXSApCisrICAg ICAgICB7CisrICAgICAgICAgICAgcCA9IEdMT0JVU19OVUxMOworKyAgICAgICAgICAgIGlmICgg b3B0aW9uLT50ZXN0X3Bhcm1zICYmIG9wdGlvbi0+dGVzdF9wYXJtc1tpXSApCisrICAgICAgICAg ICAgICAgIHAgPSBvcHRpb24tPnRlc3RfcGFybXNbaV07CisrCisrICAgICAgICAgICAgdmFsaWRh dGlvbl9lcnJvciA9IEdMT0JVU19OVUxMOworKyAgICAgICAgICAgIHJjID0gb3B0aW9uLT50ZXN0 c1tpXSggYXJncCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAsCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdmFsaWRhdGlvbl9lcnJvciApOworKwor KyAgICAgICAgICAgIC8qIEFQSSBkZWZpbmVzIG5vbi16ZXJvIHJldHVybiBhcyBhbiBlcnJvciAq LworKyAgICAgICAgICAgIGlmIChyYykKKysgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAg IGdsb2J1c19sX2FyZ3NfY3JlYXRlX2Vycm9yX21zZyggbXNnX3N0b3JhZ2UsCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfYXJnYysxK2ksCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncCwKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9u X2Vycm9yLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IG9uZWxpbmVfdXNhZ2UgICApOworKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKysgICAgICAg ICAgICB9CisrICAgICAgICB9IC8qIGlmICovCisrCisrICAgICAgICAoKnZhbHVlcylbaV0gPSBh cmdwOworIAorICAgICB9ICAgLyogZm9yICovCisgCisgICAgIGlmIChyYykKKyAgICAgeworLQlm cmVlKCp2YWx1ZXMpOworLQlyYyA9IEdMT0JVU19GQUlMVVJFOworKyAgICAgICAgZnJlZSgqdmFs dWVzKTsKKysgICAgICAgIHJjID0gR0xPQlVTX0ZBSUxVUkU7CisgICAgIH0KKyAKKyAgICAgcmV0 dXJuIHJjOworQEAgLTE4MCwxNSArMTgwLDE1IEBAIGdsb2J1c19sX2FyZ3NfdmFsaWRhdGUoIGds b2J1c19hcmdzX29wdGlvbl9kZXNjcmlwdG9yX3QgKiAgIG9wdGlvbiwKKyAKKyAvKiAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAgICBnbG9idXNfbF9hcmdzX2FkZF9pbnN0YW5jZSgpCistICAgCisrCisgICAgaGVs cCBmdW5jdGlvbiA6IGNyZWF0ZXMgYW4gb3B0aW9uIGluc3RhbmNlIGFuZCBpbnNlcnRzIGluIHRo ZSBmaWZvIGxpc3QuCisgKi8KKy0gICAKKysKKyAKKyBpbnQKKyBnbG9idXNfbF9hcmdzX2FkZF9p bnN0YW5jZSggZ2xvYnVzX2ZpZm9fdCAqICAgICAgICAgICAgICAgICAgICAgZmlmbywKKy0JCQkg ICAgZ2xvYnVzX2FyZ3Nfb3B0aW9uX2Rlc2NyaXB0b3JfdCAqICAgb3B0aW9uLAorLQkJCSAgICBj aGFyICoqICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXMgKQorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBnbG9idXNfYXJnc19vcHRpb25fZGVzY3JpcHRvcl90ICogICBvcHRp b24sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKiogICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHZhbHVlcyApCisgeworICAgICBnbG9idXNfYXJnc19vcHRpb25faW5zdGFu Y2VfdCAqICB0OworIAorQEAgLTIwOSw3ICsyMDksNyBAQCBnbG9idXNfbF9hcmdzX2FkZF9pbnN0 YW5jZSggZ2xvYnVzX2ZpZm9fdCAqICAgICAgICAgICAgICAgICAgICAgZmlmbywKKyAgICBnbG9i dXNfbF9hcmdzX2NoZWNrX29wdGlvbnMoKQorIAorICAgICg3KSBUaGUgYXJndW1lbnQgZmxhZ3Mg Ii1oZWxwIiwgIi11c2FnZSIsICItdmVyc2lvbiIsIGFuZCAiLXZlcnNpb25zIiBhcmUKKy0gICAg ICAgcmVzZXJ2ZWQsIGFuZCBpZiB0aGV5IGFyZSBkZXRlY3RlZCB0aGUgbGlicmFyeSB3aWxsIGNy ZWF0ZSBhbiAKKysgICAgICAgcmVzZXJ2ZWQsIGFuZCBpZiB0aGV5IGFyZSBkZXRlY3RlZCB0aGUg bGlicmFyeSB3aWxsIGNyZWF0ZSBhbgorICAgICAgICBhcHByb3ByaWF0ZSBtZXNzYWdlIGFuZCBz aWduYWwgYW4gZXJyb3IuCisgCisgKi8KK0BAIC0yMjksMjcgKzIyOSwyNyBAQCBnbG9idXNfbF9h cmdzX2NoZWNrX29wdGlvbnMoCisgCisgICAgIHJjID0gR0xPQlVTX1NVQ0NFU1M7CisgICAgIGZv ciAoaT0wOyAhcmMgJiYgaTxvcHRpb25fY291bnQ7IGkrKykKKy0gICAgeyAgICAgICAgCistCWlm IChvcHRpb25zW2ldLmlkX251bWJlciA9PSAwKQorLQl7CistCSAgICBnbG9idXNfbF9hcmdzX2Ny ZWF0ZV9tc2coIGVycm9yX21zZywgRVJST1JJRDAgKTsKKy0JICAgIHJjID0gR0xPQlVTX0ZBSUxV UkU7CistCX0KKy0JZWxzZQorLQl7CistCSAgICBmb3IgKGFsaWFzPW9wdGlvbnNbaV0ubmFtZXM7 ICgqYWxpYXMpOyBhbGlhcysrKQorLQkgICAgeworLQkJaWYgKCFzdHJjbXAoKmFsaWFzLCAiLWhl bHAiKSAgIHx8CistCQkgICAgIXN0cmNtcCgqYWxpYXMsICItdXNhZ2UiKSAgfHwKKy0JCSAgICAh c3RyY21wKCphbGlhcywgIi12ZXJzaW9uIil8fAorLQkJICAgICFzdHJjbXAoKmFsaWFzLCAiLXZl cnNpb25zIikpCistCQl7CistCQkgICAgZ2xvYnVzX2xfYXJnc19jcmVhdGVfbXNnKCBlcnJvcl9t c2csIEVSUk9SNyApOworLQkJICAgIHJjID0gR0xPQlVTX0ZBSUxVUkU7CistCQkgICAgYnJlYWs7 CistCQl9CistCSAgICB9CistCX0KKysgICAgeworKyAgICAgICAgaWYgKG9wdGlvbnNbaV0uaWRf bnVtYmVyID09IDApCisrICAgICAgICB7CisrICAgICAgICAgICAgZ2xvYnVzX2xfYXJnc19jcmVh dGVfbXNnKCBlcnJvcl9tc2csIEVSUk9SSUQwICk7CisrICAgICAgICAgICAgcmMgPSBHTE9CVVNf RkFJTFVSRTsKKysgICAgICAgIH0KKysgICAgICAgIGVsc2UKKysgICAgICAgIHsKKysgICAgICAg ICAgICBmb3IgKGFsaWFzPW9wdGlvbnNbaV0ubmFtZXM7ICgqYWxpYXMpOyBhbGlhcysrKQorKyAg ICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgaWYgKCFzdHJjbXAoKmFsaWFzLCAiLWhlbHAi KSAgIHx8CisrICAgICAgICAgICAgICAgICAgICAhc3RyY21wKCphbGlhcywgIi11c2FnZSIpICB8 fAorKyAgICAgICAgICAgICAgICAgICAgIXN0cmNtcCgqYWxpYXMsICItdmVyc2lvbiIpfHwKKysg ICAgICAgICAgICAgICAgICAgICFzdHJjbXAoKmFsaWFzLCAiLXZlcnNpb25zIikpCisrICAgICAg ICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgICAgIGdsb2J1c19sX2FyZ3NfY3JlYXRlX21z ZyggZXJyb3JfbXNnLCBFUlJPUjcgKTsKKysgICAgICAgICAgICAgICAgICAgIHJjID0gR0xPQlVT X0ZBSUxVUkU7CisrICAgICAgICAgICAgICAgICAgICBicmVhazsKKysgICAgICAgICAgICAgICAg fQorKyAgICAgICAgICAgIH0KKysgICAgICAgIH0KKyAgICAgfQorIAorICAgICByZXR1cm4gcmM7 CitAQCAtMjY1LDcgKzI2NSw3IEBAIGdsb2J1c19sX2FyZ3NfY2hlY2tfb3B0aW9ucygKKyAKKyAq LworIAorLWludCAKKytpbnQKKyBnbG9idXNfYXJnc19zY2FuKAorICAgICBpbnQgICogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ2MsCisgICAgIGNoYXIgKioqICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgYXJndiwKK0BAIC0yOTQsMTEgKzI5NCwxMSBAQCBnbG9idXNfYXJn c19zY2FuKAorICAgICBnbG9idXNfbGliY19sb2NrKCk7CisgICAgIGlmICghYXJnc19tdXRleF9p bml0aWFsaXplZCkKKyAgICAgeworLQlnbG9idXNfbXV0ZXhfaW5pdCgmYXJnc19tdXRleCwKKy0J CQkgIChnbG9idXNfbXV0ZXhhdHRyX3QgKikgR0xPQlVTX05VTEwpOworLQlhcmdzX211dGV4X2lu aXRpYWxpemVkID0gR0xPQlVTX1RSVUU7CisrICAgICAgICBnbG9idXNfbXV0ZXhfaW5pdCgmYXJn c19tdXRleCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgIChnbG9idXNfbXV0ZXhhdHRyX3Qg KikgR0xPQlVTX05VTEwpOworKyAgICAgICAgYXJnc19tdXRleF9pbml0aWFsaXplZCA9IEdMT0JV U19UUlVFOworICAgICB9CistICAgIGdsb2J1c19saWJjX3VubG9jaygpOyAgICAKKysgICAgZ2xv YnVzX2xpYmNfdW5sb2NrKCk7CisgCisgICAgIGdsb2J1c19tdXRleF9sb2NrKCZhcmdzX211dGV4 KTsKKyAKK0BAIC0zMDYsNyArMzA2LDcgQEAgZ2xvYnVzX2FyZ3Nfc2NhbigKKyAgICAgZ2xvYnVz X2ZpZm9faW5pdCgmZmlmbyk7CisgICAgICpvcHRpb25zX2ZvdW5kID0gR0xPQlVTX05VTEw7Cisg ICAgIGlmIChlcnJvcl9tc2cpCistCSplcnJvcl9tc2cgPSBHTE9CVVNfTlVMTDsKKysgICAgICAg ICplcnJvcl9tc2cgPSBHTE9CVVNfTlVMTDsKKyAKKyAgICAgLyogcHJlY2hlY2sgOiBhcmUgdGhl IG9wdGlvbnMgY29ycmVjdD8gKi8KKyAgICAgcmMgPSBnbG9idXNfbF9hcmdzX2NoZWNrX29wdGlv bnMob3B0aW9uX2NvdW50LCBvcHRpb25zLCBlcnJvcl9tc2cpOworQEAgLTMxNSw3ICszMTUsNyBA QCBnbG9idXNfYXJnc19zY2FuKAorICAgICBteV9hcmdjPTE7CisgICAgIHdoaWxlICghZG9uZSkK KyAgICAgeworLSAgICAgICAgLyogYW55IG1vcmUgb3B0aW9ucz8gKi8gCisrICAgICAgICAvKiBh bnkgbW9yZSBvcHRpb25zPyAqLworICAgICAgICAgaWYgKG15X2FyZ2MgPT0gKmFyZ2MpCisgICAg ICAgICB7CisgICAgICAgICAgICAgZG9uZT1HTE9CVVNfVFJVRTsKK0BAIC0zMjcsNyArMzI3LDcg QEAgZ2xvYnVzX2FyZ3Nfc2NhbigKKyAKKyAgICAgICAgIGlmIChteV9hcmdbMF0hPSctJyB8fCBs ZW48MikKKyAgICAgICAgIHsKKy0JICAgIC8qIHVucmVjb2duaXplZCBvcHRpb24gKi8KKysgICAg ICAgICAgICAvKiB1bnJlY29nbml6ZWQgb3B0aW9uICovCisgICAgICAgICAgICAgZG9uZT1HTE9C VVNfVFJVRTsKKyAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgIH0KK0BAIC0zNDUsMTEg KzM0NSwxMSBAQCBnbG9idXNfYXJnc19zY2FuKAorICAgICAgICAgICAgIHsKKyAgICAgICAgICAg ICAgICAgcmMgPSBHTE9CVVNfRkFJTFVSRTsKKyAgICAgICAgICAgICAgICAgZ2xvYnVzX2xfYXJn c19jcmVhdGVfZXJyb3JfbXNnKAorLQkJICAgIGVycm9yX21zZywKKy0JCSAgICBteV9hcmdjLAor LQkJICAgIG15X2FyZywKKy0JCSAgICBfR0NTTCgiZG91YmxlLWRhc2hlZCBvcHRpb24gc3ludGF4 IGlzIG5vdCBhbGxvd2VkIiksCistCQkgICAgb25lbGluZV91c2FnZSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICApOworKyAgICAgICAgICAgICAgICAgICAgZXJyb3JfbXNnLAorKyAgICAg ICAgICAgICAgICAgICAgbXlfYXJnYywKKysgICAgICAgICAgICAgICAgICAgIG15X2FyZywKKysg ICAgICAgICAgICAgICAgICAgIF9HQ1NMKCJkb3VibGUtZGFzaGVkIG9wdGlvbiBzeW50YXggaXMg bm90IGFsbG93ZWQiKSwKKysgICAgICAgICAgICAgICAgICAgIG9uZWxpbmVfdXNhZ2UgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICB9CisgICAgICAgICAgICAg ZG9uZSA9IEdMT0JVU19UUlVFOworICAgICAgICAgICAgIGNvbnRpbnVlOworQEAgLTM1OSwxNiAr MzU5LDE2IEBAIGdsb2J1c19hcmdzX3NjYW4oCisgICAgICAgICBpZiAoIXN0cmNtcCgiLWhlbHAi LG15X2FyZykpCisgICAgICAgICB7CisgICAgICAgICAgICAgZ2xvYnVzX2xfYXJnc19jcmVhdGVf bXNnKCBlcnJvcl9tc2cgLAorLQkJCQkgICAgICAoY2hhciAqKSBsb25nX3VzYWdlICk7CistCSAg ICByYyA9IEdMT0JVU19BUkdTX0hFTFA7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoY2hhciAqKSBsb25nX3VzYWdlICk7CisrICAgICAgICAgICAgcmMgPSBHTE9CVVNf QVJHU19IRUxQOworICAgICAgICAgICAgIGRvbmUgPSBHTE9CVVNfVFJVRTsKKyAgICAgICAgICAg ICBjb250aW51ZTsKKyAgICAgICAgIH0KKyAgICAgICAgIGlmKCFzdHJjbXAoIi11c2FnZSIsbXlf YXJnKSkKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBnbG9idXNfbF9hcmdzX2NyZWF0ZV9tc2co IGVycm9yX21zZyAsCistCQkJCSAgICAgIChjaGFyICopIG9uZWxpbmVfdXNhZ2UgKTsKKy0JICAg IHJjID0gR0xPQlVTX0FSR1NfSEVMUDsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChjaGFyICopIG9uZWxpbmVfdXNhZ2UgKTsKKysgICAgICAgICAgICByYyA9IEdMT0JV U19BUkdTX0hFTFA7CisgICAgICAgICAgICAgZG9uZSA9IEdMT0JVU19UUlVFOworICAgICAgICAg ICAgIGNvbnRpbnVlOworICAgICAgICAgfQorQEAgLTM3OSwyNiArMzc5LDI2IEBAIGdsb2J1c19h cmdzX3NjYW4oCisgICAgICAgICAgICAgICAgIHZlcnNpb24sCisgICAgICAgICAgICAgICAgIHN0 ZGVyciwKKyAgICAgICAgICAgICAgICAgR0xPQlVTX0ZBTFNFKTsKKy0gICAgICAgICAgICAgICAg CistCSAgICByYyA9IEdMT0JVU19BUkdTX1ZFUlNJT047CisrCisrICAgICAgICAgICAgcmMgPSBH TE9CVVNfQVJHU19WRVJTSU9OOworICAgICAgICAgICAgIGRvbmUgPSBHTE9CVVNfVFJVRTsKKyAg ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgIH0KKyAgICAgICAgIGlmICghc3RyY21wKCIt dmVyc2lvbnMiLG15X2FyZykpCisgICAgICAgICB7CistCSAgICBnbG9idXNfdmVyc2lvbl9wcmlu dCgKKysgICAgICAgICAgICBnbG9idXNfdmVyc2lvbl9wcmludCgKKyAgICAgICAgICAgICAgICAg bmFtZSwKKyAgICAgICAgICAgICAgICAgdmVyc2lvbiwKKyAgICAgICAgICAgICAgICAgc3RkZXJy LAorICAgICAgICAgICAgICAgICBHTE9CVVNfVFJVRSk7CistICAgICAgICAgICAgCisrCisgICAg ICAgICAgICAgZ2xvYnVzX21vZHVsZV9wcmludF9hY3RpdmF0ZWRfdmVyc2lvbnMoc3RkZXJyLCBH TE9CVVNfVFJVRSk7CistICAgICAgICAgICAgICAgIAorLQkgICAgcmMgPSBHTE9CVVNfQVJHU19W RVJTSU9OOworKworKyAgICAgICAgICAgIHJjID0gR0xPQlVTX0FSR1NfVkVSU0lPTjsKKyAgICAg ICAgICAgICBkb25lID0gR0xPQlVTX1RSVUU7CisgICAgICAgICAgICAgY29udGludWU7CisgICAg ICAgICB9CistICAgICAgICAKKysKKyAgICAgICAgIC8qIGlzIGl0IGEga25vd24gZmxhZz8gKi8K KyAgICAgICAgIGZvdW5kPUdMT0JVU19GQUxTRTsKKyAgICAgICAgIGZvciAoaT0wOyAhZm91bmQg JiYgIXJjICYmIGk8b3B0aW9uX2NvdW50OyBpKyspCitAQCAtNDE0LDI3ICs0MTQsMjcgQEAgZ2xv YnVzX2FyZ3Nfc2NhbigKKyAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobXlfYXJnYytvcHRp b25zW2ldLmFyaXR5ID49ICphcmdjKQorICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYnVzX2xfYXJnc19jcmVhdGVfZXJyb3JfbXNnKAor LQkJCQllcnJvcl9tc2csCistCQkJCW15X2FyZ2MsCistCQkJCW15X2FyZywKKy0JCQkJX0dDU0wo Im5vdCBlbm91Z2ggYXJndW1lbnRzIiksCistCQkJCW9uZWxpbmVfdXNhZ2UgICk7CisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9tc2csCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBteV9hcmdjLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg bXlfYXJnLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX0dDU0woIm5vdCBlbm91 Z2ggYXJndW1lbnRzIiksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbmVsaW5l X3VzYWdlICApOworIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYyA9IEdMT0JVU19G QUlMVVJFOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg ICAgICAgICAgICAgICAgICB9CisgCistCQkJcmMgPSBnbG9idXNfbF9hcmdzX3ZhbGlkYXRlKCAm b3B0aW9uc1tpXSwKKy0JCQkJCQkgICAgIG15X2FyZ2MsCistCQkJCQkJICAgICAoKmFyZ3YpLAor LQkJCQkJCSAgICAgJmFyZ2xpc3QsCistCQkJCQkJICAgICBvbmVsaW5lX3VzYWdlLAorLQkJCQkJ CSAgICAgZXJyb3JfbXNnICAgICk7CisrICAgICAgICAgICAgICAgICAgICAgICAgcmMgPSBnbG9i dXNfbF9hcmdzX3ZhbGlkYXRlKCAmb3B0aW9uc1tpXSwKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15X2FyZ2MsCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKmFyZ3YpLAorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmFyZ2xpc3QsCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbmVs aW5lX3VzYWdlLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZXJyb3JfbXNnICAgICk7CisgICAgICAgICAgICAgICAgICAgICB9IC8qIGlmICov CisgCisgICAgICAgICAgICAgICAgICAgICBpZiAocmM9PUdMT0JVU19TVUNDRVNTKQorICAgICAg ICAgICAgICAgICAgICAgeworLQkJCS8qIG9wdGlvbiBzdWNjZXNzZnVsbHkgZGV0ZWN0ZWQ6IGFk ZCBpdCAqLworKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIG9wdGlvbiBzdWNjZXNzZnVsbHkg ZGV0ZWN0ZWQ6IGFkZCBpdCAqLworICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2J1c19sX2Fy Z3NfYWRkX2luc3RhbmNlKCAmZmlmbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJm9wdGlvbnNbaV0sCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ2xpc3QgKTsKK0BAIC00NDMsMTYgKzQ0 MywxNiBAQCBnbG9idXNfYXJnc19zY2FuKAorICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAv KiBzdHJjbXAobXlfYXJnLCphbGlhcykpICovCisgICAgICAgICAgICAgfSAgICAgICAgICAgICAg IC8qIGFsaWFzICovCisgICAgICAgICB9ICAgICAgICAgICAgICAgICAgIC8qIGkgKi8KKy0JaWYg KCFmb3VuZCkKKy0JeworLQkgICAgLyogbXlfYXJnIGNvbnRhaW5zIGFuIHVucmVnaXN0ZXJlZCBv cHRpb24gKi8KKy0JICAgIHJjID0gR0xPQlVTX0ZBSUxVUkU7CistCSAgICBnbG9idXNfbF9hcmdz X2NyZWF0ZV9lcnJvcl9tc2coIGVycm9yX21zZywKKy0JCQkJCSAgICBteV9hcmdjLAorLQkJCQkJ ICAgIG15X2FyZywKKy0JCQkJCSAgICBfR0NTTCgidW5rbm93biBvcHRpb24iKSwKKy0JCQkJCSAg ICBvbmVsaW5lX3VzYWdlICApOworLQl9CisrICAgICAgICBpZiAoIWZvdW5kKQorKyAgICAgICAg eworKyAgICAgICAgICAgIC8qIG15X2FyZyBjb250YWlucyBhbiB1bnJlZ2lzdGVyZWQgb3B0aW9u ICovCisrICAgICAgICAgICAgcmMgPSBHTE9CVVNfRkFJTFVSRTsKKysgICAgICAgICAgICBnbG9i dXNfbF9hcmdzX2NyZWF0ZV9lcnJvcl9tc2coIGVycm9yX21zZywKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15X2FyZ2MsCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBteV9hcmcsCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBfR0NTTCgidW5rbm93biBvcHRpb24iKSwKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uZWxpbmVfdXNhZ2UgICk7Cisr ICAgICAgICB9CisgICAgICAgICBpZiAocmMhPUdMT0JVU19TVUNDRVNTKQorICAgICAgICAgewor ICAgICAgICAgICAgIGRvbmUgPSBHTE9CVVNfVFJVRTsKK0BAIC00NjIsMjAgKzQ2MiwyMCBAQCBn bG9idXNfYXJnc19zY2FuKAorIAorICAgICBpZiAocmM9PUdMT0JVU19TVUNDRVNTKQorICAgICB7 CistCS8qIGlmIHN1Y2Nlc3NmdWwsIHJldHVybiBudW1iZXIgb2Ygb3B0aW9ucyBmb3VuZCAqLwor LQlyYyA9IGdsb2J1c19maWZvX3NpemUoJmZpZm8pOworKyAgICAgICAgLyogaWYgc3VjY2Vzc2Z1 bCwgcmV0dXJuIG51bWJlciBvZiBvcHRpb25zIGZvdW5kICovCisrICAgICAgICByYyA9IGdsb2J1 c19maWZvX3NpemUoJmZpZm8pOworICAgICAgICAgKm9wdGlvbnNfZm91bmQgPSBnbG9idXNfZmlm b19jb252ZXJ0X3RvX2xpc3QoICZmaWZvICk7CisgCistCS8qIG1vZGlmeSBhcmdjL2FyZ3YgKi8K Ky0JaWYgKG15X2FyZ2M+MSkKKy0JeworLQkgICAgZm9yIChpID0gbXlfYXJnYzsgaSA8ICphcmdj OyBpKyspCistCQkoKmFyZ3YpW2ktbXlfYXJnYysxXSA9ICgqYXJndilbaV07CisrICAgICAgICAv KiBtb2RpZnkgYXJnYy9hcmd2ICovCisrICAgICAgICBpZiAobXlfYXJnYz4xKQorKyAgICAgICAg eworKyAgICAgICAgICAgIGZvciAoaSA9IG15X2FyZ2M7IGkgPCAqYXJnYzsgaSsrKQorKyAgICAg ICAgICAgICAgICAoKmFyZ3YpW2ktbXlfYXJnYysxXSA9ICgqYXJndilbaV07CisgCistCSAgICAq YXJnYyAtPSBteV9hcmdjIC0gMTsKKy0JfQorKyAgICAgICAgICAgICphcmdjIC09IG15X2FyZ2Mg LSAxOworKyAgICAgICAgfQorICAgICB9CistICAgIAorKworICAgICBnbG9idXNfZmlmb19kZXN0 cm95KCZmaWZvKTsKKyAgICAgZ2xvYnVzX211dGV4X3VubG9jaygmYXJnc19tdXRleCk7CisgICAg IHJldHVybiByYzsKK0BAIC00OTgsMTggKzQ5OCwxOCBAQCB2b2lkCisgZ2xvYnVzX2FyZ3Nfb3B0 aW9uX2luc3RhbmNlX2xpc3RfZnJlZSggZ2xvYnVzX2xpc3RfdCAqKiAgbGlzdCApCisgeworICAg ICBnbG9idXNfYXJnc19vcHRpb25faW5zdGFuY2VfdCAgKiAgIHQ7CistICAgIAorKworICAgICB3 aGlsZSghZ2xvYnVzX2xpc3RfZW1wdHkoKmxpc3QpKQorICAgICB7CisgICAgICAgICB0ID0gKGds b2J1c19hcmdzX29wdGlvbl9pbnN0YW5jZV90ICopCisgICAgICAgICAgICAgZ2xvYnVzX2xpc3Rf cmVtb3ZlKGxpc3QsICpsaXN0KTsKKy0JZ2xvYnVzX2Fzc2VydCh0KTsKKy0JaWYgKHQtPnZhbHVl cykKKy0JICAgIGZyZWUoIHQtPnZhbHVlcyApOworLQlnbG9idXNfZnJlZSh0KTsKKy0gICAgICAg IAorKyAgICAgICAgZ2xvYnVzX2Fzc2VydCh0KTsKKysgICAgICAgIGlmICh0LT52YWx1ZXMpCisr ICAgICAgICAgICAgZnJlZSggdC0+dmFsdWVzICk7CisrICAgICAgICBnbG9idXNfZnJlZSh0KTsK KysKKyAgICAgfQorLSAgICAKKysKKyAgICAgcmV0dXJuOworIH0KKyAKK0BAIC01NDYsOCArNTQ2 LDggQEAgZ2xvYnVzX3ZhbGlkYXRlX2ludCggY2hhciAqICAgICAgICAgdmFsdWUsCisgCisgICAg IGlmICghcGFybXMpCisgICAgIHsKKy0JKmVycm9yX21zZyA9IF9HQ1NMKGdsb2J1c19sX3ZhbGlk YXRlX2Vycm9yX251bGxfcGFybXMpOworLQlyZXR1cm4gR0xPQlVTX0ZBSUxVUkU7CisrICAgICAg ICAqZXJyb3JfbXNnID0gX0dDU0woZ2xvYnVzX2xfdmFsaWRhdGVfZXJyb3JfbnVsbF9wYXJtcyk7 CisrICAgICAgICByZXR1cm4gR0xPQlVTX0ZBSUxVUkU7CisgICAgIH0KKyAKKyAgICAgZm9ybWF0 ID0gIiVkIjsKK0BAIC01NzksMTggKzU3OSwxOCBAQCBnbG9idXNfdmFsaWRhdGVfaW50KCBjaGFy ICogICAgICAgICB2YWx1ZSwKKyAgICAgaWYgKChyYW5nZS0+cmFuZ2VfdHlwZSAmIEdMT0JVU19W QUxJREFURV9JTlRfTUlOKSAmJgorICAgICAgICAgKHJhbmdlLT5yYW5nZV9taW4gPiB2YWwpKQor ICAgICB7CistCWdsb2J1c19saWJjX3NwcmludGYoZ2xvYnVzX2xfdmFsaWRhdGVfZXJyb3JfYnVm LAorLQkJCSAgICBfR0NTTCgidmFsdWUgaXMgc21hbGxlciB0aGFuIGFsbG93ZWQgbWluPSVkIiks CistCQkJICAgIHJhbmdlLT5yYW5nZV9taW4pOworLQkqZXJyb3JfbXNnID0gZ2xvYnVzX2xfdmFs aWRhdGVfZXJyb3JfYnVmOworKyAgICAgICAgZ2xvYnVzX2xpYmNfc3ByaW50ZihnbG9idXNfbF92 YWxpZGF0ZV9lcnJvcl9idWYsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9HQ1NMKCJ2 YWx1ZSBpcyBzbWFsbGVyIHRoYW4gYWxsb3dlZCBtaW49JWQiKSwKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcmFuZ2UtPnJhbmdlX21pbik7CisrICAgICAgICAqZXJyb3JfbXNnID0gZ2xv YnVzX2xfdmFsaWRhdGVfZXJyb3JfYnVmOworICAgICAgICAgcmV0dXJuIEdMT0JVU19GQUlMVVJF OworICAgICB9CisgICAgIGlmICgocmFuZ2UtPnJhbmdlX3R5cGUgJiBHTE9CVVNfVkFMSURBVEVf SU5UX01BWCkgJiYKKyAgICAgICAgIChyYW5nZS0+cmFuZ2VfbWF4IDwgdmFsKSkKKyAgICAgewor LQlnbG9idXNfbGliY19zcHJpbnRmKGdsb2J1c19sX3ZhbGlkYXRlX2Vycm9yX2J1ZiwKKy0JCQkg ICAgX0dDU0woInZhbHVlIGlzIGxhcmdlciB0aGFuIGFsbG93ZWQgbWF4PSVkIiksCistCQkJICAg IHJhbmdlLT5yYW5nZV9tYXgpOworKyAgICAgICAgZ2xvYnVzX2xpYmNfc3ByaW50ZihnbG9idXNf bF92YWxpZGF0ZV9lcnJvcl9idWYsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9HQ1NM KCJ2YWx1ZSBpcyBsYXJnZXIgdGhhbiBhbGxvd2VkIG1heD0lZCIpLAorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICByYW5nZS0+cmFuZ2VfbWF4KTsKKyAgICAgICAgICplcnJvcl9tc2cgPSBn bG9idXNfbF92YWxpZGF0ZV9lcnJvcl9idWY7CisgICAgICAgICByZXR1cm4gR0xPQlVTX0ZBSUxV UkU7CisgICAgIH0KK0BAIC02MTgsOCArNjE4LDggQEAgZ2xvYnVzX3ZhbGlkYXRlX2ZpbGVuYW1l KCBjaGFyICogICAgdmFsdWUsCisgCisgICAgIGlmICghcGFybXMpCisgICAgIHsKKy0JKmVycm9y X21zZyA9IF9HQ1NMKGdsb2J1c19sX3ZhbGlkYXRlX2Vycm9yX251bGxfcGFybXMpOworLQlyZXR1 cm4gR0xPQlVTX0ZBSUxVUkU7CisrICAgICAgICAqZXJyb3JfbXNnID0gX0dDU0woZ2xvYnVzX2xf dmFsaWRhdGVfZXJyb3JfbnVsbF9wYXJtcyk7CisrICAgICAgICByZXR1cm4gR0xPQlVTX0ZBSUxV UkU7CisgICAgIH0KKyAKKyAgICAgbW9kZSA9ICooKGludCAqKShwYXJtcykpOworQEAgLTYyNyw4 ICs2MjcsOCBAQCBnbG9idXNfdmFsaWRhdGVfZmlsZW5hbWUoIGNoYXIgKiAgICB2YWx1ZSwKKyAg ICAgbXlfZXJybm8gPSBlcnJubzsKKyAgICAgaWYgKGZkIDwgMCkKKyAgICAgeworLQkqZXJyb3Jf bXNnID0gZ2xvYnVzX2xpYmNfc3lzdGVtX2Vycm9yX3N0cmluZyhteV9lcnJubyk7CistCXJldHVy biBHTE9CVVNfRkFJTFVSRTsKKysgICAgICAgICplcnJvcl9tc2cgPSBnbG9idXNfbGliY19zeXN0 ZW1fZXJyb3Jfc3RyaW5nKG15X2Vycm5vKTsKKysgICAgICAgIHJldHVybiBHTE9CVVNfRkFJTFVS RTsKKyAgICAgfQorIAorICAgICBnbG9idXNfbGliY19jbG9zZShmZCk7CitAQCAtNjQwLDU0ICs2 NDAsNTQgQEAgZ2xvYnVzX3ZhbGlkYXRlX2ZpbGVuYW1lKCBjaGFyICogICAgdmFsdWUsCisgLyog LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICBnbG9idXNfYnl0ZXN0cl90b19udW0oKQorIAorLSAg ICBjb252ZXJ0cyBhIHN0cmluZyBzdWNoIGFzIDQwTSwgMjU2SywgMkcgdG8gYW4gZXF1aXZhbGVu dCBvZmZfdC4gIAorKyAgICBjb252ZXJ0cyBhIHN0cmluZyBzdWNoIGFzIDQwTSwgMjU2SywgMkcg dG8gYW4gZXF1aXZhbGVudCBvZmZfdC4KKyAgICAgVmFsaWQgbXVsdGlwbGllcnMgYXJlICBHLGcs IE0sbSwgSyxrLCBCLGIuCistICAgIAorKworICAgICBSZXR1cm5zIDAgb24gc3VjY2Vzcywgbm9u emVybyBvbiBlcnJvci4KKyAKKyAqLworIAorIGludAorLWdsb2J1c19hcmdzX2J5dGVzdHJfdG9f bnVtKCAKKytnbG9idXNfYXJnc19ieXRlc3RyX3RvX251bSgKKyAgICAgY29uc3QgY2hhciAqICAg ICAgICAgICAgICAgICAgICAgICAgc3RyLAorLSAgICBnbG9idXNfb2ZmX3QgKiAgICAgICAgICAg ICAgICAgICAgICBvdXQpIAorLXsgCistICAgIGNoYXIgKiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGVuZCA9IE5VTEw7IAorKyAgICBnbG9idXNfb2ZmX3QgKiAgICAgICAgICAgICAgICAg ICAgICBvdXQpCisreworKyAgICBjaGFyICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl bmQgPSBOVUxMOworICAgICBnbG9idXNfb2ZmX3QgICAgICAgICAgICAgICAgICAgICAgICBzaXpl ID0gMDsKKyAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3VtZWQ7 CisgICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJjOworLSAgICAKKysK KyAgICAgaWYoc3RyID09IE5VTEwgfHwgIShpc2RpZ2l0KCpzdHIpIHx8ICpzdHIgPT0gJy0nKSkK KyAgICAgeworICAgICAgICAgcmV0dXJuIDE7CisgICAgIH0KKy0gICAgCisrCisgICAgIHJjID0g Z2xvYnVzX2xpYmNfc2Nhbl9vZmZfdCgoY2hhciAqKXN0ciwgJnNpemUsICZjb25zdW1lZCk7Cisg ICAgIGVuZCA9IChjaGFyICopc3RyICsgY29uc3VtZWQ7CisgICAgIGlmKHNpemUgJiYgZW5kICYm ICplbmQpCistICAgIHsgCistICAgICAgICBzd2l0Y2goKmVuZCkgCistICAgICAgICB7IAorLSAg ICAgICAgICAgIGNhc2UgJ2cnOiAKKy0gICAgICAgICAgICBjYXNlICdHJzogCistICAgICAgICAg ICAgICAgIHNpemUgKj0gMTAyNDsgCistICAgICAgICAgICAgY2FzZSAnbSc6IAorLSAgICAgICAg ICAgIGNhc2UgJ00nOiAKKy0gICAgICAgICAgICAgICAgc2l6ZSAqPSAxMDI0OyAKKy0gICAgICAg ICAgICBjYXNlICdrJzogCistICAgICAgICAgICAgY2FzZSAnSyc6IAorLSAgICAgICAgICAgICAg ICBzaXplICo9IDEwMjQ7IAorLSAgICAgICAgICAgIGNhc2UgJ2InOiAKKy0gICAgICAgICAgICBj YXNlICdCJzogCistICAgICAgICAgICAgICAgIGJyZWFrOyAKKy0gICAgICAgICAgICAKKy0gICAg ICAgICAgICBkZWZhdWx0OiAKKysgICAgeworKyAgICAgICAgc3dpdGNoKCplbmQpCisrICAgICAg ICB7CisrICAgICAgICAgICAgY2FzZSAnZyc6CisrICAgICAgICAgICAgY2FzZSAnRyc6CisrICAg ICAgICAgICAgICAgIHNpemUgKj0gMTAyNDsKKysgICAgICAgICAgICBjYXNlICdtJzoKKysgICAg ICAgICAgICBjYXNlICdNJzoKKysgICAgICAgICAgICAgICAgc2l6ZSAqPSAxMDI0OworKyAgICAg ICAgICAgIGNhc2UgJ2snOgorKyAgICAgICAgICAgIGNhc2UgJ0snOgorKyAgICAgICAgICAgICAg ICBzaXplICo9IDEwMjQ7CisrICAgICAgICAgICAgY2FzZSAnYic6CisrICAgICAgICAgICAgY2Fz ZSAnQic6CisrICAgICAgICAgICAgICAgIGJyZWFrOworKworKyAgICAgICAgICAgIGRlZmF1bHQ6 CisgICAgICAgICAgICAgICAgIHJldHVybiAxOworLSAgICAgICAgICAgICAgICBicmVhazsgCist ICAgICAgICB9IAorLSAgICB9IAorLSAgICAKKysgICAgICAgICAgICAgICAgYnJlYWs7CisrICAg ICAgICB9CisrICAgIH0KKysKKyAgICAgKm91dCA9IHNpemU7CistICAgIAorKworICAgICByZXR1 cm4gMDsKKy19IAorK30KK2RpZmYgLS1naXQgYS9jb21tb24vc291cmNlL2xpYnJhcnkvZ2xvYnVz X2NhbGxiYWNrLmggYi9jb21tb24vc291cmNlL2xpYnJhcnkvZ2xvYnVzX2NhbGxiYWNrLmgKK2lu ZGV4IGJiNGU1ODA3Ny4uODEwNjY1YzQzIDEwMDY0NAorLS0tIGEvY29tbW9uL3NvdXJjZS9saWJy YXJ5L2dsb2J1c19jYWxsYmFjay5oCisrKysgYi9jb21tb24vc291cmNlL2xpYnJhcnkvZ2xvYnVz X2NhbGxiYWNrLmgKK0BAIC0xMjcsNyArMTI3LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgZ2xvYnVzX2xf Y2FsbGJhY2tfc3BhY2VfYXR0cl9zICogZ2xvYnVzX2NhbGxiYWNrX3NwYWNlX2F0dHJfdDsKKyAg Ki8KKyAKKyAvKioKKy0gKiBAbmFtZSBDb252ZW5pZW5jZSBNYWNyb3MgCisrICogQG5hbWUgQ29u dmVuaWVuY2UgTWFjcm9zCisgICovCisgCisgLyogQHsgKi8KK0BAIC0yODUsMTYgKzI4NSwxNiBA QCB0eXBlZGVmIHN0cnVjdCBnbG9idXNfbF9jYWxsYmFja19zcGFjZV9hdHRyX3MgKiBnbG9idXNf Y2FsbGJhY2tfc3BhY2VfYXR0cl90OworICAqIEBpbmdyb3VwIGdsb2J1c19jYWxsYmFja19hcGkK KyAgKgorICAqIEBkZXRhaWxzCistICogVGhpcyBpcyB0aGUgc2lnbmF0dXJlIG9mIHRoZSBmdW5j dGlvbiByZWdpc3RlcmVkIHdpdGggdGhlIAorKyAqIFRoaXMgaXMgdGhlIHNpZ25hdHVyZSBvZiB0 aGUgZnVuY3Rpb24gcmVnaXN0ZXJlZCB3aXRoIHRoZQorICAqIGdsb2J1c19jYWxsYmFja19yZWdp c3Rlcl8qIGNhbGxzLgorICAqCisgICogSWYgdGhpcyBpcyBhIHBlcmlvZGljIGNhbGxiYWNrLCBp dCBpcyBndWFyYW50ZWVkIHRoYXQgdGhlIGNhbGwgY2FuTk9UCisgICogYmUgcmVlbnRlcmVkIHVu bGVzcyBnbG9idXNfdGhyZWFkX2Jsb2NraW5nX3NwYWNlX3dpbGxfYmxvY2soKSBpcyBjYWxsZWQK KyAgKiAoZXhwbGljaXRseSwgb3IgaW1wbGljaXRseSB2aWEgZ2xvYnVzX2NvbmRfd2FpdCgpKS4g IEFsc28sIGlmCistICogZ2xvYnVzX2NhbGxiYWNrX3VucmVnaXN0ZXIoKSBpcyBjYWxsZWQgdG8g Y2FuY2VsIHRoaXMgcGVyaW9kaWMgZnJvbSB3aXRoaW4gCisrICogZ2xvYnVzX2NhbGxiYWNrX3Vu cmVnaXN0ZXIoKSBpcyBjYWxsZWQgdG8gY2FuY2VsIHRoaXMgcGVyaW9kaWMgZnJvbSB3aXRoaW4K KyAgKiB0aGlzIGNhbGxiYWNrLCBpdCBpcyBndWFyYW50ZWVkIHRoYXQgdGhlIGNhbGxiYWNrIHdp bGwgTk9UIGJlIHJlcXVldWVkIGFnYWluCistICogCistICogSWYgdGhlIGZ1bmN0aW9uIHdpbGwg YmxvY2sgYXQgYWxsLCB0aGUgdXNlciBzaG91bGQgY2FsbCAKKysgKgorKyAqIElmIHRoZSBmdW5j dGlvbiB3aWxsIGJsb2NrIGF0IGFsbCwgdGhlIHVzZXIgc2hvdWxkIGNhbGwKKyAgKiBnbG9idXNf Y2FsbGJhY2tfZ2V0X3RpbWVvdXQoKSB0byBzZWUgaG93IGxvbmcgdGhpcyBmdW5jdGlvbiBjYW4g c2FmZWx5IGJsb2NrCisgICogb3IgY2FsbCBnbG9idXNfdGhyZWFkX2Jsb2NraW5nX3NwYWNlX3dp bGxfYmxvY2soKQorICAqCitAQCAtMzI0LDcgKzMyNCw3IEBAIHZvaWQKKyAgKgorICAqIEBkZXRh aWxzCisgICogVGhpcyBmdW5jdGlvbiByZWdpc3RlcnMgdGhlIGNhbGxiYWNrX2Z1bmMgdG8gc3Rh cnQgc29tZSBkZWxheV90aW1lIGZyb20KKy0gKiBub3cuICAKKysgKiBub3cuCisgICoKKyAgKiBA cGFyYW0gY2FsbGJhY2tfaGFuZGxlCisgICogICAgICAgIFN0b3JhZ2UgZm9yIGEgaGFuZGxlLiAg VGhpcyBtYXkgYmUgTlVMTC4gIElmIGl0IGlzIE5PVCBOVUxMLCB5b3UKK0BAIC0zNDcsNyArMzQ3 LDcgQEAgdm9pZAorICAqICAgICAgICAtIEdMT0JVU19DQUxMQkFDS19FUlJPUl9JTlZBTElEX0FS R1VNRU5UCisgICogICAgICAgIC0gR0xPQlVTX0NBTExCQUNLX0VSUk9SX01FTU9SWV9BTExPQwor ICAqICAgICAgICAtIEdMT0JVU19TVUNDRVNTCistICogCisrICoKKyAgKiBAc2VlIGdsb2J1c19j YWxsYmFja19mdW5jX3QKKyAgKiBAc2VlIGdsb2J1c19jYWxsYmFja19zcGFjZXMKKyAgKi8KK0BA IC0zNzEsNyArMzcxLDcgQEAgZ2xvYnVzX2NhbGxiYWNrX3NwYWNlX3JlZ2lzdGVyX29uZXNob3Qo CisgICogQGluZ3JvdXAgZ2xvYnVzX2NhbGxiYWNrX2FwaQorICAqCisgICogQGRldGFpbHMKKy0g KiBUaGlzIGZ1bmN0aW9uIHJlZ2lzdGVycyBhIHBlcmlvZGljIGNhbGxiYWNrX2Z1bmMgdG8gc3Rh cnQgc29tZSBkZWxheV90aW1lIAorKyAqIFRoaXMgZnVuY3Rpb24gcmVnaXN0ZXJzIGEgcGVyaW9k aWMgY2FsbGJhY2tfZnVuYyB0byBzdGFydCBzb21lIGRlbGF5X3RpbWUKKyAgKiBhbmQgcnVuIGV2 ZXJ5IHBlcmlvZCBmcm9tIHRoZW4uCisgICoKKyAgKiBAcGFyYW0gY2FsbGJhY2tfaGFuZGxlCitA QCAtMzk4LDcgKzM5OCw3IEBAIGdsb2J1c19jYWxsYmFja19zcGFjZV9yZWdpc3Rlcl9vbmVzaG90 KAorICAqICAgICAgICAtIEdMT0JVU19DQUxMQkFDS19FUlJPUl9JTlZBTElEX0FSR1VNRU5UCisg ICogICAgICAgIC0gR0xPQlVTX0NBTExCQUNLX0VSUk9SX01FTU9SWV9BTExPQworICAqICAgICAg ICAtIEdMT0JVU19TVUNDRVNTCistICogCisrICoKKyAgKiBAc2VlICNnbG9idXNfY2FsbGJhY2tf dW5yZWdpc3RlcigpCisgICogQHNlZSAjZ2xvYnVzX2NhbGxiYWNrX2Z1bmNfdAorICAqIEBzZWUg QGxpbmsgZ2xvYnVzX2NhbGxiYWNrX3NwYWNlcyBAZW5kbGluaworQEAgLTQ1Miw3ICs0NTIsNyBA QCBnbG9idXNfY2FsbGJhY2tfc3BhY2VfcmVnaXN0ZXJfcGVyaW9kaWMoCisgICogICAgICAgIC0g R0xPQlVTX0NBTExCQUNLX0VSUk9SX0lOVkFMSURfQ0FMTEJBQ0tfSEFORExFCisgICogICAgICAg IC0gR0xPQlVTX0NBTExCQUNLX0VSUk9SX0FMUkVBRFlfQ0FOQ0VMRUQKKyAgKiAgICAgICAgLSBH TE9CVVNfU1VDQ0VTUworLSAqIAorKyAqCisgICogQHNlZSAjZ2xvYnVzX2NhbGxiYWNrX3NwYWNl X3JlZ2lzdGVyX3BlcmlvZGljKCkKKyAgKiBAc2VlICNnbG9idXNfY2FsbGJhY2tfZnVuY190Cisg ICovCitAQCAtNDg3LDcgKzQ4Nyw3IEBAIGdsb2J1c19jYWxsYmFja191bnJlZ2lzdGVyKAorICAq ICAgICAgICAtIEdMT0JVU19DQUxMQkFDS19FUlJPUl9JTlZBTElEX0NBTExCQUNLX0hBTkRMRQor ICAqICAgICAgICAtIEdMT0JVU19DQUxMQkFDS19FUlJPUl9BTFJFQURZX0NBTkNFTEVECisgICog ICAgICAgIC0gR0xPQlVTX1NVQ0NFU1MKKy0gKiAKKysgKgorICAqIEBzZWUgZ2xvYnVzX2NhbGxi YWNrX3NwYWNlX3JlZ2lzdGVyX3BlcmlvZGljKCkKKyAgKi8KKyBnbG9idXNfcmVzdWx0X3QKK0BA IC01MDgsNyArNTA4LDcgQEAgZ2xvYnVzX2NhbGxiYWNrX2FkanVzdF9vbmVzaG90KAorICAqIHVu dGlsIGFub3RoZXIgdGltZSBieSBwYXNzaW5nIGEgcGVyaW9kIG9mIE5VTEwuICBUaGUgY2FsbGJh Y2sgY2FuIGxhdGVyCisgICogYmUgcmVzdW1lZCBieSBwYXNzaW5nIGluIGEgbmV3IHBlcmlvZC4K KyAgKgorLSAqIE5vdGUgdGhhdCB0aGUgY2FsbGJhY2sgd2lsbCBub3QgYmUgZmlyZWQgc29vbmVy IHRoYW4gJ25ld19wZXJpb2QnIGZyb20gbm93LiAKKysgKiBOb3RlIHRoYXQgdGhlIGNhbGxiYWNr IHdpbGwgbm90IGJlIGZpcmVkIHNvb25lciB0aGFuICduZXdfcGVyaW9kJyBmcm9tIG5vdy4KKyAg KiBBICdzdXNwZW5kZWQnIGNhbGxiYWNrIG11c3Qgc3RpbGwgYmUgdW5yZWdpc3RlcmVkIHRvIGZy ZWUgaXRzIHJlc291cmNlcy4KKyAgKgorICAqIEBwYXJhbSBjYWxsYmFja19oYW5kbGUKK0BAIC01 MjQsNyArNTI0LDcgQEAgZ2xvYnVzX2NhbGxiYWNrX2FkanVzdF9vbmVzaG90KAorICAqICAgICAg ICAtIEdMT0JVU19DQUxMQkFDS19FUlJPUl9JTlZBTElEX0NBTExCQUNLX0hBTkRMRQorICAqICAg ICAgICAtIEdMT0JVU19DQUxMQkFDS19FUlJPUl9BTFJFQURZX0NBTkNFTEVECisgICogICAgICAg IC0gR0xPQlVTX1NVQ0NFU1MKKy0gKiAKKysgKgorICAqIEBzZWUgZ2xvYnVzX2NhbGxiYWNrX3Nw YWNlX3JlZ2lzdGVyX3BlcmlvZGljKCkKKyAgKi8KKyBnbG9idXNfcmVzdWx0X3QKK0BAIC01NDMs MjUgKzU0MywyNSBAQCBnbG9idXNfY2FsbGJhY2tfYWRqdXN0X3BlcmlvZCgKKyAgKiBAaW5ncm91 cCBnbG9idXNfY2FsbGJhY2tfYXBpCisgICoKKyAgKiBAZGV0YWlscworLSAqIFRoaXMgZnVuY3Rp b24gaXMgdXNlZCB0byBwb2xsIGZvciByZWdpc3RlcmVkIGNhbGxiYWNrcy4gIAorKyAqIFRoaXMg ZnVuY3Rpb24gaXMgdXNlZCB0byBwb2xsIGZvciByZWdpc3RlcmVkIGNhbGxiYWNrcy4KKyAgKgor ICAqIEZvciBub24tdGhyZWFkZWQgYnVpbGRzLCBjYWxsYmFja3MgYXJlIG5vdC9jYW4gbm90IGJl IGRlbGl2ZXJlZCB1bmxlc3MgdGhpcworLSAqIGlzIGNhbGxlZC4gIEFueSBjYWxsIHRvIHRoaXMg Y2FuIGNhdXNlIGNhbGxiYWNrcyByZWdpc3RlcmVkIHdpdGggdGhlIAorLSAqICdnbG9iYWwnIHNw YWNlIHRvIGJlIGZpcmVkLiAgV2hlcmVhcyBjYWxsYmFja3MgcmVnaXN0ZXJlZCB3aXRoIGEgdXNl cidzIAorKyAqIGlzIGNhbGxlZC4gIEFueSBjYWxsIHRvIHRoaXMgY2FuIGNhdXNlIGNhbGxiYWNr cyByZWdpc3RlcmVkIHdpdGggdGhlCisrICogJ2dsb2JhbCcgc3BhY2UgdG8gYmUgZmlyZWQuICBX aGVyZWFzIGNhbGxiYWNrcyByZWdpc3RlcmVkIHdpdGggYSB1c2VyJ3MKKyAgKiBzcGFjZSB3aWxs IG9ubHkgYmUgZGVsaXZlcmVkIHdoZW4gdGhpcyBpcyBjYWxsZWQgd2l0aCB0aGF0IHNwYWNlLgor ICAqCisgICogRm9yIHRocmVhZGVkIGJ1aWxkcywgdGhpcyBvbmx5IG5lZWRzIHRvIGJlIGNhbGxl ZCB0byBwb2xsIHVzZXIgc3BhY2VzIHdpdGgKKyAgKiBiZWhhdmlvciA9PSBHTE9CVVNfQ0FMTEJB Q0tfU1BBQ0VfQkVIQVZJT1JfU0lOR0xFLiAgVGhlICdnbG9iYWwnIHNwYWNlCistICogYW5kIG90 aGVyIHVzZXIgc3BhY2VzIGFyZSBjb25zdGFudGx5IHBvbGxlZCBpbiBhIHNlcGFyYXRlIHRocmVh ZC4gIAorKyAqIGFuZCBvdGhlciB1c2VyIHNwYWNlcyBhcmUgY29uc3RhbnRseSBwb2xsZWQgaW4g YSBzZXBhcmF0ZSB0aHJlYWQuCisgICogKElmIGl0IGlzIGNhbGxlZCBpbiBhIHRocmVhZGVkIGJ1 aWxkIGZvciB0aGVzZSBzcGFjZXMsIGl0IHdpbGwganVzdCB5aWVsZAorICAqIGl0cyB0aHJlYWQp CisgICoKKyAgKiBJbiBnZW5lcmFsLCB5b3UgbmV2ZXIgbmVlZCB0byBjYWxsIHRoaXMgZnVuY3Rp b24gZGlyZWN0bHkuICBJdCBpcyBjYWxsZWQKKyAgKiAod2hlbiBuZWNlc3NhcnkpIGJ5IGdsb2J1 c19jb25kX3dhaXQoKS4gIFRoZSBvbmx5IGNhc2UgaW4gd2hpY2ggYSB1c2VyIG1heQorLSAqIHdp c2ggdG8gY2FsbCB0aGlzIGV4cGxpY2l0bHkgaXMgaWYgdGhlIGFwcGxpY2F0aW9uIGhhcyBubyBh c3BpcmF0aW9ucyBvZiAKKysgKiB3aXNoIHRvIGNhbGwgdGhpcyBleHBsaWNpdGx5IGlzIGlmIHRo ZSBhcHBsaWNhdGlvbiBoYXMgbm8gYXNwaXJhdGlvbnMgb2YKKyAgKiBldmVyIGJlaW5nIGJ1aWx0 IHRocmVhZGVkLgorICAqCistICogVGhpcyBmdW5jdGlvbiAod2hlbiBub3QgeWllbGRpbmcpIHdp bGwgYmxvY2sgdXAgdG8gdGltZXN0b3Agb3IgdW50aWwgCisrICogVGhpcyBmdW5jdGlvbiAod2hl biBub3QgeWllbGRpbmcpIHdpbGwgYmxvY2sgdXAgdG8gdGltZXN0b3Agb3IgdW50aWwKKyAgKiBn bG9idXNfY2FsbGJhY2tfc2lnbmFsX3BvbGwoKSBpcyBjYWxsZWQgYnkgb25lIG9mIHRoZSBmaXJl ZCBjYWxsYmFja3MuICBJdAorICAqIHdpbGwgYWx3YXlzIHRyeSBhbmQga2ljayBvdXQgcmVhZHkg Y2FsbGJhY2tzLCByZWdhcmRsZXNzIG9mIHRoZSB0aW1lc3RvcC4KKyAgKgorQEAgLTU5MSwxMiAr NTkxLDEyIEBAIGdsb2J1c19jYWxsYmFja19zcGFjZV9wb2xsKAorICAqCisgICogSW4gZ2VuZXJh bCwgeW91IG5ldmVyIG5lZWQgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uIGRpcmVjdGx5LiAgSXQgaXMg Y2FsbGVkCisgICogKHdoZW4gbmVjZXNzYXJ5KSBieSBnbG9idXNfY29uZF9zaWduYWwoKSBvciBn bG9idXNfY29uZF9icm9hZGNhc3QuICBUaGUgb25seQorLSAqIGNhc2UgaW4gd2hpY2ggYSB1c2Vy IG1heSB3aXNoIHRvIGNhbGwgdGhpcyBleHBsaWNpdGx5IGlzIGlmIHRoZSBhcHBsaWNhdGlvbiAK KysgKiBjYXNlIGluIHdoaWNoIGEgdXNlciBtYXkgd2lzaCB0byBjYWxsIHRoaXMgZXhwbGljaXRs eSBpcyBpZiB0aGUgYXBwbGljYXRpb24KKyAgKiBoYXMgbm8gYXNwaXJhdGlvbnMgb2YgZXZlciBi ZWluZyBidWlsdCB0aHJlYWRlZC4KKyAgKgorICAqIEByZXR1cm4KKyAgKiAgICAgICAgLSB2b2lk CistICogCisrICoKKyAgKiBAc2VlIGdsb2J1c19jYWxsYmFja19zcGFjZV9wb2xsKCkKKyAgKi8K KyB2b2lkCitAQCAtNjE1LDggKzYxNSw4IEBAIGdsb2J1c19jYWxsYmFja19zaWduYWxfcG9sbCgp OworICAqIEBkZXRhaWxzCisgICogVGhpcyBmdW5jdGlvbiByZXRyaWV2ZXMgdGhlIHJlbWFpbmlu ZyB0aW1lIGEgY2FsbGJhY2sgaXMgYWxsb3dlZCB0byBydW4uCisgICogSWYgYSBjYWxsYmFjayBo YXMgYWxyZWFkeSB0aW1lZCBvdXQsIHRpbWVfbGVmdCB3aWxsIGJlIHNldCB0byB6ZXJvIGFuZAor LSAqIEdMT0JVU19UUlVFIHJldHVybmVkLiAgVGhpcyBmdW5jdGlvbiBpcyBpbnRlbmRlZCB0byBi ZSBjYWxsZWQgd2l0aGluIGEgCistICogY2FsbGJhY2sncyBzdGFjaywgYnV0IGlzIGhhcm1sZXNz IHRvIGNhbGwgYW55d2hlcmUgKHdpbGwgcmV0dXJuIAorKyAqIEdMT0JVU19UUlVFIHJldHVybmVk LiAgVGhpcyBmdW5jdGlvbiBpcyBpbnRlbmRlZCB0byBiZSBjYWxsZWQgd2l0aGluIGEKKysgKiBj YWxsYmFjaydzIHN0YWNrLCBidXQgaXMgaGFybWxlc3MgdG8gY2FsbCBhbnl3aGVyZSAod2lsbCBy ZXR1cm4KKyAgKiBHTE9CVVNfRkFMU0UgYW5kIGFuIGluZmluaXRlIHRpbWVfbGVmdCkKKyAgKgor ICAqIEBwYXJhbSB0aW1lX2xlZnQKK0BAIC02NTEsOCArNjUxLDggQEAgZ2xvYnVzX2NhbGxiYWNr X2hhc190aW1lX2V4cGlyZWQoKTsKKyAgKiBAaW5ncm91cCBnbG9idXNfY2FsbGJhY2tfYXBpCisg ICoKKyAgKiBAZGV0YWlscworLSAqIElmIHRoZSBjYWxsYmFjayBpcyBhIG9uZXNob3QsIHRoaXMg bWVyZWx5IG1lYW5zIHRoZSBjYWxsYmFjayBjYWxsZWQgCistICogZ2xvYnVzX3RocmVhZF9ibG9j a2luZ19zcGFjZV93aWxsX2Jsb2NrIChvciBnbG9idXNfY29uZF93YWl0KCkgYXQgCisrICogSWYg dGhlIGNhbGxiYWNrIGlzIGEgb25lc2hvdCwgdGhpcyBtZXJlbHkgbWVhbnMgdGhlIGNhbGxiYWNr IGNhbGxlZAorKyAqIGdsb2J1c190aHJlYWRfYmxvY2tpbmdfc3BhY2Vfd2lsbF9ibG9jayAob3Ig Z2xvYnVzX2NvbmRfd2FpdCgpIGF0CisgICogc29tZSBwb2ludC4KKyAgKgorICAqIEZvciBhIHBl cmlvZGljLCBpdCBzaWduaWZpZXMgdGhlIHNhbWUgYW5kIGFsc28gdGhhdCB0aGUgcGVyaW9kaWMg aGFzIGJlZW4KK0BAIC02ODIsNyArNjgyLDcgQEAgZ2xvYnVzX2NhbGxiYWNrX3dhc19yZXN0YXJ0 ZWQoKTsKKyAgKiBAZGV0YWlscworICAqIFRoZSAnZ2xvYmFsJyBzcGFjZSBoYW5kbGUuCisgICoK Ky0gKiBUaGlzIGlzIHRoZSBkZWZhdWx0IHNwYWNlIGhhbmRsZSBpbXBsaWVkIGlmIG5vIHNwYWNl cyBhcmUgCisrICogVGhpcyBpcyB0aGUgZGVmYXVsdCBzcGFjZSBoYW5kbGUgaW1wbGllZCBpZiBu byBzcGFjZXMgYXJlCisgICogZXhwbGljaXRseSBjcmVhdGVkLgorICAqLworICNkZWZpbmUgR0xP QlVTX0NBTExCQUNLX0dMT0JBTF9TUEFDRSAtMgorQEAgLTY5NSwyNSArNjk1LDI1IEBAIGdsb2J1 c19jYWxsYmFja193YXNfcmVzdGFydGVkKCk7CisgICogSW4gYSBub24tdGhyZWFkZWQgYnVpbGQg YWxsIHNwYWNlcyBleGhpYml0IGEKKyAgKiBiZWhhdmlvciA9PSBfQkVIQVZJT1JfU0lOR0xFLiAg U2V0dGluZyBhIHNwZWNpZmljIGJlaGF2aW9yIGluIHRoaXMgY2FzZQorICAqIGlzIGlnbm9yZWQu CistICogCisrICoKKyAgKiBJbiBhIHRocmVhZGVkIGJ1aWxkLCBfQkVIQVZJT1JfU0lOR0xFIHJl dGFpbnMgYWxsIHRoZSBydWxlcyBhbmQKKyAgKiBiZWhhdmlvcnMgb2YgYSBub24tdGhyZWFkZWQg YnVpbGQgd2hpbGUgX0JFSEFWSU9SX1RIUkVBREVEIG1ha2VzIHRoZQorICAqIHNwYWNlIGFjdCBh cyB0aGUgZ2xvYmFsIHNwYWNlLgorICAqCistICogU2V0dGluZyBhIHNwYWNlJ3MgYmVoYXZpb3Ig dG8gX0JFSEFWSU9SX1NJTkdMRSBndWFyYW50ZWVzIHRoYXQgdGhlIAorKyAqIFNldHRpbmcgYSBz cGFjZSdzIGJlaGF2aW9yIHRvIF9CRUhBVklPUl9TSU5HTEUgZ3VhcmFudGVlcyB0aGF0IHRoZQor ICAqIHBvbGwgcHJvdGVjdGlvbiB3aWxsIGFsd2F5cyBiZSB0aGVyZSBhbmQgYWxsIGNhbGxiYWNr cyBhcmUgc2VyaWFsaXplZCBhbmQKKyAgKiBvbmx5IGtpY2tlZCBvdXQgd2hlbiBwb2xsZWQgZm9y LiAgSW4gYSB0aHJlYWRlZCBidWlsZCwgaXQgaXMgc3RpbGwgbmVjZXNzYXJ5CisgICogdG8gcG9s bCBmb3IgY2FsbGJhY2tzIGluIGEgX0JFSEFWSU9SX1NJTkdMRSBzcGFjZS4gKGdsb2J1c19jb25k X3dhaXQoKQorICAqIHdpbGwgdGFrZSBjYXJlIG9mIHRoaXMgZm9yIHlvdSBhbHNvKQorICAqCist ICogU2V0dGluZyBhIHNwYWNlJ3MgYmVoYXZpb3IgdG8gX0JFSEFWSU9SX1NFUklBTElaRUQgZ3Vh cmFudGVlcyB0aGF0IHRoZSAKKysgKiBTZXR0aW5nIGEgc3BhY2UncyBiZWhhdmlvciB0byBfQkVI QVZJT1JfU0VSSUFMSVpFRCBndWFyYW50ZWVzIHRoYXQgdGhlCisgICogcG9sbCBwcm90ZWN0aW9u IHdpbGwgYWx3YXlzIGJlIHRoZXJlIGFuZCBhbGwgY2FsbGJhY2tzIGFyZSBzZXJpYWxpemVkLiAg SW4gYQorLSAqIHRocmVhZGVkIGJ1aWxkLCBpdCBpcyBOT1QgbmVjZXNzYXJ5IHRvIHBvbGwgZm9y IGNhbGxiYWNrcyBpbiBhIAorKyAqIHRocmVhZGVkIGJ1aWxkLCBpdCBpcyBOT1QgbmVjZXNzYXJ5 IHRvIHBvbGwgZm9yIGNhbGxiYWNrcyBpbiBhCisgICogX0JFSEFWSU9SX1NFUklBTElaRUQgc3Bh Y2UuICBDYWxsYmFja3MgaW4gdGhpcyBzcGFjZSB3aWxsIGJlIGRlbGl2ZXJlZCBhcworICAqIHNv b24gYXMgcG9zc2libGUsIGJ1dCBvbmx5IG9uZSBvdXRzdGFuZGluZyAoYW5kIHVuYmxvY2tlZCkg Y2FsbGJhY2sgd2lsbCBiZQorICAqIGFsbG93ZWQgYXQgYW55IHRpbWUuCisgICoKKy0gKiBTZXR0 aW5nIGEgc3BhY2UncyBiZWhhdmlvciB0byBfQkVIQVZJT1JfVEhSRUFERUQgYWxsb3dzIHRoZSB1 c2VyIHRvIAorKyAqIFNldHRpbmcgYSBzcGFjZSdzIGJlaGF2aW9yIHRvIF9CRUhBVklPUl9USFJF QURFRCBhbGxvd3MgdGhlIHVzZXIgdG8KKyAgKiBoYXZlIHRoZSBwb2xsIHByb3RlY3Rpb24gcHJv dmlkZWQgYnkgc3BhY2VzIHdoZW4gYnVpbHQgbm9uLXRocmVhZGVkLCB5ZXQsCisgICogYmUgZnVs bHkgdGhyZWFkZWQgd2hlbiBidWlsdCB0aHJlYWRlZCAod2hlcmUgcG9sbCBwcm90ZWN0aW9uIGlz IG5vdCBuZWVkZWQpCisgICovCitAQCAtNzIzLDcgKzcyMyw3IEBAIHR5cGVkZWYgZW51bQorICAg ICAgKiBhbmQgc2luZ2xlIHRocmVhZGVkIGJlaGF2aW9yIChjYWxsYmFja3MgbmVlZCB0byBiZSBl eHBsaWNpdGx5IHBvbGxlZCBmb3IKKyAgICAgICovCisgICAgIEdMT0JVU19DQUxMQkFDS19TUEFD RV9CRUhBVklPUl9TSU5HTEUsCistICAgIC8qKiBJbmRpY2F0ZXMgdGhhdCB5b3Ugd2FudCBwb2xs IHByb3RlY3Rpb24gYW5kIGFsbCBjYWxsYmFja3MgdG8gYmUgCisrICAgIC8qKiBJbmRpY2F0ZXMg dGhhdCB5b3Ugd2FudCBwb2xsIHByb3RlY3Rpb24gYW5kIGFsbCBjYWxsYmFja3MgdG8gYmUKKyAg ICAgICogc2VyaWFsaXplZCAoYnV0IHRoZXkgZG8gbm90IG5lZWQgdG8gYmUgcG9sbGVkIGZvciBp biBhIHRocmVhZGVkIGJ1aWxkKQorICAgICAgKi8KKyAgICAgR0xPQlVTX0NBTExCQUNLX1NQQUNF X0JFSEFWSU9SX1NFUklBTElaRUQsCitAQCAtNzg4LDIwICs3ODgsMjAgQEAgZ2xvYnVzX2NhbGxi YWNrX3NwYWNlX3JlZmVyZW5jZSgKKyAgKgorICAqIEBkZXRhaWxzCisgICogVGhpcyB3aWxsIGRl c3Ryb3kgYSByZWZlcmVuY2UgdG8gYSBwcmV2aW91c2x5IGluaXRpYWxpemVkIHNwYWNlLiAgU3Bh Y2Ugd2lsbAorLSAqIG5vdCBhY3R1YWxseSBiZSBkZXN0cm95ZWQgdW50aWwgYWxsIGNhbGxiYWNr cyByZWdpc3RlcmVkIHdpdGggdGhpcyBzcGFjZSAKKysgKiBub3QgYWN0dWFsbHkgYmUgZGVzdHJv eWVkIHVudGlsIGFsbCBjYWxsYmFja3MgcmVnaXN0ZXJlZCB3aXRoIHRoaXMgc3BhY2UKKyAgKiBo YXZlIGJlZW4gcnVuIGFuZCB1bnJlZ2lzdGVyZWQgKGlmIHRoZSB1c2VyIGhhcyBhIGhhbmRsZSB0 byB0aGF0IGNhbGxiYWNrKQorICAqIEFORCBhbGwgcmVmZXJlbmNlcyAoZnJvbSBnbG9idXNfY2Fs bGJhY2tfc3BhY2VfcmVmZXJlbmNlKCkpIGhhdmUgYmVlbgorICAqIGRlc3Ryb3llZC4KKyAgKgor ICAqIEBwYXJhbSBzcGFjZQorLSAqICAgICAgICBzcGFjZSB0byBkZXN0cm95LCBwcmV2aW91c2x5 IGluaXRpYWxpemVkIGJ5IAorLSAqICAgICAgICBnbG9idXNfY2FsbGJhY2tfc3BhY2VfaW5pdCgp IG9yIHJlZmVyZW5jZWQgd2l0aCAKKysgKiAgICAgICAgc3BhY2UgdG8gZGVzdHJveSwgcHJldmlv dXNseSBpbml0aWFsaXplZCBieQorKyAqICAgICAgICBnbG9idXNfY2FsbGJhY2tfc3BhY2VfaW5p dCgpIG9yIHJlZmVyZW5jZWQgd2l0aAorICAqICAgICAgICBnbG9idXNfY2FsbGJhY2tfc3BhY2Vf cmVmZXJlbmNlKCkKKyAgKgorICAqIEByZXR1cm4KKyAgKiAgICAgICAgLSBHTE9CVVNfQ0FMTEJB Q0tfRVJST1JfSU5WQUxJRF9TUEFDRQorICAqICAgICAgICAtIEdMT0JVU19TVUNDRVNTCistICog CisrICoKKyAgKiBAc2VlIGdsb2J1c19jYWxsYmFja19zcGFjZV9pbml0KCkKKyAgKiBAc2VlIGds b2J1c19jYWxsYmFja19zcGFjZV9yZWZlcmVuY2UoKQorICAqLworQEAgLTgzNSwxMyArODM1LDEz IEBAIGdsb2J1c19jYWxsYmFja19zcGFjZV9hdHRyX2luaXQoCisgICogQGluZ3JvdXAgZ2xvYnVz X2NhbGxiYWNrX3NwYWNlcworICAqIEBkZXRhaWxzCisgICogQHBhcmFtIGF0dHIKKy0gKiAgICAg ICAgYXR0ciB0byBkZXN0cm95LCBwcmV2aW91c2x5IGluaXRpYWxpemVkIHdpdGggCisrICogICAg ICAgIGF0dHIgdG8gZGVzdHJveSwgcHJldmlvdXNseSBpbml0aWFsaXplZCB3aXRoCisgICogICAg ICAgIGdsb2J1c19jYWxsYmFja19zcGFjZV9hdHRyX2luaXQoKQorICAqCisgICogQHJldHVybgor ICAqICAgICAgICAtIEdMT0JVU19DQUxMQkFDS19FUlJPUl9JTlZBTElEX0FSR1VNRU5UIG9uIE5V TEwgYXR0cgorICAqICAgICAgICAtIEdMT0JVU19TVUNDRVNTCistICogCisrICoKKyAgKiBAc2Vl IGdsb2J1c19jYWxsYmFja19zcGFjZV9hdHRyX2luaXQoKQorICAqLworIGdsb2J1c19yZXN1bHRf dAorQEAgLTg2MSw3ICs4NjEsNyBAQCBnbG9idXNfY2FsbGJhY2tfc3BhY2VfYXR0cl9kZXN0cm95 KAorICAqIEByZXR1cm4KKyAgKiAgICAgICAgLSBHTE9CVVNfQ0FMTEJBQ0tfRVJST1JfSU5WQUxJ RF9BUkdVTUVOVAorICAqICAgICAgICAtIEdMT0JVU19TVUNDRVNTCistICogCisrICoKKyAgKiBA c2VlIGdsb2J1c19jYWxsYmFja19zcGFjZV9iZWhhdmlvcl90CisgICovCisgZ2xvYnVzX3Jlc3Vs dF90CitAQCAtOTI1LDcgKzkyNSw3IEBAIGdsb2J1c19jYWxsYmFja19zcGFjZV9nZXRfZGVwdGgo CisgICAgIGdsb2J1c19jYWxsYmFja19zcGFjZV90ICAgICAgICAgICAgIHNwYWNlKTsKKyAKKyAv KioKKy0gKiBAYnJpZWYgU2VlIGlmIHRoZSBzcGVjaWZpZWQgc3BhY2UgaXMgYSBzaW5nbGUgdGhy ZWFkZWQgYmVoYXZpb3Igc3BhY2UgCisrICogQGJyaWVmIFNlZSBpZiB0aGUgc3BlY2lmaWVkIHNw YWNlIGlzIGEgc2luZ2xlIHRocmVhZGVkIGJlaGF2aW9yIHNwYWNlCisgICogQGluZ3JvdXAgZ2xv YnVzX2NhbGxiYWNrX3NwYWNlcworICAqCisgICogQHBhcmFtIHNwYWNlCitAQCAtOTQ5LDcgKzk0 OSw3IEBAIGdsb2J1c19jYWxsYmFja19zcGFjZV9pc19zaW5nbGUoCisgLyoqCisgICogQGhpZGVp bml0aWFsaXplcgorICAqIEBpbmdyb3VwIGdsb2J1c19jYWxsYmFja19zaWduYWwKKy0gKiAKKysg KgorICAqIEBkZXRhaWxzCisgICogVXNlIHRoaXMgdG8gdHJhcCBpbnRlcnJ1cHRzIChTSUdJTlQg b24gdW5peCkuICBJbiB0aGUgZnV0dXJlLCB0aGlzIHdpbGwKKyAgKiBhbHNvIG1hcCB0byBoYW5k bGUgY3RybC1DIG9uIHdpbjMyLgorQEAgLTk2Myw3ICs5NjMsNyBAQCBnbG9idXNfY2FsbGJhY2tf c3BhY2VfaXNfc2luZ2xlKAorIC8qKgorICAqIEBicmllZiBGaXJlIGEgY2FsbGJhY2sgd2hlbiB0 aGUgc3BlY2lmaWVkIHNpZ25hbCBpcyByZWNlaXZlZC4KKyAgKiBAaW5ncm91cCBnbG9idXNfY2Fs bGJhY2tfc2lnbmFsCistICogCisrICoKKyAgKiBAZGV0YWlscworICAqIE5vdGUgdGhhdCB0aGVy ZSBpcyBhIHRpbnkgZGVsYXkgYmV0d2VlbiB0aGUgdGltZSB0aGlzIGNhbGwgcmV0dXJucworICAq IGFuZCB0aGUgc2lnbmFsIGlzIGFjdHVhbGx5IGhhbmRsZWQgYnkgdGhpcyBsaWJyYXJ5LiAgSXQg aXMgbGlrZWx5IHRoYXQsIGlmCitAQCAtMTAwNiw3ICsxMDA2LDcgQEAgZ2xvYnVzX2NhbGxiYWNr X3NwYWNlX3JlZ2lzdGVyX3NpZ25hbF9oYW5kbGVyKAorIC8qKgorICAqIEBicmllZiBVbnJlZ2lz dGVyIGEgc2lnbmFsIGhhbmRsaW5nIGNhbGxiYWNrCisgICogQGluZ3JvdXAgZ2xvYnVzX2NhbGxi YWNrX3NpZ25hbAorLSAqIAorKyAqCisgICogQHBhcmFtIHNpZ251bQorICAqICAgICAgICBUaGUg c2lnbmFsIHRvIHVucmVnaXN0ZXIuCisgICoKK0BAIC0xMDM2LDI5ICsxMDM2LDI5IEBAIGdsb2J1 c19jYWxsYmFja191bnJlZ2lzdGVyX3NpZ25hbF9oYW5kbGVyKAorIC8qKgorICAqIEBicmllZiBS ZWdpc3RlciBhIHdha2V1cCBoYW5kbGVyIHdpdGggY2FsbGJhY2sgbGlicmFyeQorICAqIEBpbmdy b3VwIGdsb2J1c19jYWxsYmFja19zaWduYWwKKy0gKiAKKysgKgorICAqIEBkZXRhaWxzCisgICog VGhpcyBpcyByZWFsbHkgb25seSBuZWVkZWQgaW4gbm9uLXRocmVhZGVkIGJ1aWxkcywgYnV0IGZv ciBjcm9zcyBidWlsZHMKKyAgKiBzaG91bGQgYmUgdXNlZCBldmVyeXdoZXJlIHRoYXQgYSBjYWxs YmFjayBtYXkgc2xlZXAgZm9yIGFuIGV4dGVuZGVkIHBlcmlvZAorICAqIG9mIHRpbWUuCistICog CisrICoKKyAgKiBBbiBleGFtcGxlIHVzZSBpcyBmb3IgYW4gaW8gcG9sbGVyIHRoYXQgc2xlZXBz IGluZGVmaW5pdGVseSBvbiBzZWxlY3QoKS4gIElmCisgICogdGhlIGNhbGxiYWNrIGxpYnJhcnkg cmVjZWl2ZXMgYSBzaWduYWwgdGhhdCBpdCBuZWVkcyB0byBkZWxpdmVyIGFzYXAsIGl0CisgICog d2lsbCBjYWxsIHRoZSB3YWtldXAgaGFuZGxlcihzKSwgVGhlc2Ugd2FrZXVwIGhhbmRsZXJzIG11 c3QgcnVuIGFzIHRob3VnaAorICAqIHRoZXkgd2VyZSBjYWxsZWQgZnJvbSBhIHNpZ25hbCBoYW5k bGVyIChkb24ndCB1c2UgYW55IHRocmVhZCB1dGlsaXRpZXMpLgorICAqIFRoZSBpbyBwb2xsIGV4 YW1wbGUgd2lsbCBsaWtlbHkgd3JpdGUgYSBzaW5nbGUgYnl0ZSB0byBhIHBpcGUgdGhhdCBzZWxl Y3QoKQorICAqIGlzIG1vbml0b3JpbmcuCistICogCisrICoKKyAgKiBUaGlzIGhhbmRsZXIgd2ls bCBub3QgYmUgdW5yZWdpc3RlcmVkIHVudGlsIHRoZSBjYWxsYmFjayBsaWJyYXJ5IGlzCisgICog ZGVhY3RpdmF0ZWQgKHZpYSBjb21tb24pLgorLSAqIAorKyAqCisgICogQHBhcmFtIHdha2V1cAor ICAqICAgICAgIGZ1bmN0aW9uIHRvIGNhbGwgd2hlbiBjYWxsYmFjayBsaWJyYXJ5IG5lZWRzIHlv dSB0byByZXR1cm4gYXNhcAorICAqICAgICAgIGZyb20gYW55IGJsb2NrZWQgY2FsbGJhY2tzLgor LSAqIAorKyAqCisgICogQHBhcmFtIHVzZXJfYXJnCisgICogICAgICAgdXNlciBkYXRhIHRoYXQg d2lsbCBiZSBwYXNzZWQgYWxvbmcgaW4gdGhlIHdha2V1cCBoYW5kbGVyCistICogCisrICoKKyAg Ki8KKyB2b2lkCisgZ2xvYnVzX2NhbGxiYWNrX2FkZF93YWtldXBfaGFuZGxlcigKK2RpZmYgLS1n aXQgYS9jb21tb24vc291cmNlL2xpYnJhcnkvZ2xvYnVzX2Vycm9yX2Vycm5vLmMgYi9jb21tb24v c291cmNlL2xpYnJhcnkvZ2xvYnVzX2Vycm9yX2Vycm5vLmMKK2luZGV4IDkwYzcwMzM4NC4uNDcw MTdiY2VkIDEwMDY0NAorLS0tIGEvY29tbW9uL3NvdXJjZS9saWJyYXJ5L2dsb2J1c19lcnJvcl9l cnJuby5jCisrKysgYi9jb21tb24vc291cmNlL2xpYnJhcnkvZ2xvYnVzX2Vycm9yX2Vycm5vLmMK K0BAIC00OSw3ICs0OSw3IEBACisgICogICAgICAgIFRoZSByZXN1bHRpbmcgZXJyb3Igb2JqZWN0 LiBJdCBpcyB0aGUgdXNlcidzIHJlc3BvbnNpYmlsaXR5CisgICogICAgICAgIHRvIGV2ZW50dWFs bHkgZnJlZSB0aGlzIG9iamVjdCB1c2luZyBnbG9idXNfb2JqZWN0X2ZyZWUoKS4gQQorICAqICAg ICAgICBnbG9idXNfcmVzdWx0X3QgbWF5IGJlIG9idGFpbmVkIGJ5IGNhbGxpbmcKKy0gKiAgICAg ICAgZ2xvYnVzX2Vycm9yX3B1dCgpIG9uIHRoaXMgb2JqZWN0LiAgICAgICAgCisrICogICAgICAg IGdsb2J1c19lcnJvcl9wdXQoKSBvbiB0aGlzIG9iamVjdC4KKyAgKi8KKyBnbG9idXNfb2JqZWN0 X3QgKgorIGdsb2J1c19lcnJvcl9jb25zdHJ1Y3RfZXJybm9fZXJyb3IoCitAQCAtODMsNyArODMs NyBAQCBnbG9idXNfZXJyb3JfY29uc3RydWN0X2Vycm5vX2Vycm9yKAorIC8qKgorICAqIEluaXRp YWxpemUgYSBwcmV2aW91c2x5IGFsbG9jYXRlZCBlcnJvciBvZiB0eXBlCisgICogR0xPQlVTX0VS Uk9SX1RZUEVfRVJSTk8KKy0gKiBAaW5ncm91cCBnbG9idXNfZXJybm9fZXJyb3Jfb2JqZWN0IAor KyAqIEBpbmdyb3VwIGdsb2J1c19lcnJub19lcnJvcl9vYmplY3QKKyAgKgorICAqIEBwYXJhbSBl cnJvcgorICAqICAgICAgICBUaGUgcHJldmlvdXNseSBhbGxvY2F0ZWQgZXJyb3Igb2JqZWN0Lgor QEAgLTEyNSw3ICsxMjUsNyBAQCBnbG9idXNfZXJyb3JfaW5pdGlhbGl6ZV9lcnJub19lcnJvcigK KyAvKkB7Ki8KKyAvKioKKyAgKiBSZXRyaWV2ZSB0aGUgc3lzdGVtIGVycm5vIGZyb20gYSBlcnJu byBlcnJvciBvYmplY3QuCistICogQGluZ3JvdXAgZ2xvYnVzX2Vycm5vX2Vycm9yX2FjY2Vzc29y ICAKKysgKiBAaW5ncm91cCBnbG9idXNfZXJybm9fZXJyb3JfYWNjZXNzb3IKKyAgKgorICAqIEBw YXJhbSBlcnJvcgorICAqICAgICAgICBUaGUgZXJyb3IgZnJvbSB3aGljaCB0byByZXRyaWV2ZSB0 aGUgZXJybm8KK0BAIC0xNTEsNyArMTUxLDcgQEAgZ2xvYnVzX2Vycm9yX2Vycm5vX2dldF9lcnJu bygKKyAvKkB7Ki8KKyAvKioKKyAgKiBTZXQgdGhlIGVycm5vIGluIGEgZXJybm8gZXJyb3Igb2Jq ZWN0LgorLSAqIEBpbmdyb3VwIGdsb2J1c19lcnJub19lcnJvcl9hY2Nlc3NvciAgCisrICogQGlu Z3JvdXAgZ2xvYnVzX2Vycm5vX2Vycm9yX2FjY2Vzc29yCisgICoKKyAgKiBAcGFyYW0gZXJyb3IK KyAgKiAgICAgICAgVGhlIGVycm9yIG9iamVjdCBmb3Igd2hpY2ggdG8gc2V0IHRoZSBlcnJubwor QEAgLTE4MSw3ICsxODEsNyBAQCBnbG9idXNfZXJyb3JfZXJybm9fc2V0X2Vycm5vKAorIC8qKgor ICAqIENoZWNrIHdoZXRoZXIgdGhlIGVycm9yIG9yaWdpbmF0ZWQgZnJvbSBhIHNwZWNpZmljIG1v ZHVsZSBhbmQKKyAgKiBtYXRjaGVzIGEgc3BlY2lmaWMgZXJybm8uCistICogQGluZ3JvdXAgZ2xv YnVzX2Vycm5vX2Vycm9yX3V0aWxpdHkgIAorKyAqIEBpbmdyb3VwIGdsb2J1c19lcnJub19lcnJv cl91dGlsaXR5CisgICoKKyAgKiBUaGlzIGZ1bmN0aW9uIGNoZWNrcyB3aGV0aGVyIHRoZSBlcnJv ciBvciBhbnkgb2YgaXQncyBjYXVzYXRpdmUKKyAgKiBlcnJvcnMgb3JpZ2luYXRlZCBmcm9tIGEg c3BlY2lmaWMgbW9kdWxlIGFuZCBjb250YWlucyBhIHNwZWNpZmljCitAQCAtMjA3LDcgKzIwNyw3 IEBAIGdsb2J1c19lcnJvcl9lcnJub19tYXRjaCgKKyAgICAgZ2xvYnVzX29iamVjdF90ICogICAg ICAgICAgICAgICAgICAgZXJybm9fZXJyb3IgPSBOVUxMOworICAgICBnbG9idXNfbW9kdWxlX2Rl c2NyaXB0b3JfdCAqICAgICAgICBzb3VyY2VfbW9kdWxlOworICAgICBpbnQgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjdXJyZW50X2Vycm5vOworLSAgICAKKysKKyAgICAgaWYoZXJy b3IgPT0gTlVMTCkKKyAgICAgeworICAgICAgICAgcmV0dXJuIEdMT0JVU19GQUxTRTsKK0BAIC0y MjYsNyArMjI2LDcgQEAgZ2xvYnVzX2Vycm9yX2Vycm5vX21hdGNoKAorIAorICAgICBzb3VyY2Vf bW9kdWxlID0gZ2xvYnVzX2Vycm9yX2dldF9zb3VyY2UoZXJybm9fZXJyb3IpOworICAgICBjdXJy ZW50X2Vycm5vID0gZ2xvYnVzX2Vycm9yX2Vycm5vX2dldF9lcnJubyhlcnJub19lcnJvcik7Cist ICAgIAorKworICAgICBpZihzb3VyY2VfbW9kdWxlID09IG1vZHVsZSAmJiBjdXJyZW50X2Vycm5v ID09IHN5c3RlbV9lcnJubykKKyAgICAgeworICAgICAgICAgcmV0dXJuIEdMT0JVU19UUlVFOwor QEAgLTI0NCw3ICsyNDQsNyBAQCBnbG9idXNfZXJyb3JfZXJybm9fbWF0Y2goCisgLypAeyovCisg LyoqCisgICogQGJyaWVmIFNlYXJjaCBmb3IgYW4gZXJybm8gdmFsdWUgaW4gYW4gZXJyb3IgY2hh aW4KKy0gKiBAaW5ncm91cCBnbG9idXNfZXJybm9fZXJyb3JfdXRpbGl0eSAgCisrICogQGluZ3Jv dXAgZ2xvYnVzX2Vycm5vX2Vycm9yX3V0aWxpdHkKKyAgKiBAZGV0YWlscworICAqIFRoaXMgZnVu Y3Rpb24gc2VhcmNoZXMgdGhlIGVycm9yIG9iamVjdCBhbmQgaXRzIGNhdXNhbCBlcnJvcnMgZm9y CisgICogYW4gZXJyb3Igb2YgdHlwZSBHTE9CVVNfRVJST1JfVFlQRV9FUlJOTyBhbmQgcmV0dXJu cyB0aGUgZXJybm8KK0BAIC0yNTYsMTQgKzI1NiwxNCBAQCBnbG9idXNfZXJyb3JfZXJybm9fbWF0 Y2goCisgICogQHJldHVybgorICAqICAgICAgICBUaGlzIGZ1bmN0aW9uIHJldHVybnMgMCBpZiBu byBlcnJvcm5vIGlzIGZvdW5kLCBvdGhlcndpc2UgdGhlCisgICogICAgICAgIGVycm9yLgorLSAq ICAgICAgICAKKysgKgorICAqLworIGludAorIGdsb2J1c19lcnJvcl9lcnJub19zZWFyY2goCisg ICAgIGdsb2J1c19vYmplY3RfdCAqICAgICAgICAgICAgICAgICAgIGVycm9yKQorIHsKKyAgICAg aW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudF9lcnJubzsKKy0gICAg CisrCisgICAgIGlmKGVycm9yID09IE5VTEwpCisgICAgIHsKKyAgICAgICAgIHJldHVybiAwOwor QEAgLTI4OSw3ICsyODksNyBAQCBnbG9idXNfZXJyb3JfZXJybm9fc2VhcmNoKAorIC8qKgorICAq IEFsbG9jYXRlIGFuZCBpbml0aWFsaXplIGFuIGVycm9yIG9mIHR5cGUgR0xPQlVTX0VSUk9SX1RZ UEVfR0xPQlVTCisgICogd2hpY2ggY29udGFpbnMgYSBjYXVzYWwgZXJyb3Igb2YgdHlwZSBHTE9C VVNfRVJST1JfVFlQRV9FUlJOTy4KKy0gKiBAaW5ncm91cCBnbG9idXNfZXJybm9fZXJyb3JfdXRp bGl0eSAgCisrICogQGluZ3JvdXAgZ2xvYnVzX2Vycm5vX2Vycm9yX3V0aWxpdHkKKyAgKgorICAq IEBwYXJhbSBiYXNlX3NvdXJjZQorICAqICAgICAgICBQb2ludGVyIHRvIHRoZSBvcmlnaW5hdGlu ZyBtb2R1bGUuCitAQCAtMzE1LDcgKzMxNSw3IEBAIGdsb2J1c19lcnJvcl9lcnJub19zZWFyY2go CisgICogICAgICAgIFRoZSByZXN1bHRpbmcgZXJyb3Igb2JqZWN0LiBJdCBpcyB0aGUgdXNlcidz IHJlc3BvbnNpYmlsaXR5CisgICogICAgICAgIHRvIGV2ZW50dWFsbHkgZnJlZSB0aGlzIG9iamVj dCB1c2luZyBnbG9idXNfb2JqZWN0X2ZyZWUoKS4gQQorICAqICAgICAgICBnbG9idXNfcmVzdWx0 X3QgbWF5IGJlIG9idGFpbmVkIGJ5IGNhbGxpbmcKKy0gKiAgICAgICAgZ2xvYnVzX2Vycm9yX3B1 dCgpIG9uIHRoaXMgb2JqZWN0LiAgICAgICAgCisrICogICAgICAgIGdsb2J1c19lcnJvcl9wdXQo KSBvbiB0aGlzIG9iamVjdC4KKyAgKi8KKyBnbG9idXNfb2JqZWN0X3QgKgorIGdsb2J1c19lcnJv cl93cmFwX2Vycm5vX2Vycm9yKAorQEAgLTM0Myw5ICszNDMsOSBAQCBnbG9idXNfZXJyb3Jfd3Jh cF9lcnJub19lcnJvcigKKyAgICAgeworICAgICAgICAgcmV0dXJuIEdMT0JVU19OVUxMOworICAg ICB9CistICAgIAorKworICAgICB2YV9zdGFydChhcCwgc2hvcnRfZGVzY19mb3JtYXQpOworLSAg ICAKKysKKyAgICAgc3lzX2Vycm9yID0gc3RyZXJyb3Ioc3lzdGVtX2Vycm5vKTsKKyAgICAgaWYo c3lzX2Vycm9yKQorICAgICB7CitAQCAtMzU2LDEyICszNTYsMTIgQEAgZ2xvYnVzX2Vycm9yX3dy YXBfZXJybm9fZXJyb3IoCisgICAgICAgICAgICAgc3ByaW50ZihmbXQsICIlczogJXMiLCBzaG9y dF9kZXNjX2Zvcm1hdCwgc3lzX2Vycm9yKTsKKyAgICAgICAgIH0KKyAgICAgfQorLSAgICAKKysK KyAgICAgaWYoIWZtdCkKKyAgICAgeworICAgICAgICAgZm10ID0gKGNoYXIgKikgc2hvcnRfZGVz Y19mb3JtYXQ7CisgICAgIH0KKy0gICAgCisrCisgICAgIGVycm9yID0gZ2xvYnVzX2Vycm9yX3Zf Y29uc3RydWN0X2Vycm9yKAorICAgICAgICAgYmFzZV9zb3VyY2UsCisgICAgICAgICBjYXVzYWxf ZXJyb3IsCitAQCAtMzczLDE5ICszNzMsMTkgQEAgZ2xvYnVzX2Vycm9yX3dyYXBfZXJybm9fZXJy b3IoCisgICAgICAgICBhcCk7CisgCisgICAgIHZhX2VuZChhcCk7CistICAgIAorKworICAgICBp ZihmbXQgIT0gc2hvcnRfZGVzY19mb3JtYXQpCisgICAgIHsKKyAgICAgICAgIGdsb2J1c19mcmVl KGZtdCk7CisgICAgIH0KKy0gICAgCisrCisgICAgIGlmKGVycm9yID09IEdMT0JVU19OVUxMKQor ICAgICB7CisgICAgICAgICBnbG9idXNfb2JqZWN0X2ZyZWUoY2F1c2FsX2Vycm9yKTsKKyAgICAg fQorLSAgICAKKysKKyAgICAgcmV0dXJuIGVycm9yOworLSAgICAKKysKKyB9LyogZ2xvYnVzX2Vy cm9yX3dyYXBfZXJybm9fZXJyb3IgKi8KKyAvKkB9Ki8KKyAKK2RpZmYgLS1naXQgYS9jb21tb24v c291cmNlL2xpYnJhcnkvZ2xvYnVzX2Vycm9yX2dlbmVyaWMuYyBiL2NvbW1vbi9zb3VyY2UvbGli cmFyeS9nbG9idXNfZXJyb3JfZ2VuZXJpYy5jCitpbmRleCAxYzExYjg0YjcuLmJjNzg4NDAzYSAx MDA2NDQKKy0tLSBhL2NvbW1vbi9zb3VyY2UvbGlicmFyeS9nbG9idXNfZXJyb3JfZ2VuZXJpYy5j CisrKysgYi9jb21tb24vc291cmNlL2xpYnJhcnkvZ2xvYnVzX2Vycm9yX2dlbmVyaWMuYworQEAg LTc5LDcgKzc5LDcgQEAgdHlwZWRlZiBzdHJ1Y3QKKyAgKiAgICAgICAgVGhlIHJlc3VsdGluZyBl cnJvciBvYmplY3QuIEl0IGlzIHRoZSB1c2VyJ3MgcmVzcG9uc2liaWxpdHkKKyAgKiAgICAgICAg dG8gZXZlbnR1YWxseSBmcmVlIHRoaXMgb2JqZWN0IHVzaW5nIGdsb2J1c19vYmplY3RfZnJlZSgp LiBBCisgICogICAgICAgIGdsb2J1c19yZXN1bHRfdCBtYXkgYmUgb2J0YWluZWQgYnkgY2FsbGlu ZworLSAqICAgICAgICBnbG9idXNfZXJyb3JfcHV0KCkgb24gdGhpcyBvYmplY3QuICAgICAgICAK KysgKiAgICAgICAgZ2xvYnVzX2Vycm9yX3B1dCgpIG9uIHRoaXMgb2JqZWN0LgorICAqLworIGds b2J1c19vYmplY3RfdCAqCisgZ2xvYnVzX2Vycm9yX2NvbnN0cnVjdF9lcnJvcigKK0BAIC0xNDgs NyArMTQ4LDcgQEAgZ2xvYnVzX2Vycm9yX2NvbnN0cnVjdF9lcnJvcigKKyAgKiAgICAgICAgVGhl IHJlc3VsdGluZyBlcnJvciBvYmplY3QuIEl0IGlzIHRoZSB1c2VyJ3MgcmVzcG9uc2liaWxpdHkK KyAgKiAgICAgICAgdG8gZXZlbnR1YWxseSBmcmVlIHRoaXMgb2JqZWN0IHVzaW5nIGdsb2J1c19v YmplY3RfZnJlZSgpLiBBCisgICogICAgICAgIGdsb2J1c19yZXN1bHRfdCBtYXkgYmUgb2J0YWlu ZWQgYnkgY2FsbGluZworLSAqICAgICAgICBnbG9idXNfZXJyb3JfcHV0KCkgb24gdGhpcyBvYmpl Y3QuICAgICAgICAKKysgKiAgICAgICAgZ2xvYnVzX2Vycm9yX3B1dCgpIG9uIHRoaXMgb2JqZWN0 LgorICAqLworIGdsb2J1c19vYmplY3RfdCAqCisgZ2xvYnVzX2Vycm9yX3ZfY29uc3RydWN0X2Vy cm9yKAorQEAgLTE5Miw3ICsxOTIsNyBAQCBnbG9idXNfZXJyb3Jfdl9jb25zdHJ1Y3RfZXJyb3Io CisgLyoqCisgICogSW5pdGlhbGl6ZSBhIHByZXZpb3VzbHkgYWxsb2NhdGVkIGVycm9yIG9mIHR5 cGUKKyAgKiBHTE9CVVNfRVJST1JfVFlQRV9HTE9CVVMKKy0gKiBAaW5ncm91cCBnbG9idXNfZ2Vu ZXJpY19lcnJvcl9vYmplY3QgCisrICogQGluZ3JvdXAgZ2xvYnVzX2dlbmVyaWNfZXJyb3Jfb2Jq ZWN0CisgICoKKyAgKiBAcGFyYW0gZXJyb3IKKyAgKiAgICAgICAgVGhlIHByZXZpb3VzbHkgYWxs b2NhdGVkIGVycm9yIG9iamVjdC4KK0BAIC0yNDEsNyArMjQxLDcgQEAgZ2xvYnVzX2Vycm9yX2lu aXRpYWxpemVfZXJyb3IoCisgICAgIHsKKyAgICAgICAgIHJldHVybiBOVUxMOworICAgICB9Cist ICAgIAorKworICAgICBpbnN0YW5jZV9kYXRhID0gKGdsb2J1c19sX2Vycm9yX2RhdGFfdCAqKQor ICAgICAgICAgbWFsbG9jKHNpemVvZihnbG9idXNfbF9lcnJvcl9kYXRhX3QpKTsKKyAKK0BAIC0y NjMsMTIgKzI2MywxMiBAQCBnbG9idXNfZXJyb3JfaW5pdGlhbGl6ZV9lcnJvcigKKyAgICAgICAg IHZhX2VuZChhcF9jb3B5KTsKKyAKKyAgICAgICAgIHNpemUrKzsKKy0gICAgICAgIAorKworICAg ICAgICAgaWYgKChpbnN0YW5jZV9kYXRhLT5zaG9ydF9kZXNjID0gbWFsbG9jIChzaXplKSkgPT0g TlVMTCkKKyAgICAgICAgIHsKKyAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgIH0K Ky0gICAgICAgIAorKworICAgICAgICAgZ2xvYnVzX2xpYmNfdnNucHJpbnRmKGluc3RhbmNlX2Rh dGEtPnNob3J0X2Rlc2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG9ydF9kZXNjX2Zvcm1hdCwKK0BAIC0yODks NyArMjg5LDcgQEAgZ2xvYnVzX2Vycm9yX2luaXRpYWxpemVfZXJyb3IoCisgLypAeyovCisgLyoq CisgICogUmV0cmlldmUgdGhlIG9yaWdpbmF0aW5nIG1vZHVsZSBkZXNjcmlwdG9yIGZyb20gYSBl cnJvciBvYmplY3QuCistICogQGluZ3JvdXAgZ2xvYnVzX2dlbmVyaWNfZXJyb3JfYWNjZXNzb3Ig IAorKyAqIEBpbmdyb3VwIGdsb2J1c19nZW5lcmljX2Vycm9yX2FjY2Vzc29yCisgICoKKyAgKiBA cGFyYW0gZXJyb3IKKyAgKiAgICAgICAgVGhlIGVycm9yIGZyb20gd2hpY2ggdG8gcmV0cmlldmUg dGhlIG1vZHVsZSBkZXNjcmlwdG9yCitAQCAtMzEwLDcgKzMxMCw3IEBAIGdsb2J1c19lcnJvcl9n ZXRfc291cmNlKAorIC8qQHsqLworIC8qKgorICAqIFNldCB0aGUgb3JpZ2luYXRpbmcgbW9kdWxl IGRlc2NyaXB0b3IgaW4gYSBlcnJvciBvYmplY3QuCistICogQGluZ3JvdXAgZ2xvYnVzX2dlbmVy aWNfZXJyb3JfYWNjZXNzb3IgIAorKyAqIEBpbmdyb3VwIGdsb2J1c19nZW5lcmljX2Vycm9yX2Fj Y2Vzc29yCisgICoKKyAgKiBAcGFyYW0gZXJyb3IKKyAgKiAgICAgICAgVGhlIGVycm9yIG9iamVj dCBmb3Igd2hpY2ggdG8gc2V0IHRoZSBjYXVzYXRpdmUgZXJyb3IKK0BAIC0zMzQsNyArMzM0LDcg QEAgZ2xvYnVzX2Vycm9yX3NldF9zb3VyY2UoCisgLypAeyovCisgLyoqCisgICogUmV0cmlldmUg dGhlIHVuZGVybHlpbmcgZXJyb3IgZnJvbSBhIGVycm9yIG9iamVjdC4KKy0gKiBAaW5ncm91cCBn bG9idXNfZ2VuZXJpY19lcnJvcl9hY2Nlc3NvciAgCisrICogQGluZ3JvdXAgZ2xvYnVzX2dlbmVy aWNfZXJyb3JfYWNjZXNzb3IKKyAgKgorICAqIEBwYXJhbSBlcnJvcgorICAqICAgICAgICBUaGUg ZXJyb3IgZnJvbSB3aGljaCB0byByZXRyaWV2ZSB0aGUgY2F1c2F0aXZlIGVycm9yLgorQEAgLTM1 Nyw3ICszNTcsNyBAQCBnbG9idXNfZXJyb3JfZ2V0X2NhdXNlICgKKyAvKkB7Ki8KKyAvKioKKyAg KiBTZXQgdGhlIGNhdXNhdGl2ZSBlcnJvciBpbiBhIGVycm9yIG9iamVjdC4KKy0gKiBAaW5ncm91 cCBnbG9idXNfZ2VuZXJpY19lcnJvcl9hY2Nlc3NvciAgCisrICogQGluZ3JvdXAgZ2xvYnVzX2dl bmVyaWNfZXJyb3JfYWNjZXNzb3IKKyAgKgorICAqIEBwYXJhbSBlcnJvcgorICAqICAgICAgICBU aGUgZXJyb3Igb2JqZWN0IGZvciB3aGljaCB0byBzZXQgdGhlIGNhdXNhdGl2ZSBlcnJvci4KK0BA IC0zODIsNyArMzgyLDcgQEAgZ2xvYnVzX2Vycm9yX3NldF9jYXVzZSAoCisgLypAeyovCisgLyoq CisgICogUmV0cmlldmUgdGhlIGVycm9yIHR5cGUgZnJvbSBhIGdlbmVyaWMgZ2xvYnVzIGVycm9y IG9iamVjdC4KKy0gKiBAaW5ncm91cCBnbG9idXNfZ2VuZXJpY19lcnJvcl9hY2Nlc3NvciAgCisr ICogQGluZ3JvdXAgZ2xvYnVzX2dlbmVyaWNfZXJyb3JfYWNjZXNzb3IKKyAgKgorICAqIEBwYXJh bSBlcnJvcgorICAqICAgICAgICBUaGUgZXJyb3IgZnJvbSB3aGljaCB0byByZXRyaWV2ZSB0aGUg ZXJyb3IgdHlwZQorQEAgLTM5NCw3ICszOTQsNyBAQCBnbG9idXNfZXJyb3JfZ2V0X3R5cGUoCisg ICAgIGdsb2J1c19vYmplY3RfdCAqICAgICAgICAgICAgICAgICAgIGVycm9yKQorIHsKKyAgICAg Z2xvYnVzX29iamVjdF90ICogICAgICAgICAgICAgICAgICAgdG1wOworLSAgICAKKysKKyAgICAg aWYgKCh0bXAgPSBnbG9idXNfb2JqZWN0X3VwY2FzdChlcnJvciwgR0xPQlVTX0VSUk9SX1RZUEVf R0xPQlVTKSkgIT0gTlVMTCkKKyAgICAgeworICAgICAgICAgcmV0dXJuICgoZ2xvYnVzX2xfZXJy b3JfZGF0YV90ICopCitAQCAtNDE4LDcgKzQxOCw3IEBAIGdsb2J1c19lcnJvcl9nZXRfdHlwZSgK KyAvKkB7Ki8KKyAvKioKKyAgKiBTZXQgdGhlIGVycm9yIHR5cGUgaW4gYSBnZW5lcmljIGdsb2J1 cyBlcnJvciBvYmplY3QuCistICogQGluZ3JvdXAgZ2xvYnVzX2dlbmVyaWNfZXJyb3JfYWNjZXNz b3IgIAorKyAqIEBpbmdyb3VwIGdsb2J1c19nZW5lcmljX2Vycm9yX2FjY2Vzc29yCisgICoKKyAg KiBAcGFyYW0gZXJyb3IKKyAgKiAgICAgICAgVGhlIGVycm9yIG9iamVjdCBmb3Igd2hpY2ggdG8g c2V0IHRoZSBlcnJvciB0eXBlCitAQCAtNDQ5LDggKzQ0OSw4IEBAIGdsb2J1c19lcnJvcl9zZXRf dHlwZSgKKyAvKkB7Ki8KKyAvKioKKyAgKiBSZXRyaWV2ZSB0aGUgc2hvcnQgZXJyb3IgZGVzY3Jp cHRpb24gZnJvbSBhIGdlbmVyaWMgZ2xvYnVzIGVycm9yCistICogb2JqZWN0LiAKKy0gKiBAaW5n cm91cCBnbG9idXNfZ2VuZXJpY19lcnJvcl9hY2Nlc3NvciAgCisrICogb2JqZWN0LgorKyAqIEBp bmdyb3VwIGdsb2J1c19nZW5lcmljX2Vycm9yX2FjY2Vzc29yCisgICoKKyAgKiBAcGFyYW0gZXJy b3IKKyAgKiAgICAgICAgVGhlIGVycm9yIGZyb20gd2hpY2ggdG8gcmV0cmlldmUgdGhlIGRlc2Ny aXB0aW9uCitAQCAtNDc5LDggKzQ3OSw4IEBAIGdsb2J1c19lcnJvcl9nZXRfc2hvcnRfZGVzYygK KyAgKi8KKyAvKkB7Ki8KKyAvKioKKy0gKiBTZXQgdGhlIHNob3J0IGVycm9yIGRlc2NyaXB0aW9u IGluIGEgZ2VuZXJpYyBnbG9idXMgZXJyb3Igb2JqZWN0LiAKKy0gKiBAaW5ncm91cCBnbG9idXNf Z2VuZXJpY19lcnJvcl9hY2Nlc3NvciAgCisrICogU2V0IHRoZSBzaG9ydCBlcnJvciBkZXNjcmlw dGlvbiBpbiBhIGdlbmVyaWMgZ2xvYnVzIGVycm9yIG9iamVjdC4KKysgKiBAaW5ncm91cCBnbG9i dXNfZ2VuZXJpY19lcnJvcl9hY2Nlc3NvcgorICAqCisgICogQHBhcmFtIGVycm9yCisgICogICAg ICAgIFRoZSBlcnJvciBvYmplY3QgZm9yIHdoaWNoIHRvIHNldCB0aGUgZGVzY3JpcHRpb24KK0BA IC01MDEsNyArNTAxLDcgQEAgZ2xvYnVzX2Vycm9yX3NldF9zaG9ydF9kZXNjKAorICAgICBjaGFy ICoqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZV9zaG9ydF9kZXNjOworICAg ICB2YV9saXN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcDsKKyAgICAgaW50ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTsKKy0gICAgCisrCisgICAgIGlmICgoZXJy b3IgPSBnbG9idXNfb2JqZWN0X3VwY2FzdChlcnJvciwgR0xPQlVTX0VSUk9SX1RZUEVfR0xPQlVT KSkgPT0gTlVMTCkKKyAgICAgeworICAgICAgICAgcmV0dXJuOworQEAgLTUwOSw3ICs1MDksNyBA QCBnbG9idXNfZXJyb3Jfc2V0X3Nob3J0X2Rlc2MoCisgICAgIGluc3RhbmNlX3Nob3J0X2Rlc2Mg PQorICAgICAgICAgJigoZ2xvYnVzX2xfZXJyb3JfZGF0YV90ICopCisgICAgICAgICAgIGdsb2J1 c19vYmplY3RfZ2V0X2xvY2FsX2luc3RhbmNlX2RhdGEoZXJyb3IpKS0+c2hvcnRfZGVzYzsKKy0g ICAgCisrCisgICAgIGlmKCppbnN0YW5jZV9zaG9ydF9kZXNjICE9IE5VTEwpCisgICAgIHsKKyAg ICAgICAgIGdsb2J1c19saWJjX2ZyZWUoKmluc3RhbmNlX3Nob3J0X2Rlc2MpOworQEAgLTUyMiw3 ICs1MjIsNyBAQCBnbG9idXNfZXJyb3Jfc2V0X3Nob3J0X2Rlc2MoCisgICAgIHNpemUgPSBnbG9i dXNfbGliY192cHJpbnRmX2xlbmd0aChzaG9ydF9kZXNjX2Zvcm1hdCxhcCk7CisgCisgICAgIHZh X2VuZChhcCk7CistICAgIAorKworICAgICBzaXplKys7CisgCisgICAgIGlmICgoKmluc3RhbmNl X3Nob3J0X2Rlc2MgPSBtYWxsb2MgKHNpemUpKSA9PSBOVUxMKQorQEAgLTUzMSwxNCArNTMxLDE0 IEBAIGdsb2J1c19lcnJvcl9zZXRfc2hvcnRfZGVzYygKKyAgICAgfQorIAorICAgICB2YV9zdGFy dChhcCwgc2hvcnRfZGVzY19mb3JtYXQpOworLSAgICAKKysKKyAgICAgZ2xvYnVzX2xpYmNfdnNu cHJpbnRmKCppbnN0YW5jZV9zaG9ydF9kZXNjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg c2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3J0X2Rlc2NfZm9ybWF0LAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgYXApOworIAorICAgICB2YV9lbmQoYXApOworLSAgICAK KysKKyAgICAgcmV0dXJuOworIH0vKiBnbG9idXNfZXJyb3Jfc2V0X3Nob3J0X2Rlc2MgKi8KKyAv KkB9Ki8KK0BAIC01NTAsOCArNTUwLDggQEAgZ2xvYnVzX2Vycm9yX3NldF9zaG9ydF9kZXNjKAor IC8qQHsqLworIC8qKgorICAqIFJldHJpZXZlIHRoZSBsb25nIGVycm9yIGRlc2NyaXB0aW9uIGZy b20gYSBnZW5lcmljIGdsb2J1cyBlcnJvcgorLSAqIG9iamVjdC4gCistICogQGluZ3JvdXAgZ2xv YnVzX2dlbmVyaWNfZXJyb3JfYWNjZXNzb3IgIAorKyAqIG9iamVjdC4KKysgKiBAaW5ncm91cCBn bG9idXNfZ2VuZXJpY19lcnJvcl9hY2Nlc3NvcgorICAqCisgICogQHBhcmFtIGVycm9yCisgICog ICAgICAgIFRoZSBlcnJvciBmcm9tIHdoaWNoIHRvIHJldHJpZXZlIHRoZSBkZXNjcmlwdGlvbgor QEAgLTU3OCwxMyArNTc4LDEzIEBAIGdsb2J1c19lcnJvcl9nZXRfbG9uZ19kZXNjKAorIC8qQHsq LworIC8qKgorICAqIFNldCB0aGUgbG9uZyBlcnJvciBkZXNjcmlwdGlvbiBpbiBhIGdlbmVyaWMg Z2xvYnVzIGVycm9yIG9iamVjdC4KKy0gKiBAaW5ncm91cCBnbG9idXNfZ2VuZXJpY19lcnJvcl9h Y2Nlc3NvciAgCisrICogQGluZ3JvdXAgZ2xvYnVzX2dlbmVyaWNfZXJyb3JfYWNjZXNzb3IKKyAg KgorICAqIEBwYXJhbSBlcnJvcgorICAqICAgICAgICBUaGUgZXJyb3Igb2JqZWN0IGZvciB3aGlj aCB0byBzZXQgdGhlIGRlc2NyaXB0aW9uCisgICogQHBhcmFtIGxvbmdfZGVzY19mb3JtYXQKKyAg KiAgICAgICAgTG9uZ2VyIGZvcm1hdCBzdHJpbmcgZ2l2aW5nIGEgbW9yZSBkZXRhaWxlZCBleHBs YW5hdGlvbiBvZgorLSAqICAgICAgICB0aGUgZXJyb3IuIAorKyAqICAgICAgICB0aGUgZXJyb3Iu CisgICogQHJldHVybgorICAqICAgICAgICB2b2lkCisgICovCitAQCAtNTk3LDcgKzU5Nyw3IEBA IGdsb2J1c19lcnJvcl9zZXRfbG9uZ19kZXNjKAorICAgICBjaGFyICoqICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpbnN0YW5jZV9sb25nX2Rlc2M7CisgICAgIHZhX2xpc3QgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGFwOworICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzaXplOworLSAgICAKKysKKyAgICAgaWYgKChlcnJvciA9IGdsb2J1c19vYmplY3Rf dXBjYXN0KGVycm9yLCBHTE9CVVNfRVJST1JfVFlQRV9HTE9CVVMpKSA9PSBOVUxMKQorICAgICB7 CisgICAgICAgICByZXR1cm47CitAQCAtNjA1LDcgKzYwNSw3IEBAIGdsb2J1c19lcnJvcl9zZXRf bG9uZ19kZXNjKAorICAgICBpbnN0YW5jZV9sb25nX2Rlc2MgPQorICAgICAgICAgJigoZ2xvYnVz X2xfZXJyb3JfZGF0YV90ICopCisgICAgICAgICAgIGdsb2J1c19vYmplY3RfZ2V0X2xvY2FsX2lu c3RhbmNlX2RhdGEoZXJyb3IpKS0+bG9uZ19kZXNjOworLSAgICAKKysKKyAgICAgaWYoKmluc3Rh bmNlX2xvbmdfZGVzYyAhPSBOVUxMKQorICAgICB7CisgICAgICAgICBnbG9idXNfbGliY19mcmVl KCppbnN0YW5jZV9sb25nX2Rlc2MpOworQEAgLTYzMyw3ICs2MzMsNyBAQCBnbG9idXNfZXJyb3Jf c2V0X2xvbmdfZGVzYygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmdfZGVzY19mb3Jt YXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBhcCk7CisgICAgIHZhX2VuZChhcCk7Cist ICAgIAorKworICAgICByZXR1cm47CisgfS8qIGdsb2J1c19lcnJvcl9zZXRfbG9uZ19kZXNjICov CisgLypAfSovCitAQCAtNjQ2LDcgKzY0Niw3IEBAIGdsb2J1c19lcnJvcl9zZXRfbG9uZ19kZXNj KAorIC8qKgorICAqIENoZWNrIHdoZXRoZXIgdGhlIGVycm9yIG9yaWdpbmF0ZWQgZnJvbSBhIHNw ZWNpZmljIG1vZHVsZSBhbmQgaXMgb2YKKyAgKiBhIHNwZWNpZmljIHR5cGUuCistICogQGluZ3Jv dXAgZ2xvYnVzX2dlbmVyaWNfZXJyb3JfdXRpbGl0eSAgCisrICogQGluZ3JvdXAgZ2xvYnVzX2dl bmVyaWNfZXJyb3JfdXRpbGl0eQorICAqCisgICogVGhpcyBmdW5jdGlvbiBjaGVja3Mgd2hldGhl ciB0aGUgZXJyb3Igb3IgYW55IG9mIGl0J3MgY2F1c2F0aXZlCisgICogZXJyb3JzIG9yaWdpbmF0 ZWQgZnJvbSBhIHNwZWNpZmljIG1vZHVsZSBhbmQgaXMgb2YgYSBzcGVjaWZpYworQEAgLTY3Miwx MiArNjcyLDEyIEBAIGdsb2J1c19lcnJvcl9tYXRjaCgKKyAgICAgZ2xvYnVzX21vZHVsZV9kZXNj cmlwdG9yX3QgKiAgICAgICAgc291cmNlX21vZHVsZTsKKyAgICAgaW50ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZXJyb3JfdHlwZTsKKyAgICAgZ2xvYnVzX29iamVjdF90ICogICAg ICAgICAgICAgICAgICAgdG1wOworLSAgICAKKysKKyAgICAgaWYoZXJyb3IgPT0gTlVMTCkKKyAg ICAgeworICAgICAgICAgcmV0dXJuIEdMT0JVU19GQUxTRTsKKyAgICAgfQorLSAgICAKKysKKyAg ICAgaWYgKCh0bXAgPSBnbG9idXNfb2JqZWN0X3VwY2FzdChlcnJvciwgR0xPQlVTX0VSUk9SX1RZ UEVfR0xPQlVTKSkgIT0gTlVMTCkKKyAgICAgeworICAgICAgICAgZXJyb3IgPSB0bXA7CitAQCAt Njk2LDcgKzY5Niw3IEBAIGdsb2J1c19lcnJvcl9tYXRjaCgKKyAgICAgfQorICAgICBzb3VyY2Vf bW9kdWxlID0gZ2xvYnVzX2Vycm9yX2dldF9zb3VyY2UoZXJyb3IpOworICAgICBlcnJvcl90eXBl ID0gZ2xvYnVzX2Vycm9yX2dldF90eXBlKGVycm9yKTsKKy0gICAgCisrCisgICAgIGlmKHNvdXJj ZV9tb2R1bGUgPT0gbW9kdWxlICYmIGVycm9yX3R5cGUgPT0gdHlwZSkKKyAgICAgeworICAgICAg ICAgcmV0dXJuIEdMT0JVU19UUlVFOworQEAgLTcxOSw3ICs3MTksNyBAQCBnbG9idXNfZXJyb3Jf bWF0Y2goCisgLyoqCisgICogUmV0dXJuIGEgc3RyaW5nIGNvbnRhaW5pbmcgYWxsIHByaW50YWJs ZSBlcnJvcnMgZm91bmQgaW4gYSBlcnJvcgorICAqIG9iamVjdCBhbmQgaXQncyBjYXVzYXRpdmUg ZXJyb3IgY2hhaW4uCistICogQGluZ3JvdXAgZ2xvYnVzX2dlbmVyaWNfZXJyb3JfdXRpbGl0eSAg CisrICogQGluZ3JvdXAgZ2xvYnVzX2dlbmVyaWNfZXJyb3JfdXRpbGl0eQorICAqCisgICogSWYg dGhlIEdMT0JVU19FUlJPUl9WRVJCT1NFIGVudiBpcyBzZXQsIGZpbGUsIGxpbmUgYW5kIGZ1bmN0 aW9uIGluZm8gd2lsbAorICAqIGFsc28gYmUgcHJpbnRlZCAod2hlcmUgYXZhaWxhYmxlKS4gIE90 aGVyd2lzZSwgb25seSB0aGUgbW9kdWxlIG5hbWUgd2lsbAorQEAgLTczOSw3ICs3MzksNyBAQCBn bG9idXNfZXJyb3JfcHJpbnRfY2hhaW4oCisgICAgIGNoYXIgKiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHRtcDsKKyAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg bGVuZ3RoID0gMDsKKyAgICAgZ2xvYnVzX29iamVjdF90ICogICAgICAgICAgICAgICAgICAgY3Vy cmVudF9lcnJvcjsKKy0gICAgCisrCisgICAgIGN1cnJlbnRfZXJyb3IgPSBlcnJvcjsKKyAgICAg ZXJyb3Jfc3RyaW5nID0gKGNoYXIgKikgZ2xvYnVzX2xpYmNfbWFsbG9jKDEpOworIAorQEAgLTc0 OSwxMiArNzQ5LDEyIEBAIGdsb2J1c19lcnJvcl9wcmludF9jaGFpbigKKyAgICAgICAgIGlmKHRt cCAhPSBOVUxMKQorICAgICAgICAgeworICAgICAgICAgICAgIGludCAgICAgICAgICAgICAgICAg ICAgICAgICBsOworLSAgICAgICAgICAgIAorKworICAgICAgICAgICAgIGwgPSBzdHJsZW4odG1w KTsKKyAgICAgICAgICAgICBpZihsKQorICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg Y2hhciAqICAgICAgICAgICAgICAgICAgbnM7CistICAgICAgICAgICAgICAgIAorKworICAgICAg ICAgICAgICAgICBucyA9IChjaGFyICopIGdsb2J1c19saWJjX3JlYWxsb2MoCisgICAgICAgICAg ICAgICAgICAgICBlcnJvcl9zdHJpbmcsIGxlbmd0aCArIGwgKyAyKTsKKyAgICAgICAgICAgICAg ICAgaWYobnMpCitAQCAtNzY5LDE1ICs3NjksMTUgQEAgZ2xvYnVzX2Vycm9yX3ByaW50X2NoYWlu KAorICAgICAgICAgfQorICAgICB9CisgICAgIHdoaWxlKChjdXJyZW50X2Vycm9yID0gZ2xvYnVz X2Vycm9yX2dldF9jYXVzZShjdXJyZW50X2Vycm9yKSkpOworLSAgICAKKysKKyAgICAgZXJyb3Jf c3RyaW5nW2xlbmd0aF0gPSAnXDAnOworLSAgICAKKysKKyAgICAgaWYobGVuZ3RoID09IDApCisg ICAgIHsKKyAgICAgICAgIGdsb2J1c19saWJjX2ZyZWUoZXJyb3Jfc3RyaW5nKTsKKyAgICAgICAg IGVycm9yX3N0cmluZyA9IE5VTEw7CisgICAgIH0KKy0gICAgCisrCisgICAgIHJldHVybiBlcnJv cl9zdHJpbmc7CisgfS8qIGdsb2J1c19lcnJvcl9wcmludF9jaGFpbiAqLworIC8qQH0qLworQEAg LTc5NCw3ICs3OTQsNyBAQCBnbG9idXNfbF9lcnJvcl9tdWx0aXBsZV9wcmludCgKKyAgICAgY2hh ciAqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJlZV9wdHJzID0gTlVMTDsKKyAgICAg Y2hhciAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3Jfc3RyaW5nOworICAgICBp bnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gMDsKKy0gICAgCisrCisgICAg IGlmICgoZXJyb3IgPSBnbG9idXNfb2JqZWN0X3VwY2FzdChlcnJvciwgR0xPQlVTX0VSUk9SX1RZ UEVfTVVMVElQTEUpKSA9PSBOVUxMKQorICAgICB7CisgICAgICAgICByZXR1cm4gTlVMTDsKK0BA IC04MTAsMjggKzgxMCwyOCBAQCBnbG9idXNfbF9lcnJvcl9tdWx0aXBsZV9wcmludCgKKyAgICAg ICAgIHsKKyAgICAgICAgICAgICBnbG9idXNfbGlzdF90ICogICAgICAgICAgICAgdG1wOworICAg ICAgICAgICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICBqID0gMDsKKy0gICAgICAgICAg ICAKKysKKyAgICAgICAgICAgICBpZihkYXRhLT5kZXNjICYmICpkYXRhLT5kZXNjKQorICAgICAg ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgbGF5b3V0W2krK10gPSBkYXRhLT5kZXNjOworICAg ICAgICAgICAgICAgICBsYXlvdXRbaSsrXSA9ICJcbiI7CisgICAgICAgICAgICAgfQorLSAgICAg ICAgICAgIAorKworICAgICAgICAgICAgIGZvcih0bXAgPSBkYXRhLT5jaGFpbnM7CistICAgICAg ICAgICAgICAgICFnbG9idXNfbGlzdF9lbXB0eSh0bXApOyAKKysgICAgICAgICAgICAgICAgIWds b2J1c19saXN0X2VtcHR5KHRtcCk7CisgICAgICAgICAgICAgICAgIHRtcCA9IGdsb2J1c19saXN0 X3Jlc3QodG1wKSkKKyAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIGdsb2J1c19sX2Vy cm9yX211bHRpcGxlX2NoYWluX3QgKiBpbnN0YW5jZTsKKy0gICAgICAgICAgICAgICAgCisrCisg ICAgICAgICAgICAgICAgIGluc3RhbmNlID0gKGdsb2J1c19sX2Vycm9yX211bHRpcGxlX2NoYWlu X3QgKikKKyAgICAgICAgICAgICAgICAgICAgIGdsb2J1c19saXN0X2ZpcnN0KHRtcCk7CistICAg ICAgICAgICAgICAgIAorKworICAgICAgICAgICAgICAgICBpZihpbnN0YW5jZS0+ZGVzYyAmJiAq aW5zdGFuY2UtPmRlc2MpCisgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg IGxheW91dFtpKytdID0gaW5zdGFuY2UtPmRlc2M7CisgICAgICAgICAgICAgICAgICAgICBsYXlv dXRbaSsrXSA9ICJcbiI7CisgICAgICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICAgICAgCisr CisgICAgICAgICAgICAgICAgIGlmKGZyaWVuZGx5KQorICAgICAgICAgICAgICAgICB7CisgICAg ICAgICAgICAgICAgICAgICBmcmVlX3B0cnNbaisrXSA9IGxheW91dFtpKytdID0KK0BAIC04Mzks MTMgKzgzOSwxMyBAQCBnbG9idXNfbF9lcnJvcl9tdWx0aXBsZV9wcmludCgKKyAgICAgICAgICAg ICAgICAgfQorICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgIHsKKy0gICAg ICAgICAgICAgICAgICAgIGZyZWVfcHRyc1tqKytdID0gbGF5b3V0W2krK10gPSAKKysgICAgICAg ICAgICAgICAgICAgIGZyZWVfcHRyc1tqKytdID0gbGF5b3V0W2krK10gPQorICAgICAgICAgICAg ICAgICAgICAgICAgIGdsb2J1c19lcnJvcl9wcmludF9jaGFpbihpbnN0YW5jZS0+Y2hhaW4pOwor ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgfQorICAgICAgICAgfQorICAgICB9Cist ICAgIAorKworICAgICBlcnJvcl9zdHJpbmcgPSBsYXlvdXQgPyBnbG9idXNfbGliY19qb2luKChj b25zdCBjaGFyICoqKSBsYXlvdXQsIGkpIDogTlVMTDsKKyAgICAgaWYobGF5b3V0KQorICAgICB7 CitAQCAtODkyLDcgKzg5Miw3IEBAIGdsb2J1c19sX2FkZF9lcnJvcl9zdHJpbmcoCisgICAgICAg ICAgICAgIGxheW91dFsoKmlkeCkrK10gPSAiXG4iOworICAgICAgICAgIH0KKyAgICAgfQorLSAg ICAKKysKKyAgICAgcmV0dXJuIG1zZzsKKyB9CisgCitAQCAtOTA4LDcgKzkwOCw3IEBAIGdsb2J1 c19sX2FkZF9lcnJvcl9zdHJpbmcoCisgICogQGluZ3JvdXAgZ2xvYnVzX2dlbmVyaWNfZXJyb3Jf dXRpbGl0eQorICAqCisgICogSWYgdGhlIEdMT0JVU19FUlJPUl9WRVJCT1NFIGVudiBpcyBzZXQs IHRoZW4gdGhlIHJlc3VsdCBmcm9tCistICogZ2xvYnVzX2Vycm9yX3ByaW50X2NoYWluKCkgd2ls bCBiZSB1c2VkLiAKKysgKiBnbG9idXNfZXJyb3JfcHJpbnRfY2hhaW4oKSB3aWxsIGJlIHVzZWQu CisgICoKKyAgKiBAcGFyYW0gZXJyb3IKKyAgKiAgICAgICAgVGhlIGVycm9yIHRvIHByaW50CitA QCAtOTMyLDE2ICs5MzIsMTYgQEAgZ2xvYnVzX2Vycm9yX3ByaW50X2ZyaWVuZGx5KAorICAgICBj aGFyICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3R0b20zID0gTlVMTDsKKyAgICAg Y2hhciAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyYm9zZSA9IE5VTEw7CisgICAg IGdsb2J1c19ib29sX3QgICAgICAgICAgICAgICAgICAgICAgIHZlcmJvc2VfYWxsb3dlZCA9IEdM T0JVU19UUlVFOworLSAgICAKKysKKyAgICAgaWYoIWVycm9yKQorICAgICB7CisgICAgICAgICBy ZXR1cm4gTlVMTDsKKyAgICAgfQorLSAgICAKKysKKyAgICAgaWYoZ2xvYnVzX2lfZXJyb3JfdmVy Ym9zZSkKKyAgICAgeworICAgICAgICAgaW50ICogICAgICAgICAgICAgICAgICAgICAgICAgICBp bl9wcm9ncmVzczsKKy0gICAgICAgIAorKworICAgICAgICAgaW5fcHJvZ3Jlc3MgPSAoaW50ICop CisgICAgICAgICAgICAgZ2xvYnVzX3RocmVhZF9nZXRzcGVjaWZpYyhnbG9idXNfaV9lcnJvcl92 ZXJib3NlX2tleSk7CisgICAgICAgICBpZihpbl9wcm9ncmVzcykKK0BAIC05NTQsNyArOTU0LDcg QEAgZ2xvYnVzX2Vycm9yX3ByaW50X2ZyaWVuZGx5KAorICAgICAgICAgICAgICAgICBnbG9idXNf aV9lcnJvcl92ZXJib3NlX2tleSwgKGludCAqKSAweDAxKTsKKyAgICAgICAgIH0KKyAgICAgfQor LSAgICAKKysKKyAgICAgaWYoZ2xvYnVzX2lfZXJyb3JfdmVyYm9zZSAmJiB2ZXJib3NlX2FsbG93 ZWQpCisgICAgIHsKKyAgICAgICAgIHZlcmJvc2UgPSBnbG9idXNfZXJyb3JfcHJpbnRfY2hhaW4o ZXJyb3IpOworQEAgLTk2Miw3ICs5NjIsNyBAQCBnbG9idXNfZXJyb3JfcHJpbnRfZnJpZW5kbHko CisgICAgICAgICB7CisgICAgICAgICAgICAgbGF5b3V0W2krK10gPSB2ZXJib3NlOworICAgICAg ICAgfQorLSAgICAgICAgCisrCisgICAgICAgICBnbG9idXNfdGhyZWFkX3NldHNwZWNpZmljKGds b2J1c19pX2Vycm9yX3ZlcmJvc2Vfa2V5LCBOVUxMKTsKKyAgICAgfQorICAgICBlbHNlCitAQCAt OTcwLDcgKzk3MCw3IEBAIGdsb2J1c19lcnJvcl9wcmludF9mcmllbmRseSgKKyAgICAgICAgIGds b2J1c19vYmplY3RfdCAqICAgICAgICAgICAgICAgc291cmNlX2Vycm9yMSA9IE5VTEw7CisgICAg ICAgICBnbG9idXNfb2JqZWN0X3QgKiAgICAgICAgICAgICAgIHNvdXJjZV9lcnJvcjIgPSBOVUxM OworICAgICAgICAgZ2xvYnVzX29iamVjdF90ICogICAgICAgICAgICAgICBzb3VyY2VfZXJyb3Iz OworLSAgICAgICAgCisrCisgICAgICAgICAvKiBoZXJlIHdlIG9ubHkgdGFrZSB0aGUgdG9wIGVy cm9yIGFuZCB0aGUgYm90dG9tIDMgKi8KKyAgICAgICAgIGN1cnJlbnRfZXJyb3IgPSBlcnJvcjsK KyAgICAgICAgIGRvCitAQCAtOTg2LDkgKzk4Niw5IEBAIGdsb2J1c19lcnJvcl9wcmludF9mcmll bmRseSgKKyAgICAgICAgICAgICAgICAgICAgIGdsb2J1c19vYmplY3RfZ2V0X3R5cGUoY3VycmVu dF9lcnJvcikpOworICAgICAgICAgICAgIH0KKyAgICAgICAgIH0gd2hpbGUoKGN1cnJlbnRfZXJy b3IgPSBnbG9idXNfZXJyb3JfZ2V0X2NhdXNlKGN1cnJlbnRfZXJyb3IpKSk7CistICAgICAgICAK KysKKyAgICAgICAgIHRvcCA9IGdsb2J1c19sX2FkZF9lcnJvcl9zdHJpbmcobGF5b3V0LCAmaSwg ZXJyb3IpOworLSAgICAgICAgCisrCisgICAgICAgICBpZihlcnJvciAhPSBzb3VyY2VfZXJyb3Ix KQorICAgICAgICAgeworICAgICAgICAgICAgIGlmKGVycm9yICE9IHNvdXJjZV9lcnJvcjIpCitA QCAtOTk4LDIyICs5OTgsMjIgQEAgZ2xvYnVzX2Vycm9yX3ByaW50X2ZyaWVuZGx5KAorICAgICAg ICAgICAgICAgICAgICAgYm90dG9tMyA9IGdsb2J1c19sX2FkZF9lcnJvcl9zdHJpbmcoCisgICAg ICAgICAgICAgICAgICAgICAgICAgbGF5b3V0LCAmaSwgc291cmNlX2Vycm9yMyk7CisgICAgICAg ICAgICAgICAgIH0KKy0gCisrCisgICAgICAgICAgICAgICAgIGJvdHRvbTIgPSBnbG9idXNfbF9h ZGRfZXJyb3Jfc3RyaW5nKGxheW91dCwgJmksIHNvdXJjZV9lcnJvcjIpOworICAgICAgICAgICAg IH0KKy0gICAgICAgICAgICAKKysKKyAgICAgICAgICAgICBib3R0b20xID0gZ2xvYnVzX2xfYWRk X2Vycm9yX3N0cmluZyhsYXlvdXQsICZpLCBzb3VyY2VfZXJyb3IxKTsKKyAgICAgICAgIH0KKy0g ICAgICAgIAorKworICAgICAgICAgaWYoZnJpZW5kbHkgJiYgKmZyaWVuZGx5KQorICAgICAgICAg eworICAgICAgICAgICAgIGxheW91dFtpKytdID0gZnJpZW5kbHk7CisgICAgICAgICAgICAgbGF5 b3V0W2krK10gPSAiXG4iOworICAgICAgICAgfQorICAgICB9CistICAgIAorKworICAgICBlcnJv cl9zdHJpbmcgPSBnbG9idXNfbGliY19qb2luKChjb25zdCBjaGFyICoqKSBsYXlvdXQsIGkpOwor LSAgICAKKysKKyAgICAgaWYodG9wKQorICAgICB7CisgICAgICAgICBnbG9idXNfZnJlZSh0b3Ap OworQEAgLTEwMzgsNyArMTAzOCw3IEBAIGdsb2J1c19lcnJvcl9wcmludF9mcmllbmRseSgKKyAg ICAgeworICAgICAgICAgZ2xvYnVzX2ZyZWUodmVyYm9zZSk7CisgICAgIH0KKy0gICAgCisrCisg ICAgIHJldHVybiBlcnJvcl9zdHJpbmc7CisgfS8qIGdsb2J1c19lcnJvcl9wcmludF9mcmllbmRs eSAqLworIC8qQH0qLworQEAgLTEwNTMsNyArMTA1Myw3IEBAIGdsb2J1c19lcnJvcl9wcmludF9m cmllbmRseSgKKyAgKiBDb25zdHJ1Y3QgYSBjb250YWluZXIgb2JqZWN0IGZvciBtdWx0aXBsZSBl cnJvciBjaGFpbnMuICBVc2VmdWwgd2hlbgorICAqIGFuIGFwcGxpY2F0aW9uIHRyaWVzIG1hbnkg dGhpbmdzIChhbmQgZWFjaCBmYWlscykgYmVmb3JlIGZpbmFsbHkKKyAgKiBnaXZpbmcgdXA7Cist ICogCisrICoKKyAgKiBVc2UgZ2xvYnVzX2Vycm9yX211dGxpcGxlX2FkZF9jaGFpbigpIHRvIGFk ZCBlcnJvciBvYmplY3RzL2NoYWlucyB0byB0aGlzCisgICogb2JqZWN0LgorICAqCitAQCAtMTA3 MSw3ICsxMDcxLDcgQEAgZ2xvYnVzX2Vycm9yX3ByaW50X2ZyaWVuZGx5KAorICAqICAgICAgICBU aGUgcmVzdWx0aW5nIGVycm9yIG9iamVjdC4gSXQgaXMgdGhlIHVzZXIncyByZXNwb25zaWJpbGl0 eQorICAqICAgICAgICB0byBldmVudHVhbGx5IGZyZWUgdGhpcyBvYmplY3QgdXNpbmcgZ2xvYnVz X29iamVjdF9mcmVlKCkuIEEKKyAgKiAgICAgICAgZ2xvYnVzX3Jlc3VsdF90IG1heSBiZSBvYnRh aW5lZCBieSBjYWxsaW5nCistICogICAgICAgIGdsb2J1c19lcnJvcl9wdXQoKSBvbiB0aGlzIG9i amVjdC4gIAorKyAqICAgICAgICBnbG9idXNfZXJyb3JfcHV0KCkgb24gdGhpcyBvYmplY3QuCisg ICovCisgZ2xvYnVzX29iamVjdF90ICoKKyBnbG9idXNfZXJyb3JfY29uc3RydWN0X211bHRpcGxl KAorQEAgLTEwODMsNTggKzEwODMsNTggQEAgZ2xvYnVzX2Vycm9yX2NvbnN0cnVjdF9tdWx0aXBs ZSgKKyAgICAgZ2xvYnVzX29iamVjdF90ICogICAgICAgICAgICAgICAgICAgbmV3ZXJyb3I7Cisg ICAgIGdsb2J1c19vYmplY3RfdCAqICAgICAgICAgICAgICAgICAgIGVycm9yOworICAgICBnbG9i dXNfbF9lcnJvcl9tdWx0aXBsZV90ICogICAgICAgICBkYXRhOworLSAgICAKKysKKyAgICAgbmV3 ZXJyb3IgPSBnbG9idXNfb2JqZWN0X2NvbnN0cnVjdChHTE9CVVNfRVJST1JfVFlQRV9NVUxUSVBM RSk7CisgICAgIGlmKCFuZXdlcnJvcikKKyAgICAgeworICAgICAgICAgZ290byBlcnJvcl9vYmpl Y3Q7CisgICAgIH0KKy0gICAgCisrCisgICAgIGRhdGEgPSAoZ2xvYnVzX2xfZXJyb3JfbXVsdGlw bGVfdCAqKQorICAgICAgICAgZ2xvYnVzX21hbGxvYyhzaXplb2YoZ2xvYnVzX2xfZXJyb3JfbXVs dGlwbGVfdCkpOworICAgICBpZighZGF0YSkKKyAgICAgeworICAgICAgICAgZ290byBlcnJvcl9k YXRhOworICAgICB9CistICAgIAorKworICAgICBkYXRhLT50eXBlID0gdHlwZTsKKyAgICAgZGF0 YS0+Y2hhaW5zID0gTlVMTDsKKyAgICAgZGF0YS0+ZGVzYyA9IE5VTEw7CistICAgIAorKworICAg ICBpZihmbXQpCisgICAgIHsKKyAgICAgICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc2l6ZTsKKyAgICAgICAgIHZhX2xpc3QgICAgICAgICAgICAgICAgICAgICAgICAgYXA7Cisg ICAgICAgICB2YV9saXN0ICAgICAgICAgICAgICAgICAgICAgICAgIGFwX2NvcHk7CistICAgICAg ICAKKysKKyAgICAgICAgIHZhX3N0YXJ0KGFwLCBmbXQpOworLSAgICAgICAgCisrCisgICAgICAg ICBnbG9idXNfbGliY192YV9jb3B5KGFwX2NvcHksIGFwKTsKKyAgICAgICAgIHNpemUgPSBnbG9i dXNfbGliY192cHJpbnRmX2xlbmd0aChmbXQsIGFwX2NvcHkpOworICAgICAgICAgdmFfZW5kKGFw X2NvcHkpOworLSAgICAgICAgCisrCisgICAgICAgICBkYXRhLT5kZXNjID0gKGNoYXIgKikgZ2xv YnVzX21hbGxvYyhzaXplICsgMSk7CisgICAgICAgICBpZihkYXRhLT5kZXNjKQorICAgICAgICAg eworICAgICAgICAgICAgIGdsb2J1c19saWJjX3ZzbnByaW50ZihkYXRhLT5kZXNjLCBzaXplICsg MSwgZm10LCBhcCk7CisgICAgICAgICB9CistICAgICAgICAKKysKKyAgICAgICAgIHZhX2VuZChh cCk7CisgICAgIH0KKy0gICAgCisrCisgICAgIGdsb2J1c19vYmplY3Rfc2V0X2xvY2FsX2luc3Rh bmNlX2RhdGEobmV3ZXJyb3IsIGRhdGEpOworICAgICBlcnJvciA9IGdsb2J1c19lcnJvcl9pbml0 aWFsaXplX2Jhc2UobmV3ZXJyb3IsIGJhc2Vfc291cmNlLCBOVUxMKTsKKyAgICAgaWYoIWVycm9y KQorICAgICB7CisgICAgICAgICBnb3RvIGVycm9yX2NvbnN0cnVjdDsKKyAgICAgfQorLSAgICAK KysKKyAgICAgcmV0dXJuIGVycm9yOworIAorIGVycm9yX2NvbnN0cnVjdDoKKyBlcnJvcl9kYXRh OgorICAgICBnbG9idXNfb2JqZWN0X2ZyZWUobmV3ZXJyb3IpOworLSAgICAKKysKKyBlcnJvcl9v YmplY3Q6CisgICAgIHJldHVybiBOVUxMOworIH0KK0BAIC0xMTYyLDcgKzExNjIsNyBAQCBnbG9i dXNfZXJyb3JfbXV0bGlwbGVfYWRkX2NoYWluKAorIHsKKyAgICAgZ2xvYnVzX2xfZXJyb3JfbXVs dGlwbGVfdCAqICAgICAgICAgZGF0YTsKKyAgICAgZ2xvYnVzX2xfZXJyb3JfbXVsdGlwbGVfY2hh aW5fdCAqICAgaW5zdGFuY2U7CistICAgIAorKworICAgICBkYXRhID0gKGdsb2J1c19sX2Vycm9y X211bHRpcGxlX3QgKikKKyAgICAgICAgIGdsb2J1c19vYmplY3RfZ2V0X2xvY2FsX2luc3RhbmNl X2RhdGEobXVsdGlwbGVfZXJyb3IpOworICAgICBpZihkYXRhICYmIGNoYWluKQorQEAgLTExNzMs MjggKzExNzMsMjggQEAgZ2xvYnVzX2Vycm9yX211dGxpcGxlX2FkZF9jaGFpbigKKyAgICAgICAg IHsKKyAgICAgICAgICAgICBpbnN0YW5jZS0+Y2hhaW4gPSBjaGFpbjsKKyAgICAgICAgICAgICBp bnN0YW5jZS0+ZGVzYyA9IE5VTEw7CistICAgICAgICAgICAgCisrCisgICAgICAgICAgICAgaWYo Zm10KQorICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgaW50ICAgICAgICAgICAgICAg ICAgICAgc2l6ZTsKKyAgICAgICAgICAgICAgICAgdmFfbGlzdCAgICAgICAgICAgICAgICAgYXA7 CisgICAgICAgICAgICAgICAgIHZhX2xpc3QgICAgICAgICAgICAgICAgIGFwX2NvcHk7CistICAg ICAgICAgICAgICAgIAorKworICAgICAgICAgICAgICAgICB2YV9zdGFydChhcCwgZm10KTsKKy0g ICAgICAgICAgICAgICAgCisrCisgICAgICAgICAgICAgICAgIGdsb2J1c19saWJjX3ZhX2NvcHko YXBfY29weSwgYXApOworICAgICAgICAgICAgICAgICBzaXplID0gZ2xvYnVzX2xpYmNfdnByaW50 Zl9sZW5ndGgoZm10LCBhcF9jb3B5KTsKKyAgICAgICAgICAgICAgICAgdmFfZW5kKGFwX2NvcHkp OworLSAgICAgICAgICAgICAgICAKKysKKyAgICAgICAgICAgICAgICAgaW5zdGFuY2UtPmRlc2Mg PSAoY2hhciAqKSBnbG9idXNfbWFsbG9jKHNpemUgKyAxKTsKKyAgICAgICAgICAgICAgICAgaWYo aW5zdGFuY2UtPmRlc2MpCisgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg IGdsb2J1c19saWJjX3ZzbnByaW50ZihpbnN0YW5jZS0+ZGVzYywgc2l6ZSArIDEsIGZtdCwgYXAp OworICAgICAgICAgICAgICAgICB9CistICAgICAgICAgICAgICAgIAorKworICAgICAgICAgICAg ICAgICB2YV9lbmQoYXApOworICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICAKKysKKyAgICAg ICAgICAgICBnbG9idXNfbGlzdF9pbnNlcnQoJmRhdGEtPmNoYWlucywgaW5zdGFuY2UpOworICAg ICAgICAgfQorICAgICB9CitAQCAtMTIxNSwxMyArMTIxNSwxMyBAQCBnbG9idXNfZXJyb3JfbXVs dGlwbGVfcmVtb3ZlX2NoYWluKAorIHsKKyAgICAgZ2xvYnVzX2xfZXJyb3JfbXVsdGlwbGVfdCAq ICAgICAgICAgZGF0YTsKKyAgICAgZ2xvYnVzX29iamVjdF90ICogICAgICAgICAgICAgICAgICAg Y2hhaW4gPSBOVUxMOworLSAgICAKKysKKyAgICAgZGF0YSA9IChnbG9idXNfbF9lcnJvcl9tdWx0 aXBsZV90ICopCisgICAgICAgICBnbG9idXNfb2JqZWN0X2dldF9sb2NhbF9pbnN0YW5jZV9kYXRh KG11bHRpcGxlX2Vycm9yKTsKKyAgICAgaWYoZGF0YSAmJiBkYXRhLT5jaGFpbnMpCisgICAgIHsK KyAgICAgICAgIGdsb2J1c19sX2Vycm9yX211bHRpcGxlX2NoYWluX3QgKiBpbnN0YW5jZTsKKy0g ICAgICAgIAorKworICAgICAgICAgaW5zdGFuY2UgPSAoZ2xvYnVzX2xfZXJyb3JfbXVsdGlwbGVf Y2hhaW5fdCAqKQorICAgICAgICAgICAgIGdsb2J1c19saXN0X3JlbW92ZSgmZGF0YS0+Y2hhaW5z LCBkYXRhLT5jaGFpbnMpOworICAgICAgICAgY2hhaW4gPSBpbnN0YW5jZS0+Y2hhaW47CitAQCAt MTIzMSw3ICsxMjMxLDcgQEAgZ2xvYnVzX2Vycm9yX211bHRpcGxlX3JlbW92ZV9jaGFpbigKKyAg ICAgICAgIH0KKyAgICAgICAgIGdsb2J1c19mcmVlKGluc3RhbmNlKTsKKyAgICAgfQorLSAgICAK KysKKyAgICAgcmV0dXJuIGNoYWluOworIH0KKyAKK0BAIC0xMjQzLDI4ICsxMjQzLDI4IEBAIGds b2J1c19sX2Vycm9yX211bHRpcGxlX2NvcHkoCisgeworICAgICBnbG9idXNfbF9lcnJvcl9tdWx0 aXBsZV90ICogICAgICAgICBjb3B5OworICAgICBnbG9idXNfbF9lcnJvcl9tdWx0aXBsZV90ICog ICAgICAgICBzb3VyY2U7CistICAgIAorKworICAgICBzb3VyY2UgPSAoZ2xvYnVzX2xfZXJyb3Jf bXVsdGlwbGVfdCAqKSBzcmM7CistICAgIGNvcHkgPSAoZ2xvYnVzX2xfZXJyb3JfbXVsdGlwbGVf dCAqKSAKKysgICAgY29weSA9IChnbG9idXNfbF9lcnJvcl9tdWx0aXBsZV90ICopCisgICAgICAg ICBnbG9idXNfbWFsbG9jKHNpemVvZihnbG9idXNfbF9lcnJvcl9tdWx0aXBsZV90KSk7CisgICAg IGlmKGNvcHkpCisgICAgIHsKKyAgICAgICAgIGdsb2J1c19saXN0X3QgKiAgICAgICAgICAgICAg ICAgdG1wOworLSAgICAgICAgCisrCisgICAgICAgICBjb3B5LT50eXBlID0gc291cmNlLT50eXBl OworICAgICAgICAgY29weS0+Y2hhaW5zID0gZ2xvYnVzX2xpc3RfY29weShzb3VyY2UtPmNoYWlu cyk7CisgICAgICAgICBjb3B5LT5kZXNjID0gc291cmNlLT5kZXNjID8gZ2xvYnVzX2xpYmNfc3Ry ZHVwKHNvdXJjZS0+ZGVzYykgOiBOVUxMOworLSAgICAgICAgCisrCisgICAgICAgICBmb3IodG1w ID0gY29weS0+Y2hhaW5zOworLSAgICAgICAgICAgICFnbG9idXNfbGlzdF9lbXB0eSh0bXApOyAK KysgICAgICAgICAgICAhZ2xvYnVzX2xpc3RfZW1wdHkodG1wKTsKKyAgICAgICAgICAgICB0bXAg PSBnbG9idXNfbGlzdF9yZXN0KHRtcCkpCisgICAgICAgICB7CisgICAgICAgICAgICAgZ2xvYnVz X2xfZXJyb3JfbXVsdGlwbGVfY2hhaW5fdCAqIGluc3RhbmNlOworICAgICAgICAgICAgIGdsb2J1 c19sX2Vycm9yX211bHRpcGxlX2NoYWluX3QgKiBuZXdfaW5zdGFuY2U7CistICAgICAgICAgICAg CisrCisgICAgICAgICAgICAgaW5zdGFuY2UgPSAoZ2xvYnVzX2xfZXJyb3JfbXVsdGlwbGVfY2hh aW5fdCAqKQorICAgICAgICAgICAgICAgICBnbG9idXNfbGlzdF9maXJzdCh0bXApOworLSAgICAg ICAgICAgICAgICAKKysKKyAgICAgICAgICAgICBuZXdfaW5zdGFuY2UgPSAoZ2xvYnVzX2xfZXJy b3JfbXVsdGlwbGVfY2hhaW5fdCAqKQorICAgICAgICAgICAgICAgICBnbG9idXNfbWFsbG9jKHNp emVvZihnbG9idXNfbF9lcnJvcl9tdWx0aXBsZV9jaGFpbl90KSk7CisgICAgICAgICAgICAgaWYo bmV3X2luc3RhbmNlKQorQEAgLTEyNzYsNyArMTI3Niw3IEBAIGdsb2J1c19sX2Vycm9yX211bHRp cGxlX2NvcHkoCisgICAgICAgICAgICAgZ2xvYnVzX2xpc3RfcmVwbGFjZV9maXJzdCh0bXAsIG5l d19pbnN0YW5jZSk7CisgICAgICAgICB9CisgICAgIH0KKy0gICAgCisrCisgICAgICpkc3QgPSBj b3B5OworIH0KKyAKK0BAIC0xMjg2LDE0ICsxMjg2LDE0IEBAIGdsb2J1c19sX2Vycm9yX211bHRp cGxlX2Rlc3Ryb3lfYWxsKAorICAgICB2b2lkICogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBkYXRhKQorIHsKKyAgICAgZ2xvYnVzX2xfZXJyb3JfbXVsdGlwbGVfY2hhaW5fdCAqIGluc3Rh bmNlOworLSAgICAKKysKKyAgICAgaWYoIWRhdGEpCisgICAgIHsKKyAgICAgICAgIHJldHVybjsK KyAgICAgfQorLSAgICAKKysKKyAgICAgaW5zdGFuY2UgPSAoZ2xvYnVzX2xfZXJyb3JfbXVsdGlw bGVfY2hhaW5fdCAqKSBkYXRhOworLSAgICAKKysKKyAgICAgZ2xvYnVzX29iamVjdF9mcmVlKGlu c3RhbmNlLT5jaGFpbik7CisgICAgIGlmKGluc3RhbmNlLT5kZXNjKQorICAgICB7CitAQCAtMTMw OCw3ICsxMzA4LDcgQEAgZ2xvYnVzX2xfZXJyb3JfbXVsdGlwbGVfZnJlZSgKKyAgICAgdm9pZCAq ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSkKKyB7CisgICAgIGdsb2J1c19sX2Vy cm9yX211bHRpcGxlX3QgKiAgICAgICAgIGQ7CistICAgIAorKworICAgICBkID0gKGdsb2J1c19s X2Vycm9yX211bHRpcGxlX3QgKikgZGF0YTsKKyAgICAgaWYoZC0+Y2hhaW5zKQorICAgICB7CitA QCAtMTMzMCw3ICsxMzMwLDcgQEAgZ2xvYnVzX2xfZXJyb3JfbXVsdGlwbGVfcHJpbnRhYmxlKAor ICAgICByZXR1cm4gZ2xvYnVzX2xfZXJyb3JfbXVsdGlwbGVfcHJpbnQoZXJyb3IsIEdMT0JVU19G QUxTRSk7CisgfQorIAorLWNvbnN0IGdsb2J1c19vYmplY3RfdHlwZV90IEdMT0JVU19FUlJPUl9U WVBFX01VTFRJUExFX0RFRklOSVRJT04gPSAKKytjb25zdCBnbG9idXNfb2JqZWN0X3R5cGVfdCBH TE9CVVNfRVJST1JfVFlQRV9NVUxUSVBMRV9ERUZJTklUSU9OID0KKyBnbG9idXNfZXJyb3JfdHlw ZV9zdGF0aWNfaW5pdGlhbGl6ZXIgKAorICAgICBHTE9CVVNfRVJST1JfVFlQRV9CQVNFLAorICAg ICBnbG9idXNfbF9lcnJvcl9tdWx0aXBsZV9jb3B5LAorZGlmZiAtLWdpdCBhL2NvbW1vbi9zb3Vy Y2UvbGlicmFyeS9nbG9idXNfbGliYy5jIGIvY29tbW9uL3NvdXJjZS9saWJyYXJ5L2dsb2J1c19s aWJjLmMKK2luZGV4IDAzMzI3ZGNlMy4uZTllODE4OTY3IDEwMDY0NAorLS0tIGEvY29tbW9uL3Nv dXJjZS9saWJyYXJ5L2dsb2J1c19saWJjLmMKKysrKyBiL2NvbW1vbi9zb3VyY2UvbGlicmFyeS9n bG9idXNfbGliYy5jCitAQCAtMjIsNyArMjIsNyBAQAorICNlbmRpZiAvKiBHTE9CVVNfRE9OVF9E T0NVTUVOVF9JTlRFUk5BTCAqLworIAorIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0JCQkgICAg IEluY2x1ZGUgaGVhZGVyIGZpbGVzCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmNs dWRlIGhlYWRlciBmaWxlcworICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAjaW5jbHVkZSAiZ2xv YnVzX2lfY29tbW9uX2NvbmZpZy5oIgorICNpbmNsdWRlICJnbG9idXNfY29tbW9uLmgiCitAQCAt NTYsMTMgKzU2LDEzIEBAIGV4dGVybiBpbnQgaF9lcnJubzsKKyAKKyBleHRlcm4gZ2xvYnVzX2Jv b2xfdCBnbG9idXNfaV9tb2R1bGVfaW5pdGlhbGl6ZWQ7CisgLyoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KgorLQkJICAgICAgIERlZmluZSBtb2R1bGUgc3BlY2lmaWMgdmFyaWFibGVzCisrICAgICAgICAg ICAgICAgICAgICAgICBEZWZpbmUgbW9kdWxlIHNwZWNpZmljIHZhcmlhYmxlcworICoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKi8KKyAvKiBtdXRleCB0byBtYWtlIGdsb2J1c19saWJjIHJlZW50cmFudCAq LworIGdsb2J1c19tdXRleF90IGdsb2J1c19saWJjX211dGV4OworIAorIC8qKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioKKy0JCSAgICAgIE1vZHVsZSBzcGVjaWZpYyBmdW5jdGlvbiBwcm90b3R5cGVzCisr ICAgICAgICAgICAgICAgICAgICAgIE1vZHVsZSBzcGVjaWZpYyBmdW5jdGlvbiBwcm90b3R5cGVz CisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqLworIHN0YXRpYyBpbnQKKyBnbG9idXNfbF9saWJjX2Nv cHlfaG9zdGVudF9kYXRhX3RvX2J1ZmZlcigKK0BAIC0xMjIsOSArMTIyLDkgQEAgUmV0dXJuczoK KyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqLworIGludAorIGdsb2J1c19saWJjX3N0cm5jYXNlY21w KAorLQljb25zdCBjaGFyICogICAgICAgICAgICAgICAgICAgICAgICAgICAgczEsCistCWNvbnN0 IGNoYXIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMiwKKy0JZ2xvYnVzX3NpemVfdCAg ICAgICAgICAgICAgICAgICAgICAgICAgIG4pCisrICAgICAgICBjb25zdCBjaGFyICogICAgICAg ICAgICAgICAgICAgICAgICAgICAgczEsCisrICAgICAgICBjb25zdCBjaGFyICogICAgICAgICAg ICAgICAgICAgICAgICAgICAgczIsCisrICAgICAgICBnbG9idXNfc2l6ZV90ICAgICAgICAgICAg ICAgICAgICAgICAgICAgbikKKyB7CisgICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICByYzsKKyAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHNhdmVfZXJybm87CitAQCAtMTQ0LDM1ICsxNDQsMzUgQEAgZ2xvYnVzX2xpYmNfc3RybmNh c2VjbXAoCisgCisgICAgICAgICBmb3IoY3RyID0gMDsgY3RyIDwgbjsgY3RyKyspCisgICAgICAg ICB7CistCSAgICAgICAgaWYoczJbY3RyXSA9PSAnXDAnICYmIHMxW2N0cl0gPT0gJ1wwJykKKy0J ICAgICAgICB7CistCSAgICAgICAgICAgIHJjID0gMDsKKy0JICAgICAgICAgICAgZ290byBleGl0 OworLQkgICAgICAgIH0KKy0gICAgICAgIAllbHNlIGlmKHMyW2N0cl0gPT0gJ1wwJykKKy0JICAg ICAgICB7CistCSAgICAgICAgICAgIHJjID0gLTE7CistCSAgICAgICAgICAgIGdvdG8gZXhpdDsK Ky0JICAgICAgICB9CistCSAgICAgICAgZWxzZSBpZihzMVtjdHJdID09ICdcMCcpCistCSAgICAg ICAgeworLQkgICAgICAgICAgICByYyA9IDE7CistCSAgICAgICAgICAgIGdvdG8gZXhpdDsKKy0J ICAgICAgICB9CisrICAgICAgICAgICAgICAgIGlmKHMyW2N0cl0gPT0gJ1wwJyAmJiBzMVtjdHJd ID09ICdcMCcpCisrICAgICAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgICAgIHJjID0g MDsKKysgICAgICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKKysgICAgICAgICAgICAgICAgfQor KyAgICAgICAgICAgICAgICBlbHNlIGlmKHMyW2N0cl0gPT0gJ1wwJykKKysgICAgICAgICAgICAg ICAgeworKyAgICAgICAgICAgICAgICAgICAgcmMgPSAtMTsKKysgICAgICAgICAgICAgICAgICAg IGdvdG8gZXhpdDsKKysgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgICAgICBlbHNlIGlm KHMxW2N0cl0gPT0gJ1wwJykKKysgICAgICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICAg ICAgcmMgPSAxOworKyAgICAgICAgICAgICAgICAgICAgZ290byBleGl0OworKyAgICAgICAgICAg ICAgICB9CisgICAgICAgICAgICAgZWxzZQorLQkgICAgICAgIHsKKysgICAgICAgICAgICAgICAg eworICAgICAgICAgICAgICAgICBjaDEgPSB0b3VwcGVyKHMyW2N0cl0pOworICAgICAgICAgICAg ICAgICBjaDIgPSB0b3VwcGVyKHMxW2N0cl0pOworICAgICAgICAgICAgICAgICBpZihjaDIgPiBj aDEpCistCQkgICAgICAgIHsKKysgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAg ICAgICAgICAgICByYyA9IDE7CisgICAgICAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7CistCQkg ICAgICAgIH0KKysgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgIGVs c2UgaWYoY2gyIDwgY2gxKQorLQkJICAgICAgICB7CisrICAgICAgICAgICAgICAgICAgICAgICAg eworICAgICAgICAgICAgICAgICAgICAgcmMgPSAtMTsKKyAgICAgICAgICAgICAgICAgICAgIGdv dG8gZXhpdDsKKy0JCSAgICAgICAgfQorKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg ICAgICAgICB9CisgICAgICAgICB9CisgICAgICAgICByYyA9IDA7CitAQCAtMjE1LDI2ICsyMTUs MjYgQEAgZ2xvYnVzX2xfbGliY192c25wcmludGYoY2hhciAqcywgc2l6ZV90IG4sIGNvbnN0IGNo YXIgKmZvcm1hdCwgdmFfbGlzdCBhcCkKKyAKKyAgICAgaWYgKCByYyA8IDAgKQorICAgICB7Cist CXJldHVybiByYzsKKysgICAgICAgIHJldHVybiByYzsKKyAgICAgfQorICAgICBlbHNlIGlmICgg cmMgPCBuICkKKyAgICAgeworLQlyZXR1cm4gdnNwcmludGYoIHMsIGZvcm1hdCwgYXAgKTsKKysg ICAgICAgIHJldHVybiB2c3ByaW50ZiggcywgZm9ybWF0LCBhcCApOworICAgICB9CisgICAgIGVs c2UKKyAgICAgeworLQljaGFyICpidWYgPSBtYWxsb2MoIHJjICsgMSApOworLQlpZiAoYnVmID09 IE5VTEwpCistCXsKKy0JICAgIHJldHVybiAtMTsKKy0JfQorLQlyYyA9IHZzcHJpbnRmKCBidWYs IGZvcm1hdCwgYXAgKTsKKy0Jc2F2ZV9lcnJubyA9IGVycm5vOworLQlzdHJuY3B5KCBzLCBidWYs IG4gLSAxICk7CistCXNbbiAtIDFdID0gJ1wwJzsKKy0JZnJlZSggYnVmICk7CistCWVycm5vID0g c2F2ZV9lcnJubzsKKy0JcmV0dXJuIHJjOworKyAgICAgICAgY2hhciAqYnVmID0gbWFsbG9jKCBy YyArIDEgKTsKKysgICAgICAgIGlmIChidWYgPT0gTlVMTCkKKysgICAgICAgIHsKKysgICAgICAg ICAgICByZXR1cm4gLTE7CisrICAgICAgICB9CisrICAgICAgICByYyA9IHZzcHJpbnRmKCBidWYs IGZvcm1hdCwgYXAgKTsKKysgICAgICAgIHNhdmVfZXJybm8gPSBlcnJubzsKKysgICAgICAgIHN0 cm5jcHkoIHMsIGJ1ZiwgbiAtIDEgKTsKKysgICAgICAgIHNbbiAtIDFdID0gJ1wwJzsKKysgICAg ICAgIGZyZWUoIGJ1ZiApOworKyAgICAgICAgZXJybm8gPSBzYXZlX2Vycm5vOworKyAgICAgICAg cmV0dXJuIHJjOworICAgICB9CisgfQorIAorQEAgLTI5Nyw3ICsyOTcsNyBAQCBnbG9idXNfbGli Y19zY2FuX29mZl90KGNoYXIgKiBzLCBnbG9idXNfb2ZmX3QgKiBvZmYsIGludCAqIGNvbnN1bWVk KQorIAorICAgICBpZihjb25zdW1lZCA9PSBHTE9CVVNfTlVMTCkKKyAgICAgeworLQljb25zdW1l ZCA9ICZkdW1teTsKKysgICAgICAgIGNvbnN1bWVkID0gJmR1bW15OworICAgICB9CisgICAgIGds b2J1c19saWJjX2xvY2soKTsKKyAKK0BAIC0zMjQsNyArMzI0LDcgQEAgZ2xvYnVzX2xpYmNfZ2V0 aG9zdG5hbWUoY2hhciAqbmFtZSwgaW50IGxlbikKKyAgICAgc3RhdGljIGdsb2J1c19tdXRleF90 ICAgICAgICAgICAgICAgZ2V0aG9zdG5hbWVfbXV0ZXg7CisgICAgIHN0YXRpYyBpbnQgICAgICAg ICAgICAgICAgICAgICAgICAgIGluaXRpYWxpemVkID0gR0xPQlVTX0ZBTFNFOworICAgICBjaGFy ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnY7CistICAgIAorKworICAgICBnbG9i dXNfbGliY19sb2NrKCk7CisgICAgIGlmKGluaXRpYWxpemVkID09IEdMT0JVU19GQUxTRSkKKyAg ICAgeworQEAgLTMzMyw3ICszMzMsNyBAQCBnbG9idXNfbGliY19nZXRob3N0bmFtZShjaGFyICpu YW1lLCBpbnQgbGVuKQorICAgICAgICAgaW5pdGlhbGl6ZWQgPSBHTE9CVVNfVFJVRTsKKyAgICAg fQorICAgICBnbG9idXNfbGliY191bmxvY2soKTsKKy0gICAgCisrCisgICAgIGdsb2J1c19tdXRl eF9sb2NrKCZnZXRob3N0bmFtZV9tdXRleCk7CisgCisgICAgIC8qIFRvRG86IFRoaXMgY2hhbmdl IHNob3VsZCBwZXJoYXBzIGJlIGFwcGxpZWQgdG8gdW5peCBzaWRlIGFzIHdlbGw/CitAQCAtMzQ2 LDIzICszNDYsMjMgQEAgZ2xvYnVzX2xpYmNfZ2V0aG9zdG5hbWUoY2hhciAqbmFtZSwgaW50IGxl bikKKyAgICAgaWYgKChlbnYgPSBnZXRlbnYoIkdMT0JVU19IT1NUTkFNRSIpKSAhPSBHTE9CVVNf TlVMTCkKKyAgICAgeworICAgICAgICAgc2l6ZV90IGhsZW4gPSBzdHJsZW4oZW52KTsKKy0gICAg CWlmIChobGVuIDwgKHNpemVfdCkgbGVuKQorLSAgICAJeworLSAgICAJICAgIHNpemVfdCBpOwor LSAgICAJICAgIHN0cmNweShuYW1lLCBlbnYpOworLSAgICAJICAgIGZvciAoaT0wOyBpIDwgaGxl bjsgaSsrKQorLSAgICAJCW5hbWVbaV0gPSB0b2xvd2VyKG5hbWVbaV0pOworLSAgICAJICAgIGds b2J1c19tdXRleF91bmxvY2soJmdldGhvc3RuYW1lX211dGV4KTsKKy0gICAgCSAgICByZXR1cm4g MDsKKy0gICAgCX0KKy0gICAgCWVsc2UKKy0gICAgCXsKKy0gICAgCSAgICBnbG9idXNfbXV0ZXhf dW5sb2NrKCZnZXRob3N0bmFtZV9tdXRleCk7CistICAgIAkgICAgZXJybm89RUZBVUxUOworLSAg ICAJICAgIHJldHVybigtMSk7CistICAgIAl9CistICAgIH0KKy0gICAgI2Vsc2UgICAgCisrICAg ICAgICBpZiAoaGxlbiA8IChzaXplX3QpIGxlbikKKysgICAgICAgIHsKKysgICAgICAgICAgICBz aXplX3QgaTsKKysgICAgICAgICAgICBzdHJjcHkobmFtZSwgZW52KTsKKysgICAgICAgICAgICBm b3IgKGk9MDsgaSA8IGhsZW47IGkrKykKKysgICAgICAgICAgICAgICAgbmFtZVtpXSA9IHRvbG93 ZXIobmFtZVtpXSk7CisrICAgICAgICAgICAgZ2xvYnVzX211dGV4X3VubG9jaygmZ2V0aG9zdG5h bWVfbXV0ZXgpOworKyAgICAgICAgICAgIHJldHVybiAwOworKyAgICAgICAgfQorKyAgICAgICAg ZWxzZQorKyAgICAgICAgeworKyAgICAgICAgICAgIGdsb2J1c19tdXRleF91bmxvY2soJmdldGhv c3RuYW1lX211dGV4KTsKKysgICAgICAgICAgICBlcnJubz1FRkFVTFQ7CisrICAgICAgICAgICAg cmV0dXJuKC0xKTsKKysgICAgICAgIH0KKysgICAgfQorKyAgICAjZWxzZQorICAgICBpZiAoaG9z dG5hbWVfbGVuZ3RoID09IDBVICYmCisgICAgICAgICAoZW52ID0gZ2V0ZW52KCJHTE9CVVNfSE9T VE5BTUUiKSkgIT0gR0xPQlVTX05VTEwpCisgICAgIHsKK0BAIC0zODIsNyArMzgyLDcgQEAgZ2xv YnVzX2xpYmNfZ2V0aG9zdG5hbWUoY2hhciAqbmFtZSwgaW50IGxlbikKKyAgICAgICAgICAgICBn bG9idXNfbXV0ZXhfdW5sb2NrKCZnZXRob3N0bmFtZV9tdXRleCk7CisgICAgICAgICAgICAgcmV0 dXJuKC0xKTsKKyAgICAgICAgIH0KKy0gICAgICAgIAorKworICAgICAgICAgaG9zdG5hbWVfbGVu Z3RoID0gc3RybGVuKGhvc3RuYW1lKTsKKyAgICAgICAgIGlmKHN0cmNocihob3N0bmFtZSwgJy4n KSAhPSBHTE9CVVNfTlVMTCkKKyAgICAgICAgIHsKK0BAIC0zOTUsMTMgKzM5NSwxMyBAQCBnbG9i dXNfbGliY19nZXRob3N0bmFtZShjaGFyICpuYW1lLCBpbnQgbGVuKQorICAgICAgICAgICAgIGds b2J1c19tdXRleF91bmxvY2soJmdldGhvc3RuYW1lX211dGV4KTsKKyAgICAgICAgICAgICByZXR1 cm4gMDsKKyAgICAgICAgIH0KKy0gICAgICAgIAorKworICAgICAgICAgbWVtc2V0KCZoaW50cywg MCwgc2l6ZW9mKGdsb2J1c19hZGRyaW5mb190KSk7CisgICAgICAgICBoaW50cy5haV9mbGFncyA9 IEdMT0JVU19BSV9DQU5PTk5BTUU7CisgICAgICAgICBoaW50cy5haV9mYW1pbHkgPSBBRl9VTlNQ RUM7CisgICAgICAgICBoaW50cy5haV9zb2NrdHlwZSA9IFNPQ0tfU1RSRUFNOworICAgICAgICAg aGludHMuYWlfcHJvdG9jb2wgPSAwOworLSAgICAgICAgCisrCisgICAgICAgICByZXN1bHQgPSBn bG9idXNfbGliY19nZXRhZGRyaW5mbyhob3N0bmFtZSwgTlVMTCwgJmhpbnRzLCAmYWRkcmluZm8p OworICAgICAgICAgaWYocmVzdWx0ID09IEdMT0JVU19TVUNDRVNTKQorICAgICAgICAgeworQEAg LTQxMCw3ICs0MTAsNyBAQCBnbG9idXNfbGliY19nZXRob3N0bmFtZShjaGFyICpuYW1lLCBpbnQg bGVuKQorICAgICAgICAgICAgICAgICBzdHJuY3B5KGhvc3RuYW1lLCBhZGRyaW5mby0+YWlfY2Fu b25uYW1lLCBzaXplb2YoaG9zdG5hbWUpKTsKKyAgICAgICAgICAgICAgICAgaG9zdG5hbWVbc2l6 ZW9mKGhvc3RuYW1lKSAtIDFdID0gMDsKKyAgICAgICAgICAgICB9CistICAgICAgICAgICAgCisr CisgICAgICAgICAgICAgZ2xvYnVzX2xpYmNfZnJlZWFkZHJpbmZvKGFkZHJpbmZvKTsKKyAgICAg ICAgIH0KKyAgICAgfQorQEAgLTQ2MSwxOSArNDYxLDE5IEBAIGdsb2J1c19saWJjX2dldGhvc3Rh ZGRyX2J5X2ZhbWlseSgKKyAgICAgZ2xvYnVzX2FkZHJpbmZvX3QgKiAgICAgICAgICAgICAgICAg c2F2ZV9hZGRyaW5mbzsKKyAgICAgZ2xvYnVzX2FkZHJpbmZvX3QgKiAgICAgICAgICAgICAgICAg YWRkcmluZm87CisgICAgIGdsb2J1c19yZXN1bHRfdCAgICAgICAgICAgICAgICAgICAgIHJlc3Vs dDsKKy0gICAgCisrCisgICAgIHJjID0gZ2xvYnVzX2xpYmNfZ2V0aG9zdG5hbWUoaG9zdG5hbWUs IHNpemVvZihob3N0bmFtZSkpOworICAgICBpZihyYyA8IDApCisgICAgIHsKKyAgICAgICAgIHJl dHVybiByYzsKKyAgICAgfQorLSAgICAKKysKKyAgICAgbWVtc2V0KCZoaW50cywgMCwgc2l6ZW9m KGdsb2J1c19hZGRyaW5mb190KSk7CisgICAgIGhpbnRzLmFpX2ZsYWdzID0gMDsKKyAgICAgaGlu dHMuYWlfZmFtaWx5ID0gZmFtaWx5OworICAgICBoaW50cy5haV9zb2NrdHlwZSA9IFNPQ0tfU1RS RUFNOworICAgICBoaW50cy5haV9wcm90b2NvbCA9IDA7CistICAgIAorKworICAgICByZXN1bHQg PSBnbG9idXNfbGliY19nZXRhZGRyaW5mbygKKyAgICAgICAgIGhvc3RuYW1lLCBHTE9CVVNfTlVM TCwgJmhpbnRzLCAmc2F2ZV9hZGRyaW5mbyk7CisgICAgIGlmKHJlc3VsdCAhPSBHTE9CVVNfU1VD Q0VTUykKK0BAIC00ODYsMTMgKzQ4NiwxMyBAQCBnbG9idXNfbGliY19nZXRob3N0YWRkcl9ieV9m YW1pbHkoCisgICAgICAgICBpZihHbG9idXNMaWJjUHJvdG9jb2xGYW1pbHlJc0lQKGFkZHJpbmZv LT5haV9mYW1pbHkpKQorICAgICAgICAgeworICAgICAgICAgICAgIG1lbWNweShhZGRyLCBhZGRy aW5mby0+YWlfYWRkciwgYWRkcmluZm8tPmFpX2FkZHJsZW4pOworLSAgICAgICAgICAgIAorKwor ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgfQorICAgICB9CistICAgIAorKworICAgICBn bG9idXNfbGliY19mcmVlYWRkcmluZm8oc2F2ZV9hZGRyaW5mbyk7CistICAgIAorKworICAgICBy ZXR1cm4gMDsKKyB9CisgCitAQCAtNzU3LDggKzc1Nyw4IEBAIGdsb2J1c19saWJjX2dldGhvc3Ri eW5hbWVfcigKKyAgICAgeworIAorICAgICAgICAgaHAgPSBnZXRob3N0YnluYW1lKGhvc3RuYW1l KTsKKy0JaWYoaHAgIT0gR0xPQlVTX05VTEwpCistCXsKKysgICAgICAgIGlmKGhwICE9IEdMT0JV U19OVUxMKQorKyAgICAgICAgeworICAgICAgICAgICAgIG1lbWNweShyZXN1bHQsIGhwLCBzaXpl b2Yoc3RydWN0IGhvc3RlbnQpKTsKKyAgICAgICAgICAgICBpZihnbG9idXNfbF9saWJjX2NvcHlf aG9zdGVudF9kYXRhX3RvX2J1ZmZlcigKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LAorQEAg LTc2OCwyOCArNzY4LDI4IEBAIGdsb2J1c19saWJjX2dldGhvc3RieW5hbWVfcigKKyAgICAgICAg ICAgICAgICAgaHAgPSBHTE9CVVNfTlVMTDsKKyAgICAgICAgICAgICB9CisgICAgICAgICAgICAg ZWxzZQorLSAgICAgICAgICAgIHsgCisrICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICBo cCA9IHJlc3VsdDsKKyAgICAgICAgICAgICB9CistICAgICAgICAgICAgCistCSAgICBpZiAoaF9l cnJub3AgIT0gR0xPQlVTX05VTEwpCistCSAgICB7CistCQkqaF9lcnJub3AgPSAwOworLQkgICAg fQorLQl9CistCWVsc2UKKy0JeworLQkgICAgaWYgKGhfZXJybm9wICE9IEdMT0JVU19OVUxMKQor LQkgICAgeworLQkgICAgICAgICpoX2Vycm5vcCA9IGhfZXJybm87CistCSAgICB9CistCX0KKysK KysgICAgICAgICAgICBpZiAoaF9lcnJub3AgIT0gR0xPQlVTX05VTEwpCisrICAgICAgICAgICAg eworKyAgICAgICAgICAgICAgICAqaF9lcnJub3AgPSAwOworKyAgICAgICAgICAgIH0KKysgICAg ICAgIH0KKysgICAgICAgIGVsc2UKKysgICAgICAgIHsKKysgICAgICAgICAgICBpZiAoaF9lcnJu b3AgIT0gR0xPQlVTX05VTEwpCisrICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICAqaF9l cnJub3AgPSBoX2Vycm5vOworKyAgICAgICAgICAgIH0KKysgICAgICAgIH0KKyAgICAgfQorICMg ICBlbGlmIGRlZmluZWQoR0xPQlVTX0hBVkVfR0VUSE9TVEJZTkFNRV9SXzMpCisgICAgIHsKKy0J ICAgIHJjID0gZ2V0aG9zdGJ5bmFtZV9yKGhvc3RuYW1lLAorLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHJlc3VsdCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm aHBfZGF0YSk7CisrICAgICAgICByYyA9IGdldGhvc3RieW5hbWVfcihob3N0bmFtZSwKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCwKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICZocF9kYXRhKTsKKyAgICAgICAgIGlmKHJjID09IDApCisgICAgICAgICB7CisgICAg ICAgICAgICAgaWYoZ2xvYnVzX2xfbGliY19jb3B5X2hvc3RlbnRfZGF0YV90b19idWZmZXIoCitA QCAtNzk4LDcgKzc5OCw3IEBAIGdsb2J1c19saWJjX2dldGhvc3RieW5hbWVfcigKKyAgICAgICAg ICAgICAgICAgaHAgPSBHTE9CVVNfTlVMTDsKKyAgICAgICAgICAgICB9CisgICAgICAgICAgICAg ZWxzZQorLSAgICAgICAgICAgIHsgCisrICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICBo cCA9IHJlc3VsdDsKKyAgICAgICAgICAgICB9CisgICAgICAgICAgICAgaWYoaF9lcnJub3AgIT0g R0xPQlVTX05VTEwpCitAQCAtODE4LDIzICs4MTgsMjMgQEAgZ2xvYnVzX2xpYmNfZ2V0aG9zdGJ5 bmFtZV9yKAorICMgICBlbGlmIGRlZmluZWQoR0xPQlVTX0hBVkVfR0VUSE9TVEJZTkFNRV9SXzUp CisgICAgIHsKKyAgICAgICAgIGhwID0gZ2V0aG9zdGJ5bmFtZV9yKGhvc3RuYW1lLAorLQkJCSAg ICAgcmVzdWx0LAorLQkJCSAgICAgYnVmZmVyLAorLQkJCSAgICAgYnVmbGVuLAorLQkJCSAgICAg aF9lcnJub3ApOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LAorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyLAorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgYnVmbGVuLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaF9lcnJub3ApOwor ICAgICB9CisgIyAgIGVsaWYgZGVmaW5lZChHTE9CVVNfSEFWRV9HRVRIT1NUQllOQU1FX1JfNikK KyAgICAgeworICAgICAgICAgcmMgPSBnZXRob3N0YnluYW1lX3IoaG9zdG5hbWUsCistCQkJICAg ICByZXN1bHQsCistCQkJICAgICBidWZmZXIsCistCQkJICAgICBidWZsZW4sCistCQkJICAgICAm aHAsCistCQkJICAgICBoX2Vycm5vcCk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy ZXN1bHQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXIsCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBidWZsZW4sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAmaHAsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoX2Vycm5vcCk7CisgICAgIH0K KyAjICAgZWxzZQorICAgICB7CistCSAgICBHTE9CVVNfSEFWRV9HRVRIT1NUQllOQU1FIHN5bWJv bCBtdXN0IGJlIGRlZmluZWQhISE7CisrICAgICAgICAgICAgR0xPQlVTX0hBVkVfR0VUSE9TVEJZ TkFNRSBzeW1ib2wgbXVzdCBiZSBkZWZpbmVkISEhOworICAgICB9CisgIyAgIGVuZGlmCisgCitA QCAtODQ3LDIzICs4NDcsMjMgQEAgZ2xvYnVzX2xpYmNfZ2V0aG9zdGJ5bmFtZV9yKAorICAgICAg Ki8KKyAgICAgaWYgKGhwID09IEdMT0JVU19OVUxMKQorICAgICB7CistCSAgICBpZihpc2RpZ2l0 KGhvc3RuYW1lWzBdKSkKKy0JICAgIHsKKy0JICAgICAgICBzdHJ1Y3QgaW5fYWRkcgkJCWFkZHI7 CistCistCSAgICAgICAgYWRkci5zX2FkZHIgPSBpbmV0X2FkZHIoaG9zdG5hbWUpOworLQkgICAg ICAgIGlmICgoaW50KSBhZGRyLnNfYWRkciAhPSAtMSkKKy0JICAgICAgICB7CistCQkgICAgICAg IGhwID0gZ2xvYnVzX2xpYmNfZ2V0aG9zdGJ5YWRkcl9yKAorLQkJICAgICAgICAodm9pZCAqKSAm YWRkciwKKy0JCSAgICAgICAgc2l6ZW9mKGFkZHIpLAorLQkJICAgICAgICBBRl9JTkVULAorLQkJ ICAgICAgICByZXN1bHQsCistCQkgICAgICAgIGJ1ZmZlciwKKy0JCSAgICAgICAgYnVmbGVuLAor LQkJICAgICAgICBoX2Vycm5vcCk7CistCSAgICAgICAgfQorLQkgICAgfQorKyAgICAgICAgICAg IGlmKGlzZGlnaXQoaG9zdG5hbWVbMF0pKQorKyAgICAgICAgICAgIHsKKysgICAgICAgICAgICAg ICAgc3RydWN0IGluX2FkZHIgICAgICAgICAgICAgICAgICBhZGRyOworKworKyAgICAgICAgICAg ICAgICBhZGRyLnNfYWRkciA9IGluZXRfYWRkcihob3N0bmFtZSk7CisrICAgICAgICAgICAgICAg IGlmICgoaW50KSBhZGRyLnNfYWRkciAhPSAtMSkKKysgICAgICAgICAgICAgICAgeworKyAgICAg ICAgICAgICAgICAgICAgICAgIGhwID0gZ2xvYnVzX2xpYmNfZ2V0aG9zdGJ5YWRkcl9yKAorKyAg ICAgICAgICAgICAgICAgICAgICAgICh2b2lkICopICZhZGRyLAorKyAgICAgICAgICAgICAgICAg ICAgICAgIHNpemVvZihhZGRyKSwKKysgICAgICAgICAgICAgICAgICAgICAgICBBRl9JTkVULAor KyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCwKKysgICAgICAgICAgICAgICAgICAgICAg ICBidWZmZXIsCisrICAgICAgICAgICAgICAgICAgICAgICAgYnVmbGVuLAorKyAgICAgICAgICAg ICAgICAgICAgICAgIGhfZXJybm9wKTsKKysgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAg IH0KKyAgICAgfQorIAorICAgICByZXR1cm4gaHA7CitAQCAtODgxLDI0ICs4ODEsMjQgQEAgUmV0 dXJuczoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgc3RydWN0IGhvc3RlbnQgKgorIGdsb2J1 c19saWJjX2dldGhvc3RieWFkZHJfcihjaGFyICphZGRyLAorLQkJCSAgICBpbnQgbGVuZ3RoLAor LQkJCSAgICBpbnQgdHlwZSwKKy0JCQkgICAgc3RydWN0IGhvc3RlbnQgKnJlc3VsdCwKKy0JCQkg ICAgY2hhciAqYnVmZmVyLAorLQkJCSAgICBpbnQgYnVmbGVuLAorLQkJCSAgICBpbnQgKmhfZXJy bm9wKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGVuZ3RoLAorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpbnQgdHlwZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc3RydWN0IGhvc3RlbnQgKnJlc3VsdCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y2hhciAqYnVmZmVyLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYnVmbGVuLAor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKmhfZXJybm9wKQorIHsKKyAgICAgc3Ry dWN0IGhvc3RlbnQgKmhwPUdMT0JVU19OVUxMOworICMgICBpZiBkZWZpbmVkKEdMT0JVU19IQVZF X0dFVEhPU1RCWUFERFJfUl81KQorICAgICAgICAgc3RydWN0IGhvc3RlbnRfZGF0YSBocF9kYXRh OworLQlpbnQgcmM7CisrICAgICAgICBpbnQgcmM7CisgIyAgIGVuZGlmCisgCisgIyAgIGlmIGRl ZmluZWQoR0xPQlVTX0hBVkVfR0VUSE9TVEJZQUREUl9SXzgpCistCWludCByYzsKKysgICAgICAg IGludCByYzsKKyAjICAgZW5kaWYKKyAjICAgaWYgZGVmaW5lZChHTE9CVVNfSEFWRV9HRVRIT1NU QllBRERSX1JfNykKKy0JaW50IHJjOworKyAgICAgICAgaW50IHJjOworICMgICBlbmRpZgorIAor IAorQEAgLTkwNyw4ICs5MDcsOCBAQCBnbG9idXNfbGliY19nZXRob3N0YnlhZGRyX3IoY2hhciAq YWRkciwKKyAjICAgaWYgIWRlZmluZWQoSEFWRV9HRVRIT1NUQllBRERSX1IpCisgICAgIHsKKyAg ICAgICAgIGhwID0gZ2V0aG9zdGJ5YWRkcihhZGRyLCBsZW5ndGgsIHR5cGUpOworLQlpZihocCAh PSBHTE9CVVNfTlVMTCkKKy0JeworKyAgICAgICAgaWYoaHAgIT0gR0xPQlVTX05VTEwpCisrICAg ICAgICB7CisgICAgICAgICAgICAgbWVtY3B5KHJlc3VsdCwgaHAsIHNpemVvZihzdHJ1Y3QgaG9z dGVudCkpOworICAgICAgICAgICAgIGlmKGdsb2J1c19sX2xpYmNfY29weV9ob3N0ZW50X2RhdGFf dG9fYnVmZmVyKAorICAgICAgICAgICAgICAgICAgICByZXN1bHQsIGJ1ZmZlciwgYnVmbGVuKSA9 PSAtMSkKK0BAIC05MTYsMzEgKzkxNiwzMSBAQCBnbG9idXNfbGliY19nZXRob3N0YnlhZGRyX3Io Y2hhciAqYWRkciwKKyAgICAgICAgICAgICAgICAgaHAgPSBHTE9CVVNfTlVMTDsKKyAgICAgICAg ICAgICB9CisgICAgICAgICAgICAgZWxzZQorLSAgICAgICAgICAgIHsgCisrICAgICAgICAgICAg eworICAgICAgICAgICAgICAgICBocCA9IHJlc3VsdDsKKyAgICAgICAgICAgICB9CistCSAgICBp ZiAoaF9lcnJub3AgIT0gR0xPQlVTX05VTEwpCistCSAgICB7CistCQkqaF9lcnJub3AgPSBoX2Vy cm5vOworLQkgICAgfQorLQl9CistCWVsc2UKKy0JeworLQkgICAgaWYgKGhfZXJybm9wICE9IEdM T0JVU19OVUxMKQorLQkgICAgeworLQkJKmhfZXJybm9wID0gaF9lcnJubzsKKy0JICAgIH0KKy0J fQorKyAgICAgICAgICAgIGlmIChoX2Vycm5vcCAhPSBHTE9CVVNfTlVMTCkKKysgICAgICAgICAg ICB7CisrICAgICAgICAgICAgICAgICpoX2Vycm5vcCA9IGhfZXJybm87CisrICAgICAgICAgICAg fQorKyAgICAgICAgfQorKyAgICAgICAgZWxzZQorKyAgICAgICAgeworKyAgICAgICAgICAgIGlm IChoX2Vycm5vcCAhPSBHTE9CVVNfTlVMTCkKKysgICAgICAgICAgICB7CisrICAgICAgICAgICAg ICAgICpoX2Vycm5vcCA9IGhfZXJybm87CisrICAgICAgICAgICAgfQorKyAgICAgICAgfQorICAg ICB9CisgIyAgIGVsaWYgZGVmaW5lZChHTE9CVVNfSEFWRV9HRVRIT1NUQllBRERSX1JfNSkKKyAg ICAgeworLQlyYyA9IGdldGhvc3RieWFkZHJfcihhZGRyLAorLQkJCSAgICAgbGVuZ3RoLAorLQkJ CSAgICAgdHlwZSwKKy0JCQkgICAgIHJlc3VsdCwKKy0JCQkgICAgICZocF9kYXRhKTsKKysgICAg ICAgIHJjID0gZ2V0aG9zdGJ5YWRkcl9yKGFkZHIsCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBsZW5ndGgsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlLAorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LAorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJmhwX2RhdGEpOworICAgICAgICAgaWYocmMgPT0gMCkKKy0JeworKyAgICAgICAgewor ICAgICAgICAgICAgIGlmKGdsb2J1c19sX2xpYmNfY29weV9ob3N0ZW50X2RhdGFfdG9fYnVmZmVy KAorICAgICAgICAgICAgICAgICAgICByZXN1bHQsIGJ1ZmZlciwgYnVmbGVuKSA9PSAtMSkKKyAg ICAgICAgICAgICB7CitAQCAtOTUwLDQ1ICs5NTAsNDUgQEAgZ2xvYnVzX2xpYmNfZ2V0aG9zdGJ5 YWRkcl9yKGNoYXIgKmFkZHIsCisgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICBocCA9 IHJlc3VsdDsKKyAgICAgICAgICAgICB9CistICAgICAgICAgICAgCistCSAgICBpZiAoaF9lcnJu b3AgIT0gR0xPQlVTX05VTEwpCistCSAgICB7CistCQkqaF9lcnJub3AgPSBoX2Vycm5vOworLQkg ICAgfQorKworKyAgICAgICAgICAgIGlmIChoX2Vycm5vcCAhPSBHTE9CVVNfTlVMTCkKKysgICAg ICAgICAgICB7CisrICAgICAgICAgICAgICAgICpoX2Vycm5vcCA9IGhfZXJybm87CisrICAgICAg ICAgICAgfQorICAgICAgICAgfQorLQllbHNlCistCXsKKy0JICAgIGhwID0gR0xPQlVTX05VTEw7 CistCSAgICBpZiAoaF9lcnJub3AgIT0gR0xPQlVTX05VTEwpCistCSAgICB7CistCQkqaF9lcnJu b3AgPSBoX2Vycm5vOworLQkgICAgfQorKyAgICAgICAgZWxzZQorKyAgICAgICAgeworKyAgICAg ICAgICAgIGhwID0gR0xPQlVTX05VTEw7CisrICAgICAgICAgICAgaWYgKGhfZXJybm9wICE9IEdM T0JVU19OVUxMKQorKyAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgKmhfZXJybm9wID0g aF9lcnJubzsKKysgICAgICAgICAgICB9CisgICAgICAgICB9CisgICAgIH0KKyAjICAgZWxpZiBk ZWZpbmVkKEdMT0JVU19IQVZFX0dFVEhPU1RCWUFERFJfUl83KQorICAgICB7CisgICAgICAgICBo cCA9IGdldGhvc3RieWFkZHJfcihhZGRyLAorLQkJCSAgICAgbGVuZ3RoLAorLQkJCSAgICAgdHlw ZSwKKy0JCQkgICAgIHJlc3VsdCwKKy0JCQkgICAgIGJ1ZmZlciwKKy0JCQkgICAgIGJ1ZmxlbiwK Ky0JCQkgICAgIGhfZXJybm9wKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0 aCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUsCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgICByZXN1bHQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZm ZXIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZsZW4sCisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBoX2Vycm5vcCk7CisgICAgIH0KKyAjICAgZWxpZiBkZWZpbmVkKEdM T0JVU19IQVZFX0dFVEhPU1RCWUFERFJfUl84KQorICAgICB7CisgICAgICAgICByYyA9IGdldGhv c3RieWFkZHJfcihhZGRyLAorLQkJCSAgICAgbGVuZ3RoLAorLQkJCSAgICAgdHlwZSwKKy0JCQkg ICAgIHJlc3VsdCwKKy0JCQkgICAgIGJ1ZmZlciwKKy0JCQkgICAgIGJ1ZmxlbiwKKy0JCQkgICAg ICZocCwKKy0JCQkgICAgIGhfZXJybm9wKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGxlbmd0aCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUsCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICByZXN1bHQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBidWZmZXIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZsZW4sCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAmaHAsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBoX2Vycm5vcCk7CisgICAgIH0KKyAjICAgZWxzZQorICAgICB7CistCUdMT0JVU19IQVZFX0dF VEhPU1RCWUFERFIgc3ltYm9sIG11c3QgYmUgZGVmaW5lZCEhITsKKysgICAgICAgIEdMT0JVU19I QVZFX0dFVEhPU1RCWUFERFIgc3ltYm9sIG11c3QgYmUgZGVmaW5lZCEhITsKKyAgICAgfQorICMg ICBlbmRpZgorIAorQEAgLTEwMDksMzUgKzEwMDksMzUgQEAgUmV0dXJuczoKKyAqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKiovCisgY2hhciAqCisgZ2xvYnVzX2xpYmNfY3RpbWVfcih0aW1lX3QgKmNsb2Nr LAorLQkJICAgIGNoYXIgKmJ1ZiwKKy0JCSAgICBpbnQgYnVmbGVuKQorKyAgICAgICAgICAgICAg ICAgICAgY2hhciAqYnVmLAorKyAgICAgICAgICAgICAgICAgICAgaW50IGJ1ZmxlbikKKyB7Cisg ICAgIGNoYXIgKnRtcF9idWY7CisgCisgIyAgIGlmICFkZWZpbmVkKEhBVkVfQ1RJTUVfUikKKyAg ICAgeworLQlnbG9idXNfbGliY19sb2NrKCk7CistCXRtcF9idWYgPSBjdGltZShjbG9jayk7Cisr ICAgICAgICBnbG9idXNfbGliY19sb2NrKCk7CisrICAgICAgICB0bXBfYnVmID0gY3RpbWUoY2xv Y2spOworIAorLQlpZih0bXBfYnVmICE9IEdMT0JVU19OVUxMKQorLQl7CistCSAgICBzdHJuY3B5 KGJ1Zix0bXBfYnVmLGJ1Zmxlbik7CistCX0KKy0JZ2xvYnVzX2xpYmNfdW5sb2NrKCk7CisrICAg ICAgICBpZih0bXBfYnVmICE9IEdMT0JVU19OVUxMKQorKyAgICAgICAgeworKyAgICAgICAgICAg IHN0cm5jcHkoYnVmLHRtcF9idWYsYnVmbGVuKTsKKysgICAgICAgIH0KKysgICAgICAgIGdsb2J1 c19saWJjX3VubG9jaygpOworIAorLQl0bXBfYnVmID0gYnVmOworKyAgICAgICAgdG1wX2J1ZiA9 IGJ1ZjsKKyAgICAgfQorICMgICBlbmRpZgorIAorICMgICBpZiBkZWZpbmVkKEdMT0JVU19IQVZF X0NUSU1FX1JfMikKKyAgICAgeworLQl0bXBfYnVmID0gY3RpbWVfcihjbG9jaywgYnVmKTsKKysg ICAgICAgIHRtcF9idWYgPSBjdGltZV9yKGNsb2NrLCBidWYpOworICAgICB9CisgIyAgIGVuZGlm CisgCisgIyAgIGlmIGRlZmluZWQoR0xPQlVTX0hBVkVfQ1RJTUVfUl8zKQorICAgICB7CistCXRt cF9idWYgPSBjdGltZV9yKGNsb2NrLCBidWYsIGJ1Zmxlbik7CisrICAgICAgICB0bXBfYnVmID0g Y3RpbWVfcihjbG9jaywgYnVmLCBidWZsZW4pOworICAgICB9CisgIyAgIGVuZGlmCisgCitAQCAt MTA1NiwyMyArMTA1NiwyMyBAQCBSZXR1cm5zOgorICoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyBz dHJ1Y3QgdG0gKgorIGdsb2J1c19saWJjX2xvY2FsdGltZV9yKAorLSAgICBjb25zdCB0aW1lX3Qg KnRpbWVwLCAKKysgICAgY29uc3QgdGltZV90ICp0aW1lcCwKKyAgICAgc3RydWN0IHRtICpyZXN1 bHQpCisgeworICAgICAgICAgc3RydWN0IHRtICogdG1wX3RtOworLSAgICAgICAgCisrCisgIyAg IGlmICFkZWZpbmVkKEhBVkVfTE9DQUxUSU1FX1IpCisgICAgIHsKKy0JZ2xvYnVzX2xpYmNfbG9j aygpOworLQl0bXBfdG0gPSBsb2NhbHRpbWUodGltZXApOworKyAgICAgICAgZ2xvYnVzX2xpYmNf bG9jaygpOworKyAgICAgICAgdG1wX3RtID0gbG9jYWx0aW1lKHRpbWVwKTsKKyAKKy0JaWYodG1w X3RtICE9IEdMT0JVU19OVUxMKQorLQl7CistCSAgICBtZW1jcHkocmVzdWx0LCB0bXBfdG0sIHNp emVvZihzdHJ1Y3QgdG0pKTsKKy0JfQorLQlnbG9idXNfbGliY191bmxvY2soKTsKKysgICAgICAg IGlmKHRtcF90bSAhPSBHTE9CVVNfTlVMTCkKKysgICAgICAgIHsKKysgICAgICAgICAgICBtZW1j cHkocmVzdWx0LCB0bXBfdG0sIHNpemVvZihzdHJ1Y3QgdG0pKTsKKysgICAgICAgIH0KKysgICAg ICAgIGdsb2J1c19saWJjX3VubG9jaygpOworIAorLQl0bXBfdG0gPSByZXN1bHQ7CisrICAgICAg ICB0bXBfdG0gPSByZXN1bHQ7CisgICAgIH0KKyAjICAgZWxzZQorICAgICB7CitAQCAtMTA5NSwy MyArMTA5NSwyMyBAQCBSZXR1cm5zOgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyBzdHJ1Y3Qg dG0gKgorIGdsb2J1c19saWJjX2dtdGltZV9yKAorLSAgICBjb25zdCB0aW1lX3QgKnRpbWVwLCAK KysgICAgY29uc3QgdGltZV90ICp0aW1lcCwKKyAgICAgc3RydWN0IHRtICpyZXN1bHQpCisgewor ICAgICAgICAgc3RydWN0IHRtICogdG1wX3RtOworLSAgICAgICAgCisrCisgIyAgIGlmICFkZWZp bmVkKEhBVkVfR01USU1FX1IpCisgICAgIHsKKy0JZ2xvYnVzX2xpYmNfbG9jaygpOworLQl0bXBf dG0gPSBnbXRpbWUodGltZXApOworKyAgICAgICAgZ2xvYnVzX2xpYmNfbG9jaygpOworKyAgICAg ICAgdG1wX3RtID0gZ210aW1lKHRpbWVwKTsKKyAKKy0JaWYodG1wX3RtICE9IEdMT0JVU19OVUxM KQorLQl7CistCSAgICBtZW1jcHkocmVzdWx0LCB0bXBfdG0sIHNpemVvZihzdHJ1Y3QgdG0pKTsK Ky0JfQorLQlnbG9idXNfbGliY191bmxvY2soKTsKKysgICAgICAgIGlmKHRtcF90bSAhPSBHTE9C VVNfTlVMTCkKKysgICAgICAgIHsKKysgICAgICAgICAgICBtZW1jcHkocmVzdWx0LCB0bXBfdG0s IHNpemVvZihzdHJ1Y3QgdG0pKTsKKysgICAgICAgIH0KKysgICAgICAgIGdsb2J1c19saWJjX3Vu bG9jaygpOworIAorLQl0bXBfdG0gPSByZXN1bHQ7CisrICAgICAgICB0bXBfdG0gPSByZXN1bHQ7 CisgICAgIH0KKyAjICAgZWxzZQorICAgICB7CitAQCAtMTE0MCwxMCArMTE0MCwxMCBAQCBSZXR1 cm5zOgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyBpbnQKKyBnbG9idXNfbGliY19nZXRwd25h bV9yKGNoYXIgKm5hbWUsCistCQkgICAgICAgc3RydWN0IHBhc3N3ZCAqcHdkLAorLQkJICAgICAg IGNoYXIgKmJ1ZmZlciwKKy0JCSAgICAgICBpbnQgYnVmbGVuLAorLQkJICAgICAgIHN0cnVjdCBw YXNzd2QgKipyZXN1bHQpCisrICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcGFzc3dkICpw d2QsCisrICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpidWZmZXIsCisrICAgICAgICAgICAg ICAgICAgICAgICBpbnQgYnVmbGVuLAorKyAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHBh c3N3ZCAqKnJlc3VsdCkKKyB7CisgICAgIHJldHVybiBnZXRwd25hbV9yKG5hbWUsIHB3ZCwgYnVm ZmVyLCBidWZsZW4sIHJlc3VsdCk7CisgfSAvKiBnbG9idXNfbGliY19nZXRwd25hbV9yICovCitA QCAtMTE2MiwxMCArMTE2MiwxMCBAQCBSZXR1cm5zOgorICNlbmRpZgorIGludAorIGdsb2J1c19s aWJjX2dldHB3dWlkX3IodWlkX3QgdWlkLAorLQkJICAgICAgIHN0cnVjdCBwYXNzd2QgKnB3ZCwK Ky0JCSAgICAgICBjaGFyICpidWZmZXIsCistCQkgICAgICAgaW50IGJ1ZmxlbiwKKy0JCSAgICAg ICBzdHJ1Y3QgcGFzc3dkICoqcmVzdWx0KQorKyAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0 IHBhc3N3ZCAqcHdkLAorKyAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqYnVmZmVyLAorKyAg ICAgICAgICAgICAgICAgICAgICAgaW50IGJ1ZmxlbiwKKysgICAgICAgICAgICAgICAgICAgICAg IHN0cnVjdCBwYXNzd2QgKipyZXN1bHQpCisgeworICAgICByZXR1cm4gZ2V0cHd1aWRfcih1aWQs IHB3ZCwgYnVmZmVyLCBidWZsZW4sIHJlc3VsdCk7CisgfSAvKiBnbG9idXNfbGliY19nZXRwd3Vp ZF9yICovCitAQCAtMTE5MSwyNSArMTE5MSwyNSBAQCBnbG9idXNfbF9saWJjX2NvcHlfaG9zdGVu dF9kYXRhX3RvX2J1ZmZlcigKKyAgICAgY2hhciAqKiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcHRyOworICAgICBjaGFyICoqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdHJfYnVm ZmVyID0gKGNoYXIgKiopIGJ1ZmZlcjsKKyAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbnVtX3B0cnM9MDsKKy0gICAgCisrCisgICAgLyogbGlzdCBvZiBhZGRyZXNzZXMg ZnJvbSBuYW1lIHNlcnZlciAqLworICAgICBpZihoLT5oX2FkZHJfbGlzdCAhPSBHTE9CVVNfTlVM TCkKKyAgICAgeworLQlmb3IocHRyID0gaC0+aF9hZGRyX2xpc3Q7ICgqcHRyKSAhPSBHTE9CVVNf TlVMTDsgcHRyKyspCistCXsKKy0JICAgIG51bV9wdHJzKys7CistCX0KKy0JbnVtX3B0cnMrKzsK KysgICAgICAgIGZvcihwdHIgPSBoLT5oX2FkZHJfbGlzdDsgKCpwdHIpICE9IEdMT0JVU19OVUxM OyBwdHIrKykKKysgICAgICAgIHsKKysgICAgICAgICAgICBudW1fcHRycysrOworKyAgICAgICAg fQorKyAgICAgICAgbnVtX3B0cnMrKzsKKyAgICAgfQorIAorICAgICBpZihoLT5oX2FsaWFzZXMg IT0gR0xPQlVTX05VTEwpCisgICAgIHsKKy0JLyogaG9zdCBhbGlhc2VzICovCistCWZvcihwdHIg PSBoLT5oX2FsaWFzZXM7ICpwdHIgIT0gR0xPQlVTX05VTEw7IHB0cisrKQorLQl7CistCSAgICBu dW1fcHRycysrOworLQl9CistCW51bV9wdHJzKys7CisrICAgICAgICAvKiBob3N0IGFsaWFzZXMg Ki8KKysgICAgICAgIGZvcihwdHIgPSBoLT5oX2FsaWFzZXM7ICpwdHIgIT0gR0xPQlVTX05VTEw7 IHB0cisrKQorKyAgICAgICAgeworKyAgICAgICAgICAgIG51bV9wdHJzKys7CisrICAgICAgICB9 CisrICAgICAgICBudW1fcHRycysrOworICAgICB9CisgCisgICAgIG9mZnNldCArPSBudW1fcHRy cyAqIHNpemVvZihjaGFyICopOworQEAgLTEyMTgsNjggKzEyMTgsNjggQEAgZ2xvYnVzX2xfbGli Y19jb3B5X2hvc3RlbnRfZGF0YV90b19idWZmZXIoCisgICAgIHsKKyAgICAgICAgIHJldHVybiAt MTsKKyAgICAgfQorLSAgICAKKysKKyAgICAgLyogb2ZmaWNpYWwgaG9zdG5hbWUgb2YgaG9zdCAq LworICAgICBpZihoLT5oX25hbWUgIT0gTlVMTCkKKy0gICAgeyAKKy0Jc2l6ZV90ICAgICBuYW1l X2xlbjsKKysgICAgeworKyAgICAgICAgc2l6ZV90ICAgICBuYW1lX2xlbjsKKyAKKy0JbmFtZV9s ZW4gPSBzdHJsZW4oaC0+aF9uYW1lKTsKKy0JaWYobmFtZV9sZW4gKyAxICsgb2Zmc2V0ID4gYnVm bGVuKQorLQl7CisrICAgICAgICBuYW1lX2xlbiA9IHN0cmxlbihoLT5oX25hbWUpOworKyAgICAg ICAgaWYobmFtZV9sZW4gKyAxICsgb2Zmc2V0ID4gYnVmbGVuKQorKyAgICAgICAgeworICAgICAg ICAgICAgIHJldHVybiAtMTsKKy0JfQorKyAgICAgICAgfQorIAorICAgICAgICAgc3RybmNweSgm YnVmZmVyW29mZnNldF0sIGgtPmhfbmFtZSwgbmFtZV9sZW4pOworLQlidWZmZXJbb2Zmc2V0ICsg bmFtZV9sZW5dID0gJ1wwJzsKKy0JaC0+aF9uYW1lID0gJmJ1ZmZlcltvZmZzZXRdOworKyAgICAg ICAgYnVmZmVyW29mZnNldCArIG5hbWVfbGVuXSA9ICdcMCc7CisrICAgICAgICBoLT5oX25hbWUg PSAmYnVmZmVyW29mZnNldF07CisgICAgICAgICBvZmZzZXQgKz0gbmFtZV9sZW4gKyAxOworICAg ICB9CisgCisgICAgIC8qIGxpc3Qgb2YgYWRkcmVzc2VzIGZyb20gbmFtZSBzZXJ2ZXIgKi8KKyAg ICAgaWYoaC0+aF9hZGRyX2xpc3QgIT0gR0xPQlVTX05VTEwpCisgICAgIHsKKy0Jc2l6ZV90IGFk ZHJzaXplID0gaC0+aF9sZW5ndGg7CisrICAgICAgICBzaXplX3QgYWRkcnNpemUgPSBoLT5oX2xl bmd0aDsKKyAKKy0JcHRyID0gaC0+aF9hZGRyX2xpc3Q7CistCWgtPmhfYWRkcl9saXN0ID0gcHRy X2J1ZmZlcjsKKysgICAgICAgIHB0ciA9IGgtPmhfYWRkcl9saXN0OworKyAgICAgICAgaC0+aF9h ZGRyX2xpc3QgPSBwdHJfYnVmZmVyOworIAorLQlmb3IoOyAoKnB0cikgIT0gR0xPQlVTX05VTEw7 IHB0cisrKQorLQl7CistCSAgICBpZihvZmZzZXQgKyBhZGRyc2l6ZSA+IGJ1ZmxlbikKKy0JICAg IHsKKysgICAgICAgIGZvcig7ICgqcHRyKSAhPSBHTE9CVVNfTlVMTDsgcHRyKyspCisrICAgICAg ICB7CisrICAgICAgICAgICAgaWYob2Zmc2V0ICsgYWRkcnNpemUgPiBidWZsZW4pCisrICAgICAg ICAgICAgeworICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CistCSAgICB9CisrICAgICAgICAg ICAgfQorIAorICAgICAgICAgICAgIG1lbWNweSgmYnVmZmVyW29mZnNldF0sICpwdHIsIGFkZHJz aXplKTsKKyAgICAgICAgICAgICAqcHRyX2J1ZmZlciA9ICZidWZmZXJbb2Zmc2V0XTsKKyAgICAg ICAgICAgICBwdHJfYnVmZmVyKys7CisgICAgICAgICAgICAgb2Zmc2V0ICs9IGFkZHJzaXplOwor LQl9CistCSpwdHJfYnVmZmVyID0gR0xPQlVTX05VTEw7CistCXB0cl9idWZmZXIrKzsKKy0gICAg fSAKKysgICAgICAgIH0KKysgICAgICAgICpwdHJfYnVmZmVyID0gR0xPQlVTX05VTEw7CisrICAg ICAgICBwdHJfYnVmZmVyKys7CisrICAgIH0KKyAKKyAgICAgaWYoaC0+aF9hbGlhc2VzICE9IEdM T0JVU19OVUxMKQorICAgICB7CistCXB0ciA9IGgtPmhfYWxpYXNlczsKKy0JaC0+aF9hbGlhc2Vz ID0gcHRyX2J1ZmZlcjsKKysgICAgICAgIHB0ciA9IGgtPmhfYWxpYXNlczsKKysgICAgICAgIGgt PmhfYWxpYXNlcyA9IHB0cl9idWZmZXI7CisgCistCS8qIGhvc3QgYWxpYXNlcyAqLworLQlmb3Io OyAqcHRyICE9IEdMT0JVU19OVUxMOyBwdHIrKykKKy0JeworLQkgICAgaWYoc3RybGVuKCpwdHIp ICsgb2Zmc2V0ICsgMSA+IGJ1ZmxlbikKKy0JICAgIHsKKysgICAgICAgIC8qIGhvc3QgYWxpYXNl cyAqLworKyAgICAgICAgZm9yKDsgKnB0ciAhPSBHTE9CVVNfTlVMTDsgcHRyKyspCisrICAgICAg ICB7CisrICAgICAgICAgICAgaWYoc3RybGVuKCpwdHIpICsgb2Zmc2V0ICsgMSA+IGJ1ZmxlbikK KysgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKy0JICAgIH0KKy0g ICAgICAgICAgICAKKysgICAgICAgICAgICB9CisrCisgICAgICAgICAgICAgc3RyY3B5KCZidWZm ZXJbb2Zmc2V0XSwgKnB0cik7CisgICAgICAgICAgICAgKnB0cl9idWZmZXIgPSAmYnVmZmVyW29m ZnNldF07CisgICAgICAgICAgICAgcHRyX2J1ZmZlcisrOworICAgICAgICAgICAgIG9mZnNldCAr PSBzdHJsZW4oKnB0cikgKyAxOworLQl9CistCSpwdHJfYnVmZmVyID0gR0xPQlVTX05VTEw7Cist CXB0cl9idWZmZXIrKzsKKysgICAgICAgIH0KKysgICAgICAgICpwdHJfYnVmZmVyID0gR0xPQlVT X05VTEw7CisrICAgICAgICBwdHJfYnVmZmVyKys7CisgICAgIH0KKyAgICAgcmV0dXJuIDA7Cisg fSAvKiBnbG9idXNfbF9saWJjX2NvcHlfaG9zdGVudF9kYXRhX3RvX2J1ZmZlcigpICovCitAQCAt MTM0Miw1OSArMTM0Miw1OSBAQCBnbG9idXNfbGliY19nZXRob21lZGlyKGNoYXIgKnJlc3VsdCwg aW50IGJ1ZnNpemUpCisgICAgIGNoYXIgKiAgICAgICAgICAgICAgICAgIHA7CisgICAgIHN0cnVj dCBwYXNzd2QgKiAgICAgICAgIHB3cmVzOworIAorLSAgICAKKysKKyAgICAgZ2xvYnVzX2xpYmNf bG9jaygpOworICAgICBpZiAoIWluaXRpYWxpemVkKQorICAgICB7CistCWdsb2J1c19tdXRleF9p bml0KCZnZXRob21lZGlyX211dGV4LAorLQkJCSAgKGdsb2J1c19tdXRleGF0dHJfdCAqKSBHTE9C VVNfTlVMTCk7CistCWluaXRpYWxpemVkID0gR0xPQlVTX1RSVUU7CisrICAgICAgICBnbG9idXNf bXV0ZXhfaW5pdCgmZ2V0aG9tZWRpcl9tdXRleCwKKysgICAgICAgICAgICAgICAgICAgICAgICAg IChnbG9idXNfbXV0ZXhhdHRyX3QgKikgR0xPQlVTX05VTEwpOworKyAgICAgICAgaW5pdGlhbGl6 ZWQgPSBHTE9CVVNfVFJVRTsKKyAgICAgfQorICAgICBnbG9idXNfbGliY191bmxvY2soKTsKKyAK KyAgICAgZ2xvYnVzX211dGV4X2xvY2soJmdldGhvbWVkaXJfbXV0ZXgpOworICAgICB7CistCXJj ID0gMDsKKy0KKy0JaWYgKGhvbWVkaXJfbGVuID09IDApCistCXsKKy0JICAgIHAgPSBnZXRlbnYo IkhPTUUiKTsKKy0JICAgIGlmICghcCB8fCBzdHJsZW4ocCk9PTApCistCSAgICB7CistCQlwID0g R0xPQlVTX05VTEw7CistCQlyYyA9IGdsb2J1c19saWJjX2dldHB3dWlkX3IoZ2V0ZXVpZCgpLAor LQkJCQkJICAgICZwdywKKy0JCQkJCSAgICBidWYsCistCQkJCQkgICAgMTAyNCwKKy0JCQkJCSAg ICAmcHdyZXMpOworLQorLQkJaWYgKCFyYyAmJiBwd3JlcyAmJiBwd3Jlcy0+cHdfZGlyKQorLQkJ ICAgIHAgPSBwd3Jlcy0+cHdfZGlyOworLQkgICAgfQorLQorLQkgICAgaWYgKCFyYyAmJiBwKQor LQkgICAgeworLQkJbGVuID0gc3RybGVuKHApOworLQkJaG9tZWRpciA9IGdsb2J1c19tYWxsb2Mo bGVuICsgMSk7CistCQlpZiAoaG9tZWRpcikKKy0JCXsKKy0JCSAgICBtZW1jcHkoaG9tZWRpciwg cCwgbGVuKTsKKy0JCSAgICBob21lZGlyW2xlbl0gPSAnXDAnOworLQkJICAgIGhvbWVkaXJfbGVu ID0gc3RybGVuKGhvbWVkaXIpOworLQkJfQorLQkJZWxzZQorLQkJICAgIHJjID0gLTE7CistCSAg ICB9CistCX0KKy0KKy0JaWYgKGhvbWVkaXJfbGVuID4gYnVmc2l6ZSkKKy0JICAgIHJjID0gLTE7 CistCistCWlmICghcmMpCistCXsKKy0JICAgIG1lbWNweShyZXN1bHQsIGhvbWVkaXIsIGhvbWVk aXJfbGVuKTsKKy0JICAgIHJlc3VsdFtob21lZGlyX2xlbl0gPSAnXDAnOworLQl9CisrICAgICAg ICByYyA9IDA7CisrCisrICAgICAgICBpZiAoaG9tZWRpcl9sZW4gPT0gMCkKKysgICAgICAgIHsK KysgICAgICAgICAgICBwID0gZ2V0ZW52KCJIT01FIik7CisrICAgICAgICAgICAgaWYgKCFwIHx8 IHN0cmxlbihwKT09MCkKKysgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgIHAgPSBHTE9C VVNfTlVMTDsKKysgICAgICAgICAgICAgICAgcmMgPSBnbG9idXNfbGliY19nZXRwd3VpZF9yKGdl dGV1aWQoKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZw dywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZiwKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwMjQsCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcHdyZXMpOworKworKyAgICAg ICAgICAgICAgICBpZiAoIXJjICYmIHB3cmVzICYmIHB3cmVzLT5wd19kaXIpCisrICAgICAgICAg ICAgICAgICAgICBwID0gcHdyZXMtPnB3X2RpcjsKKysgICAgICAgICAgICB9CisrCisrICAgICAg ICAgICAgaWYgKCFyYyAmJiBwKQorKyAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgbGVu ID0gc3RybGVuKHApOworKyAgICAgICAgICAgICAgICBob21lZGlyID0gZ2xvYnVzX21hbGxvYyhs ZW4gKyAxKTsKKysgICAgICAgICAgICAgICAgaWYgKGhvbWVkaXIpCisrICAgICAgICAgICAgICAg IHsKKysgICAgICAgICAgICAgICAgICAgIG1lbWNweShob21lZGlyLCBwLCBsZW4pOworKyAgICAg ICAgICAgICAgICAgICAgaG9tZWRpcltsZW5dID0gJ1wwJzsKKysgICAgICAgICAgICAgICAgICAg IGhvbWVkaXJfbGVuID0gc3RybGVuKGhvbWVkaXIpOworKyAgICAgICAgICAgICAgICB9CisrICAg ICAgICAgICAgICAgIGVsc2UKKysgICAgICAgICAgICAgICAgICAgIHJjID0gLTE7CisrICAgICAg ICAgICAgfQorKyAgICAgICAgfQorKworKyAgICAgICAgaWYgKGhvbWVkaXJfbGVuID4gYnVmc2l6 ZSkKKysgICAgICAgICAgICByYyA9IC0xOworKworKyAgICAgICAgaWYgKCFyYykKKysgICAgICAg IHsKKysgICAgICAgICAgICBtZW1jcHkocmVzdWx0LCBob21lZGlyLCBob21lZGlyX2xlbik7Cisr ICAgICAgICAgICAgcmVzdWx0W2hvbWVkaXJfbGVuXSA9ICdcMCc7CisrICAgICAgICB9CisgICAg IH0KKyAgICAgZ2xvYnVzX211dGV4X3VubG9jaygmZ2V0aG9tZWRpcl9tdXRleCk7CisgCitAQCAt MTQ3MiwxMyArMTQ3MiwxMyBAQCBnbG9idXNfbGliY19zdHJkdXAoY29uc3QgY2hhciAqIHN0cmlu ZykKKyAKKyAgICAgaWYoc3RyaW5nKQorICAgICB7CistCWwgPSBzdHJsZW4oc3RyaW5nKTsKKysg ICAgICAgIGwgPSBzdHJsZW4oc3RyaW5nKTsKKyAKKy0JbnMgPSBnbG9idXNfbWFsbG9jKHNpemVv ZihjaGFyKSAqIChsICsgMSkpOworLQlpZihucykKKy0JeworLQkgICAgbWVtY3B5KG5zLCBzdHJp bmcsIGwgKyAxKTsKKy0JfQorKyAgICAgICAgbnMgPSBnbG9idXNfbWFsbG9jKHNpemVvZihjaGFy KSAqIChsICsgMSkpOworKyAgICAgICAgaWYobnMpCisrICAgICAgICB7CisrICAgICAgICAgICAg bWVtY3B5KG5zLCBzdHJpbmcsIGwgKyAxKTsKKysgICAgICAgIH0KKyAgICAgfQorIAorICAgICBy ZXR1cm4gbnM7CitAQCAtMTUwMCw3ICsxNTAwLDcgQEAgZ2xvYnVzX2xpYmNfc3RybmR1cChjb25z dCBjaGFyICogc3RyaW5nLCBnbG9idXNfc2l6ZV90IGxlbmd0aCkKKyAgICAgICAgIHsKKyAgICAg ICAgICAgICBmb3IoaSA9IDA7IGkgPCBsZW5ndGggJiYgc3RyaW5nW2ldICE9ICdcMCc7IGkrKykK KyAgICAgICAgICAgICAgICAgbnNbaV0gPSBzdHJpbmdbaV07CistICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAKKysKKyAgICAgICAgICAgICBuc1tpXSA9ICdcMCc7CisgICAgICAgICB9CisgICAgIH0K K0BAIC0xNTI2LDggKzE1MjYsOCBAQCBSZXR1cm5zOgorIAorIGludAorIGdsb2J1c19saWJjX2xz ZWVrKGludCBmZCwKKy0JCSAgZ2xvYnVzX29mZl90IG9mZnNldCwKKy0JCSAgaW50IHdoZW5jZSkK KysgICAgICAgICAgICAgICAgICBnbG9idXNfb2ZmX3Qgb2Zmc2V0LAorKyAgICAgICAgICAgICAg ICAgIGludCB3aGVuY2UpCisgeworICAgICBpbnQgcmM7CisgICAgIGludCBzYXZlX2Vycm5vOwor QEAgLTE1NzQsMTkgKzE1NzQsMTkgQEAgZ2xvYnVzX2xpYmNfdGVsbGRpcihESVIgKmRpcnApCisg CisgICAgIGlmKGRpcnAgIT0gR0xPQlVTX05VTEwpCisgICAgIHsKKy0JZ2xvYnVzX2xpYmNfbG9j aygpOworKyAgICAgICAgZ2xvYnVzX2xpYmNfbG9jaygpOworIAorLQlwb3MgPSB0ZWxsZGlyKGRp cnApOworLQlzYXZlX2Vycm5vPWVycm5vOworKyAgICAgICAgcG9zID0gdGVsbGRpcihkaXJwKTsK KysgICAgICAgIHNhdmVfZXJybm89ZXJybm87CisgCistCWdsb2J1c19saWJjX3VubG9jaygpOwor LQllcnJubyA9IHNhdmVfZXJybm87CisrICAgICAgICBnbG9idXNfbGliY191bmxvY2soKTsKKysg ICAgICAgIGVycm5vID0gc2F2ZV9lcnJubzsKKyAKKy0JcmV0dXJuIHBvczsKKysgICAgICAgIHJl dHVybiBwb3M7CisgICAgIH0KKyAgICAgZWxzZQorICAgICB7CistCXJldHVybiBwb3M7CisrICAg ICAgICByZXR1cm4gcG9zOworICAgICB9CisgfQorICNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfVEVM TERJUikgKi8KK0BAIC0xNTk1LDIxICsxNTk1LDIxIEBAIGdsb2J1c19saWJjX3RlbGxkaXIoRElS ICpkaXJwKQorICN1bmRlZiBnbG9idXNfbGliY19zZWVrZGlyCisgZXh0ZXJuIHZvaWQKKyBnbG9i dXNfbGliY19zZWVrZGlyKERJUiAqZGlycCwKKy0JCSAgICBsb25nIGxvYykKKysgICAgICAgICAg ICAgICAgICAgIGxvbmcgbG9jKQorIHsKKyAgICAgaW50IHNhdmVfZXJybm87CisgCisgICAgIGlm KGRpcnAgIT0gR0xPQlVTX05VTEwpCisgICAgIHsKKy0JZ2xvYnVzX2xpYmNfbG9jaygpOworKyAg ICAgICAgZ2xvYnVzX2xpYmNfbG9jaygpOworIAorLQlzZWVrZGlyKGRpcnAsIGxvYyk7CisrICAg ICAgICBzZWVrZGlyKGRpcnAsIGxvYyk7CisgCistCXNhdmVfZXJybm8gPSBlcnJubzsKKysgICAg ICAgIHNhdmVfZXJybm8gPSBlcnJubzsKKyAKKy0JZ2xvYnVzX2xpYmNfdW5sb2NrKCk7CistCWVy cm5vID0gc2F2ZV9lcnJubzsKKy0JcmV0dXJuOworKyAgICAgICAgZ2xvYnVzX2xpYmNfdW5sb2Nr KCk7CisrICAgICAgICBlcnJubyA9IHNhdmVfZXJybm87CisrICAgICAgICByZXR1cm47CisgICAg IH0KKyB9CisgI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9TRUVLRElSKSAqLworQEAgLTE2MjMsMTUg KzE2MjMsMTUgQEAgZ2xvYnVzX2xpYmNfcmV3aW5kZGlyKERJUiAqZGlycCkKKyAKKyAgICAgaWYo ZGlycCAhPSBHTE9CVVNfTlVMTCkKKyAgICAgeworLQlnbG9idXNfbGliY19sb2NrKCk7CisrICAg ICAgICBnbG9idXNfbGliY19sb2NrKCk7CisgCistCXJld2luZGRpcihkaXJwKTsKKysgICAgICAg IHJld2luZGRpcihkaXJwKTsKKyAKKy0Jc2F2ZV9lcnJubyA9IGVycm5vOworKyAgICAgICAgc2F2 ZV9lcnJubyA9IGVycm5vOworIAorLQlnbG9idXNfbGliY191bmxvY2soKTsKKy0JZXJybm8gPSBz YXZlX2Vycm5vOworLQlyZXR1cm47CisrICAgICAgICBnbG9idXNfbGliY191bmxvY2soKTsKKysg ICAgICAgIGVycm5vID0gc2F2ZV9lcnJubzsKKysgICAgICAgIHJldHVybjsKKyAgICAgfQorICNl bHNlCisgICAgIGVycm5vID0gRUlOVkFMOworQEAgLTE2NjQsMTE2ICsxNjY0LDExNiBAQCBnbG9i dXNfbGliY19jbG9zZWRpcihESVIgKmRpcnApCisgI3VuZGVmIGdsb2J1c19saWJjX3JlYWRkaXJf cgorIGV4dGVybiBpbnQKKyBnbG9idXNfbGliY19yZWFkZGlyX3IoRElSICpkaXJwLAorLQkJICAg ICAgc3RydWN0IGRpcmVudCAqKnJlc3VsdCkKKysgICAgICAgICAgICAgICAgICAgICAgc3RydWN0 IGRpcmVudCAqKnJlc3VsdCkKKyB7CisgI2lmIEhBVkVfRElSRU5UX0gKKyAjaWYgIWRlZmluZWQo SEFWRV9SRUFERElSX1IpCisgICAgIHsKKy0Jc3RydWN0IGRpcmVudCAqdG1wZGlyLCAqZW50cnk7 CistCWludCBzYXZlX2Vycm5vOworKyAgICAgICAgc3RydWN0IGRpcmVudCAqdG1wZGlyLCAqZW50 cnk7CisrICAgICAgICBpbnQgc2F2ZV9lcnJubzsKKyAKKy0JZ2xvYnVzX2xpYmNfbG9jaygpOwor KyAgICAgICAgZ2xvYnVzX2xpYmNfbG9jaygpOworIAorLQl0bXBkaXIgPSByZWFkZGlyKGRpcnAp OworLQlzYXZlX2Vycm5vID0gZXJybm87CisrICAgICAgICB0bXBkaXIgPSByZWFkZGlyKGRpcnAp OworKyAgICAgICAgc2F2ZV9lcnJubyA9IGVycm5vOworIAorLQlpZih0bXBkaXIgPT0gR0xPQlVT X05VTEwpCistCXsKKy0JICAgICpyZXN1bHQgPSBHTE9CVVNfTlVMTDsKKysgICAgICAgIGlmKHRt cGRpciA9PSBHTE9CVVNfTlVMTCkKKysgICAgICAgIHsKKysgICAgICAgICAgICAqcmVzdWx0ID0g R0xPQlVTX05VTEw7CisgCistCSAgICBnbG9idXNfbGliY191bmxvY2soKTsKKysgICAgICAgICAg ICBnbG9idXNfbGliY191bmxvY2soKTsKKyAKKy0JICAgIGVycm5vID0gc2F2ZV9lcnJubzsKKysg ICAgICAgICAgICBlcnJubyA9IHNhdmVfZXJybm87CisgCistCSAgICByZXR1cm4gLTE7CistCX0K KysgICAgICAgICAgICByZXR1cm4gLTE7CisrICAgICAgICB9CisgCistCWVudHJ5ID0gKHN0cnVj dCBkaXJlbnQgKikgZ2xvYnVzX21hbGxvYyhvZmZzZXRvZihzdHJ1Y3QgZGlyZW50LCBkX25hbWUp CistCQkJCQkJKyBzdHJsZW4odG1wZGlyLT5kX25hbWUpCistCQkJCQkJKyAxKTsKKysgICAgICAg IGVudHJ5ID0gKHN0cnVjdCBkaXJlbnQgKikgZ2xvYnVzX21hbGxvYyhvZmZzZXRvZihzdHJ1Y3Qg ZGlyZW50LCBkX25hbWUpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKyBzdHJsZW4odG1wZGlyLT5kX25hbWUpCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAxKTsKKyAKKy0JLyogY29weSByZXR1cm5lZCBi dWZmZXIgaW50byBkYXRhIHN0cnVjdHVyZSAqLworLQllbnRyeS0+ZF9pbm8gPSB0bXBkaXItPmRf aW5vOworKyAgICAgICAgLyogY29weSByZXR1cm5lZCBidWZmZXIgaW50byBkYXRhIHN0cnVjdHVy ZSAqLworKyAgICAgICAgZW50cnktPmRfaW5vID0gdG1wZGlyLT5kX2lubzsKKyAjICAgICAgIGlm IGRlZmluZWQoR0xPQlVTX0hBVkVfRElSRU5UX09GRikKKy0JeworLQkgICAgZW50cnktPmRfb2Zm ID0gdG1wZGlyLT5kX29mZjsKKy0JfQorKyAgICAgICAgeworKyAgICAgICAgICAgIGVudHJ5LT5k X29mZiA9IHRtcGRpci0+ZF9vZmY7CisrICAgICAgICB9CisgIyAgICAgICBlbmRpZgorICMgICAg ICAgaWYgZGVmaW5lZChHTE9CVVNfSEFWRV9ESVJFTlRfT0ZGU0VUKQorLQl7CistCSAgICBlbnRy eS0+ZF9vZmZzZXQgPSB0bXBkaXItPmRfb2Zmc2V0OworLQl9CisrICAgICAgICB7CisrICAgICAg ICAgICAgZW50cnktPmRfb2Zmc2V0ID0gdG1wZGlyLT5kX29mZnNldDsKKysgICAgICAgIH0KKyAj ICAgICAgIGVuZGlmCisgIyAgICAgICBpZiBkZWZpbmVkKEdMT0JVU19IQVZFX0RJUkVOVF9UWVBF KQorLQl7CistCSAgICBlbnRyeS0+ZF90eXBlID0gdG1wZGlyLT5kX3R5cGU7CistCX0KKysgICAg ICAgIHsKKysgICAgICAgICAgICBlbnRyeS0+ZF90eXBlID0gdG1wZGlyLT5kX3R5cGU7CisrICAg ICAgICB9CisgIyAgICAgICBlbmRpZgorLSMJaWYgZGVmaW5lZChHTE9CVVNfSEFWRV9ESVJFTlRf UkVDTEVOKQorLQl7CistCSAgICBlbnRyeS0+ZF9yZWNsZW4gPSB0bXBkaXItPmRfcmVjbGVuOwor LQl9CisrIyAgICAgICBpZiBkZWZpbmVkKEdMT0JVU19IQVZFX0RJUkVOVF9SRUNMRU4pCisrICAg ICAgICB7CisrICAgICAgICAgICAgZW50cnktPmRfcmVjbGVuID0gdG1wZGlyLT5kX3JlY2xlbjsK KysgICAgICAgIH0KKyAjICAgICAgIGVuZGlmCistCXN0cmNweSgmZW50cnktPmRfbmFtZVswXSwg JnRtcGRpci0+ZF9uYW1lWzBdKTsKKysgICAgICAgIHN0cmNweSgmZW50cnktPmRfbmFtZVswXSwg JnRtcGRpci0+ZF9uYW1lWzBdKTsKKyAKKy0JKnJlc3VsdCA9IGVudHJ5OworLQlnbG9idXNfbGli Y191bmxvY2soKTsKKy0JZXJybm8gPSBzYXZlX2Vycm5vOworLQlyZXR1cm4gMDsKKysgICAgICAg ICpyZXN1bHQgPSBlbnRyeTsKKysgICAgICAgIGdsb2J1c19saWJjX3VubG9jaygpOworKyAgICAg ICAgZXJybm8gPSBzYXZlX2Vycm5vOworKyAgICAgICAgcmV0dXJuIDA7CisgICAgIH0KKyAjICAg ZWxzZQorICAgICB7CistCWludCBlcnJubzsKKysgICAgICAgIGludCBlcnJubzsKKyAKKyAjICAg ICAgIGlmIGRlZmluZWQoR0xPQlVTX0hBVkVfUkVBRERJUl9SXzMpCistCXsKKy0JICAgIGludCBy YyA9IDA7CistCSAgICBzdHJ1Y3QgZGlyZW50ICplbnRyeSA9IGdsb2J1c19tYWxsb2Mob2Zmc2V0 b2Yoc3RydWN0IGRpcmVudCwgZF9uYW1lKQorLQkJCQkJCSArIE5BTUVfTUFYCistCQkJCQkJICsg MSk7CisrICAgICAgICB7CisrICAgICAgICAgICAgaW50IHJjID0gMDsKKysgICAgICAgICAgICBz dHJ1Y3QgZGlyZW50ICplbnRyeSA9IGdsb2J1c19tYWxsb2Mob2Zmc2V0b2Yoc3RydWN0IGRpcmVu dCwgZF9uYW1lKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICArIE5BTUVfTUFYCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICsgMSk7CisgCistCSAgICByYyA9IHJlYWRkaXJfcihkaXJwLCBlbnRyeSwgcmVz dWx0KTsKKysgICAgICAgICAgICByYyA9IHJlYWRkaXJfcihkaXJwLCBlbnRyeSwgcmVzdWx0KTsK KyAKKyAgICAgICAgICAgICBpZihyYyAhPSAwIHx8ICpyZXN1bHQgPT0gTlVMTCkKKyAgICAgICAg ICAgICB7CistCQlnbG9idXNfZnJlZShlbnRyeSk7CistCQkqcmVzdWx0ID0gR0xPQlVTX05VTEw7 CisrICAgICAgICAgICAgICAgIGdsb2J1c19mcmVlKGVudHJ5KTsKKysgICAgICAgICAgICAgICAg KnJlc3VsdCA9IEdMT0JVU19OVUxMOworICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICByZXR1 cm4gcmM7CistCX0KKysgICAgICAgIH0KKyAjICAgICAgIGVsaWYgZGVmaW5lZChHTE9CVVNfSEFW RV9SRUFERElSX1JfMikKKy0JeworLQkgICAgc3RydWN0IGRpcmVudCAqZW50cnkgPSBnbG9idXNf bWFsbG9jKG9mZnNldG9mKHN0cnVjdCBkaXJlbnQsIGRfbmFtZSkKKy0JCQkJCQkgKyBOQU1FX01B WAorLQkJCQkJCSArIDEpOworLQkgICAgaW50IHJjPTA7CisrICAgICAgICB7CisrICAgICAgICAg ICAgc3RydWN0IGRpcmVudCAqZW50cnkgPSBnbG9idXNfbWFsbG9jKG9mZnNldG9mKHN0cnVjdCBk aXJlbnQsIGRfbmFtZSkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKyBOQU1FX01BWAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICArIDEpOworKyAgICAgICAgICAgIGludCByYz0wOworIAorICMgICAgICAg ICAgIGlmIGRlZmluZWQoVEFSR0VUX0FSQ0hfU09MQVJJUykKKy0JICAgIHsKKy0JCSpyZXN1bHQg PSByZWFkZGlyX3IoZGlycCwgZW50cnkpOworLQkJaWYoKnJlc3VsdCA9PSBHTE9CVVNfTlVMTCkK Ky0JCXsKKy0JCSAgICByYyA9IC0xOworLQkJfQorLQkgICAgfQorKyAgICAgICAgICAgIHsKKysg ICAgICAgICAgICAgICAgKnJlc3VsdCA9IHJlYWRkaXJfcihkaXJwLCBlbnRyeSk7CisrICAgICAg ICAgICAgICAgIGlmKCpyZXN1bHQgPT0gR0xPQlVTX05VTEwpCisrICAgICAgICAgICAgICAgIHsK KysgICAgICAgICAgICAgICAgICAgIHJjID0gLTE7CisrICAgICAgICAgICAgICAgIH0KKysgICAg ICAgICAgICB9CisgIyAgICAgICAgICAgZWxpZiBkZWZpbmVkKFRBUkdFVF9BUkNIX0hQVVgpCist CSAgICB7CistCQlyYyA9IHJlYWRkaXJfcihkaXJwLCBlbnRyeSk7CistCQkqcmVzdWx0ID0gZW50 cnk7CistCSAgICB9CisrICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICByYyA9IHJlYWRk aXJfcihkaXJwLCBlbnRyeSk7CisrICAgICAgICAgICAgICAgICpyZXN1bHQgPSBlbnRyeTsKKysg ICAgICAgICAgICB9CisgIyAgICAgICAgICAgZW5kaWYKKyAKKy0JICAgIGlmKHJjICE9IEdMT0JV U19TVUNDRVNTKQorLQkgICAgeworLQkJZ2xvYnVzX2ZyZWUoZW50cnkpOworLQkJKnJlc3VsdCA9 IEdMT0JVU19OVUxMOworLQkJcmV0dXJuIHJjOworLQkgICAgfQorLQkgICAgZWxzZQorLQkgICAg eworLQkJcmV0dXJuIDA7CistCSAgICB9CistCX0KKysgICAgICAgICAgICBpZihyYyAhPSBHTE9C VVNfU1VDQ0VTUykKKysgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgIGdsb2J1c19mcmVl KGVudHJ5KTsKKysgICAgICAgICAgICAgICAgKnJlc3VsdCA9IEdMT0JVU19OVUxMOworKyAgICAg ICAgICAgICAgICByZXR1cm4gcmM7CisrICAgICAgICAgICAgfQorKyAgICAgICAgICAgIGVsc2UK KysgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgIHJldHVybiAwOworKyAgICAgICAgICAg IH0KKysgICAgICAgIH0KKyAjICAgICAgIGVuZGlmCisgICAgIH0KKyAjICAgZW5kaWYKK0BAIC0x Nzg3LDE0ICsxNzg3LDE0IEBAIGdsb2J1c19saWJjX3JlYWRkaXJfcihESVIgKmRpcnAsCisgaW50 CisgZ2xvYnVzX2xpYmNfdnByaW50Zl9sZW5ndGgoY29uc3QgY2hhciAqIGZtdCwgdmFfbGlzdCBh cCkKKyB7CistICAgIHN0YXRpYyBGSUxFICoJCQlkZXZudWxsID0gR0xPQlVTX05VTEw7CisrICAg IHN0YXRpYyBGSUxFICogICAgICAgICAgICAgICAgICAgICAgIGRldm51bGwgPSBHTE9CVVNfTlVM TDsKKyAgICAgaW50IHNhdmVfZXJybm87CisgCisgICAgIGdsb2J1c19saWJjX2xvY2soKTsKKyAg ICAgaWYoZGV2bnVsbCA9PSBHTE9CVVNfTlVMTCkKKyAgICAgeworICNpZm5kZWYgX1dJTjMyCist CWRldm51bGwgPSBmb3BlbigiL2Rldi9udWxsIiwgInciKTsKKysgICAgICAgIGRldm51bGwgPSBm b3BlbigiL2Rldi9udWxsIiwgInciKTsKKyAKKyAgICAgICAgIGlmKGRldm51bGwgPT0gR0xPQlVT X05VTEwpCisgICAgICAgICB7CitAQCAtMTgwNSw3ICsxODA1LDcgQEAgZ2xvYnVzX2xpYmNfdnBy aW50Zl9sZW5ndGgoY29uc3QgY2hhciAqIGZtdCwgdmFfbGlzdCBhcCkKKyAgICAgICAgIH0KKyAg ICAgICAgIGZjbnRsKGZpbGVubyhkZXZudWxsKSwgRl9TRVRGRCwgRkRfQ0xPRVhFQyk7CisgI2Vs c2UKKy0JZGV2bnVsbCA9IGZvcGVuKCJOVUwiLCAidyIpOworKyAgICAgICAgZGV2bnVsbCA9IGZv cGVuKCJOVUwiLCAidyIpOworICAgICAgICAgaWYoZGV2bnVsbCA9PSBHTE9CVVNfTlVMTCkKKyAg ICAgICAgIHsKKyAgICAgICAgICAgICBzYXZlX2Vycm5vID0gZXJybm87CitAQCAtMTg4MSw3ICsx ODgxLDcgQEAgZ2xvYnVzX2NvbW1vbl92X2NyZWF0ZV9zdHJpbmcoCisgICAgIHZhX2xpc3QgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGFwX2NvcHk7CisgCisgICAgIGdsb2J1c19saWJjX3Zh X2NvcHkoYXBfY29weSxhcCk7CistICAgIAorKworICAgICBsZW4gPSBnbG9idXNfbGliY192cHJp bnRmX2xlbmd0aChmb3JtYXQsYXBfY29weSk7CisgCisgICAgIHZhX2VuZChhcF9jb3B5KTsKK0BA IC0xODkwLDE5ICsxODkwLDE5IEBAIGdsb2J1c19jb21tb25fdl9jcmVhdGVfc3RyaW5nKAorICAg ICB7CisgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgfQorLSAgICAKKysKKyAgICAgbGVuKys7 CisgCisgICAgIGlmKChuZXdfc3RyaW5nID0gbWFsbG9jKGxlbikpID09IE5VTEwpCisgICAgIHsK KyAgICAgICAgIHJldHVybiBOVUxMOworICAgICB9CistICAgIAorKworICAgICBnbG9idXNfbGli Y192c25wcmludGYobmV3X3N0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbiwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgIGFwKTsKKy0gICAgCisrCisgICAgIHJldHVybiBuZXdfc3RyaW5nOworIH0KKyAKK0BA IC0xOTcwLDM3ICsxOTcwLDM3IEBAIGdsb2J1c19saWJjX3ZzbnByaW50ZihjaGFyICpzLCBzaXpl X3QgbiwgY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IGFwKQorICAgIFNUQUNLX0RJUkVDVElP TiA9IDAgPT4gZGlyZWN0aW9uIG9mIGdyb3d0aCB1bmtub3duICAqLworIAorICNpZm5kZWYgU1RB Q0tfRElSRUNUSU9OCistI2RlZmluZQlTVEFDS19ESVJFQ1RJT04JMAkvKiBEaXJlY3Rpb24gdW5r bm93bi4gICovCisrI2RlZmluZSBTVEFDS19ESVJFQ1RJT04gMCAgICAgICAvKiBEaXJlY3Rpb24g dW5rbm93bi4gICovCisgI2VuZGlmCisgCisgI2lmIFNUQUNLX0RJUkVDVElPTiAhPSAwCisgCist I2RlZmluZQlTVEFDS19ESVIJU1RBQ0tfRElSRUNUSU9OCS8qIEtub3duIGF0IGNvbXBpbGUtdGlt ZS4gICovCisrI2RlZmluZSBTVEFDS19ESVIgICAgICAgU1RBQ0tfRElSRUNUSU9OIC8qIEtub3du IGF0IGNvbXBpbGUtdGltZS4gICovCisgCisgI2Vsc2UgLyogU1RBQ0tfRElSRUNUSU9OID09IDA7 IG5lZWQgcnVuLXRpbWUgY29kZS4gICovCisgCistc3RhdGljIGludCBzdGFja19kaXI9MDsJCS8q IDEgb3IgLTEgb25jZSBrbm93bi4gICovCistI2RlZmluZQlTVEFDS19ESVIJc3RhY2tfZGlyCisr c3RhdGljIGludCBzdGFja19kaXI9MDsgICAgICAgICAvKiAxIG9yIC0xIG9uY2Uga25vd24uICAq LworKyNkZWZpbmUgU1RBQ0tfRElSICAgICAgIHN0YWNrX2RpcgorIAorIHN0YXRpYyB2b2lkCisg ZmluZF9zdGFja19kaXJlY3Rpb24gKCkKKyB7CistICBzdGF0aWMgY2hhciAqYWRkciA9IEdMT0JV U19OVUxMOwkvKiBBZGRyZXNzIG9mIGZpcnN0IGBkdW1teScsIG9uY2Uga25vd24uICAqLworLSAg YXV0byBjaGFyIGR1bW15OwkJLyogVG8gZ2V0IHN0YWNrIGFkZHJlc3MuICAqLworKyAgc3RhdGlj IGNoYXIgKmFkZHIgPSBHTE9CVVNfTlVMTDsgICAgICAvKiBBZGRyZXNzIG9mIGZpcnN0IGBkdW1t eScsIG9uY2Uga25vd24uICAqLworKyAgYXV0byBjaGFyIGR1bW15OyAgICAgICAgICAgICAgLyog VG8gZ2V0IHN0YWNrIGFkZHJlc3MuICAqLworIAorICAgaWYgKGFkZHIgPT0gR0xPQlVTX05VTEwp CistICAgIHsJCQkJLyogSW5pdGlhbCBlbnRyeS4gICovCisrICAgIHsgICAgICAgICAgICAgICAg ICAgICAgICAgICAvKiBJbml0aWFsIGVudHJ5LiAgKi8KKyAgICAgICBhZGRyID0gQUREUkVTU19G VU5DVElPTiAoZHVtbXkpOworIAorLSAgICAgIGZpbmRfc3RhY2tfZGlyZWN0aW9uICgpOwkvKiBS ZWN1cnNlIG9uY2UuICAqLworKyAgICAgIGZpbmRfc3RhY2tfZGlyZWN0aW9uICgpOyAgLyogUmVj dXJzZSBvbmNlLiAgKi8KKyAgICAgfQorICAgZWxzZQorICAgICB7CisgICAgICAgLyogU2Vjb25k IGVudHJ5LiAgKi8KKyAgICAgICBpZiAoQUREUkVTU19GVU5DVElPTiAoZHVtbXkpID4gYWRkcikK Ky0Jc3RhY2tfZGlyID0gMTsJCS8qIFN0YWNrIGdyZXcgdXB3YXJkLiAgKi8KKysgICAgICAgIHN0 YWNrX2RpciA9IDE7ICAgICAgICAgIC8qIFN0YWNrIGdyZXcgdXB3YXJkLiAgKi8KKyAgICAgICBl bHNlCistCXN0YWNrX2RpciA9IC0xOwkJLyogU3RhY2sgZ3JldyBkb3dud2FyZC4gICovCisrICAg ICAgICBzdGFja19kaXIgPSAtMTsgICAgICAgICAvKiBTdGFjayBncmV3IGRvd253YXJkLiAgKi8K KyAgICAgfQorIH0KKyAKK0BAIC0yMDEyLDIxICsyMDEyLDIxIEBAIGZpbmRfc3RhY2tfZGlyZWN0 aW9uICgpCisgICAgSXQgaXMgdmVyeSBpbXBvcnRhbnQgdGhhdCBzaXplb2YoaGVhZGVyKSBhZ3Jl ZSB3aXRoIG1hbGxvYworICAgIGFsaWdubWVudCBjaHVuayBzaXplLiAgVGhlIGZvbGxvd2luZyBk ZWZhdWx0IHNob3VsZCB3b3JrIG9rYXkuICAqLworIAorLSNpZm5kZWYJQUxJR05fU0laRQorLSNk ZWZpbmUJQUxJR05fU0laRQlzaXplb2YoZG91YmxlKQorKyNpZm5kZWYgQUxJR05fU0laRQorKyNk ZWZpbmUgQUxJR05fU0laRSAgICAgIHNpemVvZihkb3VibGUpCisgI2VuZGlmCisgCisgdHlwZWRl ZiB1bmlvbiBoZHIKKyB7CistICBjaGFyIGFsaWduW0FMSUdOX1NJWkVdOwkvKiBUbyBmb3JjZSBz aXplb2YoaGVhZGVyKS4gICovCisrICBjaGFyIGFsaWduW0FMSUdOX1NJWkVdOyAgICAgICAvKiBU byBmb3JjZSBzaXplb2YoaGVhZGVyKS4gICovCisgICBzdHJ1Y3QKKyAgICAgeworLSAgICAgIHVu aW9uIGhkciAqbmV4dDsJCS8qIEZvciBjaGFpbmluZyBoZWFkZXJzLiAgKi8KKy0gICAgICBjaGFy ICpkZWVwOwkJLyogRm9yIHN0YWNrIGRlcHRoIG1lYXN1cmUuICAqLworKyAgICAgIHVuaW9uIGhk ciAqbmV4dDsgICAgICAgICAgLyogRm9yIGNoYWluaW5nIGhlYWRlcnMuICAqLworKyAgICAgIGNo YXIgKmRlZXA7ICAgICAgICAgICAgICAgLyogRm9yIHN0YWNrIGRlcHRoIG1lYXN1cmUuICAqLwor ICAgICB9IGg7CisgfSBoZWFkZXI7CisgCistc3RhdGljIGhlYWRlciAqbGFzdF9hbGxvY2FfaGVh ZGVyID0gR0xPQlVTX05VTEw7CS8qIC0+IGxhc3QgYWxsb2NhIGhlYWRlci4gICovCisrc3RhdGlj IGhlYWRlciAqbGFzdF9hbGxvY2FfaGVhZGVyID0gR0xPQlVTX05VTEw7ICAgICAgICAvKiAtPiBs YXN0IGFsbG9jYSBoZWFkZXIuICAqLworIAorIC8qIFJldHVybiBhIHBvaW50ZXIgdG8gYXQgbGVh c3QgU0laRSBieXRlcyBvZiBzdG9yYWdlLAorICAgIHdoaWNoIHdpbGwgYmUgYXV0b21hdGljYWxs eSByZWNsYWltZWQgdXBvbiBleGl0IGZyb20KK0BAIC0yMDM5LDExICsyMDM5LDExIEBAIHZvaWQg KgorIGFsbG9jYSAoc2l6ZSkKKyAgICAgIHVuc2lnbmVkIHNpemU7CisgeworLSAgYXV0byBjaGFy IHByb2JlOwkJLyogUHJvYmVzIHN0YWNrIGRlcHRoOiAqLworKyAgYXV0byBjaGFyIHByb2JlOyAg ICAgICAgICAgICAgLyogUHJvYmVzIHN0YWNrIGRlcHRoOiAqLworICAgcmVnaXN0ZXIgY2hhciAq ZGVwdGggPSBBRERSRVNTX0ZVTkNUSU9OIChwcm9iZSk7CisgCisgI2lmIFNUQUNLX0RJUkVDVElP TiA9PSAwCistICBpZiAoU1RBQ0tfRElSID09IDApCQkvKiBVbmtub3duIGdyb3d0aCBkaXJlY3Rp b24uICAqLworKyAgaWYgKFNUQUNLX0RJUiA9PSAwKSAgICAgICAgICAgLyogVW5rbm93biBncm93 dGggZGlyZWN0aW9uLiAgKi8KKyAgICAgZmluZF9zdGFja19kaXJlY3Rpb24gKCk7CisgI2VuZGlm CisgCitAQCAtMjA1MSw3ICsyMDUxLDcgQEAgYWxsb2NhIChzaXplKQorICAgICAgd2FzIGFsbG9j YXRlZCBmcm9tIGRlZXBlciBpbiB0aGUgc3RhY2sgdGhhbiBjdXJyZW50bHkuICAqLworIAorICAg eworLSAgICByZWdpc3RlciBoZWFkZXIgKmhwOwkvKiBUcmF2ZXJzZXMgbGlua2VkIGxpc3QuICAq LworKyAgICByZWdpc3RlciBoZWFkZXIgKmhwOyAgICAgICAgLyogVHJhdmVyc2VzIGxpbmtlZCBs aXN0LiAgKi8KKyAKKyAjaWZkZWYgZW1hY3MKKyAgICAgQkxPQ0tfSU5QVVQ7CitAQCAtMjA1OSwx OCArMjA1OSwxOCBAQCBhbGxvY2EgKHNpemUpCisgCisgICAgIGZvciAoaHAgPSBsYXN0X2FsbG9j YV9oZWFkZXI7IGhwICE9IEdMT0JVU19OVUxMOykKKyAgICAgICBpZiAoKFNUQUNLX0RJUiA+IDAg JiYgaHAtPmguZGVlcCA+IGRlcHRoKQorLQkgIHx8IChTVEFDS19ESVIgPCAwICYmIGhwLT5oLmRl ZXAgPCBkZXB0aCkpCistCXsKKy0JICByZWdpc3RlciBoZWFkZXIgKm5wID0gaHAtPmgubmV4dDsK KysgICAgICAgICAgfHwgKFNUQUNLX0RJUiA8IDAgJiYgaHAtPmguZGVlcCA8IGRlcHRoKSkKKysg ICAgICAgIHsKKysgICAgICAgICAgcmVnaXN0ZXIgaGVhZGVyICpucCA9IGhwLT5oLm5leHQ7Cisg CistCSAgZnJlZSAoKHZvaWQgKikgaHApOwkvKiBDb2xsZWN0IGdhcmJhZ2UuICAqLworKyAgICAg ICAgICBmcmVlICgodm9pZCAqKSBocCk7ICAgLyogQ29sbGVjdCBnYXJiYWdlLiAgKi8KKyAKKy0J ICBocCA9IG5wOwkJLyogLT4gbmV4dCBoZWFkZXIuICAqLworLQl9CisrICAgICAgICAgIGhwID0g bnA7ICAgICAgICAgICAgICAvKiAtPiBuZXh0IGhlYWRlci4gICovCisrICAgICAgICB9CisgICAg ICAgZWxzZQorLQlicmVhazsJCQkvKiBSZXN0IGFyZSBub3QgZGVlcGVyLiAgKi8KKysgICAgICAg IGJyZWFrOyAgICAgICAgICAgICAgICAgIC8qIFJlc3QgYXJlIG5vdCBkZWVwZXIuICAqLworIAor LSAgICBsYXN0X2FsbG9jYV9oZWFkZXIgPSBocDsJLyogLT4gbGFzdCB2YWxpZCBzdG9yYWdlLiAg Ki8KKysgICAgbGFzdF9hbGxvY2FfaGVhZGVyID0gaHA7ICAgIC8qIC0+IGxhc3QgdmFsaWQgc3Rv cmFnZS4gICovCisgCisgI2lmZGVmIGVtYWNzCisgICAgIFVOQkxPQ0tfSU5QVVQ7CitAQCAtMjA3 OCw3ICsyMDc4LDcgQEAgYWxsb2NhIChzaXplKQorICAgfQorIAorICAgaWYgKHNpemUgPT0gMCkK Ky0gICAgcmV0dXJuIEdMT0JVU19OVUxMOwkJLyogTm8gYWxsb2NhdGlvbiByZXF1aXJlZC4gICov CisrICAgIHJldHVybiBHTE9CVVNfTlVMTDsgICAgICAgICAvKiBObyBhbGxvY2F0aW9uIHJlcXVp cmVkLiAgKi8KKyAKKyAgIC8qIEFsbG9jYXRlIGNvbWJpbmVkIGhlYWRlciArIHVzZXIgZGF0YSBz dG9yYWdlLiAgKi8KKyAKK0BAIC0yMTA3LDEwICsyMTA3LDEwIEBAIGFsbG9jYSAoc2l6ZSkKKyAv KiBTdGFjayBzdHJ1Y3R1cmVzIGZvciBDUkFZLTEsIENSQVkgWC1NUCwgYW5kIENSQVkgWS1NUCAq LworIHN0cnVjdCBzdGFja19jb250cm9sX2hlYWRlcgorICAgeworLSAgICBsb25nIHNoZ3Jvdzoz MjsJCS8qIE51bWJlciBvZiB0aW1lcyBzdGFjayBoYXMgZ3Jvd24uICAqLworLSAgICBsb25nIHNo YXNlZzozMjsJCS8qIFNpemUgb2YgaW5jcmVtZW50cyB0byBzdGFjay4gICovCistICAgIGxvbmcg c2hod206MzI7CQkvKiBIaWdoIHdhdGVyIG1hcmsgb2Ygc3RhY2suICAqLworLSAgICBsb25nIHNo c2l6ZTozMjsJCS8qIEN1cnJlbnQgc2l6ZSBvZiBzdGFjayAoYWxsIHNlZ21lbnRzKS4gICovCisr ICAgIGxvbmcgc2hncm93OjMyOyAgICAgICAgICAgICAvKiBOdW1iZXIgb2YgdGltZXMgc3RhY2sg aGFzIGdyb3duLiAgKi8KKysgICAgbG9uZyBzaGFzZWc6MzI7ICAgICAgICAgICAgIC8qIFNpemUg b2YgaW5jcmVtZW50cyB0byBzdGFjay4gICovCisrICAgIGxvbmcgc2hod206MzI7ICAgICAgICAg ICAgICAvKiBIaWdoIHdhdGVyIG1hcmsgb2Ygc3RhY2suICAqLworKyAgICBsb25nIHNoc2l6ZToz MjsgICAgICAgICAgICAgLyogQ3VycmVudCBzaXplIG9mIHN0YWNrIChhbGwgc2VnbWVudHMpLiAg Ki8KKyAgIH07CisgCisgLyogVGhlIHN0YWNrIHNlZ21lbnQgbGlua2FnZSBjb250cm9sIGluZm9y bWF0aW9uIG9jY3VycyBhdAorQEAgLTIxMjIsMjEgKzIxMjIsMjEgQEAgc3RydWN0IHN0YWNrX2Nv bnRyb2xfaGVhZGVyCisgCisgc3RydWN0IHN0YWNrX3NlZ21lbnRfbGlua2FnZQorICAgeworLSAg ICBsb25nIHNzWzAyMDBdOwkJLyogMDIwMCBvdmVyZmxvdyB3b3Jkcy4gICovCistICAgIGxvbmcg c3NzaXplOjMyOwkJLyogTnVtYmVyIG9mIHdvcmRzIGluIHRoaXMgc2VnbWVudC4gICovCistICAg IGxvbmcgc3NiYXNlOjMyOwkJLyogT2Zmc2V0IHRvIHN0YWNrIGJhc2UuICAqLworKyAgICBsb25n IHNzWzAyMDBdOyAgICAgICAgICAgICAgLyogMDIwMCBvdmVyZmxvdyB3b3Jkcy4gICovCisrICAg IGxvbmcgc3NzaXplOjMyOyAgICAgICAgICAgICAvKiBOdW1iZXIgb2Ygd29yZHMgaW4gdGhpcyBz ZWdtZW50LiAgKi8KKysgICAgbG9uZyBzc2Jhc2U6MzI7ICAgICAgICAgICAgIC8qIE9mZnNldCB0 byBzdGFjayBiYXNlLiAgKi8KKyAgICAgbG9uZzozMjsKKy0gICAgbG9uZyBzc3BzZWc6MzI7CQkv KiBPZmZzZXQgdG8gbGlua2FnZSBjb250cm9sIG9mIHByZXZpb3VzCistCQkJCSAgIHNlZ21lbnQg b2Ygc3RhY2suICAqLworKyAgICBsb25nIHNzcHNlZzozMjsgICAgICAgICAgICAgLyogT2Zmc2V0 IHRvIGxpbmthZ2UgY29udHJvbCBvZiBwcmV2aW91cworKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2VnbWVudCBvZiBzdGFjay4gICovCisgICAgIGxvbmc6MzI7CistICAgIGxv bmcgc3N0Y3B0OjMyOwkJLyogUG9pbnRlciB0byB0YXNrIGNvbW1vbiBhZGRyZXNzIGJsb2NrLiAg Ki8KKy0gICAgbG9uZyBzc2Nzbm07CQkvKiBQcml2YXRlIGNvbnRyb2wgc3RydWN0dXJlIG51bWJl ciBmb3IKKy0JCQkJICAgbWljcm90YXNraW5nLiAgKi8KKy0gICAgbG9uZyBzc3VzcjE7CQkvKiBS ZXNlcnZlZCBmb3IgdXNlci4gICovCistICAgIGxvbmcgc3N1c3IyOwkJLyogUmVzZXJ2ZWQgZm9y IHVzZXIuICAqLworLSAgICBsb25nIHNzdHBpZDsJCS8qIFByb2Nlc3MgSUQgZm9yIHBpZCBiYXNl ZCBtdWx0aS10YXNraW5nLiAgKi8KKy0gICAgbG9uZyBzc2d2dXA7CQkvKiBQb2ludGVyIHRvIG11 bHRpdGFza2luZyB0aHJlYWQgZ2l2ZXVwLiAgKi8KKy0gICAgbG9uZyBzc2NyYXlbN107CQkvKiBS ZXNlcnZlZCBmb3IgQ3JheSBSZXNlYXJjaC4gICovCisrICAgIGxvbmcgc3N0Y3B0OjMyOyAgICAg ICAgICAgICAvKiBQb2ludGVyIHRvIHRhc2sgY29tbW9uIGFkZHJlc3MgYmxvY2suICAqLworKyAg ICBsb25nIHNzY3NubTsgICAgICAgICAgICAgICAgLyogUHJpdmF0ZSBjb250cm9sIHN0cnVjdHVy ZSBudW1iZXIgZm9yCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaWNyb3Rh c2tpbmcuICAqLworKyAgICBsb25nIHNzdXNyMTsgICAgICAgICAgICAgICAgLyogUmVzZXJ2ZWQg Zm9yIHVzZXIuICAqLworKyAgICBsb25nIHNzdXNyMjsgICAgICAgICAgICAgICAgLyogUmVzZXJ2 ZWQgZm9yIHVzZXIuICAqLworKyAgICBsb25nIHNzdHBpZDsgICAgICAgICAgICAgICAgLyogUHJv Y2VzcyBJRCBmb3IgcGlkIGJhc2VkIG11bHRpLXRhc2tpbmcuICAqLworKyAgICBsb25nIHNzZ3Z1 cDsgICAgICAgICAgICAgICAgLyogUG9pbnRlciB0byBtdWx0aXRhc2tpbmcgdGhyZWFkIGdpdmV1 cC4gICovCisrICAgIGxvbmcgc3NjcmF5WzddOyAgICAgICAgICAgICAvKiBSZXNlcnZlZCBmb3Ig Q3JheSBSZXNlYXJjaC4gICovCisgICAgIGxvbmcgc3NhMDsKKyAgICAgbG9uZyBzc2ExOworICAg ICBsb25nIHNzYTI7CitAQCAtMjE2MCwyNyArMjE2MCwyNyBAQCBzdHJ1Y3Qgc3RhY2tfc2VnbWVu dF9saW5rYWdlCisgICAgcmV0dXJuZWQgYnkgdGhlIFNUS1NUQVQgbGlicmFyeSByb3V0aW5lLiAg Ki8KKyBzdHJ1Y3Qgc3RrX3N0YXQKKyAgIHsKKy0gICAgbG9uZyBub3c7CQkJLyogQ3VycmVudCB0 b3RhbCBzdGFjayBzaXplLiAgKi8KKy0gICAgbG9uZyBtYXhjOwkJCS8qIEFtb3VudCBvZiBjb250 aWd1b3VzIHNwYWNlIHdoaWNoIHdvdWxkCistCQkJCSAgIGJlIHJlcXVpcmVkIHRvIHNhdGlzZnkg dGhlIG1heGltdW0KKy0JCQkJICAgc3RhY2sgZGVtYW5kIHRvIGRhdGUuICAqLworLSAgICBsb25n IGhpZ2hfd2F0ZXI7CQkvKiBTdGFjayBoaWdoLXdhdGVyIG1hcmsuICAqLworLSAgICBsb25nIG92 ZXJmbG93czsJCS8qIE51bWJlciBvZiBzdGFjayBvdmVyZmxvdyAoJFNUS09GRU4pIGNhbGxzLiAg Ki8KKy0gICAgbG9uZyBoaXRzOwkJCS8qIE51bWJlciBvZiBpbnRlcm5hbCBidWZmZXIgaGl0cy4g ICovCistICAgIGxvbmcgZXh0ZW5kczsJCS8qIE51bWJlciBvZiBibG9jayBleHRlbnNpb25zLiAg Ki8KKy0gICAgbG9uZyBzdGtvX21hbGxvY3M7CQkvKiBCbG9jayBhbGxvY2F0aW9ucyBieSAkU1RL T0ZFTi4gICovCistICAgIGxvbmcgdW5kZXJmbG93czsJCS8qIE51bWJlciBvZiBzdGFjayB1bmRl cmZsb3cgY2FsbHMgKCRTVEtSRVROKS4gICovCistICAgIGxvbmcgc3Rrb19mcmVlOwkJLyogTnVt YmVyIG9mIGRlYWxsb2NhdGlvbnMgYnkgJFNUS1JFVE4uICAqLworLSAgICBsb25nIHN0a21fZnJl ZTsJCS8qIE51bWJlciBvZiBkZWFsbG9jYXRpb25zIGJ5ICRTVEtNUkVULiAgKi8KKy0gICAgbG9u ZyBzZWdtZW50czsJCS8qIEN1cnJlbnQgbnVtYmVyIG9mIHN0YWNrIHNlZ21lbnRzLiAgKi8KKy0g ICAgbG9uZyBtYXhzOwkJCS8qIE1heGltdW0gbnVtYmVyIG9mIHN0YWNrIHNlZ21lbnRzIHNvIGZh ci4gICovCistICAgIGxvbmcgcGFkX3NpemU7CQkvKiBTdGFjayBwYWQgc2l6ZS4gICovCistICAg IGxvbmcgY3VycmVudF9hZGRyZXNzOwkvKiBDdXJyZW50IHN0YWNrIHNlZ21lbnQgYWRkcmVzcy4g ICovCistICAgIGxvbmcgY3VycmVudF9zaXplOwkJLyogQ3VycmVudCBzdGFjayBzZWdtZW50IHNp emUuICBUaGlzCistCQkJCSAgIG51bWJlciBpcyBhY3R1YWxseSBjb3JydXB0ZWQgYnkgU1RLU1RB VCB0bworLQkJCQkgICBpbmNsdWRlIHRoZSBmaWZ0ZWVuIHdvcmQgdHJhaWxlciBhcmVhLiAgKi8K Ky0gICAgbG9uZyBpbml0aWFsX2FkZHJlc3M7CS8qIEFkZHJlc3Mgb2YgaW5pdGlhbCBzZWdtZW50 LiAgKi8KKy0gICAgbG9uZyBpbml0aWFsX3NpemU7CQkvKiBTaXplIG9mIGluaXRpYWwgc2VnbWVu dC4gICovCisrICAgIGxvbmcgbm93OyAgICAgICAgICAgICAgICAgICAvKiBDdXJyZW50IHRvdGFs IHN0YWNrIHNpemUuICAqLworKyAgICBsb25nIG1heGM7ICAgICAgICAgICAgICAgICAgLyogQW1v dW50IG9mIGNvbnRpZ3VvdXMgc3BhY2Ugd2hpY2ggd291bGQKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGJlIHJlcXVpcmVkIHRvIHNhdGlzZnkgdGhlIG1heGltdW0KKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrIGRlbWFuZCB0byBkYXRlLiAgKi8K KysgICAgbG9uZyBoaWdoX3dhdGVyOyAgICAgICAgICAgIC8qIFN0YWNrIGhpZ2gtd2F0ZXIgbWFy ay4gICovCisrICAgIGxvbmcgb3ZlcmZsb3dzOyAgICAgICAgICAgICAvKiBOdW1iZXIgb2Ygc3Rh Y2sgb3ZlcmZsb3cgKCRTVEtPRkVOKSBjYWxscy4gICovCisrICAgIGxvbmcgaGl0czsgICAgICAg ICAgICAgICAgICAvKiBOdW1iZXIgb2YgaW50ZXJuYWwgYnVmZmVyIGhpdHMuICAqLworKyAgICBs b25nIGV4dGVuZHM7ICAgICAgICAgICAgICAgLyogTnVtYmVyIG9mIGJsb2NrIGV4dGVuc2lvbnMu ICAqLworKyAgICBsb25nIHN0a29fbWFsbG9jczsgICAgICAgICAgLyogQmxvY2sgYWxsb2NhdGlv bnMgYnkgJFNUS09GRU4uICAqLworKyAgICBsb25nIHVuZGVyZmxvd3M7ICAgICAgICAgICAgLyog TnVtYmVyIG9mIHN0YWNrIHVuZGVyZmxvdyBjYWxscyAoJFNUS1JFVE4pLiAgKi8KKysgICAgbG9u ZyBzdGtvX2ZyZWU7ICAgICAgICAgICAgIC8qIE51bWJlciBvZiBkZWFsbG9jYXRpb25zIGJ5ICRT VEtSRVROLiAgKi8KKysgICAgbG9uZyBzdGttX2ZyZWU7ICAgICAgICAgICAgIC8qIE51bWJlciBv ZiBkZWFsbG9jYXRpb25zIGJ5ICRTVEtNUkVULiAgKi8KKysgICAgbG9uZyBzZWdtZW50czsgICAg ICAgICAgICAgIC8qIEN1cnJlbnQgbnVtYmVyIG9mIHN0YWNrIHNlZ21lbnRzLiAgKi8KKysgICAg bG9uZyBtYXhzOyAgICAgICAgICAgICAgICAgIC8qIE1heGltdW0gbnVtYmVyIG9mIHN0YWNrIHNl Z21lbnRzIHNvIGZhci4gICovCisrICAgIGxvbmcgcGFkX3NpemU7ICAgICAgICAgICAgICAvKiBT dGFjayBwYWQgc2l6ZS4gICovCisrICAgIGxvbmcgY3VycmVudF9hZGRyZXNzOyAgICAgICAvKiBD dXJyZW50IHN0YWNrIHNlZ21lbnQgYWRkcmVzcy4gICovCisrICAgIGxvbmcgY3VycmVudF9zaXpl OyAgICAgICAgICAvKiBDdXJyZW50IHN0YWNrIHNlZ21lbnQgc2l6ZS4gIFRoaXMKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlciBpcyBhY3R1YWxseSBjb3JydXB0ZWQg YnkgU1RLU1RBVCB0bworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVk ZSB0aGUgZmlmdGVlbiB3b3JkIHRyYWlsZXIgYXJlYS4gICovCisrICAgIGxvbmcgaW5pdGlhbF9h ZGRyZXNzOyAgICAgICAvKiBBZGRyZXNzIG9mIGluaXRpYWwgc2VnbWVudC4gICovCisrICAgIGxv bmcgaW5pdGlhbF9zaXplOyAgICAgICAgICAvKiBTaXplIG9mIGluaXRpYWwgc2VnbWVudC4gICov CisgICB9OworIAorIC8qIFRoZSBmb2xsb3dpbmcgc3RydWN0dXJlIGRlc2NyaWJlcyB0aGUgZGF0 YSBzdHJ1Y3R1cmUgd2hpY2ggdHJhaWxzCitAQCAtMjE4OSwxMyArMjE4OSwxMyBAQCBzdHJ1Y3Qg c3RrX3N0YXQKKyAKKyBzdHJ1Y3Qgc3RrX3RyYWlsZXIKKyAgIHsKKy0gICAgbG9uZyB0aGlzX2Fk ZHJlc3M7CQkvKiBBZGRyZXNzIG9mIHRoaXMgYmxvY2suICAqLworLSAgICBsb25nIHRoaXNfc2l6 ZTsJCS8qIFNpemUgb2YgdGhpcyBibG9jayAoZG9lcyBub3QgaW5jbHVkZQorLQkJCQkgICB0aGlz IHRyYWlsZXIpLiAgKi8KKysgICAgbG9uZyB0aGlzX2FkZHJlc3M7ICAgICAgICAgIC8qIEFkZHJl c3Mgb2YgdGhpcyBibG9jay4gICovCisrICAgIGxvbmcgdGhpc19zaXplOyAgICAgICAgICAgICAv KiBTaXplIG9mIHRoaXMgYmxvY2sgKGRvZXMgbm90IGluY2x1ZGUKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHRoaXMgdHJhaWxlcikuICAqLworICAgICBsb25nIHVua25vd24y OworICAgICBsb25nIHVua25vd24zOworLSAgICBsb25nIGxpbms7CQkJLyogQWRkcmVzcyBvZiB0 cmFpbGVyIGJsb2NrIG9mIHByZXZpb3VzCistCQkJCSAgIHNlZ21lbnQuICAqLworKyAgICBsb25n IGxpbms7ICAgICAgICAgICAgICAgICAgLyogQWRkcmVzcyBvZiB0cmFpbGVyIGJsb2NrIG9mIHBy ZXZpb3VzCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWdtZW50LiAgKi8K KyAgICAgbG9uZyB1bmtub3duNTsKKyAgICAgbG9uZyB1bmtub3duNjsKKyAgICAgbG9uZyB1bmtu b3duNzsKK0BAIC0yMjMzLDggKzIyMzMsOCBAQCBnbG9idXNfbF9saWJjX2kwMGFmdW5jIChsb25n ICphZGRyZXNzKQorICAgLyogU2V0IHVwIHRoZSBpdGVyYXRpb24uICAqLworIAorICAgdHJhaWxl ciA9IChzdHJ1Y3Qgc3RrX3RyYWlsZXIgKikgKHN0YXR1cy5jdXJyZW50X2FkZHJlc3MKKy0JCQkJ ICAgICsgc3RhdHVzLmN1cnJlbnRfc2l6ZQorLQkJCQkgICAgLSAxNSk7CisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKyBzdGF0dXMuY3VycmVudF9zaXplCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLSAxNSk7CisgCisgICAvKiBUaGVyZSBtdXN0IGJl IGF0IGxlYXN0IG9uZSBzdGFjayBzZWdtZW50LiAgVGhlcmVmb3JlIGl0IGlzCisgICAgICBhIGZh dGFsIGVycm9yIGlmICJ0cmFpbGVyIiBpcyBudWxsLiAgKi8KK0BAIC0yMjQ5LDEwICsyMjQ5LDEw IEBAIGdsb2J1c19sX2xpYmNfaTAwYWZ1bmMgKGxvbmcgKmFkZHJlc3MpCisgICAgICAgYmxvY2sg PSAobG9uZyAqKSB0cmFpbGVyLT50aGlzX2FkZHJlc3M7CisgICAgICAgc2l6ZSA9IHRyYWlsZXIt PnRoaXNfc2l6ZTsKKyAgICAgICBpZiAoYmxvY2sgPT0gMCB8fCBzaXplID09IDApCistCWFib3J0 ICgpOworKyAgICAgICAgYWJvcnQgKCk7CisgICAgICAgdHJhaWxlciA9IChzdHJ1Y3Qgc3RrX3Ry YWlsZXIgKikgdHJhaWxlci0+bGluazsKKyAgICAgICBpZiAoKGJsb2NrIDw9IGFkZHJlc3MpICYm IChhZGRyZXNzIDwgKGJsb2NrICsgc2l6ZSkpKQorLQlicmVhazsKKysgICAgICAgIGJyZWFrOwor ICAgICB9CisgCisgICAvKiBTZXQgdGhlIHJlc3VsdCB0byB0aGUgb2Zmc2V0IGluIHRoaXMgc2Vn bWVudCBhbmQgYWRkIHRoZSBzaXplcworQEAgLTIyNjgsNyArMjI2OCw3IEBAIGdsb2J1c19sX2xp YmNfaTAwYWZ1bmMgKGxvbmcgKmFkZHJlc3MpCisgICBkbworICAgICB7CisgICAgICAgaWYgKHRy YWlsZXItPnRoaXNfc2l6ZSA8PSAwKQorLQlhYm9ydCAoKTsKKysgICAgICAgIGFib3J0ICgpOwor ICAgICAgIHJlc3VsdCArPSB0cmFpbGVyLT50aGlzX3NpemU7CisgICAgICAgdHJhaWxlciA9IChz dHJ1Y3Qgc3RrX3RyYWlsZXIgKikgdHJhaWxlci0+bGluazsKKyAgICAgfQorQEAgLTIzMzEsNyAr MjMzMSw3IEBAIGdsb2J1c19sX2xpYmNfaTAwYWZ1bmMgKGxvbmcgYWRkcmVzcykKKyAgICAgICBm cHJpbnRmIChzdGRlcnIsICIlMDExbyAlMDExbyAlMDExb1xuIiwgdGhpc19zZWdtZW50LCBhZGRy ZXNzLCBzdGtsKTsKKyAjZW5kaWYKKyAgICAgICBpZiAocHNlZyA9PSAwKQorLQlicmVhazsKKysg ICAgICAgIGJyZWFrOworICAgICAgIHN0a2wgPSBzdGtsIC0gcHNlZzsKKyAgICAgICBzc3B0ciA9 IChzdHJ1Y3Qgc3RhY2tfc2VnbWVudF9saW5rYWdlICopIHN0a2w7CisgICAgICAgc2l6ZSA9IHNz cHRyLT5zc3NpemU7CitAQCAtMjM3NywxMSArMjM3NywxMSBAQCBnbG9idXNfbF9saWJjX2NvcHlf YWRkcmluZm8oCisgICAgIGdsb2J1c19hZGRyaW5mb190ICogICAgICAgICAgICAgICAgIG5ld19h ZGRyaW5mbzsKKyAgICAgZ2xvYnVzX2FkZHJpbmZvX3QgKiAgICAgICAgICAgICAgICAgYWRkcmlu Zm87CisgICAgIGNoYXIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbm9ubmFtZSA9 IE5VTEw7CistICAgIAorKworICAgICBhZGRyaW5mbyA9IGluX2FkZHJpbmZvOworICAgICBpZihh ZGRyaW5mbykKKyAgICAgeworLSAgICAgICAgbmV3X2FkZHJpbmZvID0gKGdsb2J1c19hZGRyaW5m b190ICopIAorKyAgICAgICAgbmV3X2FkZHJpbmZvID0gKGdsb2J1c19hZGRyaW5mb190ICopCisg ICAgICAgICAgICAgZ2xvYnVzX21hbGxvYyhzaXplb2YoZ2xvYnVzX2FkZHJpbmZvX3QpKTsKKyAg ICAgICAgIG1lbWNweShuZXdfYWRkcmluZm8sIGFkZHJpbmZvLCBzaXplb2YoZ2xvYnVzX2FkZHJp bmZvX3QpKTsKKyAgICAgICAgIG5ld19hZGRyaW5mby0+YWlfYWRkciA9IChzdHJ1Y3Qgc29ja2Fk ZHIgKikKK0BAIC0yMzk3LDE5ICsyMzk3LDE5IEBAIGdsb2J1c19sX2xpYmNfY29weV9hZGRyaW5m bygKKyAgICAgICAgICAgICBhZGRyaW5mbzsKKyAgICAgICAgICAgICBhZGRyaW5mbyA9IGFkZHJp bmZvLT5haV9uZXh0KQorICAgICAgICAgeworLSAgICAgICAgICAgIG5ld19hZGRyaW5mby0+YWlf bmV4dCA9IChnbG9idXNfYWRkcmluZm9fdCAqKSAKKysgICAgICAgICAgICBuZXdfYWRkcmluZm8t PmFpX25leHQgPSAoZ2xvYnVzX2FkZHJpbmZvX3QgKikKKyAgICAgICAgICAgICAgICAgZ2xvYnVz X21hbGxvYyhzaXplb2YoZ2xvYnVzX2FkZHJpbmZvX3QpKTsKKyAgICAgICAgICAgICBuZXdfYWRk cmluZm8gPSBuZXdfYWRkcmluZm8tPmFpX25leHQ7CisgICAgICAgICAgICAgbWVtY3B5KG5ld19h ZGRyaW5mbywgYWRkcmluZm8sIHNpemVvZihnbG9idXNfYWRkcmluZm9fdCkpOworICAgICAgICAg ICAgIG5ld19hZGRyaW5mby0+YWlfYWRkciA9IChzdHJ1Y3Qgc29ja2FkZHIgKikKKyAgICAgICAg ICAgICAgICAgZ2xvYnVzX21hbGxvYyhhZGRyaW5mby0+YWlfYWRkcmxlbik7CistICAgICAgICAg ICAgbWVtY3B5KG5ld19hZGRyaW5mby0+YWlfYWRkciwgYWRkcmluZm8tPmFpX2FkZHIsIAorKyAg ICAgICAgICAgIG1lbWNweShuZXdfYWRkcmluZm8tPmFpX2FkZHIsIGFkZHJpbmZvLT5haV9hZGRy LAorICAgICAgICAgICAgICAgICBhZGRyaW5mby0+YWlfYWRkcmxlbik7CisgICAgICAgICAgICAg bmV3X2FkZHJpbmZvLT5haV9jYW5vbm5hbWUgPSBjYW5vbm5hbWU7CisgICAgICAgICB9CisgICAg IH0KKy0gICAgCistICAgIHJldHVybiAwOyAgICAgICAKKysKKysgICAgcmV0dXJuIDA7CisgfQor ICNlbmRpZgorIAorQEAgLTI0MjMsNyArMjQyMyw3IEBAIGdsb2J1c19saWJjX2dldGFkZHJpbmZv KAorICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYzsKKyAgICAgZ2xv YnVzX3Jlc3VsdF90ICAgICAgICAgICAgICAgICAgICAgcmVzdWx0OworICAgICBjb25zdCBjaGFy ICogICAgICAgICAgICAgICAgICAgICAgICBwb3J0X3N0ciA9IHNlcnZpY2U7CistICAgIAorKwor ICNpZmRlZiBUQVJHRVRfQVJDSF9BSVg1CisgICAgIGlmKHBvcnRfc3RyICYmIHBvcnRfc3RyWzBd ID09ICcwJyAmJiBwb3J0X3N0clsxXSA9PSAnXDAnKQorICAgICB7CitAQCAtMjQzNCw3ICsyNDM0 LDcgQEAgZ2xvYnVzX2xpYmNfZ2V0YWRkcmluZm8oCisgICAgICAgICBwb3J0X3N0ciA9ICI1Njc4 OSI7CisgICAgIH0KKyAjZW5kaWYKKy0gICAgCisrCisgICAgIHJlc3VsdCA9IEdMT0JVU19TVUND RVNTOworIAorICAgICByYyA9IGdldGFkZHJpbmZvKG5vZGUsIHBvcnRfc3RyLCBoaW50cywgcmVz KTsKK0BAIC0yNDc0LDcgKzI0NzQsNyBAQCBnbG9idXNfbGliY19nZXRhZGRyaW5mbygKKyAjaWZk ZWYgVEFSR0VUX0FSQ0hfQUlYNQorICAgICB7CisgICAgICAgICBnbG9idXNfYWRkcmluZm9fdCAq ICAgICAgICAgICAgIGFkZHJpbmZvOworLSAgICAgICAgCisrCisgICAgICAgICAvKiBhaXgncyBn ZXRhZGRyaW5mbyBhbHNvIGRvZXNudCBmaWxsIGluIHRoZSBmYW1pbHkgYW5kIGxlbiBmaWVsZHMg b2YKKyAgICAgICAgICAqIHRoZSBzb2NrYWRkcnMKKyAgICAgICAgICAqLworQEAgLTI1MjYsNyAr MjUyNiw3IEBAIGdsb2J1c19saWJjX2dldG5hbWVpbmZvKAorICAgICAvKgorICAgICAgKiBDb2Rl IHRvIHdvcmsgYXJvdW5kIGEgYnVnIGluIGdldG5hbWVpbmZvKCkgb24gT1MgWCBvbiBJbnRlbCAo YnVnCisgICAgICAqICM0MjkyIGluIEdsb2J1cyBidWd6aWxsYSkuCistICAgICAqIFByb2JsZW0g b2JzZXJ2ZWQgb24gT1MgWCAxMC40Ljg6IAorKyAgICAgKiBQcm9ibGVtIG9ic2VydmVkIG9uIE9T IFggMTAuNC44OgorICAgICAgKiAgICBnZXRuYW1laW5mbygpIGZhaWxzIHRvIGNvbnZlcnQgcG9y dCBudW1iZXIgdG8gaG9zdCBieXRlIG9yZGVyCisgICAgICAqICAgIHdoZW4gZ2VuZXJhdGluZyBz ZXJ2aWNlIHBvcnQgc3RyaW5nLiBJZiB0aGUgaG9zdCBpcyByZXF1ZXN0ZWQKKyAgICAgICogICAg aW4gbnVtZXJpYyBmb3JtLCBhIGRpZmZlcmVudCBjb2RlIHBhdGggaW4gZ2V0bmFtZWluZm8oKSBp cyB1c2VkCitAQCAtMjY4NSw3ICsyNjg1LDcgQEAgZ2xvYnVzX2xpYmNfYWRkcl9pc19sb29wYmFj aygKKyAgICAgc3dpdGNoKF9hZGRyLT5zYV9mYW1pbHkpCisgICAgIHsKKyAgICAgICBjYXNlIEFG X0lORVQ6CistICAgICAgICBpZigqKHVpbnQ4X3QgKikgJigoc3RydWN0IHNvY2thZGRyX2luICop IAorKyAgICAgICAgaWYoKih1aW50OF90ICopICYoKHN0cnVjdCBzb2NrYWRkcl9pbiAqKQorICAg ICAgICAgICAgICAgICBfYWRkciktPnNpbl9hZGRyLnNfYWRkciA9PSAxMjcpCisgICAgICAgICB7 CisgICAgICAgICAgICAgcmVzdWx0ID0gR0xPQlVTX1RSVUU7CitAQCAtMjY5NSw4ICsyNjk1LDgg QEAgZ2xvYnVzX2xpYmNfYWRkcl9pc19sb29wYmFjaygKKyAgICAgICBjYXNlIEFGX0lORVQ2Ogor ICAgICAgICAgaWYoSU42X0lTX0FERFJfTE9PUEJBQ0soJigoc3RydWN0IHNvY2thZGRyX2luNiAq KSBfYWRkciktPnNpbjZfYWRkcikgfHwKKyAgICAgICAgICAgICAoSU42X0lTX0FERFJfVjRNQVBQ RUQoJigoc3RydWN0IHNvY2thZGRyX2luNiAqKSBfYWRkciktPnNpbjZfYWRkcikgJiYKKy0gICAg ICAgICAgICAqKHVpbnQ4X3QgKikgJigoc3RydWN0IHNvY2thZGRyX2luNiAqKSAKKy0gICAgICAg ICAgICAgICAgX2FkZHIpLT5zaW42X2FkZHIuczZfYWRkclsxMl0gPT0gMTI3KSkgICAgICAgIAor KyAgICAgICAgICAgICoodWludDhfdCAqKSAmKChzdHJ1Y3Qgc29ja2FkZHJfaW42ICopCisrICAg ICAgICAgICAgICAgIF9hZGRyKS0+c2luNl9hZGRyLnM2X2FkZHJbMTJdID09IDEyNykpCisgICAg ICAgICB7CisgICAgICAgICAgICAgcmVzdWx0ID0gR0xPQlVTX1RSVUU7CisgICAgICAgICB9CitA QCAtMjcxNyw3ICsyNzE3LDcgQEAgZ2xvYnVzX2xpYmNfYWRkcl9pc193aWxkY2FyZCgKKyB7Cisg ICAgIHN0cnVjdCBzb2NrYWRkciAqICAgICAgICAgICAgICAgICAgIF9hZGRyID0gKHN0cnVjdCBz b2NrYWRkciAqKSBhZGRyOworICAgICBnbG9idXNfYm9vbF90ICAgICAgICAgICAgICAgICAgICAg ICByZXN1bHQgPSBHTE9CVVNfRkFMU0U7CistICAgIAorKworICAgICBzd2l0Y2goX2FkZHItPnNh X2ZhbWlseSkKKyAgICAgeworICAgICAgIGNhc2UgQUZfSU5FVDoKK0BAIC0yNzQwLDcgKzI3NDAs NyBAQCBnbG9idXNfbGliY19hZGRyX2lzX3dpbGRjYXJkKAorICAgICAgICAgYnJlYWs7CisgI2Vu ZGlmCisgICAgICAgZGVmYXVsdDoKKy0JICAgIHByaW50ZigiJWRcbiVkXG4iLCBfYWRkci0+c2Ff ZmFtaWx5LCBBRl9JTkVUNik7CisrICAgICAgICAgICAgcHJpbnRmKCIlZFxuJWRcbiIsIF9hZGRy LT5zYV9mYW1pbHksIEFGX0lORVQ2KTsKKyAgICAgICAgIGdsb2J1c19hc3NlcnQoMCAmJgorICAg ICAgICAgICAgICAgICAgICAgICAiVW5rbm93biBmYW1pbHkgaW4gZ2xvYnVzX2xpYmNfYWRkcl9p c193aWxkY2FyZCIpOworICAgICAgICAgYnJlYWs7CitAQCAtMjg1OSw3ICsyODU5LDcgQEAgZ2xv YnVzX2xpYmNfYWRkcl90b19jb250YWN0X3N0cmluZygKKyAgICAgaW50ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcG9ydF9ubzsKKyAgICAgaW50ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbmlfZmxhZ3MgPSAwOworICAgICBjaGFyICogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjczsKKy0gICAgCisrCisgICAgIGlmKCFHbG9idXNMaWJjUHJvdG9jb2xGYW1p bHlJc0lQKEdsb2J1c0xpYmNTb2NrYWRkckdldEZhbWlseSgqYWRkcikpKQorICAgICB7CisgICAg ICAgICByZXN1bHQgPSBnbG9idXNfZXJyb3JfcHV0KAorQEAgLTI4NzMsMTIgKzI4NzMsMTIgQEAg Z2xvYnVzX2xpYmNfYWRkcl90b19jb250YWN0X3N0cmluZygKKyAgICAgICAgICAgICAgICAiSW52 YWxpZCBhZGRyIGZhbWlseSIpKTsKKyAgICAgICAgIGdvdG8gZXJyb3JfbmFtZWluZm87CisgICAg IH0KKy0gICAgICAgIAorKworICAgICBpZihvcHRzX21hc2sgJiBHTE9CVVNfTElCQ19BRERSX0xP Q0FMIHx8CisgICAgICAgICBnbG9idXNfbGliY19hZGRyX2lzX3dpbGRjYXJkKGFkZHIpKQorICAg ICB7CisgICAgICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbWlseTsKKy0g ICAgICAgIAorKworICNpZiBBRl9JTkVUNgorICAgICAgICAgZmFtaWx5ID0gKG9wdHNfbWFzayAm IEdMT0JVU19MSUJDX0FERFJfSVBWNikKKyAgICAgICAgICAgICA/IEFGX0lORVQ2IDogKChvcHRz X21hc2sgJiBHTE9CVVNfTElCQ19BRERSX0lQVjQpCitAQCAtMjg4Nyw3ICsyODg3LDcgQEAgZ2xv YnVzX2xpYmNfYWRkcl90b19jb250YWN0X3N0cmluZygKKyAgICAgICAgIGZhbWlseSA9IChvcHRz X21hc2sgJiBHTE9CVVNfTElCQ19BRERSX0lQVjQpCisgICAgICAgICAgICAgPyBBRl9JTkVUIDog QUZfVU5TUEVDOworICNlbmRpZgorLSAgICAgICAgICAgIAorKworICAgICAgICAgaWYoZ2xvYnVz X2xpYmNfZ2V0aG9zdGFkZHJfYnlfZmFtaWx5KCZteWFkZHIsIGZhbWlseSkgIT0gMCkKKyAgICAg ICAgIHsKKyAgICAgICAgICAgICByZXN1bHQgPSBnbG9idXNfZXJyb3JfcHV0KAorQEAgLTI5MDEs MTIgKzI5MDEsMTIgQEAgZ2xvYnVzX2xpYmNfYWRkcl90b19jb250YWN0X3N0cmluZygKKyAgICAg ICAgICAgICAgICAgICAgICJnbG9idXNfbGliY19nZXRob3N0YWRkciBmYWlsZWQiKSk7CisgICAg ICAgICAgICAgZ290byBlcnJvcl9uYW1laW5mbzsKKyAgICAgICAgIH0KKy0gICAgICAgIAorKwor ICAgICAgICAgR2xvYnVzTGliY1NvY2thZGRyR2V0UG9ydCgqYWRkciwgcG9ydF9ubyk7CisgICAg ICAgICBHbG9idXNMaWJjU29ja2FkZHJTZXRQb3J0KG15YWRkciwgcG9ydF9ubyk7CisgICAgICAg ICBhZGRyID0gJm15YWRkcjsKKyAgICAgfQorLSAgICAKKysKKyAgICAgbmlfZmxhZ3MgPSBHTE9C VVNfTklfTlVNRVJJQ1NFUlY7CisgCisgICAgIGlmKG9wdHNfbWFzayAmIEdMT0JVU19MSUJDX0FE RFJfTlVNRVJJQykKK0BAIC0yOTIwLDcgKzI5MjAsNyBAQCBnbG9idXNfbGliY19hZGRyX3RvX2Nv bnRhY3Rfc3RyaW5nKAorICAgICB7CisgICAgICAgICBnb3RvIGVycm9yX25hbWVpbmZvOworICAg ICB9CistICAgIAorKworICAgICBjcyA9IGdsb2J1c19tYWxsb2Moc3RybGVuKGhvc3QpICsgc3Ry bGVuKHBvcnQpICsgNCk7CisgICAgIGlmKCFjcykKKyAgICAgeworQEAgLTI5MzUsNyArMjkzNSw3 IEBAIGdsb2J1c19saWJjX2FkZHJfdG9fY29udGFjdF9zdHJpbmcoCisgICAgICAgICAgICAgICAg ICJtYWxsb2MgZmFpbGVkIikpOworICAgICAgICAgZ290byBlcnJvcl9tZW1vcnk7CisgICAgIH0K Ky0gICAgCisrCisgICAgIGlmKHN0cmNocihob3N0LCAnOicpKQorICAgICB7CisgICAgICAgICBz cHJpbnRmKGNzLCAiWyVzXTolcyIsIGhvc3QsIHBvcnQpOworQEAgLTI5NDQsOSArMjk0NCw5IEBA IGdsb2J1c19saWJjX2FkZHJfdG9fY29udGFjdF9zdHJpbmcoCisgICAgIHsKKyAgICAgICAgIHNw cmludGYoY3MsICIlczolcyIsIGhvc3QsIHBvcnQpOworICAgICB9CistICAgIAorKworICAgICAq Y29udGFjdF9zdHJpbmcgPSBjczsKKy0gICAgCisrCisgICAgIHJldHVybiBHTE9CVVNfU1VDQ0VT UzsKKyAKKyBlcnJvcl9tZW1vcnk6CitAQCAtMjk1NSw3ICsyOTU1LDcgQEAgZXJyb3JfbmFtZWlu Zm86CisgfQorIAorIC8qKiBjb252ZXJ0IGEgbnVtZXJpYyBjb250YWN0IHN0cmluZyB0byBhbiBh cnJheSBvZiBpbnRzCistICogCisrICoKKyAgKiAocG9ydCBpcyBvcHRpb25hbCBhbmQgbWF5IGJl IE5VTEwuICAwIHdpbGwgYmUgcGFzc2VkIGJhY2sgaWYgbm8gcG9ydCBpcworICAqIGZvdW5kKQor ICAqIGhvc3QgbmVlZHMgdG8gaGF2ZSByb29tIGZvciBhdCBsZWFzdCAxNiBpbnRzCitAQCAtMjk3 NywxMyArMjk3NywxMyBAQCBnbG9idXNfbGliY19jb250YWN0X3N0cmluZ190b19pbnRzKAorICAg ICBzdHJ1Y3QgaW42X2FkZHIgICAgICAgICAgICAgICAgICAgICBhZGRyNjsKKyAjZW5kaWYKKyAg ICAgdW5zaWduZWQgY2hhciAqICAgICAgICAgICAgICAgICAgICAgcGFkZHI7CistI2lmZGVmIFdJ TjMyICAgICAgICAKKysjaWZkZWYgV0lOMzIKKyAgICAgaW50ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcmM7CisgICAgIHN0cnVjdCBhZGRyaW5mbyAgICAgICAgICAgICAgICAgICAg IGhpbnRzOworICAgICBzdHJ1Y3QgYWRkcmluZm8gKiAgICAgICAgICAgICAgICAgICBwcmVzID0g TlVMTDsKKyAgICAgc3RydWN0IHNvY2thZGRyX2luNiAgICAgICAgICAgICAgICAgc29ja2FkZHI2 OworICNlbmRpZgorLSAgICAKKysKKyAgICAgbWVtc2V0KGhvc3QsIDAsIHNpemVvZihpbnQpICog MTYpOworICAgICBzdHJuY3B5KGJ1ZiwgY29udGFjdF9zdHJpbmcsIHNpemVvZihidWYpKTsKKyAg ICAgYnVmWzI1NV0gPSAwOworQEAgLTMwMTQsNyArMzAxNCw3IEBAIGdsb2J1c19saWJjX2NvbnRh Y3Rfc3RyaW5nX3RvX2ludHMoCisgICAgIGVsc2UKKyAgICAgeworICAgICAgICAgY2hhciAqICAg ICAgICAgICAgICAgICAgICAgICAgICBwYnVmID0gYnVmOworLSAgICAgICAgCisrCisgICAgICAg ICAqY291bnQgPSAxNjsKKyAgICAgICAgIGlmKCpwYnVmID09ICdbJykKKyAgICAgICAgIHsKK0BA IC0zMDI4LDcgKzMwMjgsNyBAQCBnbG9idXNfbGliY19jb250YWN0X3N0cmluZ190b19pbnRzKAor ICAgICAgICAgICAgIGlmKCoocysrKSAhPSAnOicpCisgICAgICAgICAgICAgeworICAgICAgICAg ICAgICAgICBzID0gTlVMTDsKKy0gICAgICAgICAgICB9IAorKyAgICAgICAgICAgIH0KKyAgICAg ICAgIH0KKyAgICAgICAgIGVsc2UKKyAgICAgICAgIHsKK0BAIC0zMDU3LDcgKzMwNTcsNyBAQCBn bG9idXNfbGliY19jb250YWN0X3N0cmluZ190b19pbnRzKAorICAgICAgICAgeworICAgICAgICAg ICAgIGdvdG8gZXJyb3JfcGFyc2U7CisgICAgICAgICB9CistICAgICAgICAKKysKKyAgICAgICAg IHBhZGRyID0gKHVuc2lnbmVkIGNoYXIgKikgJigoc3RydWN0IHNvY2thZGRyX2luNiopcHJlcy0+ YWlfYWRkciktPnNpbjZfYWRkcjsKKyAjZWxzZQorICNpZmRlZiBBRl9JTkVUNgorQEAgLTMwNzEs NyArMzA3MSw3IEBAIGdsb2J1c19saWJjX2NvbnRhY3Rfc3RyaW5nX3RvX2ludHMoCisgI2VuZGlm CisgI2VuZGlmCisgICAgIH0KKy0gICAgCisrCisgICAgIGlmKHBvcnQpCisgICAgIHsKKyAgICAg ICAgICpwb3J0ID0gMDsKK0BAIC0zMDgwLDcgKzMwODAsNyBAQCBnbG9idXNfbGliY19jb250YWN0 X3N0cmluZ190b19pbnRzKAorICAgICAgICAgICAgIHNzY2FuZihzLCAiJWh1IiwgcG9ydCk7Cisg ICAgICAgICB9CisgICAgIH0KKy0gICAgCisrCisgICAgIGZvcihpID0gMDsgaSA8ICpjb3VudDsg aSsrKQorICAgICB7CisgICAgICAgICBob3N0W2ldID0gcGFkZHJbaV07CitAQCAtMzA5Miw5ICsz MDkyLDkgQEAgZ2xvYnVzX2xpYmNfY29udGFjdF9zdHJpbmdfdG9faW50cygKKyAgICAgfQorICNl bmRpZgorIAorLSAgICAKKysKKyAgICAgcmV0dXJuIEdMT0JVU19TVUNDRVNTOworLSAgICAKKysK KyBlcnJvcl9wYXJzZToKKyAgICAgcmV0dXJuIGdsb2J1c19lcnJvcl9wdXQoCisgICAgICAgICBn bG9idXNfZXJyb3JfY29uc3RydWN0X2Vycm9yKAorQEAgLTMxMjEsNyArMzEyMSw3IEBAIGdsb2J1 c19saWJjX2ludHNfdG9fY29udGFjdF9zdHJpbmcoCisgICAgIGludCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGIgPSAwOworICAgICBnbG9idXNfYm9vbF90ICAgICAgICAgICAgICAg ICAgICAgICBuZWVkX2JyYWNrZXQgPSBHTE9CVVNfRkFMU0U7CisgICAgIGdsb2J1c19ib29sX3Qg ICAgICAgICAgICAgICAgICAgICAgIGNvbXByZXNzZWQgPSBHTE9CVVNfRkFMU0U7CistICAgIAor KworICAgICBpZihjb3VudCA9PSAxNikKKyAgICAgeworICAgICAgICAgaWYocG9ydCkKK0BAIC0z MTI5LDcgKzMxMjksNyBAQCBnbG9idXNfbGliY19pbnRzX3RvX2NvbnRhY3Rfc3RyaW5nKAorICAg ICAgICAgICAgIGxheW91dFtsKytdID0gIlsiOworICAgICAgICAgICAgIG5lZWRfYnJhY2tldCA9 IEdMT0JVU19UUlVFOworICAgICAgICAgfQorLSAgICAgICAgCisrCisgICAgICAgICAvKiBjb3Vu dCB1cCBsZWFkaW5nIHplcm9zICovCisgICAgICAgICB3aGlsZShoIDwgMTYgJiYgaG9zdFtoXSA9 PSAwKSBoKys7CisgICAgICAgICBpZihoID09IDEyKQorQEAgLTMxNjYsNyArMzE2Niw3IEBAIGds b2J1c19saWJjX2ludHNfdG9fY29udGFjdF9zdHJpbmcoCisgICAgICAgICAgICAgICAgICAgICB7 CisgICAgICAgICAgICAgICAgICAgICAgICAgbGF5b3V0W2wrK10gPSAiOiI7CisgICAgICAgICAg ICAgICAgICAgICB9CistICAgICAgICAgICAgICAgICAgICAKKysKKyAgICAgICAgICAgICAgICAg ICAgIGggKz0gNjsKKyAgICAgICAgICAgICAgICAgICAgIHdoaWxlKGggPCAxNSAmJiBob3N0W2hd ID09IDAgJiYgaG9zdFtoICsgMV0gPT0gMCkgaCArPSAyOworICAgICAgICAgICAgICAgICB9CitA QCAtMzE4MSw0MyArMzE4MSw0MyBAQCBnbG9idXNfbGliY19pbnRzX3RvX2NvbnRhY3Rfc3RyaW5n KAorICAgICAgICAgICAgICAgICAgICAgICAgIHNucHJpbnRmKGJ1ZnNbYl0sIDEwLCAiJVglLjJY IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaG9zdFtoXSAmIDB4ZmYsIGhvc3RbaCAr IDFdICYgMHhmZik7CisgICAgICAgICAgICAgICAgICAgICB9CistICAgICAgICAgICAgICAgICAg ICAKKysKKyAgICAgICAgICAgICAgICAgICAgIGxheW91dFtsKytdID0gYnVmc1tiKytdOworICAg ICAgICAgICAgICAgICAgICAgaWYoaCA8IDE0KQorICAgICAgICAgICAgICAgICAgICAgeworICAg ICAgICAgICAgICAgICAgICAgICAgIGxheW91dFtsKytdID0gIjoiOworICAgICAgICAgICAgICAg ICAgICAgfQorLSAgICAgICAgICAgICAgICAgICAgCisrCisgICAgICAgICAgICAgICAgICAgICBo ICs9IDI7CisgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICB9CisgICAgICAgICB9Cisg ICAgIH0KKy0gICAgCisrCisgICAgIGlmKGNvdW50ID09IDQpCisgICAgIHsKKyAgICAgICAgIHNu cHJpbnRmKGlwdjQsIHNpemVvZihpcHY0KSwKKyAgICAgICAgICAgICAiJWQuJWQuJWQuJWQiLCBo b3N0W2ggKyAwXSwgaG9zdFtoICsgMV0sIGhvc3RbaCArIDJdLCBob3N0W2ggKyAzXSk7CisgICAg ICAgICBsYXlvdXRbbCsrXSA9IGlwdjQ7CisgICAgIH0KKy0gICAgCisrCisgICAgIGlmKG5lZWRf YnJhY2tldCkKKyAgICAgeworICAgICAgICAgbGF5b3V0W2wrK10gPSAiXSI7CisgICAgIH0KKy0g ICAgCisrCisgICAgIGlmKHBvcnQgJiYgbCA+IDApCisgICAgIHsKKyAgICAgICAgIHNwcmludGYo YnVmc1tiXSwgIjolZCIsIChpbnQpIHBvcnQpOworICAgICAgICAgbGF5b3V0W2wrK10gPSBidWZz W2IrK107CisgICAgIH0KKy0gICAgCisrCisgICAgIHJldHVybiBnbG9idXNfbGliY19qb2luKChj b25zdCBjaGFyICoqKWxheW91dCwgbCk7CisgfQorIAorIC8qKgorICAqIGNyZWF0ZSBhIG5ldyBz dHJpbmcgZnJvbSBhbGwgb2YgdGhlIHN0cmluZ3MgaW4gYXJyYXkKKy0gKiAKKysgKgorICAqIEBw YXJhbSBhcnJheQorICAqICAgICAgYW4gYXJyYXkgb2Ygc3RyaW5ncyB0byBjb25jYXRlbmF0ZSAo bnVsbCBlbnRyaWVzIGFyZSBza2lwcGVkKQorICAqIEBwYXJhbSBjb3VudAorQEAgLTMyMzIsMjQg KzMyMzIsMjQgQEAgZ2xvYnVzX2xpYmNfam9pbigKKyAgICAgaW50ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbGVuOworICAgICBjaGFyICogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzOworICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpOworLSAg ICAKKysKKyAgICAgaWYoY291bnQgPD0gMCkKKyAgICAgeworICAgICAgICAgcmV0dXJuIE5VTEw7 CisgICAgIH0KKy0gICAgCisrCisgICAgIGxlbnMgPSAoaW50ICopIGdsb2J1c19tYWxsb2Moc2l6 ZW9mKGludCkgKiBjb3VudCk7CisgICAgIGlmKCFsZW5zKQorICAgICB7CisgICAgICAgICByZXR1 cm4gTlVMTDsKKyAgICAgfQorLSAgICAKKysKKyAgICAgbGVuID0gMDsKKyAgICAgZm9yKGkgPSAw OyBpIDwgY291bnQ7IGkrKykKKyAgICAgeworICAgICAgICAgbGVuICs9IGxlbnNbaV0gPSBhcnJh eVtpXSA/IHN0cmxlbihhcnJheVtpXSkgOiAwOworICAgICB9CistICAgIAorKworICAgICBpZihs ZW4pCisgICAgIHsKKyAgICAgICAgIHMgPSAoY2hhciAqKSBnbG9idXNfbWFsbG9jKHNpemVvZihj aGFyKSAqIChsZW4gKyAxKSk7CitAQCAtMzI2NCw3ICszMjY0LDcgQEAgZ2xvYnVzX2xpYmNfam9p bigKKyAgICAgICAgICAgICAgICAgICAgIGxlbiArPSBsZW5zW2ldOworICAgICAgICAgICAgICAg ICB9CisgICAgICAgICAgICAgfQorLSAgICAgICAgICAgIAorKworICAgICAgICAgICAgIHNbbGVu XSA9ICdcMCc7CisgICAgICAgICB9CisgICAgIH0KK0BAIC0zMjcyLDkgKzMyNzIsOSBAQCBnbG9i dXNfbGliY19qb2luKAorICAgICB7CisgICAgICAgICBzID0gTlVMTDsKKyAgICAgfQorLSAgICAK KysKKyAgICAgZ2xvYnVzX2ZyZWUobGVucyk7CistICAgIAorKworICAgICByZXR1cm4gczsKKyB9 CisgCitkaWZmIC0tZ2l0IGEvY29tbW9uL3NvdXJjZS9saWJyYXJ5L2dsb2J1c19sb2dnaW5nLmMg Yi9jb21tb24vc291cmNlL2xpYnJhcnkvZ2xvYnVzX2xvZ2dpbmcuYworaW5kZXggMmEwOWMyNWE3 Li4xZTAyMzM4OWMgMTAwNjQ0CistLS0gYS9jb21tb24vc291cmNlL2xpYnJhcnkvZ2xvYnVzX2xv Z2dpbmcuYworKysrIGIvY29tbW9uL3NvdXJjZS9saWJyYXJ5L2dsb2J1c19sb2dnaW5nLmMKK0BA IC0xMjEsNyArMTIxLDcgQEAgZ2xvYnVzX2xfbG9nZ2luZ19wZXJpb2RpYygKKyAKKyAgICAgZ2xv YnVzX211dGV4X2xvY2soJmhhbmRsZS0+bXV0ZXgpOworICAgICB7CistICAgICAgICBnbG9idXNf bF9sb2dnaW5nX2ZsdXNoKGhhbmRsZSk7IAorKyAgICAgICAgZ2xvYnVzX2xfbG9nZ2luZ19mbHVz aChoYW5kbGUpOworICAgICB9CisgICAgIGdsb2J1c19tdXRleF91bmxvY2soJmhhbmRsZS0+bXV0 ZXgpOworIH0KK0BAIC0xNDUsNyArMTQ1LDcgQEAgZ2xvYnVzX2xvZ2dpbmdfaW5pdCgKKyAgICAg Z2xvYnVzX2xvZ2dpbmdfaGFuZGxlX3QgKiAgICAgICAgICAgb3V0X2hhbmRsZSwKKyAgICAgZ2xv YnVzX3JlbHRpbWVfdCAqICAgICAgICAgICAgICAgICAgZmx1c2hfcGVyaW9kLAorICAgICBpbnQg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfbGVuZ3RoX2luLAorLSAgICBp bnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dfdHlwZSwgICAKKysgICAgaW50 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nX3R5cGUsCisgICAgIGdsb2J1c19s b2dnaW5nX21vZHVsZV90ICogICAgICAgICAgIG1vZHVsZSwKKyAgICAgdm9pZCAqICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdXNlcl9hcmcpCisgeworQEAgLTE3MSw3ICsxNzEsNyBAQCBn bG9idXNfbG9nZ2luZ19pbml0KAorICAgICB7CisgICAgICAgICBidWZmZXJfbGVuZ3RoID0gR0xP QlVTX0xfTE9HR0lOR19NQVhfTUVTU0FHRTsKKyAgICAgfQorLSAgICAKKysKKyAgICAgaWYobW9k dWxlID09IE5VTEwgfHwgbW9kdWxlLT53cml0ZV9mdW5jID09IE5VTEwpCisgICAgIHsKKyAgICAg ICAgIHJlcyA9IEdsb2J1c0xvZ2dpbmdFcnJvclBhcmFtZXRlcigibW9kdWxlIik7CitAQCAtMTg3 LDcgKzE4Nyw3IEBAIGdsb2J1c19sb2dnaW5nX2luaXQoCisgICAgIH0KKyAKKyAgICAgZ2xvYnVz X2xfbG9nZ2luZ19waWQgPSBnZXRwaWQoKTsKKy0gICAgCisrCisgICAgIGhhbmRsZS0+bW9kdWxl Lm9wZW5fZnVuYyA9IG1vZHVsZS0+b3Blbl9mdW5jOworICAgICBoYW5kbGUtPm1vZHVsZS53cml0 ZV9mdW5jID0gbW9kdWxlLT53cml0ZV9mdW5jOworICAgICBoYW5kbGUtPm1vZHVsZS5jbG9zZV9m dW5jID0gbW9kdWxlLT5jbG9zZV9mdW5jOworQEAgLTIwMyw3ICsyMDMsNyBAQCBnbG9idXNfbG9n Z2luZ19pbml0KAorICAgICB7CisgICAgICAgICBoYW5kbGUtPm1vZHVsZS5vcGVuX2Z1bmMoaGFu ZGxlLT51c2VyX2FyZyk7CisgICAgIH0KKy0gICAgCisrCisgICAgIEdsb2J1c1RpbWVSZWx0aW1l U2V0KHplcm8sIDAsIDApOworICAgICBpZihmbHVzaF9wZXJpb2QgIT0gTlVMTCAmJiBnbG9idXNf cmVsdGltZV9jbXAoZmx1c2hfcGVyaW9kLCAmemVybykgIT0gMCkKKyAgICAgeworQEAgLTI3Niw3 ICsyNzYsNyBAQCBnbG9idXNfbG9nZ2luZ192d3JpdGUoCisgICAgICAgICAgICAgICAgIGhhbmRs ZS0+dXNlZF9sZW5ndGggKz0gbmJ5dGVzOworICAgICAgICAgICAgICAgICByZW1haW4gLT0gbmJ5 dGVzOworICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICByYyA9IHZzbnByaW50ZigoY2hhciAq KSAmaGFuZGxlLT5idWZmZXJbaGFuZGxlLT51c2VkX2xlbmd0aF0sIAorKyAgICAgICAgICAgIHJj ID0gdnNucHJpbnRmKChjaGFyICopICZoYW5kbGUtPmJ1ZmZlcltoYW5kbGUtPnVzZWRfbGVuZ3Ro XSwKKyAgICAgICAgICAgICAgICAgcmVtYWluLCBmbXQsIGFwKTsKKyAgICAgICAgICAgICBpZiAo cmMgPCAwKQorICAgICAgICAgICAgIHsKK0BAIC0yODksMjQgKzI4OSwyNCBAQCBnbG9idXNfbG9n Z2luZ192d3JpdGUoCisgICAgICAgICAgICAgaWYobmJ5dGVzID4gcmVtYWluKQorICAgICAgICAg ICAgIHsKKyAgICAgICAgICAgICAgICAgY2hhciAgICAgICAgICAgICAgICAgICAgc3VmZml4WzY0 XTsKKy0gICAgICAgICAgICAgICAgCisrCisgICAgICAgICAgICAgICAgIGdsb2J1c19saWJjX3Nu cHJpbnRmKAorLSAgICAgICAgICAgICAgICAgICAgc3VmZml4LCAKKy0gICAgICAgICAgICAgICAg ICAgIHNpemVvZihzdWZmaXgpLCAKKy0gICAgICAgICAgICAgICAgICAgICIgKioqIFRSVU5DQVRF RCAlbHUgYnl0ZXNcbiIsIAorKyAgICAgICAgICAgICAgICAgICAgc3VmZml4LAorKyAgICAgICAg ICAgICAgICAgICAgc2l6ZW9mKHN1ZmZpeCksCisrICAgICAgICAgICAgICAgICAgICAiICoqKiBU UlVOQ0FURUQgJWx1IGJ5dGVzXG4iLAorICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGxv bmcpIChuYnl0ZXMgLSByZW1haW4gKyBzaXplb2Yoc3VmZml4KSkpOworLSAgICAgICAgICAgICAg ICAKKysKKyAgICAgICAgICAgICAgICAgbWVtY3B5KAorLSAgICAgICAgICAgICAgICAgICAgJmhh bmRsZS0+YnVmZmVyW2hhbmRsZS0+YnVmZmVyX2xlbmd0aCAtIHNpemVvZihzdWZmaXgpXSwgCisr ICAgICAgICAgICAgICAgICAgICAmaGFuZGxlLT5idWZmZXJbaGFuZGxlLT5idWZmZXJfbGVuZ3Ro IC0gc2l6ZW9mKHN1ZmZpeCldLAorICAgICAgICAgICAgICAgICAgICAgc3VmZml4LAorICAgICAg ICAgICAgICAgICAgICAgc2l6ZW9mKHN1ZmZpeCkpOworLSAgICAgICAgICAgICAgICAgICAgCisr CisgICAgICAgICAgICAgICAgIG5ieXRlcyA9IHJlbWFpbiAtIHNpemVvZihzdWZmaXgpICsgc3Ry bGVuKHN1ZmZpeCk7CisgICAgICAgICAgICAgfQorICAgICAgICAgICAgIGhhbmRsZS0+dXNlZF9s ZW5ndGggKz0gbmJ5dGVzOworICAgICAgICAgICAgIHJlbWFpbiAtPSBuYnl0ZXM7CisgCistICAg ICAgICAgICAgaWYodHlwZSAmIEdMT0JVU19MT0dHSU5HX0lOTElORSB8fCAKKysgICAgICAgICAg ICBpZih0eXBlICYgR0xPQlVTX0xPR0dJTkdfSU5MSU5FIHx8CisgICAgICAgICAgICAgICAgIGhh bmRsZS0+dHlwZV9tYXNrICYgR0xPQlVTX0xPR0dJTkdfSU5MSU5FIHx8CisgICAgICAgICAgICAg ICAgIHJlbWFpbiA8IEdMT0JVU19MX0xPR0dJTkdfTUFYX01FU1NBR0UpCisgICAgICAgICAgICAg eworQEAgLTMyMSw3ICszMjEsNyBAQCBnbG9idXNfbG9nZ2luZ192d3JpdGUoCisgICBlcnI6Cisg ICAgIHJldHVybiByZXM7CisgfQorLSAgICAKKysKKyBnbG9idXNfcmVzdWx0X3QKKyBnbG9idXNf bG9nZ2luZ193cml0ZSgKKyAgICAgZ2xvYnVzX2xvZ2dpbmdfaGFuZGxlX3QgICAgICAgICAgICAg aGFuZGxlLAorQEAgLTQ0NywxNCArNDQ3LDE0IEBAIGdsb2J1c19sb2dnaW5nX25nX2hlYWRlcl9m dW5jKAorICAgICBpZihnZXR0aW1lb2ZkYXkoJnR2LCBOVUxMKSA9PSAwKQorICAgICB7CisgICAg ICAgICBnbG9idXNfbGliY19nbXRpbWVfcigmdHYudHZfc2VjLCAmdG0pOworLSAgICAgICAgbmJ5 dGVzID0gc25wcmludGYoYnVmLCAqbGVuLCAidHM9JTA0ZC0lMDJkLSUwMmRUJTAyZDolMDJkOiUw MmQuJTA2ZFogaWQ9JWQgIiwgCistICAgICAgICAgICAgdG0udG1feWVhciArIDE5MDAsIHRtLnRt X21vbiArIDEsIHRtLnRtX21kYXksIAorLSAgICAgICAgICAgIHRtLnRtX2hvdXIsIHRtLnRtX21p biwgdG0udG1fc2VjICwgKGludCkgdHYudHZfdXNlYywgCisrICAgICAgICBuYnl0ZXMgPSBzbnBy aW50ZihidWYsICpsZW4sICJ0cz0lMDRkLSUwMmQtJTAyZFQlMDJkOiUwMmQ6JTAyZC4lMDZkWiBp ZD0lZCAiLAorKyAgICAgICAgICAgIHRtLnRtX3llYXIgKyAxOTAwLCB0bS50bV9tb24gKyAxLCB0 bS50bV9tZGF5LAorKyAgICAgICAgICAgIHRtLnRtX2hvdXIsIHRtLnRtX21pbiwgdG0udG1fc2Vj ICwgKGludCkgdHYudHZfdXNlYywKKyAgICAgICAgICAgICBnbG9idXNfbF9sb2dnaW5nX3BpZCk7 CisgICAgIH0KKyAgICAgZWxzZQorICAgICB7CistICAgICAgICBuYnl0ZXMgPSBzbnByaW50Zihi dWYsICpsZW4sICJ0cz0wMDAwLTAwLTAwVDAwOjAwOjAwLjAwMDAwMFogaWQ9JWQgIiwgCisrICAg ICAgICBuYnl0ZXMgPSBzbnByaW50ZihidWYsICpsZW4sICJ0cz0wMDAwLTAwLTAwVDAwOjAwOjAw LjAwMDAwMFogaWQ9JWQgIiwKKyAgICAgICAgICAgICBnbG9idXNfbF9sb2dnaW5nX3BpZCk7Cisg ICAgIH0KKyAgICAgaWYobmJ5dGVzIDwgMCkKK0BAIC00ODEsNyArNDgxLDcgQEAgZ2xvYnVzX2xv Z2dpbmdfc3lzbG9nX2Nsb3NlX2Z1bmMoCisgeworICAgICBjbG9zZWxvZygpOworIH0KKy0gICAg CisrCisgdm9pZAorIGdsb2J1c19sb2dnaW5nX3N5c2xvZ193cml0ZV9mdW5jKAorICAgICBnbG9i dXNfYnl0ZV90ICogICAgICAgICAgICAgICAgICAgICBidWYsCitkaWZmIC0tZ2l0IGEvY29tbW9u L3NvdXJjZS9saWJyYXJ5L2dsb2J1c19tb2R1bGUuYyBiL2NvbW1vbi9zb3VyY2UvbGlicmFyeS9n bG9idXNfbW9kdWxlLmMKK2luZGV4IDgzODAwNWY0OS4uZTllOWI4Y2FjIDEwMDY0NAorLS0tIGEv Y29tbW9uL3NvdXJjZS9saWJyYXJ5L2dsb2J1c19tb2R1bGUuYworKysrIGIvY29tbW9uL3NvdXJj ZS9saWJyYXJ5L2dsb2J1c19tb2R1bGUuYworQEAgLTIyLDcgKzIyLDcgQEAKKyAjZW5kaWYgLyog R0xPQlVTX0RPTlRfRE9DVU1FTlRfSU5URVJOQUwgKi8KKyAKKyAvKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqCistCQkJICAgICBJbmNsdWRlIGhlYWRlciBmaWxlcworKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgSW5jbHVkZSBoZWFkZXIgZmlsZXMKKyAqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisg I2luY2x1ZGUgImdsb2J1c19pX2NvbW1vbl9jb25maWcuaCIKKyAjaW5jbHVkZSAiZ2xvYnVzX2Nv bW1vbl9pbmNsdWRlLmgiCitAQCAtMzYsNyArMzYsNyBAQAorICNpbmNsdWRlICJnbG9idXNfdGhy ZWFkLmgiCisgCisgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLQkJCSAgICAgICBUeXBlIGRlZmlu aXRpb25zCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgZGVmaW5pdGlvbnMK KyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKiovCisgCisgLyoKK0BAIC01MiwxMCArNTIsMTAgQEAgc3Rh dGljIGdsb2J1c190aHJlYWRfa2V5X3QgICAgICAgICAgICAgIGdsb2J1c19sX2RlYWN0aXZhdGVf cGFyZW50X2tleTsKKyAgKi8KKyB0eXBlZGVmIHN0cnVjdAorIHsKKy0gICAgZ2xvYnVzX211dGV4 X3QJCQltdXRleDsKKy0gICAgZ2xvYnVzX2NvbmRfdAkJCWNvbmQ7CistICAgIGdsb2J1c190aHJl YWRfdAkJCXRocmVhZF9pZDsKKy0gICAgaW50CQkJCQlsZXZlbDsKKysgICAgZ2xvYnVzX211dGV4 X3QgICAgICAgICAgICAgICAgICAgICAgbXV0ZXg7CisrICAgIGdsb2J1c19jb25kX3QgICAgICAg ICAgICAgICAgICAgICAgIGNvbmQ7CisrICAgIGdsb2J1c190aHJlYWRfdCAgICAgICAgICAgICAg ICAgICAgIHRocmVhZF9pZDsKKysgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbGV2ZWw7CisgfSBnbG9idXNfbF9tb2R1bGVfbXV0ZXhfdDsKKyAKKyAvKgorQEAgLTY0LDE1 ICs2NCwxNSBAQCB0eXBlZGVmIHN0cnVjdAorIHR5cGVkZWYgZ2xvYnVzX21vZHVsZV9hY3RpdmF0 aW9uX2Z1bmNfdCBnbG9idXNfbF9tb2R1bGVfa2V5X3Q7CisgdHlwZWRlZiBzdHJ1Y3QKKyB7Cist ICAgIGdsb2J1c19tb2R1bGVfZGVzY3JpcHRvcl90ICoJZGVzY3JpcHRvcjsKKy0gICAgZ2xvYnVz X2xpc3RfdCAqCQkJY2xpZW50czsKKy0gICAgaW50CQkJCQlyZWZlcmVuY2VfY291bnQ7CisrICAg IGdsb2J1c19tb2R1bGVfZGVzY3JpcHRvcl90ICogICAgICAgIGRlc2NyaXB0b3I7CisrICAgIGds b2J1c19saXN0X3QgKiAgICAgICAgICAgICAgICAgICAgIGNsaWVudHM7CisrICAgIGludCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZV9jb3VudDsKKyAgICAgZ2xvYnVz X21vZHVsZV9kZWFjdGl2YXRlX3Byb3h5X2NiX3QgZGVhY3RpdmF0ZV9jYjsKKyAgICAgdm9pZCAq ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcl9hcmc7CisgfSBnbG9idXNfbF9tb2R1 bGVfZW50cnlfdDsKKyAKKyAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistCQkgICAgICAgRGVmaW5l IG1vZHVsZSBzcGVjaWZpYyB2YXJpYWJsZXMKKysgICAgICAgICAgICAgICAgICAgICAgIERlZmlu ZSBtb2R1bGUgc3BlY2lmaWMgdmFyaWFibGVzCisgKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworIAor IGdsb2J1c19ib29sX3QKK0BAIC04NCw1OSArODQsNTkgQEAgc3RhdGljIGdsb2J1c19ib29sX3QK KyBnbG9idXNfbF9lbnZpcm9uX211dGV4X2luaXRpYWxpemVkID0gR0xPQlVTX0ZBTFNFOworIAor IC8qIFJlY3Vyc2l2ZSBtdXRleCB0byBwcm90ZWN0IGludGVybmFsIGRhdGEgc3RydWN0dXJlcyAq LworLXN0YXRpYyBnbG9idXNfbF9tb2R1bGVfbXV0ZXhfdAkJZ2xvYnVzX2xfbW9kdWxlX211dGV4 OworK3N0YXRpYyBnbG9idXNfbF9tb2R1bGVfbXV0ZXhfdCAgICAgICAgICBnbG9idXNfbF9tb2R1 bGVfbXV0ZXg7CisgCisgLyogSGFzaCB0YWJsZSBhbmQgbGlzdCB0byBtYWludGFpbiBhIHRhYmxl IG9mIHJlZ2lzdGVyZWQgbW9kdWxlcyAqLworIGNvbnN0IGludCBHTE9CVVNfTF9NT0RVTEVfVEFC TEVfU0laRSA9IDEzOworLXN0YXRpYyBnbG9idXNfaGFzaHRhYmxlX3QJCWdsb2J1c19sX21vZHVs ZV90YWJsZTsKKy1zdGF0aWMgZ2xvYnVzX2xpc3RfdCAqCQkJZ2xvYnVzX2xfbW9kdWxlX2xpc3Q7 Cisrc3RhdGljIGdsb2J1c19oYXNodGFibGVfdCAgICAgICAgICAgICAgIGdsb2J1c19sX21vZHVs ZV90YWJsZTsKKytzdGF0aWMgZ2xvYnVzX2xpc3RfdCAqICAgICAgICAgICAgICAgICAgZ2xvYnVz X2xfbW9kdWxlX2xpc3Q7CisgCisgLyogSGFzaCB0YWJsZSBmb3IgZ2xvYnVzX2Vudmlyb24qLwor IGNvbnN0IGludCBHTE9CVVNfTF9FTlZJUk9OX1RBQkxFX1NJWkUgPSAxMzsKKy1zdGF0aWMgZ2xv YnVzX211dGV4X3QJCWdsb2J1c19sX2Vudmlyb25faGFzaHRhYmxlX211dGV4OworLXN0YXRpYyBn bG9idXNfaGFzaHRhYmxlX3QJCWdsb2J1c19sX2Vudmlyb25fdGFibGU7Cisrc3RhdGljIGdsb2J1 c19tdXRleF90ICAgICAgICAgICBnbG9idXNfbF9lbnZpcm9uX2hhc2h0YWJsZV9tdXRleDsKKytz dGF0aWMgZ2xvYnVzX2hhc2h0YWJsZV90ICAgICAgICAgICAgICAgZ2xvYnVzX2xfZW52aXJvbl90 YWJsZTsKKyAKKyBnbG9idXNfbGlzdF90ICpnbG9idXNfbF9tb2R1bGVfYXRleGl0X2Z1bmNzID0g R0xPQlVTX05VTEw7CisgCisgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLQkJICAgICAgTW9kdWxl IHNwZWNpZmljIGZ1bmN0aW9uIHByb3RvdHlwZXMKKysgICAgICAgICAgICAgICAgICAgICAgTW9k dWxlIHNwZWNpZmljIGZ1bmN0aW9uIHByb3RvdHlwZXMKKyAqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov Cisgc3RhdGljIHZvaWQKKyBnbG9idXNfbF9tb2R1bGVfaW5pdGlhbGl6ZSgpOworIAorIHN0YXRp YyBnbG9idXNfYm9vbF90CisgZ2xvYnVzX2xfbW9kdWxlX2luY3JlbWVudCgKKy0gICAgZ2xvYnVz X21vZHVsZV9kZXNjcmlwdG9yX3QgKgltb2R1bGVfZGVzY3JpcHRvciwKKy0gICAgZ2xvYnVzX2xf bW9kdWxlX2tleV90CQlwYXJlbnRfa2V5LAorKyAgICBnbG9idXNfbW9kdWxlX2Rlc2NyaXB0b3Jf dCAqICAgICAgICBtb2R1bGVfZGVzY3JpcHRvciwKKysgICAgZ2xvYnVzX2xfbW9kdWxlX2tleV90 ICAgICAgICAgICAgICAgcGFyZW50X2tleSwKKyAgICAgZ2xvYnVzX21vZHVsZV9kZWFjdGl2YXRl X3Byb3h5X2NiX3QgZGVhY3RpdmF0ZV9jYiwKKyAgICAgdm9pZCAqICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdXNlcl9hcmcpOworIAorIHN0YXRpYyBnbG9idXNfbF9tb2R1bGVfZW50cnlf dCAqCisgZ2xvYnVzX2xfbW9kdWxlX2RlY3JlbWVudCgKKy0gICAgZ2xvYnVzX21vZHVsZV9kZXNj cmlwdG9yX3QgKgltb2R1bGVfZGVzY3JpcHRvciwKKy0gICAgZ2xvYnVzX2xfbW9kdWxlX2tleV90 CQlwYXJlbnRfa2V5KTsKKysgICAgZ2xvYnVzX21vZHVsZV9kZXNjcmlwdG9yX3QgKiAgICAgICAg bW9kdWxlX2Rlc2NyaXB0b3IsCisrICAgIGdsb2J1c19sX21vZHVsZV9rZXlfdCAgICAgICAgICAg ICAgIHBhcmVudF9rZXkpOworIAorIHN0YXRpYworIGludAorIGdsb2J1c19sX21vZHVsZV9yZWZl cmVuY2VfY291bnQoCistICAgIGdsb2J1c19tb2R1bGVfZGVzY3JpcHRvcl90ICoJbW9kdWxlX2Rl c2NyaXB0b3IpOworKyAgICBnbG9idXNfbW9kdWxlX2Rlc2NyaXB0b3JfdCAqICAgICAgICBtb2R1 bGVfZGVzY3JpcHRvcik7CisgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLQkJICAgICAgUmVjdXJz aXZlIG11dGV4IGZ1bmN0aW9uIHByb3RvdHlwZXMKKysgICAgICAgICAgICAgICAgICAgICAgUmVj dXJzaXZlIG11dGV4IGZ1bmN0aW9uIHByb3RvdHlwZXMKKyAqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov Cisgc3RhdGljIHZvaWQKKyBnbG9idXNfbF9tb2R1bGVfbXV0ZXhfaW5pdCgKKy0gICAgZ2xvYnVz X2xfbW9kdWxlX211dGV4X3QgKgkJbXV0ZXgpOworKyAgICBnbG9idXNfbF9tb2R1bGVfbXV0ZXhf dCAqICAgICAgICAgICBtdXRleCk7CisgCisgc3RhdGljIHZvaWQKKyBnbG9idXNfbF9tb2R1bGVf bXV0ZXhfbG9jaygKKy0gICAgZ2xvYnVzX2xfbW9kdWxlX211dGV4X3QgKgkJbXV0ZXgpOworKyAg ICBnbG9idXNfbF9tb2R1bGVfbXV0ZXhfdCAqICAgICAgICAgICBtdXRleCk7CisgCisgc3RhdGlj IHZvaWQKKyBnbG9idXNfbF9tb2R1bGVfbXV0ZXhfdW5sb2NrKAorLSAgICBnbG9idXNfbF9tb2R1 bGVfbXV0ZXhfdCAqCQltdXRleCk7CistICAgIAorKyAgICBnbG9idXNfbF9tb2R1bGVfbXV0ZXhf dCAqICAgICAgICAgICBtdXRleCk7CisrCisgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLQkJCSAg IEFQSSBmdW5jdGlvbiBkZWZpbml0aW9ucworKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEFQ SSBmdW5jdGlvbiBkZWZpbml0aW9ucworICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAKKyAjaWYg VVNFX1NZTUJPTF9MQUJFTFMKK0BAIC0xNjcsMTQgKzE2NywxNCBAQCBfX2F0dHJpYnV0ZV9fICgo ZXh0ZXJuYWxseV92aXNpYmxlKSkKKyAjZW5kaWYKKyBpbnQKKyBnbG9idXNfbW9kdWxlX2FjdGl2 YXRlX3Byb3h5KAorLSAgICBnbG9idXNfbW9kdWxlX2Rlc2NyaXB0b3JfdCAqCW1vZHVsZV9kZXNj cmlwdG9yLAorKyAgICBnbG9idXNfbW9kdWxlX2Rlc2NyaXB0b3JfdCAqICAgICAgICBtb2R1bGVf ZGVzY3JpcHRvciwKKyAgICAgZ2xvYnVzX21vZHVsZV9kZWFjdGl2YXRlX3Byb3h5X2NiX3QgZGVh Y3RpdmF0ZV9jYiwKKyAgICAgdm9pZCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNl cl9hcmcpCisgeworICAgICBnbG9idXNfbF9tb2R1bGVfa2V5X3QgICAgICAgICAgICAgICBwYXJl bnRfa2V5OworICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXRfdmFs OworICAgICBnbG9idXNfbF9tb2R1bGVfa2V5X3QgICAgICAgICAgICAgICBwYXJlbnRfa2V5X3Nh dmU7CistICAgIAorKworICAgICAvKgorICAgICAgKiBJZiB0aGlzIGlzIHRoZSBmaXJzdCB0aW1l IHRoaXMgcm91dGluZSBoYXMgYmVlbiBjYWxsZWQsIHRoZW4gd2UgbmVlZCB0bworICAgICAgKiBp bml0aWFsaXplIHRoZSBpbnRlcm5hbCBkYXRhIHN0cnVjdHVyZXMgYW5kIGFjdGl2YXRlIHRoZSB0 aHJlYWRzCitAQCAtMTgyLDEwICsxODIsMTAgQEAgZ2xvYnVzX21vZHVsZV9hY3RpdmF0ZV9wcm94 eSgKKyAgICAgICovCisgICAgIGlmIChnbG9idXNfaV9tb2R1bGVfaW5pdGlhbGl6ZWQgPT0gR0xP QlVTX0ZBTFNFKQorICAgICB7CistCWdsb2J1c19pX21vZHVsZV9pbml0aWFsaXplZCA9IEdMT0JV U19UUlVFOworLQlnbG9idXNfbF9tb2R1bGVfaW5pdGlhbGl6ZSgpOworKyAgICAgICAgZ2xvYnVz X2lfbW9kdWxlX2luaXRpYWxpemVkID0gR0xPQlVTX1RSVUU7CisrICAgICAgICBnbG9idXNfbF9t b2R1bGVfaW5pdGlhbGl6ZSgpOworICAgICB9CistICAgIAorKworICAgICBwYXJlbnRfa2V5ID0g KGdsb2J1c19sX21vZHVsZV9rZXlfdCkKKyAgICAgICAgIGdsb2J1c190aHJlYWRfZ2V0c3BlY2lm aWMoZ2xvYnVzX2xfYWN0aXZhdGVfcGFyZW50X2tleSk7CisgICAgIC8qCitAQCAtMTk1LDIyICsx OTUsMjIgQEAgZ2xvYnVzX21vZHVsZV9hY3RpdmF0ZV9wcm94eSgKKyAgICAgICovCisgICAgIGds b2J1c19sX21vZHVsZV9tdXRleF9sb2NrKCZnbG9idXNfbF9tb2R1bGVfbXV0ZXgpOworICAgICB7 CistCXJldF92YWwgPSBHTE9CVVNfU1VDQ0VTUzsKKy0KKy0JaWYgKG1vZHVsZV9kZXNjcmlwdG9y LT5hY3RpdmF0aW9uX2Z1bmMgIT0gR0xPQlVTX05VTEwpCistCXsKKy0JICAgIGlmIChnbG9idXNf bF9tb2R1bGVfaW5jcmVtZW50KG1vZHVsZV9kZXNjcmlwdG9yLAorLQkJCQkJICBwYXJlbnRfa2V5 LAorLQkJCQkJICBkZWFjdGl2YXRlX2NiLAorLQkJCQkJICB1c2VyX2FyZykgPT0gR0xPQlVTX1RS VUUpCistCSAgICB7CistCQlwYXJlbnRfa2V5X3NhdmUgPSBwYXJlbnRfa2V5OworLQkJZ2xvYnVz X3RocmVhZF9zZXRzcGVjaWZpYygKKy0JCSAgICBnbG9idXNfbF9hY3RpdmF0ZV9wYXJlbnRfa2V5 LAorLQkJICAgIG1vZHVsZV9kZXNjcmlwdG9yLT5hY3RpdmF0aW9uX2Z1bmMpOworLQkJCistCQly ZXRfdmFsID0gbW9kdWxlX2Rlc2NyaXB0b3ItPmFjdGl2YXRpb25fZnVuYygpOworLSAgICAgICAg ICAgICAgICAKKysgICAgICAgIHJldF92YWwgPSBHTE9CVVNfU1VDQ0VTUzsKKysKKysgICAgICAg IGlmIChtb2R1bGVfZGVzY3JpcHRvci0+YWN0aXZhdGlvbl9mdW5jICE9IEdMT0JVU19OVUxMKQor KyAgICAgICAgeworKyAgICAgICAgICAgIGlmIChnbG9idXNfbF9tb2R1bGVfaW5jcmVtZW50KG1v ZHVsZV9kZXNjcmlwdG9yLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHBhcmVudF9rZXksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZGVhY3RpdmF0ZV9jYiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB1c2VyX2FyZykgPT0gR0xPQlVTX1RSVUUpCisrICAgICAgICAgICAgeworKyAgICAgICAg ICAgICAgICBwYXJlbnRfa2V5X3NhdmUgPSBwYXJlbnRfa2V5OworKyAgICAgICAgICAgICAgICBn bG9idXNfdGhyZWFkX3NldHNwZWNpZmljKAorKyAgICAgICAgICAgICAgICAgICAgZ2xvYnVzX2xf YWN0aXZhdGVfcGFyZW50X2tleSwKKysgICAgICAgICAgICAgICAgICAgIG1vZHVsZV9kZXNjcmlw dG9yLT5hY3RpdmF0aW9uX2Z1bmMpOworKworKyAgICAgICAgICAgICAgICByZXRfdmFsID0gbW9k dWxlX2Rlc2NyaXB0b3ItPmFjdGl2YXRpb25fZnVuYygpOworKworICAgICAgICAgICAgICAgICBp ZihyZXRfdmFsICE9IEdMT0JVU19TVUNDRVNTKQorICAgICAgICAgICAgICAgICB7CisgICAgICAg ICAgICAgICAgICAgICBnbG9idXNfbF9tb2R1bGVfZGVjcmVtZW50KAorQEAgLTIxOCw5ICsyMTgs OSBAQCBnbG9idXNfbW9kdWxlX2FjdGl2YXRlX3Byb3h5KAorICAgICAgICAgICAgICAgICB9Cisg ICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgeworLQkJLyoKKy0JCSAqIFNl dCB1cCB0aGUgZXhpdCBoYW5kbGVyCistCQkgKi8KKysgICAgICAgICAgICAgICAgLyoKKysgICAg ICAgICAgICAgICAgICogU2V0IHVwIHRoZSBleGl0IGhhbmRsZXIKKysgICAgICAgICAgICAgICAg ICovCisgICAgICAgICAgICAgICAgICAgICBpZihtb2R1bGVfZGVzY3JpcHRvci0+YXRleGl0X2Z1 bmMgIT0gR0xPQlVTX05VTEwpCisgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg ICAgICAgICAgICAgLyogb25seSBjYWxsIHRoZSBhdGV4aXQgZnVuY3Rpb24gb25jZSAqLworQEAg LTIzNiwxMSArMjM2LDExIEBAIGdsb2J1c19tb2R1bGVfYWN0aXZhdGVfcHJveHkoCisgICAgICAg ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg ICAgICB9CistICAgICAgICAgICAgICAgIAorKworICAgICAgICAgICAgICAgICBnbG9idXNfdGhy ZWFkX3NldHNwZWNpZmljKAorLQkJICAgIGdsb2J1c19sX2FjdGl2YXRlX3BhcmVudF9rZXksIHBh cmVudF9rZXlfc2F2ZSk7CistCSAgICB9CistCX0KKysgICAgICAgICAgICAgICAgICAgIGdsb2J1 c19sX2FjdGl2YXRlX3BhcmVudF9rZXksIHBhcmVudF9rZXlfc2F2ZSk7CisrICAgICAgICAgICAg fQorKyAgICAgICAgfQorICAgICB9CisgICAgIGdsb2J1c19sX21vZHVsZV9tdXRleF91bmxvY2so Jmdsb2J1c19sX21vZHVsZV9tdXRleCk7CisgCitAQCAtMjY0LDcgKzI2NCw3IEBAIF9fYXR0cmli dXRlX18gKChleHRlcm5hbGx5X3Zpc2libGUpKQorICNlbmRpZgorIGludAorIGdsb2J1c19tb2R1 bGVfYWN0aXZhdGUoCistICAgIGdsb2J1c19tb2R1bGVfZGVzY3JpcHRvcl90ICoJbW9kdWxlX2Rl c2NyaXB0b3IpCisrICAgIGdsb2J1c19tb2R1bGVfZGVzY3JpcHRvcl90ICogICAgICAgIG1vZHVs ZV9kZXNjcmlwdG9yKQorIHsKKyAgICAgcmV0dXJuIGdsb2J1c19tb2R1bGVfYWN0aXZhdGVfcHJv eHkobW9kdWxlX2Rlc2NyaXB0b3IsIE5VTEwsIE5VTEwpOworIH0KK0BAIC0yNzYsNyArMjc2LDcg QEAgZ2xvYnVzX21vZHVsZV9hY3RpdmF0ZSgKKyAgKiBBY3RpdmF0ZSBhbiBOVUxMLXRlcm1pbmF0 ZWQgYXJyYXkgb2YgbW9kdWxlcy4gSWYgYW55IGZhaWwgdG8gYWN0aXZhdGUsIGFsbAorICAqIGFy ZSBkZWFjdGl2YXRlZCBhbmQgdGhlIGVycm9yIGZyb20gdGhlIGZhaWxlZCBhY3RpdmF0aW9uIGlz IHJldHVybmVkLiBJZgorICAqIG5vbnplcm8gaXMgcmV0dXJuZWQsIGFuZCBmYWlsZWRfbW9kdWxl IGlzIG5vbi1OVUxMLCBpdCB3aWxsIGJlIHNldCB0byBwb2ludAorLSAqIHRvIHRoZSAxc3QgbW9k dWxlIHdoaWNoIGZhaWxlZCB0byBhY3RpdmF0ZS4gCisrICogdG8gdGhlIDFzdCBtb2R1bGUgd2hp Y2ggZmFpbGVkIHRvIGFjdGl2YXRlLgorICAqIEBwYXJhbSBtb2R1bGVfYXJyYXkKKyAgKiAgICAg TlVMTC10ZXJtaW5hdGVkIGFycmF5IG9mIG1vZHVsZSBkZXNjcmlwdG9ycyB0byBhY3RpdmF0ZS4K KyAgKiBAcGFyYW0gZmFpbGVkX21vZHVsZQorQEAgLTMyOSw3ICszMjksNyBAQCBfX2F0dHJpYnV0 ZV9fICgoZXh0ZXJuYWxseV92aXNpYmxlKSkKKyAjZW5kaWYKKyBpbnQKKyBnbG9idXNfbW9kdWxl X2FjdGl2YXRlX3Byb3h5X2NvbXBhdCgKKy0gICAgZ2xvYnVzX21vZHVsZV9kZXNjcmlwdG9yX3Qg Kgltb2R1bGVfZGVzY3JpcHRvciwKKysgICAgZ2xvYnVzX21vZHVsZV9kZXNjcmlwdG9yX3QgKiAg ICAgICAgbW9kdWxlX2Rlc2NyaXB0b3IsCisgICAgIGdsb2J1c19tb2R1bGVfZGVhY3RpdmF0ZV9w cm94eV9jYl90IGRlYWN0aXZhdGVfY2IsCisgICAgIHZvaWQgKiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHVzZXJfYXJnKQorIHsKK0BAIC0zNTAsNyArMzUwLDcgQEAgX19hdHRyaWJ1dGVf XyAoKGV4dGVybmFsbHlfdmlzaWJsZSkpCisgI2VuZGlmCisgaW50CisgZ2xvYnVzX21vZHVsZV9h Y3RpdmF0ZV9jb21wYXQoCistICAgIGdsb2J1c19tb2R1bGVfZGVzY3JpcHRvcl90ICoJbW9kdWxl X2Rlc2NyaXB0b3IpCisrICAgIGdsb2J1c19tb2R1bGVfZGVzY3JpcHRvcl90ICogICAgICAgIG1v ZHVsZV9kZXNjcmlwdG9yKQorIHsKKyAgICAgaW50IHJjOworICAgICByYyA9IGdsb2J1c190aHJl YWRfc2V0X21vZGVsKCJwdGhyZWFkIik7CitAQCAtMzkzLDExICszOTMsMTEgQEAgZ2xvYnVzX21v ZHVsZV9hY3RpdmF0ZV9hcnJheV9jb21wYXQoCisgICovCisgaW50CisgZ2xvYnVzX21vZHVsZV9k ZWFjdGl2YXRlKAorLSAgICBnbG9idXNfbW9kdWxlX2Rlc2NyaXB0b3JfdCAqCW1vZHVsZV9kZXNj cmlwdG9yKQorKyAgICBnbG9idXNfbW9kdWxlX2Rlc2NyaXB0b3JfdCAqICAgICAgICBtb2R1bGVf ZGVzY3JpcHRvcikKKyB7CisgICAgIGdsb2J1c19sX21vZHVsZV9rZXlfdCAgICAgICAgICAgICAg IHBhcmVudF9rZXk7CistICAgIGludAkJCQkJcmV0X3ZhbDsKKy0gICAgZ2xvYnVzX2xfbW9kdWxl X2tleV90CQlwYXJlbnRfa2V5X3NhdmU7CisrICAgIGludCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHJldF92YWw7CisrICAgIGdsb2J1c19sX21vZHVsZV9rZXlfdCAgICAgICAgICAg ICAgIHBhcmVudF9rZXlfc2F2ZTsKKyAKKyAKKyAgICAgLyoKK0BAIC00MDUsOSArNDA1LDkgQEAg Z2xvYnVzX21vZHVsZV9kZWFjdGl2YXRlKAorICAgICAgKi8KKyAgICAgaWYgKCFnbG9idXNfaV9t b2R1bGVfaW5pdGlhbGl6ZWQpCisgICAgIHsKKy0JcmV0dXJuIEdMT0JVU19GQUlMVVJFOworKyAg ICAgICAgcmV0dXJuIEdMT0JVU19GQUlMVVJFOworICAgICB9CistICAgIAorKworICAgICBwYXJl bnRfa2V5ID0gKGdsb2J1c19sX21vZHVsZV9rZXlfdCkKKyAgICAgICAgIGdsb2J1c190aHJlYWRf Z2V0c3BlY2lmaWMoZ2xvYnVzX2xfZGVhY3RpdmF0ZV9wYXJlbnRfa2V5KTsKKyAgICAgLyoKK0BA IC00MTksMTkgKzQxOSwxOSBAQCBnbG9idXNfbW9kdWxlX2RlYWN0aXZhdGUoCisgICAgIGlmICht b2R1bGVfZGVzY3JpcHRvci0+YWN0aXZhdGlvbl9mdW5jICE9IEdMT0JVU19OVUxMKQorICAgICB7 CisgICAgICAgICBnbG9idXNfbF9tb2R1bGVfZW50cnlfdCAqICAgICAgIGVudHJ5OworLSAgICAg ICAgCisrCisgICAgICAgICBnbG9idXNfbF9tb2R1bGVfbXV0ZXhfbG9jaygmZ2xvYnVzX2xfbW9k dWxlX211dGV4KTsKKy0gICAgICAgIAorKworICAgICAgICAgZW50cnkgPSBnbG9idXNfbF9tb2R1 bGVfZGVjcmVtZW50KG1vZHVsZV9kZXNjcmlwdG9yLCBwYXJlbnRfa2V5KTsKKyAgICAgICAgIGlm IChlbnRyeSAmJiBlbnRyeS0+cmVmZXJlbmNlX2NvdW50ID09IDApCisgICAgICAgICB7CisgICAg ICAgICAgICAgZ2xvYnVzX2xfbW9kdWxlX211dGV4X3VubG9jaygmZ2xvYnVzX2xfbW9kdWxlX211 dGV4KTsKKy0gICAgICAgICAgICAKKysKKyAgICAgICAgICAgICBwYXJlbnRfa2V5X3NhdmUgPSBw YXJlbnRfa2V5OworICAgICAgICAgICAgIGdsb2J1c190aHJlYWRfc2V0c3BlY2lmaWMoCisgICAg ICAgICAgICAgICAgIGdsb2J1c19sX2RlYWN0aXZhdGVfcGFyZW50X2tleSwKKyAgICAgICAgICAg ICAgICAgbW9kdWxlX2Rlc2NyaXB0b3ItPmFjdGl2YXRpb25fZnVuYyk7CistICAgICAgICAgICAg CisrCisgICAgICAgICAgICAgaWYoZW50cnktPmRlYWN0aXZhdGVfY2IpCisgICAgICAgICAgICAg eworICAgICAgICAgICAgICAgICByZXRfdmFsID0gZW50cnktPmRlYWN0aXZhdGVfY2IoCitAQCAt NDQxLDcgKzQ0MSw3IEBAIGdsb2J1c19tb2R1bGVfZGVhY3RpdmF0ZSgKKyAgICAgICAgICAgICB7 CisgICAgICAgICAgICAgICAgIHJldF92YWwgPSBtb2R1bGVfZGVzY3JpcHRvci0+ZGVhY3RpdmF0 aW9uX2Z1bmMoKTsKKyAgICAgICAgICAgICB9CistICAgICAgICAgICAgCisrCisgICAgICAgICAg ICAgZ2xvYnVzX3RocmVhZF9zZXRzcGVjaWZpYygKKyAgICAgICAgICAgICAgICAgZ2xvYnVzX2xf ZGVhY3RpdmF0ZV9wYXJlbnRfa2V5LCBwYXJlbnRfa2V5X3NhdmUpOworICAgICAgICAgfQorQEAg LTQ3MCwzOSArNDcwLDM5IEBAIGdsb2J1c19tb2R1bGVfZGVhY3RpdmF0ZV9hbGwodm9pZCkKKyAg ICAgICovCisgICAgIGlmICghZ2xvYnVzX2lfbW9kdWxlX2luaXRpYWxpemVkKQorICAgICB7Cist CXJldHVybiBHTE9CVVNfRkFJTFVSRTsKKysgICAgICAgIHJldHVybiBHTE9CVVNfRkFJTFVSRTsK KyAgICAgfQorLSAgICAKKysKKyAgICAgZ2xvYnVzX2xfbW9kdWxlX211dGV4X2xvY2soJmdsb2J1 c19sX21vZHVsZV9tdXRleCk7CisgICAgIHsKKy0JZ2xvYnVzX2Jvb2xfdAkJCSBkZWFjdGl2YXRl ZF9vbmU7CistCistCWRlYWN0aXZhdGVkX29uZSA9IEdMT0JVU19UUlVFOworLQorLQl3aGlsZShk ZWFjdGl2YXRlZF9vbmUpCistCXsKKy0JICAgIGdsb2J1c19saXN0X3QgKgkJbW9kdWxlX2xpc3Q7 CistCistCSAgICBtb2R1bGVfbGlzdCA9IGdsb2J1c19sX21vZHVsZV9saXN0OworLQkgICAgZGVh Y3RpdmF0ZWRfb25lID0gR0xPQlVTX0ZBTFNFOworLQorLQkgICAgd2hpbGUoIWdsb2J1c19saXN0 X2VtcHR5KG1vZHVsZV9saXN0KSkKKy0JICAgIHsKKy0JCWdsb2J1c19sX21vZHVsZV9lbnRyeV90 ICptb2R1bGVfZW50cnk7CistCistCQltb2R1bGVfZW50cnkgPSBnbG9idXNfbGlzdF9maXJzdCht b2R1bGVfbGlzdCk7CistCQltb2R1bGVfbGlzdCA9IGdsb2J1c19saXN0X3Jlc3QobW9kdWxlX2xp c3QpOworLQkgICAgCistCQlpZihnbG9idXNfbGlzdF9lbXB0eShtb2R1bGVfZW50cnktPmNsaWVu dHMpICYmCistCQkgICBtb2R1bGVfZW50cnktPnJlZmVyZW5jZV9jb3VudCA+IDApCistCQl7Cist CQkgICAgZ2xvYnVzX2xfbW9kdWxlX211dGV4X3VubG9jaygmZ2xvYnVzX2xfbW9kdWxlX211dGV4 KTsKKy0JCSAgICBnbG9idXNfbW9kdWxlX2RlYWN0aXZhdGUobW9kdWxlX2VudHJ5LT5kZXNjcmlw dG9yKTsKKy0JCSAgICBnbG9idXNfbF9tb2R1bGVfbXV0ZXhfbG9jaygmZ2xvYnVzX2xfbW9kdWxl X211dGV4KTsKKy0JCSAgICBkZWFjdGl2YXRlZF9vbmUgPSBHTE9CVVNfVFJVRTsKKy0JCX0KKy0J ICAgIH0KKy0JfQorKyAgICAgICAgZ2xvYnVzX2Jvb2xfdCAgICAgICAgICAgICAgICAgICAgZGVh Y3RpdmF0ZWRfb25lOworKworKyAgICAgICAgZGVhY3RpdmF0ZWRfb25lID0gR0xPQlVTX1RSVUU7 CisrCisrICAgICAgICB3aGlsZShkZWFjdGl2YXRlZF9vbmUpCisrICAgICAgICB7CisrICAgICAg ICAgICAgZ2xvYnVzX2xpc3RfdCAqICAgICAgICAgICAgIG1vZHVsZV9saXN0OworKworKyAgICAg ICAgICAgIG1vZHVsZV9saXN0ID0gZ2xvYnVzX2xfbW9kdWxlX2xpc3Q7CisrICAgICAgICAgICAg ZGVhY3RpdmF0ZWRfb25lID0gR0xPQlVTX0ZBTFNFOworKworKyAgICAgICAgICAgIHdoaWxlKCFn bG9idXNfbGlzdF9lbXB0eShtb2R1bGVfbGlzdCkpCisrICAgICAgICAgICAgeworKyAgICAgICAg ICAgICAgICBnbG9idXNfbF9tb2R1bGVfZW50cnlfdCAqbW9kdWxlX2VudHJ5OworKworKyAgICAg ICAgICAgICAgICBtb2R1bGVfZW50cnkgPSBnbG9idXNfbGlzdF9maXJzdChtb2R1bGVfbGlzdCk7 CisrICAgICAgICAgICAgICAgIG1vZHVsZV9saXN0ID0gZ2xvYnVzX2xpc3RfcmVzdChtb2R1bGVf bGlzdCk7CisrCisrICAgICAgICAgICAgICAgIGlmKGdsb2J1c19saXN0X2VtcHR5KG1vZHVsZV9l bnRyeS0+Y2xpZW50cykgJiYKKysgICAgICAgICAgICAgICAgICAgbW9kdWxlX2VudHJ5LT5yZWZl cmVuY2VfY291bnQgPiAwKQorKyAgICAgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgICAg ICBnbG9idXNfbF9tb2R1bGVfbXV0ZXhfdW5sb2NrKCZnbG9idXNfbF9tb2R1bGVfbXV0ZXgpOwor KyAgICAgICAgICAgICAgICAgICAgZ2xvYnVzX21vZHVsZV9kZWFjdGl2YXRlKG1vZHVsZV9lbnRy eS0+ZGVzY3JpcHRvcik7CisrICAgICAgICAgICAgICAgICAgICBnbG9idXNfbF9tb2R1bGVfbXV0 ZXhfbG9jaygmZ2xvYnVzX2xfbW9kdWxlX211dGV4KTsKKysgICAgICAgICAgICAgICAgICAgIGRl YWN0aXZhdGVkX29uZSA9IEdMT0JVU19UUlVFOworKyAgICAgICAgICAgICAgICB9CisrICAgICAg ICAgICAgfQorKyAgICAgICAgfQorICAgICB9CisgICAgIGdsb2J1c19sX21vZHVsZV9tdXRleF91 bmxvY2soJmdsb2J1c19sX21vZHVsZV9tdXRleCk7CisgCitAQCAtNTE3LDcgKzUxNyw3IEBAIGds b2J1c19tb2R1bGVfZGVhY3RpdmF0ZV9hbGwodm9pZCkKKyAKKyB2b2lkICoKKyBnbG9idXNfbW9k dWxlX2dldF9tb2R1bGVfcG9pbnRlcigKKy0gICAgZ2xvYnVzX21vZHVsZV9kZXNjcmlwdG9yX3Qg KglzdHJ1Y3RwdHIpCisrICAgIGdsb2J1c19tb2R1bGVfZGVzY3JpcHRvcl90ICogICAgICAgIHN0 cnVjdHB0cikKKyB7CisgICAgIHZvaWQgKiByZXRwdHI7CisgICAgIHZvaWQgKiAoKm1vZHVsZV9m dW5jKSgpOworQEAgLTUyNSw3ICs1MjUsNyBAQCBnbG9idXNfbW9kdWxlX2dldF9tb2R1bGVfcG9p bnRlcigKKyAgICAgbW9kdWxlX2Z1bmM9c3RydWN0cHRyLT5nZXRfcG9pbnRlcl9mdW5jOworIAor ICAgICBpZiAobW9kdWxlX2Z1bmMhPU5VTEwpCistICAgIHsJCisrICAgIHsKKyAgICAgICAgIHJl dHB0cj0oKm1vZHVsZV9mdW5jKSgpOworICAgICB9CisgICAgIGVsc2UKK0BAIC01MzQsMjAgKzUz NCwyMCBAQCBnbG9idXNfbW9kdWxlX2dldF9tb2R1bGVfcG9pbnRlcigKKyAgICAgfQorIAorICAg ICByZXR1cm4ocmV0cHRyKTsKKy19IAorK30KKyAvKmdsb2J1c19tb2R1bGVfZ2V0X21vZHVsZV9w b2ludGVyKCk7Ki8KKyAKKyAKKyAvKgorICAqIGdsb2J1c19tb2R1bGVfc2V0ZW52KCk7CistICov IAorKyAqLworIAorIHZvaWQKKyBnbG9idXNfbW9kdWxlX3NldGVudigKKyAgICAgY29uc3QgY2hh ciAqICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwKKyAgICAgY29uc3QgY2hhciAqICAgICAg ICAgICAgICAgICAgICAgICAgdmFsdWUpCisgeworLSAgICBpbnQJCQkJcmM7CisrICAgIGludCAg ICAgICAgICAgICAgICAgICAgICAgICByYzsKKyAKKyAgICAgLyoKKyAgICAgICogIEZpcnN0LCBj aGVjayB0byBzZWUgaWYgdGhlIGVudmlyb25tZW50IG11dGV4IGhhcyBiZWVuIGluaXRpYWxpemVk CitAQCAtNTU1LDM4ICs1NTUsMzggQEAgZ2xvYnVzX21vZHVsZV9zZXRlbnYoCisgCisgICAgIGlm KGdsb2J1c19sX2Vudmlyb25fbXV0ZXhfaW5pdGlhbGl6ZWQgPT0gR0xPQlVTX0ZBTFNFKQorICAg ICB7CistCWlmKGdsb2J1c19pX21vZHVsZV9pbml0aWFsaXplZCA9PSBHTE9CVVNfVFJVRSkKKy0J eworLQkgICAgcmMgPSBnbG9idXNfbXV0ZXhfaW5pdCgmZ2xvYnVzX2xfZW52aXJvbl9oYXNodGFi bGVfbXV0ZXgsCisrICAgICAgICBpZihnbG9idXNfaV9tb2R1bGVfaW5pdGlhbGl6ZWQgPT0gR0xP QlVTX1RSVUUpCisrICAgICAgICB7CisrICAgICAgICAgICAgcmMgPSBnbG9idXNfbXV0ZXhfaW5p dCgmZ2xvYnVzX2xfZW52aXJvbl9oYXNodGFibGVfbXV0ZXgsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGdsb2J1c19tdXRleGF0dHJfdCAqKSBHTE9CVVNfTlVMTCk7CisgICAgICAgICAg ICAgZ2xvYnVzX2Fzc2VydCAocmMgPT0gMCk7CistCSAgICBnbG9idXNfbF9lbnZpcm9uX211dGV4 X2luaXRpYWxpemVkID0gR0xPQlVTX1RSVUU7CistCX0KKysgICAgICAgICAgICBnbG9idXNfbF9l bnZpcm9uX211dGV4X2luaXRpYWxpemVkID0gR0xPQlVTX1RSVUU7CisrICAgICAgICB9CisgICAg IH0KKy0gICAKKysKKyAgICAgLyoKKyAgICAgICogIHRoZW4sIGNoZWNrIHRvIHNlZSBpZiB0aGUg ZW52aXJvbm1lbnQgaGFzaCB0YWJsZSBoYXMgYmVlbiBpbml0aWFsaXplZAorICAgICAgKi8KKy0g CisrCisgCisgICAgIGlmKGdsb2J1c19sX2Vudmlyb25faW5pdGlhbGl6ZWQgPT0gR0xPQlVTX0ZB TFNFKQorICAgICB7CistCWlmKGdsb2J1c19pX21vZHVsZV9pbml0aWFsaXplZD09R0xPQlVTX1RS VUUpCistCXsKKy0JICAgIGdsb2J1c19tdXRleF9sb2NrKCZnbG9idXNfbF9lbnZpcm9uX2hhc2h0 YWJsZV9tdXRleCk7CistCX0KKysgICAgICAgIGlmKGdsb2J1c19pX21vZHVsZV9pbml0aWFsaXpl ZD09R0xPQlVTX1RSVUUpCisrICAgICAgICB7CisrICAgICAgICAgICAgZ2xvYnVzX211dGV4X2xv Y2soJmdsb2J1c19sX2Vudmlyb25faGFzaHRhYmxlX211dGV4KTsKKysgICAgICAgIH0KKyAKKyAg ICAgICAgIGdsb2J1c19oYXNodGFibGVfaW5pdCgmZ2xvYnVzX2xfZW52aXJvbl90YWJsZSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIEdMT0JVU19MX0VOVklST05fVEFCTEVfU0laRSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2J1c19oYXNodGFibGVfc3RyaW5nX2hhc2gsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9idXNfaGFzaHRhYmxlX3N0cmluZ19rZXllcSk7 CisgCistCWdsb2J1c19sX2Vudmlyb25faW5pdGlhbGl6ZWQgPSBHTE9CVVNfVFJVRTsKKysgICAg ICAgIGdsb2J1c19sX2Vudmlyb25faW5pdGlhbGl6ZWQgPSBHTE9CVVNfVFJVRTsKKyAKKy0JaWYo Z2xvYnVzX2lfbW9kdWxlX2luaXRpYWxpemVkID09IEdMT0JVU19UUlVFKQorLQl7CistCSAgICBn bG9idXNfbXV0ZXhfdW5sb2NrKCZnbG9idXNfbF9lbnZpcm9uX2hhc2h0YWJsZV9tdXRleCk7Cist CX0KKysgICAgICAgIGlmKGdsb2J1c19pX21vZHVsZV9pbml0aWFsaXplZCA9PSBHTE9CVVNfVFJV RSkKKysgICAgICAgIHsKKysgICAgICAgICAgICBnbG9idXNfbXV0ZXhfdW5sb2NrKCZnbG9idXNf bF9lbnZpcm9uX2hhc2h0YWJsZV9tdXRleCk7CisrICAgICAgICB9CisgICAgIH0KKyAKKyAgICAg LyoKK0BAIC01OTUsMTIgKzU5NSwxMiBAQCBnbG9idXNfbW9kdWxlX3NldGVudigKKyAKKyAgICAg aWYoZ2xvYnVzX2lfbW9kdWxlX2luaXRpYWxpemVkID09IEdMT0JVU19UUlVFKQorICAgICB7Cist CWdsb2J1c19tdXRleF9sb2NrKCZnbG9idXNfbF9lbnZpcm9uX2hhc2h0YWJsZV9tdXRleCk7Cisr ICAgICAgICBnbG9idXNfbXV0ZXhfbG9jaygmZ2xvYnVzX2xfZW52aXJvbl9oYXNodGFibGVfbXV0 ZXgpOworICAgICB9CisgCisgICAgIGdsb2J1c19oYXNodGFibGVfcmVtb3ZlKAorLQkmZ2xvYnVz X2xfZW52aXJvbl90YWJsZSwKKy0JKHZvaWQgKikgbmFtZSk7CisrICAgICAgICAmZ2xvYnVzX2xf ZW52aXJvbl90YWJsZSwKKysgICAgICAgICh2b2lkICopIG5hbWUpOworICAgICBnbG9idXNfaGFz aHRhYmxlX2luc2VydCgKKyAgICAgICAgICAmZ2xvYnVzX2xfZW52aXJvbl90YWJsZSwKKyAgICAg ICAgICAodm9pZCAqKSBuYW1lLAorQEAgLTYwOCw3ICs2MDgsNyBAQCBnbG9idXNfbW9kdWxlX3Nl dGVudigKKyAKKyAgICAgaWYoZ2xvYnVzX2lfbW9kdWxlX2luaXRpYWxpemVkID09IEdMT0JVU19U UlVFKQorICAgICB7CistCWdsb2J1c19tdXRleF91bmxvY2soJmdsb2J1c19sX2Vudmlyb25faGFz aHRhYmxlX211dGV4KTsKKysgICAgICAgIGdsb2J1c19tdXRleF91bmxvY2soJmdsb2J1c19sX2Vu dmlyb25faGFzaHRhYmxlX211dGV4KTsKKyAgICAgfQorIAorIH0KK0BAIC02MTgsMzEgKzYxOCwz MSBAQCBnbG9idXNfbW9kdWxlX3NldGVudigKKyAgKiBnbG9idXNfbW9kdWxlX2dldGVudigpOwor ICAqLworIAorLWNoYXIgKiAKKytjaGFyICoKKyBnbG9idXNfbW9kdWxlX2dldGVudigKKyAgICAg Y29uc3QgY2hhciAqICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSkKKyB7CistICAgIGNoYXIg KiAJCQllbnRyeTsKKysgICAgY2hhciAqICAgICAgICAgICAgICAgICAgICAgIGVudHJ5OworIAor ICAgICBpZihnbG9idXNfbF9lbnZpcm9uX2luaXRpYWxpemVkID09IEdMT0JVU19UUlVFKQorICAg ICB7CistCWlmKChnbG9idXNfaV9tb2R1bGVfaW5pdGlhbGl6ZWQgPT0gR0xPQlVTX1RSVUUpCist CSAgICAmJihnbG9idXNfbF9lbnZpcm9uX211dGV4X2luaXRpYWxpemVkID09IEdMT0JVU19UUlVF KSkKKy0JeworLQkgICAgZ2xvYnVzX211dGV4X2xvY2soJmdsb2J1c19sX2Vudmlyb25faGFzaHRh YmxlX211dGV4KTsKKy0JfQorKyAgICAgICAgaWYoKGdsb2J1c19pX21vZHVsZV9pbml0aWFsaXpl ZCA9PSBHTE9CVVNfVFJVRSkKKysgICAgICAgICAgICAmJihnbG9idXNfbF9lbnZpcm9uX211dGV4 X2luaXRpYWxpemVkID09IEdMT0JVU19UUlVFKSkKKysgICAgICAgIHsKKysgICAgICAgICAgICBn bG9idXNfbXV0ZXhfbG9jaygmZ2xvYnVzX2xfZW52aXJvbl9oYXNodGFibGVfbXV0ZXgpOworKyAg ICAgICAgfQorIAorICAgICAgICAgZW50cnkgPQorICAgICAgICAgICAgZ2xvYnVzX2hhc2h0YWJs ZV9sb29rdXAoCisgICAgICAgICAgICAgICAgJmdsb2J1c19sX2Vudmlyb25fdGFibGUsCistICAg ICAgICAgICAgICAgKHZvaWQgKikgbmFtZSk7IAorKyAgICAgICAgICAgICAgICh2b2lkICopIG5h bWUpOworIAorIAorLQlpZigoZ2xvYnVzX2lfbW9kdWxlX2luaXRpYWxpemVkID09IEdMT0JVU19U UlVFKQorLQkgICAgJiYoZ2xvYnVzX2xfZW52aXJvbl9tdXRleF9pbml0aWFsaXplZCA9PSBHTE9C VVNfVFJVRSkpCistCXsKKy0JICAgIGdsb2J1c19tdXRleF91bmxvY2soJmdsb2J1c19sX2Vudmly b25faGFzaHRhYmxlX211dGV4KTsKKy0JfQorKyAgICAgICAgaWYoKGdsb2J1c19pX21vZHVsZV9p bml0aWFsaXplZCA9PSBHTE9CVVNfVFJVRSkKKysgICAgICAgICAgICAmJihnbG9idXNfbF9lbnZp cm9uX211dGV4X2luaXRpYWxpemVkID09IEdMT0JVU19UUlVFKSkKKysgICAgICAgIHsKKysgICAg ICAgICAgICBnbG9idXNfbXV0ZXhfdW5sb2NrKCZnbG9idXNfbF9lbnZpcm9uX2hhc2h0YWJsZV9t dXRleCk7CisrICAgICAgICB9CisgICAgIH0KKyAgICAgZWxzZQorICAgICB7CitAQCAtNjU1LDcg KzY1NSw3IEBAIGdsb2J1c19tb2R1bGVfZ2V0ZW52KAorIAorICAgICBpZiAoZW50cnkhPUdMT0JV U19OVUxMKQorICAgICB7CistCXJldHVybihlbnRyeSk7CisrICAgICAgICByZXR1cm4oZW50cnkp OworICAgICB9CisgCisgICAgIC8qCitAQCAtNjY2LDcgKzY2Niw3IEBAIGdsb2J1c19tb2R1bGVf Z2V0ZW52KAorIAorICAgICBpZiAoZW50cnkhPU5VTEwpCisgICAgIHsKKy0JcmV0dXJuKGVudHJ5 KTsKKysgICAgICAgIHJldHVybihlbnRyeSk7CisgICAgIH0KKyAKKyAgICAgcmV0dXJuKEdMT0JV U19OVUxMKTsKK0BAIC02OTUsMjIgKzY5NSwyMiBAQCBnbG9idXNfbW9kdWxlX2dldGVudigKKyAK KyBpbnQKKyBnbG9idXNfbW9kdWxlX2dldF92ZXJzaW9uKAorLSAgICBnbG9idXNfbW9kdWxlX2Rl c2NyaXB0b3JfdCAqCW1vZHVsZV9kZXNjcmlwdG9yLAorKyAgICBnbG9idXNfbW9kdWxlX2Rlc2Ny aXB0b3JfdCAqICAgICAgICBtb2R1bGVfZGVzY3JpcHRvciwKKyAgICAgZ2xvYnVzX3ZlcnNpb25f dCAqICAgICAgICAgICAgICAgICAgdmVyc2lvbikKKyB7CisgICAgIGdsb2J1c192ZXJzaW9uX3Qg KiAgICAgICAgICAgICAgICAgIG1vZHVsZV92ZXJzaW9uOworLSAgICAKKysKKyAgICAgbW9kdWxl X3ZlcnNpb24gPSBtb2R1bGVfZGVzY3JpcHRvci0+dmVyc2lvbjsKKy0gICAgCisrCisgICAgIGlm KCFtb2R1bGVfdmVyc2lvbikKKyAgICAgeworICAgICAgICAgcmV0dXJuIEdMT0JVU19GQUlMVVJF OworICAgICB9CistICAgIAorLSAgICB2ZXJzaW9uLT5tYWpvciAgICAgID0gbW9kdWxlX3ZlcnNp b24tPm1ham9yOyAgICAgICAKKy0gICAgdmVyc2lvbi0+bWlub3IgICAgICA9IG1vZHVsZV92ZXJz aW9uLT5taW5vcjsgICAgICAgCistICAgIHZlcnNpb24tPnRpbWVzdGFtcCAgPSBtb2R1bGVfdmVy c2lvbi0+dGltZXN0YW1wOyAgIAorLSAgICB2ZXJzaW9uLT5icmFuY2hfaWQgID0gbW9kdWxlX3Zl cnNpb24tPmJyYW5jaF9pZDsgICAKKysKKysgICAgdmVyc2lvbi0+bWFqb3IgICAgICA9IG1vZHVs ZV92ZXJzaW9uLT5tYWpvcjsKKysgICAgdmVyc2lvbi0+bWlub3IgICAgICA9IG1vZHVsZV92ZXJz aW9uLT5taW5vcjsKKysgICAgdmVyc2lvbi0+dGltZXN0YW1wICA9IG1vZHVsZV92ZXJzaW9uLT50 aW1lc3RhbXA7CisrICAgIHZlcnNpb24tPmJyYW5jaF9pZCAgPSBtb2R1bGVfdmVyc2lvbi0+YnJh bmNoX2lkOworIAorICAgICByZXR1cm4gR0xPQlVTX1NVQ0NFU1M7CisgfQorQEAgLTcxOSw3ICs3 MTksNyBAQCBnbG9idXNfbW9kdWxlX2dldF92ZXJzaW9uKAorIC8qKgorICAqIHByaW50IG1vZHVs ZSdzIHZlcnNpb24KKyAgKgorLSAqIFRoaXMgZnVuY3Rpb24gcHJpbnRzIGEgbW9kdWxlcyB2ZXJz aW9uIGluZm8gdXNpbmcgdGhlIHN0YW5kYXJkIGZvcm0gCisrICogVGhpcyBmdW5jdGlvbiBwcmlu dHMgYSBtb2R1bGVzIHZlcnNpb24gaW5mbyB1c2luZyB0aGUgc3RhbmRhcmQgZm9ybQorICAqIHBy b3ZpZGVkIGJ5IGdsb2J1c192ZXJzaW9uX3ByaW50CisgICoKKyAgKiBAcGFyYW0gbW9kdWxlX2Rl c2NyaXB0b3IKK0BAIC03MjksNyArNzI5LDcgQEAgZ2xvYnVzX21vZHVsZV9nZXRfdmVyc2lvbigK KyAgKiAgICAgICAgc3RyZWFtIHRvIHByaW50IG9uIChzdGRvdXQsIHN0ZGVyciwgZXRjKQorICAq CisgICogQHBhcmFtIHZlcmJvc2UKKy0gKiAgICAgICAgSWYgR0xPQlVTX1RSVUUsIHRoZW4gYWxs IGF2YWlsYWJsZSB2ZXJzaW9uIGluZm8gaXMgcHJpbnRlZCAKKysgKiAgICAgICAgSWYgR0xPQlVT X1RSVUUsIHRoZW4gYWxsIGF2YWlsYWJsZSB2ZXJzaW9uIGluZm8gaXMgcHJpbnRlZAorICAqICAg ICAgICAoZXg6IGdsb2J1c19tb2R1bGU6IDEuMSAoMTAxMzcwODYxOC01KSkKKyAgKiAgICAgICAg ZWxzZSwgb25seSB0aGUgbWFqb3IubWlub3IgaXMgcHJpbnRlZCAoZXg6IGdsb2J1c19tb2R1bGU6 IDEuMSkKKyAgKgorQEAgLTczOSw3ICs3MzksNyBAQCBnbG9idXNfbW9kdWxlX2dldF92ZXJzaW9u KAorIAorIHZvaWQKKyBnbG9idXNfbW9kdWxlX3ByaW50X3ZlcnNpb24oCistICAgIGdsb2J1c19t b2R1bGVfZGVzY3JpcHRvcl90ICoJbW9kdWxlX2Rlc2NyaXB0b3IsCisrICAgIGdsb2J1c19tb2R1 bGVfZGVzY3JpcHRvcl90ICogICAgICAgIG1vZHVsZV9kZXNjcmlwdG9yLAorICAgICBGSUxFICog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW0sCisgICAgIGdsb2J1c19ib29sX3Qg ICAgICAgICAgICAgICAgICAgICAgIHZlcmJvc2UpCisgeworQEAgLTc1MywxNCArNzUzLDE0IEBA IGdsb2J1c19tb2R1bGVfcHJpbnRfdmVyc2lvbigKKyAvKioKKyAgKiBwcmludCBhbGwgYWN0aXZh dGVkIG1vZHVsZXMnIHZlcnNpb25zCisgICoKKy0gKiBUaGlzIGZ1bmN0aW9uIHByaW50cyBhbGwg YWN0aXZhdGVkIG1vZHVsZXMnIHZlcnNpb24gaW5mbyB1c2luZyB0aGUgc3RhbmRhcmQgCisrICog VGhpcyBmdW5jdGlvbiBwcmludHMgYWxsIGFjdGl2YXRlZCBtb2R1bGVzJyB2ZXJzaW9uIGluZm8g dXNpbmcgdGhlIHN0YW5kYXJkCisgICogZm9ybSBwcm92aWRlZCBieSBnbG9idXNfdmVyc2lvbl9w cmludAorICAqCisgICogQHBhcmFtIHN0cmVhbQorICAqICAgICAgICBzdHJlYW0gdG8gcHJpbnQg b24gKHN0ZG91dCwgc3RkZXJyLCBldGMpCisgICoKKyAgKiBAcGFyYW0gdmVyYm9zZQorLSAqICAg ICAgICBJZiBHTE9CVVNfVFJVRSwgdGhlbiBhbGwgYXZhaWxhYmxlIHZlcnNpb24gaW5mbyBpcyBw cmludGVkIAorKyAqICAgICAgICBJZiBHTE9CVVNfVFJVRSwgdGhlbiBhbGwgYXZhaWxhYmxlIHZl cnNpb24gaW5mbyBpcyBwcmludGVkCisgICogICAgICAgIChleDogZ2xvYnVzX21vZHVsZTogMS4x ICgxMDEzNzA4NjE4LTUpKQorICAqICAgICAgICBlbHNlLCBvbmx5IHRoZSBtYWpvci5taW5vciBp cyBwcmludGVkIChleDogZ2xvYnVzX21vZHVsZTogMS4xKQorICAqCitAQCAtNzgxLDE5ICs3ODEs MTkgQEAgZ2xvYnVzX21vZHVsZV9wcmludF9hY3RpdmF0ZWRfdmVyc2lvbnMoCisgICAgIHsKKyAg ICAgICAgIHJldHVybjsKKyAgICAgfQorLSAgICAKKysKKyAgICAgZ2xvYnVzX2xfbW9kdWxlX211 dGV4X2xvY2soJmdsb2J1c19sX21vZHVsZV9tdXRleCk7CisgICAgIHsKKy0gICAgICAgIGdsb2J1 c19saXN0X3QgKgkJICAgICAgICBtb2R1bGVfbGlzdDsKKy0gICAgICAgIAorKyAgICAgICAgZ2xv YnVzX2xpc3RfdCAqICAgICAgICAgICAgICAgICBtb2R1bGVfbGlzdDsKKysKKyAgICAgICAgIG1v ZHVsZV9saXN0ID0gZ2xvYnVzX2xfbW9kdWxlX2xpc3Q7CisgICAgICAgICB3aGlsZSghZ2xvYnVz X2xpc3RfZW1wdHkobW9kdWxlX2xpc3QpKQorICAgICAgICAgeworICAgICAgICAgICAgIGdsb2J1 c19sX21vZHVsZV9lbnRyeV90ICogICAgICAgbW9kdWxlX2VudHJ5OworLSAgICAKKysKKyAgICAg ICAgICAgICBtb2R1bGVfZW50cnkgPSBnbG9idXNfbGlzdF9maXJzdChtb2R1bGVfbGlzdCk7Cisg ICAgICAgICAgICAgbW9kdWxlX2xpc3QgPSBnbG9idXNfbGlzdF9yZXN0KG1vZHVsZV9saXN0KTsK Ky0gICAgICAgICAgICAKKysKKyAgICAgICAgICAgICBpZihtb2R1bGVfZW50cnktPnJlZmVyZW5j ZV9jb3VudCA+IDApCisgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICBnbG9idXNfdmVy c2lvbl9wcmludCgKK0BAIC04MTgsNyArODE4LDcgQEAgZ2xvYnVzX21vZHVsZV9wcmludF9hY3Rp dmF0ZWRfdmVyc2lvbnMoCisgICogbmFtZTogbWFqb3IubWlub3IgICAgICAgICAgICAgICAgICAg ICAgICBpZiB2ZXJib3NlID0gZmFsc2UKKyAgKiBuYW1lOiBtYWpvci5taW5vci50aW1lc3RhbXAt YnJhbmNoX2lkICAgIGlmIHZlcmJvc2UgPSB0cnVlCisgICoKKy0gKiBJbiBlaXRoZXIgY2FzZSwg aWYgbmFtZSBpcyBOVUxMLCB0aGVuIG9ubHkgdGhlIG51bWVyaWNhbCB2ZXJzaW9uIHdpbGwgYmUg CisrICogSW4gZWl0aGVyIGNhc2UsIGlmIG5hbWUgaXMgTlVMTCwgdGhlbiBvbmx5IHRoZSBudW1l cmljYWwgdmVyc2lvbiB3aWxsIGJlCisgICogcHJpbnRlZC4KKyAgKgorICAqIEBwYXJhbSBuYW1l CitAQCAtODMyLDcgKzgzMiw3IEBAIGdsb2J1c19tb2R1bGVfcHJpbnRfYWN0aXZhdGVkX3ZlcnNp b25zKAorICAqICAgICAgICBzdHJlYW0gdG8gcHJpbnQgb24gKHN0ZG91dCwgc3RkZXJyLCBldGMp CisgICoKKyAgKiBAcGFyYW0gdmVyYm9zZQorLSAqICAgICAgICBJZiBHTE9CVVNfVFJVRSwgdGhl biBhbGwgYXZhaWxhYmxlIHZlcnNpb24gaW5mbyBpcyBwcmludGVkIAorKyAqICAgICAgICBJZiBH TE9CVVNfVFJVRSwgdGhlbiBhbGwgYXZhaWxhYmxlIHZlcnNpb24gaW5mbyBpcyBwcmludGVkCisg ICogICAgICAgIChleDogZ2xvYnVzX21vZHVsZTogMS4xICgxMDEzNzA4NjE4LTUpKQorICAqICAg ICAgICBlbHNlLCBvbmx5IHRoZSBtYWpvci5taW5vciBpcyBwcmludGVkIChleDogZ2xvYnVzX21v ZHVsZTogMS4xKQorICAqCitAQCAtODUxLDE0ICs4NTEsMTQgQEAgZ2xvYnVzX3ZlcnNpb25fcHJp bnQoCisgICAgIHsKKyAgICAgICAgIGdsb2J1c19saWJjX2ZwcmludGYoc3RyZWFtLCAiJXM6ICIs IG5hbWUpOworICAgICB9CistICAgIAorKworICAgICBpZih2ZXJzaW9uKQorICAgICB7CisgICAg ICAgICBpZih2ZXJib3NlKQorICAgICAgICAgeworICAgICAgICAgICAgIGdsb2J1c19saWJjX2Zw cmludGYoCistICAgICAgICAgICAgICAgIHN0cmVhbSwgCistICAgICAgICAgICAgICAgICIlZC4l ZCAoJWx1LSVkKVxuIiwgCisrICAgICAgICAgICAgICAgIHN0cmVhbSwKKysgICAgICAgICAgICAg ICAgIiVkLiVkICglbHUtJWQpXG4iLAorICAgICAgICAgICAgICAgICB2ZXJzaW9uLT5tYWpvciwK KyAgICAgICAgICAgICAgICAgdmVyc2lvbi0+bWlub3IsCisgICAgICAgICAgICAgICAgIHZlcnNp b24tPnRpbWVzdGFtcCwKK0BAIC04NjcsOCArODY3LDggQEAgZ2xvYnVzX3ZlcnNpb25fcHJpbnQo CisgICAgICAgICBlbHNlCisgICAgICAgICB7CisgICAgICAgICAgICAgZ2xvYnVzX2xpYmNfZnBy aW50ZigKKy0gICAgICAgICAgICAgICAgc3RyZWFtLCAKKy0gICAgICAgICAgICAgICAgIiVkLiVk XG4iLCAKKysgICAgICAgICAgICAgICAgc3RyZWFtLAorKyAgICAgICAgICAgICAgICAiJWQuJWRc biIsCisgICAgICAgICAgICAgICAgIHZlcnNpb24tPm1ham9yLAorICAgICAgICAgICAgICAgICB2 ZXJzaW9uLT5taW5vcik7CisgICAgICAgICB9CitAQCAtODgxLDcgKzg4MSw3IEBAIGdsb2J1c192 ZXJzaW9uX3ByaW50KAorIAorIAorIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0JCSAgICAgTW9k dWxlIHNwZWNpZmljIGZ1bmN0aW9uIGRlZmluaXRpb25zCisrICAgICAgICAgICAgICAgICAgICAg TW9kdWxlIHNwZWNpZmljIGZ1bmN0aW9uIGRlZmluaXRpb25zCisgKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqLworIAorIC8qCitAQCAtOTAwLDIwICs5MDAsMjAgQEAgZ2xvYnVzX2xfbW9kdWxlX2luaXRp YWxpemUoKQorICAgICAgKiBJbml0aWFsaXplIHRoZSByZWdpc3RlcmVkIG1vZHVsZSB0YWJsZSBh bmQgbGlzdAorICAgICAgKi8KKyAgICAgZ2xvYnVzX2hhc2h0YWJsZV9pbml0KCZnbG9idXNfbF9t b2R1bGVfdGFibGUsCistCQkJICBHTE9CVVNfTF9NT0RVTEVfVEFCTEVfU0laRSwKKy0JCQkgIGds b2J1c19oYXNodGFibGVfdm9pZHBfaGFzaCwKKy0JCQkgIGdsb2J1c19oYXNodGFibGVfdm9pZHBf a2V5ZXEpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgR0xPQlVTX0xfTU9EVUxFX1RBQkxF X1NJWkUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9idXNfaGFzaHRhYmxlX3ZvaWRw X2hhc2gsCisrICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9idXNfaGFzaHRhYmxlX3ZvaWRw X2tleWVxKTsKKyAKKyAgICAgZ2xvYnVzX2xfbW9kdWxlX2xpc3QgPSBHTE9CVVNfTlVMTDsKKy0g ICAgCisrCisgICAgIC8qCisgICAgICAqIEluaXRpYWxpemUgdGhlIHJlY3Vyc2l2ZSBtdXRleAor ICAgICAgKi8KKyAgICAgZ2xvYnVzX2xfbW9kdWxlX211dGV4X2luaXQoJmdsb2J1c19sX21vZHVs ZV9tdXRleCk7CistICAgIAorKworICAgICBnbG9idXNfdGhyZWFkX2tleV9jcmVhdGUoJmdsb2J1 c19sX2FjdGl2YXRlX3BhcmVudF9rZXksIE5VTEwpOworICAgICBnbG9idXNfdGhyZWFkX2tleV9j cmVhdGUoJmdsb2J1c19sX2RlYWN0aXZhdGVfcGFyZW50X2tleSwgTlVMTCk7CistICAgIAorKwor ICAgICAvKgorICAgICAgKiBOb3cgZmluaXNoIGluaXRpYWxpemluZyB0aGUgdGhyZWFkcyBwYWNr YWdlCisgICAgICAqLworQEAgLTkyNyw3MSArOTI3LDcxIEBAIGdsb2J1c19sX21vZHVsZV9pbml0 aWFsaXplKCkKKyAgKi8KKyBzdGF0aWMgZ2xvYnVzX2Jvb2xfdAorIGdsb2J1c19sX21vZHVsZV9p bmNyZW1lbnQoCistICAgIGdsb2J1c19tb2R1bGVfZGVzY3JpcHRvcl90ICoJbW9kdWxlX2Rlc2Ny aXB0b3IsCistICAgIGdsb2J1c19sX21vZHVsZV9rZXlfdAkJcGFyZW50X2tleSwKKysgICAgZ2xv YnVzX21vZHVsZV9kZXNjcmlwdG9yX3QgKiAgICAgICAgbW9kdWxlX2Rlc2NyaXB0b3IsCisrICAg IGdsb2J1c19sX21vZHVsZV9rZXlfdCAgICAgICAgICAgICAgIHBhcmVudF9rZXksCisgICAgIGds b2J1c19tb2R1bGVfZGVhY3RpdmF0ZV9wcm94eV9jYl90IGRlYWN0aXZhdGVfY2IsCisgICAgIHZv aWQgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJfYXJnKQorIHsKKy0gICAgZ2xv YnVzX2xfbW9kdWxlX2VudHJ5X3QgKgkJZW50cnk7CistICAgIAorKyAgICBnbG9idXNfbF9tb2R1 bGVfZW50cnlfdCAqICAgICAgICAgICBlbnRyeTsKKysKKyAgICAgZW50cnkgPQorLQlnbG9idXNf aGFzaHRhYmxlX2xvb2t1cCgKKy0JICAgICZnbG9idXNfbF9tb2R1bGVfdGFibGUsCistCSAgICAo dm9pZCAqKSBtb2R1bGVfZGVzY3JpcHRvci0+YWN0aXZhdGlvbl9mdW5jKTsKKysgICAgICAgIGds b2J1c19oYXNodGFibGVfbG9va3VwKAorKyAgICAgICAgICAgICZnbG9idXNfbF9tb2R1bGVfdGFi bGUsCisrICAgICAgICAgICAgKHZvaWQgKikgbW9kdWxlX2Rlc2NyaXB0b3ItPmFjdGl2YXRpb25f ZnVuYyk7CisgCisgICAgIGlmIChlbnRyeSAhPSBHTE9CVVNfTlVMTCkKKyAgICAgeworLQkvKgor LQkgKiBUaGUgbW9kdWxlIGhhcyBhbHJlYWR5IGJlZW4gcmVnaXN0ZXJlZC4gIEluY3JlbWVudCBp dHMgcmVmZXJlbmNlCistCSAqIGNvdW50ZXIgYW5kIGFkZCBhbnkgbmV3IGNsaWVudHMgdG8gdGhl IGRlcGVuZGVuY3kgbGlzdAorLQkgKi8KKy0JZW50cnktPnJlZmVyZW5jZV9jb3VudCsrOworLQlp ZiAocGFyZW50X2tleSAhPSBHTE9CVVNfTlVMTAorLQkgICAgJiYgZ2xvYnVzX2xpc3Rfc2VhcmNo KGVudHJ5LT5jbGllbnRzLAorLQkJCQkgICh2b2lkICopIHBhcmVudF9rZXkpID09IEdMT0JVU19O VUxMKQorLQl7CistCSAgICBnbG9idXNfbGlzdF9pbnNlcnQoJmVudHJ5LT5jbGllbnRzLCAodm9p ZCAqKSBwYXJlbnRfa2V5KTsKKy0JfQorLQorLQlpZihlbnRyeS0+cmVmZXJlbmNlX2NvdW50ID09 IDEpCistCXsKKy0JICAgIGVudHJ5LT5kZWFjdGl2YXRlX2NiID0gZGVhY3RpdmF0ZV9jYjsKKy0J ICAgIGVudHJ5LT51c2VyX2FyZyA9IHVzZXJfYXJnOworLQkgICAgcmV0dXJuIEdMT0JVU19UUlVF OworLQl9CistCWVsc2UKKy0JeworLSAgICAJICAgIHJldHVybiBHTE9CVVNfRkFMU0U7CistCX0K KysgICAgICAgIC8qCisrICAgICAgICAgKiBUaGUgbW9kdWxlIGhhcyBhbHJlYWR5IGJlZW4gcmVn aXN0ZXJlZC4gIEluY3JlbWVudCBpdHMgcmVmZXJlbmNlCisrICAgICAgICAgKiBjb3VudGVyIGFu ZCBhZGQgYW55IG5ldyBjbGllbnRzIHRvIHRoZSBkZXBlbmRlbmN5IGxpc3QKKysgICAgICAgICAq LworKyAgICAgICAgZW50cnktPnJlZmVyZW5jZV9jb3VudCsrOworKyAgICAgICAgaWYgKHBhcmVu dF9rZXkgIT0gR0xPQlVTX05VTEwKKysgICAgICAgICAgICAmJiBnbG9idXNfbGlzdF9zZWFyY2go ZW50cnktPmNsaWVudHMsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lk ICopIHBhcmVudF9rZXkpID09IEdMT0JVU19OVUxMKQorKyAgICAgICAgeworKyAgICAgICAgICAg IGdsb2J1c19saXN0X2luc2VydCgmZW50cnktPmNsaWVudHMsICh2b2lkICopIHBhcmVudF9rZXkp OworKyAgICAgICAgfQorKworKyAgICAgICAgaWYoZW50cnktPnJlZmVyZW5jZV9jb3VudCA9PSAx KQorKyAgICAgICAgeworKyAgICAgICAgICAgIGVudHJ5LT5kZWFjdGl2YXRlX2NiID0gZGVhY3Rp dmF0ZV9jYjsKKysgICAgICAgICAgICBlbnRyeS0+dXNlcl9hcmcgPSB1c2VyX2FyZzsKKysgICAg ICAgICAgICByZXR1cm4gR0xPQlVTX1RSVUU7CisrICAgICAgICB9CisrICAgICAgICBlbHNlCisr ICAgICAgICB7CisrICAgICAgICAgICAgcmV0dXJuIEdMT0JVU19GQUxTRTsKKysgICAgICAgIH0K KyAgICAgfQorICAgICBlbHNlCisgICAgIHsKKy0JLyoKKy0JICogVGhpcyBpcyB0aGUgZmlyc3Qg dGltZSB0aGlzIG1vZHVsZSBoYXMgYmVlbiByZWdpc3RlcmVkLiAgQ3JlYXRlIGEKKy0JICogbmV3 IGVudHJ5IGluIHRoZSBtb2R1bGVzIHRhYmxlLgorLQkgKi8KKy0JZW50cnkgPSAoZ2xvYnVzX2xf bW9kdWxlX2VudHJ5X3QgKikKKy0JICAgIGdsb2J1c19tYWxsb2Moc2l6ZW9mKGdsb2J1c19sX21v ZHVsZV9lbnRyeV90KSk7CistCWdsb2J1c19hc3NlcnQoZW50cnkgIT0gR0xPQlVTX05VTEwpOwor LQorLQllbnRyeS0+ZGVzY3JpcHRvciA9IG1vZHVsZV9kZXNjcmlwdG9yOworLQllbnRyeS0+cmVm ZXJlbmNlX2NvdW50ID0gMTsKKy0JZW50cnktPmNsaWVudHMgPSBHTE9CVVNfTlVMTDsKKy0JZW50 cnktPmRlYWN0aXZhdGVfY2IgPSBkZWFjdGl2YXRlX2NiOworLQllbnRyeS0+dXNlcl9hcmcgPSB1 c2VyX2FyZzsKKy0JaWYgKHBhcmVudF9rZXkgIT0gR0xPQlVTX05VTEwpCistCXsKKy0JICAgIGds b2J1c19saXN0X2luc2VydCgmZW50cnktPmNsaWVudHMsICh2b2lkICopIHBhcmVudF9rZXkpOwor LQl9CistCQorLQlnbG9idXNfaGFzaHRhYmxlX2luc2VydCgKKy0JICAgICZnbG9idXNfbF9tb2R1 bGVfdGFibGUsCistCSAgICAodm9pZCAqKSBtb2R1bGVfZGVzY3JpcHRvci0+YWN0aXZhdGlvbl9m dW5jLAorLQkgICAgZW50cnkpOworLQorLQlnbG9idXNfbGlzdF9pbnNlcnQoJmdsb2J1c19sX21v ZHVsZV9saXN0LCBlbnRyeSk7CistCQorLQlyZXR1cm4gR0xPQlVTX1RSVUU7CisrICAgICAgICAv KgorKyAgICAgICAgICogVGhpcyBpcyB0aGUgZmlyc3QgdGltZSB0aGlzIG1vZHVsZSBoYXMgYmVl biByZWdpc3RlcmVkLiAgQ3JlYXRlIGEKKysgICAgICAgICAqIG5ldyBlbnRyeSBpbiB0aGUgbW9k dWxlcyB0YWJsZS4KKysgICAgICAgICAqLworKyAgICAgICAgZW50cnkgPSAoZ2xvYnVzX2xfbW9k dWxlX2VudHJ5X3QgKikKKysgICAgICAgICAgICBnbG9idXNfbWFsbG9jKHNpemVvZihnbG9idXNf bF9tb2R1bGVfZW50cnlfdCkpOworKyAgICAgICAgZ2xvYnVzX2Fzc2VydChlbnRyeSAhPSBHTE9C VVNfTlVMTCk7CisrCisrICAgICAgICBlbnRyeS0+ZGVzY3JpcHRvciA9IG1vZHVsZV9kZXNjcmlw dG9yOworKyAgICAgICAgZW50cnktPnJlZmVyZW5jZV9jb3VudCA9IDE7CisrICAgICAgICBlbnRy eS0+Y2xpZW50cyA9IEdMT0JVU19OVUxMOworKyAgICAgICAgZW50cnktPmRlYWN0aXZhdGVfY2Ig PSBkZWFjdGl2YXRlX2NiOworKyAgICAgICAgZW50cnktPnVzZXJfYXJnID0gdXNlcl9hcmc7Cisr ICAgICAgICBpZiAocGFyZW50X2tleSAhPSBHTE9CVVNfTlVMTCkKKysgICAgICAgIHsKKysgICAg ICAgICAgICBnbG9idXNfbGlzdF9pbnNlcnQoJmVudHJ5LT5jbGllbnRzLCAodm9pZCAqKSBwYXJl bnRfa2V5KTsKKysgICAgICAgIH0KKysKKysgICAgICAgIGdsb2J1c19oYXNodGFibGVfaW5zZXJ0 KAorKyAgICAgICAgICAgICZnbG9idXNfbF9tb2R1bGVfdGFibGUsCisrICAgICAgICAgICAgKHZv aWQgKikgbW9kdWxlX2Rlc2NyaXB0b3ItPmFjdGl2YXRpb25fZnVuYywKKysgICAgICAgICAgICBl bnRyeSk7CisrCisrICAgICAgICBnbG9idXNfbGlzdF9pbnNlcnQoJmdsb2J1c19sX21vZHVsZV9s aXN0LCBlbnRyeSk7CisrCisrICAgICAgICByZXR1cm4gR0xPQlVTX1RSVUU7CisgICAgIH0KKyB9 CisgLyogZ2xvYnVzX2xfbW9kdWxlX2luY3JlbWVudCgpICovCitAQCAtOTk5LDE3ICs5OTksMTcg QEAgZ2xvYnVzX2xfbW9kdWxlX2luY3JlbWVudCgKKyBzdGF0aWMKKyBpbnQKKyBnbG9idXNfbF9t b2R1bGVfcmVmZXJlbmNlX2NvdW50KAorLSAgICBnbG9idXNfbW9kdWxlX2Rlc2NyaXB0b3JfdCAq CW1vZHVsZV9kZXNjcmlwdG9yKQorKyAgICBnbG9idXNfbW9kdWxlX2Rlc2NyaXB0b3JfdCAqICAg ICAgICBtb2R1bGVfZGVzY3JpcHRvcikKKyB7CistICAgIGdsb2J1c19sX21vZHVsZV9lbnRyeV90 ICoJCWVudHJ5OworLSAgICAKKysgICAgZ2xvYnVzX2xfbW9kdWxlX2VudHJ5X3QgKiAgICAgICAg ICAgZW50cnk7CisrCisgICAgIGVudHJ5ID0KKy0JZ2xvYnVzX2hhc2h0YWJsZV9sb29rdXAoCist CSAgICAmZ2xvYnVzX2xfbW9kdWxlX3RhYmxlLAorLQkgICAgKHZvaWQgKikgbW9kdWxlX2Rlc2Ny aXB0b3ItPmFjdGl2YXRpb25fZnVuYyk7CisrICAgICAgICBnbG9idXNfaGFzaHRhYmxlX2xvb2t1 cCgKKysgICAgICAgICAgICAmZ2xvYnVzX2xfbW9kdWxlX3RhYmxlLAorKyAgICAgICAgICAgICh2 b2lkICopIG1vZHVsZV9kZXNjcmlwdG9yLT5hY3RpdmF0aW9uX2Z1bmMpOworICAgICBpZiAoZW50 cnkgPT0gR0xPQlVTX05VTEwgfHwgZW50cnktPnJlZmVyZW5jZV9jb3VudCA8PSAwKQorICAgICB7 CistCXJldHVybiAwOworKyAgICAgICAgcmV0dXJuIDA7CisgICAgIH0KKyAgICAgZWxzZQorICAg ICB7CitAQCAtMTAyMiwzNCArMTAyMiwzNCBAQCBnbG9idXNfbF9tb2R1bGVfcmVmZXJlbmNlX2Nv dW50KAorICAqLworIHN0YXRpYyBnbG9idXNfbF9tb2R1bGVfZW50cnlfdCAqCisgZ2xvYnVzX2xf bW9kdWxlX2RlY3JlbWVudCgKKy0gICAgZ2xvYnVzX21vZHVsZV9kZXNjcmlwdG9yX3QgKgltb2R1 bGVfZGVzY3JpcHRvciwKKy0gICAgZ2xvYnVzX2xfbW9kdWxlX2tleV90CQlwYXJlbnRfa2V5KQor KyAgICBnbG9idXNfbW9kdWxlX2Rlc2NyaXB0b3JfdCAqICAgICAgICBtb2R1bGVfZGVzY3JpcHRv ciwKKysgICAgZ2xvYnVzX2xfbW9kdWxlX2tleV90ICAgICAgICAgICAgICAgcGFyZW50X2tleSkK KyB7CistICAgIGdsb2J1c19sX21vZHVsZV9lbnRyeV90ICoJCWVudHJ5OworLSAgICAKKysgICAg Z2xvYnVzX2xfbW9kdWxlX2VudHJ5X3QgKiAgICAgICAgICAgZW50cnk7CisrCisgICAgIGVudHJ5 ID0KKy0JZ2xvYnVzX2hhc2h0YWJsZV9sb29rdXAoCistCSAgICAmZ2xvYnVzX2xfbW9kdWxlX3Rh YmxlLAorLQkgICAgKHZvaWQgKikgbW9kdWxlX2Rlc2NyaXB0b3ItPmFjdGl2YXRpb25fZnVuYyk7 CisrICAgICAgICBnbG9idXNfaGFzaHRhYmxlX2xvb2t1cCgKKysgICAgICAgICAgICAmZ2xvYnVz X2xfbW9kdWxlX3RhYmxlLAorKyAgICAgICAgICAgICh2b2lkICopIG1vZHVsZV9kZXNjcmlwdG9y LT5hY3RpdmF0aW9uX2Z1bmMpOworICAgICBpZiAoZW50cnkgPT0gR0xPQlVTX05VTEwgfHwgZW50 cnktPnJlZmVyZW5jZV9jb3VudCA8PSAwKQorICAgICB7CistCXJldHVybiBOVUxMOworKyAgICAg ICAgcmV0dXJuIE5VTEw7CisgICAgIH0KKyAKKyAgICAgZW50cnktPnJlZmVyZW5jZV9jb3VudC0t OworLSAgICAKKysKKyAgICAgaWYgKHBhcmVudF9rZXkgIT0gR0xPQlVTX05VTEwpCisgICAgIHsK Ky0JZ2xvYnVzX2xpc3RfdCAqCQkJY2xpZW50X2VudHJ5OworKyAgICAgICAgZ2xvYnVzX2xpc3Rf dCAqICAgICAgICAgICAgICAgICBjbGllbnRfZW50cnk7CisgCistCQorLQljbGllbnRfZW50cnkg PSBnbG9idXNfbGlzdF9zZWFyY2goZW50cnktPmNsaWVudHMsCistCQkJCQkgICh2b2lkICopIHBh cmVudF9rZXkpOworLQlpZihjbGllbnRfZW50cnkgIT0gR0xPQlVTX05VTEwpCisrCisrICAgICAg ICBjbGllbnRfZW50cnkgPSBnbG9idXNfbGlzdF9zZWFyY2goZW50cnktPmNsaWVudHMsCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgKikgcGFyZW50X2tl eSk7CisrICAgICAgICBpZihjbGllbnRfZW50cnkgIT0gR0xPQlVTX05VTEwpCisgICAgICAgICB7 CistCSAgICBnbG9idXNfbGlzdF9yZW1vdmUoJmVudHJ5LT5jbGllbnRzLCBjbGllbnRfZW50cnkp OworLQl9CistCS8qIGVsc2UgbW9kdWxlIHdhcyBhY3RpdmF0ZWQgb3V0c2lkZSB0aGlzIHBhcmVu dCAqLworKyAgICAgICAgICAgIGdsb2J1c19saXN0X3JlbW92ZSgmZW50cnktPmNsaWVudHMsIGNs aWVudF9lbnRyeSk7CisrICAgICAgICB9CisrICAgICAgICAvKiBlbHNlIG1vZHVsZSB3YXMgYWN0 aXZhdGVkIG91dHNpZGUgdGhpcyBwYXJlbnQgKi8KKyAgICAgfQorIAorICAgICByZXR1cm4gZW50 cnk7CitAQCAtMTA1OSw1MiArMTA1OSw1MiBAQCBnbG9idXNfbF9tb2R1bGVfZGVjcmVtZW50KAor IAorIHZvaWQKKyBnbG9idXNfaV9tb2R1bGVfZHVtcCgKKy0gICAgRklMRSAqCQkJCW91dF9mKQor KyAgICBGSUxFICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRfZikKKyB7CistICAg IGdsb2J1c19saXN0X3QgKgkJCW1vZHVsZV9saXN0OworKyAgICBnbG9idXNfbGlzdF90ICogICAg ICAgICAgICAgICAgICAgICBtb2R1bGVfbGlzdDsKKyAKKyAgICAgZ2xvYnVzX2xpYmNfZnByaW50 ZihvdXRfZiwgIj09PT09PT09PT1cbk1vZHVsZSBMaXN0XG4tLS0tLS0tLS0tXG4iKTsKKy0gICAg CisrCisgICAgIG1vZHVsZV9saXN0ID0gZ2xvYnVzX2xfbW9kdWxlX2xpc3Q7CisgICAgIHdoaWxl KCFnbG9idXNfbGlzdF9lbXB0eShtb2R1bGVfbGlzdCkpCisgICAgIHsKKy0JZ2xvYnVzX2xpc3Rf dCAqCQkJY2xpZW50X2xpc3Q7CistCWdsb2J1c19sX21vZHVsZV9lbnRyeV90ICoJbW9kdWxlX2Vu dHJ5OworLQorLQltb2R1bGVfZW50cnkgPSBnbG9idXNfbGlzdF9maXJzdChtb2R1bGVfbGlzdCk7 CistCW1vZHVsZV9saXN0ID0gZ2xvYnVzX2xpc3RfcmVzdChtb2R1bGVfbGlzdCk7CistCistCWds b2J1c19saWJjX2ZwcmludGYob3V0X2YsICIlczsgY250PSVkIiwKKy0JCW1vZHVsZV9lbnRyeS0+ ZGVzY3JpcHRvci0+bW9kdWxlX25hbWUsCistCQltb2R1bGVfZW50cnktPnJlZmVyZW5jZV9jb3Vu dCk7CistCistCWNsaWVudF9saXN0ID0gbW9kdWxlX2VudHJ5LT5jbGllbnRzOworLQorLQlpZiAo IWdsb2J1c19saXN0X2VtcHR5KGNsaWVudF9saXN0KSkKKy0JeworLQkgICAgdm9pZCAqCQkJY2xp ZW50X2VudHJ5OworLQkgICAgZ2xvYnVzX2xfbW9kdWxlX2VudHJ5X3QgKgljbGllbnRfbW9kdWxl X2VudHJ5OworLQkgICAgCistCSAgICBjbGllbnRfZW50cnkgPSBnbG9idXNfbGlzdF9maXJzdChj bGllbnRfbGlzdCk7CistCSAgICBjbGllbnRfbGlzdCA9IGdsb2J1c19saXN0X3Jlc3QoY2xpZW50 X2xpc3QpOworLQkgICAgY2xpZW50X21vZHVsZV9lbnRyeSA9CistCQlnbG9idXNfaGFzaHRhYmxl X2xvb2t1cCgmZ2xvYnVzX2xfbW9kdWxlX3RhYmxlLCBjbGllbnRfZW50cnkpOworLQkgICAgZ2xv YnVzX2xpYmNfZnByaW50ZihvdXRfZiwgIjsgY2xpZW50cz0lcyIsCistCQkgICAgY2xpZW50X21v ZHVsZV9lbnRyeS0+ZGVzY3JpcHRvci0+bW9kdWxlX25hbWUpOworLQkgICAgCistCSAgICB3aGls ZSghZ2xvYnVzX2xpc3RfZW1wdHkoY2xpZW50X2xpc3QpKQorLQkgICAgeworLQkJY2xpZW50X2Vu dHJ5ID0gZ2xvYnVzX2xpc3RfZmlyc3QoY2xpZW50X2xpc3QpOworLQkJY2xpZW50X2xpc3QgPSBn bG9idXNfbGlzdF9yZXN0KGNsaWVudF9saXN0KTsKKy0JCWNsaWVudF9tb2R1bGVfZW50cnkgPQor LQkJICAgIGdsb2J1c19oYXNodGFibGVfbG9va3VwKCZnbG9idXNfbF9tb2R1bGVfdGFibGUsCist CQkJCQkgICAgY2xpZW50X2VudHJ5KTsKKy0JCWdsb2J1c19saWJjX2ZwcmludGYob3V0X2YsICIs JXMiLAorLQkJCWNsaWVudF9tb2R1bGVfZW50cnktPmRlc2NyaXB0b3ItPm1vZHVsZV9uYW1lKTsK Ky0JICAgIH0KKy0JfQorLQorLQlnbG9idXNfbGliY19mcHJpbnRmKG91dF9mLCAiXG4iKTsKKysg ICAgICAgIGdsb2J1c19saXN0X3QgKiAgICAgICAgICAgICAgICAgY2xpZW50X2xpc3Q7CisrICAg ICAgICBnbG9idXNfbF9tb2R1bGVfZW50cnlfdCAqICAgICAgIG1vZHVsZV9lbnRyeTsKKysKKysg ICAgICAgIG1vZHVsZV9lbnRyeSA9IGdsb2J1c19saXN0X2ZpcnN0KG1vZHVsZV9saXN0KTsKKysg ICAgICAgIG1vZHVsZV9saXN0ID0gZ2xvYnVzX2xpc3RfcmVzdChtb2R1bGVfbGlzdCk7CisrCisr ICAgICAgICBnbG9idXNfbGliY19mcHJpbnRmKG91dF9mLCAiJXM7IGNudD0lZCIsCisrICAgICAg ICAgICAgICAgIG1vZHVsZV9lbnRyeS0+ZGVzY3JpcHRvci0+bW9kdWxlX25hbWUsCisrICAgICAg ICAgICAgICAgIG1vZHVsZV9lbnRyeS0+cmVmZXJlbmNlX2NvdW50KTsKKysKKysgICAgICAgIGNs aWVudF9saXN0ID0gbW9kdWxlX2VudHJ5LT5jbGllbnRzOworKworKyAgICAgICAgaWYgKCFnbG9i dXNfbGlzdF9lbXB0eShjbGllbnRfbGlzdCkpCisrICAgICAgICB7CisrICAgICAgICAgICAgdm9p ZCAqICAgICAgICAgICAgICAgICAgICAgIGNsaWVudF9lbnRyeTsKKysgICAgICAgICAgICBnbG9i dXNfbF9tb2R1bGVfZW50cnlfdCAqICAgY2xpZW50X21vZHVsZV9lbnRyeTsKKysKKysgICAgICAg ICAgICBjbGllbnRfZW50cnkgPSBnbG9idXNfbGlzdF9maXJzdChjbGllbnRfbGlzdCk7CisrICAg ICAgICAgICAgY2xpZW50X2xpc3QgPSBnbG9idXNfbGlzdF9yZXN0KGNsaWVudF9saXN0KTsKKysg ICAgICAgICAgICBjbGllbnRfbW9kdWxlX2VudHJ5ID0KKysgICAgICAgICAgICAgICAgZ2xvYnVz X2hhc2h0YWJsZV9sb29rdXAoJmdsb2J1c19sX21vZHVsZV90YWJsZSwgY2xpZW50X2VudHJ5KTsK KysgICAgICAgICAgICBnbG9idXNfbGliY19mcHJpbnRmKG91dF9mLCAiOyBjbGllbnRzPSVzIiwK KysgICAgICAgICAgICAgICAgICAgIGNsaWVudF9tb2R1bGVfZW50cnktPmRlc2NyaXB0b3ItPm1v ZHVsZV9uYW1lKTsKKysKKysgICAgICAgICAgICB3aGlsZSghZ2xvYnVzX2xpc3RfZW1wdHkoY2xp ZW50X2xpc3QpKQorKyAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgY2xpZW50X2VudHJ5 ID0gZ2xvYnVzX2xpc3RfZmlyc3QoY2xpZW50X2xpc3QpOworKyAgICAgICAgICAgICAgICBjbGll bnRfbGlzdCA9IGdsb2J1c19saXN0X3Jlc3QoY2xpZW50X2xpc3QpOworKyAgICAgICAgICAgICAg ICBjbGllbnRfbW9kdWxlX2VudHJ5ID0KKysgICAgICAgICAgICAgICAgICAgIGdsb2J1c19oYXNo dGFibGVfbG9va3VwKCZnbG9idXNfbF9tb2R1bGVfdGFibGUsCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRfZW50cnkpOworKyAgICAgICAgICAgICAg ICBnbG9idXNfbGliY19mcHJpbnRmKG91dF9mLCAiLCVzIiwKKysgICAgICAgICAgICAgICAgICAg ICAgICBjbGllbnRfbW9kdWxlX2VudHJ5LT5kZXNjcmlwdG9yLT5tb2R1bGVfbmFtZSk7CisrICAg ICAgICAgICAgfQorKyAgICAgICAgfQorKworKyAgICAgICAgZ2xvYnVzX2xpYmNfZnByaW50Zihv dXRfZiwgIlxuIik7CisgICAgIH0KKyAKKyAgICAgZ2xvYnVzX2xpYmNfZnByaW50ZihvdXRfZiwg Ij09PT09PT09PT1cbiIpOworQEAgLTExMTIsNyArMTExMiw3IEBAIGdsb2J1c19pX21vZHVsZV9k dW1wKAorIAorIAorIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0JCSAgICAgUmVjdXJzaXZlIG11 dGV4IGZ1bmN0aW9uIGRlZmluaXRpb25zCisrICAgICAgICAgICAgICAgICAgICAgUmVjdXJzaXZl IG11dGV4IGZ1bmN0aW9uIGRlZmluaXRpb25zCisgKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworIAor IC8qCitAQCAtMTEyMCw3ICsxMTIwLDcgQEAgZ2xvYnVzX2lfbW9kdWxlX2R1bXAoCisgICovCisg c3RhdGljIHZvaWQKKyBnbG9idXNfbF9tb2R1bGVfbXV0ZXhfaW5pdCgKKy0JZ2xvYnVzX2xfbW9k dWxlX211dGV4X3QgKgkJbXV0ZXgpCisrICAgICAgICBnbG9idXNfbF9tb2R1bGVfbXV0ZXhfdCAq ICAgICAgICAgICAgICAgbXV0ZXgpCisgeworICAgICBnbG9idXNfbXV0ZXhfaW5pdCgmbXV0ZXgt Pm11dGV4LCAoZ2xvYnVzX211dGV4YXR0cl90ICopIEdMT0JVU19OVUxMKTsKKyAgICAgZ2xvYnVz X2NvbmRfaW5pdCgmbXV0ZXgtPmNvbmQsIChnbG9idXNfY29uZGF0dHJfdCAqKSBHTE9CVVNfTlVM TCk7CitAQCAtMTEzNCwyMCArMTEzNCwyMCBAQCBnbG9idXNfbF9tb2R1bGVfbXV0ZXhfaW5pdCgK KyAgKi8KKyBzdGF0aWMgdm9pZAorIGdsb2J1c19sX21vZHVsZV9tdXRleF9sb2NrKAorLQlnbG9i dXNfbF9tb2R1bGVfbXV0ZXhfdCAqCQltdXRleCkKKysgICAgICAgIGdsb2J1c19sX21vZHVsZV9t dXRleF90ICogICAgICAgICAgICAgICBtdXRleCkKKyB7CisgICAgIGdsb2J1c19tdXRleF9sb2Nr KCZtdXRleC0+bXV0ZXgpOworICAgICB7CistCWdsb2J1c19hc3NlcnQobXV0ZXgtPmxldmVsID49 IDApOworLQl3aGlsZSAobXV0ZXgtPmxldmVsID4gMAorLQkJICAgJiYgIWdsb2J1c190aHJlYWRf ZXF1YWwoIG11dGV4LT50aHJlYWRfaWQsIGdsb2J1c190aHJlYWRfc2VsZigpKSApCistCXsKKy0J ICAgIGdsb2J1c19jb25kX3dhaXQoJm11dGV4LT5jb25kLCAmbXV0ZXgtPm11dGV4KTsKKy0JfQor LQorLQltdXRleC0+bGV2ZWwrKzsKKy0JbXV0ZXgtPnRocmVhZF9pZCA9IGdsb2J1c190aHJlYWRf c2VsZigpOworLQkKKysgICAgICAgIGdsb2J1c19hc3NlcnQobXV0ZXgtPmxldmVsID49IDApOwor KyAgICAgICAgd2hpbGUgKG11dGV4LT5sZXZlbCA+IDAKKysgICAgICAgICAgICAgICAgICAgJiYg IWdsb2J1c190aHJlYWRfZXF1YWwoIG11dGV4LT50aHJlYWRfaWQsIGdsb2J1c190aHJlYWRfc2Vs ZigpKSApCisrICAgICAgICB7CisrICAgICAgICAgICAgZ2xvYnVzX2NvbmRfd2FpdCgmbXV0ZXgt PmNvbmQsICZtdXRleC0+bXV0ZXgpOworKyAgICAgICAgfQorKworKyAgICAgICAgbXV0ZXgtPmxl dmVsKys7CisrICAgICAgICBtdXRleC0+dGhyZWFkX2lkID0gZ2xvYnVzX3RocmVhZF9zZWxmKCk7 CisrCisgICAgIH0KKyAgICAgZ2xvYnVzX211dGV4X3VubG9jaygmbXV0ZXgtPm11dGV4KTsKKyB9 CitAQCAtMTE1OCwxOCArMTE1OCwxOCBAQCBnbG9idXNfbF9tb2R1bGVfbXV0ZXhfbG9jaygKKyAg Ki8KKyBzdGF0aWMgdm9pZAorIGdsb2J1c19sX21vZHVsZV9tdXRleF91bmxvY2soCistCWdsb2J1 c19sX21vZHVsZV9tdXRleF90ICoJCW11dGV4KQorKyAgICAgICAgZ2xvYnVzX2xfbW9kdWxlX211 dGV4X3QgKiAgICAgICAgICAgICAgIG11dGV4KQorIHsKKyAgICAgZ2xvYnVzX211dGV4X2xvY2so Jm11dGV4LT5tdXRleCk7CisgICAgIHsKKy0JZ2xvYnVzX2Fzc2VydChtdXRleC0+bGV2ZWwgPiAw KTsKKy0JZ2xvYnVzX2Fzc2VydCggZ2xvYnVzX3RocmVhZF9lcXVhbCggbXV0ZXgtPnRocmVhZF9p ZCwgZ2xvYnVzX3RocmVhZF9zZWxmKCkgKSApOworLQorLQltdXRleC0+bGV2ZWwtLTsKKy0JaWYg KG11dGV4LT5sZXZlbCA9PSAwKQorLQl7CistCSAgICBnbG9idXNfY29uZF9zaWduYWwoJm11dGV4 LT5jb25kKTsKKy0JfQorKyAgICAgICAgZ2xvYnVzX2Fzc2VydChtdXRleC0+bGV2ZWwgPiAwKTsK KysgICAgICAgIGdsb2J1c19hc3NlcnQoIGdsb2J1c190aHJlYWRfZXF1YWwoIG11dGV4LT50aHJl YWRfaWQsIGdsb2J1c190aHJlYWRfc2VsZigpICkgKTsKKysKKysgICAgICAgIG11dGV4LT5sZXZl bC0tOworKyAgICAgICAgaWYgKG11dGV4LT5sZXZlbCA9PSAwKQorKyAgICAgICAgeworKyAgICAg ICAgICAgIGdsb2J1c19jb25kX3NpZ25hbCgmbXV0ZXgtPmNvbmQpOworKyAgICAgICAgfQorICAg ICB9CisgICAgIGdsb2J1c19tdXRleF91bmxvY2soJm11dGV4LT5tdXRleCk7CisgfQorLS0gCisy LjU0LjAKKwoKZGlmZiAtLWdpdCBhLzAwMDItRml4LWNvbXBpbGVyLWFuZC1kb3h5Z2VuLXdhcm5p bmdzLnBhdGNoIGIvMDAwMi1GaXgtY29tcGlsZXItYW5kLWRveHlnZW4td2FybmluZ3MucGF0Y2gK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzM5NzZhMgotLS0gL2Rldi9udWxs CisrKyBiLzAwMDItRml4LWNvbXBpbGVyLWFuZC1kb3h5Z2VuLXdhcm5pbmdzLnBhdGNoCkBAIC0w LDAgKzEsMjg1IEBACitGcm9tIDRlZTA4ZDEzZTI5NjMzMDllMjA2M2RjNDVkZWRkMDY3MzM3ZDNi NzYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNYXR0aWFzIEVsbGVydCA8bWF0dGlh cy5lbGxlcnRAcGh5c2ljcy51dS5zZT4KK0RhdGU6IFdlZCwgMjAgTWF5IDIwMjYgMDA6MTU6Mzcg KzAyMDAKK1N1YmplY3Q6IFtQQVRDSCAyLzJdIEZpeCBjb21waWxlciBhbmQgZG94eWdlbiB3YXJu aW5ncworCistLS0KKyBjb21tb24vc291cmNlL2xpYnJhcnkvZ2xvYnVzX2FyZ3MuYyAgICAgICAg ICB8ICAzICstCisgY29tbW9uL3NvdXJjZS9saWJyYXJ5L2dsb2J1c19jYWxsYmFjay5oICAgICAg fCAgMyAtLQorIGNvbW1vbi9zb3VyY2UvbGlicmFyeS9nbG9idXNfZXJyb3JfZXJybm8uYyAgIHwg IDIgLQorIGNvbW1vbi9zb3VyY2UvbGlicmFyeS9nbG9idXNfZXJyb3JfZ2VuZXJpYy5jIHwgMTIg LS0tLS0tCisgY29tbW9uL3NvdXJjZS9saWJyYXJ5L2dsb2J1c19saWJjLmMgICAgICAgICAgfCAz OSArKysrKysrLS0tLS0tLS0tLS0tLQorIGNvbW1vbi9zb3VyY2UvbGlicmFyeS9nbG9idXNfbG9n Z2luZy5jICAgICAgIHwgIDMgKy0KKyBjb21tb24vc291cmNlL2xpYnJhcnkvZ2xvYnVzX21vZHVs ZS5jICAgICAgICB8ICA5IC0tLS0tCisgY29tbW9uL3NvdXJjZS90ZXN0L2Vycm9yX3Rlc3QuYyAg ICAgICAgICAgICAgfCAgNCArLQorIGNvbW1vbi9zb3VyY2UvdGVzdC9oYW5kbGVfdGFibGVfdGVz dC5jICAgICAgIHwgIDMgKy0KKyA5IGZpbGVzIGNoYW5nZWQsIDE4IGluc2VydGlvbnMoKyksIDYw IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY29tbW9uL3NvdXJjZS9saWJyYXJ5L2dsb2J1 c19hcmdzLmMgYi9jb21tb24vc291cmNlL2xpYnJhcnkvZ2xvYnVzX2FyZ3MuYworaW5kZXggZmFi OTMyZjNmLi5iOTFmMmU0NjggMTAwNjQ0CistLS0gYS9jb21tb24vc291cmNlL2xpYnJhcnkvZ2xv YnVzX2FyZ3MuYworKysrIGIvY29tbW9uL3NvdXJjZS9saWJyYXJ5L2dsb2J1c19hcmdzLmMKK0BA IC02NTUsMTQgKzY1NSwxMyBAQCBnbG9idXNfYXJnc19ieXRlc3RyX3RvX251bSgKKyAgICAgY2hh ciAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kID0gTlVMTDsKKyAgICAgZ2xvYnVz X29mZl90ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZSA9IDA7CisgICAgIGludCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN1bWVkOworLSAgICBpbnQgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICByYzsKKyAKKyAgICAgaWYoc3RyID09IE5VTEwgfHwgIShpc2Rp Z2l0KCpzdHIpIHx8ICpzdHIgPT0gJy0nKSkKKyAgICAgeworICAgICAgICAgcmV0dXJuIDE7Cisg ICAgIH0KKyAKKy0gICAgcmMgPSBnbG9idXNfbGliY19zY2FuX29mZl90KChjaGFyICopc3RyLCAm c2l6ZSwgJmNvbnN1bWVkKTsKKysgICAgZ2xvYnVzX2xpYmNfc2Nhbl9vZmZfdCgoY2hhciAqKXN0 ciwgJnNpemUsICZjb25zdW1lZCk7CisgICAgIGVuZCA9IChjaGFyICopc3RyICsgY29uc3VtZWQ7 CisgICAgIGlmKHNpemUgJiYgZW5kICYmICplbmQpCisgICAgIHsKK2RpZmYgLS1naXQgYS9jb21t b24vc291cmNlL2xpYnJhcnkvZ2xvYnVzX2NhbGxiYWNrLmggYi9jb21tb24vc291cmNlL2xpYnJh cnkvZ2xvYnVzX2NhbGxiYWNrLmgKK2luZGV4IDgxMDY2NWM0My4uZDM2YzRiZjMyIDEwMDY0NAor LS0tIGEvY29tbW9uL3NvdXJjZS9saWJyYXJ5L2dsb2J1c19jYWxsYmFjay5oCisrKysgYi9jb21t b24vc291cmNlL2xpYnJhcnkvZ2xvYnVzX2NhbGxiYWNrLmgKK0BAIC01OTQsOSArNTk0LDYgQEAg Z2xvYnVzX2NhbGxiYWNrX3NwYWNlX3BvbGwoCisgICogY2FzZSBpbiB3aGljaCBhIHVzZXIgbWF5 IHdpc2ggdG8gY2FsbCB0aGlzIGV4cGxpY2l0bHkgaXMgaWYgdGhlIGFwcGxpY2F0aW9uCisgICog aGFzIG5vIGFzcGlyYXRpb25zIG9mIGV2ZXIgYmVpbmcgYnVpbHQgdGhyZWFkZWQuCisgICoKKy0g KiBAcmV0dXJuCistICogICAgICAgIC0gdm9pZAorLSAqCisgICogQHNlZSBnbG9idXNfY2FsbGJh Y2tfc3BhY2VfcG9sbCgpCisgICovCisgdm9pZAorZGlmZiAtLWdpdCBhL2NvbW1vbi9zb3VyY2Uv bGlicmFyeS9nbG9idXNfZXJyb3JfZXJybm8uYyBiL2NvbW1vbi9zb3VyY2UvbGlicmFyeS9nbG9i dXNfZXJyb3JfZXJybm8uYworaW5kZXggNDcwMTdiY2VkLi42MmZmZjZiM2YgMTAwNjQ0CistLS0g YS9jb21tb24vc291cmNlL2xpYnJhcnkvZ2xvYnVzX2Vycm9yX2Vycm5vLmMKKysrKyBiL2NvbW1v bi9zb3VyY2UvbGlicmFyeS9nbG9idXNfZXJyb3JfZXJybm8uYworQEAgLTE1Nyw4ICsxNTcsNiBA QCBnbG9idXNfZXJyb3JfZXJybm9fZ2V0X2Vycm5vKAorICAqICAgICAgICBUaGUgZXJyb3Igb2Jq ZWN0IGZvciB3aGljaCB0byBzZXQgdGhlIGVycm5vCisgICogQHBhcmFtIHN5c3RlbV9lcnJubwor ICAqICAgICAgICBUaGUgc3lzdGVtIGVycm5vCistICogQHJldHVybgorLSAqICAgICAgICB2b2lk CisgICovCisgdm9pZAorIGdsb2J1c19lcnJvcl9lcnJub19zZXRfZXJybm8oCitkaWZmIC0tZ2l0 IGEvY29tbW9uL3NvdXJjZS9saWJyYXJ5L2dsb2J1c19lcnJvcl9nZW5lcmljLmMgYi9jb21tb24v c291cmNlL2xpYnJhcnkvZ2xvYnVzX2Vycm9yX2dlbmVyaWMuYworaW5kZXggYmM3ODg0MDNhLi4y MWRhYzc3ZDUgMTAwNjQ0CistLS0gYS9jb21tb24vc291cmNlL2xpYnJhcnkvZ2xvYnVzX2Vycm9y X2dlbmVyaWMuYworKysrIGIvY29tbW9uL3NvdXJjZS9saWJyYXJ5L2dsb2J1c19lcnJvcl9nZW5l cmljLmMKK0BAIC0zMTYsOCArMzE2LDYgQEAgZ2xvYnVzX2Vycm9yX2dldF9zb3VyY2UoCisgICog ICAgICAgIFRoZSBlcnJvciBvYmplY3QgZm9yIHdoaWNoIHRvIHNldCB0aGUgY2F1c2F0aXZlIGVy cm9yCisgICogQHBhcmFtIHNvdXJjZV9tb2R1bGUKKyAgKiAgICAgICAgVGhlIG9yaWdpbmF0aW5n IG1vZHVsZSBkZXNjcmlwdG9yCistICogQHJldHVybgorLSAqICAgICAgICB2b2lkCisgICovCisg dm9pZAorIGdsb2J1c19lcnJvcl9zZXRfc291cmNlKAorQEAgLTM2Myw4ICszNjEsNiBAQCBnbG9i dXNfZXJyb3JfZ2V0X2NhdXNlICgKKyAgKiAgICAgICAgVGhlIGVycm9yIG9iamVjdCBmb3Igd2hp Y2ggdG8gc2V0IHRoZSBjYXVzYXRpdmUgZXJyb3IuCisgICogQHBhcmFtIGNhdXNhbF9lcnJvcgor ICAqICAgICAgICBUaGUgY2F1c2F0aXZlIGVycm9yLgorLSAqIEByZXR1cm4KKy0gKiAgICAgICAg dm9pZAorICAqLworIHZvaWQKKyBnbG9idXNfZXJyb3Jfc2V0X2NhdXNlICgKK0BAIC00MjQsOCAr NDIwLDYgQEAgZ2xvYnVzX2Vycm9yX2dldF90eXBlKAorICAqICAgICAgICBUaGUgZXJyb3Igb2Jq ZWN0IGZvciB3aGljaCB0byBzZXQgdGhlIGVycm9yIHR5cGUKKyAgKiBAcGFyYW0gdHlwZQorICAq ICAgICAgICBUaGUgZXJyb3IgdHlwZQorLSAqIEByZXR1cm4KKy0gKiAgICAgICAgdm9pZAorICAq LworIHZvaWQKKyBnbG9idXNfZXJyb3Jfc2V0X3R5cGUoCitAQCAtNDg5LDggKzQ4Myw2IEBAIGds b2J1c19lcnJvcl9nZXRfc2hvcnRfZGVzYygKKyAgKiAgICAgICAgb2YgdGhlIGVycm9yLiBUbyBi ZSBwYXNzZWQgb24gdG8gdGhlIHVzZXIuCisgICogQHBhcmFtIC4uLgorICAqICAgICAgICBBcmd1 bWVudHMgZm9yIHRoZSBmb3JtYXQgc3RyaW5nLgorLSAqIEByZXR1cm4KKy0gKiAgICAgICAgdm9p ZAorICAqLworIHZvaWQKKyBnbG9idXNfZXJyb3Jfc2V0X3Nob3J0X2Rlc2MoCitAQCAtNTg1LDgg KzU3Nyw2IEBAIGdsb2J1c19lcnJvcl9nZXRfbG9uZ19kZXNjKAorICAqIEBwYXJhbSBsb25nX2Rl c2NfZm9ybWF0CisgICogICAgICAgIExvbmdlciBmb3JtYXQgc3RyaW5nIGdpdmluZyBhIG1vcmUg ZGV0YWlsZWQgZXhwbGFuYXRpb24gb2YKKyAgKiAgICAgICAgdGhlIGVycm9yLgorLSAqIEByZXR1 cm4KKy0gKiAgICAgICAgdm9pZAorICAqLworIHZvaWQKKyBnbG9idXNfZXJyb3Jfc2V0X2xvbmdf ZGVzYygKK0BAIC0xMTUwLDggKzExNDAsNiBAQCBlcnJvcl9vYmplY3Q6CisgICogICAgICAgIG92 ZXIgJ2NoYWluJydzIG1lbW9yeSBhZnRlciB0aGlzIGNhbGwuCisgICogQHBhcmFtIGZtdAorICAq ICAgICAgICBhIHByaW50ZiBzdHlsZSBmb3JtYXQgc3RyaW5nIGRlc2NyaWJpbmcgdGhpcyBjaGFp bgorLSAqIEByZXR1cm4KKy0gKiAgICAgICAgdm9pZAorICAqLworIHZvaWQKKyBnbG9idXNfZXJy b3JfbXV0bGlwbGVfYWRkX2NoYWluKAorZGlmZiAtLWdpdCBhL2NvbW1vbi9zb3VyY2UvbGlicmFy eS9nbG9idXNfbGliYy5jIGIvY29tbW9uL3NvdXJjZS9saWJyYXJ5L2dsb2J1c19saWJjLmMKK2lu ZGV4IGU5ZTgxODk2Ny4uOGQyY2NmZTI5IDEwMDY0NAorLS0tIGEvY29tbW9uL3NvdXJjZS9saWJy YXJ5L2dsb2J1c19saWJjLmMKKysrKyBiL2NvbW1vbi9zb3VyY2UvbGlicmFyeS9nbG9idXNfbGli Yy5jCitAQCAtNzQ3LDkgKzc0Nyw2IEBAIGdsb2J1c19saWJjX2dldGhvc3RieW5hbWVfcigKKyAg ICAgc3RydWN0IGhvc3RlbnRfZGF0YSAgICAgICAgICAgICAgICAgaHBfZGF0YTsKKyAgICAgaW50 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmM7CisgIyAgIGVuZGlmCistIyAgIGlm IGRlZmluZWQoR0xPQlVTX0hBVkVfR0VUSE9TVEJZTkFNRV9SXzYpCistICAgIGludCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHJjOworLSMgICBlbmRpZgorIAorICAgICBnbG9idXNf bGliY19sb2NrKCk7CisgCitAQCAtODI1LDEyICs4MjIsMTIgQEAgZ2xvYnVzX2xpYmNfZ2V0aG9z dGJ5bmFtZV9yKAorICAgICB9CisgIyAgIGVsaWYgZGVmaW5lZChHTE9CVVNfSEFWRV9HRVRIT1NU QllOQU1FX1JfNikKKyAgICAgeworLSAgICAgICAgcmMgPSBnZXRob3N0YnluYW1lX3IoaG9zdG5h bWUsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQsCistICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBidWZmZXIsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi dWZsZW4sCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaHAsCistICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBoX2Vycm5vcCk7CisrICAgICAgICBnZXRob3N0YnluYW1lX3IoaG9z dG5hbWUsCisrICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LAorKyAgICAgICAgICAgICAg ICAgICAgICAgIGJ1ZmZlciwKKysgICAgICAgICAgICAgICAgICAgICAgICBidWZsZW4sCisrICAg ICAgICAgICAgICAgICAgICAgICAgJmhwLAorKyAgICAgICAgICAgICAgICAgICAgICAgIGhfZXJy bm9wKTsKKyAgICAgfQorICMgICBlbHNlCisgICAgIHsKK0BAIC04OTQsMTQgKzg5MSw2IEBAIGds b2J1c19saWJjX2dldGhvc3RieWFkZHJfcihjaGFyICphZGRyLAorICAgICAgICAgaW50IHJjOwor ICMgICBlbmRpZgorIAorLSMgICBpZiBkZWZpbmVkKEdMT0JVU19IQVZFX0dFVEhPU1RCWUFERFJf Ul84KQorLSAgICAgICAgaW50IHJjOworLSMgICBlbmRpZgorLSMgICBpZiBkZWZpbmVkKEdMT0JV U19IQVZFX0dFVEhPU1RCWUFERFJfUl83KQorLSAgICAgICAgaW50IHJjOworLSMgICBlbmRpZgor LQorLQorICAgICBnbG9idXNfbGliY19sb2NrKCk7CisgCisgIyAgIGlmICFkZWZpbmVkKEhBVkVf R0VUSE9TVEJZQUREUl9SKQorQEAgLTk3NywxNCArOTY2LDE0IEBAIGdsb2J1c19saWJjX2dldGhv c3RieWFkZHJfcihjaGFyICphZGRyLAorICAgICB9CisgIyAgIGVsaWYgZGVmaW5lZChHTE9CVVNf SEFWRV9HRVRIT1NUQllBRERSX1JfOCkKKyAgICAgeworLSAgICAgICAgcmMgPSBnZXRob3N0Ynlh ZGRyX3IoYWRkciwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aCwKKy0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUsCistICAgICAgICAgICAgICAgICAgICAgICAg ICAgICByZXN1bHQsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXIsCistICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBidWZsZW4sCistICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAmaHAsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoX2Vycm5vcCk7Cisr ICAgICAgICBnZXRob3N0YnlhZGRyX3IoYWRkciwKKysgICAgICAgICAgICAgICAgICAgICAgICBs ZW5ndGgsCisrICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSwKKysgICAgICAgICAgICAgICAg ICAgICAgICByZXN1bHQsCisrICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyLAorKyAgICAg ICAgICAgICAgICAgICAgICAgIGJ1ZmxlbiwKKysgICAgICAgICAgICAgICAgICAgICAgICAmaHAs CisrICAgICAgICAgICAgICAgICAgICAgICAgaF9lcnJub3ApOworICAgICB9CisgIyAgIGVsc2UK KyAgICAgeworZGlmZiAtLWdpdCBhL2NvbW1vbi9zb3VyY2UvbGlicmFyeS9nbG9idXNfbG9nZ2lu Zy5jIGIvY29tbW9uL3NvdXJjZS9saWJyYXJ5L2dsb2J1c19sb2dnaW5nLmMKK2luZGV4IDFlMDIz Mzg5Yy4uOTIzOWQ4Y2JiIDEwMDY0NAorLS0tIGEvY29tbW9uL3NvdXJjZS9saWJyYXJ5L2dsb2J1 c19sb2dnaW5nLmMKKysrKyBiL2NvbW1vbi9zb3VyY2UvbGlicmFyeS9nbG9idXNfbG9nZ2luZy5j CitAQCAtNDExLDEzICs0MTEsMTIgQEAgZ2xvYnVzX2xvZ2dpbmdfc3RkaW9faGVhZGVyX2Z1bmMo CisgICAgIGdsb2J1c19zaXplX3QgKiAgICAgICAgICAgICAgICAgICAgIGxlbikKKyB7CisgICAg IGNoYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0clsyNTZdOworLSAgICBjaGFy ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXA7CisgICAgIHRpbWVfdCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHRtOworICAgICBnbG9idXNfc2l6ZV90ICAgICAgICAgICAg ICAgICAgICAgICBzdHJfbGVuOworICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBuYnl0ZXM7CisgCisgICAgIHRtID0gdGltZShOVUxMKTsKKy0gICAgdG1wID0gZ2xvYnVz X2xpYmNfY3RpbWVfcigmdG0sIHN0ciwgc2l6ZW9mKHN0cikpOworKyAgICBnbG9idXNfbGliY19j dGltZV9yKCZ0bSwgc3RyLCBzaXplb2Yoc3RyKSk7CisgICAgIHN0cl9sZW4gPSBzdHJsZW4oc3Ry KTsKKyAgICAgaWYoc3RyW3N0cl9sZW4gLSAxXSA9PSAnXG4nKQorICAgICB7CitkaWZmIC0tZ2l0 IGEvY29tbW9uL3NvdXJjZS9saWJyYXJ5L2dsb2J1c19tb2R1bGUuYyBiL2NvbW1vbi9zb3VyY2Uv bGlicmFyeS9nbG9idXNfbW9kdWxlLmMKK2luZGV4IGU5ZTliOGNhYy4uYmViZDA0NTQ4IDEwMDY0 NAorLS0tIGEvY29tbW9uL3NvdXJjZS9saWJyYXJ5L2dsb2J1c19tb2R1bGUuYworKysrIGIvY29t bW9uL3NvdXJjZS9saWJyYXJ5L2dsb2J1c19tb2R1bGUuYworQEAgLTczMiw5ICs3MzIsNiBAQCBn bG9idXNfbW9kdWxlX2dldF92ZXJzaW9uKAorICAqICAgICAgICBJZiBHTE9CVVNfVFJVRSwgdGhl biBhbGwgYXZhaWxhYmxlIHZlcnNpb24gaW5mbyBpcyBwcmludGVkCisgICogICAgICAgIChleDog Z2xvYnVzX21vZHVsZTogMS4xICgxMDEzNzA4NjE4LTUpKQorICAqICAgICAgICBlbHNlLCBvbmx5 IHRoZSBtYWpvci5taW5vciBpcyBwcmludGVkIChleDogZ2xvYnVzX21vZHVsZTogMS4xKQorLSAq CistICogQHJldHVybgorLSAqICAgICAgICAtIHZvaWQKKyAgKi8KKyAKKyB2b2lkCitAQCAtNzYz LDkgKzc2MCw2IEBAIGdsb2J1c19tb2R1bGVfcHJpbnRfdmVyc2lvbigKKyAgKiAgICAgICAgSWYg R0xPQlVTX1RSVUUsIHRoZW4gYWxsIGF2YWlsYWJsZSB2ZXJzaW9uIGluZm8gaXMgcHJpbnRlZAor ICAqICAgICAgICAoZXg6IGdsb2J1c19tb2R1bGU6IDEuMSAoMTAxMzcwODYxOC01KSkKKyAgKiAg ICAgICAgZWxzZSwgb25seSB0aGUgbWFqb3IubWlub3IgaXMgcHJpbnRlZCAoZXg6IGdsb2J1c19t b2R1bGU6IDEuMSkKKy0gKgorLSAqIEByZXR1cm4KKy0gKiAgICAgICAgLSB2b2lkCisgICovCisg Cisgdm9pZAorQEAgLTgzNSw5ICs4MjksNiBAQCBnbG9idXNfbW9kdWxlX3ByaW50X2FjdGl2YXRl ZF92ZXJzaW9ucygKKyAgKiAgICAgICAgSWYgR0xPQlVTX1RSVUUsIHRoZW4gYWxsIGF2YWlsYWJs ZSB2ZXJzaW9uIGluZm8gaXMgcHJpbnRlZAorICAqICAgICAgICAoZXg6IGdsb2J1c19tb2R1bGU6 IDEuMSAoMTAxMzcwODYxOC01KSkKKyAgKiAgICAgICAgZWxzZSwgb25seSB0aGUgbWFqb3IubWlu b3IgaXMgcHJpbnRlZCAoZXg6IGdsb2J1c19tb2R1bGU6IDEuMSkKKy0gKgorLSAqIEByZXR1cm4K Ky0gKiAgICAgICAgLSB2b2lkCisgICovCisgCisgdm9pZAorZGlmZiAtLWdpdCBhL2NvbW1vbi9z b3VyY2UvdGVzdC9lcnJvcl90ZXN0LmMgYi9jb21tb24vc291cmNlL3Rlc3QvZXJyb3JfdGVzdC5j CitpbmRleCA5OWExODRlNmUuLjk1MWI5ZjFjMyAxMDA2NDQKKy0tLSBhL2NvbW1vbi9zb3VyY2Uv dGVzdC9lcnJvcl90ZXN0LmMKKysrKyBiL2NvbW1vbi9zb3VyY2UvdGVzdC9lcnJvcl90ZXN0LmMK K0BAIC0xMDIsOSArMTAyLDcgQEAgbWFpbigpCisgCisgICAgIGZvciAoaSA9IDA7IGkgPD0gTUFY X0VSUk9SX05VTTsgaSsrKQorICAgICB7CistICAgICAgICBnbG9idXNfcmVzdWx0X3QgICAgICAg ICAgICAgICAgICAgICByZXN1bHQ7CistCistICAgICAgICByZXN1bHQgPSB0aHJvd19lcnJvcihp KTsKKysgICAgICAgIHRocm93X2Vycm9yKGkpOworICAgICB9CisgCisgICAgIGZvciAoaSA9IDE7 IGkgPD0gTUFYX0VSUk9SX05VTTsgaSsrKQorZGlmZiAtLWdpdCBhL2NvbW1vbi9zb3VyY2UvdGVz dC9oYW5kbGVfdGFibGVfdGVzdC5jIGIvY29tbW9uL3NvdXJjZS90ZXN0L2hhbmRsZV90YWJsZV90 ZXN0LmMKK2luZGV4IGNhMzNmZWRmMy4uMzNmMDMxNDEyIDEwMDY0NAorLS0tIGEvY29tbW9uL3Nv dXJjZS90ZXN0L2hhbmRsZV90YWJsZV90ZXN0LmMKKysrKyBiL2NvbW1vbi9zb3VyY2UvdGVzdC9o YW5kbGVfdGFibGVfdGVzdC5jCitAQCAtMzUsNyArMzUsNiBAQCBkZXN0cnVjdG9yKHZvaWQgKmRh dHVtKQorIGludAorIG1haW4odm9pZCkKKyB7CistICAgIGdsb2J1c19ib29sX3QgICAgICAgICAg ICAgICAgICAgICAgIHJjOworICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpOworICAg ICBnbG9idXNfaGFuZGxlX3RhYmxlX3QgICAgICAgICAgICAgICBoYW5kbGVfdGFibGU7CitAQCAt MTA2LDcgKzEwNSw3IEBAIG1haW4odm9pZCkKKyAgICAgICAgICAgICAgICAgKGkgPT0gb2JqZWN0 M19jb3VudC0xKSwgImRlY3JlbWVudF9vYmplY3RfM18lZCIsIGkpOworICAgICB9CisgICAgIG9i amVjdDNfY291bnQgPSAwOworLSAgICByYyA9IGdsb2J1c19oYW5kbGVfdGFibGVfZGVjcmVtZW50 X3JlZmVyZW5jZSgmaGFuZGxlX3RhYmxlLCBvYmplY3QyX2hhbmRsZSk7CisrICAgIGdsb2J1c19o YW5kbGVfdGFibGVfZGVjcmVtZW50X3JlZmVyZW5jZSgmaGFuZGxlX3RhYmxlLCBvYmplY3QyX2hh bmRsZSk7CisgICAgIG9iamVjdDJfY291bnQtLTsKKyAKKyAgICAgLyogcGVyZm9ybSBhZGRpdGlv bmFsIGxvb2t1cHMgKi8KKy0tIAorMi41NC4wCisKCmRpZmYgLS1naXQgYS9nbG9idXMtY29tbW9u LnNwZWMgYi9nbG9idXMtY29tbW9uLnNwZWMKaW5kZXggZWYxMjc5YS4uMmQ5ZDQ2MiAxMDA2NDQK LS0tIGEvZ2xvYnVzLWNvbW1vbi5zcGVjCisrKyBiL2dsb2J1cy1jb21tb24uc3BlYwpAQCAtMSwx MyArMSwxNSBAQAogTmFtZToJCWdsb2J1cy1jb21tb24KICVnbG9iYWwgX25hbWUgJSh0ciAtIF8g PDw8ICV7bmFtZX0pCiBWZXJzaW9uOgkxOC4xNQotUmVsZWFzZToJMiV7P2Rpc3R9CitSZWxlYXNl OgkzJXs/ZGlzdH0KIFN1bW1hcnk6CUdyaWQgQ29tbXVuaXR5IFRvb2xraXQgLSBDb21tb24gTGli cmFyeQogCiBMaWNlbnNlOglBcGFjaGUtMi4wCiBVUkw6CQlodHRwczovL2dpdGh1Yi5jb20vZ3Jp ZGNmL2djdC8KIFNvdXJjZToJCWh0dHBzOi8vcmVwby5ncmlkY2Yub3JnL2djdDYvc291cmNlcy8l e19uYW1lfS0le3ZlcnNpb259LnRhci5negogU291cmNlODoJUkVBRE1FCitQYXRjaDA6CQkwMDAx LVVudGFiaWZ5LWFuZC1yZW1vdmUtdHJhaWxpbmctd2hpdGUtc3BhY2UucGF0Y2gKK1BhdGNoMToJ CTAwMDItRml4LWNvbXBpbGVyLWFuZC1kb3h5Z2VuLXdhcm5pbmdzLnBhdGNoCiAKIEJ1aWxkUmVx dWlyZXM6CW1ha2UKIEJ1aWxkUmVxdWlyZXM6CWdjYwpAQCAtNzYsNiArNzgsOCBAQCBDb21tb24g TGlicmFyeSBEb2N1bWVudGF0aW9uIEZpbGVzCiAKICVwcmVwCiAlc2V0dXAgLXEgLW4gJXtfbmFt ZX0tJXt2ZXJzaW9ufQorJXBhdGNoIC1QMCAtcDMKKyVwYXRjaCAtUDEgLXAzCiAKICVidWlsZAog IyBSZWR1Y2Ugb3ZlcmxpbmtpbmcKQEAgLTE2Myw2ICsxNjcsOSBAQCBybSAle2J1aWxkcm9vdH0l e19kYXRhZGlyfS9nbG9idXMtdXNlci1lbnYuc2gKICVsaWNlbnNlIEdMT0JVU19MSUNFTlNFCiAK ICVjaGFuZ2Vsb2cKKyogU2F0IEp1biAxMyAyMDI2IE1hdHRpYXMgRWxsZXJ0IDxtYXR0aWFzLmVs bGVydEBwaHlzaWNzLnV1LnNlPiAtIDE4LjE1LTMKKy0gRml4IGNvbXBpbGVyIGFuZCBkb3h5Z2Vu IHdhcm5pbmdzCisKICogRnJpIEphbiAxNiAyMDI2IEZlZG9yYSBSZWxlYXNlIEVuZ2luZWVyaW5n IDxyZWxlbmdAZmVkb3JhcHJvamVjdC5vcmc+IC0gMTguMTUtMgogLSBSZWJ1aWx0IGZvciBodHRw czovL2ZlZG9yYXByb2plY3Qub3JnL3dpa2kvRmVkb3JhXzQ0X01hc3NfUmVidWlsZAogCg==