[mono/mono] [2 commits] 10ee80de: [sgen] Improve describe_ptr().
| Newsgroups | gmane.comp.gnome.mono.patches |
|---|---|
| Message-ID | <000001428fbbbc2c-daccc413-48fc-4f0a-80f0-c60b9ecd57f9-000000@email.amazonses.com> |
DQogICBCcmFuY2g6IHJlZnMvaGVhZHMvbWFzdGVyDQogICAgIEhvbWU6IGh0dHBzOi8vZ2l0aHVi LmNvbS9tb25vL21vbm8NCiAgQ29tcGFyZTogaHR0cHM6Ly9naXRodWIuY29tL21vbm8vbW9uby9j b21wYXJlLzRjMDM3NmQwMzdlMy4uLjhhNGUxY2E3NGU2NQ0KDQogICBDb21taXQ6IDEwZWU4MGRl NjgwZTEyNDNhOWZmYjk5M2U5MDA4NTZlNDBlMWMyOGMNCiAgIEF1dGhvcjogTWFyayBQcm9ic3Qg PG1hcmsucHJvYnN0QGdtYWlsLmNvbT4gKHNjaGFuaSkNCiAgICAgRGF0ZTogMjAxMy0xMS0yNSAx NDoyMjo0NSBHTVQNCiAgICAgIFVSTDogaHR0cHM6Ly9naXRodWIuY29tL21vbm8vbW9uby9jb21t aXQvMTBlZTgwZGU2ODBlMTI0M2E5ZmZiOTkzZTkwMDg1NmU0MGUxYzI4Yw0KDQpbc2dlbl0gSW1w cm92ZSBkZXNjcmliZV9wdHIoKS4KCkRvbuKAmXQgdHJ5IHRvIHByaW50IHRoZSB2dGFibGUgaWYg dGhlIG1ham9yIGFsbG9jYXRvciBrbm93cyBpdOKAmXMgaW52YWxpZC4KUHJpbnQgYnJpZGdlIGlu Zm9ybWF0aW9uLg0KDQpDaGFuZ2VkIHBhdGhzOgogIE0gbW9uby9tZXRhZGF0YS9zZ2VuLWJyaWRn ZS5jCiAgTSBtb25vL21ldGFkYXRhL3NnZW4tZGVidWcuYwogIE0gbW9uby9tZXRhZGF0YS9zZ2Vu LWdjLmgKICBNIG1vbm8vbWV0YWRhdGEvc2dlbi1tYXJrc3dlZXAuYwoNCk1vZGlmaWVkOiBtb25v L21ldGFkYXRhL3NnZW4tYnJpZGdlLmMNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCkBAIC04MTYsNiArODE2LDI4IEBA CiAJYnJpZGdlX3Byb2Nlc3NpbmdfaW5fcHJvZ3Jlc3MgPSBGQUxTRTsKIH0KIAordm9pZAorc2dl bl9icmlkZ2VfZGVzY3JpYmVfcG9pbnRlciAoTW9ub09iamVjdCAqb2JqKQoreworCUhhc2hFbnRy eSAqZW50cnk7CisJaW50IGk7CisKKwlmb3IgKGkgPSAwOyBpIDwgcmVnaXN0ZXJlZF9icmlkZ2Vz LnNpemU7ICsraSkgeworCQlpZiAob2JqID09IERZTl9BUlJBWV9QVFJfUkVGICgmcmVnaXN0ZXJl ZF9icmlkZ2VzLCBpKSkgeworCQkJcHJpbnRmICgiUG9pbnRlciBpcyBhIHJlZ2lzdGVyZWQgYnJp ZGdlIG9iamVjdC5cbiIpOworCQkJYnJlYWs7CisJCX0KKwl9CisKKwllbnRyeSA9IHNnZW5faGFz aF90YWJsZV9sb29rdXAgKCZoYXNoX3RhYmxlLCBvYmopOworCWlmICghZW50cnkpCisJCXJldHVy bjsKKworCXByaW50ZiAoIkJyaWRnZSBoYXNoIHRhYmxlIGVudHJ5ICVwOlxuIiwgZW50cnkpOwor CXByaW50ZiAoIiAgaXMgYnJpZGdlOiAlZFxuIiwgKGludCllbnRyeS0+aXNfYnJpZGdlKTsKKwlw cmludGYgKCIgIGlzIHZpc2l0ZWQ6ICVkXG4iLCAoaW50KWVudHJ5LT5pc192aXNpdGVkKTsKK30K Kwogc3RhdGljIGNvbnN0IGNoYXIgKmJyaWRnZV9jbGFzczsKIAogc3RhdGljIGdib29sZWFuDQoN Ck1vZGlmaWVkOiBtb25vL21ldGFkYXRhL3NnZW4tZGVidWcuYw0KPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KQEAgLTc3 LDYgKzc3LDcgQEAKIAkJaWYgKCFzdGFydCkKIAkJCXJldHVybjsKIAkJcHRyID0gc3RhcnQ7CisJ CXZ0YWJsZSA9IChNb25vVlRhYmxlKilMT0FEX1ZUQUJMRSAocHRyKTsKIAl9IGVsc2UgewogCQlp ZiAoc2dlbl9wdHJfaXNfaW5fbG9zIChwdHIsICZzdGFydCkpIHsKIAkJCWlmIChwdHIgPT0gc3Rh cnQpCkBAIC04NSw2ICs4Niw3IEBACiAJCQkJcHJpbnRmICgiUG9pbnRlciBpcyBhdCBvZmZzZXQg MHgleCBvZiBvYmplY3QgJXAgaW4gTE9TIHNwYWNlLlxuIiwgKGludCkocHRyIC0gc3RhcnQpLCBz dGFydCk7CiAJCQlwdHIgPSBzdGFydDsKIAkJCW1vbm9fc2dlbl9sb3NfZGVzY3JpYmVfcG9pbnRl ciAocHRyKTsKKwkJCXZ0YWJsZSA9IChNb25vVlRhYmxlKilMT0FEX1ZUQUJMRSAocHRyKTsKIAkJ fSBlbHNlIGlmIChtYWpvcl9jb2xsZWN0b3IucHRyX2lzX2luX25vbl9waW5uZWRfc3BhY2UgKHB0 ciwgJnN0YXJ0KSkgewogCQkJaWYgKHB0ciA9PSBzdGFydCkKIAkJCQlwcmludGYgKCJQb2ludGVy IGlzIHRoZSBzdGFydCBvZiBvYmplY3QgJXAgaW4gb2xkc3BhY2UuXG4iLCBzdGFydCk7CkBAIC05 NCw5ICs5NiwxMSBAQAogCQkJCXByaW50ZiAoIlBvaW50ZXIgaW5zaWRlIG9sZHNwYWNlLlxuIik7 CiAJCQlpZiAoc3RhcnQpCiAJCQkJcHRyID0gc3RhcnQ7Ci0JCQltYWpvcl9jb2xsZWN0b3IuZGVz Y3JpYmVfcG9pbnRlciAocHRyKTsKKwkJCXZ0YWJsZSA9IG1ham9yX2NvbGxlY3Rvci5kZXNjcmli ZV9wb2ludGVyIChwdHIpOwogCQl9IGVsc2UgaWYgKG1ham9yX2NvbGxlY3Rvci5vYmpfaXNfZnJv bV9waW5uZWRfYWxsb2MgKHB0cikpIHsKKwkJCS8vIEZJWE1FOiBIYW5kbGUgcG9pbnRlcnMgdG8g dGhlIGluc2lkZSBvZiBvYmplY3RzCiAJCQlwcmludGYgKCJQb2ludGVyIGlzIGluc2lkZSBhIHBp bm5lZCBjaHVuay5cbiIpOworCQkJdnRhYmxlID0gKE1vbm9WVGFibGUqKUxPQURfVlRBQkxFIChw dHIpOwogCQl9IGVsc2UgewogCQkJcHJpbnRmICgiUG9pbnRlciB1bmtub3duLlxuIik7CiAJCQly ZXR1cm47CkBAIC0xMTIsMTcgKzExNiwxNCBAQAogCQlnb3RvIHJlc3RhcnQ7CiAJfQogCi0JLy8g RklYTUU6IEhhbmRsZSBwb2ludGVycyB0byB0aGUgaW5zaWRlIG9mIG9iamVjdHMKLQl2dGFibGUg PSAoTW9ub1ZUYWJsZSopTE9BRF9WVEFCTEUgKHB0cik7Ci0KIAlwcmludGYgKCJWVGFibGU6ICVw XG4iLCB2dGFibGUpOwogCWlmICh2dGFibGUgPT0gTlVMTCkgewogCQlwcmludGYgKCJWVGFibGUg aXMgaW52YWxpZCAoZW1wdHkpLlxuIik7Ci0JCXJldHVybjsKKwkJZ290byBicmlkZ2U7CiAJfQog CWlmIChzZ2VuX3B0cl9pbl9udXJzZXJ5ICh2dGFibGUpKSB7CiAJCXByaW50ZiAoIlZUYWJsZSBp cyBpbnZhbGlkIChwb2ludHMgaW5zaWRlIG51cnNlcnkpLlxuIik7Ci0JCXJldHVybjsKKwkJZ290 byBicmlkZ2U7CiAJfQogCXByaW50ZiAoIkNsYXNzOiAlc1xuIiwgdnRhYmxlLT5rbGFzcy0+bmFt ZSk7CiAKQEAgLTEzNCw2ICsxMzUsOSBAQAogCiAJc2l6ZSA9IHNnZW5fc2FmZV9vYmplY3RfZ2V0 X3NpemUgKChNb25vT2JqZWN0KilwdHIpOwogCXByaW50ZiAoIlNpemU6ICVkXG4iLCAoaW50KXNp emUpOworCisgYnJpZGdlOgorCXNnZW5fYnJpZGdlX2Rlc2NyaWJlX3BvaW50ZXIgKChNb25vT2Jq ZWN0KilwdHIpOwogfQogCiB2b2lkDQoNCk1vZGlmaWVkOiBtb25vL21ldGFkYXRhL3NnZW4tZ2Mu aA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQ0KQEAgLTY3Niw3ICs2NzYsNyBAQCBzdHJ1Y3QgX1NnZW5NYWpvckNvbGxl Y3RvciB7CiAJdm9pZCAoKmluaXRfd29ya2VyX3RocmVhZCkgKHZvaWQgKmRhdGEpOwogCXZvaWQg KCpyZXNldF93b3JrZXJfZGF0YSkgKHZvaWQgKmRhdGEpOwogCWdib29sZWFuICgqaXNfdmFsaWRf b2JqZWN0KSAoY2hhciAqb2JqZWN0KTsKLQlnYm9vbGVhbiAoKmRlc2NyaWJlX3BvaW50ZXIpIChj aGFyICpwb2ludGVyKTsKKwlNb25vVlRhYmxlKiAoKmRlc2NyaWJlX3BvaW50ZXIpIChjaGFyICpw b2ludGVyKTsKIAlndWludDgqICgqZ2V0X2NhcmR0YWJsZV9tb2RfdW5pb25fZm9yX29iamVjdCkg KGNoYXIgKm9iamVjdCk7CiAJbG9uZyBsb25nICgqZ2V0X2FuZF9yZXNldF9udW1fbWFqb3Jfb2Jq ZWN0c19tYXJrZWQpICh2b2lkKTsKIH07CkBAIC03OTUsNiArNzk1LDcgQEAgc3RydWN0IF9TZ2Vu TWFqb3JDb2xsZWN0b3IgewogZ2Jvb2xlYW4gc2dlbl9pc19icmlkZ2VfY2xhc3MgKE1vbm9DbGFz cyAqY2xhc3MpIE1PTk9fSU5URVJOQUw7CiB2b2lkIHNnZW5fbWFya19icmlkZ2Vfb2JqZWN0IChN b25vT2JqZWN0ICpvYmopIE1PTk9fSU5URVJOQUw7CiB2b2lkIHNnZW5fYnJpZGdlX3JlZ2lzdGVy X2ZpbmFsaXplZF9vYmplY3QgKE1vbm9PYmplY3QgKm9iamVjdCkgTU9OT19JTlRFUk5BTDsKK3Zv aWQgc2dlbl9icmlkZ2VfZGVzY3JpYmVfcG9pbnRlciAoTW9ub09iamVjdCAqb2JqZWN0KSBNT05P X0lOVEVSTkFMOwogCiB2b2lkIHNnZW5fc2Nhbl90b2dnbGVyZWZzIChjaGFyICpzdGFydCwgY2hh ciAqZW5kLCBTY2FuQ29weUNvbnRleHQgY3R4KSBNT05PX0lOVEVSTkFMOwogdm9pZCBzZ2VuX3By b2Nlc3NfdG9nZ2xlcmVmcyAodm9pZCkgTU9OT19JTlRFUk5BTDsNCg0KTW9kaWZpZWQ6IG1vbm8v bWV0YWRhdGEvc2dlbi1tYXJrc3dlZXAuYw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KQEAgLTk0Nyw3ICs5NDcsNyBA QCBzdHJ1Y3QgX01TQmxvY2tJbmZvIHsKIH0KIAogCi1zdGF0aWMgZ2Jvb2xlYW4KK3N0YXRpYyBN b25vVlRhYmxlKgogbWFqb3JfZGVzY3JpYmVfcG9pbnRlciAoY2hhciAqcHRyKQogewogCU1TQmxv Y2tJbmZvICpibG9jazsKQEAgLTk4OSwxMCArOTg5LDEwIEBAIHN0cnVjdCBfTVNCbG9ja0luZm8g ewogCiAJCVNHRU5fTE9HICgwLCAiIG1hcmtlZCAlZClcbiIsIG1hcmtlZCA/IDEgOiAwKTsKIAot CQlyZXR1cm4gVFJVRTsKKwkJcmV0dXJuIHZ0YWJsZTsKIAl9IEVORF9GT1JFQUNIX0JMT0NLOwog Ci0JcmV0dXJuIEZBTFNFOworCXJldHVybiBOVUxMOwogfQogCiBzdGF0aWMgdm9pZA0KDQogICBD b21taXQ6IDhhNGUxY2E3NGU2NTQwOTViMzQyNjE5ZDA2ZGNjOWI3M2U0MDI5NDYNCiAgIEF1dGhv cjogTWFyayBQcm9ic3QgPG1hcmsucHJvYnN0QGdtYWlsLmNvbT4gKHNjaGFuaSkNCiAgICAgRGF0 ZTogMjAxMy0xMS0yNSAxNDo0MjowOCBHTVQNCiAgICAgIFVSTDogaHR0cHM6Ly9naXRodWIuY29t L21vbm8vbW9uby9jb21taXQvOGE0ZTFjYTc0ZTY1NDA5NWIzNDI2MTlkMDZkY2M5YjczZTQwMjk0 Ng0KDQpbc2dlbl0gSW1wbGVtZW50IG91ciBvd24gcXNvcnQoKSBzbyBhcyBub3QgZG8gZGVhZGxv Y2suCgpxc29ydCgpIG1heSBjYWxsIG1hbGxvYygpLCB3aGljaCBjYW4gbGVhZCB0byBhIGRlYWRs b2NrIHdoZW4gdGhlCndvcmxkIGlzIHN0b3BwZWQuCgpGaXhlcyBodHRwczovL2J1Z3ppbGxhLnhh bWFyaW4uY29tL3Nob3dfYnVnLmNnaT9pZD0xNjQzMi4NCg0KQ2hhbmdlZCBwYXRoczoKICBNIG1v bm8vbWV0YWRhdGEvTWFrZWZpbGUuYW0uaW4KICBNIG1vbm8vbWV0YWRhdGEvc2dlbi1icmlkZ2Uu YwogIE0gbW9uby9tZXRhZGF0YS9zZ2VuLWdjLmgKICBNIG1vbm8vbWV0YWRhdGEvc2dlbi1tYXJr c3dlZXAuYwogIE0gbW9uby9tZXRhZGF0YS9zZ2VuLW51cnNlcnktYWxsb2NhdG9yLmMKQWRkZWQg cGF0aHM6CiAgQSBtb25vL21ldGFkYXRhL3NnZW4tcXNvcnQuYwoNCk1vZGlmaWVkOiBtb25vL21l dGFkYXRhL01ha2VmaWxlLmFtLmluDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpAQCAtMjUzLDcgKzI1Myw4IEBAIHNn ZW5fc291cmNlcyA9IFwKIAlzZ2VuLXN0dy5jCQkJCVwKIAlzZ2VuLWZpbi13ZWFrLWhhc2guYwlc CiAJc2dlbi1sYXlvdXQtc3RhdHMuYwlcCi0Jc2dlbi1sYXlvdXQtc3RhdHMuaAorCXNnZW4tbGF5 b3V0LXN0YXRzLmgJXAorCXNnZW4tcXNvcnQuYwogCiBsaWJtb25vcnVudGltZV9sYV9TT1VSQ0VT ID0gJChjb21tb25fc291cmNlcykgJChnY19kZXBlbmRlbnRfc291cmNlcykgJChib2VobV9zb3Vy Y2VzKQogbGlibW9ub3J1bnRpbWVfbGFfQ0ZMQUdTID0gJChCT0VITV9ERUZJTkVTKQ0KDQpNb2Rp ZmllZDogbW9uby9tZXRhZGF0YS9zZ2VuLWJyaWRnZS5jDQo9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpAQCAtNjM2LDcg KzYzNiw3IEBACiAKIAkvKiBzb3J0IGFycmF5IGFjY29yZGluZyB0byBkZWNyZWFzaW5nIGZpbmlz aGluZyB0aW1lICovCiAKLQlxc29ydCAoYWxsX2VudHJpZXMsIGhhc2hfdGFibGUubnVtX2VudHJp ZXMsIHNpemVvZiAoSGFzaEVudHJ5KiksIGNvbXBhcmVfaGFzaF9lbnRyaWVzKTsKKwlzZ2VuX3Fz b3J0IChhbGxfZW50cmllcywgaGFzaF90YWJsZS5udW1fZW50cmllcywgc2l6ZW9mIChIYXNoRW50 cnkqKSwgY29tcGFyZV9oYXNoX2VudHJpZXMpOwogCiAJU0dFTl9UVl9HRVRUSU1FIChidHYpOwog CXN0ZXBfMyA9IFNHRU5fVFZfRUxBUFNFRCAoYXR2LCBidHYpOw0KDQpNb2RpZmllZDogbW9uby9t ZXRhZGF0YS9zZ2VuLWdjLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCkBAIC0xMDUwLDYgKzEwNTAsMTAgQEAgc3Ry dWN0IF9MT1NPYmplY3QgewogZ2Jvb2xlYW4gc2dlbl9wYXJzZV9lbnZpcm9ubWVudF9zdHJpbmdf ZXh0cmFjdF9udW1iZXIgKGNvbnN0IGNoYXIgKnN0ciwgZ2xvbmcgKm91dCkgTU9OT19JTlRFUk5B TDsKIHZvaWQgc2dlbl9lbnZfdmFyX2Vycm9yIChjb25zdCBjaGFyICplbnZfdmFyLCBjb25zdCBj aGFyICpmYWxsYmFjaywgY29uc3QgY2hhciAqZGVzY3JpcHRpb25fZm9ybWF0LCAuLi4pIE1PTk9f SU5URVJOQUw7CiAKKy8qIFV0aWxpdGllcyAqLworCit2b2lkIHNnZW5fcXNvcnQgKHZvaWQgKmJh c2UsIHNpemVfdCBuZWwsIHNpemVfdCB3aWR0aCwgaW50ICgqY29tcGFyKSAoY29uc3Qgdm9pZCos IGNvbnN0IHZvaWQqKSkgTU9OT19JTlRFUk5BTDsKKwogI2VuZGlmIC8qIEhBVkVfU0dFTl9HQyAq LwogCiAjZW5kaWYgLyogX19NT05PX1NHRU5HQ19IX18gKi8NCg0KTW9kaWZpZWQ6IG1vbm8vbWV0 YWRhdGEvc2dlbi1tYXJrc3dlZXAuYw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KQEAgLTE5MTQsNyArMTkxNCw3IEBA IHN0cnVjdCBfTVNCbG9ja0luZm8gewogCQkJZW1wdHlfYmxvY2tfYXJyIFtpKytdID0gYmxvY2s7 CiAJCVNHRU5fQVNTRVJUICgwLCBpID09IG51bV9lbXB0eV9ibG9ja3MsICJlbXB0eSBibG9jayBj b3VudCB3cm9uZyIpOwogCi0JCXFzb3J0IChlbXB0eV9ibG9ja19hcnIsIG51bV9lbXB0eV9ibG9j a3MsIHNpemVvZiAodm9pZCopLCBjb21wYXJlX3BvaW50ZXJzKTsKKwkJc2dlbl9xc29ydCAoZW1w dHlfYmxvY2tfYXJyLCBudW1fZW1wdHlfYmxvY2tzLCBzaXplb2YgKHZvaWQqKSwgY29tcGFyZV9w b2ludGVycyk7CiAKIAkJLyoKIAkJICogV2UgaXRlcmF0ZSBvdmVyIHRoZSBmcmVlIGJsb2Nrcywg dHJ5aW5nIHRvIGZpbmQgTVNfQkxPQ0tfQUxMT0NfTlVNDQoNCk1vZGlmaWVkOiBtb25vL21ldGFk YXRhL3NnZW4tbnVyc2VyeS1hbGxvY2F0b3IuYw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KQEAgLTIwMiw3ICsyMDIs NyBAQCBlbnVtIHsKIGR1bXBfYWxsb2NfcmVjb3JkcyAodm9pZCkKIHsKIAlpbnQgaTsKLQlxc29y dCAoYWxsb2NfcmVjb3JkcywgbmV4dF9yZWNvcmQsIHNpemVvZiAoQWxsb2NSZWNvcmQpLCBjb21w X2FsbG9jX3JlY29yZCk7CisJc2dlbl9xc29ydCAoYWxsb2NfcmVjb3JkcywgbmV4dF9yZWNvcmQs IHNpemVvZiAoQWxsb2NSZWNvcmQpLCBjb21wX2FsbG9jX3JlY29yZCk7CiAKIAlwcmludGYgKCIt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1EVU1QIFJFQ09SRFMtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tXG4iKTsKIAlmb3IgKGkgPSAwOyBpIDwgbmV4dF9yZWNvcmQ7ICsr aSkgewpAQCAtMjIwLDcgKzIyMCw3IEBAIGVudW0gewogCWludCBtYXhfaG9sZSA9IDA7CiAJQWxs b2NSZWNvcmQgKnByZXYgPSBOVUxMOwogCi0JcXNvcnQgKGFsbG9jX3JlY29yZHMsIG5leHRfcmVj b3JkLCBzaXplb2YgKEFsbG9jUmVjb3JkKSwgY29tcF9hbGxvY19yZWNvcmQpOworCXNnZW5fcXNv cnQgKGFsbG9jX3JlY29yZHMsIG5leHRfcmVjb3JkLCBzaXplb2YgKEFsbG9jUmVjb3JkKSwgY29t cF9hbGxvY19yZWNvcmQpOwogCXByaW50ZiAoIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLURVTVAgUkVDT1JEUy0gJWQgJWQtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiIs IG5leHRfcmVjb3JkLCBhbGxvY19jb3VudCk7CiAJZm9yIChpID0gMDsgaSA8IG5leHRfcmVjb3Jk OyArK2kpIHsKIAkJQWxsb2NSZWNvcmQgKnJlYyA9IGFsbG9jX3JlY29yZHMgKyBpOw0KDQpBZGRl ZDogbW9uby9tZXRhZGF0YS9zZ2VuLXFzb3J0LmMNCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCkBAIC0wLDAgKzEsMTY0 IEBACisvKgorICogc2dlbi1xc29ydC5jOiBRdWlja3NvcnQuCisgKgorICogQXV0aG9yOgorICog CU1hcmsgUHJvYnN0IDxtYXJrLnByb2JzdEBnbWFpbC5jb20+CisgKgorICogQ29weXJpZ2h0IChD KSAyMDEzIFhhbWFyaW4gSW5jCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgMi4wIGFz IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOworICoKKyAqIFRoaXMg bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs LAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSAyLjAgYWxv bmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKKyAqIFNvZnR3 YXJlIEZvdW5kYXRpb24sIEluYy4sIDY3NSBNYXNzIEF2ZSwgQ2FtYnJpZGdlLCBNQSAwMjEzOSwg VVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmZGVmIEhBVkVfU0dFTl9HQwor CisjaW5jbHVkZSAibWV0YWRhdGEvc2dlbi1nYy5oIgorCisjZGVmaW5lIEVMRU0oaSkJCSgoKHVu c2lnbmVkIGNoYXIqKWJhc2UpICsgKChpKSAqIHdpZHRoKSkKKyNkZWZpbmUgU1dBUChpLGopCWRv IHsJCQkJCVwKKwkJc2l6ZV90IF9faSA9IChpKSwgX19qID0gKGopOwkJCVwKKwkJaWYgKF9faSAh PSBfX2opIHsJCQkJXAorCQkJbWVtY3B5IChzd2FwX3RtcCwgRUxFTSAoX19pKSwgd2lkdGgpOwlc CisJCQltZW1jcHkgKEVMRU0gKF9faSksIEVMRU0gKF9faiksIHdpZHRoKTsJXAorCQkJbWVtY3B5 IChFTEVNIChfX2opLCBzd2FwX3RtcCwgd2lkdGgpOwlcCisJCX0JCQkJCQlcCisJfSB3aGlsZSAo MCkKKworc3RhdGljIHNpemVfdAorcGFydGl0aW9uICh2b2lkICpiYXNlLCBzaXplX3QgbmVsLCBz aXplX3Qgd2lkdGgsIGludCAoKmNvbXBhcikgKGNvbnN0IHZvaWQqLCBjb25zdCB2b2lkKiksIHVu c2lnbmVkIGNoYXIgKnBpdm90X3RtcCwgdW5zaWduZWQgY2hhciAqc3dhcF90bXApCit7CisJc2l6 ZV90IHBpdm90X2lkeCA9IG5lbCA+PiAxOworCXNpemVfdCBzLCBpOworCisJbWVtY3B5IChwaXZv dF90bXAsIEVMRU0gKHBpdm90X2lkeCksIHdpZHRoKTsKKwlTV0FQIChwaXZvdF9pZHgsIG5lbCAt IDEpOworCXMgPSAwOworCWZvciAoaSA9IDA7IGkgPCBuZWwgLSAxOyArK2kpIHsKKwkJaWYgKGNv bXBhciAoRUxFTSAoaSksIHBpdm90X3RtcCkgPD0gMCkgeworCQkJU1dBUCAoaSwgcyk7CisJCQkr K3M7CisJCX0KKwl9CisJU1dBUCAocywgbmVsIC0gMSk7CisJcmV0dXJuIHM7Cit9CisKK3N0YXRp YyB2b2lkCitxc29ydF9yZWMgKHZvaWQgKmJhc2UsIHNpemVfdCBuZWwsIHNpemVfdCB3aWR0aCwg aW50ICgqY29tcGFyKSAoY29uc3Qgdm9pZCosIGNvbnN0IHZvaWQqKSwgdW5zaWduZWQgY2hhciAq cGl2b3RfdG1wLCB1bnNpZ25lZCBjaGFyICpzd2FwX3RtcCkKK3sKKwlzaXplX3QgcGl2b3RfaWR4 OworCisJaWYgKG5lbCA8PSAxKQorCQlyZXR1cm47CisKKwlwaXZvdF9pZHggPSBwYXJ0aXRpb24g KGJhc2UsIG5lbCwgd2lkdGgsIGNvbXBhciwgcGl2b3RfdG1wLCBzd2FwX3RtcCk7CisJcXNvcnRf cmVjIChiYXNlLCBwaXZvdF9pZHgsIHdpZHRoLCBjb21wYXIsIHBpdm90X3RtcCwgc3dhcF90bXAp OworCWlmIChwaXZvdF9pZHggPCBuZWwpCisJCXFzb3J0X3JlYyAoRUxFTSAocGl2b3RfaWR4ICsg MSksIG5lbCAtIHBpdm90X2lkeCAtIDEsIHdpZHRoLCBjb21wYXIsIHBpdm90X3RtcCwgc3dhcF90 bXApOworfQorCit2b2lkCitzZ2VuX3Fzb3J0ICh2b2lkICpiYXNlLCBzaXplX3QgbmVsLCBzaXpl X3Qgd2lkdGgsIGludCAoKmNvbXBhcikgKGNvbnN0IHZvaWQqLCBjb25zdCB2b2lkKikpCit7CisJ dW5zaWduZWQgY2hhciBwaXZvdF90bXAgW3dpZHRoXTsKKwl1bnNpZ25lZCBjaGFyIHN3YXBfdG1w IFt3aWR0aF07CisKKwlxc29ydF9yZWMgKGJhc2UsIG5lbCwgd2lkdGgsIGNvbXBhciwgcGl2b3Rf dG1wLCBzd2FwX3RtcCk7Cit9CisKKyNpZmRlZiBTR0VOX1FTT1JUX1RFU1QKKworc3RhdGljIGlu dAorY29tcGFyZV9pbnRzIChjb25zdCB2b2lkICpwYSwgY29uc3Qgdm9pZCAqcGIpCit7CisJaW50 IGEgPSAqKGNvbnN0IGludCopcGE7CisJaW50IGIgPSAqKGNvbnN0IGludCopcGI7CisJaWYgKGEg PCBiKQorCQlyZXR1cm4gLTE7CisJaWYgKGEgPT0gYikKKwkJcmV0dXJuIDA7CisJcmV0dXJuIDE7 Cit9CisKK3R5cGVkZWYgc3RydWN0IHsKKwlpbnQga2V5OworCWludCB2YWw7Cit9IHRlc3RzdHJ1 Y3RfdDsKKworc3RhdGljIGludAorY29tcGFyZV90ZXN0c3RydWN0cyAoY29uc3Qgdm9pZCAqcGEs IGNvbnN0IHZvaWQgKnBiKQoreworCWludCBhID0gKChjb25zdCB0ZXN0c3RydWN0X3QqKXBhKS0+ a2V5OworCWludCBiID0gKChjb25zdCB0ZXN0c3RydWN0X3QqKXBiKS0+a2V5OworCWlmIChhIDwg YikKKwkJcmV0dXJuIC0xOworCWlmIChhID09IGIpCisJCXJldHVybiAwOworCXJldHVybiAxOwor fQorCisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8YXNzZXJ0Lmg+CisKK3N0YXRpYyB2 b2lkCitjb21wYXJlX3NvcnRzICh2b2lkICpiYXNlLCBzaXplX3QgbmVsLCBzaXplX3Qgd2lkdGgs IGludCAoKmNvbXBhcikgKGNvbnN0IHZvaWQqLCBjb25zdCB2b2lkKikpCit7CisJc2l6ZV90IGxl biA9IG5lbCAqIHdpZHRoOworCXZvaWQgKmIxID0gbWFsbG9jIChsZW4pOworCXZvaWQgKmIyID0g bWFsbG9jIChsZW4pOworCisJbWVtY3B5IChiMSwgYmFzZSwgbGVuKTsKKwltZW1jcHkgKGIyLCBi YXNlLCBsZW4pOworCisJcXNvcnQgKGIxLCBuZWwsIHdpZHRoLCBjb21wYXIpOworCXNnZW5fcXNv cnQgKGIyLCBuZWwsIHdpZHRoLCBjb21wYXIpOworCisJYXNzZXJ0ICghbWVtY21wIChiMSwgYjIs IGxlbikpOworCisJZnJlZSAoYjEpOworCWZyZWUgKGIyKTsKK30KKworaW50CittYWluICh2b2lk KQoreworCWludCBpOworCWZvciAoaSA9IDA7IGkgPCA0MDAwOyArK2kpIHsKKwkJaW50IGEgW2ld OworCQlpbnQgajsKKworCQlmb3IgKGogPSAwOyBqIDwgaTsgKytqKQorCQkJYSBbal0gPSBpIC0g aiAtIDE7CisJCWNvbXBhcmVfc29ydHMgKGEsIGksIHNpemVvZiAoaW50KSwgY29tcGFyZV9pbnRz KTsKKwl9CisKKwlzcmFuZG9tZGV2ICgpOworCWZvciAoaSA9IDA7IGkgPCAyMDAwOyArK2kpIHsK KwkJdGVzdHN0cnVjdF90IGEgWzIwMF07CisJCWludCBqOworCQlmb3IgKGogPSAwOyBqIDwgMjAw OyArK2opIHsKKwkJCWEgW2pdLmtleSA9IHJhbmRvbSAoKTsKKwkJCWEgW2pdLnZhbCA9IHJhbmRv bSAoKTsKKwkJfQorCisJCWNvbXBhcmVfc29ydHMgKGEsIDIwMCwgc2l6ZW9mICh0ZXN0c3RydWN0 X3QpLCBjb21wYXJlX3Rlc3RzdHJ1Y3RzKTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworI2VuZGlm CisKKyNlbmRpZg0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KTW9uby1wYXRjaGVzIG1haWxsaXN0ICAtICBNb25vLXBhdGNoZXNAbGlzdHMueGltaWFuLmNv bQpodHRwOi8vbGlzdHMueGltaWFuLmNvbS9tYWlsbWFuL2xpc3RpbmZvL21vbm8tcGF0Y2hlcwo=