[COMMIT] Use parse_integer() in read_atom(); support bases with ratios like integers
Aidan Kehoe <[email protected]> Sat, 9 May 2015 00:42:11 +0100
| Newsgroups | gmane.emacs.xemacs.patches |
|---|---|
| Message-ID | <[email protected]> |
CkFQUFJPVkUgQ09NTUlUCgpOT1RFOiBUaGlzIHBhdGNoIGhhcyBiZWVuIGNvbW1pdHRlZC4KCiMg SEcgY2hhbmdlc2V0IHBhdGNoCiMgVXNlciBBaWRhbiBLZWhvZSA8a2Vob2VhQHBhcmhhc2FyZC5u ZXQ+CiMgRGF0ZSAxNDMxMTI4NDU3IC0zNjAwCiMgICAgICBTYXQgTWF5IDA5IDAwOjQwOjU3IDIw MTUgKzAxMDAKIyBOb2RlIElEIDYxNzQ4NDhmM2U2Y2ZmNDRlYzMwNTU1ZDE5MzVjOWMyYTMyMGRk ZmYKIyBQYXJlbnQgIDg3ZTI5ZDkzZTExYjY0OWNkZmE5NjZlNDQ0N2NlYmE0NTM3OWFmMGEKVXNl IHBhcnNlX2ludGVnZXIoKSBpbiByZWFkX2F0b20oKTsgc3VwcG9ydCBiYXNlcyB3aXRoIHJhdGlv cyBsaWtlIGludGVnZXJzCgpzcmMvQ2hhbmdlTG9nIGFkZGl0aW9uOgoKMjAxNS0wNS0wOCAgQWlk YW4gS2Vob2UgIDxrZWhvZWFAcGFyaGFzYXJkLm5ldD4KCgkqIGRhdGEuYyAoaW5pdF9lcnJvcnNf b25jZV9lYXJseSk6CglNb3ZlIHRoZSBRdW5zdXBwb3J0ZWRfdHlwZSBoZXJlIGZyb20gbnVtYmVy cy5jLCBzbyBpdCdzIGF2YWlsYWJsZQoJd2hlbiB0aGUgbWFqb3JpdHkgb2Ygb3VyIHR5cGVzIGFy ZSBub3Qgc3VwcG9ydGVkLgoJKiBnZW5lcmFsLXNsb3RzLmg6IEFkZCBpdCBoZXJlLCB0b28uCgkq IG51bWJlci5jOiBSZW1vdmUgdGhlIGRlZmluaXRpb24gb2YgUXVuc3VwcG9ydGVkX3R5cGUgZnJv bSBoZXJlLgoKCSogbHJlYWQuYyAocmVhZF9hdG9tKToKCUNoZWNrIGlmIHRoZSBmaXJzdCBjaGFy YWN0ZXIgY291bGQgcmVmbGVjdCBhIHJhdGlvbmFsLCBpZiBzbywgY2FsbAoJcGFyc2VfaW50ZWdl cigpLCBkb24ndCBjaGVjayB0aGUgc3ludGF4IG9mIHRoZSBvdGhlcgoJY2hhcmFjdGVycy4gVGhp cyBhbGxvd3MgdXMgdG8gYWNjZXB0IHRoZSBub24tQVNDSUkgZGlnaXQKCWNoYXJhY3RlcnMgdG9v LgoJSWYgdGhhdCB3b3JrZWQgcGFydGlhbGx5LCBidXQgbm90IGNvbXBsZXRlbHksIGFuZCB0aGUg bmV4dCBjaGFyIGlzCglhIHNsYXNoLCB0cnkgdG8gcGFyc2UgYXMgYSByYXRpby4KCUlmIHRoYXQg ZmFpbHMsIHRyeSBpc2Zsb2F0X3N0cmluZygpLCBidXQgb25seSBpZiB0aGUgZmlyc3QKCWNoYXJh Y3RlciBjb3VsZCBwbGF1c2libHkgYmUgcGFydCBvZiBhIGZsb2F0LgoJT3RoZXJ3aXNlLCB0cmVh dCBhcyBhIHN5bWJvbC4KCSogbHJlYWQuYyAocmVhZF9yYXRpb25hbCk6CglSZW5hbWUgZnJvbSBy ZWFkX2ludGVnZXIuIEhhbmRsZSByYXRpb3Mgd2l0aCB0aGUgc2FtZSByYWRpeAoJc3BlY2lmaWNh dGlvbiBhcyB3YXMgdXNlZCBmb3IgaW50ZWdlcnMuCgkqIGxyZWFkLmMgKHJlYWQxKToKCVJlbmFt ZSByZWFkX2ludGVnZXIgaW4gdGhpcyBmdW5jdGlvbi4gU3VwcG9ydCB0aGUgQ29tbW9uIExpc3AK CSNOTk5yTU1NIHN5bnRheCBmb3IgcGFyc2luZyBhIG51bWJlciBNTU0gb2YgYXJiaXRyYXJ5IHJh ZGl4IE5OTi4KCm1hbi9DaGFuZ2VMb2cgYWRkaXRpb246CgoyMDE1LTA1LTA4ICBBaWRhbiBLZWhv ZSAgPGtlaG9lYUBwYXJoYXNhcmQubmV0PgoKCSogbGlzcHJlZi9udW1iZXJzLnRleGkgKE51bWJl cnMpOgoJRGVzY3JpYmUgdGhlIG5ld2x5LXN1cHBvcnRlZCBhcmJpdHJhcnktYmFzZSBzeW50YXgg Zm9yIHJhdGlvbmFscwoJKGludGVnZXJzIGFuZCByYXRpb3MpLiBEZXNjcmliZSB0aGF0IHJhdGlv cyBjYW4gdGFrZSB0aGUgc2FtZSBiYXNlCglzcGVjaWZpY2F0aW9uIGFzIGludGVnZXJzLCBzb21l dGhpbmcgYWxzbyBuZXcuCgp0ZXN0cy9DaGFuZ2VMb2cgYWRkaXRpb246CgoyMDE1LTA1LTA4ICBB aWRhbiBLZWhvZSAgPGtlaG9lYUBwYXJoYXNhcmQubmV0PgoKCSogYXV0b21hdGVkL2xpc3AtcmVh ZGVyLXRlc3RzLmVsOgoJQ2hlY2sgdGhlIGFyYml0cmFyeS1iYXNlIGludGVnZXIgcmVhZGVyIHN5 bnRheCBzdXBwb3J0LCBqdXN0CglhZGRlZC4gIENoZWNrIHRoZSByZWFkZXIgYmFzZSBzdXBwb3J0 IGZvciByYXRpb3MsIGp1c3QgYWRkZWQuCglDaGVjayB0aGUgbm9uLUFTQ0lJLWRpZ2l0IHN1cHBv cnQgaW4gdGhlIHJlYWRlciwganVzdCBhZGRlZC4KCmRpZmYgLXIgODdlMjlkOTNlMTFiIC1yIDYx NzQ4NDhmM2U2YyBtYW4vQ2hhbmdlTG9nCi0tLSBhL21hbi9DaGFuZ2VMb2cJRnJpIE1heSAwOCAy MDowNDo0MiAyMDE1ICswMTAwCisrKyBiL21hbi9DaGFuZ2VMb2cJU2F0IE1heSAwOSAwMDo0MDo1 NyAyMDE1ICswMTAwCkBAIC0xLDMgKzEsMTAgQEAKKzIwMTUtMDUtMDggIEFpZGFuIEtlaG9lICA8 a2Vob2VhQHBhcmhhc2FyZC5uZXQ+CisKKwkqIGxpc3ByZWYvbnVtYmVycy50ZXhpIChOdW1iZXJz KToKKwlEZXNjcmliZSB0aGUgbmV3bHktc3VwcG9ydGVkIGFyYml0cmFyeS1iYXNlIHN5bnRheCBm b3IgcmF0aW9uYWxzCisJKGludGVnZXJzIGFuZCByYXRpb3MpLiBEZXNjcmliZSB0aGF0IHJhdGlv cyBjYW4gdGFrZSB0aGUgc2FtZSBiYXNlCisJc3BlY2lmaWNhdGlvbiBhcyBpbnRlZ2Vycywgc29t ZXRoaW5nIGFsc28gbmV3LgorCiAyMDE1LTAzLTE1ICBBaWRhbiBLZWhvZSAgPGtlaG9lYUBwYXJo YXNhcmQubmV0PgogCiAJKiBsaXNwcmVmL3N0cmluZ3MudGV4aSAoQ2hhcmFjdGVyIENvZGVzKToK ZGlmZiAtciA4N2UyOWQ5M2UxMWIgLXIgNjE3NDg0OGYzZTZjIG1hbi9saXNwcmVmL251bWJlcnMu dGV4aQotLS0gYS9tYW4vbGlzcHJlZi9udW1iZXJzLnRleGkJRnJpIE1heSAwOCAyMDowNDo0MiAy MDE1ICswMTAwCisrKyBiL21hbi9saXNwcmVmL251bWJlcnMudGV4aQlTYXQgTWF5IDA5IDAwOjQw OjU3IDIwMTUgKzAxMDAKQEAgLTE4LDEyICsxOCwxNiBAQAogb2YgWEVtYWNzKSBhcmUgd2hvbGUg bnVtYmVycyBzdWNoIGFzIEBtaW51c3t9MywgMCwgI2IwMTExLCAjeEZFRUQsCiAjbzc0NC4gIFRo ZWlyIHZhbHVlcyBhcmUgZXhhY3QsIGFuZCB0aGVpciByYW5nZSBpcyBsaW1pdGVkLiAgVGhlCiBu dW1iZXIgcHJlZml4ZXMgYCNiJywgYCNvJywgYW5kIGAjeCcgYXJlIHN1cHBvcnRlZCB0byByZXBy ZXNlbnQgbnVtYmVycwotaW4gYmluYXJ5LCBvY3RhbCwgYW5kIGhleGFkZWNpbWFsIG5vdGF0aW9u IChvciByYWRpeCkuICBGbG9hdGluZyBwb2ludAotbnVtYmVycyBhcmUgbnVtYmVycyB3aXRoIGZy YWN0aW9uYWwgcGFydHMsIHN1Y2ggYXMgQG1pbnVze300LjUsIDAuMCwgb3IKLTIuNzE4MjguICBU aGV5IGNhbiBhbHNvIGJlIGV4cHJlc3NlZCBpbiBleHBvbmVudGlhbCBub3RhdGlvbjogMS41ZTIK LWVxdWFscyAxNTA7IGluIHRoaXMgZXhhbXBsZSwgQHNhbXB7ZTJ9IHN0YW5kcyBmb3IgdGVuIHRv IHRoZSBzZWNvbmQKLXBvd2VyLCBhbmQgaXMgbXVsdGlwbGllZCBieSAxLjUuICBGbG9hdGluZyBw b2ludCB2YWx1ZXMgYXJlIG5vdCBleGFjdDsKLXRoZXkgaGF2ZSBhIGZpeGVkLCBsaW1pdGVkIGFt b3VudCBvZiBwcmVjaXNpb24uCitpbiBiaW5hcnksIG9jdGFsLCBhbmQgaGV4YWRlY2ltYWwgbm90 YXRpb24gKG9yIHJhZGl4KS4gIFRoZSBzeW50YXgKK2AjTk5Ock5VTScgaXMgYWxzbyBzdXBwb3J0 ZWQsIGFsbG93aW5nIGEgcmFkaXggdG8gYmUgZXhwbGljaXRseQorc3BlY2lmaWVkOyBlLmcuIGAj MjByMTUnIGRlbm90ZXMgdGhlIGZpeG51bSAyNSwgZXhwcmVzc2VkIGluIGJhc2UKK3R3ZW50eS4K KworICBGbG9hdGluZyBwb2ludCBudW1iZXJzIGFyZSBudW1iZXJzIHdpdGggZnJhY3Rpb25hbCBw YXJ0cywgc3VjaCBhcworQG1pbnVze300LjUsIDAuMCwgb3IgMi43MTgyOC4gIFRoZXkgY2FuIGFs c28gYmUgZXhwcmVzc2VkIGluIGV4cG9uZW50aWFsCitub3RhdGlvbjogMS41ZTIgZXF1YWxzIDE1 MDsgaW4gdGhpcyBleGFtcGxlLCBAc2FtcHtlMn0gc3RhbmRzIGZvciB0ZW4gdG8KK3RoZSBzZWNv bmQgcG93ZXIsIGFuZCBpcyBtdWx0aXBsaWVkIGJ5IDEuNS4gIEZsb2F0aW5nIHBvaW50IHZhbHVl cyBhcmUKK25vdCBleGFjdDsgdGhleSBoYXZlIGEgZml4ZWQsIGxpbWl0ZWQgYW1vdW50IG9mIHBy ZWNpc2lvbi4KIAogICBCaWdudW1zIGFyZSBhcmJpdHJhcnkgcHJlY2lzaW9uIGludGVnZXJzLiAg V2hlbiBzdXBwb3J0ZWQsIFhFbWFjcyBjYW4KIGhhbmRsZSBhbnkgaW50ZWdyYWwgY2FsY3VsYXRp b25zIHlvdSBoYXZlIGVub3VnaCB2aXJ0dWFsIG1lbW9yeSB0bwpAQCAtMzMsOSArMzcsMTMgQEAK IGF1dG9tYXRpY2FsbHkgY29udmVydHMgcmVzdWx0cyBvZiBjb21wdXRhdGlvbnMgZnJvbSBmaXhu dW0gdG8gYmlnbnVtLAogYW5kIGJhY2ssIGRlcGVuZGluZyBvbiB0aGUgc3RvcmFnZSByZXF1aXJl ZCB0byByZXByZXNlbnQgdGhlIG51bWJlci4KIFRodXMgdXNlIG9mIGJpZ251bXMgYXJlIGVudGly ZWx5IHRyYW5zcGFyZW50IHRvIHRoZSB1c2VyLCBleGNlcHQgZm9yIGEKLWZldyBzcGVjaWFsIGFw cGxpY2F0aW9ucyB0aGF0IGV4cGVjdCBvdmVyZmxvd3MuICBSYXRpb3MgYXJlIHJhdGlvbmFsCi1u dW1iZXJzIHdpdGggYXJiaXRyYXJ5IHByZWNpc2lvbi4gIFRoZXkgYXJlIG5vdGF0ZWQgaW4gdGhl Ci11c3VhbCB3YXkgd2l0aCB0aGUgc29saWR1cywgZm9yIGV4YW1wbGUgNS8zIG9yIEBtaW51c3t9 MjIvNy4KK2ZldyBzcGVjaWFsIGFwcGxpY2F0aW9ucyB0aGF0IGV4cGVjdCBvdmVyZmxvd3MuCisK KyAgUmF0aW9zIGFyZSByYXRpb25hbCBudW1iZXJzIHdpdGggYXJiaXRyYXJ5IHByZWNpc2lvbi4g IFRoZXkgYXJlIG5vdGF0ZWQKK2luIHRoZSB1c3VhbCB3YXkgd2l0aCB0aGUgc29saWR1cywgZm9y IGV4YW1wbGUgNS8zIG9yIEBtaW51c3t9MjIvNy4gIFRoZQorc3ludGF4IGZvciB1c2luZyBhIHBh cnRpY3VsYXIgcmFkaXggaXMgdGhlIHNhbWUgYXMgdGhhdCBmb3IgaW50ZWdlcnMsCitzbywgZS5n LiwgQHNhbXB7I3g4LzEwfSBpcyBlcXVpdmFsZW50IHRvIEBzYW1wezEvMn0gYW5kIEBzYW1weyMz MHIxMC80fQordG8gQHNhbXB7MTUvMn0sIHJlc3BlY3RpdmVseS4KIAogICBCaWdmbG9hdHMgYXJl IGZsb2F0aW5nIHBvaW50IG51bWJlcnMgd2l0aCBhcmJpdHJhcnkgcHJlY2lzaW9uLCB3aGljaAog bWF5IGJlIHNwZWNpZmllZCBieSB0aGUgdXNlciAoYW5kIG1heSBiZSBkaWZmZXJlbnQgZm9yIGRp ZmZlcmVudApkaWZmIC1yIDg3ZTI5ZDkzZTExYiAtciA2MTc0ODQ4ZjNlNmMgc3JjL0NoYW5nZUxv ZwotLS0gYS9zcmMvQ2hhbmdlTG9nCUZyaSBNYXkgMDggMjA6MDQ6NDIgMjAxNSArMDEwMAorKysg Yi9zcmMvQ2hhbmdlTG9nCVNhdCBNYXkgMDkgMDA6NDA6NTcgMjAxNSArMDEwMApAQCAtMSwzICsx LDI4IEBACisyMDE1LTA1LTA4ICBBaWRhbiBLZWhvZSAgPGtlaG9lYUBwYXJoYXNhcmQubmV0Pgor CisJKiBkYXRhLmMgKGluaXRfZXJyb3JzX29uY2VfZWFybHkpOgorCU1vdmUgdGhlIFF1bnN1cHBv cnRlZF90eXBlIGhlcmUgZnJvbSBudW1iZXJzLmMsIHNvIGl0J3MgYXZhaWxhYmxlCisJd2hlbiB0 aGUgbWFqb3JpdHkgb2Ygb3VyIHR5cGVzIGFyZSBub3Qgc3VwcG9ydGVkLgorCSogZ2VuZXJhbC1z bG90cy5oOiBBZGQgaXQgaGVyZSwgdG9vLgorCSogbnVtYmVyLmM6IFJlbW92ZSB0aGUgZGVmaW5p dGlvbiBvZiBRdW5zdXBwb3J0ZWRfdHlwZSBmcm9tIGhlcmUuCisKKwkqIGxyZWFkLmMgKHJlYWRf YXRvbSk6CisJQ2hlY2sgaWYgdGhlIGZpcnN0IGNoYXJhY3RlciBjb3VsZCByZWZsZWN0IGEgcmF0 aW9uYWwsIGlmIHNvLCBjYWxsCisJcGFyc2VfaW50ZWdlcigpLCBkb24ndCBjaGVjayB0aGUgc3lu dGF4IG9mIHRoZSBvdGhlcgorCWNoYXJhY3RlcnMuIFRoaXMgYWxsb3dzIHVzIHRvIGFjY2VwdCB0 aGUgbm9uLUFTQ0lJIGRpZ2l0CisJY2hhcmFjdGVycyB0b28uCisJSWYgdGhhdCB3b3JrZWQgcGFy dGlhbGx5LCBidXQgbm90IGNvbXBsZXRlbHksIGFuZCB0aGUgbmV4dCBjaGFyIGlzCisJYSBzbGFz aCwgdHJ5IHRvIHBhcnNlIGFzIGEgcmF0aW8uCisJSWYgdGhhdCBmYWlscywgdHJ5IGlzZmxvYXRf c3RyaW5nKCksIGJ1dCBvbmx5IGlmIHRoZSBmaXJzdAorCWNoYXJhY3RlciBjb3VsZCBwbGF1c2li bHkgYmUgcGFydCBvZiBhIGZsb2F0LgorCU90aGVyd2lzZSwgdHJlYXQgYXMgYSBzeW1ib2wuCisJ KiBscmVhZC5jIChyZWFkX3JhdGlvbmFsKToKKwlSZW5hbWUgZnJvbSByZWFkX2ludGVnZXIuIEhh bmRsZSByYXRpb3Mgd2l0aCB0aGUgc2FtZSByYWRpeAorCXNwZWNpZmljYXRpb24gYXMgd2FzIHVz ZWQgZm9yIGludGVnZXJzLgorCSogbHJlYWQuYyAocmVhZDEpOgorCVJlbmFtZSByZWFkX2ludGVn ZXIgaW4gdGhpcyBmdW5jdGlvbi4gU3VwcG9ydCB0aGUgQ29tbW9uIExpc3AKKwkjTk5Ock1NTSBz eW50YXggZm9yIHBhcnNpbmcgYSBudW1iZXIgTU1NIG9mIGFyYml0cmFyeSByYWRpeCBOTk4uCisK IDIwMTUtMDUtMDggIEFpZGFuIEtlaG9lICA8a2Vob2VhQHBhcmhhc2FyZC5uZXQ+CiAKIAkqIGdl bmVyYWwtc2xvdHMuaDogU29ydCB0aGUgc3ltYm9scyBpbiB0aGlzIGZpbGUgdXNpbmcgdGhlIExp c3AKZGlmZiAtciA4N2UyOWQ5M2UxMWIgLXIgNjE3NDg0OGYzZTZjIHNyYy9kYXRhLmMKLS0tIGEv c3JjL2RhdGEuYwlGcmkgTWF5IDA4IDIwOjA0OjQyIDIwMTUgKzAxMDAKKysrIGIvc3JjL2RhdGEu YwlTYXQgTWF5IDA5IDAwOjQwOjU3IDIwMTUgKzAxMDAKQEAgLTE4MTQsMTAgKzE4MTQsOSBAQAog CiAgb3ZlcmZsb3c6CiAjaWZuZGVmIEhBVkVfQklHTlVNCi0gIHJldHVybiBGc2lnbmFsIChRaW52 YWxpZF9hcmd1bWVudCwKLSAgICAgICAgICAgICAgICAgIGxpc3QzIChidWlsZF9tc2dfc3RyaW5n ICgiSW50ZWdlciBjb25zdGFudCBvdmVyZmxvdyIpLAotICAgICAgICAgICAgICAgICAgICAgICAg IG1ha2Vfc3RyaW5nIChidWYsIGxlbiksIG1ha2VfZml4bnVtIChiYXNlKSkpOwotCisgIHJldHVy biBGc2lnbmFsIChRdW5zdXBwb3J0ZWRfdHlwZSwKKyAgICAgICAgICAgICAgICAgIGxpc3QzIChi dWlsZF9hc2NzdHJpbmcgKCJiaWdudW0iKSwgbWFrZV9zdHJpbmcgKGJ1ZiwgbGVuKSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICBtYWtlX2ZpeG51bSAoYmFzZSkpKTsKICNlbHNlIC8qIEhBVkVf QklHTlVNICovCiAgIHJlc3VsdCA9IG1ha2VfYmlnbnVtX2VtYWNzX3VpbnQgKG9udW0pOwogCkBA IC00MTAwLDYgKzQwOTksMTAgQEAKICAgREVGRVJST1IgKFFzaW5ndWxhcml0eV9lcnJvciwgIkFy aXRobWV0aWMgc2luZ3VsYXJpdHkgZXJyb3IiLCBRZG9tYWluX2Vycm9yKTsKICAgREVGRVJST1Ig KFFvdmVyZmxvd19lcnJvciwgIkFyaXRobWV0aWMgb3ZlcmZsb3cgZXJyb3IiLCBRZG9tYWluX2Vy cm9yKTsKICAgREVGRVJST1IgKFF1bmRlcmZsb3dfZXJyb3IsICJBcml0aG1ldGljIHVuZGVyZmxv dyBlcnJvciIsIFFkb21haW5fZXJyb3IpOworCisgIC8qIE1vdmVkIGhlcmUgZnJvbSBudW1iZXIu Yywgc28gaXQncyBhdmFpbGFibGUgd2hlbiBub25lIG9mIHRoZSBuZXcgbnVtZXJpYworICAgICB0 eXBlcyBhcmUuICovCisgIERFRkVSUk9SX1NUQU5EQVJEIChRdW5zdXBwb3J0ZWRfdHlwZSwgUXdy b25nX3R5cGVfYXJndW1lbnQpOwogfQogCiB2b2lkCmRpZmYgLXIgODdlMjlkOTNlMTFiIC1yIDYx NzQ4NDhmM2U2YyBzcmMvZ2VuZXJhbC1zbG90cy5oCi0tLSBhL3NyYy9nZW5lcmFsLXNsb3RzLmgJ RnJpIE1heSAwOCAyMDowNDo0MiAyMDE1ICswMTAwCisrKyBiL3NyYy9nZW5lcmFsLXNsb3RzLmgJ U2F0IE1heSAwOSAwMDo0MDo1NyAyMDE1ICswMTAwCkBAIC0zMDcsNiArMzA3LDcgQEAKIFNZTUJP TCAoUXVuZW5jb2RhYmxlKTsKIFNZTUJPTCAoUXVuaWNvZGVfcmVnaXN0cmllcyk7CiBTWU1CT0wg KFF1bmljb2RlX3R5cGUpOworU1lNQk9MIChRdW5zdXBwb3J0ZWRfdHlwZSk7CiBTWU1CT0wgKFF1 bmltcGxlbWVudGVkKTsKIFNZTUJPTCAoUXVzZXJfZGVmYXVsdCk7CiBTWU1CT0xfS0VZV09SRCAo UV92YWx1ZSk7CmRpZmYgLXIgODdlMjlkOTNlMTFiIC1yIDYxNzQ4NDhmM2U2YyBzcmMvbHJlYWQu YwotLS0gYS9zcmMvbHJlYWQuYwlGcmkgTWF5IDA4IDIwOjA0OjQyIDIwMTUgKzAxMDAKKysrIGIv c3JjL2xyZWFkLmMJU2F0IE1heSAwOSAwMDo0MDo1NyAyMDE1ICswMTAwCkBAIC0xOTMwLDYyICsx OTMwLDEyMyBAQAogICAvKiBUaGlzIGZ1bmN0aW9uIGNhbiBHQyAqLwogICBpbnQgc2F3X2FfYmFj a3NsYXNoOwogICBCeXRlY291bnQgbGVuID0gcmVhZF9hdG9tXzAgKHJlYWRjaGFyZnVuLCBmaXJz dGNoYXIsICZzYXdfYV9iYWNrc2xhc2gpOwotICBjaGFyICpyZWFkX3B0ciA9IChjaGFyICopCi0g ICAgcmVzaXppbmdfYnVmZmVyX3N0cmVhbV9wdHIgKFhMU1RSRUFNIChWcmVhZF9idWZmZXJfc3Ry ZWFtKSk7Ci0KLSAgLyogSXMgaXQgYW4gaW50ZWdlcj8gKi8KLSAgaWYgKCEgKHNhd19hX2JhY2tz bGFzaCB8fCB1bmludGVybmVkX3N5bWJvbCkpCisgIElieXRlICpyZWFkX3B0cgorICAgID0gKEli eXRlICopIHJlc2l6aW5nX2J1ZmZlcl9zdHJlYW1fcHRyIChYTFNUUkVBTSAoVnJlYWRfYnVmZmVy X3N0cmVhbSkpOworCisgIC8qIElzIGl0IGFuIGludGVnZXI/CisKKyAgICAgSWYgYSB0b2tlbiBo YWQgYW55IGJhY2tzbGFzaGVzIGluIGl0LCBpdCBpcyBkaXNxdWFsaWZpZWQgZnJvbSBiZWluZyBh bgorICAgICBpbnRlZ2VyIG9yIGEgZmxvYXQuICBUaGlzIG1lYW5zIHRoYXQgMTIzXDQ1NiBpcyBh IHN5bWJvbCwgYXMgaXMgXDEyMworICAgICAod2hpY2ggaXMgdGhlIHdheSAoaW50ZXJuICIxMjMi KSBwcmludHMpLiAgQWxzbywgaWYgdG9rZW4gd2FzIHByZWNlZGVkIGJ5CisgICAgICM6LCBpdCdz IGFsd2F5cyBhIHN5bWJvbC4gKi8KKworICBpZiAoIShzYXdfYV9iYWNrc2xhc2ggfHwgdW5pbnRl cm5lZF9zeW1ib2wpKQogICAgIHsKLSAgICAgIC8qIElmIGEgdG9rZW4gaGFkIGFueSBiYWNrc2xh c2hlcyBpbiBpdCwgaXQgaXMgZGlzcXVhbGlmaWVkIGZyb20KLQkgYmVpbmcgYW4gaW50ZWdlciBv ciBhIGZsb2F0LiAgVGhpcyBtZWFucyB0aGF0IDEyM1w0NTYgaXMgYQotCSBzeW1ib2wsIGFzIGlz IFwxMjMgKHdoaWNoIGlzIHRoZSB3YXkgKGludGVybiAiMTIzIikgcHJpbnRzKS4KLQkgQWxzbywg aWYgdG9rZW4gd2FzIHByZWNlZGVkIGJ5ICM6LCBpdCdzIGFsd2F5cyBhIHN5bWJvbC4KLSAgICAg ICAqLwotICAgICAgY2hhciAqcCA9IHJlYWRfcHRyICsgbGVuOwotICAgICAgY2hhciAqcDEgPSBy ZWFkX3B0cjsKLQotICAgICAgaWYgKCpwMSA9PSAnKycgfHwgKnAxID09ICctJykgcDErKzsKLSAg ICAgIGlmIChwMSAhPSBwKQotCXsKLSAgICAgICAgICBpbnQgYzsKLQotICAgICAgICAgIHdoaWxl IChwMSAhPSBwICYmIChjID0gKnAxKSA+PSAnMCcgJiYgYyA8PSAnOScpCi0gICAgICAgICAgICBw MSsrOwotCSAgLyogSW50ZWdlcnMgY2FuIGhhdmUgdHJhaWxpbmcgZGVjaW1hbCBwb2ludHMuICAq LwotCSAgaWYgKHAxID4gcmVhZF9wdHIgJiYgcDEgPCBwICYmICpwMSA9PSAnLicpCi0JICAgIHAx Kys7Ci0gICAgICAgICAgaWYgKHAxID09IHApCisgICAgICBMaXNwX09iamVjdCBnb3QgPSBnZXRf Y2hhcl90YWJsZSAoZmlyc3RjaGFyLCBWZGlnaXRfZml4bnVtX21hcCk7CisgICAgICBGaXhudW0g Zml4dmFsID0gRklYTlVNUCAoZ290KSA/IFhSRUFMRklYTlVNIChnb3QpIDogLTE7CisgICAgICBC b29saW50IHN0YXJ0c19saWtlX2FuX2ludF9wID0gKGZpeHZhbCA+IC0xICYmIGZpeHZhbCA8IDEw KQorICAgICAgICB8fCBmaXJzdGNoYXIgPT0gJysnIHx8IGZpcnN0Y2hhciA9PSAnLSc7CisgICAg ICBJYnl0ZSAqZW5kcCA9IE5VTEw7CisgICAgICBMaXNwX09iamVjdCBudW0gPSBRbmlsOworCisg ICAgICAvKiBBdHRlbXB0IHRvIHBhcnNlIGFzIGFuIGludGVnZXIsIHdpdGggOkpVTkstQUxMT1dF RCB0LiBEbyBhIGdyb3NzCisgICAgICAgICBwbGF1c2liaWxpdHkgY2hlY2sgKGFib3ZlKSBmaXJz dCwgdGhvdWdoLCB3ZSdkIHByZWZlciBub3QgdG8gY2FsbAorICAgICAgICAgcGFyc2VfaW50ZWdl cigpIG9uIGV2ZXJ5IHN5bWJvbCB3ZSBzZWUuICovCisgICAgICBpZiAoc3RhcnRzX2xpa2VfYW5f aW50X3ApCisgICAgICAgIHsKKyAgICAgICAgICBudW0gPSBwYXJzZV9pbnRlZ2VyIChyZWFkX3B0 ciwgJmVuZHAsIGxlbiwgMTAsIDEsIFFuaWwpOworICAgICAgICB9CisKKyAgICAgIGlmIChJTlRF R0VSUCAobnVtKSkKKyAgICAgICAgeworICAgICAgICAgIGlmIChlbmRwID09IChyZWFkX3B0ciAr IGxlbikpCiAgICAgICAgICAgICB7Ci0JICAgICAgSWJ5dGUgKmJ1Zl9lbmQ7Ci0gICAgICAgICAg ICAgIC8qIEl0IGlzIGFuIGludGVnZXIuICovCi0JICAgICAgaWYgKHAxWy0xXSA9PSAnLicpCisg ICAgICAgICAgICAgIC8qIFdlIGNvbnN1bWVkIHRoZSB3aG9sZSBhdG9tLCBpdCdzIGRlZmluaXRl bHkgYW4gaW50ZWdlci4gKi8KKyAgICAgICAgICAgICAgcmV0dXJuIG51bTsKKyAgICAgICAgICAg IH0KKyAgICAgICAgICBlbHNlIGlmICgnLicgPT0gaXRleHRfaWNoYXIgKGVuZHApKQorICAgICAg ICAgICAgeworICAgICAgICAgICAgICAvKiBUcmFpbGluZyBkZWNpbWFsIHBvaW50IGlzIGFsbG93 ZWQgaW4gdGhlIExpc3AgcmVhZGVyLCB0aGlzIGlzCisgICAgICAgICAgICAgICAgIGFuIGludGVn ZXIuICovCisgICAgICAgICAgICAgIElOQ19JQllURVBUUiAoZW5kcCk7CisgICAgICAgICAgICAg IGlmIChlbmRwID09IChyZWFkX3B0ciArIGxlbikpCiAgICAgICAgICAgICAgICAgewotICAgICAg ICAgICAgICAgICAgbGVuIC09IDE7CisgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtOwogICAg ICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICByZXR1cm4gcGFyc2VfaW50ZWdlciAoKEli eXRlICopIHJlYWRfcHRyLCAmYnVmX2VuZCwgbGVuLCAxMCwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDAsIFFuaWwpOwotCSAgICB9Ci0JfQotI2lmZGVmIEhBVkVfUkFUSU8K LSAgICAgIGlmIChpc3JhdGlvX3N0cmluZyAocmVhZF9wdHIpKQotCXsKLQkgIC8qIEdNUCByYXRp b19zZXRfc3RyaW5nIGhhcyBubyBlZmZlY3Qgd2l0aCBpbml0aWFsICsgc2lnbiAqLwotCSAgaWYg KCpyZWFkX3B0ciA9PSAnKycpCi0JICAgIHJlYWRfcHRyKys7Ci0JICByYXRpb19zZXRfc3RyaW5n IChzY3JhdGNoX3JhdGlvLCByZWFkX3B0ciwgMCk7Ci0JICBpZiAoYmlnbnVtX3NpZ24gKHJhdGlv X2Rlbm9taW5hdG9yIChzY3JhdGNoX3JhdGlvKSkgIT0gMCkgewotCSAgICByYXRpb19jYW5vbmlj YWxpemUgKHNjcmF0Y2hfcmF0aW8pOwotCSAgICByZXR1cm4gRmNhbm9uaWNhbGl6ZV9udW1iZXIg KG1ha2VfcmF0aW9fcnQgKHNjcmF0Y2hfcmF0aW8pKTsKLQkgIH0KLQkgIHJldHVybiBGc2lnbmFs IChRaW52YWxpZF9yZWFkX3N5bnRheCwKLQkJCSAgbGlzdDIgKGJ1aWxkX21zZ19zdHJpbmcKLQkJ CQkgKCJJbnZhbGlkIHJhdGlvIGNvbnN0YW50IGluIHJlYWRlciIpLAotCQkJCSBtYWtlX3N0cmlu ZyAoKElieXRlICopIHJlYWRfcHRyLCBsZW4pKSk7Ci0JfQotI2VuZGlmCi0gICAgICBpZiAoaXNm bG9hdF9zdHJpbmcgKHJlYWRfcHRyKSkKLQlyZXR1cm4gbWFrZV9mbG9hdCAoYXRvZiAocmVhZF9w dHIpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIGlmICgnLycgPT0gaXRleHRfaWNo YXIgKGVuZHApKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAvKiBNYXliZSBpdCdzIGEg cmF0aW8/ICovCisgICAgICAgICAgICAgIExpc3BfT2JqZWN0IGRlbm9tID0gUW5pbDsKKworICAg ICAgICAgICAgICBJTkNfSUJZVEVQVFIgKGVuZHApOworCisgICAgICAgICAgICAgIGlmIChlbmRw IDwgKHJlYWRfcHRyICsgbGVuKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg ICBJY2hhciBjYyA9IGl0ZXh0X2ljaGFyIChlbmRwKTsKKyAgICAgICAgICAgICAgICAgIC8qIE5v IGxlYWRpbmcgc2lnbiBhbGxvd2VkIGluIHRoZSBkZW5vbWluYXRvciwgdGhhdCB3b3VsZAorICAg ICAgICAgICAgICAgICAgICAgbWFrZSBpdCBhIHN5bWJvbCAoYWNjb3JkaW5nIHRvIENvbW1vbiBM aXNwLCBvZiBjb3Vyc2UpLiovCisgICAgICAgICAgICAgICAgICBpZiAoY2MgIT0gJysnICYmIGNj ICE9ICctJykKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgIGRl bm9tID0gcGFyc2VfaW50ZWdlciAoZW5kcCwgJmVuZHAsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBsZW4gLSAoZW5kcCAtIHJlYWRfcHRyKSwgMTAsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLCBRbmlsKTsKKyAgICAg ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICBpZiAo SU5URUdFUlAgKGRlbm9tKSAmJiBlbmRwID09IChyZWFkX3B0ciArIGxlbikpCisgICAgICAgICAg ICAgICAgeworICAgICAgICAgICAgICAgICAgaWYgKFpFUk9QIChkZW5vbSkpCisgICAgICAgICAg ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICBGc2lnbmFsIChRaW52YWxpZF9yZWFk X3N5bnRheCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0MiAoYnVpbGRfbXNn X3N0cmluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIkludmFsaWQg cmF0aW8gY29uc3RhbnQgaW4gcmVhZGVyIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG1ha2Vfc3RyaW5nIChyZWFkX3B0ciwgbGVuKSkpOworICAgICAgICAgICAgICAg ICAgICB9CisjaWZuZGVmIEhBVkVfUkFUSU8KKyAgICAgICAgICAgICAgICAgIC8qIFN1cHBvcnQg YSBjb3VwbGUgb2YgdHJpdmlhbCByYXRpb3MgaW4gdGhlIHJlYWRlciB0byBhbGxvdworICAgICAg ICAgICAgICAgICAgICAgcGVvcGxlIHRvIHRlc3QgcmF0aW8gc3ludGF4OiAqLworICAgICAgICAg ICAgICAgICAgaWYgKEVRIChkZW5vbSwgbWFrZV9maXhudW0gKDEpKSkKKyAgICAgICAgICAgICAg ICAgICAgeworICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudW07CisgICAgICAgICAgICAg ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgIGlmICghTklMUCAoRmVxdWFsIChudW0sIGRlbm9t KSkpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g bWFrZV9maXhudW0gKDEpOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAg ICAgIHJldHVybiBGc2lnbmFsIChRdW5zdXBwb3J0ZWRfdHlwZSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBsaXN0MyAoYnVpbGRfYXNjc3RyaW5nICgicmF0aW8iKSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtLCBkZW5vbSkpOworI2Vsc2UK KyAgICAgICAgICAgICAgICAgIHN3aXRjaCAocHJvbW90ZV9hcmdzICgmbnVtLCAmZGVub20pKQor ICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgRklYTlVNX1Q6 CisgICAgICAgICAgICAgICAgICAgICAgbnVtID0gbWFrZV9yYXRpbyAoWFJFQUxGSVhOVU0gKG51 bSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWFJFQUxGSVhOVU0g KGRlbm9tKSk7CisgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZjYW5vbmljYWxpemVfbnVt YmVyIChudW0pOworICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg ICAgICBjYXNlIEJJR05VTV9UOgorICAgICAgICAgICAgICAgICAgICAgIG51bSA9IG1ha2VfcmF0 aW9fYmcgKFhCSUdOVU1fREFUQSAobnVtKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBYQklHTlVNX0RBVEEgKGRlbm9tKSk7CisgICAgICAgICAgICAgICAgICAg ICAgcmV0dXJuIEZjYW5vbmljYWxpemVfbnVtYmVyIChudW0pOworICAgICAgICAgICAgICAgICAg ICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAg ICAgICAgIGFzc2VydCAoMCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyNlbmRpZiAvKiBIQVZF X1JBVElPICovCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAvKiBPdGhlcndpc2Us IG5vdCBhIHJhdGlvIG9yIGludGVnZXIsIGRlc3BpdGUgdGhhdCB0aGUgcGFydGlhbAorICAgICAg ICAgICAgICAgICBwYXJzZSBtYXkgaGF2ZSBzdWNjZWVkZWQuIFRoZSB0cmFpbGluZyBqdW5rIGRp c3F1YWxpZmllcworICAgICAgICAgICAgICAgICBpdC4gKi8KKyAgICAgICAgICAgIH0KKyAgICAg ICAgfQorCisgICAgICBpZiAoKHN0YXJ0c19saWtlX2FuX2ludF9wIHx8ICcuJyA9PSBmaXJzdGNo YXIpCisgICAgICAgICAgJiYgaXNmbG9hdF9zdHJpbmcgKChjaGFyICopIHJlYWRfcHRyKSkKKyAg ICAgICAgeworICAgICAgICAgIHJldHVybiBtYWtlX2Zsb2F0IChhdG9mICgoY2hhciAqKSByZWFk X3B0cikpOworICAgICAgICB9CiAgICAgfQogCiAgIHsKQEAgLTIwMDIsMTUgKzIwNjMsNzcgQEAK IH0KIAogc3RhdGljIExpc3BfT2JqZWN0Ci1yZWFkX2ludGVnZXIgKExpc3BfT2JqZWN0IHJlYWRj aGFyZnVuLCBpbnQgYmFzZSkKK3JlYWRfcmF0aW9uYWwgKExpc3BfT2JqZWN0IHJlYWRjaGFyZnVu LCBGaXhudW0gYmFzZSkKIHsKICAgLyogVGhpcyBmdW5jdGlvbiBjYW4gR0MgKi8KICAgaW50IHNh d19hX2JhY2tzbGFzaDsKLSAgSWJ5dGUgKmJ1Zl9lbmQ7CisgIElieXRlICpidWZfZW5kLCAqYnVm X3B0ciwgKnNsYXNoOwogICBCeXRlY291bnQgbGVuID0gcmVhZF9hdG9tXzAgKHJlYWRjaGFyZnVu LCAtMSwgJnNhd19hX2JhY2tzbGFzaCk7Ci0gIHJldHVybiAocGFyc2VfaW50ZWdlcgotCSAgKHJl c2l6aW5nX2J1ZmZlcl9zdHJlYW1fcHRyIChYTFNUUkVBTSAoVnJlYWRfYnVmZmVyX3N0cmVhbSkp LAotICAgICAgICAgICAmYnVmX2VuZCwgbGVuLCBiYXNlLCAwLCBRbmlsKSk7CisgIExpc3BfT2Jq ZWN0IG51bSA9IFFuaWwsIGRlbm9tID0gUXplcm87CisKKyAgYnVmX3B0ciA9IHJlc2l6aW5nX2J1 ZmZlcl9zdHJlYW1fcHRyIChYTFNUUkVBTSAoVnJlYWRfYnVmZmVyX3N0cmVhbSkpOworCisgIGlm ICgoc2xhc2ggPSBtZW1jaHIgKGJ1Zl9wdHIsICcvJywgbGVuKSkgPT0gTlVMTCkKKyAgICB7Cisg ICAgICAvKiBDYW4ndCBiZSBhIHJhdGlvLCBwYXJzZSBhcyBhcyBhbiBpbnRlZ2VyLiAqLyAKKyAg ICAgIHJldHVybiBwYXJzZV9pbnRlZ2VyIChidWZfcHRyLCAmYnVmX2VuZCwgbGVuLCBiYXNlLCAw LCBRbmlsKTsKKyAgICB9CisKKyAgLyogTm8gbmVlZCB0byBjYWxsIGlzcmF0aW9fc3RyaW5nLCB0 aGUgZGV0YWlsZWQgcGFyc2luZyAoYW5kIGVycm9yaW5nLCBhcworICAgICBuZWNlc3NhcnkpIHdp bGwgYmUgZG9uZSBieSBwYXJzZV9pbnRlZ2VyLiAqLworICBudW0gPSBwYXJzZV9pbnRlZ2VyIChi dWZfcHRyLCAmYnVmX2VuZCwgc2xhc2ggLSBidWZfcHRyLCBiYXNlLCAwLCBRbmlsKTsKKworICBJ TkNfSUJZVEVQVFIgKHNsYXNoKTsKKyAgaWYgKHNsYXNoIDwgKGJ1Zl9wdHIgKyBsZW4pKQorICAg IHsKKyAgICAgIEljaGFyIGNjID0gaXRleHRfaWNoYXIgKHNsYXNoKTsKKyAgICAgIGlmIChjYyAh PSAnKycgJiYgY2MgIT0gJy0nKQorICAgICAgICB7CisgICAgICAgICAgZGVub20gPSBwYXJzZV9p bnRlZ2VyIChzbGFzaCwgJmJ1Zl9lbmQsIGxlbiAtIChzbGFzaCAtIGJ1Zl9wdHIpLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZSwgMCwgUW5pbCk7CisgICAgICAgIH0KKyAg ICB9CisKKyAgaWYgKFpFUk9QIChkZW5vbSkpCisgICAgeworICAgICAgLyogVGhlIGRlbm9taW5h dG9yIHdhcyB6ZXJvLCBvciBpdCBoYWQgYSBzaWduIHNwZWNpZmllZDsgdGhlc2UgYXJlCisgICAg ICAgICBpbnZhbGlkIHJhdGlvcywgZm9yIHNsaWdodGx5IGRpZmZlcmVudCByZWFzb25zLiAqLwor ICAgICAgRnNpZ25hbCAoUWludmFsaWRfcmVhZF9zeW50YXgsCisgICAgICAgICAgICAgICBsaXN0 MiAoYnVpbGRfbXNnX3N0cmluZyAoIkludmFsaWQgcmF0aW8gY29uc3RhbnQgaW4gcmVhZGVyIiks CisgICAgICAgICAgICAgICAgICAgICAgbWFrZV9zdHJpbmcgKGJ1Zl9wdHIsIGxlbikpKTsKKyAg ICB9CisKKyNpZm5kZWYgSEFWRV9SQVRJTworICAvKiBTdXBwb3J0IGEgY291cGxlIG9mIHRyaXZp YWwgcmF0aW9zIGluIHRoZSByZWFkZXIgdG8gYWxsb3cgcGVvcGxlIHRvIHRlc3QKKyAgICAgcmF0 aW8gc3ludGF4OiAqLworICBpZiAoRVEgKGRlbm9tLCBtYWtlX2ZpeG51bSAoMSkpKQorICAgIHsK KyAgICAgIHJldHVybiBudW07CisgICAgfQorICBpZiAoIU5JTFAgKEZlcXVhbCAobnVtLCBkZW5v bSkpKQorICAgIHsKKyAgICAgIHJldHVybiBtYWtlX2ZpeG51bSAoMSk7CisgICAgfQorCisgIHJl dHVybiBGc2lnbmFsIChRdW5zdXBwb3J0ZWRfdHlwZSwgbGlzdDMgKGJ1aWxkX2FzY3N0cmluZyAo InJhdGlvIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51 bSwgZGVub20pKTsKKyNlbHNlCisgIHN3aXRjaCAocHJvbW90ZV9hcmdzICgmbnVtLCAmZGVub20p KQorICAgIHsKKyAgICBjYXNlIEZJWE5VTV9UOgorICAgICAgbnVtID0gbWFrZV9yYXRpbyAoWFJF QUxGSVhOVU0gKG51bSksIFhSRUFMRklYTlVNIChkZW5vbSkpOworICAgICAgcmV0dXJuIEZjYW5v bmljYWxpemVfbnVtYmVyIChudW0pOworICAgICAgYnJlYWs7CisgICAgY2FzZSBCSUdOVU1fVDoK KyAgICAgIG51bSA9IG1ha2VfcmF0aW9fYmcgKFhCSUdOVU1fREFUQSAobnVtKSwgWEJJR05VTV9E QVRBIChkZW5vbSkpOworICAgICAgcmV0dXJuIEZjYW5vbmljYWxpemVfbnVtYmVyIChudW0pOwor ICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgIGFzc2VydCAoMCk7IC8qIHByb21vdGVf YXJncygpIHdpdGggdHdvIGludGVnZXJzIHdvbid0IGdpdmUgdXMgYW55dGhpbmcKKyAgICAgICAg ICAgICAgICAgICAgIGJ1dCBmaXhudW1zIG9yIGJpZ251bXMuICovCisgICAgICByZXR1cm4gUW5p bDsKKyAgICB9CisjZW5kaWYKIH0KIAogc3RhdGljIExpc3BfT2JqZWN0CkBAIC0yNTY5LDExICsy NjkyLDExIEBACiAgICAgICAgICAgICAvKiBiaXQgdmVjdG9ycyAqLwogCSAgY2FzZSAnKic6IHJl dHVybiByZWFkX2JpdF92ZWN0b3IgKHJlYWRjaGFyZnVuKTsKICAgICAgICAgICAgIC8qICNvMTAg PT4gOCAtLSBvY3RhbCBjb25zdGFudCBzeW50YXggKi8KLQkgIGNhc2UgJ28nOiBjYXNlICdPJzog cmV0dXJuIHJlYWRfaW50ZWdlciAocmVhZGNoYXJmdW4sIDgpOworCSAgY2FzZSAnbyc6IGNhc2Ug J08nOiByZXR1cm4gcmVhZF9yYXRpb25hbCAocmVhZGNoYXJmdW4sIDgpOwogICAgICAgICAgICAg LyogI3hkZWFkID0+IDU3MDA1IC0tIGhleCBjb25zdGFudCBzeW50YXggKi8KLQkgIGNhc2UgJ3gn OiBjYXNlICdYJzogcmV0dXJuIHJlYWRfaW50ZWdlciAocmVhZGNoYXJmdW4sIDE2KTsKKwkgIGNh c2UgJ3gnOiBjYXNlICdYJzogcmV0dXJuIHJlYWRfcmF0aW9uYWwgKHJlYWRjaGFyZnVuLCAxNik7 CiAgICAgICAgICAgICAvKiAjYjAxMCA9PiAyIC0tIGJpbmFyeSBjb25zdGFudCBzeW50YXggKi8K LQkgIGNhc2UgJ2InOiBjYXNlICdCJzogcmV0dXJuIHJlYWRfaW50ZWdlciAocmVhZGNoYXJmdW4s IDIpOworCSAgY2FzZSAnYic6IGNhc2UgJ0InOiByZXR1cm4gcmVhZF9yYXRpb25hbCAocmVhZGNo YXJmdW4sIDIpOwogCSAgICAvKiAjciJyYXdcc3RyaW5ndCIgLS0gcmF3IHN0cmluZyBzeW50YXgg Ki8KIAkgIGNhc2UgJ3InOiByZXR1cm4gcmVhZF9yYXdfc3RyaW5nKHJlYWRjaGFyZnVuKTsKICAg ICAgICAgICAgIC8qICNzKGZvb2JhciBrZXkxIHZhbDEga2V5MiB2YWwyKSAtLSBzdHJ1Y3R1cmUg c3ludGF4ICovCkBAIC0yNjA2LDMyICsyNzI5LDQ0IEBACiAjZW5kaWYKIAkgIGNhc2UgJzAnOiBj YXNlICcxJzogY2FzZSAnMic6IGNhc2UgJzMnOiBjYXNlICc0JzoKIAkgIGNhc2UgJzUnOiBjYXNl ICc2JzogY2FzZSAnNyc6IGNhc2UgJzgnOiBjYXNlICc5JzoKLQkgICAgLyogUmVhZGVyIGZvcm1z IHRoYXQgY2FuIHJldXNlIHByZXZpb3VzbHkgcmVhZCBvYmplY3RzLiAgKi8KKyAgICAgICAgICBo YXNoX2RpZ2l0X3N5bnRheDoKKwkgICAgLyogUmVhZGVyIGZvcm1zIHRoYXQgY2FuIHJldXNlIHBy ZXZpb3VzbHkgcmVhZCBvYmplY3RzLCBvciB0aGUKKyAgICAgICAgICAgICAgIENvbW1vbiBMaXNw IHN5bnRheCBmb3IgYSByYXRpb25hbCBvZiBhcmJpdHJhcnkgYmFzZS4gICovCiAJICAgIHsKLQkg ICAgICBMaXNwX09iamVjdCBwYXJzZWQsIGZvdW5kOworICAgICAgICAgICAgICBMaXNwX09iamVj dCBnb3QgPSBnZXRfY2hhcl90YWJsZSAoYywgVmRpZ2l0X2ZpeG51bV9tYXApOworICAgICAgICAg ICAgICBGaXhudW0gZml4dmFsID0gRklYTlVNUCAoZ290KSA/IFhSRUFMRklYTlVNIChnb3QpIDog LTE7CisgICAgICAgICAgICAgIExpc3BfT2JqZWN0IHBhcnNlZCwgZm91bmQ7CiAJICAgICAgSWJ5 dGUgKmJ1Zl9lbmQ7CiAKIAkgICAgICBMc3RyZWFtX3Jld2luZCAoWExTVFJFQU0gKFZyZWFkX2J1 ZmZlcl9zdHJlYW0pKTsKIAotCSAgICAgIC8qIFVzaW5nIHJlYWRfaW50ZWdlcigpIGhlcmUgaXMg aW1wb3NzaWJsZSwgYmVjYXVzZSBpdAorCSAgICAgIC8qIFVzaW5nIHJlYWRfcmF0aW9uYWwoKSBo ZXJlIGlzIGltcG9zc2libGUsIGJlY2F1c2UgaXQKICAgICAgICAgICAgICAgICAgY2hva2VzIG9u IGA9Jy4gKi8KLQkgICAgICB3aGlsZSAoYyA+PSAnMCcgJiYgYyA8PSAnOScpCisJICAgICAgd2hp bGUgKGZpeHZhbCA+PSAwICYmIGZpeHZhbCA8PSA5KQogCQl7CiAJCSAgTHN0cmVhbV9wdXRfaWNo YXIgKFhMU1RSRUFNIChWcmVhZF9idWZmZXJfc3RyZWFtKSwgYyk7CiAJCSAgUVVJVDsKIAkJICBj ID0gcmVhZGNoYXIgKHJlYWRjaGFyZnVuKTsKKyAgICAgICAgICAgICAgICAgIGdvdCA9IGdldF9j aGFyX3RhYmxlIChjLCBWZGlnaXRfZml4bnVtX21hcCk7CisgICAgICAgICAgICAgICAgICBmaXh2 YWwgPSBGSVhOVU1QIChnb3QpID8gWFJFQUxGSVhOVU0gKGdvdCkgOiAtMTsKIAkJfQogCi0JICAg ICAgLyogYmxhc3RlZCB0ZXJtaW5hdGluZyAwICovCi0JICAgICAgTHN0cmVhbV9wdXRfaWNoYXIg KFhMU1RSRUFNIChWcmVhZF9idWZmZXJfc3RyZWFtKSwgMCk7CiAJICAgICAgTHN0cmVhbV9mbHVz aCAoWExTVFJFQU0gKFZyZWFkX2J1ZmZlcl9zdHJlYW0pKTsKIAogCSAgICAgIHBhcnNlZAogCQk9 IHBhcnNlX2ludGVnZXIgKHJlc2l6aW5nX2J1ZmZlcl9zdHJlYW1fcHRyCiAJCQkJIChYTFNUUkVB TSAoVnJlYWRfYnVmZmVyX3N0cmVhbSkpLCAmYnVmX2VuZCwKIAkJCQkgTHN0cmVhbV9ieXRlX2Nv dW50IChYTFNUUkVBTQotCQkJCQkJICAgICAoVnJlYWRfYnVmZmVyX3N0cmVhbSkpCi0JCQkJIC0g MSwgMTAsIDAsIFFuaWwpOworCQkJCQkJICAgICAoVnJlYWRfYnVmZmVyX3N0cmVhbSkpLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAsIDAsIFFuaWwpOworCisgICAgICAgICAg ICAgIGlmICgncicgPT0gYyB8fCAnUicgPT0gYykKKyAgICAgICAgICAgICAgICB7CisgICAgICAg ICAgICAgICAgICAvKiBDb21tb24gTGlzcCBzeW50YXggdG8gc3BlY2lmeSBhbiBpbnRlZ2VyIG9m IGFyYml0cmFyeQorICAgICAgICAgICAgICAgICAgICAgYmFzZS4gKi8KKyAgICAgICAgICAgICAg ICAgIENIRUNLX0ZJWE5VTSAocGFyc2VkKTsKKyAgICAgICAgICAgICAgICAgIHJldHVybiByZWFk X3JhdGlvbmFsIChyZWFkY2hhcmZ1biwgWEZJWE5VTSAocGFyc2VkKSk7CisgICAgICAgICAgICAg ICAgfQogCiAJICAgICAgZm91bmQgPSBhc3NvY19ub19xdWl0IChwYXJzZWQsIFZyZWFkX29iamVj dHMpOwogCSAgICAgIGlmIChjID09ICc9JykKQEAgLTI2ODEsNiArMjgxNiwxNCBAQAogCSAgICB9 CiAJICBkZWZhdWx0OgogCSAgICB7CisgICAgICAgICAgICAgIExpc3BfT2JqZWN0IGdvdCA9IGdl dF9jaGFyX3RhYmxlIChjLCBWZGlnaXRfZml4bnVtX21hcCk7CisgICAgICAgICAgICAgIEZpeG51 bSBmaXh2YWwgPSBGSVhOVU1QIChnb3QpID8gWFJFQUxGSVhOVU0gKGdvdCkgOiAtMTsKKworICAg ICAgICAgICAgICBpZiAoZml4dmFsID4gLTEgJiYgZml4dmFsIDwgMTApCisgICAgICAgICAgICAg ICAgeworICAgICAgICAgICAgICAgICAgZ290byBoYXNoX2RpZ2l0X3N5bnRheDsKKyAgICAgICAg ICAgICAgICB9CisKIAkgICAgICB1bnJlYWRjaGFyIChyZWFkY2hhcmZ1biwgYyk7CiAJICAgICAg cmV0dXJuIEZzaWduYWwgKFFpbnZhbGlkX3JlYWRfc3ludGF4LAogCQkJICAgICAgbGlzdDEgKGJ1 aWxkX2FzY3N0cmluZyAoIiMiKSkpOwpkaWZmIC1yIDg3ZTI5ZDkzZTExYiAtciA2MTc0ODQ4ZjNl NmMgc3JjL251bWJlci5jCi0tLSBhL3NyYy9udW1iZXIuYwlGcmkgTWF5IDA4IDIwOjA0OjQyIDIw MTUgKzAxMDAKKysrIGIvc3JjL251bWJlci5jCVNhdCBNYXkgMDkgMDA6NDA6NTcgMjAxNSArMDEw MApAQCAtMzIsNyArMzIsNiBAQAogTGlzcF9PYmplY3QgUXJhdGlvbmFscCwgUWZsb2F0aW5ncCwg UXJlYWxwOwogTGlzcF9PYmplY3QgVmRlZmF1bHRfZmxvYXRfcHJlY2lzaW9uOwogCi1zdGF0aWMg TGlzcF9PYmplY3QgUXVuc3VwcG9ydGVkX3R5cGU7CiBzdGF0aWMgTGlzcF9PYmplY3QgVmJpZ2Zs b2F0X21heF9wcmVjOwogc3RhdGljIGludCBudW1iZXJfaW5pdGlhbGl6ZWQ7CiAKQEAgLTgxMSw5 ICs4MTAsNiBAQAogICBERUZTVUJSIChGcmVhbHApOwogICBERUZTVUJSIChGY2Fub25pY2FsaXpl X251bWJlcik7CiAgIERFRlNVQlIgKEZjb2VyY2VfbnVtYmVyKTsKLQotICAvKiBFcnJvcnMgKi8K LSAgREVGRVJST1JfU1RBTkRBUkQgKFF1bnN1cHBvcnRlZF90eXBlLCBRd3JvbmdfdHlwZV9hcmd1 bWVudCk7CiB9CiAKIHZvaWQKZGlmZiAtciA4N2UyOWQ5M2UxMWIgLXIgNjE3NDg0OGYzZTZjIHRl c3RzL0NoYW5nZUxvZwotLS0gYS90ZXN0cy9DaGFuZ2VMb2cJRnJpIE1heSAwOCAyMDowNDo0MiAy MDE1ICswMTAwCisrKyBiL3Rlc3RzL0NoYW5nZUxvZwlTYXQgTWF5IDA5IDAwOjQwOjU3IDIwMTUg KzAxMDAKQEAgLTEsMyArMSwxMCBAQAorMjAxNS0wNS0wOCAgQWlkYW4gS2Vob2UgIDxrZWhvZWFA cGFyaGFzYXJkLm5ldD4KKworCSogYXV0b21hdGVkL2xpc3AtcmVhZGVyLXRlc3RzLmVsOgorCUNo ZWNrIHRoZSBhcmJpdHJhcnktYmFzZSBpbnRlZ2VyIHJlYWRlciBzeW50YXggc3VwcG9ydCwganVz dAorCWFkZGVkLiAgQ2hlY2sgdGhlIHJlYWRlciBiYXNlIHN1cHBvcnQgZm9yIHJhdGlvcywganVz dCBhZGRlZC4KKwlDaGVjayB0aGUgbm9uLUFTQ0lJLWRpZ2l0IHN1cHBvcnQgaW4gdGhlIHJlYWRl ciwganVzdCBhZGRlZC4KKwogMjAxNS0wNS0wOCAgQWlkYW4gS2Vob2UgIDxrZWhvZWFAcGFyaGFz YXJkLm5ldD4KIAogCSogYXV0b21hdGVkL2xpc3AtdGVzdHMuZWw6CmRpZmYgLXIgODdlMjlkOTNl MTFiIC1yIDYxNzQ4NDhmM2U2YyB0ZXN0cy9hdXRvbWF0ZWQvbGlzcC1yZWFkZXItdGVzdHMuZWwK LS0tIGEvdGVzdHMvYXV0b21hdGVkL2xpc3AtcmVhZGVyLXRlc3RzLmVsCUZyaSBNYXkgMDggMjA6 MDQ6NDIgMjAxNSArMDEwMAorKysgYi90ZXN0cy9hdXRvbWF0ZWQvbGlzcC1yZWFkZXItdGVzdHMu ZWwJU2F0IE1heSAwOSAwMDo0MDo1NyAyMDE1ICswMTAwCkBAIC0yMTcsMyArMjE3LDEyNCBAQAog MjQwOTk4NCIKICAgICAiLTI4OTQ4MDIyMzA5MzI5MDQ4ODU1ODkyNzQ2MjUyMTcxOTc2OTYzMzE3 NDk2MTY2NDEwMTQxMDA5ODY0Mzk2MDAxOTc4MlwKIDgyNDA5OTg1IikpKQorCisobWFjcm9sZXQK KyAgICAoKEFzc2VydC1yZWFkaW5nLXJhdGlvbmFscyAoJnJlc3QgZGV0YWlscykKKyAgICAgICAo Y29ucworICAgICAgICAncHJvZ24KKyAgICAgICAgKGxvb3AKKyAgICAgICAgICAgIGZvciAoZ3Vh cmQgZmlyc3QgLiByZXN0KSBpbiBkZXRhaWxzCisgICAgICAgICAgICBjb2xsZWN0IGAod2hlbiAs Z3VhcmQKKyAgICAgICAgICAgICAgICAgICAgICAsQChsb29wIGZvciB2YWx1ZSBpbiByZXN0Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xsZWN0IGAoQXNzZXJ0IChlcWwgLGZpcnN0 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVhZCAs dmFsdWUpKSkpKSkpKQorICAgICAod2l0aC1kaWdpdHMgKGFzY2lpIGFsdGVybmF0ZSAmYm9keSBi b2R5KQorICAgICAgIChsZXQgKCh0cmVlLWFsaXN0IChsaXN0IChjb25zICdvbGQgJ25ldykpKQor ICAgICAgICAgICAgICh0ZXh0LWFsaXN0IChtYXBjYXIqICMnY29ucyBhc2NpaSBhbHRlcm5hdGUp KSkKKyAgICAgICAgIChsaXN0KgorICAgICAgICAgICdwcm9nbgorICAgICAgICAgIChzdWJsaXMg dHJlZS1hbGlzdCBib2R5Cis6dGVzdCAjJyhsYW1iZGEgKG5ldyBvbGQpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgOzsgVGhpcyBmdW5jdGlvbiByZXBsYWNlcyBhbnkgQVNDSUkgZGVjaW1h bCBkaWdpdHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBpbiBhbnkgc3RyaW5nIGVu Y291bnRlcmVkIGluIHRoZSB0cmVlIHdpdGggdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgOzsgbm9uLUFTQ0lJIGRpZ2l0cyBzdXBwbGllZCBpbiBBTFRFUk5BVEUuCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKHdoZW4gKGFuZCAoc3RyaW5ncCBvbGQpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoZmluZC1pZiAjJ2RpZ2l0LWNoYXItcCBvbGQpKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldGYgKGNkYXIgdHJlZS1hbGlzdCkKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25jYXRlbmF0ZSAnc3RyaW5nCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN1YmxpcyB0 ZXh0LWFsaXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoYXBwZW5kIG9sZCBuaWwpKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB0KSkpKSkpCisgICAgICh3aXRoLWFsbC1kaWdpdHMgKCZib2R5IGJvZHkpCisgICAgICAg KGxpc3QKKyAgICAgICAgJ3Byb2duCisgICAgICAgIChsaXN0KiAnd2l0aC1kaWdpdHMgIjAxMjM0 NTY3ODkiICIwMTIzNDU2Nzg5IiBib2R5KQorICAgICAgICAod2hlbiAoZmVhdHVyZXAgJ211bGUp CisgICAgICAgICAgKGNvbnMKKyAgICAgICAgICAgJ3Byb2duCisgICAgICAgICAgIChsb29wIGZv ciAoY29kZS1wb2ludCAuIHNjcmlwdCkKKyAgICAgICAgICAgICBpbiAnKCgjeDA2NjAgLiAiQXJh YmljLUluZGljIikKKyAgICAgICAgICAgICAgICAgICgjeDA2ZjAgLiAiRXh0ZW5kZWQgQXJhYmlj LUluZGljIikKKyAgICAgICAgICAgICAgICAgICgjeDA3YzAgLiAiTmtvIikKKyAgICAgICAgICAg ICAgICAgICgjeDA5NjYgLiAiRGV2YW5hZ2FyaSIpCisgICAgICAgICAgICAgICAgICAoI3gwOWU2 IC4gIkJlbmdhbGkiKQorICAgICAgICAgICAgICAgICAgKCN4MGE2NiAuICJHdXJtdWtoaSIpCisg ICAgICAgICAgICAgICAgICAoI3gwYWU2IC4gIkd1amFyYXRpIikKKyAgICAgICAgICAgICAgICAg ICgjeDBiNjYgLiAiT3JpeWEiKQorICAgICAgICAgICAgICAgICAgKCN4MGJlNiAuICJUYW1pbCIp CisgICAgICAgICAgICAgICAgICAoI3gwYzY2IC4gIlRlbHVndSIpCisgICAgICAgICAgICAgICAg ICAoI3gwY2U2IC4gIkthbm5hZGEiKQorICAgICAgICAgICAgICAgICAgKCN4MGQ2NiAuICJNYWxh eWFsYW0iKQorICAgICAgICAgICAgICAgICAgKCN4MGRlNiAuICJTaW5oYWxhIExpdGgiKQorICAg ICAgICAgICAgICAgICAgKCN4MGU1MCAuICJUaGFpIikKKyAgICAgICAgICAgICAgICAgICgjeDBl ZDAgLiAiTGFvIikKKyAgICAgICAgICAgICAgICAgICgjeDBmMjAgLiAiVGliZXRhbiIpCisgICAg ICAgICAgICAgICAgICAoI3gxMDQwIC4gIk15YW5tYXIiKQorICAgICAgICAgICAgICAgICAgKCN4 MTA5MCAuICJNeWFubWFyIFNoYW4iKQorICAgICAgICAgICAgICAgICAgKCN4MTdlMCAuICJLaG1l ciIpCisgICAgICAgICAgICAgICAgICAoI3gxODEwIC4gIk1vbmdvbGlhbiIpCisgICAgICAgICAg ICAgICAgICAoI3gxOTQ2IC4gIkxpbWJ1IikKKyAgICAgICAgICAgICAgICAgICgjeDE5ZDAgLiAi TmV3IFRhaSBMdWUiKQorICAgICAgICAgICAgICAgICAgKCN4MWE4MCAuICJUYWkgVGhhbSBIb3Jh IikKKyAgICAgICAgICAgICAgICAgICgjeDFhOTAgLiAiVGFpIFRoYW0gVGhhbSIpCisgICAgICAg ICAgICAgICAgICAoI3gxYjUwIC4gIkJhbGluZXNlIikKKyAgICAgICAgICAgICAgICAgICgjeDFi YjAgLiAiU3VuZGFuZXNlIikKKyAgICAgICAgICAgICAgICAgICgjeDFjNDAgLiAiTGVwY2hhIikK KyAgICAgICAgICAgICAgICAgICgjeDFjNTAgLiAiT2wgQ2hpa2kiKQorICAgICAgICAgICAgICAg ICAgKCN4YTYyMCAuICJWYWkiKQorICAgICAgICAgICAgICAgICAgKCN4YThkMCAuICJTYXVyYXNo dHJhIikKKyAgICAgICAgICAgICAgICAgICgjeGE5MDAgLiAiS2F5YWggTGkiKQorICAgICAgICAg ICAgICAgICAgKCN4YTlkMCAuICJKYXZhbmVzZSIpCisgICAgICAgICAgICAgICAgICAoI3hhOWYw IC4gIk15YW5tYXIgVGFpIExhaW5nIikKKyAgICAgICAgICAgICAgICAgICgjeGFhNTAgLiAiQ2hh bSIpCisgICAgICAgICAgICAgICAgICAoI3hhYmYwIC4gIk1lZXRlaSBNYXllayIpCisgICAgICAg ICAgICAgICAgICAoI3hmZjEwIC4gIkZ1bGx3aWR0aCIpCisgICAgICAgICAgICAgICAgICAoI3gw MDAxMDRhMCAuICJPc21hbnlhIikKKyAgICAgICAgICAgICAgICAgICgjeDAwMDExMDY2IC4gIkJy YWhtaSIpCisgICAgICAgICAgICAgICAgICAoI3gwMDAxMTBmMCAuICJTb3JhIFNvbXBlbmciKQor ICAgICAgICAgICAgICAgICAgKCN4MDAwMTExMzYgLiAiQ2hha21hIikKKyAgICAgICAgICAgICAg ICAgICgjeDAwMDExMWQwIC4gIlNoYXJhZGEiKQorICAgICAgICAgICAgICAgICAgKCN4MDAwMTEy ZjAgLiAiS2h1ZGF3YWRpIikKKyAgICAgICAgICAgICAgICAgICgjeDAwMDExNGQwIC4gIlRpcmh1 dGEiKQorICAgICAgICAgICAgICAgICAgKCN4MDAwMTE2NTAgLiAiTW9kaSIpCisgICAgICAgICAg ICAgICAgICAoI3gwMDAxMTZjMCAuICJUYWtyaSIpCisgICAgICAgICAgICAgICAgICAoI3gwMDAx MThlMCAuICJXYXJhbmcgQ2l0aSIpCisgICAgICAgICAgICAgICAgICAoI3gwMDAxNmE2MCAuICJN cm8iKQorICAgICAgICAgICAgICAgICAgKCN4MDAwMTZiNTAgLiAiUGFoYXdoIEhtb25nIikKKyAg ICAgICAgICAgICAgICAgICgjeDAwMDFkN2NlIC4gIk1hdGhlbWF0aWNhbCBCb2xkIikKKyAgICAg ICAgICAgICAgICAgICgjeDAwMDFkN2Q4IC4gIk1hdGhlbWF0aWNhbCBEb3VibGUtU3RydWNrIikK KyAgICAgICAgICAgICAgICAgICgjeDAwMDFkN2UyIC4gIk1hdGhlbWF0aWNhbCBTYW5zLVNlcmlm IikKKyAgICAgICAgICAgICAgICAgICgjeDAwMDFkN2VjIC4gIk1hdGhlbWF0aWNhbCBTYW5zLVNl cmlmIEJvbGQiKQorICAgICAgICAgICAgICAgICAgKCN4MDAwMWQ3ZjYgLiAiTWF0aGVtYXRpY2Fs IE1vbm9zcGFjZSIpKQorICAgICAgICAgICBjb2xsZWN0IAorICAgICAgICAgICAobGlzdCogJ3dp dGgtZGlnaXRzICIwMTIzNDU2Nzg5IgorICAgICAgICAgICAgICAgICAgOzsgQWxsIHRoZSBVbmlj b2RlIGRlY2ltYWwgZGlnaXRzIGhhdmUgY29udGlndW91cyBjb2RlCisgICAgICAgICAgICAgICAg ICA7OyBwb2ludCByYW5nZXMgYXMgZG9jdW1lbnRlZCBieSB0aGUgVW5pY29kZSBzdGFuZGFyZCwK KyAgICAgICAgICAgICAgICAgIDs7IHdlIGNhbiBqdXN0IGluY3JlbWVudC4KKyAgICAgICAgICAg ICAgICAgIChjb25jYXQgKGxvb3AgZm9yIGZpeG51bSBmcm9tIGNvZGUtcG9pbnQKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdG8gKCsgY29kZS1wb2ludCA5KQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjb2xsZWN0IChkZWNvZGUtY2hhciAndWNzIGZpeG51bSkpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICIiKQorICAgICAgICAgICAgICAgICAgYm9keSkpKSkp KSkKKyAgKHdpdGgtYWxsLWRpZ2l0cyAgCisgICAgKEFzc2VydC1yZWFkaW5nLXJhdGlvbmFscwor ICAgICAodCAxICIxIiAiI2IxIiAiI28xIiAiI3gxIiAiIzJyMSIgIiMyMHIxIiAiIzIwMDByMSIp CisgICAgICh0IDAgIi0wIiAiI2IwIiAiI28wIiAiI3gwIiAiIzFyMCIgIiMycjAiICIjMjByMCIg IiMyMDAwcjAiKQorICAgICAodCAtMSAiLTEiICIjYi0xIiAiI28tMSIgIiN4LTEiICIjMnItMSIg IiMyMHItMSIgIiMyMDAwci0xIikKKyAgICAgKHQgMTA3Mzc0MTgyMyAiI2IxMTExMTExMTExMTEx MTExMTExMTExMTExMTExMTEiICIjbzc3Nzc3Nzc3NzciCisgICAgICAgICIjeDNmZmZmZmZmIiAi IzMyclZWVlZWViIpCisgICAgICh0IC0xMDczNzQxODI0ICIjYi0xMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwIiAiI28tMTAwMDAwMDAwMDAiCisgICAgICAgICIjeC00MDAwMDAwMCIgIiMz MnItMTAwMDAwMCIpCisgICAgICgoZmVhdHVyZXAgJ3JhdGlvKQorICAgICAgMSAiMS8xIiAiMi8y IiAiI2IxLzEiICIjbzIvMiIgIiN4My8zIiAiIzJyMS8xIiAiIzIwcjIwMDAvMjAwMCIpCisgICAg ICgoZmVhdHVyZXAgJ3JhdGlvKQorICAgICAgLTEgIi0xLzEiICItMi8yIiAiI2ItMS8xIiAiI28t Mi8yIiAiI3gtMy8zIiAiIzJyLTEvMSIKKyAgICAgICIjMjByLTIwMDAvMjAwMCIpKQorICAgIChD aGVjay1FcnJvciBpbnZhbGlkLXJlYWQtc3ludGF4IChyZWFkICIxMjM0NTY3LzAiKSkKKyAgICAo Q2hlY2stRXJyb3IgaW52YWxpZC1yZWFkLXN5bnRheCAocmVhZCAiI3gxMjM0NTY3LzAiKSkKKyAg ICAoQ2hlY2stRXJyb3IgaW52YWxpZC1yZWFkLXN5bnRheCAocmVhZCAiIzIwMDAwcjEyMzQ1Njcv MCIpKQorICAgIDs7IFVuaW50dWl0aXZlLCBidXQgdGhhdCdzIHRoZSBDb21tb24gTGlzcCBiZWhh dmlvdXIuIE1heWJlIHdlIHNob3VsZAorICAgIDs7IGVycm9yLgorICAgIChBc3NlcnQgKHN5bWJv bHAgKHJlYWQgIjEyMzQvLTEyMyIpKSkpKQorCis7OzsgZW5kIG9mIGxpc3AtcmVhZGVyLXRlc3Rz LmVsCgoKLS0gCuKAmFRyYW1hZG9sIGlzIGZ1cnRoZXIgZmVkIHRvIGNhdHRsZSBb4oCmXSB3aGVu IHdvcmtpbmcgdGhlbSBb4oCmXSAoYXMgZHJhZnQKYW5pbWFscykgc28gdGhhdCB0aGUgYW5pbWFs cyBkbyBub3QgZ2V0IHRpcmVkIHF1aWNrbHkuIOKApuKAmQoJ4oCUIEFuZ2V3YW5kdGUgQ2hlbWll LCBTZXB0IDIwMTQsIGRlc2NyaWJpbmcgdGhlIHNvY2lhbCBjb250ZXh0IG9mCgkoc3ludGhldGlj KSB0cmFtYWRvbCBoYXZpbmcgYmVlbiBmb3VuZCBpbiBDYW1lcm9vbiB0cmVlIHJvb3RzLgoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWEVtYWNzLVBhdGNo ZXMgbWFpbGluZyBsaXN0ClhFbWFjcy1QYXRjaGVzQHhlbWFjcy5vcmcKaHR0cDovL2xpc3RzLnhl bWFjcy5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW1hY3MtcGF0Y2hlcwo=